export interface JsonRpcError { code: number; message: string; data?: unknown; } export interface JsonRpcRequest { jsonrpc: '2.0'; id?: string | number | null; method: string; params?: Record; } export type JsonRpcResponse = { jsonrpc: '2.0'; id: string | number | null; result: unknown; } | { jsonrpc: '2.0'; id: string | number | null; error: JsonRpcError; }; export interface Channel { closed: boolean; addEventListener(event: 'close', listener: () => void): () => void; addEventListener(event: 'response', listener: (response: JsonRpcResponse) => void): () => void; send(request: JsonRpcRequest): Promise; close(): Promise; } export interface Transport { establishChannel(): Promise; } export declare const isJsonRpcRequest: (message: unknown) => message is JsonRpcRequest; export declare const isJsonRpcResponse: (message: unknown) => message is JsonRpcResponse;