UNPKG

@arcium-hq/reader

Version:

Reader SDK for fetching onchain data for Arcium network programs

131 lines (125 loc) 6.89 kB
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 };