///
import { EventEmitter } from 'events';
import { Logger } from './Logger';
import { LogSeverity } from './LogSeverity';
import { TokenManager } from './TokenManager';
import { Database } from './Database';
import { IHandler } from './IHandler';
import { IConfig } from './IConfig';
import Commander = require('commander');
export declare abstract class Application extends EventEmitter {
private logger;
private name;
private configPath;
private config;
private tokenManager;
private server;
private db;
private _logConfigDefaulting;
private _isTestEnvironment;
private socket;
private _program;
constructor(name: string, configPath: string, logSeverity?: LogSeverity);
private _load;
getPort(): number;
private $buildArgOptions;
protected _buildArgOptions(program: Commander.CommanderStatic): void;
getProgram(): Commander.CommanderStatic;
getRequestSizeLimit(): number;
attachHandler(path: string, HandlerClass: IHandler): void;
close(): Promise;
protected abstract attachHandlers(): Promise;
loadConfig(path: string): Promise;
getName(): string;
setLogger(logger: Logger): void;
getLogger(): Logger;
getConfig(): IConfig;
shouldListen(): boolean;
protected onConfigLoad(config: IConfig): void;
setTokenManager(tokenManager: TokenManager): void;
getTokenManager(): TokenManager;
getDB(): Database;
getCmdLineArgs(): any;
protected initDB(config: IConfig): Promise;
protected _createLogger(): Logger;
protected _getDefaultLogLevel(): LogSeverity;
protected _parseLogLevelConfig(config: IConfig): LogSeverity;
protected _llStrToSeverity(ll: string): LogSeverity;
protected onBeforeReady(): void;
protected onReady(): void;
}