import { VInsType, VSortOrder } from "../enum";
import { IPseudoArray } from "./array";
import { TccErrorListener } from '.';
interface IMatrixArgs {
    rows?: number;
    columns?: number;
    initial_value?: any;
    id?: IMatrix;
    column?: number;
    row?: number;
    power?: number;
    value?: number;
    id1?: any;
    id2?: any;
    from_row?: number;
    to_row?: number;
    from_column?: number;
    to_column?: number;
    order?: VSortOrder;
    array_id?: IPseudoArray;
    row1?: number;
    row2?: number;
    column1?: number;
    column2?: number;
    type?: string;
}
export default class BuildInMatrix {
    private _errorListener;
    private _array;
    constructor(errorListener: TccErrorListener);
    new({ rows, columns, initial_value, type }: IMatrixArgs | undefined, posStr: string): IMatrix;
    avg({ id }: IMatrixArgs): number | undefined;
    col({ id, column }: IMatrixArgs, posStr: string): IPseudoArray | undefined;
    det({ id }: IMatrixArgs): number | undefined;
    get({ id, row, column }: IMatrixArgs, posStr: string): any;
    inv({ id }: IMatrixArgs): IMatrix | undefined;
    max({ id }: IMatrixArgs): any;
    min({ id }: IMatrixArgs): any;
    pow({ id, power }: IMatrixArgs): IMatrix | undefined;
    row({ id, row }: IMatrixArgs, posStr: string): IPseudoArray | undefined;
    set({ id, row, column, value }: IMatrixArgs, posStr: string): void;
    private _setArr;
    sum({ id1, id2 }: IMatrixArgs, posStr: string): IMatrix | undefined;
    private _verifyColRowLen;
    copy({ id }: IMatrixArgs): IMatrix | undefined;
    diff({ id1, id2 }: IMatrixArgs, posStr: string): IMatrix | undefined;
    rows({ id }: IMatrixArgs): number | undefined;
    columns({ id }: IMatrixArgs): number | undefined;
    fill({ id, value, from_row, to_row, from_column, to_column }: IMatrixArgs, posStr: string): void;
    private _verifyToFrom;
    kron({ id1, id2 }: IMatrixArgs): IMatrix | undefined;
    mode({ id }: IMatrixArgs): any;
    mult({ id1, id2 }: IMatrixArgs, posStr: string): IPseudoArray | IMatrix | undefined;
    pinv({ id }: IMatrixArgs): IMatrix | undefined;
    rank({ id }: IMatrixArgs): number | undefined;
    sort({ id, column, order }: IMatrixArgs, posStr: string): void;
    trace({ id }: IMatrixArgs): number | undefined;
    concat({ id1, id2 }: IMatrixArgs, posStr: string): any;
    median({ id }: IMatrixArgs): any;
    add_col({ id, column, array_id }: IMatrixArgs, posStr: string): void;
    add_row({ id, row, array_id }: IMatrixArgs, posStr: string): void;
    is_zero({ id }: IMatrixArgs): boolean | undefined;
    reshape({ id, rows, columns }: IMatrixArgs, posStr: string): void;
    reverse({ id }: IMatrixArgs): void;
    is_binary({ id }: IMatrixArgs): boolean | undefined;
    is_square({ id }: IMatrixArgs): boolean | undefined;
    submatrix({ id, from_row, to_row, from_column, to_column }: IMatrixArgs, posStr: string): IMatrix | undefined;
    swap_rows({ id, row1, row2 }: IMatrixArgs, posStr: string): void;
    transpose({ id }: IMatrixArgs): IMatrix | undefined;
    remove_col({ id, column }: IMatrixArgs): IPseudoArray | undefined;
    private _removeItem;
    remove_row({ id, row }: IMatrixArgs): any[] | undefined;
    eigenvalues({ id }: IMatrixArgs): IPseudoArray | undefined;
    is_diagonal({ id }: IMatrixArgs): boolean | undefined;
    is_identity({ id }: IMatrixArgs): boolean | undefined;
    eigenvectors({ id }: IMatrixArgs): IMatrix | undefined;
    is_symmetric({ id }: IMatrixArgs): boolean | undefined;
    swap_columns({ id, column1, column2 }: IMatrixArgs, posStr: string): void;
    is_stochastic({ id }: IMatrixArgs): boolean | undefined;
    is_triangular({ id }: IMatrixArgs): boolean | undefined;
    elements_count({ id }: IMatrixArgs): number | undefined;
    private _maxCountVerify;
    is_antidiagonal({ id }: IMatrixArgs): boolean | undefined;
    is_antisymmetric({ id }: IMatrixArgs): boolean | undefined;
    private _isUpperTriangular;
    private _isLowerTriangular;
    private _newMatrix;
    private _matrixRank;
    private _verifyScope;
}
interface IMatrix {
    isMatrix: boolean;
    typeName?: string;
    type: VInsType;
    _isNumber: boolean;
    _value: any[][];
}
export {};
