@1delta/margin-fetcher 0.0.168 → 0.0.169

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 (179) hide show
  1. package/dist/ccip-G7HDSZ4N.js +5 -0
  2. package/dist/{ccip-MRVHO3PE.js.map → ccip-G7HDSZ4N.js.map} +1 -1
  3. package/dist/{chunk-QCZNLSVI.js → chunk-ZVIJSUIM.js} +100 -83
  4. package/dist/chunk-ZVIJSUIM.js.map +1 -0
  5. package/dist/index.d.ts +2 -2
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +404 -190
  8. package/dist/index.js.map +1 -1
  9. package/dist/lending/index.d.ts +1 -1
  10. package/dist/lending/index.d.ts.map +1 -1
  11. package/dist/lending/user-data/compound-v2/userCallParse.d.ts.map +1 -1
  12. package/dist/lending/user-data/summary/buildPortfolioTotals.d.ts +2 -2
  13. package/dist/lending/user-data/summary/buildPortfolioTotals.d.ts.map +1 -1
  14. package/dist/lending/user-data/summary/buildSummaries.d.ts +4 -4
  15. package/dist/lending/user-data/summary/buildSummaries.d.ts.map +1 -1
  16. package/dist/lending/user-data/summary/types.d.ts +36 -29
  17. package/dist/lending/user-data/summary/types.d.ts.map +1 -1
  18. package/dist/lending/user-data/summary/utils.d.ts +33 -0
  19. package/dist/lending/user-data/summary/utils.d.ts.map +1 -1
  20. package/dist/yields/fetchGeneralYields.d.ts +2 -1
  21. package/dist/yields/fetchGeneralYields.d.ts.map +1 -1
  22. package/dist/yields/index.d.ts +5 -2
  23. package/dist/yields/index.d.ts.map +1 -1
  24. package/dist/yields/intrinsic/fetchers/angle.d.ts +3 -0
  25. package/dist/yields/intrinsic/fetchers/angle.d.ts.map +1 -0
  26. package/dist/yields/intrinsic/fetchers/coinbase.d.ts +3 -0
  27. package/dist/yields/intrinsic/fetchers/coinbase.d.ts.map +1 -0
  28. package/dist/yields/intrinsic/fetchers/ethena.d.ts +3 -0
  29. package/dist/yields/intrinsic/fetchers/ethena.d.ts.map +1 -0
  30. package/dist/yields/{fetchers → intrinsic/fetchers}/etherfi.d.ts +1 -1
  31. package/dist/yields/intrinsic/fetchers/etherfi.d.ts.map +1 -0
  32. package/dist/yields/intrinsic/fetchers/gmx.d.ts +3 -0
  33. package/dist/yields/intrinsic/fetchers/gmx.d.ts.map +1 -0
  34. package/dist/yields/{fetchers → intrinsic/fetchers}/hyperbeat.d.ts +1 -1
  35. package/dist/yields/intrinsic/fetchers/hyperbeat.d.ts.map +1 -0
  36. package/dist/yields/intrinsic/fetchers/hyperlend.d.ts +3 -0
  37. package/dist/yields/intrinsic/fetchers/hyperlend.d.ts.map +1 -0
  38. package/dist/yields/{fetchers → intrinsic/fetchers}/hyperliquid.d.ts +1 -1
  39. package/dist/yields/intrinsic/fetchers/hyperliquid.d.ts.map +1 -0
  40. package/dist/yields/intrinsic/fetchers/jito.d.ts +3 -0
  41. package/dist/yields/intrinsic/fetchers/jito.d.ts.map +1 -0
  42. package/dist/yields/intrinsic/fetchers/kelp.d.ts +3 -0
  43. package/dist/yields/intrinsic/fetchers/kelp.d.ts.map +1 -0
  44. package/dist/yields/{fetchers → intrinsic/fetchers}/lido.d.ts +1 -1
  45. package/dist/yields/intrinsic/fetchers/lido.d.ts.map +1 -0
  46. package/dist/yields/intrinsic/fetchers/mantle.d.ts +3 -0
  47. package/dist/yields/intrinsic/fetchers/mantle.d.ts.map +1 -0
  48. package/dist/yields/intrinsic/fetchers/maple.d.ts +3 -0
  49. package/dist/yields/intrinsic/fetchers/maple.d.ts.map +1 -0
  50. package/dist/yields/intrinsic/fetchers/morphoVaults.d.ts +3 -0
  51. package/dist/yields/intrinsic/fetchers/morphoVaults.d.ts.map +1 -0
  52. package/dist/yields/intrinsic/fetchers/ondo.d.ts +3 -0
  53. package/dist/yields/intrinsic/fetchers/ondo.d.ts.map +1 -0
  54. package/dist/yields/intrinsic/fetchers/pendle.d.ts +3 -0
  55. package/dist/yields/intrinsic/fetchers/pendle.d.ts.map +1 -0
  56. package/dist/yields/intrinsic/fetchers/puffer.d.ts +3 -0
  57. package/dist/yields/intrinsic/fetchers/puffer.d.ts.map +1 -0
  58. package/dist/yields/intrinsic/fetchers/renzo.d.ts +3 -0
  59. package/dist/yields/intrinsic/fetchers/renzo.d.ts.map +1 -0
  60. package/dist/yields/intrinsic/fetchers/reserve.d.ts +3 -0
  61. package/dist/yields/intrinsic/fetchers/reserve.d.ts.map +1 -0
  62. package/dist/yields/intrinsic/fetchers/reservoir.d.ts +3 -0
  63. package/dist/yields/intrinsic/fetchers/reservoir.d.ts.map +1 -0
  64. package/dist/yields/{fetchers → intrinsic/fetchers}/resolv.d.ts +1 -1
  65. package/dist/yields/intrinsic/fetchers/resolv.d.ts.map +1 -0
  66. package/dist/yields/intrinsic/fetchers/rocketpool.d.ts +3 -0
  67. package/dist/yields/intrinsic/fetchers/rocketpool.d.ts.map +1 -0
  68. package/dist/yields/intrinsic/fetchers/savax.d.ts +3 -0
  69. package/dist/yields/intrinsic/fetchers/savax.d.ts.map +1 -0
  70. package/dist/yields/intrinsic/fetchers/sky.d.ts +3 -0
  71. package/dist/yields/intrinsic/fetchers/sky.d.ts.map +1 -0
  72. package/dist/yields/{fetchers → intrinsic/fetchers}/stader.d.ts +1 -1
  73. package/dist/yields/intrinsic/fetchers/stader.d.ts.map +1 -0
  74. package/dist/yields/intrinsic/fetchers/stakewise.d.ts +3 -0
  75. package/dist/yields/intrinsic/fetchers/stakewise.d.ts.map +1 -0
  76. package/dist/yields/intrinsic/fetchers/superreturn.d.ts +3 -0
  77. package/dist/yields/intrinsic/fetchers/superreturn.d.ts.map +1 -0
  78. package/dist/yields/intrinsic/fetchers/swell.d.ts +3 -0
  79. package/dist/yields/intrinsic/fetchers/swell.d.ts.map +1 -0
  80. package/dist/yields/intrinsic/fetchers/theo.d.ts +3 -0
  81. package/dist/yields/intrinsic/fetchers/theo.d.ts.map +1 -0
  82. package/dist/yields/intrinsic/fetchers/trufin.d.ts +3 -0
  83. package/dist/yields/intrinsic/fetchers/trufin.d.ts.map +1 -0
  84. package/dist/yields/intrinsic/fetchers/usdai.d.ts +3 -0
  85. package/dist/yields/intrinsic/fetchers/usdai.d.ts.map +1 -0
  86. package/dist/yields/intrinsic/fetchers/usdx.d.ts +3 -0
  87. package/dist/yields/intrinsic/fetchers/usdx.d.ts.map +1 -0
  88. package/dist/yields/{fetchers → intrinsic/fetchers}/usual.d.ts +1 -1
  89. package/dist/yields/intrinsic/fetchers/usual.d.ts.map +1 -0
  90. package/dist/yields/intrinsic/fetchers/yearnKatana.d.ts +3 -0
  91. package/dist/yields/intrinsic/fetchers/yearnKatana.d.ts.map +1 -0
  92. package/dist/yields/intrinsic/fetchers/yieldfi.d.ts +3 -0
  93. package/dist/yields/intrinsic/fetchers/yieldfi.d.ts.map +1 -0
  94. package/dist/yields/intrinsic/fetchers/yieldnest.d.ts +3 -0
  95. package/dist/yields/intrinsic/fetchers/yieldnest.d.ts.map +1 -0
  96. package/dist/yields/intrinsic/fetchers/yoProtocol.d.ts +3 -0
  97. package/dist/yields/intrinsic/fetchers/yoProtocol.d.ts.map +1 -0
  98. package/dist/yields/intrinsic/index.d.ts +5 -0
  99. package/dist/yields/intrinsic/index.d.ts.map +1 -0
  100. package/dist/yields/rewards/fetchLenderRewards.d.ts +9 -0
  101. package/dist/yields/rewards/fetchLenderRewards.d.ts.map +1 -0
  102. package/dist/yields/rewards/index.d.ts +5 -0
  103. package/dist/yields/rewards/index.d.ts.map +1 -0
  104. package/dist/yields/rewards/merkl.d.ts +22 -0
  105. package/dist/yields/rewards/merkl.d.ts.map +1 -0
  106. package/dist/yields/rewards/types.d.ts +68 -0
  107. package/dist/yields/rewards/types.d.ts.map +1 -0
  108. package/dist/yields/types.d.ts +18 -6
  109. package/dist/yields/types.d.ts.map +1 -1
  110. package/package.json +3 -3
  111. package/dist/ccip-MRVHO3PE.js +0 -5
  112. package/dist/chunk-QCZNLSVI.js.map +0 -1
  113. package/dist/yields/fetchers/angle.d.ts +0 -3
  114. package/dist/yields/fetchers/angle.d.ts.map +0 -1
  115. package/dist/yields/fetchers/coinbase.d.ts +0 -3
  116. package/dist/yields/fetchers/coinbase.d.ts.map +0 -1
  117. package/dist/yields/fetchers/ethena.d.ts +0 -3
  118. package/dist/yields/fetchers/ethena.d.ts.map +0 -1
  119. package/dist/yields/fetchers/etherfi.d.ts.map +0 -1
  120. package/dist/yields/fetchers/gmx.d.ts +0 -3
  121. package/dist/yields/fetchers/gmx.d.ts.map +0 -1
  122. package/dist/yields/fetchers/hyperbeat.d.ts.map +0 -1
  123. package/dist/yields/fetchers/hyperlend.d.ts +0 -3
  124. package/dist/yields/fetchers/hyperlend.d.ts.map +0 -1
  125. package/dist/yields/fetchers/hyperliquid.d.ts.map +0 -1
  126. package/dist/yields/fetchers/jito.d.ts +0 -3
  127. package/dist/yields/fetchers/jito.d.ts.map +0 -1
  128. package/dist/yields/fetchers/kelp.d.ts +0 -3
  129. package/dist/yields/fetchers/kelp.d.ts.map +0 -1
  130. package/dist/yields/fetchers/lido.d.ts.map +0 -1
  131. package/dist/yields/fetchers/mantle.d.ts +0 -3
  132. package/dist/yields/fetchers/mantle.d.ts.map +0 -1
  133. package/dist/yields/fetchers/maple.d.ts +0 -3
  134. package/dist/yields/fetchers/maple.d.ts.map +0 -1
  135. package/dist/yields/fetchers/morphoVaults.d.ts +0 -3
  136. package/dist/yields/fetchers/morphoVaults.d.ts.map +0 -1
  137. package/dist/yields/fetchers/ondo.d.ts +0 -3
  138. package/dist/yields/fetchers/ondo.d.ts.map +0 -1
  139. package/dist/yields/fetchers/pendle.d.ts +0 -3
  140. package/dist/yields/fetchers/pendle.d.ts.map +0 -1
  141. package/dist/yields/fetchers/puffer.d.ts +0 -3
  142. package/dist/yields/fetchers/puffer.d.ts.map +0 -1
  143. package/dist/yields/fetchers/renzo.d.ts +0 -3
  144. package/dist/yields/fetchers/renzo.d.ts.map +0 -1
  145. package/dist/yields/fetchers/reserve.d.ts +0 -3
  146. package/dist/yields/fetchers/reserve.d.ts.map +0 -1
  147. package/dist/yields/fetchers/reservoir.d.ts +0 -3
  148. package/dist/yields/fetchers/reservoir.d.ts.map +0 -1
  149. package/dist/yields/fetchers/resolv.d.ts.map +0 -1
  150. package/dist/yields/fetchers/rocketpool.d.ts +0 -3
  151. package/dist/yields/fetchers/rocketpool.d.ts.map +0 -1
  152. package/dist/yields/fetchers/savax.d.ts +0 -3
  153. package/dist/yields/fetchers/savax.d.ts.map +0 -1
  154. package/dist/yields/fetchers/sky.d.ts +0 -3
  155. package/dist/yields/fetchers/sky.d.ts.map +0 -1
  156. package/dist/yields/fetchers/stader.d.ts.map +0 -1
  157. package/dist/yields/fetchers/stakewise.d.ts +0 -3
  158. package/dist/yields/fetchers/stakewise.d.ts.map +0 -1
  159. package/dist/yields/fetchers/superreturn.d.ts +0 -3
  160. package/dist/yields/fetchers/superreturn.d.ts.map +0 -1
  161. package/dist/yields/fetchers/swell.d.ts +0 -3
  162. package/dist/yields/fetchers/swell.d.ts.map +0 -1
  163. package/dist/yields/fetchers/theo.d.ts +0 -3
  164. package/dist/yields/fetchers/theo.d.ts.map +0 -1
  165. package/dist/yields/fetchers/trufin.d.ts +0 -3
  166. package/dist/yields/fetchers/trufin.d.ts.map +0 -1
  167. package/dist/yields/fetchers/usdai.d.ts +0 -3
  168. package/dist/yields/fetchers/usdai.d.ts.map +0 -1
  169. package/dist/yields/fetchers/usdx.d.ts +0 -3
  170. package/dist/yields/fetchers/usdx.d.ts.map +0 -1
  171. package/dist/yields/fetchers/usual.d.ts.map +0 -1
  172. package/dist/yields/fetchers/yearnKatana.d.ts +0 -3
  173. package/dist/yields/fetchers/yearnKatana.d.ts.map +0 -1
  174. package/dist/yields/fetchers/yieldfi.d.ts +0 -3
  175. package/dist/yields/fetchers/yieldfi.d.ts.map +0 -1
  176. package/dist/yields/fetchers/yieldnest.d.ts +0 -3
  177. package/dist/yields/fetchers/yieldnest.d.ts.map +0 -1
  178. package/dist/yields/fetchers/yoProtocol.d.ts +0 -3
  179. package/dist/yields/fetchers/yoProtocol.d.ts.map +0 -1
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { parseAbi, formatEther, BaseError, encodeFunctionData, formatUnits, decodeFunctionResult, decodeAbiParameters, AbiEncodingLengthMismatchError, concatHex, isAddress, InvalidAddressError, pad, stringToHex, boolToHex, integerRegex, numberToHex, bytesRegex, BytesSizeMismatchError, arrayRegex, UnsupportedPackedAbiType } from './chunk-QCZNLSVI.js';
1
+ import { parseAbi, formatEther, BaseError, encodeFunctionData, formatUnits, decodeFunctionResult, decodeAbiParameters, AbiEncodingLengthMismatchError, concatHex, isAddress, InvalidAddressError, pad, stringToHex, boolToHex, integerRegex, numberToHex, bytesRegex, BytesSizeMismatchError, arrayRegex, UnsupportedPackedAbiType } from './chunk-ZVIJSUIM.js';
2
2
  import './chunk-BYTNVMX7.js';
3
3
  import './chunk-PR4QN5HX.js';
4
4
  import { Lender, isAaveType, isCompoundV3, isMultiMarket, isInit, isCompoundV2Type, isVenusType, isMorphoType, isSumerType, AAVE_V3_LENDERS, AAVE_V2_LENDERS, isAaveV2Type, isAaveV32Type, isAaveV3Type, isYLDR, isCompoundV3Type, isTectonicType, isBenqiType, isLista } from '@1delta/lender-registry';
@@ -7848,7 +7848,7 @@ var buildCompoundV3StyleLenderReserveCall = (chainId, lender) => {
7848
7848
  return calls;
7849
7849
  };
7850
7850
 
7851
- // ../../node_modules/.pnpm/viem@2.45.1_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.3.6/node_modules/viem/_esm/utils/abi/encodePacked.js
7851
+ // ../../node_modules/.pnpm/viem@2.45.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.3.6/node_modules/viem/_esm/utils/abi/encodePacked.js
7852
7852
  function encodePacked(types, values) {
7853
7853
  if (types.length !== values.length)
7854
7854
  throw new AbiEncodingLengthMismatchError({
@@ -7911,7 +7911,7 @@ function encode(type, value, isArray2 = false) {
7911
7911
  throw new UnsupportedPackedAbiType(type);
7912
7912
  }
7913
7913
 
7914
- // ../../node_modules/.pnpm/viem@2.45.1_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.3.6/node_modules/viem/_esm/errors/unit.js
7914
+ // ../../node_modules/.pnpm/viem@2.45.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.3.6/node_modules/viem/_esm/errors/unit.js
7915
7915
  var InvalidDecimalNumberError = class extends BaseError {
7916
7916
  constructor({ value }) {
7917
7917
  super(`Number \`${value}\` is not a valid decimal number.`, {
@@ -7920,7 +7920,7 @@ var InvalidDecimalNumberError = class extends BaseError {
7920
7920
  }
7921
7921
  };
7922
7922
 
7923
- // ../../node_modules/.pnpm/viem@2.45.1_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.3.6/node_modules/viem/_esm/utils/unit/parseUnits.js
7923
+ // ../../node_modules/.pnpm/viem@2.45.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.3.6/node_modules/viem/_esm/utils/unit/parseUnits.js
7924
7924
  function parseUnits(value, decimals) {
7925
7925
  if (!/^(-?)([0-9]*)\.?([0-9]*)$/.test(value))
7926
7926
  throw new InvalidDecimalNumberError({ value });
@@ -7955,7 +7955,7 @@ function parseUnits(value, decimals) {
7955
7955
  return BigInt(`${negative ? "-" : ""}${integer}${fraction}`);
7956
7956
  }
7957
7957
 
7958
- // ../../node_modules/.pnpm/viem@2.45.1_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.3.6/node_modules/viem/_esm/constants/address.js
7958
+ // ../../node_modules/.pnpm/viem@2.45.3_bufferutil@4.1.0_typescript@5.9.3_utf-8-validate@5.0.10_zod@4.3.6/node_modules/viem/_esm/constants/address.js
7959
7959
  var zeroAddress = "0x0000000000000000000000000000000000000000";
7960
7960
 
7961
7961
  // src/utils/parsing.ts
@@ -17482,8 +17482,10 @@ var getCompoundV2UserDataConverter = (lender, chainId, account, metaMap) => {
17482
17482
  }
17483
17483
  };
17484
17484
  function createCompoundV2Entry(i, data, key, assetsIn, vToken, meta, claimableRewards) {
17485
- const depositsRaw = data[3 * i].toString();
17486
- const borrowsRaw = data[3 * i + 1].toString();
17485
+ const _depositsRaw = data[3 * i].toString();
17486
+ const _borrowsRaw = data[3 * i + 1].toString();
17487
+ const depositsRaw = _depositsRaw === "0x" ? "0" : _depositsRaw;
17488
+ const borrowsRaw = _borrowsRaw === "0x" ? "0" : _borrowsRaw;
17487
17489
  const depositShares = data[3 * i + 2].toString();
17488
17490
  const collateralEnabled = Boolean(assetsIn?.includes(vToken));
17489
17491
  if (!collateralEnabled && depositsRaw === "0" && borrowsRaw === "0") {
@@ -23478,13 +23480,32 @@ function calculateOverallNetApr(totalDepositsUSD, totalDebtUSD, avgDepositApr, a
23478
23480
  if (totalNetWorth === 0) return 0;
23479
23481
  return (totalDepositsUSD * avgDepositApr - totalDebtUSD * avgBorrowApr) / Math.abs(totalNetWorth) * (totalNetWorth > 0 ? 1 : -1);
23480
23482
  }
23483
+ function calculateWeightedAprs(items) {
23484
+ const wa = (field5, weightField) => calculateWeightedAverage(
23485
+ items.filter((i) => i[weightField] !== 0).map((i) => ({ value: i[field5], weight: Math.abs(i[weightField]) }))
23486
+ );
23487
+ return {
23488
+ apr: wa("apr", "nav"),
23489
+ depositApr: wa("depositApr", "deposits"),
23490
+ borrowApr: wa("borrowApr", "debt"),
23491
+ rewardApr: wa("rewardApr", "nav"),
23492
+ rewardDepositApr: wa("rewardDepositApr", "deposits"),
23493
+ rewardBorrowApr: wa("rewardBorrowApr", "debt"),
23494
+ intrinsicApr: wa("intrinsicApr", "nav"),
23495
+ intrinsicDepositApr: wa("intrinsicDepositApr", "deposits"),
23496
+ intrinsicBorrowApr: wa("intrinsicBorrowApr", "debt")
23497
+ };
23498
+ }
23481
23499
 
23482
23500
  // src/lending/user-data/summary/buildPortfolioTotals.ts
23483
23501
  function buildPortfolioTotals(userDataResult) {
23484
- let totalDepositsUSD = 0;
23485
- let totalDebtUSD = 0;
23486
- let totalRewardApr = 0;
23502
+ let totalDeposits = 0;
23503
+ let totalDebt = 0;
23504
+ let totalCollateral = 0;
23505
+ let totalCollateralAllActive = 0;
23487
23506
  let totalNav24h = 0;
23507
+ let totalDeposits24h = 0;
23508
+ let totalDebt24h = 0;
23488
23509
  let lenderCount = 0;
23489
23510
  const aprItems = [];
23490
23511
  const activeChains = /* @__PURE__ */ new Set();
@@ -23492,61 +23513,51 @@ function buildPortfolioTotals(userDataResult) {
23492
23513
  activeChains.add(chainId);
23493
23514
  for (const [, userData] of Object.entries(lenders)) {
23494
23515
  lenderCount++;
23495
- let lenderDeposits = 0;
23496
- let lenderDebt = 0;
23497
- let lenderDepositAprSum = 0;
23498
- let lenderBorrowAprSum = 0;
23499
- let lenderDepositWeight = 0;
23500
- let lenderDebtWeight = 0;
23501
23516
  for (const subAccount of userData.data) {
23502
23517
  const { balanceData: balanceData2, aprData: aprData2 } = subAccount;
23503
- lenderDeposits += balanceData2.deposits;
23504
- lenderDebt += balanceData2.debt;
23505
- if (balanceData2.deposits > 0) {
23506
- lenderDepositAprSum += aprData2.depositApr * balanceData2.deposits;
23507
- lenderDepositWeight += balanceData2.deposits;
23508
- }
23509
- if (balanceData2.debt > 0) {
23510
- lenderBorrowAprSum += aprData2.borrowApr * balanceData2.debt;
23511
- lenderDebtWeight += balanceData2.debt;
23512
- }
23518
+ totalDeposits += balanceData2.deposits;
23519
+ totalDebt += balanceData2.debt;
23520
+ totalCollateral += balanceData2.collateral;
23521
+ totalCollateralAllActive += balanceData2.collateralAllActive;
23513
23522
  totalNav24h += balanceData2.nav24h ?? 0;
23514
- totalRewardApr += aprData2.rewardApr + aprData2.rewardDepositApr + aprData2.rewardBorrowApr + aprData2.intrinsicApr;
23515
- }
23516
- totalDepositsUSD += lenderDeposits;
23517
- totalDebtUSD += lenderDebt;
23518
- if (lenderDepositWeight > 0) {
23523
+ totalDeposits24h += balanceData2.deposits24h ?? 0;
23524
+ totalDebt24h += balanceData2.debt24h ?? 0;
23519
23525
  aprItems.push({
23520
- depositApr: lenderDepositAprSum / lenderDepositWeight,
23521
- borrowApr: lenderDebtWeight > 0 ? lenderBorrowAprSum / lenderDebtWeight : 0,
23522
- deposits: lenderDeposits,
23523
- debt: lenderDebt
23526
+ deposits: balanceData2.deposits,
23527
+ debt: balanceData2.debt,
23528
+ nav: balanceData2.deposits - balanceData2.debt,
23529
+ apr: aprData2.apr,
23530
+ depositApr: aprData2.depositApr,
23531
+ borrowApr: aprData2.borrowApr,
23532
+ rewardApr: aprData2.rewardApr,
23533
+ rewardDepositApr: aprData2.rewardDepositApr,
23534
+ rewardBorrowApr: aprData2.rewardBorrowApr,
23535
+ intrinsicApr: aprData2.intrinsicApr,
23536
+ intrinsicDepositApr: aprData2.intrinsicDepositApr,
23537
+ intrinsicBorrowApr: aprData2.intrinsicBorrowApr
23524
23538
  });
23525
23539
  }
23526
23540
  }
23527
23541
  }
23528
- const totalNetWorth = totalDepositsUSD - totalDebtUSD;
23529
- const totalDepositWeight = aprItems.reduce((sum, a) => sum + a.deposits, 0);
23530
- const avgDepositApr = totalDepositWeight > 0 ? aprItems.reduce((sum, a) => sum + a.depositApr * a.deposits, 0) / totalDepositWeight : 0;
23531
- const totalDebtWeight = aprItems.reduce((sum, a) => sum + a.debt, 0);
23532
- const avgBorrowApr = totalDebtWeight > 0 ? aprItems.filter((a) => a.debt > 0).reduce((sum, a) => sum + a.borrowApr * a.debt, 0) / totalDebtWeight : 0;
23533
- const avgNetApr = calculateOverallNetApr(
23534
- totalDepositsUSD,
23535
- totalDebtUSD,
23536
- avgDepositApr,
23537
- avgBorrowApr
23538
- );
23539
- const overallLeverage = calculateLeverage(totalDepositsUSD, totalNetWorth);
23542
+ const totalNav = totalDeposits - totalDebt;
23543
+ const leverage = calculateLeverage(totalDeposits, totalNav);
23544
+ const weightedAprs = calculateWeightedAprs(aprItems);
23540
23545
  return {
23541
- totalDepositsUSD,
23542
- totalDebtUSD,
23543
- totalNetWorth,
23544
- totalNetWorth24h: totalNav24h,
23545
- avgDepositApr,
23546
- avgBorrowApr,
23547
- avgNetApr,
23548
- totalRewardApr,
23549
- overallLeverage,
23546
+ balanceData: {
23547
+ deposits: totalDeposits,
23548
+ debt: totalDebt,
23549
+ collateral: totalCollateral,
23550
+ collateralAllActive: totalCollateralAllActive,
23551
+ nav: totalNav,
23552
+ deposits24h: totalDeposits24h,
23553
+ debt24h: totalDebt24h,
23554
+ nav24h: totalNav24h
23555
+ },
23556
+ aprData: {
23557
+ ...weightedAprs,
23558
+ rewards: {}
23559
+ },
23560
+ leverage,
23550
23561
  activeLenders: lenderCount,
23551
23562
  activeChains: activeChains.size
23552
23563
  };
@@ -23560,79 +23571,82 @@ function lenderSortPriority(lender) {
23560
23571
  }
23561
23572
  function aggregateLenderData(lender, userData) {
23562
23573
  const { chainId, data } = userData;
23563
- let totalDepositsUSD = 0;
23564
- let totalDebtUSD = 0;
23574
+ let totalDeposits = 0;
23575
+ let totalDebt = 0;
23565
23576
  let totalCollateral = 0;
23577
+ let totalCollateralAllActive = 0;
23566
23578
  let totalNav24h = 0;
23579
+ let totalDeposits24h = 0;
23580
+ let totalDebt24h = 0;
23567
23581
  const subAccountSummaries = [];
23568
23582
  const aprItems = [];
23569
- let totalRewardApr = 0;
23570
- let healthSum = 0;
23571
- let healthCount = 0;
23572
23583
  for (const subAccount of data) {
23573
- const { balanceData: balanceData2, aprData: aprData2, positions, health, accountId, userConfig } = subAccount;
23574
- totalDepositsUSD += balanceData2.deposits;
23575
- totalDebtUSD += balanceData2.debt;
23576
- totalCollateral += balanceData2.collateral;
23577
- totalNav24h += balanceData2.nav24h ?? 0;
23578
- if (balanceData2.deposits > 0) {
23579
- aprItems.push({
23580
- depositApr: aprData2.depositApr,
23581
- borrowApr: aprData2.borrowApr,
23582
- weight: balanceData2.deposits
23583
- });
23584
- }
23585
- totalRewardApr += aprData2.rewardApr + aprData2.rewardDepositApr + aprData2.rewardBorrowApr + aprData2.intrinsicApr;
23586
- if (health !== null && health > 0) {
23587
- healthSum += health;
23588
- healthCount++;
23589
- }
23584
+ const { balanceData: balanceData3, aprData: aprData2, positions, health, accountId, userConfig } = subAccount;
23585
+ totalDeposits += balanceData3.deposits;
23586
+ totalDebt += balanceData3.debt;
23587
+ totalCollateral += balanceData3.collateral;
23588
+ totalCollateralAllActive += balanceData3.collateralAllActive;
23589
+ totalNav24h += balanceData3.nav24h ?? 0;
23590
+ totalDeposits24h += balanceData3.deposits24h ?? 0;
23591
+ totalDebt24h += balanceData3.debt24h ?? 0;
23592
+ aprItems.push({
23593
+ deposits: balanceData3.deposits,
23594
+ debt: balanceData3.debt,
23595
+ nav: balanceData3.deposits - balanceData3.debt,
23596
+ apr: aprData2.apr,
23597
+ depositApr: aprData2.depositApr,
23598
+ borrowApr: aprData2.borrowApr,
23599
+ rewardApr: aprData2.rewardApr,
23600
+ rewardDepositApr: aprData2.rewardDepositApr,
23601
+ rewardBorrowApr: aprData2.rewardBorrowApr,
23602
+ intrinsicApr: aprData2.intrinsicApr,
23603
+ intrinsicDepositApr: aprData2.intrinsicDepositApr,
23604
+ intrinsicBorrowApr: aprData2.intrinsicBorrowApr
23605
+ });
23590
23606
  subAccountSummaries.push({
23591
23607
  accountId,
23592
23608
  health,
23593
- balanceData: balanceData2,
23609
+ balanceData: balanceData3,
23594
23610
  aprData: aprData2,
23595
23611
  userConfig,
23596
23612
  positionCount: positions.length
23597
23613
  });
23598
23614
  }
23599
- const netWorth = totalDepositsUSD - totalDebtUSD;
23600
- const depositApr = calculateWeightedAverage(
23601
- aprItems.map((a) => ({ value: a.depositApr, weight: a.weight }))
23602
- );
23603
- const borrowApr = calculateWeightedAverage(
23604
- aprItems.map((a) => ({
23605
- value: a.borrowApr,
23606
- weight: a.weight * (a.borrowApr > 0 ? 1 : 0)
23607
- }))
23608
- );
23609
- const netApr = netWorth !== 0 ? (totalDepositsUSD * depositApr - totalDebtUSD * borrowApr) / netWorth * (netWorth > 0 ? 1 : -1) : 0;
23610
- const leverage = calculateLeverage(totalDepositsUSD, netWorth);
23611
- const healthFactor = healthCount > 0 ? healthSum / healthCount : totalDebtUSD > 0 ? null : null;
23615
+ const nav = totalDeposits - totalDebt;
23616
+ const leverage = calculateLeverage(totalDeposits, nav);
23617
+ const weightedAprs = calculateWeightedAprs(aprItems);
23618
+ const balanceData2 = {
23619
+ deposits: totalDeposits,
23620
+ debt: totalDebt,
23621
+ collateral: totalCollateral,
23622
+ collateralAllActive: totalCollateralAllActive,
23623
+ nav,
23624
+ deposits24h: totalDeposits24h,
23625
+ debt24h: totalDebt24h,
23626
+ nav24h: totalNav24h
23627
+ };
23612
23628
  return {
23613
23629
  lender,
23614
23630
  chainId,
23615
- totalDepositsUSD,
23616
- totalDebtUSD,
23617
- netWorth,
23618
- netWorth24h: totalNav24h,
23619
- depositApr,
23620
- borrowApr,
23621
- netApr,
23622
- rewardApr: totalRewardApr,
23623
- healthFactor,
23631
+ balanceData: balanceData2,
23632
+ aprData: {
23633
+ ...weightedAprs,
23634
+ rewards: {}
23635
+ },
23624
23636
  leverage,
23625
- collateral: totalCollateral,
23626
23637
  subAccounts: subAccountSummaries
23627
23638
  };
23628
23639
  }
23629
23640
  function buildSummaries(userDataResult) {
23630
23641
  const lenderSummaries = [];
23631
23642
  const chainMap = {};
23632
- let totalDepositsUSD = 0;
23633
- let totalDebtUSD = 0;
23634
- let totalRewardApr = 0;
23643
+ let totalDeposits = 0;
23644
+ let totalDebt = 0;
23635
23645
  let totalNav24h = 0;
23646
+ let totalDeposits24h = 0;
23647
+ let totalDebt24h = 0;
23648
+ let totalCollateral = 0;
23649
+ let totalCollateralAllActive = 0;
23636
23650
  const aprItems = [];
23637
23651
  const activeChains = /* @__PURE__ */ new Set();
23638
23652
  for (const [chainId, lenders] of Object.entries(userDataResult)) {
@@ -23649,51 +23663,55 @@ function buildSummaries(userDataResult) {
23649
23663
  for (const [lender, userData] of Object.entries(lenders)) {
23650
23664
  const summary = aggregateLenderData(lender, userData);
23651
23665
  lenderSummaries.push(summary);
23652
- totalDepositsUSD += summary.totalDepositsUSD;
23653
- totalDebtUSD += summary.totalDebtUSD;
23654
- totalRewardApr += summary.rewardApr;
23655
- totalNav24h += summary.netWorth24h;
23656
- if (summary.totalDepositsUSD > 0) {
23657
- aprItems.push({
23658
- depositApr: summary.depositApr,
23659
- borrowApr: summary.borrowApr,
23660
- deposits: summary.totalDepositsUSD,
23661
- debt: summary.totalDebtUSD
23662
- });
23663
- }
23664
- chainMap[chainId].totalDepositsUSD += summary.totalDepositsUSD;
23665
- chainMap[chainId].totalDebtUSD += summary.totalDebtUSD;
23666
+ totalDeposits += summary.balanceData.deposits;
23667
+ totalDebt += summary.balanceData.debt;
23668
+ totalNav24h += summary.balanceData.nav24h;
23669
+ totalDeposits24h += summary.balanceData.deposits24h;
23670
+ totalDebt24h += summary.balanceData.debt24h;
23671
+ totalCollateral += summary.balanceData.collateral;
23672
+ totalCollateralAllActive += summary.balanceData.collateralAllActive;
23673
+ aprItems.push({
23674
+ deposits: summary.balanceData.deposits,
23675
+ debt: summary.balanceData.debt,
23676
+ nav: summary.balanceData.nav,
23677
+ apr: summary.aprData.apr,
23678
+ depositApr: summary.aprData.depositApr,
23679
+ borrowApr: summary.aprData.borrowApr,
23680
+ rewardApr: summary.aprData.rewardApr,
23681
+ rewardDepositApr: summary.aprData.rewardDepositApr,
23682
+ rewardBorrowApr: summary.aprData.rewardBorrowApr,
23683
+ intrinsicApr: summary.aprData.intrinsicApr,
23684
+ intrinsicDepositApr: summary.aprData.intrinsicDepositApr,
23685
+ intrinsicBorrowApr: summary.aprData.intrinsicBorrowApr
23686
+ });
23687
+ chainMap[chainId].totalDepositsUSD += summary.balanceData.deposits;
23688
+ chainMap[chainId].totalDebtUSD += summary.balanceData.debt;
23666
23689
  chainMap[chainId].lenderCount++;
23667
23690
  }
23668
23691
  chainMap[chainId].netWorth = chainMap[chainId].totalDepositsUSD - chainMap[chainId].totalDebtUSD;
23669
23692
  }
23670
- const totalNetWorth = totalDepositsUSD - totalDebtUSD;
23671
- const avgDepositApr = calculateWeightedAverage(
23672
- aprItems.map((a) => ({ value: a.depositApr, weight: a.deposits }))
23673
- );
23674
- const avgBorrowApr = calculateWeightedAverage(
23675
- aprItems.filter((a) => a.debt > 0).map((a) => ({ value: a.borrowApr, weight: a.debt }))
23676
- );
23677
- const avgNetApr = calculateOverallNetApr(
23678
- totalDepositsUSD,
23679
- totalDebtUSD,
23680
- avgDepositApr,
23681
- avgBorrowApr
23682
- );
23683
- const overallLeverage = calculateLeverage(totalDepositsUSD, totalNetWorth);
23693
+ const totalNav = totalDeposits - totalDebt;
23694
+ const leverage = calculateLeverage(totalDeposits, totalNav);
23695
+ const weightedAprs = calculateWeightedAprs(aprItems);
23684
23696
  lenderSummaries.sort(
23685
- (a, b) => b.netWorth - a.netWorth || lenderSortPriority(a.lender) - lenderSortPriority(b.lender) || a.lender.localeCompare(b.lender)
23697
+ (a, b) => b.balanceData.nav - a.balanceData.nav || lenderSortPriority(a.lender) - lenderSortPriority(b.lender) || a.lender.localeCompare(b.lender)
23686
23698
  );
23687
23699
  return {
23688
- totalDepositsUSD,
23689
- totalDebtUSD,
23690
- totalNetWorth,
23691
- totalNetWorth24h: totalNav24h,
23692
- avgDepositApr,
23693
- avgBorrowApr,
23694
- avgNetApr,
23695
- totalRewardApr,
23696
- overallLeverage,
23700
+ balanceData: {
23701
+ deposits: totalDeposits,
23702
+ debt: totalDebt,
23703
+ collateral: totalCollateral,
23704
+ collateralAllActive: totalCollateralAllActive,
23705
+ nav: totalNav,
23706
+ deposits24h: totalDeposits24h,
23707
+ debt24h: totalDebt24h,
23708
+ nav24h: totalNav24h
23709
+ },
23710
+ aprData: {
23711
+ ...weightedAprs,
23712
+ rewards: {}
23713
+ },
23714
+ leverage,
23697
23715
  activeLenders: lenderSummaries.length,
23698
23716
  activeChains: activeChains.size,
23699
23717
  lenders: lenderSummaries,
@@ -23702,7 +23720,7 @@ function buildSummaries(userDataResult) {
23702
23720
  }
23703
23721
  function filterActiveLenders(summary) {
23704
23722
  const activeLenders = summary.lenders.filter(
23705
- (l) => l.totalDepositsUSD > 0 || l.totalDebtUSD > 0
23723
+ (l) => l.balanceData.deposits > 0 || l.balanceData.debt > 0
23706
23724
  );
23707
23725
  return {
23708
23726
  ...summary,
@@ -23725,7 +23743,7 @@ function fuseLenderData(userDataResult, summary) {
23725
23743
  });
23726
23744
  }
23727
23745
  entries.sort(
23728
- (a, b) => b.netWorth - a.netWorth || lenderSortPriority(a.lender) - lenderSortPriority(b.lender) || a.lender.localeCompare(b.lender)
23746
+ (a, b) => b.balanceData.nav - a.balanceData.nav || lenderSortPriority(a.lender) - lenderSortPriority(b.lender) || a.lender.localeCompare(b.lender)
23729
23747
  );
23730
23748
  return entries;
23731
23749
  }
@@ -24913,7 +24931,7 @@ async function getListsMulti(chainIds) {
24913
24931
  return res;
24914
24932
  }
24915
24933
 
24916
- // src/yields/fetchers/lido.ts
24934
+ // src/yields/intrinsic/fetchers/lido.ts
24917
24935
  var WSTETH_URL = "https://eth-api.lido.fi/v1/protocol/steth/apr/sma";
24918
24936
  var tETH = "Treehouse ETH::TETH";
24919
24937
  var wstethFetcher = {
@@ -24934,7 +24952,7 @@ var stmaticFetcher = {
24934
24952
  }
24935
24953
  };
24936
24954
 
24937
- // src/yields/fetchers/renzo.ts
24955
+ // src/yields/intrinsic/fetchers/renzo.ts
24938
24956
  var EZETH_URL = "https://app.renzoprotocol.com/api/stats?chainId=1";
24939
24957
  var ezethFetcher = {
24940
24958
  label: "EZETH",
@@ -24944,7 +24962,7 @@ var ezethFetcher = {
24944
24962
  }
24945
24963
  };
24946
24964
 
24947
- // src/yields/fetchers/rocketpool.ts
24965
+ // src/yields/intrinsic/fetchers/rocketpool.ts
24948
24966
  var RETH_URL = "https://api.rocketpool.net/api/mainnet/payload";
24949
24967
  var rethFetcher = {
24950
24968
  label: "RETH",
@@ -24954,7 +24972,7 @@ var rethFetcher = {
24954
24972
  }
24955
24973
  };
24956
24974
 
24957
- // src/yields/fetchers/etherfi.ts
24975
+ // src/yields/intrinsic/fetchers/etherfi.ts
24958
24976
  var WEETH_URL = "https://www.ether.fi/api/apr";
24959
24977
  var WEETHS_URL = "https://api.sevenseas.capital/etherfi/ethereum/performance/0x917ceE801a67f933F2e6b33fC0cD1ED2d5909D88";
24960
24978
  var weeths = "Super Symbiotic LRT::weETHs";
@@ -24981,7 +24999,7 @@ var weethsFetcher = {
24981
24999
  }
24982
25000
  };
24983
25001
 
24984
- // src/yields/fetchers/mantle.ts
25002
+ // src/yields/intrinsic/fetchers/mantle.ts
24985
25003
  var METH_URL = "https://meth.mantle.xyz/api/stats/apy";
24986
25004
  var methFetcher = {
24987
25005
  label: "METH",
@@ -24992,7 +25010,7 @@ var methFetcher = {
24992
25010
  }
24993
25011
  };
24994
25012
 
24995
- // src/yields/fetchers/ethena.ts
25013
+ // src/yields/intrinsic/fetchers/ethena.ts
24996
25014
  var SUSDE_URL = "https://yields.llama.fi/poolsEnriched?pool=66985a81-9c51-46ca-9977-42b4fe7bc6df";
24997
25015
  var susdeFetcher = {
24998
25016
  label: "SUSDE",
@@ -25006,7 +25024,7 @@ var susdeFetcher = {
25006
25024
  }
25007
25025
  };
25008
25026
 
25009
- // src/yields/fetchers/stader.ts
25027
+ // src/yields/intrinsic/fetchers/stader.ts
25010
25028
  var MATICX_URL = "https://universe.staderlabs.com/polygon/apy";
25011
25029
  var ETHX_URL = "https://universe.staderlabs.com/eth/apy";
25012
25030
  var ethX = "Stader ETHx::ETHx";
@@ -25025,7 +25043,7 @@ var ethxFetcher = {
25025
25043
  }
25026
25044
  };
25027
25045
 
25028
- // src/yields/fetchers/savax.ts
25046
+ // src/yields/intrinsic/fetchers/savax.ts
25029
25047
  var SAVAX_URL = "https://api.benqi.fi/liquidstaking/apr";
25030
25048
  var savaxFetcher = {
25031
25049
  label: "SAVAX",
@@ -25035,7 +25053,7 @@ var savaxFetcher = {
25035
25053
  }
25036
25054
  };
25037
25055
 
25038
- // src/yields/fetchers/coinbase.ts
25056
+ // src/yields/intrinsic/fetchers/coinbase.ts
25039
25057
  var CBETH_URL = "https://api.exchange.coinbase.com/wrapped-assets/cbeth";
25040
25058
  var cbethFetcher = {
25041
25059
  label: "CBETH",
@@ -25055,7 +25073,7 @@ var cbethFetcher = {
25055
25073
  }
25056
25074
  };
25057
25075
 
25058
- // src/yields/fetchers/kelp.ts
25076
+ // src/yields/intrinsic/fetchers/kelp.ts
25059
25077
  var RSETH_URL = "https://universe.kelpdao.xyz/rseth/totalApy";
25060
25078
  var rsethFetcher = {
25061
25079
  label: "RSETH",
@@ -25065,7 +25083,7 @@ var rsethFetcher = {
25065
25083
  }
25066
25084
  };
25067
25085
 
25068
- // src/yields/fetchers/trufin.ts
25086
+ // src/yields/intrinsic/fetchers/trufin.ts
25069
25087
  var TRUMATIC_URL = "https://api.trufin.io/staker/apy?staker=MATIC";
25070
25088
  var trumaticFetcher = {
25071
25089
  label: "TRUMATIC",
@@ -25075,7 +25093,7 @@ var trumaticFetcher = {
25075
25093
  }
25076
25094
  };
25077
25095
 
25078
- // src/yields/fetchers/stakewise.ts
25096
+ // src/yields/intrinsic/fetchers/stakewise.ts
25079
25097
  var OSETH_URL = "https://graphs.stakewise.io/mainnet-a/subgraphs/name/stakewise/prod?opName=osTokenApy";
25080
25098
  var osETH = "StakeWise Staked ETH::OSETH";
25081
25099
  var osethFetcher = {
@@ -25093,7 +25111,7 @@ var osethFetcher = {
25093
25111
  }
25094
25112
  };
25095
25113
 
25096
- // src/yields/fetchers/yieldnest.ts
25114
+ // src/yields/intrinsic/fetchers/yieldnest.ts
25097
25115
  var YNETHX_URL = "https://gateway.yieldnest.finance/api/v1/graphql";
25098
25116
  var ynethx = "ynETH MAX::YNETHX";
25099
25117
  var ynethxFetcher = {
@@ -25118,7 +25136,7 @@ var ynethxFetcher = {
25118
25136
  }
25119
25137
  };
25120
25138
 
25121
- // src/yields/fetchers/puffer.ts
25139
+ // src/yields/intrinsic/fetchers/puffer.ts
25122
25140
  var PUFETH_URL = "https://api-v2.puffer.fi/backend-for-frontend/tvl/all";
25123
25141
  var pufEth = "PUFETH";
25124
25142
  var pufethFetcher = {
@@ -25132,7 +25150,7 @@ var pufethFetcher = {
25132
25150
  }
25133
25151
  };
25134
25152
 
25135
- // src/yields/fetchers/sky.ts
25153
+ // src/yields/intrinsic/fetchers/sky.ts
25136
25154
  var SUSDS_URL = "https://info-sky.blockanalitica.com/api/v1/overall/?format=json";
25137
25155
  var sUsds = "sUSDS::SUSDS";
25138
25156
  var susdsFetcher = {
@@ -25148,7 +25166,7 @@ var susdsFetcher = {
25148
25166
  }
25149
25167
  };
25150
25168
 
25151
- // src/yields/fetchers/reservoir.ts
25169
+ // src/yields/intrinsic/fetchers/reservoir.ts
25152
25170
  var SRUSD_URL = "https://app.reservoir.xyz/api/website";
25153
25171
  var srUsd = "Reservoir srUSD::SRUSD";
25154
25172
  var wsrusd = "Wrapped Savings rUSD::WSRUSD";
@@ -25167,7 +25185,7 @@ var srusdFetcher = {
25167
25185
  }
25168
25186
  };
25169
25187
 
25170
- // src/yields/fetchers/yieldfi.ts
25188
+ // src/yields/intrinsic/fetchers/yieldfi.ts
25171
25189
  var YUSD_URL = "https://ctrl.yield.fi/t/yusd/apy";
25172
25190
  var yusd = "YieldFi yUSD::yUSD";
25173
25191
  var yusdFetcher = {
@@ -25181,7 +25199,7 @@ var yusdFetcher = {
25181
25199
  }
25182
25200
  };
25183
25201
 
25184
- // src/yields/fetchers/resolv.ts
25202
+ // src/yields/intrinsic/fetchers/resolv.ts
25185
25203
  var RLP_URL = "https://api.resolv.xyz/apr/rlp/7d";
25186
25204
  var WSTUSR_URL = "https://api.resolv.xyz/apr/staking/7d";
25187
25205
  var rlp = "Resolv RLP::RLP";
@@ -25213,7 +25231,7 @@ var wstusrFetcher = {
25213
25231
  }
25214
25232
  };
25215
25233
 
25216
- // src/yields/fetchers/morphoVaults.ts
25234
+ // src/yields/intrinsic/fetchers/morphoVaults.ts
25217
25235
  var MORPHO_VAULTS_URL = "https://blue-api.morpho.org/graphql";
25218
25236
  var csusdl = "Coinshift USDL Morpho Vault::CSUSDL";
25219
25237
  var csusdlFetcher = {
@@ -25236,7 +25254,7 @@ var csusdlFetcher = {
25236
25254
  }
25237
25255
  };
25238
25256
 
25239
- // src/yields/fetchers/swell.ts
25257
+ // src/yields/intrinsic/fetchers/swell.ts
25240
25258
  var RSWETH_URL = "https://v3-lst.svc.swellnetwork.io/api/tokens/sweth/apr";
25241
25259
  var rsweth = "Restaked Swell ETH::RSWETH";
25242
25260
  var rswethFetcher = {
@@ -25250,7 +25268,7 @@ var rswethFetcher = {
25250
25268
  }
25251
25269
  };
25252
25270
 
25253
- // src/yields/fetchers/usual.ts
25271
+ // src/yields/intrinsic/fetchers/usual.ts
25254
25272
  var USDZEROPLUS_URL = "https://app.usual.money/api/rewards/rates/USD0++";
25255
25273
  var ETHZERO_URL = "https://app.usual.money/api/rewards/rates/ETH0";
25256
25274
  var usdZeroPlus = "Staked USD0::USD0++";
@@ -25276,7 +25294,7 @@ var ethZeroFetcher = {
25276
25294
  }
25277
25295
  };
25278
25296
 
25279
- // src/yields/fetchers/jito.ts
25297
+ // src/yields/intrinsic/fetchers/jito.ts
25280
25298
  var JITOSOL_URL = "https://www.jito.network/api/getJitoPoolStats/";
25281
25299
  var jitoSol = "Jito Staked SOL::JitoSOL";
25282
25300
  var jitoSolFetcher = {
@@ -25291,7 +25309,7 @@ var jitoSolFetcher = {
25291
25309
  }
25292
25310
  };
25293
25311
 
25294
- // src/yields/fetchers/theo.ts
25312
+ // src/yields/intrinsic/fetchers/theo.ts
25295
25313
  var THBILL_URL = "https://thbill-api.theo.xyz/snapshots";
25296
25314
  var thBill = "Theo Short Duration US Treasury Fund::THBILL";
25297
25315
  var thbillFetcher = {
@@ -25307,7 +25325,7 @@ var thbillFetcher = {
25307
25325
  }
25308
25326
  };
25309
25327
 
25310
- // src/yields/fetchers/superreturn.ts
25328
+ // src/yields/intrinsic/fetchers/superreturn.ts
25311
25329
  var SSUPERUSD_URL = "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";
25312
25330
  var ssuperusd = "SuperReturn sSuperUSD::SSUPERUSD";
25313
25331
  var ssuperusdFetcher = {
@@ -25325,7 +25343,7 @@ var ssuperusdFetcher = {
25325
25343
  }
25326
25344
  };
25327
25345
 
25328
- // src/yields/fetchers/hyperbeat.ts
25346
+ // src/yields/intrinsic/fetchers/hyperbeat.ts
25329
25347
  var HBHYPE_URL = "https://api.hyperbeat.org/api/v1/staking?address=0xCeaD893b162D38e714D82d06a7fe0b0dc3c38E0b";
25330
25348
  var HBUHYPE_URL = "https://app.hyperbeat.org/api/hyperfolio/vault-infos?vaultAddress=0x96C6cBB6251Ee1c257b2162ca0f39AA5Fa44B1FB";
25331
25349
  var hbhype = "hyperbeat x ether.fi HYPE::beHYPE";
@@ -25371,7 +25389,7 @@ var hbuhypeFetcher = {
25371
25389
  }
25372
25390
  };
25373
25391
 
25374
- // src/yields/fetchers/hyperliquid.ts
25392
+ // src/yields/intrinsic/fetchers/hyperliquid.ts
25375
25393
  var HLP_URL = "https://api-ui.hyperliquid.xyz/info";
25376
25394
  var HWHLP_URL = "https://api.hyperwavefi.xyz/stats/latest?asset=hwhlp_999";
25377
25395
  var hlp = "Wrapped HLP::WHLP";
@@ -25413,7 +25431,7 @@ var hwhlpFetcher = {
25413
25431
  }
25414
25432
  };
25415
25433
 
25416
- // src/yields/fetchers/usdx.ts
25434
+ // src/yields/intrinsic/fetchers/usdx.ts
25417
25435
  var SUSDX_URL = "https://app.usdx.money/v1/base/apyInfo";
25418
25436
  var susdx = "SUSDX";
25419
25437
  var susdxFetcher = {
@@ -25424,7 +25442,7 @@ var susdxFetcher = {
25424
25442
  }
25425
25443
  };
25426
25444
 
25427
- // src/yields/fetchers/reserve.ts
25445
+ // src/yields/intrinsic/fetchers/reserve.ts
25428
25446
  var RTOKENS_URL = "https://yields.reserve.org/pools";
25429
25447
  var hyUSD = "High Yield USD Base::HYUSD";
25430
25448
  var bsdETH = "Based ETH::BSDETH";
@@ -25454,7 +25472,7 @@ var rtokensFetcher = {
25454
25472
  }
25455
25473
  };
25456
25474
 
25457
- // src/yields/fetchers/hyperlend.ts
25475
+ // src/yields/intrinsic/fetchers/hyperlend.ts
25458
25476
  var HYPE_URL = "https://api.hyperlend.finance/data/nativeApy";
25459
25477
  var wstHype = "Staked HYPE Shares::WSTHYPE";
25460
25478
  var kHYPE = "Kinetiq Staked HYPE::kHYPE";
@@ -25469,7 +25487,7 @@ var hypeFetcher = {
25469
25487
  }
25470
25488
  };
25471
25489
 
25472
- // src/yields/fetchers/angle.ts
25490
+ // src/yields/intrinsic/fetchers/angle.ts
25473
25491
  var ANGLE_URL = "https://exporter.angle.money/v2/savingsApr";
25474
25492
  var stUSD = "Angle Staked USDA::stUSD";
25475
25493
  var stEur = "Angle Staked EURA::stEUR";
@@ -25497,7 +25515,7 @@ var addressToAssetYearn = {
25497
25515
  "0x93fec6639717b6215a48e5a72a162c50dcc40d68": "vbAUSD yVault::yvvbAUSD"
25498
25516
  };
25499
25517
 
25500
- // src/yields/fetchers/yearnKatana.ts
25518
+ // src/yields/intrinsic/fetchers/yearnKatana.ts
25501
25519
  var YEARN_KATANA_URL = "https://katana-apr-service.vercel.app/api/vaults";
25502
25520
  var yearnKatanaFetcher = {
25503
25521
  label: "YEARN_KATANA",
@@ -25517,7 +25535,7 @@ var yearnKatanaFetcher = {
25517
25535
  }
25518
25536
  };
25519
25537
 
25520
- // src/yields/fetchers/yoProtocol.ts
25538
+ // src/yields/intrinsic/fetchers/yoProtocol.ts
25521
25539
  var YO_URL = "https://api.yo.xyz/api/v1/vault/stats";
25522
25540
  var yoeth = "Yield Optimizer ETH::YOETH";
25523
25541
  var yobtc = "Yield Optimizer BTC::YOBTC";
@@ -25544,7 +25562,7 @@ var yoFetcher = {
25544
25562
  }
25545
25563
  };
25546
25564
 
25547
- // src/yields/fetchers/gmx.ts
25565
+ // src/yields/intrinsic/fetchers/gmx.ts
25548
25566
  var GMX_URL = "https://arbitrum-api.gmxinfra.io/apy?period=1d";
25549
25567
  var gmx_eth_usd = "GMX Market ETH/USD::GM [WETH-USDC]";
25550
25568
  var gmx_btc_usd = "GMX Market BTC/USD::GM [WBTC-USDC]";
@@ -25682,7 +25700,7 @@ function yearFractionToExpiry(expiryISO, now = /* @__PURE__ */ new Date()) {
25682
25700
  return yearFraction;
25683
25701
  }
25684
25702
 
25685
- // src/yields/fetchers/pendle.ts
25703
+ // src/yields/intrinsic/fetchers/pendle.ts
25686
25704
  var pendleFetcher = {
25687
25705
  label: "PENDLE",
25688
25706
  fetch: async () => {
@@ -25702,7 +25720,7 @@ var pendleFetcher = {
25702
25720
  }
25703
25721
  };
25704
25722
 
25705
- // src/yields/fetchers/usdai.ts
25723
+ // src/yields/intrinsic/fetchers/usdai.ts
25706
25724
  var USDAI_APY_URL = "https://api.usd.ai/usdai/dashboard/current-apy";
25707
25725
  var usdai = "sUSDai::SUSDAI";
25708
25726
  var usdaiFetcher = {
@@ -25718,7 +25736,7 @@ var usdaiFetcher = {
25718
25736
  }
25719
25737
  };
25720
25738
 
25721
- // src/yields/fetchers/maple.ts
25739
+ // src/yields/intrinsic/fetchers/maple.ts
25722
25740
  var MAPLE_URL = "https://api.maple.finance/v2/graphql";
25723
25741
  var SYRUP_USDT_ID = "0x356b8d89c1e1239cbbb9de4815c39a1474d5ba7d";
25724
25742
  var SYRUP_USDC_ID = "0x80ac24aa929eaf5013f6436cda2a7ba190f5cc0b";
@@ -25755,7 +25773,7 @@ var mapleFetcher = {
25755
25773
  }
25756
25774
  };
25757
25775
 
25758
- // src/yields/fetchers/ondo.ts
25776
+ // src/yields/intrinsic/fetchers/ondo.ts
25759
25777
  var ONDO_BASE_URL = "https://app.ondo.finance/api/v2/assets";
25760
25778
  var ondoFetcher = {
25761
25779
  label: "ONDO",
@@ -25771,8 +25789,8 @@ var ondoFetcher = {
25771
25789
  }
25772
25790
  };
25773
25791
 
25774
- // src/yields/fetchGeneralYields.ts
25775
- var fetchGeneralYields = async () => {
25792
+ // src/yields/intrinsic/index.ts
25793
+ async function fetchIntrinsicYields() {
25776
25794
  const wstethPromise = safeFetch(wstethFetcher.label, wstethFetcher.fetch);
25777
25795
  const weethFetcher = createWeethFetcher(wstethPromise);
25778
25796
  const fetchers = [
@@ -25820,20 +25838,216 @@ var fetchGeneralYields = async () => {
25820
25838
  mapleFetcher,
25821
25839
  ondoFetcher
25822
25840
  ];
25823
- const [wstethData, ...results] = await Promise.all([
25841
+ const results = await Promise.all([
25824
25842
  wstethPromise,
25825
25843
  ...fetchers.map((f) => safeFetch(f.label, f.fetch))
25826
25844
  ]);
25827
25845
  const intrinsicYields = {};
25828
- if (wstethData) Object.assign(intrinsicYields, wstethData);
25829
25846
  for (const result of results) {
25830
25847
  if (result) Object.assign(intrinsicYields, result);
25831
25848
  }
25849
+ return intrinsicYields;
25850
+ }
25851
+
25852
+ // src/yields/rewards/merkl.ts
25853
+ var MERKL_API_BASE = "https://api.merkl.xyz/v4";
25854
+ async function fetchMerklOpportunities(protocolId, chainId) {
25855
+ const all = [];
25856
+ let page = 0;
25857
+ while (true) {
25858
+ const params = new URLSearchParams({
25859
+ mainProtocolId: protocolId,
25860
+ chainId,
25861
+ status: "LIVE",
25862
+ items: "100",
25863
+ page: String(page)
25864
+ });
25865
+ const res = await fetch(`${MERKL_API_BASE}/opportunities?${params}`);
25866
+ if (!res.ok) throw new Error(`Merkl API ${res.status} for chain ${chainId}`);
25867
+ const batch = await res.json();
25868
+ all.push(...batch);
25869
+ if (batch.length < 100) break;
25870
+ page++;
25871
+ }
25872
+ return all;
25873
+ }
25874
+ function emptyReward() {
25875
+ return {
25876
+ distribution: "merkle",
25877
+ deposit: 0,
25878
+ borrow: 0,
25879
+ additionalDepositData: [],
25880
+ additionalBorrowData: []
25881
+ };
25882
+ }
25883
+ function ensureReward(result, chainId, lender, asset) {
25884
+ if (!result[chainId]) result[chainId] = {};
25885
+ if (!result[chainId][lender]) result[chainId][lender] = {};
25886
+ if (!result[chainId][lender][asset])
25887
+ result[chainId][lender][asset] = emptyReward();
25888
+ return result[chainId][lender][asset];
25889
+ }
25890
+ function getMerkleUrl(opp) {
25891
+ return `https://app.merkl.xyz/opportunities/${opp.chain.name}/${opp.type}/${opp.identifier}`;
25892
+ }
25893
+ function extractRewardBreakdowns(opp) {
25894
+ if (!opp.rewardsRecord?.breakdowns?.length) return [];
25895
+ return opp.rewardsRecord.breakdowns.map((b) => ({
25896
+ token: b.token.symbol,
25897
+ tokenAddress: b.token.address,
25898
+ dailyUsdValue: b.value,
25899
+ distributionType: b.distributionType
25900
+ }));
25901
+ }
25902
+ function resolveUnderlyingFromOpportunity(opp) {
25903
+ if (!opp.tokens?.length) return void 0;
25904
+ if (opp.depositUrl) {
25905
+ try {
25906
+ const url = new URL(opp.depositUrl);
25907
+ const underlying2 = url.searchParams.get("underlyingAsset");
25908
+ if (underlying2) return underlying2.toLowerCase();
25909
+ } catch {
25910
+ }
25911
+ }
25912
+ const explorer = opp.explorerAddress?.toLowerCase();
25913
+ const underlying = opp.tokens.find(
25914
+ (t) => t.address.toLowerCase() !== explorer && !t.symbol.startsWith("variableDebt") && !t.symbol.startsWith("stableDebt")
25915
+ );
25916
+ if (underlying) return underlying.address.toLowerCase();
25917
+ return opp.tokens[0].address.toLowerCase();
25918
+ }
25919
+ function createMerklRewardFetcher(config) {
25920
+ const defaultResolve = (opp) => {
25921
+ const asset = resolveUnderlyingFromOpportunity(opp);
25922
+ if (!asset) return void 0;
25923
+ return { asset };
25924
+ };
25925
+ const resolve = config.resolveAsset ?? defaultResolve;
25926
+ return {
25927
+ label: `MERKL_${config.merklProtocolId.toUpperCase()}`,
25928
+ fetch: async () => {
25929
+ const result = {};
25930
+ const chainResults = await Promise.all(
25931
+ config.chainIds.map(async (chainId) => {
25932
+ try {
25933
+ const opps = await fetchMerklOpportunities(
25934
+ config.merklProtocolId,
25935
+ chainId
25936
+ );
25937
+ return { chainId, opps };
25938
+ } catch (e) {
25939
+ console.error(`Merkl: failed to fetch chain ${chainId}:`, e);
25940
+ return { chainId, opps: [] };
25941
+ }
25942
+ })
25943
+ );
25944
+ for (const { chainId, opps } of chainResults) {
25945
+ for (const opp of opps) {
25946
+ if (opp.action !== "LEND" && opp.action !== "BORROW") continue;
25947
+ if (!opp.apr || opp.apr <= 0) continue;
25948
+ const resolved = resolve(opp);
25949
+ if (!resolved) continue;
25950
+ const lender = resolved.lender ?? config.lenderKey;
25951
+ const reward = ensureReward(result, chainId, lender, resolved.asset);
25952
+ const breakdowns = extractRewardBreakdowns(opp);
25953
+ reward.link = getMerkleUrl(opp);
25954
+ if (opp.action === "LEND") {
25955
+ reward.deposit += opp.apr;
25956
+ reward.additionalDepositData.push(...breakdowns);
25957
+ } else {
25958
+ reward.borrow += opp.apr;
25959
+ reward.additionalBorrowData.push(...breakdowns);
25960
+ }
25961
+ }
25962
+ }
25963
+ return result;
25964
+ }
25965
+ };
25966
+ }
25967
+ var AAVE_V3_MERKL_CHAINS = [
25968
+ "1",
25969
+ // Ethereum
25970
+ "10",
25971
+ // Optimism
25972
+ "56",
25973
+ // BSC
25974
+ "100",
25975
+ // Gnosis
25976
+ "137",
25977
+ // Polygon
25978
+ "5000",
25979
+ // Mantle
25980
+ "8453",
25981
+ // Base
25982
+ "42161",
25983
+ // Arbitrum
25984
+ "42220",
25985
+ // Celo
25986
+ "43114",
25987
+ // Avalanche
25988
+ "59144",
25989
+ // Linea
25990
+ "534352"
25991
+ // Scroll
25992
+ ];
25993
+ var aaveMerklRewardFetcher = createMerklRewardFetcher({
25994
+ merklProtocolId: "aave",
25995
+ lenderKey: "AAVE_V3",
25996
+ chainIds: AAVE_V3_MERKL_CHAINS
25997
+ });
25998
+
25999
+ // src/yields/rewards/fetchLenderRewards.ts
26000
+ function mergeRewardResults(target, source) {
26001
+ for (const [chainId, lenders] of Object.entries(source)) {
26002
+ if (!target[chainId]) target[chainId] = {};
26003
+ for (const [lender, assets] of Object.entries(lenders)) {
26004
+ if (!target[chainId][lender]) target[chainId][lender] = {};
26005
+ Object.assign(target[chainId][lender], assets);
26006
+ }
26007
+ }
26008
+ }
26009
+ var rewardFetchers = [aaveMerklRewardFetcher];
26010
+ async function fetchLenderRewards() {
26011
+ const results = await Promise.all(
26012
+ rewardFetchers.map((f) => safeFetch(f.label, f.fetch))
26013
+ );
26014
+ const lenderRewards = {};
26015
+ for (const rr of results) {
26016
+ if (rr) mergeRewardResults(lenderRewards, rr);
26017
+ }
26018
+ return lenderRewards;
26019
+ }
26020
+
26021
+ // src/yields/fetchGeneralYields.ts
26022
+ var fetchGeneralYields = async () => {
26023
+ const [intrinsicYields, lenderRewards] = await Promise.all([
26024
+ fetchIntrinsicYields(),
26025
+ fetchLenderRewards()
26026
+ ]);
26027
+ return { intrinsicYields, lenderRewards };
26028
+ };
26029
+ var fetchGeneralYieldsByMarketUid = async () => {
26030
+ const { intrinsicYields, lenderRewards } = await fetchGeneralYields();
25832
26031
  return {
25833
26032
  intrinsicYields,
25834
- lenderRewards: {}
26033
+ lenderRewards: flattenLenderRewards(lenderRewards)
25835
26034
  };
25836
26035
  };
26036
+ var flattenLenderRewards = (input) => {
26037
+ const result = {};
26038
+ for (const chainId in input) {
26039
+ const lenderMap = input[chainId];
26040
+ for (const lender in lenderMap) {
26041
+ const assetMap = lenderMap[lender];
26042
+ for (const asset in assetMap) {
26043
+ const reward = assetMap[asset];
26044
+ const marketUid = createMarketUid(chainId, lender, asset);
26045
+ result[marketUid] = reward;
26046
+ }
26047
+ }
26048
+ }
26049
+ return result;
26050
+ };
25837
26051
 
25838
26052
  // src/prices/defillama/index.ts
25839
26053
  var prefixEthereum = "ethereum:";
@@ -25982,7 +26196,7 @@ var datasManta = [manta].map((d) => prefixManta + d).join(",");
25982
26196
  var datasTelos = [wtlos].map((d) => prefixTelos + d).join(",");
25983
26197
  var datasbsc = [xpl].map((d) => prefixbsc + d).join(",");
25984
26198
  var datasmoonbeam = [glmr].map((d) => prefixmoonbeam + d).join(",");
25985
- var URL = `https://coins.llama.fi/prices/current/${[
26199
+ var URL2 = `https://coins.llama.fi/prices/current/${[
25986
26200
  datasEthereum,
25987
26201
  datasAvalanche,
25988
26202
  datasArbitrum,
@@ -26105,7 +26319,7 @@ var SYMBOL_MAP = {
26105
26319
  };
26106
26320
  async function fetchDefillamaData() {
26107
26321
  try {
26108
- const res = await fetch(URL).then((a) => a.json());
26322
+ const res = await fetch(URL2).then((a) => a.json());
26109
26323
  let prices = Object.assign(
26110
26324
  {},
26111
26325
  ...Object.values(res.coins).map((k) => {
@@ -30120,6 +30334,6 @@ async function fetchTokenBalances(chainId, account, tokens, options = {}) {
30120
30334
  return parseTokenBalanceResult(rawResult, prepared.query);
30121
30335
  }
30122
30336
 
30123
- export { EMPTY_BALANCE, MORPHO_LENS, applyPositionDelta, attachPricesToFlashLiquidity, buildLoopResult, buildMorphoTypeCall, buildMorphoTypeUserCallWithLens, buildPortfolioTotals, buildSumerAccumulators, buildSummaries, calculateLeverage, calculateNetApr, calculateOverallNetApr, calculateWeightedAverage, computeBorrowDelta2 as computeBorrowDelta, computeCloseTradeDeltas, computeCollateralSwapDeltas, computeDebtSwapDeltas, computeDepositDelta2 as computeDepositDelta, computeEModeAnalysis, computeOpenTradeDeltas, computePostTradeMetrics, computeRepayDelta2 as computeRepayDelta, computeSumerBorrowDelta, computeSumerDepositDelta, computeSumerRepayDelta, computeSumerWaterfall, computeSumerWithdrawDelta, computeWithdrawDelta2 as computeWithdrawDelta, computeZapTradeDeltas, convertLenderUserDataResult, createMarketUid, createMulticallRpcCall, createRawRpcCalls, decodeListaMarkets, decodeMarkets, decodePackedListaUserDataset, decodePackedMorphoUserDataset, encodeBalanceFetcherCalldata, fetchDefillamaData, fetchDefillamaHistData, fetchFlashLiquidityForChain, fetchGeneralYields, fetchMainPrices, fetchOraclePrices, fetchPendlePrices, fetchTokenBalances, fetchTokenMetadata, filterActiveLenders, filterLendersByProtocol, fuseLenderData, generateLendingPairs, generateLendingPools, getAavesForChain, getAssetConfig, getBorrowCapacity, getHealthFactor, getLenderAssets, getLenderPublicData, getLenderPublicDataAll, getLenderPublicDataViaApi, getLenderUserDataMulti, getLenderUserDataResult, getLendersForChain, getMergedUserData, getMorphoTypeMarketConverter, getTopPairs, keysFromMaps, multicall3Abi, nanTo, needsLenderApproval, needsTokenApproval, noOpResult, normalizeToBytes, parseBalanceFetcherResult, parseMergedResult, parseMulticallRpcResponses, parseRawRpcBatchResponses, parseRawRpcResponses, parseTokenBalanceResult, positivePart2 as positivePart, prepareLenderUserDataRpcCalls, prepareMergedMulticallParams, prepareMergedRpcCalls, prepareMulticallInputs, prepareTokenBalanceRpcCalls, selectAssetGroupPrices, unflattenLenderData };
30337
+ export { EMPTY_BALANCE, MORPHO_LENS, applyPositionDelta, attachPricesToFlashLiquidity, buildLoopResult, buildMorphoTypeCall, buildMorphoTypeUserCallWithLens, buildPortfolioTotals, buildSumerAccumulators, buildSummaries, calculateLeverage, calculateNetApr, calculateOverallNetApr, calculateWeightedAverage, computeBorrowDelta2 as computeBorrowDelta, computeCloseTradeDeltas, computeCollateralSwapDeltas, computeDebtSwapDeltas, computeDepositDelta2 as computeDepositDelta, computeEModeAnalysis, computeOpenTradeDeltas, computePostTradeMetrics, computeRepayDelta2 as computeRepayDelta, computeSumerBorrowDelta, computeSumerDepositDelta, computeSumerRepayDelta, computeSumerWaterfall, computeSumerWithdrawDelta, computeWithdrawDelta2 as computeWithdrawDelta, computeZapTradeDeltas, convertLenderUserDataResult, createMarketUid, createMulticallRpcCall, createRawRpcCalls, decodeListaMarkets, decodeMarkets, decodePackedListaUserDataset, decodePackedMorphoUserDataset, encodeBalanceFetcherCalldata, fetchDefillamaData, fetchDefillamaHistData, fetchFlashLiquidityForChain, fetchGeneralYields, fetchGeneralYieldsByMarketUid, fetchMainPrices, fetchOraclePrices, fetchPendlePrices, fetchTokenBalances, fetchTokenMetadata, filterActiveLenders, filterLendersByProtocol, fuseLenderData, generateLendingPairs, generateLendingPools, getAavesForChain, getAssetConfig, getBorrowCapacity, getHealthFactor, getLenderAssets, getLenderPublicData, getLenderPublicDataAll, getLenderPublicDataViaApi, getLenderUserDataMulti, getLenderUserDataResult, getLendersForChain, getMergedUserData, getMorphoTypeMarketConverter, getTopPairs, keysFromMaps, multicall3Abi, nanTo, needsLenderApproval, needsTokenApproval, noOpResult, normalizeToBytes, parseBalanceFetcherResult, parseMergedResult, parseMulticallRpcResponses, parseRawRpcBatchResponses, parseRawRpcResponses, parseTokenBalanceResult, positivePart2 as positivePart, prepareLenderUserDataRpcCalls, prepareMergedMulticallParams, prepareMergedRpcCalls, prepareMulticallInputs, prepareTokenBalanceRpcCalls, selectAssetGroupPrices, unflattenLenderData };
30124
30338
  //# sourceMappingURL=index.js.map
30125
30339
  //# sourceMappingURL=index.js.map