import { Container } from './container.js'; import { HookBus } from './hooks.js'; import type { BasaltPlugin } from './plugin.js'; export type LifecyclePhase = 'created' | 'registering' | 'booting' | 'ready' | 'shutting-down' | 'stopped'; export interface CreateAppOptions { plugins?: BasaltPlugin[] | BasaltPlugin[]; /** Raw config, keyed by plugin name (e.g. `{ 'basalt:cache': { driver: 'memory' } }`) */ config?: Record; } declare module './hooks.js' { interface BasaltHooks { 'app:registered': { app: BasaltApp; }; 'app:booted': { app: BasaltApp; }; 'app:shutdown': { app: BasaltApp; }; } } export declare class BasaltApp { readonly container: Container; readonly hooks: HookBus; phase: LifecyclePhase; private readonly plugins; private readonly rawConfig; private booted; constructor(options?: CreateAppOptions); boot(): Promise; shutdown(): Promise; private resolveConfig; } export declare function createApp(options?: CreateAppOptions): BasaltApp;