import { ForceIgnore } from '@salesforce/source-deploy-retrieve';
import { ConfigFile, ConfigContents } from '@salesforce/core';
import { Dictionary, Nullable } from '@salesforce/ts-types';
import { SourcePathInfo } from './sourcePathStatusManager';
declare type WorkspacePath = string;
declare type PathInfos = Map<WorkspacePath, SourcePathInfo>;
/**
 * The Workspace class is responsible for traversing the project directory
 * and creating SourcePathInfos for each source path and directory.
 */
export declare namespace Workspace {
    interface Options extends ConfigFile.Options {
        org: any;
        forceIgnore: ForceIgnore;
        isStateless: boolean;
    }
}
export declare class Workspace extends ConfigFile<Workspace.Options> {
    private org;
    private forceIgnore;
    private isStateless;
    private backupPath;
    private logger;
    pathInfos: PathInfos;
    workspacePath: string;
    trackedPackages: string[];
    constructor(options: Workspace.Options);
    protected init(): Promise<void>;
    private initializeCached;
    private initializeStateFull;
    private initializeStateless;
    getContents(): Dictionary<SourcePathInfo.Json>;
    entries(): Array<[string, SourcePathInfo.Json]>;
    static getFileName(): string;
    rewriteInfos(): Promise<void>;
    walkDirectories(directories: string[]): Promise<void>;
    /**
     * Walks the directory using native fs.readdir
     */
    walk(directory: string, recur?: boolean): Promise<void>;
    handleArtifact(sourcePath: string, parentDirectory?: string): Promise<SourcePathInfo>;
    /**
     * Check if the given sourcePath should be ignored
     */
    isValidSourcePath(sourcePathInfo: SourcePathInfo): boolean;
    write(): Promise<ConfigContents>;
    get(key: string): Nullable<SourcePathInfo.Json>;
    getInitializedValue(key: string): Promise<SourcePathInfo>;
    has(key: string): boolean;
    values(): SourcePathInfo.Json[];
    getInitializedValues(): Promise<SourcePathInfo[]>;
    set(key: string, value: SourcePathInfo): ConfigContents;
    protected setMethod(contents: Dictionary<SourcePathInfo.Json>, key: string, value: SourcePathInfo.Json): void;
    revert(): Promise<void>;
    backup(): Promise<void>;
    read(): Promise<ConfigContents>;
}
export {};
