defmodule Stellar.Horizon.Operation.SetOptions do @moduledoc """ Represents a `SetOptions` operation from Horizon API. """ @behaviour Stellar.Horizon.Resource alias Stellar.Horizon.Mapping @type weight :: 0..255 @type t :: %__MODULE__{ signer_key: String.t(), signer_weight: weight(), master_key_weight: weight(), low_threshold: weight(), med_threshold: weight(), high_threshold: weight(), home_domain: String.t(), set_flags: list(), set_flags_s: list(), clear_flags: list(), clear_flags_s: list() } defstruct [ :signer_key, :signer_weight, :master_key_weight, :low_threshold, :med_threshold, :high_threshold, :home_domain, :set_flags, :set_flags_s, :clear_flags, :clear_flags_s ] @mapping [ signer_weight: :integer, master_key_weight: :integer, low_threshold: :integer, med_threshold: :integer, high_threshold: :integer ] @impl true def new(attrs, opts \\ []) def new(attrs, _opts) do %__MODULE__{} |> Mapping.build(attrs) |> Mapping.parse(@mapping) end end