import { CloneDirectoryInfo, CloneOptions, DirectoryManager } from "./DirectoryManager";
export interface StableDirectoryManagerOpts {
    /**
     * Attempt to reuse directories?
     */
    reuseDirectories: boolean;
    /**
     * Clean up directories on exit?
     */
    cleanOnExit?: boolean;
    /**
     * If provided, number of directories
     */
    baseDir: string;
}
/**
 * Build a stable working directory structure.
 * Options determine whether it's cleared on exit.
 */
export declare class StableDirectoryManager implements DirectoryManager {
    opts: StableDirectoryManagerOpts;
    private directoriesUsed;
    constructor(pOpts: StableDirectoryManagerOpts);
    invalidate(existing: CloneDirectoryInfo): Promise<void>;
    directoryFor(owner: string, repo: string, branch: string, opts: CloneOptions): Promise<CloneDirectoryInfo>;
    /**
     * Return undefined if not found
     */
    private existingDirectoryFor;
    private freshDirectoryFor;
    private pathFor;
    private createFreshDir;
}
//# sourceMappingURL=StableDirectoryManager.d.ts.map