Delete an EventSub subscription by id.
Tear down the session (and its keepalive watchdog).
Open (lazily) the EventSub session and resolve its current id.
Register a notification handler (e.g. the relay reader's dispatch).
Register a session-reset handler (re-create subscriptions).
Resolve a Twitch login to its stable broadcaster id (Helix /users).
Used so a player can tune in by handle. Returns null for an unknown
login (or a non-OK response).
Send a chat message to a broadcaster's channel as senderId, using
senderId's user:write:chat token. Stateless — no socket.
Resolve a usable access token for a profile, refreshing (and writing back) if it is at/near expiry. Callers always get a live token.
StaticforTest-only factory: a fresh client over an injected transport with no
reconnect delay. Not used in production (the singleton get() is).
Staticget
Create an EventSub websocket subscription of an arbitrary
type(the no-chat-assumption seam).tokenis a user token bearing the required scope (the reader'suser:read:chatforchannel.chat.message).