import type { Finding, StreamingUpdate } from '../agent/types';
import type { VerificationResult, VerificationIssue, AnalysisPlanV3, Hypothesis, ToolCallRecord } from './types';
import type { SceneType } from './sceneClassifier';
import { type OutputLanguage } from './outputLanguage';
/**
 * P2-G14: Extract potential misdiagnosis patterns from LLM verification results.
 * When LLM verification flags a `known_misdiagnosis` or `severity_mismatch` issue,
 * extract the relevant keywords and save as a learned pattern.
 */
export declare function learnFromVerificationResults(llmIssues: VerificationIssue[], findings: Finding[]): void;
/**
 * Run heuristic verification on analysis findings and conclusion.
 * These checks are fast (<1ms) and require no LLM calls.
 */
export declare function verifyHeuristic(findings: Finding[], conclusion: string): VerificationIssue[];
/**
 * Verify plan adherence — check if Claude completed all planned phases.
 * Returns issues for skipped phases that weren't explicitly marked as skipped.
 */
export declare function verifyPlanAdherence(plan: AnalysisPlanV3 | null): VerificationIssue[];
/**
 * P0-G4: Verify hypothesis resolution — all formed hypotheses must be resolved before concluding.
 * Returns error-level issues for any hypotheses still in 'formed' state.
 */
export declare function verifyHypotheses(hypotheses: Hypothesis[]): VerificationIssue[];
/**
 * P1-G15: Scene-aware completeness verification.
 * Checks that the analysis output is topically relevant to the detected scene.
 * Returns warnings if mandatory scene-specific data is missing from findings/conclusion.
 */
export declare function verifySceneCompleteness(sceneType: SceneType, findings: Finding[], conclusion: string, toolCalls?: ToolCallRecord[]): VerificationIssue[];
/**
 * Normalize LLM-returned severity to the standard 'error' | 'warning' union.
 * LLMs may return non-standard values like "critical", "high", "medium", "low", "info".
 * Without normalization, these slip through `severity === 'error'` checks and bypass
 * the correction retry logic — this was the root cause of P0-3 (truncation detected
 * but never corrected).
 */
export declare function normalizeLLMSeverity(raw: string): VerificationIssue['severity'];
/**
 * Run LLM-based verification using a lightweight model (haiku).
 * Validates evidence support, severity consistency, and completeness.
 * Returns undefined if LLM call fails (graceful degradation).
 */
export declare function verifyWithLLM(findings: Finding[], conclusion: string, options?: {
    model?: string;
    timeoutMs?: number;
}): Promise<VerificationIssue[] | undefined>;
/**
 * Detect whether a conclusion looks like an incomplete/truncated analysis
 * (e.g., just reasoning notes rather than a structured report).
 * Used to select between normal correction prompt and "generate from scratch" prompt.
 */
export declare function isConclusionIncomplete(conclusion: string): boolean;
/**
 * Generate a correction prompt for reflection-driven retry.
 * Called when verification finds ERROR-level issues.
 *
 * When the original conclusion is clearly incomplete (just reasoning notes,
 * < 1000 chars, no structured headings), generates a stronger prompt that
 * asks for a complete report from scratch using already-collected data.
 */
export declare function generateCorrectionPrompt(issues: VerificationIssue[], originalConclusion: string, outputLanguage?: OutputLanguage, sceneType?: SceneType): string;
/**
 * Run full verification pipeline (heuristic + plan adherence + optional LLM).
 * Emits SSE warnings for any issues found.
 * Returns verification result with all issues and whether correction is needed.
 */
export declare function verifyConclusion(findings: Finding[], conclusion: string, options?: {
    emitUpdate?: (update: StreamingUpdate) => void;
    enableLLM?: boolean;
    plan?: AnalysisPlanV3 | null;
    hypotheses?: Hypothesis[];
    sceneType?: SceneType;
    /** Override model for the LLM verification call. Defaults to 'claude-haiku-4-5'. */
    lightModel?: string;
    /** Override verification LLM timeout (ms). Default: 60s. Raise for slower light models. */
    verifierTimeoutMs?: number;
    /** User-facing output language for verifier progress messages. */
    outputLanguage?: OutputLanguage;
}): Promise<VerificationResult>;
//# sourceMappingURL=claudeVerifier.d.ts.map