import { GeomGraph } from '../layout/core/GeomGraph';
import { EdgeGeometry } from '../layout/core/edgeGeometry';
import { GeomEdge } from '../layout/core/geomEdge';
import { Curve } from '../math/geometry/curve';
import { LineSegment } from '../math/geometry/lineSegment';
import { Point } from '../math/geometry/point';
import { Rectangle } from '../math/geometry/rectangle';
import { Algorithm } from '../utils/algorithm';
import { CancelToken } from '..';
export declare function straightLineEdgePatcher(geomGraph: GeomGraph, edgesToRoute: GeomEdge[], cancelToken: CancelToken): void;
export declare class StraightLineEdges extends Algorithm {
    private edges;
    private padding;
    constructor(edges: GeomEdge[], padding: number);
    run(): void;
    static RouteEdge(geomedge: GeomEdge, padding: number): void;
    static ContainmentLoop(eg: EdgeGeometry, padding: number): boolean;
    static CreateLoop(targetBox: Rectangle, sourceBox: Rectangle, sourceContainsTarget: boolean, padding: number): Curve;
    static CreateLoop_(sourceBox: Rectangle, targetBox: Rectangle, howMuchToStickOut: number, reverse: boolean): Curve;
    static FindClosestPointOnBoxBoundary(c: Point, targetBox: Rectangle): Point;
    static GetEdgeLine(geomedge: GeomEdge): LineSegment;
    static CreateSimpleEdgeCurveWithUnderlyingPolyline(geomedge: GeomEdge): void;
    private static CreateUnderlyingPolylineForSelfEdge;
    static SetStraightLineEdgesWithUnderlyingPolylines(graph: GeomGraph): void;
}
