import type { RuntimeAdapter } from "../platform/adapters/base.js"; import type { VeryfrontConfig } from "../config/index.js"; import { type ExtensionLoader } from "../extensions/index.js"; import { type NodeWebSocketServerProvider } from "../extensions/websocket/index.js"; import { type FileLogSubscriber } from "../observability/index.js"; export interface BootstrapResult { /** Enhanced runtime adapter (with FSAdapter if configured) */ adapter: RuntimeAdapter; /** Loaded configuration */ config: VeryfrontConfig; /** Whether FSAdapter was initialized */ usingFSAdapter: boolean; /** FSAdapter type (if used) */ fsAdapterType?: string; /** * Extension loader that ran setup for all discovered extensions. * Even when no extensions exist, a loader instance is present so callers * can safely invoke `teardownAll()` unconditionally. */ extensionLoader: ExtensionLoader; /** Immutable Node WebSocket implementation selected by this extension generation. */ nodeWebSocketServerProvider?: Readonly; /** * Dispose bootstrap resources: tears down extensions (reverse order), * then releases any FSAdapter resources (WebSocket connections, caches). */ dispose?: () => void | Promise; } export declare function wireTracingShim(): void; /** @internal Snapshot the extension-provided Node WebSocket implementation for this generation. */ export declare function resolveNodeWebSocketServerProviderForBootstrap(): Readonly | undefined; export interface FileLogHandle { subscriber: FileLogSubscriber; unsubscribe: () => void; } /** * Detach the file log, absorbing teardown failures. * * `flush()`/`close()` reject so explicit callers can react to dropped log * writes, but bootstrap only detaches a best-effort log sink. Propagating here * would fail a config reload over a retained write error, or replace the real * startup error on the failure path with the teardown rejection. */ export declare function teardownFileLog(handle: FileLogHandle | null): Promise; /** * Run extension orchestration, disposing the FS adapter if orchestration fails. * * Exported for unit testing. In the FS-adapter path the caller has already * allocated FS resources (WebSocket connections, caches) that must be * released before the bootstrap error propagates. * * @internal */ export declare function orchestrateOrDisposeFS(orchestrate: () => Promise, fsDispose: (() => void) | undefined): Promise; export declare function bootstrap(projectDir: string, adapter: RuntimeAdapter): Promise; export declare function bootstrapDev(projectDir: string, adapter: RuntimeAdapter): Promise; export declare function bootstrapProd(projectDir: string, adapter: RuntimeAdapter): Promise; export declare function validateProductionEnvironmentForTests(): void; //# sourceMappingURL=bootstrap.d.ts.map