XmtpElixirSdk.Clients (xmtp_elixir_sdk v0.1.2)

Copy Markdown

Client lifecycle and identity operations.

Use this module to:

  • create a ready-to-use client
  • build a client before registration
  • register a built client
  • manage accounts, recovery identifiers, and installations
  • check whether identifiers can receive XMTP messages

In practical terms:

  • create/3 gives you a registered client immediately
  • build/3 gives you a client record you can register later
  • register/1 finishes registration for a built client

Signature-request helpers are provided for app flows where a wallet or signer must approve a step before the SDK applies it.

Summary

Functions

api_aggregate_statistics(client)

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

api_identity_statistics(client)

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

api_statistics(client)

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

build(runtime, identifier, opts \\ [])

can_message(runtime, identifiers)

change_recovery_identifier(client, identifier, signer \\ %{})

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

clear_all_statistics(client)

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

close(client)

@spec close(XmtpElixirSdk.Client.t()) :: :ok

create(runtime, identifier, opts \\ [])

fetch_inbox_id_by_identifier(runtime, identifier)

@spec fetch_inbox_id_by_identifier(
  XmtpElixirSdk.Client.t() | XmtpElixirSdk.Runtime.t() | atom(),
  XmtpElixirSdk.Types.Identifier.t()
) :: {:ok, String.t() | nil} | {:error, XmtpElixirSdk.Error.t()}

fetch_key_package_statuses(client, installation_ids)

@spec fetch_key_package_statuses(XmtpElixirSdk.Client.t(), [String.t()]) ::
  {:ok, [XmtpElixirSdk.Types.KeyPackageStatus.t()]}
  | {:error, XmtpElixirSdk.Error.t()}

is_registered(client)

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

register(client)

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

remove_account(client, identifier, signer \\ %{})

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

revoke_all_other_installations(client, signer \\ %{})

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

revoke_installations(client, installation_ids, signer \\ %{})

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

unsafe_add_account(client, identifier, signer \\ %{})

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

unsafe_add_account_signature_text(client, identifier)

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

unsafe_apply_signature_request(client, signature_request_id, signer \\ %{})

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

unsafe_change_recovery_identifier_signature_text(client, identifier)

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

unsafe_create_inbox_signature_text(client)

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

unsafe_remove_account_signature_text(client, identifier)

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

unsafe_revoke_all_other_installations_signature_text(client)

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

unsafe_revoke_installations_signature_text(client, installation_ids)

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

verify_signed_with_installation_key(client, signature_text, signature_bytes)

@spec verify_signed_with_installation_key(
  XmtpElixirSdk.Client.t(),
  String.t(),
  binary()
) ::
  {:ok, boolean()} | {:error, XmtpElixirSdk.Error.t()}

verify_signed_with_public_key(client, signature_text, signature_bytes, public_key)

@spec verify_signed_with_public_key(
  XmtpElixirSdk.Client.t(),
  String.t(),
  binary(),
  binary()
) ::
  {:ok, boolean()} | {:error, XmtpElixirSdk.Error.t()}