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 IndirectAccountMetaFields { idx: number isSigner: boolean isWritable: boolean } export interface IndirectAccountMetaJSON { idx: number isSigner: boolean isWritable: boolean } export class IndirectAccountMeta { readonly idx: number readonly isSigner: boolean readonly isWritable: boolean constructor(fields: IndirectAccountMetaFields) { this.idx = fields.idx this.isSigner = fields.isSigner this.isWritable = fields.isWritable } static layout(property?: string) { return borsh.struct( [borsh.u8("idx"), borsh.bool("isSigner"), borsh.bool("isWritable")], property ) } // eslint-disable-next-line @typescript-eslint/no-explicit-any static fromDecoded(obj: any) { return new IndirectAccountMeta({ idx: obj.idx, isSigner: obj.isSigner, isWritable: obj.isWritable, }) } static toEncodable(fields: IndirectAccountMetaFields) { return { idx: fields.idx, isSigner: fields.isSigner, isWritable: fields.isWritable, } } toJSON(): IndirectAccountMetaJSON { return { idx: this.idx, isSigner: this.isSigner, isWritable: this.isWritable, } } static fromJSON(obj: IndirectAccountMetaJSON): IndirectAccountMeta { return new IndirectAccountMeta({ idx: obj.idx, isSigner: obj.isSigner, isWritable: obj.isWritable, }) } toEncodable() { return IndirectAccountMeta.toEncodable(this) } }