commerce-operations.js 760 Bytes
import { BillingAction } from './action-policies.js'

/** @param {{ balance:Function, actionPolicies:{ get:Function }, dailyClaim:{ status:Function } }} billing */
export function createCommerceOperations(billing) {
  async function summary({ user_id, now = new Date() }) {
    const [balance, turn, daily_claim] = await Promise.all([
      billing.balance({ user_id }),
      billing.actionPolicies.get(BillingAction.TURN_PLAY),
      billing.dailyClaim.status({ user_id, now }),
    ])
    if (!turn.enabled) throw new Error('turn_play is disabled')
    return {
      points: balance.points,
      playable_turns: Math.floor(balance.points / turn.points),
      action_prices: { turn_play: turn.points },
      daily_claim,
    }
  }
  return { summary }
}