Skip to main content

LendControllerView

The LendControllerView is a stateless view helper contract that the LendController delegates read-only computations to. It extends the base ControllerView module with lending-specific logic — primarily making max_borrowable and tokens_to_shrink aware of borrow caps and available balance.

Each lending market deploys its own LendControllerView instance alongside the controller.

LendControllerView.vy

The source code for the LendControllerView.vy contract can be found on GitHub. The base view module is ControllerView.vy. The contract is written in Vyper version 0.4.3.

Deployment addresses will be added once contracts are finalized.


Lending-Specific Views

These functions override the base ControllerView to account for borrow caps and available liquidity.

max_borrowable

LendControllerView.max_borrowable(_d_collateral: uint256, _N: uint256, _user: address) -> uint256: view

Returns the maximum amount that can be borrowed for a given collateral and band count. Unlike the base implementation, this caps the result by the borrow cap and available balance in the vault.

InputTypeDescription
_d_collateraluint256Collateral amount
_Nuint256Number of bands
_useraddressBorrower address (for existing loan context)

Returns: max borrowable amount, capped by market limits (uint256).

<>Source code
Example

tokens_to_shrink

LendControllerView.tokens_to_shrink(_user: address, _d_collateral: uint256) -> uint256: view

Returns the amount of debt tokens needed to "shrink" a user's position by the given collateral amount. Accounts for lending market constraints.

InputTypeDescription
_useraddressBorrower address
_d_collateraluint256Collateral to remove

Returns: tokens needed (uint256).

<>Source code
Example

Health Previews

These functions are exported from the base ControllerView module and compute health predictions for various operations.

create_loan_health_preview

LendControllerView.create_loan_health_preview(_user: address, _collateral: uint256, _debt: uint256, _N: uint256, _full: bool) -> int256: view

Previews the health that would result from creating a loan with the given parameters.

InputTypeDescription
_useraddressBorrower address
_collateraluint256Collateral amount
_debtuint256Debt amount
_Nuint256Number of bands
_fullboolFull (pessimistic) health

Returns: predicted health (int256).

<>Source code
Example

borrow_more_health_preview

LendControllerView.borrow_more_health_preview(_user: address, _d_collateral: uint256, _d_debt: uint256, _full: bool) -> int256: view

Previews health after borrowing more.

InputTypeDescription
_useraddressBorrower address
_d_collateraluint256Additional collateral
_d_debtuint256Additional debt
_fullboolFull (pessimistic) health

Returns: predicted health (int256).

<>Source code
Example

add_collateral_health_preview

LendControllerView.add_collateral_health_preview(_user: address, _d_collateral: uint256, _full: bool) -> int256: view

Previews health after adding collateral.

InputTypeDescription
_useraddressBorrower address
_d_collateraluint256Collateral to add
_fullboolFull (pessimistic) health

Returns: predicted health (int256).

<>Source code
Example

remove_collateral_health_preview

LendControllerView.remove_collateral_health_preview(_user: address, _d_collateral: uint256, _full: bool) -> int256: view

Previews health after removing collateral.

InputTypeDescription
_useraddressBorrower address
_d_collateraluint256Collateral to remove
_fullboolFull (pessimistic) health

Returns: predicted health (int256).

<>Source code
Example

repay_health_preview

LendControllerView.repay_health_preview(_user: address, _d_debt: uint256, _full: bool) -> int256: view

Previews health after repaying debt.

InputTypeDescription
_useraddressBorrower address
_d_debtuint256Debt to repay
_fullboolFull (pessimistic) health

Returns: predicted health (int256).

<>Source code
Example

liquidate_health_preview

LendControllerView.liquidate_health_preview(_user: address, _full: bool) -> int256: view

Previews health after liquidation.

InputTypeDescription
_useraddressBorrower address
_fullboolFull (pessimistic) health

Returns: predicted health (int256).

<>Source code
Example

Position Info

user_state

LendControllerView.user_state(_user: address) -> uint256[4]: view

Returns the full state of a user's loan: [collateral, stablecoin, debt, N].

InputTypeDescription
_useraddressBorrower address

Returns: [collateral, stablecoin, debt, N] (uint256[4]).

<>Source code
Example

user_prices

LendControllerView.user_prices(_user: address) -> uint256[2]: view

Returns the upper and lower price bounds of a user's collateral bands.

InputTypeDescription
_useraddressBorrower address

Returns: [price_upper, price_lower] (uint256[2]).

<>Source code
Example

users_to_liquidate

LendControllerView.users_to_liquidate(_from: uint256, _limit: uint256) -> IController.Position[]: view

Returns a paginated list of liquidatable positions.

InputTypeDescription
_fromuint256Starting index
_limituint256Maximum positions to return

Returns: array of liquidatable positions (IController.Position[]).

<>Source code
Example

min_collateral

LendControllerView.min_collateral(_d_debt: uint256, _N: uint256) -> uint256: view

Returns the minimum collateral required for a given debt amount and number of bands.

InputTypeDescription
_d_debtuint256Desired debt
_Nuint256Number of bands

Returns: minimum collateral (uint256).

<>Source code
Example

calculate_debt_n1

LendControllerView.calculate_debt_n1(_collateral: uint256, _debt: uint256, _N: uint256) -> int256: view

Calculates the upper band number for a loan with the given parameters.

InputTypeDescription
_collateraluint256Collateral amount
_debtuint256Debt amount
_Nuint256Number of bands

Returns: upper band number (int256).

<>Source code
Example