import ApolloClient from 'apollo-client';
import { NormalizedCacheObject } from 'apollo-cache-inmemory';
import { TypedEmitter } from 'tiny-typed-emitter';
import { Utils, AppManager } from '@byondrnd/byond-web-lib';
import { CatalogManager } from './Managers/CatalogManager/CatalogManager';
import { ProductsManager } from './Managers/Scene/ProductsManager/ProductsManager';
import { IVisualizer, IEventSystem, EventSystemEventSignature, EventSystemEventDataSignature, IFavoriteProductList, IFavoriteSceneList, IConfigurationFilter, IProduct, IScene, IApplication, VisualizerElement, ICatalogFieldsMapping, ISceneConfigurationEntity } from './EventSystem/EventTypes';
import { SceneMetadataManager } from './Managers/SceneMetadataManager/SceneMetadataManager';
declare type TDefaultProducts = {
    [application: string]: string;
};
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;
    showroomClient: ApolloClient<NormalizedCacheObject>;
    defaultProducts: TDefaultProducts;
    defaultProduct: string;
    constructor(containerSelector: string, sceneSelector: string);
    initAndLoad(): Promise<void>;
    setScene(sceneId?: string, preventDefaultProducts?: boolean, preventEvent?: boolean): Promise<void>;
    initialProductDisplay(params?: {
        defaultProduct?: string;
        defaultProducts?: TDefaultProducts;
    }): Promise<void>;
    setSceneConfigurationLabel(scl: string): void;
    getCurrentSceneConfiguration(): ISceneConfigurationEntity;
    getCurrentCatalogFieldsMap(): 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[]): IConfigurationFilter[];
    getDisplayedProduct(application: IApplication): IProduct;
    getDisplayedProducts(): Array<IProduct>;
    GetProductList(): IProduct[];
    GetApplicationsList(): IApplication[];
    addProductToFavorites(productSku: string, application: string): IFavoriteProductList;
    removeProductFromFavorites(productSku: string, application: string): IFavoriteProductList;
    getFavoriteProducts(): IFavoriteProductList;
    addFavoriteScene(): Promise<IFavoriteSceneList>;
    removeFavoriteScene(setId: string): IFavoriteSceneList;
    getFavoriteScenes(): IFavoriteSceneList;
    getSceneList(): IScene[];
    addProductToCart(product: IProduct): void;
    orderSample(product: IProduct): void;
    getCurrentSceneImage(): Promise<string>;
    displayProduct(productSku: string, application: IApplication, animateToProduct?: boolean): Promise<void>;
    displayScene(sceneId: string): Promise<void>;
    private getCurrentExperienceId;
    private getCurrentZoneIndex;
    private initCatalog;
    private initScene;
    private unRegisterEvents;
    private registerEvents;
    private navigate;
    private loadProps;
    emit(eventName: EventSystemEventSignature, ...args: EventSystemEventDataSignature): boolean;
}
export {};
