import { type BootDiagnosticsCallback, SmoldotDriver, type ChainReadinessOptions, type ChainStatus, type SmoldotChainName, type SmoldotClient } from "./chain.js"; export type { ChainReadinessOptions }; import type { ChainBootstrapSdk } from "./sdk-interfaces.js"; export declare const STALE_PENDING_SUBSCRIPTION_TTL_MS = 60000; export declare const AUDITED_SUBSCRIPTION_STOP_METHODS: Readonly<{ chainHead_v1_follow: string; chain_subscribeAllHeads: string; chain_subscribeFinalizedHeads: string; chain_subscribeNewHeads: string; state_subscribeRuntimeVersion: string; state_subscribeStorage: string; statement_subscribeStatement: string; transactionWatch_v1_submitAndWatch: string; }>; export interface RuntimeChainRpcOptions { timeoutMs?: number; } interface RuntimeChainRpcChain { sendJsonRpc(payload: string): void; } export interface RuntimeChainDriver { registerResponseInterceptor(chainName: ChainName, interceptor: (text: string) => boolean): void; registerRelayResponseInterceptor(chainName: ChainName, interceptor: (text: string) => boolean): void; unregisterResponseInterceptor(chainName: ChainName): void; unregisterRelayResponseInterceptor(chainName: ChainName): void; getParaChain(chainName: ChainName): RuntimeChainRpcChain | null; getRelayChain(chainName: ChainName): RuntimeChainRpcChain | null; } export interface RuntimeChainService { connect(chainName: ChainName): Promise; disconnect(chainName: ChainName): void; statuses(): ChainStatus[]; refreshRouting(chainNames?: readonly ChainName[]): Promise>; routingTable(): Map; supportedGenesisHashes(): Uint8Array[]; routeChainByGenesisHash(genesisHash: Uint8Array): ChainName | null; sendRpc(chainName: ChainName, method: string, paramsJson: string, options?: RuntimeChainRpcOptions): Promise; startSubscription(chainName: ChainName, method: string, paramsJson: string, onMessage: (jsonRpc: string) => void, onAbort: (reason: string) => void): () => void; waitUntilReady(chainName: ChainName, options?: ChainReadinessOptions): Promise; setBootDiagnostics?(chainName: ChainName, callback: BootDiagnosticsCallback | null): void; persistState?(chainNames?: readonly ChainName[]): void; destroy(): Promise; } export declare class RuntimeChainBridge { private readonly driver; private nextRequestId; private readonly pendingRequests; private readonly pendingSubscriptions; private readonly activeSubscriptions; constructor(driver: RuntimeChainDriver); registerInterceptor(chainName: ChainName): void; unregisterInterceptor(chainName: ChainName): void; sendRpc(chainName: ChainName, method: string, paramsJson: string, options?: RuntimeChainRpcOptions): Promise; startSubscription(chainName: ChainName, method: string, paramsJson: string, onMessage: (jsonRpc: string) => void, onAbort: (reason: string) => void): () => void; handleResponse(chainName: ChainName, text: string): boolean; private requireChain; private nextJsonRpcId; private pruneStalePendingSubscriptions; private sendStopRequest; } type SmoldotRuntimeSdk = Pick; export interface SmoldotRuntimeChainServiceOptions { sdk: SmoldotRuntimeSdk; smoldotClient: SmoldotClient; chainNames: readonly ChainName[]; } type SmoldotRuntimeDriver = Pick & { connect(chainName: ChainName): Promise; disconnect(chainName: ChainName): void; getParaChain(chainName: ChainName): RuntimeChainRpcChain | null; getRelayChain(chainName: ChainName): RuntimeChainRpcChain | null; persistState(chainName?: ChainName): void; registerResponseInterceptor(chainName: ChainName, interceptor: (text: string) => boolean): void; registerRelayResponseInterceptor(chainName: ChainName, interceptor: (text: string) => boolean): void; setBootDiagnostics(chainName: ChainName, callback: BootDiagnosticsCallback | null): void; unregisterResponseInterceptor(chainName: ChainName): void; unregisterRelayResponseInterceptor(chainName: ChainName): void; waitUntilReady(chainName: ChainName, options?: ChainReadinessOptions): Promise; }; export declare class SmoldotRuntimeChainService implements RuntimeChainService { private readonly driver; private readonly chainNames; private readonly hexEncode; private readonly hexDecode; private readonly routing; private readonly multiplexers; private readonly pendingConnect; private readonly pendingReady; private nextRelayRequestId; constructor(driver: SmoldotRuntimeDriver, chainNames: readonly ChainName[], hexEncode: (bytes: Uint8Array) => string, hexDecode: (hex: string) => Uint8Array); connect(chainName: ChainName): Promise; waitUntilReady(chainName: ChainName, options?: ChainReadinessOptions): Promise; private waitUntilReadyInternal; private sendRelayRpc; setBootDiagnostics(chainName: ChainName, callback: BootDiagnosticsCallback | null): void; persistState(chainNames?: readonly ChainName[]): void; disconnect(chainName: ChainName): void; statuses(): ChainStatus[]; refreshRouting(chainNames?: readonly ChainName[]): Promise>; routingTable(): Map; supportedGenesisHashes(): Uint8Array[]; routeChainByGenesisHash(genesisHash: Uint8Array): ChainName | null; sendRpc(chainName: ChainName, method: string, paramsJson: string, options?: RuntimeChainRpcOptions): Promise; startSubscription(chainName: ChainName, method: string, paramsJson: string, onMessage: (jsonRpc: string) => void, onAbort: (reason: string) => void): () => void; destroy(): Promise; private openConnection; } export declare function createSmoldotRuntimeChainService(options: SmoldotRuntimeChainServiceOptions): SmoldotRuntimeChainService; //# sourceMappingURL=runtime-chain-service.d.ts.map