import { LinePosition, Position } from '../../common/types';
import { Vector2D } from '../vector2d';
export declare class VectorLine {
    source: Vector2D;
    target: Vector2D;
    v: Vector2D;
    constructor(source: Vector2D, target: Vector2D, v: Vector2D);
    static fromLinePosition(line: LinePosition): VectorLine;
    static fromPositions(sourcePos: Position, targetPos: Position): VectorLine;
    static fromVectors(source: Vector2D, target: Vector2D): VectorLine;
}
export declare function toLineVector(source: Vector2D, target: Vector2D): Vector2D;
export declare function toVectorsFromLinePosition(line: LinePosition): [Vector2D, Vector2D];
export declare function getCenterOfLinePosition(line: LinePosition): Vector2D;
/**
 * Convert two `Position` to `LinePosition`
 * @param p1 source position of the line
 * @param p2 target position of the line
 * @returns `LinePosition` instance
 */
export declare function toLinePosition(p1: Position, p2: Position): LinePosition;
/**
 * Calculates the line position to which the margin is applied.
 * @param linePos original position of the line
 * @param sourceMargin margin for source side
 * @param targetMargin margin for target side
 * @returns the line position
 */
export declare function applyMargin(linePos: LinePosition, sourceMargin: number, targetMargin: number): LinePosition;
export declare function inverseLine(line: LinePosition): LinePosition;
export declare function calculatePerpendicularLine(line: VectorLine): VectorLine;
