defmodule Stellar.TxBuild.String32 do
@moduledoc """
`String32` struct definition.
"""
alias StellarBase.XDR.{String32, String32}
@behaviour Stellar.TxBuild.XDR
@type value :: String.t()
@type t :: %__MODULE__{value: value()}
defstruct [:value]
@max_length 32
@impl true
def new(value, opts \\ [])
def new(value, _opts) when is_bitstring(value) and byte_size(value) <= @max_length do
%__MODULE__{value: value}
end
def new(_value, _opts), do: {:error, :invalid_string}
@impl true
def to_xdr(%__MODULE__{value: value}) do
String32.new(value)
end
end