# Event stream

## Event stream (optional)

`subscribe` (gRPC server stream) delivers round, grant, session, and notification events with a monotonic `sequence` per brand. `ack` confirms the cursor. It's an alternative to polling `rounds`, and a first integration doesn't need it.

Round events carry a `Round`. Keep the latest one by `sequence` per `(player_ref, round_id)`:

| `event_type` | `Round.status` | Meaning |
|---|---|---|
| `round.settled.raw` | `SETTLED` | The round closed without a rollback. |
| `round.refunded` | `REFUNDED` / `VOIDED` | Part or all of the round's money was rolled back. |
| `round.failed` | `FAILED` | Your wallet declined an operation of the round. That operation moved no money. `total_bet` / `total_win` hold the declined amount. |
| `round.failed` | `REFUND_FAILED` | GA owed a rollback and couldn't complete it: retries ran out, or your wallet refused the rollback. **The stake is still debited.** Reconcile the round manually. `total_bet` (or `total_win` for an unpaid re-issued credit) holds the stuck amount. |
