/** * Candidate fusion (reciprocal rank fusion) and deterministic heuristic * reranking. Duplicate chunks are merged, per-file diversity is enforced, exact * matches stay strong, and every result exposes its contributing signals. */ import type { HybridCandidateScore } from "./types.js"; export interface FusionCandidate { chunkId: string; file: string; ranking: number; generator: string; reasonCode: string; bonus?: number; } export interface FusedResult { chunkId: string; file: string; score: HybridCandidateScore; rank: number; } /** Fuse ranked candidate lists from multiple generators via RRF. */ export declare function fuseCandidates(generatorLists: FusionCandidate[][], opts?: { maxPerFile?: number; maximumResults?: number; }): FusedResult[]; /** Deterministic heuristic reranker over fused results (no separate model). */ export declare function rerankHeuristic(results: FusedResult[], opts?: { exactTerm?: string; symbolMatch?: Set; }): FusedResult[]; //# sourceMappingURL=fusion.d.ts.map