export { default as Layer } from "./nns/layer/base.js";
export { default as ComputationalGraph } from "./nns/graph.js";
/**
 * @ignore
 * @typedef {import("./nns/graph").LayerObject} LayerObject
 */
/**
 * Exception for neuralnetwork class
 */
export class NeuralnetworkException extends Error {
    /**
     * @param {string} message Error message
     * @param {*} value Some value
     */
    constructor(message: string, value: any);
    value: any;
}
/**
 * Neuralnetwork
 */
export default class NeuralNetwork {
    /**
     * Returns neuralnetwork.
     * @param {LayerObject[]} layers Network layers
     * @param {string} [loss] Loss name
     * @param {'sgd' | 'adam' | 'momentum' | 'adagrad' | 'rmsprop' | 'adadelta' | 'rmspropgraves' | 'smorms3' | 'adamax' | 'nadam'} [optimizer] Optimizer of the network
     * @returns {NeuralNetwork} Created Neuralnetwork
     */
    static fromObject(layers: LayerObject[], loss?: string, optimizer?: 'sgd' | 'adam' | 'momentum' | 'adagrad' | 'rmsprop' | 'adadelta' | 'rmspropgraves' | 'smorms3' | 'adamax' | 'nadam'): NeuralNetwork;
    /**
     * Load onnx model.
     * @param {Uint8Array | ArrayBuffer | File} buffer File
     * @returns {Promise<NeuralNetwork>} Loaded NeuralNetwork
     */
    static fromONNX(buffer: Uint8Array | ArrayBuffer | File): Promise<NeuralNetwork>;
    /**
     * @param {ComputationalGraph} graph Graph of a network
     * @param {'sgd' | 'adam' | 'momentum' | 'adagrad' | 'rmsprop' | 'adadelta' | 'rmspropgraves' | 'smorms3' | 'adamax' | 'nadam' | 'santae' | 'santasss' | 'amsgrad' | 'adabound' | 'amsbound' | 'adabelief'} [optimizer] Optimizer of the network
     */
    constructor(graph: ComputationalGraph, optimizer?: 'sgd' | 'adam' | 'momentum' | 'adagrad' | 'rmsprop' | 'adadelta' | 'rmspropgraves' | 'smorms3' | 'adamax' | 'nadam' | 'santae' | 'santasss' | 'amsgrad' | 'adabound' | 'amsbound' | 'adabelief');
    _graph: ComputationalGraph;
    _optimizer: "sgd" | "adam" | "momentum" | "adagrad" | "rmsprop" | "adadelta" | "rmspropgraves" | "smorms3" | "adamax" | "nadam" | "santae" | "santasss" | "amsgrad" | "adabound" | "amsbound" | "adabelief";
    _opt: opt.sgd | opt.momentum | opt.adagrad | opt.rmsprop | opt.adadelta | opt.adam | opt.rmspropgraves | opt.smorms3 | opt.adamax | opt.nadam | opt.santae | opt.santasss | opt.amsgrad | opt.adabound | opt.amsbound | opt.adabelief;
    _opt_managers: {
        readonly lr: any;
        delta(key: any, value: any): any;
    }[];
    _getDatasize(x: any): any;
    /**
     * Returns a copy of this.
     * @returns {NeuralNetwork} Copied network
     */
    copy(): NeuralNetwork;
    /**
     * Returns object representation.
     * @returns {LayerObject[]} Object represented this neuralnetwork
     */
    toObject(): LayerObject[];
    /**
     * Returns calculated values.
     * @param {Array<Array<number | Array<number>>> | Matrix | Tensor | {[key: string]: Array<Array<number | Array<number>>> | Matrix | Tensor}} x Input value
     * @param {Matrix} [t] Supervised value
     * @param {string[]} [out] Name of node from which to get output
     * @param {object} [options] Option
     * @returns {Matrix | {[key: string]: Matrix}} Calculated values
     */
    calc(x: Array<Array<number | Array<number>>> | Matrix | Tensor | {
        [key: string]: Array<Array<number | Array<number>>> | Matrix | Tensor;
    }, t?: Matrix, out?: string[], options?: object): Matrix | {
        [key: string]: Matrix;
    };
    /**
     * Returns gradient values.
     * @param {Matrix} [e] Input of gradient
     * @returns {Matrix} Output of gradient
     */
    grad(e?: Matrix): Matrix;
    /**
     * Update model parameters.
     * @param {number} learning_rate Learning rate
     */
    update(learning_rate: number): void;
    /**
     * Fit model.
     * @param {Array<Array<number | Array<number>>> | Matrix | Tensor | {[key: string]: Array<Array<number | Array<number>>> | Matrix | Tensor}} x Training data
     * @param {Array<Array<number>> | Matrix} t Target values
     * @param {number} [epoch] Iteration count
     * @param {number} [learning_rate] Learning rate
     * @param {number} [batch_size] Batch size
     * @param {object} [options] Option
     * @returns {number[]} Loss value
     */
    fit(x: Array<Array<number | Array<number>>> | Matrix | Tensor | {
        [key: string]: Array<Array<number | Array<number>>> | Matrix | Tensor;
    }, t: Array<Array<number>> | Matrix, epoch?: number, learning_rate?: number, batch_size?: number, options?: object): number[];
    /**
     * Returns predicted values.
     * @param {Array<Array<number | Array<number>>> | Matrix | Tensor | {[key: string]: Array<Array<number | Array<number>>> | Matrix | Tensor}} x Sample data
     * @returns {Array<Array<number>>} Predicted values
     */
    predict(x: Array<Array<number | Array<number>>> | Matrix | Tensor | {
        [key: string]: Array<Array<number | Array<number>>> | Matrix | Tensor;
    }): Array<Array<number>>;
}
export type LayerObject = import("./nns/graph").LayerObject;
import * as opt from './nns/optimizer.js';
import Matrix from '../util/matrix.js';
import Tensor from '../util/tensor.js';
import ComputationalGraph from './nns/graph.js';
