Current section
Files
Jump to
Current section
Files
lib/bingex/swap/model/config_event.ex
defmodule Bingex.Swap.Model.ConfigEvent do
@moduledoc """
Represents a configuration event in BingX swaps.
"""
import Bingex.{Helpers, Convertors}
defstruct [
:symbol,
:timestamp,
:margin_mode,
:short_leverage,
:long_leverage
]
@type t() :: %__MODULE__{
symbol: binary() | nil,
timestamp: integer(),
margin_mode: :crossed,
short_leverage: float() | nil,
long_leverage: float() | nil
}
@spec decode(map()) :: t()
def decode(%{} = data) do
timestamp = Map.get(data, "E")
config = Map.get(data, "ac", %{})
%__MODULE__{
timestamp: timestamp,
symbol: get_and_transform(config, "s", &to_non_empty_binary/1),
margin_mode: get_and_transform(config, "mt", &decode_margin_mode/1),
short_leverage: get_and_transform(config, "S", &to_float/1),
long_leverage: get_and_transform(config, "l", &to_float/1)
}
end
end