defmodule Stellar.TxBuild.VariableOpaque do @moduledoc """ `VariableOpaque` struct definition. """ alias StellarBase.XDR.VariableOpaque @behaviour Stellar.TxBuild.XDR @type value :: String.t() @type t :: %__MODULE__{value: value()} defstruct [:value] @impl true def new(value, opts \\ []) def new(value, _opts) when is_binary(value), do: %__MODULE__{value: value} def new(_value, _opts), do: {:error, :invalid_opaque} @impl true def to_xdr(%__MODULE__{value: value}), do: VariableOpaque.new(value) def to_xdr(_struct), do: {:error, :invalid_struct} end