Vault
Functions
receive
only used for unwrapping weth in withdrawETH
initialize
setTrustedForwarder
setClearingHouse
setCollateralManager
setWETH9
deposit
Deposit collateral into vault
Parameters:
token
address
The address of the token to deposit
amount
uint256
The amount of the token to deposit
depositFor
Deposit the collateral token for other account
Parameters:
to
address
The address of the account to deposit to
token
address
The address of collateral token
amount
uint256
The amount of the token to deposit
depositEther
Deposit ETH as collateral into vault
depositEtherFor
Deposit ETH as collateral for specified account
Parameters:
to
address
The address of the account to deposit to
withdraw
Withdraw collateral from vault
Parameters:
token
address
The address of the token to withdraw
amount
uint256
The amount of the token to withdraw
withdrawEther
Withdraw ETH from vault
Parameters:
amount
uint256
The amount of the ETH to withdraw
withdrawAll
Withdraw all free collateral from vault
Parameters:
token
address
The address of the token to withdraw
Return Values:
amount
uint256
The amount of the token withdrawn
withdrawAllEther
Withdraw all free collateral of ETH from vault
Return Values:
amount
uint256
The amount of ETH withdrawn
liquidateCollateral
Liquidate trader's collateral by given settlement token amount or non settlement token amount
Parameters:
trader
address
The address of trader that will be liquidated
token
address
The address of non settlement collateral token that the trader will be liquidated
amount
uint256
The amount of settlement token that the liquidator will repay for trader or
|isDenominatedInSettlementToken
| bool | Whether the amount is denominated in settlement token or not
Return Values:
returnAmount
uint256
The amount of a non-settlement token (in its native decimals) that is liquidated
getSettlementToken
Get the settlement token address
We assume the settlement token should match the denominator of the price oracle. i.e. if the settlement token is USDC, then the oracle should be priced in USD
Return Values:
settlementToken
address
The address of the settlement token
decimals
Get settlement token decimals
cached the settlement token's decimal for gas optimization
Return Values:
decimals
uint8
The decimals of settlement token
getTotalDebt
(Deprecated) Get the borrowed settlement token amount from insurance fund
Return Values:
debtAmount
uint256
The debt amount (in settlement token's decimals)
getClearingHouseConfig
Get ClearingHouseConfig
contract address
Return Values:
clearingHouseConfig
address
The address of ClearingHouseConfig
contract
getAccountBalance
Get AccountBalance
contract address
Return Values:
accountBalance
address
The address of AccountBalance
contract
getInsuranceFund
Get InsuranceFund
contract address
Return Values:
insuranceFund
address
The address of InsuranceFund
contract
getExchange
Get Exchange
contract address
Return Values:
exchange
address
The address of Exchange
contract
getClearingHouse
Get ClearingHouse
contract address
Return Values:
clearingHouse
address
The address of ClearingHouse
contract
getCollateralManager
Get CollateralManager
contract address
Return Values:
clearingHouse
address
The address of CollateralManager
contract
getWETH9
Get WETH9
contract address
Return Values:
clearingHouse
address
The address of WETH9
contract
getFreeCollateral
Get the free collateral value denominated in the settlement token of the specified trader
Parameters:
trader
address
The address of the trader
Return Values:
freeCollateral
uint256
the value (in settlement token's decimals) of free collateral available
getFreeCollateralByRatio
Get the free collateral amount of the specified trader and collateral ratio
There are three configurations for different insolvency risk tolerances: conservative, moderate &aggressive. We will start with the conservative one and gradually move to aggressive to increase capital efficiency
Parameters:
trader
address
The address of the trader
ratio
uint24
The margin requirement ratio, imRatio or mmRatio
Return Values:
freeCollateralByRatio
int256
freeCollateral (in settlement token's decimals), by using the
getSettlementTokenValue
Get the specified trader's settlement value, including pending fee, funding payment, owed realized PnL and unrealized PnL
Note the difference between settlementTokenBalanceX10_S
, getSettlementTokenValue()
and getBalance()
: They are all settlement token balances but with or without pending fee, funding payment, owed realized PnL, unrealized PnL, respectively In practical applications, we use getSettlementTokenValue()
to get the trader's debt (if < 0)
Parameters:
trader
address
The address of the trader
Return Values:
balance
int256
The balance amount (in settlement token's decimals)
getAccountValue
Get account value of the specified trader
Parameters:
trader
address
The address of the trader
Return Values:
accountValueX10_S
int256
account value (in settlement token's decimals)
getCollateralTokens
Get the array of collateral token addresses that a trader has in their account
Parameters:
trader
address
The address of the trader
Return Values:
collateralTokens
address[]
array of collateral token addresses
getBalance
Get the specified trader's settlement token balance, without pending fee, funding payment and owed realized PnL
The function is equivalent to getBalanceByToken(trader, settlementToken)
We keep this function solely for backward-compatibility with the older single-collateral system. In practical applications, the developer might want to use getSettlementTokenValue()
instead because the latter includes pending fee, funding payment etc. and therefore more accurately reflects a trader's settlement (ex. USDC) balance
Parameters:
trader
address
The address of the trader
Return Values:
balance
int256
The balance amount (in settlement token's decimals)
getBalanceByToken
Get the balance of Vault of the specified collateral token and trader
Parameters:
trader
address
The address of the trader
token
address
The address of the collateral token
Return Values:
balance
int256
The balance amount (in its native decimals)
getFreeCollateralByToken
Get the free collateral amount of the specified collateral token of specified trader
getFreeCollateralByToken(token) = (getSettlementTokenValue() >= 0) ? min(getFreeCollateral() / indexPrice[token], getBalanceByToken(token)) : 0 if token is settlementToken, then indexPrice[token] = 1
Parameters:
trader
address
The address of the trader
token
address
The address of the collateral token
Return Values:
freeCollateral
uint256
amount of that token (in the token's native decimals)
isLiquidatable
Parameters:
trader
address
The address of the trader
Return Values:
isLiquidatable
bool
If the trader can be liquidated
getMarginRequirementForCollateralLiquidation
get the margin requirement for collateral liquidation of a trader
this value is compared with ClearingHouse.getAccountValue()
(int)
Parameters:
trader
address
The address of the trader
Return Values:
marginRequirement
int256
margin requirement (in 18 decimals)
getCollateralMmRatio
Get the maintenance margin ratio for collateral liquidation
Return Values:
collateralMmRatio
uint24
The maintenance margin ratio for collateral liquidation
getRepaidSettlementByCollateral
Get a trader's repaid settlement amount by a given collateral amount
Parameters:
token
address
The address of the token of the trader's collateral
collateral
uint256
The amount of collateral token the liquidator wants to get
Return Values:
settlementX10_S
uint256
The settlement amount(in settlement token's decimals) the liquidator needs to pay
getLiquidatableCollateralBySettlement
Get a trader's liquidatable collateral amount by a given settlement amount
Parameters:
token
address
The address of the token of the trader's collateral
settlementX10_S
uint256
The amount of settlement token the liquidator wants to pay
Return Values:
collateral
uint256
The collateral amount(in its native decimals) the liquidator can get
getMaxRepaidSettlementAndLiquidatableCollateral
Get a trader's max repaid settlement & max liquidatable collateral by a given collateral token
formula: maxRepaidSettlement = maxLiquidatableCollateral (indexTwap (1 - discountRatio)) maxLiquidatableCollateral = min(maxRepaidSettlement / (indexTwap * (1 - discountRatio)), getBalanceByToken(trader, token))
Parameters:
trader
address
The address of the trader
token
address
The address of the token of the trader's collateral
Return Values:
maxRepaidSettlementX10_S
uint256
The maximum settlement amount(in settlement token's decimals)
|maxLiquidatableCollateral
| uint256 | The maximum liquidatable collateral amount (in the collateral token's native decimals) of a trader
settleBadDebt
Settle trader's bad debt
will only settle the bad debt when trader didn't have position and non-settlement collateral
Parameters:
trader
address
The address of trader that will be settled
Last updated