import { TgdMat3 } from "./mat3";
import { TgdQuat } from "./quat";
import { TgdVec3 } from "./vec3";
import { TgdVec4 } from "./vec4";
import { ArrayNumber16, ArrayNumber3, ArrayNumber4 } from "..";
/**
 * Column-first 4x4 matrix.
 *
 * - `m12` means row 2 and column 3 (__A__).
 * - `m20` means row 3 and column 1 (__B__).
 *
 * ```
 * +-+-+-+-+
 * | | | | |
 * +-+-+-+-+
 * | | |A| |
 * +-+-+-+-+
 * |B| | | |
 * +-+-+-+-+
 * | | | | |
 * +-+-+-+-+
 * ```
 *
 * This is how mathematicians use matrices.
 *
 * But, internally, for WebGL compliance, we store the data like this:
 *
 * ```
 * +--+--+--+--+
 * | 0| 4| 8|12|
 * +--+--+--+--+
 * | 1| 5| 9|13|
 * +--+--+--+--+
 * | 2| 6|10|14|
 * +--+--+--+--+
 * | 3| 7|11|15|
 * +--+--+--+--+
 * ```
 *
 * That's why is better to access members through the accessor `m00`, `m01`, etc.
 */
export declare class TgdMat4 extends Float32Array {
    constructor();
    constructor(mat: TgdMat4);
    constructor(m00: number, m10: number, m20: number, m30: number, m01: number, m11: number, m21: number, m31: number, m02: number, m12: number, m22: number, m32: number, m03: number, m13: number, m23: number, m33: number);
    reset(row0?: ArrayNumber4 | TgdVec4, row1?: ArrayNumber4 | TgdVec4, row2?: ArrayNumber4 | TgdVec4, row3?: ArrayNumber4 | TgdVec4): this;
    multiply(mat: TgdMat4): this;
    /**
     * @param from This matrix will become the inversion of `from`.
     * If not defined, the matrix will invert itself.
     */
    invert(from?: TgdMat4): this;
    get translation(): TgdVec3;
    set translation(vec: TgdVec3 | TgdVec4 | ArrayNumber3 | ArrayNumber4);
    toTanslation(target: TgdVec3 | TgdVec4): this;
    /**
     * Add `delta` to the current translation.
     */
    translate(delta: TgdVec3 | TgdVec4 | ArrayNumber3 | ArrayNumber4): this;
    from(mat: TgdMat4 | ArrayNumber16): this;
    fromMat3(mat: TgdMat3 | TgdMat4): this;
    toAxes(axisX: TgdVec3, axisY: TgdVec3, axisZ: TgdVec3): this;
    toAxisX(axisX: TgdVec3): this;
    toAxisY(axisY: TgdVec3): this;
    toAxisZ(axisZ: TgdVec3): this;
    fromQuat({ x, y, z, w }: Readonly<TgdQuat>): this;
    get m00(): number;
    set m00(v: number);
    get m10(): number;
    set m10(v: number);
    get m20(): number;
    set m20(v: number);
    get m30(): number;
    set m30(v: number);
    get m01(): number;
    set m01(v: number);
    get m11(): number;
    set m11(v: number);
    get m21(): number;
    set m21(v: number);
    get m31(): number;
    set m31(v: number);
    get m02(): number;
    set m02(v: number);
    get m12(): number;
    set m12(v: number);
    get m22(): number;
    set m22(v: number);
    get m32(): number;
    set m32(v: number);
    get m03(): number;
    set m03(v: number);
    get m13(): number;
    set m13(v: number);
    get m23(): number;
    set m23(v: number);
    get m33(): number;
    set m33(v: number);
    debug(caption?: string): void;
}
//# sourceMappingURL=mat4.d.ts.map