|
1 | 1 | const utils = require('../utils');
|
2 | 2 | const superagent = require('superagent');
|
3 | 3 |
|
4 |
| -const AUTH_TOKEN_ENCODED = |
5 |
| - 'ZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SmpiR2xsYm5SSlpDSTZJa0Z3Y0RZaUxDSnBZWFFpT2pFMk56QXlNemMxTWpkOS5rbnNtekVOSm40Yk5Ea0ZCM3h2eWZyaDBwVlFLTHY0NW9JanJQNHdRTU5N'; |
6 |
| - |
7 |
| -const mainnetPoolsUrl = 'https://api.idle.finance/pools'; |
8 |
| -// const polygonPoolsUrl = 'https://api-polygon.idle.finance/pools'; |
9 |
| - |
10 | 4 | const chains = {
|
11 |
| - eth: 'ethereum', |
12 |
| - // matic: 'polygon', |
| 5 | + ethereum: 'https://api.idle.finance/pools', |
| 6 | + polygon: 'https://api-polygon.idle.finance/pools', |
| 7 | + optimism: 'https://api-optimism.idle.finance/pools', |
| 8 | + polygon_zkevm: 'https://api-zkevm.idle.finance/pools', |
13 | 9 | };
|
14 | 10 |
|
| 11 | +const AUTH_TOKEN_ENCODED = 'ZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SmpiR2xsYm5SSlpDSTZJa0Z3Y0RZaUxDSnBZWFFpT2pFMk56QXlNemMxTWpkOS5rbnNtekVOSm40Yk5Ea0ZCM3h2eWZyaDBwVlFLTHY0NW9JanJQNHdRTU5N'; |
| 12 | + |
15 | 13 | async function getDataWithAuth(url, token) {
|
16 | 14 | const data = await superagent
|
17 | 15 | .get(url)
|
18 | 16 | .set('Authorization', `Bearer ${token}`);
|
19 | 17 | return data?.body;
|
20 | 18 | }
|
21 | 19 |
|
22 |
| -async function apy() { |
| 20 | +const getApy = async () => { |
23 | 21 | const AUTH_TOKEN_DECODED = atob(AUTH_TOKEN_ENCODED);
|
24 |
| - const mainnetPoolsResponse = await getDataWithAuth( |
25 |
| - mainnetPoolsUrl, |
26 |
| - AUTH_TOKEN_DECODED |
| 22 | + const data = await Promise.all( |
| 23 | + Object.entries(chains).map(async (chain) => { |
| 24 | + const data = await getDataWithAuth(chain[1], AUTH_TOKEN_DECODED); |
| 25 | + return data.map((v) => { |
| 26 | + let protocolName = v.protocolName; |
| 27 | + if (v.borrowerName){ |
| 28 | + protocolName += ` ${v.borrowerName}` |
| 29 | + } |
| 30 | + return { |
| 31 | + pool: v.address, |
| 32 | + apyBase: Number(v.apr), |
| 33 | + symbol: v.tokenName, |
| 34 | + poolMeta: v.poolName.includes('Best') |
| 35 | + ? v.poolName.split(' ').slice(1).join(' ') |
| 36 | + : `${protocolName} ${v.strategy}`, |
| 37 | + tvlUsd: Number(v.tvl), |
| 38 | + project: 'idle', |
| 39 | + chain: utils.formatChain(chain[0]), |
| 40 | + underlyingTokens: [v.underlyingAddress], |
| 41 | + } |
| 42 | + }); |
| 43 | + }) |
27 | 44 | );
|
28 | 45 |
|
29 |
| - // console.log('mainnetPoolsResponse', mainnetPoolsResponse) |
30 |
| - // const polygonPoolsResponse = await utils.getData(polygonPoolsUrl); |
31 |
| - |
32 |
| - const poolsResponse = { |
33 |
| - // matic: polygonPoolsResponse, |
34 |
| - eth: mainnetPoolsResponse, |
35 |
| - }; |
36 |
| - |
37 |
| - let allVaults = []; |
38 |
| - |
39 |
| - for (let chain of Object.keys(chains)) { |
40 |
| - const chainPools = Object.values(poolsResponse[chain]); |
41 |
| - |
42 |
| - const pools = chainPools.map((v) => ({ |
43 |
| - pool: v.address, |
44 |
| - apyBase: Number(v.apr), |
45 |
| - symbol: v.tokenName, |
46 |
| - poolMeta: v.poolName.includes('Best') |
47 |
| - ? v.poolName.split(' ').slice(1).join(' ') |
48 |
| - : v.strategy, |
49 |
| - tvlUsd: Number(v.tvl), |
50 |
| - project: 'idle', |
51 |
| - chain: utils.formatChain(chains[chain]), |
52 |
| - underlyingTokens: [v.underlyingAddress], |
53 |
| - })); |
54 |
| - |
55 |
| - allVaults = [...allVaults, ...pools]; |
56 |
| - } |
57 |
| - |
58 |
| - return allVaults; |
59 |
| -} |
60 |
| - |
61 |
| -const main = async () => { |
62 |
| - return await apy(); |
| 46 | + return ( |
| 47 | + data |
| 48 | + .flat() |
| 49 | + ); |
63 | 50 | };
|
64 | 51 |
|
65 | 52 | module.exports = {
|
66 |
| - apy: main, |
67 | 53 | timetravel: false,
|
68 |
| - url: 'https://app.idle.finance/#/best', |
| 54 | + apy: getApy, |
| 55 | + url: 'https://app.idle.finance/' |
69 | 56 | };
|
0 commit comments