import { abortableHandlerSymbol } from './abortable.js'; import type { RPCErrorResponse, RPCMethods, RPCRequest, RPCResponse } from './types.js'; export declare type ErrorHandler = (ctx: Context, req: RPCRequest, error: Error) => void; export declare type MethodHandlerOptions = { signal?: AbortSignal; }; export declare type MethodHandler = ((ctx: Context, params: Params, options: MethodHandlerOptions) => Result | Promise) & { [abortableHandlerSymbol]?: boolean; }; export declare function abortableHandler>(handler: Handler): Handler; export declare type NotificationHandler = (ctx: Context, req: RPCRequest) => void; export declare type HandlerMethods = { [K in keyof Methods]: MethodHandler; }; export declare type HandlerOptions = { onHandlerError?: ErrorHandler; onInvalidMessage?: NotificationHandler; onNotification?: NotificationHandler; }; export declare function parseJSON(input: string): T; export declare function createErrorResponse(id: number | string, code: number): RPCErrorResponse; export declare function createHandler(methods: HandlerMethods, options?: HandlerOptions): (ctx: Context, msg: RPCRequest) => Promise | null>;