Pool
Manages deposits, withdrawals and swaps. Holds a mapping of assets and parameters.
contracts/wombat-core/pool/Pool.sol
Title: Pool
Notice: Manages deposits, withdrawals and swaps. Holds a mapping of assets and parameters.
Details: The main entry-point of Wombat protocol Note: All variables are 18 decimals, except from that of underlying tokens
event AssetAdded
***Pool.AssetAdded(token, asset) ***
Notice: An event thats emitted when an asset is added to Pool
Arguments
name
type
description
token
address
indexed
asset
address
indexed
event AssetRemoved
***Pool.AssetRemoved(token, asset) ***
Notice: An event thats emitted when asset is removed from Pool
Arguments
name
type
description
token
address
indexed
asset
address
indexed
event Deposit
***Pool.Deposit(sender, token, amount, liquidity, to) ***
Notice: An event thats emitted when a deposit is made to Pool
Arguments
name
type
description
sender
address
indexed
token
address
not indexed
amount
uint256
not indexed
liquidity
uint256
not indexed
to
address
indexed
event FillPool
***Pool.FillPool(token, amount) ***
Arguments
name
type
description
token
address
not indexed
amount
uint256
not indexed
event OwnershipTransferred
***Pool.OwnershipTransferred(previousOwner, newOwner) ***
Arguments
name
type
description
previousOwner
address
indexed
newOwner
address
indexed
event Paused
***Pool.Paused(account) ***
Arguments
name
type
description
account
address
not indexed
event PausedAsset
***Pool.PausedAsset(asset, account) ***
Arguments
name
type
description
asset
address
not indexed
account
address
not indexed
event SetAmpFactor
***Pool.SetAmpFactor(value) ***
Arguments
name
type
description
value
uint256
not indexed
event SetDev
***Pool.SetDev(addr) ***
Arguments
name
type
description
addr
address
not indexed
event SetFee
***Pool.SetFee(lpDividendRatio, retentionRatio) ***
Arguments
name
type
description
lpDividendRatio
uint256
not indexed
retentionRatio
uint256
not indexed
event SetFeeTo
***Pool.SetFeeTo(addr) ***
Arguments
name
type
description
addr
address
not indexed
event SetHaircutRate
***Pool.SetHaircutRate(value) ***
Arguments
name
type
description
value
uint256
not indexed
event SetMasterWombat
***Pool.SetMasterWombat(addr) ***
Arguments
name
type
description
addr
address
not indexed
event SetMintFeeThreshold
***Pool.SetMintFeeThreshold(value) ***
Arguments
name
type
description
value
uint256
not indexed
event Swap
***Pool.Swap(sender, fromToken, toToken, fromAmount, toAmount, to) ***
Notice: An event thats emitted when a swap is made in Pool
Arguments
name
type
description
sender
address
indexed
fromToken
address
not indexed
toToken
address
not indexed
fromAmount
uint256
not indexed
toAmount
uint256
not indexed
to
address
indexed
event TransferTipBucket
***Pool.TransferTipBucket(token, amount, to) ***
Arguments
name
type
description
token
address
not indexed
amount
uint256
not indexed
to
address
not indexed
event Unpaused
***Pool.Unpaused(account) ***
Arguments
name
type
description
account
address
not indexed
event UnpausedAsset
***Pool.UnpausedAsset(asset, account) ***
Arguments
name
type
description
asset
address
not indexed
account
address
not indexed
event Withdraw
***Pool.Withdraw(sender, token, amount, liquidity, to) ***
Notice: An event thats emitted when a withdrawal is made from Pool
Arguments
name
type
description
sender
address
indexed
token
address
not indexed
amount
uint256
not indexed
liquidity
uint256
not indexed
to
address
indexed
function addAsset
***Pool.addAsset(token, asset) ***
Notice: Adds asset to pool, reverts if asset already exists in pool
Arguments
name
type
description
token
address
The address of token
asset
address
The address of the Wombat Asset contract
function addressOfAsset
Pool.addressOfAsset(token) view
Notice: Gets Asset corresponding to ERC20 token. Reverts if asset does not exists in Pool.
Details: to be used externally
Arguments
name
type
description
token
address
The address of ERC20 token
Outputs
name
type
description
address
function ampFactor
Pool.ampFactor() view
Notice: Amplification factor
Outputs
name
type
description
uint256
function deposit
***Pool.deposit(token, amount, minimumLiquidity, to, deadline, shouldStake) ***
Notice: Deposits amount of tokens into pool ensuring deadline
Details: Asset needs to be created and added to pool before any operation. This function assumes tax free token.
Arguments
name
type
description
token
address
The token address to be deposited
amount
uint256
The amount to be deposited
minimumLiquidity
uint256
to
address
The user accountable for deposit, receiving the Wombat assets (lp)
deadline
uint256
The deadline to be respected
shouldStake
bool
Outputs
name
type
description
liquidity
uint256
Total asset liquidity minted
function dev
Pool.dev() view
Notice: Dev address
Outputs
name
type
description
address
function exchangeRate
Pool.exchangeRate(token) view
Notice: Returns the exchange rate of the LP token
Arguments
name
type
description
token
address
The address of the token
Outputs
name
type
description
xr
uint256
The exchange rate of LP token
function feeTo
Pool.feeTo() view
Outputs
name
type
description
address
function fillPool
***Pool.fillPool(token, amount) ***
Arguments
name
type
description
token
address
amount
uint256
function getTokens
Pool.getTokens() view
Notice: Return list of tokens in the pool
Outputs
name
type
description
address[]
function globalEquilCovRatio
Pool.globalEquilCovRatio() view
Outputs
name
type
description
equilCovRatio
uint256
invariantInUint
uint256
function haircutRate
Pool.haircutRate() view
Notice: Haircut rate
Outputs
name
type
description
uint256
function initialize
***Pool.initialize(ampFactor_, haircutRate_) ***
Notice: Initializes pool. Dev is set to be the account calling this function.
Arguments
name
type
description
ampFactor_
uint256
haircutRate_
uint256
function lpDividendRatio
Pool.lpDividendRatio() view
Notice: LP dividend ratio : the ratio of haircut that should distribute to LP
Outputs
name
type
description
uint256
function masterWombat
Pool.masterWombat() view
Outputs
name
type
description
address
function mintFee
***Pool.mintFee(token) ***
Notice: Send fee collected to the fee beneficiary
Arguments
name
type
description
token
address
The address of the token to collect fee
function mintFeeThreshold
Pool.mintFeeThreshold() view
Notice: The threshold to mint fee (unit: WAD)
Outputs
name
type
description
uint256
function owner
Pool.owner() view
Details: Returns the address of the current owner.
Outputs
name
type
description
address
function pause
***Pool.pause() ***
Details: pause pool, restricting certain operations
function pauseAsset
***Pool.pauseAsset(token) ***
Details: pause asset, restricting deposit and swap operations
Arguments
name
type
description
token
address
function paused
Pool.paused() view
Details: Returns true if the contract is paused, and false otherwise.
Outputs
name
type
description
bool
function quoteAmountIn
Pool.quoteAmountIn(fromToken, toToken, toAmount) view
Notice: Returns the minimum input asset amount required to buy the given output asset amount (accounting for fees and slippage)
Details: To be used by frontend
Arguments
name
type
description
fromToken
address
The initial ERC20 token
toToken
address
The token wanted by user
toAmount
int256
The given output amount
Outputs
name
type
description
amountIn
uint256
The input amount required
haircut
uint256
The haircut that would be applied
function quotePotentialDeposit
Pool.quotePotentialDeposit(token, amount) view
Notice: Quotes potential deposit from pool
Details: To be used by frontend
Arguments
name
type
description
token
address
The token to deposit by user
amount
uint256
The amount to deposit
Outputs
name
type
description
liquidity
uint256
The potential liquidity user would receive
reward
uint256
reward
function quotePotentialSwap
Pool.quotePotentialSwap(fromToken, toToken, fromAmount) view
Notice: Given an input asset amount and token addresses, calculates the maximum output token amount (accounting for fees and slippage).
Details: In reverse quote, the haircut is in the
fromAsset
Arguments
name
type
description
fromToken
address
The initial ERC20 token
toToken
address
The token wanted by user
fromAmount
int256
The given input amount
Outputs
name
type
description
potentialOutcome
uint256
The potential amount user would receive
haircut
uint256
The haircut that would be applied
function quotePotentialWithdraw
Pool.quotePotentialWithdraw(token, liquidity) view
Notice: Quotes potential withdrawal from pool
Details: To be used by frontend
Arguments
name
type
description
token
address
The token to be withdrawn by user
liquidity
uint256
The liquidity (amount of lp assets) to be withdrawn
Outputs
name
type
description
amount
uint256
The potential amount user would receive
fee
uint256
The fee that would be applied
function quotePotentialWithdrawFromOtherAsset
Pool.quotePotentialWithdrawFromOtherAsset(fromToken, toToken, liquidity) view
Notice: Quotes potential withdrawal from other asset from the pool
Details: To be used by frontend
Arguments
name
type
description
fromToken
address
The corresponding token user holds the LP (Asset) from
toToken
address
The token wanting to be withdrawn (needs to be well covered)
liquidity
uint256
The liquidity (amount of the lp assets) to be withdrawn
Outputs
name
type
description
amount
uint256
The potential amount user would receive
withdrewAmount
uint256
The amount of the from-token that is withdrew
function removeAsset
***Pool.removeAsset(token) ***
Notice: Removes asset from asset struct
Details: Can only be called by owner
Arguments
name
type
description
token
address
The address of token to remove
function renounceOwnership
***Pool.renounceOwnership() ***
Details: Leaves the contract without owner. It will not be possible to call
onlyOwner
functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.
function retentionRatio
Pool.retentionRatio() view
Notice: Retention ratio: the ratio of haircut that should stay in the pool
Outputs
name
type
description
uint256
function setAmpFactor
***Pool.setAmpFactor(ampFactor_) ***
Notice: Changes the pools amplification factor. Can only be set by the contract owner.
Arguments
name
type
description
ampFactor_
uint256
new pool's amplification factor
function setDev
***Pool.setDev(dev_) ***
Notice: Changes the contract dev. Can only be set by the contract owner.
Arguments
name
type
description
dev_
address
new contract dev address
function setFee
***Pool.setFee(lpDividendRatio_, retentionRatio_) ***
Arguments
name
type
description
lpDividendRatio_
uint256
retentionRatio_
uint256
function setFeeTo
***Pool.setFeeTo(feeTo_) ***
Notice: Changes the fee beneficiary. Can only be set by the contract owner. This value cannot be set to 0 to avoid unsettled fee.
Arguments
name
type
description
feeTo_
address
new fee beneficiary
function setHaircutRate
***Pool.setHaircutRate(haircutRate_) ***
Notice: Changes the pools haircutRate. Can only be set by the contract owner.
Arguments
name
type
description
haircutRate_
uint256
new pool's haircutRate_
function setMasterWombat
***Pool.setMasterWombat(masterWombat_) ***
Arguments
name
type
description
masterWombat_
address
function setMintFeeThreshold
***Pool.setMintFeeThreshold(mintFeeThreshold_) ***
Notice: Set min fee to mint
Arguments
name
type
description
mintFeeThreshold_
uint256
function swap
***Pool.swap(fromToken, toToken, fromAmount, minimumToAmount, to, deadline) ***
Notice: Swap fromToken for toToken, ensures deadline and minimumToAmount and sends quoted amount to
to
address
Details: This function assumes tax free token.
Arguments
name
type
description
fromToken
address
The token being inserted into Pool by user for swap
toToken
address
The token wanted by user, leaving the Pool
fromAmount
uint256
The amount of from token inserted
minimumToAmount
uint256
The minimum amount that will be accepted by user as result
to
address
The user receiving the result of swap
deadline
uint256
The deadline to be respected
Outputs
name
type
description
actualToAmount
uint256
haircut
uint256
function tipBucketBalance
Pool.tipBucketBalance(token) view
Arguments
name
type
description
token
address
Outputs
name
type
description
balance
uint256
function transferOwnership
***Pool.transferOwnership(newOwner) ***
Details: Transfers ownership of the contract to a new account (
newOwner
). Can only be called by the current owner.
Arguments
name
type
description
newOwner
address
function transferTipBucket
***Pool.transferTipBucket(token, amount, to) ***
Arguments
name
type
description
token
address
amount
uint256
to
address
function unpause
***Pool.unpause() ***
Details: unpause pool, enabling certain operations
function unpauseAsset
***Pool.unpauseAsset(token) ***
Details: unpause asset, enabling deposit and swap operations
Arguments
name
type
description
token
address
function withdraw
***Pool.withdraw(token, liquidity, minimumAmount, to, deadline) ***
Notice: Withdraws liquidity amount of asset to
to
address ensuring minimum amount required
Arguments
name
type
description
token
address
The token to be withdrawn
liquidity
uint256
The liquidity to be withdrawn
minimumAmount
uint256
The minimum amount that will be accepted by user
to
address
The user receiving the withdrawal
deadline
uint256
The deadline to be respected
Outputs
name
type
description
amount
uint256
The total amount withdrawn
function withdrawFromOtherAsset
***Pool.withdrawFromOtherAsset(fromToken, toToken, liquidity, minimumAmount, to, deadline) ***
Notice: Enables withdrawing liquidity from an asset using LP from a different asset
Arguments
name
type
description
fromToken
address
The corresponding token user holds the LP (Asset) from
toToken
address
The token wanting to be withdrawn (needs to be well covered)
liquidity
uint256
The liquidity to be withdrawn (in fromToken decimal)
minimumAmount
uint256
The minimum amount that will be accepted by user
to
address
The user receiving the withdrawal
deadline
uint256
The deadline to be respected
Outputs
name
type
description
toAmount
uint256
The total amount withdrawn
Last updated