Kujira.Ghost (kujira v0.1.80)
Kujira's lending platform.
It has a vault-market architecture, where multiple Market can draw down from a single Vault. A Market must be whitelisted, as the repayment is guaranteed by its own execution logic, e.g. being over-collateralised and having a connection to Orca to liquidate collateral when needed
Summary
Functions
Gets the total deposit value of an address in a Vault. Under the hood, this queries the addresses balance of the receipt token, and adjusts it by the deposit_ratio
Fetches the Market contract and its current config from the chain.
Fetches the Vault contract and its current config from the chain
Fetches all Markets
Loads all positions via query_state_all, inheriting the same memoization
Fetches all Vaults
Loads the current Status into the Market
Loads the Market into a format that Orca can consume for health reporting
Loads a Position by borrower address
Loads the current Status into the Vault
Creates a lazy stream for fetching all positions for a Market
Functions
get_deposit(channel, borrower)
Gets the total deposit value of an address in a Vault. Under the hood, this queries the addresses balance of the receipt token, and adjusts it by the deposit_ratio
get_deposit(channel, vault, borrower)
@spec get_deposit(GRPC.Channel.t(), Kujira.Ghost.Vault.t(), String.t()) :: {:ok, integer()} | {:error, GRPC.RPCError.t()}
get_market(channel, address)
@spec get_market(GRPC.Channel.t(), String.t()) :: {:ok, Kujira.Ghost.Market.t()} | {:error, :not_found}
Fetches the Market contract and its current config from the chain.
get_vault(channel, address)
@spec get_vault(GRPC.Channel.t(), String.t()) :: {:ok, Kujira.Ghost.Vault.t()} | {:error, :not_found}
Fetches the Vault contract and its current config from the chain
list_markets(channel, code_ids \\ [291])
@spec list_markets(GRPC.Channel.t(), [integer()]) :: {:ok, [Kujira.Ghost.Market.t()]} | {:error, GRPC.RPCError.t()}
Fetches all Markets
list_positions(channel, market, vault)
@spec list_positions( GRPC.Channel.t(), Kujira.Ghost.Market.t(), Kujira.Ghost.Vault.t() ) :: [ Kujira.Ghost.Position.t() ]
Loads all positions via query_state_all, inheriting the same memoization
list_vaults(channel, code_ids \\ [316])
@spec list_vaults(GRPC.Channel.t(), [integer()]) :: {:ok, [Kujira.Ghost.Vault.t()]} | {:error, GRPC.RPCError.t()}
Fetches all Vaults
load_market(channel, market)
@spec load_market(GRPC.Channel.t(), Kujira.Ghost.Market.t()) :: {:ok, Kujira.Ghost.Market.t()} | {:error, GRPC.RPCError.t()}
Loads the current Status into the Market
load_orca_market(channel, market, precision \\ 3)
@spec load_orca_market(GRPC.Channel.t(), Kujira.Ghost.Market.t(), integer() | nil) :: {:ok, Kujira.Orca.Market.t()} | {:error, GRPC.RPCError.t()}
Loads the Market into a format that Orca can consume for health reporting
load_position(channel, market, borrower)
@spec load_position(GRPC.Channel.t(), Kujira.Ghost.Market.t(), String.t()) :: {:ok, Kujira.Ghost.Position.t()} | {:error, GRPC.RPCError.t()}
Loads a Position by borrower address
load_vault(channel, vault)
@spec load_vault(GRPC.Channel.t(), Kujira.Ghost.Vault.t()) :: {:ok, Kujira.Ghost.Vault.t()} | {:error, GRPC.RPCError.t()}
Loads the current Status into the Vault
load_vault_oracle_price(channel, vault)
stream_positions(channel, market, vault)
@spec stream_positions( GRPC.Channel.t(), Kujira.Ghost.Market.t(), Kujira.Ghost.Vault.t() ) :: %Stream{ accs: term(), done: term(), enum: term(), funs: term() }
Creates a lazy stream for fetching all positions for a Market