/**
 * @fileoverview AI-Powered Idle Checker for Respawn Controller
 *
 * Spawns a fresh Claude CLI session in a tmux session to analyze terminal output
 * and provide a definitive IDLE/WORKING verdict. This replaces the "Worked for Xm Xs"
 * pattern as the primary idle detection signal.
 *
 * ## How It Works
 *
 * 1. Generate temp file path for output capture
 * 2. Spawn tmux: `tmux new-session -d -s codeman-aicheck-<short> bash -c 'claude -p ...'`
 * 3. Poll the temp file every 500ms for `__AICHECK_DONE__` marker
 * 4. Parse the file content for IDLE/WORKING on the first word
 * 5. Kill tmux session and delete temp file
 *
 * ## Error Handling
 *
 * - Tmux spawn fails: 1-min cooldown, increment error counter
 * - Check times out (90s): Kill session, 1-min cooldown
 * - Can't parse IDLE/WORKING: Treat as WORKING, 1-min cooldown
 * - 3 consecutive errors: Disable AI check, fall back to noOutputTimeoutMs
 * - Claude CLI not found: Disable permanently
 *
 * @module ai-idle-checker
 */
import { AiCheckerBase, type AiCheckerConfigBase, type AiCheckerResultBase, type AiCheckerStateBase } from './ai-checker-base.js';
type AiIdleCheckConfig = AiCheckerConfigBase;
export type AiCheckVerdict = 'IDLE' | 'WORKING' | 'ERROR';
export type AiCheckResult = AiCheckerResultBase<AiCheckVerdict>;
export type AiCheckState = AiCheckerStateBase<AiCheckVerdict>;
/**
 * Manages AI-powered idle detection by spawning a fresh Claude CLI session
 * to analyze terminal output and provide a definitive IDLE/WORKING verdict.
 */
export declare class AiIdleChecker extends AiCheckerBase<AiCheckVerdict, AiIdleCheckConfig, AiCheckResult, AiCheckState> {
    protected readonly muxNamePrefix = "codeman-aicheck-";
    protected readonly doneMarker = "__AICHECK_DONE__";
    protected readonly tempFilePrefix = "codeman-aicheck";
    protected readonly logPrefix = "[AiIdleChecker]";
    protected readonly checkDescription = "AI idle check";
    constructor(sessionId: string, config?: Partial<AiIdleCheckConfig>);
    protected buildPrompt(terminalBuffer: string): string;
    protected parseVerdict(output: string): {
        verdict: AiCheckVerdict;
        reasoning: string;
    } | null;
    protected getPositiveVerdict(): AiCheckVerdict;
    protected getNegativeVerdict(): AiCheckVerdict;
    protected getErrorVerdict(): AiCheckVerdict;
    protected createErrorResult(reasoning: string, durationMs: number): AiCheckResult;
    protected createResult(verdict: AiCheckVerdict, reasoning: string, durationMs: number): AiCheckResult;
}
export {};
//# sourceMappingURL=ai-idle-checker.d.ts.map