{"size": 1509, "ext": "js", "max_stars_repo_path": "src/os/capture/irecorder.js", "max_stars_repo_name": "dpew/opensphere", "max_stars_repo_stars_event_min_datetime": "2017-12-19T15:16:08.000Z", "max_stars_repo_stars_event_max_datetime": "2022-03-17T21:09:14.000Z", "max_issues_repo_path": "src/os/capture/irecorder.js", "max_issues_repo_name": "dpew/opensphere", "max_issues_repo_issues_event_min_datetime": "2017-12-21T10:01:49.000Z", "max_issues_repo_issues_event_max_datetime": "2022-03-24T13:02:47.000Z", "max_forks_repo_path": "src/os/capture/irecorder.js", "max_forks_repo_name": "dpew/opensphere", "max_forks_repo_forks_event_min_datetime": "2017-12-18T01:51:06.000Z", "max_forks_repo_forks_event_max_datetime": "2021-12-06T14:18:27.000Z"}
{"max_stars_count": 170, "max_issues_count": 571, "max_forks_count": 90, "avg_line_length": 17.9642857143, "max_line_length": 78, "alphanum_fraction": 0.5844930417}
goog.declareModuleId('os.capture.IRecorder');

const IDisposable = goog.requireType('goog.disposable.IDisposable');
const Listenable = goog.requireType('goog.events.Listenable');
const {default: IVideoEncoder} = goog.requireType('os.capture.IVideoEncoder');


/**
 * Interface for a class that produces a recording.
 *
 * @extends {IDisposable}
 * @extends {Listenable}
 * @interface
 */
export default class IRecorder {
  /**
   * Constructor.
   */
  constructor() {
    /**
     * If the recording was aborted.
     * @type {boolean}
     */
    this.aborted;

    /**
     * Final recording data.
     * @type {*}
     */
    this.data;

    /**
     * Detailed error message if the recording fails.
     * @type {string}
     */
    this.errorMsg;

    /**
     * Progress percentage for the current task.
     * @type {number}
     */
    this.progress;

    /**
     * Recorder status message.
     * @type {string}
     */
    this.status;

    /**
     * User-facing title of the recorder.
     * @type {string}
     */
    this.title;
  }

  /**
   * Clean up any resources that shouldn't reside in memory.
   */
  cleanup() {}

  /**
   * Abort the recording.
   * @param {string=} opt_msg Abort message
   */
  abort(opt_msg) {}

  /**
   * Initialize the recorder.
   */
  init() {}

  /**
   * Create a recording.
   */
  record() {}

  /**
   * Set the encoder used to save recordings.
   * @param {!IVideoEncoder} value The encoder to use to save the recording.
   */
  setEncoder(value) {}
}
