export type LifecycleTimingLabel = "process-entry" | "interactive-engine-spawn" | "engine-ready" | "tui-start" | "header-mounted" | "first-terminal-write" | "startup-coherent" | "startup-complete" | "engine-bound" | "engine-resources-ready" | "chat-output-release" | "interactive-input-handler-ready" | "interactive-first-submit" | "before-provider-request"; export interface LifecycleTimingRecord { readonly label: LifecycleTimingLabel; readonly atNs: bigint; readonly pid: number; } export type LifecycleTimingSink = (record: LifecycleTimingRecord) => void; /** True only when an internal diagnostic adapter has installed a synchronous sink. */ export declare function isLifecycleTimingEnabled(): boolean; /** * Install a process-local diagnostic sink. * * The sink must stay synchronous and must not write to the terminal. External * ConPTY and TCP timestamps remain authoritative; these records only attribute * time inside the process. Installing a sink resets the one-shot labels for a * new diagnostic run. The returned function restores the previous adapter. */ export declare function installLifecycleTimingSink(sink: LifecycleTimingSink, clock?: () => bigint): () => void; /** Record the first occurrence of a lifecycle boundary when diagnostics are active. */ export declare function markLifecycleTiming(label: LifecycleTimingLabel): void; //# sourceMappingURL=lifecycle-timings.d.ts.map