Behaviour for the Realtime WebSocket client.
This allows mocking the WebSocket layer in tests using Mox.
@type audio() :: binary()
@type event() :: map()
@type opts() :: keyword()
@type t() :: pid() | term()
@callback close(t()) :: :ok
@callback connect_realtime(opts()) :: {:ok, t()} | {:error, term()}
@callback connect_tts(opts()) :: {:ok, t()} | {:error, term()}
@callback send_event(t(), event()) :: :ok | {:error, term()}
@callback send_text(t(), String.t()) :: :ok | {:error, term()}
@callback send_text_done(t()) :: :ok | {:error, term()}