import DivaApiHandler from '../DivaApiHandler';
import DivaArticle from '../Article/DivaArticle';
import { Actions } from '../../interface/CoreTypes';
import { FavoritesVariants } from './FavoritesHandler';
import DivaCatalogData from '../../model/Catalog/CatalogData';
import BundleRule from '../../interface/Rules/BundleRules';
import { PlannerMode } from '../../interface/FunctionTypes';
import DivaConfigTreeData from '../ConfigTree/DivaConfigTree';
import { CustomDimensionsType } from '../../interface/DivaSetDataType';
import DivaPlannerHandler from '../Planner/DivaPlannerHandler';
import DoorPlanner from '../ConfigTree/DoorPlanner/DoorPlanner';
import PlannerDataType from '../../interface/Planner/PlannerDataType';
import { DockingType } from '../../interface/Planner/DockingPointDataType';
import { SupplierColor } from '../../interface/classifications/supplierColors';
import { AlternativeRendering } from '../../interface/Rendering/AlternativeRendering';
import { DoChangeRetailArticleNumbers } from '../../interface/Articles/ArticlePrefixesType';
import { ShelfAccessories3DValues } from '../../interface/ShelfPlanner/ShelfPlanner3DValues';
import { OrderSetData, VariantItemData, ConfigVariantData, Favorites, ProductConfiguration } from '@crystaldesign/basket-model';
import { CatalogMask } from '../../interface/AdditionalModelInfos';
import { Product } from '../Product/DivaProductHandler';
export interface InitSetsObject {
    organizationId: string;
    divaNr: string;
    supplierColors?: SupplierColor[];
    catalogMask?: CatalogMask;
    no3DConnection?: boolean;
    initEmptyPlanner: boolean;
    initVariantValues?: {
        [key: string]: string;
    };
    specificSetIdToLoad: string | undefined;
    serieId?: string;
    accountId?: string;
    isIDMData?: boolean;
    articlesToInitialize: string[] | undefined;
    onlyRunLogic: boolean;
    involvedSetIds: string[] | undefined;
    doAllowSetPlanner: () => boolean;
    configuratorTitle?: string;
    getPlanning2DAsJpg: () => any;
    updateSetImage?: ((url: string) => void) | undefined;
    plannerHandler: DivaPlannerHandler;
    actions?: Actions;
    divaCatalogs: {
        [catalogCodex: string]: DivaCatalogData;
    };
    api: DivaApiHandler;
    i18n?: any;
    addSet: (set: DivaSet, isActSet: boolean) => void;
    /** When true, decision logging is enabled for the set. In WYSIWYG this defaults to true and must not be set to false. */
    logDecisions?: boolean;
}
export type SetType = 'PLANNING' | 'ARTICLE';
export type PlannerEdition = 'BOX' | 'STANDARD';
export default class DivaSet {
    private setId;
    private _isActSet;
    private setData;
    private divaArticles;
    private configSingleData;
    private catalogData;
    private actConfigStepKey?;
    private setArticleNr?;
    private setArticleNrPrefix?;
    private overwrittenPrice?;
    private plannerMode?;
    basketConfigVariants: ConfigVariantData[];
    private setType;
    private configTreeData;
    private hiddenConfigTreeData?;
    private doorPlannerHandler?;
    private matchingProduct?;
    private matchingOrigProduct?;
    private _supplierColors?;
    private _logDecisions;
    private _inspectMode;
    private _logTotalStateForVariants;
    /**Favorits state */
    private _handlelingCurrentFavorites;
    private _favorites;
    private _disabledVariants;
    private _allVariantsCache?;
    private _oldConfigVariants?;
    favoritesChanged: boolean;
    private setState;
    modifiedJ3D: any[];
    private aiImagesForBasket;
    getAiImagesAsJpg(): {
        base64: string;
        promptId: string;
    }[];
    /**
     * Store AI image data for basket saving
     * @param promptId Unique identifier for the AI prompt
     * @param imageDataOrUrl Either base64 encoded image data or an existing image URL
     */
    setAiImageAsJpg(promptId: string, imageDataOrUrl: string): void;
    removeAiImageAsJpg(promptId: string): void;
    clearAllAiImagesAsJpg(): void;
    constructor(catalog: DivaCatalogData, _setId: string, orderSet: OrderSetData, initSetState: InitSetsObject);
    /**
     * This function is called when the docking of two Elements is changed
     */
    onDockingChanged: (elementId1: number, elementId2: number, state: "DOCK" | "UNDOCK" | "NOT_DOCKED", dockType?: DockingType) => boolean;
    private addRelationsToArticles;
    updateCfgValuesByPlanner: (optionHandler: Map<number, Map<string, string>>, repairVariantValuesAndPlanner?: boolean, partListBundleRules?: BundleRule[], doChangeRetailArticleNumbers?: DoChangeRetailArticleNumbers) => Promise<void>;
    getAlternateRenderInfo(): any;
    getPlannerMode(): PlannerMode;
    setPosNr: (elementId: number, posNr: number) => void;
    getPartlistArticlesOfSet(): {
        [basketId: string]: DivaArticle;
    };
    getPartlistArticlesOfArticle(article: DivaArticle, partlistArticles?: DivaArticle[]): DivaArticle[];
    giveAccNewPosNrByBasketId(BasketIdParent: string): void;
    private giveAccPosNrByBasketId;
    private givePartlistAccPosNrByBasketId;
    getAccessoiresOfBasketId(basketid: string): {
        [basketId: string]: DivaArticle;
    };
    private getSplitPlannedAccessoiresOfBasketId;
    setElementId: (basketID: string, elementId: number) => void;
    getElementId: (basketID: string) => number;
    getBasketId: (elementID: number) => string;
    getParentBasketIdOfElementId: (elementId: number) => string | undefined;
    getPlannerData: (elementId: number) => PlannerDataType | undefined;
    getConstructionRuleOfElementId: (elementId: number) => any;
    getArticleCodex: (elementId: number) => string;
    getValueOfOptionOfArticle: (elementId: number, optionCodex: string) => string | undefined;
    updateIDMSpecificFeatures: () => void;
    checkArticleHasOption: (elementId: number, optionCodex: string) => boolean;
    getPlannerConfigData: (elementId: number, alternateRenderInfo?: AlternativeRendering) => {
        config: any;
        accs: number[];
    };
    getShelfPlannerConfigData: (basketId: string) => {
        config: any;
        accs: number[];
    };
    getShelfPlannerData: (elementId: number) => ShelfAccessories3DValues[] | undefined;
    getImageOfOnlyElement(): string | null;
    getViewSetPrice(dontTakeOverwrittePrice?: boolean): number;
    getSetPrice(dontTakeOverwrittePrice?: boolean): number;
    getViewBruttoSetPrice(discountOnly?: boolean): number | undefined;
    /**
     *
     * @param discountOnly ignore usecase for "verschönerter" price
     * @returns
     */
    getBruttoSetPrice(discountOnly?: boolean): number | undefined;
    /**
     * This function returns the currency of one catalog. it runs through all articles and if one has set a currency, then it is used for the whole set
     * @returns
     */
    getSetPriceFormat(): string | undefined;
    getGeneralVariantValues(targetArticles?: string[]): {
        OPT: string;
        OPV: string;
    }[];
    getSetTitle(): string;
    /**
     * This function returns the base parent article of an accessoire. It runs through a chain of accessoires recursively.
     * If the current article is no Accessoire the function returns himself.
     * @param accBasketId   BasketID of the accessoire article
     */
    getBaseParentArticleOfAccessoire(accBasketId: string): DivaArticle;
    setDifferentOptions(options: string[]): void;
    getArticleByElementId(elementId: number): DivaArticle | undefined;
    getArticlesByArticleCodex(articledCodex: string): DivaArticle[];
    getPlannerEdition: () => PlannerEdition;
    getSetId: () => string;
    getSetName: () => string;
    getCatalogCodex: () => string;
    getCatalogName: () => string;
    getAccountName(): string;
    getAccountSessionGuid(): string;
    getSupplierGuid(): string | undefined;
    getDivaArticles(visiblePartlistArticlesAlso?: boolean, allPartlistArticlesAlso?: boolean): {
        [basketId: string]: DivaArticle;
    };
    getDivaArticlesByGridGroup(gridGroup?: string): DivaArticle[];
    getCustomDimensionsOfActSet(): Promise<CustomDimensionsType[]>;
    private getCustomDimsFromCostructionService;
    private getCustomDimsFromConfig;
    private getArticleVariantValues;
    deleteArticle(basketId: string): boolean;
    getArticleByBasketId(basketId: string): DivaArticle | undefined;
    addArticle(newArticle: DivaArticle): void;
    private sortDivaArticlesByArticlePosNr;
    getArticlesWithAccessoires(): {
        [articleCodex: string]: string[];
    };
    get modelCodex(): string | undefined;
    get configTree(): DivaConfigTreeData;
    get hiddenConfigTree(): DivaConfigTreeData | undefined;
    set hiddenConfigTree(hiddenConfigTree: DivaConfigTreeData | undefined);
    get CatalogData(): DivaCatalogData;
    get PlannerMode(): PlannerMode | undefined;
    get configSingle(): boolean;
    set configSingle(newConfigSingle: boolean);
    get edoExtraArticles(): string[];
    set edoExtraArticles(edoArticles: string[]);
    get SetArticleNr(): string | undefined;
    set SetArticleNr(val: string | undefined);
    get setName(): string;
    get mainArtcles(): DivaArticle[];
    get setName_locales(): {
        [lang: string]: string;
    };
    /**
     * return text thats added to the end of the setName depending on predefined options and their selection (For example Headboards at bed modells)
     */
    get ProductSetName(): string | undefined;
    private getOptionSetName;
    get isActSet(): boolean;
    set isActSet(isActSet: boolean);
    get SetArticleNrPrefix(): string | undefined;
    get doAllowSetPlanner(): boolean;
    get onlyRunLogic(): boolean;
    set SetArticleNrPrefix(val: string | undefined);
    get ViewOverwrittenPrice(): number | undefined;
    get OverwrittenPrice(): number | undefined;
    set ActConfigStepKey(val: string | undefined);
    get ActConfigStepKey(): string | undefined;
    get SetIsEmpty(): boolean;
    get LastPlannerElement(): number | undefined;
    get setHash(): string;
    getVariantBasketData(): VariantItemData[];
    getVariantsDescription(): string;
    getVariantsDescription_locales(): {
        [lang: string]: string;
    };
    get firstElementId(): number | undefined;
    get SetType(): SetType;
    get weight(): number | undefined;
    get volume(): number;
    get MetaData(): any;
    get MetaData_locales(): any;
    private getMetaData;
    getMatchingProduct(): Product | undefined;
    setMatchingProduct(product?: any): void;
    getMatchingOrigProduct(): Product | undefined;
    setMatchingOrigProduct(product?: any): void;
    initializeDoorPlanner(j3D: any, article: DivaArticle): Promise<void>;
    get configuratorTitle(): string | undefined;
    get doorPanner(): DoorPlanner | undefined;
    get handlelingCurrentFavorites(): boolean;
    set handlelingCurrentFavorites(val: boolean);
    get favorites(): Favorites;
    set favorites(favorites: Favorites);
    get disabledVariants(): number[];
    set disabledVariants(val: number[]);
    get allVariantsCache(): FavoritesVariants[] | undefined;
    get getSetState(): InitSetsObject;
    /**
     *
     * @returns
     */
    getCurrentDisountPercentage(): number | undefined;
    getBruttoPercentage(ignoreMainPriceUsecase?: boolean): number | undefined;
    set allVariantsCache(allVariantsCache: FavoritesVariants[] | undefined);
    get oldConfigVariants(): ProductConfiguration[] | undefined;
    set oldConfigVariants(oldConfigVariants: ProductConfiguration[] | undefined);
    /**
     * This function returns true when the current Set has a list of static rooms.
     * This is only the case if the currently loaded catalog in the actSet has a list of rooms and if the configurator itself can display a roomlist
     */
    get hasStaticRoomList(): boolean;
    get plannerHandler(): DivaPlannerHandler;
    get WebConfig(): import("../..").Configuration | undefined;
    get api(): DivaApiHandler;
    get actions(): Actions | undefined;
    get getPlanning2DAsJpg(): () => any;
    get ViewConfig(): import("../..").ViewConfigData | undefined;
    get i18n(): any;
    get supplierColors(): SupplierColor[] | undefined;
    get logDecisions(): boolean;
    set logDecisions(val: boolean);
    get inspectMode(): boolean;
    set inspectMode(val: boolean);
    get logTotalStateForVariants(): boolean;
    set logTotalStateForVariants(val: boolean);
    get showAccessioreOnLastTab(): boolean;
    get configAccessoiresInAccessoireStep(): boolean;
    set supplierColors(supplierColors: SupplierColor[] | undefined);
    cloneSet(): DivaSet;
}
//# sourceMappingURL=DivaSet.d.ts.map