export declare type RPCID = string | number | null; export declare type RPCParams = Record | Array; export declare type RPCMethodTypes = { params?: RPCParams; result?: unknown; error?: undefined; }; export declare type RPCMethods = Record; export declare type RPCRequest = Methods[MethodName]['params'] extends undefined ? { jsonrpc: string; method: MethodName; params?: undefined; id?: RPCID; } : { jsonrpc: string; method: MethodName; params: Methods[MethodName]['params']; id?: RPCID; }; export declare type RPCErrorObject = Data extends undefined ? { code: number; data?: undefined; message?: string; } : { code: number; data: Data; message?: string; }; export declare type RPCErrorResponse = { jsonrpc: string; id: RPCID; result?: never; error: RPCErrorObject; }; export declare type RPCResultResponse = Result extends undefined ? { jsonrpc: string; id: RPCID; result?: undefined; error?: never; } : { jsonrpc: string; id: RPCID; result: Result; error?: never; }; export declare type RPCResponse = RPCResultResponse | RPCErrorResponse; export declare type SendRequestFunc = []> = (request: RPCRequest, ...args: Args) => Promise | null>; export declare type RPCConnection = []> = { send: SendRequestFunc; };