import type { Datum } from "../shared/datumTypes";
import * as React from "react";
import type { StreamNetworkFrameProps } from "../../stream/networkTypes";
import type { RealtimeFrameHandle } from "../../realtime/types";
import type { BaseChartProps, ChartAccessor } from "../shared/types";
import { type TooltipProp } from "../../Tooltip/Tooltip";
import type { LegendInteractionMode, LegendPosition } from "../shared/hooks";
/**
 * ForceDirectedGraph component props
 */
export interface ForceDirectedGraphProps<TNode extends Datum = Datum, TEdge extends Datum = Datum> extends BaseChartProps {
    nodes?: TNode[];
    edges?: TEdge[];
    nodeIDAccessor?: ChartAccessor<TNode, string>;
    sourceAccessor?: ChartAccessor<TEdge, string>;
    targetAccessor?: ChartAccessor<TEdge, string>;
    nodeLabel?: ChartAccessor<TNode, string>;
    colorBy?: ChartAccessor<TNode, string>;
    colorScheme?: string | string[];
    nodeSize?: number | ChartAccessor<TNode, number>;
    nodeSizeRange?: [number, number];
    edgeWidth?: number | ChartAccessor<TEdge, number>;
    edgeColor?: string;
    edgeOpacity?: number;
    iterations?: number;
    forceStrength?: number;
    showLabels?: boolean;
    enableHover?: boolean;
    showLegend?: boolean;
    legendInteraction?: LegendInteractionMode;
    legendPosition?: LegendPosition;
    tooltip?: TooltipProp;
    frameProps?: Partial<Omit<StreamNetworkFrameProps, "nodes" | "edges" | "size">>;
}
/**
 * ForceDirectedGraph - Visualize network relationships with force-directed layout
 *
 * Wraps StreamNetworkFrame (canvas-first) for force-directed network visualization.
 */
export declare const ForceDirectedGraph: {
    <TNode extends Datum = Datum, TEdge extends Datum = Datum>(props: ForceDirectedGraphProps<TNode, TEdge> & React.RefAttributes<RealtimeFrameHandle>): React.ReactElement | null;
    displayName?: string;
};
