import DeferredRunner from "../deferredRunner";

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

const wrappedMethodNames = [
  "logIngestEvent",
  "logCatalogEvent",
  "logPromoEvent",
];

// 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,
};
