export default Matrix4;
declare class Matrix4 {
    /**
     * Returns an identity matrix.
     * @public
     *
     * @returns {Matrix4}
     */
    public static identity(): Matrix4;
    /**
     * Returns a translation matrix.
     * @public
     *
     * @param {number} x
     * @param {number} y
     * @param {number} z
     * @returns {Matrix4}
     */
    public static translation(x: number, y: number, z: number): Matrix4;
    /**
     * Returns a translation matrix computed from a vector.
     * @public
     *
     * @param {Vector3|Vector4} vector
     * @returns {Matrix4}
     */
    public static translationFromVector(vector: Vector3 | Vector4): Matrix4;
    /**
     * Returns a matrix that scales things in each dimension.
     * @public
     *
     * @param {number} x
     * @param {number} y
     * @param {number} z
     * @returns {Matrix4}
     */
    public static scaling(x: number, y: number, z: number): Matrix4;
    /**
     * Returns a homogeneous matrix rotation defined by a rotation of the specified angle around the given unit axis.
     * @public
     *
     * @param {Vector3} axis - normalized
     * @param {number} angle - in radians
     * @returns {Matrix4}
     */
    public static rotationAxisAngle(axis: Vector3, angle: number): Matrix4;
    /**
     * Returns a rotation matrix in the yz plane.
     * @public
     *
     * @param {number} angle - in radians
     * @returns {Matrix4}
     */
    public static rotationX(angle: number): Matrix4;
    /**
     * Returns a rotation matrix in the xz plane.
     * @public
     *
     * @param {number} angle - in radians
     * @returns {Matrix4}
     */
    public static rotationY(angle: number): Matrix4;
    /**
     * Returns a rotation matrix in the xy plane.
     * @public
     *
     * @param {number} angle - in radians
     * @returns {Matrix4}
     */
    public static rotationZ(angle: number): Matrix4;
    /**
     * Returns the specific perspective matrix needed for certain WebGL contexts.
     * @public
     *
     * @param {number} fovYRadians
     * @param {number} aspect - aspect === width / height
     * @param {number} zNear
     * @param {number} zFar
     * @returns {Matrix4}
     */
    public static gluPerspective(fovYRadians: number, aspect: number, zNear: number, zFar: number): Matrix4;
    /**
     * @param {number} [v00]
     * @param {number} [v01]
     * @param {number} [v02]
     * @param {number} [v03]
     * @param {number} [v10]
     * @param {number} [v11]
     * @param {number} [v12]
     * @param {number} [v13]
     * @param {number} [v20]
     * @param {number} [v21]
     * @param {number} [v22]
     * @param {number} [v23]
     * @param {number} [v30]
     * @param {number} [v31]
     * @param {number} [v32]
     * @param {number} [v33]
     * @param {Matrix4.Types|undefined} [type]
     */
    constructor(v00?: number | undefined, v01?: number | undefined, v02?: number | undefined, v03?: number | undefined, v10?: number | undefined, v11?: number | undefined, v12?: number | undefined, v13?: number | undefined, v20?: number | undefined, v21?: number | undefined, v22?: number | undefined, v23?: number | undefined, v30?: number | undefined, v31?: number | undefined, v32?: number | undefined, v33?: number | undefined, type?: typeof Types | undefined);
    entries: any[];
    type: Types;
    /**
     * Sets all entries of the matrix in row-major order.
     * @public
     *
     * @param {number} v00
     * @param {number} v01
     * @param {number} v02
     * @param {number} v03
     * @param {number} v10
     * @param {number} v11
     * @param {number} v12
     * @param {number} v13
     * @param {number} v20
     * @param {number} v21
     * @param {number} v22
     * @param {number} v23
     * @param {number} v30
     * @param {number} v31
     * @param {number} v32
     * @param {number} v33
     * @param {Matrix4.Types|undefined} [type]
     * @returns {Matrix4} - Self reference
     */
    public rowMajor(v00: number, v01: number, v02: number, v03: number, v10: number, v11: number, v12: number, v13: number, v20: number, v21: number, v22: number, v23: number, v30: number, v31: number, v32: number, v33: number, type?: typeof Types | undefined): Matrix4;
    /**
     * Sets all entries of the matrix in column-major order.
     * @public
     *
     * @param {*} v00
     * @param {*} v10
     * @param {*} v20
     * @param {*} v30
     * @param {*} v01
     * @param {*} v11
     * @param {*} v21
     * @param {*} v31
     * @param {*} v02
     * @param {*} v12
     * @param {*} v22
     * @param {*} v32
     * @param {*} v03
     * @param {*} v13
     * @param {*} v23
     * @param {*} v33
     * @param {Matrix4.Types|undefined} [type]
     * @returns {Matrix4} - Self reference
     */
    public columnMajor(v00: any, v10: any, v20: any, v30: any, v01: any, v11: any, v21: any, v31: any, v02: any, v12: any, v22: any, v32: any, v03: any, v13: any, v23: any, v33: any, type?: typeof Types | undefined): Matrix4;
    /**
     * Sets this matrix to the value of the passed-in matrix.
     * @public
     *
     * @param {Matrix4} matrix
     * @returns {Matrix4} - Self reference
     */
    public set(matrix: Matrix4): Matrix4;
    /**
     * Returns the 0,0 entry of this matrix.
     * @public
     *
     * @returns {number}
     */
    public m00(): number;
    /**
     * Returns the 0,1 entry of this matrix.
     * @public
     *
     * @returns {number}
     */
    public m01(): number;
    /**
     * Returns the 0,2 entry of this matrix.
     * @public
     *
     * @returns {number}
     */
    public m02(): number;
    /**
     * Returns the 0,3 entry of this matrix.
     * @public
     *
     * @returns {number}
     */
    public m03(): number;
    /**
     * Returns the 1,0 entry of this matrix.
     * @public
     *
     * @returns {number}
     */
    public m10(): number;
    /**
     * Returns the 1,1 entry of this matrix.
     * @public
     *
     * @returns {number}
     */
    public m11(): number;
    /**
     * Returns the 1,2 entry of this matrix.
     * @public
     *
     * @returns {number}
     */
    public m12(): number;
    /**
     * Returns the 1,3 entry of this matrix.
     * @public
     *
     * @returns {number}
     */
    public m13(): number;
    /**
     * Returns the 2,0 entry of this matrix.
     * @public
     *
     * @returns {number}
     */
    public m20(): number;
    /**
     * Returns the 2,1 entry of this matrix.
     * @public
     *
     * @returns {number}
     */
    public m21(): number;
    /**
     * Returns the 2,2 entry of this matrix.
     * @public
     *
     * @returns {number}
     */
    public m22(): number;
    /**
     * Returns the 2,3 entry of this matrix.
     * @public
     *
     * @returns {number}
     */
    public m23(): number;
    /**
     * Returns the 3,0 entry of this matrix.
     * @public
     *
     * @returns {number}
     */
    public m30(): number;
    /**
     * Returns the 3,1 entry of this matrix.
     * @public
     *
     * @returns {number}
     */
    public m31(): number;
    /**
     * Returns the 3,2 entry of this matrix.
     * @public
     *
     * @returns {number}
     */
    public m32(): number;
    /**
     * Returns the 3,3 entry of this matrix.
     * @public
     *
     * @returns {number}
     */
    public m33(): number;
    /**
     * Returns whether this matrix is an identity matrix.
     * @public
     *
     * @returns {boolean}
     */
    public isIdentity(): boolean;
    /**
     * Returns whether all of this matrix's entries are finite (non-infinite and non-NaN).
     * @public
     *
     * @returns {boolean}
     */
    public isFinite(): boolean;
    /**
     * Returns the 3D translation, assuming multiplication with a homogeneous vector.
     * @public
     *
     * @returns {Vector3}
     */
    public getTranslation(): Vector3;
    get translation(): Vector3;
    /**
     * Returns a vector that is equivalent to ( T(1,0,0).magnitude, T(0,1,0).magnitude, T(0,0,1).magnitude )
     * where T is a relative transform.
     * @public
     *
     * @returns {Vector3}
     */
    public getScaleVector(): Vector3;
    get scaleVector(): Vector3;
    /**
     * Returns the CSS transform string for the associated homogeneous 3d transformation.
     * @public
     *
     * @returns {string}
     */
    public getCSSTransform(): string;
    get cssTransform(): string;
    /**
     * Returns exact equality with another matrix
     * @public
     *
     * @param {Matrix4} matrix
     * @returns {boolean}
     */
    public equals(matrix: Matrix4): boolean;
    /**
     * Returns equality within a margin of error with another matrix
     * @public
     *
     * @param {Matrix4} matrix
     * @param {number} epsilon
     * @returns {boolean}
     */
    public equalsEpsilon(matrix: Matrix4, epsilon: number): boolean;
    /**
     * Returns a copy of this matrix
     * @public
     *
     * @returns {Matrix4}
     */
    public copy(): Matrix4;
    /**
     * Returns a new matrix, defined by this matrix plus the provided matrix
     * @public
     *
     * @param {Matrix4} matrix
     * @returns {Matrix4}
     */
    public plus(matrix: Matrix4): Matrix4;
    /**
     * Returns a new matrix, defined by this matrix plus the provided matrix
     * @public
     *
     * @param {Matrix4} matrix
     * @returns {Matrix4}
     */
    public minus(matrix: Matrix4): Matrix4;
    /**
     * Returns a transposed copy of this matrix
     * @public
     *
     * @returns {Matrix4}
     */
    public transposed(): Matrix4;
    /**
     * Returns a negated copy of this matrix
     * @public
     *
     * @returns {Matrix3}
     */
    public negated(): Matrix3;
    /**
     * Returns an inverted copy of this matrix
     * @public
     *
     * @returns {Matrix3}
     */
    public inverted(): Matrix3;
    /**
     * Returns a matrix, defined by the multiplication of this * matrix.
     * @public
     *
     * @param {Matrix4} matrix
     * @returns {Matrix4} - NOTE: this may be the same matrix!
     */
    public timesMatrix(matrix: Matrix4): Matrix4;
    /**
     * Returns the multiplication of this matrix times the provided vector
     * @public
     *
     * @param {Vector4} vector4
     * @returns {Vector4}
     */
    public timesVector4(vector4: Vector4): Vector4;
    /**
     * Returns the multiplication of this matrix times the provided vector (treating this matrix as homogeneous, so that
     * it is the technical multiplication of (x,y,z,1)).
     * @public
     *
     * @param {Vector3} vector3
     * @returns {Vector3}
     */
    public timesVector3(vector3: Vector3): Vector3;
    /**
     * Returns the multiplication of this matrix's transpose times the provided vector
     * @public
     *
     * @param {Vector4} vector4
     * @returns {Vector4}
     */
    public timesTransposeVector4(vector4: Vector4): Vector4;
    /**
     * Returns the multiplication of this matrix's transpose times the provided vector (homogeneous).
     * @public
     *
     * @param {Vector3} vector3
     * @returns {Vector3}
     */
    public timesTransposeVector3(vector3: Vector3): Vector3;
    /**
     * Equivalent to the multiplication of (x,y,z,0), ignoring the homogeneous part.
     * @public
     *
     * @param {Vector3} vector3
     * @returns {Vector3}
     */
    public timesRelativeVector3(vector3: Vector3): Vector3;
    /**
     * Returns the determinant of this matrix.
     * @public
     *
     * @returns {number}
     */
    public getDeterminant(): number;
    get determinant(): number;
    /**
     * Returns a string form of this object
     * @public
     *
     * @returns {string}
     */
    public toString(): string;
    /**
     * Makes this matrix effectively immutable to the normal methods (except direct setters?)
     * @public
     *
     * @returns {Matrix3} - Self reference
     */
    public makeImmutable(): Matrix3;
    /**
     * Copies the entries of this matrix over to an arbitrary array (typed or normal).
     * @public
     *
     * @param {Array|Float32Array|Float64Array} array
     * @returns {Array|Float32Array|Float64Array} - Returned for chaining
     */
    public copyToArray(array: any[] | Float32Array | Float64Array): any[] | Float32Array | Float64Array;
}
declare namespace Matrix4 {
    export { Types };
    export let IDENTITY: Matrix3;
}
declare class Types extends EnumerationValue {
    static OTHER: Types;
    static IDENTITY: Types;
    static TRANSLATION_3D: Types;
    static SCALING: Types;
    static AFFINE: Types;
    static enumeration: Enumeration<Types>;
}
import Vector3 from './Vector3.js';
import Vector4 from './Vector4.js';
import EnumerationValue from '../../phet-core/js/EnumerationValue.js';
import Enumeration from '../../phet-core/js/Enumeration.js';
//# sourceMappingURL=Matrix4.d.ts.map