import { Entity } from '../../core.js';
import { SearchStrategy, SearchConfig } from '../types.js';
/**
 * Base class for search strategies with common functionality
 */
export declare abstract class BaseSearchStrategy implements SearchStrategy {
    protected config: SearchConfig;
    constructor(config: SearchConfig);
    abstract canUseDatabase(): boolean;
    abstract searchDatabase(query: string | string[], threshold: number, project?: string): Promise<Entity[]>;
    abstract searchClientSide(entities: Entity[], query: string | string[]): Entity[];
    abstract getAllEntities(project?: string): Promise<Entity[]>;
    /**
     * Exact search implementation for backward compatibility
     */
    protected exactSearch(query: string, entities: Entity[]): Entity[];
    /**
     * Filter entities by exact tags
     */
    protected filterByExactTags(entities: Entity[], exactTags: string[], tagMatchMode?: 'any' | 'all'): Entity[];
    /**
     * Helper method to handle multiple queries with deduplication
     */
    protected searchMultipleDatabase(queries: string[], threshold: number, project?: string): Promise<Entity[]>;
    /**
     * Helper method to handle multiple queries for client-side search with deduplication
     */
    protected searchMultipleClientSide(entities: Entity[], queries: string[]): Entity[];
    /**
     * Chunked client-side search for large entity sets
     * Processes entities in chunks to improve performance and memory usage
     */
    protected searchClientSideChunked(entities: Entity[], query: string | string[], chunkSize: number): Entity[];
    /**
     * Chunked client-side search for multiple queries
     */
    protected searchMultipleClientSideChunked(entities: Entity[], queries: string[], chunkSize: number): Entity[];
}
//# sourceMappingURL=base-strategy.d.ts.map