import { TccET_APPLI } from "./applications.model";
import { TccAccessRight, TccC4Node, TccOperatingState, TccStorageClass, TccODataResult, TccClarcDate, TccBoProperties, TccPermissions, TccAdvancedBlob, TccSimpleNote, TccHistory } from "./shared.model";
export declare namespace TccET_ECM {
    enum AntivirusEngine {
        ccAE_None = "ccAE_None",
        ccAE_ClamAV = "ccAE_ClamAV"
    }
    enum AntivirusResult {
        ccAR_Unknown = "ccAR_Unknown",
        ccAR_Clean = "ccAR_Clean",
        ccAR_Suspicious = "ccAR_Suspicious",
        ccAR_Threat = "ccAR_Threat"
    }
    enum TccRepositoryType {
        ccRT_Common = "ccRT_Common",// default
        ccRT_Cmis = "ccRT_Cmis",
        ccRT_SapArchiveLink = "ccRT_SapArchiveLink"
    }
    /**
     * currently only simple allowed
     */
    enum TccObjectModel {
        ccOM_Simple = "ccOM_Simple",
        ccOM_Unknown = "ccOM_Unknown",
        ccOM_Complex = "ccOM_Complex"
    }
    type TccCertificates = Array<TccCertificate>;
    interface TccCertificate {
        Active: boolean;
        Date: TccClarcDate;
        CertData: string;
        CertHash: string;
    }
    type Repository = RepositoryCommon | RepositoryCmis | RepositorySapArchiveLink;
    interface RepositoryBase extends TccC4Node {
        BusinessObjects: string[];
        Desktops?: TccET_APPLI.TccCaptureApplicationDesktops;
        ExplicitPermissions?: boolean;
        Versioning?: boolean;
        CollectionName?: string;
        RetentionTime?: number;
        DefaultOwnerRights?: TccAccessRight;
        ChangeLock?: boolean;
        ThreatProtection?: boolean;
        StorageClass: TccStorageClass;
        Type: TccRepositoryType;
        /**
         * currently only simple allowed
         */
        ObjectModel?: TccObjectModel.ccOM_Simple;
    }
    interface RepositoryCommon extends RepositoryBase {
        Type: TccRepositoryType.ccRT_Common;
    }
    interface RepositoryCmis extends RepositoryBase {
        Type: TccRepositoryType.ccRT_Cmis;
    }
    interface RepositorySapArchiveLink extends RepositoryBase {
        Type: TccRepositoryType.ccRT_SapArchiveLink;
        AllowPushCertificates?: boolean;
        Certificates?: TccCertificates;
    }
    interface ThreatState {
        FEngine: AntivirusEngine;
        FDate: TccClarcDate;
        FResult: AntivirusResult;
        FThreat: string;
    }
    interface TccBusinessObjectLink {
        Item: Item;
        Uri: string;
    }
    interface TccBusinessObjectAttribute {
        Name: string;
        Value: any;
        TypeDef: any;
    }
    interface Item extends TccODataResult {
        Version?: string;
        State?: TccOperatingState;
        Subject?: string;
        Properties?: TccBoProperties;
        ClassId?: string;
        RootId?: string;
        ThreatState?: ThreatState;
        Notes?: TccSimpleNote[];
        LockDate?: TccClarcDate;
        LatestVersion?: boolean;
        ExternalId?: string;
        Blobs?: TccAdvancedBlob[];
        TypeId?: string;
        Attributes?: TccBusinessObjectAttribute;
        Rights?: TccPermissions;
        Links?: TccBusinessObjectLink[];
        BackupState?: TccOperatingState;
        ChangeLog?: TccHistory;
        DeleteDate?: TccClarcDate;
        SubTypeId?: string;
        FolderId?: string;
        Origin?: TccET_APPLI.Origin;
        LastViewed?: TccClarcDate;
        HoldIds?: string[];
    }
}
