export type ID = string | number | null; // deno-lint-ignore no-explicit-any export type ResponseError = { code: Code; message: string; data?: Data; }; export type Request = { jsonrpc: "2.0"; method: Method; params: Params; id: ID; }; export type Notification = { jsonrpc: "2.0"; method: Method; params: Params; }; // deno-lint-ignore no-explicit-any export type Response> = { jsonrpc: "2.0"; id: ID; } & RPCResult; export type Transport = { send: (data: string) => Promise; recv: () => Promise; close: () => Promise; }; export type RPCResult = { result?: Result; error?: Error; }; export type Service = { [P in string]: ( // deno-lint-ignore no-explicit-any ...args: any[] ) => Promise>; }; export const ERROR_PARSEE_ERROR: ResponseError<-32700> = { code: -32700, message: "Parse error", }; export const ERROR_INVALID_REQUEST: ResponseError<-32600> = { code: -32600, message: "Invalid Request", }; export const ERROR_METHOD_NOT_FOUND: ResponseError<-32601> = { code: -32601, message: "Method not found", }; export const ERROR_INVALID_PARAMS: ResponseError<-32602> = { code: -32602, message: "Invalid params", }; export const ERROR_INTERNAL_ERROR: ResponseError<-32603> = { code: -32603, message: "Internal error", };