/**
 * Sistema de cache inteligente para VLibras Player
 * Implementa diferentes estratégias de cache e preload
 */
export interface CacheEntry<T = any> {
    key: string;
    data: T;
    timestamp: number;
    ttl: number;
    size: number;
    accessCount: number;
    lastAccess: number;
}
export interface CacheStrategy {
    type: 'memory' | 'localStorage' | 'indexedDB' | 'hybrid';
    maxSize: number;
    ttl: number;
    compression: boolean;
    encryption?: boolean;
    maxEntries?: number;
}
export interface CacheStats {
    hits: number;
    misses: number;
    totalRequests: number;
    hitRate: number;
    currentSize: number;
    maxSize: number;
    entries: number;
    oldestEntry: number;
    newestEntry: number;
}
export interface PredictiveCacheConfig {
    enabled: boolean;
    relatedWordsLimit: number;
    commonWordsLimit: number;
    contextWords: Record<string, string[]>;
}
/**
 * Cache principal do VLibras
 */
export declare class VLibrasCache {
    private static instance;
    private strategy;
    private memoryCache;
    private stats;
    private constructor();
    /**
     * Obtém instância singleton
     */
    static getInstance(strategy?: CacheStrategy): VLibrasCache;
    /**
     * Configura estratégia de cache
     */
    static configure(strategy: Partial<CacheStrategy>): void;
    /**
     * Armazena item no cache
     */
    set<T>(key: string, data: T, customTtl?: number): Promise<void>;
    /**
     * Recupera item do cache
     */
    get<T>(key: string): Promise<T | null>;
    /**
     * Remove item do cache
     */
    delete(key: string): Promise<boolean>;
    /**
     * Limpa todo o cache
     */
    clear(): Promise<void>;
    /**
     * Verifica se uma chave existe no cache
     */
    has(key: string): Promise<boolean>;
    /**
     * Obtém estatísticas do cache
     */
    getStats(): CacheStats;
    /**
     * Preload de palavras comuns
     */
    preloadCommonWords(words: string[]): Promise<void>;
    /**
     * Cache preditivo - precarrega palavras relacionadas
     */
    enablePredictiveCache(config: PredictiveCacheConfig): Promise<void>;
    /**
     * Cache por contexto
     */
    preloadForContext(context: 'dictionary' | 'quiz' | 'tutorial'): Promise<void>;
    /**
     * Calcula tamanho de um objeto
     */
    private calculateSize;
    /**
     * Verifica se entrada está expirada
     */
    private isExpired;
    /**
     * Garante espaço disponível no cache
     */
    private ensureSpace;
    /**
     * Armazena entrada baseado na estratégia
     */
    private storeEntry;
    /**
     * Recupera entrada baseado na estratégia
     */
    private retrieveEntry;
    /**
     * Remove entrada baseado na estratégia
     */
    private deleteEntry;
    /**
     * Armazena no localStorage
     */
    private storeInLocalStorage;
    /**
     * Recupera do localStorage
     */
    private retrieveFromLocalStorage;
    /**
     * Remove do localStorage
     */
    private deleteFromLocalStorage;
    /**
     * Armazena no IndexedDB
     */
    private storeInIndexedDB;
    /**
     * Recupera do IndexedDB
     */
    private retrieveFromIndexedDB;
    /**
     * Remove do IndexedDB
     */
    private deleteFromIndexedDB;
    /**
     * Abre conexão com IndexedDB
     */
    private openIndexedDB;
    /**
     * Limpa localStorage
     */
    private clearLocalStorage;
    /**
     * Limpa IndexedDB
     */
    private clearIndexedDB;
    /**
     * Comprime dados (implementação simples)
     */
    private compress;
    /**
     * Descomprime dados
     */
    private decompress;
    /**
     * Atualiza estatísticas gerais
     */
    private updateStats;
    /**
     * Atualiza taxa de acerto
     */
    private updateHitRate;
    /**
     * Reseta estatísticas
     */
    private resetStats;
}
/**
 * Utilitários de cache
 */
export declare class VLibrasCacheUtils {
    /**
     * Cria chave de cache baseada em parâmetros
     */
    static createKey(type: string, ...params: any[]): string;
    /**
     * Estima tamanho ideal de cache baseado no dispositivo
     */
    static getOptimalCacheSize(): number;
    /**
     * Migra cache antigo para nova versão
     */
    static migrateCache(oldVersion: string, newVersion: string): Promise<void>;
}
export declare const vlibrasCache: VLibrasCache;
//# sourceMappingURL=VLibrasCache.d.ts.map