import DeferredRunner from "../deferredRunner";

let deferredRunner: DeferredRunner;
const moduleName = "Payments";

const wrappedMethodNames = ["logIngestEvent"];

// expose each method as a wrapper that just calls the deferredRunner
const wrappedMethods = wrappedMethodNames.reduce((obj, current) => {
  obj[current] = (...args) => deferredRunner.execute(moduleName, current, args);
  return obj;
}, {});

const init = (injectedDeferredRunner) => {
  deferredRunner = injectedDeferredRunner;
};

export default {
  init,
  ...wrappedMethods,
};
