import { TypedEmitter } from 'tiny-typed-emitter';
import { Utils, AppManager } from '@byondrnd/byond-web-lib';
import { CatalogManager } from './Managers/CatalogManager';
import { ProductsManager } from './Managers/Scene/ProductsManager/ProductsManager';
import { IEventSystem, EventSystemEventSignature, EventSystemEventDataSignature, IConfigurationFilter, IProduct, IApplication, VisualizerElement, IVisualizer, IScene } from './EventSystem/EventTypes';
import { SceneMetadataManager } from './Managers/Scene/SceneMetadataManager';
declare type TDefaultProducts = {
    [application: string]: string;
};
declare type THotspotPoint = {
    application: string;
    title: string;
    obj: any;
};
export declare class Visualizer extends TypedEmitter<IEventSystem> implements IVisualizer {
    appManager: AppManager;
    sceneSelector: string;
    mainContainerElement: VisualizerElement;
    sceneId?: string;
    sceneConfigurationLabel?: string;
    catalogManager: CatalogManager;
    productsManager: ProductsManager;
    sceneMetadataManager: SceneMetadataManager;
    debug: boolean;
    pubs: Utils.RxUtils.Subscription[];
    initAndLoaded: boolean;
    defaultProducts?: TDefaultProducts;
    defaultProduct?: string;
    maxFaceSize: number | null;
    maxFaceSizeMobile: number | null;
    experienceId?: string;
    experienceHash?: string;
    hotspots: THotspotPoint[];
    divs: HTMLDivElement[];
    divFirstGo: boolean[];
    constructor(containerSelector: string, sceneSelector: string);
    initAndLoad(): Promise<void>;
    setScene(sceneId: string, preventDefaultProducts?: boolean, preventEvent?: boolean, preventDefaultApplication?: boolean): Promise<void>;
    private onZoneLoaded;
    private initCatalog;
    initialProductDisplay(params?: {
        defaultProduct?: string;
        defaultProducts?: TDefaultProducts;
    }): Promise<void>;
    setSceneConfigurationLabel(scl?: string, sceneId?: string): Promise<void>;
    getCurrentSceneConfiguration(): import("./EventSystem/EventTypes").ISceneConfigurationEntity;
    private subEventsAnalytics;
    private emitEventsAnalytics;
    getCurrentCatalogFieldsMap: () => import("./EventSystem/EventTypes").ICatalogFieldsMapping;
    getCurrentApplication(): IApplication;
    setCurrentApplication(application: IApplication): IApplication;
    getFilters(): IConfigurationFilter[];
    getCurrentFilters(): IConfigurationFilter[];
    setFilter(filters: IConfigurationFilter[]): IConfigurationFilter[];
    getFilterCount(filterName: string): Map<string, number>;
    getSceneFilters(): IConfigurationFilter[];
    getSceneCurrentFilters(): IConfigurationFilter[];
    setSceneFilter(filters: IConfigurationFilter[]): void;
    getDisplayedProduct(application: IApplication): IProduct;
    getDisplayedProducts(): IProduct[];
    getProductList(): IProduct[];
    getApplicationsList(): IApplication[];
    addProductToFavorites(productSku: string, application: string): import("./EventSystem/EventTypes").IFavorite[];
    removeProductFromFavorites(productSku: string, application: string): import("./EventSystem/EventTypes").IFavorite[];
    getFavoriteProducts(): import("./EventSystem/EventTypes").IFavorite[];
    addFavoriteScene(): Promise<import("./EventSystem/EventTypes").IFavoriteScene[]>;
    removeFavoriteScene(setId: string): import("./EventSystem/EventTypes").IFavoriteScene[];
    getFavoriteScenes(): import("./EventSystem/EventTypes").IFavoriteScene[];
    getSceneList(): IScene[];
    addProductToCart(product: IProduct): void;
    orderSample(product: IProduct): void;
    getCurrentSceneImage(): Promise<string>;
    getCurrentScene(): IScene;
    displayProduct(productSku: string, application: IApplication, animateToProduct?: boolean): Promise<void>;
    displaySceneFromFavorites(id: string): Promise<void>;
    fetchMetadata(): Promise<string>;
    rotateCameraToApplication(application: string): Promise<void>;
    private initScene;
    THREEBox: any;
    isObjectVisible: any;
    private toScreenPosition;
    private unRegisterEvents;
    private registerEvents;
    private navigate;
    private loadProps;
    emit(eventName: EventSystemEventSignature, ...args: EventSystemEventDataSignature): boolean;
}
export {};
