import { Assertable } from './utils/Assertable';
export declare class Mat extends Assertable {
    readonly rows: number;
    readonly cols: number;
    private readonly length;
    w: Array<number>;
    readonly dw: Array<number>;
    protected static readonly gpu: any;
    static isGPUSupported(): any;
    static isGPUAccelerated(): boolean;
    protected static tryGPU: boolean;
    static switchOnGPUSupport(): void;
    static switchOffGPUSupport(): void;
    protected static cpuLimit: number;
    protected static gpuKernelRegister: any;
    protected static getKernel(kernel: string, length: number, constants?: any): any;
    protected static registerKernel(kernel: string, length: number, constants?: any): void;
    constructor(rows: number, cols: number);
    get(row: number, col: number): number;
    set(row: number, col: number, v: number): void;
    protected getIndexBy(row: number, col: number): number;
    setFrom(arr: Array<number>): void;
    setColumn(m: Mat, i: number): void;
    update(alpha: number): void;
    static toJSON(m: Mat | any): {};
    static fromJSON(json: {
        n;
        d;
        w;
    }): Mat;
    static add(m1: Mat, m2: Mat): Mat;
    static sig(m: Mat): Mat;
    private static sigmoid(x);
    static relu(m: Mat): Mat;
    static mul(m1: Mat, m2: Mat): Mat;
    static mul1d(x: number, arr0: Array<number>, arr1: Array<number>, rows0: number, cols0: number, rows1: number, cols1: number): number;
    static tanh(m: Mat): Mat;
    static dot(m1: Mat, m2: Mat): Mat;
    static eltmul(m1: Mat, m2: Mat): Mat;
    static rowPluck(m: Mat, rowIndex: number): Mat;
}
