XmtpElixirSdk.Native (xmtp_elixir_sdk v0.1.2)

Copy Markdown

Native-backed XMTP operations.

These functions call the supervised libxmtp bridge for production protocol work. Use this module from server-side Phoenix code when the server owns the XMTP identity key, such as room relays, agents, and moderation workers.

Summary

Types

runtime()

@type runtime() :: XmtpElixirSdk.Runtime.t() | atom()

Functions

build_existing_client(runtime, address, opts \\ [])

@spec build_existing_client(runtime(), String.t(), keyword()) ::
  {:ok, XmtpElixirSdk.Client.t()} | {:error, XmtpElixirSdk.Error.t()}

can_message(client, addresses)

@spec can_message(XmtpElixirSdk.Client.t(), [String.t()]) ::
  {:ok, map()} | {:error, XmtpElixirSdk.Error.t()}

close_client(client)

@spec close_client(XmtpElixirSdk.Client.t()) ::
  :ok | {:error, XmtpElixirSdk.Error.t()}

count_messages(conversation)

@spec count_messages(XmtpElixirSdk.Conversation.t()) ::
  {:ok, non_neg_integer()} | {:error, XmtpElixirSdk.Error.t()}

create_client(runtime, opts)

@spec create_client(
  runtime(),
  keyword()
) :: {:ok, XmtpElixirSdk.Client.t()} | {:error, XmtpElixirSdk.Error.t()}

create_dm(client, recipient)

@spec create_dm(XmtpElixirSdk.Client.t(), String.t()) ::
  {:ok, XmtpElixirSdk.Conversation.t()} | {:error, XmtpElixirSdk.Error.t()}

create_group(client, members, opts \\ [])

@spec create_group(XmtpElixirSdk.Client.t(), [String.t()], keyword()) ::
  {:ok, XmtpElixirSdk.Conversation.t()} | {:error, XmtpElixirSdk.Error.t()}

get_conversation(client, conversation_id)

@spec get_conversation(XmtpElixirSdk.Client.t(), String.t()) ::
  {:ok, XmtpElixirSdk.Conversation.t() | nil}
  | {:error, XmtpElixirSdk.Error.t()}

inbox_id_for(client, address)

@spec inbox_id_for(XmtpElixirSdk.Client.t(), String.t()) ::
  {:ok, String.t() | nil} | {:error, XmtpElixirSdk.Error.t()}

libxmtp_version(runtime)

@spec libxmtp_version(runtime()) ::
  {:ok, String.t()} | {:error, XmtpElixirSdk.Error.t()}

list_conversations(client, opts \\ [])

@spec list_conversations(
  XmtpElixirSdk.Client.t(),
  keyword()
) :: {:ok, [XmtpElixirSdk.Conversation.t()]} | {:error, XmtpElixirSdk.Error.t()}

list_messages(conversation, opts \\ [])

@spec list_messages(
  XmtpElixirSdk.Conversation.t(),
  keyword()
) :: {:ok, [map()]} | {:error, XmtpElixirSdk.Error.t()}

members(conversation)

@spec members(XmtpElixirSdk.Conversation.t()) ::
  {:ok, [map()]} | {:error, XmtpElixirSdk.Error.t()}

request(runtime, op, params \\ %{})

@spec request(runtime(), String.t(), map()) ::
  {:ok, map()} | {:error, XmtpElixirSdk.Error.t()}

send_text(conversation, text)

@spec send_text(XmtpElixirSdk.Conversation.t(), String.t()) ::
  {:ok, String.t()} | {:error, XmtpElixirSdk.Error.t()}

sync_all(client)

@spec sync_all(XmtpElixirSdk.Client.t()) ::
  {:ok, map()} | {:error, XmtpElixirSdk.Error.t()}

sync_conversation(conversation)

@spec sync_conversation(XmtpElixirSdk.Conversation.t()) ::
  {:ok, map()} | {:error, XmtpElixirSdk.Error.t()}