/**
 *
 * @param vec input vector
 * @returns minimum value of `vec`
 */
export declare function vecFindMin(vec: number[]): number;
/**
 *
 * @param len length of the output vector
 * @returns unit vector of length `len`. [1, 0, 0, ..., 0]
 */
export declare function getUnitVec(len: number): number[];
/**
 *
 * @param vec input vector
 * @returns cumulative sum of `vec`. ex) [1, 2, 3] => [1, 3, 6]
 */
export declare function vecCumSum(vec: number[]): number[];
/**
 *
 * @param vec input vector
 * @returns Shifted vector. Makes deep copy. ex) [1, 2, 3] => [3, 1, 2].
 */
export declare function vecShiftToLast(vec: number[]): number[];
/**
 *
 * @param mat input matrix
 * @returns Row-wise shifted matrix. Makes deep copy.
 */
export declare function matShiftToLast(mat: number[][]): number[][];
/**
 *
 * @param vec input vector
 * @returns normalized vector such that sum(vector) = 1.
 */
export declare function vecNormalize(vec: number[]): number[];
/**
 *
 * @param revArr reversed array
 * @param startRow slice starting row index
 * @param endRow slice ending row index
 * @returns Slice reversed array as if it is normal.
 *      (noraml array).slice(startRow, endRow).reverse() = sliceRev((reversed array), startRow, endRow)
 */
export declare function sliceRev<T>(revArr: T[], startRow: number, endRow: number): T[];
/**
 *
 * @param mat input matrix
 * @param colIdx column index to slice
 * @returns sliced vector.
 */
export declare function matSliceCol(mat: number[][], colIdx: number): number[];
/**
 *
 * @param vec1 (1 x n) row vector
 * @param vec2 (n X 1) column vector
 * @returns (vec1 . vec2) = scalar
 */
export declare function vecVecDot(vec1: number[], vec2: number[]): number;
/**
 *
 * @param vec (1 x n) row vector.
 * @param mat (n x m) matrix. Should be in row-major order.
 * @returns (vec . mat) = (1 x m) row vector
 */
export declare function vecMatDot(vec: number[], mat: number[][]): number[];
/**
 *
 * @param mat (n x m) matrix. Should be in row-major order.
 * @param vec (m x 1) column vector.
 * @returns (mat . vec) = (n x l) column vector
 */
export declare function matVecDot(mat: number[][], vec: number[]): number[];
export declare function matToString(mat: number[][]): string;
