import { IExpandable, TccClarcDate, TccTranslation, TccIcon, TccC4Node, TccSystemClass } from './shared.model';
export declare namespace TccET_C4 {
    export enum TransactionModifier {
        ccTM_Unknown = "ccTM_Unknown",
        ccTM_None = "ccTM_None",
        ccTM_Create = "ccTM_Create",
        ccTM_Update = "ccTM_Update",
        ccTM_Rename = "ccTM_Rename",
        ccTM_Move = "ccTM_Move",
        ccTM_Delete = "ccTM_Delete"
    }
    export enum TransactionSnapshot {
        ccTS_Unknown = "ccTS_Unknown",
        ccTS_Current = "ccTS_Current",
        ccTS_History = "ccTS_History",
        ccTS_Live = "ccTS_Live"
    }
    interface ObjectMemberRight extends IExpandable {
        Id: string;
        Rights: number;
    }
    export interface ObjectRights extends IExpandable {
        Owner: ObjectMemberRight;
        Members: Array<ObjectMemberRight>;
    }
    export interface ImageUploadResult extends IExpandable {
        ThumbnailLink: string;
        ImageLink: string;
    }
    export interface Node<T> extends TccC4Node {
        Path: string;
        Object?: T;
        Rights?: ObjectRights;
        Dimension?: boolean;
        ClassName?: string;
    }
    export interface TransportItem extends IExpandable {
        Recursive: boolean;
        Path: string;
        ForceExecution?: boolean;
    }
    export interface Transport extends TccC4Node {
        Items: Array<TransportItem>;
        IncludeMetaData: boolean;
        Targets: TransportTargets;
    }
    export interface TransportTargets {
        SystemClasses: Array<TccSystemClass>;
        Tenants?: string;
    }
    export interface SourceNode<T> extends IExpandable {
        Path: string;
        Id: string;
        Object: T;
        Description?: TccTranslation;
        Icon?: TccIcon;
    }
    export interface Transaction<T> extends IExpandable {
        Date: TccClarcDate;
        Id: string;
        SourceNode: SourceNode<T>;
        Modifier: TransactionModifier;
        Description?: string;
        Snapshot: TransactionSnapshot;
        User: string;
        NewPath: string;
    }
    export {};
}
