import { Task } from '@nrwl/devkit';
import { DefaultTasksRunnerOptions } from './default-tasks-runner';
export declare type CachedResult = {
    terminalOutput: string;
    outputsPath: string;
    code: number;
};
export declare type TaskWithCachedResult = {
    task: Task;
    cachedResult: CachedResult;
};
export declare class Cache {
    private readonly options;
    root: string;
    cachePath: string;
    terminalOutputsDir: string;
    latestOutputsHashesDir: string;
    constructor(options: DefaultTasksRunnerOptions);
    removeOldCacheRecords(): void;
    get(task: Task): Promise<CachedResult>;
    put(task: Task, terminalOutput: string | null, outputs: string[], code: number): Promise<void>;
    copyFilesFromCache(hash: string, cachedResult: CachedResult, outputs: string[]): void;
    temporaryOutputPath(task: Task): string;
    removeRecordedOutputsHashes(outputs: string[]): void;
    recordOutputsHash(outputs: string[], hash: string): void;
    shouldCopyOutputsFromCache(taskWithCachedResult: TaskWithCachedResult, outputs: string[]): boolean;
    private areLatestOutputsHashesDifferentThanTaskHash;
    private getLatestRecordedHashForTask;
    private isAnyOutputMissing;
    private getFileNameWithLatestRecordedHashForOutput;
    private getFromLocalDir;
    private createCacheDir;
    private createTerminalOutputsDir;
    private ensureLatestOutputsHashesDir;
}
