/**
 * Self-contained feature evaluation suite for hippo.
 *
 * Creates a synthetic memory corpus with known ground truth, runs searches
 * per feature category, and reports per-feature metrics with regression
 * detection against a saved baseline.
 *
 * Design goals:
 *  - Zero API calls (no LLM judge, no embeddings)
 *  - Deterministic (fixed timestamps, content, IDs)
 *  - Fast (<60s for full suite)
 *  - Per-feature breakdown so you see exactly what a change helped/hurt
 */
import { type MemoryEntry } from './memory.js';
export type FeatureCategory = 'direct-recall' | 'extraction-preference' | 'dag-drilldown' | 'temporal' | 'noise-resistance' | 'multi-hop';
export interface FeatureTestCase {
    id: string;
    category: FeatureCategory;
    query: string;
    expectedIds: string[];
    description: string;
}
export interface FeatureResult {
    category: FeatureCategory;
    cases: number;
    mrr: number;
    recallAt5: number;
    ndcgAt5: number;
    passed: boolean;
}
export interface EvalSuiteResult {
    version: string;
    timestamp: string;
    features: FeatureResult[];
    overall: {
        mrr: number;
        recallAt5: number;
        ndcgAt5: number;
    };
    totalCases: number;
    durationMs: number;
}
export interface EvalBaseline {
    version: string;
    timestamp: string;
    features: Record<FeatureCategory, {
        mrr: number;
        recallAt5: number;
        ndcgAt5: number;
    }>;
    overall: {
        mrr: number;
        recallAt5: number;
        ndcgAt5: number;
    };
}
export interface RegressionReport {
    regressions: Array<{
        category: FeatureCategory;
        metric: string;
        baseline: number;
        current: number;
        delta: number;
    }>;
    improvements: Array<{
        category: FeatureCategory;
        metric: string;
        baseline: number;
        current: number;
        delta: number;
    }>;
    verdict: 'PASS' | 'REGRESSION';
}
export declare function buildSyntheticCorpus(): {
    entries: MemoryEntry[];
    cases: FeatureTestCase[];
};
export declare function runFeatureEval(version: string): Promise<EvalSuiteResult>;
export declare function detectRegressions(baseline: EvalBaseline, current: EvalSuiteResult): RegressionReport;
export declare function resultToBaseline(result: EvalSuiteResult): EvalBaseline;
export declare function formatResult(result: EvalSuiteResult, baseline?: EvalBaseline): string;
//# sourceMappingURL=eval-suite.d.ts.map