import { CollectionSchema, ProductSchema } from '@byondrnd/showroom-schemas';
import { IApplication, IConfigurationFilter, IFavorite, IFavoriteProductSkuAndApplicationList, IProduct } from '../EventSystem/EventTypes';
import { Visualizer } from '../..';
import ApolloClient from 'apollo-client';
import { NormalizedCacheObject } from 'apollo-cache-inmemory';
export interface CatalogInfo {
    organization: string;
    catalog: string;
}
export declare class CatalogManager {
    catalog?: CollectionSchema.ICatalog;
    collections?: Array<CollectionSchema.ICollection>;
    assetsCollection?: CollectionSchema.ICollection;
    visualizer: Visualizer;
    catalogInfo?: CatalogInfo;
    selectionState: Map<string, {
        application?: IApplication | undefined;
        searchFilters?: {
            [application: string]: string;
        } | undefined;
        filters?: {
            [application: string]: {
                customFieldName?: string | undefined;
                operator?: "not" | undefined;
                options: string[] | null;
                name: string;
            }[];
        } | undefined;
    }>;
    sceneFilters?: Record<string, Record<string, IConfigurationFilter[] | undefined> | undefined>;
    private products?;
    productsList: string[];
    showroomClient?: ApolloClient<NormalizedCacheObject>;
    constructor(visualizer: Visualizer);
    init(sceneId: string): Promise<undefined>;
    setProductsList(skus: string[]): void;
    getProducts(): ProductSchema.IProduct[] | undefined;
    getProduct(productSku: string, application: string): ProductSchema.IProduct | undefined;
    getAllFormatedProducts(): {
        name?: string | undefined;
        description?: string | undefined;
        price?: string | undefined;
        facets?: {
            options: string[] | null;
            name: string;
        }[] | undefined;
        sku: string;
        title: string;
        application: string;
        image: string;
        _id: string;
    }[] | undefined;
    getProductList(sceneId: string): {
        name?: string | undefined;
        description?: string | undefined;
        price?: string | undefined;
        facets?: {
            options: string[] | null;
            name: string;
        }[] | undefined;
        sku: string;
        title: string;
        application: string;
        image: string;
        _id: string;
    }[] | undefined;
    getProductListByApplication(application: IApplication): IProduct[] | undefined;
    getProductListByProductFavorites(p: IFavoriteProductSkuAndApplicationList): IFavorite[];
    getProductsMathchingCustomFields(products: ProductSchema.IProduct[], filters?: Array<IConfigurationFilter>, searchString?: string): ProductSchema.IProduct[];
    getProductsMathchingSearch(products: ProductSchema.IProduct[], searchString: string): ProductSchema.IProduct[];
    getProductsFromDate(products: ProductSchema.IProduct[], customFieldName: string | undefined): ProductSchema.IProduct[];
    getFullProductDetails(productId: string): Promise<any>;
    getCatalogsApplications(): IApplication[];
    getApplication(application: string): IApplication | undefined;
    getApplicationAsset(application: string): ProductSchema.IProduct | undefined;
    getApplicationPreviewImage(application: string): string;
    getApplicationConfiguration(application: string): IApplication;
    getApplicationRenderOrder(application: string): number;
    getFilters(sceneId: string): Array<IConfigurationFilter>;
    loadCatalogs(): Promise<CollectionSchema.ICatalog | undefined>;
    loadCatalogCollections(): Promise<CollectionSchema.ICollection[]>;
    loadCatalogsCollections(): Promise<void>;
    private updateFilters;
}
