import { ProductSchema } from '@byondrnd/showroom-schemas';
import { Visualizer } from '../../../Visualizer';
import { IFavorite, IFavoriteScene, IApplication, IProduct, IFavoriteProductSkuAndApplicationList, IFavoriteProductList, IFavoriteSceneList, IFavoriteOriginalProductsScene } from '../../../EventSystem/EventTypes';
export declare class ProductsManager {
    visualizer: Visualizer;
    displayedProductsMap: Map<string, ProductSchema.IProduct>;
    favoriteProducts: Array<IFavorite>;
    originalFavoriteProducts: Array<ProductSchema.IProduct>;
    externalFavoriteProducts: IFavoriteProductSkuAndApplicationList | undefined;
    favoriteSets: Array<IFavoriteScene>;
    originalFavoriteSets: Array<IFavoriteOriginalProductsScene>;
    private userDisplayedProducts;
    cart: string[];
    constructor(visualizer: Visualizer);
    setFavoriteSets(input: IFavoriteSceneList): void;
    listenOnceForSceneLoaded: () => Promise<void>;
    setFavoriteProducts(input: IFavoriteProductList | IFavoriteProductSkuAndApplicationList): Promise<void>;
    getUserDisplayedProducts(): Record<string, ProductSchema.IProduct>;
    addUserDisplayedProduct(product: ProductSchema.IProduct, application: string): Promise<void>;
    setSceneVisible(): void;
    displayProduct(product: ProductSchema.IProduct, application: string, fromFavorites?: boolean): Promise<void>;
    displayOnMesh(rootModel: THREE.Mesh, product: ProductSchema.IProduct): Promise<void>;
    addProductToCart(sku: string): void;
    removeProductFromCart(sku: string): void;
    getFavoriteProducts(): Array<IFavorite>;
    getOriginalFavoriteProducts(): ProductSchema.IProduct[];
    addProductToFavorites(product: IProduct): IProduct;
    removeProductFromFavorites(productSku: string, application: string): IProduct | undefined;
    getFavoriteSets(): IFavoriteScene[];
    addFavoriteScene(sceneId: string): Promise<IFavoriteScene>;
    removeFavoriteScene(setId: string): IFavoriteScene | undefined;
    getDisplayedProduct(_application: IApplication | string): IProduct | undefined;
    getDisplayedFormatedProduct(): Array<IProduct>;
    getDisplayedProducts(): [string, ProductSchema.IProduct][];
}
