import { TccET_Log } from './log.model';
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 ProcessTransportResponse {
        Date: TccClarcDate;
        Description: string;
        DisplayName: string;
        FileId: string;
        Id: string;
        IncludeMetaData: boolean;
        Log: TccET_Log.Log[];
        Name: string;
        Result: boolean;
        SystemClass: TccSystemClass;
        enant: string;
        TenantId: string;
        TenantName: string;
        User: 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 {};
}
