import { Euler } from './Euler';
import { Matrix3 } from './Matrix3';
import { Quaternion } from './Quaternion';
import { Vector3 } from './Vector3';
declare class Matrix4 {
    readonly isMatrix4: boolean;
    elements: number[];
    constructor();
    set(n11: number, n12: number, n13: number, n14: number, n21: number, n22: number, n23: number, n24: number, n31: number, n32: number, n33: number, n34: number, n41: number, n42: number, n43: number, n44: number): this;
    identity(): this;
    clone(): Matrix4;
    copy(m: Matrix4): this;
    copyPosition(m: Matrix4): this;
    setFromMatrix3(m: Matrix3): this;
    extractBasis(xAxis: Vector3, yAxis: Vector3, zAxis: Vector3): this;
    makeBasis(xAxis: Vector3, yAxis: Vector3, zAxis: Vector3): this;
    extractRotation(m: Matrix4): this;
    makeRotationFromEuler(euler: Euler): this;
    makeRotationFromQuaternion(q: Quaternion): this;
    lookAt(eye: Vector3, target: Vector3, up: Vector3): this;
    multiply(m: Matrix4): this;
    multiplied(m: Matrix4): Matrix4;
    premultiply(m: Matrix4): this;
    premultiplied(m: Matrix4): Matrix4;
    multiplyMatrices(a: Matrix4, b: Matrix4): this;
    multiplyScalar(s: number): this;
    determinant(): number;
    transpose(): this;
    setPosition(x?: number, y?: number, z?: number): this;
    invert(): this;
    inverted(): Matrix4;
    scale(v: Vector3): this;
    getMaxScaleOnAxis(): number;
    makeTranslation(x: number, y: number, z: number): this;
    makeRotationX(theta: number): this;
    makeRotationY(theta: number): this;
    makeRotationZ(theta: number): this;
    makeRotationAxis(axis: Vector3, angle: number): this;
    makeScale(x: number, y: number, z: number): this;
    makeShear(x: number, y: number, z: number): this;
    compose(position: Vector3, quaternion: Quaternion, scale: Vector3): this;
    decompose(position: Vector3, quaternion: Quaternion, scale: Vector3): this;
    makePerspective(left: number, right: number, top: number, bottom: number, near: number, far: number): this;
    makeOrthographic(left: number, right: number, top: number, bottom: number, near: number, far: number): this;
    equals(matrix: Matrix4): boolean;
    fromArray(array: number[] | ArrayLike<number>, offset?: number): this;
    toArray(array?: number[], offset?: number): number[];
}
export { Matrix4 };
