export type Tree2NodeValue = string | number;
export type Tree2FontType = 'caption-1' | 'body-4' | 'body-3';
export interface Tree2Node {
    value: Tree2NodeValue;
    label: string;
    icon?: string;
    disable?: boolean;
    groupCheckboxDisable?: boolean;
    groupCheckboxVisible?: boolean;
    children?: Tree2Node[];
}
export type Tree2Mode = 'single' | 'multiple';
export type Tree2Value<T extends Tree2Mode = 'single'> = T extends 'single' ? Tree2NodeValue | null : Tree2NodeValue[];
export interface Tree2Context {
    mode: Tree2Mode;
    selectedValue: Tree2NodeValue | null;
    selectedValues: Tree2NodeValue[];
    expandedValues: Tree2NodeValue[];
    activeNodeValue: Tree2NodeValue | null;
    showIcon: boolean;
    hideTick: boolean;
    fontType: Tree2FontType;
    isNodeSelected: (value: Tree2NodeValue) => boolean;
    isNodeExpanded: (value: Tree2NodeValue) => boolean;
    isNodeActive: (value: Tree2NodeValue) => boolean;
    isNodeIndeterminate: (node: Tree2Node) => boolean;
    areAllChildrenSelected: (node: Tree2Node) => boolean;
    toggleExpand: (value: Tree2NodeValue) => void;
    selectNode: (node: Tree2Node) => void;
}
export interface Tree2FlattenedNode {
    node: Tree2Node;
    depth: number;
    parent: Tree2Node | null;
}
