UNPKG

json-rpc-dual-engine

Version:

JSON-RPC-2.0 client and server protocol-agnostic engine.

35 lines 1.98 kB
import type { JSONMap as JSONObject, JSONEntry as JSONValue } from 'json-types'; import { BaseAPIType, LoggerType, TransportType } from './types.js'; export type RemoteAPI<APIType extends BaseAPIType> = { [MethodName in keyof APIType]: (...params: Parameters<APIType[MethodName]>) => ReturnType<APIType[MethodName]> extends Promise<any> ? ReturnType<APIType[MethodName]> : Promise<ReturnType<APIType[MethodName]>>; }; export type NotificationsAPI<APIType extends BaseAPIType> = { [MethodName in keyof APIType]: (...params: Parameters<APIType[MethodName]>) => void; }; export interface JsonRpcClientOptions { timeout?: number | undefined; transport?: TransportType | undefined; logger?: LoggerType | null | undefined; } export declare class JsonRpcClient<APIType extends BaseAPIType = BaseAPIType> { #private; constructor({ transport, timeout, logger, }?: JsonRpcClientOptions); timeout: number; transport?: TransportType | undefined; logger: LoggerType | null; get remote(): RemoteAPI<APIType>; get notifications(): NotificationsAPI<APIType>; buildRequest<MethodName extends keyof APIType>(method: MethodName, params?: Parameters<APIType[MethodName]>, options?: { id: string | number | null; }): string; buildRequest(method: string, params?: JSONValue[] | JSONObject, options?: { id: string | number | null; }): string; sendRequest<MethodName extends keyof APIType>(method: MethodName, params: Parameters<APIType[MethodName]>): Promise<ReturnType<APIType[MethodName]>>; sendRequest(method: string, params?: JSONValue[] | JSONObject): Promise<JSONValue>; sendNotification<MethodName extends keyof APIType>(method: MethodName, params: Parameters<APIType[MethodName]>): void; sendNotification(method: string, params: JSONValue[] | JSONObject): void; accept(message: unknown): void; toStream(): ReadableWritablePair<string, string>; } //# sourceMappingURL=json-rpc-client.d.ts.map