import { Article, IPlacement, Session } from "@intelligentgraphics/igd.productdata";
import { IGXE } from "@intelligentgraphics/igd.core";
import { IGXM } from "@intelligentgraphics/ig.gfx.core";
import { GhostInsertMode } from "@intelligentgraphics/ig.gfx.planning";
import { PlannerManager } from "./Manager";
interface ArticleActions {
    comId: string;
    actionRules: IGXM.IActionRule[];
    snapTo: string;
}
export interface GhostModeManagerOptions {
    applySnapToConfiguration?: boolean;
}
export declare class GhostModeManager {
    protected readonly session: Session;
    protected targets: Map<string, Article>;
    protected ghostInsertModeInstance?: GhostInsertMode;
    protected componentConfiguration?: object;
    protected templateArticle?: Article;
    protected templateCatalogItemId?: string;
    protected articleActions: Map<string, ArticleActions>;
    protected readonly options: Required<GhostModeManagerOptions>;
    constructor(session: Session, plannerManager: PlannerManager, options?: GhostModeManagerOptions);
    getTemplateArticleInstance(): Article | undefined;
    stop(): void;
    protected createArticle(source: string, articleId: string, initialConfiguration: IGXE.IArticleConfiguration | undefined, initialPlacement: IPlacement): Promise<string>;
    protected removeArticle(comId: string): Promise<void>;
    protected onGhostModeStart(): void;
    protected onGhostModeEnd(): void;
    private executeArticleActions;
    private onPrepareForUpdate;
    private onUpdateDone;
    private triggerGhostMode;
    /**
     * Creates a createCopy method for the ghost mode based on an article catalog item
     *
     * @private
     */
    private createArticleCopyFactory;
    /**
     * Called after a ghost mode has been stopped
     *
     * @private
     */
    private cleanupGhostMode;
}
export {};
