export declare class Matrix<T> implements Iterable<T> {
    private rowSize;
    private colSize;
    protected arr: T[][];
    constructor(rowSize?: number, colSize?: number, ...rows: T[][]);
    get IsSquare(): boolean;
    get ColSize(): number;
    get RowSize(): number;
    set(value: T, row: number, col: number): void;
    getElement(row: number, col: number): T;
    getSize(): number[];
    get(row?: number, col?: number): T | T[];
    getColumn(col: number): T[];
    getRow(row: number): T[];
    forEachRow(fn: (index: number, item: T[], items: T[][]) => void): this;
    replaceEachRow(fn: (index: number, item: T[], items: T[][]) => void): this;
    [Symbol.iterator](): IterableIterator<T>;
    rotateLeft(times: number): Matrix<T>;
    rotateRight(times: number): Matrix<T>;
    reverse(): Matrix<T>;
    transpose(): Matrix<T>;
    toArray(): T[][];
    protected swapValues(firstRow: number, firstCol: number, secondRow: number, secondCol: number): void;
    protected checkColumnIndex(col: number): void;
    protected checkRowIndex(row: number): void;
    protected checkIndexes(row: number, col: number): void;
    private init;
}
