/// export interface ABI { init(req: InitRequest): Promise; initStateMachine(req: InitStateMachineRequest): Promise; initGenesisState(req: InitGenesisStateRequest): Promise; insertAssets(req: InsertAssetsRequest): Promise; verifyAssets(req: VerifyAssetsRequest): Promise; beforeTransactionsExecute(req: BeforeTransactionsExecuteRequest): Promise; afterTransactionsExecute(req: AfterTransactionsExecuteRequest): Promise; verifyTransaction(req: VerifyTransactionRequest): Promise; executeTransaction(req: ExecuteTransactionRequest): Promise; commit(req: CommitRequest): Promise; revert(req: RevertRequest): Promise; clear(req: ClearRequest): Promise; finalize(req: FinalizeRequest): Promise; getMetadata(req: MetadataRequest): Promise; query(req: QueryRequest): Promise; prove(req: ProveRequest): Promise; } export interface AggregateCommit { height: number; aggregationBits: Buffer; certificateSignature: Buffer; } export interface BlockHeader { id: Buffer; version: number; timestamp: number; height: number; previousBlockID: Buffer; generatorAddress: Buffer; transactionRoot: Buffer; assetRoot: Buffer; eventRoot: Buffer; stateRoot: Buffer; maxHeightPrevoted: number; maxHeightGenerated: number; impliesMaxPrevotes: boolean; validatorsHash: Buffer; aggregateCommit: AggregateCommit; signature: Buffer; } export interface Transaction { module: string; command: string; nonce: bigint; fee: bigint; senderPublicKey: Buffer; params: Buffer; signatures: readonly Buffer[]; } export interface BlockAsset { module: string; data: Buffer; } export interface Block { header: BlockHeader; transactions: Transaction[]; assets: BlockAsset[]; } export interface Event { module: string; name: string; data: Buffer; topics: Buffer[]; index: number; height: number; } export interface Validator { address: Buffer; bftWeight: bigint; generatorKey: Buffer; blsKey: Buffer; } export interface InitRequest { chainID: Buffer; lastBlockHeight: number; lastStateRoot: Buffer; } export interface InitResponse { } export interface InitStateMachineRequest { header: BlockHeader; } export interface InitStateMachineResponse { contextID: Buffer; } export interface InitGenesisStateRequest { contextID: Buffer; stateRoot: Buffer; } export interface InitGenesisStateResponse { events: Event[]; preCommitThreshold: bigint; certificateThreshold: bigint; nextValidators: Validator[]; } export interface InsertAssetsRequest { contextID: Buffer; finalizedHeight: number; } export interface InsertAssetsResponse { assets: BlockAsset[]; } export interface VerifyAssetsRequest { contextID: Buffer; assets: BlockAsset[]; } export interface VerifyAssetsResponse { } export interface BeforeTransactionsExecuteRequest { contextID: Buffer; assets: BlockAsset[]; } export interface BeforeTransactionsExecuteResponse { events: Event[]; } export interface AfterTransactionsExecuteRequest { contextID: Buffer; assets: BlockAsset[]; transactions: Transaction[]; } export interface AfterTransactionsExecuteResponse { events: Event[]; preCommitThreshold: bigint; certificateThreshold: bigint; nextValidators: Validator[]; } export interface VerifyTransactionRequest { contextID: Buffer; header: BlockHeader; transaction: Transaction; onlyCommand: boolean; } export interface VerifyTransactionResponse { result: number; errorMessage: string; } export interface ExecuteTransactionRequest { contextID: Buffer; transaction: Transaction; assets: BlockAsset[]; dryRun: boolean; header: BlockHeader; } export interface ExecuteTransactionResponse { events: Event[]; result: number; } export interface CommitRequest { contextID: Buffer; stateRoot: Buffer; expectedStateRoot: Buffer; dryRun: boolean; } export interface CommitResponse { stateRoot: Buffer; } export interface RevertRequest { contextID: Buffer; stateRoot: Buffer; expectedStateRoot: Buffer; } export interface RevertResponse { stateRoot: Buffer; } export interface FinalizeRequest { finalizedHeight: number; } export interface FinalizeResponse { } export interface ClearRequest { } export interface ClearResponse { } export interface MetadataRequest { } export interface MetadataResponse { data: Buffer; } export interface QueryRequest { method: string; params: Buffer; header: BlockHeader; } export interface QueryResponse { data: Buffer; } export interface ProveRequest { stateRoot: Buffer; keys: Buffer[]; } export interface Proof { siblingHashes: Buffer[]; queries: QueryProof[]; } export interface ProofJSON { siblingHashes: string[]; queries: QueryProofJSON[]; } export interface QueryProof { key: Buffer; value: Buffer; bitmap: Buffer; } export interface QueryProofJSON { key: string; value: string; bitmap: string; } export interface ProveResponse { proof: Proof; } export interface ProveResponseJSON { proof: ProofJSON; } export interface IPCRequest { id: bigint; method: string; params: Buffer; } export interface IPCResponse { id: bigint; success: boolean; error: { message: string; }; result: Buffer; }