lib/horizon/operation/liquidity_pool_deposit.ex

defmodule Stellar.Horizon.Operation.LiquidityPoolDeposit do
  @moduledoc """
  Represents a `LiquidityPoolDeposit` operation from Horizon API.
  """

  @behaviour Stellar.Horizon.Resource

  alias Stellar.Horizon.Mapping

  @type t :: %__MODULE__{
          liquidity_pool_id: String.t(),
          reserves_max: list(map()),
          min_price: String.t(),
          min_price_r: map(),
          max_price: String.t(),
          max_price_r: map(),
          reserves_deposited: list(map()),
          shares_received: integer()
        }

  defstruct [
    :liquidity_pool_id,
    :reserves_max,
    :min_price,
    :min_price_r,
    :max_price,
    :max_price_r,
    :reserves_deposited,
    :shares_received
  ]

  @mapping [shares_received: :integer]

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

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