lib/horizon/fee_stat.ex

defmodule Stellar.Horizon.FeeStat do
  @moduledoc """
  Represents a `FeeStat` resource from Horizon API.
  """

  @behaviour Stellar.Horizon.Resource

  alias Stellar.Horizon.Mapping

  @type t :: %__MODULE__{
          last_ledger: non_neg_integer(),
          last_ledger_base_fee: non_neg_integer(),
          ledger_capacity_usage: String.t(),
          fee_charged: map(),
          max_fee: map()
        }

  defstruct [
    :last_ledger,
    :last_ledger_base_fee,
    :ledger_capacity_usage,
    :fee_charged,
    :max_fee
  ]

  @mapping [
    last_ledger: :integer,
    last_ledger_base_fee: :integer
  ]

  @impl true
  def new(attrs, opts \\ [])

  def new(attrs, _opts) do
    %__MODULE__{}
    |> Mapping.build(attrs)
    |> Mapping.parse(@mapping)
  end
end