import { BlockHash } from '@dedot/codecs'; import { OperationId, NamedEvent } from './types.js'; export interface WithOperationId { operationId: OperationId; } export type RuntimeEvent = { type: 'valid'; spec: ChainHeadRuntimeVersion; } | { type: 'invalid'; error: string; }; export interface ChainHeadRuntimeVersion { specName: string; implName: string; specVersion: number; implVersion: number; apis: Record; transactionVersion: number; } export interface Initialized extends NamedEvent { event: 'initialized'; finalizedBlockHashes: Array; finalizedBlockHash?: Hash; finalizedBlockRuntime: RuntimeEvent | null; } export interface NewBlock extends NamedEvent { event: 'newBlock'; blockHash: Hash; parentBlockHash: Hash; newRuntime: RuntimeEvent | null; } export interface BestBlockChanged extends NamedEvent { event: 'bestBlockChanged'; bestBlockHash: Hash; } export interface Finalized extends NamedEvent { event: 'finalized'; finalizedBlockHashes: Array; prunedBlockHashes: Array; } export interface OperationBodyDone extends NamedEvent, WithOperationId { event: 'operationBodyDone'; value: Array; } export interface OperationCallDone extends NamedEvent, WithOperationId { event: 'operationCallDone'; output: string; } export interface StorageResult { key: string; value?: string; hash?: string; closestDescendantMerkleValue?: string; } export interface OperationStorageItems extends NamedEvent, WithOperationId { event: 'operationStorageItems'; items: Array; } export interface OperationWaitingForContinue extends NamedEvent, WithOperationId { event: 'operationWaitingForContinue'; } export interface OperationStorageDone extends NamedEvent, WithOperationId { event: 'operationStorageDone'; } export interface OperationInaccessible extends NamedEvent, WithOperationId { event: 'operationInaccessible'; } export interface OperationError extends NamedEvent, WithOperationId { event: 'operationError'; error: string; } export interface ChainHeadStop extends NamedEvent { event: 'stop'; } export type FollowOperationEvent = OperationBodyDone | OperationCallDone | OperationStorageItems | OperationWaitingForContinue | OperationStorageDone | OperationInaccessible | OperationError; export type FollowEvent = Initialized | NewBlock | BestBlockChanged | Finalized | FollowOperationEvent | ChainHeadStop; export type MethodResponse = { result: 'started'; operationId: OperationId; discardedItems?: number; } | { result: 'limitReached'; }; export interface StorageQuery { key: Key; type: StorageQueryType; } export type StorageQueryType = 'value' | 'hash' | 'closestDescendantMerkleValue' | 'descendantsValues' | 'descendantsHashes';