/**
 * Caching Strategy for MIRA
 * =========================
 *
 * Implements a multi-level caching system to improve performance
 * for expensive operations like file analysis and memory searches.
 */
interface CacheOptions {
    ttl?: number;
    maxSize?: number;
    persistent?: boolean;
}
export declare class CacheManager {
    private memoryCache;
    private cacheDir;
    private maxMemorySize;
    private currentMemorySize;
    constructor(cacheDir?: string, maxMemorySize?: number);
    private initializeCacheDir;
    /**
     * Get cached value or compute it if not cached
     */
    getOrCompute<T>(key: string, computeFn: () => Promise<T>, options?: CacheOptions): Promise<T>;
    /**
     * Cache file analysis results with content hash
     */
    cacheFileAnalysis<T>(filePath: string, analysisFn: () => Promise<T>, options?: CacheOptions): Promise<T>;
    /**
     * Cache expensive glob operations
     */
    cacheGlobResult(pattern: string, globFn: () => Promise<string[]>, options?: CacheOptions): Promise<string[]>;
    /**
     * Invalidate cache entries
     */
    invalidate(pattern?: string): Promise<void>;
    /**
     * Get cache statistics
     */
    getStats(): {
        memoryEntries: number;
        memorySize: number;
        hitRate: number;
    };
    private isValid;
    private setMemoryCache;
    private findOldestEntry;
    private loadFromDisk;
    private saveToDisk;
    private sanitizeKey;
    private hashContent;
    private estimateSize;
    private calculateHitRate;
}
export declare function getCache(): CacheManager;
/**
 * Decorator for caching method results
 */
export declare function cached(options?: CacheOptions): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
/**
 * Memoization helper for expensive computations
 */
export declare function memoize<T extends (...args: any[]) => any>(fn: T, options?: {
    maxSize?: number;
    ttl?: number;
}): T;
export {};
//# sourceMappingURL=cache.d.ts.map