import type * as lancedb from '@lancedb/lancedb';
import type { ContentType } from '../config-schema.js';
import type { Embedder } from '../embedders/embedder.js';
import type { SearchResult, SourceContext } from '../types.js';
/** Pure vector search (original behavior). */
export declare function runVectorSearch(table: lancedb.Table, embedder: Embedder, query: string, typeFilter: ContentType | undefined, maxResults: number, sourceContext: SourceContext, boundary?: string | string[]): Promise<SearchResult[]>;
/**
 * Hybrid search: runs vector + FTS in parallel, merges with RRF.
 * Each leg fetches `maxResults * HYBRID_OVERFETCH_FACTOR` candidates
 * to give RRF enough diversity to produce `maxResults` fused results.
 */
export declare function runHybridSearch(table: lancedb.Table, embedder: Embedder, onWarn: (msg: string) => void, query: string, typeFilter: ContentType | undefined, maxResults: number, sourceContext: SourceContext, boundary?: string | string[]): Promise<SearchResult[]>;
/** FTS-only search — no embedder required. For use when embedding is unavailable (offline, no API key). */
export declare function runFtsSearch(table: lancedb.Table, onWarn: (msg: string) => void, query: string, typeFilter: ContentType | undefined, maxResults: number, sourceContext: SourceContext, boundary?: string | string[]): Promise<SearchResult[]>;
//# sourceMappingURL=lance-search.d.ts.map