/**
 * @ignore
 * @typedef {import("./nns/graph").LayerObject} LayerObject
 */
/**
 * Generative adversarial networks
 */
export default class GAN {
    /**
     * @param {number} noise_dim Number of noise dimension
     * @param {LayerObject[]} g_hidden Layers of generator
     * @param {LayerObject[]} d_hidden Layers of discriminator
     * @param {string} g_opt Optimizer of the generator network
     * @param {string} d_opt Optimizer of the discriminator network
     * @param {number | null} class_size Class size for conditional type
     * @param {'' | 'conditional'} type Type name
     */
    constructor(noise_dim: number, g_hidden: LayerObject[], d_hidden: LayerObject[], g_opt: string, d_opt: string, class_size: number | null, type: '' | 'conditional');
    _type: "" | "conditional";
    _noise_dim: number;
    _epoch: number;
    _generatorNetLeyers: {
        type: string;
        name: string;
    }[];
    _discriminator: NeuralNetwork;
    _g_opt: string;
    /**
     * Epoch
     * @type {number}
     */
    get epoch(): number;
    /**
     * Fit model.
     * @param {Array<Array<number>>} x Training data
     * @param {Array<Array<number>> | null} y Conditional values
     * @param {number} step Iteration count
     * @param {number} gen_rate Learning rate for generator
     * @param {number} dis_rate Learning rate for discriminator
     * @param {number} batch Batch size
     * @returns {{generatorLoss: number, discriminatorLoss: number}} Loss value
     */
    fit(x: Array<Array<number>>, y: Array<Array<number>> | null, step: number, gen_rate: number, dis_rate: number, batch: number): {
        generatorLoss: number;
        discriminatorLoss: number;
    };
    _generator: NeuralNetwork;
    /**
     * Returns probabilities of the data is true.
     * @param {Array<Array<number>>} x Sample data
     * @param {*} y Conditional values
     * @returns {Array<Array<number>>} Predicted values
     */
    prob(x: Array<Array<number>>, y: any): Array<Array<number>>;
    /**
     * Returns generated data from the model.
     * @param {number} n Number of generated data
     * @param {Array<Array<number>> | null} y Conditional values
     * @returns {Array<Array<number>>} Generated values
     */
    generate(n: number, y: Array<Array<number>> | null): Array<Array<number>>;
}
export type LayerObject = import("./nns/graph").LayerObject;
import NeuralNetwork from './neuralnetwork.js';
