yieldAdmin — ARBERA and rewards fee % for Future LP Yield.
yieldProtocol — brTOKEN fee % for the protocol.
ProtocolFeeRouter — Stores mutable address of ProtocolFees.
IndexManager — Stores all Den addresses and boolean if they are verified or not.
RewardsWhitelister — Stores list of whitelisted reward tokens.
KodiakDexAdapter — Helper contract for adding liqudity and swapping on Kodiak.
V3TwapUtilities — Helper functions to compute Uniswap V3 X96 price, it's square root and derive V3 pool address deterministically.
Den-related smart contracts
These three contracts are deployed once for each Den created.
WeightedIndex — Main Den contract (inherits from DecentralizedIndex).
StakingPoolToken — Allows staking Den LP tokens.
TokenRewards — Accumulates and distributes rewards for staked Den LP tokens.
Variables
address PAIRED_LP_TOKEN — paired Den LP token, eg. HONEY;
Config config — Configuration:
address partner — Address of Den creator.
Fees fees — Struct with Den fees:
uint16 burn — Burn fee (see ).
uint16 bond — Fee on wrapping TOKEN into brTOKEN.
uint16 debond — Fee on unwrapping brTOKEN into TOKEN.
uint16 buy — Fee on buying brTOKEN with TOKEN.
uint16 sell — Fee on selling brTOKEN for TOKEN.
uint16 partner — Den creator fee.
For all the fees: 1000 = 10%, 100 = 1%, etc.
uint256 created — Timestamp of Den creation.
address lpRewardsToken — Address of LP rewards token.
address lpStakingPool — Address of Staked Den LP token.
Functions
/** * Wraps TOKEN into brTOKEN at current ratio (always >= 1) minus fees. * @param _token TOKEN address to wrap into brTOKEN. * @param _amount Amount of TOKEN to wrap. * @param _amountMintMin Minimal brTOKEN amount to receive. */functionbond(address_token,uint256_amount,uint256_amountMintMin)/** * Unwraps brTOKEN into TOKEN at current ratio (always >= 1) minus fees. * @dev Set unnamed params as empty arrays. * @param _token Amount of brTOKEN to unwrap into TOKEN. */functiondebond(uint256_amount,address[] memory,uint8[] memory)/** * Adds liquidity to the Den LP while disabling fees. * @param idxTokens Amount of brTOKEN. * @param daiTokens Amount of PAIRED_LP_TOKEN. * @param slippage Amount of slippage (10 == 1%). * @param deadline Max timestamp to execute the tx. */functionaddLiquidityV2(uint256idxTokens,uint256daiTokens,uint256slippage,uint256deadline) returns (uint256);/** * Removes liquidity from the Den LP while disabling fees. * @param _lpTokens Amount of Den LP tokens. * @param _minTokens Minimal amount of brTOKEN to receive. * @param _minDAI Minimal amount of PAIRED_LP_TOKEN to receive. * @param _deadline Max timestamp to execute the tx. */functionremoveLiquidityV2(uint256_lpTokens,uint256_minTokens,uint256_minDAI,uint256_deadline)/** * Take flashloan of TOKEN backing the brTOKEN, paying 10 HONEY fee. * @dev HONEY needs to be approved for spending by Den contract. * @param _recipient Address of flashloan receipient. * @param _token Address of the TOKEN to flashloan. * @param _amount Amount of the TOKEN to flashloan. * @param _data Data to send to the receipient in the callback. */functionflash(address_recipient,address_token,uint256_amount,bytescalldata_data)
Variables
address indexFund — Address of the brTOKEN.
address poolRewards — Address of TokenRewards contract.
address stakeUserRestriction — Boolean if there are staking restrictions.
address stakingToken — Address of the Den LP token.
Functions
/** * Stakes Den LP tokens for given _user. * @param _user Address that will receive Staked Den LP tokens. * @param _amount Amount of Den LP tokens to stake. */functionstake(address_user,uint256_amount)/** * Unstakes Den LP tokens. * @param _amount Amount of Staked Den LP tokens to unstake. */functionunstake(uint256_amount)
Functions
/** * Claims rewards accumualted with Staked Den LP tokens. * @param _wallet Address for which to distribute rewards. */functionclaimReward(address_wallet)/** * Returns unpaid rewards for the user. * @param _token Address of the rewards token to check. * @param _wallet Address of the user to check. * @return Amount of reward tokens to claim. */functiongetUnpaid(address_token,address_wallet) viewreturns (uint256)