import { Vector3 } from "./Vector3";
/** 3x3 Matrix */
export declare class Matrix3 {
    elements: [[number, number, number], [number, number, number], [number, number, number]];
    constructor(elements: [[number, number, number], [number, number, number], [number, number, number]]);
    /**
     * Creates a new Matrix3
     */
    static create(elements?: number[][]): Matrix3;
    /**
     * Returns an identity Matrix3
     */
    static identity(): Matrix3;
    /**
     * Sets the given matrix in place
     * @param matrix Matrix3
     * @param n11_n33 number elements
     */
    static set(matrix: Matrix3, n11: number, n12: number, n13: number, n21: number, n22: number, n23: number, n31: number, n32: number, n33: number): void;
    /**
     * Creates new matrix from input
     * @param matrix Matrix3
     */
    static clone(matrix: Matrix3): Matrix3;
    /**
     * Copies values from input matrix 1 to input matrix 2
     * @param from Matrix3 1
     * @param to Matrix3 2
     */
    static copy(from: Matrix3, to: Matrix3): void;
    /**
     * Creates a new Matrix3 with absolute values of elements
     * @param input
     */
    static absoluteElements(input: Matrix3): Matrix3;
    /**
     * Creates a new Matrix3 with A + B
     * @param matA Matrix3 A
     * @param matB Matrix3 B
     */
    static add(matA: Matrix3, matB: Matrix3): Matrix3;
    /**
     * Creates new Matrix3 and multiplies matrix with scalar (on all elements)
     * @param matrix Matrix3
     * @param scalar number
     */
    static multiplyScalar(matrix: Matrix3, scalar: number): Matrix3;
    /**
     * Creates a new Matrix3 with A * B
     * @param matA Matrix3 A
     * @param matB Matrix3 B
     */
    static multiply(matA: Matrix3, matB: Matrix3): Matrix3;
    /**
     * Returns product of vector and matrix as new vec3
     * @param vector vec3
     * @param matrix Matrix3
     */
    static multiplyWithVector3(vector: Vector3, matrix: Matrix3): Vector3;
    /**
     * Returns the inverse from matrix
     * @param matrix Matrix3
     */
    static getInverse(matrix: Matrix3): Matrix3 | undefined;
    /**
     * Returns the transposed matrix as a new Matrix3
     * @param matrix Matrix3
     */
    static transpose(matrix: Matrix3): Matrix3;
    /**
     * Returns the scale matrix for given scale vector
     * @param scale vec3
     */
    static getScale(scale: Vector3): Matrix3;
    /**
     * Builds a new rotation matrix with rotationNormal and angle in Rad
     * @param rotationNormal Vec3
     * @param angRad number in Radians
     */
    static makeRotationMatrixFromNormalVector(rotationNormal: Vector3, angRad: number): Matrix3;
    /**
     * Returns the X rotation matrix for given angle
     * @param angle in radians (number)
     */
    static getXRotationMatrix(angle: number): Matrix3;
    /**
     * Returns the Y rotation matrix for given angle
     * @param angle in radians (number)
     */
    static getYRotationMatrix(angle: number): Matrix3;
    /**
     * Returns the Z rotation matrix for given angle
     * @param angle in radians (number)
     */
    static getZRotationMatrix(angle: number): Matrix3;
    /**
     * Computes determinant of given Matrix3
     * @param matrix Matrix3
     */
    static determinant(matrix: Matrix3): number;
    /**
     * Checks if both matrices are equal
     * @param matA Matrix3
     * @param matB Matrix3
     */
    static equals(matA: Matrix3, matB: Matrix3): boolean;
    /**
     * Returns a String representing the given matrix
     * @param matrix Matrix3
     */
    static stringify(matrix: Matrix3): String;
}
