/// <reference types="node" />
import { Server } from 'http';
import { Application } from 'express';
import { ExceptionHandler } from './exceptions';
import { Middleware, Controller } from './http';
import { IAppConfig, IMiddlewareFunc } from './interfaces';
import { Logger } from './logger';
import { ServiceProvider } from './framework/services/ServiceProvider';
export declare class App {
    private app;
    private controllers;
    private providers;
    private globalMiddleware;
    private middleware;
    private exceptionHandler;
    private readonly routeMapper;
    private readonly connection;
    private readonly config;
    private readonly logger;
    constructor(app: Application, config: IAppConfig, controllers?: Controller[]);
    static bootstrap(config?: IAppConfig, controllers?: Controller[]): App;
    init(): App;
    getLogger(): Logger;
    getExceptionHandler(): ExceptionHandler;
    withMiddleware(route?: string | RegExp | IMiddlewareFunc | Middleware, ...middleware: Array<IMiddlewareFunc | Middleware>): App;
    withGlobalMiddleware(route?: string | RegExp | IMiddlewareFunc | Middleware, ...middleware: Array<IMiddlewareFunc | Middleware>): App;
    withControllers(...controllers: Controller[]): App;
    withProviders(...providers: ServiceProvider[]): App;
    withExceptionHandler(handler: ExceptionHandler): App;
    wire(): Promise<App>;
    listen(): Server;
    express(): Application;
    private registerControllers;
    private constructPath;
    private onException;
    private wrapMiddleware;
    private handleResponse;
    private afterResponse;
}
