///
import * as Koa from "koa";
import * as Router from 'koa-router';
import { IMiddleware } from 'koa-router';
import { IAppConfig, IAppMiddlewares } from './interfaces';
import * as joi from 'joi';
export declare type TJoiSchemaGenerator = (joiObject: any) => joi.ObjectSchema;
export declare class InnotsApp {
protected config: IAppConfig;
protected router: Router;
protected koaAppInstance: Koa;
protected middlewares: IAppMiddlewares;
constructor(config: IAppConfig, router?: Router, customMiddlewares?: IAppMiddlewares);
bootstrap(): Promise;
route(method: string, url: string, ...args: any[]): void;
protected _enableTraceMiddleware(): void;
protected _enableBodyParser(): void;
protected _enableLogMiddleware(): void;
protected _enableErrorMiddleware(): void;
protected _enableJwtMiddleware(): void;
protected _enableCorsMiddleware(): void;
protected _enableUserAgentMiddleware(): void;
protected _enableSuccessMiddleware(): void;
protected _createValidationMiddleware(schema: joi.ObjectSchema): IMiddleware;
protected _processError(err: any, ctx: Koa.Context): void;
protected _processUncaughtException(err: any): void;
private _startApp();
}