import type { UmbEntityExpansionEntryModel, UmbEntityExpansionModel } from './types.js';
import { UmbControllerBase } from '../../../../libs/class-api/index.js';
import { UmbArrayState, type Observable } from '../../../../libs/observable-api/index.js';
/**
 * Manages an expansion state
 * @exports
 * @class UmbEntityExpansionManager
 * @augments {UmbControllerBase}
 */
export declare class UmbEntityExpansionManager<EntryModelType extends UmbEntityExpansionEntryModel = UmbEntityExpansionEntryModel> extends UmbControllerBase {
    protected _expansion: UmbArrayState<EntryModelType, unknown>;
    expansion: Observable<EntryModelType[]>;
    /**
     * Checks if an entity is expanded
     * @param {EntryModelType} entity The entity to check
     * @returns {Observable<boolean>} True if the entity is expanded
     * @memberof UmbEntityExpansionManager
     */
    isExpanded(entity: EntryModelType): Observable<boolean>;
    /**
     * Observe the expansion entry for a specific entity
     * @param {EntryModelType} entity The entity to observe
     * @returns {Observable<EntryModelType | undefined>} An observable of the expansion entry
     * @memberof UmbEntityExpansionManager
     */
    entry(entity: EntryModelType): Observable<EntryModelType | undefined>;
    /**
     * Sets the expansion state
     * @param {UmbEntityExpansionModel<EntryModelType> | undefined} expansion The expansion state
     * @memberof UmbEntityExpansionManager
     * @returns {void}
     */
    setExpansion(expansion: UmbEntityExpansionModel<EntryModelType>): void;
    /**
     * Gets the expansion state
     * @memberof UmbEntityExpansionManager
     * @returns {UmbEntityExpansionModel} The expansion state
     */
    getExpansion(): UmbEntityExpansionModel<EntryModelType>;
    /**
     * Expands an entity
     * @param {EntryModelType} entity The entity to open
     * @memberof UmbEntityExpansionManager
     * @returns {Promise<void>}
     */
    expandItem(entity: EntryModelType): Promise<void>;
    /**
     * Expands multiple entities
     * @param {UmbEntityExpansionModel<EntryModelType>} entities The entities to open
     * @memberof UmbEntityExpansionManager
     * @returns {void}
     */
    expandItems(entities: UmbEntityExpansionModel<EntryModelType>): void;
    /**
     * Collapses an entity
     * @param {EntryModelType} entry The entity to open
     * @memberof UmbEntityExpansionManager
     * @returns {Promise<void>}
     */
    collapseItem(entry: EntryModelType): Promise<void>;
    /**
     * Collapses multiple entities
     * @param {UmbEntityExpansionModel<EntryModelType>} entries The entities to close
     * @memberof UmbEntityExpansionManager
     * @returns {void}
     */
    collapseItems(entries: UmbEntityExpansionModel<EntryModelType>): void;
    /**
     * Collapses all expanded entities
     * @memberof UmbEntityExpansionManager
     * @returns {Promise<void>}
     */
    collapseAll(): Promise<void>;
    /**
     * Gets an item from the expansion state
     * @param {EntryModelType} entity The entity to get
     * @returns {*}  {(Promise<UmbEntityExpansionEntryModel | undefined>)}
     * @memberof UmbEntityExpansionManager
     */
    getItem(entity: EntryModelType): Promise<EntryModelType | undefined>;
}
