/**
 * Base class for Q-table
 */
export class QTableBase {
    /**
     * @param {RLEnvironmentBase} env Environment
     * @param {number} [resolution] Resolution
     */
    constructor(env: RLEnvironmentBase, resolution?: number);
    _env: RLEnvironmentBase;
    _resolution: number;
    _state_sizes: any;
    _action_sizes: any;
    _sizes: any[];
    _tensor: Tensor<number>;
    _table: number[];
    /**
     * Tensor
     * @type {Tensor}
     */
    get tensor(): Tensor;
    /**
     * States
     * @type {(*[] | RLRealRange | RLIntRange)[]}
     */
    get states(): (any[] | RLRealRange | RLIntRange)[];
    /**
     * Actions
     * @type {(*[] | RLRealRange | RLIntRange)[]}
     */
    get actions(): (any[] | RLRealRange | RLIntRange)[];
    /**
     * Resolution
     * @type {number}
     */
    get resolution(): number;
    _state_index(state: any): any;
    _state_value(index: any): any;
    _action_index(action: any): any;
    _action_value(index: any): any;
    _to_position(size: any, index: any): number[];
    _to_index(size: any, position: any): any[];
    _q(state: any, action: any): number[] | number[][];
    /**
     * Returns Q-table as array.
     * @returns {*[]} Nested array
     */
    toArray(): any[];
    /**
     * Returns the best action.
     * @param {*[]} state Current states
     * @returns {*[]} Action
     */
    best_action(state: any[]): any[];
}
/**
 * Q-learning agent
 */
export default class QAgent {
    /**
     * @param {RLEnvironmentBase} env Environment
     * @param {number} [resolution] Resolution
     */
    constructor(env: RLEnvironmentBase, resolution?: number);
    _env: RLEnvironmentBase;
    _table: QTable;
    /**
     * 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 state
     * @param {*[]} next_state Next state
     * @param {number} reward Reward
     */
    update(action: any[], state: any[], next_state: any[], reward: number): void;
}
import { RLEnvironmentBase } from '../rl/base.js';
import Tensor from '../util/tensor.js';
import { RLRealRange } from '../rl/base.js';
import { RLIntRange } from '../rl/base.js';
declare class QTable extends QTableBase {
    constructor(env: any, resolution?: number, alpha?: number, gamma?: number);
    _alpha: number;
    _gamma: number;
    update(action: any, state: any, next_state: any, reward: any): void;
}
export {};
