import type { IArcGISContext } from "../types/IArcGISContext";
import { HubItemEntity } from "../core/HubItemEntity";
import { IEditorConfig } from "../core/schemas/types";
import { IWithEditorBehavior } from "../core/behaviors/IWithEditorBehavior";
import { IHubContentEditor, IHubEditableContent } from "../core/types/IHubEditableContent";
import { IWithStoreBehavior } from "../core/behaviors/IWithStoreBehavior";
import { IEntityEditorContext } from "../core/types/HubEntityEditor";
import { ContentEditorType } from "./_internal/contentEditorTypes";
export declare class HubContent extends HubItemEntity<IHubEditableContent> implements IWithStoreBehavior<IHubEditableContent>, IWithEditorBehavior {
    private constructor();
    /**
     * Create an instance from an IHubEditableContent object
     * @param json - JSON object to create a HubContent from
     * @param context - ArcGIS context
     * @returns
     */
    static fromJson(json: Partial<IHubEditableContent>, context?: IArcGISContext): HubContent;
    /**
     * Save the HubContent to the backing store. Currently Projects are stored as Items in Portal
     * @returns
     */
    save(): Promise<void>;
    /**
     * Apply a new state to the instance
     * @param changes
     */
    update(changes: Partial<IHubEditableContent>): void;
    /**
     * Delete the HubContent from the store
     * set a flag to indicate that it is destroyed
     * @returns
     */
    delete(): Promise<void>;
    getEditorConfig(i18nScope: string, type: ContentEditorType): Promise<IEditorConfig>;
    /**
     * Return the project as an editor object
     * @param editorContext
     * @returns
     */
    toEditor(_editorContext?: IEntityEditorContext, include?: string[]): Promise<IHubContentEditor>;
    /**
     * Load the project from the editor object
     * @param editor
     * @returns
     */
    fromEditor(editor: IHubContentEditor): Promise<IHubEditableContent>;
    private _checkDestroyed;
}
