Current section
Files
Jump to
Current section
Files
lib/bingex/swap/model/wallet_update.ex
defmodule Bingex.Swap.Model.WalletUpdate do
@moduledoc """
Represents a wallet balance update event for a swap account.
"""
import Bingex.{Helpers, Convertors}
defstruct [
:asset,
:balance_change,
:available_balance,
:balance
]
@type t() :: %__MODULE__{
asset: nil | binary(),
balance_change: nil | float(),
available_balance: nil | float(),
balance: nil | float()
}
@spec decode(map()) :: {:ok, t()} | :error
def decode(%{} = data) do
{:ok,
%__MODULE__{
asset: get_and_transform(data, "a", &to_non_empty_binary/1),
balance_change: get_and_transform(data, "bc", &to_float/1),
available_balance: get_and_transform(data, "wb", &to_float/1),
balance: get_and_transform(data, "cw", &to_float/1)
}}
end
def decode(_data), do: :error
end