import { Level, Logger } from 'pino'; import { ClassType } from '@davinci/reflector'; import { Module, ModuleStatus } from './Module'; import { LocalVars, LocalVarsContainer, Signals } from './types'; export interface AppOptions { controllers?: ClassType[]; shutdown?: { enabled?: boolean; signals?: Signals[]; }; logger?: { name?: string; level?: Level | 'silent'; }; } export declare class App extends Module implements LocalVarsContainer { logger: Logger; locals: LocalVars; private options?; private modules; private controllers; private modulesDic; constructor(options?: AppOptions); getModuleId(): string; getOptions(): AppOptions | undefined; registerModule(module: Module): Promise; registerModule(modules: Module[]): Promise; registerModule(...modules: Module[]): Promise; registerController(controllers: ClassType[]): this; registerController(...controllers: ClassType[]): this; registerController(controller: ClassType): this; init(): Promise; shutdown(): Promise; getModules(): Module[]; getModuleById(moduleId: string, waitForStatus?: ModuleStatus): Promise; getControllers(): ClassType[]; getControllersWithReflection(): { Controller: ClassType; controllerInstance: any; reflection: import("@davinci/reflector").ClassReflection; }[]; getControllerReflection(controller: ClassType): import("@davinci/reflector").ClassReflection; enableShutdownSignals(): this; addLocalVariable(name: string, value: T): void; } export declare const createApp: (options?: AppOptions) => App;