import { AbstractProcess } from "../abstract/AbstractProcess.js";
interface BuildCacheOptions {
    cacheDir?: string;
    maxCacheSize?: number;
    ttl?: number;
}
interface CacheLookupResult {
    found: boolean;
    outputFiles?: string[];
    restored?: boolean;
}
export declare class BuildCache extends AbstractProcess {
    private static instance;
    private cacheIndex;
    private cacheDir;
    private maxCacheSize;
    private ttl;
    private indexPath;
    private initialized;
    private fileCache;
    private stats;
    private constructor();
    static getInstance(options?: BuildCacheOptions): BuildCache;
    static resetInstance(): void;
    initialize(): Promise<void>;
    lookup(actionName: string, inputFiles: string[], config?: Record<string, any>): Promise<CacheLookupResult>;
    store(actionName: string, inputFiles: string[], outputFiles: string[], config?: Record<string, any>, buildDuration?: number): Promise<void>;
    invalidateAction(actionName: string): void;
    clear(): Promise<void>;
    save(): Promise<void>;
    getStats(): typeof this.stats & {
        size: number;
        hitRate: string;
    };
    private computeCacheKey;
    private computeInputHash;
    private computeConfigHash;
    private verifyOutputFiles;
    private storeArtifacts;
    private restoreFromArtifacts;
    private loadIndex;
    private cleanupIfNeeded;
    private evictEntry;
    private getDirectorySize;
}
export {};
//# sourceMappingURL=BuildCache.d.ts.map