import { DinoController } from './dino.controller';
import { ApiController } from '../controller';
import { IDinoContainer } from '../interfaces';
import { IControllerAttributeProvider, IActionMethodAttribute, IDinoContainerConfig, IDinoProperties, Response } from '../types';
export declare class DinoContainer implements IDinoContainer {
    private diContainer;
    private app;
    private baseUri;
    private routeTable;
    private enableTaskContext;
    private useRouterCb;
    constructor(config: IDinoContainerConfig);
    resolve<T>(middleware: Function, dino: IDinoProperties): T;
    routeNotFoundMiddleware(middleware: any): void;
    builtInRequestStartMiddleware(middleware: any): void;
    builtInRequestEndMiddleware(middleware: any): void;
    builtInErrorMiddleware(middleware: any): void;
    appStartMiddleware(middleware: Function): void;
    requestStartMiddleware(middleware: Function): void;
    requestEndMiddleware(middleware: Function): void;
    registerErrorMiddleware(middleware: Function): void;
    registerErrorController(type: Function): void;
    setUpDinoController(type: any, actionAttr: IActionMethodAttribute, res: Response): DinoController;
    populateControllerMiddlewares(obj: ApiController): IControllerAttributeProvider;
    getActionMethodMetadata(httpAttribute: string, actionName: string, controller: ApiController): IActionMethodAttribute;
    registerController(type: Function): void;
    static create(config: IDinoContainerConfig): DinoContainer;
}
