import { IExpandable, TccTranslation, TccC4Node, TccDataType, TccBpiDeliveryProfileType, TccOperatingState as _TccOperatingState, TccBusinessType, TccDataTypeMap, TccPrimitiveValue } from './shared.model';
export declare namespace TccET_BIZOBJ {
    export enum Storage {
        ccSP_Unknown = "ccSP_Unknown",
        ccSP_FileSystem = "ccSP_FileSystem",
        ccSP_S3 = "ccSP_S3",
        ccSP_Google = "ccSP_Google",
        ccSP_Azure = "ccSP_Azure"
    }
    export enum AbstractType {
        ccAT_Complex = "ccAT_Complex",
        ccAT_Enumeration = "ccAT_Enumeration",
        ccAT_Primitive = "ccAT_Primitive"
    }
    export enum CharCase {
        ccCC_Normal = "ccCC_Normal",
        ccCC_Upper = "ccCC_Upper",
        ccCC_Lower = "ccCC_Lower"
    }
    export enum Model {
        ccOM_Unassigned = "ccOM_Unassigned",
        ccOM_Complex = "ccOMComplex"
    }
    export enum SubtypeClass {
        ccST_Document = "ccST_Document",
        ccST_Folder = "ccST_Folder"
    }
    export type State = _TccOperatingState;
    export const State: typeof _TccOperatingState;
    export enum SubjectPlaceholder {
        id = "id",
        timestamp = "timestamp",
        hh = "hh",
        nn = "nn",
        ss = "ss",
        zzz = "zzz",
        yy = "yy",
        yyyy = "yyyy",
        mm = "mm",
        dd = "dd"
    }
    export interface Subject extends TccTranslation {
    }
    export interface DisplayName extends TccTranslation {
    }
    export interface Description extends TccTranslation {
    }
    export interface IProperty {
        Id: string;
        Name: string;
        AbstractType: AbstractType;
        Mandatory?: boolean;
        Collection?: boolean;
        Searchable?: boolean;
        Unique?: boolean;
        DisplayName?: DisplayName;
        Description?: Description;
        BusinessType?: TccBusinessType;
        MinConfidence?: number;
    }
    interface TypedPrimitiveProperty<T extends TccDataType> extends IProperty {
        DataType: T;
        DefaultValue?: TccDataTypeMap[T] | string;
        Key?: boolean;
        AbstractType: AbstractType.ccAT_Primitive;
        MinLength?: number;
        MaxLength?: number;
        CharCase?: CharCase;
        Nullable?: boolean;
        RegEx?: string;
    }
    export type PrimitiveProperty = TypedPrimitiveProperty<TccDataType.ccDT_Binary> | TypedPrimitiveProperty<TccDataType.ccDT_Boolean> | TypedPrimitiveProperty<TccDataType.ccDT_DateTime> | TypedPrimitiveProperty<TccDataType.ccDT_Float> | TypedPrimitiveProperty<TccDataType.ccDT_Integer> | TypedPrimitiveProperty<TccDataType.ccDT_String> | TypedPrimitiveProperty<TccDataType.ccDT_Unknown>;
    export interface ComplexProperty extends IProperty {
        AbstractType: AbstractType.ccAT_Complex;
        Items: Array<PropertyContainer>;
    }
    export interface EnumerationItems {
        Key: string;
        Value?: TccTranslation;
    }
    export interface EnumerationProperty extends IProperty {
        AbstractType: AbstractType.ccAT_Enumeration;
        MultiValues?: boolean;
        Items: Array<EnumerationItems>;
        DefaultValue?: string;
    }
    export interface PropertyContainer {
        TccBusinessObjectPrimitivePropertyDefinition?: PrimitiveProperty;
        TccBusinessObjectEnumerationPropertyDefinition?: EnumerationProperty;
        TccBusinessObjectComplexPropertyDefinition?: ComplexProperty;
    }
    export interface SubType {
        Id: string;
        Description?: TccTranslation;
        ParentId?: string;
        TypeClass?: SubtypeClass;
        TypeId?: string;
        DisplayName?: TccTranslation;
        Properties: Array<PropertyContainer>;
    }
    export interface BusinessObject extends TccC4Node {
        Subject?: Subject;
        Properties: Array<PropertyContainer>;
        SubTypes?: Array<SubType>;
    }
    export interface DesktopItem {
        Enabled?: boolean;
        Mandatory?: boolean;
        Position?: ItemPosition;
        ReadOnly?: boolean;
        Id: string;
        Value?: TccPrimitiveValue;
        MultiLine?: boolean;
        Color?: string;
        UserExit?: string;
        UseParentDefault?: boolean;
        Decimals?: number;
        ParentId?: string;
    }
    export interface ItemPosition extends IExpandable {
        Column: number;
        Row: number;
        Width: number;
        Height: number;
    }
    export interface Container {
        Containers: Array<Container>;
        Name: TccTranslation;
        Items: Array<DesktopItem>;
    }
    export interface DesktopTable {
        Name: TccTranslation;
        Columns: DesktopItem[];
    }
    export interface Desktop extends TccC4Node {
        RootContainer: Container;
        Tables: DesktopTable[];
        Script?: string;
        BusinessObject: string;
    }
    export enum SourceType {
        ccUX_Unknown = "ccUX_Unknown",
        ccUX_Repository = "ccUX_Repository",
        ccUX_Database = "ccUX_Database"
    }
    export interface FieldMapping {
        Source: string;
        Target: string;
    }
    export interface Userexit extends TccC4Node {
        SourceType: SourceType;
        DataSourceId: string;
        Query?: string;
        Mappings: Array<FieldMapping>;
        Hitlist: string[];
        SubTypeId?: string;
    }
    export interface CompanyCode {
        Active: boolean;
        Code: string;
        Description: string;
        HotFolderConfig: string;
        MailBoxConfig: string;
        EGatewayProviderId: string;
        ValidationAppId: string;
    }
    export interface BaseSolution extends TccC4Node {
        Active: boolean;
        DeliveryProfile: BpiDeliveryProfile;
        ConversionProfile: BpiConversionProfile;
        OrderNumberDefinitions: string[];
    }
    export enum TccInvoiceTypes {
        ccIT_RMB = "ccIT_RMB",
        ccIT_ROB = "ccIT_ROB",
        ccIT_GMB = "ccIT_GMB",
        ccIT_GOB = "ccIT_GOB"
    }
    export interface Invoice extends BaseSolution {
        CompanyCodes: InvoiceCompanyCode[];
    }
    export interface InvoiceCompanyCode extends CompanyCode {
        Auditors: Auditors;
        Modifiers: Modifiers;
    }
    export interface Modifiers {
        AlwaysCreateOneLineItem: TccInvoiceTypes[];
    }
    export interface Auditors {
        DeVatParagraph14Audit: boolean;
        AtVatParagraph11Audit: boolean;
    }
    export interface Modifiers {
    }
    export interface BpiDeliveryProfile {
        AccessProfileId: string;
        TransformerId: string;
        AccessProfileType: TccBpiDeliveryProfileType;
    }
    export interface Order extends BaseSolution {
    }
    export interface DocumentFlow extends TccC4Node {
        DeliveryProfile: AccessProfile;
        ConversionProfile: BpiConversionProfile;
    }
    export interface BpiConversionProfile {
        ConversionProfileId: string;
    }
    export interface AccessProfile {
        AccessProfileId?: string;
        TransformerId?: string;
        AccessProfileType?: TccBpiDeliveryProfileType;
    }
    export {};
}
