import ConfiguratorStructureHandler from './TabGroup/ConfiguratorStructureHandler';
import PaletteViewHandler from './Palette/PaletteViewHandler';
import ViewPlannerHandler from './Planner/ViewPlannerHandler';
import PlannerHelper from './plannerHelper';
import DivaWebPlanner, { Rendering, AccessoireItemType, ArticleInfoType, ArticleOptionValueView, PlannerPaletteViewDataType, TabGroup, StaticRoomDataType, Grid, ShelfAccessoriesView, PriceFormat, WebPlannerConfigParams, TabGroupTypes, SummaryPaletteItemType, ClientEvents, DoorPlannerView, ConfigStep, FreePlacesOnGrids, ItemPaletteType, PlannedPlacesOnGrids, CustomDimensionsType, PlannedArticleViewDataType, AdditionalGroupFilter, DockingPoint, ContentItemTeaser } from '@crystaldesign/web-planner-logic';
import { Actions, State, BBoxType } from '@crystaldesign/diva-core';
import UIState from './States/UIState';
import ProductState from './States/UIState/Product';
import SettingsState from './States/UIState/Settings';
import TabGroupState from './States/UIState/Tabgroups';
import ConfigState from './States/ConfigState';
import ActionButtonState from './States/UIState/ActionButtons';
import AIState from './States/UIState/AI';
import WysiwygDebugState from './States/UIState/WysiwygDebug';
import { PfisterEventAction } from '@crystaldesign/diva-utils';
import { RTVAnalyzeData } from './types';
export default class DivaViewHandler {
    actions?: Actions;
    coreState?: State;
    uiState: UIState;
    settingsState: SettingsState;
    productState: ProductState;
    aiState: AIState;
    tabGroupState: TabGroupState;
    actionButtonState: ActionButtonState;
    plannerHelper: PlannerHelper;
    divaWebPlanner: DivaWebPlanner;
    configuratorStructureHandler: ConfiguratorStructureHandler;
    paletteViewHandler: PaletteViewHandler;
    viewPlannerHandler: ViewPlannerHandler;
    wysiwygDebugState: WysiwygDebugState;
    viewIsReady: boolean;
    configState: ConfigState;
    initializedWithErrors: boolean;
    isParentViewVisible: boolean;
    layoutRendered: boolean;
    rtvAnalyzeData: RTVAnalyzeData[];
    hqRenderScript?: string;
    camInfo?: any;
    constructor(plannerConfig: WebPlannerConfigParams, isParentViewVisible: boolean);
    private updateExternalPlannerState;
    getPlannerInteractionFuctions: () => {
        addElement: (params: import("./types").AddElementParams) => Promise<void>;
        deleteElement: (params: import("./types").DeleteElementParams) => Promise<void>;
    };
    private getPosNrByBasketId;
    initialize(firstTime: boolean, plannerConfig?: ConfigState | true): void;
    private initializeLogic;
    tabGroupAlreadyVisited(tabGroup: TabGroup): boolean;
    configStepAlreadyVisited(configStep: ConfigStep): boolean;
    onBasketInitialized(): void;
    /**
     * This function returns the acts state od the webConfigurator (can only be one of those 4)
     */
    getState: () => TabGroupTypes;
    tabgroupTypeActive: (type: TabGroupTypes) => boolean;
    private backendCssVariableKeys;
    private initCSSVariables;
    initCSSVariablesObj(cssVariables: {
        [key: string]: string;
    }, ignoreKeys?: boolean): void;
    logAnalytics(eventAction?: PfisterEventAction, message?: string): void;
    addProduct(productId: string): Promise<void>;
    loadProduct(productId: string): Promise<void>;
    addDivaNrToSet(divaNr: string): Promise<void>;
    getCurrentAlternativRendering: () => import("@crystaldesign/web-planner-logic").AlternativeRendering[];
    /**
     * this function sets the act TabGroup and the first ConfigStep of that TabGroup by TabGroupType
     * @param type typ of TabGroup
     */
    navigateToTabGroup: (type: string, autoNavIfNotFound?: boolean, dontNavigate?: boolean) => boolean;
    /**
     * this function sets the Act ConfigStep
     * @param configStepKey U-ID
     */
    navigateToConfigStep(configStepKey: string, dontScroll?: boolean, visitRest?: boolean): void;
    scrollToTabgroup(configStepKey: string): void;
    /**
     * This functions is always calls when the Configuration Structure was updated (so maybe steps were added or removed) or the user Navigated
     * It relodes the TabMenu and the ItemPalettes
     * @param wasNaviagtion identifyer if it was Navigated
     */
    updateConfiguratorState: (wasNaviagtion: boolean) => void;
    /**
     * This Function sets the Configurator Tilte -> for Examlps "CLASSICS SOFA"
     * @param webConifguratorTitle
     */
    private setWebConifguratorTitle;
    /**
     * This function is called after the api Handler is initialized. It sets all api dependent settings
     */
    initApiDependencies(): Promise<void>;
    updatePlannerConfig(plannerConfig: WebPlannerConfigParams): void;
    getViewConfig(): import("@crystaldesign/web-planner-logic").ViewConfigData;
    initPlannerView(): Promise<void>;
    /**
     * Updates the new calculated pirce in View
     * ApiFormat contains the format that the api has configured - take this format if nothing is configured in the article
     * ArticlePriceFormat contains the format that is configured in the article. If this is set - take this format
     * If no format is set - take the default format
     * @param newPrice the new Price
     */
    updatePrice(newTotalPrice: number, newCurSetPrice: number, bruttoPrice?: number, priceFormat?: PriceFormat, customDimensions?: Promise<CustomDimensionsType[]> | undefined, setHash?: string): void;
    clearPrice(): void;
    /**
     * the ConfiguratorStructure gets initialize
     * @param configuratorStructure the new ConfiguratorStructure
     */
    initConfiguratorStructure(configuratorStructure: Map<string, TabGroup>): void;
    /**
     * the ConfiguratorStructure gets updated and the View of it gets updated.
     * @param configuratorStructure the new ConfiguratorStructure
     */
    updateConfiguratorStructure(configuratorStructure: Map<string, TabGroup>): void;
    /**
     * This function is called when a new rendering for the fullscreen view is loaded. It loads the fullscreen view and inserts the rendering.
     * @param rendering
     */
    updateFullscreenRendering(rendering: Rendering): void;
    private getPlanningIsInCompleteOrEmpty;
    /***************************PALETTE Updates********************************** */
    /**
     * Updates the Article-List(on PLannerStep) with articles that are comming for logic
     * @param plannerItems articles
     */
    updateCatalogPlannerArticles(plannerItems: PlannerPaletteViewDataType, paletteId: number, isUpdate: boolean, type: ItemPaletteType, dockFilter: string, actStepName: string, stepKey: string): void;
    updateCatalogPlanner2Dot0Articles(catalogPlannerArticles: PlannedArticleViewDataType[], isUpdate: boolean, onlySelectionChanged?: boolean, dp?: DockingPoint): void;
    /**
     * Updates the Accessoire-List(on AccessoireStep)  with accessoires from the actArticle
     * @param accessoires accessorie Items
     */
    updateAccessoiresPalette(accessoires: AccessoireItemType[], accType?: 'ACC' | 'ACC_CONFIG'): void;
    /**
     * Updates all on one specific ConfigPalette (can be more than one!)
     * @param configItems selectable / Visible ConfigItems
     * @param actStepName Title of the ConfigPalette
     * @param paletteType Palette Template e.g: GAL for Gallery
     * @param filterType Filter Type e.g: RAL for Colorfilter
     * @param paletteId iD of the ConfigPalette
     */
    updateConfigItems(configStepKey: string, configItems: ArticleOptionValueView[], selectedItems: ArticleOptionValueView[], actStepName: string, paletteType: ItemPaletteType, filterType: string, paletteId: number, isUpdate: boolean, visible: boolean, stepInfo: string | undefined, isRenderedInAccessorieStep: boolean, isRenderedNotInSettingPalette: boolean, optionCodex: string, notTotallyMatichingOPVs?: boolean, isMultiselect?: boolean, groupsDefaultClosed?: boolean, contentItemId?: string, conceptFilter?: AdditionalGroupFilter[], contentItemTeaser?: ContentItemTeaser, description?: string): void;
    /**
     * Updates the summary Items
     * @param summaryItems Items in the Summary
     */
    updateSummaryItems(ret: SummaryPaletteItemType[], articlePriceFormat?: PriceFormat, stepInfo?: string): void;
    updateStaticRoomListItems(roomListItems: StaticRoomDataType[], dontUpdateView?: boolean): void;
    updateShelfPlannerItems(paletteId: number, accessoires: ShelfAccessoriesView[], grids: Grid[], configStepKey: string, from: string): void;
    updateFreePlacesOnGrids(data: {
        freeShelfGrids: FreePlacesOnGrids[] | undefined;
        plannedShelfGrids: PlannedPlacesOnGrids[];
    }): void;
    updateDoorPlannerItems(doorPlannerViewItems: DoorPlannerView[], configStepKey: string): void;
    updatePaletteInfos(articleInfos: {
        [posNr: number]: ArticleInfoType;
    }, doShowConfigSingle: boolean, isConfigSingle: boolean, bbox: BBoxType): void;
    updateBBox(bbox: BBoxType): void;
    getI18nInstance(): import("i18next").i18n | undefined;
    getIsInMobileView: () => boolean;
    getOrbitInteractionAPI: () => import("react-3d-cube-interaction").CubeControlApi | null | undefined;
    eventIsManagedByClient(event: ClientEvents): boolean;
    setHQRenderScript(hqRenderScript: string | undefined): void;
    setCamInfo(camInfo: any): void;
    openARObserverConnection(handleNoHqrs: () => void): Promise<string>;
    onCloseConfigurator: () => void;
    private registerFunctions;
}
//# sourceMappingURL=DivaViewHandler.d.ts.map