/**
 * Leaky integrate-and-fire layer
 */
export default class SpikeLIFLayer extends Layer {
    /**
     * @param {object} config object
     * @param {number} config.size Size of output
     * @param {number[][] | Matrix | string} [config.w] Weight
     * @param {number} [config.th] Firing threshold
     * @param {number} [config.spike_train_dim] Dimension of the spike train
     */
    constructor({ size, w, th, spike_train_dim, ...rest }: {
        size: number;
        w?: number[][] | Matrix | string;
        th?: number;
        spike_train_dim?: number;
    });
    _size: number;
    _spike_train_dim: -1;
    _rest: number;
    _ref: number;
    _th: number;
    _tc: number;
    _peak: number;
    _w: Matrix<number>;
    _wname: string;
    _dt: number;
    _tci: number;
    _update_method: string;
    _a_ltp: number;
    _a_ltd: number;
    _tc_ltp: number;
    _tc_ltd: number;
    calc(x: any): Tensor<number>;
    _i: any;
    _m: Tensor<number>;
    _o: Tensor<number>;
    grad(): any;
    _dw: Matrix<number>;
    update(optimizer: any): void;
    toObject(): {
        type: string;
        size: number;
        w: string | number[][];
        th: number;
        spike_train_dim: number;
    };
}
import Layer from './base.js';
import Matrix from '../../../util/matrix.js';
import Tensor from '../../../util/tensor.js';
