@1delta/margin-fetcher 0.0.238 → 0.0.239

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.js CHANGED
@@ -18867,7 +18867,7 @@ var getSiloV2ReservesDataConverter = (lender, chainId, prices, additionalYields,
18867
18867
  { self: market.silo0, other: market.silo1 },
18868
18868
  { self: market.silo1, other: market.silo0 }
18869
18869
  ];
18870
- const toBigInt7 = (v) => {
18870
+ const toBigInt8 = (v) => {
18871
18871
  if (v === void 0 || v === null || v === "0x") return 0n;
18872
18872
  if (typeof v === "bigint") return v;
18873
18873
  try {
@@ -18879,8 +18879,8 @@ var getSiloV2ReservesDataConverter = (lender, chainId, prices, additionalYields,
18879
18879
  for (let s = 0; s < 2; s++) {
18880
18880
  const { self, other } = sides[s];
18881
18881
  const slot = s * SILO_V2_CALLS_PER_SIDE;
18882
- const totalAssetsRaw = toBigInt7(data[slot]);
18883
- const debtAssetsRaw = toBigInt7(data[slot + 1]);
18882
+ const totalAssetsRaw = toBigInt8(data[slot]);
18883
+ const debtAssetsRaw = toBigInt8(data[slot + 1]);
18884
18884
  const irmConfigRaw = data[slot + 2];
18885
18885
  const decimals = self.decimals;
18886
18886
  const totalDeposits = Number(formatUnits(totalAssetsRaw, decimals));
@@ -19035,7 +19035,7 @@ var getSiloV3ReservesDataConverter = (lender, chainId, prices, additionalYields,
19035
19035
  { self: market.silo0, other: market.silo1 },
19036
19036
  { self: market.silo1, other: market.silo0 }
19037
19037
  ];
19038
- const toBigInt7 = (v) => {
19038
+ const toBigInt8 = (v) => {
19039
19039
  if (v === void 0 || v === null || v === "0x") return 0n;
19040
19040
  if (typeof v === "bigint") return v;
19041
19041
  try {
@@ -19047,8 +19047,8 @@ var getSiloV3ReservesDataConverter = (lender, chainId, prices, additionalYields,
19047
19047
  for (let s = 0; s < 2; s++) {
19048
19048
  const { self, other } = sides[s];
19049
19049
  const slot = s * SILO_V3_CALLS_PER_SIDE;
19050
- const totalAssetsRaw = toBigInt7(data[slot]);
19051
- const debtAssetsRaw = toBigInt7(data[slot + 1]);
19050
+ const totalAssetsRaw = toBigInt8(data[slot]);
19051
+ const debtAssetsRaw = toBigInt8(data[slot + 1]);
19052
19052
  const irmConfigRaw = data[slot + 2];
19053
19053
  const decimals = self.decimals;
19054
19054
  const totalDeposits = Number(formatUnits(totalAssetsRaw, decimals));
@@ -19215,7 +19215,7 @@ function parseVault(vault, chainId, prices, additionalYields, tokenList) {
19215
19215
  const collateralAddress = normalizeUnderlying(rawCollateral);
19216
19216
  const loanAddress = normalizeUnderlying(rawLoan);
19217
19217
  const vaultId = Number(constants.vaultId ?? 0);
19218
- const lender = `FLUID_${vaultId}`;
19218
+ const lender = `FLUID_${chainId}_${vaultId}`;
19219
19219
  const collateralMeta = tokenList[collateralAddress];
19220
19220
  const loanMeta = tokenList[loanAddress];
19221
19221
  const colDecimals = Number(
@@ -20721,6 +20721,20 @@ var buildSiloV3UserCall = (chainId, lender, account) => {
20721
20721
  return calls;
20722
20722
  };
20723
20723
 
20724
+ // src/lending/user-data/fluid/userCallBuild.ts
20725
+ var FLUID_USER_CALL_COUNT = 1;
20726
+ var buildFluidUserCall = (chainId, _lender, account) => {
20727
+ const resolvers = fluidResolvers()?.[chainId];
20728
+ if (!resolvers) return [];
20729
+ return [
20730
+ {
20731
+ address: resolvers.vaultResolver,
20732
+ name: "positionsByUser",
20733
+ params: [account]
20734
+ }
20735
+ ];
20736
+ };
20737
+
20724
20738
  // src/lending/user-data/fetch-balances/prepare.ts
20725
20739
  async function buildUserCall(chainId, lender, account, params) {
20726
20740
  if (isAaveV4Type(lender)) return buildAaveV4UserCall(chainId, lender, account);
@@ -20739,6 +20753,8 @@ async function buildUserCall(chainId, lender, account, params) {
20739
20753
  return buildSiloV3UserCall(chainId, lender, account);
20740
20754
  if (isCompoundV2Type(lender))
20741
20755
  return buildCompoundV2UserCall(chainId, lender, account);
20756
+ if (isFluid(lender))
20757
+ return buildFluidUserCall(chainId, lender, account);
20742
20758
  return [];
20743
20759
  }
20744
20760
  function organizeUserQueries(queries) {
@@ -22466,6 +22482,141 @@ function toBigInt6(v) {
22466
22482
  return 0n;
22467
22483
  }
22468
22484
  }
22485
+ var FLUID_EEE_LOWER2 = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
22486
+ var normalizeUnderlying2 = (addr) => addr === FLUID_EEE_LOWER2 ? zeroAddress : addr;
22487
+ function toBigInt7(v) {
22488
+ if (v === void 0 || v === null || v === "0x") return 0n;
22489
+ if (typeof v === "bigint") return v;
22490
+ try {
22491
+ return BigInt(v);
22492
+ } catch {
22493
+ return 0n;
22494
+ }
22495
+ }
22496
+ var getFluidUserDataConverter = (lender, chainId, account, meta) => {
22497
+ return [
22498
+ (data) => {
22499
+ if (!data || data.length !== FLUID_USER_CALL_COUNT) return void 0;
22500
+ const result = data[0];
22501
+ if (!result) return void 0;
22502
+ const positions = result[0];
22503
+ const vaults = result[1];
22504
+ if (!Array.isArray(positions) || !Array.isArray(vaults) || positions.length === 0)
22505
+ return void 0;
22506
+ const perVault = /* @__PURE__ */ new Map();
22507
+ for (let i = 0; i < positions.length; i++) {
22508
+ const pos = positions[i];
22509
+ const vault = vaults[i];
22510
+ if (!vault?.constantVariables) continue;
22511
+ if (vault.isSmartCol || vault.isSmartDebt) continue;
22512
+ if (pos.isLiquidated) continue;
22513
+ const vaultId = Number(vault.constantVariables.vaultId ?? 0);
22514
+ if (!perVault.has(vaultId)) perVault.set(vaultId, []);
22515
+ perVault.get(vaultId).push({ pos, vault });
22516
+ }
22517
+ if (perVault.size === 0) return void 0;
22518
+ const out = {};
22519
+ for (const [vaultId, nfts] of perVault) {
22520
+ const lenderKey = `${Lender.FLUID}_${chainId}_${vaultId}`;
22521
+ const metaMap = meta?.[lenderKey];
22522
+ if (!metaMap) continue;
22523
+ const constants = nfts[0].vault.constantVariables;
22524
+ const rawCol = (constants.supplyToken?.token0 ?? constants.supplyToken ?? "").toString().toLowerCase();
22525
+ const rawLoan = (constants.borrowToken?.token0 ?? constants.borrowToken ?? "").toString().toLowerCase();
22526
+ if (!rawCol || !rawLoan) continue;
22527
+ const collateral = normalizeUnderlying2(rawCol);
22528
+ const loan = normalizeUnderlying2(rawLoan);
22529
+ const colMarketUid = createMarketUid(chainId, lenderKey, collateral);
22530
+ const loanMarketUid = createMarketUid(chainId, lenderKey, loan);
22531
+ const colMeta = metaMap[colMarketUid];
22532
+ const loanMeta = metaMap[loanMarketUid];
22533
+ const colDec = colMeta?.asset?.decimals ?? 18;
22534
+ const loanDec = loanMeta?.asset?.decimals ?? 18;
22535
+ const colDisplayPrice = colMeta ? getDisplayPrice(colMeta) : 0;
22536
+ const colOraclePrice = colMeta ? getOraclePrice(colMeta) : 0;
22537
+ const loanDisplayPrice = loanMeta ? getDisplayPrice(loanMeta) : 0;
22538
+ const loanOraclePrice = loanMeta ? getOraclePrice(loanMeta) : 0;
22539
+ const colPriceHist = colMeta?.price?.priceUsd24h ?? colDisplayPrice;
22540
+ const loanPriceHist = loanMeta?.price?.priceUsd24h ?? loanDisplayPrice;
22541
+ const lendingPositions = {};
22542
+ const modes = {};
22543
+ const histData = {};
22544
+ for (const { pos } of nfts) {
22545
+ const nftId = pos.nftId.toString();
22546
+ const supplyRaw = toBigInt7(pos.supply);
22547
+ const borrowRaw = toBigInt7(pos.borrow) + toBigInt7(pos.dustBorrow);
22548
+ if (supplyRaw === 0n && borrowRaw === 0n) continue;
22549
+ const depositsStr = parseRawAmount(
22550
+ supplyRaw.toString(),
22551
+ colDec
22552
+ );
22553
+ const debtStr = parseRawAmount(borrowRaw.toString(), loanDec);
22554
+ const depositsNum = Number(depositsStr);
22555
+ const debtNum = Number(debtStr);
22556
+ const depositsUSD = depositsNum * colDisplayPrice;
22557
+ const debtUSD = debtNum * loanDisplayPrice;
22558
+ const depositsUSDOracle = depositsNum * colOraclePrice;
22559
+ const debtUSDOracle = debtNum * loanOraclePrice;
22560
+ histData[nftId] = {
22561
+ totalDeposits24h: depositsNum * colPriceHist,
22562
+ totalDebt24h: debtNum * loanPriceHist
22563
+ };
22564
+ modes[nftId] = 0;
22565
+ const posData = {};
22566
+ posData[colMarketUid] = {
22567
+ marketUid: colMarketUid,
22568
+ underlying: collateral,
22569
+ deposits: depositsStr,
22570
+ debt: "0",
22571
+ debtStable: "0",
22572
+ depositsUSD,
22573
+ debtUSD: 0,
22574
+ debtStableUSD: 0,
22575
+ depositsUSDOracle,
22576
+ debtUSDOracle: 0,
22577
+ debtStableUSDOracle: 0,
22578
+ stableBorrowRate: "0",
22579
+ collateralEnabled: supplyRaw > 0n,
22580
+ claimableRewards: 0
22581
+ };
22582
+ posData[loanMarketUid] = {
22583
+ marketUid: loanMarketUid,
22584
+ underlying: loan,
22585
+ deposits: "0",
22586
+ debt: debtStr,
22587
+ debtStable: "0",
22588
+ depositsUSD: 0,
22589
+ debtUSD,
22590
+ debtStableUSD: 0,
22591
+ depositsUSDOracle: 0,
22592
+ debtUSDOracle,
22593
+ debtStableUSDOracle: 0,
22594
+ stableBorrowRate: "0",
22595
+ collateralEnabled: false,
22596
+ claimableRewards: 0
22597
+ };
22598
+ lendingPositions[nftId] = posData;
22599
+ }
22600
+ if (Object.keys(lendingPositions).length === 0) continue;
22601
+ const userData = createMultiAccountTypeUserState(
22602
+ {
22603
+ chainId,
22604
+ account,
22605
+ lendingPositions,
22606
+ modes
22607
+ },
22608
+ metaMap,
22609
+ histData
22610
+ );
22611
+ if (userData && userData.data.length > 0) {
22612
+ out[lenderKey] = userData;
22613
+ }
22614
+ }
22615
+ return Object.keys(out).length > 0 ? out : void 0;
22616
+ },
22617
+ FLUID_USER_CALL_COUNT
22618
+ ];
22619
+ };
22469
22620
 
22470
22621
  // src/lending/user-data/fetch-balances/parse.ts
22471
22622
  function getUserDataConverter(lender, chainId, account, params, meta) {
@@ -22505,6 +22656,8 @@ function getUserDataConverter(lender, chainId, account, params, meta) {
22505
22656
  return getSiloV2UserDataConverter(lender, chainId, account, meta?.[lender]);
22506
22657
  if (isSiloV3Type(lender))
22507
22658
  return getSiloV3UserDataConverter(lender, chainId, account, meta?.[lender]);
22659
+ if (isFluid(lender))
22660
+ return getFluidUserDataConverter(lender, chainId, account, meta);
22508
22661
  return getCompoundV2UserDataConverter(
22509
22662
  lender,
22510
22663
  chainId,
@@ -27186,6 +27339,7 @@ var getAbi2 = (lender) => {
27186
27339
  return [...ComptrollerAbi, ...CompoundV2CollateralToken];
27187
27340
  if (isSiloV2Type(lender) || isSiloV3Type(lender))
27188
27341
  return [...SiloAbi];
27342
+ if (isFluid(lender)) return [...FluidVaultResolverAbi];
27189
27343
  return [];
27190
27344
  };
27191
27345
 
@@ -31481,8 +31635,8 @@ var siloV3Fetcher = {
31481
31635
  parse: parseSiloV3Results,
31482
31636
  getAbi: getSiloV3Abi
31483
31637
  };
31484
- var FLUID_EEE_LOWER2 = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
31485
- var normalizeUnderlying2 = (addr) => addr === FLUID_EEE_LOWER2 ? zeroAddress : addr;
31638
+ var FLUID_EEE_LOWER3 = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
31639
+ var normalizeUnderlying3 = (addr) => addr === FLUID_EEE_LOWER3 ? zeroAddress : addr;
31486
31640
  function priceColInDebt(raw, colDec, debtDec) {
31487
31641
  return formatMorphoPrice(raw, debtDec, colDec + 9);
31488
31642
  }
@@ -31519,8 +31673,8 @@ function parseFluidResults(data, _meta, context) {
31519
31673
  const rawCol = (constants.supplyToken?.token0 ?? constants.supplyToken ?? "").toString().toLowerCase();
31520
31674
  const rawLoan = (constants.borrowToken?.token0 ?? constants.borrowToken ?? "").toString().toLowerCase();
31521
31675
  if (!rawCol || !rawLoan) continue;
31522
- const collateral = normalizeUnderlying2(rawCol);
31523
- const loan = normalizeUnderlying2(rawLoan);
31676
+ const collateral = normalizeUnderlying3(rawCol);
31677
+ const loan = normalizeUnderlying3(rawLoan);
31524
31678
  const colDec = tokenList?.[collateral]?.decimals ?? 18;
31525
31679
  const loanDec = tokenList?.[loan]?.decimals ?? 18;
31526
31680
  const rawPrice = configs.oraclePriceOperate?.toString() ?? "0";
@@ -31528,7 +31682,7 @@ function parseFluidResults(data, _meta, context) {
31528
31682
  const priceDebtPerCol = priceColInDebt(rawPrice, colDec, loanDec);
31529
31683
  if (!Number.isFinite(priceDebtPerCol) || priceDebtPerCol === 0) continue;
31530
31684
  const vaultId = Number(constants.vaultId ?? 0);
31531
- const lenderKey = `${Lender.FLUID}_${vaultId}`;
31685
+ const lenderKey = `${Lender.FLUID}_${chainId}_${vaultId}`;
31532
31686
  const loanOracleKey = tokenList?.[loan]?.assetGroup ?? `${chainId}-${loan}`;
31533
31687
  const loanUSD = usdPrices[loanOracleKey] ?? usdPrices[loan];
31534
31688
  if (!loanUSD) continue;
@@ -32879,8 +33033,8 @@ var buildFluidFTokensCall = (chainId) => {
32879
33033
  };
32880
33034
 
32881
33035
  // src/vaults/fluid/publicCallParse.ts
32882
- var FLUID_EEE_LOWER3 = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
32883
- var normalizeUnderlying3 = (addr) => addr === FLUID_EEE_LOWER3 ? zeroAddress : addr;
33036
+ var FLUID_EEE_LOWER4 = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
33037
+ var normalizeUnderlying4 = (addr) => addr === FLUID_EEE_LOWER4 ? zeroAddress : addr;
32884
33038
  var FLUID_RATE_SCALE2 = 100;
32885
33039
  var scaleFluidRate2 = (raw) => {
32886
33040
  if (raw === void 0 || raw === null) return 0;
@@ -32902,7 +33056,7 @@ function parseFTokens(fTokens, chainId, prices, tokenList) {
32902
33056
  for (const ft of fTokens) {
32903
33057
  const rawAsset = (ft.asset ?? "").toString().toLowerCase();
32904
33058
  if (!rawAsset) continue;
32905
- const underlying = normalizeUnderlying3(rawAsset);
33059
+ const underlying = normalizeUnderlying4(rawAsset);
32906
33060
  const assetMeta = tokenList[underlying];
32907
33061
  const decimals = Number(ft.decimals ?? assetMeta?.decimals ?? 18);
32908
33062
  const totalAssetsFormatted = Number(