Debit the reward pool by amount and credit targetLedgerAccountId, both
owned by customerId. Bounded by current headroom (the overfunded excess).
MOVEUSD amount to move out of the pool. Must be > 0 and <= headroom.
Caller-owned dedupe token, threaded to the transfer primitive.
OptionalsenderMessage?: string
Move a reward program's overfunded excess out of the pool into another ledger account the same customer owns.
The pool ("Rewards") ledger account is provisioned with
ADMINpermissions, so the consumerLedgerAccountTransferServicerejects it as a source; the move therefore goes throughLedgerAccountTransferAdminService. That admin primitive neither caps the amount nor scopes the target to a customer, so this service owns the two reward-domain invariants it can't enforce:funded − committed), so the pool is never drawn below the outstanding reward liability — you can only move out what the program is overfunded by.All amounts are MOVEUSD. Idempotency is caller-owned and threaded straight through to the transfer primitive.