import { Omit } from "@intelligentgraphics/ig.utilities";
import { Article } from "./Article";
export declare type RegisterArticleData = Article;
export declare type UpdateArticleData = Partial<Omit<Article, "data" | "comId" | "type" | "source">>;
/**
 * Registers, updates and unregisters articles in the internal services
 *
 * @export
 * @interface ArticleRegistry
 */
export interface ArticleRegistry {
    /**
     * Batches article state changes that are triggered within the callback
     *
     * @param {() => void} cb
     */
    executeBatch?(cb: () => void): void;
    /**
     * Registers an article inside the article state and creates mappings for comId -> sourceId
     *
     * @param {RegisterArticleData} data
     */
    registerArticle(data: RegisterArticleData): void;
    /**
     * Updates an article inside the article state
     *
     * @param {string} comId
     * @param {UpdateArticleData} data
     * @returns {boolean}
     */
    updateArticle(comId: string, data: UpdateArticleData): boolean;
    /**
     * Unregisters an article from the article state
     *
     * @param {string} comId
     */
    unregisterArticle(comId: string): void;
}
