diff --git a/data/constants.js b/data/constants.js index ed5f7686..67a31db9 100644 --- a/data/constants.js +++ b/data/constants.js @@ -39,6 +39,7 @@ const VAULT_CATEGORIES_IDS = { STABLE_POLYGON: 'STABLE_POLYGON', CONVEX: 'CONVEX', MESHSWAP: 'MESHSWAP', + AURA: 'AURA', APESTAKE: 'APESTAKE', } @@ -84,6 +85,7 @@ const VAULT_CATEGORIES_NAMES = { CONVEX: 'Convex', MESHSWAP: 'MeshSwap', APESTAKE: 'ApeStake', + AURA: 'Aura', } const CHAINS_ID = { @@ -115,6 +117,7 @@ const GET_PRICE_TYPES = { NOTIONAL: 'NOTIONAL', MESHSWAP_PAIR: 'MESHSWAP_PAIR', WRAPPED_TOKEN: 'WRAPPED_TOKEN', + QUICKSWAP_GAMMA: 'QUICKSWAP_GAMMA', } const ESTIMATED_APY_TYPES = { @@ -157,7 +160,9 @@ const ESTIMATED_APY_TYPES = { NOTIONAL: 'NOTIONAL', APE: 'APE', MESHSWAP: 'MESHSWAP', + AURA: 'AURA', APE_STAKE: 'APE_STAKE', + QUICKSWAP_GAMMA: 'QUICKSWAP_GAMMA', } const COLLATERAL_TYPE = { @@ -196,6 +201,7 @@ const TRADING_APY_TYPES = { MSTABLE: 'MSTABLE', LOOKS: 'LOOKS', APE: 'APE', + QUICKSWAP_GAMMA: 'QUICKSWAP_GAMMA', } const POOL_TYPES = { diff --git a/data/icons/aura-auraBAL.png b/data/icons/aura-auraBAL.png new file mode 100644 index 00000000..8fb22068 Binary files /dev/null and b/data/icons/aura-auraBAL.png differ diff --git a/data/icons/aura.png b/data/icons/aura.png new file mode 100644 index 00000000..1c00ac8b Binary files /dev/null and b/data/icons/aura.png differ diff --git a/data/icons/balancer-auraBALlp.png b/data/icons/balancer-auraBALlp.png new file mode 100644 index 00000000..f9d395d6 Binary files /dev/null and b/data/icons/balancer-auraBALlp.png differ diff --git a/data/icons/balancer-bbaUSD.png b/data/icons/balancer-bbaUSD.png new file mode 100644 index 00000000..221c51ad Binary files /dev/null and b/data/icons/balancer-bbaUSD.png differ diff --git a/data/icons/balancer-rETH.png b/data/icons/balancer-rETH.png new file mode 100644 index 00000000..8053e045 Binary files /dev/null and b/data/icons/balancer-rETH.png differ diff --git a/data/icons/balancer-wstETH.png b/data/icons/balancer-wstETH.png new file mode 100644 index 00000000..beb183df Binary files /dev/null and b/data/icons/balancer-wstETH.png differ diff --git a/data/icons/balancer-wstETHbbaUSD.png b/data/icons/balancer-wstETHbbaUSD.png new file mode 100644 index 00000000..3e1a2aea Binary files /dev/null and b/data/icons/balancer-wstETHbbaUSD.png differ diff --git a/data/icons/bbausd.png b/data/icons/bbausd.png new file mode 100644 index 00000000..d3504328 Binary files /dev/null and b/data/icons/bbausd.png differ diff --git a/data/icons/dquick.png b/data/icons/dquick.png new file mode 100644 index 00000000..05691e15 Binary files /dev/null and b/data/icons/dquick.png differ diff --git a/data/icons/usdc_weth.png b/data/icons/usdc_weth.png new file mode 100644 index 00000000..9b303ff3 Binary files /dev/null and b/data/icons/usdc_weth.png differ diff --git a/data/icons/wmatic_eth.png b/data/icons/wmatic_eth.png new file mode 100644 index 00000000..33e97824 Binary files /dev/null and b/data/icons/wmatic_eth.png differ diff --git a/data/icons/wmatic_usdc.png b/data/icons/wmatic_usdc.png new file mode 100644 index 00000000..7d16c598 Binary files /dev/null and b/data/icons/wmatic_usdc.png differ diff --git a/data/mainnet/addresses.json b/data/mainnet/addresses.json index a71fa57f..9d53246e 100644 --- a/data/mainnet/addresses.json +++ b/data/mainnet/addresses.json @@ -370,7 +370,8 @@ "NewVault": "0x683E683fBE6Cf9b635539712c999f3B3EdCB8664", "NewStrategy": "0x50f3cfb398A25A5918B27c77465e9C3EdE7888B7", "NewPool": "0xef4Da1CE3f487DA2Ed0BE23173F76274E0D47579", - "Miner": "0x0f9cb53Ebe405d49A0bbdBD291A65Ff571bC83e1" + "Miner": "0x0f9cb53Ebe405d49A0bbdBD291A65Ff571bC83e1", + "doHardwork": false }, "crvBUSD": { "NewVault": "0x4b1cBD6F6D8676AcE5E412C78B7a59b4A1bbb68a", @@ -733,7 +734,8 @@ "Underlying": "0xc4AD29ba4B3c580e6D59105FFf484999997675Ff", "NewVault": "0x33ED34dD7C40EF807356316B484d595dDDA832ab", "NewPool": "0xfbFBE380489882831DAD5258cFD2e29307E23B82", - "Miner": "0xD51a44d3FaE010294C616388b506AcdA1bfAAE46" + "Miner": "0xD51a44d3FaE010294C616388b506AcdA1bfAAE46", + "doHardwork": false }, "crvCVXCRV": { "Underlying": "0x9D0464996170c6B9e75eED71c68B99dDEDf279e8", @@ -864,8 +866,7 @@ "0xFe2e637202056d30016725477c5da089Ab0A043A" ], "NewVault": "0x65383Abd40f9f831018dF243287F7AE3612c62AC", - "NewPool": "0x11301B7C82Cd953734440aaF0D5Dd0B36E2aB1d8", - "doHardwork": "onlyProfit" + "NewPool": "0x11301B7C82Cd953734440aaF0D5Dd0B36E2aB1d8" }, "UniV3_UST_USDT": { "Underlying": [ @@ -909,8 +910,7 @@ "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2" ], "NewVault": "0x2357685B07469eE80A389819C7A41edCD70cd88C", - "NewPool": "0xd18F256b380b30d7Aa24c504b39f7320dF1b2dbE", - "doHardwork": "onlyProfit" + "NewPool": "0xd18F256b380b30d7Aa24c504b39f7320dF1b2dbE" }, "UniV3_ETH_USDT": { "Underlying": [ @@ -1368,7 +1368,8 @@ "Underlying": "0xC9467E453620f16b57a34a770C6bceBECe002587", "NewVault": "0xc7fc2E6fd1d28fA86993F2d8707898c609535A4f", "NewStrategy": "0x223f134f63723f366e6355Fa3FfbC02E6580E216", - "NewPool": "0xcEb6985B78D0f2d69274f1c37e192E82bA81CDad" + "NewPool": "0xcEb6985B78D0f2d69274f1c37e192E82bA81CDad", + "doHardwork": false }, "convex_CVX_ETH": { "Underlying": "0x3A283D9c08E8b55966afb64C515f5143cf907611", @@ -1382,6 +1383,48 @@ "NewVault": "0x38B98a6704D75d701681B32800BdA8dD1C8147f6", "NewStrategy": "0x31A641fa559836cBAf8b14cAa58444C27B7a03D2", "NewPool": "0xfBB288bAa8b26eE54eB4a20F89E733f8F33B7C63" + }, + "aura_auraBAL": { + "Underlying": "0x616e8BfA43F920657B3497DBf40D6b1A02D4608d", + "NewVault": "0x9C5B5d5EC8CfbF54F5441Bb52FD1283f39786B9A", + "NewStrategy": "0xb72c72Fd52D9b9c1333af48Ac27a3328a795270F", + "NewPool": "0x568D0Dc27Ae8096D373695D56D392558294111C1", + "PoolId": "0x5c6ee304399dbdb9c8ef030ab642b10820db8f56000200000000000000000014" + }, + "aura_auraBAL_lp": { + "Underlying": "0x3dd0843A028C86e0b760b1A76929d1C5Ef93a2dd", + "NewVault": "0x7585adcc9c61802bAc69D3a9058437E3c6eFA558", + "NewStrategy": "0xDd22c1B7223e25Ca7188AE4B7106ACDEBa943E39", + "NewPool": "0x7C783b7FafFf3D186b57Fc11A09226023e3D4871", + "PoolId": "0x3dd0843a028c86e0b760b1a76929d1c5ef93a2dd000200000000000000000249" + }, + "aura_bbaUSD": { + "Underlying": "0xA13a9247ea42D743238089903570127DdA72fE44", + "NewVault": "0x85472c764Ca52B189eB09497B683B2FD9cD79213", + "NewStrategy": "0x69ee8D71B7584bC5343Ef5ADD66383Dda5439940", + "NewPool": "0xF6Df2D95377d4Bf84ebCD734Ccc1Bbb2c0B38B73", + "PoolId": "0xa13a9247ea42d743238089903570127dda72fe4400000000000000000000035d" + }, + "aura_rETH": { + "Underlying": "0x1E19CF2D73a72Ef1332C882F20534B6519Be0276", + "NewVault": "0x7ba1D55606900c5028Fb3BB82Fa0c198e3b0580E", + "NewStrategy": "0x3B6903F8Ea1C08621d34f455Dd2AC255688f12B0", + "NewPool": "0x62F5e9c01783232b11B4593DaC53C3E1b7c9f643", + "PoolId": "0x1e19cf2d73a72ef1332c882f20534b6519be0276000200000000000000000112" + }, + "aura_wstETH": { + "Underlying": "0x32296969Ef14EB0c6d29669C550D4a0449130230", + "NewVault": "0xB3D81Fad8f5092903592249d30cdeBD681057153", + "NewStrategy": "0xd1eDA7215fF14381C1C5c578015F7AcE13C0D80F", + "NewPool": "0x136Ba87eEF4b93B161C3314309D45B2aA6cFB60b", + "PoolId": "0x32296969ef14eb0c6d29669c550d4a0449130230000200000000000000000080" + }, + "aura_bbiUSD": { + "Underlying": "0x60683B05e9a39E3509D8fdb9C959f23170f8A0fa", + "NewVault": "0xe7792b29563f6DF9Ff3AcbB87087DAB90478Fc93", + "NewStrategy": "0x9ea84D87E80aCd655655144943565C1060166821", + "NewPool": "0xdF60231613482e72Aa0CC9EfBe8064C04769a18A", + "PoolId": "0x60683b05e9a39e3509d8fdb9c959f23170f8a0fa000000000000000000000489" } }, "BSC": { @@ -1793,9 +1836,6 @@ "amWETH": "0x28424507fefb6f7f8E9D3860F56504E4e5f5f390", "am3CRVToken": "0xE7a24EF0C5e95Ffb0f6684b813A78F2a3AD7D171", "am3CRVPool": "0x445FE580eF8d70FF569aB36e80c647af338db351", - "amDAI": "0x27F8D03b3a2196956ED754baDc28D73be8830A6e", - "amUSDC": "0x1a13F4Ca1d028320A707D99520AbFefca3998b7F", - "amUSDT": "0x60D55F02A771d515e077c9C2403a1ef324885CeC", "JRT_MAY22": "0xF5f480Edc68589B51F4217E6aA82Ef7Df5cf789e", "JSGD": "0xa926db7a4CC0cb1736D5ac60495ca8Eb7214B503", "XSGD": "0x769434dcA303597C8fc4997Bf3DAB233e961Eda2", @@ -2185,14 +2225,6 @@ "RewardPool": "0x834579150Cc521e0afAB15568930e3BEc67B865A", "useMsigProfitCalculation": true }, - "jarvis_2EUR_agEUR_HODL": { - "Underlying": "0x2fFbCE9099cBed86984286A54e5932414aF4B717", - "NewVault": "0xE4E6055A7eB29F2Fa507ba7f8c4FAcc0C5ef9a2A", - "NewStrategy": "0x76341494eeA3bfC9de420d1C02C3398833f45343", - "NewPool": "0x9c55488f8AdC23544B8571757169AE17865ABFC8", - "RewardPool": "0x7349Cc23B3A3E104ec2FA5A0BB29c8b022508779", - "useMsigProfitCalculation": true - }, "jarvis_JRTJUL22_USDC": { "Underlying": "0x707C7f22d5E3C0234bCc53aeE51420d6cdD988f9", "NewVault": "0xcFD80B11fefD581Fc45868ABD0d61e8437C050b1", @@ -2334,14 +2366,6 @@ "RewardPool": "0x2BC39d179FAfC32B7796DDA3b936e491C87D245b", "useMsigProfitCalculation": true }, - "jarvis_2EUR_PAR_HODL": { - "Underlying": "0x0f110c55EfE62c16D553A3d3464B77e1853d0e97", - "NewVault": "0x023E85B8415b460C56377525ED159aF9935E3370", - "NewStrategy": "0x3f34b360ccd52e22BFc2Caaa72Eb32c1b2Ea1196", - "NewPool": "0x2892FA6e9D7Fc9bc8C8e62BBe79AdDff41314d03", - "RewardPool": "0xeA9871A9451c281cc1180100FC074D7F28402288", - "useMsigProfitCalculation": true - }, "jarvis_JRTNOV22_USDC": { "Underlying": "0x68Fd822a2Bda3dB31fFfA68089696ea4e55A9D36", "NewVault": "0xE17e6EfbD0064992D1E4e9a4641f30e40be208a0", @@ -2447,6 +2471,68 @@ "NewPool": "0xCacF3d04C7C31782fdbc66FFD9D7519B3124ed66", "Gauge": "0xAA59736b80cf77d1E7D56B7bbA5A8050805F5064", "PoolId": "0xb797adfb7b268faeaa90cadbfed464c76ee599cd0002000000000000000005ba" + }, + "quickGamma_MATIC_ETH_narrow": { + "Underlying": "0x02203f2351E7aC6aB5051205172D3f772db7D814", + "NewVault": "0x506337cc631726A21788B9fDFb6BE6292bA7A835", + "NewStrategy": "0x20D5A2a81a2b23EE3D4ac94EB356f962f037e65A", + "NewPool": "0x55740C3a15394EBb635bdAfcbD7Fa8E285122606", + "MasterChef": "0x20ec0d06f447d550fc6edee42121bc8c1817b97d" + }, + "quickGamma_MATIC_ETH_wide": { + "Underlying": "0x81Cec323BF8C4164c66ec066F53cc053A535f03D", + "NewVault": "0x2eD9699441CE48F2AA9C03Af66510D6d72750591", + "NewStrategy": "0xC17581fd31140313e634d47c4b001E9926a06087", + "NewPool": "0xdC331E735f820a306ae74ED10F6FFDdC210D0497", + "MasterChef": "0x20ec0d06f447d550fc6edee42121bc8c1817b97d" + }, + "quickGamma_MATIC_USDC_narrow": { + "Underlying": "0x04d521E2c414E6d898c6F2599FdD863Edf49e247", + "NewVault": "0xa5422F737F24b10A0928D5E7f6cf404D077e1CD1", + "NewStrategy": "0x713613550CA9dbE91fAc20fB0e8fa33F1fb5822e", + "NewPool": "0xe0F5000e14367930A4781d2cEDa450888C7de163", + "MasterChef": "0x20ec0d06f447d550fc6edee42121bc8c1817b97d" + }, + "quickGamma_MATIC_USDC_wide": { + "Underlying": "0x4A83253e88e77E8d518638974530d0cBbbF3b675", + "NewVault": "0xd76BC58b95acAC968Fe0Cf9fa210Bf4bE95cd249", + "NewStrategy": "0x20EB0769422c932ad34800A0211Fa136274c4B45", + "NewPool": "0x291e6768aA66Aa2c91D6aeaA917b1E79999D92f9", + "MasterChef": "0x20ec0d06f447d550fc6edee42121bc8c1817b97d" + }, + "quickGamma_USDC_ETH_narrow": { + "Underlying": "0x3Cc20A6795c4b57d9817399F68E83e71C8626580", + "NewVault": "0x548E84517b2891E0316f604f4f5326a306F1830e", + "NewStrategy": "0xD5F0e427aeD0eB51077BA4b078e6431058526Dcb", + "NewPool": "0xD94c25aD1C9F6E39a20E7Ec598B4a88062bCa268", + "MasterChef": "0x20ec0d06f447d550fc6edee42121bc8c1817b97d" + }, + "quickGamma_USDC_ETH_wide": { + "Underlying": "0x6077177d4c41E114780D9901C9b5c784841C523f", + "NewVault": "0x0eFe7d1E2C286833e592e887aA48a6A65F21Ee7B", + "NewStrategy": "0x84f6AA524c74D565d5A01E0e6ad388E4246E0378", + "NewPool": "0xFcC9682E08E3B001e9516683cbAAf573aFFc6415", + "MasterChef": "0x20ec0d06f447d550fc6edee42121bc8c1817b97d" + }, + "balancer_2EUR_agEUR": { + "OldUnderlying": "0x2fFbCE9099cBed86984286A54e5932414aF4B717", + "Underlying": "0xa48D164F6eB0EDC68bd03B56fa59E12F24499aD1", + "NewVault": "0xE4E6055A7eB29F2Fa507ba7f8c4FAcc0C5ef9a2A", + "OldStrategy": "0x76341494eeA3bfC9de420d1C02C3398833f45343", + "NewStrategy": "0x044b1CfaDa044f9389DA761af520574E197dCCA4", + "NewPool": "0x9c55488f8AdC23544B8571757169AE17865ABFC8", + "Gauge": "0x8c73C7A998F54e3A936885C752c9955c78A5Febb", + "PoolId": "0xa48d164f6eb0edc68bd03b56fa59e12f24499ad10000000000000000000007c4" + }, + "balancer_2EUR_PAR": { + "OldUnderlying": "0x0f110c55EfE62c16D553A3d3464B77e1853d0e97", + "Underlying": "0x7d60a4Cb5cA92E2Da965637025122296ea6854f9", + "NewVault": "0x023E85B8415b460C56377525ED159aF9935E3370", + "OldStrategy": "0x3f34b360ccd52e22BFc2Caaa72Eb32c1b2Ea1196", + "NewStrategy": "0x222E14Dc2f82d1d903e539C39B0C578B7353be7E", + "NewPool": "0x2892FA6e9D7Fc9bc8C8e62BBe79AdDff41314d03", + "Gauge": "0xD14875e2C65A46d15501C9296A9bCC0E17510978", + "PoolId": "0x7d60a4cb5ca92e2da965637025122296ea6854f900000000000000000000085e" } } } diff --git a/data/mainnet/pools.js b/data/mainnet/pools.js index 9dab9883..4dbf045d 100644 --- a/data/mainnet/pools.js +++ b/data/mainnet/pools.js @@ -4,6 +4,236 @@ const addresses = require('./addresses.json') const strat30PercentFactor = '0.7' module.exports = [ + { + chain: CHAINS_ID.ETH_MAINNET, + id: 'aura_bbiUSD', + type: POOL_TYPES.INCENTIVE, + tradingApyFunction: { + type: TRADING_APY_TYPES.LP, + params: [addresses.V2.aura_bbiUSD.Underlying, 'balancerv2_eth', true], + }, + contractAddress: addresses.V2.aura_bbiUSD.NewPool, + collateralAddress: addresses.V2.aura_bbiUSD.NewVault, + rewardAPY: [], + rewardTokens: [addresses.iFARM], + rewardTokenSymbols: ['iFARM'], + stakeAndDepositHelpMessage: ` +
+ Deposit and stake: +
    +
  1. + Go to  + + Balancer + + and add liquidity with USD Stablecoins +
  2. +
  3. + Go back to this vault, hit "MAX" and then "Deposit". Leave + "Stake for rewards" checked for staking +
  4. +
+
+ `, + }, + { + chain: CHAINS_ID.MATIC_MAINNET, + id: 'quickGamma_MATIC_ETH_narrow', + type: POOL_TYPES.INCENTIVE, + tradingApyFunction: { + type: TRADING_APY_TYPES.QUICKSWAP_GAMMA, + params: [addresses.MATIC.V2.quickGamma_MATIC_ETH_narrow.Underlying], + }, + contractAddress: addresses.MATIC.V2.quickGamma_MATIC_ETH_narrow.NewPool, + collateralAddress: addresses.MATIC.V2.quickGamma_MATIC_ETH_narrow.NewVault, + rewardAPY: [], + rewardAPR: null, + rewardTokens: [addresses.MATIC.miFARM], + rewardTokenSymbols: ['miFARM'], + stakeAndDepositHelpMessage: ` +
+ Deposit and stake: +
    +
  1. + Go to  + + gamma + + and invest WMATIC and/or WETH +
  2. +
  3. + Go back to this vault, hit "MAX" and then "Deposit". Leave + "Stake for rewards" checked for staking +
  4. +
+
+ `, + }, + { + chain: CHAINS_ID.MATIC_MAINNET, + id: 'quickGamma_MATIC_ETH_wide', + type: POOL_TYPES.INCENTIVE, + tradingApyFunction: { + type: TRADING_APY_TYPES.QUICKSWAP_GAMMA, + params: [addresses.MATIC.V2.quickGamma_MATIC_ETH_wide.Underlying], + }, + contractAddress: addresses.MATIC.V2.quickGamma_MATIC_ETH_wide.NewPool, + collateralAddress: addresses.MATIC.V2.quickGamma_MATIC_ETH_wide.NewVault, + rewardAPY: [], + rewardAPR: null, + rewardTokens: [addresses.MATIC.miFARM], + rewardTokenSymbols: ['miFARM'], + stakeAndDepositHelpMessage: ` +
+ Deposit and stake: +
    +
  1. + Go to  + + gamma + + and invest WMATIC and/or WETH +
  2. +
  3. + Go back to this vault, hit "MAX" and then "Deposit". Leave + "Stake for rewards" checked for staking +
  4. +
+
+ `, + }, + { + chain: CHAINS_ID.MATIC_MAINNET, + id: 'quickGamma_MATIC_USDC_narrow', + type: POOL_TYPES.INCENTIVE, + tradingApyFunction: { + type: TRADING_APY_TYPES.QUICKSWAP_GAMMA, + params: [addresses.MATIC.V2.quickGamma_MATIC_USDC_narrow.Underlying], + }, + contractAddress: addresses.MATIC.V2.quickGamma_MATIC_USDC_narrow.NewPool, + collateralAddress: addresses.MATIC.V2.quickGamma_MATIC_USDC_narrow.NewVault, + rewardAPY: [], + rewardAPR: null, + rewardTokens: [addresses.MATIC.miFARM], + rewardTokenSymbols: ['miFARM'], + stakeAndDepositHelpMessage: ` +
+ Deposit and stake: +
    +
  1. + Go to  + + gamma + + and invest WMATIC and/or USDC +
  2. +
  3. + Go back to this vault, hit "MAX" and then "Deposit". Leave + "Stake for rewards" checked for staking +
  4. +
+
+ `, + }, + { + chain: CHAINS_ID.MATIC_MAINNET, + id: 'quickGamma_MATIC_USDC_wide', + type: POOL_TYPES.INCENTIVE, + tradingApyFunction: { + type: TRADING_APY_TYPES.QUICKSWAP_GAMMA, + params: [addresses.MATIC.V2.quickGamma_MATIC_USDC_wide.Underlying], + }, + contractAddress: addresses.MATIC.V2.quickGamma_MATIC_USDC_wide.NewPool, + collateralAddress: addresses.MATIC.V2.quickGamma_MATIC_USDC_wide.NewVault, + rewardAPY: [], + rewardAPR: null, + rewardTokens: [addresses.MATIC.miFARM], + rewardTokenSymbols: ['miFARM'], + stakeAndDepositHelpMessage: ` +
+ Deposit and stake: +
    +
  1. + Go to  + + gamma + + and invest WMATIC and/or USDC +
  2. +
  3. + Go back to this vault, hit "MAX" and then "Deposit". Leave + "Stake for rewards" checked for staking +
  4. +
+
+ `, + }, + { + chain: CHAINS_ID.MATIC_MAINNET, + id: 'quickGamma_USDC_ETH_narrow', + type: POOL_TYPES.INCENTIVE, + tradingApyFunction: { + type: TRADING_APY_TYPES.QUICKSWAP_GAMMA, + params: [addresses.MATIC.V2.quickGamma_USDC_ETH_narrow.Underlying], + }, + contractAddress: addresses.MATIC.V2.quickGamma_USDC_ETH_narrow.NewPool, + collateralAddress: addresses.MATIC.V2.quickGamma_USDC_ETH_narrow.NewVault, + rewardAPY: [], + rewardAPR: null, + rewardTokens: [addresses.MATIC.miFARM], + rewardTokenSymbols: ['miFARM'], + stakeAndDepositHelpMessage: ` +
+ Deposit and stake: +
    +
  1. + Go to  + + gamma + + and invest USDC and/or WETH +
  2. +
  3. + Go back to this vault, hit "MAX" and then "Deposit". Leave + "Stake for rewards" checked for staking +
  4. +
+
+ `, + }, + { + chain: CHAINS_ID.MATIC_MAINNET, + id: 'quickGamma_USDC_ETH_wide', + type: POOL_TYPES.INCENTIVE, + tradingApyFunction: { + type: TRADING_APY_TYPES.QUICKSWAP_GAMMA, + params: [addresses.MATIC.V2.quickGamma_USDC_ETH_wide.Underlying], + }, + contractAddress: addresses.MATIC.V2.quickGamma_USDC_ETH_wide.NewPool, + collateralAddress: addresses.MATIC.V2.quickGamma_USDC_ETH_wide.NewVault, + rewardAPY: [], + rewardAPR: null, + rewardTokens: [addresses.MATIC.miFARM], + rewardTokenSymbols: ['miFARM'], + stakeAndDepositHelpMessage: ` +
+ Deposit and stake: +
    +
  1. + Go to  + + gamma + + and invest USDC and/or WETH +
  2. +
  3. + Go back to this vault, hit "MAX" and then "Deposit". Leave + "Stake for rewards" checked for staking +
  4. +
+
+ `, + }, { chain: CHAINS_ID.MATIC_MAINNET, id: 'balancer_bbamusd', @@ -22,7 +252,7 @@ module.exports = [ rewardAPY: [], rewardAPR: null, rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
Deposit and stake: @@ -60,7 +290,7 @@ module.exports = [ rewardAPY: [], rewardAPR: null, rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
Deposit and stake: @@ -98,7 +328,7 @@ module.exports = [ rewardAPY: [], rewardAPR: null, rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
Deposit and stake: @@ -131,7 +361,7 @@ module.exports = [ rewardAPY: [], rewardAPR: null, rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
Deposit and stake: @@ -354,7 +584,7 @@ module.exports = [ collateralAddress: addresses.MATIC.V2.meshswap_MESH_oMOOI.NewVault, rewardAPY: [], rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
Deposit and stake: @@ -382,7 +612,7 @@ module.exports = [ collateralAddress: addresses.MATIC.V2.meshswap_MESH_oZEMIT.NewVault, rewardAPY: [], rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
Deposit and stake: @@ -410,7 +640,7 @@ module.exports = [ collateralAddress: addresses.MATIC.V2.meshswap_USDC_oUSDC.NewVault, rewardAPY: [], rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
Deposit and stake: @@ -438,7 +668,7 @@ module.exports = [ collateralAddress: addresses.MATIC.V2.meshswap_USDT_oUSDT.NewVault, rewardAPY: [], rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
Deposit and stake: @@ -466,7 +696,7 @@ module.exports = [ collateralAddress: addresses.MATIC.V2.meshswap_WMATIC_MESH.NewVault, rewardAPY: [], rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
Deposit and stake: @@ -494,7 +724,7 @@ module.exports = [ collateralAddress: addresses.MATIC.V2.meshswap_WMATIC_USDC.NewVault, rewardAPY: [], rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
Deposit and stake: @@ -522,7 +752,7 @@ module.exports = [ collateralAddress: addresses.MATIC.V2.meshswap_WMATIC_USDT.NewVault, rewardAPY: [], rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
Deposit and stake: @@ -554,7 +784,7 @@ module.exports = [ collateralAddress: addresses.MATIC.V2.jarvis_JRTNOV22_USDC.NewVault, rewardAPY: [], rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
Deposit and stake: @@ -586,7 +816,7 @@ module.exports = [ collateralAddress: addresses.MATIC.V2.jarvis_JRTMIMONOV22_2EURPAR.NewVault, rewardAPY: [], rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
Deposit and stake: @@ -618,7 +848,7 @@ module.exports = [ collateralAddress: addresses.MATIC.V2.jarvis_JRTANGLENOV22_2EURagEUR.NewVault, rewardAPY: [], rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
Deposit and stake: @@ -823,21 +1053,25 @@ module.exports = [ `, }, { + tradingApyFunction: { + type: TRADING_APY_TYPES.LP, + params: [addresses.MATIC.V2.balancer_2EUR_PAR.Underlying, 'balancerv2_matic'], + }, chain: CHAINS_ID.MATIC_MAINNET, - id: 'jarvis_2EUR_PAR_HODL', + id: 'balancer_2EUR_PAR', type: POOL_TYPES.INCENTIVE, - contractAddress: addresses.MATIC.V2.jarvis_2EUR_PAR_HODL.NewPool, - collateralAddress: addresses.MATIC.V2.jarvis_2EUR_PAR_HODL.NewVault, + contractAddress: addresses.MATIC.V2.balancer_2EUR_PAR.NewPool, + collateralAddress: addresses.MATIC.V2.balancer_2EUR_PAR.NewVault, rewardAPY: [], rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC', 'fJRTMIMO_2EURPAR', 'fJRTMIMONOV22_2EURPAR'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
Deposit and stake:
  1. Go to  - + Curve and add liquidity for 2EUR (PAR) @@ -862,7 +1096,7 @@ module.exports = [ collateralAddress: addresses.MATIC.V2.jarvis_JRTSEP22_USDC.NewVault, rewardAPY: [], rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
    Deposit and stake: @@ -894,7 +1128,7 @@ module.exports = [ collateralAddress: addresses.MATIC.V2.jarvis_JRTMIMO_2EURPAR.NewVault, rewardAPY: [], rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
    Deposit and stake: @@ -942,6 +1176,162 @@ module.exports = [
    `, }, + { + chain: CHAINS_ID.ETH_MAINNET, + id: 'aura_auraBAL', + type: POOL_TYPES.INCENTIVE, + contractAddress: addresses.V2.aura_auraBAL.NewPool, + collateralAddress: addresses.V2.aura_auraBAL.NewVault, + rewardAPY: [], + rewardTokens: [addresses.iFARM], + rewardTokenSymbols: ['iFARM'], + stakeAndDepositHelpMessage: ` +
    + Deposit and stake: +
      +
    1. + Go to  + + Aura + + and mint auraBAL with BAL or 80BAL-20WETH +
    2. +
    3. + Go back to this vault, hit "MAX" and then "Deposit". Leave + "Stake for rewards" checked for staking +
    4. +
    +
    + `, + }, + { + chain: CHAINS_ID.ETH_MAINNET, + id: 'aura_auraBAL_lp', + type: POOL_TYPES.INCENTIVE, + tradingApyFunction: { + type: TRADING_APY_TYPES.LP, + params: [addresses.V2.aura_auraBAL_lp.Underlying, 'balancerv2_eth', true], + }, + contractAddress: addresses.V2.aura_auraBAL_lp.NewPool, + collateralAddress: addresses.V2.aura_auraBAL_lp.NewVault, + rewardAPY: [], + rewardTokens: [addresses.iFARM], + rewardTokenSymbols: ['iFARM'], + stakeAndDepositHelpMessage: ` +
    + Deposit and stake: +
      +
    1. + Go to  + + Balancer + + and add liquidity with B-80BAL-20WETH or auraBAL +
    2. +
    3. + Go back to this vault, hit "MAX" and then "Deposit". Leave + "Stake for rewards" checked for staking +
    4. +
    +
    + `, + }, + { + chain: CHAINS_ID.ETH_MAINNET, + id: 'aura_bbaUSD', + type: POOL_TYPES.INCENTIVE, + tradingApyFunction: { + type: TRADING_APY_TYPES.LP, + params: [addresses.V2.aura_bbaUSD.Underlying, 'balancerv2_eth', true], + }, + contractAddress: addresses.V2.aura_bbaUSD.NewPool, + collateralAddress: addresses.V2.aura_bbaUSD.NewVault, + rewardAPY: [], + rewardTokens: [addresses.iFARM], + rewardTokenSymbols: ['iFARM'], + stakeAndDepositHelpMessage: ` +
    + Deposit and stake: +
      +
    1. + Go to  + + Balancer + + and add liquidity with USD Stablecoins +
    2. +
    3. + Go back to this vault, hit "MAX" and then "Deposit". Leave + "Stake for rewards" checked for staking +
    4. +
    +
    + `, + }, + { + chain: CHAINS_ID.ETH_MAINNET, + id: 'aura_rETH', + type: POOL_TYPES.INCENTIVE, + tradingApyFunction: { + type: TRADING_APY_TYPES.LP, + params: [addresses.V2.aura_rETH.Underlying, 'balancerv2_eth', true], + }, + contractAddress: addresses.V2.aura_rETH.NewPool, + collateralAddress: addresses.V2.aura_rETH.NewVault, + rewardAPY: [], + rewardTokens: [addresses.iFARM], + rewardTokenSymbols: ['iFARM'], + stakeAndDepositHelpMessage: ` +
    + Deposit and stake: +
      +
    1. + Go to  + + Balancer + + and add liquidity with ETH, WETH or rETH +
    2. +
    3. + Go back to this vault, hit "MAX" and then "Deposit". Leave + "Stake for rewards" checked for staking +
    4. +
    +
    + `, + }, + { + chain: CHAINS_ID.ETH_MAINNET, + id: 'aura_wstETH', + type: POOL_TYPES.INCENTIVE, + tradingApyFunction: { + type: TRADING_APY_TYPES.LP, + params: [addresses.V2.aura_wstETH.Underlying, 'balancerv2_eth', true], + }, + contractAddress: addresses.V2.aura_wstETH.NewPool, + collateralAddress: addresses.V2.aura_wstETH.NewVault, + rewardAPY: [], + rewardTokens: [addresses.iFARM], + rewardTokenSymbols: ['iFARM'], + stakeAndDepositHelpMessage: ` +
    + Deposit and stake: +
      +
    1. + Go to  + + Balancer + + and add liquidity with ETH, WETH or wstETH +
    2. +
    3. + Go back to this vault, hit "MAX" and then "Deposit". Leave + "Stake for rewards" checked for staking +
    4. +
    +
    + `, + }, { tradingApyFunction: { type: TRADING_APY_TYPES.LP, @@ -1018,7 +1408,7 @@ module.exports = [ collateralAddress: addresses.MATIC.V2.jarvis_AURJUL22_WETH.NewVault, rewardAPY: [], rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
    Deposit and stake: @@ -1057,7 +1447,7 @@ module.exports = [ rewardAPY: [], rewardAPR: null, rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
    Deposit and stake: @@ -1096,7 +1486,7 @@ module.exports = [ rewardAPY: [], rewardAPR: null, rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
    Deposit and stake: @@ -1156,7 +1546,7 @@ module.exports = [ collateralAddress: addresses.MATIC.V2.jarvis_JRTJUL22_USDC.NewVault, rewardAPY: [], rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
    Deposit and stake: @@ -1177,30 +1567,28 @@ module.exports = [ `, }, { + tradingApyFunction: { + type: TRADING_APY_TYPES.LP, + params: [addresses.MATIC.V2.balancer_2EUR_agEUR.Underlying, 'balancerv2_matic'], + }, chain: CHAINS_ID.MATIC_MAINNET, - id: 'jarvis_2EUR_agEUR_HODL', + id: 'balancer_2EUR_agEUR', type: POOL_TYPES.INCENTIVE, - contractAddress: addresses.MATIC.V2.jarvis_2EUR_agEUR_HODL.NewPool, - collateralAddress: addresses.MATIC.V2.jarvis_2EUR_agEUR_HODL.NewVault, + contractAddress: addresses.MATIC.V2.balancer_2EUR_agEUR.NewPool, + collateralAddress: addresses.MATIC.V2.balancer_2EUR_agEUR.NewVault, rewardAPY: [], rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: [ - 'miFARM', - 'WMATIC', - 'fagDENJUL22_2EUR', - 'fJRTANGLE_2EURagEUR', - 'fJRTANGLENOV22_2EURagEUR', - ], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
    Deposit and stake:
    1. Go to  - + Curve - and add liquidity for 2EUR + and add liquidity for 2EUR (agEUR)
    2. Go back to this vault, hit "MAX" and then "Deposit". Leave @@ -1222,7 +1610,7 @@ module.exports = [ collateralAddress: addresses.MATIC.V2.jarvis_JRTANGLE_2EURagEUR.NewVault, rewardAPY: [], rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
      Deposit and stake: @@ -1254,7 +1642,7 @@ module.exports = [ collateralAddress: addresses.MATIC.V2.jarvis_agDENJUL22_2EUR.NewVault, rewardAPY: [], rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
      Deposit and stake: @@ -1286,7 +1674,7 @@ module.exports = [ collateralAddress: addresses.MATIC.V2.jarvis_DENJUL22_4EUR.NewVault, rewardAPY: [], rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
      Deposit and stake: @@ -1318,7 +1706,7 @@ module.exports = [ collateralAddress: addresses.MATIC.V2.jarvis_JRTMAY22_USDC.NewVault, rewardAPY: [], rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
      Deposit and stake: @@ -1455,7 +1843,7 @@ module.exports = [ collateralAddress: addresses.MATIC.V2.jarvis_SES_2JPY.NewVault, rewardAPY: [], rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
      Deposit and stake: @@ -1523,7 +1911,7 @@ module.exports = [ collateralAddress: addresses.MATIC.V2.jarvis_QUI_2CAD.NewVault, rewardAPY: [], rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
      Deposit and stake: @@ -1797,7 +2185,7 @@ module.exports = [ params: [addresses.V2.looks_LOOKS.RewardPool], }, chain: CHAINS_ID.ETH_MAINNET, - id: 'looks_LOOKS', + id: 'LOOKS', type: POOL_TYPES.INCENTIVE, contractAddress: addresses.V2.looks_LOOKS.NewPool, collateralAddress: addresses.V2.looks_LOOKS.NewVault, @@ -1818,7 +2206,7 @@ module.exports = [ rewardAPY: [], rewardAPR: null, rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], }, { tradingApyFunction: { @@ -1833,7 +2221,7 @@ module.exports = [ rewardAPY: [], rewardAPR: null, rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
      Deposit and stake: @@ -1907,7 +2295,7 @@ module.exports = [ rewardAPY: [], rewardAPR: null, rewardTokens: [addresses.MATIC.miFARM, addresses.MATIC.pGNOME], - rewardTokenSymbols: ['miFARM', 'GNOME', 'WMATIC'], + rewardTokenSymbols: ['miFARM', 'GNOME'], stakeAndDepositHelpMessage: `
      Deposit and stake: @@ -1945,7 +2333,7 @@ module.exports = [ rewardAPY: [], rewardAPR: null, rewardTokens: [addresses.MATIC.miFARM, addresses.MATIC.pGENE], - rewardTokenSymbols: ['miFARM', 'GENE', 'WMATIC'], + rewardTokenSymbols: ['miFARM', 'GENE'], stakeAndDepositHelpMessage: `
      Deposit and stake: @@ -1983,7 +2371,7 @@ module.exports = [ rewardAPY: [], rewardAPR: null, rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
      Deposit and stake: @@ -2093,7 +2481,7 @@ module.exports = [ collateralAddress: addresses.MATIC.V2.jarvis_DEN_4EUR.NewVault, rewardAPY: [], rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
      Deposit and stake: @@ -2161,7 +2549,7 @@ module.exports = [ rewardAPY: [], rewardAPR: null, rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
      Deposit and stake: @@ -2199,7 +2587,7 @@ module.exports = [ rewardAPY: [], rewardAPR: null, rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
      Deposit and stake: @@ -2232,7 +2620,7 @@ module.exports = [ collateralAddress: addresses.MATIC.V2.polygon_WETH.NewVault, rewardAPY: [], rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], }, { chain: CHAINS_ID.MATIC_MAINNET, @@ -2242,7 +2630,7 @@ module.exports = [ collateralAddress: addresses.MATIC.V2.polygon_USDC.NewVault, rewardAPY: [], rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], }, { chain: CHAINS_ID.MATIC_MAINNET, @@ -2252,7 +2640,7 @@ module.exports = [ collateralAddress: addresses.MATIC.V2.polygon_DAI.NewVault, rewardAPY: [], rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], }, { chain: CHAINS_ID.ETH_MAINNET, @@ -7103,7 +7491,7 @@ module.exports = [ rewardAPY: [], rewardAPR: null, rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
      Deposit and stake: @@ -7136,7 +7524,7 @@ module.exports = [ rewardAPY: [], rewardAPR: null, rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
      Deposit and stake: @@ -7158,7 +7546,7 @@ module.exports = [ }, { chain: CHAINS_ID.MATIC_MAINNET, - id: 'balancer_POLYBASE', + id: 'bal_POLYBASE', type: POOL_TYPES.INCENTIVE, tradingApyFunction: { type: TRADING_APY_TYPES.LP, @@ -7170,7 +7558,7 @@ module.exports = [ rewardAPY: [], rewardAPR: null, rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
      Deposit and stake: @@ -7204,7 +7592,7 @@ module.exports = [ rewardAPY: [], rewardAPR: null, rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
      Deposit and stake: @@ -7238,7 +7626,7 @@ module.exports = [ rewardAPY: [], rewardAPR: null, rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
      Deposit and stake: @@ -7270,7 +7658,7 @@ module.exports = [ collateralAddress: addresses.V2.sushi_YEL_ETH.NewVault, rewardAPY: [], rewardTokens: [addresses.iFARM], - rewardTokenSymbols: ['iFARM', 'fYEL'], + rewardTokenSymbols: ['iFARM'], stakeAndDepositHelpMessage: `
      Deposit and stake: diff --git a/data/mainnet/tokens.js b/data/mainnet/tokens.js index 26cfd2b1..2ec3431e 100644 --- a/data/mainnet/tokens.js +++ b/data/mainnet/tokens.js @@ -26,7 +26,7 @@ module.exports = { priceFunction: { type: GET_PRICE_TYPES.COINGECKO_CONTRACT, params: [addresses.FARM] }, }, WETH: { - chain: CHAINS_ID.INACTIVE, + chain: CHAINS_ID.ETH_MAINNET, inactive: true, logoUrl: './icons/eth.png', apyIconUrls: [], @@ -35,7 +35,7 @@ module.exports = { tokenAddress: addresses.WETH, decimals: '18', vaultAddress: addresses.V2.WETH.NewVault, - category: VAULT_CATEGORIES_IDS.GENERAL, + category: VAULT_CATEGORIES_IDS.INACTIVE, priceFunction: { type: GET_PRICE_TYPES.COINGECKO_CONTRACT, params: [addresses.WETH] }, estimateApyFunctions: [ { @@ -46,6 +46,382 @@ module.exports = { ], cmcRewardTokenSymbols: ['FARM', 'WETH'], }, + aura_bbiUSD: { + inactive: true, + chain: CHAINS_ID.ETH_MAINNET, + category: VAULT_CATEGORIES_IDS.INACTIVE, + displayName: 'iDAI-iUSDC-iUSDT', + subLabel: 'Idle - Aura Finance', + apyIconUrls: [], + apyTokenSymbols: [], + logoUrl: './icons/balancer-bbaUSD.png', + tokenAddress: addresses.V2.aura_bbiUSD.Underlying, + decimals: '18', + vaultAddress: addresses.V2.aura_bbiUSD.NewVault, + priceFunction: { + type: GET_PRICE_TYPES.BALANCER, + params: [ + addresses.V2.aura_bbiUSD.Underlying, + addresses.V2.aura_bbiUSD.PoolId, + CHAINS_ID.ETH_MAINNET, + ], + }, + estimateApyFunctions: [ + { + type: ESTIMATED_APY_TYPES.AURA, + params: ['bbiUSD', profitSharingCut15Percent], + }, + ], + cmcRewardTokenSymbols: ['FARM', 'BAL', 'AURA'], + }, + aura_auraBAL: { + isNew: true, + chain: CHAINS_ID.ETH_MAINNET, + category: [VAULT_CATEGORIES_IDS.AURA, VAULT_CATEGORIES_IDS.BALANCER], + displayName: 'auraBAL', + subLabel: 'Aura Finance', + apyIconUrls: ['./icons/balancer.png', './icons/aura.png', './icons/bbausd.png'], + apyTokenSymbols: ['BAL', 'AURA', 'bbaUSD'], + logoUrl: './icons/aura-auraBAL.png', + tokenAddress: addresses.V2.aura_auraBAL.Underlying, + decimals: '18', + vaultAddress: addresses.V2.aura_auraBAL.NewVault, + priceFunction: { + type: GET_PRICE_TYPES.COINGECKO_ID, + params: ['aura-bal'], + }, + estimateApyFunctions: [ + { + type: ESTIMATED_APY_TYPES.AURA, + params: ['auraBAL', profitSharingCut15Percent], + }, + ], + cmcRewardTokenSymbols: ['FARM', 'BAL', 'AURA', 'bbaUSD'], + }, + aura_auraBAL_lp: { + isNew: true, + chain: CHAINS_ID.ETH_MAINNET, + category: [VAULT_CATEGORIES_IDS.AURA, VAULT_CATEGORIES_IDS.BALANCER], + displayName: '80BAL-20WETH - auraBAL', + subLabel: 'Aura Finance', + apyIconUrls: ['./icons/balancer.png', './icons/aura.png'], + apyTokenSymbols: ['BAL', 'AURA'], + logoUrl: './icons/balancer-auraBALlp.png', + tokenAddress: addresses.V2.aura_auraBAL_lp.Underlying, + decimals: '18', + vaultAddress: addresses.V2.aura_auraBAL_lp.NewVault, + priceFunction: { + type: GET_PRICE_TYPES.BALANCER, + params: [ + addresses.V2.aura_auraBAL_lp.Underlying, + addresses.V2.aura_auraBAL_lp.PoolId, + CHAINS_ID.ETH_MAINNET, + ], + }, + estimateApyFunctions: [ + { + type: ESTIMATED_APY_TYPES.AURA, + params: ['auraBAL_lp', profitSharingCut15Percent], + }, + ], + cmcRewardTokenSymbols: ['FARM', 'BAL', 'AURA'], + }, + aura_bbaUSD: { + isNew: true, + chain: CHAINS_ID.ETH_MAINNET, + category: [ + VAULT_CATEGORIES_IDS.AURA, + VAULT_CATEGORIES_IDS.BALANCER, + VAULT_CATEGORIES_IDS.STABLECOINS, + ], + displayName: 'aDAI-aUSDC-aUSDT', + subLabel: 'Aura Finance', + apyIconUrls: ['./icons/balancer.png', './icons/aura.png'], + apyTokenSymbols: ['BAL', 'AURA'], + logoUrl: './icons/balancer-bbaUSD.png', + tokenAddress: addresses.V2.aura_bbaUSD.Underlying, + decimals: '18', + vaultAddress: addresses.V2.aura_bbaUSD.NewVault, + priceFunction: { + type: GET_PRICE_TYPES.BALANCER, + params: [ + addresses.V2.aura_bbaUSD.Underlying, + addresses.V2.aura_bbaUSD.PoolId, + CHAINS_ID.ETH_MAINNET, + ], + }, + estimateApyFunctions: [ + { + type: ESTIMATED_APY_TYPES.AURA, + params: ['bbaUSD', profitSharingCut15Percent], + }, + ], + cmcRewardTokenSymbols: ['FARM', 'BAL', 'AURA'], + }, + aura_rETH: { + isNew: true, + chain: CHAINS_ID.ETH_MAINNET, + category: [ + VAULT_CATEGORIES_IDS.AURA, + VAULT_CATEGORIES_IDS.BALANCER, + VAULT_CATEGORIES_IDS.ETH20, + ], + displayName: 'rETH - WETH', + subLabel: 'Aura Finance', + apyIconUrls: ['./icons/balancer.png', './icons/aura.png'], + apyTokenSymbols: ['BAL', 'AURA'], + logoUrl: './icons/balancer-rETH.png', + tokenAddress: addresses.V2.aura_rETH.Underlying, + decimals: '18', + vaultAddress: addresses.V2.aura_rETH.NewVault, + priceFunction: { + type: GET_PRICE_TYPES.BALANCER, + params: [ + addresses.V2.aura_rETH.Underlying, + addresses.V2.aura_rETH.PoolId, + CHAINS_ID.ETH_MAINNET, + ], + }, + estimateApyFunctions: [ + { + type: ESTIMATED_APY_TYPES.AURA, + params: ['rETH', profitSharingCut15Percent], + }, + ], + cmcRewardTokenSymbols: ['FARM', 'BAL', 'AURA'], + }, + aura_wstETH: { + isNew: true, + chain: CHAINS_ID.ETH_MAINNET, + category: [ + VAULT_CATEGORIES_IDS.AURA, + VAULT_CATEGORIES_IDS.BALANCER, + VAULT_CATEGORIES_IDS.ETH20, + ], + displayName: 'wstETH - WETH', + subLabel: 'Aura Finance', + apyIconUrls: ['./icons/balancer.png', './icons/aura.png', './icons/ldo.png'], + apyTokenSymbols: ['BAL', 'AURA', 'LDO'], + logoUrl: './icons/balancer-wstETH.png', + tokenAddress: addresses.V2.aura_wstETH.Underlying, + decimals: '18', + vaultAddress: addresses.V2.aura_wstETH.NewVault, + priceFunction: { + type: GET_PRICE_TYPES.BALANCER, + params: [ + addresses.V2.aura_wstETH.Underlying, + addresses.V2.aura_wstETH.PoolId, + CHAINS_ID.ETH_MAINNET, + ], + }, + estimateApyFunctions: [ + { + type: ESTIMATED_APY_TYPES.AURA, + params: ['wstETH', profitSharingCut15Percent], + }, + ], + cmcRewardTokenSymbols: ['FARM', 'BAL', 'AURA', 'LDO'], + }, + balancer_2EUR_PAR: { + inactive: true, + category: VAULT_CATEGORIES_IDS.INACTIVE_POLYGON, + chain: CHAINS_ID.MATIC_MAINNET, + logoUrl: './icons/2eur_par.png', + apyIconUrls: [], + apyTokenSymbols: [], + displayName: 'jEUR-PAR', + subLabel: 'Balancer', + tokenAddress: addresses.MATIC.V2.balancer_2EUR_PAR.Underlying, + decimals: '18', + vaultAddress: addresses.MATIC.V2.balancer_2EUR_PAR.NewVault, + priceFunction: { + type: GET_PRICE_TYPES.BALANCER, + params: [ + addresses.MATIC.V2.balancer_2EUR_PAR.Underlying, + addresses.MATIC.V2.balancer_2EUR_PAR.PoolId, + CHAINS_ID.MATIC_MAINNET, + ], + }, + estimateApyFunctions: [ + { + type: ESTIMATED_APY_TYPES.BALANCER_GAUGE_POLYGON, + params: [ + 'balancer_2EUR_PAR', + addresses.MATIC.V2.balancer_2EUR_PAR.Gauge, + profitSharingCut8Percent, + ], + }, + ], + cmcRewardTokenSymbols: ['iFARM', 'BAL'], + }, + quickGamma_MATIC_ETH_narrow: { + isNew: true, + category: VAULT_CATEGORIES_IDS.QUICKSWAP, + chain: CHAINS_ID.MATIC_MAINNET, + logoUrl: './icons/wmatic_eth.png', + apyIconUrls: ['./icons/quick.png', './icons/wmatic.png'], + apyTokenSymbols: ['dQUICK', 'WMATIC'], + displayName: 'MATIC-ETH (Narrow)', + subLabel: 'Quickswap - Gamma', + tokenAddress: addresses.MATIC.V2.quickGamma_MATIC_ETH_narrow.Underlying, + decimals: '18', + vaultAddress: addresses.MATIC.V2.quickGamma_MATIC_ETH_narrow.NewVault, + priceFunction: { + type: GET_PRICE_TYPES.QUICKSWAP_GAMMA, + params: [addresses.MATIC.V2.quickGamma_MATIC_ETH_narrow.Underlying], + }, + estimateApyFunctions: [ + { + type: ESTIMATED_APY_TYPES.QUICKSWAP_GAMMA, + params: [ + addresses.MATIC.V2.quickGamma_MATIC_ETH_narrow.MasterChef, + addresses.MATIC.V2.quickGamma_MATIC_ETH_narrow.Underlying, + profitSharingCut8Percent, + ], + }, + ], + cmcRewardTokenSymbols: ['iFARM', 'dQUICK', 'WMATIC'], + }, + quickGamma_MATIC_ETH_wide: { + isNew: true, + category: VAULT_CATEGORIES_IDS.QUICKSWAP, + chain: CHAINS_ID.MATIC_MAINNET, + logoUrl: './icons/wmatic_eth.png', + apyIconUrls: ['./icons/quick.png', './icons/wmatic.png'], + apyTokenSymbols: ['dQUICK', 'WMATIC'], + displayName: 'MATIC-ETH (Wide)', + subLabel: 'Quickswap - Gamma', + tokenAddress: addresses.MATIC.V2.quickGamma_MATIC_ETH_wide.Underlying, + decimals: '18', + vaultAddress: addresses.MATIC.V2.quickGamma_MATIC_ETH_wide.NewVault, + priceFunction: { + type: GET_PRICE_TYPES.QUICKSWAP_GAMMA, + params: [addresses.MATIC.V2.quickGamma_MATIC_ETH_wide.Underlying], + }, + estimateApyFunctions: [ + { + type: ESTIMATED_APY_TYPES.QUICKSWAP_GAMMA, + params: [ + addresses.MATIC.V2.quickGamma_MATIC_ETH_wide.MasterChef, + addresses.MATIC.V2.quickGamma_MATIC_ETH_wide.Underlying, + profitSharingCut8Percent, + ], + }, + ], + cmcRewardTokenSymbols: ['iFARM', 'dQUICK', 'WMATIC'], + }, + quickGamma_MATIC_USDC_narrow: { + isNew: true, + category: VAULT_CATEGORIES_IDS.QUICKSWAP, + chain: CHAINS_ID.MATIC_MAINNET, + logoUrl: './icons/wmatic_usdc.png', + apyIconUrls: ['./icons/quick.png', './icons/wmatic.png'], + apyTokenSymbols: ['dQUICK', 'WMATIC'], + displayName: 'MATIC-USDC (Narrow)', + subLabel: 'Quickswap - Gamma', + tokenAddress: addresses.MATIC.V2.quickGamma_MATIC_USDC_narrow.Underlying, + decimals: '18', + vaultAddress: addresses.MATIC.V2.quickGamma_MATIC_USDC_narrow.NewVault, + priceFunction: { + type: GET_PRICE_TYPES.QUICKSWAP_GAMMA, + params: [addresses.MATIC.V2.quickGamma_MATIC_USDC_narrow.Underlying], + }, + estimateApyFunctions: [ + { + type: ESTIMATED_APY_TYPES.QUICKSWAP_GAMMA, + params: [ + addresses.MATIC.V2.quickGamma_MATIC_USDC_narrow.MasterChef, + addresses.MATIC.V2.quickGamma_MATIC_USDC_narrow.Underlying, + profitSharingCut8Percent, + ], + }, + ], + cmcRewardTokenSymbols: ['iFARM', 'dQUICK', 'WMATIC'], + }, + quickGamma_MATIC_USDC_wide: { + isNew: true, + category: VAULT_CATEGORIES_IDS.QUICKSWAP, + chain: CHAINS_ID.MATIC_MAINNET, + logoUrl: './icons/wmatic_usdc.png', + apyIconUrls: ['./icons/quick.png', './icons/wmatic.png'], + apyTokenSymbols: ['dQUICK', 'WMATIC'], + displayName: 'MATIC-USDC (Wide)', + subLabel: 'Quickswap - Gamma', + tokenAddress: addresses.MATIC.V2.quickGamma_MATIC_USDC_wide.Underlying, + decimals: '18', + vaultAddress: addresses.MATIC.V2.quickGamma_MATIC_USDC_wide.NewVault, + priceFunction: { + type: GET_PRICE_TYPES.QUICKSWAP_GAMMA, + params: [addresses.MATIC.V2.quickGamma_MATIC_USDC_wide.Underlying], + }, + estimateApyFunctions: [ + { + type: ESTIMATED_APY_TYPES.QUICKSWAP_GAMMA, + params: [ + addresses.MATIC.V2.quickGamma_MATIC_USDC_wide.MasterChef, + addresses.MATIC.V2.quickGamma_MATIC_USDC_wide.Underlying, + profitSharingCut8Percent, + ], + }, + ], + cmcRewardTokenSymbols: ['iFARM', 'dQUICK', 'WMATIC'], + }, + quickGamma_USDC_ETH_narrow: { + isNew: true, + category: VAULT_CATEGORIES_IDS.QUICKSWAP, + chain: CHAINS_ID.MATIC_MAINNET, + logoUrl: './icons/usdc_weth.png', + apyIconUrls: ['./icons/quick.png', './icons/wmatic.png'], + apyTokenSymbols: ['dQUICK', 'WMATIC'], + displayName: 'USDC-ETH (Narrow)', + subLabel: 'Quickswap - Gamma', + tokenAddress: addresses.MATIC.V2.quickGamma_USDC_ETH_narrow.Underlying, + decimals: '18', + vaultAddress: addresses.MATIC.V2.quickGamma_USDC_ETH_narrow.NewVault, + priceFunction: { + type: GET_PRICE_TYPES.QUICKSWAP_GAMMA, + params: [addresses.MATIC.V2.quickGamma_USDC_ETH_narrow.Underlying], + }, + estimateApyFunctions: [ + { + type: ESTIMATED_APY_TYPES.QUICKSWAP_GAMMA, + params: [ + addresses.MATIC.V2.quickGamma_USDC_ETH_narrow.MasterChef, + addresses.MATIC.V2.quickGamma_USDC_ETH_narrow.Underlying, + profitSharingCut8Percent, + ], + }, + ], + cmcRewardTokenSymbols: ['iFARM', 'dQUICK', 'WMATIC'], + }, + quickGamma_USDC_ETH_wide: { + isNew: true, + category: VAULT_CATEGORIES_IDS.QUICKSWAP, + chain: CHAINS_ID.MATIC_MAINNET, + logoUrl: './icons/usdc_weth.png', + apyIconUrls: ['./icons/quick.png', './icons/wmatic.png'], + apyTokenSymbols: ['dQUICK', 'WMATIC'], + displayName: 'USDC-ETH (Wide)', + subLabel: 'Quickswap - Gamma', + tokenAddress: addresses.MATIC.V2.quickGamma_USDC_ETH_wide.Underlying, + decimals: '18', + vaultAddress: addresses.MATIC.V2.quickGamma_USDC_ETH_wide.NewVault, + priceFunction: { + type: GET_PRICE_TYPES.QUICKSWAP_GAMMA, + params: [addresses.MATIC.V2.quickGamma_USDC_ETH_wide.Underlying], + }, + estimateApyFunctions: [ + { + type: ESTIMATED_APY_TYPES.QUICKSWAP_GAMMA, + params: [ + addresses.MATIC.V2.quickGamma_USDC_ETH_wide.MasterChef, + addresses.MATIC.V2.quickGamma_USDC_ETH_wide.Underlying, + profitSharingCut8Percent, + ], + }, + ], + cmcRewardTokenSymbols: ['iFARM', 'dQUICK', 'WMATIC'], + }, amDAI: { chain: CHAINS_ID.MATIC_MAINNET, logoUrl: '', @@ -157,38 +533,6 @@ module.exports = { ], }, }, - balancer_bbamusd: { - isNew: true, - category: VAULT_CATEGORIES_IDS.BALANCER, - chain: CHAINS_ID.MATIC_MAINNET, - logoUrl: './icons/bb-am-usd.png', - apyIconUrls: ['./icons/balancer.png'], - apyTokenSymbols: ['BAL'], - displayName: 'amDAI-amUSDC-amUSDT', - subLabel: 'Balancer', - tokenAddress: addresses.MATIC.V2.balancer_bbamusd.Underlying, - decimals: '18', - vaultAddress: addresses.MATIC.V2.balancer_bbamusd.NewVault, - priceFunction: { - type: GET_PRICE_TYPES.BALANCER, - params: [ - addresses.MATIC.V2.balancer_bbamusd.Underlying, - addresses.MATIC.V2.balancer_bbamusd.PoolId, - CHAINS_ID.MATIC_MAINNET, - ], - }, - estimateApyFunctions: [ - { - type: ESTIMATED_APY_TYPES.BALANCER_GAUGE_POLYGON, - params: [ - 'balancer_bbamusd', - addresses.MATIC.V2.balancer_bbamusd.Gauge, - profitSharingCut8Percent, - ], - }, - ], - cmcRewardTokenSymbols: ['iFARM', 'BAL'], - }, '80BAL-20WETH': { chain: CHAINS_ID.MATIC_MAINNET, logoUrl: '', @@ -221,7 +565,7 @@ module.exports = { }, balancer_tetuBal: { isNew: true, - category: VAULT_CATEGORIES_IDS.BALANCER, + category: [VAULT_CATEGORIES_IDS.BALANCER, VAULT_CATEGORIES_IDS.STABLE_POLYGON], chain: CHAINS_ID.MATIC_MAINNET, logoUrl: './icons/bal-tetubal.png', apyIconUrls: ['./icons/balancer.png'], @@ -251,160 +595,171 @@ module.exports = { ], cmcRewardTokenSymbols: ['iFARM', 'BAL'], }, - balancer_2BRLUSD: { + bal_MaticX: { isNew: true, category: VAULT_CATEGORIES_IDS.BALANCER, chain: CHAINS_ID.MATIC_MAINNET, - logoUrl: './icons/2brl-usd.png', - apyIconUrls: ['./icons/balancer.png'], - apyTokenSymbols: ['BAL'], - displayName: '2BRL - bb-amUSD', + logoUrl: './icons/balancer-maticx.png', + apyIconUrls: ['./icons/balancer.png', './icons/sd.png'], + apyTokenSymbols: ['BAL', 'SD'], + displayName: 'MaticX - wMATIC', subLabel: 'Balancer', - tokenAddress: addresses.MATIC.V2.balancer_2BRLUSD.Underlying, + tokenAddress: addresses.MATIC.V2.bal_MaticX.Underlying, decimals: '18', - vaultAddress: addresses.MATIC.V2.balancer_2BRLUSD.NewVault, + vaultAddress: addresses.MATIC.V2.bal_MaticX.NewVault, priceFunction: { type: GET_PRICE_TYPES.BALANCER, params: [ - addresses.MATIC.V2.balancer_2BRLUSD.Underlying, - addresses.MATIC.V2.balancer_2BRLUSD.PoolId, + addresses.MATIC.V2.bal_MaticX.Underlying, + addresses.MATIC.V2.bal_MaticX.PoolId, CHAINS_ID.MATIC_MAINNET, ], }, estimateApyFunctions: [ { type: ESTIMATED_APY_TYPES.BALANCER_GAUGE_POLYGON, - params: [ - 'balancer_2BRLUSD', - addresses.MATIC.V2.balancer_2BRLUSD.Gauge, - profitSharingCut8Percent, - ], + params: ['bal_MaticX', addresses.MATIC.V2.bal_MaticX.Gauge, profitSharingCut8Percent], }, ], cmcRewardTokenSymbols: ['iFARM', 'BAL'], }, - jBRL: { + bal_stMatic: { + isNew: true, + category: VAULT_CATEGORIES_IDS.BALANCER, chain: CHAINS_ID.MATIC_MAINNET, - logoUrl: '', - tokenAddress: addresses.MATIC.jBRL, - decimals: '18', - vaultAddress: null, - priceFunction: { - type: GET_PRICE_TYPES.COINGECKO_ID, - params: ['brz'], - }, - }, - BRZ: { - chain: CHAINS_ID.MATIC_MAINNET, - logoUrl: '', - tokenAddress: addresses.MATIC.BRZ, - decimals: '4', - vaultAddress: null, + logoUrl: './icons/balancer-stmatic.png', + apyIconUrls: ['./icons/balancer.png', './icons/ldo.png'], + apyTokenSymbols: ['BAL', 'LDO'], + displayName: 'stMATIC - wMATIC', + subLabel: 'Balancer', + tokenAddress: addresses.MATIC.V2.bal_stMatic.Underlying, + decimals: '18', + vaultAddress: addresses.MATIC.V2.bal_stMatic.NewVault, priceFunction: { - type: GET_PRICE_TYPES.COINGECKO_ID, - params: ['brz'], + type: GET_PRICE_TYPES.BALANCER, + params: [ + addresses.MATIC.V2.bal_stMatic.Underlying, + addresses.MATIC.V2.bal_stMatic.PoolId, + CHAINS_ID.MATIC_MAINNET, + ], }, + estimateApyFunctions: [ + { + type: ESTIMATED_APY_TYPES.BALANCER_GAUGE_POLYGON, + params: ['bal_stMatic', addresses.MATIC.V2.bal_stMatic.Gauge, profitSharingCut8Percent], + }, + ], + cmcRewardTokenSymbols: ['iFARM', 'BAL', 'LDO'], }, - balancer_2BRL: { - isNew: true, + bal_POLYBASE: { category: VAULT_CATEGORIES_IDS.BALANCER, chain: CHAINS_ID.MATIC_MAINNET, - logoUrl: './icons/2brl.png', + logoUrl: './icons/balancer-polybase.png', apyIconUrls: ['./icons/balancer.png'], apyTokenSymbols: ['BAL'], - displayName: 'jBRL-BRZ', + displayName: 'wMATIC-USDC-wETH-BAL', subLabel: 'Balancer', - tokenAddress: addresses.MATIC.V2.balancer_2BRL.Underlying, + tokenAddress: addresses.MATIC.V2.balancer_POLYBASE.Underlying, decimals: '18', - vaultAddress: addresses.MATIC.V2.balancer_2BRL.NewVault, + vaultAddress: addresses.MATIC.V2.balancer_POLYBASE.NewVault, priceFunction: { type: GET_PRICE_TYPES.BALANCER, params: [ - addresses.MATIC.V2.balancer_2BRL.Underlying, - addresses.MATIC.V2.balancer_2BRL.PoolId, + addresses.MATIC.V2.balancer_POLYBASE.Underlying, + addresses.MATIC.V2.balancer_POLYBASE.PoolId, CHAINS_ID.MATIC_MAINNET, ], }, estimateApyFunctions: [ { type: ESTIMATED_APY_TYPES.BALANCER_GAUGE_POLYGON, - params: ['balancer_2BRL', addresses.MATIC.V2.balancer_2BRL.Gauge, profitSharingCut8Percent], + params: [ + 'bal_POLYBASE', + addresses.MATIC.V2.balancer_POLYBASE.Gauge, + profitSharingCut8Percent, + ], }, ], - cmcRewardTokenSymbols: ['iFARM', 'BAL', 'SD'], + cmcRewardTokenSymbols: ['iFARM', 'BAL'], }, - bal_MaticX: { - isNew: true, + balancer_bbamusd: { category: VAULT_CATEGORIES_IDS.BALANCER, chain: CHAINS_ID.MATIC_MAINNET, - logoUrl: './icons/balancer-maticx.png', - apyIconUrls: ['./icons/balancer.png', './icons/sd.png'], - apyTokenSymbols: ['BAL', 'SD'], - displayName: 'MaticX - wMATIC', + logoUrl: './icons/bb-am-usd.png', + apyIconUrls: ['./icons/balancer.png'], + apyTokenSymbols: ['BAL'], + displayName: 'amDAI-amUSDC-amUSDT', subLabel: 'Balancer', - tokenAddress: addresses.MATIC.V2.bal_MaticX.Underlying, + tokenAddress: addresses.MATIC.V2.balancer_bbamusd.Underlying, decimals: '18', - vaultAddress: addresses.MATIC.V2.bal_MaticX.NewVault, + vaultAddress: addresses.MATIC.V2.balancer_bbamusd.NewVault, priceFunction: { type: GET_PRICE_TYPES.BALANCER, params: [ - addresses.MATIC.V2.bal_MaticX.Underlying, - addresses.MATIC.V2.bal_MaticX.PoolId, + addresses.MATIC.V2.balancer_bbamusd.Underlying, + addresses.MATIC.V2.balancer_bbamusd.PoolId, CHAINS_ID.MATIC_MAINNET, ], }, estimateApyFunctions: [ { type: ESTIMATED_APY_TYPES.BALANCER_GAUGE_POLYGON, - params: ['bal_MaticX', addresses.MATIC.V2.bal_MaticX.Gauge, profitSharingCut8Percent], + params: [ + 'balancer_bbamusd', + addresses.MATIC.V2.balancer_bbamusd.Gauge, + profitSharingCut8Percent, + ], }, ], cmcRewardTokenSymbols: ['iFARM', 'BAL'], }, - bal_stMatic: { - isNew: true, - category: VAULT_CATEGORIES_IDS.BALANCER, + balancer_2EUR_agEUR: { + category: [VAULT_CATEGORIES_IDS.BALANCER, VAULT_CATEGORIES_IDS.STABLE_POLYGON], chain: CHAINS_ID.MATIC_MAINNET, - logoUrl: './icons/balancer-stmatic.png', - apyIconUrls: ['./icons/balancer.png', './icons/ldo.png'], - apyTokenSymbols: ['BAL', 'LDO'], - displayName: 'stMATIC - wMATIC', + logoUrl: './icons/2eur_ageur.png', + apyIconUrls: ['./icons/balancer.png'], + apyTokenSymbols: ['BAL'], + displayName: 'jEUR-agEUR', subLabel: 'Balancer', - tokenAddress: addresses.MATIC.V2.bal_stMatic.Underlying, + tokenAddress: addresses.MATIC.V2.balancer_2EUR_agEUR.Underlying, decimals: '18', - vaultAddress: addresses.MATIC.V2.bal_stMatic.NewVault, + vaultAddress: addresses.MATIC.V2.balancer_2EUR_agEUR.NewVault, priceFunction: { type: GET_PRICE_TYPES.BALANCER, params: [ - addresses.MATIC.V2.bal_stMatic.Underlying, - addresses.MATIC.V2.bal_stMatic.PoolId, + addresses.MATIC.V2.balancer_2EUR_agEUR.Underlying, + addresses.MATIC.V2.balancer_2EUR_agEUR.PoolId, CHAINS_ID.MATIC_MAINNET, ], }, estimateApyFunctions: [ { type: ESTIMATED_APY_TYPES.BALANCER_GAUGE_POLYGON, - params: ['bal_stMatic', addresses.MATIC.V2.bal_stMatic.Gauge, profitSharingCut8Percent], + params: [ + 'balancer_2EUR_agEUR', + addresses.MATIC.V2.balancer_2EUR_agEUR.Gauge, + profitSharingCut8Percent, + ], }, ], - cmcRewardTokenSymbols: ['iFARM', 'BAL', 'LDO'], + cmcRewardTokenSymbols: ['iFARM', 'BAL'], }, - bal_POLYBASE: { - category: VAULT_CATEGORIES_IDS.BALANCER, + balancer_2BRLUSD: { + category: [VAULT_CATEGORIES_IDS.BALANCER, VAULT_CATEGORIES_IDS.STABLE_POLYGON], chain: CHAINS_ID.MATIC_MAINNET, - logoUrl: './icons/balancer-polybase.png', + logoUrl: './icons/2brl-usd.png', apyIconUrls: ['./icons/balancer.png'], apyTokenSymbols: ['BAL'], - displayName: 'wMATIC-USDC-wETH-BAL', + displayName: '2BRL - bb-amUSD', subLabel: 'Balancer', - tokenAddress: addresses.MATIC.V2.balancer_POLYBASE.Underlying, + tokenAddress: addresses.MATIC.V2.balancer_2BRLUSD.Underlying, decimals: '18', - vaultAddress: addresses.MATIC.V2.balancer_POLYBASE.NewVault, + vaultAddress: addresses.MATIC.V2.balancer_2BRLUSD.NewVault, priceFunction: { type: GET_PRICE_TYPES.BALANCER, params: [ - addresses.MATIC.V2.balancer_POLYBASE.Underlying, - addresses.MATIC.V2.balancer_POLYBASE.PoolId, + addresses.MATIC.V2.balancer_2BRLUSD.Underlying, + addresses.MATIC.V2.balancer_2BRLUSD.PoolId, CHAINS_ID.MATIC_MAINNET, ], }, @@ -412,14 +767,63 @@ module.exports = { { type: ESTIMATED_APY_TYPES.BALANCER_GAUGE_POLYGON, params: [ - 'bal_POLYBASE', - addresses.MATIC.V2.balancer_POLYBASE.Gauge, + 'balancer_2BRLUSD', + addresses.MATIC.V2.balancer_2BRLUSD.Gauge, profitSharingCut8Percent, ], }, ], cmcRewardTokenSymbols: ['iFARM', 'BAL'], }, + jBRL: { + chain: CHAINS_ID.MATIC_MAINNET, + logoUrl: '', + tokenAddress: addresses.MATIC.jBRL, + decimals: '18', + vaultAddress: null, + priceFunction: { + type: GET_PRICE_TYPES.COINGECKO_ID, + params: ['brz'], + }, + }, + BRZ: { + chain: CHAINS_ID.MATIC_MAINNET, + logoUrl: '', + tokenAddress: addresses.MATIC.BRZ, + decimals: '4', + vaultAddress: null, + priceFunction: { + type: GET_PRICE_TYPES.COINGECKO_ID, + params: ['brz'], + }, + }, + balancer_2BRL: { + category: [VAULT_CATEGORIES_IDS.BALANCER, VAULT_CATEGORIES_IDS.STABLE_POLYGON], + chain: CHAINS_ID.MATIC_MAINNET, + logoUrl: './icons/2brl.png', + apyIconUrls: ['./icons/balancer.png'], + apyTokenSymbols: ['BAL'], + displayName: 'jBRL-BRZ', + subLabel: 'Balancer', + tokenAddress: addresses.MATIC.V2.balancer_2BRL.Underlying, + decimals: '18', + vaultAddress: addresses.MATIC.V2.balancer_2BRL.NewVault, + priceFunction: { + type: GET_PRICE_TYPES.BALANCER, + params: [ + addresses.MATIC.V2.balancer_2BRL.Underlying, + addresses.MATIC.V2.balancer_2BRL.PoolId, + CHAINS_ID.MATIC_MAINNET, + ], + }, + estimateApyFunctions: [ + { + type: ESTIMATED_APY_TYPES.BALANCER_GAUGE_POLYGON, + params: ['balancer_2BRL', addresses.MATIC.V2.balancer_2BRL.Gauge, profitSharingCut8Percent], + }, + ], + cmcRewardTokenSymbols: ['iFARM', 'BAL', 'SD'], + }, APE: { chain: CHAINS_ID.ETH_MAINNET, logoUrl: './icons/apecoin.png', @@ -465,8 +869,135 @@ module.exports = { params: ['usdd'], }, }, + DOLA: { + chain: CHAINS_ID.ETH_MAINNET, + logoUrl: './icons/dola.png', + tokenAddress: addresses.DOLA, + decimals: '18', + vaultAddress: null, + priceFunction: { + type: GET_PRICE_TYPES.COINGECKO_ID, + params: ['dola-usd'], + }, + }, + FRAX: { + chain: CHAINS_ID.ETH_MAINNET, + logoUrl: './icons/frax.png', + tokenAddress: addresses.FRAX, + decimals: '18', + vaultAddress: null, + priceFunction: { + type: GET_PRICE_TYPES.COINGECKO_ID, + params: ['frax'], + }, + }, + FRAXBP: { + chain: CHAINS_ID.ETH_MAINNET, + logoUrl: './icons/fraxbp.png', + tokenAddress: addresses.FRAXBP, + decimals: '18', + vaultAddress: null, + priceFunction: { + type: GET_PRICE_TYPES.CURVE_POOL, + params: [addresses.FRAXBP_Miner, addresses.FRAXBP, '18', ['FRAX', 'USDC']], + }, + }, + pETH: { + chain: CHAINS_ID.ETH_MAINNET, + logoUrl: './icons/peth.png', + tokenAddress: addresses.pETH, + decimals: '18', + vaultAddress: null, + priceFunction: { + type: GET_PRICE_TYPES.COINGECKO_ID, + params: ['weth'], + }, + }, + convex_CVX_ETH: { + chain: CHAINS_ID.ETH_MAINNET, + category: VAULT_CATEGORIES_IDS.CONVEX, + displayName: 'CVX-ETH', + subLabel: 'Convex Finance', + apyIconUrls: ['./icons/curve.png', './icons/cvx.png'], + apyTokenSymbols: ['CRV', 'CVX'], + logoUrl: './icons/curve-cvx-eth.png', + tokenAddress: addresses.V2.convex_CVX_ETH.Underlying, + decimals: '18', + vaultAddress: addresses.V2.convex_CVX_ETH.NewVault, + priceFunction: { + type: GET_PRICE_TYPES.CURVE_POOL, + params: [ + addresses.V2.convex_CVX_ETH.Miner, + addresses.V2.convex_CVX_ETH.Underlying, + '18', + ['CVX', 'ETH'], + ], + }, + estimateApyFunctions: [ + { + type: ESTIMATED_APY_TYPES.CONVEX, + params: ['cvxeth', profitSharingCut15Percent], + }, + ], + cmcRewardTokenSymbols: ['iFARM', 'CVX', 'CRV'], + }, + crvCRVETH: { + chain: CHAINS_ID.ETH_MAINNET, + category: VAULT_CATEGORIES_IDS.CONVEX, + displayName: 'CRV-ETH', + subLabel: 'Convex Finance', + apyIconUrls: ['./icons/curve.png', './icons/cvx.png'], + apyTokenSymbols: ['CRV', 'CVX'], + logoUrl: './icons/curve-crveth.png', + tokenAddress: addresses.V2.crv_CRV_ETH.Underlying, + decimals: '18', + vaultAddress: addresses.V2.crv_CRV_ETH.NewVault, + priceFunction: { + type: GET_PRICE_TYPES.CURVE_POOL, + params: [ + addresses.V2.crv_CRV_ETH.Miner, + addresses.V2.crv_CRV_ETH.Underlying, + '18', + ['CRV', 'ETH'], + ], + }, + estimateApyFunctions: [ + { + type: ESTIMATED_APY_TYPES.CONVEX, + params: ['crv-eth', profitSharingCut15Percent], + }, + ], + cmcRewardTokenSymbols: ['iFARM', 'CVX', 'CRV'], + }, + convex_pETH: { + chain: CHAINS_ID.ETH_MAINNET, + category: VAULT_CATEGORIES_IDS.CONVEX, + displayName: 'pETH-ETH', + subLabel: 'Convex Finance', + apyIconUrls: ['./icons/curve.png', './icons/cvx.png'], + apyTokenSymbols: ['CRV', 'CVX'], + logoUrl: './icons/curve-peth.png', + tokenAddress: addresses.V2.convex_pETH.Underlying, + decimals: '18', + vaultAddress: addresses.V2.convex_pETH.NewVault, + priceFunction: { + type: GET_PRICE_TYPES.CURVE_POOL, + params: [ + addresses.V2.convex_pETH.Underlying, + addresses.V2.convex_pETH.Underlying, + '18', + ['pETH', 'ETH'], + ], + }, + estimateApyFunctions: [ + { + type: ESTIMATED_APY_TYPES.CONVEX, + params: ['peth', profitSharingCut15Percent], + }, + ], + cmcRewardTokenSymbols: ['iFARM', 'CVX', 'CRV'], + }, convex_USDD: { - isNew: true, chain: CHAINS_ID.ETH_MAINNET, category: [VAULT_CATEGORIES_IDS.CONVEX, VAULT_CATEGORIES_IDS.STABLECOINS], displayName: 'USDD-3Crv', @@ -494,41 +1025,7 @@ module.exports = { ], cmcRewardTokenSymbols: ['iFARM', 'CVX', 'CRV'], }, - DOLA: { - chain: CHAINS_ID.ETH_MAINNET, - logoUrl: './icons/dola.png', - tokenAddress: addresses.DOLA, - decimals: '18', - vaultAddress: null, - priceFunction: { - type: GET_PRICE_TYPES.COINGECKO_ID, - params: ['dola-usd'], - }, - }, - FRAX: { - chain: CHAINS_ID.ETH_MAINNET, - logoUrl: './icons/frax.png', - tokenAddress: addresses.FRAX, - decimals: '18', - vaultAddress: null, - priceFunction: { - type: GET_PRICE_TYPES.COINGECKO_ID, - params: ['frax'], - }, - }, - FRAXBP: { - chain: CHAINS_ID.ETH_MAINNET, - logoUrl: './icons/fraxbp.png', - tokenAddress: addresses.FRAXBP, - decimals: '18', - vaultAddress: null, - priceFunction: { - type: GET_PRICE_TYPES.CURVE_POOL, - params: [addresses.FRAXBP_Miner, addresses.FRAXBP, '18', ['FRAX', 'USDC']], - }, - }, convex_DOLA_FRAXBP: { - isNew: true, chain: CHAINS_ID.ETH_MAINNET, category: [VAULT_CATEGORIES_IDS.CONVEX, VAULT_CATEGORIES_IDS.STABLECOINS], displayName: 'DOLA-FRAXBP', @@ -556,46 +1053,6 @@ module.exports = { ], cmcRewardTokenSymbols: ['iFARM', 'CVX', 'CRV'], }, - pETH: { - chain: CHAINS_ID.ETH_MAINNET, - logoUrl: './icons/peth.png', - tokenAddress: addresses.pETH, - decimals: '18', - vaultAddress: null, - priceFunction: { - type: GET_PRICE_TYPES.COINGECKO_ID, - params: ['weth'], - }, - }, - convex_pETH: { - isNew: true, - chain: CHAINS_ID.ETH_MAINNET, - category: VAULT_CATEGORIES_IDS.CONVEX, - displayName: 'pETH-ETH', - subLabel: 'Convex Finance', - apyIconUrls: ['./icons/curve.png', './icons/cvx.png'], - apyTokenSymbols: ['CRV', 'CVX'], - logoUrl: './icons/curve-peth.png', - tokenAddress: addresses.V2.convex_pETH.Underlying, - decimals: '18', - vaultAddress: addresses.V2.convex_pETH.NewVault, - priceFunction: { - type: GET_PRICE_TYPES.CURVE_POOL, - params: [ - addresses.V2.convex_pETH.Underlying, - addresses.V2.convex_pETH.Underlying, - '18', - ['pETH', 'ETH'], - ], - }, - estimateApyFunctions: [ - { - type: ESTIMATED_APY_TYPES.CONVEX, - params: ['peth', profitSharingCut15Percent], - }, - ], - cmcRewardTokenSymbols: ['iFARM', 'CVX', 'CRV'], - }, pBTC: { chain: CHAINS_ID.ETH_MAINNET, logoUrl: './icons/pbtc.png', @@ -669,64 +1126,6 @@ module.exports = { params: ['convex-finance'], }, }, - convex_CVX_ETH: { - isNew: true, - chain: CHAINS_ID.ETH_MAINNET, - category: VAULT_CATEGORIES_IDS.CONVEX, - displayName: 'CVX-ETH', - subLabel: 'Convex Finance', - apyIconUrls: ['./icons/curve.png', './icons/cvx.png'], - apyTokenSymbols: ['CRV', 'CVX'], - logoUrl: './icons/curve-cvx-eth.png', - tokenAddress: addresses.V2.convex_CVX_ETH.Underlying, - decimals: '18', - vaultAddress: addresses.V2.convex_CVX_ETH.NewVault, - priceFunction: { - type: GET_PRICE_TYPES.CURVE_POOL, - params: [ - addresses.V2.convex_CVX_ETH.Miner, - addresses.V2.convex_CVX_ETH.Underlying, - '18', - ['CVX', 'ETH'], - ], - }, - estimateApyFunctions: [ - { - type: ESTIMATED_APY_TYPES.CONVEX, - params: ['cvxeth', profitSharingCut15Percent], - }, - ], - cmcRewardTokenSymbols: ['iFARM', 'CVX', 'CRV'], - }, - crvCRVETH: { - isNew: true, - chain: CHAINS_ID.ETH_MAINNET, - category: VAULT_CATEGORIES_IDS.CONVEX, - displayName: 'CRV-ETH', - subLabel: 'Convex Finance', - apyIconUrls: ['./icons/curve.png', './icons/cvx.png'], - apyTokenSymbols: ['CRV', 'CVX'], - logoUrl: './icons/curve-crveth.png', - tokenAddress: addresses.V2.crv_CRV_ETH.Underlying, - decimals: '18', - vaultAddress: addresses.V2.crv_CRV_ETH.NewVault, - priceFunction: { - type: GET_PRICE_TYPES.CURVE_POOL, - params: [ - addresses.V2.crv_CRV_ETH.Miner, - addresses.V2.crv_CRV_ETH.Underlying, - '18', - ['CRV', 'ETH'], - ], - }, - estimateApyFunctions: [ - { - type: ESTIMATED_APY_TYPES.CONVEX, - params: ['crv-eth', profitSharingCut15Percent], - }, - ], - cmcRewardTokenSymbols: ['iFARM', 'CVX', 'CRV'], - }, stETH: { chain: CHAINS_ID.ETH_MAINNET, logoUrl: './icons/steth.png', @@ -778,12 +1177,13 @@ module.exports = { }, }, crvUSDN: { + inactive: true, chain: CHAINS_ID.ETH_MAINNET, - category: [VAULT_CATEGORIES_IDS.CONVEX, VAULT_CATEGORIES_IDS.STABLECOINS], + category: VAULT_CATEGORIES_IDS.INACTIVE, displayName: 'USDN-3Crv', subLabel: 'Convex Finance', - apyIconUrls: ['./icons/curve.png', './icons/cvx.png'], - apyTokenSymbols: ['CRV', 'CVX'], + apyIconUrls: [], + apyTokenSymbols: [], logoUrl: './icons/curve-usdn.png', tokenAddress: addresses.crvUSDN, decimals: '18', @@ -800,13 +1200,14 @@ module.exports = { ], cmcRewardTokenSymbols: ['FARM', 'CVX', 'CRV'], }, - crvTriCrypto: { + crvThreeCrypto: { + inactive: true, chain: CHAINS_ID.ETH_MAINNET, - category: VAULT_CATEGORIES_IDS.CONVEX, + category: VAULT_CATEGORIES_IDS.INACTIVE, displayName: 'USDT-WBTC-ETH', subLabel: 'Convex Finance', - apyIconUrls: ['./icons/curve.png', './icons/cvx.png'], - apyTokenSymbols: ['CRV', 'CVX'], + apyIconUrls: [], + apyTokenSymbols: [], logoUrl: './icons/curve-tricrypto.png', tokenAddress: addresses.V2.crvThreeCrypto.Underlying, decimals: '18', @@ -884,11 +1285,12 @@ module.exports = { }, }, meshswap_MESH_oMOOI: { - category: VAULT_CATEGORIES_IDS.MESHSWAP, + inactive: true, + category: VAULT_CATEGORIES_IDS.INACTIVE_POLYGON, chain: CHAINS_ID.MATIC_MAINNET, logoUrl: './icons/mesh-mesh-omooi.png', - apyIconUrls: ['./icons/omooi.png'], - apyTokenSymbols: ['oMOOI'], + apyIconUrls: [], + apyTokenSymbols: [], displayName: 'MESH-oMOOI', subLabel: 'MeshSwap', tokenAddress: addresses.MATIC.V2.meshswap_MESH_oMOOI.Underlying, @@ -907,11 +1309,12 @@ module.exports = { cmcRewardTokenSymbols: ['iFARM', 'oMOOI'], }, meshswap_MESH_oZEMIT: { - category: VAULT_CATEGORIES_IDS.MESHSWAP, + inactive: true, + category: VAULT_CATEGORIES_IDS.INACTIVE_POLYGON, chain: CHAINS_ID.MATIC_MAINNET, logoUrl: './icons/mesh-mesh-ozemit.png', - apyIconUrls: ['./icons/ozemit.png'], - apyTokenSymbols: ['oZEMIT'], + apyIconUrls: [], + apyTokenSymbols: [], displayName: 'MESH-oZEMIT', subLabel: 'MeshSwap', tokenAddress: addresses.MATIC.V2.meshswap_MESH_oZEMIT.Underlying, @@ -930,11 +1333,12 @@ module.exports = { cmcRewardTokenSymbols: ['iFARM', 'oZEMIT'], }, meshswap_USDC_oUSDC: { - category: [VAULT_CATEGORIES_IDS.MESHSWAP, VAULT_CATEGORIES_IDS.STABLE_POLYGON], + inactive: true, + category: VAULT_CATEGORIES_IDS.INACTIVE_POLYGON, chain: CHAINS_ID.MATIC_MAINNET, logoUrl: './icons/mesh-usdc-ousdc.png', - apyIconUrls: ['./icons/mesh.png'], - apyTokenSymbols: ['MESH'], + apyIconUrls: [], + apyTokenSymbols: [], displayName: 'USDC-oUSDC', subLabel: 'MeshSwap', tokenAddress: addresses.MATIC.V2.meshswap_USDC_oUSDC.Underlying, @@ -953,11 +1357,12 @@ module.exports = { cmcRewardTokenSymbols: ['iFARM', 'MESH'], }, meshswap_USDT_oUSDT: { - category: [VAULT_CATEGORIES_IDS.MESHSWAP, VAULT_CATEGORIES_IDS.STABLE_POLYGON], + inactive: true, + category: VAULT_CATEGORIES_IDS.INACTIVE_POLYGON, chain: CHAINS_ID.MATIC_MAINNET, logoUrl: './icons/mesh-usdt-ousdt.png', - apyIconUrls: ['./icons/mesh.png'], - apyTokenSymbols: ['MESH'], + apyIconUrls: [], + apyTokenSymbols: [], displayName: 'USDT-oUSDT', subLabel: 'MeshSwap', tokenAddress: addresses.MATIC.V2.meshswap_USDT_oUSDT.Underlying, @@ -976,11 +1381,12 @@ module.exports = { cmcRewardTokenSymbols: ['iFARM', 'MESH'], }, meshswap_WMATIC_MESH: { - category: VAULT_CATEGORIES_IDS.MESHSWAP, + inactive: true, + category: VAULT_CATEGORIES_IDS.INACTIVE_POLYGON, chain: CHAINS_ID.MATIC_MAINNET, logoUrl: './icons/mesh-wmatic-mesh.png', - apyIconUrls: ['./icons/mesh.png'], - apyTokenSymbols: ['MESH'], + apyIconUrls: [], + apyTokenSymbols: [], displayName: 'MATIC-MESH', subLabel: 'MeshSwap', tokenAddress: addresses.MATIC.V2.meshswap_WMATIC_MESH.Underlying, @@ -1175,51 +1581,11 @@ module.exports = { type: GET_PRICE_TYPES.KYBER_PAIR, params: [ addresses.MATIC.JRT_ANGLE_NOV22, - addresses.MATIC.V2.jarvis_2EUR_agEUR_HODL.Underlying, + addresses.MATIC.V2.balancer_2EUR_agEUR.OldUnderlying, addresses.MATIC.V2.jarvis_JRTANGLENOV22_2EURagEUR.Underlying, ], }, }, - jarvis_2EUR_agEUR_HODL: { - inactive: true, - category: VAULT_CATEGORIES_IDS.INACTIVE_POLYGON, - chain: CHAINS_ID.MATIC_MAINNET, - logoUrl: './icons/2eur_ageur.png', - apyIconUrls: [], - apyTokenSymbols: [], - displayName: 'Jarvis: 2EUR (agEUR)', - subLabel: 'HODL', - tokenAddress: addresses.MATIC.V2.jarvis_2EUR_agEUR_HODL.Underlying, - decimals: '18', - vaultAddress: addresses.MATIC.V2.jarvis_2EUR_agEUR_HODL.NewVault, - priceFunction: { - type: GET_PRICE_TYPES.CURVE_POOL, - params: [ - addresses.MATIC.V2.jarvis_2EUR_agEUR_HODL.Underlying, - addresses.MATIC.V2.jarvis_2EUR_agEUR_HODL.Underlying, - 18, - ['JEUR', 'agEUR'], - CHAINS_ID.MATIC_MAINNET, - ], - }, - estimateApyFunctions: [ - { - type: 'JARVIS_HODL_V2', - params: [ - 0, - addresses.MATIC.V2.jarvis_2EUR_agEUR_HODL.RewardPool, - addresses.MATIC.V2.jarvis_2EUR_agEUR_HODL.Underlying, - 'jarvis_JRTANGLENOV22_2EURagEUR', - profitSharingCut8Percent, - ], - extraDailyCompound: false, - }, - ], - apyDescriptionOverride: [ - 'Auto harvested JRT_ANGLE_NOV22 deposited into JRT_ANGLE_NOV22-2EUR_agEUR for more APY', - ], - cmcRewardTokenSymbols: ['iFARM', 'JRT_ANGLE_NOV22'], - }, jarvis_JRTANGLENOV22_2EURagEUR: { inactive: true, category: VAULT_CATEGORIES_IDS.INACTIVE_POLYGON, @@ -1278,50 +1644,44 @@ module.exports = { type: GET_PRICE_TYPES.KYBER_PAIR, params: [ addresses.MATIC.JRT_MIMO_NOV22, - addresses.MATIC.V2.jarvis_2EUR_PAR_HODL.Underlying, + addresses.MATIC.V2.balancer_2EUR_PAR.OldUnderlying, addresses.MATIC.V2.jarvis_JRTMIMONOV22_2EURPAR.Underlying, ], }, }, + jarvis_2EUR_agEUR_HODL: { + chain: CHAINS_ID.MATIC_MAINNET, + logoUrl: '', + tokenAddress: addresses.MATIC.V2.balancer_2EUR_agEUR.OldUnderlying, + decimals: '18', + vaultAddress: null, + priceFunction: { + type: GET_PRICE_TYPES.CURVE_POOL, + params: [ + addresses.MATIC.V2.balancer_2EUR_agEUR.OldUnderlying, + addresses.MATIC.V2.balancer_2EUR_agEUR.OldUnderlying, + 18, + ['JEUR', 'agEUR'], + CHAINS_ID.MATIC_MAINNET, + ], + }, + }, jarvis_2EUR_PAR_HODL: { - inactive: true, - category: VAULT_CATEGORIES_IDS.INACTIVE_POLYGON, chain: CHAINS_ID.MATIC_MAINNET, - logoUrl: './icons/2eur_par.png', - apyIconUrls: [], - apyTokenSymbols: [], - displayName: 'Jarvis: 2EUR (PAR)', - subLabel: 'HODL', - tokenAddress: addresses.MATIC.V2.jarvis_2EUR_PAR_HODL.Underlying, + logoUrl: '', + tokenAddress: addresses.MATIC.V2.balancer_2EUR_PAR.OldUnderlying, decimals: '18', - vaultAddress: addresses.MATIC.V2.jarvis_2EUR_PAR_HODL.NewVault, + vaultAddress: null, priceFunction: { type: GET_PRICE_TYPES.CURVE_POOL, params: [ - addresses.MATIC.V2.jarvis_2EUR_PAR_HODL.Underlying, - addresses.MATIC.V2.jarvis_2EUR_PAR_HODL.Underlying, + addresses.MATIC.V2.balancer_2EUR_PAR.OldUnderlying, + addresses.MATIC.V2.balancer_2EUR_PAR.OldUnderlying, 18, ['JEUR', 'PAR'], CHAINS_ID.MATIC_MAINNET, ], }, - estimateApyFunctions: [ - { - type: 'JARVIS_HODL_V2', - params: [ - 0, - addresses.MATIC.V2.jarvis_2EUR_PAR_HODL.RewardPool, - addresses.MATIC.V2.jarvis_2EUR_PAR_HODL.Underlying, - 'jarvis_JRTMIMONOV22_2EURPAR', - profitSharingCut8Percent, - ], - extraDailyCompound: false, - }, - ], - apyDescriptionOverride: [ - 'Auto harvested JRT_MIMO_NOV22 deposited into JRT_MIMO_NOV22-2EUR_PAR for more APY', - ], - cmcRewardTokenSymbols: ['iFARM', 'JRT_MIMO_NOV22'], }, jarvis_JRTMIMONOV22_2EURPAR: { inactive: true, @@ -1647,7 +2007,7 @@ module.exports = { type: GET_PRICE_TYPES.KYBER_PAIR, params: [ addresses.MATIC.JRT_ANGLE_SEP22, - addresses.MATIC.V2.jarvis_2EUR_agEUR_HODL.Underlying, + addresses.MATIC.V2.balancer_2EUR_agEUR.OldUnderlying, addresses.MATIC.V2.jarvis_JRTANGLE_2EURagEUR.Underlying, ], }, @@ -1706,7 +2066,7 @@ module.exports = { type: GET_PRICE_TYPES.KYBER_PAIR, params: [ addresses.MATIC.JRT_MIMO_SEP22, - addresses.MATIC.V2.jarvis_2EUR_PAR_HODL.Underlying, + addresses.MATIC.V2.balancer_2EUR_PAR.OldUnderlying, addresses.MATIC.V2.jarvis_JRTMIMO_2EURPAR.Underlying, ], }, @@ -2432,7 +2792,7 @@ module.exports = { type: GET_PRICE_TYPES.KYBER_PAIR, params: [ addresses.MATIC.agDEN_JUL22, - addresses.MATIC.V2.jarvis_2EUR_agEUR_HODL.Underlying, + addresses.MATIC.V2.balancer_2EUR_agEUR.OldUnderlying, addresses.MATIC.V2.jarvis_agDENJUL22_2EUR.Underlying, ], }, @@ -3001,7 +3361,7 @@ module.exports = { logoUrl: './icons/yel-matic.png', apyIconUrls: ['./icons/yel.png'], apyTokenSymbols: ['YEL'], - displayName: 'YEL: YEL-MATIC', + displayName: 'YEL-MATIC', subLabel: 'Quickswap', tokenAddress: addresses.MATIC.V2.quick_YEL_MATIC.Underlying, decimals: '18', @@ -3258,8 +3618,8 @@ module.exports = { isSingleAssetWithdrawalAllowed: false, chain: CHAINS_ID.ETH_MAINNET, category: VAULT_CATEGORIES_IDS.UNIV3, - displayName: 'Uniswap V3: ORC-ETH', - subLabel: 'Orbit Chain', + displayName: 'ORC-ETH', + subLabel: 'Uniswap V3 - Orbit Chain', apyIconUrls: ['./icons/univ3.png'], apyTokenSymbols: ['UNI'], logoUrl: './icons/univ3-orc-eth.png', @@ -3450,8 +3810,8 @@ module.exports = { UniV3_CNG_ETH: { chain: CHAINS_ID.ETH_MAINNET, category: VAULT_CATEGORIES_IDS.UNIV3, - displayName: 'Uniswap V3: CNG-ETH', - subLabel: 'Changer', + displayName: 'CNG-ETH', + subLabel: 'Uniswap V3 - Changer', apyIconUrls: ['./icons/univ3.png'], apyTokenSymbols: ['UNI'], logoUrl: './icons/univ3-eth-cng.png', @@ -3680,7 +4040,7 @@ module.exports = { logoUrl: './icons/yel-eth.png', apyIconUrls: ['./icons/yel.png'], apyTokenSymbols: ['YEL'], - displayName: 'YEL-ETH (SUSHI)', + displayName: 'YEL-ETH', tokenAddress: addresses.V2.sushi_YEL_ETH.Underlying, decimals: '18', vaultAddress: addresses.V2.sushi_YEL_ETH.NewVault, @@ -3721,10 +4081,10 @@ module.exports = { }, UniV3_ETH_sETH2: { zapFrontrunProtection: true, - subLabel: 'StakeWise', chain: CHAINS_ID.ETH_MAINNET, category: [VAULT_CATEGORIES_IDS.UNIV3, VAULT_CATEGORIES_IDS.ETH20], - displayName: 'Uniswap V3: ETH-sETH2', + displayName: 'ETH-sETH2', + subLabel: 'Uniswap V3 - StakeWise', apyIconUrls: ['./icons/univ3.png', './icons/reth2.png', './icons/swise.png'], apyTokenSymbols: ['UNI', 'rETH2', 'SWISE'], logoUrl: './icons/univ3-eth-seth2.png', @@ -4647,7 +5007,8 @@ module.exports = { isSingleAssetWithdrawalAllowed: true, chain: CHAINS_ID.ETH_MAINNET, category: VAULT_CATEGORIES_IDS.UNIV3, - displayName: 'Uniswap V3: WBTC-ETH', + displayName: 'WBTC-ETH', + subLabel: 'Uniswap V3', apyIconUrls: ['./icons/univ3.png'], apyTokenSymbols: ['UNI'], logoUrl: './icons/univ3-wbtc-eth.png', @@ -8035,11 +8396,13 @@ module.exports = { }, }, UniV3_DPI_ETH: { + inactive: true, disableAutoSwap: true, testInactive: true, chain: CHAINS_ID.ETH_MAINNET, category: VAULT_CATEGORIES_IDS.INACTIVE, - displayName: 'Uniswap V3: ETH-DPI', + displayName: 'ETH-DPI', + subLabel: 'Uniswap V3', apyIconUrls: [], apyTokenSymbols: [''], logoUrl: './icons/univ3-dpi-eth.png', diff --git a/src/lib/constants.js b/src/lib/constants.js index ac82685b..766b72f0 100644 --- a/src/lib/constants.js +++ b/src/lib/constants.js @@ -66,6 +66,7 @@ const ESTIMATED_APY_TYPES = { MSTABLE: 'MSTABLE', LOOKSRARE_SINGLE_ASSET: 'LOOKSRARE_SINGLE_ASSET', STAKEWISE: 'STAKEWISE', + AURA: 'AURA', } const TRADING_APY_TYPES = { @@ -188,11 +189,16 @@ const BALANCER_SUBGRAPH_URLS = { MATIC: 'https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-polygon-v2', } +const LIDO_API_URLS = { ETH: 'https://eth-api.lido.fi/v1/protocol/steth/apr/sma' } +const ROCKETPOOL_API_URLS = { ETH: 'https://api.rocketpool.net/api/apr' } + const STAKEWISE_API_URLS = { LIQUIDITY: 'https://api.stakewise.io/uniswap-pools/', STAKING: 'https://api.stakewise.io/pool-stats/', } +const QUICKSWAP_GAMMA_ENDPOINT = 'https://wire2.gamma.xyz/quickswap/polygon/' + const DEBUG_MODE = process.env.DEBUG_MODE const WEB3_CALL_COUNT_STATS_KEY = 'web3CallCountStats' @@ -272,6 +278,9 @@ module.exports = { MATIC_RPC_URL, TRADING_APY_TYPES, BALANCER_SUBGRAPH_URLS, + LIDO_API_URLS, + ROCKETPOOL_API_URLS, STAKEWISE_API_URLS, APE_API_URL, + QUICKSWAP_GAMMA_ENDPOINT, } diff --git a/src/lib/third-party/balancer.js b/src/lib/third-party/balancer.js index 42ab14c1..af7b3547 100644 --- a/src/lib/third-party/balancer.js +++ b/src/lib/third-party/balancer.js @@ -30,7 +30,7 @@ const executeBalancerCall = (type, query, networkId) => { }) } -const getPoolInfo = async (poolId, networkId) => { +const getPoolInfo = (poolId, networkId) => { if (networkId == CHAIN_TYPES.ETH) { return getPoolInfoSubgraph(poolId, networkId) } else if (networkId == CHAIN_TYPES.MATIC) { @@ -38,12 +38,37 @@ const getPoolInfo = async (poolId, networkId) => { } } -const getPoolInfoSubgraph = (poolId, networkId) => { - const query = `query { - pools (where: {id: "${poolId}"}) { swapFee totalLiquidity } +const getPoolInfoSubgraph = async (poolId, networkId) => { + const poolQuery = `query { + pools (where: {id: "${poolId}"}) { + totalLiquidity tokensList + tokens (id: "${poolId}") { balance priceRate }} }` - let result = executeBalancerCall('pools[0]', query, networkId) - return result + + const poolInfo = await executeBalancerCall('pools[0]', poolQuery, networkId) + + const tokensList = poolInfo.tokensList + const tokens = poolInfo.tokens + + let tokenValues = {} + await Promise.all( + tokensList.map(async (token, index) => { + const balance = new BigNumber(tokens[index].balance) + const rate = new BigNumber(tokens[index].priceRate) + + const tokenQuery = `query { + token (id: "${token}") { latestUSDPrice} + }` + + const price = new BigNumber( + await executeBalancerCall('token.latestUSDPrice', tokenQuery, networkId), + ) + + tokenValues[token] = balance.times(rate).times(price) + }), + ) + + return { totalLiquidity: poolInfo.totalLiquidity, tokenValues: tokenValues } } const getPoolInfoOnChain = async (poolId, networkId) => { diff --git a/src/lib/third-party/lido.js b/src/lib/third-party/lido.js new file mode 100644 index 00000000..695c771d --- /dev/null +++ b/src/lib/third-party/lido.js @@ -0,0 +1,28 @@ +const { get } = require('lodash') +const { cachedAxios } = require('../db/models/cache') +const { CHAIN_TYPES, LIDO_API_URLS } = require('../constants') + +const get7MAAPRs = networkId => { + let apiURL + if (networkId == CHAIN_TYPES.ETH) { + apiURL = LIDO_API_URLS.ETH + } + + return cachedAxios + .get(apiURL) + .then(response => { + const data = get(response, `data.data.smaApr`) + if (data) { + return data + } else { + console.error(get(response, 'data.errors', response)) + return null + } + }) + .catch(error => { + console.error(`Lido APRs api failed:`, error) + return null + }) +} + +module.exports = { get7MAAPRs } diff --git a/src/lib/third-party/rocket-pool.js b/src/lib/third-party/rocket-pool.js new file mode 100644 index 00000000..67489e85 --- /dev/null +++ b/src/lib/third-party/rocket-pool.js @@ -0,0 +1,28 @@ +const { get } = require('lodash') +const { cachedAxios } = require('../db/models/cache') +const { CHAIN_TYPES, ROCKETPOOL_API_URLS } = require('../constants') + +const getYearlyAPR = networkId => { + let apiURL + if (networkId == CHAIN_TYPES.ETH) { + apiURL = ROCKETPOOL_API_URLS.ETH + } + + return cachedAxios + .get(apiURL) + .then(response => { + const data = get(response, `data.yearlyAPR`) + if (data) { + return data + } else { + console.error(get(response, 'data.errors', response)) + return null + } + }) + .catch(error => { + console.error(`Rocket Pool APRs api failed:`, error) + return null + }) +} + +module.exports = { getYearlyAPR } diff --git a/src/prices/implementations/quickswap-gamma.js b/src/prices/implementations/quickswap-gamma.js new file mode 100644 index 00000000..c62fb560 --- /dev/null +++ b/src/prices/implementations/quickswap-gamma.js @@ -0,0 +1,27 @@ +const axios = require('axios') +const { get } = require('lodash') +const { QUICKSWAP_GAMMA_ENDPOINT } = require('../../lib/constants') +const BigNumber = require('bignumber.js') + +const getPrice = async poolAddress => { + let price = 0, + response + try { + response = await axios.get(`${QUICKSWAP_GAMMA_ENDPOINT}hypervisors/allData`) + const tvlUSD = get(response, `data.${poolAddress.toLowerCase()}.poolTvlUSD`, 0) + let totalSupply = get(response, `data.${poolAddress.toLowerCase()}.totalSupply`, 0) + totalSupply = new BigNumber(totalSupply).dividedBy(new BigNumber(10).pow(18)) + if (totalSupply && totalSupply > 0) { + price = parseFloat(tvlUSD) / totalSupply.toFixed() + } + } catch (e) { + console.error('Gamma API error: ', e) + price = 0 + } + + return price.toString() +} + +module.exports = { + getPrice, +} diff --git a/src/runtime/pollers.js b/src/runtime/pollers.js index d5d729b7..33778f05 100644 --- a/src/runtime/pollers.js +++ b/src/runtime/pollers.js @@ -521,6 +521,122 @@ const getTotalRevenue = async () => { console.log('-- Done getting total revenue --\n') } +const getNanolyData = async () => { + console.log('\n-- Getting Nanoly endpoint data --') + + const vaults = await loadData(Cache, DB_CACHE_IDS.VAULTS) + const pools = await loadData(Cache, DB_CACHE_IDS.POOLS) + const token_stats = await loadData(Cache, DB_CACHE_IDS.STATS) + if (!vaults) { + console.log(`Error getting Nanoly endpoint data due to missing data. Vaults: ${vaults}`) + return + } else if (!pools) { + console.log(`Error getting Nanoly endpoint data due to missing data. Pools: ${pools}`) + return + } + let results = [], + hasErrors + for (let networkId in vaults) { + for (let symbol in vaults[networkId]) { + const vault = vaults[networkId][symbol] + let reward = 0 + let rewards = {} + if (!vault.inactive) { + const pool = pools[networkId].find( + pool => + pool.id === symbol || + (pool.collateralAddress && + pool.collateralAddress.toLowerCase() === vault.vaultAddress.toLowerCase()), + ) + const address = vault.tokenAddress + const tokens = vault.displayName + let base + if (pool && pool.tradingApy) { + base = (Number(vault.estimatedApy) + Number(pool.tradingApy)) / 100 + } else { + base = Number(vault.estimatedApy) / 100 + } + if (pool && vault.id != 'IFARM') { + pool.rewardTokenSymbols.forEach((e, i) => { + e = e === 'miFARM' ? 'iFARM' : e + rewards[e] = Number(pool.rewardAPY[i]) / 100 + reward = reward + Number(pool.rewardAPY[i]) / 100 + }) + } else { + reward = Number(token_stats.tokenStats['historicalAverageProfitSharingAPY']) / 100 + rewards = { + FARM: reward, + } + } + const tvl = Number(vault.totalValueLocked).toFixed(2) + + let result = { + chain: networkId, + tokens, + address, + base, + reward, + rewards, + url: 'https://app.harvest.finance/', + tvl, + active: true, + } + results.push(result) + } + } + } + + //For special vaults + const farmWethPool = pools.eth.find(pool => pool.id === 'farm-weth') + if (farmWethPool) { + const reward = Number(farmWethPool.rewardAPY[0]) / 100 + const rewards = { + FARM: reward, + } + const tvl = Number(farmWethPool.totalValueLocked).toFixed(2) + results.push({ + chain: 'eth', + tokens: 'FARM-ETH', + address: farmWethPool.contractAddress, + base: Number(farmWethPool.tradingApy) / 100, + reward, + rewards, + url: 'https://app.harvest.finance/', + tvl, + active: true, + }) + } + + const farmGrainPool = pools.eth.find(pool => pool.id === 'farm-grain') + if (farmGrainPool) { + const reward = Number(farmGrainPool.rewardAPY[0]) / 100 + const rewards = { + FARM: reward, + } + const tvl = Number(farmGrainPool.totalValueLocked).toFixed(2) + results.push({ + chain: 'eth', + tokens: 'FARM-GRAIN', + address: farmGrainPool.contractAddress, + base: Number(farmGrainPool.tradingApy) / 100, + reward, + rewards, + url: 'https://app.harvest.finance/', + tvl, + active: true, + }) + } + await storeData( + Cache, + DB_CACHE_IDS.STATS, + { + nanolyEndPointData: results, + }, + hasErrors, + ) + console.log('-- Done getting Nanoly endpoint data --\n') +} + const getCmc = async () => { console.log('\n-- Getting CMC data --') const pools = await loadData(Cache, DB_CACHE_IDS.POOLS) @@ -784,6 +900,12 @@ const runUpdateLoop = async () => { updateCallCountCache('cmc') resetCallCount() } + + await getNanolyData() + if (DEBUG_MODE) { + updateCallCountCache('cmc') + resetCallCount() + } } if (DEBUG_MODE) { diff --git a/src/runtime/router/index.js b/src/runtime/router/index.js index f1ace8ac..036ef216 100644 --- a/src/runtime/router/index.js +++ b/src/runtime/router/index.js @@ -195,6 +195,16 @@ const initRouter = app => { }) }), ) + + app.get( + '/nanoly', + asyncWrap(async (req, res) => { + const dbField = 'data.nanolyEndPointData' + const queryResponse = await Cache.findOne({ type: DB_CACHE_IDS.STATS }, { [dbField]: 1 }) + + res.send(get(queryResponse, dbField, {})) + }), + ) } if (ACTIVE_ENDPOINTS === ENDPOINT_TYPES.ALL || ACTIVE_ENDPOINTS === ENDPOINT_TYPES.INTERNAL) { diff --git a/src/vaults/apys/implementations/aura-pools.json b/src/vaults/apys/implementations/aura-pools.json new file mode 100644 index 00000000..b44658ad --- /dev/null +++ b/src/vaults/apys/implementations/aura-pools.json @@ -0,0 +1,72 @@ +[ + { + "id": 0, + "lptoken": "0x616e8BfA43F920657B3497DBf40D6b1A02D4608d", + "rewardPool": "0x00a7ba8ae7bca0b10a32ea1f8e2a1da980c6cad2", + "balancerPoolId": "0x5c6ee304399dbdb9c8ef030ab642b10820db8f56000200000000000000000014", + "name": "auraBAL", + "extras": [ + { + "contract": "0x62D7d772b2d909A0779d15299F4FC87e34513c6d", + "token": "0xA13a9247ea42D743238089903570127DdA72fE44", + "name": "bbaUSD" + } + ] + }, + { + "id": 1, + "lptoken": "0x3dd0843a028c86e0b760b1a76929d1c5ef93a2dd", + "rewardPool": "0xacada51c320947e7ed1a0d0f6b939b0ff465e4c2", + "balancerPoolId": "0x3dd0843a028c86e0b760b1a76929d1c5ef93a2dd000200000000000000000249", + "name": "auraBAL_lp", + "extras": [ + { + "contract": "0xb1BCdf4bce3d5786eb10533D07E4595D1f1BC9c8", + "token": "0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF", + "name": "AURA" + } + ] + }, + { + "id": 2, + "lptoken": "0xa13a9247ea42d743238089903570127dda72fe44", + "rewardPool": "0xfb6b1c1a1ea5618b3cfc20f81a11a97e930fa46b", + "balancerPoolId": "0xa13a9247ea42d743238089903570127dda72fe4400000000000000000000035d", + "name": "bbaUSD" + }, + { + "id": 3, + "lptoken": "0x1e19cf2d73a72ef1332c882f20534b6519be0276", + "rewardPool": "0x001b78cec62dcfdc660e06a91eb1bc966541d758", + "balancerPoolId": "0x1e19cf2d73a72ef1332c882f20534b6519be0276000200000000000000000112", + "name": "rETH" + }, + { + "id": 4, + "lptoken": "0x32296969ef14eb0c6d29669c550d4a0449130230", + "rewardPool": "0xe4683fe8f53da14ca5dac4251eadfb3aa614d528", + "balancerPoolId": "0x32296969ef14eb0c6d29669c550d4a0449130230000200000000000000000080", + "name": "wstETH", + "extras": [ + { + "contract": "0x00F54653e66Baf7ddCD09f6e59206F8906Bfa6eA", + "token": "0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32", + "name": "LDO" + } + ] + }, + { + "id": 5, + "lptoken": "0x25accb7943fd73dda5e23ba6329085a3c24bfb6a", + "rewardPool": "0x8c9e4a04adb0d543b33cab644135bfca523c40c8", + "balancerPoolId": "0x25accb7943fd73dda5e23ba6329085a3c24bfb6a000200000000000000000387", + "name": "wstETH_bbaUSD" + }, + { + "id": 72, + "lptoken": "0x60683B05e9a39E3509D8fdb9C959f23170f8A0fa", + "rewardPool": "0x4d585a29dF0a8E18c26f662C6586ded6703062a8", + "balancerPoolId": "0x60683b05e9a39e3509d8fdb9c959f23170f8a0fa000000000000000000000489", + "name": "bbiUSD" + } +] diff --git a/src/vaults/apys/implementations/aura.js b/src/vaults/apys/implementations/aura.js new file mode 100644 index 00000000..3146b660 --- /dev/null +++ b/src/vaults/apys/implementations/aura.js @@ -0,0 +1,19 @@ +const BigNumber = require('bignumber.js') +const { auraAPR } = require('./aura.utils.js') + +const getApy = async (poolName, profitSharingFactor, networkId = '1') => { + let apy + + try { + apy = new BigNumber(await auraAPR(poolName, networkId)).times(profitSharingFactor) + } catch (err) { + console.error('aura API error: ', err) + apy = new BigNumber(0) + } + + return apy.isNaN() ? '0' : apy.toFixed(2, 1) +} + +module.exports = { + getApy, +} diff --git a/src/vaults/apys/implementations/aura.utils.js b/src/vaults/apys/implementations/aura.utils.js new file mode 100644 index 00000000..5eab235c --- /dev/null +++ b/src/vaults/apys/implementations/aura.utils.js @@ -0,0 +1,157 @@ +const pools = require('./aura-pools.json') + +const BigNumber = require('bignumber.js') + +const { web3 } = require('../../../lib/web3') +const { token, pool } = require('../../../lib/web3/contracts') +const { getTokenPrice } = require('../../../prices/index') +//const getBalancerTokenPrice = require('../../../prices/implementations/balancer.js').getPrice + +//** Constants */ +const BAL_ADDRESS = '0xba100000625a3754423978a60c9317c58a424e3D' +const AURA_ADDRESS = '0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF' + +//// ----------- APRs ----------- //// + +/** APRs */ + +/** + * Calculate APR of each pools + * @param {string} poolName + * @param {string} networkId + * @returns {number} + */ +const auraAPR = (poolName, networkId) => auraAPRWithPrice(poolName, networkId, -1, -1) + +/** + * Calculate APR with token price + * @param {string} poolName + * @param {string} networkId + * @param {number} balPrice + * @param {number} auraPrice + * @returns {number} + */ +const auraAPRWithPrice = async (poolName, networkId, balPrice, auraPrice) => { + const pool = pools.find(pool => pool.name == poolName) + const stakeContract = pool.rewardPool + + // Get Reward Rate. + // The ratio between accumulated reward amount and the elapsed time since the last update. + // uint256 rewardRate = reward.div(duration) + const rate = await rewardRate(stakeContract) + + // Get Virtual Price. + // The current price of the pool LP token relative to the underlying pool assets. + const virtualPrice = await getTokenPrice(pool.lptoken, pool.currency) + + // Get Supply of Underlying Tokens(BPT). + // The supply of all underlying tokens from corresponding Aura Pool. + const supply = await supplyOf(stakeContract) + + // Calculate Pool Total Value Locked. + // The total value locked of a pool. + // Total Supply of Pool Underlying Tokens * Price of Underlying Tokens(BPT). + const tvl = supply * virtualPrice + + // BAL per underlying per second. + const balPerUnderlying = rate / tvl + + // BAL per year. + const balPerYear = balPerUnderlying * 86400 * 365 + if (balPrice <= 0) balPrice = await getTokenPrice(BAL_ADDRESS) + + // AURA per year. + const auraPerYear = await getAuraMintAmount(balPerYear) + if (auraPrice <= 0) auraPrice = await getTokenPrice(AURA_ADDRESS) + + let apr = balPerYear * balPrice + apr += auraPerYear * auraPrice + + if (pool.extras != undefined && pool.extras.length > 0) { + for (const i in pool.extras) { + const ex = pool.extras[i] + const exRate = await rewardRate(ex.contract) + const perUnderlying = exRate / tvl + const perYear = perUnderlying * 86400 * 365 + let price = await getTokenPrice(ex.token) + apr += perYear * price + } + } + + return apr * 100 +} + +/** Util */ + +/** + * Fetch the reward rate of the Aura reward pool + * @param {string} contract + * @returns {number} + */ +const rewardRate = async contract => { + const poolInstance = new web3.eth.Contract(pool.contract.abi, contract) + const fetchedRewardRate = await pool.methods.rewardRate(poolInstance) + + return new BigNumber(fetchedRewardRate).dividedBy(new BigNumber(10).pow(18)).toNumber() +} + +/** + * Fetch the total supply of a token + * @param {string} contract + * @returns {number} + */ +const supplyOf = async contract => { + const tokenInstance = new web3.eth.Contract(token.contract.abi, contract) + + const fetchedTotalSupply = await token.methods.getTotalSupply(tokenInstance) + const totalSupply = new BigNumber(fetchedTotalSupply) + .dividedBy(new BigNumber(10).pow(18)) + .toNumber() + + return totalSupply +} + +/** + * Calculate the mint amount of Aura + * @param {number} balEarned + * @returns {number} + */ +const getAuraMintAmount = async balEarned => { + const reductionPerCliff = 100000 + const totalCliffs = 500 + const initMintSupply = 50000000 + const emissionMaxSupply = 50000000 + const minterMinted = 0 + const totalSupply = await supplyOf(AURA_ADDRESS) + + // e.g. emissionsMinted = 6e25 - 5e25 - 0 = 1e25 + const emissionsMinted = totalSupply - initMintSupply - minterMinted + + // e.g. reductionPerCliff = 5e25 / 500 = 1e23 + // e.g. cliff = 1e25 / 1e23 = 100 + const cliff = emissionsMinted / reductionPerCliff + + // e.g. 100 < 500 + if (cliff < totalCliffs) { + // e.g. (new) reduction = (500 - 100) * 2.5 + 700 = 1700 + // e.g. (new) reduction = (500 - 250) * 2.5 + 700 = 1325 + // e.g. (new) reduction = (500 - 400) * 2.5 + 700 = 950 + const reduction = (totalCliffs - cliff) * 2.5 + 700 + // e.g. (new) amount = 1e19 * 1700 / 500 = 34e18 + // e.g. (new) amount = 1e19 * 1325 / 500 = 26.5e18 + // e.g. (new) amount = 1e19 * 950 / 500 = 19e17 + let amount = (balEarned * reduction) / totalCliffs + + // e.g. amtTillMax = 5e25 - 1e25 = 4e25 + const amtTillMax = emissionMaxSupply - emissionsMinted + if (amount > amtTillMax) { + amount = amtTillMax + } + + return amount + } + + return 0 +} + +module.exports = { auraAPR } diff --git a/src/vaults/apys/implementations/quickswap-gamma.js b/src/vaults/apys/implementations/quickswap-gamma.js new file mode 100644 index 00000000..b8731b2b --- /dev/null +++ b/src/vaults/apys/implementations/quickswap-gamma.js @@ -0,0 +1,26 @@ +const axios = require('axios') +const { get } = require('lodash') +const { QUICKSWAP_GAMMA_ENDPOINT } = require('../../../lib/constants') + +const getApy = async (masterchef, poolAddress, reduction) => { + let response, apy + + try { + response = await axios.get(`${QUICKSWAP_GAMMA_ENDPOINT}allRewards2`) + apy = get( + response, + `data.${masterchef.toLowerCase()}.pools.${poolAddress.toLowerCase()}.apr`, + 0, + ) + apy = parseFloat(apy) * parseFloat(reduction) * 100 + } catch (err) { + console.error('Gamma API error: ', err) + apy = 0 + } + + return apy +} + +module.exports = { + getApy, +} diff --git a/src/vaults/trading-apys/implementations/balancer-boost-info.json b/src/vaults/trading-apys/implementations/balancer-boost-info.json index 62a8626c..1a1c64a9 100644 --- a/src/vaults/trading-apys/implementations/balancer-boost-info.json +++ b/src/vaults/trading-apys/implementations/balancer-boost-info.json @@ -1,60 +1,78 @@ { - "0x48e6B98ef6329f8f0A30eBB8c7C960330d648085":{ - "boostedUnderlyings":[ - "0x178E029173417b1F9C8bC16DCeC6f697bC323746", - "0xF93579002DBE8046c43FEfE86ec78b1112247BB8", - "0xFf4ce5AAAb5a627bf82f4A571AB1cE94Aa365eA6" - ], - "boostTypes":[ - "Aave", - "Aave", - "Aave" - ], - "aaveTags":[ - "AMDAI", - "AMUSDC", - "AMUSDT" - ], - "poolId": "0x48e6b98ef6329f8f0a30ebb8c7c960330d64808500000000000000000000075b" - }, - "0xB797AdfB7b268faeaA90CAdBfEd464C76ee599Cd":{ - "boostedUnderlyings":[ - "0x3d468AB2329F296e1b9d8476Bb54Dd77D8c2320f", - "0x7fC9E0Aa043787BFad28e29632AdA302C790Ce33" - ], - "boostTypes":[ - "balLP", - "balLP" - ], - "poolId": "0xb797adfb7b268faeaa90cadbfed464c76ee599cd0002000000000000000005ba" - }, - "0x4A0b73f0D13fF6d43e304a174697e3d5CFd310a4":{ - "boostedUnderlyings":[ - "0x48e6B98ef6329f8f0A30eBB8c7C960330d648085", - "0xE22483774bd8611bE2Ad2F4194078DaC9159F4bA" - ], - "boostTypes":[ - "balLP", - "balLP" - ], - "poolId": "0x4a0b73f0d13ff6d43e304a174697e3d5cfd310a400020000000000000000091c" - }, - "0x8159462d255C1D24915CB51ec361F700174cD994":{ - "boostedUnderlyings":[ - "0x3A58a54C066FdC0f2D55FC9C89F0415C92eBf3C4" - ], - "boostTypes":[ - "stakedMatic" - ], - "poolId": "0x8159462d255c1d24915cb51ec361f700174cd99400000000000000000000075d" - }, - "0xb20fC01D21A50d2C734C4a1262B4404d41fA7BF0":{ - "boostedUnderlyings":[ - "0xfa68FB4628DFF1028CFEc22b4162FCcd0d45efb6" - ], - "boostTypes":[ - "stakedMatic" - ], - "poolId": "0xb20fc01d21a50d2c734c4a1262b4404d41fa7bf000000000000000000000075c" - } + "0x48e6B98ef6329f8f0A30eBB8c7C960330d648085": { + "boostedUnderlyings": [ + "0x178E029173417b1F9C8bC16DCeC6f697bC323746", + "0xF93579002DBE8046c43FEfE86ec78b1112247BB8", + "0xFf4ce5AAAb5a627bf82f4A571AB1cE94Aa365eA6" + ], + "boostTypes": ["Aave", "Aave", "Aave"], + "aaveTags": ["AMDAI", "AMUSDC", "AMUSDT"], + "poolId": "0x48e6b98ef6329f8f0a30ebb8c7c960330d64808500000000000000000000075b" + }, + "0xB797AdfB7b268faeaA90CAdBfEd464C76ee599Cd": { + "boostedUnderlyings": [ + "0x3d468AB2329F296e1b9d8476Bb54Dd77D8c2320f", + "0x7fC9E0Aa043787BFad28e29632AdA302C790Ce33" + ], + "boostTypes": ["balLP", "balLP"], + "poolId": "0xb797adfb7b268faeaa90cadbfed464c76ee599cd0002000000000000000005ba" + }, + "0x4A0b73f0D13fF6d43e304a174697e3d5CFd310a4": { + "boostedUnderlyings": [ + "0x48e6B98ef6329f8f0A30eBB8c7C960330d648085", + "0xE22483774bd8611bE2Ad2F4194078DaC9159F4bA" + ], + "boostTypes": ["balLP", "balLP"], + "poolId": "0x4a0b73f0d13ff6d43e304a174697e3d5cfd310a400020000000000000000091c" + }, + "0x8159462d255C1D24915CB51ec361F700174cD994": { + "boostedUnderlyings": ["0x3A58a54C066FdC0f2D55FC9C89F0415C92eBf3C4"], + "boostTypes": ["stakedMatic"], + "poolId": "0x8159462d255c1d24915cb51ec361f700174cd99400000000000000000000075d" + }, + "0xb20fC01D21A50d2C734C4a1262B4404d41fA7BF0": { + "boostedUnderlyings": ["0xfa68FB4628DFF1028CFEc22b4162FCcd0d45efb6"], + "boostTypes": ["stakedMatic"], + "poolId": "0xb20fc01d21a50d2c734c4a1262b4404d41fa7bf000000000000000000000075c" + }, + "0x3dd0843A028C86e0b760b1A76929d1C5Ef93a2dd": { + "boostedUnderlyings": ["0x616e8BfA43F920657B3497DBf40D6b1A02D4608d"], + "boostTypes": ["balLP"], + "poolId": "0x3dd0843a028c86e0b760b1a76929d1c5ef93a2dd000200000000000000000249" + }, + "0xA13a9247ea42D743238089903570127DdA72fE44": { + "boostedUnderlyings": [ + "0x2F4eb100552ef93840d5aDC30560E5513DFfFACb", + "0x82698aeCc9E28e9Bb27608Bd52cF57f704BD1B83", + "0xae37D54Ae477268B9997d4161B96b8200755935c" + ], + "boostTypes": ["Aave", "Aave", "Aave"], + "aaveTags": ["AUSDT", "AUSDC", "ADAI"], + "poolId": "0xa13a9247ea42d743238089903570127dda72fe4400000000000000000000035d" + }, + "0x1E19CF2D73a72Ef1332C882F20534B6519Be0276": { + "boostedUnderlyings": ["0xae78736Cd615f374D3085123A210448E74Fc6393"], + "boostTypes": ["stakedEth"], + "poolId": "0x1e19cf2d73a72ef1332c882f20534b6519be0276000200000000000000000112" + }, + "0x32296969Ef14EB0c6d29669C550D4a0449130230": { + "boostedUnderlyings": ["0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0"], + "boostTypes": ["stakedEth"], + "poolId": "0x32296969ef14eb0c6d29669c550d4a0449130230000200000000000000000080" + }, + "0x60683B05e9a39E3509D8fdb9C959f23170f8A0fa": { + "boostedUnderlyings": [ + "0x2FF1A9Dbdacd55297452cFD8a4d94724Bc22a5F7", + "0xbc0F2372008005471874e426e86CCFae7B4De79d", + "0xDbA274B4D04097b90A72b62467d828cEFD708037" + ], + "boostTypes": ["Idle", "Idle", "Idle"], + "symbols": ["USDT", "USDC", "DAI"], + "idleTokens": [ + "0xF34842d05A1c888Ca02769A633DF37177415C2f8", + "0x5274891bEC421B39D23760c04A6755eCB444797C", + "0x3fe7940616e5bc47b0775a0dccf6237893353bb4" + ], + "poolId": "0x60683b05e9a39e3509d8fdb9c959f23170f8a0fa000000000000000000000489" + } } diff --git a/src/vaults/trading-apys/implementations/balancer-boost.js b/src/vaults/trading-apys/implementations/balancer-boost.js index b8be9d65..183e6611 100644 --- a/src/vaults/trading-apys/implementations/balancer-boost.js +++ b/src/vaults/trading-apys/implementations/balancer-boost.js @@ -3,6 +3,9 @@ const { getPoolInfo } = require('../../../lib/third-party/balancer') const { getAaveV2Market } = require('../../../lib/third-party/aave') const boostInfo = require('./balancer-boost-info.json') const { executeTradingApyFunction } = require('../index.js') +const { get7MAAPRs } = require('../../../lib/third-party/lido') +const { getYearlyAPR } = require('../../../lib/third-party/rocket-pool') +const { getApy: getIdleApy } = require('../../apys/implementations/idle-finance') const getBoostAPY = async (poolAddress, networkId) => { const poolBoostInfo = boostInfo[poolAddress] @@ -17,15 +20,21 @@ const getBoostAPY = async (poolAddress, networkId) => { let apy = new BigNumber(0) for (let i = 0; i < tokens.length; i++) { const token = tokens[i] - const tokenWeight = tokenValues[token].div(tvl) + const tokenWeight = tokenValues[token] + ? tokenValues[token].div(tvl) + : tokenValues[token.toLowerCase()].div(tvl) let partApy if (types[i] == 'Aave') { partApy = await getAaveApy(poolBoostInfo.aaveTags[i]) + } else if (types[i] == 'Idle') { + partApy = await getIdleApy(poolBoostInfo.symbols[i], poolBoostInfo.idleTokens[i], 1) } else if (types[i] == 'balLP') { partApy = await getLPApy(token, networkId) } else if (types[i] == 'stakedMatic') { partApy = await getStakedMaticApy(token) + } else if (types[i] == 'stakedEth') { + partApy = (await getStakedEthApy(token, networkId)) / 2 } else { console.error(`Balancer boost type: ${types[i]} not recognized`) continue @@ -57,6 +66,14 @@ const getAaveApy = async tokenId => { return new BigNumber(aavePool[0].liquidityRate).times(100) } +const getStakedEthApy = async (token, networkId) => { + if (token == '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0') { + return await get7MAAPRs(networkId) + } else if (token == '0xae78736Cd615f374D3085123A210448E74Fc6393') { + return await getYearlyAPR(networkId) + } +} + const getStakedMaticApy = async token => { if (token == '0xfa68FB4628DFF1028CFEc22b4162FCcd0d45efb6') { return 5.76 diff --git a/src/vaults/trading-apys/implementations/quickswap-gamma.js b/src/vaults/trading-apys/implementations/quickswap-gamma.js new file mode 100644 index 00000000..8446f56a --- /dev/null +++ b/src/vaults/trading-apys/implementations/quickswap-gamma.js @@ -0,0 +1,22 @@ +const axios = require('axios') +const { get } = require('lodash') +const { QUICKSWAP_GAMMA_ENDPOINT } = require('../../../lib/constants') + +const getTradingApy = async poolAddress => { + let response, apy + + try { + response = await axios.get(`${QUICKSWAP_GAMMA_ENDPOINT}hypervisors/allData`) + apy = get(response, `data.${poolAddress.toLowerCase()}.returns.daily.feeApr`, 0) + apy = parseFloat(apy) * 100 + } catch (err) { + console.error('Gamma API error: ', err) + apy = 0 + } + + return apy.toFixed(2) +} + +module.exports = { + getTradingApy, +} diff --git a/test/integration/happy-path.js b/test/integration/happy-path.js index a42bd707..cb1b50b6 100644 --- a/test/integration/happy-path.js +++ b/test/integration/happy-path.js @@ -88,6 +88,16 @@ describe('Happy Paths', function () { }) describe('External ACTIVE_ENDPOINTS', () => { + it('queries /nanoly', () => { + return request(`http://localhost:${testPort}`) + .get(`/nanoly?key=${harvestKey}`) + .expect('Content-Type', /json/) + .expect(200) + .then(res => { + assert.equal(Object.keys(res.body).length, activeVaultsJsonArray.length + 3) // response must contain all active vaults + 3 special pools: iFARM, FARM/ETH, FARM/GRAIN + }) + }) + it('queries /token-stats', () => { return request(`http://localhost:${testPort}`) .get(`/token-stats?key=${harvestKey}`)