import type { UmbBlockManagerContext, UmbBlockWorkspaceOriginData } from '../index.js';
import type { UmbBlockLayoutBaseModel, UmbBlockDataModel, UmbBlockDataType, UmbBlockExposeModel, UmbBlockDataValueModel } from '../types.js';
import type { UmbBlockEntriesContext } from './block-entries.context.js';
import { UmbContextBase } from '../../../../libs/class-api/index.js';
import { UmbObjectState } from '../../../../libs/observable-api/index.js';
import { UmbReadOnlyVariantGuardManager } from '../../../core/utils/index.js';
import { UmbVariantId } from '../../../core/variant/index.js';
import type { Observable } from '../../../../external/rxjs/index.js';
import type { UmbBlockTypeBaseModel } from '../../block-type/index.js';
import type { UmbContextToken } from '../../../../libs/context-api/index.js';
import type { UmbContentTypeModel, UmbContentTypeStructureManager } from '../../../content/content-type/index.js';
import type { UmbControllerHost } from '../../../../libs/controller-api/index.js';
export declare abstract class UmbBlockEntryContext<BlockManagerContextTokenType extends UmbContextToken<BlockManagerContextType>, BlockManagerContextType extends UmbBlockManagerContext<BlockType, BlockLayoutType>, BlockEntriesContextTokenType extends UmbContextToken<BlockEntriesContextType>, BlockEntriesContextType extends UmbBlockEntriesContext<BlockManagerContextTokenType, BlockManagerContextType, BlockType, BlockLayoutType, BlockOriginData>, BlockType extends UmbBlockTypeBaseModel = UmbBlockTypeBaseModel, BlockLayoutType extends UmbBlockLayoutBaseModel = UmbBlockLayoutBaseModel, BlockOriginData extends UmbBlockWorkspaceOriginData = UmbBlockWorkspaceOriginData> extends UmbContextBase {
    #private;
    protected _manager?: BlockManagerContextType;
    protected _entries?: BlockEntriesContextType;
    readonly unsupported: Observable<boolean | undefined>;
    protected readonly _variantId: Observable<UmbVariantId | undefined>;
    readonly hasExpose: Observable<boolean | undefined>;
    readonly actionsVisibility: Observable<boolean>;
    hideActions(): void;
    showActions(): void;
    readonly readOnlyGuard: UmbReadOnlyVariantGuardManager;
    getEntityType(): string;
    getUnique(): string | undefined;
    readonly index: Observable<number | undefined>;
    getIndex(): number | undefined;
    setIndex(index: number | undefined): void;
    readonly createBeforePath: Observable<string | undefined>;
    readonly createAfterPath: Observable<string | undefined>;
    readonly contentElementTypeName: Observable<string | undefined>;
    readonly contentElementTypeAlias: Observable<string | undefined>;
    readonly contentElementTypeIcon: Observable<string | undefined>;
    /**
     * Get the name of the content element type.
     * @returns {string | undefined} - the name of the content element type.
     */
    getContentElementTypeName(): string | undefined;
    /**
     * Get the alias of the content element type.
     * @returns {string | undefined} - the alias of the content element type.
     */
    getContentElementTypeAlias(): string | undefined;
    /**
     * Get the icon of the content element type.
     * @returns {string | undefined} - the icon of the content element type.
     */
    getContentElementTypeIcon(): string | undefined;
    protected _blockType: UmbObjectState<BlockType | undefined>;
    readonly blockType: Observable<BlockType | undefined>;
    readonly contentElementTypeKey: Observable<string | undefined>;
    readonly settingsElementTypeKey: Observable<string | null | undefined>;
    protected _layout: UmbObjectState<BlockLayoutType | undefined>;
    readonly layout: Observable<BlockLayoutType | undefined>;
    readonly contentKey: Observable<string | undefined>;
    readonly settingsKey: Observable<string | null | undefined>;
    readonly unique: Observable<string | undefined>;
    /**
     * Get the layout of the block.
     * @returns {BlockLayoutType | undefined} - the layout of the block.
     */
    getLayout(): BlockLayoutType | undefined;
    readonly label: Observable<string>;
    getLabel(): string;
    readonly workspacePath: Observable<string | undefined>;
    readonly workspaceEditContentPath: Observable<string>;
    readonly workspaceEditSettingsPath: Observable<string>;
    protected _contentStructureHasProperties: Observable<boolean | undefined>;
    propertyVariantId(structure: UmbContentTypeStructureManager, propertyAlias: string): Promise<Observable<UmbVariantId | undefined>>;
    setContentPropertyValue(propertyAlias: string, value: unknown): void;
    setSettingsPropertyValue(propertyAlias: string, value: unknown): void;
    contentPropertyValueByAlias<PropertyValueType = unknown>(propertyAlias: string): Promise<Observable<PropertyValueType | undefined>>;
    settingsPropertyValueByAlias<PropertyValueType = unknown>(propertyAlias: string): Promise<Observable<PropertyValueType | undefined>>;
    protected readonly _contentValueArray: Observable<UmbBlockDataValueModel<unknown>[] | undefined>;
    readonly contentTypeKey: Observable<string | undefined>;
    contentValues(): Promise<Observable<UmbBlockDataType | undefined>>;
    /**
     * Get the content of the block.
     * @returns {UmbBlockDataModel | undefined} - the content of the block.
     */
    getContent(): UmbBlockDataModel | undefined;
    protected readonly _settingsValueArray: Observable<UmbBlockDataValueModel<unknown>[] | undefined>;
    private readonly _settingsDataContentTypeKey;
    /**
     * @deprecated Use {@link _settingsDataContentTypeKey} instead. This will be removed in Umbraco 18.
     */
    private readonly settingsDataContentTypeKey;
    settingsValues(): Promise<Observable<UmbBlockDataType | undefined>>;
    /**
     * Get the settings of the block.
     * @returns {UmbBlockDataModel | undefined} - the settings of the block.
     */
    getSettings(): UmbBlockDataModel | undefined;
    abstract readonly showContentEdit: Observable<boolean>;
    constructor(host: UmbControllerHost, blockManagerContextToken: BlockManagerContextTokenType, blockEntriesContextToken: BlockEntriesContextTokenType);
    getContentKey(): string | undefined;
    /**
     * Set the contentKey of this entry.
     * @function setContentKey
     * @param {string} contentKey the entry content key.
     * @returns {void}
     */
    setContentKey(contentKey: string): void;
    /**
     * Get the current value of this Blocks label.
     * @function getName
     * @returns {string} - the value of the label.
     */
    getName(): string;
    protected abstract _gotManager(): void;
    protected abstract _gotEntries(): void;
    protected abstract _gotContentType(contentType: UmbContentTypeModel | undefined): void;
    edit(): void;
    editSettings(): void;
    requestDelete(): Promise<void>;
    delete(): void;
    expose(): void;
    /**
     * Get the expose of the block.
     * @returns {UmbBlockExposeModel | undefined} - the expose of the block.
     */
    getExpose(): UmbBlockExposeModel | undefined;
}
