json-rpc-dual-engine
Version:
JSON-RPC-2.0 client and server protocol-agnostic engine.
35 lines • 1.98 kB
TypeScript
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