/**
 * pipeline/grader-sensitivity.ts
 *
 * Pure computation module for measuring grader sensitivity (discrimination power).
 *
 * Takes paired grading results — original (good) and degraded (bad) versions
 * of the same response graded by the same grader — and computes:
 * - Concordance rate: % of pairs where the grader ranked the original higher
 * - Score separation: average score difference between good and bad
 * - Per-dimension sensitivity
 *
 * This module has NO side effects — no file I/O, no API calls.
 *
 * @see docs/archive/exec-plans/grader-reliability.md — Phase 4
 */
/** Sensitivity broken down by degradation type */
export interface DegradationSensitivity {
    /** Average score separation for this degradation type */
    avgSeparation: number;
    /** Concordance rate for this degradation type */
    concordanceRate: number;
    /** Description of the degradation */
    description: string;
    /** Number of pairs using this degradation */
    pairCount: number;
    /** Which dimension this degradation targeted */
    targetDimension: "codeCorrectness" | "docCoverage" | "taskCompletion";
}
/** Per-dimension sensitivity metrics */
export interface DimensionSensitivity {
    /** Average score separation (original - degraded) */
    avgSeparation: number;
    /** % of pairs where grader ranked original higher */
    concordanceRate: number;
    /** Number of paired comparisons */
    pairCount: number;
    /** % of pairs where scores were exactly equal */
    tiedRate: number;
}
/** Full sensitivity analysis result */
export interface GraderSensitivityResult {
    /** Average score separation across all pairs */
    avgSeparation: number;
    /** Per-degradation-type sensitivity */
    byDegradation: DegradationSensitivity[];
    /** Overall concordance rate (% of correctly ranked pairs) */
    concordanceRate: number;
    /** Cross-dimension sensitivity: does degradation in one dimension affect others? */
    crossDimension: {
        /** When targetDimension != dimension, does the score still drop? */
        onTarget: DimensionSensitivity;
        /** Scores for non-targeted dimensions */
        offTarget: DimensionSensitivity;
    };
    /** Number of pairs where the grader gave a HIGHER score to the degraded version */
    failedPairs: SensitivityPair[];
    /** When this analysis was generated */
    generatedAt: string;
    /** Grader model used */
    graderModel: string;
    /** Per-dimension sensitivity metrics (keyed by dimension name) */
    perDimension: Record<string, DimensionSensitivity>;
    /** Total paired comparisons analyzed */
    totalPairs: number;
}
/** A single paired comparison: original vs. degraded response */
export interface SensitivityPair {
    /** Feature area (e.g., "groq") */
    area: string;
    /** What degradation was applied */
    degradationDescription: string;
    /** Score assigned to the degraded version (0–100) */
    degradedScore: number;
    /** Which dimension this judgment measures */
    dimension: "codeCorrectness" | "docCoverage" | "taskCompletion";
    /** Score assigned to the original version (0–100) */
    originalScore: number;
    /** Source file of the reference solution */
    sourcePath: string;
    /** Which dimension the degradation targeted */
    targetDimension: "codeCorrectness" | "docCoverage" | "taskCompletion";
}
/**
 * Analyze sensitivity from a set of paired grading results.
 *
 * @param pairs Array of paired comparisons (original vs. degraded)
 * @param graderModel Grader model ID for the report
 * @returns Full sensitivity analysis with concordance, separation, and per-dimension metrics
 */
export declare function analyzeSensitivity(pairs: SensitivityPair[], graderModel: string): GraderSensitivityResult;
