/** * Evaluation Metrics -- computes precision, recall, F1, confusion matrix, * per-category breakdowns, and latency percentiles. * * All functions are pure (no side effects, no mutation). * * @module agent-threat-rules/eval/metrics */ export interface SampleResult { readonly id: string; readonly category: string; readonly expectedDetection: boolean; readonly actualDetection: boolean; readonly matchedRules: readonly string[]; readonly confidence: number; readonly latencyMs: number; readonly difficulty: string; readonly tier: string; } export interface ConfusionMatrix { readonly tp: number; readonly fp: number; readonly tn: number; readonly fn: number; } export interface ClassMetrics { readonly precision: number; readonly recall: number; readonly f1: number; readonly accuracy: number; readonly fpRate: number; readonly confusion: ConfusionMatrix; readonly sampleCount: number; } export interface LatencyStats { readonly p50: number; readonly p95: number; readonly p99: number; readonly mean: number; readonly max: number; } export interface CategoryBreakdown { readonly category: string; readonly metrics: ClassMetrics; readonly missedSamples: readonly string[]; readonly falsePositives: readonly string[]; } export interface DifficultyBreakdown { readonly difficulty: string; readonly metrics: ClassMetrics; } export interface EvalReport { readonly timestamp: string; readonly corpusSize: number; readonly overall: ClassMetrics; readonly latency: LatencyStats; readonly byCategory: readonly CategoryBreakdown[]; readonly byDifficulty: readonly DifficultyBreakdown[]; readonly missedAttacks: readonly SampleResult[]; readonly falsePositives: readonly SampleResult[]; } export declare function computeEvalReport(results: readonly SampleResult[]): EvalReport; export interface RegressionCheck { readonly passed: boolean; readonly violations: readonly string[]; } export interface BaselineThresholds { readonly minRecall: number; readonly maxFpRate: number; readonly minF1: number; readonly maxP95LatencyMs: number; } export declare function checkRegression(report: EvalReport, thresholds?: BaselineThresholds): RegressionCheck; //# sourceMappingURL=metrics.d.ts.map