index.ts 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import { GetProgramAccountsFilter } from "@solana/web3.js";
  2. import { IdlEvent, IdlTypeDef } from "../idl.js";
  3. import { Event } from "../program/event.js";
  4. export * from "./borsh/index.js";
  5. export * from "./spl-token/index.js";
  6. /**
  7. * Coder provides a facade for encoding and decoding all IDL related objects.
  8. */
  9. export interface Coder {
  10. /**
  11. * Instruction coder.
  12. */
  13. readonly instruction: InstructionCoder;
  14. /**
  15. * Account coder.
  16. */
  17. readonly accounts: AccountsCoder;
  18. /**
  19. * Coder for state structs.
  20. */
  21. readonly state: StateCoder;
  22. /**
  23. * Coder for events.
  24. */
  25. readonly events: EventCoder;
  26. }
  27. export interface StateCoder {
  28. encode<T = any>(name: string, account: T): Promise<Buffer>;
  29. decode<T = any>(ix: Buffer): T;
  30. }
  31. export interface AccountsCoder<A extends string = string> {
  32. encode<T = any>(accountName: A, account: T): Promise<Buffer>;
  33. decode<T = any>(accountName: A, ix: Buffer): T;
  34. decodeUnchecked<T = any>(accountName: A, ix: Buffer): T;
  35. memcmp(accountName: A): GetProgramAccountsFilter;
  36. memcmpDataOffset(): number;
  37. size(idlAccount: IdlTypeDef): number;
  38. }
  39. export interface InstructionCoder {
  40. encode(ixName: string, ix: any): Buffer;
  41. encodeState(ixName: string, ix: any): Buffer;
  42. }
  43. export interface EventCoder {
  44. decode<E extends IdlEvent = IdlEvent, T = Record<string, string>>(
  45. log: string
  46. ): Event<E, T> | null;
  47. }