import { IncomingMessage, ServerResponse } from 'http'; type Request = IncomingMessage & { params: any; method: HttpMethod; headers?: Record; body?: any; raw_body?: any; files?: any; query?: Record; }; type Response = ServerResponse; type LexerToken = { type: string; value: string; }; type HandlerType = (req: Request, res: Response, next?: (() => any) | undefined) => Promise | any; type ControllerDecoratorOptions = { middlewares?: MiddlewareProvider[]; }; type MiddlewareProvider = typeof Middleware | Middleware | ((request: Request, response: Response, next: () => Promise) => Promise); type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'HEAD' | 'OPTIONS'; type RouteCheck = (req: Request, res: Response) => boolean; declare abstract class Middleware { protected constructor(params?: any); static getInstance(params: any): Middleware; abstract call(req: Request, res: Response, next: () => Promise): Promise; } export { type ControllerDecoratorOptions as C, type HandlerType as H, type LexerToken as L, Middleware as M, type Request as R, type HttpMethod as a, type MiddlewareProvider as b, type Response as c, type RouteCheck as d };