Packages
stellar_sdk
0.9.2
0.23.0
0.22.0
0.21.2
0.21.1
0.21.0
0.20.0
0.19.0
0.18.1
0.18.0
0.17.1
0.17.0
0.16.1
0.16.0
0.15.1
0.15.0
0.14.0
0.13.1
0.13.0
0.12.0
0.11.8
0.11.7
0.11.6
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.2
0.10.1
0.10.0
0.9.3
0.9.2
0.9.1
0.9.0
0.8.1
0.8.0
0.7.1
0.7.0
0.6.0
0.5.0
0.4.0
0.3.0
0.2.0
0.1.0
Elixir SDK for the Stellar network.
Current section
Files
Jump to
Current section
Files
lib/tx_build/base_fee.ex
defmodule Stellar.TxBuild.BaseFee do
@moduledoc """
`BaseFee` struct definition.
"""
alias StellarBase.XDR.UInt32
@behaviour Stellar.TxBuild.XDR
@type t :: %__MODULE__{fee: non_neg_integer(), multiplier: non_neg_integer()}
defstruct [:fee, multiplier: 0]
@impl true
def new(fee \\ nil, opts \\ [])
def new(nil, _opts), do: %__MODULE__{fee: base_fee()}
def new(fee, _opts) when is_integer(fee), do: %__MODULE__{fee: fee}
def new(_fee, _opts), do: {:error, :invalid_fee}
@impl true
def to_xdr(%__MODULE__{fee: fee, multiplier: 0}), do: UInt32.new(fee)
def to_xdr(%__MODULE__{fee: fee, multiplier: multiplier}), do: UInt32.new(fee * multiplier)
@spec increment(base_fee :: t(), times :: non_neg_integer()) :: t()
def increment(base_fee, times \\ 1)
def increment(%__MODULE__{multiplier: multiplier} = base_fee, times)
when is_integer(times) and times >= 0 do
%{base_fee | multiplier: multiplier + times}
end
def increment(_base_fee, _times), do: {:error, :invalid_fee}
@spec base_fee() :: non_neg_integer()
defp base_fee, do: 100
end