import { Container } from '../../helpers/inversion/container'; import type { ValueOrPromise } from '@venizia/ignis-helpers/common'; import type { IApplicationConfigs, IApplicationInfo } from './common'; export declare abstract class AbstractApplication extends Container { protected configs: IApplicationConfigs; protected projectRoot: string; private postStartHooks; private postStopHooks; constructor(opts: { scope: string; config: IApplicationConfigs; }); abstract getAppInfo(): ValueOrPromise; abstract preConfigure(): ValueOrPromise; /** * Runs after every registration sweep (datasources, components, controllers) has already * completed. Registering a new one here is not auto-registered and silently does nothing - * call `configure()` manually instead. */ abstract postConfigure(): ValueOrPromise; abstract staticConfigure(): void; abstract setupMiddlewares(opts?: { middlewares?: Record; }): ValueOrPromise; abstract initialize(): Promise; protected getDefaultAsyncContextEnabled(): boolean; getProjectConfigs(): IApplicationConfigs; getProjectRoot(): string; registerPostStartHook(opts: { identifier: string; hook: () => ValueOrPromise; }): void; /** Runs every post-start hook in isolation - the server is already listening, so a throwing hook must not cancel the ones behind it; failures are collected and reported as one error at the end. */ protected executePostStartHooks(): Promise; registerPostStopHook(opts: { identifier: string; hook: () => ValueOrPromise; }): void; protected executePostStopHooks(): Promise; protected registerCoreBindings(): void; init(): void; } //# sourceMappingURL=abstract.d.ts.map