/**
 * IdleAwareCadence — a self-rescheduling timer that runs work on a SHORT interval
 * while the agent is active and a LONG interval while it is idle (no active
 * sessions). Background pollers on an idle agent are pure waste: they wake on a
 * fixed cadence and scan/capture even when there is nothing happening, which is a
 * meaningful slice of the always-on CPU floor on a multi-agent box. This primitive
 * lets a poller back off when idle and snap back to full cadence the moment work
 * resumes — the building block for both poller-cadence backoff and (later) agent
 * sleep mode. Part of the Responsible Resource Usage standard.
 *
 * Safety: `isIdle()` throwing → treated as ACTIVE (full cadence — it never backs
 * off on an ambiguous signal). `tick()` throwing → swallowed (never crashes the
 * timer loop). The idle state is re-evaluated on EVERY reschedule, so resuming
 * activity restores full cadence within at most one idle interval.
 */
export interface IdleAwareCadenceOptions {
    /** Interval (ms) while the agent is active. */
    activeMs: number;
    /** Interval (ms) while the agent is idle. Should be >= activeMs. */
    idleMs: number;
    /** True when the agent is idle (e.g. no running sessions) — back off. */
    isIdle: () => boolean;
    /** The work to run each tick. */
    tick: () => void | Promise<void>;
}
export declare class IdleAwareCadence {
    private readonly opts;
    private timer;
    private stopped;
    private running;
    constructor(opts: IdleAwareCadenceOptions);
    start(): void;
    stop(): void;
    /** The delay (ms) the NEXT tick will wait, given the current idle state. */
    currentIntervalMs(): number;
    private idleSafe;
    private schedule;
    private run;
}
//# sourceMappingURL=IdleAwareCadence.d.ts.map