/**
 * @fileoverview OrdoJS Cache Manager - Comprehensive caching and real-time data management
 */
/**
 * Cache configuration
 */
export interface CacheConfig {
    /** Cache type */
    type: 'memory' | 'redis' | 'file' | 'hybrid';
    /** Redis configuration */
    redis?: RedisConfig;
    /** File cache configuration */
    file?: FileCacheConfig;
    /** Default TTL in seconds */
    defaultTTL: number;
    /** Maximum cache size */
    maxSize: number;
    /** Whether to enable compression */
    enableCompression: boolean;
    /** Whether to enable encryption */
    enableEncryption: boolean;
    /** Encryption key */
    encryptionKey?: string;
    /** Whether to enable real-time sync */
    enableRealtimeSync: boolean;
    /** Real-time sync interval in milliseconds */
    syncInterval: number;
    /** Whether to enable cache warming */
    enableCacheWarming: boolean;
    /** Cache warming strategies */
    warmingStrategies: WarmingStrategy[];
    /** Whether to enable cache analytics */
    enableAnalytics: boolean;
    /** Analytics retention period in days */
    analyticsRetention: number;
}
/**
 * Redis configuration
 */
export interface RedisConfig {
    /** Redis host */
    host: string;
    /** Redis port */
    port: number;
    /** Redis password */
    password?: string;
    /** Redis database */
    database: number;
    /** Connection timeout */
    timeout: number;
    /** Retry strategy */
    retryStrategy: 'exponential' | 'linear' | 'fixed';
    /** Max retry attempts */
    maxRetries: number;
}
/**
 * File cache configuration
 */
export interface FileCacheConfig {
    /** Cache directory */
    directory: string;
    /** File extension */
    extension: string;
    /** Whether to enable subdirectories */
    enableSubdirectories: boolean;
    /** Maximum file size in bytes */
    maxFileSize: number;
    /** Cleanup interval in milliseconds */
    cleanupInterval: number;
}
/**
 * Warming strategy
 */
export interface WarmingStrategy {
    /** Strategy name */
    name: string;
    /** Strategy type */
    type: 'preload' | 'background' | 'on-demand';
    /** Cache keys pattern */
    pattern: string;
    /** Data source */
    dataSource: string;
    /** Schedule (cron expression) */
    schedule?: string;
    /** Priority */
    priority: number;
}
/**
 * Cache entry
 */
export interface CacheEntry<T = any> {
    /** Cache key */
    key: string;
    /** Cached data */
    data: T;
    /** Expiration time */
    expiresAt: Date;
    /** Created time */
    createdAt: Date;
    /** Last accessed time */
    lastAccessed: Date;
    /** Access count */
    accessCount: number;
    /** Size in bytes */
    size: number;
    /** Tags */
    tags: string[];
    /** Metadata */
    metadata: Record<string, any>;
}
/**
 * Cache result
 */
export interface CacheResult<T = any> {
    /** Cache hit */
    hit: boolean;
    /** Cached data */
    data?: T;
    /** Cache key */
    key: string;
    /** TTL remaining */
    ttl?: number;
    /** Cache metadata */
    metadata?: CacheMetadata;
    /** Error message */
    error?: string;
}
/**
 * Cache metadata
 */
export interface CacheMetadata {
    /** Cache type */
    type: string;
    /** Cache size */
    size: number;
    /** Hit rate */
    hitRate: number;
    /** Miss rate */
    missRate: number;
    /** Average access time */
    averageAccessTime: number;
    /** Last cleanup */
    lastCleanup: Date;
    /** Memory usage */
    memoryUsage: number;
}
/**
 * Cache analytics
 */
export interface CacheAnalytics {
    /** Total requests */
    totalRequests: number;
    /** Cache hits */
    hits: number;
    /** Cache misses */
    misses: number;
    /** Hit rate percentage */
    hitRate: number;
    /** Average response time */
    averageResponseTime: number;
    /** Memory usage */
    memoryUsage: number;
    /** Disk usage */
    diskUsage: number;
    /** Top accessed keys */
    topKeys: Array<{
        key: string;
        count: number;
    }>;
    /** Performance metrics */
    performance: PerformanceMetrics;
}
/**
 * Performance metrics
 */
export interface PerformanceMetrics {
    /** Read operations per second */
    readsPerSecond: number;
    /** Write operations per second */
    writesPerSecond: number;
    /** Delete operations per second */
    deletesPerSecond: number;
    /** Average read time */
    averageReadTime: number;
    /** Average write time */
    averageWriteTime: number;
    /** Average delete time */
    averageDeleteTime: number;
}
/**
 * Real-time sync event
 */
export interface RealtimeSyncEvent {
    /** Event type */
    type: 'set' | 'delete' | 'clear' | 'expire';
    /** Cache key */
    key: string;
    /** Event data */
    data?: any;
    /** Timestamp */
    timestamp: Date;
    /** Source node */
    sourceNode: string;
}
/**
 * Comprehensive cache manager for OrdoJS applications
 */
export declare class CacheManager {
    private config;
    private memoryCache;
    private redisClient;
    private fileCache;
    private analytics;
    private syncEvents;
    private warmingJobs;
    private cleanupInterval;
    private syncInterval;
    constructor(config?: Partial<CacheConfig>);
    /**
     * Set cache entry
     */
    set<T = any>(key: string, data: T, ttl?: number, tags?: string[], metadata?: Record<string, any>): Promise<CacheResult<T>>;
    /**
     * Get cache entry
     */
    get<T = any>(key: string): Promise<CacheResult<T>>;
    /**
     * Delete cache entry
     */
    delete(key: string): Promise<CacheResult>;
    /**
     * Clear all cache entries
     */
    clear(): Promise<CacheResult>;
    /**
     * Get cache entries by tag
     */
    getByTag<T = any>(tag: string): Promise<CacheResult<T[]>[]>;
    /**
     * Delete cache entries by tag
     */
    deleteByTag(tag: string): Promise<CacheResult>;
    /**
     * Get cache statistics
     */
    getStatistics(): CacheAnalytics;
    /**
     * Warm cache
     */
    warmCache(): Promise<void>;
    /**
     * Add warming strategy
     */
    addWarmingStrategy(strategy: WarmingStrategy): void;
    /**
     * Remove warming strategy
     */
    removeWarmingStrategy(name: string): void;
    /**
     * Get cache metadata
     */
    getMetadata(): CacheMetadata;
    /**
     * Cleanup expired entries
     */
    cleanup(): Promise<void>;
    /**
     * Initialize cache
     */
    private initializeCache;
    /**
     * Initialize Redis cache
     */
    private initializeRedisCache;
    /**
     * Initialize file cache
     */
    private initializeFileCache;
    /**
     * Initialize hybrid cache
     */
    private initializeHybridCache;
    /**
     * Set memory cache entry
     */
    private setMemoryCache;
    /**
     * Get memory cache entry
     */
    private getMemoryCache;
    /**
     * Set Redis cache entry
     */
    private setRedisCache;
    /**
     * Get Redis cache entry
     */
    private getRedisCache;
    /**
     * Delete Redis cache entry
     */
    private deleteRedisCache;
    /**
     * Clear Redis cache
     */
    private clearRedisCache;
    /**
     * Set file cache entry
     */
    private setFileCache;
    /**
     * Get file cache entry
     */
    private getFileCache;
    /**
     * Delete file cache entry
     */
    private deleteFileCache;
    /**
     * Clear file cache
     */
    private clearFileCache;
    /**
     * Set hybrid cache entry
     */
    private setHybridCache;
    /**
     * Get hybrid cache entry
     */
    private getHybridCache;
    /**
     * Delete hybrid cache entry
     */
    private deleteHybridCache;
    /**
     * Clear hybrid cache
     */
    private clearHybridCache;
    /**
     * Get Redis cache by tag
     */
    private getRedisCacheByTag;
    /**
     * Get file cache by tag
     */
    private getFileCacheByTag;
    /**
     * Get hybrid cache by tag
     */
    private getHybridCacheByTag;
    /**
     * Serialize cache entry
     */
    private serializeEntry;
    /**
     * Deserialize cache entry
     */
    private deserializeEntry;
    /**
     * Calculate data size
     */
    private calculateSize;
    /**
     * Calculate total cache size
     */
    private calculateTotalSize;
    /**
     * Enforce memory limit
     */
    private enforceMemoryLimit;
    /**
     * Get memory usage
     */
    private getMemoryUsage;
    /**
     * Update analytics
     */
    private updateAnalytics;
    /**
     * Update top keys
     */
    private updateTopKeys;
    /**
     * Trigger sync event
     */
    private triggerSyncEvent;
    /**
     * Sync cache
     */
    private syncCache;
    /**
     * Execute warming strategy
     */
    private executeWarmingStrategy;
    /**
     * Get cache filename
     */
    private getCacheFilename;
    /**
     * Hash string
     */
    private hashString;
    /**
     * Cleanup analytics
     */
    private cleanupAnalytics;
    /**
     * Cleanup Redis cache
     */
    private cleanupRedisCache;
    /**
     * Cleanup file cache
     */
    private cleanupFileCache;
    /**
     * Cleanup hybrid cache
     */
    private cleanupHybridCache;
}
//# sourceMappingURL=cache-manager.d.ts.map