/**
 * Deep Q-Network agent
 */
export default class DQNAgent {
    /**
     * @param {RLEnvironmentBase} env Environment
     * @param {number} resolution Resolution of actions
     * @param {LayerObject[]} layers Network layers
     * @param {string} optimizer Optimizer of the network
     */
    constructor(env: RLEnvironmentBase, resolution: number, layers: LayerObject[], optimizer: string);
    _env: RLEnvironmentBase;
    _net: DQN;
    /**
     * DQN Method
     * @param {'DQN' | 'DDQN'} value New method name
     */
    set method(value: "DQN" | "DDQN");
    terminate(): void;
    /**
     * Returns a score.
     * @returns {Array<Array<Array<number>>>} Score values
     */
    get_score(): Array<Array<Array<number>>>;
    /**
     * Returns a action.
     * @param {*[]} state Current states
     * @param {number} greedy_rate Greedy rate
     * @returns {*[]} Action
     */
    get_action(state: any[], greedy_rate?: number): any[];
    /**
     * Update model.
     * @param {*[]} action Action
     * @param {*[]} state Current states
     * @param {*[]} next_state Next states
     * @param {number} reward Reward
     * @param {boolean} done Done epoch or not
     * @param {number} learning_rate Learning rate
     * @param {number} batch Batch size
     * @returns {number=} Loss value
     */
    update(action: any[], state: any[], next_state: any[], reward: number, done: boolean, learning_rate: number, batch: number): number | undefined;
}
export type LayerObject = import("./nns/graph").LayerObject;
import { RLEnvironmentBase } from '../rl/base.js';
declare class DQN {
    constructor(env: any, resolution?: number, layers?: any[], optimizer?: string);
    _resolution: number;
    _states: any;
    _actions: any;
    _action_sizes: any;
    _gamma: number;
    _epoch: number;
    _method: string;
    _memory: any[];
    _max_memory_size: number;
    _batch_size: number;
    _do_update_step: number;
    _fix_param_update_step: number;
    _layers: {
        type: string;
    }[];
    _target: NeuralNetwork;
    _net: NeuralNetwork;
    set method(value: any);
    get_best_action(state: any): any[];
    _state_to_input(s: any): any[];
    get_score(): any[];
    _states_data: any[];
    _action_pos(action: any): number;
    _pos_action(i: any): any[];
    update(action: any, state: any, next_state: any, reward: any, done: any, learning_rate: any, batch: any): number;
    _update_dqn(data: any, learning_rate: any, batch: any): number;
    _update_ddqn(data: any, learning_rate: any, batch: any): number;
}
import NeuralNetwork from './neuralnetwork.js';
export {};
