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