/**
 * A2C agent
 */
export default class A2CAgent {
    /**
     * @param {RLEnvironmentBase} env Environment
     * @param {number} resolution Resolution of actions
     * @param {number} procs Number of processes
     * @param {LayerObject[]} layers Network layers
     * @param {string} optimizer Optimizer of the network
     */
    constructor(env: RLEnvironmentBase, resolution: number, procs: number, layers: LayerObject[], optimizer: string);
    _net: ActorCriticNet;
    _procs: number;
    _env: RLEnvironmentBase;
    _advanced_step: number;
    _gamma: number;
    _states: void[];
    _envs: RLEnvironmentBase[];
    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
     * @returns {*[]} Action
     */
    get_action(state: any[]): any[];
    /**
     * Update model.
     * @param {boolean} done Done epoch or not
     * @param {number} learning_rate Learning rate
     * @param {number} batch Batch size
     * @returns {number} Loss value
     */
    update(done: boolean, learning_rate: number, batch: number): number;
}
export type LayerObject = import("./nns/graph").LayerObject;
/**
 * @ignore
 * @typedef {import("./nns/graph").LayerObject} LayerObject
 */
declare class ActorCriticNet {
    constructor(env: any, resolution?: number, layers?: any[], optimizer?: string);
    _resolution: number;
    _states: any;
    _actions: any;
    _action_sizes: any;
    _layers: any[];
    _net: NeuralNetwork;
    get_action(state: any): any[];
    _state_to_input(s: any): any[];
    get_score(state: any): any;
    _states_data: any[];
    _action_pos(action: any): number;
    _pos_action(i: any): any[];
    update(states: any, actions: any, rewards: any, learning_rate: any, batch: any): number;
}
import { RLEnvironmentBase } from '../rl/base.js';
import NeuralNetwork from './neuralnetwork.js';
export {};
