import { ICurve, GeomEdge, GeomGraph, Node } from '..';
import { EdgeGeometry } from '../layout/core/edgeGeometry';
import { Point } from '../math/geometry';
import { RectangleNode } from '../math/geometry/RTree/RectangleNode';
import { BasicGraphOnEdges } from '../structs/basicGraphOnEdges';
import { IntPair } from '../utils/IntPair';
import { BundlingSettings } from './BundlingSettings';
import { InteractiveEdgeRouter } from './InteractiveEdgeRouter';
import { PreGraph } from './PreGraph';
import { Shape } from './shape';
export declare class MultiEdgeRouter {
    multiEdgeGeometries: Array<EdgeGeometry[]>;
    interactiveEdgeRouter: InteractiveEdgeRouter;
    bundlingSettings: BundlingSettings;
    transparentShapeSetter: (e: EdgeGeometry) => Array<Shape>;
    nodeTree: RectangleNode<ICurve, Point>;
    constructor(multiEdgeGeoms: Array<GeomEdge[]>, interactiveEdgeRouter: InteractiveEdgeRouter, nodeBoundaryCurves: Array<ICurve>, bundlingSettings: BundlingSettings, transparentShapeSetter: (e: EdgeGeometry) => Array<Shape>);
    run(): void;
    GetGeometryGraphs(): IterableIterator<GeomGraph>;
    CreateGeometryGraph(preGraph: PreGraph): GeomGraph;
    AddEdgeGeometryToGraph(eg: EdgeGeometry, nodeDictionary: Map<ICurve, Node>, gg: GeomGraph): void;
    private GetOrCreateNode;
    private GetPortCurve;
    GetIndependantPreGraphs(): Array<PreGraph>;
    UniteConnectedPreGraphs(t: {
        preGraphs: Array<PreGraph>;
    }): void;
    private AddIntersectingNodes;
    static GetIntersectionGraphOfPreGraphs(preGraphs: Array<PreGraph>): BasicGraphOnEdges<IntPair>;
    static EnumeratePairsOfIntersectedPreGraphs(preGraphs: Array<PreGraph>): Array<IntPair>;
    CreateInitialPregraphs(): Array<PreGraph>;
    private CreatePregraphFromSetOfEdgeGeometries;
}
