import DeferredRunner from '../deferredRunner'

let deferredRunner: DeferredRunner
const moduleName = 'Payments'

const wrappedMethodNames = [
    "logDeferredPaymentEvent",
    "logPaymentMethodEvent"
]

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