Accepts an offer. The server authorises it against the offer's target, so another user's offer (or a missing, expired or
cancelled one) answers Success: false. Never throws.
The offer to accept.
Declines an offer, so the AI can fall back (the person's phone, or carrying on). Never throws.
The offer to decline.
The signed-in user's offers: pending ones, plus ones that resolved recently enough to still be shown. Best-effort: a transport failure is logged and resolves to an empty list so the console shows "nothing waiting" rather than throwing.
Live changes to the signed-in user's offers. The server delivers only this user's. The stream completes when the session's token is refreshed (re-subscribe to continue), as every MJ subscription does.
The GraphQL data provider that carries the requests (it holds the signed-in session).