import { Point } from '../../..';
import { PointPair } from '../../../math/geometry/pointPair';
import { PolylinePoint } from '../../../math/geometry/polylinePoint';
import { PointPairMap } from '../../../utils/pointPairMap';
import { IMetroMapOrderingAlgorithm } from './IMetroMapOrderingAlgorithm';
import { Metroline } from './MetroLine';
import { PointPairOrder } from './PointPairOrder';
import { Station } from './Station';
export declare class GeneralMetroMapOrdering implements IMetroMapOrderingAlgorithm {
    Metrolines: Array<Metroline>;
    bundles: PointPairMap<PointPairOrder>;
    constructor(Metrolines: Array<Metroline>);
    GetOrder(u: Station, v: Station): IterableIterator<Metroline>;
    GetLineIndexInOrder(u: Station, v: Station, ml: Metroline): number;
    BuildOrder(): void;
    BuildOrderPP(pair: PointPair, order: PointPairOrder): void;
    CompareLines(ml0: Metroline, ml1: Metroline, u: Point, v: Point): number;
    CompareOnFixedOrder(edge: PointPair, ml0: Metroline, ml1: Metroline, reverse: boolean): number;
    FindStationOnLine(u: Point, v: Point, ml: Metroline, t: {
        polyPoint: PolylinePoint;
        next: (a: PolylinePoint) => PolylinePoint;
        prev: (a: PolylinePoint) => PolylinePoint;
    }): void;
    static Next(p: PolylinePoint): PolylinePoint;
    static Prev(p: PolylinePoint): PolylinePoint;
    static IsLeft(v0: Point, v1: Point, v2: Point): number;
}
