import type { UmbDataTypeDetailModel, UmbDataTypePropertyValueModel } from '../types.js';
import type { UmbDataTypeDetailRepository } from '../repository/index.js';
import type { UmbPropertyDatasetContext } from '../../core/property/index.js';
import type { UmbInvariantDatasetWorkspaceContext, UmbRoutableWorkspaceContext } from '../../core/workspace/index.js';
import { UmbEntityNamedDetailWorkspaceContextBase } from '../../core/workspace/index.js';
import type { UmbControllerHost } from '../../../libs/controller-api/index.js';
import type { PropertyEditorSettingsProperty } from '../../core/property-editor/index.js';
type EntityType = UmbDataTypeDetailModel;
/**
 * @class UmbDataTypeWorkspaceContext
 * @description - Context for handling data type workspace
 * There is two overall code flows to be aware about:
 *
 * propertyEditorUiAlias is observed
 * loads propertyEditorUi manifest
 * then the propertyEditorSchemaAlias is set to what the UI is configured for.
 *
 * propertyEditorSchemaAlias is observed
 * loads the propertyEditorSchema manifest
 * if no UI is defined then the propertyEditorSchema manifest default ui is set for the propertyEditorUiAlias.
 *
 * This supports two cases:
 * - when editing an existing data type that only has a schema alias set, then it gets the UI set.
 * - a new property editor ui is picked for a data-type, uses the data-type configuration to set the schema, if such is configured for the Property Editor UI. (The user picks the UI via the UI, the schema comes from the UI that the user picked, we store both on the data-type)
 */
export declare class UmbDataTypeWorkspaceContext extends UmbEntityNamedDetailWorkspaceContextBase<EntityType, UmbDataTypeDetailRepository> implements UmbInvariantDatasetWorkspaceContext, UmbRoutableWorkspaceContext {
    #private;
    readonly propertyEditorUiAlias: import("rxjs").Observable<string | null | undefined>;
    readonly propertyEditorSchemaAlias: import("rxjs").Observable<string | undefined>;
    readonly propertyEditorDataSourceAlias: import("rxjs").Observable<string | null | undefined>;
    readonly values: import("rxjs").Observable<UmbDataTypePropertyValueModel<unknown>[] | undefined>;
    getValues(): Promise<UmbDataTypePropertyValueModel<unknown>[] | undefined>;
    readonly properties: import("rxjs").Observable<PropertyEditorSettingsProperty[]>;
    readonly propertyEditorUiIcon: import("rxjs").Observable<string | null>;
    readonly propertyEditorUiName: import("rxjs").Observable<string | null>;
    constructor(host: UmbControllerHost);
    resetState(): void;
    getPropertyDefaultValue(alias: string): unknown;
    createPropertyDatasetContext(host: UmbControllerHost): UmbPropertyDatasetContext;
    getPropertyEditorSchemaAlias(): string | undefined;
    setPropertyEditorSchemaAlias(alias?: string): void;
    getPropertyEditorUiAlias(): string | null | undefined;
    setPropertyEditorUiAlias(alias?: string): void;
    getPropertyEditorDataSourceAlias(): string | null | undefined;
    setPropertyEditorDataSourceAlias(alias?: string): void;
    /**
     * @function propertyValueByAlias
     * @param {string} propertyAlias
     * @returns {Promise<Observable<ReturnType | undefined> | undefined>}
     * @description Get an Observable for the value of this property.
     */
    propertyValueByAlias<ReturnType = unknown>(propertyAlias: string): Promise<import("rxjs").Observable<ReturnType>>;
    getPropertyValue<ReturnType = unknown>(propertyAlias: string): ReturnType;
    setPropertyValue(alias: string, value: unknown): Promise<void>;
    destroy(): void;
}
export { UmbDataTypeWorkspaceContext as api };
