import { RecordedTrace } from './traceRecorder';
export interface EvalCase {
    id: string;
    query: string;
    traceFile: string;
    expectedFindings: ExpectedFinding[];
    expectedDiagnostics?: string[];
    maxDurationMs?: number;
    minConfidence?: number;
}
export interface ExpectedFinding {
    category?: string;
    severity?: 'info' | 'warning' | 'critical';
    titleContains?: string;
    descriptionContains?: string;
}
export interface EvalResult {
    caseId: string;
    passed: boolean;
    score: number;
    metrics: {
        findingRecall: number;
        findingPrecision: number;
        durationWithinLimit: boolean;
        confidenceAboveThreshold: boolean;
    };
    details: {
        matchedFindings: number;
        totalExpected: number;
        totalActual: number;
        durationMs: number;
        confidence: number;
    };
    errors: string[];
}
export interface EvalSummary {
    totalCases: number;
    passedCases: number;
    failedCases: number;
    avgScore: number;
    avgFindingRecall: number;
    avgFindingPrecision: number;
    avgDurationMs: number;
    results: EvalResult[];
}
export declare class AgentEvalSystem {
    private cases;
    addCase(evalCase: EvalCase): void;
    addCases(cases: EvalCase[]): void;
    evaluateTrace(recordedTrace: RecordedTrace, evalCase: EvalCase): EvalResult;
    private extractFindings;
    private countMatchedFindings;
    private findingMatches;
    private calculateScore;
    runEvaluation(traces: Map<string, RecordedTrace>): EvalSummary;
    getCases(): EvalCase[];
    clearCases(): void;
}
export declare const SCROLLING_EVAL_CASES: EvalCase[];
export declare function createEvalSystem(): AgentEvalSystem;
//# sourceMappingURL=evalSystem.d.ts.map