import type { BenchmarkRunOptions, BenchmarkRun, BenchmarkTier } from './benchmark';
export interface ComparisonOptions {
    /** First model identifier (e.g. 'qwen2.5-coder:14b'). */
    modelA: string;
    /** Second model identifier (e.g. 'gemma3:12b'). */
    modelB: string;
    /** Shared benchmark options (tiers, filterIds, projectDir, etc). */
    benchmarkOptions?: Omit<BenchmarkRunOptions, 'model'>;
}
export interface TaskDiff {
    taskId: string;
    tier: BenchmarkTier;
    description: string;
    statusA: 'pass' | 'fail' | 'error';
    statusB: 'pass' | 'fail' | 'error';
    durationMsA: number;
    durationMsB: number;
    /** +1 = A won, -1 = B won, 0 = tie */
    winner: 1 | -1 | 0;
    failureCategoryA?: string;
    failureCategoryB?: string;
}
export interface ModelStats {
    model: string;
    total: number;
    passed: number;
    failed: number;
    errored: number;
    passRate: number;
    avgDurationMs: number;
    totalToolCalls: number;
    avgToolCalls: number;
    /** Map of failure category → count. */
    failureCounts: Record<string, number>;
    tierSummary: Array<{
        tier: string;
        total: number;
        passed: number;
        passRate: string;
    }>;
}
export interface ComparisonResult {
    id: string;
    createdAt: string;
    modelA: ModelStats;
    modelB: ModelStats;
    diffs: TaskDiff[];
    /** Markdown-formatted leaderboard summary. */
    summary: string;
    runA: BenchmarkRun;
    runB: BenchmarkRun;
}
/**
 * Run the same task set against two models and return a structured comparison.
 */
export declare function runComparison(options: ComparisonOptions): Promise<ComparisonResult>;
//# sourceMappingURL=abCompare.d.ts.map