|
| 1 | +const utils = require('../utils'); |
| 2 | +const sdk = require('@defillama/sdk'); |
| 3 | +const ethers = require('ethers'); |
| 4 | +const { config } = require('./config'); |
| 5 | +const BigNumber = require('bignumber.js'); |
| 6 | + |
| 7 | +// function getEstimatedAPR is misleading, it returns the estimated APY |
| 8 | +const getEstimatedAPR = |
| 9 | + 'function estimatedAPR() external view returns (uint256)'; |
| 10 | +const getTotalAssets = 'function totalAssets() external view returns (uint256)'; |
| 11 | + |
| 12 | +const getsUSDrData = async (chain, chainConfig) => { |
| 13 | + const { chainName, USDr, sUSDr } = chainConfig; |
| 14 | + let estimatedAPY; |
| 15 | + let totalAssets; |
| 16 | + const api = new sdk.ChainApi({ chain }); |
| 17 | + [estimatedAPY, totalAssets] = await Promise.all([ |
| 18 | + api.call({ |
| 19 | + abi: getEstimatedAPR, |
| 20 | + target: sUSDr, |
| 21 | + }), |
| 22 | + api.call({ |
| 23 | + abi: getTotalAssets, |
| 24 | + target: sUSDr, |
| 25 | + }), |
| 26 | + ]); |
| 27 | + |
| 28 | + const tvlUsd = new BigNumber( |
| 29 | + ethers.utils.formatUnits(totalAssets, 18) |
| 30 | + ).toNumber(); |
| 31 | + const apyBase = new BigNumber( |
| 32 | + ethers.utils.formatUnits(estimatedAPY, 16) |
| 33 | + ).toNumber(); |
| 34 | + |
| 35 | + return { |
| 36 | + pool: `${sUSDr}-rocky`.toLowerCase(), |
| 37 | + chain: utils.formatChain(chainName), |
| 38 | + project: 'rocky', |
| 39 | + symbol: 'sUSDr', |
| 40 | + tvlUsd: tvlUsd, |
| 41 | + apyBase: apyBase, |
| 42 | + rewardTokens: [USDr], |
| 43 | + underlyingTokens: [USDr], |
| 44 | + poolMeta: 'saving', |
| 45 | + }; |
| 46 | +}; |
| 47 | + |
| 48 | +const main = async () => { |
| 49 | + const markets = []; |
| 50 | + for (let [chain, data] of Object.entries(config)) { |
| 51 | + const result = await getsUSDrData(chain, data); |
| 52 | + markets.push(result); |
| 53 | + } |
| 54 | + return markets; |
| 55 | +}; |
| 56 | + |
| 57 | +module.exports = { |
| 58 | + timetravel: false, |
| 59 | + apy: main, |
| 60 | + url: 'https://app.rocky.cash/earn', |
| 61 | +}; |
0 commit comments