/**
 * FTS5 Search Strategy
 *
 * Implements the KnowledgeSearchStrategy interface using the SQLite FTS5
 * full-text search index. Maps FTS5 BM25-ranked results to the existing
 * ScoredDocument format used by KnowledgeSearchService.
 *
 * @module services/knowledge/fts5-search-strategy
 */
import type { KnowledgeSearchStrategy, ScoredDocument } from './knowledge-search.service.js';
import type { KnowledgeDocumentSummary } from '../../types/knowledge.types.js';
import { WikiCompilerService } from './wiki-compiler.service.js';
/**
 * FTS5-based search strategy for the Wiki-First Knowledge System.
 *
 * This strategy provides pure full-text search via SQLite FTS5 with BM25 ranking.
 *
 * Note on semantic fallback (design doc Section 10): The 10% semantic fallback
 * weight is achieved at the MemoryService level, which runs both FTS5 knowledge
 * search AND vector-based semantic search in parallel. This strategy intentionally
 * does not mix semantic results — that composition happens upstream in the recall
 * pipeline (MemoryService.recall -> searchKnowledgeDocuments + semanticSearch).
 *
 * Uses SQLite FTS5 MATCH with BM25 ranking for fast, zero-cost retrieval.
 * Results are mapped back to the KnowledgeDocumentSummary objects provided
 * by the caller, falling back to minimal summaries when a document is found
 * in the FTS5 index but not in the provided documents array.
 *
 * @example
 * ```typescript
 * const strategy = new Fts5SearchStrategy(wikiCompiler);
 * const results = await strategy.search('deployment guide', documents);
 * ```
 */
export declare class Fts5SearchStrategy implements KnowledgeSearchStrategy {
    private readonly wikiCompiler;
    private readonly logger;
    /**
     * Create an Fts5SearchStrategy.
     *
     * @param wikiCompiler - The WikiCompilerService instance providing FTS5 search
     */
    constructor(wikiCompiler: WikiCompilerService);
    /**
     * Search for documents matching the query using FTS5 full-text search.
     *
     * FTS5 BM25 rank values are negative (more negative = more relevant),
     * so scores are converted to positive values for the ScoredDocument interface.
     *
     * @param query - The search query text
     * @param documents - Candidate document summaries to match against
     * @returns Documents sorted by descending relevance score
     */
    search(query: string, documents: KnowledgeDocumentSummary[]): Promise<ScoredDocument[]>;
}
//# sourceMappingURL=fts5-search-strategy.d.ts.map