import { IConfigLoader } from '../configLoader'; import { ILoggerConfig } from '../logger'; export interface IModuleDescription { name: string; path: string; } export interface ILauncherConfig { name: string; baseDir?: string; loggerConfig?: ILoggerConfig; } export interface IApplicationConfig extends ILauncherConfig { name: string; baseDir: string; configLoader?: IConfigLoader; moduleDescription: IModuleDescription[]; loggerConfig: ILoggerConfig; } /** * Application launcher */ export declare class Launcher { private readonly container; private readonly applicationConfig; private readonly defaultApplicationConfig; private readonly DEFAULT_LOG_LEVEL; /** * Construct a launcher instance */ constructor(launcherConfig?: ILauncherConfig); /** * Set base directory path for the application * @param baseDir Directory path */ onBaseDir(baseDir: string): Launcher; /** * Set local configuration file path * @param configLoader Local config file path */ withConfig(configLoader: IConfigLoader): Launcher; /** * Set logger configuration * @param loggerConfig Logger config */ withLoggerConfig(loggerConfig: ILoggerConfig): Launcher; /** * Define a module to be loaded * @param moduleDescription Module description */ module(moduleDescription: IModuleDescription): Launcher; /** * Start application */ start(): void; /** * Validates the application config and sets default values for undefined properties * @param config Application config to be sanitized */ private sanitizeApplicationConfig; }