import { type ReactNode, type SyntheticEvent } from "react"; export interface UseTreeProps { /** * Default expanded nodes (uncontrolled) */ defaultExpanded?: string[]; /** * Expanded nodes (controlled) */ expanded?: string[]; /** * Callback on expanded nodes change */ onExpandedChange?: (event: SyntheticEvent, expanded: string[]) => void; /** * Default selected nodes (uncontrolled) */ defaultSelected?: string[]; /** * Selected nodes */ selected?: string[]; /** * Callback on selected nodes change */ onSelectionChange?: (event: SyntheticEvent, selected: string[]) => void; /** * Sets multiselect mode with checkboxes and allows for multiple node selection */ multiselect?: boolean; /** * Sets tree to disabled state, preventing all interaction */ disabled?: boolean; /** * Tree children used to build the tree model for traversal an state management */ children?: ReactNode; } export interface TreeNodeMeta { value: string; parentValue: string | undefined; hasChildren: boolean; disabled: boolean; } export interface TreeModel { /** All nodes indexed by value */ nodes: Map; /** Ordered list of root node values */ rootValues: string[]; /** Maps parent value to ordered list of child values */ childrenOf: Map; } export declare function useTree(props: UseTreeProps): { expandedArray: string[]; setExpandedArray: import("react").Dispatch>; expandedState: Set; toggleExpanded: (event: SyntheticEvent, value: string) => void; selectedState: string[]; selectedSet: Set; setSelectedState: import("react").Dispatch>; select: (event: SyntheticEvent, value: string) => void; multiselect: boolean; disabled: boolean; disabledIdsSet: Set; treeModel: TreeModel; getNodeMeta: (value: string) => TreeNodeMeta | undefined; getParent: (value: string) => string | undefined; getChildren: (parentValue: string) => string[]; getDescendants: (value: string) => string[]; getAncestors: (value: string) => string[]; visibleNodes: string[]; tabbableNodeId: string | undefined; registerElement: (value: string, element: HTMLElement) => () => void; getElement: (value: string) => HTMLElement | undefined; activeNode: string | undefined; setActiveNode: import("react").Dispatch>; indeterminateState: Set; };