import { Point, Position, Rect } from './types';
export declare const DEG: number;
export declare const TWO_PI: number;
export declare function randomInRange(a: number, b: number): number;
export declare function pointDistance(a: Point, b: Point): number;
export declare function lineIntersect(x0: number, y0: number, x1: number, y1: number, x2: number, y2: number, x3: number, y3: number): boolean;
export declare function polarToCartesian(centerX: number, centerY: number, radius: number, angleInDegrees: number): {
    x: number;
    y: number;
};
export declare function describeArc(x: number, y: number, radius: number, startAngle: number, endAngle: number): string;
export declare function _describeArc(x: number, y: number, radius: number, startAngle: number, endAngle: number): string;
export declare function describeArrowPolygon(x0: number, y0: number, x1: number, y1: number, h: number, s: number, th: number, tl: number): string;
export declare function describeCircle(x: number, y: number, r: number): string;
export declare function describeRect(x: number, y: number, width: number, height: number): string;
export declare function eccentricity(rx: number, ry: number, angle: number): number;
export declare const ellipsoidalToCartesian: (cx: number, cy: number, rx: number, ry: number, angle: number) => {
    x: number;
    y: number;
};
export declare function describeEllipseArc(x: number, y: number, rx: number, ry: number, startAngle: number, endAngle: number): string;
export declare function getRandomXYInArea(width: number, height: number, cX?: number, cY?: number): Point;
export declare function randomAngle(): number;
export declare function angleToRad(angle: number): number;
export declare function radToAngle(rad: number): number;
export declare function randomInRadius(cX: number, cY: number, R: number): Point;
export declare function randomInAngle(cX: number, cY: number, R: number, start: number, end: number): Point;
export declare function randomInRect(x0: number, y0: number, x1: number, y1: number): Point;
export declare function randomInPaddedRect(x0: number, y0: number, x1: number, y1: number, offset: number): Point;
export declare function randomInCircle(cX: number, cY: number, R: number): Point;
export declare function pointInCircle(x: number, y: number, R: number, u: Point, padding?: number): {
    x: number;
    y: number;
};
export declare function pointInRectangle(x: number, y: number, width: number, height: number, u: Point, padding?: number): {
    x: number;
    y: number;
};
export declare function pointInNode(node: Thing, u: Point, padding?: number): {
    x: number;
    y: number;
};
export declare const NULL_VECTOR: Point;
export declare function unitVector(x0: number, y0: number, x1: number, y1: number): Point;
export declare function pointUnitVector({ x: x0, y: y0 }: Point, { x: x1, y: y1 }: Point): Point;
export declare function oppositeVector(vector: Point): Point;
export declare const applyVector: (point: Point, u: Point, d: number) => Point;
export declare function vector(x0: number, y0: number, x1: number, y1: number): Point;
export declare function pointVector(p0: Point, p1: Point): Point;
export declare function jigglePoint(point: Point, intensity?: number): Point;
export declare function perpendicular(vector: Point): Point;
export declare const angleBetween: (ax: number, ay: number, bx: number, by: number) => number;
export declare const radBetween: (ax: number, ay: number, bx: number, by: number) => number;
export declare function inRadius(cX: number, cY: number, R: number, angle: number): Point;
export declare function distance(ax: number, ay: number, bx: number, by: number): number;
export declare function norm(x: number, y: number): number;
export declare function normalize(point: Point): Point;
export declare function mediumPoint(a: Point, b: Point): Point;
export declare function randomUnitVector(): Point;
export declare function rotateVector(a: Point, rad: number): Point;
export declare function addVector(a: Point, b: Point): Point;
export declare function addVector3(a: Point, b: Point, c: Point): Point;
export declare function addVector4(a: Point, b: Point, c: Point, d: Point): Point;
export declare function subtractVector(a: Point, b: Point): Point;
export declare function resizeVector(a: Point, k: number): Point;
export declare function rectBoundingRadius(width: number, height: number): number;
export declare function rectsBoundingRect(rects: Rect[]): Rect;
export declare function centerRectsBoundingRect(rects: Rect[]): Rect;
export declare function rectangleRegion(x: number, y: number, w: number, h: number, u: Point): 'left' | 'top' | 'right' | 'bottom';
export type Shape = 'circle' | 'rect';
export declare function bezierSpline(): Point[];
export declare function isInside(a: Thing, b: Thing, offset?: number): boolean;
export declare function surfaceDistance(a: Thing, b: Thing): {
    l: number;
    d: number;
    u: Point;
};
export declare function _surfaceDistance(a_shape: Shape, a_x: number, a_y: number, a_r: number, a_width: number, a_height: number, b_shape: Shape, b_x: number, b_y: number, b_r: number, b_width: number, b_height: number): {
    l: number;
    d: number;
    u: Point;
};
export declare function surfaceDistanceY(a: Thing, b: Thing): {
    l: number;
    d: number;
    u: number;
};
export type Thing = {
    shape: Shape;
    x: number;
    y: number;
    r: number;
    width: number;
    height: number;
};
export declare function centerToSurfaceDistance(node: Thing, u: Position): number;
export declare function _centerToSurfaceDistance(shape: Shape, x: number, y: number, r: number, width: number, height: number, u: Position): number;
export declare function rectCenter(rect: Rect): Point;
export declare function centerOfMass(points: Point[]): Point;
export declare const vectorAngle: (p0: Point, p1: Point) => number;
export declare const roundPoint: (position: Position) => Position;
