import { Euler, Matrix4, Point, Rectangle, Vector3 } from '@vertexvis/geometry';
import { AngleUnitType, DistanceUnitType, Frame, Viewport } from '../../lib/types';
import { ModifierKey } from '../../lib/types/keys';
import { TransformWidgetInputPlacement } from './viewer-transform-widget-components';
export interface PointAndPlacement {
    point: Point.Point;
    placement: TransformWidgetInputPlacement;
}
export declare function convertPointToCanvas(point: Point.Point, bounds?: DOMRect): Point.Point | undefined;
export declare function convertCanvasPointToWorld(point?: Point.Point, frame?: Frame, viewport?: Viewport, transform?: Matrix4.Matrix4): Vector3.Vector3 | undefined;
export declare function computeInputDeltaTransform(current: Matrix4.Matrix4, identifier: string, value: number, lastValue: number, distanceUnit: DistanceUnitType, angleUnit: AngleUnitType): Matrix4.Matrix4;
export declare function eulerOrderForIdentifier(identifier: string): Euler.EulerOrder;
export declare function computeInputDisplayValue(identifier: string, current: Matrix4.Matrix4, start: Matrix4.Matrix4, distanceUnit: DistanceUnitType, angleUnit: AngleUnitType): number;
export declare function computeHandleDeltaTransform(current: Matrix4.Matrix4, previous: Vector3.Vector3, next: Vector3.Vector3, viewVector: Vector3.Vector3, angle: number, identifier: string): Matrix4.Matrix4;
export declare function performRotationAroundAxis(currentTransformationMatrix: Matrix4.Matrix4, viewVector: Vector3.Vector3, localRotationAxis: Vector3.Vector3, rotationAngle: number): Matrix4.Matrix4;
export declare function computeRotationAxis(currentTransformationMatrix: Matrix4.Matrix4, viewVector: Vector3.Vector3, localRotationAxis: Vector3.Vector3): Vector3.Vector3;
export declare function performTranslationConstrainedToAxis(currentTransformationMatrix: Matrix4.Matrix4, translationVectorWorld: Vector3.Vector3, constrainToLocalAxis: Vector3.Vector3): Matrix4.Matrix4;
export declare function performTranslationConstrainedToPlane(currentTransformationMatrix: Matrix4.Matrix4, translationVectorWorld: Vector3.Vector3, localNormalVectorToPlane: Vector3.Vector3): Matrix4.Matrix4;
export declare function computeInputPosition(viewport: Viewport, bounds: Rectangle.Rectangle, shapePoints: Point.Point[]): PointAndPlacement;
export declare function calculateNewRotationAngle(event: PointerEvent, rotationSnapKey: ModifierKey, angleOfRotation: number, // In radians
lastAngle: number, // In radians
existingAngle?: number, // In degrees
rotationSnapDegrees?: number): number;
