/**
 * Network graph type definitions
 * @countermeasure/web-components/visualization/network-graph
 */
export interface GraphNode {
    /** Stable identifier referenced by `GraphEdge.source`/`target`. */
    id: string;
    /** Display label rendered next to the node. */
    label: string;
    /** Optional explicit X coordinate (skips layout). */
    x?: number;
    /** Optional explicit Y coordinate (skips layout). */
    y?: number;
    /** Override node radius in pixels. */
    radius?: number;
    /** CSS colour applied to the node fill. */
    color?: string;
    /** Inline SVG/HTML icon rendered inside the node. */
    icon?: string;
    /** Group/category used for clustering and legend grouping. */
    group?: string;
    /** Free-form metadata tag map. */
    data?: Record<string, string>;
}
export interface GraphEdge {
    /** `GraphNode.id` of the edge's source node. */
    source: string;
    /** `GraphNode.id` of the edge's target node. */
    target: string;
    /** Optional label rendered along the edge. */
    label?: string;
    /** Edge weight — drives stroke thickness in supported layouts. */
    weight?: number;
    /** CSS colour used for the edge stroke. */
    color?: string;
    /**
     * Render an arrowhead at the target end.
     * @default false
     */
    directed?: boolean;
}
export interface NetworkGraphConfig {
    /** Container element (or selector) the graph is mounted into. */
    container: HTMLElement | string;
    /** Graph nodes. */
    nodes: GraphNode[];
    /** Graph edges. */
    edges: GraphEdge[];
    /**
     * Layout algorithm used to position nodes.
     * @default 'force'
     */
    layout?: 'force' | 'circular' | 'grid';
    /**
     * Enable mouse-wheel zoom.
     * @default false
     */
    zoomable?: boolean;
    /**
     * Enable click-and-drag pan.
     * @default false
     */
    pannable?: boolean;
    /**
     * Default node radius in pixels.
     * @default 18
     */
    nodeRadius?: number;
    /**
     * Render labels next to each node.
     * @default true
     */
    showLabels?: boolean;
    /** Fired when a node is clicked. */
    onNodeClick?: (node: GraphNode) => void;
    /** Fired when an edge is clicked. */
    onEdgeClick?: (edge: GraphEdge) => void;
    /** Additional CSS class names. */
    className?: string;
}
//# sourceMappingURL=types.d.ts.map