Packages
kujira
0.1.49
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/usk/margin.ex
defmodule Kujira.Usk.Margin do
@moduledoc """
A margin contract for USK "wraps" the basic Market contract, allowing minted USK to purchase collateral
from FIN, before posting it as collateral to a regular position. It also allows a position holder to take
profits by minting more USK against an appreciating collateral asset, or repaying some of the USK debt to
cover a falling collateral price
## Fields
* `:fin_pair` - The FIN pair that is used to buy and sell collateral
* `:market` - The underlying config of the USK CDP market
"""
alias Kujira.Usk.Market
defstruct [:fin_pair, :market]
@type t :: %__MODULE__{
fin_pair: {Kujira.Fin.Pair, String.t()},
market: Market.t()
}
@spec from_config(GRPC.Channel.t(), String.t(), map()) :: :error | {:ok, __MODULE__.t()}
def from_config(channel, address, %{
"fin_address" => fin_address,
"market" => market
}) do
with {:ok, market} <- Market.from_config(channel, address, market) do
{:ok, %__MODULE__{fin_pair: {Kujira.Fin.Pair, fin_address}, market: market}}
else
_ ->
:error
end
end
end