import { AsyncHook, SyncHook } from "@intelligentgraphics/ig.utilities";
import { TOperationResult } from "./OperationResults";
import { Article } from "./Article";
import { RegisterArticleData, UpdateArticleData } from "./ArticleRegistry";
export interface Hooks {
    beforeSave: AsyncHook<[]>;
    /**
     * Executes before operation results are applied to the state
     *
     * @type {AsyncHook<[TOperationResult[]]>}
     */
    beforeOperationResultProcessing: AsyncHook<[TOperationResult[]]>;
    /**
     * Executes after operation results have been applied to the state
     *
     * @type {AsyncHook<[TOperationResult[]]>}
     */
    afterOperationResultProcessing: AsyncHook<[TOperationResult[]]>;
    beforeArticleRegistration: SyncHook<[RegisterArticleData]>;
    afterArticleRegistration: SyncHook<[Article]>;
    beforeArticleUpdate: SyncHook<[Article, UpdateArticleData]>;
    afterArticleUpdate: SyncHook<[Article, UpdateArticleData]>;
    beforeArticleUnregistration: SyncHook<[Article]>;
    afterArticleUnregistration: SyncHook<[Article]>;
    /**
     * Called before destruction of session
     *
     * @type {AsyncHook<[]>}
     */
    beforeDestroy: AsyncHook<[]>;
}
