import type { GlobalPoint, LineSegment, LocalPoint, Radians } from "./types";
/**
* Create a line segment from two points.
*
* @param points The two points delimiting the line segment on each end
* @returns The line segment delineated by the points
*/
export declare function lineSegment
(a: P, b: P): LineSegment
;
/**
*
* @param segment
* @returns
*/
export declare const isLineSegment: (segment: unknown) => segment is LineSegment;
/**
* Return the coordinates resulting from rotating the given line about an origin by an angle in radians
* note that when the origin is not given, the midpoint of the given line is used as the origin.
*
* @param l
* @param angle
* @param origin
* @returns
*/
export declare const lineSegmentRotate: (l: LineSegment, angle: Radians, origin?: Point) => LineSegment;
/**
* Calculates the point two line segments with a definite start and end point
* intersect at.
*/
export declare const segmentsIntersectAt: (a: Readonly>, b: Readonly>) => Point | null;
export declare const pointOnLineSegment: (point: Point, line: LineSegment, threshold?: number) => boolean;
export declare const distanceToLineSegment: (point: Point, line: LineSegment) => number;
/**
* Returns the intersection point of a segment and a line
*
* @param l
* @param s
* @returns
*/
export declare function lineSegmentIntersectionPoints(l: LineSegment, s: LineSegment, threshold?: number): Point | null;
export declare function lineSegmentsDistance(s1: LineSegment, s2: LineSegment): number;