defmodule Stellar.TxBuild.BaseFee do
@moduledoc """
`BaseFee` struct definition.
"""
alias StellarBase.XDR.UInt32
@behaviour Stellar.TxBuild.XDR
@type t :: %__MODULE__{fee: non_neg_integer()}
defstruct [:fee]
@impl true
def new(operations_count \\ 0, opts \\ [])
def new(0, _opts), do: %__MODULE__{fee: base_fee()}
def new(operations_count, _opts) when is_integer(operations_count) do
%__MODULE__{fee: base_fee() * operations_count}
end
def new(_fee, _multiplier), do: {:error, :invalid_fee}
@impl true
def to_xdr(%__MODULE__{fee: fee}) do
UInt32.new(fee)
end
@spec base_fee() :: non_neg_integer()
defp base_fee, do: 100
end