defmodule StellarBase.XDR.OptionalSorobanTransactionMeta do
@moduledoc """
Automatically generated by xdrgen
DO NOT EDIT or your changes may be overwritten
Target implementation: elixir_xdr at https://hex.pm/packages/elixir_xdr
Representation of Stellar `OptionalSorobanTransactionMeta` type.
"""
@behaviour XDR.Declaration
alias StellarBase.XDR.SorobanTransactionMeta
@optional_spec XDR.Optional.new(SorobanTransactionMeta)
@type soroban_transaction_meta :: SorobanTransactionMeta.t() | nil
@type t :: %__MODULE__{soroban_transaction_meta: soroban_transaction_meta()}
defstruct [:soroban_transaction_meta]
@spec new(soroban_transaction_meta :: soroban_transaction_meta()) :: t()
def new(soroban_transaction_meta \\ nil),
do: %__MODULE__{soroban_transaction_meta: soroban_transaction_meta}
@impl true
def encode_xdr(%__MODULE__{soroban_transaction_meta: soroban_transaction_meta}) do
soroban_transaction_meta
|> XDR.Optional.new()
|> XDR.Optional.encode_xdr()
end
@impl true
def encode_xdr!(%__MODULE__{soroban_transaction_meta: soroban_transaction_meta}) do
soroban_transaction_meta
|> XDR.Optional.new()
|> XDR.Optional.encode_xdr!()
end
@impl true
def decode_xdr(bytes, optional_spec \\ @optional_spec)
def decode_xdr(bytes, optional_spec) do
case XDR.Optional.decode_xdr(bytes, optional_spec) do
{:ok, {%XDR.Optional{type: soroban_transaction_meta}, rest}} ->
{:ok, {new(soroban_transaction_meta), rest}}
{:ok, {nil, rest}} ->
{:ok, {new(), rest}}
error ->
error
end
end
@impl true
def decode_xdr!(bytes, optional_spec \\ @optional_spec)
def decode_xdr!(bytes, optional_spec) do
case XDR.Optional.decode_xdr!(bytes, optional_spec) do
{%XDR.Optional{type: soroban_transaction_meta}, rest} ->
{new(soroban_transaction_meta), rest}
{nil, rest} ->
{new(), rest}
end
end
end