Skip to main content

lib/rujira/thorchain/events/transfer.ex

defmodule Rujira.Thorchain.Events.Transfer do
  @moduledoc "A THORChain token transfer event."

  alias Rujira.Amount

  defstruct sender: nil, recipient: nil, amount: 0

  @type t :: %__MODULE__{
          sender: String.t(),
          recipient: String.t(),
          amount: Amount.t()
        }

  @spec new(map()) :: {:ok, t()} | {:error, term()}
  def new(%{"sender" => sender, "recipient" => recipient, "amount" => amount}) do
    with {:ok, amount} <- Amount.new(amount) do
      {:ok, %__MODULE__{sender: sender, recipient: recipient, amount: amount}}
    end
  end

  def new(_), do: {:error, :invalid_attrs}
end