import type { CliAdapter } from '../adapters/cli/types.js';
export declare class IdleDetector {
    private outputTail;
    private lastSpinnerAt;
    private quiescenceTimer;
    private isIdle;
    private idleCallback;
    private completionPattern;
    private readyPattern;
    private readySeen;
    constructor(cli: CliAdapter);
    onIdle(cb: () => void): void;
    feed(data: string): void;
    reset(): void;
    /** External idle source — lets transcript-driven detectors (Claude jsonl
     *  Stop, Codex rollout assistant_final, CoCo events.jsonl finish_reason
     *  stop) push idle without waiting for screen-pattern + quiescence to
     *  agree. Idempotent within a turn (gated by isIdle); reset() re-arms it
     *  for the next turn — same lifecycle as the internal markIdle path. */
    fireIdle(): void;
    dispose(): void;
    private quiescenceCheck;
    private markIdle;
    private clearTimer;
    private stripAnsi;
}
//# sourceMappingURL=idle-detector.d.ts.map