import type { IndexerAdapter, IndexerDocument, IndexerSlice, SearchRequest, SearchResults } from "@voyant-travel/catalog-contracts/indexer/contract"; /** A curated travel query with ordered, operator-approved relevant documents. */ export interface TravelRelevanceCase { id: string; request: SearchRequest; expectedIds: readonly string[]; } /** * Small, reviewable corpus that protects travel-specific relevance behavior. * Deployments may extend it with operator-approved judgments before release. */ export declare const travelRelevanceCorpus: Readonly<{ cases: readonly TravelRelevanceCase[]; documents: readonly IndexerDocument[]; }>; export interface RelevanceMetrics { ndcgAtK: number; recallAtK: number; zeroResultRate: number; } export interface RelevanceReport { metrics: RelevanceMetrics; results: ReadonlyMap; } export interface RelevanceComparison { baseline: RelevanceReport; candidate: RelevanceReport; /** Fraction of corpus cases whose requested facet buckets are identical. */ facetParity: number; } /** * Executes the same curated travel corpus against two adapter implementations. * It deliberately compares adapter-observable results instead of scores, which * are provider-local and cannot be compared across search engines. */ export declare function compareTravelRelevance(input: { baseline: IndexerAdapter; candidate: IndexerAdapter; cases: readonly TravelRelevanceCase[]; slice: IndexerSlice; k?: number; }): Promise; /** Run a travel corpus against one adapter and calculate portable metrics. */ export declare function runTravelRelevance(adapter: IndexerAdapter, slice: IndexerSlice, cases: readonly TravelRelevanceCase[], k?: number): Promise;