import { SearchQuery, SearchResult, HybridSearchResult, Config, SparseVector } from '../types.js';
export declare class HybridSearchService {
    private enabled;
    private alpha;
    constructor(config: Config);
    /**
     * Check if hybrid search is enabled
     */
    isEnabled(): boolean;
    /**
     * Perform hybrid search combining dense and sparse retrieval
     */
    hybridSearch(_query: SearchQuery, denseResults: SearchResult[], sparseResults?: SearchResult[]): Promise<HybridSearchResult>;
    /**
     * Combine dense and sparse results using weighted scoring
     */
    private combineResults;
    /**
     * Generate sparse vector representation for BM25-style search
     * This is a simplified implementation - in production, you'd use a proper BM25 library
     */
    generateSparseVector(text: string, vocabulary: Map<string, number>): SparseVector;
    /**
     * Simple tokenization for sparse vector generation
     */
    private tokenize;
    /**
     * Check if a word is a stop word
     */
    private isStopWord;
    /**
     * Adjust the alpha parameter for different query types
     */
    adaptiveAlpha(query: SearchQuery): number;
    /**
     * Detect if query is semantic in nature
     */
    private isSemanticQuery;
    /**
     * Detect if query is looking for exact matches
     */
    private isExactMatchQuery;
    /**
     * Get hybrid search statistics
     */
    getStats(): {
        enabled: boolean;
        alpha: number;
        totalQueries: number;
        denseOnlyQueries: number;
        hybridQueries: number;
        averageImprovement: number;
    };
}
