import type { UmbContentTypeModel, UmbPropertyContainerTypes, UmbPropertyTypeContainerMergedModel, UmbPropertyTypeContainerModel } from '../types.js';
import type { UmbContentTypeStructureManager } from './content-type-structure-manager.class.js';
import { UmbControllerBase } from '../../../../libs/class-api/index.js';
import type { UmbControllerHost } from '../../../../libs/controller-api/index.js';
/**
 * This class is a helper class for managing the structure of containers in a content type.
 * This requires a structure manager {@link UmbContentTypeStructureManager} to manage the structure.
 */
export declare class UmbContentTypeContainerStructureHelper<T extends UmbContentTypeModel> extends UmbControllerBase {
    #private;
    get containers(): import("rxjs").Observable<UmbPropertyTypeContainerModel[]>;
    get mergedContainers(): import("rxjs").Observable<UmbPropertyTypeContainerModel[]>;
    readonly childContainers: import("rxjs").Observable<UmbPropertyTypeContainerMergedModel[]>;
    readonly hasProperties: import("rxjs").Observable<boolean>;
    constructor(host: UmbControllerHost);
    setStructureManager(structure: UmbContentTypeStructureManager<T> | undefined): void;
    getStructureManager(): UmbContentTypeStructureManager<T> | undefined;
    setIsRoot(value: boolean): void;
    getIsRoot(): boolean;
    setContainerId(value: string | null | undefined): void;
    getContainerId(): string | null | undefined;
    setContainerChildType(value?: UmbPropertyContainerTypes): void;
    getContainerChildType(): UmbPropertyContainerTypes | undefined;
    /**
     * Returns true if the container is an owner container.
     * @param containerId
     */
    isOwnerChildContainer(containerId?: string): boolean | undefined;
    getContentTypeOfContainer(containerId?: string): T | undefined;
    containersByNameAndType(name: string, type: UmbPropertyContainerTypes): import("rxjs").Observable<UmbPropertyTypeContainerModel[]>;
    /** Manipulate methods: */
    addContainer(parentContainerId?: string | null, sortOrder?: number): Promise<void>;
    removeContainer(groupId: string): Promise<boolean>;
    partialUpdateContainer(containerId: string, partialUpdate: Partial<UmbPropertyTypeContainerModel>): Promise<void>;
}
