import { PublicKey } from "@solana/web3.js" // eslint-disable-line @typescript-eslint/no-unused-vars import BN from "bn.js" // eslint-disable-line @typescript-eslint/no-unused-vars import * as types from "../types" // eslint-disable-line @typescript-eslint/no-unused-vars import * as borsh from "@project-serum/borsh" export interface SwapDescriptionFields { ix: types.IxDescriptionFields inputMint: PublicKey outputMint: PublicKey } export interface SwapDescriptionJSON { ix: types.IxDescriptionJSON inputMint: string outputMint: string } export class SwapDescription { readonly ix: types.IxDescription readonly inputMint: PublicKey readonly outputMint: PublicKey constructor(fields: SwapDescriptionFields) { this.ix = new types.IxDescription({ ...fields.ix }) this.inputMint = fields.inputMint this.outputMint = fields.outputMint } static layout(property?: string) { return borsh.struct( [ types.IxDescription.layout("ix"), borsh.publicKey("inputMint"), borsh.publicKey("outputMint"), ], property ) } // eslint-disable-next-line @typescript-eslint/no-explicit-any static fromDecoded(obj: any) { return new SwapDescription({ ix: types.IxDescription.fromDecoded(obj.ix), inputMint: obj.inputMint, outputMint: obj.outputMint, }) } static toEncodable(fields: SwapDescriptionFields) { return { ix: types.IxDescription.toEncodable(fields.ix), inputMint: fields.inputMint, outputMint: fields.outputMint, } } toJSON(): SwapDescriptionJSON { return { ix: this.ix.toJSON(), inputMint: this.inputMint.toString(), outputMint: this.outputMint.toString(), } } static fromJSON(obj: SwapDescriptionJSON): SwapDescription { return new SwapDescription({ ix: types.IxDescription.fromJSON(obj.ix), inputMint: new PublicKey(obj.inputMint), outputMint: new PublicKey(obj.outputMint), }) } toEncodable() { return SwapDescription.toEncodable(this) } }