/** Consecutive failed starts that arm the automatic rollback. */ export declare const CRASH_LOOP_FAILED_START_THRESHOLD = 3; export interface CrashLoopRollbackInput { /** * Consecutive PREVIOUS start attempts that never reached a fully-started * daemon (this boot excluded, it has not failed yet). */ readonly failedStarts: number; /** When an automatic rollback last fired, if no fully-started boot cleared it since. */ readonly autoRollbackAt: number | undefined; /** Override for tests; defaults to CRASH_LOOP_FAILED_START_THRESHOLD. */ readonly threshold?: number | undefined; } export type CrashLoopRollbackVerdict = { readonly rollback: false; readonly reason: 'healthy' | 'already-rolled-back'; } | { readonly rollback: true; readonly failedStarts: number; }; /** * Whether this boot should restore the kept previous version before it tries * to start. Reached at the very top of the startup path, so the decision costs * one file read on a healthy host. */ export declare function decideCrashLoopRollback(input: CrashLoopRollbackInput): CrashLoopRollbackVerdict; export interface CrashLoopReceiptInput { readonly failedStarts: number; readonly restored: readonly { readonly label: string; }[]; readonly at: number; } /** * The owner-facing receipt for an automatic rollback. It names what happened, * how the daemon decided, and which files went back, a restart that silently * changed versions would be worse than the crash loop it fixed. */ export declare function crashLoopRollbackReceipt(input: CrashLoopReceiptInput): string; //# sourceMappingURL=boot-rollback.d.ts.map