@1delta/margin-fetcher 0.0.167 → 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 (178) 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 +424 -194
  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/utils/parsing.d.ts.map +1 -1
  21. package/dist/yields/fetchGeneralYields.d.ts +2 -1
  22. package/dist/yields/fetchGeneralYields.d.ts.map +1 -1
  23. package/dist/yields/index.d.ts +5 -2
  24. package/dist/yields/index.d.ts.map +1 -1
  25. package/dist/yields/intrinsic/fetchers/angle.d.ts +3 -0
  26. package/dist/yields/intrinsic/fetchers/angle.d.ts.map +1 -0
  27. package/dist/yields/intrinsic/fetchers/coinbase.d.ts +3 -0
  28. package/dist/yields/intrinsic/fetchers/coinbase.d.ts.map +1 -0
  29. package/dist/yields/intrinsic/fetchers/ethena.d.ts +3 -0
  30. package/dist/yields/intrinsic/fetchers/ethena.d.ts.map +1 -0
  31. package/dist/yields/{fetchers → intrinsic/fetchers}/etherfi.d.ts +1 -1
  32. package/dist/yields/intrinsic/fetchers/etherfi.d.ts.map +1 -0
  33. package/dist/yields/intrinsic/fetchers/gmx.d.ts +3 -0
  34. package/dist/yields/intrinsic/fetchers/gmx.d.ts.map +1 -0
  35. package/dist/yields/{fetchers → intrinsic/fetchers}/hyperbeat.d.ts +1 -1
  36. package/dist/yields/intrinsic/fetchers/hyperbeat.d.ts.map +1 -0
  37. package/dist/yields/intrinsic/fetchers/hyperlend.d.ts +3 -0
  38. package/dist/yields/intrinsic/fetchers/hyperlend.d.ts.map +1 -0
  39. package/dist/yields/{fetchers → intrinsic/fetchers}/hyperliquid.d.ts +1 -1
  40. package/dist/yields/intrinsic/fetchers/hyperliquid.d.ts.map +1 -0
  41. package/dist/yields/intrinsic/fetchers/jito.d.ts +3 -0
  42. package/dist/yields/intrinsic/fetchers/jito.d.ts.map +1 -0
  43. package/dist/yields/intrinsic/fetchers/kelp.d.ts +3 -0
  44. package/dist/yields/intrinsic/fetchers/kelp.d.ts.map +1 -0
  45. package/dist/yields/{fetchers → intrinsic/fetchers}/lido.d.ts +1 -1
  46. package/dist/yields/intrinsic/fetchers/lido.d.ts.map +1 -0
  47. package/dist/yields/intrinsic/fetchers/mantle.d.ts +3 -0
  48. package/dist/yields/intrinsic/fetchers/mantle.d.ts.map +1 -0
  49. package/dist/yields/intrinsic/fetchers/maple.d.ts +3 -0
  50. package/dist/yields/intrinsic/fetchers/maple.d.ts.map +1 -0
  51. package/dist/yields/intrinsic/fetchers/morphoVaults.d.ts +3 -0
  52. package/dist/yields/intrinsic/fetchers/morphoVaults.d.ts.map +1 -0
  53. package/dist/yields/intrinsic/fetchers/ondo.d.ts +3 -0
  54. package/dist/yields/intrinsic/fetchers/ondo.d.ts.map +1 -0
  55. package/dist/yields/intrinsic/fetchers/pendle.d.ts +3 -0
  56. package/dist/yields/intrinsic/fetchers/pendle.d.ts.map +1 -0
  57. package/dist/yields/intrinsic/fetchers/puffer.d.ts +3 -0
  58. package/dist/yields/intrinsic/fetchers/puffer.d.ts.map +1 -0
  59. package/dist/yields/intrinsic/fetchers/renzo.d.ts +3 -0
  60. package/dist/yields/intrinsic/fetchers/renzo.d.ts.map +1 -0
  61. package/dist/yields/intrinsic/fetchers/reserve.d.ts +3 -0
  62. package/dist/yields/intrinsic/fetchers/reserve.d.ts.map +1 -0
  63. package/dist/yields/intrinsic/fetchers/reservoir.d.ts +3 -0
  64. package/dist/yields/intrinsic/fetchers/reservoir.d.ts.map +1 -0
  65. package/dist/yields/{fetchers → intrinsic/fetchers}/resolv.d.ts +1 -1
  66. package/dist/yields/intrinsic/fetchers/resolv.d.ts.map +1 -0
  67. package/dist/yields/intrinsic/fetchers/rocketpool.d.ts +3 -0
  68. package/dist/yields/intrinsic/fetchers/rocketpool.d.ts.map +1 -0
  69. package/dist/yields/intrinsic/fetchers/savax.d.ts +3 -0
  70. package/dist/yields/intrinsic/fetchers/savax.d.ts.map +1 -0
  71. package/dist/yields/intrinsic/fetchers/sky.d.ts +3 -0
  72. package/dist/yields/intrinsic/fetchers/sky.d.ts.map +1 -0
  73. package/dist/yields/{fetchers → intrinsic/fetchers}/stader.d.ts +1 -1
  74. package/dist/yields/intrinsic/fetchers/stader.d.ts.map +1 -0
  75. package/dist/yields/intrinsic/fetchers/stakewise.d.ts +3 -0
  76. package/dist/yields/intrinsic/fetchers/stakewise.d.ts.map +1 -0
  77. package/dist/yields/intrinsic/fetchers/superreturn.d.ts +3 -0
  78. package/dist/yields/intrinsic/fetchers/superreturn.d.ts.map +1 -0
  79. package/dist/yields/intrinsic/fetchers/swell.d.ts +3 -0
  80. package/dist/yields/intrinsic/fetchers/swell.d.ts.map +1 -0
  81. package/dist/yields/intrinsic/fetchers/theo.d.ts +3 -0
  82. package/dist/yields/intrinsic/fetchers/theo.d.ts.map +1 -0
  83. package/dist/yields/intrinsic/fetchers/trufin.d.ts +3 -0
  84. package/dist/yields/intrinsic/fetchers/trufin.d.ts.map +1 -0
  85. package/dist/yields/intrinsic/fetchers/usdai.d.ts +3 -0
  86. package/dist/yields/intrinsic/fetchers/usdai.d.ts.map +1 -0
  87. package/dist/yields/intrinsic/fetchers/usdx.d.ts +3 -0
  88. package/dist/yields/intrinsic/fetchers/usdx.d.ts.map +1 -0
  89. package/dist/yields/{fetchers → intrinsic/fetchers}/usual.d.ts +1 -1
  90. package/dist/yields/intrinsic/fetchers/usual.d.ts.map +1 -0
  91. package/dist/yields/intrinsic/fetchers/yearnKatana.d.ts +3 -0
  92. package/dist/yields/intrinsic/fetchers/yearnKatana.d.ts.map +1 -0
  93. package/dist/yields/intrinsic/fetchers/yieldfi.d.ts +3 -0
  94. package/dist/yields/intrinsic/fetchers/yieldfi.d.ts.map +1 -0
  95. package/dist/yields/intrinsic/fetchers/yieldnest.d.ts +3 -0
  96. package/dist/yields/intrinsic/fetchers/yieldnest.d.ts.map +1 -0
  97. package/dist/yields/intrinsic/fetchers/yoProtocol.d.ts +3 -0
  98. package/dist/yields/intrinsic/fetchers/yoProtocol.d.ts.map +1 -0
  99. package/dist/yields/intrinsic/index.d.ts +5 -0
  100. package/dist/yields/intrinsic/index.d.ts.map +1 -0
  101. package/dist/yields/rewards/fetchLenderRewards.d.ts +9 -0
  102. package/dist/yields/rewards/fetchLenderRewards.d.ts.map +1 -0
  103. package/dist/yields/rewards/index.d.ts +5 -0
  104. package/dist/yields/rewards/index.d.ts.map +1 -0
  105. package/dist/yields/rewards/merkl.d.ts +22 -0
  106. package/dist/yields/rewards/merkl.d.ts.map +1 -0
  107. package/dist/yields/rewards/types.d.ts +68 -0
  108. package/dist/yields/rewards/types.d.ts.map +1 -0
  109. package/dist/yields/types.d.ts +18 -6
  110. package/dist/yields/types.d.ts.map +1 -1
  111. package/package.json +4 -4
  112. package/dist/ccip-MRVHO3PE.js +0 -5
  113. package/dist/chunk-QCZNLSVI.js.map +0 -1
  114. package/dist/yields/fetchers/angle.d.ts +0 -3
  115. package/dist/yields/fetchers/angle.d.ts.map +0 -1
  116. package/dist/yields/fetchers/coinbase.d.ts +0 -3
  117. package/dist/yields/fetchers/coinbase.d.ts.map +0 -1
  118. package/dist/yields/fetchers/ethena.d.ts +0 -3
  119. package/dist/yields/fetchers/ethena.d.ts.map +0 -1
  120. package/dist/yields/fetchers/etherfi.d.ts.map +0 -1
  121. package/dist/yields/fetchers/gmx.d.ts +0 -3
  122. package/dist/yields/fetchers/gmx.d.ts.map +0 -1
  123. package/dist/yields/fetchers/hyperbeat.d.ts.map +0 -1
  124. package/dist/yields/fetchers/hyperlend.d.ts +0 -3
  125. package/dist/yields/fetchers/hyperlend.d.ts.map +0 -1
  126. package/dist/yields/fetchers/hyperliquid.d.ts.map +0 -1
  127. package/dist/yields/fetchers/jito.d.ts +0 -3
  128. package/dist/yields/fetchers/jito.d.ts.map +0 -1
  129. package/dist/yields/fetchers/kelp.d.ts +0 -3
  130. package/dist/yields/fetchers/kelp.d.ts.map +0 -1
  131. package/dist/yields/fetchers/lido.d.ts.map +0 -1
  132. package/dist/yields/fetchers/mantle.d.ts +0 -3
  133. package/dist/yields/fetchers/mantle.d.ts.map +0 -1
  134. package/dist/yields/fetchers/maple.d.ts +0 -3
  135. package/dist/yields/fetchers/maple.d.ts.map +0 -1
  136. package/dist/yields/fetchers/morphoVaults.d.ts +0 -3
  137. package/dist/yields/fetchers/morphoVaults.d.ts.map +0 -1
  138. package/dist/yields/fetchers/pendle.d.ts +0 -3
  139. package/dist/yields/fetchers/pendle.d.ts.map +0 -1
  140. package/dist/yields/fetchers/puffer.d.ts +0 -3
  141. package/dist/yields/fetchers/puffer.d.ts.map +0 -1
  142. package/dist/yields/fetchers/renzo.d.ts +0 -3
  143. package/dist/yields/fetchers/renzo.d.ts.map +0 -1
  144. package/dist/yields/fetchers/reserve.d.ts +0 -3
  145. package/dist/yields/fetchers/reserve.d.ts.map +0 -1
  146. package/dist/yields/fetchers/reservoir.d.ts +0 -3
  147. package/dist/yields/fetchers/reservoir.d.ts.map +0 -1
  148. package/dist/yields/fetchers/resolv.d.ts.map +0 -1
  149. package/dist/yields/fetchers/rocketpool.d.ts +0 -3
  150. package/dist/yields/fetchers/rocketpool.d.ts.map +0 -1
  151. package/dist/yields/fetchers/savax.d.ts +0 -3
  152. package/dist/yields/fetchers/savax.d.ts.map +0 -1
  153. package/dist/yields/fetchers/sky.d.ts +0 -3
  154. package/dist/yields/fetchers/sky.d.ts.map +0 -1
  155. package/dist/yields/fetchers/stader.d.ts.map +0 -1
  156. package/dist/yields/fetchers/stakewise.d.ts +0 -3
  157. package/dist/yields/fetchers/stakewise.d.ts.map +0 -1
  158. package/dist/yields/fetchers/superreturn.d.ts +0 -3
  159. package/dist/yields/fetchers/superreturn.d.ts.map +0 -1
  160. package/dist/yields/fetchers/swell.d.ts +0 -3
  161. package/dist/yields/fetchers/swell.d.ts.map +0 -1
  162. package/dist/yields/fetchers/theo.d.ts +0 -3
  163. package/dist/yields/fetchers/theo.d.ts.map +0 -1
  164. package/dist/yields/fetchers/trufin.d.ts +0 -3
  165. package/dist/yields/fetchers/trufin.d.ts.map +0 -1
  166. package/dist/yields/fetchers/usdai.d.ts +0 -3
  167. package/dist/yields/fetchers/usdai.d.ts.map +0 -1
  168. package/dist/yields/fetchers/usdx.d.ts +0 -3
  169. package/dist/yields/fetchers/usdx.d.ts.map +0 -1
  170. package/dist/yields/fetchers/usual.d.ts.map +0 -1
  171. package/dist/yields/fetchers/yearnKatana.d.ts +0 -3
  172. package/dist/yields/fetchers/yearnKatana.d.ts.map +0 -1
  173. package/dist/yields/fetchers/yieldfi.d.ts +0 -3
  174. package/dist/yields/fetchers/yieldfi.d.ts.map +0 -1
  175. package/dist/yields/fetchers/yieldnest.d.ts +0 -3
  176. package/dist/yields/fetchers/yieldnest.d.ts.map +0 -1
  177. package/dist/yields/fetchers/yoProtocol.d.ts +0 -3
  178. 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
@@ -7977,7 +7977,8 @@ var BLOCK_TIMES = {
7977
7977
  [Chain.POLYGON_MAINNET]: 2,
7978
7978
  [Chain.BASE]: 1,
7979
7979
  [Chain.CRONOS_MAINNET]: 0.5,
7980
- [Chain.AVALANCHE_C_CHAIN]: 1
7980
+ [Chain.AVALANCHE_C_CHAIN]: 1,
7981
+ [Chain.CORE_BLOCKCHAIN_MAINNET]: 3
7981
7982
  };
7982
7983
  var SECONDS_PER_YEAR = 31536e3;
7983
7984
  var apyToApr = (apy) => {
@@ -17481,8 +17482,10 @@ var getCompoundV2UserDataConverter = (lender, chainId, account, metaMap) => {
17481
17482
  }
17482
17483
  };
17483
17484
  function createCompoundV2Entry(i, data, key, assetsIn, vToken, meta, claimableRewards) {
17484
- const depositsRaw = data[3 * i].toString();
17485
- 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;
17486
17489
  const depositShares = data[3 * i + 2].toString();
17487
17490
  const collateralEnabled = Boolean(assetsIn?.includes(vToken));
17488
17491
  if (!collateralEnabled && depositsRaw === "0" && borrowsRaw === "0") {
@@ -23477,13 +23480,32 @@ function calculateOverallNetApr(totalDepositsUSD, totalDebtUSD, avgDepositApr, a
23477
23480
  if (totalNetWorth === 0) return 0;
23478
23481
  return (totalDepositsUSD * avgDepositApr - totalDebtUSD * avgBorrowApr) / Math.abs(totalNetWorth) * (totalNetWorth > 0 ? 1 : -1);
23479
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
+ }
23480
23499
 
23481
23500
  // src/lending/user-data/summary/buildPortfolioTotals.ts
23482
23501
  function buildPortfolioTotals(userDataResult) {
23483
- let totalDepositsUSD = 0;
23484
- let totalDebtUSD = 0;
23485
- let totalRewardApr = 0;
23502
+ let totalDeposits = 0;
23503
+ let totalDebt = 0;
23504
+ let totalCollateral = 0;
23505
+ let totalCollateralAllActive = 0;
23486
23506
  let totalNav24h = 0;
23507
+ let totalDeposits24h = 0;
23508
+ let totalDebt24h = 0;
23487
23509
  let lenderCount = 0;
23488
23510
  const aprItems = [];
23489
23511
  const activeChains = /* @__PURE__ */ new Set();
@@ -23491,61 +23513,51 @@ function buildPortfolioTotals(userDataResult) {
23491
23513
  activeChains.add(chainId);
23492
23514
  for (const [, userData] of Object.entries(lenders)) {
23493
23515
  lenderCount++;
23494
- let lenderDeposits = 0;
23495
- let lenderDebt = 0;
23496
- let lenderDepositAprSum = 0;
23497
- let lenderBorrowAprSum = 0;
23498
- let lenderDepositWeight = 0;
23499
- let lenderDebtWeight = 0;
23500
23516
  for (const subAccount of userData.data) {
23501
23517
  const { balanceData: balanceData2, aprData: aprData2 } = subAccount;
23502
- lenderDeposits += balanceData2.deposits;
23503
- lenderDebt += balanceData2.debt;
23504
- if (balanceData2.deposits > 0) {
23505
- lenderDepositAprSum += aprData2.depositApr * balanceData2.deposits;
23506
- lenderDepositWeight += balanceData2.deposits;
23507
- }
23508
- if (balanceData2.debt > 0) {
23509
- lenderBorrowAprSum += aprData2.borrowApr * balanceData2.debt;
23510
- lenderDebtWeight += balanceData2.debt;
23511
- }
23518
+ totalDeposits += balanceData2.deposits;
23519
+ totalDebt += balanceData2.debt;
23520
+ totalCollateral += balanceData2.collateral;
23521
+ totalCollateralAllActive += balanceData2.collateralAllActive;
23512
23522
  totalNav24h += balanceData2.nav24h ?? 0;
23513
- totalRewardApr += aprData2.rewardApr + aprData2.rewardDepositApr + aprData2.rewardBorrowApr + aprData2.intrinsicApr;
23514
- }
23515
- totalDepositsUSD += lenderDeposits;
23516
- totalDebtUSD += lenderDebt;
23517
- if (lenderDepositWeight > 0) {
23523
+ totalDeposits24h += balanceData2.deposits24h ?? 0;
23524
+ totalDebt24h += balanceData2.debt24h ?? 0;
23518
23525
  aprItems.push({
23519
- depositApr: lenderDepositAprSum / lenderDepositWeight,
23520
- borrowApr: lenderDebtWeight > 0 ? lenderBorrowAprSum / lenderDebtWeight : 0,
23521
- deposits: lenderDeposits,
23522
- 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
23523
23538
  });
23524
23539
  }
23525
23540
  }
23526
23541
  }
23527
- const totalNetWorth = totalDepositsUSD - totalDebtUSD;
23528
- const totalDepositWeight = aprItems.reduce((sum, a) => sum + a.deposits, 0);
23529
- const avgDepositApr = totalDepositWeight > 0 ? aprItems.reduce((sum, a) => sum + a.depositApr * a.deposits, 0) / totalDepositWeight : 0;
23530
- const totalDebtWeight = aprItems.reduce((sum, a) => sum + a.debt, 0);
23531
- const avgBorrowApr = totalDebtWeight > 0 ? aprItems.filter((a) => a.debt > 0).reduce((sum, a) => sum + a.borrowApr * a.debt, 0) / totalDebtWeight : 0;
23532
- const avgNetApr = calculateOverallNetApr(
23533
- totalDepositsUSD,
23534
- totalDebtUSD,
23535
- avgDepositApr,
23536
- avgBorrowApr
23537
- );
23538
- const overallLeverage = calculateLeverage(totalDepositsUSD, totalNetWorth);
23542
+ const totalNav = totalDeposits - totalDebt;
23543
+ const leverage = calculateLeverage(totalDeposits, totalNav);
23544
+ const weightedAprs = calculateWeightedAprs(aprItems);
23539
23545
  return {
23540
- totalDepositsUSD,
23541
- totalDebtUSD,
23542
- totalNetWorth,
23543
- totalNetWorth24h: totalNav24h,
23544
- avgDepositApr,
23545
- avgBorrowApr,
23546
- avgNetApr,
23547
- totalRewardApr,
23548
- 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,
23549
23561
  activeLenders: lenderCount,
23550
23562
  activeChains: activeChains.size
23551
23563
  };
@@ -23559,79 +23571,82 @@ function lenderSortPriority(lender) {
23559
23571
  }
23560
23572
  function aggregateLenderData(lender, userData) {
23561
23573
  const { chainId, data } = userData;
23562
- let totalDepositsUSD = 0;
23563
- let totalDebtUSD = 0;
23574
+ let totalDeposits = 0;
23575
+ let totalDebt = 0;
23564
23576
  let totalCollateral = 0;
23577
+ let totalCollateralAllActive = 0;
23565
23578
  let totalNav24h = 0;
23579
+ let totalDeposits24h = 0;
23580
+ let totalDebt24h = 0;
23566
23581
  const subAccountSummaries = [];
23567
23582
  const aprItems = [];
23568
- let totalRewardApr = 0;
23569
- let healthSum = 0;
23570
- let healthCount = 0;
23571
23583
  for (const subAccount of data) {
23572
- const { balanceData: balanceData2, aprData: aprData2, positions, health, accountId, userConfig } = subAccount;
23573
- totalDepositsUSD += balanceData2.deposits;
23574
- totalDebtUSD += balanceData2.debt;
23575
- totalCollateral += balanceData2.collateral;
23576
- totalNav24h += balanceData2.nav24h ?? 0;
23577
- if (balanceData2.deposits > 0) {
23578
- aprItems.push({
23579
- depositApr: aprData2.depositApr,
23580
- borrowApr: aprData2.borrowApr,
23581
- weight: balanceData2.deposits
23582
- });
23583
- }
23584
- totalRewardApr += aprData2.rewardApr + aprData2.rewardDepositApr + aprData2.rewardBorrowApr + aprData2.intrinsicApr;
23585
- if (health !== null && health > 0) {
23586
- healthSum += health;
23587
- healthCount++;
23588
- }
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
+ });
23589
23606
  subAccountSummaries.push({
23590
23607
  accountId,
23591
23608
  health,
23592
- balanceData: balanceData2,
23609
+ balanceData: balanceData3,
23593
23610
  aprData: aprData2,
23594
23611
  userConfig,
23595
23612
  positionCount: positions.length
23596
23613
  });
23597
23614
  }
23598
- const netWorth = totalDepositsUSD - totalDebtUSD;
23599
- const depositApr = calculateWeightedAverage(
23600
- aprItems.map((a) => ({ value: a.depositApr, weight: a.weight }))
23601
- );
23602
- const borrowApr = calculateWeightedAverage(
23603
- aprItems.map((a) => ({
23604
- value: a.borrowApr,
23605
- weight: a.weight * (a.borrowApr > 0 ? 1 : 0)
23606
- }))
23607
- );
23608
- const netApr = netWorth !== 0 ? (totalDepositsUSD * depositApr - totalDebtUSD * borrowApr) / netWorth * (netWorth > 0 ? 1 : -1) : 0;
23609
- const leverage = calculateLeverage(totalDepositsUSD, netWorth);
23610
- 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
+ };
23611
23628
  return {
23612
23629
  lender,
23613
23630
  chainId,
23614
- totalDepositsUSD,
23615
- totalDebtUSD,
23616
- netWorth,
23617
- netWorth24h: totalNav24h,
23618
- depositApr,
23619
- borrowApr,
23620
- netApr,
23621
- rewardApr: totalRewardApr,
23622
- healthFactor,
23631
+ balanceData: balanceData2,
23632
+ aprData: {
23633
+ ...weightedAprs,
23634
+ rewards: {}
23635
+ },
23623
23636
  leverage,
23624
- collateral: totalCollateral,
23625
23637
  subAccounts: subAccountSummaries
23626
23638
  };
23627
23639
  }
23628
23640
  function buildSummaries(userDataResult) {
23629
23641
  const lenderSummaries = [];
23630
23642
  const chainMap = {};
23631
- let totalDepositsUSD = 0;
23632
- let totalDebtUSD = 0;
23633
- let totalRewardApr = 0;
23643
+ let totalDeposits = 0;
23644
+ let totalDebt = 0;
23634
23645
  let totalNav24h = 0;
23646
+ let totalDeposits24h = 0;
23647
+ let totalDebt24h = 0;
23648
+ let totalCollateral = 0;
23649
+ let totalCollateralAllActive = 0;
23635
23650
  const aprItems = [];
23636
23651
  const activeChains = /* @__PURE__ */ new Set();
23637
23652
  for (const [chainId, lenders] of Object.entries(userDataResult)) {
@@ -23648,51 +23663,55 @@ function buildSummaries(userDataResult) {
23648
23663
  for (const [lender, userData] of Object.entries(lenders)) {
23649
23664
  const summary = aggregateLenderData(lender, userData);
23650
23665
  lenderSummaries.push(summary);
23651
- totalDepositsUSD += summary.totalDepositsUSD;
23652
- totalDebtUSD += summary.totalDebtUSD;
23653
- totalRewardApr += summary.rewardApr;
23654
- totalNav24h += summary.netWorth24h;
23655
- if (summary.totalDepositsUSD > 0) {
23656
- aprItems.push({
23657
- depositApr: summary.depositApr,
23658
- borrowApr: summary.borrowApr,
23659
- deposits: summary.totalDepositsUSD,
23660
- debt: summary.totalDebtUSD
23661
- });
23662
- }
23663
- chainMap[chainId].totalDepositsUSD += summary.totalDepositsUSD;
23664
- 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;
23665
23689
  chainMap[chainId].lenderCount++;
23666
23690
  }
23667
23691
  chainMap[chainId].netWorth = chainMap[chainId].totalDepositsUSD - chainMap[chainId].totalDebtUSD;
23668
23692
  }
23669
- const totalNetWorth = totalDepositsUSD - totalDebtUSD;
23670
- const avgDepositApr = calculateWeightedAverage(
23671
- aprItems.map((a) => ({ value: a.depositApr, weight: a.deposits }))
23672
- );
23673
- const avgBorrowApr = calculateWeightedAverage(
23674
- aprItems.filter((a) => a.debt > 0).map((a) => ({ value: a.borrowApr, weight: a.debt }))
23675
- );
23676
- const avgNetApr = calculateOverallNetApr(
23677
- totalDepositsUSD,
23678
- totalDebtUSD,
23679
- avgDepositApr,
23680
- avgBorrowApr
23681
- );
23682
- const overallLeverage = calculateLeverage(totalDepositsUSD, totalNetWorth);
23693
+ const totalNav = totalDeposits - totalDebt;
23694
+ const leverage = calculateLeverage(totalDeposits, totalNav);
23695
+ const weightedAprs = calculateWeightedAprs(aprItems);
23683
23696
  lenderSummaries.sort(
23684
- (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)
23685
23698
  );
23686
23699
  return {
23687
- totalDepositsUSD,
23688
- totalDebtUSD,
23689
- totalNetWorth,
23690
- totalNetWorth24h: totalNav24h,
23691
- avgDepositApr,
23692
- avgBorrowApr,
23693
- avgNetApr,
23694
- totalRewardApr,
23695
- 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,
23696
23715
  activeLenders: lenderSummaries.length,
23697
23716
  activeChains: activeChains.size,
23698
23717
  lenders: lenderSummaries,
@@ -23701,7 +23720,7 @@ function buildSummaries(userDataResult) {
23701
23720
  }
23702
23721
  function filterActiveLenders(summary) {
23703
23722
  const activeLenders = summary.lenders.filter(
23704
- (l) => l.totalDepositsUSD > 0 || l.totalDebtUSD > 0
23723
+ (l) => l.balanceData.deposits > 0 || l.balanceData.debt > 0
23705
23724
  );
23706
23725
  return {
23707
23726
  ...summary,
@@ -23724,7 +23743,7 @@ function fuseLenderData(userDataResult, summary) {
23724
23743
  });
23725
23744
  }
23726
23745
  entries.sort(
23727
- (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)
23728
23747
  );
23729
23748
  return entries;
23730
23749
  }
@@ -24912,7 +24931,7 @@ async function getListsMulti(chainIds) {
24912
24931
  return res;
24913
24932
  }
24914
24933
 
24915
- // src/yields/fetchers/lido.ts
24934
+ // src/yields/intrinsic/fetchers/lido.ts
24916
24935
  var WSTETH_URL = "https://eth-api.lido.fi/v1/protocol/steth/apr/sma";
24917
24936
  var tETH = "Treehouse ETH::TETH";
24918
24937
  var wstethFetcher = {
@@ -24933,7 +24952,7 @@ var stmaticFetcher = {
24933
24952
  }
24934
24953
  };
24935
24954
 
24936
- // src/yields/fetchers/renzo.ts
24955
+ // src/yields/intrinsic/fetchers/renzo.ts
24937
24956
  var EZETH_URL = "https://app.renzoprotocol.com/api/stats?chainId=1";
24938
24957
  var ezethFetcher = {
24939
24958
  label: "EZETH",
@@ -24943,7 +24962,7 @@ var ezethFetcher = {
24943
24962
  }
24944
24963
  };
24945
24964
 
24946
- // src/yields/fetchers/rocketpool.ts
24965
+ // src/yields/intrinsic/fetchers/rocketpool.ts
24947
24966
  var RETH_URL = "https://api.rocketpool.net/api/mainnet/payload";
24948
24967
  var rethFetcher = {
24949
24968
  label: "RETH",
@@ -24953,7 +24972,7 @@ var rethFetcher = {
24953
24972
  }
24954
24973
  };
24955
24974
 
24956
- // src/yields/fetchers/etherfi.ts
24975
+ // src/yields/intrinsic/fetchers/etherfi.ts
24957
24976
  var WEETH_URL = "https://www.ether.fi/api/apr";
24958
24977
  var WEETHS_URL = "https://api.sevenseas.capital/etherfi/ethereum/performance/0x917ceE801a67f933F2e6b33fC0cD1ED2d5909D88";
24959
24978
  var weeths = "Super Symbiotic LRT::weETHs";
@@ -24980,7 +24999,7 @@ var weethsFetcher = {
24980
24999
  }
24981
25000
  };
24982
25001
 
24983
- // src/yields/fetchers/mantle.ts
25002
+ // src/yields/intrinsic/fetchers/mantle.ts
24984
25003
  var METH_URL = "https://meth.mantle.xyz/api/stats/apy";
24985
25004
  var methFetcher = {
24986
25005
  label: "METH",
@@ -24991,7 +25010,7 @@ var methFetcher = {
24991
25010
  }
24992
25011
  };
24993
25012
 
24994
- // src/yields/fetchers/ethena.ts
25013
+ // src/yields/intrinsic/fetchers/ethena.ts
24995
25014
  var SUSDE_URL = "https://yields.llama.fi/poolsEnriched?pool=66985a81-9c51-46ca-9977-42b4fe7bc6df";
24996
25015
  var susdeFetcher = {
24997
25016
  label: "SUSDE",
@@ -25005,7 +25024,7 @@ var susdeFetcher = {
25005
25024
  }
25006
25025
  };
25007
25026
 
25008
- // src/yields/fetchers/stader.ts
25027
+ // src/yields/intrinsic/fetchers/stader.ts
25009
25028
  var MATICX_URL = "https://universe.staderlabs.com/polygon/apy";
25010
25029
  var ETHX_URL = "https://universe.staderlabs.com/eth/apy";
25011
25030
  var ethX = "Stader ETHx::ETHx";
@@ -25024,7 +25043,7 @@ var ethxFetcher = {
25024
25043
  }
25025
25044
  };
25026
25045
 
25027
- // src/yields/fetchers/savax.ts
25046
+ // src/yields/intrinsic/fetchers/savax.ts
25028
25047
  var SAVAX_URL = "https://api.benqi.fi/liquidstaking/apr";
25029
25048
  var savaxFetcher = {
25030
25049
  label: "SAVAX",
@@ -25034,7 +25053,7 @@ var savaxFetcher = {
25034
25053
  }
25035
25054
  };
25036
25055
 
25037
- // src/yields/fetchers/coinbase.ts
25056
+ // src/yields/intrinsic/fetchers/coinbase.ts
25038
25057
  var CBETH_URL = "https://api.exchange.coinbase.com/wrapped-assets/cbeth";
25039
25058
  var cbethFetcher = {
25040
25059
  label: "CBETH",
@@ -25054,7 +25073,7 @@ var cbethFetcher = {
25054
25073
  }
25055
25074
  };
25056
25075
 
25057
- // src/yields/fetchers/kelp.ts
25076
+ // src/yields/intrinsic/fetchers/kelp.ts
25058
25077
  var RSETH_URL = "https://universe.kelpdao.xyz/rseth/totalApy";
25059
25078
  var rsethFetcher = {
25060
25079
  label: "RSETH",
@@ -25064,7 +25083,7 @@ var rsethFetcher = {
25064
25083
  }
25065
25084
  };
25066
25085
 
25067
- // src/yields/fetchers/trufin.ts
25086
+ // src/yields/intrinsic/fetchers/trufin.ts
25068
25087
  var TRUMATIC_URL = "https://api.trufin.io/staker/apy?staker=MATIC";
25069
25088
  var trumaticFetcher = {
25070
25089
  label: "TRUMATIC",
@@ -25074,7 +25093,7 @@ var trumaticFetcher = {
25074
25093
  }
25075
25094
  };
25076
25095
 
25077
- // src/yields/fetchers/stakewise.ts
25096
+ // src/yields/intrinsic/fetchers/stakewise.ts
25078
25097
  var OSETH_URL = "https://graphs.stakewise.io/mainnet-a/subgraphs/name/stakewise/prod?opName=osTokenApy";
25079
25098
  var osETH = "StakeWise Staked ETH::OSETH";
25080
25099
  var osethFetcher = {
@@ -25092,7 +25111,7 @@ var osethFetcher = {
25092
25111
  }
25093
25112
  };
25094
25113
 
25095
- // src/yields/fetchers/yieldnest.ts
25114
+ // src/yields/intrinsic/fetchers/yieldnest.ts
25096
25115
  var YNETHX_URL = "https://gateway.yieldnest.finance/api/v1/graphql";
25097
25116
  var ynethx = "ynETH MAX::YNETHX";
25098
25117
  var ynethxFetcher = {
@@ -25117,7 +25136,7 @@ var ynethxFetcher = {
25117
25136
  }
25118
25137
  };
25119
25138
 
25120
- // src/yields/fetchers/puffer.ts
25139
+ // src/yields/intrinsic/fetchers/puffer.ts
25121
25140
  var PUFETH_URL = "https://api-v2.puffer.fi/backend-for-frontend/tvl/all";
25122
25141
  var pufEth = "PUFETH";
25123
25142
  var pufethFetcher = {
@@ -25131,7 +25150,7 @@ var pufethFetcher = {
25131
25150
  }
25132
25151
  };
25133
25152
 
25134
- // src/yields/fetchers/sky.ts
25153
+ // src/yields/intrinsic/fetchers/sky.ts
25135
25154
  var SUSDS_URL = "https://info-sky.blockanalitica.com/api/v1/overall/?format=json";
25136
25155
  var sUsds = "sUSDS::SUSDS";
25137
25156
  var susdsFetcher = {
@@ -25147,7 +25166,7 @@ var susdsFetcher = {
25147
25166
  }
25148
25167
  };
25149
25168
 
25150
- // src/yields/fetchers/reservoir.ts
25169
+ // src/yields/intrinsic/fetchers/reservoir.ts
25151
25170
  var SRUSD_URL = "https://app.reservoir.xyz/api/website";
25152
25171
  var srUsd = "Reservoir srUSD::SRUSD";
25153
25172
  var wsrusd = "Wrapped Savings rUSD::WSRUSD";
@@ -25166,7 +25185,7 @@ var srusdFetcher = {
25166
25185
  }
25167
25186
  };
25168
25187
 
25169
- // src/yields/fetchers/yieldfi.ts
25188
+ // src/yields/intrinsic/fetchers/yieldfi.ts
25170
25189
  var YUSD_URL = "https://ctrl.yield.fi/t/yusd/apy";
25171
25190
  var yusd = "YieldFi yUSD::yUSD";
25172
25191
  var yusdFetcher = {
@@ -25180,7 +25199,7 @@ var yusdFetcher = {
25180
25199
  }
25181
25200
  };
25182
25201
 
25183
- // src/yields/fetchers/resolv.ts
25202
+ // src/yields/intrinsic/fetchers/resolv.ts
25184
25203
  var RLP_URL = "https://api.resolv.xyz/apr/rlp/7d";
25185
25204
  var WSTUSR_URL = "https://api.resolv.xyz/apr/staking/7d";
25186
25205
  var rlp = "Resolv RLP::RLP";
@@ -25212,7 +25231,7 @@ var wstusrFetcher = {
25212
25231
  }
25213
25232
  };
25214
25233
 
25215
- // src/yields/fetchers/morphoVaults.ts
25234
+ // src/yields/intrinsic/fetchers/morphoVaults.ts
25216
25235
  var MORPHO_VAULTS_URL = "https://blue-api.morpho.org/graphql";
25217
25236
  var csusdl = "Coinshift USDL Morpho Vault::CSUSDL";
25218
25237
  var csusdlFetcher = {
@@ -25235,7 +25254,7 @@ var csusdlFetcher = {
25235
25254
  }
25236
25255
  };
25237
25256
 
25238
- // src/yields/fetchers/swell.ts
25257
+ // src/yields/intrinsic/fetchers/swell.ts
25239
25258
  var RSWETH_URL = "https://v3-lst.svc.swellnetwork.io/api/tokens/sweth/apr";
25240
25259
  var rsweth = "Restaked Swell ETH::RSWETH";
25241
25260
  var rswethFetcher = {
@@ -25249,7 +25268,7 @@ var rswethFetcher = {
25249
25268
  }
25250
25269
  };
25251
25270
 
25252
- // src/yields/fetchers/usual.ts
25271
+ // src/yields/intrinsic/fetchers/usual.ts
25253
25272
  var USDZEROPLUS_URL = "https://app.usual.money/api/rewards/rates/USD0++";
25254
25273
  var ETHZERO_URL = "https://app.usual.money/api/rewards/rates/ETH0";
25255
25274
  var usdZeroPlus = "Staked USD0::USD0++";
@@ -25275,7 +25294,7 @@ var ethZeroFetcher = {
25275
25294
  }
25276
25295
  };
25277
25296
 
25278
- // src/yields/fetchers/jito.ts
25297
+ // src/yields/intrinsic/fetchers/jito.ts
25279
25298
  var JITOSOL_URL = "https://www.jito.network/api/getJitoPoolStats/";
25280
25299
  var jitoSol = "Jito Staked SOL::JitoSOL";
25281
25300
  var jitoSolFetcher = {
@@ -25290,7 +25309,7 @@ var jitoSolFetcher = {
25290
25309
  }
25291
25310
  };
25292
25311
 
25293
- // src/yields/fetchers/theo.ts
25312
+ // src/yields/intrinsic/fetchers/theo.ts
25294
25313
  var THBILL_URL = "https://thbill-api.theo.xyz/snapshots";
25295
25314
  var thBill = "Theo Short Duration US Treasury Fund::THBILL";
25296
25315
  var thbillFetcher = {
@@ -25306,7 +25325,7 @@ var thbillFetcher = {
25306
25325
  }
25307
25326
  };
25308
25327
 
25309
- // src/yields/fetchers/superreturn.ts
25328
+ // src/yields/intrinsic/fetchers/superreturn.ts
25310
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";
25311
25330
  var ssuperusd = "SuperReturn sSuperUSD::SSUPERUSD";
25312
25331
  var ssuperusdFetcher = {
@@ -25324,7 +25343,7 @@ var ssuperusdFetcher = {
25324
25343
  }
25325
25344
  };
25326
25345
 
25327
- // src/yields/fetchers/hyperbeat.ts
25346
+ // src/yields/intrinsic/fetchers/hyperbeat.ts
25328
25347
  var HBHYPE_URL = "https://api.hyperbeat.org/api/v1/staking?address=0xCeaD893b162D38e714D82d06a7fe0b0dc3c38E0b";
25329
25348
  var HBUHYPE_URL = "https://app.hyperbeat.org/api/hyperfolio/vault-infos?vaultAddress=0x96C6cBB6251Ee1c257b2162ca0f39AA5Fa44B1FB";
25330
25349
  var hbhype = "hyperbeat x ether.fi HYPE::beHYPE";
@@ -25370,7 +25389,7 @@ var hbuhypeFetcher = {
25370
25389
  }
25371
25390
  };
25372
25391
 
25373
- // src/yields/fetchers/hyperliquid.ts
25392
+ // src/yields/intrinsic/fetchers/hyperliquid.ts
25374
25393
  var HLP_URL = "https://api-ui.hyperliquid.xyz/info";
25375
25394
  var HWHLP_URL = "https://api.hyperwavefi.xyz/stats/latest?asset=hwhlp_999";
25376
25395
  var hlp = "Wrapped HLP::WHLP";
@@ -25412,7 +25431,7 @@ var hwhlpFetcher = {
25412
25431
  }
25413
25432
  };
25414
25433
 
25415
- // src/yields/fetchers/usdx.ts
25434
+ // src/yields/intrinsic/fetchers/usdx.ts
25416
25435
  var SUSDX_URL = "https://app.usdx.money/v1/base/apyInfo";
25417
25436
  var susdx = "SUSDX";
25418
25437
  var susdxFetcher = {
@@ -25423,7 +25442,7 @@ var susdxFetcher = {
25423
25442
  }
25424
25443
  };
25425
25444
 
25426
- // src/yields/fetchers/reserve.ts
25445
+ // src/yields/intrinsic/fetchers/reserve.ts
25427
25446
  var RTOKENS_URL = "https://yields.reserve.org/pools";
25428
25447
  var hyUSD = "High Yield USD Base::HYUSD";
25429
25448
  var bsdETH = "Based ETH::BSDETH";
@@ -25453,7 +25472,7 @@ var rtokensFetcher = {
25453
25472
  }
25454
25473
  };
25455
25474
 
25456
- // src/yields/fetchers/hyperlend.ts
25475
+ // src/yields/intrinsic/fetchers/hyperlend.ts
25457
25476
  var HYPE_URL = "https://api.hyperlend.finance/data/nativeApy";
25458
25477
  var wstHype = "Staked HYPE Shares::WSTHYPE";
25459
25478
  var kHYPE = "Kinetiq Staked HYPE::kHYPE";
@@ -25468,7 +25487,7 @@ var hypeFetcher = {
25468
25487
  }
25469
25488
  };
25470
25489
 
25471
- // src/yields/fetchers/angle.ts
25490
+ // src/yields/intrinsic/fetchers/angle.ts
25472
25491
  var ANGLE_URL = "https://exporter.angle.money/v2/savingsApr";
25473
25492
  var stUSD = "Angle Staked USDA::stUSD";
25474
25493
  var stEur = "Angle Staked EURA::stEUR";
@@ -25496,7 +25515,7 @@ var addressToAssetYearn = {
25496
25515
  "0x93fec6639717b6215a48e5a72a162c50dcc40d68": "vbAUSD yVault::yvvbAUSD"
25497
25516
  };
25498
25517
 
25499
- // src/yields/fetchers/yearnKatana.ts
25518
+ // src/yields/intrinsic/fetchers/yearnKatana.ts
25500
25519
  var YEARN_KATANA_URL = "https://katana-apr-service.vercel.app/api/vaults";
25501
25520
  var yearnKatanaFetcher = {
25502
25521
  label: "YEARN_KATANA",
@@ -25516,7 +25535,7 @@ var yearnKatanaFetcher = {
25516
25535
  }
25517
25536
  };
25518
25537
 
25519
- // src/yields/fetchers/yoProtocol.ts
25538
+ // src/yields/intrinsic/fetchers/yoProtocol.ts
25520
25539
  var YO_URL = "https://api.yo.xyz/api/v1/vault/stats";
25521
25540
  var yoeth = "Yield Optimizer ETH::YOETH";
25522
25541
  var yobtc = "Yield Optimizer BTC::YOBTC";
@@ -25543,7 +25562,7 @@ var yoFetcher = {
25543
25562
  }
25544
25563
  };
25545
25564
 
25546
- // src/yields/fetchers/gmx.ts
25565
+ // src/yields/intrinsic/fetchers/gmx.ts
25547
25566
  var GMX_URL = "https://arbitrum-api.gmxinfra.io/apy?period=1d";
25548
25567
  var gmx_eth_usd = "GMX Market ETH/USD::GM [WETH-USDC]";
25549
25568
  var gmx_btc_usd = "GMX Market BTC/USD::GM [WBTC-USDC]";
@@ -25681,7 +25700,7 @@ function yearFractionToExpiry(expiryISO, now = /* @__PURE__ */ new Date()) {
25681
25700
  return yearFraction;
25682
25701
  }
25683
25702
 
25684
- // src/yields/fetchers/pendle.ts
25703
+ // src/yields/intrinsic/fetchers/pendle.ts
25685
25704
  var pendleFetcher = {
25686
25705
  label: "PENDLE",
25687
25706
  fetch: async () => {
@@ -25701,7 +25720,7 @@ var pendleFetcher = {
25701
25720
  }
25702
25721
  };
25703
25722
 
25704
- // src/yields/fetchers/usdai.ts
25723
+ // src/yields/intrinsic/fetchers/usdai.ts
25705
25724
  var USDAI_APY_URL = "https://api.usd.ai/usdai/dashboard/current-apy";
25706
25725
  var usdai = "sUSDai::SUSDAI";
25707
25726
  var usdaiFetcher = {
@@ -25717,7 +25736,7 @@ var usdaiFetcher = {
25717
25736
  }
25718
25737
  };
25719
25738
 
25720
- // src/yields/fetchers/maple.ts
25739
+ // src/yields/intrinsic/fetchers/maple.ts
25721
25740
  var MAPLE_URL = "https://api.maple.finance/v2/graphql";
25722
25741
  var SYRUP_USDT_ID = "0x356b8d89c1e1239cbbb9de4815c39a1474d5ba7d";
25723
25742
  var SYRUP_USDC_ID = "0x80ac24aa929eaf5013f6436cda2a7ba190f5cc0b";
@@ -25754,8 +25773,24 @@ var mapleFetcher = {
25754
25773
  }
25755
25774
  };
25756
25775
 
25757
- // src/yields/fetchGeneralYields.ts
25758
- var fetchGeneralYields = async () => {
25776
+ // src/yields/intrinsic/fetchers/ondo.ts
25777
+ var ONDO_BASE_URL = "https://app.ondo.finance/api/v2/assets";
25778
+ var ondoFetcher = {
25779
+ label: "ONDO",
25780
+ fetch: async () => {
25781
+ const [ousgRes, usdyRes] = await Promise.all([
25782
+ fetch(`${ONDO_BASE_URL}/ousg/info`).then((r) => r.json()),
25783
+ fetch(`${ONDO_BASE_URL}/usdy/info`).then((r) => r.json())
25784
+ ]);
25785
+ return {
25786
+ OUSG: apyToAprPercent(Number(ousgRes?.primaryMarket?.apy ?? 0)),
25787
+ USDY: apyToAprPercent(Number(usdyRes?.primaryMarket?.apy ?? 0))
25788
+ };
25789
+ }
25790
+ };
25791
+
25792
+ // src/yields/intrinsic/index.ts
25793
+ async function fetchIntrinsicYields() {
25759
25794
  const wstethPromise = safeFetch(wstethFetcher.label, wstethFetcher.fetch);
25760
25795
  const weethFetcher = createWeethFetcher(wstethPromise);
25761
25796
  const fetchers = [
@@ -25800,24 +25835,219 @@ var fetchGeneralYields = async () => {
25800
25835
  gmxFetcher,
25801
25836
  pendleFetcher,
25802
25837
  usdaiFetcher,
25803
- mapleFetcher
25838
+ mapleFetcher,
25839
+ ondoFetcher
25804
25840
  ];
25805
- const [wstethData, ...results] = await Promise.all([
25841
+ const results = await Promise.all([
25806
25842
  wstethPromise,
25807
25843
  ...fetchers.map((f) => safeFetch(f.label, f.fetch))
25808
25844
  ]);
25809
- const intrinsicYields = {
25810
- USDY: 4.35
25811
- };
25812
- if (wstethData) Object.assign(intrinsicYields, wstethData);
25845
+ const intrinsicYields = {};
25813
25846
  for (const result of results) {
25814
25847
  if (result) Object.assign(intrinsicYields, result);
25815
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();
25816
26031
  return {
25817
26032
  intrinsicYields,
25818
- lenderRewards: {}
26033
+ lenderRewards: flattenLenderRewards(lenderRewards)
25819
26034
  };
25820
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
+ };
25821
26051
 
25822
26052
  // src/prices/defillama/index.ts
25823
26053
  var prefixEthereum = "ethereum:";
@@ -25966,7 +26196,7 @@ var datasManta = [manta].map((d) => prefixManta + d).join(",");
25966
26196
  var datasTelos = [wtlos].map((d) => prefixTelos + d).join(",");
25967
26197
  var datasbsc = [xpl].map((d) => prefixbsc + d).join(",");
25968
26198
  var datasmoonbeam = [glmr].map((d) => prefixmoonbeam + d).join(",");
25969
- var URL = `https://coins.llama.fi/prices/current/${[
26199
+ var URL2 = `https://coins.llama.fi/prices/current/${[
25970
26200
  datasEthereum,
25971
26201
  datasAvalanche,
25972
26202
  datasArbitrum,
@@ -26089,7 +26319,7 @@ var SYMBOL_MAP = {
26089
26319
  };
26090
26320
  async function fetchDefillamaData() {
26091
26321
  try {
26092
- const res = await fetch(URL).then((a) => a.json());
26322
+ const res = await fetch(URL2).then((a) => a.json());
26093
26323
  let prices = Object.assign(
26094
26324
  {},
26095
26325
  ...Object.values(res.coins).map((k) => {
@@ -30104,6 +30334,6 @@ async function fetchTokenBalances(chainId, account, tokens, options = {}) {
30104
30334
  return parseTokenBalanceResult(rawResult, prepared.query);
30105
30335
  }
30106
30336
 
30107
- 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 };
30108
30338
  //# sourceMappingURL=index.js.map
30109
30339
  //# sourceMappingURL=index.js.map