import { Euler, Quaternion } from 'three';
export declare const EPSILON = 0.0001;
type OrientationVectorLike = OrientationVector | {
    x: number;
    y: number;
    z: number;
    th: number;
};
/**
 * Golang: https://github.com/viamrobotics/rdk/blob/main/spatialmath/orientationVector.go
 * Rust:   https://github.com/viamrobotics/rust-utils/blob/main/src/spatialmath/utils.rs
 */
/**
 * Viam’s orientation vector is a method for describing the orientation of an object in 3D space.
 * It is part of a Pose which also includes the position in 3D space.
 *
 * The vector extends from the center of the object to another point in the reference frame. This defines the direction something is pointing in.
 *
 * @see https://docs.viam.com/internals/orientation-vector/
 */
export declare class OrientationVector {
    #private;
    readonly isOrientationVector = true;
    autoNormalize: boolean;
    constructor(x?: number, y?: number, z?: number, th?: number);
    get units(): 'degrees' | 'radians';
    /**
     * The vector's x component.
     * @default 0
     */
    get x(): number;
    set x(value: number);
    /**
     * The vector's y component.
     * @default 0
     */
    get y(): number;
    set y(value: number);
    /**
     * The vector's z component.
     * @default 0
     */
    get z(): number;
    set z(value: number);
    /**
     * Describes the rotation around the vector.
     * @default 0
     */
    get th(): number;
    set th(value: number);
    get w(): number;
    set w(value: number);
    _onChange(callback: () => void): this;
    /**
     * Sets the value of this orientation vector.
     */
    set(x?: number, y?: number, z?: number, th?: number): this;
    setUnits(units: 'degrees' | 'radians'): this;
    /**
     * Computes the length of this orientation vector.
     */
    length(): number;
    /**
     * Normalizes the vector component.
     */
    normalize(): this;
    /**
     * Copies value of ov to this orientation vector.
     */
    copy(ov: OrientationVectorLike): this;
    equals(orientationVector: OrientationVectorLike): boolean;
    fromArray(array: number[], offset?: number): this;
    toArray(array?: number[], offset?: number): number[];
    toJson(): number[];
    setFromQuaternion(quaternion: Quaternion): this;
    toQuaternion(dest: Quaternion): Quaternion;
    toEuler(dest: Euler): Euler;
}
export {};
