@1delta/margin-fetcher 0.0.222 → 0.0.224

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +63 -28
  4. package/dist/index.js.map +1 -1
  5. package/dist/lending/public-data/aave-v2-type/publicCallParse.d.ts.map +1 -1
  6. package/dist/lending/public-data/aave-v3-type/publicCallParse.d.ts.map +1 -1
  7. package/dist/lending/public-data/aave-v4-type/fetcher/normalize.d.ts +8 -0
  8. package/dist/lending/public-data/aave-v4-type/fetcher/normalize.d.ts.map +1 -1
  9. package/dist/lending/public-data/compound-v2/convert/benqi.d.ts +1 -0
  10. package/dist/lending/public-data/compound-v2/convert/benqi.d.ts.map +1 -1
  11. package/dist/lending/public-data/compound-v2/convert/standard.d.ts +1 -0
  12. package/dist/lending/public-data/compound-v2/convert/standard.d.ts.map +1 -1
  13. package/dist/lending/public-data/compound-v2/convert/sumer.d.ts +1 -0
  14. package/dist/lending/public-data/compound-v2/convert/sumer.d.ts.map +1 -1
  15. package/dist/lending/public-data/compound-v2/convert/takara.d.ts +1 -0
  16. package/dist/lending/public-data/compound-v2/convert/takara.d.ts.map +1 -1
  17. package/dist/lending/public-data/compound-v2/convert/tectonic.d.ts +1 -0
  18. package/dist/lending/public-data/compound-v2/convert/tectonic.d.ts.map +1 -1
  19. package/dist/lending/public-data/compound-v3/publicCallParse.d.ts.map +1 -1
  20. package/dist/lending/public-data/euler/fetcher/normalize.d.ts +2 -0
  21. package/dist/lending/public-data/euler/fetcher/normalize.d.ts.map +1 -1
  22. package/dist/lending/public-data/init/publicCallParse.d.ts.map +1 -1
  23. package/dist/lending/public-data/lista/getMarketsFromChain.d.ts.map +1 -1
  24. package/dist/lending/public-data/morpho/convertPublic.d.ts.map +1 -1
  25. package/dist/lending/public-data/morpho/getMarketsFromChain.d.ts.map +1 -1
  26. package/dist/lending/user-data/summary/types.d.ts +2 -1
  27. package/dist/lending/user-data/summary/types.d.ts.map +1 -1
  28. package/dist/lending/user-data/utils/types.d.ts +7 -0
  29. package/dist/lending/user-data/utils/types.d.ts.map +1 -1
  30. package/dist/types/apiReturnType.d.ts +2 -0
  31. package/dist/types/apiReturnType.d.ts.map +1 -1
  32. package/dist/types/lender/aave-v2-types.d.ts +2 -0
  33. package/dist/types/lender/aave-v2-types.d.ts.map +1 -1
  34. package/dist/types/lender/aave-v3-types.d.ts +2 -0
  35. package/dist/types/lender/aave-v3-types.d.ts.map +1 -1
  36. package/dist/types/lender/compound-v2-types.d.ts +2 -0
  37. package/dist/types/lender/compound-v2-types.d.ts.map +1 -1
  38. package/dist/types/lender/init-types.d.ts +2 -0
  39. package/dist/types/lender/init-types.d.ts.map +1 -1
  40. package/dist/types/lender/morpho-types.d.ts +2 -0
  41. package/dist/types/lender/morpho-types.d.ts.map +1 -1
  42. package/dist/utils/parsing.d.ts +6 -0
  43. package/dist/utils/parsing.d.ts.map +1 -1
  44. package/package.json +5 -5
package/dist/index.d.ts CHANGED
@@ -13,7 +13,7 @@ export { computeEModeAnalysis } from './lending/margin/e-mode';
13
13
  export type { EModeResult, EModeAssets } from './lending/margin/e-mode';
14
14
  export type { LoopPostTradeMetrics, LendingMode } from './lending/margin/loop';
15
15
  export type { SumerPositionInput, GroupAccumulator, } from './lending/margin/base';
16
- export type { LenderYieldComplete, LenderCrossPoolMeta, LenderToLenderCrossPoolMeta, CompoundV2Metadata, AaveMetadata, InitMetadata, EulerV2Metadata, ProtocolParams, } from './lending/user-data/utils/types';
16
+ export type { LenderYieldComplete, LenderCrossPoolMeta, LenderToLenderCrossPoolMeta, LenderInfo, LenderInfoMap, CompoundV2Metadata, AaveMetadata, InitMetadata, EulerV2Metadata, ProtocolParams, } from './lending/user-data/utils/types';
17
17
  export { computeSumerWaterfall, buildSumerAccumulators, applyPositionDelta, } from './lending/margin/base/sumer/waterfall';
18
18
  export { computeSumerDepositDelta, computeSumerWithdrawDelta, computeSumerBorrowDelta, computeSumerRepayDelta, } from './lending/margin/base/sumer';
19
19
  export { fetchEulerSubAccountIndexes, getSubAccountAddress, getSubAccountIndex, } from './lending/user-data/euler/userCallBuild';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -8047,6 +8047,13 @@ var zeroAddress = "0x0000000000000000000000000000000000000000";
8047
8047
 
8048
8048
  // src/utils/parsing.ts
8049
8049
  var BPS = 1e4;
8050
+ var computeUtilization = (totalDeposits, totalDebt, totalDebtStable = 0) => {
8051
+ const supply = Number(totalDeposits);
8052
+ if (!Number.isFinite(supply) || supply <= 0) return 0;
8053
+ const debt = Number(totalDebt) + Number(totalDebtStable || 0);
8054
+ if (!Number.isFinite(debt) || debt <= 0) return 0;
8055
+ return debt / supply;
8056
+ };
8050
8057
  var parseRawAmount = (answer, decimals = 18) => {
8051
8058
  if (!answer || answer === "0x") return "0";
8052
8059
  try {
@@ -8184,6 +8191,11 @@ var getAaveV2ReservesDataConverter = (lender, chainId, prices, additionalYields,
8184
8191
  totalDebtStableUSD: Number(totalStableDebt) * price,
8185
8192
  totalDebtUSD,
8186
8193
  totalLiquidityUSD: liquidity * price,
8194
+ utilization: computeUtilization(
8195
+ totalAToken,
8196
+ totalVariableDebt,
8197
+ totalStableDebt
8198
+ ),
8187
8199
  // rates
8188
8200
  depositRate: formatAaveRawApyToApr(
8189
8201
  reserveData?.[3 /* liquidityRate */]?.toString()
@@ -8347,6 +8359,11 @@ var getAaveV3ReservesDataConverter = (lender, chainId, prices, additionalYields,
8347
8359
  totalDebtStableUSD: Number(totalDebtStable) * price,
8348
8360
  totalDebtUSD: Number(totalDebt) * price,
8349
8361
  totalLiquidityUSD: liquidity * price,
8362
+ utilization: computeUtilization(
8363
+ totalDeposits,
8364
+ totalDebt,
8365
+ totalDebtStable
8366
+ ),
8350
8367
  // rates
8351
8368
  depositRate: formatAaveRawApyToApr(
8352
8369
  reserveData?.[5 /* liquidityRate */]?.toString()
@@ -8555,6 +8572,7 @@ function parseYLDRCall(chainId, lender, additionalYields, prices, tokenList) {
8555
8572
  totalDebtStableUSD: 0,
8556
8573
  totalDebtUSD,
8557
8574
  totalLiquidityUSD: liquidity * price,
8575
+ utilization: computeUtilization(totalAToken, totalVariableDebt),
8558
8576
  // rates
8559
8577
  depositRate: formatAaveRawApyToApr(
8560
8578
  reserveData?.[3 /* liquidityRate */]?.toString()
@@ -8693,6 +8711,11 @@ function parseAave32(chainId, lender, prices, additionalYields, tokenList) {
8693
8711
  totalDebtStableUSD: Number(totalDebtStable) * price,
8694
8712
  totalDebtUSD: Number(totalDebt) * price,
8695
8713
  totalLiquidityUSD: liquidity * price,
8714
+ utilization: computeUtilization(
8715
+ totalDeposits,
8716
+ totalDebt,
8717
+ totalDebtStable
8718
+ ),
8696
8719
  // rates
8697
8720
  depositRate: formatAaveRawApyToApr(
8698
8721
  reserveData?.[5 /* liquidityRate */]?.toString()
@@ -8829,6 +8852,7 @@ var getInitReservesDataConverter = (lender, chainId, prices, additionalYields, t
8829
8852
  totalDebtUSD: price * Number(totalDebt),
8830
8853
  totalLiquidity: liquidity,
8831
8854
  totalLiquidityUSD: liquidity * price,
8855
+ utilization: computeUtilization(totalDeposits, totalDebt),
8832
8856
  depositRate: convertRateToApr(
8833
8857
  Number(parseRawAmount(dat?.supplyRate.toString(), 18))
8834
8858
  ),
@@ -9030,9 +9054,13 @@ var getCompoundV3ReservesDataConverter = (lender, chainId, prices, additionalYie
9030
9054
  variableBorrowRate: Number(resultsInterest[0 /* borrowRate */]) / SECONDS_PER_YEAR / 10,
9031
9055
  depositRate: Number(resultsInterest[1 /* supplyRate */]) / SECONDS_PER_YEAR / 10,
9032
9056
  stableBorrowRate: 0,
9033
- utilization: parseRawAmount(
9034
- resultsInterest[2 /* utilization */].toString(),
9035
- COMET_RISK_DECIMALS
9057
+ // Comet returns utilization scaled by 1e18; surface as a 0..1 number
9058
+ // to match the canonical PoolData shape (and the other lender outputs).
9059
+ utilization: Number(
9060
+ parseRawAmount(
9061
+ resultsInterest[2 /* utilization */].toString(),
9062
+ COMET_RISK_DECIMALS
9063
+ )
9036
9064
  ),
9037
9065
  totalLiquidity: liquidity,
9038
9066
  totalLiquidityUSD: liquidity * price,
@@ -12146,6 +12174,7 @@ function convertMarketsToMorphoResponse(response, chainId, additionalYields = {
12146
12174
  const meta = tokens[loanAssetAddress] ?? loanAsset;
12147
12175
  const totalDeposits = formatNr(state.supplyAssets, loanAsset.decimals);
12148
12176
  const totalDebt = formatNr(state.borrowAssets, loanAsset.decimals);
12177
+ const utilization = totalDeposits > 0 ? totalDebt / totalDeposits : 0;
12149
12178
  const loanMarketUid = createMarketUid(chainId, m, loanAssetAddress);
12150
12179
  data[m].data[loanMarketUid] = {
12151
12180
  marketUid: loanMarketUid,
@@ -12161,6 +12190,7 @@ function convertMarketsToMorphoResponse(response, chainId, additionalYields = {
12161
12190
  totalLiquidity: totalDeposits - totalDebt,
12162
12191
  totalLiquidityUSD: Number(state.supplyAssetsUsd) - Number(state.borrowAssetsUsd),
12163
12192
  totalDebtUSD: Number(state.borrowAssetsUsd),
12193
+ utilization,
12164
12194
  depositRate: apyToApr2(Number(state.supplyApy)) * 100,
12165
12195
  variableBorrowRate: apyToApr2(Number(state.borrowApy)) * 100,
12166
12196
  stableBorrowRate: 0,
@@ -12212,6 +12242,7 @@ function convertMarketsToMorphoResponse(response, chainId, additionalYields = {
12212
12242
  totalDepositsUSD: Number(state.collateralAssetsUsd),
12213
12243
  totalDebtStableUSD: 0,
12214
12244
  totalDebtUSD: 0,
12245
+ utilization: 0,
12215
12246
  depositRate: 0,
12216
12247
  variableBorrowRate: 0,
12217
12248
  stableBorrowRate: 0,
@@ -12913,6 +12944,8 @@ function getListaMarketDataConverter(lender, chainId, prices, additionalYields =
12913
12944
  totalLiquidity: totalDeposits - totalDebt,
12914
12945
  totalLiquidityUSD: (totalDeposits - totalDebt) * loanPrice,
12915
12946
  totalDebtUSD: totalDebt * loanPrice,
12947
+ // utilization is a WAD bigint from MathLib; surface as 0..1 number
12948
+ utilization: Number(utilization) / 1e18,
12916
12949
  depositRate: depositApr,
12917
12950
  variableBorrowRate: borrowApr,
12918
12951
  stableBorrowRate: 0,
@@ -12954,6 +12987,7 @@ function getListaMarketDataConverter(lender, chainId, prices, additionalYields =
12954
12987
  totalDepositsUSD: 0,
12955
12988
  totalDebtStableUSD: 0,
12956
12989
  totalDebtUSD: 0,
12990
+ utilization: 0,
12957
12991
  depositRate: 0,
12958
12992
  variableBorrowRate: 0,
12959
12993
  stableBorrowRate: 0,
@@ -13122,6 +13156,8 @@ function getMorphoMarketDataConverter(lender, chainId, prices, additionalYields
13122
13156
  totalLiquidity: totalDeposits - totalDebt,
13123
13157
  totalLiquidityUSD: (totalDeposits - totalDebt) * loanPrice,
13124
13158
  totalDebtUSD: totalDebt * loanPrice,
13159
+ // utilization is a WAD bigint from MathLib; surface as 0..1 number
13160
+ utilization: Number(utilization) / 1e18,
13125
13161
  depositRate: depositApr,
13126
13162
  variableBorrowRate: borrowApr,
13127
13163
  stableBorrowRate: 0,
@@ -13168,6 +13204,7 @@ function getMorphoMarketDataConverter(lender, chainId, prices, additionalYields
13168
13204
  totalDepositsUSD: 0,
13169
13205
  totalDebtStableUSD: 0,
13170
13206
  totalDebtUSD: 0,
13207
+ utilization: 0,
13171
13208
  depositRate: 0,
13172
13209
  variableBorrowRate: 0,
13173
13210
  stableBorrowRate: 0,
@@ -15765,6 +15802,7 @@ function convertSingleEntry(opts) {
15765
15802
  totalDepositsUSD: totalSupplyUnderlying * price,
15766
15803
  totalDebtStable: 0,
15767
15804
  totalDebtStableUSD: 0,
15805
+ utilization: computeUtilization(totalSupplyUnderlying, totalDebt),
15768
15806
  intrinsicYield: additionalYields?.intrinsicYields?.[asset.assetGroup] ?? 0,
15769
15807
  config: {
15770
15808
  [LENDER_MODE_NO_MODE]: {
@@ -15866,6 +15904,7 @@ function convertSumerEntry(opts) {
15866
15904
  totalDepositsUSD: totalSupplyUnderlying * price,
15867
15905
  totalDebtStable: 0,
15868
15906
  totalDebtStableUSD: 0,
15907
+ utilization: computeUtilization(totalSupplyUnderlying, totalDebt),
15869
15908
  stakingYield: additionalYields?.intrinsicYields?.[asset.assetGroup] ?? 0,
15870
15909
  config,
15871
15910
  hasStable: false,
@@ -15929,6 +15968,11 @@ function convertTakaraEntry(opts) {
15929
15968
  totalDepositsUSD: totalSupplyUSD,
15930
15969
  totalDebtStable: 0,
15931
15970
  totalDebtStableUSD: 0,
15971
+ // Token-denominated amounts depend on an off-chain price; the
15972
+ // USD-scaled values from the lens are independent of it, so derive
15973
+ // utilization from those to avoid divide-by-zero when the price feed
15974
+ // is missing.
15975
+ utilization: computeUtilization(totalSupplyUSD, totalDebtUSD),
15932
15976
  intrinsicYield: additionalYields?.intrinsicYields?.[asset.assetGroup] ?? 0,
15933
15977
  config: {
15934
15978
  [LENDER_MODE_NO_MODE]: {
@@ -15994,6 +16038,7 @@ function convertTectonicEntry(opts) {
15994
16038
  totalDepositsUSD: totalSupplyUnderlying * price,
15995
16039
  totalDebtStable: 0,
15996
16040
  totalDebtStableUSD: 0,
16041
+ utilization: computeUtilization(totalSupplyUnderlying, totalDebt),
15997
16042
  intrinsicYield: additionalYields?.intrinsicYields?.[asset.assetGroup] ?? 0,
15998
16043
  config: {
15999
16044
  [LENDER_MODE_NO_MODE]: {
@@ -16158,6 +16203,7 @@ function convertBenqiEntry(opts) {
16158
16203
  totalDepositsUSD: totalDeposits * price,
16159
16204
  totalDebtStable: 0,
16160
16205
  totalDebtStableUSD: 0,
16206
+ utilization: computeUtilization(totalDeposits, totalDebt),
16161
16207
  intrinsicYield: additionalYields?.intrinsicYields?.[asset.assetGroup] ?? 0,
16162
16208
  config: {
16163
16209
  [LENDER_MODE_NO_MODE]: {
@@ -17748,6 +17794,7 @@ function buildTokenEntry(info, config, collateralActive, borrowVaults, opts) {
17748
17794
  totalDepositsUSD: totalDeposits * pricePerUnit,
17749
17795
  totalDebtStableUSD: 0,
17750
17796
  totalDebtUSD: totalDebt * pricePerUnit,
17797
+ utilization: totalDeposits > 0 ? totalDebt / totalDeposits : 0,
17751
17798
  depositRate,
17752
17799
  variableBorrowRate,
17753
17800
  stableBorrowRate: 0,
@@ -18087,18 +18134,7 @@ function normalizeAaveV4(spokeDataList, chainId, spokeLenderKeyArg, prices, addi
18087
18134
  } else {
18088
18135
  price = prices[oracleKey] ?? 0;
18089
18136
  }
18090
- const totalDepositsStr = toTokenAmount2(
18091
- reserve.suppliedAssets,
18092
- decimals
18093
- );
18094
- const totalDebtStr = toTokenAmount2(reserve.totalDebt, decimals);
18095
- const totalDepositsNum = toTokenNumber(
18096
- reserve.suppliedAssets,
18097
- decimals
18098
- );
18099
- const totalDebtNum = toTokenNumber(reserve.totalDebt, decimals);
18100
- const totalDepositsUSD = totalDepositsNum * price;
18101
- const totalDebtUSD = totalDebtNum * price;
18137
+ const spokeTotalDebtNum = toTokenNumber(reserve.totalDebt, decimals);
18102
18138
  const supplyCap = reserve.spokeBinding?.addCap ?? 0;
18103
18139
  const borrowCap = reserve.spokeBinding?.drawCap ?? 0;
18104
18140
  const hubDecimals = reserve.hubAsset.decimals || decimals;
@@ -18108,30 +18144,28 @@ function normalizeAaveV4(spokeDataList, chainId, spokeLenderKeyArg, prices, addi
18108
18144
  );
18109
18145
  let borrowLiquidityNum = hubLiquidityNum;
18110
18146
  if (borrowCap > 0 && borrowCap < MAX_SPOKE_CAP) {
18111
- const spokeHeadroom = borrowCap - totalDebtNum;
18147
+ const spokeHeadroom = borrowCap - spokeTotalDebtNum;
18112
18148
  if (spokeHeadroom < borrowLiquidityNum)
18113
18149
  borrowLiquidityNum = spokeHeadroom;
18114
18150
  }
18115
18151
  if (borrowLiquidityNum < 0) borrowLiquidityNum = 0;
18116
18152
  const borrowLiquidityUSD = borrowLiquidityNum * price;
18117
18153
  const variableBorrowRate = rayRateToApr(reserve.hubAsset.drawnRate);
18118
- const hubTotalSupply = toTokenNumber(
18119
- reserve.hubAsset.totalAddedAssets ?? 0n,
18120
- hubDecimals
18121
- );
18122
- const hubTotalOwed = toTokenNumber(
18123
- reserve.hubAsset.totalOwedAssets ?? 0n,
18124
- hubDecimals
18125
- );
18154
+ const hubTotalSupplyRaw = reserve.hubAsset.totalAddedAssets ?? 0n;
18155
+ const hubTotalOwedRaw = reserve.hubAsset.totalOwedAssets ?? 0n;
18156
+ const totalDepositsStr = toTokenAmount2(hubTotalSupplyRaw, hubDecimals);
18157
+ const totalDebtStr = toTokenAmount2(hubTotalOwedRaw, hubDecimals);
18158
+ const hubTotalSupply = toTokenNumber(hubTotalSupplyRaw, hubDecimals);
18159
+ const hubTotalOwed = toTokenNumber(hubTotalOwedRaw, hubDecimals);
18160
+ const totalDepositsUSD = hubTotalSupply * price;
18161
+ const totalDebtUSD = hubTotalOwed * price;
18126
18162
  const hubUtilization = hubTotalSupply > 0 ? hubTotalOwed / hubTotalSupply : 0;
18127
18163
  const feeRate = reserve.hubAsset.liquidityFee ? reserve.hubAsset.liquidityFee / BPS : 0;
18128
18164
  const depositRate = variableBorrowRate * hubUtilization * (1 - feeRate);
18129
18165
  const collateralRiskBps = reserve.config.collateralRisk || reserve.reserve.collateralRisk || 0;
18130
18166
  const riskPremiumThresholdBps = reserve.spokeBinding?.riskPremiumThreshold ?? 0;
18131
18167
  const config = {};
18132
- for (const [keyStr, dynCfg] of Object.entries(
18133
- reserve.dynamicConfigs
18134
- )) {
18168
+ for (const [keyStr, dynCfg] of Object.entries(reserve.dynamicConfigs)) {
18135
18169
  config[keyStr] = {
18136
18170
  category: Number(keyStr),
18137
18171
  label: `${spokeData.label} / Config ${keyStr}`,
@@ -18158,7 +18192,7 @@ function normalizeAaveV4(spokeDataList, chainId, spokeLenderKeyArg, prices, addi
18158
18192
  );
18159
18193
  data[marketUid] = {
18160
18194
  marketUid,
18161
- name: lenderShortNameFn(spokeLenderKey) + " " + (assetMeta?.symbol ?? ""),
18195
+ name: "Aave V4 " + spokeData.label + " " + (assetMeta?.symbol ?? ""),
18162
18196
  poolId: underlying,
18163
18197
  underlying,
18164
18198
  asset: assetMeta,
@@ -18175,6 +18209,7 @@ function normalizeAaveV4(spokeDataList, chainId, spokeLenderKeyArg, prices, addi
18175
18209
  depositRate,
18176
18210
  variableBorrowRate,
18177
18211
  stableBorrowRate: 0,
18212
+ utilization: hubUtilization,
18178
18213
  intrinsicYield: additionalYields?.intrinsicYields?.[oracleKey] ?? 0,
18179
18214
  rewards: [],
18180
18215
  decimals,