import { EulerOrder } from "./definitions";
/**
 * Transformation Matrix helper class.
 *
 * Adapted from mrdoob/three.js at
 * https://github.com/mrdoob/three.js/blob/d4aa9e00ea29808534a3e082f602c544e5f2419c/src/math/Matrix3.js
 * */
export declare class Matrix {
    private elements;
    getElements(): number[];
    /** XYZ Position */
    getPosition(): [number, number, number];
    /**
     * @param order - Euler angle order.
     * returns [X, Y, Z, RX, RY, RZ]
     */
    getPose(order?: EulerOrder): [number, number, number, number, number, number];
    /** Set from a flat 4x4 column major transformation matrix */
    setFromMatrixArray(matrix: number[]): this;
    setPose(x: number, y: number, z: number, rx: number, ry: number, rz: number, order?: EulerOrder): this;
    setPosition(x: number, y: number, z: number): this;
    /** Set from euler angles in degrees. */
    setRotation(x: number, y: number, z: number, order?: EulerOrder): this;
    setRotationFromQuaternion(x: number, y: number, z: number, w: number): this;
    /** Creates a new Matrix that is the product of this matrix and the passed one. */
    multiplied(m: Matrix): Matrix;
    /** Multiply this matrix by the passed one */
    multiply(matrix: Matrix): this;
    /** Alias for multiply */
    transform(matrix: Matrix): this;
    /** Rotates this matrix by the supplied quaternion */
    applyQuaternion(x: number, y: number, z: number, w: number): Matrix;
    /** Create a new matrix that represents this one rotated by the passed angles */
    rotated(x: number, y: number, z: number, order?: EulerOrder): Matrix;
    /** Rotate this matrix by the passed angles */
    rotate(x: number, y: number, z: number, order?: EulerOrder): this;
    /** Returns a three length array representing angles in degrees */
    getEuler(order?: EulerOrder): [number, number, number];
    /** Returns a quaternion representing this rotation as XYZW */
    toQuaternion(): [number, number, number, number];
    /** Extract the rotational portion of this matrix to a 3x3 column-major flat array */
    toMatrix3Array(): number[];
    toJSON(): number[];
    toArray(): number[];
    clone(): Matrix;
    static fromPose(x: number, y: number, z: number, rx: number, ry: number, rz: number, order?: EulerOrder): Matrix;
    /** Create a new matrix from a flat 4x4 column-major array */
    static fromArray(matrix: number[]): Matrix;
}
