/**
 * Diffusion model network
 */
export default class DiffusionModel {
    /**
     * @param {number} timesteps Number of timestep
     * @param {LayerObject[]} [layers] Layers
     */
    constructor(timesteps: number, layers?: LayerObject[]);
    _timesteps: number;
    _ulayers: LayerObject[];
    _peDims: number;
    _model: NeuralNetwork;
    _epoch: number;
    _beta: number[];
    _alpha: number[];
    _alphaCumprod: number[];
    /**
     * Epoch
     * @type {number}
     */
    get epoch(): number;
    _addNoise(x: any, t: any): any[];
    _build(): NeuralNetwork;
    _layers: ({
        type: string;
        name: string;
        out_size?: undefined;
        l2_decay?: undefined;
        activation?: undefined;
        input?: undefined;
        axis?: undefined;
    } | {
        type: string;
        out_size: number;
        l2_decay: number;
        activation: string;
        name: string;
        input?: undefined;
        axis?: undefined;
    } | {
        type: string;
        input: string[];
        axis: number;
        name?: undefined;
        out_size?: undefined;
        l2_decay?: undefined;
        activation?: undefined;
    })[] | ({
        type: string;
        name: string;
        out_size?: undefined;
        l2_decay?: undefined;
        activation?: undefined;
        size?: undefined;
        input?: undefined;
        axis?: undefined;
    } | {
        type: string;
        out_size: number;
        l2_decay: number;
        activation: string;
        name?: undefined;
        size?: undefined;
        input?: undefined;
        axis?: undefined;
    } | {
        type: string;
        size: any[];
        name?: undefined;
        out_size?: undefined;
        l2_decay?: undefined;
        activation?: undefined;
        input?: undefined;
        axis?: undefined;
    } | {
        type: string;
        size: number[];
        name: string;
        out_size?: undefined;
        l2_decay?: undefined;
        activation?: undefined;
        input?: undefined;
        axis?: undefined;
    } | {
        type: string;
        input: string[];
        axis: number;
        name?: undefined;
        out_size?: undefined;
        l2_decay?: undefined;
        activation?: undefined;
        size?: undefined;
    })[];
    _positionEncoding(t: any, embdims: any): Matrix<T>;
    /**
     * Fit model.
     * @param {Array<Array<number>>} train_x Training data
     * @param {number} iteration Iteration count
     * @param {number} rate Learning rate
     * @param {number} batch Batch size
     * @returns {{labeledLoss: number, unlabeledLoss: number}} Loss value
     */
    fit(train_x: Array<Array<number>>, iteration: number, rate: number, batch: number): {
        labeledLoss: number;
        unlabeledLoss: number;
    };
    _dataShape: number[];
    /**
     * Returns generated data from the model.
     * @param {number} n Number of generated data
     * @returns {Array<Array<number>>} Generated values
     */
    generate(n: number): Array<Array<number>>;
}
import NeuralNetwork from './neuralnetwork.js';
import Matrix from '../util/matrix.js';
