export default Matrix;
declare class Matrix {
    /**
     * sqrt(a^2 + b^2) without under/overflow.
     * @public
     *
     * @param {number} a
     * @param {number} b
     * @returns {number}
     */
    public static hypot(a: number, b: number): number;
    /**
     * Sets this matrix to the identity.
     * @public
     *
     * @param {number} m
     * @param {number} n
     * @returns {Matrix}
     */
    public static identity(m: number, n: number): Matrix;
    /**
     * Returns a square diagonal matrix, whose entries along the diagonal are specified by the passed-in array, and the
     * other entries are 0.
     * @public
     *
     * @param {Array.<number>} diagonalValues
     * @returns {Matrix}
     */
    public static diagonalMatrix(diagonalValues: Array<number>): Matrix;
    /**
     * @public
     *
     * @param {Vector2} vector
     * @returns {Matrix}
     */
    public static rowVector2(vector: Vector2): Matrix;
    /**
     * @public
     *
     * @param {Vector3} vector
     * @returns {Matrix}
     */
    public static rowVector3(vector: Vector3): Matrix;
    /**
     * @public
     *
     * @param {Vector4} vector
     * @returns {Matrix}
     */
    public static rowVector4(vector: Vector4): Matrix;
    /**
     * @public
     *
     * @param {Vector2|Vector3|Vector4} vector
     * @returns {Matrix}
     */
    public static rowVector(vector: Vector2 | Vector3 | Vector4): Matrix;
    /**
     * @public
     *
     * @param {Vector2} vector
     * @returns {Matrix}
     */
    public static columnVector2(vector: Vector2): Matrix;
    /**
     * @public
     *
     * @param {Vector3} vector
     * @returns {Matrix}
     */
    public static columnVector3(vector: Vector3): Matrix;
    /**
     * @public
     *
     * @param {Vector4} vector
     * @returns {Matrix}
     */
    public static columnVector4(vector: Vector4): Matrix;
    /**
     * @public
     *
     * @param {Vector2|Vector3|Vector4} vector
     * @returns {Matrix}
     */
    public static columnVector(vector: Vector2 | Vector3 | Vector4): Matrix;
    /**
     * Create a Matrix where each column is a vector
     * @public
     *
     * @param {Array.<Vector2>} vectors
     */
    public static fromVectors2(vectors: Array<Vector2>): Matrix;
    /**
     * Create a Matrix where each column is a vector
     * @public
     *
     * @param {Array.<Vector3>} vectors
     */
    public static fromVectors3(vectors: Array<Vector3>): Matrix;
    /**
     * Create a Matrix where each column is a vector
     * @public
     *
     * @param {Array.<Vector4>} vectors
     */
    public static fromVectors4(vectors: Array<Vector4>): Matrix;
    /**
     * @param {number} m - number of rows
     * @param {number} n - number of columns
     * @param {number[] | number} [filler]
     * @param {boolean} [fast]
     */
    constructor(m: number, n: number, filler?: number | number[] | undefined, fast?: boolean | undefined);
    m: number;
    n: number;
    size: number;
    entries: number | number[] | Float64Array | undefined;
    /**
     * @public
     *
     * @returns {Matrix}
     */
    public copy(): Matrix;
    /**
     * @public
     *
     * @returns {Array.<number>}
     */
    public getArray(): Array<number>;
    /**
     * @public
     *
     * @returns {Array.<number>}
     */
    public getArrayCopy(): Array<number>;
    /**
     * @public
     *
     * @returns {number}
     */
    public getRowDimension(): number;
    /**
     * @public
     *
     * @returns {number}
     */
    public getColumnDimension(): number;
    /**
     * TODO: inline this places if we aren't using an inlining compiler! (check performance) https://github.com/phetsims/dot/issues/96
     * @public
     *
     * @param {number} i
     * @param {number} j
     * @returns {number}
     */
    public index(i: number, j: number): number;
    /**
     * Get the matrix element (i,j) with the convention that row and column indices start at zero
     * @public
     *
     * @param {number} i - row index
     * @param {number} j - column index
     * @returns {number}
     */
    public get(i: number, j: number): number;
    /**
     * Set the matrix element (i,j) to a value s with the convention that row and column indices start at zero
     * @public
     *
     * @param {number} i - row index
     * @param {number} j - column index
     * @param {number} s - value of the matrix element
     */
    public set(i: number, j: number, s: number): void;
    /**
     * @public
     *
     * @param {number} i0
     * @param {number} i1
     * @param {number} j0
     * @param {number} j1
     * @returns {Matrix}
     */
    public getMatrix(i0: number, i1: number, j0: number, j1: number): Matrix;
    /**
     * @public
     *
     * @param {Array.<number>} r
     * @param {number} j0
     * @param {number} j1
     * @returns {Matrix}
     */
    public getArrayRowMatrix(r: Array<number>, j0: number, j1: number): Matrix;
    /**
     * @public
     *
     * @param {Matrix} [result] - allow passing in a pre-constructed matrix
     * @returns {Matrix}
     */
    public transpose(result?: Matrix | undefined): Matrix;
    /**
     * @public
     *
     * @returns {number}
     */
    public norm1(): number;
    /**
     * @public
     *
     * @returns {number}
     */
    public norm2(): number;
    /**
     * @public
     *
     * @returns {number}
     */
    public normInf(): number;
    /**
     * @public
     *
     * @returns {number}
     */
    public normF(): number;
    /**
     * @public
     *
     * @returns {Matrix}
     */
    public uminus(): Matrix;
    /**
     * @public
     *
     * @param {Matrix} matrix
     * @returns {Matrix}
     */
    public plus(matrix: Matrix): Matrix;
    /**
     * @public
     *
     * @param {Matrix} matrix
     * @returns {Matrix}
     */
    public plusEquals(matrix: Matrix): Matrix;
    /**
     * A linear interpolation between this Matrix (ratio=0) and another Matrix (ratio=1).
     * @public
     *
     * @param {Matrix} matrix
     * @param {number} ratio - Not necessarily constrained in [0, 1]
     * @returns {Matrix}
     */
    public blendEquals(matrix: Matrix, ratio: number): Matrix;
    /**
     * @public
     *
     * @param {Matrix} matrix
     * @returns {Matrix}
     */
    public minus(matrix: Matrix): Matrix;
    /**
     * @public
     *
     * @param {Matrix} matrix
     * @returns {Matrix}
     */
    public minusEquals(matrix: Matrix): Matrix;
    /**
     * @public
     *
     * @param {Matrix} matrix
     * @returns {Matrix}
     */
    public arrayTimes(matrix: Matrix): Matrix;
    /**
     * @public
     *
     * @param {Matrix} matrix
     * @returns {Matrix}
     */
    public arrayTimesEquals(matrix: Matrix): Matrix;
    /**
     * @public
     *
     * @param {Matrix} matrix
     * @returns {Matrix}
     */
    public arrayRightDivide(matrix: Matrix): Matrix;
    /**
     * @public
     *
     * @param {Matrix} matrix
     * @returns {Matrix}
     */
    public arrayRightDivideEquals(matrix: Matrix): Matrix;
    /**
     * @public
     *
     * @param {Matrix} matrix
     * @returns {Matrix}
     */
    public arrayLeftDivide(matrix: Matrix): Matrix;
    /**
     * @public
     *
     * @param {Matrix} matrix
     * @returns {Matrix}
     */
    public arrayLeftDivideEquals(matrix: Matrix): Matrix;
    /**
     * @public
     *
     * @param {Matrix|number} matrixOrScalar
     * @returns {Matrix}
     */
    public times(matrixOrScalar: Matrix | number): Matrix;
    /**
     * @public
     *
     * @param {number} s
     * @returns {Matrix}
     */
    public timesEquals(s: number): Matrix;
    /**
     * @public
     *
     * @param {Matrix} matrix
     * @returns {Matrix}
     */
    public solve(matrix: Matrix): Matrix;
    /**
     * @public
     *
     * @param {Matrix} matrix
     * @returns {Matrix}
     */
    public solveTranspose(matrix: Matrix): Matrix;
    /**
     * @public
     *
     * @returns {Matrix}
     */
    public inverse(): Matrix;
    /**
     * @public
     *
     * @returns {number}
     */
    public det(): number;
    /**
     * @public
     *
     * @returns {number}
     */
    public rank(): number;
    /**
     * @public
     *
     * @returns {number}
     */
    public cond(): number;
    /**
     * @public
     *
     * @returns {number}
     */
    public trace(): number;
    /**
     * @public
     *
     * @param {Matrix} matrix
     */
    public checkMatrixDimensions(matrix: Matrix): void;
    /**
     * Returns a string form of this object
     * @public
     *
     * @returns {string}
     */
    public toString(): string;
    /**
     * Returns a vector that is contained in the specified column
     * @public
     *
     * @param {number} column
     * @returns {Vector2}
     */
    public extractVector2(column: number): Vector2;
    /**
     * Returns a vector that is contained in the specified column
     * @public
     *
     * @param {number} column
     * @returns {Vector3}
     */
    public extractVector3(column: number): Vector3;
    /**
     * Returns a vector that is contained in the specified column
     * @public
     *
     * @param {number} column
     * @returns {Vector4}
     */
    public extractVector4(column: number): Vector4;
    /**
     * Sets the current matrix to the values of the listed column vectors (Vector3).
     * @public
     *
     * @param {Array.<Vector3>} vectors
     * @returns {Matrix}
     */
    public setVectors3(vectors: Array<Vector3>): Matrix;
    isMatrix: boolean;
}
import Vector2 from './Vector2.js';
import Vector3 from './Vector3.js';
import Vector4 from './Vector4.js';
//# sourceMappingURL=Matrix.d.ts.map