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
maxCoverageRatioForSwapIn
safeRedeemPercentage
safeRedeemInterval
lastBackstopBurnTimestamp
lastAvailableAmountForSafeRedeem
protocolTreasury
lastDepositAt
lastDepositAmount
backstop
router
router instance for this swap pool
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 |
_minLPAmountOut | uint256 | Minimum amount of pool lp tokens to mint |
_deadline | uint256 | Unix timestamp after which the transaction will revert |
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) |
slippageReward_ | uint256 | The reward due to slippage, fixed point number using the pool decimals |
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 |
_deadline | uint256 | Unix timestamp after which the transaction will revert |
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) |
slippagePenalty_ | uint256 | The penalty due to slippage |
backstopBurn
Burns swap pool LP tokens of owner, will get compensated using backstop liquidity (reedem swap pool shares) Can only be invoked by backstop pool, disabled when pool is paused
Parameters
Name | Type | Description |
---|---|---|
_owner | address | The LP's address whose LP tokens should be burned |
_sharesToBurn | uint256 | The number of LP tokens of this pool to burn |
Return Values
Name | Type | Description |
---|---|---|
amount_ | uint256 | The amount of |
getMaxRedeemSwapPoolShares
Get the maximum amount of swap pool LP tokens that can be burned (CR <= 100%)
Return Values
Name | Type | Description |
---|---|---|
maxShares_ | uint256 | The maximum amount of LP tokens that can be burned |
backstopDrain
For backstop pool to withdraw liquidity if swap pool's coverage ratio > 100% Can only be invoked by backstop pool
Parameters
Name | Type | Description |
---|---|---|
_amount | uint256 | The amount of |
_recipient | address | Address to send the funds to |
Return Values
Name | Type | Description |
---|---|---|
swapAmount_ | uint256 | The amount of |
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 |
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%) |
depositingUnfreezesAt
Last updated