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 IxDescriptionFields { programIdIdx: number data: Array metas: Array } export interface IxDescriptionJSON { programIdIdx: number data: Array metas: Array } export class IxDescription { readonly programIdIdx: number readonly data: Array readonly metas: Array constructor(fields: IxDescriptionFields) { this.programIdIdx = fields.programIdIdx this.data = fields.data this.metas = fields.metas.map( (item) => new types.IndirectAccountMeta({ ...item }) ) } static layout(property?: string) { return borsh.struct( [ borsh.u8("programIdIdx"), borsh.vecU8("data"), borsh.vec(types.IndirectAccountMeta.layout(), "metas"), ], property ) } // eslint-disable-next-line @typescript-eslint/no-explicit-any static fromDecoded(obj: any) { return new IxDescription({ programIdIdx: obj.programIdIdx, data: Array.from(obj.data), metas: obj.metas.map((item) => types.IndirectAccountMeta.fromDecoded(item) ), }) } static toEncodable(fields: IxDescriptionFields) { return { programIdIdx: fields.programIdIdx, data: Buffer.from(fields.data), metas: fields.metas.map((item) => types.IndirectAccountMeta.toEncodable(item) ), } } toJSON(): IxDescriptionJSON { return { programIdIdx: this.programIdIdx, data: this.data, metas: this.metas.map((item) => item.toJSON()), } } static fromJSON(obj: IxDescriptionJSON): IxDescription { return new IxDescription({ programIdIdx: obj.programIdIdx, data: obj.data, metas: obj.metas.map((item) => types.IndirectAccountMeta.fromJSON(item)), }) } toEncodable() { return IxDescription.toEncodable(this) } }