@stake-dao/reader 0.5.19 → 0.5.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -35,13 +35,13 @@ export const fetchLockers = async ({ provider, prices }) => {
35
35
  const parsed = await Promise.all([
36
36
  curveLocker({ provider: provider[mainnet.id], common, prices }),
37
37
  yieldbasisLocker({ provider: provider[mainnet.id], common, prices }),
38
+ balancerLocker({ provider: provider[mainnet.id], common, prices }),
38
39
  pendleLocker({ provider: provider[mainnet.id], common, prices }),
39
40
  fxnLocker({ provider: provider[mainnet.id], common, prices }),
41
+ fraxFxsLocker({ provider: provider[fraxtal.id], common, prices }),
42
+ spectraLocker({ provider: provider[base.id], common, prices }),
40
43
  yearnLocker({ provider: provider[mainnet.id], common, prices }),
41
44
  yieldnestLocker({ provider: provider[mainnet.id], common, prices }),
42
- balancerLocker({ provider: provider[mainnet.id], common, prices }),
43
- spectraLocker({ provider: provider[base.id], common, prices }),
44
- fraxFxsLocker({ provider: provider[fraxtal.id], common, prices }),
45
45
  zerolendLocker({ provider: provider[linea.id], common, prices }),
46
46
  maverickLocker({ provider: provider[mainnet.id], common, prices }),
47
47
  blackpoolLocker({ provider: provider[mainnet.id], common, prices }),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lockers/fetch/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lockers/fetch/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AAClC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAA;AACjE,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAE7D,OAAO,WAAW,MAAM,sBAAsB,CAAA;AAC9C,OAAO,cAAc,MAAM,yBAAyB,CAAA;AACpD,OAAO,eAAe,MAAM,0BAA0B,CAAA;AACtD,OAAO,WAAW,MAAM,sBAAsB,CAAA;AAC9C,OAAO,cAAc,MAAM,0BAA0B,CAAA;AACrD,OAAO,aAAa,MAAM,yBAAyB,CAAA;AACnD,OAAO,SAAS,MAAM,oBAAoB,CAAA;AAC1C,OAAO,cAAc,MAAM,yBAAyB,CAAA;AACpD,OAAO,iBAAiB,MAAM,4BAA4B,CAAA;AAC1D,OAAO,YAAY,MAAM,uBAAuB,CAAA;AAChD,OAAO,aAAa,MAAM,wBAAwB,CAAA;AAClD,OAAO,WAAW,MAAM,sBAAsB,CAAA;AAC9C,OAAO,gBAAgB,MAAM,2BAA2B,CAAA;AACxD,OAAO,eAAe,MAAM,0BAA0B,CAAA;AACtD,OAAO,cAAc,MAAM,yBAAyB,CAAA;AAOpD,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAiB,EAAE,EAAE;IACxE,MAAM,CAAC,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC/F,qBAAqB;QACrB,mBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACzC,eAAe;QACf,KAAK,CAAC,GAAG,4BAA4B,4BAA4B,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC5F,qBAAqB;QACrB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CACjG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CACtB;QACD,sBAAsB;QACtB,KAAK,CAAC,yCAAyC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC1E,KAAK,CAAC,kDAAkD,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;KACpF,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,EAAE,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,EAAE,CAAA;IAErE,oBAAoB;IACpB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC/B,WAAW,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAC/D,gBAAgB,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACpE,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAClE,YAAY,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAChE,SAAS,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAC7D,aAAa,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACjE,aAAa,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAC9D,WAAW,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAC/D,eAAe,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACnE,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAChE,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAClE,eAAe,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACnE,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAClE,WAAW,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAC/D,iBAAiB,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;KAClE,CAAC,CAAA;IAEF,OAAO;QACL,MAAM;QACN,GAAG,EAAE,gBAAgB;YACnB,CAAC,CAAC;gBACE,kBAAkB,EAAE,WAAW,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,EAAE,CAAC;gBACxE,mBAAmB,EAAE,WAAW,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,EAAE,CAAC;gBAC1E,iBAAiB,EAAE,WAAW,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,EAAE,CAAC;gBACtE,kBAAkB,EAAE,WAAW,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,EAAE,CAAC;aACzE;YACH,CAAC,CAAC,SAAS;KACd,CAAA;AACH,CAAC,CAAA"}
@@ -1,17 +1,17 @@
1
1
  import { formatUnits, parseAbi, parseUnits } from 'viem';
2
- import { ONE_DAY, contract, tokenWithId } from '@stake-dao/constants';
2
+ import { ONE_DAY, OneEther, contract, tokenWithId } from '@stake-dao/constants';
3
3
  import { mainnet } from 'viem/chains';
4
4
  import {} from '../prices.js';
5
5
  import { equalTlc, multicall } from '../utils.js';
6
6
  import { getLogsFromEtherscan } from '../utils/etherscan.js';
7
7
  import getAverageYearlyRewards from '../utils/getAverageYearlyRewards.js';
8
8
  import veSdtAlternativeYields from './veSdtAlternativeYields.js';
9
- const NB_EVENTS_TO_USE = 5;
9
+ const NB_EVENTS_TO_USE = 10;
10
10
  const EVENT_TOPIC = '0xce749457b74e10f393f2c6b1ce4261b78791376db5a3f501477a809f03f500d6';
11
- // Need SDT and frax3Crv price
11
+ // Need SDT and USDC price
12
12
  export const fetchSdt = async ({ provider, prices, explorerApiKey }) => {
13
13
  const sdtToken = tokenWithId('sdt');
14
- const frax3CrvToken = tokenWithId('frax3crv');
14
+ const usdcToken = tokenWithId('usdc');
15
15
  const now = Math.ceil(new Date().getTime() / 1000);
16
16
  const lastCheck = now - ONE_DAY * 60;
17
17
  const lastCheckBlock = await (await fetch(`https://coins.llama.fi/block/ethereum/${lastCheck}`)).json();
@@ -19,22 +19,20 @@ export const fetchSdt = async ({ provider, prices, explorerApiKey }) => {
19
19
  try {
20
20
  const rawEventsData = await getLogsFromEtherscan({
21
21
  chainId: mainnet.id,
22
- address: contract('veSdtFeeDistributor'),
22
+ address: contract('usdcVeSdtFeeDistributor'),
23
23
  apikey: explorerApiKey,
24
24
  extraQueryParams: {
25
25
  fromBlock: `${lastCheckBlock.height}`,
26
26
  topic0: EVENT_TOPIC,
27
27
  },
28
28
  });
29
- amountPerYear = await getAverageYearlyRewards(rawEventsData, NB_EVENTS_TO_USE);
29
+ amountPerYear = await getAverageYearlyRewards(rawEventsData, NB_EVENTS_TO_USE, false, usdcToken.decimals);
30
30
  }
31
31
  catch {
32
32
  amountPerYear = 0;
33
33
  }
34
34
  const rawSdtData = await multicall(provider, [
35
- { address: contract('sdFrx3CrvVault'), name: 'getPricePerFullShare' },
36
35
  { address: sdtToken.address, name: 'balanceOf', params: [contract('veSdt')] },
37
- { address: sdtToken.address, name: 'balanceOf', params: [contract('vestedSdt')] },
38
36
  { address: sdtToken.address, name: 'totalSupply' },
39
37
  { address: contract('veSdt'), name: 'totalSupply' },
40
38
  {
@@ -42,42 +40,37 @@ export const fetchSdt = async ({ provider, prices, explorerApiKey }) => {
42
40
  name: 'received_balance',
43
41
  params: [contract('voteBoosterStrategy')],
44
42
  },
45
- { address: contract('liquidLockersGaugeController'), name: 'get_total_weight' },
46
- { address: frax3CrvToken.address, name: 'get_virtual_price' },
47
43
  ], parseAbi([
48
- 'function getPricePerFullShare() external view returns (uint256)',
49
44
  'function balanceOf(address user) external view returns (uint256)',
50
45
  'function totalSupply() external view returns (uint256)',
51
46
  'function received_balance(address user) external view returns (uint256)',
52
47
  'function get_total_weight() external view returns (uint256)',
53
- 'function get_virtual_price() external view returns (uint256)',
54
48
  ]));
55
- const vaultRatio = rawSdtData[0].result;
56
- const lockedSdtBalance = rawSdtData[1].result;
57
- const vestedSdtBalance = rawSdtData[2].result;
58
- const sdtTotalSupply = rawSdtData[3].result;
59
- const veSdtTotalSupply = rawSdtData[4].result;
60
- const voteBoosterVeSdt = rawSdtData[5].result;
61
- const lockersTotalWeight = Number(formatUnits(rawSdtData[6].result, sdtToken.decimals * 2));
62
- const frax3CrvPrice = Number(formatUnits(rawSdtData[7].result, frax3CrvToken.decimals));
63
- const sdtPrice = prices.find((p) => equalTlc(p.address, sdtToken.address))?.usdPrice || 0;
64
- const lockedInUsd = parseUnits(`${sdtPrice}`, sdtToken.decimals) * lockedSdtBalance;
65
- const vestedInUsd = parseUnits(`${sdtPrice}`, sdtToken.decimals) * vestedSdtBalance;
49
+ const lockedSdtBalance = rawSdtData[0].result;
50
+ const sdtTotalSupply = rawSdtData[1].result;
51
+ const veSdtTotalSupply = rawSdtData[2].result;
52
+ const voteBoosterVeSdt = rawSdtData[3].result;
53
+ let sdtPrice = 0;
54
+ let usdcPrice = 0;
55
+ for (const p of prices) {
56
+ if (equalTlc(p.address, sdtToken.address))
57
+ sdtPrice = p.usdPrice;
58
+ if (equalTlc(p.address, usdcToken.address))
59
+ usdcPrice = p.usdPrice;
60
+ }
61
+ const lockedInUsd = (parseUnits(`${sdtPrice}`, sdtToken.decimals) * lockedSdtBalance) / OneEther;
66
62
  const percentLocked = parseUnits(formatUnits(lockedSdtBalance, 0), sdtToken.decimals) / sdtTotalSupply;
67
63
  const averageLock = (parseUnits(formatUnits(veSdtTotalSupply, 0), sdtToken.decimals) / lockedSdtBalance) * BigInt(4);
68
- const apr = ((frax3CrvPrice * amountPerYear) / Number(formatUnits(lockedInUsd, 18))) * Number(vaultRatio);
64
+ const apr = (usdcPrice * amountPerYear) / Number(formatUnits(lockedInUsd, 18));
69
65
  const parsedData = {
70
66
  alternativeYields: veSdtAlternativeYields,
71
67
  veSdtTotalSupply: Number(formatUnits(veSdtTotalSupply, 18)),
72
68
  locked: Number(formatUnits(lockedSdtBalance, sdtToken.decimals)),
73
- lockedInUsd: Number(formatUnits(lockedInUsd, sdtToken.decimals * 2)),
74
- vestedInUsd: Number(formatUnits(vestedInUsd, sdtToken.decimals * 2)),
69
+ lockedInUsd: Number(formatUnits(lockedInUsd, sdtToken.decimals)),
75
70
  percentLocked: Number(formatUnits(percentLocked, 18)) * 100,
76
71
  averageLockInYears: Number(formatUnits(averageLock, 18)),
77
72
  apr: apr * 100,
78
73
  voteBoosterVeSdt: Number(formatUnits(voteBoosterVeSdt, sdtToken.decimals)),
79
- lockersTotalWeight,
80
- frax3CrvPrice,
81
74
  };
82
75
  return parsedData;
83
76
  };
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../src/sdt/fetch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../src/sdt/fetch.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@ export const fetchStakeDao = async ({ provider, chainId, lockers, prices, explor
15
15
  const queryParams = { ...baseQueryParams, chainid: `${chainId}`, apikey: explorerApiKey };
16
16
  const url = `https://api.etherscan.io/v2/api?${new URLSearchParams(queryParams)}`;
17
17
  const rawEventsData = await (await fetch(url)).json();
18
- amountPerYear = await getAverageYearlyRewards(rawEventsData, 5);
18
+ amountPerYear = await getAverageYearlyRewards(rawEventsData, 5, false, 18);
19
19
  }
20
20
  catch {
21
21
  amountPerYear = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../../src/strategies/stakeDao/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC/D,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,uBAAuB,MAAM,wCAAwC,CAAA;AAE5E,MAAM,eAAe,GAAG;IACtB,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,SAAS;IACjB,SAAS,EAAE,GAAG,QAAQ,EAAE;IACxB,OAAO,EAAE,4CAA4C;IACrD,MAAM,EAAE,oEAAoE;CAC7E,CAAA;AAUD,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAkB,EAAE,EAAE;IAC5G,IAAI,aAAa,GAAG,CAAC,CAAA;IAErB,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,EAAE,GAAG,eAAe,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA;QACzF,MAAM,GAAG,GAAG,mCAAmC,IAAI,eAAe,CAAC,WAAW,CAAC,EAAE,CAAA;QAEjF,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QACrD,aAAa,GAAG,MAAM,uBAAuB,CAAC,aAAa,EAAE,CAAC,CAAC,CAAA;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,aAAa,GAAG,CAAC,CAAA;IACnB,CAAC;IAED,MAAM,OAAO,GAAQ,MAAM,SAAS,CAClC,QAAQ,EACR;QACE;YACE,OAAO,EAAE,QAAQ,CAAC,sBAAsB,CAAC;YACzC,IAAI,EAAE,kBAAkB;YACxB,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;SAC1C;KACF,EACD,QAAQ,CAAC,CAAC,yEAAyE,CAAC,CAAC,CACtF,CAAA;IAED,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;QACxD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAA;QACvD,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,CAAA;QAC5C,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,EAAE,QAAQ,IAAI,CAAC,CAAA;QAE1E,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAA;QACzC,MAAM,GAAG,GAAG,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAA;QAE/D,MAAM,UAAU,GAAG,CAAC,CAAC,aAAa,GAAG,YAAY,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;QAC/D,MAAM,YAAY,GAAG,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAEnG,OAAO;YACL,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,eAAe,EAAE,CAAC,CAAC,eAAe;YAClC,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,YAAY;YACZ,SAAS,EAAE,aAAa,GAAG,CAAC;YAC5B,GAAG;YACH,GAAG,EAAE;gBACH,KAAK;gBACL,OAAO,EAAE;oBACP,KAAK,EAAE,UAAU;oBACjB,OAAO,EAAE;wBACP;4BACE,KAAK,EAAE,KAAK;4BACZ,KAAK,EAAE,CAAC,UAAU,CAAC;yBACpB;qBACF;iBACF;gBACD,SAAS,EAAE;oBACT,KAAK,EAAE,YAAY;oBACnB,OAAO,EAAE;wBACP;4BACE,KAAK,EAAE,KAAK;4BACZ,KAAK,EAAE,CAAC,YAAY,CAAC;yBACtB;qBACF;iBACF;aACF;YACD,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC3B,OAAO;oBACL,KAAK,EAAE;wBACL,IAAI,EAAE,CAAE,CAAC,IAAI;wBACb,QAAQ,EAAE,CAAE,CAAC,QAAQ;wBACrB,MAAM,EAAE,CAAE,CAAC,MAAM;wBACjB,OAAO,EAAE,CAAE,CAAC,OAAO;qBACpB;oBACD,WAAW,EAAE,WAAW;oBACxB,YAAY,EAAE,GAAG;oBACjB,IAAI,EAAE,GAAG;oBACT,UAAU,EAAE,GAAG;oBACf,QAAQ,EAAE,GAAG;oBACb,uBAAuB,EAAE,GAAG;iBAC7B,CAAA;YACH,CAAC,CAAC;YACF,gBAAgB;YAChB,UAAU,EAAE,CAAC;YACb,MAAM,EAAE,YAAY;YACpB,MAAM,EAAE,YAAY;YACpB,WAAW;YACX,WAAW,EAAE,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC;SACzC,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,OAAO;QACL,MAAM,EAAE;YACN,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;SACxD;QACD,QAAQ,EAAE,UAAU;QACpB,WAAW,EAAE,EAAE;QACf,OAAO,EAAE,IAAI;KACd,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../../src/strategies/stakeDao/fetch.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { ONE_YEAR, Zero } from '@stake-dao/constants';
1
+ import { ONE_WEEK, ONE_YEAR, Zero } from '@stake-dao/constants';
2
2
  import { decodeAbiParameters, formatUnits } from 'viem';
3
3
  const decodeEvent = (rawEventsData) => {
4
4
  return rawEventsData.result?.map((event) => {
@@ -19,19 +19,21 @@ const decodeEventWithRewardToken = (rawEventsData) => {
19
19
  return { eventTimestamp: Number(eventTimestamp), eventAmount, eventRewardToken };
20
20
  });
21
21
  };
22
- const getAverageYearlyRewards = async (rawEventsData, nbEvents, withRewardToken) => {
22
+ const getAverageYearlyRewards = async (rawEventsData, nbEvents, withRewardToken, decimals) => {
23
23
  const eventsData = (withRewardToken ? decodeEventWithRewardToken(rawEventsData) : decodeEvent(rawEventsData))
24
24
  .filter((event) => event.eventAmount > Zero)
25
25
  .sort((a, b) => b.eventTimestamp - a.eventTimestamp);
26
+ const eventsSize = Math.min(nbEvents, eventsData.length);
26
27
  const amountPerYear = eventsData
27
- .slice(0, nbEvents)
28
+ .slice(0, eventsSize)
28
29
  .map((_, index) => {
29
- const duration = eventsData[index].eventTimestamp - eventsData[index + 1].eventTimestamp;
30
- const amount = Number(formatUnits(eventsData[index].eventAmount, 18));
30
+ const prevTimestamp = eventsData[index + 1]?.eventTimestamp || eventsData[index].eventTimestamp - ONE_WEEK;
31
+ const duration = eventsData[index].eventTimestamp - prevTimestamp;
32
+ const amount = Number(formatUnits(eventsData[index].eventAmount, decimals));
31
33
  // Annualized Reward
32
34
  return (amount / duration) * ONE_YEAR;
33
35
  })
34
- .reduce((total, x) => (total += x), 0) / nbEvents;
36
+ .reduce((total, x) => (total += x), 0) / eventsSize;
35
37
  return amountPerYear;
36
38
  };
37
39
  export default getAverageYearlyRewards;
@@ -1 +1 @@
1
- {"version":3,"file":"getAverageYearlyRewards.js","sourceRoot":"","sources":["../../../src/utils/getAverageYearlyRewards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AAEvD,MAAM,WAAW,GAAG,CAAC,aAAkB,EAAE,EAAE;IACzC,OAAO,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACzC,MAAM,CAAC,cAAc,EAAE,WAAW,CAAC,GAAG,mBAAmB,CACvD;YACE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE;YACtC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE;SACpC,EACD,KAAK,CAAC,IAAI,CACX,CAAA;QAED,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,CAAC,EAAE,WAAW,EAAE,CAAA;IAChE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,0BAA0B,GAAG,CAAC,aAAkB,EAAE,EAAE;IACxD,OAAO,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACzC,MAAM,CAAC,cAAc,EAAE,gBAAgB,EAAE,WAAW,CAAC,GAAG,mBAAmB,CACzE;YACE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE;YACtC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE;YACxC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE;SACpC,EACD,KAAK,CAAC,IAAI,CACX,CAAA;QAED,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAA;IAClF,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,uBAAuB,GAAG,KAAK,EAAE,aAAkB,EAAE,QAAgB,EAAE,eAAyB,EAAE,EAAE;IACxG,MAAM,UAAU,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,0BAA0B,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;SAC1G,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;SAC3C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,cAAc,CAAC,CAAA;IAEtD,MAAM,aAAa,GACjB,UAAU;SACP,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC;SAClB,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;QAChB,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,cAAc,GAAG,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,cAAc,CAAA;QACxF,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAA;QAErE,oBAAoB;QACpB,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAA;IACvC,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAA;IAErD,OAAO,aAAa,CAAA;AACtB,CAAC,CAAA;AAED,eAAe,uBAAuB,CAAA"}
1
+ {"version":3,"file":"getAverageYearlyRewards.js","sourceRoot":"","sources":["../../../src/utils/getAverageYearlyRewards.ts"],"names":[],"mappings":"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"}
@@ -25,13 +25,10 @@ export declare const fetchSdt: ({ provider, prices, explorerApiKey }: TFetchSdt)
25
25
  veSdtTotalSupply: number;
26
26
  locked: number;
27
27
  lockedInUsd: number;
28
- vestedInUsd: number;
29
28
  percentLocked: number;
30
29
  averageLockInYears: number;
31
30
  apr: number;
32
31
  voteBoosterVeSdt: number;
33
- lockersTotalWeight: number;
34
- frax3CrvPrice: number;
35
32
  }>;
36
33
  export {};
37
34
  //# sourceMappingURL=fetch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../src/sdt/fetch.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,cAAc,CAAA;AASzC,UAAU,SAAS;IACjB,QAAQ,EAAE,GAAG,CAAA;IACb,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,cAAc,EAAE,MAAM,CAAA;CACvB;AAGD,eAAO,MAAM,QAAQ,yCAAgD,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqF7E,CAAA"}
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../src/sdt/fetch.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,cAAc,CAAA;AASzC,UAAU,SAAS;IACjB,QAAQ,EAAE,GAAG,CAAA;IACb,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,cAAc,EAAE,MAAM,CAAA;CACvB;AAGD,eAAO,MAAM,QAAQ,yCAAgD,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;EA4E7E,CAAA"}
@@ -1,3 +1,3 @@
1
- declare const getAverageYearlyRewards: (rawEventsData: any, nbEvents: number, withRewardToken?: boolean) => Promise<number>;
1
+ declare const getAverageYearlyRewards: (rawEventsData: any, nbEvents: number, withRewardToken: boolean, decimals: number) => Promise<number>;
2
2
  export default getAverageYearlyRewards;
3
3
  //# sourceMappingURL=getAverageYearlyRewards.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getAverageYearlyRewards.d.ts","sourceRoot":"","sources":["../../../src/utils/getAverageYearlyRewards.ts"],"names":[],"mappings":"AAgCA,QAAA,MAAM,uBAAuB,kBAAyB,GAAG,YAAY,MAAM,oBAAoB,OAAO,oBAkBrG,CAAA;AAED,eAAe,uBAAuB,CAAA"}
1
+ {"version":3,"file":"getAverageYearlyRewards.d.ts","sourceRoot":"","sources":["../../../src/utils/getAverageYearlyRewards.ts"],"names":[],"mappings":"AAgCA,QAAA,MAAM,uBAAuB,kBACZ,GAAG,YACR,MAAM,mBACC,OAAO,YACd,MAAM,oBAsBjB,CAAA;AAED,eAAe,uBAAuB,CAAA"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@stake-dao/reader",
3
3
  "description": "",
4
- "version": "0.5.19",
4
+ "version": "0.5.21",
5
5
  "license": "AGPL-3.0-only",
6
6
  "repository": {
7
7
  "type": "git",
@@ -35,7 +35,7 @@
35
35
  "graphql-request": "^6.0.0",
36
36
  "lodash-es": "^4.17.21",
37
37
  "viem": "2.35.0",
38
- "@stake-dao/constants": "0.5.6"
38
+ "@stake-dao/constants": "0.5.7"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@types/lodash-es": "^4.17.12",
@@ -46,13 +46,13 @@ export const fetchLockers = async ({ provider, prices }: TFetchLockers) => {
46
46
  const parsed = await Promise.all([
47
47
  curveLocker({ provider: provider[mainnet.id], common, prices }),
48
48
  yieldbasisLocker({ provider: provider[mainnet.id], common, prices }),
49
+ balancerLocker({ provider: provider[mainnet.id], common, prices }),
49
50
  pendleLocker({ provider: provider[mainnet.id], common, prices }),
50
51
  fxnLocker({ provider: provider[mainnet.id], common, prices }),
52
+ fraxFxsLocker({ provider: provider[fraxtal.id], common, prices }),
53
+ spectraLocker({ provider: provider[base.id], common, prices }),
51
54
  yearnLocker({ provider: provider[mainnet.id], common, prices }),
52
55
  yieldnestLocker({ provider: provider[mainnet.id], common, prices }),
53
- balancerLocker({ provider: provider[mainnet.id], common, prices }),
54
- spectraLocker({ provider: provider[base.id], common, prices }),
55
- fraxFxsLocker({ provider: provider[fraxtal.id], common, prices }),
56
56
  zerolendLocker({ provider: provider[linea.id], common, prices }),
57
57
  maverickLocker({ provider: provider[mainnet.id], common, prices }),
58
58
  blackpoolLocker({ provider: provider[mainnet.id], common, prices }),
package/src/sdt/fetch.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { formatUnits, parseAbi, parseUnits } from 'viem'
2
2
 
3
- import { ONE_DAY, type Token, contract, tokenWithId } from '@stake-dao/constants'
3
+ import { ONE_DAY, OneEther, type Token, contract, tokenWithId } from '@stake-dao/constants'
4
4
  import { mainnet } from 'viem/chains'
5
5
  import { type Price } from '../prices.js'
6
6
  import { equalTlc, multicall } from '../utils.js'
@@ -8,7 +8,7 @@ import { getLogsFromEtherscan } from '../utils/etherscan.js'
8
8
  import getAverageYearlyRewards from '../utils/getAverageYearlyRewards.js'
9
9
  import veSdtAlternativeYields from './veSdtAlternativeYields.js'
10
10
 
11
- const NB_EVENTS_TO_USE = 5
11
+ const NB_EVENTS_TO_USE = 10
12
12
  const EVENT_TOPIC = '0xce749457b74e10f393f2c6b1ce4261b78791376db5a3f501477a809f03f500d6'
13
13
 
14
14
  interface TFetchSdt {
@@ -17,10 +17,10 @@ interface TFetchSdt {
17
17
  explorerApiKey: string
18
18
  }
19
19
 
20
- // Need SDT and frax3Crv price
20
+ // Need SDT and USDC price
21
21
  export const fetchSdt = async ({ provider, prices, explorerApiKey }: TFetchSdt) => {
22
22
  const sdtToken = tokenWithId('sdt') as Token
23
- const frax3CrvToken = tokenWithId('frax3crv') as Token
23
+ const usdcToken = tokenWithId('usdc') as Token
24
24
 
25
25
  const now = Math.ceil(new Date().getTime() / 1000)
26
26
  const lastCheck = now - ONE_DAY * 60
@@ -31,14 +31,14 @@ export const fetchSdt = async ({ provider, prices, explorerApiKey }: TFetchSdt)
31
31
  try {
32
32
  const rawEventsData = await getLogsFromEtherscan({
33
33
  chainId: mainnet.id,
34
- address: contract('veSdtFeeDistributor'),
34
+ address: contract('usdcVeSdtFeeDistributor'),
35
35
  apikey: explorerApiKey,
36
36
  extraQueryParams: {
37
37
  fromBlock: `${lastCheckBlock.height}`,
38
38
  topic0: EVENT_TOPIC,
39
39
  },
40
40
  })
41
- amountPerYear = await getAverageYearlyRewards(rawEventsData, NB_EVENTS_TO_USE)
41
+ amountPerYear = await getAverageYearlyRewards(rawEventsData, NB_EVENTS_TO_USE, false, usdcToken.decimals)
42
42
  } catch {
43
43
  amountPerYear = 0
44
44
  }
@@ -46,9 +46,7 @@ export const fetchSdt = async ({ provider, prices, explorerApiKey }: TFetchSdt)
46
46
  const rawSdtData: any = await multicall(
47
47
  provider,
48
48
  [
49
- { address: contract('sdFrx3CrvVault'), name: 'getPricePerFullShare' },
50
49
  { address: sdtToken.address, name: 'balanceOf', params: [contract('veSdt')] },
51
- { address: sdtToken.address, name: 'balanceOf', params: [contract('vestedSdt')] },
52
50
  { address: sdtToken.address, name: 'totalSupply' },
53
51
  { address: contract('veSdt'), name: 'totalSupply' },
54
52
  {
@@ -56,50 +54,43 @@ export const fetchSdt = async ({ provider, prices, explorerApiKey }: TFetchSdt)
56
54
  name: 'received_balance',
57
55
  params: [contract('voteBoosterStrategy')],
58
56
  },
59
- { address: contract('liquidLockersGaugeController'), name: 'get_total_weight' },
60
- { address: frax3CrvToken.address, name: 'get_virtual_price' },
61
57
  ],
62
58
  parseAbi([
63
- 'function getPricePerFullShare() external view returns (uint256)',
64
59
  'function balanceOf(address user) external view returns (uint256)',
65
60
  'function totalSupply() external view returns (uint256)',
66
61
  'function received_balance(address user) external view returns (uint256)',
67
62
  'function get_total_weight() external view returns (uint256)',
68
- 'function get_virtual_price() external view returns (uint256)',
69
63
  ]),
70
64
  )
71
65
 
72
- const vaultRatio = rawSdtData[0].result
73
- const lockedSdtBalance = rawSdtData[1].result
74
- const vestedSdtBalance = rawSdtData[2].result
75
- const sdtTotalSupply = rawSdtData[3].result
76
- const veSdtTotalSupply = rawSdtData[4].result
77
- const voteBoosterVeSdt = rawSdtData[5].result
66
+ const lockedSdtBalance = rawSdtData[0].result
67
+ const sdtTotalSupply = rawSdtData[1].result
68
+ const veSdtTotalSupply = rawSdtData[2].result
69
+ const voteBoosterVeSdt = rawSdtData[3].result
78
70
 
79
- const lockersTotalWeight = Number(formatUnits(rawSdtData[6].result, sdtToken.decimals * 2))
80
- const frax3CrvPrice = Number(formatUnits(rawSdtData[7].result, frax3CrvToken.decimals))
71
+ let sdtPrice = 0
72
+ let usdcPrice = 0
81
73
 
82
- const sdtPrice = prices.find((p) => equalTlc(p.address, sdtToken.address))?.usdPrice || 0
74
+ for (const p of prices) {
75
+ if (equalTlc(p.address, sdtToken.address)) sdtPrice = p.usdPrice
76
+ if (equalTlc(p.address, usdcToken.address)) usdcPrice = p.usdPrice
77
+ }
83
78
 
84
- const lockedInUsd = parseUnits(`${sdtPrice}`, sdtToken.decimals) * lockedSdtBalance
85
- const vestedInUsd = parseUnits(`${sdtPrice}`, sdtToken.decimals) * vestedSdtBalance
79
+ const lockedInUsd = (parseUnits(`${sdtPrice}`, sdtToken.decimals) * lockedSdtBalance) / OneEther
86
80
  const percentLocked = parseUnits(formatUnits(lockedSdtBalance, 0), sdtToken.decimals) / sdtTotalSupply
87
81
  const averageLock = (parseUnits(formatUnits(veSdtTotalSupply, 0), sdtToken.decimals) / lockedSdtBalance) * BigInt(4)
88
82
 
89
- const apr = ((frax3CrvPrice * amountPerYear) / Number(formatUnits(lockedInUsd, 18))) * Number(vaultRatio)
83
+ const apr = (usdcPrice * amountPerYear) / Number(formatUnits(lockedInUsd, 18))
90
84
 
91
85
  const parsedData = {
92
86
  alternativeYields: veSdtAlternativeYields,
93
87
  veSdtTotalSupply: Number(formatUnits(veSdtTotalSupply, 18)),
94
88
  locked: Number(formatUnits(lockedSdtBalance, sdtToken.decimals)),
95
- lockedInUsd: Number(formatUnits(lockedInUsd, sdtToken.decimals * 2)),
96
- vestedInUsd: Number(formatUnits(vestedInUsd, sdtToken.decimals * 2)),
89
+ lockedInUsd: Number(formatUnits(lockedInUsd, sdtToken.decimals)),
97
90
  percentLocked: Number(formatUnits(percentLocked, 18)) * 100,
98
91
  averageLockInYears: Number(formatUnits(averageLock, 18)),
99
92
  apr: apr * 100,
100
93
  voteBoosterVeSdt: Number(formatUnits(voteBoosterVeSdt, sdtToken.decimals)),
101
- lockersTotalWeight,
102
- frax3CrvPrice,
103
94
  }
104
95
 
105
96
  return parsedData
@@ -28,7 +28,7 @@ export const fetchStakeDao = async ({ provider, chainId, lockers, prices, explor
28
28
  const url = `https://api.etherscan.io/v2/api?${new URLSearchParams(queryParams)}`
29
29
 
30
30
  const rawEventsData = await (await fetch(url)).json()
31
- amountPerYear = await getAverageYearlyRewards(rawEventsData, 5)
31
+ amountPerYear = await getAverageYearlyRewards(rawEventsData, 5, false, 18)
32
32
  } catch {
33
33
  amountPerYear = 0
34
34
  }
@@ -1,4 +1,4 @@
1
- import { ONE_YEAR, Zero } from '@stake-dao/constants'
1
+ import { ONE_WEEK, ONE_YEAR, Zero } from '@stake-dao/constants'
2
2
  import { decodeAbiParameters, formatUnits } from 'viem'
3
3
 
4
4
  const decodeEvent = (rawEventsData: any) => {
@@ -30,22 +30,30 @@ const decodeEventWithRewardToken = (rawEventsData: any) => {
30
30
  })
31
31
  }
32
32
 
33
- const getAverageYearlyRewards = async (rawEventsData: any, nbEvents: number, withRewardToken?: boolean) => {
33
+ const getAverageYearlyRewards = async (
34
+ rawEventsData: any,
35
+ nbEvents: number,
36
+ withRewardToken: boolean,
37
+ decimals: number,
38
+ ) => {
34
39
  const eventsData = (withRewardToken ? decodeEventWithRewardToken(rawEventsData) : decodeEvent(rawEventsData))
35
40
  .filter((event) => event.eventAmount > Zero)
36
41
  .sort((a, b) => b.eventTimestamp - a.eventTimestamp)
37
42
 
43
+ const eventsSize = Math.min(nbEvents, eventsData.length)
44
+
38
45
  const amountPerYear =
39
46
  eventsData
40
- .slice(0, nbEvents)
47
+ .slice(0, eventsSize)
41
48
  .map((_, index) => {
42
- const duration = eventsData[index].eventTimestamp - eventsData[index + 1].eventTimestamp
43
- const amount = Number(formatUnits(eventsData[index].eventAmount, 18))
49
+ const prevTimestamp = eventsData[index + 1]?.eventTimestamp || eventsData[index].eventTimestamp - ONE_WEEK
50
+ const duration = eventsData[index].eventTimestamp - prevTimestamp
51
+ const amount = Number(formatUnits(eventsData[index].eventAmount, decimals))
44
52
 
45
53
  // Annualized Reward
46
54
  return (amount / duration) * ONE_YEAR
47
55
  })
48
- .reduce((total, x) => (total += x), 0) / nbEvents
56
+ .reduce((total, x) => (total += x), 0) / eventsSize
49
57
 
50
58
  return amountPerYear
51
59
  }