import type { IRequest } from "./express/request";
import type { IResponse } from "./express/response";
export type { IRequest, IResponse };
export type NextFunction = (error?: any) => void;
export type RouteMiddleware = (error: any, req: IRequest, res: IResponse, next: NextFunction) => Promise<void> | void;
export type RouteController = (req: IRequest, res: IResponse, next: NextFunction) => Promise<void> | void;
declare class Route extends Function {
    controllers: (RouteController | RouteMiddleware | Function)[];
    constructor();
    _call(...args: any[]): Promise<any>;
    /**
     * Express like route.ANY() without path filter.
     * @deprecated use `.use()` instead.
     */
    handle(...controllers: (RouteController | Function)[]): this;
    /**
     * Express like route.use()
     */
    use(...middlewares: (RouteMiddleware | RouteController | Function)[]): this;
}
export declare const Router: () => Route;
