export interface RequestContextBase { peerAuthorization?: string; method: string; requestId: number; } export type MethodHandler = (params: Params, ctx: RequestContext, peer: ISocketClient, next: () => Promise) => Promise; export type GenericMiddleware = MethodHandler; export type NonEmptyArray = [...T[], T]; export type MethodHandlers = { [Key in keyof Methods]: Methods[Key] extends (params: infer Params) => Promise ? NonEmptyArray> : Methods[Key] extends Record ? MethodHandlers : never; }; type ISocketClientMethodCall = { [Key in keyof Methods]: Methods[Key] extends (params: infer P) => Promise ? (params: P) => Promise : Methods[Key] extends Record ? ISocketClientMethodCall : never; }; export type ISocketClient = { close: () => void; call: ISocketClientMethodCall; }; export type MethodSchema = (params: Params) => Promise; /** The exception type can be thrown to cause the default error handler to write a raw error response to the socket */ export declare class SocketErrorException extends Error { readonly code: number; readonly message: string; constructor(code: number, message: string); } export type SocketTimeouts = { noResponseTimeoutInSeconds?: number; connectionTimeoutInSeconds?: number; }; export {};