import { GitProject } from "@atomist/automation-client/lib/project/git/GitProject";
import { GoalInvocation } from "../../../api/goal/GoalInvocation";
import { GoalCache } from "./goalCaching";
export interface GoalCacheArchiveStore {
    /**
     * Store a compressed goal archive
     * @param gi The goal invocation thar triggered the caching
     * @param classifier The classifier of the cache
     * @param archivePath The path of the archive to be stored.
     */
    store(gi: GoalInvocation, classifier: string, archivePath: string): Promise<string>;
    /**
     * Remove a compressed goal archive
     * @param gi The goal invocation thar triggered the cache removal
     * @param classifier The classifier of the cache
     */
    delete(gi: GoalInvocation, classifier: string): Promise<void>;
    /**
     * Retrieve a compressed goal archive
     * @param gi The goal invocation thar triggered the cache retrieval
     * @param classifier The classifier of the cache
     * @param targetArchivePath The destination path where the archive needs to be stored.
     */
    retrieve(gi: GoalInvocation, classifier: string, targetArchivePath: string): Promise<void>;
}
export declare enum CompressionMethod {
    TAR = 0,
    ZIP = 1
}
/**
 * Cache implementation that caches files produced by goals to an archive that can then be stored,
 * using tar and gzip to create the archives per goal invocation (and classifier if present).
 */
export declare class CompressingGoalCache implements GoalCache {
    private readonly store;
    private readonly method;
    constructor(store?: GoalCacheArchiveStore, method?: CompressionMethod);
    put(gi: GoalInvocation, project: GitProject, files: string[], classifier?: string): Promise<string>;
    remove(gi: GoalInvocation, classifier?: string): Promise<void>;
    retrieve(gi: GoalInvocation, project: GitProject, classifier?: string): Promise<void>;
}
//# sourceMappingURL=CompressingGoalCache.d.ts.map