import { BillingAction } from './action-policies.js' /** @param {{ actionPolicies:{ find:Function }, grant:Function }} billing */ export function createSignupReward(billing) { async function apply({ user_id }) { const policy = await billing.actionPolicies.find(BillingAction.SIGNUP_REWARD) if (policy === null || !policy.enabled) return { applied: false } const result = await billing.grant({ user_id, amount: policy.points, source: 'visual_game_signup', credit_kind: 'admin', reason: 'signup_gift', idempotency_key: `signup_reward:${user_id}`, }) return { applied: true, replayed: result.replayed, points: policy.points, ledger_id: result.ledger_id, } } return { apply } }