From 8c8eb2a0c66670690c373eea4e287bdee8fec52f Mon Sep 17 00:00:00 2001 From: William Liu Date: Sun, 19 Feb 2023 18:23:50 +0000 Subject: [PATCH 1/5] add quickswap gamma pools --- data/constants.js | 3 + data/icons/dquick.png | Bin 0 -> 10699 bytes data/icons/usdc_weth.png | Bin 0 -> 9555 bytes data/icons/wmatic_eth.png | Bin 0 -> 5341 bytes data/icons/wmatic_usdc.png | Bin 0 -> 7141 bytes data/mainnet/addresses.json | 42 ++++ data/mainnet/pools.js | 198 ++++++++++++++++++ data/mainnet/tokens.js | 168 +++++++++++++++ src/lib/constants.js | 3 + src/prices/implementations/quickswap-gamma.js | 27 +++ .../apys/implementations/quickswap-gamma.js | 23 ++ .../implementations/quickswap-gamma.js | 22 ++ 12 files changed, 486 insertions(+) create mode 100644 data/icons/dquick.png create mode 100644 data/icons/usdc_weth.png create mode 100644 data/icons/wmatic_eth.png create mode 100644 data/icons/wmatic_usdc.png create mode 100644 src/prices/implementations/quickswap-gamma.js create mode 100644 src/vaults/apys/implementations/quickswap-gamma.js create mode 100644 src/vaults/trading-apys/implementations/quickswap-gamma.js diff --git a/data/constants.js b/data/constants.js index ed5f7686..6c888a24 100644 --- a/data/constants.js +++ b/data/constants.js @@ -115,6 +115,7 @@ const GET_PRICE_TYPES = { NOTIONAL: 'NOTIONAL', MESHSWAP_PAIR: 'MESHSWAP_PAIR', WRAPPED_TOKEN: 'WRAPPED_TOKEN', + QUICKSWAP_GAMMA: 'QUICKSWAP_GAMMA', } const ESTIMATED_APY_TYPES = { @@ -158,6 +159,7 @@ const ESTIMATED_APY_TYPES = { APE: 'APE', MESHSWAP: 'MESHSWAP', APE_STAKE: 'APE_STAKE', + QUICKSWAP_GAMMA: 'QUICKSWAP_GAMMA', } const COLLATERAL_TYPE = { @@ -196,6 +198,7 @@ const TRADING_APY_TYPES = { MSTABLE: 'MSTABLE', LOOKS: 'LOOKS', APE: 'APE', + QUICKSWAP_GAMMA: 'QUICKSWAP_GAMMA', } const POOL_TYPES = { diff --git a/data/icons/dquick.png b/data/icons/dquick.png new file mode 100644 index 0000000000000000000000000000000000000000..05691e15ea1360db2520bd5db495624a5b18e42c GIT binary patch literal 10699 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 literal 0 HcmV?d00001 diff --git a/data/icons/usdc_weth.png b/data/icons/usdc_weth.png new file mode 100644 index 0000000000000000000000000000000000000000..9b303ff347aee7cab030012926688acd7d90ed6c GIT binary patch literal 9555 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 literal 0 HcmV?d00001 diff --git a/data/icons/wmatic_eth.png b/data/icons/wmatic_eth.png new file mode 100644 index 0000000000000000000000000000000000000000..33e97824c3b590a4a5a840eb7c155f919cb21d1b GIT binary patch literal 5341 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 literal 0 HcmV?d00001 diff --git a/data/icons/wmatic_usdc.png b/data/icons/wmatic_usdc.png new file mode 100644 index 0000000000000000000000000000000000000000..7d16c598cbcad873f7b4b05fe6ee80da9da1ac7c GIT binary patch literal 7141 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 bQO17*y^rDJl~7iK00000NkvXXu0mjfggycW literal 0 HcmV?d00001 diff --git a/data/mainnet/addresses.json b/data/mainnet/addresses.json index a71fa57f..6a1adef0 100644 --- a/data/mainnet/addresses.json +++ b/data/mainnet/addresses.json @@ -2447,6 +2447,48 @@ "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" } } } diff --git a/data/mainnet/pools.js b/data/mainnet/pools.js index 9dab9883..6dde7843 100644 --- a/data/mainnet/pools.js +++ b/data/mainnet/pools.js @@ -4,6 +4,204 @@ const addresses = require('./addresses.json') const strat30PercentFactor = '0.7' module.exports = [ + { + 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', 'WMATIC', 'dQUICK'], + 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', 'WMATIC', 'dQUICK'], + 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', 'WMATIC', 'dQUICK'], + 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', 'WMATIC', 'dQUICK'], + 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', 'WMATIC', 'dQUICK'], + 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', 'WMATIC', 'dQUICK'], + 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', diff --git a/data/mainnet/tokens.js b/data/mainnet/tokens.js index e813e13e..6bd37eb8 100644 --- a/data/mainnet/tokens.js +++ b/data/mainnet/tokens.js @@ -45,6 +45,174 @@ module.exports = { ], cmcRewardTokenSymbols: ['FARM', 'WETH'], }, + 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: '', diff --git a/src/lib/constants.js b/src/lib/constants.js index 442f7e52..77fc83a5 100644 --- a/src/lib/constants.js +++ b/src/lib/constants.js @@ -193,6 +193,8 @@ const STAKEWISE_API_URLS = { STAKING: 'https://api.stakewise.io/pool-stats/', } +const QUICKSWAP_GAMMA_ENDPOINT = 'https://wire.gamma.xyz/quickswap/polygon/' + const DEBUG_MODE = process.env.DEBUG_MODE const WEB3_CALL_COUNT_STATS_KEY = 'web3CallCountStats' @@ -274,4 +276,5 @@ module.exports = { BALANCER_SUBGRAPH_URLS, STAKEWISE_API_URLS, APE_API_URL, + QUICKSWAP_GAMMA_ENDPOINT, } diff --git a/src/prices/implementations/quickswap-gamma.js b/src/prices/implementations/quickswap-gamma.js new file mode 100644 index 00000000..952b8224 --- /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(2, 1) + } + } catch (e) { + console.error('Gamma API error: ', e) + price = 0 + } + + return price.toString() +} + +module.exports = { + getPrice, +} diff --git a/src/vaults/apys/implementations/quickswap-gamma.js b/src/vaults/apys/implementations/quickswap-gamma.js new file mode 100644 index 00000000..9335537e --- /dev/null +++ b/src/vaults/apys/implementations/quickswap-gamma.js @@ -0,0 +1,23 @@ +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/quickswap-gamma.js b/src/vaults/trading-apys/implementations/quickswap-gamma.js new file mode 100644 index 00000000..106268a8 --- /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, +} From 3cd20ae3f7ad4f80ff518fe753f099913b8a7921 Mon Sep 17 00:00:00 2001 From: William Liu Date: Mon, 20 Feb 2023 12:18:37 +0000 Subject: [PATCH 2/5] fix some issues commented --- data/mainnet/pools.js | 24 +++++++++---------- src/prices/implementations/quickswap-gamma.js | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/data/mainnet/pools.js b/data/mainnet/pools.js index 6dde7843..5a77d619 100644 --- a/data/mainnet/pools.js +++ b/data/mainnet/pools.js @@ -17,14 +17,14 @@ module.exports = [ rewardAPY: [], rewardAPR: null, rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC', 'dQUICK'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
Deposit and stake:
  1. Go to  - + gamma and invest WMATIC and/or WETH @@ -50,14 +50,14 @@ module.exports = [ rewardAPY: [], rewardAPR: null, rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC', 'dQUICK'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
    Deposit and stake:
    1. Go to  - + gamma and invest WMATIC and/or WETH @@ -83,14 +83,14 @@ module.exports = [ rewardAPY: [], rewardAPR: null, rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC', 'dQUICK'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
      Deposit and stake:
      1. Go to  - + gamma and invest WMATIC and/or USDC @@ -116,14 +116,14 @@ module.exports = [ rewardAPY: [], rewardAPR: null, rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC', 'dQUICK'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
        Deposit and stake:
        1. Go to  - + gamma and invest WMATIC and/or USDC @@ -149,14 +149,14 @@ module.exports = [ rewardAPY: [], rewardAPR: null, rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC', 'dQUICK'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
          Deposit and stake:
          1. Go to  - + gamma and invest USDC and/or WETH @@ -182,14 +182,14 @@ module.exports = [ rewardAPY: [], rewardAPR: null, rewardTokens: [addresses.MATIC.miFARM], - rewardTokenSymbols: ['miFARM', 'WMATIC', 'dQUICK'], + rewardTokenSymbols: ['miFARM'], stakeAndDepositHelpMessage: `
            Deposit and stake:
            1. Go to  - + gamma and invest USDC and/or WETH diff --git a/src/prices/implementations/quickswap-gamma.js b/src/prices/implementations/quickswap-gamma.js index 952b8224..f5a05b87 100644 --- a/src/prices/implementations/quickswap-gamma.js +++ b/src/prices/implementations/quickswap-gamma.js @@ -12,7 +12,7 @@ const getPrice = async poolAddress => { 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(2, 1) + price = parseFloat(tvlUSD) / totalSupply.toFixed(2) } } catch (e) { console.error('Gamma API error: ', e) From bfe26f8717dd4e8544e4f4fb58c39d1518e9ca9a Mon Sep 17 00:00:00 2001 From: William Liu Date: Mon, 20 Feb 2023 14:17:56 +0000 Subject: [PATCH 3/5] remove rounding decimals --- src/prices/implementations/quickswap-gamma.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/prices/implementations/quickswap-gamma.js b/src/prices/implementations/quickswap-gamma.js index f5a05b87..e630f934 100644 --- a/src/prices/implementations/quickswap-gamma.js +++ b/src/prices/implementations/quickswap-gamma.js @@ -12,7 +12,7 @@ const getPrice = async poolAddress => { 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(2) + price = parseFloat(tvlUSD) / totalSupply.toFixed() } } catch (e) { console.error('Gamma API error: ', e) From 3012d7da7587859326ecdb1e7bc5b5790e50d5e5 Mon Sep 17 00:00:00 2001 From: William Liu Date: Mon, 20 Feb 2023 16:10:04 +0000 Subject: [PATCH 4/5] update gamma url --- src/lib/constants.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/constants.js b/src/lib/constants.js index 77fc83a5..7c1a9164 100644 --- a/src/lib/constants.js +++ b/src/lib/constants.js @@ -193,7 +193,7 @@ const STAKEWISE_API_URLS = { STAKING: 'https://api.stakewise.io/pool-stats/', } -const QUICKSWAP_GAMMA_ENDPOINT = 'https://wire.gamma.xyz/quickswap/polygon/' +const QUICKSWAP_GAMMA_ENDPOINT = 'https://wire2.gamma.xyz/quickswap/polygon/' const DEBUG_MODE = process.env.DEBUG_MODE From 423fbbeba3aa329e9cf8a5dd319233c4f232ea6c Mon Sep 17 00:00:00 2001 From: William Liu Date: Mon, 20 Feb 2023 21:27:39 +0000 Subject: [PATCH 5/5] lint fix --- src/prices/implementations/quickswap-gamma.js | 31 ++++++++++--------- .../apys/implementations/quickswap-gamma.js | 27 +++++++++------- .../implementations/quickswap-gamma.js | 22 ++++++------- 3 files changed, 42 insertions(+), 38 deletions(-) diff --git a/src/prices/implementations/quickswap-gamma.js b/src/prices/implementations/quickswap-gamma.js index e630f934..fecd9c13 100644 --- a/src/prices/implementations/quickswap-gamma.js +++ b/src/prices/implementations/quickswap-gamma.js @@ -4,24 +4,25 @@ 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 + let price = 0, + response + try { + response = await axios.get(`${QUICKSWAP_GAMMA_ENDPOINT}hypervisors/allData`) + console.log('response: ', response) + 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() + return price.toString() } module.exports = { - getPrice, + getPrice, } diff --git a/src/vaults/apys/implementations/quickswap-gamma.js b/src/vaults/apys/implementations/quickswap-gamma.js index 9335537e..b8731b2b 100644 --- a/src/vaults/apys/implementations/quickswap-gamma.js +++ b/src/vaults/apys/implementations/quickswap-gamma.js @@ -3,21 +3,24 @@ const { get } = require('lodash') const { QUICKSWAP_GAMMA_ENDPOINT } = require('../../../lib/constants') const getApy = async (masterchef, poolAddress, reduction) => { - let response, apy + 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 + 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 + } - } catch (err) { - console.error('Gamma API error: ', err) - apy = 0 - } - - return apy + return apy } module.exports = { - getApy, + getApy, } diff --git a/src/vaults/trading-apys/implementations/quickswap-gamma.js b/src/vaults/trading-apys/implementations/quickswap-gamma.js index 106268a8..8446f56a 100644 --- a/src/vaults/trading-apys/implementations/quickswap-gamma.js +++ b/src/vaults/trading-apys/implementations/quickswap-gamma.js @@ -3,20 +3,20 @@ const { get } = require('lodash') const { QUICKSWAP_GAMMA_ENDPOINT } = require('../../../lib/constants') const getTradingApy = async poolAddress => { - let response, apy + 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 - } + 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) + return apy.toFixed(2) } module.exports = { - getTradingApy, + getTradingApy, }