import { IGXB } from "@intelligentgraphics/igd.core";
import { RestoreableArticle } from "./Operator";
import { CatalogRegistrator } from "./CatalogRegistrator";
import { CreateIGXBOptions } from "../IGXB";
export interface PersistData extends IGXB.IGXB_Object {
    SessionInfo?: ServicePersistData;
}
export interface SaveAsIGXBOptions extends CreateIGXBOptions {
    useServiceFunctions?: boolean;
}
export interface RestoreFromIGXBOptions {
    catalogRegistrator?: CatalogRegistrator;
    /**
     * Should the session be emptied
     *
     * @type {boolean}
     */
    emptySession?: boolean;
}
export declare type ServicePersistData = Record<string, any>;
/**
 * Saves and restores the session state
 *
 * @export
 * @interface ProjectManager
 */
export interface ProjectManager {
    /**
     * Restores all provided articles
     *
     * @param {RestoreableArticle[]} articles
     * @returns {Promise<void>}
     */
    restoreFromArticleList(articles: RestoreableArticle[], catalogRegistrator?: CatalogRegistrator): Promise<void>;
    /**
     * Saves the session state to an article list
     *
     * @returns {Promise<RestoreableArticle[]>}
     */
    saveAsArticleList(): Promise<RestoreableArticle[]>;
    /**
     * Restores all articles inside the igxb
     *
     * @param {PersistData} data
     * @returns {Promise<void>}
     */
    restoreFromIGXB(data: PersistData, options?: RestoreFromIGXBOptions): Promise<void>;
    /**
     * Saves all articles as an igxb
     *
     * @param {SaveAsIGXBOptions} [options]
     * @returns {Promise<PersistData>}
     */
    saveAsIGXB(options?: SaveAsIGXBOptions): Promise<PersistData>;
    /**
     * Restores articles from services
     *
     * @param {ServicePersistData} data
     * @returns {Promise<void>}
     */
    restoreFromServices(data: ServicePersistData, catalogRegistrator?: CatalogRegistrator): Promise<void>;
    /**
     * Saves session to services
     *
     * @returns {Promise<ServicePersistData>}
     */
    saveFromServices(): Promise<ServicePersistData>;
}
