PoolInitializer.sol
Contract that acquires the initial balances for an index pool.
This uses a short-term UniSwap price oracle to determine the ether value of tokens sent to the contract. When users contribute tokens they are credited for the moving average ether value of said tokens.
When all the tokens needed are acquired, the index pool will be initialized and this contract will receive the initial token supply (100).
Once the contract receives the index pool tokens, users can claim their share of the tokens proportional to their credited contribution value.
function initialize(
address poolAddress,
address[] tokens,
uint256[] amounts
)
Sets the initializer's pool address and desired token amount.
function finish()
Finishes the pool initializer and triggers pool initialization.
Notes
The desired amounts of all tokens must be 0.
function claimTokens()
Claims the tokens owed to
msg.sender
based on their proportion of the total credits.function claimTokens(address account)
Claims the tokens owed to
account
based on their proportion of the total credits.function claimTokens(address[] accounts)
Claims the tokens owed to
account
based on their proportion of the total credits.function contributeTokens(
address token,
uint256 amountIn,
uint256 minimumCredit
) returns (uint256 credit)
Contribute up to
amountIn
of token
to the pool for credit.The caller will be credited for the average weth value of the provided tokens.
Notes
Caller must receive at least
minimumCredit
to not revert. If amountIn
is greater than the desired amount of token
, the desired amount will be used instead.function contributeTokens(
address[] tokens,
uint256[] amountsIn,
uint256 minimumCredit
) returns (uint256 credit)
Contribute maximum values from
amountsIn
of the corresponding tokens in tokens
to the pool for credit.The caller will be credited for the average weth value of the provided tokens.
Caller must receive at least
minimumCredit
to not revert. If any input amount is greater than the desired amount of the corresponding token, the desired amount will be used instead.function updatePrices()
Updates the prices of all desired tokens on the price oracle.
function isFinished() returns (bool)
Returns whether the pool has been initialized.
function getTotalCredit() returns (uint256)
Returns the total value credited for token contributions.
function getCreditOf(address account) returns (uint256)
Returns the amount of credit owed to
account
.function getDesiredTokens() returns (address[] tokens)
Returns the array of desired tokens.
function getDesiredAmount(address token) returns (uint256)
Returns the remaining amount of
token
the pool needs.function getCreditForTokens(
address token,
uint256 amountIn
) returns (uint144 amountOut)
Returns the amount of WETH the contract will credit a user for providing
amountIn
of token
.Notes
If
amountIn
is greater than the desired amount of token
, this will calculate the output using the desired amount instead of amountIn
.