import type { UmbTreeExpansionModel } from './types.js';
import { UmbControllerBase } from '../../../../libs/class-api/index.js';
import type { Observable } from '../../../../libs/observable-api/index.js';
import type { UmbEntityExpansionEntryModel } from '../../utils/index.js';
import type { UmbEntityModel } from '../../entity/index.js';
/**
 * Manages the expansion state of a tree
 * @exports
 * @class UmbTreeExpansionManager
 * @augments {UmbControllerBase}
 */
export declare class UmbTreeExpansionManager extends UmbControllerBase {
    #private;
    expansion: Observable<UmbEntityExpansionEntryModel[]>;
    /**
     * Observe the expansion entry for a specific entity
     * @param {UmbEntityModel} entity - The entity to observe
     * @returns {Observable<UmbEntityExpansionEntryModel | undefined>} - An observable of the expansion entry
     * @memberof UmbTreeExpansionManager
     */
    entry(entity: UmbEntityModel): Observable<UmbEntityExpansionEntryModel | undefined>;
    /**
     * Checks if an entity is expanded
     * @param {UmbEntityModel} entity The entity to check
     * @param {string} entity.entityType The entity type
     * @param {string} entity.unique The unique key
     * @returns {Observable<boolean>} True if the entity is expanded
     * @memberof UmbTreeExpansionManager
     */
    isExpanded(entity: UmbEntityModel): Observable<boolean>;
    /**
     * Sets the expansion state
     * @param {UmbTreeExpansionModel | undefined} expansion The expansion state
     * @memberof UmbTreeExpansionManager
     * @returns {void}
     */
    setExpansion(expansion: UmbTreeExpansionModel): void;
    /**
     * Gets the expansion state
     * @memberof UmbTreeExpansionManager
     * @returns {UmbTreeExpansionModel} The expansion state
     */
    getExpansion(): UmbTreeExpansionModel;
    /**
     * Opens a child tree item
     * @param {UmbEntityModel} entity The entity to open
     * @param {string} entity.entityType The entity type
     * @param {string} entity.unique The unique key
     * @memberof UmbTreeExpansionManager
     * @returns {Promise<void>}
     */
    expandItem(entity: UmbEntityExpansionEntryModel): Promise<void>;
    /**
     * Closes a child tree item
     * @param {UmbEntityModel} entity The entity to close
     * @param {string} entity.entityType The entity type
     * @param {string} entity.unique The unique key
     * @memberof UmbTreeExpansionManager
     * @returns {Promise<void>}
     */
    collapseItem(entity: UmbEntityModel): Promise<void>;
    /**
     * Closes all child tree items
     * @memberof UmbTreeExpansionManager
     * @returns {Promise<void>}
     */
    collapseAll(): Promise<void>;
    /**
     * Gets a tree item from the expansion state
     * @param {UmbEntityModel} entity The entity to get
     * @param {string} entity.entityType The entity type
     * @param {string} entity.unique The unique key
     * @returns {*}  {(Promise<UmbEntityExpansionEntryModel | undefined>)}
     * @memberof UmbEntityExpansionManager
     */
    getItem(entity: UmbEntityModel): Promise<UmbEntityExpansionEntryModel | undefined>;
}
