import { Pool as PgPool } from 'pg';
import { Entity } from '../../core.js';
import { SearchConfig, PaginationOptions, PaginationResult } from '../types.js';
import { BaseSearchStrategy } from './base-strategy.js';
/**
 * PostgreSQL search strategy - supports both database-level and client-side fuzzy search
 */
export declare class PostgreSQLFuzzyStrategy extends BaseSearchStrategy {
    private pgPool;
    private project;
    private searchLimits;
    constructor(config: SearchConfig, pgPool: PgPool, project: string);
    canUseDatabase(): boolean;
    searchDatabase(query: string | string[], threshold: number, project?: string): Promise<Entity[]>;
    private searchSingleDatabase;
    searchClientSide(entities: Entity[], query: string | string[]): Entity[];
    private searchSingleClientSide;
    /**
     * Get all entities for a project from PostgreSQL database
     * This is used to load entities for client-side search
     * Respects maxClientSideEntities limit to prevent memory issues
     */
    getAllEntities(project?: string): Promise<Entity[]>;
    /**
     * Optimized multiple query search using single SQL query with OR conditions
     * This replaces the inefficient sequential query processing from base strategy
     */
    private searchMultipleDatabaseOptimized;
    /**
     * Handle very large query arrays by processing them in batches
     */
    private searchMultipleDatabaseBatched;
    /**
     * Get all entities with pagination support
     */
    getAllEntitiesPaginated(pagination: PaginationOptions, project?: string): Promise<PaginationResult<Entity>>;
    /**
     * Database-level fuzzy search with pagination support
     */
    searchDatabasePaginated(query: string | string[], threshold: number, pagination: PaginationOptions, project?: string): Promise<PaginationResult<Entity>>;
    /**
     * Single database fuzzy search with pagination
     */
    private searchSingleDatabasePaginated;
    /**
     * Multiple database fuzzy search with pagination
     */
    private searchMultipleDatabasePaginated;
}
//# sourceMappingURL=postgresql-strategy.d.ts.map