import type { UmbBlockGridLayoutModel, UmbBlockGridTypeAreaType, UmbBlockGridTypeModel, UmbBlockGridValueModel } from '../../types.js';
import { UMB_BLOCK_GRID_MANAGER_CONTEXT } from '../../block-grid-manager/constants.js';
import { type UmbBlockGridWorkspaceOriginData } from '../../workspace/index.js';
import type { UmbBlockGridScalableContainerContext } from '../../context/block-grid-scale-manager/block-grid-scale-manager.controller.js';
import type { UmbControllerHost } from '../../../../../libs/controller-api/index.js';
import type { UmbNumberRangeValueType } from '../../../../core/models/index.js';
import { UmbBlockEntriesContext, type UmbBlockDataModel } from '../../../block/index.js';
interface UmbBlockGridAreaTypeInvalidRuleType {
    groupKey?: string;
    key?: string;
    name: string;
    amount: number;
    minRequirement: number;
    maxRequirement: number;
}
export declare class UmbBlockGridEntriesContext extends UmbBlockEntriesContext<typeof UMB_BLOCK_GRID_MANAGER_CONTEXT, typeof UMB_BLOCK_GRID_MANAGER_CONTEXT.TYPE, UmbBlockGridTypeModel, UmbBlockGridLayoutModel, UmbBlockGridWorkspaceOriginData> implements UmbBlockGridScalableContainerContext {
    #private;
    readonly layoutColumns: import("rxjs").Observable<number | undefined>;
    areaType: import("rxjs").Observable<UmbBlockGridTypeAreaType | undefined>;
    areaTypeCreateLabel: import("rxjs").Observable<string | undefined>;
    readonly rangeLimits: import("rxjs").Observable<UmbNumberRangeValueType | undefined>;
    readonly allowedBlockTypes: import("rxjs").Observable<UmbBlockGridTypeModel[]>;
    readonly amountOfAllowedBlockTypes: import("rxjs").Observable<number>;
    readonly canCreate: import("rxjs").Observable<boolean>;
    readonly hasTypeLimits: import("rxjs").Observable<boolean | undefined>;
    firstAllowedBlockTypeName(): import("rxjs").Observable<string | undefined>;
    setParentUnique(contentKey: string | null): void;
    getParentUnique(): string | null | undefined;
    setAreaKey(areaKey: string | null): void;
    getAreaKey(): string | null | undefined;
    setLayoutColumns(columns: number | undefined): void;
    getLayoutColumns(): number | undefined;
    getMinAllowed(): number;
    getMaxAllowed(): number;
    getLayoutContainerElement(): HTMLElement | undefined;
    constructor(host: UmbControllerHost);
    protected _gotBlockManager(): void;
    getPathForCreateBlock(index: number): string | undefined;
    getPathForClipboard(index: number): string | undefined;
    isBlockTypeAllowed(contentTypeKey: string): import("rxjs").Observable<boolean>;
    create(contentElementTypeKey: string, partialLayoutEntry?: Omit<UmbBlockGridLayoutModel, 'contentKey'>, originData?: UmbBlockGridWorkspaceOriginData): Promise<{
        layout: UmbBlockGridLayoutModel;
        content: {
            key: string;
            contentTypeKey: string;
            values: import("../../../../content/content/index.js").UmbElementValueModel<unknown>[];
        };
        settings: UmbBlockDataModel | undefined;
    } | undefined>;
    insert(layoutEntry: UmbBlockGridLayoutModel, content: UmbBlockDataModel, settings: UmbBlockDataModel | undefined, originData: UmbBlockGridWorkspaceOriginData): Promise<boolean>;
    delete(contentKey: string): Promise<void>;
    protected _insertFromPropertyValue(value: UmbBlockGridValueModel, originData: UmbBlockGridWorkspaceOriginData): Promise<UmbBlockGridWorkspaceOriginData>;
    protected _insertBlockFromPropertyValue(layoutEntry: UmbBlockGridLayoutModel, value: UmbBlockGridValueModel, originData: UmbBlockGridWorkspaceOriginData): Promise<void>;
    getInvalidBlockTypeLimits(): UmbBlockGridAreaTypeInvalidRuleType[];
    /**
     * @internal
     * @returns {boolean} - True if the block type limits are valid, otherwise false.
     */
    checkBlockTypeLimitsValidity(): boolean;
    getInvalidBlockTypeConfigurations(): string[];
    /**
     * @internal
     * @returns {boolean} - True if the block type limits are valid, otherwise false.
     */
    checkBlockTypeConfigurationValidity(): boolean;
    /**
     * Check if given contentKey is allowed in the current area.
     * @param {string} contentKey - The contentKey of the content to check.
     * @returns {boolean} - True if the content is allowed in the current area, otherwise false.
     */
    allowDrop(contentKey: string): boolean;
    onDragStart(): void;
    onDragEnd(): void;
}
export {};
