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