import { Point } from '../../..';
import { Polyline } from '../../../math/geometry';
import { RectangleNode } from '../../../math/geometry/RTree/RectangleNode';
import { BundlingSettings } from '../../BundlingSettings';
import { MetroGraphData } from './MetroGraphData';
import { Station } from './Station';
export declare class Intersections {
    metroGraphData: MetroGraphData;
    bundlingSettings: BundlingSettings;
    obstaclesToIgnore: (s: Station) => Set<Polyline>;
    obstacleTree: RectangleNode<Polyline, Point>;
    constructor(metroGraphData: MetroGraphData, bundlingSettings: BundlingSettings, obstacleTree: RectangleNode<Polyline, Point>, obstaclesToIgnore: (s: Station) => Set<Polyline>);
    ObstaclesToIgnoreForBundle(node: Station, adj: Station): Set<Polyline>;
    HubAvoidsObstaclesSPNBA(node: Station, center: Point, upperBound: number, t: {
        touchedObstacles: Array<[Polyline, Point]>;
    }): boolean;
    HubAvoidsObstaclesPNS__(center: Point, upperBound: number, obstaclesToIgnore: Set<Polyline>): boolean;
    GetMinimalDistanceToObstacles(node: Station, nodePosition: Point, upperBound: number): number;
    HubAvoidsObstaclesPNSTT(center: Point, upperBound: number, obstaclesToIgnore: Set<Polyline>, t: {
        touchedObstacles: Array<[Polyline, Point]>;
    }, m: {
        minimalDistance: number;
    }): boolean;
    static IntersectCircleWithTree(node: RectangleNode<Polyline, Point>, center: Point, radius: number, obstaclesToIgnore: Set<Polyline>, touchedObstacles: Array<[Polyline, Point]>, t: {
        minimalDistance: number;
    }): boolean;
    static LineSegmentIntersectPolyline(start: Point, end: Point, poly: Polyline): boolean;
    static Create4gon(apex: Point, baseCenter: Point, width1: number, width2: number): Polyline;
}
