import type { Datum } from "../shared/datumTypes";
import * as React from "react";
import type { StreamNetworkFrameProps } from "../../stream/networkTypes";
import type { BaseChartProps, ChartAccessor } from "../shared/types";
import { type TooltipProp } from "../../Tooltip/Tooltip";
import type { LegendInteractionMode } from "../shared/hooks";
/**
 * TreeDiagram component props
 */
export interface TreeDiagramProps<TNode extends Datum = Datum> extends BaseChartProps {
    data: TNode;
    layout?: "tree" | "cluster" | "partition" | "treemap" | "circlepack";
    orientation?: "vertical" | "horizontal" | "radial";
    childrenAccessor?: ChartAccessor<TNode, TNode[]>;
    valueAccessor?: ChartAccessor<TNode, number>;
    nodeIdAccessor?: ChartAccessor<TNode, string>;
    colorBy?: ChartAccessor<TNode, string | number>;
    colorScheme?: string | string[];
    colorByDepth?: boolean;
    edgeStyle?: "line" | "curve";
    nodeLabel?: ChartAccessor<TNode, string>;
    showLabels?: boolean;
    nodeSize?: number;
    enableHover?: boolean;
    legendInteraction?: LegendInteractionMode;
    tooltip?: TooltipProp;
    frameProps?: Partial<Omit<StreamNetworkFrameProps, "edges" | "size">>;
}
/**
 * TreeDiagram - Visualize a hierarchy as connected node-link diagram.
 *
 * `data` is a single root object whose children are walked via
 * `childrenAccessor`. `layout` chooses between classic tidy-tree
 * (`"tree"`), partition (`"partition"`), or radial (`"radial"`)
 * arrangements; `orientation` flips horizontal/vertical for the linear
 * layouts.
 *
 * For nested-rectangle encodings of the same data shape use
 * {@link Treemap}; for nested circles use {@link CirclePack}; for
 * concentric-orbit encodings use {@link OrbitDiagram}.
 *
 * @example
 * ```tsx
 * // Org chart
 * <TreeDiagram
 *   data={{
 *     name: "CEO",
 *     reports: [
 *       { name: "VP Eng", reports: [{ name: "EM 1" }, { name: "EM 2" }] },
 *       { name: "VP Product" },
 *     ],
 *   }}
 *   childrenAccessor="reports"
 *   orientation="vertical"
 * />
 * ```
 *
 * @example
 * ```tsx
 * // Radial layout colored by depth
 * <TreeDiagram
 *   data={hierarchyRoot}
 *   childrenAccessor="children"
 *   layout="radial"
 *   colorByDepth
 * />
 * ```
 */
export declare function TreeDiagram<TNode extends Datum = Datum>(props: TreeDiagramProps<TNode>): React.JSX.Element;
export declare namespace TreeDiagram {
    var displayName: string;
}
