import { FlowDiagramConfig, FlowEdge, FlowNode } from './types';
export type { FlowDiagramConfig, FlowEdge, FlowNode } from './types';
export declare class FlowDiagram {
    readonly el: HTMLDivElement;
    private readonly diagramId;
    private readonly direction;
    private readonly zoomable;
    private readonly pannable;
    private readonly onNodeClick;
    private readonly onEdgeClick;
    private svg;
    private mainGroup;
    private defsEl;
    private nodes;
    private edges;
    private layoutNodes;
    private selectedNodeId;
    private viewBox;
    private isPanning;
    private panStart;
    private panOrigin;
    private readonly boundWheel;
    private readonly boundMouseDown;
    private readonly boundMouseMove;
    private readonly boundMouseUp;
    constructor(config: FlowDiagramConfig);
    /** Replace nodes and edges and re-render */
    update(nodes: FlowNode[], edges: FlowEdge[]): void;
    /** Auto-fit the diagram content in the viewport */
    zoomToFit(): void;
    /** Tear down and remove from DOM */
    destroy(): void;
    private computeLayout;
    private centerLayersTB;
    private centerLayersLR;
    private render;
    private renderNode;
    private createNodeShape;
    private renderEdge;
    private getNodePort;
    private createArrowMarker;
    private applyViewBox;
    private handleWheel;
    private handleMouseDown;
    private handleMouseMove;
    private handleMouseUp;
    private buildClassName;
}
//# sourceMappingURL=index.d.ts.map