export declare type TUIComponentText = string | string[] | {
    [langid: string]: string | string[];
};
/** Enumeration of BOM entries. */
export declare enum EBomComponentEntryType {
    Group = 0,
    Text = 1,
    Article = 2,
    AddPrice = 3,
    Set = 4
}
export declare type IBomComponentEntryText = string | string[];
/** Base entry. */
export interface IBomComponentBaseEntry {
    /** Unique ID in IGXB. */
    UID: string;
}
/** Extended entry for add'l price. */
export interface IBomComponentAddPriceEntry extends IBomComponentBaseEntry {
    ItemType: EBomComponentEntryType.AddPrice;
    Caption: IBomComponentEntryText;
    Percentage?: string;
    Value: string;
}
/** Extended entry for real articles. */
export interface IBomComponentArticleEntry extends IBomComponentBaseEntry {
    ItemType: EBomComponentEntryType.Article;
    Position: string;
    ArticleId: string;
    /** The instance id from the commercial side (AKA comId). */
    InstanceId: string;
    Name?: string;
    /** Article image as URL or Base64 */
    Image?: string;
    ShortText: IBomComponentEntryText;
    LongText: IBomComponentEntryText;
    VarText: IBomComponentEntryText;
    Quantity: string;
    SinglePrice: string;
    TotalPrice: string;
    Properties: {
        property: string;
        value: string;
    }[];
    /** IGXB UID of the parent article or group */
    ParentBomEntryId?: string;
    SubItems?: TBomComponentEntry[];
}
/** Extended entry for item groups. */
export interface IBomComponentGroupEntry extends IBomComponentBaseEntry {
    ItemType: EBomComponentEntryType.Group;
    Caption: IBomComponentEntryText;
    Items: TBomComponentEntry[];
}
export interface IBomComponentSetEntry extends IBomComponentBaseEntry {
    SetId: string;
    InstanceId: string;
    Position: string;
    ItemType: EBomComponentEntryType.Set;
    Caption: IBomComponentEntryText;
    Items: IBomComponentArticleEntry[];
    Price: string;
    Image?: string;
    ShortText: IBomComponentEntryText;
    LongText: IBomComponentEntryText;
    VarText: IBomComponentEntryText;
    Name?: string;
}
/** Extended entry for text article. */
export interface IBomComponentTextEntry extends IBomComponentBaseEntry {
    ItemType: EBomComponentEntryType.Text;
    Text: string[];
}
export declare type TBomComponentEntry = IBomComponentAddPriceEntry | IBomComponentArticleEntry | IBomComponentGroupEntry | IBomComponentTextEntry | IBomComponentSetEntry;
