SwapPool
Swap pool contract. May or may not be covered by a backstop pool. Conceptionally, there are two ways to temporarily disable a pool: The owner can either pause the pool, disabling deposits, swaps & backstop, or the owner can set the pool cap to zero which only prevents deposits. The former is for security incidents, the latter for phasing out a pool.
SwapFees
totalLiabilities
The liabilities of the pool Cannot just use totalSupply() as the totalLiabilities will accumulate also the LP fees from swaps. This is fixed point number using the decimals of this pool
reserve
The amount of pool tokens usable for swaps This is fixed point number using the decimals of this pool
reserveWithSlippage
The amount of pool tokens plus the slippage The relationship with reserve is: reserveWithSlippage = slippageCurve.psi(reserve, totalLiabilities) However this relationship will never hold precisely and will deviate slightly for numerical reasons!! All code needs to work even if this relationship does not hold This is fixed point number using the decimals of this pool
insuranceWithdrawalTimelock
maxCoverageRatioForSwapIn
protocolTreasury
backstop
router
slippageCurve
deposit
Deposits amount of tokens into pool Will change cov ratio of pool, will increase delta to 0
Parameters
Name | Type | Description |
---|---|---|
_depositAmount | uint256 | The amount to be deposited, an amount of pool tokens |
Return Values
Name | Type | Description |
---|---|---|
_sharesToMint | uint256 | Total number of pool lp tokens minted |
_fee | int256 | The slippage reward (a negative fee), fixed point number using the pool decimals |
quoteDeposit
Get a quote for the effective amount of tokens for a deposit
Parameters
Name | Type | Description |
---|---|---|
_depositAmount | uint256 | The amount to be deposited |
Return Values
Name | Type | Description |
---|---|---|
_sharesToMint | uint256 | Total number of pool LP tokens to be minted (incl. slippage) |
withdraw
Withdraws liquidity amount of asset ensuring minimum amount required
Parameters
Name | Type | Description |
---|---|---|
_sharesToBurn | uint256 | The liquidity to be withdrawn, an amount of LP tokens |
_minimumAmount | uint256 | The minimum amount of returned pool tokens that will be accepted by user |
Return Values
Name | Type | Description |
---|---|---|
_payoutAmount | uint256 | Amount of pool tokens withdrawn after applying withdrawal fee |
_fee | int256 | The penalty due to slippage (a positive fee), fixed point number using the pool decimals |
quoteWithdraw
Get a quote for the effective amount of tokens for a withdrawal
Parameters
Name | Type | Description |
---|---|---|
_sharesToBurn | uint256 | Total number of pool LP tokens to be burned |
Return Values
Name | Type | Description |
---|---|---|
_payoutAmount | uint256 | The amount to be withdrawn (incl. slippage) |
quoteBackstopDrain
Get a quote for the effective amount of tokens for a backstop drain
Parameters
Name | Type | Description |
---|---|---|
_amount | uint256 | The amount of tokens to be withdrawn for backstop liquidity |
Return Values
Name | Type | Description |
---|---|---|
_swapAmount | uint256 | The amount to be withdrawn (incl. slippage) |
quoteSwapInto
Get a quote for the effective amount of tokens for a swap into
Parameters
Name | Type | Description |
---|---|---|
_amount | uint256 | The amount of pool tokens to swap into the pool |
Return Values
Name | Type | Description |
---|---|---|
_effectiveAmount | uint256 | Effective amount, incl. slippage (penalty or rewards) |
quoteSwapOut
Get a quote for the effective amount of tokens, incl. slippage and fees
Parameters
Name | Type | Description |
---|---|---|
_amount | uint256 | The amount of pool asset to swap out of the pool |
Return Values
Name | Type | Description |
---|---|---|
_effectiveAmount | uint256 | Effective amount, incl. slippage and fees |
_protocolFeeWithSlippage | uint256 | The protocol fee that is to be sent to the treasury |
_effectiveLpFee | uint256 | The actual LP fee – totalLiabilities should be incremented by this value |
_backstopFee | uint256 | The effective backstop fee |
coverage
returns pool coverage ratio
Return Values
Name | Type | Description |
---|---|---|
_reserves | uint256 | Current amount of usable |
_liabilities | uint256 | total amount of |
getExcessLiquidity
Computes the excess liquidity that forms that valuation of the backstop pool is defined as b + C - B - L where
b is reserve
C is the amount of
asset()
tokens in the poolB is reserveWithSlippage
L is totalLiabilities The excess liquidity is a fixed point number using the decimals of this pool
Return Values
Name | Type | Description |
---|---|---|
_excessLiquidity | int256 | The total excess liquidity of this pool, can be negative |
insuranceWithdrawalUnlock
Return the earliest block no that insurance withdrawals are possible.
Parameters
Name | Type | Description |
---|---|---|
_liquidityProvider | address | Address of some account, usually the caller |
Return Values
Name | Type | Description |
---|---|---|
_unlockedOnBlockNo | uint256 | Block number of the first block after time lock runs out |
sharesTargetWorth
Returns the worth of an amount of pool shares (LP tokens) in underlying principle
Parameters
Name | Type | Description |
---|---|---|
_sharesToBurn | uint256 | The number of LP tokens to burn |
Return Values
Name | Type | Description |
---|---|---|
_amount | uint256 | The amount of |
swapFees
Return the configured swap fees for this pool
Return Values
Name | Type | Description |
---|---|---|
_lpFee | uint256 | Fee that benefits the pool's LPers, in 0.0001% (e.g. 300 -> 0.0300%) |
_backstopFee | uint256 | Fee that benefits the backstop pool, in 0.0001% (e.g. 150 -> 0.0150%) |
_protocolFee | uint256 | Fee that benefits the protocol, in 0.0001% (e.g. 50 -> 0.0050%) |
Last updated