/**
 * @fileoverview AI-Powered Plan Mode Checker for Auto-Accept
 *
 * Spawns a fresh Claude CLI session in a tmux session to analyze terminal output
 * and determine if Claude Code is showing a plan mode approval prompt.
 * Used as a confirmation gate before auto-accepting prompts.
 *
 * ## How It Works
 *
 * 1. Generate temp file path for output capture
 * 2. Spawn tmux: `tmux new-session -d -s codeman-plancheck-<short> bash -c 'claude -p ...'`
 * 3. Poll the temp file every 500ms for `__PLANCHECK_DONE__` marker
 * 4. Parse the file content for PLAN_MODE/NOT_PLAN_MODE on the first line
 * 5. Kill tmux session and delete temp file
 *
 * ## Error Handling
 *
 * - Tmux spawn fails: 30s cooldown, increment error counter
 * - Check times out (60s): Kill session, 30s cooldown
 * - Can't parse verdict: Treat as NOT_PLAN_MODE, 30s cooldown
 * - 3 consecutive errors: Disable AI plan check
 *
 * @module ai-plan-checker
 */
import { AiCheckerBase, type AiCheckerConfigBase, type AiCheckerResultBase, type AiCheckerStateBase } from './ai-checker-base.js';
type AiPlanCheckConfig = AiCheckerConfigBase;
export type AiPlanCheckVerdict = 'PLAN_MODE' | 'NOT_PLAN_MODE' | 'ERROR';
export type AiPlanCheckResult = AiCheckerResultBase<AiPlanCheckVerdict>;
type AiPlanCheckState = AiCheckerStateBase<AiPlanCheckVerdict>;
/**
 * Manages AI-powered plan mode detection by spawning a fresh Claude CLI session
 * to analyze terminal output and confirm plan mode approval prompts.
 */
export declare class AiPlanChecker extends AiCheckerBase<AiPlanCheckVerdict, AiPlanCheckConfig, AiPlanCheckResult, AiPlanCheckState> {
    protected readonly muxNamePrefix = "codeman-plancheck-";
    protected readonly doneMarker = "__PLANCHECK_DONE__";
    protected readonly tempFilePrefix = "codeman-plancheck";
    protected readonly logPrefix = "[AiPlanChecker]";
    protected readonly checkDescription = "AI plan check";
    constructor(sessionId: string, config?: Partial<AiPlanCheckConfig>);
    protected buildPrompt(terminalBuffer: string): string;
    protected parseVerdict(output: string): {
        verdict: AiPlanCheckVerdict;
        reasoning: string;
    } | null;
    protected getPositiveVerdict(): AiPlanCheckVerdict;
    protected getNegativeVerdict(): AiPlanCheckVerdict;
    protected getErrorVerdict(): AiPlanCheckVerdict;
    protected createErrorResult(reasoning: string, durationMs: number): AiPlanCheckResult;
    protected createResult(verdict: AiPlanCheckVerdict, reasoning: string, durationMs: number): AiPlanCheckResult;
}
export {};
//# sourceMappingURL=ai-plan-checker.d.ts.map