import { Experience } from '../memory/ReplayBuffer';
import { DQNConfig } from '../types';
export declare class DQNAgent {
    private config;
    private model;
    private targetModel;
    private memory;
    private epsilon;
    private epsilonDecay;
    private minEpsilon;
    private gamma;
    private batchSize;
    private targetUpdateFrequency;
    private trainStepCounter;
    private actionSize;
    private bestReward;
    constructor(config: DQNConfig);
    getAction(state: number[]): Promise<number>;
    remember(exp: Experience): void;
    updateTargetModel(): Promise<void>;
    train(): Promise<void>;
    reset(): void;
    saveToHub(repoId: string, token: string, modelName?: string, checkpointName?: string): Promise<void>;
    loadFromHub(repoId: string, modelPath?: string): Promise<void>;
    /**
   * Save the model under a checkpoint name to Hugging Face Hub.
   * e.g., checkpointName = "last", "best", "step-1000"
   */
    saveCheckpoint(repoId: string, token: string, checkpointName: string): Promise<void>;
    maybeSaveBestCheckpoint(repoId: string, token: string, reward: number, step?: number): Promise<void>;
    /**
     * Load a checkpointed model from Hugging Face Hub.
     */
    loadCheckpoint(repoId: string, checkpointName: string): Promise<void>;
    dispose(): void;
}
