import { Box } from './Box';
import { Plane3D } from './Plane3D';
import { Quaternion } from './Quaternion';
import { Sphere } from './Sphere';
import { Vector3D } from './Vector3D';
export declare class Matrix3D {
    private static _identityData;
    private static _tempMatrix;
    /**
     * A reference to a Matrix3D to be used as a temporary data container, preventing object creation.
     */
    static CALCULATION_MATRIX: Matrix3D;
    static getAxisRotationMatrix(x: number, y: number, z: number, degrees: number, target?: Matrix3D): Matrix3D;
    static getPointAtMatrix(pos: Vector3D, dir: Vector3D, up: Vector3D, target?: Matrix3D): Matrix3D;
    /**
     * Fills the 3d matrix with values representing the transformation made by the given quaternion.
     *
     * @param    quarternion    The quarterion object to convert.
     */
    static getQuaternionMatrix(quarternion: Quaternion, target?: Matrix3D): Matrix3D;
    /**
     * Returns a boolean value representing whether there is any difference between the two given 3d matrices.
     */
    static compare(m1: Matrix3D, m2: Matrix3D): boolean;
    /**
     * A Vector of 16 Numbers, where every four elements is a column of a 4x4 matrix.
     *
     * <p>An exception is thrown if the _rawData property is set to a matrix that is not invertible. The Matrix3D
     * object must be invertible. If a non-invertible matrix is needed,
     * create a subexport class of the Matrix3D object.</p>
     */
    _rawData: Float32Array;
    private _position;
    private _components;
    /**
     * [read-only] A number that determines whether a matrix is invertible.
     */
    get determinant(): number;
    /**
     * A Vector3D object that holds the position, the 3D coordinate (x,y,z) of a display object within the
     * transformation's frame of reference.
     */
    get position(): Vector3D;
    /**
     * Creates a Matrix3D object.
     */
    constructor(rawData?: Float32Array);
    /**
     * Appends the matrix by multiplying another Matrix3D object by the current Matrix3D object.
     */
    append(lhs: Matrix3D): void;
    /**
     * Appends an incremental rotation to a Matrix3D object.
     */
    appendRotation(degrees: number, axis: Vector3D): void;
    /**
     * Appends an incremental skew change along the x, y, and z axes to a Matrix3D object.
     */
    appendSkew(xSkew: number, ySkew: number, zSkew: number): void;
    /**
     * Appends an incremental scale change along the x, y, and z axes to a Matrix3D object.
     */
    appendScale(xScale: number, yScale: number, zScale: number): void;
    /**
    *Appends an incremental translation, a repositioning along the x, y, and z axes, to a Matrix3D object.
     */
    appendTranslation(x: number, y: number, z: number): void;
    /**
     * Returns a new Matrix3D object that is an exact copy of the current Matrix3D object.
     */
    clone(): Matrix3D;
    /**
     * Copies a Vector3D object into specific column of the calling Matrix3D object.
     */
    copyColumnFrom(column: number, vector3D: Vector3D): void;
    /**
     * Copies specific column of the calling Matrix3D object into the Vector3D object.
     */
    copyColumnTo(column: number, vector3D: Vector3D, negate?: boolean): void;
    /**
     * Copies all of the matrix data from the source Matrix3D object into the calling Matrix3D object.
     */
    copyFrom(source: Matrix3D, transpose?: boolean): void;
    /**
     * Copies this Matrix3D object into a destination Matrix3D object.
     */
    copyTo(target: Matrix3D, transpose?: boolean): void;
    copyRawDataFrom(sourceData: Float32Array, offset?: number, transpose?: boolean): void;
    copyRawDataTo(targetData: Float32Array, offset?: number, transpose?: boolean): void;
    /**
     * Copies a Vector3D object into specific row of the calling Matrix3D object.
     */
    copyRowFrom(row: number, vector3D: Vector3D): void;
    /**
     * Copies specific row of the calling Matrix3D object into the Vector3D object.
     */
    copyRowTo(row: number, vector3D: Vector3D, negate?: boolean): void;
    private static COL_X;
    private static COL_Y;
    private static COL_Z;
    /**
     * Returns the transformation matrix's translation, rotation, and scale
     * settings as a Vector of three Vector3D objects.
     */
    decompose(orientationStyle?: string): Vector3D[];
    /**
     * Uses the transformation matrix without its translation elements to transform a Vector3D object from one space
     * coordinate to another.
     */
    deltaTransformVector(v: Vector3D, t?: Vector3D): Vector3D;
    deltaTransformVectors(vin: Array<number>, vout: Array<number>): void;
    /**
     * Converts the current matrix to an identity or unit matrix.
     */
    identity(): void;
    /**
     * Inverts the current matrix.
     */
    invert(): boolean;
    isIdentity(): boolean;
    /**
     * Prepends a matrix by multiplying the current Matrix3D object by another Matrix3D object.
     */
    prepend(rhs: Matrix3D): void;
    /**
     * Prepends an incremental rotation to a Matrix3D object.
     */
    prependRotation(degrees: number, axis: Vector3D): void;
    /**
     * Prepends an incremental scale change along the x, y, and z axes to a Matrix3D object.
     */
    prependScale(xScale: number, yScale: number, zScale: number): void;
    /**
     * Prepends an incremental translation, a repositioning along the x, y, and z axes, to a Matrix3D object.
     */
    prependTranslation(x: number, y: number, z: number): void;
    /**
     * Sets the transformation matrix's translation, rotation, and scale settings.
     */
    recompose(components: Vector3D[]): void;
    reflect(plane: Plane3D): void;
    transformBox(box: Box, target?: Box): Box;
    transformSphere(sphere: Sphere, target?: Sphere): Sphere;
    transformVector(vector: Vector3D, target?: Vector3D, ignoreW?: boolean): Vector3D;
    /**
     * Uses the transformation matrix to transform a Vector of Numbers from one coordinate space to another.
     */
    transformVectors(vin: number[], vout: number[]): void;
    /**
     * Converts the current Matrix3D object to a matrix where the rows and columns are swapped.
     */
    transpose(): void;
    toFixed(decimalPlace: number): string;
    toString(): string;
}
//# sourceMappingURL=Matrix3D.d.ts.map