import * as express from 'express';
import { AbstractGenericApp } from './abstract.generic.app';
import { AbstractGenericRouter, ExtendableError, IHealth, IMetricRegistry } from '../../index';
import { ILogger } from '../logger';
export declare class GenericApp extends AbstractGenericApp {
    middleware?: string;
    health?: IHealth;
    option?: {
        limit?: string | number | undefined;
        extended?: boolean;
        logger?: ILogger;
        metricRegister?: IMetricRegistry;
    };
    protected router: AbstractGenericRouter;
    protected genericLogger: ILogger;
    protected genericMetricRegister: IMetricRegistry;
    constructor(middleware?: string, health?: IHealth, option?: {
        limit?: string | number | undefined;
        extended?: boolean;
        logger?: ILogger;
        metricRegister?: IMetricRegistry;
    });
    get logger(): ILogger;
    get metricRgister(): IMetricRegistry;
    initAppVariable(): void;
    initModule(): void;
    initRoute(): void;
    initHealthCheck(): void;
    initMetrics(): void;
    initError(): void;
    setMainRouter(router: AbstractGenericRouter): void;
    addRoute(router: express.Router, m?: any): void;
    getRouter(): AbstractGenericRouter;
    protected logErrors(err: ExtendableError, req: express.Request, res: express.Response, next: express.NextFunction): void;
    protected clientErrorHandler(err: ExtendableError, req: express.Request, res: express.Response, next: express.NextFunction): void;
    protected errorHandler(err: ExtendableError, req: express.Request, res: express.Response, next: express.NextFunction): void;
    protected print(p: any, layer: any): void;
    protected split(thing: any): any;
}
