import type { PipelineBus } from "./pipeline-bus.js"; import type { InitStage } from "./packets.js"; export interface InitStep { /** Human-readable name for logging and error messages. */ readonly name: string; /** Which initialization stage this step represents. */ readonly stage: InitStage; /** Run the initialization. Throws on failure. */ run(): Promise; /** Clean up resources. Called during teardown (on failure) or finalize chain. */ cleanup?(): Promise; } export declare class InitializationError extends Error { readonly stage: InitStage; readonly component: string; constructor(stage: InitStage, component: string, cause: Error); } /** * Run a serial init chain. Each step runs in order. On failure: * 1. Emits InitializationFailedPacket through the bus. * 2. Tears down already-initialized steps in reverse order. * 3. Throws InitializationError. * * On success: * 1. Emits InitStepCompletedPacket for each step (with initMs). * 2. Emits InitializationCompletedPacket. */ export declare function runInitChain(bus: PipelineBus, steps: readonly InitStep[]): Promise; /** * Run a reverse finalize chain. Steps are torn down in reverse order. * Errors during teardown are logged but do not stop the chain. * All steps get their cleanup called regardless of earlier failures. */ export declare function runFinalizeChain(steps: readonly InitStep[]): Promise; //# sourceMappingURL=init-chain.d.ts.map