defmodule Rujira.Thorchain.Events.Swap do
@moduledoc "A THORChain pool swap event."
defstruct pool: nil, id: nil, coin: nil, emit_asset: nil, memo: nil, from: nil, to: nil
@type t :: %__MODULE__{
pool: String.t(),
id: String.t() | nil,
coin: String.t() | nil,
emit_asset: String.t() | nil,
memo: String.t() | nil,
from: String.t() | nil,
to: String.t() | nil
}
@spec new(map()) :: {:ok, t()} | {:error, :invalid_attrs}
def new(%{"pool" => pool} = attrs) do
{:ok,
%__MODULE__{
pool: pool,
id: Map.get(attrs, "id"),
coin: Map.get(attrs, "coin"),
emit_asset: Map.get(attrs, "emit_asset"),
memo: Map.get(attrs, "memo"),
from: Map.get(attrs, "from"),
to: Map.get(attrs, "to")
}}
end
def new(_), do: {:error, :invalid_attrs}
end