defmodule Stellar.TxBuild.OptionalWeight do @moduledoc """ `OptionalWeight` struct definition. """ alias StellarBase.XDR.OptionalUInt32 alias Stellar.TxBuild.Weight @behaviour Stellar.TxBuild.XDR @type weight :: Weight.t() | nil @type t :: %__MODULE__{weight: weight()} defstruct [:weight] @impl true def new(weight \\ nil, opts \\ []) def new(%Weight{} = weight, _opts) do %__MODULE__{weight: weight} end def new(nil, _opts), do: %__MODULE__{weight: nil} @impl true def to_xdr(%__MODULE__{weight: nil}), do: OptionalUInt32.new() def to_xdr(%__MODULE__{weight: weight}) do weight |> Weight.to_xdr() |> OptionalUInt32.new() end end