import { ConnectionPoint, Position, RoutingPoint, Size } from '../models/types';
import * as i0 from "@angular/core";
export declare class OrthogonalRouterService {
    /**
     * Finds the closest node side and point for a given mouse position
     */
    findConnectionPoint(node: {
        position: Position;
        size: Size;
    }, mousePos: Position): ConnectionPoint;
    /**
     * Calculates the optimal orthogonal route between two points
     */
    calculateRoute(startNode: {
        position: Position;
        size: Size;
    }, endNode: {
        position: Position;
        size: Size;
    }, startPoint: ConnectionPoint, endPoint: ConnectionPoint): RoutingPoint[];
    private createRouteFromSides;
    private createBendPoint;
    private createHorizontalRoute;
    private createVerticalRoute;
    private simplifyRoute;
    /**
     * Updates a segment's position while maintaining orthogonal constraints
     */
    updateSegment(points: RoutingPoint[], segmentIndex: number, newPosition: Position): RoutingPoint[];
    /**
     * Determines if a point is near enough to a line segment for manipulation
     */
    isPointNearSegment(point: Position, segmentStart: Position, segmentEnd: Position, threshold?: number): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<OrthogonalRouterService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<OrthogonalRouterService>;
}
