export interface NativeNumRsArray {
    readonly data: Float32Array;
    shape(): number[];
}
export interface NativeTensor {
    backward(): void;
    add(other: NativeTensor): NativeTensor;
    sub(other: NativeTensor): NativeTensor;
    mul(other: NativeTensor): NativeTensor;
    div(other: NativeTensor): NativeTensor;
    matmul(other: NativeTensor): NativeTensor;
    pow(exponent: number): NativeTensor;
    neg(): NativeTensor;
    abs(): NativeTensor;
    sqrt(): NativeTensor;
    sin(): NativeTensor;
    cos(): NativeTensor;
    exp(): NativeTensor;
    log(): NativeTensor;
    relu(): NativeTensor;
    sigmoid(): NativeTensor;
    mean(axis?: number): NativeTensor;
    sum(axis?: number): NativeTensor;
    mseLoss(target: NativeTensor): NativeTensor;
    flatten(startDim?: number, endDim?: number): NativeTensor;
    reshape(shape: number[]): NativeTensor;
    transpose(dim0?: number, dim1?: number): NativeTensor;
    assign(other: NativeTensor): void;
    zeroGrad(): void;
    backward(): void;
    detach(): NativeTensor;
    toString(): string;
    readonly data: any;
    readonly grad: NativeTensor | undefined;
    readonly requiresGrad: boolean;
    readonly shape: number[];
}
export interface NativeOptimizer {
    step(): void;
    zeroGrad(): void;
}
export interface NativeModule {
    forward(input: NativeTensor): NativeTensor;
    parameters(): NativeTensor[];
}
export interface NativeSequential {
    addLinear(layer: any): void;
    addRelu(layer: any): void;
    addSigmoid(layer: any): void;
    addConv1D(layer: any): void;
    addFlatten(layer: any): void;
    addDropout(layer: any): void;
    addBatchNorm1D(layer: any): void;
    addUnsqueeze(dim: number): void;
    forward(input: NativeTensor): NativeTensor;
    parameters(): NativeTensor[];
    saveOnnx(input: NativeTensor, path: string): void;
}
export interface NativeLinear {
    new (inFeatures: number, outFeatures: number): NativeLinear;
    forward(input: NativeTensor): NativeTensor;
    parameters(): NativeTensor[];
}
export interface NativeConv1d {
    new (inChannels: number, outChannels: number, kernelSize: number, stride?: number, padding?: number): NativeConv1d;
    forward(input: NativeTensor): NativeTensor;
}
export interface NativeFlatten {
    new (startDim: number, endDim: number): NativeFlatten;
    forward(input: NativeTensor): NativeTensor;
}
export interface NativeDropout {
    new (p: number): NativeDropout;
    forward(input: NativeTensor): NativeTensor;
}
export interface NativeBatchNorm1d {
    new (numFeatures: number): NativeBatchNorm1d;
    forward(input: NativeTensor): NativeTensor;
    train(): void;
    eval(): void;
}
export interface OptimizerConstructor {
    new (params: NativeTensor[], ...args: number[]): NativeOptimizer;
}
export interface NativeMetrics {
    trainLoss: number;
    trainAcc?: number;
    valLoss?: number;
    valAcc?: number;
}
export interface NativeDataset {
    new (inputs: number[][], targets: number[][], batchSize: number): NativeDataset;
    readonly numBatches: number;
}
export interface NativeTrainer {
    fit(trainDataset: NativeDataset, valDataset: NativeDataset | undefined | null, epochs: number, verbose?: boolean): NativeMetrics[];
}
export interface NativeTrainerBuilder {
    new (model: NativeSequential): NativeTrainerBuilder;
    learningRate(lr: number): NativeTrainerBuilder;
    build(optimizer: string, loss: string): NativeTrainer;
}
export interface NativeExports {
    NumRsArray: any;
    Tensor: {
        new (array: any, shape?: number[], requires_grad?: boolean): NativeTensor;
        fromArray(data: number[], shape?: number[], requires_grad?: boolean): NativeTensor;
    };
    Linear: NativeLinear;
    ReLu: any;
    Sigmoid: any;
    Conv1D: NativeConv1d;
    Flatten: NativeFlatten;
    Dropout: NativeDropout;
    BatchNorm1D: NativeBatchNorm1d;
    Sequential: {
        new (): NativeSequential;
    };
    Optimizer: any;
    Sgd: any;
    Adam: any;
    RmSprop: any;
    Adagrad: any;
    AdamW: any;
    Lamb: any;
    Lbfgs: any;
    TrainerBuilder: {
        new (model: any): NativeTrainerBuilder;
    };
    Dataset: {
        new (inputs: number[][], targets: number[][], batchSize: number): NativeDataset;
        fromRaw(inputs: Float32Array, inputShape: number[], targets: Float32Array, targetShape: number[], batchSize: number): NativeDataset;
    };
    add: (a: any, b: any) => any;
    sub: (a: any, b: any) => any;
    mul: (a: any, b: any) => any;
    div: (a: any, b: any) => any;
    matmul: (a: any, b: any) => any;
    dot: (a: any, b: any) => any;
    relu: (a: any) => any;
    sigmoid: (a: any) => any;
    exp: (a: any) => any;
    log: (a: any) => any;
    sqrt: (a: any) => any;
    abs: (a: any) => any;
    cos: (a: any) => any;
    sin: (a: any) => any;
    tan: (a: any) => any;
    neg: (a: any) => any;
    acos: (a: any) => any;
    asin: (a: any) => any;
    atan: (a: any) => any;
    ceil: (a: any) => any;
    floor: (a: any) => any;
    round: (a: any) => any;
    square: (a: any) => any;
    tanh: (a: any) => any;
    sum: (a: any) => any;
    mean: (a: any) => any;
    max: (a: any, axis?: number) => any;
    min: (a: any, axis?: number) => any;
    argmax: (a: any, axis?: number) => any;
    variance: (a: any, axis?: number) => any;
    softmax: (a: any, dim?: number) => any;
    crossEntropy: (input: any, target: any) => any;
    norm: (a: any) => any;
    reshape: (a: any, shape: number[]) => any;
    flatten: (a: any, start?: number, end?: number) => any;
    transpose: (a: any, d0?: number, d1?: number) => any;
    broadcastTo: (a: any, shape: number[]) => any;
    concat: (arrays: any[], axis: number) => any;
    version: () => string;
}
export declare const NumRsArray: any, Tensor: {
    new (array: any, shape?: number[], requires_grad?: boolean): NativeTensor;
    fromArray(data: number[], shape?: number[], requires_grad?: boolean): NativeTensor;
}, version: () => string, Sgd: any, Adam: any, AdamW: any, RmSprop: any, Adagrad: any, Lamb: any, Lbfgs: any, Conv1d: NativeConv1d, BatchNorm1d: NativeBatchNorm1d, ReLU: any;
export declare const nn: {
    Linear: NativeLinear;
    Sequential: new () => NativeSequential;
    ReLU: any;
    Sigmoid: any;
    Conv1d: NativeConv1d;
    Flatten: NativeFlatten;
    Dropout: NativeDropout;
    BatchNorm1d: NativeBatchNorm1d;
};
export declare const optimizers: {
    SGD: any;
    Adam: any;
    AdamW: any;
    RMSprop: any;
    Adagrad: any;
    LAMB: any;
    LBFGS: any;
};
export declare const Linear: NativeLinear;
export declare const Sequential: new () => NativeSequential;
export declare const Flatten: NativeFlatten;
export declare const Dropout: NativeDropout;
export declare const Sigmoid: any;
export declare const ops: {
    add: (a: any, b: any) => any;
    sub: (a: any, b: any) => any;
    mul: (a: any, b: any) => any;
    div: (a: any, b: any) => any;
    matmul: (a: any, b: any) => any;
    dot: (a: any, b: any) => any;
    relu: (a: any) => any;
    sigmoid: (a: any) => any;
    exp: (a: any) => any;
    log: (a: any) => any;
    sqrt: (a: any) => any;
    abs: (a: any) => any;
    cos: (a: any) => any;
    sin: (a: any) => any;
    tan: (a: any) => any;
    neg: (a: any) => any;
    acos: (a: any) => any;
    asin: (a: any) => any;
    atan: (a: any) => any;
    ceil: (a: any) => any;
    floor: (a: any) => any;
    round: (a: any) => any;
    square: (a: any) => any;
    tanh: (a: any) => any;
    sum: (a: any) => any;
    mean: (a: any) => any;
    max: (a: any, axis?: number) => any;
    min: (a: any, axis?: number) => any;
    argmax: (a: any, axis?: number) => any;
    variance: (a: any, axis?: number) => any;
    softmax: (a: any, dim?: number) => any;
    crossEntropy: (input: any, target: any) => any;
    norm: (a: any) => any;
    reshape: (a: any, shape: number[]) => any;
    flatten: (a: any, start?: number, end?: number) => any;
    transpose: (a: any, d0?: number, d1?: number) => any;
    broadcastTo: (a: any, shape: number[]) => any;
    concat: (arrays: any[], axis: number) => any;
};
export declare const add: (a: any, b: any) => any;
export declare const sub: (a: any, b: any) => any;
export declare const mul: (a: any, b: any) => any;
export declare const div: (a: any, b: any) => any;
export declare const matmul: (a: any, b: any) => any;
export declare const dot: (a: any, b: any) => any;
export declare const relu: (a: any) => any;
export declare const sigmoid: (a: any) => any;
export declare const exp: (a: any) => any;
export declare const log: (a: any) => any;
export declare const sqrt: (a: any) => any;
export declare const abs: (a: any) => any;
export declare const cos: (a: any) => any;
export declare const sin: (a: any) => any;
export declare const tan: (a: any) => any;
export declare const neg: (a: any) => any;
export declare const acos: (a: any) => any;
export declare const asin: (a: any) => any;
export declare const atan: (a: any) => any;
export declare const ceil: (a: any) => any;
export declare const floor: (a: any) => any;
export declare const round: (a: any) => any;
export declare const square: (a: any) => any;
export declare const tanh: (a: any) => any;
export declare const sum: (a: any) => any;
export declare const mean: (a: any) => any;
export declare const max: (a: any, axis?: number) => any;
export declare const min: (a: any, axis?: number) => any;
export declare const argmax: (a: any, axis?: number) => any;
export declare const variance: (a: any, axis?: number) => any;
export declare const softmax: (a: any, dim?: number) => any;
export declare const crossEntropy: (input: any, target: any) => any;
export declare const norm: (a: any) => any;
export declare const reshape: (a: any, shape: number[]) => any;
export declare const flatten: (a: any, start?: number, end?: number) => any;
export declare const transpose: (a: any, d0?: number, d1?: number) => any;
export declare const broadcastTo: (a: any, shape: number[]) => any;
export declare const concat: (arrays: any[], axis: number) => any;
export declare const SGD: any;
export declare const TrainerBuilder: new (model: any) => NativeTrainerBuilder;
export declare const Dataset: {
    new (inputs: number[][], targets: number[][], batchSize: number): NativeDataset;
    fromRaw(inputs: Float32Array, inputShape: number[], targets: Float32Array, targetShape: number[], batchSize: number): NativeDataset;
};
//# sourceMappingURL=native_loader.d.ts.map