import { UmbContentTypeStructureManager } from '../structure/index.js';
import type { UmbContentTypeCompositionModel, UmbContentTypeDetailModel, UmbContentTypeSortModel } from '../types.js';
import type { UmbContentTypeWorkspaceContext } from './content-type-workspace-context.interface.js';
import { UmbEntityDetailWorkspaceContextBase } from '../../../core/workspace/index.js';
import type { Observable } from '../../../../libs/observable-api/index.js';
import type { UmbControllerHost } from '../../../../libs/controller-api/index.js';
import type { UmbEntityModel } from '../../../core/entity/index.js';
import type { UmbDetailRepository, UmbRepositoryResponse, UmbRepositoryResponseWithAsObservable } from '../../../core/repository/index.js';
import type { UmbEntityDetailWorkspaceContextArgs, UmbEntityDetailWorkspaceContextCreateArgs, UmbRoutableWorkspaceContext } from '../../../core/workspace/index.js';
import type { UmbReferenceByUnique } from '../../../core/models/index.js';
export interface UmbContentTypeWorkspaceContextArgs extends UmbEntityDetailWorkspaceContextArgs {
}
export declare abstract class UmbContentTypeWorkspaceContextBase<DetailModelType extends UmbContentTypeDetailModel = UmbContentTypeDetailModel, DetailRepositoryType extends UmbDetailRepository<DetailModelType> = UmbDetailRepository<DetailModelType>> extends UmbEntityDetailWorkspaceContextBase<DetailModelType, DetailRepositoryType> implements UmbContentTypeWorkspaceContext<DetailModelType>, UmbRoutableWorkspaceContext {
    #private;
    readonly IS_CONTENT_TYPE_WORKSPACE_CONTEXT = true;
    readonly name: Observable<string | undefined>;
    readonly alias: Observable<string | undefined>;
    readonly description: Observable<string | undefined>;
    readonly icon: Observable<string | undefined>;
    readonly allowedAtRoot: Observable<boolean | undefined>;
    readonly variesByCulture: Observable<boolean | undefined>;
    readonly variesBySegment: Observable<boolean | undefined>;
    readonly isElement: Observable<boolean | undefined>;
    readonly allowedContentTypes: Observable<Array<UmbContentTypeSortModel> | undefined>;
    readonly compositions: Observable<Array<UmbContentTypeCompositionModel> | undefined>;
    readonly collection: Observable<UmbReferenceByUnique | null | undefined>;
    readonly structure: UmbContentTypeStructureManager<DetailModelType>;
    constructor(host: UmbControllerHost, args: UmbContentTypeWorkspaceContextArgs);
    /**
     * Creates a new scaffold
     * @param { UmbEntityDetailWorkspaceContextCreateArgs<DetailModelType> } args The arguments for creating a new scaffold
     * @returns { Promise<DetailModelType | undefined> } The new scaffold
     */
    createScaffold(args: UmbEntityDetailWorkspaceContextCreateArgs<DetailModelType>): Promise<DetailModelType | undefined>;
    /**
     * Loads the data for the workspace
     * @param { string } unique The unique identifier of the data to load
     * @returns { Promise<UmbRepositoryResponse<DetailModelType> | UmbRepositoryResponseWithAsObservable<DetailModelType>> } The loaded data
     */
    load(unique: string): Promise<UmbRepositoryResponse<DetailModelType> | UmbRepositoryResponseWithAsObservable<DetailModelType>>;
    /**
     * Reload the workspace data
     * @returns { Promise<void> } The promise of the reload
     */
    reload(): Promise<void>;
    /**
     * Creates the Content Type
     * @param { DetailModelType } currentData The current data
     * @param { UmbEntityModel } parent The parent entity
     * @memberof UmbContentTypeWorkspaceContextBase
     */
    protected _create(currentData: DetailModelType, parent: UmbEntityModel): Promise<void>;
    /**
     * Updates the content type for the workspace
     * @memberof UmbContentTypeWorkspaceContextBase
     */
    protected _update(): Promise<void>;
    /**
     * Gets the name of the content type
     * @returns { string | undefined } The name of the content type
     */
    getName(): string | undefined;
    /**
     * Sets the name of the content type
     * @param { string } name The name of the content type
     */
    setName(name: string): void;
    /**
     * Gets the alias of the content type
     * @returns { string | undefined } The alias of the content type
     */
    getAlias(): string | undefined;
    /**
     * Sets the alias of the content type
     * @param { string } alias The alias of the content type
     */
    setAlias(alias: string): void;
    /**
     * Gets the description of the content type
     * @returns { string | undefined } The description of the content type
     */
    getDescription(): string | undefined;
    /**
     * Sets the description of the content type
     * @param { string } description The description of the content type
     */
    setDescription(description: string): void;
    /**
     * Gets the compositions of the content type
     * @returns { string | undefined } The icon of the content type
     */
    getCompositions(): Array<UmbContentTypeCompositionModel> | undefined;
    /**
     * Sets the compositions of the content type
     * @param { string } compositions The compositions of the content type
     * @returns { void }
     */
    setCompositions(compositions: Array<UmbContentTypeCompositionModel>): void;
    /**
     * Gets the icon of the content type
     * @returns { string | undefined } The icon of the content type
     */
    getIcon(): string | undefined;
    setIcon(icon: string): void;
    getData(): DetailModelType | undefined;
    destroy(): void;
}
