import { BCApp } from '../types/bc-types.js';
interface MemoryStats {
    totalMemoryMB: number;
    partitionSizes: {
        [partition: string]: number;
    };
    largestObjects: Array<{
        key: string;
        sizeMB: number;
    }>;
    compressionRatio: number;
}
export declare class MemoryOptimizedCache {
    private cache;
    private maxAge;
    private maxMemoryMB;
    private compressionEnabled;
    private evictionStrategy;
    constructor(maxAgeMinutes?: number, maxMemoryMB?: number, compressionEnabled?: boolean, evictionStrategy?: 'lru' | 'lfu' | 'size-based');
    /**
     * Store app with memory optimization
     */
    setApp(filePath: string, app: BCApp): void;
    /**
     * Store objects in type-specific partitions
     */
    setObjects(appId: string, objectType: string, objects: any[]): void;
    /**
     * Get app with memory tracking
     */
    getApp(filePath: string, currentFileHash: string): BCApp | null;
    /**
     * Get objects from type-specific partition
     */
    getObjects(appId: string, objectType: string): any[] | null;
    /**
     * Get memory statistics with detailed breakdown
     */
    getMemoryStats(): MemoryStats;
    /**
     * Optimize memory usage by removing redundant data
     */
    private optimizeAppData;
    /**
     * Optimize objects data by removing unnecessary properties
     */
    private optimizeObjectsData;
    /**
     * Get appropriate partition for object type
     */
    private getPartitionForType;
    /**
     * Calculate memory usage of an object in MB
     */
    private calculateObjectMemoryUsage;
    /**
     * Calculate memory usage of a partition
     */
    private calculatePartitionMemoryUsage;
    /**
     * Find largest objects across all partitions
     */
    private findLargestObjects;
    /**
     * Enforce memory limits using configured eviction strategy
     */
    private enforceMemoryLimits;
    /**
     * Evict least recently used entries
     */
    private evictLRU;
    /**
     * Evict least frequently used entries
     */
    private evictLFU;
    /**
     * Evict largest entries first
     */
    private evictLargest;
    /**
     * Check if entry is valid
     */
    private isEntryValid;
    /**
     * Simple compression placeholder
     */
    private compressData;
    /**
     * Simple decompression placeholder
     */
    private decompressData;
    /**
     * Check if data is compressed
     */
    private isCompressed;
    /**
     * Calculate compression ratio
     */
    private calculateCompressionRatio;
    /**
     * Clear all cache data
     */
    clear(): void;
    /**
     * Cleanup expired entries
     */
    cleanup(): number;
}
export {};
//# sourceMappingURL=memory-optimized-cache.d.ts.map