import type { Datum } from "../charts/shared/datumTypes";
import * as React from "react";
import type { ReactNode } from "react";
import type { NetworkLabel } from "./networkTypes";
import type { LegendGroup, GradientLegendConfig, LegendLayout } from "../types/legendTypes";
import { type AutoPlaceAnnotations } from "../recipes/annotationLayout";
import type { AnnotationContext } from "../realtime/types";
type AnnotationAnchorNode = {
    type: string;
    datum: Datum | null;
    id?: string;
    x?: number;
    y?: number;
    cx?: number;
    cy?: number;
    w?: number;
    h?: number;
    /** Circle nodes (NetworkCircleNode, force/tree/orbit marks) carry an explicit radius. */
    r?: number;
    /** Arc nodes (chord, radial) carry an outer radius. */
    outerR?: number;
};
type NetworkAnnotationContext = AnnotationContext & {
    sceneNodes?: AnnotationAnchorNode[];
};
export interface NetworkSVGOverlayProps {
    width: number;
    height: number;
    totalWidth: number;
    totalHeight: number;
    margin: {
        top: number;
        right: number;
        bottom: number;
        left: number;
    };
    /** Labels from the layout plugin */
    labels: NetworkLabel[];
    /** Chart title */
    title?: string | ReactNode;
    /** Legend configuration */
    legend?: ReactNode | {
        legendGroups: LegendGroup[];
    } | {
        gradient: GradientLegendConfig;
    };
    legendHoverBehavior?: (item: {
        label: string;
    } | null) => void;
    legendClickBehavior?: (item: {
        label: string;
    }) => void;
    legendHighlightedCategory?: string | null;
    legendIsolatedCategories?: Set<string>;
    legendPosition?: "right" | "left" | "top" | "bottom";
    legendLayout?: LegendLayout;
    /** User-provided SVG elements on top */
    foregroundGraphics?: ReactNode;
    /** Scene nodes for annotation positioning */
    sceneNodes?: AnnotationAnchorNode[];
    /** Annotations */
    annotations?: Datum[];
    autoPlaceAnnotations?: AutoPlaceAnnotations;
    svgAnnotationRules?: (annotation: Datum, index: number, context: NetworkAnnotationContext) => ReactNode;
    annotationFrame?: number;
}
/**
 * SVG overlay for network charts — renders labels, title, legend, annotations.
 *
 * Unlike XY/ordinal overlays, network charts don't have axes or grid lines.
 * The overlay is positioned absolutely over the canvas.
 */
export declare function NetworkSVGOverlay(props: NetworkSVGOverlayProps): React.JSX.Element;
export declare namespace NetworkSVGOverlay {
    var displayName: string;
}
export {};
