import type { SchedulerDependencyType } from '@mui/x-scheduler-internals-premium/models'; import type { DependencyArrowObstacle, DependencyArrowPoint } from "./dependencyAnchorResolver.mjs"; /** * Radius used to soften the corners of the orthogonal route. */ export declare const DEPENDENCY_ARROW_CORNER_RADIUS = 4; /** * Size of the arrowhead marker at the target edge. */ export declare const DEPENDENCY_ARROWHEAD_SIZE = 7; /** * Builds the candidate orthogonal routes from the source anchor to the target anchor, * best first. Routes are computed in a canonical frame where the source exits to the * right: the types leaving from the start edge mirror their anchors around the events * area, route, and mirror back. That leaves two shapes, opposite edges (FS, mirrored * SF) and same edges (FF, mirrored SS). * `detourOffset` is how far from the source anchor a detour runs: it must clear the * event's edge, otherwise the route reads as a knot. * Routes stay inside `[0, eventsWidth]`: at a timeline edge the stubs ride over the * event instead of leaving the visible area. */ export declare function buildDependencyArrowRoutes(source: DependencyArrowPoint, target: DependencyArrowPoint, type: SchedulerDependencyType, detourOffset: number, eventsWidth: number): DependencyArrowPoint[][]; /** * Number of obstacles a route crosses. Each obstacle counts once, no matter how many * segments cross it. */ export declare function countRouteCollisions(points: readonly DependencyArrowPoint[], obstacles: readonly DependencyArrowObstacle[]): number; /** * Builds an SVG path following the provided points with horizontal/vertical segments, * softening each corner with a quadratic curve. The radius is clamped so two corners * never overlap, and zero-length segments collapse their corner. */ export declare function buildRoundedOrthogonalPath(points: readonly DependencyArrowPoint[], radius: number): string;