@1delta/margin-fetcher 0.0.37 → 0.0.39

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.
Files changed (44) hide show
  1. package/dist/lending/aave-v2-type/publicCallParse.d.ts +4 -4
  2. package/dist/lending/aave-v2-type/publicCallParse.d.ts.map +1 -1
  3. package/dist/lending/aave-v2-type/publicCallParse.js +60 -32
  4. package/dist/lending/aave-v3-type/publicCallParse.d.ts.map +1 -1
  5. package/dist/lending/aave-v3-type/publicCallParse.js +46 -33
  6. package/dist/lending/addresses/meridian.d.ts +3 -0
  7. package/dist/lending/addresses/meridian.d.ts.map +1 -1
  8. package/dist/lending/addresses/meridian.js +4 -1
  9. package/dist/lending/fetchLenderAll.d.ts.map +1 -1
  10. package/dist/lending/fetchLenderAll.js +2 -0
  11. package/dist/lending/morpho/constants/markets.d.ts.map +1 -1
  12. package/dist/lending/morpho/constants/markets.js +30 -0
  13. package/dist/lending/morpho/fetchPublic.d.ts.map +1 -1
  14. package/dist/lending/morpho/fetchPublic.js +45 -13
  15. package/dist/lending/morpho/getMarketsFromChain.d.ts.map +1 -1
  16. package/dist/lending/user-data/morpho/userCallBuild.d.ts.map +1 -1
  17. package/dist/lending/user-data/morpho/userCallBuild.js +1 -0
  18. package/dist/prices/defillama/index.d.ts.map +1 -1
  19. package/dist/prices/defillama/index.js +14 -2
  20. package/dist/prices/main-prices/fetchOracleData.js +8 -6
  21. package/dist/utils/parsing.d.ts +1 -1
  22. package/dist/utils/parsing.d.ts.map +1 -1
  23. package/dist/utils/parsing.js +2 -2
  24. package/dist/yields/index.d.ts.map +1 -1
  25. package/dist/yields/index.js +28 -1
  26. package/package.json +1 -1
  27. package/src/lending/aave-v2-type/publicCallParse.ts +334 -92
  28. package/src/lending/aave-v3-type/publicCallParse.ts +80 -56
  29. package/src/lending/addresses/meridian.ts +4 -1
  30. package/src/lending/fetchLenderAll.ts +1 -0
  31. package/src/lending/morpho/constants/markets.ts +30 -0
  32. package/src/lending/morpho/fetchPublic.ts +50 -14
  33. package/src/lending/morpho/getMarketsFromChain.ts +0 -1
  34. package/src/lending/user-data/morpho/userCallBuild.ts +1 -0
  35. package/src/prices/defillama/index.ts +16 -2
  36. package/src/prices/main-prices/fetchOracleData.ts +7 -6
  37. package/src/utils/parsing.ts +2 -2
  38. package/src/yields/index.ts +39 -0
  39. package/test/flashLiquidity.test.ts +2 -2
  40. package/test/lenderData.test.ts +3 -3
  41. package/test/mainPrices.test.ts +4 -3
  42. package/test/mbChain.test.ts +3 -4
  43. package/test/morpho.test.ts +1 -1
  44. package/test/userDataAaveTelos.test.ts +85 -0
@@ -73,7 +73,7 @@ export const fetchMainPrices = async (chainIds, rpcOverrides, lists = {}) => {
73
73
  ...RWADynamicOracleAbi,
74
74
  ...ProxyOracleAbi,
75
75
  ];
76
- const result = await multicallRetry(chainId, allCalls, abis, undefined, 3, 0, true, rpcOverrides);
76
+ const result = await multicallRetry(chainId, allCalls, abis, undefined, 3, 0, false, rpcOverrides);
77
77
  return {
78
78
  chainId,
79
79
  result,
@@ -317,15 +317,17 @@ const parseUniswapV2results = (data, chainId) => {
317
317
  return {};
318
318
  }
319
319
  };
320
- function lowDecimalOracle(chainId, fork) {
320
+ function getExponentForOracle(chainId, fork) {
321
321
  // some chains only have high decimal oracles
322
322
  if (chainId === Chain.AVALANCHE_C_CHAIN || chainId === Chain.MODE) {
323
- return false;
323
+ return 10n;
324
324
  }
325
325
  if (chainId === Chain.XDC_NETWORK)
326
- return true;
326
+ return 0n;
327
+ if (chainId === Chain.TELOS_EVM_MAINNET)
328
+ return 10n;
327
329
  // otherwise, it depends on whether it is aave V3
328
- return AAVE_V2_LENDERS.includes(fork);
330
+ return AAVE_V2_LENDERS.includes(fork) ? 0n : 10n;
329
331
  }
330
332
  /**
331
333
  * Parser for aave results in ulticall slice
@@ -341,7 +343,7 @@ const parseAaveResults = (chainId, data, queries, list = {}) => {
341
343
  const details = queries[i];
342
344
  details.assets.forEach((a, j) => {
343
345
  const oracleId = list[a]?.assetGroup ?? chainId + '-' + a;
344
- prices[oracleId] = formatAavePrice(d[j].toString(), lowDecimalOracle(chainId, details.fork));
346
+ prices[oracleId] = formatAavePrice(d[j].toString(), getExponentForOracle(chainId, details.fork));
345
347
  });
346
348
  }
347
349
  });
@@ -12,6 +12,6 @@ export declare const formatAaveYieldToNumber: (n?: string | bigint) => number;
12
12
  export declare const calculateRateForCompound: (n: string, chainId: string, lender?: Lender) => number;
13
13
  export declare const formatAaveRawApyToApr: (raw: bigint | string | undefined) => number;
14
14
  export declare const convertRateToApr: (ratePerSecond: number | string) => number;
15
- export declare const formatAavePrice: (price: string, isV2?: boolean) => number;
15
+ export declare const formatAavePrice: (price: string, exponent?: bigint) => number;
16
16
  export declare const formatMorphoPrice: (price: string, collateralDec: number, debtDec: number) => number;
17
17
  //# sourceMappingURL=parsing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parsing.d.ts","sourceRoot":"","sources":["../../src/utils/parsing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAIhD,eAAO,MAAM,GAAG,QAAQ,CAAA;AAExB,eAAO,MAAM,cAAc,GAAI,SAAS,MAAM,EAAE,iBAAa,KAAG,MAO/D,CAAA;AAED,oBAAY,SAAS;IACnB,KAAK,IAAA;IACL,EAAE,IAAA;CACH;AAYD,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,WAEnC,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,WAEnC,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,WAI1C,CAAA;AAED,eAAO,MAAM,uBAAuB,GAAI,IAAI,MAAM,GAAG,MAAM,KAAG,MAG7D,CAAA;AAED,eAAO,MAAM,wBAAwB,GACnC,GAAG,MAAM,EACT,SAAS,MAAM,EACf,eAAiC,KAChC,MAgBF,CAAA;AACD,eAAO,MAAM,qBAAqB,GAAI,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,WAGrE,CAAA;AAGD,eAAO,MAAM,gBAAgB,GAAI,eAAe,MAAM,GAAG,MAAM,WAI9D,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,EAAE,cAAY,KAAG,MAY7D,CAAA;AAED,eAAO,MAAM,iBAAiB,GAC5B,OAAO,MAAM,EACb,eAAe,MAAM,EACrB,SAAS,MAAM,KACd,MAYF,CAAA"}
1
+ {"version":3,"file":"parsing.d.ts","sourceRoot":"","sources":["../../src/utils/parsing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAIhD,eAAO,MAAM,GAAG,QAAQ,CAAA;AAExB,eAAO,MAAM,cAAc,GAAI,SAAS,MAAM,EAAE,iBAAa,KAAG,MAO/D,CAAA;AAED,oBAAY,SAAS;IACnB,KAAK,IAAA;IACL,EAAE,IAAA;CACH;AAYD,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,WAEnC,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,WAEnC,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,WAI1C,CAAA;AAED,eAAO,MAAM,uBAAuB,GAAI,IAAI,MAAM,GAAG,MAAM,KAAG,MAG7D,CAAA;AAED,eAAO,MAAM,wBAAwB,GACnC,GAAG,MAAM,EACT,SAAS,MAAM,EACf,eAAiC,KAChC,MAgBF,CAAA;AACD,eAAO,MAAM,qBAAqB,GAAI,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,WAGrE,CAAA;AAGD,eAAO,MAAM,gBAAgB,GAAI,eAAe,MAAM,GAAG,MAAM,WAI9D,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,EAAE,iBAAc,KAAG,MAY/D,CAAA;AAED,eAAO,MAAM,iBAAiB,GAC5B,OAAO,MAAM,EACb,eAAe,MAAM,EACrB,SAAS,MAAM,KACd,MAYF,CAAA"}
@@ -65,11 +65,11 @@ export const convertRateToApr = (ratePerSecond) => {
65
65
  return 0;
66
66
  return rps * 3600 * 24 * 365 * 100;
67
67
  };
68
- export const formatAavePrice = (price, isV2 = false) => {
68
+ export const formatAavePrice = (price, exponent = 10n) => {
69
69
  try {
70
70
  return Number(formatEther(BigInt(price ?? '0') *
71
71
  // 10^(18 - decimals)
72
- 10n ** (isV2 ? 0n : 10n)));
72
+ 10n ** (exponent)));
73
73
  }
74
74
  catch {
75
75
  return NaN;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/yields/index.ts"],"names":[],"mappings":"AAqGA,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,qBAAqB,EAAE,GAAG,CAAA;IAC1B,oBAAoB,EAAE,GAAG,CAAA;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACrC,eAAe,EAAE;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;KAAE,CAAA;IACxD,aAAa,EAAE;QACb,CAAC,OAAO,EAAE,MAAM,GAAG;YACjB,CAAC,MAAM,EAAE,MAAM,GAAG;gBAAE,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAAA;aAAE,CAAA;SACzD,CAAA;KACF,CAAA;CACF;AAcD,eAAO,MAAM,kBAAkB,uCA+c9B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/yields/index.ts"],"names":[],"mappings":"AAwGA,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,qBAAqB,EAAE,GAAG,CAAA;IAC1B,oBAAoB,EAAE,GAAG,CAAA;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACrC,eAAe,EAAE;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;KAAE,CAAA;IACxD,aAAa,EAAE;QACb,CAAC,OAAO,EAAE,MAAM,GAAG;YACjB,CAAC,MAAM,EAAE,MAAM,GAAG;gBAAE,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAAA;aAAE,CAAA;SACzD,CAAA;KACF,CAAA;CACF;AAcD,eAAO,MAAM,kBAAkB,uCAmf9B,CAAA"}
@@ -31,6 +31,7 @@ const usdThree = 'Web 3 Dollar::USD3';
31
31
  const jitoSol = 'Jito Staked SOL::JitoSOL';
32
32
  const thBill = 'Theo Short Duration US Treasury Fund::THBILL';
33
33
  const ssuperusd = 'SuperReturn sSuperUSD::SSUPERUSD';
34
+ const hbhype = 'hyperbeat x ether.fi HYPE::beHYPE';
34
35
  const FeedData = {
35
36
  WSTETH: 'https://eth-api.lido.fi/v1/protocol/steth/apr/sma',
36
37
  STMATIC: 'https://polygon.lido.fi/api/stats',
@@ -65,6 +66,7 @@ const FeedData = {
65
66
  THBILL: 'https://thbill-api.theo.xyz/snapshots',
66
67
  YEARN_KATANA: 'https://katana-apr-service.vercel.app/api/vaults',
67
68
  SSUPERUSD: 'https://www.superreturn.ai/api/trpc/cmc.getUSDCPrice,rewardBackend.getYield,rewardBackend.getTvlChange?batch=1&input=%7B%220%22%3A%7B%22json%22%3Anull%2C%22meta%22%3A%7B%22values%22%3A%5B%22undefined%22%5D%7D%7D%2C%221%22%3A%7B%22json%22%3Anull%2C%22meta%22%3A%7B%22values%22%3A%5B%22undefined%22%5D%7D%7D%2C%222%22%3A%7B%22json%22%3Anull%2C%22meta%22%3A%7B%22values%22%3A%5B%22undefined%22%5D%7D%7D%7D',
69
+ HBHYPE: 'https://api.hyperbeat.org/api/v1/staking?address=0xCeaD893b162D38e714D82d06a7fe0b0dc3c38E0b',
68
70
  };
69
71
  const LenderAPIs = {
70
72
  MERIDIAN: 'https://omnidex.bmaa3ajd1gjri.eu-west-2.cs.amazonlightsail.com/lending_yields',
@@ -147,6 +149,29 @@ export const fetchGeneralYields = async () => {
147
149
  return 0;
148
150
  }
149
151
  });
152
+ const hbhypePromise = safeFetch('HBHYPE', async () => {
153
+ try {
154
+ const response = await fetch(FeedData.HBHYPE);
155
+ if (!response.ok) {
156
+ throw new Error(`HTTP error! Status: ${response.status}`);
157
+ }
158
+ const result = await response.json();
159
+ // Ensure data exists and delegations is an array
160
+ if (!result.success ||
161
+ !result.data ||
162
+ !Array.isArray(result.data.delegations)) {
163
+ throw new Error('Invalid response structure');
164
+ }
165
+ const delegations = result.data.delegations;
166
+ // Compute average APR
167
+ const totalApr = delegations.reduce((sum, validator) => sum + Number(validator.apr ?? 0), 0);
168
+ const averageApr = totalApr / delegations.length;
169
+ return averageApr;
170
+ }
171
+ catch (e) {
172
+ return 0;
173
+ }
174
+ });
150
175
  const ssuperusdPromise = safeFetch('SSUPERUSD', async () => {
151
176
  try {
152
177
  const res = await fetch(FeedData.SSUPERUSD, {
@@ -394,7 +419,7 @@ export const fetchGeneralYields = async () => {
394
419
  },
395
420
  })));
396
421
  });
397
- const [wstethData, ezethData, rethData, weethData, stmaticData, methData, maticXdata, susdeData, meridianData, savaxData, cbethData, rsethData, trumaticData, rtokensData, hypeData, osEthData, ethXData, pufEthData, angleData, susdsData, srUsdData, yusdData, rlpData, wstusrData, csusdlData, sdeusdData, rswethData, ynethxData, ethZeroData, usdZeroPlusData, jitoSolData, thBillData, yearnKatanaData, ssuperusdData,] = await Promise.all([
422
+ const [wstethData, ezethData, rethData, weethData, stmaticData, methData, maticXdata, susdeData, meridianData, savaxData, cbethData, rsethData, trumaticData, rtokensData, hypeData, osEthData, ethXData, pufEthData, angleData, susdsData, srUsdData, yusdData, rlpData, wstusrData, csusdlData, sdeusdData, rswethData, ynethxData, ethZeroData, usdZeroPlusData, jitoSolData, thBillData, yearnKatanaData, ssuperusdData, hbhypeData,] = await Promise.all([
398
423
  wstethPromise,
399
424
  ezethPromise,
400
425
  rethPromise,
@@ -429,6 +454,7 @@ export const fetchGeneralYields = async () => {
429
454
  thbillPromise,
430
455
  yearnKatanaPromise,
431
456
  ssuperusdPromise,
457
+ hbhypePromise,
432
458
  ]);
433
459
  const data = {
434
460
  intrinsicYields: {
@@ -464,6 +490,7 @@ export const fetchGeneralYields = async () => {
464
490
  [jitoSol]: jitoSolData,
465
491
  [thBill]: thBillData,
466
492
  [ssuperusd]: ssuperusdData,
493
+ [hbhype]: hbhypeData,
467
494
  ...rtokensData,
468
495
  ...hypeData,
469
496
  ...angleData,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@1delta/margin-fetcher",
3
- "version": "0.0.37",
3
+ "version": "0.0.39",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",