import { type IRawResPacket } from '../../interface/rpc.js'; import { ExError } from '../../utility/ExError.js'; import { Connector } from './Connector.js'; import { type ListenerCallback } from './Listener.js'; import { Notify } from './packet/Notify.js'; import { Request } from './packet/Request.js'; import { Response } from './packet/Response.js'; export type RPCHandler = (body: Req, ...args: any) => Promise; export type MethodPramBuilder = (route: R, body: Req, req: Request | Notify, response: Response | null, connector: Connector) => Promise; export interface IRPCHandlerParam { type: any; provider: MethodPramBuilder; } export type RPCMiddleware = (route: T, body: Req, req: Request | Notify, response: Response | null, connector: Connector, next: () => Promise) => Promise; export interface IRPCHandler { params: any[]; handler: RPCHandler; } export type NotifyHandler = (body: Req, ...args: any) => Promise; export interface INotifyHandler { params: any[]; handler: NotifyHandler; } export declare enum MiddlewarePosition { Before = "before", After = "after" } declare class Route { protected static method(target: Route, key: string): void; protected static notify(target: Route, key: string): void; protected static registerMethod(target: Route, method: string, callback: RPCHandler, types: any[]): void; protected static registerNotify(target: Route, method: string, callback: NotifyHandler, types: any[]): void; protected static registerProvider(target: R, method: string, type: unknown, provider: MethodPramBuilder): void; protected static registerMiddleware(target: T, method: string, middleware: RPCMiddleware): void; protected static makeErrorRPCResponse(request: Request, response: Response, err: ExError): IRawResPacket; static callback(route: Route): ListenerCallback; static compose(routes: Route[]): ListenerCallback; constructor(); protected buildCallParams(method: string, paramTypes: any[], request: Request | Notify, response: Response | null, connector: Connector): Promise; private composeMiddleware; protected callMethod(method: string, request: Request, response: Response, connector: Connector): Promise; protected callNotify(method: string, request: Notify, connector: Connector): Promise; protected hasMethod(method: string): boolean | undefined; protected hasNotify(method: string): boolean | undefined; } export { Route }; //# sourceMappingURL=Route.d.ts.map