import type { UmbManagementApiTreeAncestorsOfRequestArgs, UmbManagementApiTreeChildrenOfRequestArgs, UmbManagementApiTreeRootItemsRequestArgs, UmbManagementApiTreeSiblingsFromRequestArgs } from './types.js';
import { UmbError, type UmbApiResponse } from '../../core/resources/index.js';
import { UmbControllerBase } from '../../../libs/class-api/index.js';
import type { ReferenceByIdModel } from '../../core/backend-api/index.js';
import type { UmbControllerHost } from '../../../libs/controller-api/index.js';
import type { UmbTreeAncestorsOfRequestArgs, UmbTreeChildrenOfRequestArgs, UmbTreeRootItemsRequestArgs } from '../../core/tree/index.js';
export interface UmbManagementApiTreeDataRequestManagerArgs<TreeItemType, RootItemsRequestArgsType extends UmbManagementApiTreeRootItemsRequestArgs, RootItemsDataResponseType extends {
    items: Array<TreeItemType>;
    total: number;
}, ChildrenOfRequestArgsType extends UmbManagementApiTreeChildrenOfRequestArgs, ChildrenOfDataResponseType extends {
    items: Array<TreeItemType>;
    total: number;
}, AncestorsOfRequestArgsType extends UmbManagementApiTreeAncestorsOfRequestArgs, AncestorsOfDataResponseType, SiblingsFromRequestArgsType extends UmbManagementApiTreeSiblingsFromRequestArgs, SiblingsFromDataResponseType extends {
    items: Array<TreeItemType>;
    totalBefore: number;
    totalAfter: number;
}> {
    getRootItems: (args: RootItemsRequestArgsType) => Promise<UmbApiResponse<{
        data?: RootItemsDataResponseType;
    }>>;
    getChildrenOf: (args: ChildrenOfRequestArgsType) => Promise<UmbApiResponse<{
        data?: ChildrenOfDataResponseType;
    }>>;
    getAncestorsOf: (args: AncestorsOfRequestArgsType) => Promise<UmbApiResponse<{
        data?: AncestorsOfDataResponseType;
    }>>;
    getSiblingsFrom: (args: SiblingsFromRequestArgsType) => Promise<UmbApiResponse<{
        data?: SiblingsFromDataResponseType;
    }>>;
}
export declare class UmbManagementApiTreeDataRequestManager<TreeItemType extends {
    parent?: ReferenceByIdModel | null;
}, RootItemsRequestArgsType extends UmbManagementApiTreeRootItemsRequestArgs, RootItemsDataResponseType extends {
    items: Array<TreeItemType>;
    total: number;
}, ChildrenOfRequestArgsType extends UmbManagementApiTreeChildrenOfRequestArgs, ChildrenOfDataResponseType extends {
    items: Array<TreeItemType>;
    total: number;
}, AncestorsOfRequestArgsType extends UmbManagementApiTreeAncestorsOfRequestArgs, AncestorsOfDataResponseType, SiblingsFromRequestArgsType extends UmbManagementApiTreeSiblingsFromRequestArgs, SiblingsFromDataResponseType extends {
    items: Array<TreeItemType>;
    totalBefore: number;
    totalAfter: number;
}> extends UmbControllerBase {
    #private;
    constructor(host: UmbControllerHost, args: UmbManagementApiTreeDataRequestManagerArgs<TreeItemType, RootItemsRequestArgsType, RootItemsDataResponseType, ChildrenOfRequestArgsType, ChildrenOfDataResponseType, AncestorsOfRequestArgsType, AncestorsOfDataResponseType, SiblingsFromRequestArgsType, SiblingsFromDataResponseType>);
    getRootItems(args: UmbTreeRootItemsRequestArgs): Promise<{
        data: {
            items: TreeItemType[];
            total: number;
            totalBefore: number;
            totalAfter: number;
        } | undefined;
        error: UmbError | undefined;
    }>;
    getChildrenOf(args: UmbTreeChildrenOfRequestArgs): Promise<{
        data: {
            items: TreeItemType[];
            total: number;
            totalBefore: number;
            totalAfter: number;
        } | undefined;
        error: UmbError | undefined;
    }>;
    getAncestorsOf(args: UmbTreeAncestorsOfRequestArgs): Promise<UmbApiResponse<UmbApiResponse<{
        data?: AncestorsOfDataResponseType | undefined;
    }>>>;
}
