/** * Chain connection manager. * * Manages JSON-RPC connections per genesis hash, multiplexing follow * subscriptions and request/response correlation over a single connection * per chain. Ported from triangle-js-sdks host-container/chainConnectionManager.ts. */ import type { HexString } from "../shared/codec/scale/primitives.js"; import type { ChainHeadEvent, OperationStartedResult } from "../api/types.js"; import type { JsonRpcProvider } from "@polkadot-api/json-rpc-provider"; type PendingRequest = { resolve: (result: unknown) => void; reject: (error: unknown) => void; }; type FollowSubscription = { chainSubId: string; eventListener: (event: unknown) => void; pendingRequestId?: string; }; type ChainEntry = { connection: { send: (msg: string) => void; disconnect: () => void; }; pendingRequests: Map; followSubscriptions: Map; refCount: number; }; export declare function createChainConnectionManager(factory: (genesisHash: HexString) => JsonRpcProvider | undefined): { getOrCreateChain: (genesisHash: HexString) => ChainEntry | undefined; sendRequest: (genesisHash: HexString, method: string, params: unknown[]) => Promise; startFollow: (genesisHash: HexString, withRuntime: boolean, onEvent: (event: unknown) => void) => { followId: string; }; stopFollow: (genesisHash: HexString, followId: string) => void; getChainFollowSubId: (genesisHash: HexString) => string | undefined; releaseChain: (genesisHash: HexString) => void; dispose: () => void; convertJsonRpcEventToTyped: (event: Record) => ChainHeadEvent; convertOperationStartedResult: (result: unknown) => OperationStartedResult; convertStorageQueryTypeToJsonRpc: (type: string) => string; }; export {}; //# sourceMappingURL=connectionManager.d.ts.map