import { ElementVersionStatus, FileExtensionResolution } from "./IEndevorWorkspaceEnums";
import { EndevorWorkspaceFilter } from "../EndevorWorkspaceFilter";
import { EndevorSyncActionConflict, EndevorSyncActionDelete, EndevorSyncActionMerge, EndevorSyncActionRename, EndevorSyncActionRetrieve, EndevorSyncActionUntrack, EndevorSyncActionUpdate } from "../..";
import { IEndevorCodepageConfig } from "../../configs/doc/IEndevorCodepageConfig";
export interface IEndevorWorkspaceState {
    filter: EndevorWorkspaceFilter;
    workspaceDir: string;
    environments: IEndevorWorkspaceEnvironmentStageList;
    mkDirs: string[];
    renameActions: EndevorSyncActionRename[];
    retrieveActions: EndevorSyncActionRetrieve[];
    updateActions: EndevorSyncActionUpdate[];
    deleteActions: EndevorSyncActionDelete[];
    conflictActions: EndevorSyncActionConflict[];
    untrackActions: EndevorSyncActionUntrack[];
    mergeActions: EndevorSyncActionMerge[];
    errorMessages: string[];
    warningMessages: string[];
    infoMessages: string[];
    inSync: boolean;
    unresolvedMergeConflicts: boolean;
    signoutOverrideNeeded: boolean;
    fileEncoding: string;
    nodeEncoding: BufferEncoding;
    caseSensitiveFS: boolean;
    elementCount: number;
    fileExtensionResolution: FileExtensionResolution;
    codepageConfig?: IEndevorCodepageConfig;
    codepageValue?: string;
}
export interface IEndevorWorkspaceEnvironmentStage {
    envName: string;
    stageName: string;
    stageId: string;
    stageNumber: number;
    nextEnv: string;
    nextStgNum: string;
    entry: boolean;
    systems: IEndevorWorkspaceSystemList;
}
export interface IEndevorWorkspaceEnvironmentStageList {
    [key: string]: IEndevorWorkspaceEnvironmentStage;
}
export interface IEndevorWorkspaceSystem {
    name: string;
    nextSystem: string;
    subsystems: IEndevorWorkspaceSubsystemList;
    types: IEndevorWorkspaceTypeList;
    ccidRequired: boolean;
    commentRequired: boolean;
}
export interface IEndevorWorkspaceSystemList {
    [key: string]: IEndevorWorkspaceSystem;
}
export interface IEndevorWorkspaceSubsystem {
    name: string;
    nextSubsystem: string;
    elements: IEndevorWorkspaceElementList;
}
export interface IEndevorWorkspaceSubsystemList {
    [key: string]: IEndevorWorkspaceSubsystem;
}
export interface IEndevorWorkspaceType {
    name: string;
    fileext: string;
    bin: boolean;
    reclen: number;
    ussDlim: string;
}
export interface IEndevorWorkspaceTypeList {
    [key: string]: IEndevorWorkspaceType;
}
export interface IEndevorWorkspaceElement {
    name: string;
    type: string;
    fullName: string;
    localFile: string;
    localStatus: ElementVersionStatus;
    localFileVersion: IEndevorWorkspaceFileVersion;
    localElmVersion: IEndevorWorkspaceElementVersion;
    remoteStatus: ElementVersionStatus;
    remoteElmVersion: IEndevorWorkspaceElementVersion;
    mergeStatus: ElementVersionStatus;
    mergeElmVersion: IEndevorWorkspaceElementVersion;
    syncFingerprint?: string;
    fileCharset?: string;
    codePage?: string;
    encodingChanged: boolean;
    fileExtensionResolution?: FileExtensionResolution;
}
export interface IEndevorWorkspaceFileVersion {
    sha1: string;
    sha1File: string;
}
export interface IEndevorWorkspaceElementVersion {
    fingerprint: string;
    vvll: string;
    userId: string;
    ccid: string;
    comment: string;
    date: string;
}
export interface IEndevorWorkspaceElementList {
    [key: string]: IEndevorWorkspaceElement;
}
