/**
 * @author @thkruz Theodore Kruczek
 * @license AGPL-3.0-or-later
 * @copyright (c) 2025 Kruczek Labs LLC
 *
 * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
 * terms of the GNU Affero General Public License as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option) any later version.
 *
 * Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License along with
 * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
 */
import { Matrix, Radians, RadiansPerSecond, Vector, Vector3D } from '../main.js';
export declare class Quaternion {
    x: number;
    y: number;
    z: number;
    w: number;
    constructor(x: number, y: number, z: number, w: number);
    static readonly zero: Quaternion;
    static readonly one: Quaternion;
    static readonly xAxis: Quaternion;
    static readonly yAxis: Quaternion;
    static readonly zAxis: Quaternion;
    toString(precision?: number): string;
    positivePolar(): Quaternion;
    magnitudeSquared(): number;
    magnitude(): number;
    scale(n: number): Quaternion;
    negate(): Quaternion;
    normalize(): Quaternion;
    conjugate(): Quaternion;
    inverse(): Quaternion;
    add(q: Quaternion): Quaternion;
    subtract(q: Quaternion): Quaternion;
    addReal(n: number): Quaternion;
    multiply(q: Quaternion): Quaternion;
    dot(q: Quaternion): number;
    rotateVector(v: Vector): Vector;
    rotateVector3D(v: Vector3D): Vector3D;
    lerp(q: Quaternion, t: number): Quaternion;
    slerp(q: Quaternion, t: number): Quaternion;
    toVector3D(): Vector3D;
    angle(q: Quaternion): Radians;
    geodesicAngle(q: Quaternion): Radians;
    distance(q: Quaternion): number;
    delta(qTo: Quaternion): Quaternion;
    toDirectionCosineMatrix(): Matrix;
    toRotationMatrix(): Matrix;
    vectorAngle(observer: Vector3D, target: Vector3D, forward: Vector3D): number;
    kinematics(angularVelocity: Vector3D<RadiansPerSecond>): Quaternion;
}
