import { IGXM } from "@intelligentgraphics/ig.gfx.core";
import { Package } from "@intelligentgraphics/ig.gfx.multiarticle";
import { IGXR, IGXA } from "@intelligentgraphics/igd.core";
import { ArticleNumber } from "./ArticleNumber";
import { ICatalogManager } from "./CatalogManager";
import { IProductDataManager } from "./ProductDataManager";
import { IConfigurationService } from "./ConfigurationService";
import { ConnectionManager } from "./ConnectionManager";
import { LocalizationManager } from "./LocalizationManager";
export declare type InitializeManagerData = {
    dispatcherId: string;
    catalog: Pick<IGXR.ICatalog, "Settings" | "Server">;
    fetchData<T extends {}>(url: string): Promise<T>;
};
export declare type InitializeManagerResult = {
    configurationService?: IConfigurationService;
    productManager?: IProductDataManager;
    catalogManager?: ICatalogManager;
    multiArticles?: IGXM.IData | Package;
};
export declare abstract class Backend {
    createArticleNumber(item: IGXA.IArticleItem | IGXA.ISetItem | IGXA.IHeadDataItem | IGXA.IImpressionItem): ArticleNumber;
    /**
     * Create instances of backend specific catalog- and productdatamanagers.
     *
     * @abstract
     * @param {InitializeManagerData} params
     * @param {Session} session
     * @returns {Promise<InitializeManagerResult>}
     */
    abstract initializeManagers(params: InitializeManagerData, connectionManager: ConnectionManager, localizationManager: LocalizationManager): Promise<InitializeManagerResult>;
    /**
     * Read dynamic catalogs.
     * Only implemented for XcRBackend
     *
     * @param {string} serverId
     * @param {IGXR.IGXR_Object} igxr
     * @returns {Promise<boolean>}
     * @memberof Backend
     */
    readDynamicCatalogs(_serverId: string, _igxr: IGXR.IGXR_Object): Promise<boolean>;
}
