import type { UmbTreeRootItemsRequestArgs } from '../data/index.js';
import type { UmbTreeItemModel, UmbTreeRootModel, UmbTreeStartNode } from '../types.js';
import { UmbControllerBase } from '../../../../libs/class-api/index.js';
import type { UmbControllerHost } from '../../../../libs/controller-api/index.js';
import { UmbPaginationManager, UmbTargetPaginationManager } from '../../utils/index.js';
import type { UmbEntityModel } from '../../entity/index.js';
export declare class UmbTreeItemChildrenManager<TreeItemType extends UmbTreeItemModel = UmbTreeItemModel, TreeRootType extends UmbTreeRootModel = UmbTreeRootModel, RequestArgsType extends UmbTreeRootItemsRequestArgs = UmbTreeRootItemsRequestArgs> extends UmbControllerBase {
    #private;
    readonly offsetPagination: UmbPaginationManager;
    readonly targetPagination: UmbTargetPaginationManager<UmbEntityModel>;
    readonly children: import("rxjs").Observable<TreeItemType[]>;
    readonly hasChildren: import("rxjs").Observable<boolean>;
    readonly treeItem: import("rxjs").Observable<TreeItemType | TreeRootType | undefined>;
    readonly foldersOnly: import("rxjs").Observable<boolean>;
    readonly additionalRequestArgs: import("rxjs").Observable<object | Partial<RequestArgsType>>;
    readonly startNode: import("rxjs").Observable<UmbTreeStartNode | undefined>;
    readonly isLoading: import("rxjs").Observable<boolean>;
    readonly isLoadingPrevChildren: import("rxjs").Observable<boolean>;
    readonly isLoadingNextChildren: import("rxjs").Observable<boolean>;
    constructor(host: UmbControllerHost);
    setTakeSize(size: number): void;
    setTargetTakeSize(before: number | undefined, after: number | undefined): void;
    getTakeSize(): number;
    setFoldersOnly(foldersOnly: boolean): void;
    getFoldersOnly(): boolean;
    /**
     * Set the parent for which to load children.
     * @param {(TreeItemType | TreeRootType | undefined)} treeItem - The tree item model
     * @memberof UmbTreeItemChildrenManager
     */
    setTreeItem(treeItem: TreeItemType | TreeRootType | undefined): void;
    /**
     * Gets the tree item for which to load children.
     * @returns {TreeItemType | TreeRootType | undefined} - The tree item for the children
     * @memberof UmbTreeItemChildrenManager
     */
    getTreeItem(): TreeItemType | TreeRootType | undefined;
    /**
     * Sets additional request arguments that will be passed with the request.
     * @param {Partial<RequestArgsType>} args - The additional request arguments
     * @memberof UmbTreeItemChildrenManager
     */
    setAdditionalRequestArgs(args: Partial<RequestArgsType>): void;
    /**
     * Gets additional request arguments that will be passed with the request.
     * @returns {Partial<RequestArgsType> | undefined} - The additional request arguments.
     * @memberof UmbTreeItemChildrenManager
     */
    getAdditionalRequestArgs(): Partial<RequestArgsType> | undefined;
    /**
     * Sets the startNode config
     * @param {(UmbTreeStartNode | undefined)} startNode - The start node
     * @memberof UmbTreeItemChildrenManager
     */
    setStartNode(startNode: UmbTreeStartNode | undefined): void;
    /**
     * Gets the startNode config
     * @returns {(UmbTreeStartNode | undefined)} - The start node
     * @memberof UmbTreeItemChildrenManager
     */
    getStartNode(): UmbTreeStartNode | undefined;
    /**
     * Sets the hasChildren state
     * @param {boolean} hasChildren
     * @memberof UmbTreeItemChildrenManager
     */
    setHasChildren(hasChildren: boolean): void;
    /**
     * Gets the hasChildren state
     * @returns {boolean} - True if the current tree item has children
     * @memberof UmbTreeItemChildrenManager
     */
    getHasChildren(): boolean;
    /**
     * Loads the children for the current parent.
     * @returns {Promise<void>}
     * @memberof UmbTreeItemChildrenManager
     */
    loadChildren(): Promise<void>;
    /**
     * Reloads the children for the current parent.
     * @returns {Promise<void>}
     * @memberof UmbTreeItemChildrenManager
     */
    reloadChildren(): Promise<void>;
    loadPrevChildren(): Promise<void>;
    loadNextChildren(): Promise<void>;
    /**
     * Checks if a specific child is loaded
     * @param {(UmbEntityModel | undefined)} entity
     * @returns {boolean} - True if items has been loaded
     * @memberof UmbRepositoryTreeItemChildrenManager
     */
    isChildLoaded(entity: UmbEntityModel | undefined): boolean;
    /**
     * Checks if any children have been loaded
     * @returns {boolean} - True if any items has been loaded
     * @memberof UmbRepositoryTreeItemChildrenManager
     */
    hasLoadedChildren(): boolean;
    /**
     * Clears the internal state
     * @memberof UmbRepositoryTreeItemChildrenManager
     */
    clear(): void;
    destroy(): void;
}
