/**
 * Boot Watchdog
 *
 * Boot-phase watchdog: how long the agent is allowed to go WITHOUT
 * emitting any stream event (delta / tool_use / tool_result / status)
 * before we consider the boot stuck and abort it.
 *
 * This is an IDLE timer, not a wall-clock budget: each event received
 * resets it. That's essential for application-creation flows where the
 * first turn legitimately takes many minutes (scaffold + install + build
 * a whole project). A fixed wall-clock budget would kill those mid-way.
 *
 * ## Contract
 *
 * - `start(onStall)` arms the timer. The supplied callback fires exactly
 *   once if the timer elapses without a `bump()` in the meantime.
 * - `bump()` resets the remaining time back to `IDLE_TIMEOUT_MS`. Called
 *   on every stream event the consumer observes during boot.
 * - `stop()` cancels the pending timer. Always called from a `finally`
 *   block so a crash in the consume loop never leaks a timer.
 *
 * The stall handler is latched: once it fires (or `stop()` clears the
 * timer) a subsequent `bump()` is a no-op until the next `start()`.
 */
export declare class BootWatchdog {
    /**
     * Maximum idle duration in milliseconds. Part of the public contract:
     * unit tests and callers that format user-facing stall errors depend
     * on this constant being readable from the outside.
     */
    static readonly IDLE_TIMEOUT_MS = 120000;
    private timer;
    private onStall;
    /**
     * Arm the timer. The supplied handler fires after `IDLE_TIMEOUT_MS`
     * unless `bump()` or `stop()` intervenes.
     */
    start(onStall: () => void): void;
    /**
     * Reset the remaining time back to `IDLE_TIMEOUT_MS`. No-op when the
     * watchdog is not currently armed (see file header: stall handler is
     * latched, so post-stop bumps must not re-arm).
     */
    bump(): void;
    /**
     * Cancel the pending timer and clear the stall handler. Idempotent —
     * safe to call from a `finally` block even if `start()` was never
     * invoked or `stop()` already ran.
     */
    stop(): void;
    private schedule;
}
//# sourceMappingURL=boot-watchdog.d.ts.map