import { AnyShapeStyle, StrokeStyle } from '../../common/configs';
import { EdgeLabelArea, LinePosition, Position } from '../../common/types';
import { Vector2D } from '../vector2d';
import { VectorLine } from './line';
/**
 * Calculate the position to display the edge label from the
 * positions of the edge.
 * @param linePos line segment between the outermost of the nodes
 * @param edgeStyle stroke style of edges
 * @param margin margin from line
 * @param padding padding from outside
 * @param scale scale factor
 * @returns edge label display area
 */
export declare function calculateEdgeLabelArea(linePos: LinePosition, edgeStyle: StrokeStyle, margin: number, padding: number, scale: number): EdgeLabelArea;
/**
 * Calculate the distances between center of node and edge of node.
 * @param sourceNodePos position of source node
 * @param targetNodePos position of target node
 * @param sourceNodeShape shape config of source node
 * @param targetNodeShape shape config of target node
 * @returns the distances
 */
export declare function calculateDistancesFromCenterOfNodeToEndOfNode(sourceNodePos: Position, targetNodePos: Position, sourceNodeShape: AnyShapeStyle, targetNodeShape: AnyShapeStyle): [number, number];
/**
 * Calculates the position of a given distance along the circumference.
 * @param pos original position
 * @param center center of the circle
 * @param radian radius of the circle
 * @returns the moved position
 */
export declare function moveOnCircumference(pos: Position, center: Position, radian: number): {
    x: number;
    y: number;
};
/**
 * Reverse the direction of the angle.
 * @param theta angle
 * @returns reversed angle
 */
export declare function reverseAngleRadian(theta: number): number;
export declare function calculateBezierCurveControlPoint(p1: Vector2D, center: Vector2D, p2: Vector2D, theta0: number): Vector2D[];
export declare function calculateRelativeAngleRadian(line1: VectorLine, line2: VectorLine): number;
export declare function calculateCircleCenterAndRadiusBy3Points(p1: Vector2D, p2: Vector2D, p3: Vector2D): [Vector2D, number];
