defmodule Stellar.Horizon.Ledger do @moduledoc """ Represents a `Ledger` resource from Horizon API. """ @behaviour Stellar.Horizon.Resource alias Stellar.Horizon.Mapping @type t :: %__MODULE__{ id: String.t(), paging_token: String.t(), hash: String.t(), prev_hash: String.t(), sequence: non_neg_integer(), successful_transaction_count: non_neg_integer(), failed_transaction_count: non_neg_integer(), operation_count: non_neg_integer(), tx_set_operation_count: non_neg_integer(), closed_at: DateTime.t(), total_coins: String.t(), fee_pool: String.t(), base_fee_in_stroops: non_neg_integer(), base_reserve_in_stroops: non_neg_integer(), max_tx_set_size: non_neg_integer(), protocol_version: non_neg_integer(), header_xdr: String.t() } defstruct [ :id, :paging_token, :hash, :prev_hash, :sequence, :successful_transaction_count, :failed_transaction_count, :operation_count, :tx_set_operation_count, :closed_at, :total_coins, :fee_pool, :base_fee_in_stroops, :base_reserve_in_stroops, :max_tx_set_size, :protocol_version, :header_xdr ] @mapping [ closed_at: :date_time, sequence: :integer, successful_transaction_count: :integer, failed_transaction_count: :integer, tx_set_operation_count: :integer, operation_count: :integer, base_fee_in_stroops: :integer, base_reserve_in_stroops: :integer, max_tx_set_size: :integer ] @impl true def new(attrs, opts \\ []) def new(attrs, _opts) do %__MODULE__{} |> Mapping.build(attrs) |> Mapping.parse(@mapping) end end