interface CacheOptions {
    ttl?: number;
    cacheDir?: string;
}
/**
 * CacheManager class for storing and retrieving dashboard data
 * Tracks file modification times to detect changes and invalidate cache
 */
export declare class CacheManager<T> {
    private cacheFile;
    private ttl;
    private cacheDir;
    /**
     * Create a new CacheManager instance
     * @param cacheKey - Unique identifier for this cache (e.g., 'dashboard-data')
     * @param options - Cache configuration options
     */
    constructor(cacheKey: string, options?: CacheOptions);
    /**
     * Get cached data if valid, otherwise return null
     * @param watchPaths - Array of file/directory paths to check for modifications
     * @returns Cached data or null if invalid/expired
     */
    get(watchPaths?: string[]): Promise<T | null>;
    /**
     * Store data in cache with current timestamp and file hashes
     * @param data - Data to cache
     * @param watchPaths - Array of file/directory paths to track
     */
    set(data: T, watchPaths?: string[]): Promise<void>;
    /**
     * Invalidate (delete) the cache
     */
    invalidate(): Promise<void>;
    /**
     * Check if cache is valid without retrieving data
     * @param watchPaths - Array of file/directory paths to check
     * @returns True if cache exists and is valid
     */
    isValid(watchPaths?: string[]): Promise<boolean>;
    /**
     * Compute file modification times for all watched paths
     * @param watchPaths - Array of file/directory paths
     * @returns Map of path to mtime
     */
    private computeFileHashes;
    /**
     * Recursively scan directory for important files
     * @param dirPath - Directory to scan
     * @param hashes - Map to store file hashes
     * @param depth - Current recursion depth (max 3)
     */
    private scanDirectory;
    /**
     * Compare two file hash maps
     * @param oldHashes - Previous hashes
     * @param newHashes - Current hashes
     * @returns True if hashes match (no changes)
     */
    private hashesMatch;
    /**
     * Get cache statistics
     * @returns Cache info object
     */
    getStats(): Promise<{
        exists: boolean;
        age?: number;
        fileCount?: number;
        size?: number;
    }>;
}
/**
 * Create a cache manager for dashboard data
 * @param workflowDir - Path to .workflow directory
 * @param ttl - Optional TTL in milliseconds
 * @returns CacheManager instance
 */
export declare function createDashboardCache(workflowDir: string, ttl?: number): CacheManager<any>;
export {};
//# sourceMappingURL=cache-manager.d.ts.map