import { GetProgramAccountsFilter } from "@solana/web3.js"; import { IdlEvent, IdlTypeDef } from "../idl.js"; import { Event } from "../program/event.js"; export * from "./borsh/index.js"; export * from "./spl-token/index.js"; /** * Coder provides a facade for encoding and decoding all IDL related objects. */ export interface Coder { /** * Instruction coder. */ readonly instruction: InstructionCoder; /** * Account coder. */ readonly accounts: AccountsCoder; /** * Coder for state structs. */ readonly state: StateCoder; /** * Coder for events. */ readonly events: EventCoder; } export interface StateCoder { encode(name: string, account: T): Promise; decode(ix: Buffer): T; } export interface AccountsCoder { encode(accountName: A, account: T): Promise; decode(accountName: A, ix: Buffer): T; decodeUnchecked(accountName: A, ix: Buffer): T; memcmp(accountName: A): GetProgramAccountsFilter; memcmpDataOffset(): number; size(idlAccount: IdlTypeDef): number; } export interface InstructionCoder { encode(ixName: string, ix: any): Buffer; encodeState(ixName: string, ix: any): Buffer; } export interface EventCoder { decode>( log: string ): Event | null; }