import { Point, ICurve } from '../../..';
import { EdgeGeometry } from '../../../layout/core/edgeGeometry';
import { BezierSeg } from '../../../math/geometry/bezierSeg';
import { PolylinePoint } from '../../../math/geometry/polylinePoint';
import { Algorithm } from '../../../utils/algorithm';
import { BundlingSettings } from '../../BundlingSettings';
import { BundleBase } from './BundleBase';
import { IMetroMapOrderingAlgorithm } from './IMetroMapOrderingAlgorithm';
import { MetroGraphData } from './MetroGraphData';
import { Metroline } from './MetroLine';
import { OrientedHubSegment } from './OrientedHubSegment';
export declare class EdgeNudger extends Algorithm {
    bundlingSettings: BundlingSettings;
    metroGraphData: MetroGraphData;
    metroOrdering: IMetroMapOrderingAlgorithm;
    constructor(metroGraphData: MetroGraphData, bundlingSettings: BundlingSettings);
    run(): void;
    InitRadii(): void;
    CreateMetroOrdering(): void;
    FinalizePaths(): void;
    CreateBundleBases(): void;
    CreateCurves(): void;
    CreateCurveLine(line: Metroline, edge: EdgeGeometry): void;
    static FindCurveStart(metroGraphData: MetroGraphData, metroOrdering: IMetroMapOrderingAlgorithm, metroline: Metroline): Point;
    static FindCurveEnd(metroGraphData: MetroGraphData, metroOrdering: IMetroMapOrderingAlgorithm, metroline: Metroline): Point;
    static HubSegsOfLine(metroGraphData: MetroGraphData, metroOrdering: IMetroMapOrderingAlgorithm, line: Metroline): IterableIterator<ICurve>;
    static SegOnLineVertex(metroGraphData: MetroGraphData, metroOrdering: IMetroMapOrderingAlgorithm, line: Metroline, i: PolylinePoint): ICurve;
    CreateSegmentsInsideHubs(): void;
    CreateOrientedSegsOnLine(line: Metroline): void;
    CreateOrientedSegsOnLineVertex(line: Metroline, polyPoint: PolylinePoint): void;
    static BiArc(p0: Point, ts: Point, p4: Point, te: Point): ICurve;
    static ArcOn(a: Point, b: Point, c: Point): ICurve;
    static FindArcCenter(a: Point, b: Point, c: Point, t: {
        center: Point;
    }): boolean;
    static StandardBezier(segStart: Point, tangentAtStart: Point, segEnd: Point, tangentAtEnd: Point): BezierSeg;
    FanBezierSegs(): void;
    FanEdgesOfHubSegment(bundleHub: BundleBase): boolean;
    FanCouple(bundleHub: BundleBase, i: number, center: Point, radius: number): boolean;
    AdjustLongerSeg(longerSeg: OrientedHubSegment, shorterSeg: OrientedHubSegment, center: Point, radius: number): boolean;
    static SqueezeBound: number;
    FitLonger(longerOrientedSeg: OrientedHubSegment, del0: Point, del1: Point, midPointOfShorter: Point, minDelLength: number, maxDel: number, center: Point, radius: number): boolean;
    PullControlPointToTheCircle(start: Point, t: {
        highP: Point;
    }, center: Point, radius: number): void;
    NicelyAligned(longerSeg: BezierSeg, del0: Point, del1: Point, midPointOfShorter: Point, minDelLength: number, maxDelLen: number): number;
    BaseLength(seg: OrientedHubSegment): number;
}
