import type { IArcGISContext } from "../types/IArcGISContext";
import { HubItemEntity } from "../core/HubItemEntity";
import { IEditorConfig } from "../core/schemas/types";
import { IWithEditorBehavior } from "../core/behaviors/IWithEditorBehavior";
import { PageEditorType } from "./_internal/pageEditorTypes";
import { IWithSharingBehavior } from "../core/behaviors/IWithSharingBehavior";
import { IWithStoreBehavior } from "../core/behaviors/IWithStoreBehavior";
import { IEntityEditorContext } from "../core/types/HubEntityEditor";
import { IHubPage, IHubPageEditor } from "../core/types/IHubPage";
/**
 * Hub Page Class
 * NOTE: This is a minimal implementation.
 */
export declare class HubPage extends HubItemEntity<IHubPage> implements IWithStoreBehavior<IHubPage>, IWithSharingBehavior, IWithEditorBehavior {
    /**
     * Private constructor so we don't have `new` all over the place. Allows for
     * more flexibility in how we create the HubPageManager over time.
     * @param context
     */
    private constructor();
    /**
     * Create an instance from an IHubPage object
     * @param json - JSON object to create a HubPage from
     * @param context - ArcGIS context
     * @returns
     */
    static fromJson(json: Partial<IHubPage>, context: IArcGISContext): HubPage;
    /**
     *
     * Create a new HubPage, returning a HubPage instance.
     * By default, this does not save the page to the backing store.
     * @param partialPage
     * @param context
     * @returns
     */
    static create(partialPage: Partial<IHubPage>, context: IArcGISContext, save?: boolean): Promise<HubPage>;
    /**
     * Fetch a Page from the backing store and return a HubPage instance.
     * @param identifier - Identifier of the page to load
     * @param context
     * @returns
     */
    static fetch(identifier: string, context: IArcGISContext): Promise<HubPage>;
    private static applyDefaults;
    /**
     * Apply a new state to the instance
     * @param changes
     */
    update(changes: Partial<IHubPage>): void;
    /**
     * Save the HubPage to the backing store.
     * Currently Pages are stored as Items in Portal
     * @returns
     */
    save(): Promise<void>;
    /**
     * Delete the HubPage from the store
     * set a flag to indicate that it is destroyed
     * @returns
     */
    delete(): Promise<void>;
    getEditorConfig(i18nScope: string, type: PageEditorType): Promise<IEditorConfig>;
    /**
     * Return the project as an editor object
     * @param editorContext
     * @returns
     */
    toEditor(_editorContext?: IEntityEditorContext, include?: string[]): Promise<IHubPageEditor>;
    /**
     * Load the project from the editor object
     * @param editor
     * @returns
     */
    fromEditor(editor: IHubPageEditor): Promise<IHubPage>;
}
