Kujira.Ghost.Position (kujira v0.1.80)
An item representing the collateral deposit vs debt position of a particular address for a particular market
Fields
:market
- The market where the position is held:holder
- The address that owns the position:collateral_amount
- The amount of collateral_token that has been deposited:debt_shares
- The amount of debt_token minted and owned by this position:debt_amount
- The resultant amount of debt owed, based on thedebt_ratio
Summary
Types
The direction of the adjustment to the Position: collateral deposit, collateral withdrawal, debt borrow, debt repay
Functions
Returns all adjustments to positions found in the tx response
Calculates a liquidation price for a given position. Quoted in terms of the underlying token decimals
Types
adjustment()
@type adjustment() :: :deposit | :withdrawal | :borrow | :repay
The direction of the adjustment to the Position: collateral deposit, collateral withdrawal, debt borrow, debt repay
TODO: Add :liquidation
Functions
from_query(market, vault, arg3)
@spec from_query(Kujira.Ghost.Market.t(), Kujira.Ghost.Vault.t(), map()) :: :error | {:ok, t()}
from_tx_response(response)
@spec from_tx_response(Cosmos.Base.Abci.V1beta1.TxResponse.t()) :: [{{Kujira.Ghost.Market, String.t()}, String.t(), adjustment()}] | nil
Returns all adjustments to positions found in the tx response
liquidation_price(position, arg2, arg3)
@spec liquidation_price(Position.t(), Kujira.Ghost.Market.t(), Kujira.Ghost.Vault.t()) :: Decimal.t()
Calculates a liquidation price for a given position. Quoted in terms of the underlying token decimals
Token where decimals are similar - eg a loan of 1.2 USDC against 1 KUJI where max ltv is 0.6
iex> Kujira.Ghost.Position.liquidation_price( ...> %Kujira.Ghost.Position{debt_shares: 1_000_000, collateral_amount: 1_000_000}, ...> %Kujira.Ghost.Market{max_ltv: Decimal.from_float(0.6)}, ...> %Kujira.Ghost.Vault{status: %{debt_ratio: Decimal.from_float(1.2)}} ...>) Decimal.new(2)
And eg 1 wETH with 1000 USDC debt. Liq price should be 1666, which with a 12 dp decimal delta is 0.000000001666
iex> Kujira.Ghost.Position.liquidation_price( ...> %Kujira.Ghost.Position{debt_shares: 1_000_000_000, collateral_amount: 1_000_000_000_000_000_000}, ...> %Kujira.Ghost.Market{max_ltv: Decimal.from_float(0.6)}, ...> %Kujira.Ghost.Vault{status: %{debt_ratio: Decimal.from_float(1.0)}} ...>) Decimal.new("1.666666666666666666666666667E-9")