import { UxLinkLegacy } from '@eui/core';
export type TreeDataModel = Array<TreeItemModel>;
export type TreeItemModel = {
    node: TreeNode;
    children?: TreeDataModel;
};
export type TreeNode = {
    treeContentBlock: EuiTreeContentBlockModel | any;
} & SelectionModel & ExpandModel;
export interface EuiTreeContentBlockModel {
    id?: string | number;
    label: string;
    tooltipLabel: string;
    url: string;
    urlExternal: string;
    urlExternalTarget: string;
    typeLabel: string;
    typeClass: string;
    chips?: Array<{
        label: string;
        typeClass?: string;
        isOutline?: boolean;
    }>;
    iconClass: string;
    iconTypeClass: string;
    iconSvgName?: string;
    rightContent?: {
        iconClass: string;
        iconTypeClass: string;
        iconSvgName?: string;
        badges?: Array<{
            label: string;
            typeClass: string;
        }>;
        chips?: Array<{
            label: string;
            typeClass?: string;
            isOutline?: boolean;
        }>;
        contextMenuMetaData?: any;
    };
    metaData: string;
    [key: string]: any;
}
export type SelectionModel = {
    selectable?: boolean;
    isSelected?: boolean;
    isIndeterminate?: boolean;
    selectConfig?: SelectConfigModel;
};
export interface SelectConfigModel extends MultiSelectionLogic, SingleSelectionLogic {
    recursive?: boolean;
    noAutoSelectParent?: boolean;
    singleSelect?: boolean;
}
export interface MultiSelectionLogic {
    recursive?: boolean;
    noAutoSelectParent?: boolean;
}
export interface SingleSelectionLogic {
    singleSelect?: boolean;
}
export type ExpandModel = {
    isExpanded?: boolean;
};
export type EuiTreeSelectionChanges = {
    added: TreeDataModel;
    removed: TreeDataModel;
    selection: TreeDataModel;
};
export type TreeDataRunTimeModel = Array<TreeItemRunTimeModel>;
export type TreeItemRunTimeModel = {
    index: number;
    path: string;
    children?: Array<TreeItemRunTimeModel>;
    last?: boolean;
    matched?: boolean;
};
export type TreeItemSelectionRecursiveModel = {
    selectionRecursiveState: SelectionRecursiveState;
    children?: Array<TreeItemSelectionRecursiveModel>;
};
export type SelectionRecursiveState = 'indeterminate' | 'allSelected' | 'allNotSelected';
export declare function uxTreeNodesMetaDataMapper(oldTree: Array<UxLinkLegacy>): TreeDataModel;
export declare class EuiTreePagination<T> {
    private data;
    private startPage;
    private totalItems;
    private renderedPageCount;
    private perPage;
    private totalPages;
    constructor(data: T[], startPage: number, renderedPageCount: number, perPage: number);
    paginateNext(): {
        startPage: number;
        data: T[];
    };
    paginatePrev(): {
        startPage: number;
        data: T[];
    };
    getCurrentStartPage(): number;
    setCurrentStartPage(startPage: number): void;
    isAtMax(): boolean;
    getViewData(): {
        startPage: number;
        data: T[];
    };
}
export declare class CustomNodeSelectFnHelper {
    private compInstance;
    constructor(compInstance: any);
    select(path: string, isChecked: boolean): void;
    getParents(path: string): Array<string>;
    getTreeItem(path: string): TreeItemModel;
    getSelectionRecursiveState(path: string): TreeItemSelectionRecursiveModel;
}
export type CustomNodeSelectFn = (path: string, isChecked: boolean, treeItem: TreeItemModel, helper: CustomNodeSelectFnHelper) => void;
//# sourceMappingURL=eui-tree.model.d.ts.map