defmodule Stellar.Horizon.OrderBook do @moduledoc """ Represents an `OrderBook` resource from Horizon API. """ @behaviour Stellar.Horizon.Resource alias Stellar.Horizon.Mapping alias Stellar.Horizon.OrderBook.Price @type t :: %__MODULE__{ bids: list(Price.t()), asks: list(Price.t()), base: map(), counter: map() } defstruct [ :bids, :asks, :base, :counter ] @mapping [ bids: {:list, :struct, Price}, asks: {:list, :struct, Price} ] @impl true def new(attrs, opts \\ []) def new(attrs, _opts) do %__MODULE__{} |> Mapping.build(attrs) |> Mapping.parse(@mapping) end end