Source

core/src/RLInterface/FileStrategy.ts

import * as tf from '@tensorflow/tfjs';

/**
 * The General File Loader Interface.
 * @category QuickRLInterface
 * @param T The type of the object to load.
 */
export interface FileLoader<T> {
    /**
     * Load the object.
     * @returns {Promise<T>} Promise for the object to load.
     */
    load(): Promise<T>;
}

/**
 * The General File Save Interface
 * @category QuickRLInterface
 * @param T The type of the object to save
 */
export interface FileSaver<T> {
    /**
     * Save provided object.
     * @param {T} data The data to save.
     * @returns {Promise<boolean>} promise for the success state of a save.
     */
    save(data: T): Promise<boolean>;
}

/**
 * The load interface for loading in json formated files.
 * @category QuickRLInterface
 * @extends FileLoader
 * @param T The type of the object to load.
 */
export interface JSONLoader<T extends object> extends FileLoader<T> {
    load(): Promise<T>;
}

/**
 * The save interface for saving in json format.
 * @category QuickRLInterface
 * @extends FileSaver
 * @param T The type of the object to load.
 */
export interface JSONSaver<T extends object> extends FileSaver<T> {
    save(data: T): Promise<boolean>;
}

/**
 * The load interface for laoding tensorflow models.
 * @category QuickRLInterface
 * @extends FileLoader
 * @param T The type of tf model object to load.
 */
export interface TFModelLoader<T extends tf.LayersModel> extends FileLoader<T> {
    load(): Promise<T>;
}

/**
 * The load interface for loading tensorflow models.
 * @category QuickRLInterface
 * @extends FileSaver
 * @param T The type of the object to load.
 */
export interface TFModelSaver<T extends tf.LayersModel> extends FileSaver<T> {
    save(data: T): Promise<boolean>;
}