import React from 'react';
import { PfisterEventAction } from '@crystaldesign/diva-utils';
import DivaWebPlanner, { AlternativeRendering, PlannerMessageType, PlannerMode, TabGroupTypes, ClientEvents, BasketEvent, BannerRule, CustomDimensionsType, PriceFormat, ArQrCodeConfig } from '@crystaldesign/web-planner-logic';
import { CubeControlApi } from 'react-3d-cube-interaction';
import { PlannerMessageItem } from '../../../types';
import SettingsState from '../Settings';
import WysiwygDebugState from '../WysiwygDebug';
export default class ProductState {
    private divaWebPlanner?;
    private settingsState?;
    private wysiwygDebugState?;
    private initializeView;
    private toggleLoading?;
    private logAnalytics;
    private setCurPlannerViewMode;
    private onClickAddToBasket;
    private getState;
    private eventIsManagedByClient;
    private handlePlanner3DGridChanged;
    private forceViewToEnterPlannerMode;
    private initPlannerViewMode;
    loadRTVForAr: boolean;
    activateAR?: () => void;
    isArCompatible?: boolean;
    glbUrl?: string;
    constructor(initializeView: (firstTime: boolean, plannerConfig?: true) => void, logAnalytics: (eventAction?: PfisterEventAction, message?: string) => void, getState: () => TabGroupTypes, eventIsManagedByClient: (event: ClientEvents) => boolean, forceViewToEnterPlannerMode: (doShowInfo: boolean) => void, toggleLoading?: (id: string, hidden?: boolean | undefined, toggle?: boolean | undefined) => void | undefined);
    initialize(divaWebPlanner: DivaWebPlanner, settingsState: SettingsState, wysiwygDebugState: WysiwygDebugState, setCurPlannerViewMode: (mode: PlannerMode) => void, handlePlanner3DGridChanged: (forceClose?: boolean | undefined, forceActive?: boolean | undefined) => void, initPlannerViewMode: (mode: any) => void, onClickAddToBasket: (viewHandler?: any, event?: BasketEvent | undefined) => Promise<boolean>): void;
    plannerMode?: PlannerMode;
    isBoxPlanner: boolean;
    /**************************************PRODUCT Header****************************************************/
    webConifguratorTitle: string;
    setWebConifguratorTitle(val: string): void;
    formatedTotalPrice: number | undefined;
    formatedBruttoPrice: number | undefined;
    formatedCurSetPrice: number | undefined;
    priceFormat: PriceFormat | undefined;
    customDimensions?: Promise<CustomDimensionsType[]>;
    setFormatedPrices(totalPrice: number, setPrice: number, bruttoPrice?: number, customDimensions?: Promise<CustomDimensionsType[]>, priceFormat?: PriceFormat): void;
    getPriceFormatForCounter(newPrice: number): PriceFormat;
    currentBanner: BannerRule | undefined;
    setCurrentBanner(banner: BannerRule | undefined): void;
    /*************************************PRODUCT Functions***************************************************/
    doShowFunctions: boolean;
    doShowUserSaveButton: boolean;
    showArQrCode?: ArQrCodeConfig;
    initViewConfig(doShowFunctions: boolean, doShowUserSaveButton: boolean, showArQrCode?: ArQrCodeConfig): void;
    onClickReset: () => void;
    onClickHelp: () => void;
    onClickShare: () => void;
    syncOnClickShare(): Promise<void>;
    onClickPrint: () => void;
    onClickSave: () => void;
    onRequestConsulation: () => void;
    onClickSave2: () => void;
    /**************************************PRODUCT Center****************************************************/
    allowRendering: boolean;
    setAllowRendering(val: boolean): void;
    doShowRenderImage: boolean;
    diva3dImgSrc: string;
    setDiva3dImgSrc(val: string): void;
    _allowGrid: boolean;
    get allowGrid(): boolean;
    setAllowGrid(val: boolean): void;
    doShowGrid: boolean;
    GridImageURL: string;
    allowRTV: boolean;
    allowQRCodeAR: ArQrCodeConfig | boolean;
    doShowRTV: boolean;
    allow3DComb: boolean;
    doShow3DComb: boolean;
    shelfPlannerRTV: boolean;
    doShowAIRoom: boolean;
    pricePreview?: 'fromBasePrice' | 'fromCurrentPrice' | 'fromCurrentPriceHideCurrent' | 'off';
    hide2DPlanner?: boolean;
    get footerVisible(): string[];
    setRTVActivateAR(isArCompatible: boolean, activateAR?: () => void): void;
    get browserSupportAR(): boolean;
    articleImage: string;
    setArticleImage(url: string): void;
    updateSetImage(url: string): void;
    doShowNav3D: boolean;
    doShowNav3DCOMB: boolean;
    onDoShowNav3DChange: (doShow: boolean) => void;
    doShowNav3DPlannerMode: boolean;
    doShow3DZoom: boolean;
    doEnableToShow3DDimensionLines: boolean;
    hidePlannerUiIcons: boolean;
    doShow3DDimensionLines: boolean;
    doShowMainDimensions: boolean;
    doShowARQRCode: boolean;
    arCodeWasVisibleOnce: boolean;
    getDoShow3DDimensionLines: () => boolean;
    setDoShow3DDimensionLines: (val: boolean) => void;
    plannerRenderingIsStaticBG: boolean;
    setPlannerRenderingIsStaticBG: (val: boolean) => void;
    plannerRenderingIsStart: boolean;
    setPlannerRenderingIsStart: (val: boolean) => void;
    curAlternateRendering?: AlternativeRendering;
    setCurAlternateRendering(val?: AlternativeRendering): void;
    roomListExpanded: boolean;
    private lastTimeoutRoomlistExpanded;
    setRoomListExpanded(expanded: boolean): void;
    doShow2DGridInViewModel: (doShow: boolean) => void;
    showAIRoom: () => void;
    hideAIRoom: () => void;
    onChangePlannerView: (type: "2D" | "3D" | "RTV" | "3DCOMB" | undefined, alternateRendering?: AlternativeRendering) => void;
    plannerMessages: Map<PlannerMessageType, PlannerMessageItem>;
    get plannerMessagesArr(): [PlannerMessageType, PlannerMessageItem][];
    /**
     * This function is used to display a info message in the planner.
     * @param doShowPlannerMsg  Gibt an, ob die meldung ein oder ausgeblendet werden soll
     * @param type              Gibt an, ob es sich um eine Warnung oder Info handelt.
     * @param content           Gibt den Text an, der ausgegebn werden soll
     * @param autoHide            Gibt an ob die Warnung nach einiger ZEit wieder verschwinden soll
     */
    updatePlannerMsgContainer: (codex: PlannerMessageType, doShowPlannerMsg: boolean, type: "WARNING" | "INFO", content: string | React.ReactNode, autoHide: boolean, timeoutDuration?: number) => void;
    onNav3DMenuSelect: (codex: "Nav3DZoomIn" | "Nav3DZoomOut" | "Nav3DViews" | "Nav3DFullScreen" | "Nav3DPlannerMode" | "Nav3DDimLine") => void;
    setDoShowARQRCode: (val: boolean) => void;
    isARIframeVisible?: boolean;
    setIsARIframeVisible: (val: boolean | undefined) => void;
    setArCodeWasVisibleOnce: () => void;
    /**
     * this function tells the View if only 2D is avabile or 3D and 2D or neither of those
  
    */
    initConfiguratorMode(plannerMode: PlannerMode): void;
    productElement?: HTMLDivElement | null;
    setProductElement(val: HTMLDivElement | null): void;
    image3DElement?: HTMLDivElement | null;
    setImage3DElement(val: HTMLDivElement | null): void;
    planner2DGridElement?: HTMLDivElement | null;
    setPlanner2DGridElement(val: HTMLDivElement | null): void;
    planner3DGridElement?: HTMLDivElement | null;
    setPlanner3DGridElement(val: HTMLDivElement | null): void;
    planner3DImageSvgArea?: HTMLElement | null;
    setPlanner3DImageSvgArea(val: HTMLElement | null): void;
    orbitCubeElement?: CubeControlApi | null;
    setOrbitCubeElement(val: CubeControlApi | null): void;
    orbitHidden: boolean;
    setOrbitIsHidden(val: boolean): void;
    ignoreUpdateRenderingOnOrbitChanged: boolean;
    setIgnoreUpdateRenderingOnOrbitChanged(val: boolean): void;
    /**
     * This function is returns the act size of the 3D Container / 2D Container
     */
    getPlannerRenderingSize(): {
        imgWidth: number;
        imgHeight: number;
    };
}
//# sourceMappingURL=index.d.ts.map