export type Matrix3D = [
    [
        number,
        number,
        number,
        number
    ],
    [
        number,
        number,
        number,
        number
    ],
    [
        number,
        number,
        number,
        number
    ],
    [
        number,
        number,
        number,
        number
    ]
];
export type OperationData = {
    type: "rotateX" | "rotateY" | "rotateZ";
    angle: number;
} | {
    type: "translate";
    x: number;
    y: number;
    z: number;
} | {
    type: "scale";
    factorX: number;
    factorY: number;
    factorZ: number;
} | {
    type: "perspective";
    fieldOfViewInRadians: number;
    aspect: number;
    near: number;
    far: number;
} | {
    type: "matrix";
    matrix: Matrix3D;
};
export declare function IDENTITY_MATRIX(): Matrix3D;
export declare function generateMatrixFromOperations(...operations: OperationData[]): Matrix3D;
type NumberMatrix = readonly (readonly number[])[];
export declare function multiplyMatrixes<X extends NumberMatrix>(matrix1: X, matrix2: NumberMatrix & {
    length: X[number]["length"];
}): number[][];
export declare function invertMatrix(matrix: Matrix3D): Matrix3D;
export declare function flattenMatrix(matrix: number[][]): number[];
export {};
