import { HTMLAttributes, ReactNode, ForwardRefExoticComponent, RefAttributes } from 'react';
export interface TreeNode {
    /** Unique identifier for the node */
    id: string;
    /** Display label for the node */
    label: string;
    /** Child nodes */
    children?: TreeNode[];
    /** Whether the node is expanded (only for nodes with children) */
    expanded?: boolean;
    /** Whether the node is selected */
    selected?: boolean;
    /** Whether the node is disabled */
    disabled?: boolean;
    /** Custom icon for the node */
    icon?: ReactNode;
    /** Additional data attached to the node */
    data?: Record<string, unknown>;
}
export interface TreeTheme {
    baseStyle: string;
    nodeStyle: string;
    labelStyle: string;
    iconStyle: string;
    expandIconStyle: string;
    indentSize: string;
}
export interface TreeThemeOverrides {
    baseStyle?: string;
    nodeStyle?: string;
    labelStyle?: string;
    iconStyle?: string;
    expandIconStyle?: string;
    indentSize?: string;
}
export interface TreeProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onSelect'> {
    /** Tree data structure */
    data: TreeNode[];
    /** Whether nodes can be selected */
    selectable?: boolean;
    /** Whether to show checkboxes for multi-selection */
    checkable?: boolean;
    /** Whether nodes can be expanded/collapsed */
    expandable?: boolean;
    /** Keys of nodes that are expanded by default */
    defaultExpandedKeys?: string[];
    /** Keys of nodes that are selected by default */
    defaultSelectedKeys?: string[];
    /** Enable hierarchical selection behavior
     * @default automatically enabled when checkable=true, false otherwise */
    hierarchicalSelection?: boolean;
    /** Callback when selection changes */
    onSelectionChange?: (selectedKeys: string[], node: TreeNode, indeterminateKeys?: string[]) => void;
    /** Callback when a node is expanded/collapsed */
    onExpand?: (expandedKeys: string[], node: TreeNode, expanded: boolean) => void;
    /** Custom class name */
    className?: string;
    /** Theme overrides */
    theme?: TreeThemeOverrides;
}
export interface TreeComponent extends ForwardRefExoticComponent<TreeProps & RefAttributes<HTMLDivElement>> {
}
