/**
 * ReplyWatchdog — fires the fast responder if the primary agent hasn't
 * called notify_user within a timeout window.
 *
 * Extracted from loop.ts to isolate the watchdog timer lifecycle.
 */
import type { CommandMessage } from "../channels/interface.js";
import type { InterruptHandler } from "./interrupt-handler.js";
import type { AgentState } from "./state.js";
export declare class ReplyWatchdog {
    private timer;
    private readonly interruptHandler;
    private readonly getAgentState;
    constructor(interruptHandler: InterruptHandler, getAgentState: () => AgentState);
    /**
     * Arm the watchdog for the current wake cycle. If the agent hasn't
     * replied within REPLY_WATCHDOG_MS, fires the fast responder.
     *
     * Only arms when:
     *  - trigger is "message"
     *  - at least one message is fast-response-eligible (i.e. has a real
     *    reply-capable channel adapter — see isFastResponseEligible).
     *    Otherwise fireWatchdog would just no-op on the same predicate.
     */
    arm(trigger: "message" | "heartbeat", messages: CommandMessage[]): void;
    /** Cancel the watchdog timer if still pending. */
    cancel(): void;
}
//# sourceMappingURL=reply-watchdog.d.ts.map