import { IGXE, IGXA } from "@intelligentgraphics/igd.core";
import * as MultiArticle from "@intelligentgraphics/ig.gfx.multiarticle";
import { IPlacement, ArticleData, ArticleNumber, ICatalogManager, IProductDataManager, ConnectionManager, BackendManager } from "../Types";
import { IQueryableArticleState } from "./ArticleState";
export interface IArticle {
    gfxId?: string;
    comId: string;
}
export declare type ArticleOrComId = IArticle | string;
interface IDispatcher {
    articleState: IQueryableArticleState;
    backendManager: BackendManager;
    notificationID: string;
    connectionManager: Pick<ConnectionManager, "registerConnection" | "ensureConnection" | "getConnection" | "getConnectionIds">;
    registerConnection: ConnectionManager["registerConnection"];
    ensureConnection: ConnectionManager["ensureConnection"];
    getConnection: ConnectionManager["getConnection"];
    getConnectionIds: ConnectionManager["getConnectionIds"];
    getCatalogManagerByRegId(regId: string): ICatalogManager | undefined;
    getProductDataManagerByRegId(regId: string): IProductDataManager | undefined;
    getMultiArticleByRegId(regId: string): MultiArticle.Package | undefined;
    registerCatalogManager(managerId: string, manager: ICatalogManager, serverType: string): void;
    getCatalogManager(comId: string): ICatalogManager | undefined;
    registerProductDataManager(managerId: string, manager: IProductDataManager, serverType: string): void;
    getProductDataManager(comId: string): IProductDataManager | undefined;
    registerMultiArticles(packageId: string, maPackage: MultiArticle.Package): void;
    getMultiArticles(comId: string): MultiArticle.Package | undefined;
    setGfxId(comId: string, gfxId: string | undefined): void;
    getGfxId(comId: string): string;
    addArticleFromCatalogItem(managerId: string, catalogItem: IGXA.IArticleItem | IGXA.IImpressionItem | IGXA.ISetItem | IGXA.IHeadDataItem, initialConfiguration?: IGXE.IArticleConfiguration | string, initialPlacement?: IPlacement, data?: ArticleData): Promise<IArticle>;
    addArticle(managerId: string, articleNo: ArticleNumber, initialConfiguration?: IGXE.IArticleConfiguration | string, initialPlacement?: IPlacement, data?: ArticleData): Promise<IArticle>;
    getArticlePlacement(input: ArticleOrComId): IPlacement | undefined;
    setArticlePlacement(comId: string, placement: IPlacement): void;
    changeProperty(articles: ArticleOrComId[], propertyKey: string, newValue: IGXE.TPropertyValue): Promise<void>;
    changeProperties(input: ArticleOrComId[], propertyPairs: Record<string, IGXE.TPropertyValue>): Promise<void>;
    removeArticles(input?: ArticleOrComId[]): Promise<void>;
}
export declare const Dispatcher: IDispatcher;
export {};
