import { GraphEdge, GraphNode, NetworkGraphConfig } from './types';
export type { GraphEdge, GraphNode, NetworkGraphConfig } from './types';
export declare class NetworkGraph {
    readonly el: HTMLDivElement;
    private readonly graphId;
    private readonly defaultRadius;
    private readonly showLabels;
    private readonly onNodeClick;
    private readonly onEdgeClick;
    private svg;
    private mainGroup;
    private defsEl;
    private nodes;
    private edges;
    private simNodes;
    private simEdges;
    private layout;
    private zoomable;
    private pannable;
    private hoveredNodeId;
    private viewBox;
    private isPanning;
    private panStart;
    private panOrigin;
    private dragNode;
    private dragOffset;
    private readonly boundWheel;
    private readonly boundMouseDown;
    private readonly boundMouseMove;
    private readonly boundMouseUp;
    constructor(config: NetworkGraphConfig);
    /** Replace all data and re-render */
    update(nodes: GraphNode[], edges: GraphEdge[]): void;
    /** Switch layout algorithm and re-render */
    setLayout(layout: 'force' | 'circular' | 'grid'): void;
    /** Fit all content in viewport */
    zoomToFit(): void;
    /** Clean up and remove */
    destroy(): void;
    private buildSimulation;
    private applyLayout;
    private forceLayout;
    private circularLayout;
    private gridLayout;
    private renderGraph;
    private renderNode;
    private renderEdge;
    private createArrowMarker;
    private applyViewBox;
    private handleWheel;
    private handleMouseDown;
    private handleMouseMove;
    private handleMouseUp;
    private clientToSvg;
    private buildClassName;
}
//# sourceMappingURL=index.d.ts.map