1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import { PublicKey } from '@solana/web3.js';
- import { RpcFactory } from './rpc';
- import { Idl } from './idl';
- import Coder from './coder';
- import { Rpcs, Ixs, Accounts } from './rpc';
- /**
- * Program is the IDL deserialized representation of a Solana program.
- */
- export class Program {
- /**
- * Address of the program.
- */
- readonly programId: PublicKey;
- /**
- * IDL describing this program's interface.
- */
- readonly idl: Idl;
- /**
- * Async functions to invoke instructions against a Solana priogram running
- * on a cluster.
- */
- readonly rpc: Rpcs;
- /**
- * Async functions to fetch deserialized program accounts from a cluster.
- */
- readonly account: Accounts;
- /**
- * Functions to build `TransactionInstruction` objects.
- */
- readonly instruction: Ixs;
- public constructor(idl: Idl, programId: PublicKey) {
- this.idl = idl;
- this.programId = programId;
- // Build the serializer.
- const coder = new Coder(idl);
- // Build the dynamic RPC functions.
- const [rpcs, ixs, accounts] = RpcFactory.build(idl, coder, programId);
- this.rpc = rpcs;
- this.instruction = ixs;
- this.account = accounts;
- }
- }
|