import type { IArcGISContext } from "../types/IArcGISContext";
import { IEditorConfig } from "../core/schemas/types";
import { IWithEditorBehavior } from "../core/behaviors/IWithEditorBehavior";
import { UserEditorType } from "./_internal/userEditorTypes";
import { IEntityEditorContext } from "../core/types/HubEntityEditor";
import { IHubUser } from "../core/types/IHubUser";
export declare class HubUser implements IWithEditorBehavior {
    protected context: IArcGISContext;
    protected entity: IHubUser;
    protected isDestroyed: boolean;
    private constructor();
    /**
     * Create an instance from a IHubUser object
     * @param json - JSON object to create a HubProject from
     * @param context - ArcGIS context
     * @returns HubUser
     */
    static fromJson(json: Partial<IHubUser>, context: IArcGISContext): HubUser;
    /**
     * Given a partial user object, apply defaults to it to ensure that a baseline of properties are set
     * @param partialUser
     * @returns IHubUser
     */
    private static applyDefaults;
    /**
     * Method that returns the entity as a JSON object
     * We have this on the EntityItem class, but we don't implement that here
     * @returns IHubUser
     */
    toJson(): IHubUser;
    /**
     * Save the HubUser to the backing store.
     *
     * Note that Hub does not currently support the creation of users,
     * so this function should only be used for updating users.
     *
     * @returns
     */
    save(): Promise<void>;
    /**
     * Delete the HubUser from the store
     * set a flag to indicate that it is destroyed
     *
     * Note that Hub does not currently support the deletion of users,
     * so this function should not be used as of now.
     * @returns
     */
    delete(): Promise<void>;
    /**
     * Get the editor config for the HubUser entity.
     * @param i18nScope translation scope to be interpolated into the uiSchema
     * @param type editor type - corresponds to the returned uiSchema
     */
    getEditorConfig(i18nScope: string, type: UserEditorType): Promise<IEditorConfig>;
    /**
     * Transforms entity values into editor values
     * @param editorContext
     * @param include
     */
    toEditor(_editorContext?: IEntityEditorContext, include?: string[]): Promise<IHubUser>;
    /**
     * Transforms editor values into entity values
     * @param editor
     */
    fromEditor(editor: IHubUser): Promise<IHubUser>;
}
