import { TgdMat3 } from "./mat3";
import { TgdMat4 } from "./mat4";
import { TgdVec3 } from "./vec3";
import { TgdVec4 } from "./vec4";
import { ArrayNumber3 } from "../types";
/**
 * A string with three axes:
 * * the right axis
 * * the up axis
 * * the axis toward the camera.
 */
export type TgdQuatFace = keyof typeof FACES;
export declare class TgdQuat extends TgdVec4 {
    static fromMatrix(mat: TgdMat3): TgdQuat;
    static fromFace(face: TgdQuatFace): TgdQuat;
    static fromSlerp(valueAtT0: TgdQuat, valueAtT1: TgdQuat, t: number): TgdQuat;
    constructor();
    constructor(source: TgdQuat);
    constructor(source: TgdVec4);
    constructor(x: number);
    constructor(x: number, y: number);
    constructor(x: number, y: number, z: number);
    constructor(x: number, y: number, z: number, w: number);
    clone(): TgdQuat;
    multiply(q: TgdQuat): TgdQuat;
    fromSlerp(valueAtT0: TgdQuat, valueAtT1: TgdQuat, t: number): this;
    fromAxesTransposed([m00, m01, m02]: Readonly<TgdVec3 | ArrayNumber3>, [m10, m11, m12]: Readonly<TgdVec3 | ArrayNumber3>, [m20, m21, m22]: Readonly<TgdVec3 | ArrayNumber3>): this;
    fromAxes(X: Readonly<TgdVec3 | ArrayNumber3>, Y: Readonly<TgdVec3 | ArrayNumber3>, Z: Readonly<TgdVec3 | ArrayNumber3>): this;
    fromMatrix(mat: TgdMat3 | TgdMat4): this;
    rotateAround(axis: TgdVec3, angleInRadians: number): this;
    static rotateAroundX(angleInRadians: number): TgdQuat;
    rotateAroundX(angleInRadians: number): this;
    static rotateAroundY(angleInRadians: number): TgdQuat;
    rotateAroundY(angleInRadians: number): this;
    static rotateAroundZ(angleInRadians: number): TgdQuat;
    rotateAroundZ(angleInRadians: number): this;
    toAxisX(vec: TgdVec3 | TgdVec4): typeof vec;
    toAxisY(vec: TgdVec3 | TgdVec4): typeof vec;
    toAxisZ(vec: TgdVec3 | TgdVec4): typeof vec;
    toMatrix(mat: TgdMat3 | TgdMat4): typeof mat;
    invert(): this;
    face(face?: TgdQuatFace): this;
}
declare const FACES: {
    "-X-Y+Z": number[];
    "-X-Z-Y": number[];
    "-X+Y-Z": number[];
    "-X+Z+Y": number[];
    "-Y-X-Z": number[];
    "-Y-Z+X": number[];
    "-Y+X+Z": number[];
    "-Y+Z-X": number[];
    "-Z-X+Y": number[];
    "-Z-Y-X": number[];
    "-Z+X-Y": number[];
    "-Z+Y+X": number[];
    "+X-Y-Z": number[];
    "+X-Z+Y": number[];
    "+X+Y+Z": number[];
    "+X+Z-Y": number[];
    "+Y-X+Z": number[];
    "+Y-Z-X": number[];
    "+Y+X-Z": number[];
    "+Y+Z+X": number[];
    "+Z-X-Y": number[];
    "+Z-Y+X": number[];
    "+Z+X+Y": number[];
    "+Z+Y-X": number[];
};
export {};
//# sourceMappingURL=quat.d.ts.map