@1delta/margin-fetcher 0.0.159 → 0.0.160

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;
@@ -13288,7 +13329,6 @@ function convertSumerEntry(opts) {
13288
13329
  cToken,
13289
13330
  exchangeRate: exchangeRateRaw.toString(),
13290
13331
  cTokenDecimals: Number(currentEntry.cTokenDecimals?.toString()),
13291
- groupId,
13292
13332
  sumer: {
13293
13333
  isCToken: Boolean(currentEntry.isCToken),
13294
13334
  ...groups[groupId] ?? groups[0]
@@ -26489,6 +26529,283 @@ function attachPricesToFlashLiquidity(chainId, liq, prices, list = {}) {
26489
26529
  return liqCopy;
26490
26530
  }
26491
26531
 
26532
+ // src/lending/margin/sumer/deposit.ts
26533
+ function computeSumerDepositDelta(amount, price, targetMarketUid, balanceData2, positions, createNewSubAccount = false, apr, yieldParams) {
26534
+ const base = createNewSubAccount ? EMPTY_BALANCE : balanceData2;
26535
+ const dollarAmount = amount * price;
26536
+ const updatedPositions = applyPositionDelta(
26537
+ positions,
26538
+ targetMarketUid,
26539
+ dollarAmount,
26540
+ 0,
26541
+ 0
26542
+ );
26543
+ const { groupRatesMap, gAccum, gAccumAll } = buildSumerAccumulators(updatedPositions);
26544
+ const groups = Object.values(groupRatesMap);
26545
+ const waterfallCollateral = computeSumerWaterfall(groups, gAccum);
26546
+ const waterfallCollateralAll = computeSumerWaterfall(groups, gAccumAll);
26547
+ const postTrade = {
26548
+ ...base,
26549
+ borrowDiscountedCollateral: waterfallCollateral,
26550
+ borrowDiscountedCollateralAllActive: waterfallCollateralAll,
26551
+ collateral: waterfallCollateral,
26552
+ collateralAllActive: waterfallCollateralAll,
26553
+ deposits: base.deposits + dollarAmount,
26554
+ debt: base.debt,
26555
+ adjustedDebt: base.debt,
26556
+ nav: base.deposits + dollarAmount - base.debt
26557
+ };
26558
+ const result = computePostTradeMetrics(base, postTrade);
26559
+ if (apr && yieldParams) {
26560
+ const cashFlowDeposits = base.deposits * apr.depositApr;
26561
+ const cashFlowDebt = base.debt * apr.borrowApr;
26562
+ const rewardFlowDeposits = base.deposits * (apr.rewardDepositApr ?? 0);
26563
+ const rewardFlowDebt = base.debt * (apr.rewardBorrowApr ?? 0);
26564
+ const intrinsicFlowDeposits = base.deposits * apr.intrinsicDepositApr;
26565
+ const intrinsicFlowDebt = base.debt * apr.intrinsicBorrowApr;
26566
+ const newApr = { ...apr };
26567
+ [newApr.borrowApr, newApr.depositApr, newApr.apr] = getOrganicYieldDeposit(
26568
+ dollarAmount,
26569
+ cashFlowDeposits,
26570
+ cashFlowDebt,
26571
+ base.deposits,
26572
+ base.debt,
26573
+ yieldParams
26574
+ );
26575
+ newApr.rewards = getRewardYieldDeposit(
26576
+ dollarAmount,
26577
+ rewardFlowDeposits,
26578
+ rewardFlowDebt,
26579
+ base.deposits,
26580
+ base.debt,
26581
+ yieldParams
26582
+ );
26583
+ [
26584
+ newApr.intrinsicBorrowApr,
26585
+ newApr.intrinsicDepositApr,
26586
+ newApr.intrinsicApr
26587
+ ] = getIntrinsicYieldDeposit(
26588
+ dollarAmount,
26589
+ intrinsicFlowDeposits,
26590
+ intrinsicFlowDebt,
26591
+ base.deposits,
26592
+ base.debt,
26593
+ yieldParams
26594
+ );
26595
+ result.aprDataPost = newApr;
26596
+ }
26597
+ return result;
26598
+ }
26599
+
26600
+ // src/lending/margin/sumer/withdraw.ts
26601
+ function computeSumerWithdrawDelta(amount, price, targetMarketUid, balanceData2, positions, apr, yieldParams) {
26602
+ const dollarAmount = amount * price;
26603
+ const updatedPositions = applyPositionDelta(
26604
+ positions,
26605
+ targetMarketUid,
26606
+ -dollarAmount,
26607
+ 0,
26608
+ 0
26609
+ );
26610
+ const { groupRatesMap, gAccum, gAccumAll } = buildSumerAccumulators(updatedPositions);
26611
+ const groups = Object.values(groupRatesMap);
26612
+ const waterfallCollateral = computeSumerWaterfall(groups, gAccum);
26613
+ const waterfallCollateralAll = computeSumerWaterfall(groups, gAccumAll);
26614
+ const postTrade = {
26615
+ ...balanceData2,
26616
+ borrowDiscountedCollateral: waterfallCollateral,
26617
+ borrowDiscountedCollateralAllActive: waterfallCollateralAll,
26618
+ collateral: waterfallCollateral,
26619
+ collateralAllActive: waterfallCollateralAll,
26620
+ deposits: balanceData2.deposits - dollarAmount,
26621
+ debt: balanceData2.debt,
26622
+ adjustedDebt: balanceData2.debt,
26623
+ nav: balanceData2.deposits - dollarAmount - balanceData2.debt
26624
+ };
26625
+ const result = computePostTradeMetrics(balanceData2, postTrade);
26626
+ if (apr && yieldParams) {
26627
+ const cashFlowDeposits = balanceData2.deposits * apr.depositApr;
26628
+ const cashFlowDebt = balanceData2.debt * apr.borrowApr;
26629
+ const rewardFlowDeposits = balanceData2.deposits * (apr.rewardDepositApr ?? 0);
26630
+ const rewardFlowDebt = balanceData2.debt * (apr.rewardBorrowApr ?? 0);
26631
+ const intrinsicFlowDeposits = balanceData2.deposits * apr.intrinsicDepositApr;
26632
+ const intrinsicFlowDebt = balanceData2.debt * apr.intrinsicBorrowApr;
26633
+ const newApr = { ...apr };
26634
+ [newApr.borrowApr, newApr.depositApr, newApr.apr] = getOrganicYieldWithdraw(
26635
+ dollarAmount,
26636
+ cashFlowDeposits,
26637
+ cashFlowDebt,
26638
+ balanceData2.deposits,
26639
+ balanceData2.debt,
26640
+ yieldParams
26641
+ );
26642
+ newApr.rewards = getRewardYieldWithdraw(
26643
+ dollarAmount,
26644
+ rewardFlowDeposits,
26645
+ rewardFlowDebt,
26646
+ balanceData2.deposits,
26647
+ balanceData2.debt,
26648
+ yieldParams
26649
+ );
26650
+ [
26651
+ newApr.intrinsicBorrowApr,
26652
+ newApr.intrinsicDepositApr,
26653
+ newApr.intrinsicApr
26654
+ ] = getIntrinsicYieldWithdraw(
26655
+ dollarAmount,
26656
+ intrinsicFlowDeposits,
26657
+ intrinsicFlowDebt,
26658
+ balanceData2.deposits,
26659
+ balanceData2.debt,
26660
+ yieldParams
26661
+ );
26662
+ result.aprDataPost = newApr;
26663
+ }
26664
+ return result;
26665
+ }
26666
+
26667
+ // src/lending/margin/sumer/borrow.ts
26668
+ function computeSumerBorrowDelta(amount, price, targetMarketUid, balanceData2, positions, apr, yieldParams, irMode) {
26669
+ const dollarAmount = amount * price;
26670
+ const mode = irMode ?? 2;
26671
+ const updatedPositions = applyPositionDelta(
26672
+ positions,
26673
+ targetMarketUid,
26674
+ 0,
26675
+ mode === 1 ? 0 : dollarAmount,
26676
+ mode === 1 ? dollarAmount : 0
26677
+ );
26678
+ const { groupRatesMap, gAccum, gAccumAll } = buildSumerAccumulators(updatedPositions);
26679
+ const groups = Object.values(groupRatesMap);
26680
+ const waterfallCollateral = computeSumerWaterfall(groups, gAccum);
26681
+ const waterfallCollateralAll = computeSumerWaterfall(groups, gAccumAll);
26682
+ const newDebt = balanceData2.debt + dollarAmount;
26683
+ const postTrade = {
26684
+ ...balanceData2,
26685
+ borrowDiscountedCollateral: waterfallCollateral,
26686
+ borrowDiscountedCollateralAllActive: waterfallCollateralAll,
26687
+ collateral: waterfallCollateral,
26688
+ collateralAllActive: waterfallCollateralAll,
26689
+ deposits: balanceData2.deposits,
26690
+ debt: newDebt,
26691
+ adjustedDebt: newDebt,
26692
+ nav: balanceData2.nav - dollarAmount
26693
+ };
26694
+ const result = computePostTradeMetrics(balanceData2, postTrade);
26695
+ if (apr && yieldParams) {
26696
+ const cashFlowDeposits = balanceData2.deposits * apr.depositApr;
26697
+ const cashFlowDebt = balanceData2.debt * apr.borrowApr;
26698
+ const rewardFlowDeposits = balanceData2.deposits * (apr.rewardDepositApr ?? 0);
26699
+ const rewardFlowDebt = balanceData2.debt * (apr.rewardBorrowApr ?? 0);
26700
+ const intrinsicFlowDeposits = balanceData2.deposits * apr.intrinsicDepositApr;
26701
+ const intrinsicFlowDebt = balanceData2.debt * apr.intrinsicBorrowApr;
26702
+ const newApr = { ...apr };
26703
+ [newApr.borrowApr, newApr.depositApr, newApr.apr] = getOrganicYieldBorrow(
26704
+ dollarAmount,
26705
+ mode,
26706
+ cashFlowDeposits,
26707
+ cashFlowDebt,
26708
+ balanceData2.deposits,
26709
+ balanceData2.debt,
26710
+ yieldParams
26711
+ );
26712
+ newApr.rewards = getRewardYieldBorrow(
26713
+ dollarAmount,
26714
+ mode,
26715
+ rewardFlowDeposits,
26716
+ rewardFlowDebt,
26717
+ balanceData2.deposits,
26718
+ balanceData2.debt,
26719
+ yieldParams
26720
+ );
26721
+ [
26722
+ newApr.intrinsicBorrowApr,
26723
+ newApr.intrinsicDepositApr,
26724
+ newApr.intrinsicApr
26725
+ ] = getIntrinsicYieldBorrow(
26726
+ dollarAmount,
26727
+ intrinsicFlowDeposits,
26728
+ intrinsicFlowDebt,
26729
+ balanceData2.deposits,
26730
+ balanceData2.debt,
26731
+ yieldParams
26732
+ );
26733
+ result.aprDataPost = newApr;
26734
+ }
26735
+ return result;
26736
+ }
26737
+
26738
+ // src/lending/margin/sumer/repay.ts
26739
+ function computeSumerRepayDelta(amount, price, targetMarketUid, balanceData2, positions, apr, yieldParams, irMode) {
26740
+ const dollarAmount = amount * price;
26741
+ const mode = irMode ?? 2;
26742
+ const updatedPositions = applyPositionDelta(
26743
+ positions,
26744
+ targetMarketUid,
26745
+ 0,
26746
+ mode === 1 ? 0 : -dollarAmount,
26747
+ mode === 1 ? -dollarAmount : 0
26748
+ );
26749
+ const { groupRatesMap, gAccum, gAccumAll } = buildSumerAccumulators(updatedPositions);
26750
+ const groups = Object.values(groupRatesMap);
26751
+ const waterfallCollateral = computeSumerWaterfall(groups, gAccum);
26752
+ const waterfallCollateralAll = computeSumerWaterfall(groups, gAccumAll);
26753
+ const newDebt = balanceData2.debt - dollarAmount;
26754
+ const postTrade = {
26755
+ ...balanceData2,
26756
+ borrowDiscountedCollateral: waterfallCollateral,
26757
+ borrowDiscountedCollateralAllActive: waterfallCollateralAll,
26758
+ collateral: waterfallCollateral,
26759
+ collateralAllActive: waterfallCollateralAll,
26760
+ deposits: balanceData2.deposits,
26761
+ debt: newDebt,
26762
+ adjustedDebt: Math.max(0, newDebt),
26763
+ nav: balanceData2.nav + dollarAmount
26764
+ };
26765
+ const result = computePostTradeMetrics(balanceData2, postTrade);
26766
+ if (apr && yieldParams) {
26767
+ const cashFlowDeposits = balanceData2.deposits * apr.depositApr;
26768
+ const cashFlowDebt = balanceData2.debt * apr.borrowApr;
26769
+ const rewardFlowDeposits = balanceData2.deposits * (apr.rewardDepositApr ?? 0);
26770
+ const rewardFlowDebt = balanceData2.debt * (apr.rewardBorrowApr ?? 0);
26771
+ const intrinsicFlowDeposits = balanceData2.deposits * apr.intrinsicDepositApr;
26772
+ const intrinsicFlowDebt = balanceData2.debt * apr.intrinsicBorrowApr;
26773
+ const newApr = { ...apr };
26774
+ [newApr.borrowApr, newApr.depositApr, newApr.apr] = getOrganicYieldRepay(
26775
+ dollarAmount,
26776
+ mode,
26777
+ cashFlowDeposits,
26778
+ cashFlowDebt,
26779
+ balanceData2.deposits,
26780
+ balanceData2.debt,
26781
+ yieldParams
26782
+ );
26783
+ newApr.rewards = getRewardYieldRepay(
26784
+ dollarAmount,
26785
+ mode,
26786
+ rewardFlowDeposits,
26787
+ rewardFlowDebt,
26788
+ balanceData2.deposits,
26789
+ balanceData2.debt,
26790
+ yieldParams
26791
+ );
26792
+ [
26793
+ newApr.intrinsicBorrowApr,
26794
+ newApr.intrinsicDepositApr,
26795
+ newApr.intrinsicApr
26796
+ ] = getIntrinsicYieldRepay(
26797
+ dollarAmount,
26798
+ intrinsicFlowDeposits,
26799
+ intrinsicFlowDebt,
26800
+ balanceData2.deposits,
26801
+ balanceData2.debt,
26802
+ yieldParams
26803
+ );
26804
+ result.aprDataPost = newApr;
26805
+ }
26806
+ return result;
26807
+ }
26808
+
26492
26809
  // src/utils/rpcParse.ts
26493
26810
  function parseRawRpcResponses(responses, callMetadata, allowFailure = true) {
26494
26811
  const sortedResponses = [...responses].sort((a, b) => a.id - b.id);
@@ -26849,6 +27166,6 @@ async function fetchTokenBalances(chainId, account, tokens, options = {}) {
26849
27166
  return parseTokenBalanceResult(rawResult, prepared.query);
26850
27167
  }
26851
27168
 
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 };
27169
+ 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
27170
  //# sourceMappingURL=index.js.map
26854
27171
  //# sourceMappingURL=index.js.map