import { Router, RequestHandler } from "express";
import { GuardFn } from "../models/guard";
import { RouteWrapperHandler } from '../models/route-wrapper-handler';
export interface ControllerMethodDefinition {
    route: string;
    apiMethod: ApiMethod;
    middlewares: Array<RequestHandler>;
    wrappers: Array<RouteWrapperHandler>;
    validators: Array<RequestHandler>;
    classMethodName: string;
}
export declare type ApiMethod = 'POST' | 'GET' | 'PUT' | 'DELETE' | 'PATCH' | 'ALL';
export declare class ControllerDefContainer {
    gourds: Array<GuardFn>;
    methodDefinitionsMap: Map<string, ControllerMethodDefinition>;
    path: string;
    constructor();
    addMiddleware(cb: RequestHandler, classMethodName: string): void;
    addWrapper(cb: RouteWrapperHandler, classMethodName: string): void;
    setPath(path: string): void;
    addMethod(route: string, validators: Array<RequestHandler>, apiMethod: ApiMethod, classMethodName: string): void;
    private applyWrappers;
    initRouter(router: Router, classContext: any): Router;
}
