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, IFilter, IProduct, IScene, IApplication, IFacet, VisualizerElement, IFieldsMap } from './EventSystem/EventTypes';
import { SceneMetadataManager } from './Managers/SceneMetadataManager/SceneMetadataManager';
export declare class Visualizer extends TypedEmitter<IEventSystem> implements IVisualizer {
    appManager: AppManager;
    sceneSelector: string;
    mainContainerElement: VisualizerElement;
    sceneId: string;
    fieldsMap: IFieldsMap;
    catalogManager: CatalogManager;
    productsManager: ProductsManager;
    sceneMetadataManager: SceneMetadataManager;
    debug: boolean;
    pubs: Utils.RxUtils.Subscription[];
    initAndLoaded: boolean;
    showroomClient: ApolloClient<NormalizedCacheObject>;
    defaultProducts: {
        [application: string]: string;
    };
    defaultProduct: string;
    constructor(containerSelector: string, sceneSelector: string);
    initAndLoad(): Promise<void>;
    setScene(sceneId: string, preventDefaultProducts?: boolean, preventEvent?: boolean): Promise<void>;
    private initialProductDisplay;
    GetCurrentApplication(): IApplication;
    SetCurrentApplication(application: IApplication): IApplication;
    GetFilters(): IFilter[];
    GetCurrentFilters(): IFacet[];
    SetFilter(filters: IFacet[]): IFacet[];
    GetSceneFilters(): IFacet[];
    GetSceneCurrentFilters(): IFacet[];
    SetSceneFilter(filters: IFacet[]): IFacet[];
    getDisplayedProduct(application: IApplication): IProduct;
    getDisplayedProducts(): Array<IProduct>;
    GetProductList(): IProduct[];
    GetApplicationsList(): IApplication[];
    addProductToFavorites(productSku: string, application: IApplication): IFavoriteProductList;
    removeProductFromFavorites(productSku: string, application: IApplication): 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;
}
