@arcium-hq/reader
Version:
Reader SDK for fetching onchain data for Arcium network programs
131 lines (125 loc) • 6.89 kB
TypeScript
import { ArciumIdlType } from '@arcium-hq/client';
export { getArciumProgramReadonly, getArxNodeAccAddress, getClockAccAddress, getClusterAccAddress, getCompDefAccAddress, getComputationAccAddress, getExecutingPoolAccAddress, getMXEAccAddress, getMempoolAccAddress, getStakingPoolAccAddress } from '@arcium-hq/client';
import * as anchor from '@coral-xyz/anchor';
/**
* Shared type aliases and utility types for the Arcium program.
* Many types are derived from the Anchor-generated IDL and are used throughout the reader package.
*/
type PublicKey = anchor.web3.PublicKey;
type Connection = anchor.web3.Connection;
type Program<T extends anchor.Idl> = anchor.Program<T>;
type ArciumTypes = anchor.IdlTypes<ArciumIdlType>;
/**
* All events emitted by the Arcium program, keyed by event name.
*/
type ArciumEvent = anchor.IdlEvents<ArciumIdlType>;
/**
* Capitalized event names, matching the format as emitted by the program.
*/
type ArciumEventName = Capitalize<keyof ArciumEvent>;
/**
* Data structure for any Arcium event, as parsed from logs.
*/
type ArciumEventData = ArciumEvent[keyof ArciumEvent];
type MXEAccount = ArciumTypes['mxeAccount'];
type ClusterAccount = ArciumTypes['cluster'];
type ArxNodeAccount = ArciumTypes['arxNode'];
type ComputationAccount = ArciumTypes['computationAccount'];
type ComputationReference = ArciumTypes['computationReference'];
type ComputationDefinitionAccount = ArciumTypes['computationDefinitionAccount'];
type QueueComputationIx = ArciumIdlType['instructions']['23'];
type CallbackComputationIx = ArciumIdlType['instructions']['3'];
type FinalizeComputationIx = ArciumIdlType['instructions']['8'];
/**
* Status values for a computation, as defined by the Arcium protocol.
*/
type ComputationStatus = 'queued' | 'executing' | 'executed' | 'finalized' | 'failed';
/**
* Returns all MXE account addresses.
* @param conn - The Solana connection object.
* @returns Array of MXE account public keys.
*/
declare function getMXEAccAddresses(conn: Connection): Promise<PublicKey[]>;
/**
* Returns all Cluster account addresses.
* @param conn - The Solana connection object.
* @returns Array of Cluster account public keys.
*/
declare function getClusterAccAddresses(conn: Connection): Promise<PublicKey[]>;
/**
* Returns all ArxNode account addresses.
* @param conn - The Solana connection object.
* @returns Array of ArxNode account public keys.
*/
declare function getArxNodeAccAddresses(conn: Connection): Promise<PublicKey[]>;
/**
* Fetches and parses a given MXE account.
* @param arciumProgram - The Anchor program instance.
* @param address - The public key of the MXE account.
* @param commitment - (Optional) RPC commitment level.
* @returns The MXEAccount object.
*/
declare function getMXEAccInfo(arciumProgram: anchor.Program<ArciumIdlType>, address: PublicKey, commitment?: anchor.web3.Commitment): Promise<MXEAccount>;
/**
* Fetches and parses a given Cluster account.
* @param arciumProgram - The Anchor program instance.
* @param address - The public key of the Cluster account.
* @param commitment - (Optional) RPC commitment level.
* @returns The ClusterAccount object.
*/
declare function getClusterAccInfo(arciumProgram: anchor.Program<ArciumIdlType>, address: PublicKey, commitment?: anchor.web3.Commitment): Promise<ClusterAccount>;
/**
* Fetches and parses a given ArxNode account.
* @param arciumProgram - The Anchor program instance.
* @param address - The public key of the ArxNode account.
* @param commitment - (Optional) RPC commitment level.
* @returns The ArxNodeAccount object.
*/
declare function getArxNodeAccInfo(arciumProgram: anchor.Program<ArciumIdlType>, address: PublicKey, commitment?: anchor.web3.Commitment): Promise<ArxNodeAccount>;
/**
* Fetches and parses a given ComputationDefinition account.
* @param arciumProgram - The Anchor program instance.
* @param address - The public key of the ComputationDefinition account.
* @param commitment - (Optional) RPC commitment level.
* @returns The ComputationDefinitionAccount object.
*/
declare function getCompDefAccInfo(arciumProgram: anchor.Program<ArciumIdlType>, address: PublicKey, commitment?: anchor.web3.Commitment): Promise<ComputationDefinitionAccount>;
/**
* Returns all computation references in the mempool for a given account.
* Only non-stake computations are included.
* @param arciumProgram - The Anchor program instance.
* @param address - The public key of the mempool account.
* @returns Array of ComputationReference objects.
*/
declare function getComputationsInMempool(arciumProgram: anchor.Program<ArciumIdlType>, address: PublicKey): Promise<ComputationReference[]>;
/**
* Fetches and parses a given Computation account.
* @param arciumProgram - The Anchor program instance.
* @param address - The public key of the Computation account.
* @param commitment - (Optional) RPC commitment level.
* @returns The Computation object.
*/
declare function getComputationAccInfo(arciumProgram: anchor.Program<ArciumIdlType>, address: PublicKey, commitment?: anchor.web3.Commitment): Promise<ComputationAccount>;
/**
* Subscribes to computation-related events for a given MXE program ID.
* @param conn - The Solana connection object.
* @param mxeProgramId - The public key of the MXE program.
* @param callback - Callback function to handle each computation event and its name.
* @returns The subscription ID for the logs listener.
*/
declare function subscribeComputations(conn: Connection, mxeProgramId: PublicKey, callback: (event: ArciumEventData, name: ArciumEventName) => void): Promise<number>;
/**
* Unsubscribes from computation-related events using the subscription ID.
* @param conn - The Solana connection object.
* @param subscriptionId - The subscription ID returned by subscribeComputations.
*/
declare function unsubscribeComputations(conn: Connection, subscriptionId: number): Promise<void>;
/**
* Gets the computation offset from a transaction.
* @param tx - The transaction to get the computation offset from.
* @returns The computation offset if one is found, otherwise undefined.
* @throws Error if multiple computation offsets are found in the transaction.
*/
declare function getComputationOffset(tx: anchor.web3.VersionedTransactionResponse): anchor.BN | undefined;
export { getArxNodeAccAddresses, getArxNodeAccInfo, getClusterAccAddresses, getClusterAccInfo, getCompDefAccInfo, getComputationAccInfo, getComputationOffset, getComputationsInMempool, getMXEAccAddresses, getMXEAccInfo, subscribeComputations, unsubscribeComputations };
export type { ArciumEvent, ArciumEventData, ArciumEventName, ArciumTypes, ArxNodeAccount, CallbackComputationIx, ClusterAccount, ComputationAccount, ComputationDefinitionAccount, ComputationReference, ComputationStatus, Connection, FinalizeComputationIx, MXEAccount, Program, PublicKey, QueueComputationIx };