defmodule Stellar.TxBuild.Weight do
@moduledoc """
`Weight` struct definition.
"""
alias StellarBase.XDR.UInt32
@behaviour Stellar.TxBuild.XDR
@type weight :: non_neg_integer()
@type t :: %__MODULE__{value: weight()}
defstruct [:value]
@impl true
def new(weight, opts \\ [])
def new(weight, _opts) when is_integer(weight) and weight >= 0 and weight <= 255 do
%__MODULE__{value: weight}
end
def new(_value, _opts), do: {:error, :invalid_weight}
@impl true
def to_xdr(%__MODULE__{value: weight}) do
UInt32.new(weight)
end
end