lib/horizon/operation/payment.ex

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

  @behaviour Stellar.Horizon.Resource

  alias Stellar.Horizon.Mapping

  @type t :: %__MODULE__{
          asset_type: float(),
          asset_code: String.t(),
          asset_issuer: String.t(),
          from: String.t(),
          to: String.t(),
          amount: float()
        }

  defstruct [:asset_type, :asset_code, :asset_issuer, :from, :to, :amount]

  @mapping [amount: :float]

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

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