import { type Generation } from "./v3-generation.js"; import type { RpcRequest, RpcResponse } from "./v3-rpc-messages.js"; /** * Metadata provided to registered RPC handlers. */ export interface RpcHandlerMeta { rpcId: string; viewId?: string; idemKey: string; gen: Generation; method: string; } type RpcHandler = (params: unknown, meta: RpcHandlerMeta) => unknown | Promise; /** * Transport used by the RPC engine to send messages. */ export type RpcSend = (message: RpcRequest | RpcResponse) => void; /** * Configuration options for the RPC engine. */ export interface RpcConfig { defaultTimeoutMs?: number; idemCacheSize?: number; now?: () => number; setTimer?: (handler: () => void, timeout: number) => ReturnType; clearTimer?: (id: ReturnType) => void; } /** * RPC engine interface for sending calls and handling responses. */ export interface RpcEngine { call(method: string, params: unknown, options?: { idemKey?: string; timeoutMs?: number; retriable?: boolean; viewId?: string; gen?: Generation | number; }): Promise; handleMessage(message: RpcRequest | RpcResponse): Promise; registerHandler(method: string, handler: RpcHandler, options?: { cacheResponse?: boolean; }): void; reset(reason?: unknown): void; } /** * Creates an RPC engine bound to the provided transport. */ export declare function createRpcEngine(send: RpcSend, config?: RpcConfig): RpcEngine; export {}; //# sourceMappingURL=v3-rpc-engine.d.ts.map