import { CollectionSchema, ProductSchema } from '@byondrnd/showroom-schemas';
import { IApplication, IConfigurationFilter, 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;
        filters?: {
            [application: string]: IConfigurationFilter[];
        };
    }>;
    sceneFilters?: Record<string, Record<string, IConfigurationFilter[] | undefined> | undefined>;
    products?: ProductSchema.IProduct[];
    showroomClient?: ApolloClient<NormalizedCacheObject>;
    constructor(visualizer: Visualizer);
    init(sceneId: string): Promise<any>;
    getProduct(productSku: string, application: string): ProductSchema.IProduct;
    getAllFormatedProducts(): IProduct[];
    getProductList(sceneId: string): IProduct[];
    getProductListByApplication(application: IApplication): IProduct[];
    getProductsMathchingCustomFields(products: ProductSchema.IProduct[], filters?: Array<IConfigurationFilter>): ProductSchema.IProduct[];
    getProductsFromDate(products: ProductSchema.IProduct[], customFieldName: string): ProductSchema.IProduct[];
    getFullProductDetails(productId: string): Promise<any>;
    getCatalogsApplications(): IApplication[];
    getApplication(application: string): IApplication;
    getApplicationAsset(application: string): ProductSchema.IProduct;
    getApplicationPreviewImage(application: string): string;
    getApplicationConfiguration(application: string): IApplication;
    getApplicationRenderOrder(application: string): number;
    getFilters(sceneId: string): IConfigurationFilter[];
    loadCatalogs(): Promise<CollectionSchema.ICatalog>;
    loadCatalogCollections(): Promise<CollectionSchema.ICollection[]>;
    loadCatalogsCollections(): Promise<void>;
    private updateFilters;
}
