UNPKG

jsonrpctts

Version:

A TypeScript JSON-RPC 2.0 client with axios

28 lines (27 loc) 850 B
export type MethodName<T> = keyof { [K in keyof T as T[K] extends (...args: any) => any ? K : never]: T[K]; }; export type RPCParams<T, M extends MethodName<T>> = T[M] extends (...args: infer P) => any ? P[0] extends undefined ? never : P : never; export type RPCResult<T, M extends MethodName<T>> = T[M] extends (...args: any) => infer R ? R extends Promise<infer U> ? U : R : never; export interface RPCClientConfig { endpoint: string; headers?: Record<string, string>; timeout?: number; } export interface JSONRPCRequest { jsonrpc: "2.0"; method: string; params?: unknown; id: number; } export interface JSONRPCResponse<T = unknown> { jsonrpc: "2.0"; id: number | null; result?: T; error?: JSONRPCError; } export interface JSONRPCError { code: number; message: string; data?: unknown; }