import * as React from "react";
import { Tree as BlueprintTree, TreeNode as BlueprintTreeNode, TreeNodeInfo as BlueprintTreeNodeInfo, TreeProps as BlueprintTreeProps } from "@blueprintjs/core";
import { IconProps } from "./../Icon/Icon";
import { TestIconProps } from "./../Icon/TestIcon";
export interface TreeNodeInfo<T = {}> extends Omit<BlueprintTreeNodeInfo<T>, "childNodes" | "icon"> {
    /**
     * Child tree nodes of this node.
     */
    childNodes?: Array<TreeNodeInfo<T>>;
    /**
     * `<Icon />` element to render next to the node's label.
     */
    icon?: React.ReactElement<IconProps> | React.ReactElement<TestIconProps>;
}
export interface TreeNodeProps<T = {}> extends TreeNodeInfo<T> {
    children?: React.ReactNode;
    contentRef?: (node: TreeNode<T>, element: HTMLDivElement | null) => void;
    depth: number;
    key?: string | number;
    onClick?: (node: TreeNode<T>, e: React.MouseEvent<HTMLDivElement>) => void;
    onCollapse?: (node: TreeNode<T>, e: React.MouseEvent<HTMLSpanElement>) => void;
    onContextMenu?: (node: TreeNode<T>, e: React.MouseEvent<HTMLDivElement>) => void;
    onDoubleClick?: (node: TreeNode<T>, e: React.MouseEvent<HTMLDivElement>) => void;
    onExpand?: (node: TreeNode<T>, e: React.MouseEvent<HTMLSpanElement>) => void;
    onMouseEnter?: (node: TreeNode<T>, e: React.MouseEvent<HTMLDivElement>) => void;
    onMouseLeave?: (node: TreeNode<T>, e: React.MouseEvent<HTMLDivElement>) => void;
    path: number[];
}
export declare class TreeNode<T = {}> extends BlueprintTreeNode<TreeNodeProps<T>> {
}
export declare class TreeNodeShadow<T = {}> extends React.Component<TreeNodeProps<T>> {
}
export interface TreeProps<T = {}> extends Omit<BlueprintTreeProps<T>, "contents"> {
    /**
     * Tree contents.
     */
    contents: ReadonlyArray<TreeNodeInfo<T>>;
}
/**
 * Tree component to display a tree structure.
 * Have a look to the underlaying [BlueprintJS Tree](https://blueprintjs.com/docs/#core/components/tree) component for examples how to use handlers.
 * Use only our `<Icon />` elements in the tree nodes!
 */
export declare const Tree: typeof BlueprintTree;
