UNPKG

@arcium-hq/reader

Version:

Reader SDK for fetching onchain data for Arcium network programs

162 lines (156 loc) 7.36 kB
import { ArciumIdlType } from '@arcium-hq/client'; export { getArciumProgram, getArxNodeAccAddress, getClockAccAddress, getClusterAccAddress, getCompDefAccAddress, getComputationAccAddress, getComputationsInMempool, getExecutingPoolAccAddress, getFeePoolAccAddress, getMXEAccAddress, getMempoolAccAddress, getMempoolPriorityFeeStats } 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. */ /** * Solana PublicKey type alias for convenience. */ type PublicKey = anchor.web3.PublicKey; /** * Solana Connection type alias for convenience. */ type Connection = anchor.web3.Connection; /** * Anchor Program type alias with generic IDL support. */ type Program<T extends anchor.Idl> = anchor.Program<T>; /** * Arcium IDL types derived from the Arcium program interface. */ 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]; /** * MXE (Multi-party eXecution Environment) account data structure. */ type MXEAccount = ArciumTypes['mxeAccount']; /** * Cluster account data structure containing node information. */ type ClusterAccount = ArciumTypes['cluster']; /** * ArxNode account data structure for individual computation nodes. */ type ArxNodeAccount = ArciumTypes['arxNode']; /** * Computation account data structure tracking computation state. */ type ComputationAccount = ArciumTypes['computationAccount']; /** * Reference to a computation in a mempool or executing pool. */ type ComputationReference = ArciumTypes['computationReference']; /** * Computation definition account containing circuit configuration. */ type ComputationDefinitionAccount = ArciumTypes['computationDefinitionAccount']; /** * Queue computation instruction type from the Arcium IDL. */ type QueueComputationIx = ArciumIdlType['instructions']['26']; /** * Callback computation instruction type from the Arcium IDL. */ type CallbackComputationIx = ArciumIdlType['instructions']['3']; /** * Valid instruction names from the Arcium IDL. */ type ArciumInstructionName = ArciumIdlType['instructions'][number]['name']; /** * 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>; /** * 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, getMXEAccAddresses, getMXEAccInfo, subscribeComputations, unsubscribeComputations }; export type { ArciumEvent, ArciumEventData, ArciumEventName, ArciumInstructionName, ArciumTypes, ArxNodeAccount, CallbackComputationIx, ClusterAccount, ComputationAccount, ComputationDefinitionAccount, ComputationReference, ComputationStatus, Connection, MXEAccount, Program, PublicKey, QueueComputationIx };