defmodule Stellar.TxBuild.SCMapEntry do @moduledoc """ `SCMapEntry` struct definition. """ @behaviour Stellar.TxBuild.XDR alias Stellar.TxBuild.SCVal alias StellarBase.XDR.SCMapEntry @type t :: %__MODULE__{key: SCVal.t(), val: SCVal.t()} defstruct [:key, :val] @impl true def new(key, val, opts \\ nil) def new(%SCVal{} = key, %SCVal{} = val, _opts), do: %__MODULE__{key: key, val: val} def new(_key, _val, _opts), do: {:error, :invalid_sc_map_entry} @impl true def to_xdr(%__MODULE__{key: key, val: val}) do key = SCVal.to_xdr(key) val = SCVal.to_xdr(val) SCMapEntry.new(key, val) end end