SiloLens
SiloLens
Utility contract that simplifies reading data from Silo protocol contracts
Methods
balanceOfUnderlying
Get underlying balance of collateral or debt token
You can think about debt and collateral tokens as cToken in compound. They represent ownership of debt or collateral in given Silo. This method converts that ownership to exact amount of underlying token.
Parameters
_assetTotalDeposits
uint256
Total amount of assets that has been deposited or borrowed. For collateral token, use totalDeposits
to get this value. For debt token, use totalBorrowAmount
to get this value.
_shareToken
contract IShareToken
share token address. It's the collateral and debt share token address. You can find these addresses in: - ISilo.AssetStorage.collateralToken
- ISilo.AssetStorage.collateralOnlyToken
- ISilo.AssetStorage.debtToken
_user
address
wallet address for which to read data
Returns
_0
uint256
balance of underlying token deposited or borrowed of given user
borrowAPY
Yearly interest rate for borrowing asset token, dynamically calculated for current block timestamp
Parameters
_silo
contract ISilo
Silo address from which to read data
_asset
address
asset address
Returns
_0
uint256
APY with 18 decimals
borrowShare
Get debt token balance of a user
Debt token represents a share in total debt of given asset. This method calls balanceOf(_user) on that token.
Parameters
_silo
contract ISilo
Silo address from which to read data
_asset
address
asset address for which to read data
_user
address
wallet address for which to read data
Returns
_0
uint256
balance of debt token of given user
calcFee
Calculate amount of entry fee for given amount
Parameters
_amount
uint256
amount for which to calculate fee
Returns
_0
uint256
Amount of token fee to be paid
calculateBorrowValue
Calculate value of borrowed asset by user
It dynamically adds interest earned to borrowed amount
Parameters
_silo
contract ISilo
Silo address from which to read data
_user
address
account for which calculation are done
_asset
address
token address for which calculation are done
_3
uint256
undefined
_4
uint256
undefined
Returns
_0
uint256
value of debt denominated in ETH with 18 decimal
calculateCollateralValue
Calculate value of collateral asset for user
It dynamically adds interest earned. Takes for account collateral only deposits as well.
Parameters
_silo
contract ISilo
Silo address from which to read data
_user
address
account for which calculation are done
_asset
address
token address for which calculation are done
Returns
_0
uint256
value of collateral denominated in ETH with 18 decimal
collateralBalanceOfUnderlying
Get underlying balance of all deposits of given token of given user including "collateralOnly" deposits
It reads directly from storage so interest generated between last update and now is not taken for account
Parameters
_silo
contract ISilo
Silo address from which to read data
_asset
address
asset address for which to read data
_user
address
wallet address for which to read data
Returns
_0
uint256
balance of debt token of given user
collateralOnlyDeposits
Get amount of asset token that has been deposited to Silo with option "collateralOnly"
It reads directly from storage so interest generated between last update and now is not taken for account
Parameters
_silo
contract ISilo
Silo address from which to read data
_asset
address
asset address for which to read data
Returns
_0
uint256
amount of all "collateralOnly" deposits made for given asset
debtBalanceOfUnderlying
Get amount of debt of underlying token for given user
It reads directly from storage so interest generated between last update and now is not taken for account
Parameters
_silo
contract ISilo
Silo address from which to read data
_asset
address
asset address for which to read data
_user
address
wallet address for which to read data
Returns
_0
uint256
balance of underlying token owed
depositAPY
Yearly interest rate for depositing asset token, dynamically calculated for current block timestamp
Parameters
_silo
contract ISilo
Silo address from which to read data
_asset
address
asset address
Returns
_0
uint256
APY with 18 decimals
getBorrowAmount
Calculates current borrow amount for user with interest
Interest is calculated based on the provided timestamp with is expected to be current time.
Parameters
_silo
contract ISilo
Silo address from which to read data
_asset
address
token address for which calculation are done
_user
address
account for which calculation are done
_timestamp
uint256
timestamp used for interest calculations
Returns
_0
uint256
total amount of asset user needs to repay at provided timestamp
getModel
gets interest rates model object
Parameters
_silo
contract ISilo
Silo address from which to read data
_asset
address
asset for which to calculate interest rate
Returns
_0
contract IInterestRateModel
IInterestRateModel interest rates model object
getUserLTV
Returns Loan-To-Value for an account
Each Silo has multiple asset markets (bridge assets + unique asset). This function calculates a sum of all deposits and all borrows denominated in ETH. Returns fraction between borrow value and deposit value with 18 decimals.
Parameters
_silo
contract ISilo
Silo address from which to read data
_user
address
wallet address for which LTV is calculated
Returns
userLTV
uint256
user current LTV with 18 decimals
getUserLiquidationThreshold
Get combined liquidation threshold for a user
Methodology for calculating liquidation threshold is as follows. Each Silo is combined form multiple assets (bridge assets + unique asset). Each of these assets may have different liquidation threshold. That means effective liquidation threshold must be calculated per asset based on current deposits and borrows of given account.
Parameters
_silo
contract ISilo
Silo address from which to read data
_user
address
wallet address for which to read data
Returns
liquidationThreshold
uint256
liquidation threshold of given user
getUserMaximumLTV
Get combined maximum Loan-To-Value for a user
Methodology for calculating maximum LTV is as follows. Each Silo is combined form multiple assets (bridge assets + unique asset). Each of these assets may have different maximum Loan-To-Value for opening borrow position. That means effective maximum LTV must be calculated per asset based on current deposits and borrows of given account.
Parameters
_silo
contract ISilo
Silo address from which to read data
_user
address
wallet address for which to read data
Returns
maximumLTV
uint256
Maximum Loan-To-Value of given user
getUtilization
Calculates fraction between borrowed and deposited amount of tokens for given asset denominated in percentage
Utilization is calculated current values in storage so it does not take for account earned interest and ever-increasing total borrow amount. It assumes 1e18 = 100%.
Parameters
_silo
contract ISilo
Silo address from which to read data
_asset
address
asset address
Returns
_0
uint256
utilization value
inDebt
Check if user is in debt
Parameters
_silo
contract ISilo
Silo address from which to read data
_user
address
wallet address for which to read data
Returns
_0
bool
TRUE if user borrowed any amount of any asset, otherwise FALSE
lensPing
Method for sanity check
Returns
_0
bool
always true
liquidity
Amount of token that is available for borrowing.
Parameters
_silo
contract ISilo
Silo address from which to read data
_asset
address
asset address for which to read data
Returns
_0
uint256
Silo liquidity
protocolFees
Get amount of fees earned by protocol to date
It reads directly from storage so interest generated between last update and now is not taken for account
Parameters
_silo
contract ISilo
Silo address from which to read data
_asset
address
asset address for which to read data
Returns
_0
uint256
amount of fees earned by protocol to date
siloRepository
Returns
_0
contract ISiloRepository
undefined
totalBorrowAmount
Get amount of asset that has been borrowed
It reads directly from storage so interest generated between last update and now is not taken for account
Parameters
_silo
contract ISilo
Silo address from which to read data
_asset
address
asset address for which to read data
Returns
_0
uint256
amount of asset that has been borrowed
totalBorrowAmountWithInterest
returns total borrow amount with interest dynamically calculated at current block timestamp
Parameters
_silo
contract ISilo
undefined
_asset
address
asset address
Returns
_totalBorrowAmount
uint256
total deposits amount with interest
totalBorrowShare
Get totalSupply of debt token
Debt token represents a share in total debt of given asset
Parameters
_silo
contract ISilo
Silo address from which to read data
_asset
address
asset address for which to read data
Returns
_0
uint256
totalSupply of debt token
totalDeposits
Get amount of asset token that has been deposited to Silo
It reads directly from storage so interest generated between last update and now is not taken for account
Parameters
_silo
contract ISilo
Silo address from which to read data
_asset
address
asset address for which to read data
Returns
_0
uint256
amount of all deposits made for given asset
totalDepositsWithInterest
returns total deposits with interest dynamically calculated at current block timestamp
Parameters
_silo
contract ISilo
undefined
_asset
address
asset address
Returns
_totalDeposits
uint256
total deposits amount with interest
Errors
IncorrectDataLength
Last updated