import { type RecallRankingOptions, type RecallWeights } from "./score.js"; import type { MemoryRecord, VectorRankingOptions } from "./types.js"; /** * Rank keyword candidates by IDF relevance (+ recency/confidence per weights). * `candidates` are the rows the store retrieved as matching ≥1 query token; * `dfByToken`/`corpusSize` are the store's live stats. Returns the full sorted * list (caller pages + tag-filters). `now` absent → newest candidate's updatedAt. * `tokenize` defaults to the shared `tokenize()` — callers pass their own only if * they index tokens differently (both stores pass the imported `tokenize`). */ export declare function rankKeywordCandidates(candidates: readonly MemoryRecord[], dfByToken: ReadonlyMap, corpusSize: number, queryTokens: readonly string[], now: string | undefined, options?: RecallRankingOptions, tk?: (s: string) => string[]): MemoryRecord[]; /** * Fuse a keyword-ranked list and a vector-ranked list (already cosine-sorted and * sliced to vectorK by the store) via co-equal RRF, then a bounded recency/ * confidence second stage. Returns the fused sorted records (caller pages + * tag-filters). `options.recencyHalfLifeMs` should be pre-resolved by the caller * (the pure fn cannot see recall config). */ export declare function fuseHybrid(args: { readonly keywordRanked: readonly MemoryRecord[]; readonly vectorRanked: readonly MemoryRecord[]; readonly now?: string | undefined; readonly options?: VectorRankingOptions | undefined; }): MemoryRecord[]; export type { RecallWeights }; //# sourceMappingURL=hybrid.d.ts.map