import { Point, Rectangle } from '../../math/geometry';
import { EdgeGeometry } from '../../layout/core/edgeGeometry';
import { Port } from '../../layout/core/port';
import { Direction } from '../../math/geometry/direction';
import { Shape } from '../shape';
import { VisibilityEdge } from '../visibility/VisibilityEdge';
import { VisibilityVertex } from '../visibility/VisibilityVertex';
import { Obstacle } from './obstacle';
import { ObstaclePort } from './ObstaclePort';
import { VisibilityGraphGenerator } from './VisibilityGraphGenerator';
import { FreePoint } from './FreePoint';
import { TransientGraphUtility } from './TransientGraphUtility';
export declare class PortManager {
    private obstaclePortMap;
    private freePointMap;
    private freePointLocationsUsedByRouteEdges;
    TransUtil: TransientGraphUtility;
    private graphGenerator;
    RouteToCenterOfObstacles: boolean;
    get LimitPortVisibilitySpliceToEndpointBoundingBox(): boolean;
    set LimitPortVisibilitySpliceToEndpointBoundingBox(value: boolean);
    private obstaclePortsInGraph;
    private freePointsInGraph;
    private portSpliceLimitRectangle;
    private activeAncestors;
    private get VisGraph();
    private get HScanSegments();
    private get VScanSegments();
    private get ObstacleTree();
    private get AncestorSets();
    constructor(graphGenerator: VisibilityGraphGenerator);
    Clear(): void;
    CreateObstaclePorts(obstacle: Obstacle): void;
    private CreateObstaclePort;
    FindVertices(port: Port): Array<VisibilityVertex>;
    RemoveObstaclePorts(obstacle: Obstacle): void;
    RemoveObstaclePort(port: Port): void;
    AddControlPointsToGraph(edgeGeom: EdgeGeometry, shapeToObstacleMap: Map<Shape, Obstacle>): void;
    ConnectOobWaypointToEndpointVisibilityAtGraphBoundary(oobWaypoint: FreePoint, port: Port): void;
    private ConnectToGraphAtPointsCollinearWithVertices;
    SetAllAncestorsActive(edgeGeom: EdgeGeometry, shapeToObstacleMap: Map<Shape, Obstacle>): boolean;
    SetAllGroupsActive(): void;
    FindAncestorsAndObstaclePort(port: Port, t: {
        oport: ObstaclePort;
    }): Set<Shape>;
    private ActivateAncestors;
    ClearActiveAncestors(): void;
    RemoveControlPointsFromGraph(): void;
    private RemoveObstaclePortsFromGraph;
    private RemoveFreePointsFromGraph;
    private RemoveStaleFreePoints;
    ClearVisibility(): void;
    BeginRouteEdges(): void;
    EndRouteEdges(): void;
    FindObstaclePort(port: Port): ObstaclePort;
    private AddPortToGraph;
    private AddObstaclePortToGraph;
    private CreateObstaclePortEntrancesIfNeeded;
    GetPortVisibilityIntersection(edgeGeometry: EdgeGeometry): Point[];
    private static GetPathPointsFromOverlappingCollinearVisibility;
    private static GetPathPointsFromIntersectingVisibility;
    private CreateObstaclePortEntrancesFromPoints;
    private GetBorderIntersections;
    private CreatePortEntrancesAtBorderIntersections;
    private static GetDerivative;
    private CreatePortEntrance;
    private CreateEntrancesForCornerPort;
    private AddObstaclePortEntranceToGraph;
    private InBoundsGraphBoxIntersect;
    FindorCreateNearestPerpEdgePPDN(first: Point, second: Point, dir: Direction, weight: number): VisibilityEdge;
    private FindorCreateNearestPerpEdgePPDNT;
    private FindOrCreateNearestPerpEdgeFromNearestPerpSegment;
    private FindOrCreateSegmentIntersectionVertexAndAssociatedEdge;
    private AddEdgeToClosestSegmentEnd;
    private GetPortSpliceLimitRectangle;
    GetPortRectangle(port: Port): Rectangle;
    AddToLimitRectangle(location: Point): void;
    private FindOrCreateFreePoint;
    private AddFreePointToGraph;
    private CreateOutOfBoundsFreePoint;
    private ConnectFreePointToLateralEdge;
}
