1import * as React from "react";
2import { Props, MaybeElement } from "../../common/props";
3import { IconName } from "../icon/icon";
4export declare type TreeNodeInfo<T = {}> = ITreeNode<T>;
5/** @deprecated use TreeNodeInfo */
6export interface ITreeNode<T = {}> extends Props {
7    /**
8     * Child tree nodes of this node.
9     */
10    childNodes?: Array<TreeNodeInfo<T>>;
11    /**
12     * Whether this tree node is non-interactive. Enabling this prop will ignore
13     * mouse event handlers (in particular click, down, enter, leave).
14     */
15    disabled?: boolean;
16    /**
17     * Whether the caret to expand/collapse a node should be shown.
18     * If not specified, this will be true if the node has children and false otherwise.
19     */
20    hasCaret?: boolean;
21    /**
22     * The name of a Blueprint icon (or an icon element) to render next to the node's label.
23     */
24    icon?: IconName | MaybeElement;
25    /**
26     * A unique identifier for the node.
27     */
28    id: string | number;
29    /**
30     */
31    isExpanded?: boolean;
32    /**
33     * Whether this node is selected.
34     *
35     * @default false
36     */
37    isSelected?: boolean;
38    /**
39     * The main label for the node.
40     */
41    label: string | JSX.Element;
42    /**
43     * A secondary label/component that is displayed at the right side of the node.
44     */
45    secondaryLabel?: string | MaybeElement;
46    /**
47     * An optional custom user object to associate with the node.
48     * This property can then be used in the `onClick`, `onContextMenu` and `onDoubleClick`
49     * event handlers for doing custom logic per node.
50     */
51    nodeData?: T;
52}
53export declare type TreeNodeProps<T = {}> = ITreeNodeProps<T>;
54export interface ITreeNodeProps<T = {}> extends TreeNodeInfo<T> {
55    children?: React.ReactNode;
56    contentRef?: (node: TreeNode<T>, element: HTMLDivElement | null) => void;
57    depth: number;
58    key?: string | number;
59    onClick?: (node: TreeNode<T>, e: React.MouseEvent<HTMLDivElement>) => void;
60    onCollapse?: (node: TreeNode<T>, e: React.MouseEvent<HTMLSpanElement>) => void;
61    onContextMenu?: (node: TreeNode<T>, e: React.MouseEvent<HTMLDivElement>) => void;
62    onDoubleClick?: (node: TreeNode<T>, e: React.MouseEvent<HTMLDivElement>) => void;
63    onExpand?: (node: TreeNode<T>, e: React.MouseEvent<HTMLSpanElement>) => void;
64    onMouseEnter?: (node: TreeNode<T>, e: React.MouseEvent<HTMLDivElement>) => void;
65    onMouseLeave?: (node: TreeNode<T>, e: React.MouseEvent<HTMLDivElement>) => void;
66    path: number[];
67}
68export declare class TreeNode<T = {}> extends React.Component<ITreeNodeProps<T>> {
69    static displayName: string;
70    static ofType<U>(): new (props: ITreeNodeProps<U>) => TreeNode<U>;
71    render(): JSX.Element;
72    private maybeRenderCaret;
73    private maybeRenderSecondaryLabel;
74    private handleCaretClick;
75    private handleClick;
76    private handleContentRef;
77    private handleContextMenu;
78    private handleDoubleClick;
79    private handleMouseEnter;
80    private handleMouseLeave;
81}
82