@1delta/margin-fetcher 0.0.159 → 0.0.161

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.
package/dist/index.d.ts CHANGED
@@ -10,6 +10,8 @@ export { computeDepositDelta, computeWithdrawDelta, computeBorrowDelta, computeR
10
10
  export type { PostTradeMetrics } from './lending/margin/base';
11
11
  export { computeOpenTradeDeltas, computeCloseTradeDeltas, computeCollateralSwapDeltas, computeDebtSwapDeltas, computeZapTradeDeltas, positivePart, nanTo, keysFromMaps, noOpResult, buildLoopResult, } from './lending/margin/loop';
12
12
  export type { LoopPostTradeMetrics, LendingMode, } from './lending/margin/loop';
13
+ export { computeSumerDepositDelta, computeSumerWithdrawDelta, computeSumerBorrowDelta, computeSumerRepayDelta, computeSumerWaterfall, buildSumerAccumulators, applyPositionDelta, } from './lending/margin/sumer';
14
+ export type { SumerPositionInput, GroupAccumulator } from './lending/margin/sumer';
13
15
  export { MorphoLensAbi } from '@1delta/abis';
14
16
  export { type PreparedCall, type RawRpcCall, type RawRpcBatch, type MulticallRpcBatch, createRawRpcCalls, createMulticallRpcCall, multicall3Abi, } from './utils/rpcCall';
15
17
  export { type RawRpcResponse, parseRawRpcResponses, parseRawRpcBatchResponses, parseMulticallRpcResponses, } from './utils/rpcParse';
@@ -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
@@ -10985,7 +10985,7 @@ function createBaseTypeUserState(payload, lenderData, totalDeposits24h = 0, tota
10985
10985
  };
10986
10986
  }
10987
10987
 
10988
- // src/lending/user-data/utils/createSumerUserState.ts
10988
+ // src/lending/margin/sumer/waterfall.ts
10989
10989
  function computeSumerWaterfall(groups, accum) {
10990
10990
  let total = 0;
10991
10991
  for (const g of groups) {
@@ -11023,6 +11023,47 @@ function computeSumerWaterfall(groups, accum) {
11023
11023
  }
11024
11024
  return total;
11025
11025
  }
11026
+ function buildSumerAccumulators(positions) {
11027
+ const groupRatesMap = {};
11028
+ const gAccum = {};
11029
+ const gAccumAll = {};
11030
+ for (const pos of positions) {
11031
+ const sm = pos.sumerMeta;
11032
+ const gId = sm.groupId;
11033
+ if (!groupRatesMap[gId]) groupRatesMap[gId] = sm;
11034
+ if (!gAccum[gId]) gAccum[gId] = { cDep: 0, sDep: 0, cDebt: 0, sDebt: 0 };
11035
+ if (!gAccumAll[gId])
11036
+ gAccumAll[gId] = { cDep: 0, sDep: 0, cDebt: 0, sDebt: 0 };
11037
+ const totalDebt = pos.debtUSD + pos.debtStableUSD;
11038
+ if (sm.isCToken) {
11039
+ if (pos.collateralActive && pos.collateralEnabled)
11040
+ gAccum[gId].cDep += pos.depositsUSD;
11041
+ if (pos.collateralActive) gAccumAll[gId].cDep += pos.depositsUSD;
11042
+ gAccum[gId].cDebt += totalDebt;
11043
+ gAccumAll[gId].cDebt += totalDebt;
11044
+ } else {
11045
+ if (pos.collateralActive && pos.collateralEnabled)
11046
+ gAccum[gId].sDep += pos.depositsUSD;
11047
+ if (pos.collateralActive) gAccumAll[gId].sDep += pos.depositsUSD;
11048
+ gAccum[gId].sDebt += totalDebt;
11049
+ gAccumAll[gId].sDebt += totalDebt;
11050
+ }
11051
+ }
11052
+ return { groupRatesMap, gAccum, gAccumAll };
11053
+ }
11054
+ function applyPositionDelta(positions, targetMarketUid, depositsDeltaUSD, debtDeltaUSD, debtStableDeltaUSD) {
11055
+ return positions.map((p) => {
11056
+ if (p.marketUid !== targetMarketUid) return p;
11057
+ return {
11058
+ ...p,
11059
+ depositsUSD: p.depositsUSD + depositsDeltaUSD,
11060
+ debtUSD: p.debtUSD + debtDeltaUSD,
11061
+ debtStableUSD: p.debtStableUSD + debtStableDeltaUSD
11062
+ };
11063
+ });
11064
+ }
11065
+
11066
+ // src/lending/user-data/utils/createSumerUserState.ts
11026
11067
  function createSumerUserState(payload, lenderData, totalDeposits24h = 0, totalDebt24h = 0) {
11027
11068
  const assetKeys = getMarketUidsFromMeta(lenderData);
11028
11069
  const { chainId, account } = payload;
@@ -13221,7 +13262,16 @@ function convertSingleEntry(opts) {
13221
13262
  };
13222
13263
  }
13223
13264
  function convertSumerEntry(opts) {
13224
- const { entryRaw, asset, chainId, lender, prices, additionalYields, cToken, groups } = opts;
13265
+ const {
13266
+ entryRaw,
13267
+ asset,
13268
+ chainId,
13269
+ lender,
13270
+ prices,
13271
+ additionalYields,
13272
+ cToken,
13273
+ groups
13274
+ } = opts;
13225
13275
  const decs = asset.decimals;
13226
13276
  const currentEntry = readSumerCTokenMetadata(entryRaw, asset);
13227
13277
  const exchangeRateRaw = currentEntry.exchangeRateCurrent ?? 0n;
@@ -13241,10 +13291,16 @@ function convertSumerEntry(opts) {
13241
13291
  const marketUid = createMarketUid(chainId, lender, cToken);
13242
13292
  const groupId = currentEntry.groupId;
13243
13293
  const intraRate = Number(
13244
- parseRawAmount(currentEntry.intraRate?.toString(), RESERVE_MANTISSA_DECIMALS)
13294
+ parseRawAmount(
13295
+ currentEntry.intraRate?.toString(),
13296
+ RESERVE_MANTISSA_DECIMALS
13297
+ )
13245
13298
  );
13246
13299
  const interRate = Number(
13247
- parseRawAmount(currentEntry.interRate?.toString(), RESERVE_MANTISSA_DECIMALS)
13300
+ parseRawAmount(
13301
+ currentEntry.interRate?.toString(),
13302
+ RESERVE_MANTISSA_DECIMALS
13303
+ )
13248
13304
  );
13249
13305
  const config = {};
13250
13306
  for (let gId = 0; gId < SUMER_GROUP_COUNT; gId++) {
@@ -13288,7 +13344,6 @@ function convertSumerEntry(opts) {
13288
13344
  cToken,
13289
13345
  exchangeRate: exchangeRateRaw.toString(),
13290
13346
  cTokenDecimals: Number(currentEntry.cTokenDecimals?.toString()),
13291
- groupId,
13292
13347
  sumer: {
13293
13348
  isCToken: Boolean(currentEntry.isCToken),
13294
13349
  ...groups[groupId] ?? groups[0]
@@ -13315,6 +13370,7 @@ var getCompoundV2DataConverter = (lender, chainId, prices, additionalYields, tok
13315
13370
  if (!cToken || !underlying) continue;
13316
13371
  const poolId = underlying;
13317
13372
  const asset = tokenList[poolId];
13373
+ if (!asset) continue;
13318
13374
  const entryRaw = data[i];
13319
13375
  out.data[poolId] = convertSumerEntry({
13320
13376
  entryRaw,
@@ -26489,6 +26545,283 @@ function attachPricesToFlashLiquidity(chainId, liq, prices, list = {}) {
26489
26545
  return liqCopy;
26490
26546
  }
26491
26547
 
26548
+ // src/lending/margin/sumer/deposit.ts
26549
+ function computeSumerDepositDelta(amount, price, targetMarketUid, balanceData2, positions, createNewSubAccount = false, apr, yieldParams) {
26550
+ const base = createNewSubAccount ? EMPTY_BALANCE : balanceData2;
26551
+ const dollarAmount = amount * price;
26552
+ const updatedPositions = applyPositionDelta(
26553
+ positions,
26554
+ targetMarketUid,
26555
+ dollarAmount,
26556
+ 0,
26557
+ 0
26558
+ );
26559
+ const { groupRatesMap, gAccum, gAccumAll } = buildSumerAccumulators(updatedPositions);
26560
+ const groups = Object.values(groupRatesMap);
26561
+ const waterfallCollateral = computeSumerWaterfall(groups, gAccum);
26562
+ const waterfallCollateralAll = computeSumerWaterfall(groups, gAccumAll);
26563
+ const postTrade = {
26564
+ ...base,
26565
+ borrowDiscountedCollateral: waterfallCollateral,
26566
+ borrowDiscountedCollateralAllActive: waterfallCollateralAll,
26567
+ collateral: waterfallCollateral,
26568
+ collateralAllActive: waterfallCollateralAll,
26569
+ deposits: base.deposits + dollarAmount,
26570
+ debt: base.debt,
26571
+ adjustedDebt: base.debt,
26572
+ nav: base.deposits + dollarAmount - base.debt
26573
+ };
26574
+ const result = computePostTradeMetrics(base, postTrade);
26575
+ if (apr && yieldParams) {
26576
+ const cashFlowDeposits = base.deposits * apr.depositApr;
26577
+ const cashFlowDebt = base.debt * apr.borrowApr;
26578
+ const rewardFlowDeposits = base.deposits * (apr.rewardDepositApr ?? 0);
26579
+ const rewardFlowDebt = base.debt * (apr.rewardBorrowApr ?? 0);
26580
+ const intrinsicFlowDeposits = base.deposits * apr.intrinsicDepositApr;
26581
+ const intrinsicFlowDebt = base.debt * apr.intrinsicBorrowApr;
26582
+ const newApr = { ...apr };
26583
+ [newApr.borrowApr, newApr.depositApr, newApr.apr] = getOrganicYieldDeposit(
26584
+ dollarAmount,
26585
+ cashFlowDeposits,
26586
+ cashFlowDebt,
26587
+ base.deposits,
26588
+ base.debt,
26589
+ yieldParams
26590
+ );
26591
+ newApr.rewards = getRewardYieldDeposit(
26592
+ dollarAmount,
26593
+ rewardFlowDeposits,
26594
+ rewardFlowDebt,
26595
+ base.deposits,
26596
+ base.debt,
26597
+ yieldParams
26598
+ );
26599
+ [
26600
+ newApr.intrinsicBorrowApr,
26601
+ newApr.intrinsicDepositApr,
26602
+ newApr.intrinsicApr
26603
+ ] = getIntrinsicYieldDeposit(
26604
+ dollarAmount,
26605
+ intrinsicFlowDeposits,
26606
+ intrinsicFlowDebt,
26607
+ base.deposits,
26608
+ base.debt,
26609
+ yieldParams
26610
+ );
26611
+ result.aprDataPost = newApr;
26612
+ }
26613
+ return result;
26614
+ }
26615
+
26616
+ // src/lending/margin/sumer/withdraw.ts
26617
+ function computeSumerWithdrawDelta(amount, price, targetMarketUid, balanceData2, positions, apr, yieldParams) {
26618
+ const dollarAmount = amount * price;
26619
+ const updatedPositions = applyPositionDelta(
26620
+ positions,
26621
+ targetMarketUid,
26622
+ -dollarAmount,
26623
+ 0,
26624
+ 0
26625
+ );
26626
+ const { groupRatesMap, gAccum, gAccumAll } = buildSumerAccumulators(updatedPositions);
26627
+ const groups = Object.values(groupRatesMap);
26628
+ const waterfallCollateral = computeSumerWaterfall(groups, gAccum);
26629
+ const waterfallCollateralAll = computeSumerWaterfall(groups, gAccumAll);
26630
+ const postTrade = {
26631
+ ...balanceData2,
26632
+ borrowDiscountedCollateral: waterfallCollateral,
26633
+ borrowDiscountedCollateralAllActive: waterfallCollateralAll,
26634
+ collateral: waterfallCollateral,
26635
+ collateralAllActive: waterfallCollateralAll,
26636
+ deposits: balanceData2.deposits - dollarAmount,
26637
+ debt: balanceData2.debt,
26638
+ adjustedDebt: balanceData2.debt,
26639
+ nav: balanceData2.deposits - dollarAmount - balanceData2.debt
26640
+ };
26641
+ const result = computePostTradeMetrics(balanceData2, postTrade);
26642
+ if (apr && yieldParams) {
26643
+ const cashFlowDeposits = balanceData2.deposits * apr.depositApr;
26644
+ const cashFlowDebt = balanceData2.debt * apr.borrowApr;
26645
+ const rewardFlowDeposits = balanceData2.deposits * (apr.rewardDepositApr ?? 0);
26646
+ const rewardFlowDebt = balanceData2.debt * (apr.rewardBorrowApr ?? 0);
26647
+ const intrinsicFlowDeposits = balanceData2.deposits * apr.intrinsicDepositApr;
26648
+ const intrinsicFlowDebt = balanceData2.debt * apr.intrinsicBorrowApr;
26649
+ const newApr = { ...apr };
26650
+ [newApr.borrowApr, newApr.depositApr, newApr.apr] = getOrganicYieldWithdraw(
26651
+ dollarAmount,
26652
+ cashFlowDeposits,
26653
+ cashFlowDebt,
26654
+ balanceData2.deposits,
26655
+ balanceData2.debt,
26656
+ yieldParams
26657
+ );
26658
+ newApr.rewards = getRewardYieldWithdraw(
26659
+ dollarAmount,
26660
+ rewardFlowDeposits,
26661
+ rewardFlowDebt,
26662
+ balanceData2.deposits,
26663
+ balanceData2.debt,
26664
+ yieldParams
26665
+ );
26666
+ [
26667
+ newApr.intrinsicBorrowApr,
26668
+ newApr.intrinsicDepositApr,
26669
+ newApr.intrinsicApr
26670
+ ] = getIntrinsicYieldWithdraw(
26671
+ dollarAmount,
26672
+ intrinsicFlowDeposits,
26673
+ intrinsicFlowDebt,
26674
+ balanceData2.deposits,
26675
+ balanceData2.debt,
26676
+ yieldParams
26677
+ );
26678
+ result.aprDataPost = newApr;
26679
+ }
26680
+ return result;
26681
+ }
26682
+
26683
+ // src/lending/margin/sumer/borrow.ts
26684
+ function computeSumerBorrowDelta(amount, price, targetMarketUid, balanceData2, positions, apr, yieldParams, irMode) {
26685
+ const dollarAmount = amount * price;
26686
+ const mode = irMode ?? 2;
26687
+ const updatedPositions = applyPositionDelta(
26688
+ positions,
26689
+ targetMarketUid,
26690
+ 0,
26691
+ mode === 1 ? 0 : dollarAmount,
26692
+ mode === 1 ? dollarAmount : 0
26693
+ );
26694
+ const { groupRatesMap, gAccum, gAccumAll } = buildSumerAccumulators(updatedPositions);
26695
+ const groups = Object.values(groupRatesMap);
26696
+ const waterfallCollateral = computeSumerWaterfall(groups, gAccum);
26697
+ const waterfallCollateralAll = computeSumerWaterfall(groups, gAccumAll);
26698
+ const newDebt = balanceData2.debt + dollarAmount;
26699
+ const postTrade = {
26700
+ ...balanceData2,
26701
+ borrowDiscountedCollateral: waterfallCollateral,
26702
+ borrowDiscountedCollateralAllActive: waterfallCollateralAll,
26703
+ collateral: waterfallCollateral,
26704
+ collateralAllActive: waterfallCollateralAll,
26705
+ deposits: balanceData2.deposits,
26706
+ debt: newDebt,
26707
+ adjustedDebt: newDebt,
26708
+ nav: balanceData2.nav - dollarAmount
26709
+ };
26710
+ const result = computePostTradeMetrics(balanceData2, postTrade);
26711
+ if (apr && yieldParams) {
26712
+ const cashFlowDeposits = balanceData2.deposits * apr.depositApr;
26713
+ const cashFlowDebt = balanceData2.debt * apr.borrowApr;
26714
+ const rewardFlowDeposits = balanceData2.deposits * (apr.rewardDepositApr ?? 0);
26715
+ const rewardFlowDebt = balanceData2.debt * (apr.rewardBorrowApr ?? 0);
26716
+ const intrinsicFlowDeposits = balanceData2.deposits * apr.intrinsicDepositApr;
26717
+ const intrinsicFlowDebt = balanceData2.debt * apr.intrinsicBorrowApr;
26718
+ const newApr = { ...apr };
26719
+ [newApr.borrowApr, newApr.depositApr, newApr.apr] = getOrganicYieldBorrow(
26720
+ dollarAmount,
26721
+ mode,
26722
+ cashFlowDeposits,
26723
+ cashFlowDebt,
26724
+ balanceData2.deposits,
26725
+ balanceData2.debt,
26726
+ yieldParams
26727
+ );
26728
+ newApr.rewards = getRewardYieldBorrow(
26729
+ dollarAmount,
26730
+ mode,
26731
+ rewardFlowDeposits,
26732
+ rewardFlowDebt,
26733
+ balanceData2.deposits,
26734
+ balanceData2.debt,
26735
+ yieldParams
26736
+ );
26737
+ [
26738
+ newApr.intrinsicBorrowApr,
26739
+ newApr.intrinsicDepositApr,
26740
+ newApr.intrinsicApr
26741
+ ] = getIntrinsicYieldBorrow(
26742
+ dollarAmount,
26743
+ intrinsicFlowDeposits,
26744
+ intrinsicFlowDebt,
26745
+ balanceData2.deposits,
26746
+ balanceData2.debt,
26747
+ yieldParams
26748
+ );
26749
+ result.aprDataPost = newApr;
26750
+ }
26751
+ return result;
26752
+ }
26753
+
26754
+ // src/lending/margin/sumer/repay.ts
26755
+ function computeSumerRepayDelta(amount, price, targetMarketUid, balanceData2, positions, apr, yieldParams, irMode) {
26756
+ const dollarAmount = amount * price;
26757
+ const mode = irMode ?? 2;
26758
+ const updatedPositions = applyPositionDelta(
26759
+ positions,
26760
+ targetMarketUid,
26761
+ 0,
26762
+ mode === 1 ? 0 : -dollarAmount,
26763
+ mode === 1 ? -dollarAmount : 0
26764
+ );
26765
+ const { groupRatesMap, gAccum, gAccumAll } = buildSumerAccumulators(updatedPositions);
26766
+ const groups = Object.values(groupRatesMap);
26767
+ const waterfallCollateral = computeSumerWaterfall(groups, gAccum);
26768
+ const waterfallCollateralAll = computeSumerWaterfall(groups, gAccumAll);
26769
+ const newDebt = balanceData2.debt - dollarAmount;
26770
+ const postTrade = {
26771
+ ...balanceData2,
26772
+ borrowDiscountedCollateral: waterfallCollateral,
26773
+ borrowDiscountedCollateralAllActive: waterfallCollateralAll,
26774
+ collateral: waterfallCollateral,
26775
+ collateralAllActive: waterfallCollateralAll,
26776
+ deposits: balanceData2.deposits,
26777
+ debt: newDebt,
26778
+ adjustedDebt: Math.max(0, newDebt),
26779
+ nav: balanceData2.nav + dollarAmount
26780
+ };
26781
+ const result = computePostTradeMetrics(balanceData2, postTrade);
26782
+ if (apr && yieldParams) {
26783
+ const cashFlowDeposits = balanceData2.deposits * apr.depositApr;
26784
+ const cashFlowDebt = balanceData2.debt * apr.borrowApr;
26785
+ const rewardFlowDeposits = balanceData2.deposits * (apr.rewardDepositApr ?? 0);
26786
+ const rewardFlowDebt = balanceData2.debt * (apr.rewardBorrowApr ?? 0);
26787
+ const intrinsicFlowDeposits = balanceData2.deposits * apr.intrinsicDepositApr;
26788
+ const intrinsicFlowDebt = balanceData2.debt * apr.intrinsicBorrowApr;
26789
+ const newApr = { ...apr };
26790
+ [newApr.borrowApr, newApr.depositApr, newApr.apr] = getOrganicYieldRepay(
26791
+ dollarAmount,
26792
+ mode,
26793
+ cashFlowDeposits,
26794
+ cashFlowDebt,
26795
+ balanceData2.deposits,
26796
+ balanceData2.debt,
26797
+ yieldParams
26798
+ );
26799
+ newApr.rewards = getRewardYieldRepay(
26800
+ dollarAmount,
26801
+ mode,
26802
+ rewardFlowDeposits,
26803
+ rewardFlowDebt,
26804
+ balanceData2.deposits,
26805
+ balanceData2.debt,
26806
+ yieldParams
26807
+ );
26808
+ [
26809
+ newApr.intrinsicBorrowApr,
26810
+ newApr.intrinsicDepositApr,
26811
+ newApr.intrinsicApr
26812
+ ] = getIntrinsicYieldRepay(
26813
+ dollarAmount,
26814
+ intrinsicFlowDeposits,
26815
+ intrinsicFlowDebt,
26816
+ balanceData2.deposits,
26817
+ balanceData2.debt,
26818
+ yieldParams
26819
+ );
26820
+ result.aprDataPost = newApr;
26821
+ }
26822
+ return result;
26823
+ }
26824
+
26492
26825
  // src/utils/rpcParse.ts
26493
26826
  function parseRawRpcResponses(responses, callMetadata, allowFailure = true) {
26494
26827
  const sortedResponses = [...responses].sort((a, b) => a.id - b.id);
@@ -26849,6 +27182,6 @@ async function fetchTokenBalances(chainId, account, tokens, options = {}) {
26849
27182
  return parseTokenBalanceResult(rawResult, prepared.query);
26850
27183
  }
26851
27184
 
26852
- export { EMPTY_BALANCE, MORPHO_LENS, attachPricesToFlashLiquidity, buildLoopResult, buildMorphoTypeCall, buildMorphoTypeUserCallWithLens, buildPortfolioTotals, buildSummaries, calculateLeverage, calculateNetApr, calculateOverallNetApr, calculateWeightedAverage, computeBorrowDelta, computeCloseTradeDeltas, computeCollateralSwapDeltas, computeDebtSwapDeltas, computeDepositDelta, computeOpenTradeDeltas, computePostTradeMetrics, computeRepayDelta, computeWithdrawDelta, computeZapTradeDeltas, convertLenderUserDataResult, createMarketUid, createMulticallRpcCall, createRawRpcCalls, decodeListaMarkets, decodeMarkets, decodePackedListaUserDataset, decodePackedMorphoUserDataset, encodeBalanceFetcherCalldata, fetchDefillamaData, fetchDefillamaHistData, fetchFlashLiquidityForChain, fetchGeneralYields, fetchMainPrices, fetchOraclePrices, fetchPendlePrices, fetchTokenBalances, fetchTokenMetadata, filterActiveLenders, filterLendersByProtocol, flattenToUSDPriceMap, fuseLenderData, generateLendingPairs, generateLendingPools, getAavesForChain, getAssetConfig, getBorrowCapacity, getHealthFactor, getLenderAssets, getLenderPublicData, getLenderPublicDataAll, getLenderPublicDataViaApi, getLenderUserDataMulti, getLenderUserDataResult, getLendersForChain, getMorphoTypeMarketConverter, getTopPairs, isAaveType, isAaveV2Type, isAaveV32Type, isAaveV3Type, isCompoundV3, isCompoundV3Type, isInit, isMorphoType, isMultiMarket, isYLDR, keysFromMaps, multicall3Abi, nanTo, noOpResult, normalizeToBytes, parseBalanceFetcherResult, parseMulticallRpcResponses, parseRawRpcBatchResponses, parseRawRpcResponses, parseTokenBalanceResult, positivePart2 as positivePart, prepareLenderUserDataRpcCalls, prepareMulticallInputs, prepareTokenBalanceRpcCalls, unflattenLenderData };
27185
+ export { EMPTY_BALANCE, MORPHO_LENS, applyPositionDelta, attachPricesToFlashLiquidity, buildLoopResult, buildMorphoTypeCall, buildMorphoTypeUserCallWithLens, buildPortfolioTotals, buildSumerAccumulators, buildSummaries, calculateLeverage, calculateNetApr, calculateOverallNetApr, calculateWeightedAverage, computeBorrowDelta, computeCloseTradeDeltas, computeCollateralSwapDeltas, computeDebtSwapDeltas, computeDepositDelta, computeOpenTradeDeltas, computePostTradeMetrics, computeRepayDelta, computeSumerBorrowDelta, computeSumerDepositDelta, computeSumerRepayDelta, computeSumerWaterfall, computeSumerWithdrawDelta, computeWithdrawDelta, computeZapTradeDeltas, convertLenderUserDataResult, createMarketUid, createMulticallRpcCall, createRawRpcCalls, decodeListaMarkets, decodeMarkets, decodePackedListaUserDataset, decodePackedMorphoUserDataset, encodeBalanceFetcherCalldata, fetchDefillamaData, fetchDefillamaHistData, fetchFlashLiquidityForChain, fetchGeneralYields, fetchMainPrices, fetchOraclePrices, fetchPendlePrices, fetchTokenBalances, fetchTokenMetadata, filterActiveLenders, filterLendersByProtocol, flattenToUSDPriceMap, fuseLenderData, generateLendingPairs, generateLendingPools, getAavesForChain, getAssetConfig, getBorrowCapacity, getHealthFactor, getLenderAssets, getLenderPublicData, getLenderPublicDataAll, getLenderPublicDataViaApi, getLenderUserDataMulti, getLenderUserDataResult, getLendersForChain, getMorphoTypeMarketConverter, getTopPairs, isAaveType, isAaveV2Type, isAaveV32Type, isAaveV3Type, isCompoundV3, isCompoundV3Type, isInit, isMorphoType, isMultiMarket, isYLDR, keysFromMaps, multicall3Abi, nanTo, noOpResult, normalizeToBytes, parseBalanceFetcherResult, parseMulticallRpcResponses, parseRawRpcBatchResponses, parseRawRpcResponses, parseTokenBalanceResult, positivePart2 as positivePart, prepareLenderUserDataRpcCalls, prepareMulticallInputs, prepareTokenBalanceRpcCalls, unflattenLenderData };
26853
27186
  //# sourceMappingURL=index.js.map
26854
27187
  //# sourceMappingURL=index.js.map