/**
 * Task-and-quality-validated success evaluation for V3 agent runs.
 * Decouples CLI verdict from raw file-change counts (1.11.0+).
 */
export interface LiveOutcome {
    executorFailed: boolean;
    plannerError: string | null;
    executorError: string | null;
    tasksTotal: number;
    tasksSucceeded: number;
    changedFileCount: number;
    requiresWorkspaceChanges: boolean;
    workspaceHasOutput: boolean;
    failedTaskIds: Set<string>;
    completedTaskIds: Set<string>;
    analysisToolsUsed: number;
    /** read_file / grep — not list_directory-only browsing */
    analysisReadToolsUsed: number;
    /** Final user-facing answer text (stream + response body) */
    answerContent?: string;
    /** User asked for deep/project-scale analysis, so shallow evidence must not pass. */
    deepAnalysisRequired?: boolean;
    streamAborted?: boolean;
}
export interface TaskSummaryEvent {
    status?: string;
    task_id?: string;
    id?: string;
}
export interface RunEvaluation {
    executorSucceeded: boolean;
    statusHeadline: string;
    uiTheme: 'success' | 'warning' | 'error';
}
export declare function createLiveOutcome(): LiveOutcome;
export declare function isExecutorTimeoutFailure(liveOutcome: LiveOutcome): boolean;
/** Tool-trace stubs like `[read_file] "index.html"` or `<read_file>…</read_file>` — not a user-facing answer. */
export declare function isToolEvidenceStubAnswer(text: string): boolean;
/** True when text looks like a real answer, not an executor/system placeholder. */
export declare function isSubstantiveAgentAnswer(text: string): boolean;
/** Pick the first substantive answer from response body and/or streamed text. */
export declare function normalizeAgentAnswerContent(...sources: Array<string | undefined | null>): string;
/** Process executor_complete / task summary events from the V3 SSE stream. */
export declare function handleTaskEvent(summary: TaskSummaryEvent, liveOutcome: LiveOutcome): void;
/** Track read/discovery tool usage for analysis-turn accountability. */
export declare function noteAnalysisToolUse(toolName: string, liveOutcome: LiveOutcome): void;
/**
 * Compute the real CLI success verdict.
 * When tasks were planned, ALL must succeed — file changes alone never imply victory.
 */
export declare function evaluateExecutorSuccess(liveOutcome: LiveOutcome): RunEvaluation;
