import { ElementVersionStatus, IElementBasicData, IEndevorElement, IEndevorInstance, IEndevorWorkspaceEnvironmentStage, IEndevorWorkspaceState, IEndevorWorkspaceSubsystem, IEndevorWorkspaceSystem, IEndevorWorkspaceType } from "..";
import { IEndevorWorkspaceElement, IEndevorWorkspaceElementList, IEndevorWorkspaceElementVersion, IEndevorWorkspaceFileVersion } from "./doc/IEndevorWorkspaceState";
import { IHandlerProgressApi, Session } from "@zowe/imperative";
import { EndevorWorkspaceFilter } from "./EndevorWorkspaceFilter";
import { FileExtensionResolution } from "./doc/IEndevorWorkspaceEnums";
import { IEndevorCodepageConfig } from "../configs/doc/IEndevorCodepageConfig";
export declare class WorkspaceUtils {
    static EmptyWorkspaceElementVersion: IEndevorWorkspaceElementVersion;
    static EmptyWorkspaceFileVersion: IEndevorWorkspaceFileVersion;
    static isWorkspace(workspaceDir: string): boolean;
    static findWorkspace(workspaceDir: string): string;
    static getLocalState(workspaceDir: string, filter: EndevorWorkspaceFilter): Promise<IEndevorWorkspaceState>;
    static getLocalElementVersionStatus(element: IEndevorWorkspaceElement, endOfLine: string): Promise<ElementVersionStatus>;
    static isWorkspaceFile(file: string): boolean;
    static getWorkspaceFileState(file: string): Promise<IEndevorWorkspaceState>;
    static detectNewLocalFiles(state: IEndevorWorkspaceState, progressApi?: IHandlerProgressApi): Promise<IEndevorWorkspaceState>;
    static removeAllLocalFiles(state: IEndevorWorkspaceState, inclMetadata: boolean): Promise<IEndevorWorkspaceState>;
    static saveState(currentState: IEndevorWorkspaceState): Promise<void>;
    static checkEntryStage(state: IEndevorWorkspaceState, optDryRun: boolean, optNoUpdate: boolean): boolean;
    static ccidAndCommentCheck(state: IEndevorWorkspaceState, ccidProvided: boolean, commentProvided: boolean, optSignout: boolean, optNoUpdate: boolean, optDryRun: boolean): boolean;
    static getServerConfig(session: Session, instanceName: string): Promise<IEndevorInstance>;
    static updateInventoryState(state: IEndevorWorkspaceState, session: Session, instance: string, maxConcurrentRequests: number, serverConfig: IEndevorInstance, progressApi?: IHandlerProgressApi): Promise<boolean>;
    static updateElementState(state: IEndevorWorkspaceState, session: Session, instance: string, maxConcurrentRequests: number, progressApi?: IHandlerProgressApi): Promise<boolean>;
    static listElement(state: IEndevorWorkspaceState, session: Session, instance: string, location: IElementBasicData, searchMap: boolean, returnFirst: boolean, logicalPath: boolean, reportErrors?: boolean): Promise<null | IEndevorElement[]>;
    static composeActionsSummaryMsgs(state: IEndevorWorkspaceState): void;
    private static readMetadata;
    private static readElementMetadata;
    private static updateEnvStgMetadata;
    private static updateSystemMetadata;
    private static updateSubsystemMetadata;
    private static saveElementMetadata;
    private static detectNewLocalFilesInSubsystem;
    private static updateElementRemoteState;
    static getExpectedElementCodePage(envName: string, systemName: string, subsystemName: string, typeName: string, fullElementName: string, element: IEndevorWorkspaceElement, codepageConfig: IEndevorCodepageConfig): string;
    private static addStageToState;
    private static addSystemToState;
    private static addSubsystemToState;
    private static addTypeToState;
    static ensureDirectoryExistence(filePath: string): void;
    static cleanupParentDirs(filePath: string): void;
    static getEndOfLineChars(type: IEndevorWorkspaceType): string;
    static createLocalFileName(state: IEndevorWorkspaceState, fullElementName: string, stage: IEndevorWorkspaceEnvironmentStage, system: IEndevorWorkspaceSystem, subsystem: IEndevorWorkspaceSubsystem, type: IEndevorWorkspaceType): string;
    static findElementByFileName(fileName: string, elementList: IEndevorWorkspaceElementList, caseSensitive: boolean): IEndevorWorkspaceElement | null;
    static getFileSuffix(typeName: string, typeFileExtension?: string, fileExtensionResolution?: FileExtensionResolution): string;
    static isFSCaseSensitive(workspaceDir: string): boolean;
}
