import { z } from 'zod';
import { LlmClient } from '../adapters/llm.js';
/**
 * Generic single-finding triage confirmer. Used by detectors whose
 * findings have a high false-positive rate but no detector-specific
 * confirmer of their own (silent-catch, public-any, mutable-globals,
 * …). Asks the LLM: "given this code and the static analyzer's
 * suspicion, is this a real defect worth fixing — or an intentional
 * pattern the project relies on?"
 *
 * Verdict shape matches the cluster confirmers so the orchestrator's
 * shared `applyClusterVerdict` helper can drive severity / confidence
 * adjustments without a per-detector branch:
 *
 *   { real: boolean, confidence: number 0..1, reason: string }
 *
 * `real: true`  → keep severity, bump confidence (genuine defect).
 * `real: false` → drop severity to 'low', deflate confidence
 *                 (intentional pattern / framework convention).
 */
declare const VerdictSchema: z.ZodObject<{
    real: z.ZodBoolean;
    confidence: z.ZodNumber;
    reason: z.ZodString;
}, z.core.$strip>;
export type TriageVerdict = z.infer<typeof VerdictSchema>;
export interface TriageCheckInput {
    /** Detector id — included in the prompt so the LLM applies the right rubric. */
    detectorId: string;
    /** Human-facing severity ('low' | 'medium' | 'high') from the deterministic pass. */
    severity: string;
    /** Finding title verbatim. */
    title: string;
    /** Finding description verbatim. */
    description: string;
    /** Detector-emitted suggestion, if any. */
    suggestion?: string;
    /** First evidence file + line range + snippet. */
    evidenceFile: string;
    evidenceStartLine: number;
    evidenceEndLine: number;
    evidenceSnippet: string;
    /**
     * Optional structural context the orchestrator can pass alongside the
     * raw evidence — siblings, importer counts, package.json hits, etc.
     * Kept opaque (free-form text) so detector-specific enrichment can
     * evolve without breaking the schema. Truncated server-side to keep
     * the prompt under the LLM context window.
     */
    extraContext?: string;
}
export declare class TriageConfirmer {
    private llm;
    private cache;
    constructor(llm?: LlmClient);
    confirm(input: TriageCheckInput): Promise<TriageVerdict | null>;
}
export {};
//# sourceMappingURL=triage-confirmer.d.ts.map