import type { UmbWorkspaceDataManager } from '../data-manager/workspace-data-manager.interface.js';
import { UmbObjectState, type MappingFunction } from '../../../../libs/observable-api/index.js';
import { UmbControllerBase } from '../../../../libs/class-api/index.js';
/**
 * Manages the workspace data for an entity.
 * @class UmbEntityWorkspaceDataManager
 * @augments {UmbControllerBase}
 * @implements {UmbWorkspaceDataManager<ModelType>}
 * @template ModelType
 */
export declare class UmbEntityWorkspaceDataManager<ModelType> extends UmbControllerBase implements UmbWorkspaceDataManager<ModelType> {
    protected readonly _persisted: UmbObjectState<ModelType | undefined>;
    protected readonly _current: UmbObjectState<ModelType | undefined>;
    /**
     * Observable of the persisted data
     * @memberof UmbEntityWorkspaceDataManager
     */
    readonly persisted: import("rxjs").Observable<ModelType | undefined>;
    /**
     * Observable of the current data
     * @memberof UmbEntityWorkspaceDataManager
     */
    readonly current: import("rxjs").Observable<ModelType | undefined>;
    protected _sortCurrentData<GivenType extends Partial<ModelType> = Partial<ModelType>>(persistedData: Partial<ModelType>, currentData: GivenType): GivenType;
    /**
     * Gets persisted data
     * @returns {(ModelType | undefined)}
     * @memberof UmbSubmittableWorkspaceDataManager
     */
    getPersisted(): ModelType | undefined;
    /**
     * Sets the persisted data
     * @param {(ModelType | undefined)} data
     * @memberof UmbSubmittableWorkspaceDataManager
     */
    setPersisted(data: ModelType | undefined): void;
    /**
     * Updates the persisted data
     * @param {Partial<ModelType>} partialData
     * @memberof UmbSubmittableWorkspaceDataManager
     */
    updatePersisted(partialData: Partial<ModelType>): void;
    /**
     * Creates an observable part of the persisted data
     * @template ReturnType
     * @param {(MappingFunction<ModelType | undefined, ReturnType>)} mappingFunction
     * @returns {*}
     * @memberof UmbEntityWorkspaceDataManager
     */
    createObservablePartOfPersisted<ReturnType>(mappingFunction: MappingFunction<ModelType | undefined, ReturnType>): import("rxjs").Observable<ReturnType>;
    /**
     * Gets the current data
     * @returns {(ModelType | undefined)}
     * @memberof UmbSubmittableWorkspaceDataManager
     */
    getCurrent(): ModelType | undefined;
    /**
     * Sets the current data
     * @param {(ModelType | undefined)} data
     * @memberof UmbSubmittableWorkspaceDataManager
     */
    setCurrent(data: ModelType | undefined): void;
    /**
     * Updates the current data
     * @param {Partial<ModelType>} partialData
     * @memberof UmbSubmittableWorkspaceDataManager
     */
    updateCurrent(partialData: Partial<ModelType>): void;
    /**
     * Creates an observable part of the current data
     * @template ReturnType
     * @param {(MappingFunction<ModelType | undefined, ReturnType>)} mappingFunction
     * @returns {*}
     * @memberof UmbEntityWorkspaceDataManager
     */
    createObservablePartOfCurrent<ReturnType>(mappingFunction: MappingFunction<ModelType | undefined, ReturnType>): import("rxjs").Observable<ReturnType>;
    /**
     * Checks if there are unpersisted changes
     * @returns {*}
     * @memberof UmbSubmittableWorkspaceDataManager
     */
    getHasUnpersistedChanges(): boolean;
    /**
     * Resets the current data to the persisted data
     * @memberof UmbSubmittableWorkspaceDataManager
     */
    resetCurrent(): void;
    /**
     * Clears the data
     * @memberof UmbSubmittableWorkspaceDataManager
     */
    clear(): void;
    destroy(): void;
}
