import mat3 from './mat3';
import vec3 from './vec3';
import vec4 from './vec4';
export default class mat4 {
    constructor(values?: number[]);
    private values;
    static readonly identity: mat4;
    at(index: number): number;
    init(values: number[]): mat4;
    reset(): void;
    copy(dest?: mat4): mat4;
    all(): number[];
    row(index: number): number[];
    col(index: number): number[];
    equals(matrix: mat4, threshold?: number): boolean;
    determinant(): number;
    setIdentity(): mat4;
    transpose(): mat4;
    inverse(): mat4;
    multiply(matrix: mat4): mat4;
    multiplyVec3(vector: vec3): vec3;
    multiplyVec4(vector: vec4, dest?: vec4): vec4;
    toMat3(): mat3;
    toInverseMat3(): mat3;
    translate(vector: vec3): mat4;
    scale(vector: vec3): mat4;
    rotate(angle: number, axis: vec3): mat4;
    static frustum(left: number, right: number, bottom: number, top: number, near: number, far: number): mat4;
    static perspective(fov: number, aspect: number, near: number, far: number): mat4;
    static orthographic(left: number, right: number, bottom: number, top: number, near: number, far: number): mat4;
    static lookAt(position: vec3, target: vec3, up?: vec3): mat4;
    static product(m1: mat4, m2: mat4, result: mat4): mat4;
}
