jsonrpctts
Version:
A TypeScript JSON-RPC 2.0 client with axios
28 lines (27 loc) • 850 B
TypeScript
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;
}