Canonical room action facade for product apps.
@spec complete_join_signature( module(), String.t(), Xmtp.Principal.t() | map(), String.t(), String.t(), map() ) :: {:ok, Xmtp.RoomPanel.t()} | {:error, term()}
@spec delete_message(module(), String.t(), Xmtp.Principal.t() | map(), String.t()) :: {:ok, Xmtp.RoomPanel.t()} | {:error, term()}
@spec heartbeat(module(), String.t(), Xmtp.Principal.t() | map()) :: :ok
@spec invite( module(), String.t(), Xmtp.Principal.t() | :system, Xmtp.Principal.t() | map(), map() ) :: {:ok, Xmtp.RoomPanel.t()} | {:error, term()}
@spec kick( module(), String.t(), Xmtp.Principal.t() | map(), Xmtp.Principal.t() | map() | String.t() ) :: {:ok, Xmtp.RoomPanel.t()} | {:error, term()}
@spec panel(module(), String.t(), Xmtp.Principal.t() | map() | nil, map()) :: {:ok, Xmtp.RoomPanel.t()} | {:error, term()}
@spec request_join(module(), String.t(), Xmtp.Principal.t() | map(), map()) :: {:ok, Xmtp.RoomPanel.t()} | {:needs_signature, map()} | {:error, term()}
@spec send_message(module(), String.t(), Xmtp.Principal.t() | map(), String.t()) :: {:ok, Xmtp.RoomPanel.t()} | {:error, term()}