import { IGXE } from "@intelligentgraphics/igd.core";
import { Omit } from "@intelligentgraphics/ig.utilities";
import { TOperationResult } from "../OperationResults";
import { CreateArticleFromArticleNumberParams, CloneArticleParams } from "../ArticleManager";
import { Article, ArticleCategories } from "../Article";
import { GfxRepresentationOptions, GfxRepresentationResult } from "../GfxRepresentation";
import { SessionOperator } from "./Session";
export declare type NameOperatorTypeMapping = {
    sessionOperator: SessionOperator;
};
export declare type OperatorName = keyof NameOperatorTypeMapping;
declare type RequiredRestoreProperties = "articleNumber" | "source" | "comId";
export declare type RestoreableArticle = Required<Pick<Article, RequiredRestoreProperties>> & Partial<Omit<Article, RequiredRestoreProperties | "categories">> & {
    categories?: Partial<ArticleCategories>;
};
export interface Operator {
    is<K extends OperatorName>(name: K): this is NameOperatorTypeMapping[K];
    addArticle(params: CreateArticleFromArticleNumberParams): Promise<TOperationResult[]>;
    configureArticles(comIds: string[], changes: IGXE.PropertyValueChanges): Promise<TOperationResult[]>;
    deleteArticle(comId: string): Promise<TOperationResult[]>;
    cloneArticle(params: CloneArticleParams): Promise<TOperationResult[]>;
    restoreArticle(article: RestoreableArticle): Promise<TOperationResult[]>;
    getGfxRepresentation(comId: string, options: GfxRepresentationOptions): Promise<GfxRepresentationResult>;
}
export { SessionOperator };
