Packages
kujira
0.1.69
0.1.80
0.1.79
0.1.78
0.1.77
0.1.76
0.1.75
0.1.74
0.1.73
0.1.72
0.1.71
0.1.70
0.1.69
0.1.68
0.1.67
0.1.66
0.1.65
0.1.64
0.1.63
0.1.62
0.1.61
0.1.60
0.1.59
0.1.58
0.1.57
0.1.56
0.1.55
0.1.54
0.1.53
0.1.52
0.1.51
0.1.50
0.1.49
0.1.48
0.1.47
0.1.46
0.1.45
0.1.44
0.1.43
0.1.42
0.1.41
0.1.40
0.1.39
0.1.38
0.1.37
0.1.36
0.1.35
0.1.34
0.1.33
0.1.32
0.1.31
0.1.30
0.1.29
0.1.28
0.1.27
0.1.25
0.1.24
0.1.23
0.1.22
0.1.21
0.1.20
0.1.19
0.1.18
0.1.17
0.1.16
0.1.15
0.1.14
0.1.13
0.1.12
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Elixir interfaces to Kujira dApps, for building indexers, APIs and bots
Current section
Files
Jump to
Current section
Files
lib/kujira/orca/pool.ex
defmodule Kujira.Orca.Pool do
@moduledoc """
A pool of bid tokens at a specific premium %, for a specific Queue
## Fields
* `:premium` - The premium "charged" above the current market rate (ie the discount that the collateral is bought for)
* `:total` - The total amount of activated bid token in the pool
"""
defstruct premium: Decimal.new(0), total: :not_loaded, epoch: :not_loaded
@type t :: %__MODULE__{
premium: Decimal.t(),
total: integer() | :not_loaded,
epoch: integer() | :not_loaded
}
@doc """
Calculates a new Pool from the config on the Queue
"""
@spec calculate(Decimal.t(), integer()) :: __MODULE__.t()
def calculate(premium_rate_per_slot, slot) do
%__MODULE__{
premium: slot |> Decimal.new() |> Decimal.mult(premium_rate_per_slot)
}
end
@spec load(map() | nil, __MODULE__.t()) :: __MODULE__.t()
def load(
%{
"current_epoch" => current_epoch,
"total_bid_amount" => total_bid_amount
},
pool
) do
{current_epoch, ""} = Integer.parse(current_epoch)
{total_bid_amount, ""} = Integer.parse(total_bid_amount)
%{pool | epoch: current_epoch, total: total_bid_amount}
end
def load(nil, pool), do: %{pool | epoch: 0, total: 0}
end