/**
 * Sistema de cache en memoria para consultas SQL
 * Optimiza el rendimiento almacenando resultados de consultas frecuentes
 */
export interface CacheEntry {
    sql: string;
    results: any[];
    naturalResponse: string;
    timestamp: number;
    ttl: number;
    language: string;
    executionTime: number;
}
export interface CacheStats {
    totalEntries: number;
    hits: number;
    misses: number;
    hitRate: number;
    memoryUsage: number;
    oldestEntry: number;
    newestEntry: number;
}
export declare class MemoryCache {
    private static instance;
    private cache;
    private stats;
    private maxSize;
    private cleanupInterval;
    private enabled;
    private constructor();
    /**
     * Obtiene la instancia singleton del cache
     */
    static getInstance(maxSize?: number, cleanupIntervalMs?: number): MemoryCache;
    /**
     * Genera una clave de cache normalizada
     */
    private generateKey;
    /**
     * Genera un hash simple para strings
     */
    private hashString;
    /**
     * Determina el TTL basado en el tipo de consulta SQL
     */
    private getTTLByQueryType;
    /**
     * Obtiene una entrada del cache
     */
    get(prompt: string, language: string, schemaHash: string): CacheEntry | null;
    /**
     * Almacena una entrada en el cache
     */
    set(prompt: string, language: string, schemaHash: string, sql: string, results: any[], naturalResponse: string, executionTime: number): void;
    /**
     * Elimina las entradas más antiguas cuando el cache está lleno
     */
    private evictOldest;
    /**
     * Limpia entradas expiradas
     */
    private cleanup;
    /**
     * Invalida entradas relacionadas con una tabla específica
     */
    invalidateByTable(tableName: string): number;
    /**
     * Obtiene estadísticas del cache
     */
    getStats(): CacheStats;
    /**
     * Estima el uso de memoria del cache
     */
    private estimateMemoryUsage;
    /**
     * Limpia todo el cache
     */
    clear(): void;
    /**
     * Habilita o deshabilita el cache
     */
    setEnabled(enabled: boolean): void;
    /**
     * Verifica si el cache está habilitado
     */
    isEnabled(): boolean;
    /**
     * Limpia los recursos del cache
     */
    destroy(): void;
}
