Source: lib/Watcher.js

'use strict'

const RootChain = require("./RootChain");

/**
 * Watch for invalid ExitStarted events and submit challenges
 * Watch for finalizable exits and automatically finalize exits, limit the rate
 */
class Watcher {
  constructor(config) {
    this.rootChain = new RootChain(config);
  }
  /**
   * Start watching
   * @param {number} checkInterval interval to check for pending transactions and generate a block
   */
  startWatching(checkInterval = 500) {
    if (this.watchTimer) {
      clearInterval(this.watchTimer);
    }
    this.watchTimer = setInterval(async () => {
      try {
        let withdrawalEvents = await this.plasmaContract.getPastEvents('ExitStarted', {
          filter: {
            blockNumber: blockNumber.toString()
          },
          fromBlock: 0,
          toBlock: 'latest'
        });
        let events = withdrawalEvents.map(ev => ev.returnValues);

        // TODO

      } catch (e) {
        console.log(e);
        throw e;
      }
    }, checkInterval);
    return this;
  }
}

module.exports = Watcher;