import { CollectionSchema, ProductSchema } from '@byondrnd/showroom-schemas';
import { IApplication, IConfigurationFilter, IFavorite, IFavoriteProductSkuAndApplicationList, IProduct } from '../EventSystem/EventTypes';
import { Visualizer } from '../..';
import { ApolloClient, FetchPolicy } from '@apollo/client/core';
import { NormalizedCacheObject } from 'apollo-cache-inmemory';
export interface CatalogInfo {
    organization: string;
    catalog: string;
}
export declare class CatalogManager {
    catalog?: CollectionSchema.ICatalog;
    visualizer: Visualizer;
    catalogInfo?: CatalogInfo;
    selectionState: Map<string, {
        application?: IApplication | undefined;
        searchFilters?: {
            [application: string]: string;
        } | undefined;
        filters?: {
            [application: string]: IConfigurationFilter[];
        } | undefined;
    }>;
    sceneFilters?: Record<string, Record<string, IConfigurationFilter[] | undefined> | undefined>;
    private products?;
    productsList: string[] | undefined;
    showroomClient?: ApolloClient<NormalizedCacheObject>;
    initialized: boolean;
    constructor(visualizer: Visualizer);
    init(sceneId: string): Promise<undefined>;
    setProductsList(skus: string[] | undefined): void;
    getProducts(): ProductSchema.IProduct[] | undefined;
    getProduct(productSku: string, application: string): ProductSchema.IProduct | undefined;
    getAllFormatedProducts(): IProduct[] | undefined;
    getProductList(sceneId: string): IProduct[] | undefined;
    getProductListByProductFavorites(p: IFavoriteProductSkuAndApplicationList): IFavorite[] | undefined;
    getProductsMathchingCustomFields(products: ProductSchema.IProduct[], filters?: Array<IConfigurationFilter>, searchString?: string, fieldsIncludedByConfig?: 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>;
    getApplicationsForProduct(sku: string): string[];
    getOriginalProductListForApplication(application: string): ProductSchema.IProduct[] | undefined;
    getProductListByApplication(application: IApplication): IProduct[] | undefined;
    getFilters(sceneId: string): Array<IConfigurationFilter>;
    loadCatalogs(): Promise<any>;
    loadProductPage({ fetchPolicy, page, perPage, }: {
        fetchPolicy?: FetchPolicy;
        page: number;
        perPage: number;
    }): Promise<CollectionSchema.ICollection[]>;
    loadAssetsCollectionId(): Promise<CollectionSchema.ICollection[]>;
    private updateFilters;
}
