import { Port } from '../../../../src/layout/core/port';
import { Point } from '../../..';
import { EdgeGeometry } from '../../../layout/core/edgeGeometry';
import { Polyline } from '../../../math/geometry';
import { PolylinePoint } from '../../../math/geometry/polylinePoint';
import { RectangleNode } from '../../../math/geometry/RTree/RectangleNode';
import { PointMap } from '../../../utils/PointMap';
import { BundlingSettings } from '../../BundlingSettings';
import { Cdt } from '../../ConstrainedDelaunayTriangulation/Cdt';
import { CdtIntersections } from './CdtIntersections';
import { Intersections } from './Intersections';
import { Metroline } from './MetroLine';
import { MetroNodeInfo } from './MetroNodeInfo';
import { Station } from './Station';
import { StationEdgeInfo } from './StationEdgeInfo';
import { TupleMap } from './tupleMap';
export declare class MetroGraphData {
    Stations: Array<Station>;
    edgeInfoDictionary: TupleMap<Station, Station, StationEdgeInfo>;
    ink: number;
    metrolines: Array<Metroline>;
    PointToStations: PointMap<Station>;
    regularEdges: EdgeGeometry[];
    looseIntersections: Intersections;
    tightIntersections: Intersections;
    cdtIntersections: CdtIntersections;
    EdgeLooseEnterable: Map<EdgeGeometry, Set<Polyline>>;
    EdgeTightEnterable: Map<EdgeGeometry, Set<Polyline>>;
    LoosePolylineOfPort: (p: Port) => Polyline;
    Cdt: Cdt;
    constructor(regularEdges: EdgeGeometry[], looseTree: RectangleNode<Polyline, Point>, tightTree: RectangleNode<Polyline, Point>, bundlingSettings: BundlingSettings, cdt: Cdt, edgeLooseEnterable: Map<EdgeGeometry, Set<Polyline>>, edgeTightEnterable: Map<EdgeGeometry, Set<Polyline>>, loosePolylineOfPort: (p: Port) => Polyline);
    get Ink(): number;
    get Edges(): EdgeGeometry[];
    VirtualNodes(): Array<Station>;
    get Metrolines(): Array<Metroline>;
    get LooseTree(): RectangleNode<Polyline, Point>;
    get TightTree(): RectangleNode<Polyline, Point>;
    VirtualEdges(): Array<[Station, Station]>;
    RealEdgeCount(u: Station, v: Station): number;
    MetroNodeInfosOfNode(node: Station): Array<MetroNodeInfo>;
    GetIjInfo(u: Station, v: Station): StationEdgeInfo;
    MoveNode(node: Station, newPosition: Point): void;
    GetWidthSSN(u: Station, v: Station, edgeSeparation: number): number;
    GetWidthAN(metrolines: Array<Metroline>, edgeSeparation: number): number;
    Initialize(initTightTree: boolean): void;
    SimplifyRegularEdges(): void;
    SimplifyRegularEdge(edge: EdgeGeometry): void;
    InitializeNodeData(): void;
    ProcessPolylinePoints(poly: Polyline): void;
    RegisterStation(pp: PolylinePoint, isRealNode: boolean): void;
    InitializeEdgeData(): void;
    InitEdgeData(geomEdge: EdgeGeometry, index: number): void;
    EdgeSourceAndTargetFunc(geomEdge: EdgeGeometry): () => [Polyline, Polyline];
    InitializeVirtualGraph(): void;
    GetUnorderedIjInfo(i: Station, j: Station): StationEdgeInfo;
    GetCreateOrderedIjInfo(i: Station, j: Station): StationEdgeInfo;
    InitializeEdgeNodeInfo(initTightTree: boolean): void;
    InitAllMetroNodeInfos(initTightTree: boolean): void;
    InitMetroNodeInfos(metroline: Metroline): void;
    InitNodeEnterableLoosePolylines(metroline: Metroline, regularEdge: EdgeGeometry): void;
    AddLooseEnterableForMetrolineStartEndPoints(metroline: Metroline): void;
    AddTightEnterableForMetrolineStartEndPoints(metroline: Metroline): void;
    cachedEnterableLooseForEnd: PointMap<Set<Polyline>>;
    AddLooseEnterableForEnd(point: Point): void;
    AddTightEnterableForEnd(point: Point): void;
    InitNodeEnterableTightPolylines(metroline: Metroline, regularEdge: EdgeGeometry): void;
    SortAllNeighbors(): void;
    SortNeighbors(station: Station): void;
    InitEdgeIjInfos(): void;
    InitializeCdtInfo(): void;
    PointIsAcceptableForEdge(metroline: Metroline, point: Point): boolean;
}
export declare function getOrientationOf3Vectors(vector0: Point, vector1: Point, vector2: Point): number;
export declare function GreaterOrEqual(numberA: number, numberB: number): boolean;
