@1delta/margin-fetcher 0.0.237 → 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
@@ -7607,6 +7607,9 @@ var getLendersForChain = (c) => {
7607
7607
  for (const spokeAddr of Object.keys(v4ChainSpokes)) {
7608
7608
  lenders.push(aaveV4SpokeLenderKey(spokeAddr));
7609
7609
  }
7610
+ if (fluidResolvers()?.[c]) {
7611
+ lenders.push(Lender.FLUID);
7612
+ }
7610
7613
  return lenders;
7611
7614
  };
7612
7615
  var filterLendersByProtocol = (allLenders, protocolList) => {
@@ -7615,8 +7618,9 @@ var filterLendersByProtocol = (allLenders, protocolList) => {
7615
7618
  }
7616
7619
  const hasMorpho = protocolList.includes(Lender.MORPHO_BLUE);
7617
7620
  const hasMoolah = protocolList.includes(Lender.LISTA_DAO);
7621
+ const hasFluid = protocolList.includes(Lender.FLUID);
7618
7622
  return allLenders.filter(
7619
- (lender) => protocolList.includes(lender) || hasMorpho && lender?.startsWith("MORPHO_BLUE") || hasMoolah && lender?.startsWith("LISTA_DAO")
7623
+ (lender) => protocolList.includes(lender) || hasMorpho && lender?.startsWith("MORPHO_BLUE") || hasMoolah && lender?.startsWith("LISTA_DAO") || hasFluid && lender?.startsWith("FLUID")
7620
7624
  );
7621
7625
  };
7622
7626
  var getAavesForChain = () => {
@@ -18863,7 +18867,7 @@ var getSiloV2ReservesDataConverter = (lender, chainId, prices, additionalYields,
18863
18867
  { self: market.silo0, other: market.silo1 },
18864
18868
  { self: market.silo1, other: market.silo0 }
18865
18869
  ];
18866
- const toBigInt7 = (v) => {
18870
+ const toBigInt8 = (v) => {
18867
18871
  if (v === void 0 || v === null || v === "0x") return 0n;
18868
18872
  if (typeof v === "bigint") return v;
18869
18873
  try {
@@ -18875,8 +18879,8 @@ var getSiloV2ReservesDataConverter = (lender, chainId, prices, additionalYields,
18875
18879
  for (let s = 0; s < 2; s++) {
18876
18880
  const { self, other } = sides[s];
18877
18881
  const slot = s * SILO_V2_CALLS_PER_SIDE;
18878
- const totalAssetsRaw = toBigInt7(data[slot]);
18879
- const debtAssetsRaw = toBigInt7(data[slot + 1]);
18882
+ const totalAssetsRaw = toBigInt8(data[slot]);
18883
+ const debtAssetsRaw = toBigInt8(data[slot + 1]);
18880
18884
  const irmConfigRaw = data[slot + 2];
18881
18885
  const decimals = self.decimals;
18882
18886
  const totalDeposits = Number(formatUnits(totalAssetsRaw, decimals));
@@ -19031,7 +19035,7 @@ var getSiloV3ReservesDataConverter = (lender, chainId, prices, additionalYields,
19031
19035
  { self: market.silo0, other: market.silo1 },
19032
19036
  { self: market.silo1, other: market.silo0 }
19033
19037
  ];
19034
- const toBigInt7 = (v) => {
19038
+ const toBigInt8 = (v) => {
19035
19039
  if (v === void 0 || v === null || v === "0x") return 0n;
19036
19040
  if (typeof v === "bigint") return v;
19037
19041
  try {
@@ -19043,8 +19047,8 @@ var getSiloV3ReservesDataConverter = (lender, chainId, prices, additionalYields,
19043
19047
  for (let s = 0; s < 2; s++) {
19044
19048
  const { self, other } = sides[s];
19045
19049
  const slot = s * SILO_V3_CALLS_PER_SIDE;
19046
- const totalAssetsRaw = toBigInt7(data[slot]);
19047
- const debtAssetsRaw = toBigInt7(data[slot + 1]);
19050
+ const totalAssetsRaw = toBigInt8(data[slot]);
19051
+ const debtAssetsRaw = toBigInt8(data[slot + 1]);
19048
19052
  const irmConfigRaw = data[slot + 2];
19049
19053
  const decimals = self.decimals;
19050
19054
  const totalDeposits = Number(formatUnits(totalAssetsRaw, decimals));
@@ -19211,7 +19215,7 @@ function parseVault(vault, chainId, prices, additionalYields, tokenList) {
19211
19215
  const collateralAddress = normalizeUnderlying(rawCollateral);
19212
19216
  const loanAddress = normalizeUnderlying(rawLoan);
19213
19217
  const vaultId = Number(constants.vaultId ?? 0);
19214
- const lender = `FLUID_${vaultId}`;
19218
+ const lender = `FLUID_${chainId}_${vaultId}`;
19215
19219
  const collateralMeta = tokenList[collateralAddress];
19216
19220
  const loanMeta = tokenList[loanAddress];
19217
19221
  const colDecimals = Number(
@@ -20717,6 +20721,20 @@ var buildSiloV3UserCall = (chainId, lender, account) => {
20717
20721
  return calls;
20718
20722
  };
20719
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
+
20720
20738
  // src/lending/user-data/fetch-balances/prepare.ts
20721
20739
  async function buildUserCall(chainId, lender, account, params) {
20722
20740
  if (isAaveV4Type(lender)) return buildAaveV4UserCall(chainId, lender, account);
@@ -20735,6 +20753,8 @@ async function buildUserCall(chainId, lender, account, params) {
20735
20753
  return buildSiloV3UserCall(chainId, lender, account);
20736
20754
  if (isCompoundV2Type(lender))
20737
20755
  return buildCompoundV2UserCall(chainId, lender, account);
20756
+ if (isFluid(lender))
20757
+ return buildFluidUserCall(chainId, lender, account);
20738
20758
  return [];
20739
20759
  }
20740
20760
  function organizeUserQueries(queries) {
@@ -22462,6 +22482,141 @@ function toBigInt6(v) {
22462
22482
  return 0n;
22463
22483
  }
22464
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
+ };
22465
22620
 
22466
22621
  // src/lending/user-data/fetch-balances/parse.ts
22467
22622
  function getUserDataConverter(lender, chainId, account, params, meta) {
@@ -22501,6 +22656,8 @@ function getUserDataConverter(lender, chainId, account, params, meta) {
22501
22656
  return getSiloV2UserDataConverter(lender, chainId, account, meta?.[lender]);
22502
22657
  if (isSiloV3Type(lender))
22503
22658
  return getSiloV3UserDataConverter(lender, chainId, account, meta?.[lender]);
22659
+ if (isFluid(lender))
22660
+ return getFluidUserDataConverter(lender, chainId, account, meta);
22504
22661
  return getCompoundV2UserDataConverter(
22505
22662
  lender,
22506
22663
  chainId,
@@ -27182,6 +27339,7 @@ var getAbi2 = (lender) => {
27182
27339
  return [...ComptrollerAbi, ...CompoundV2CollateralToken];
27183
27340
  if (isSiloV2Type(lender) || isSiloV3Type(lender))
27184
27341
  return [...SiloAbi];
27342
+ if (isFluid(lender)) return [...FluidVaultResolverAbi];
27185
27343
  return [];
27186
27344
  };
27187
27345
 
@@ -31477,8 +31635,8 @@ var siloV3Fetcher = {
31477
31635
  parse: parseSiloV3Results,
31478
31636
  getAbi: getSiloV3Abi
31479
31637
  };
31480
- var FLUID_EEE_LOWER2 = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
31481
- 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;
31482
31640
  function priceColInDebt(raw, colDec, debtDec) {
31483
31641
  return formatMorphoPrice(raw, debtDec, colDec + 9);
31484
31642
  }
@@ -31515,8 +31673,8 @@ function parseFluidResults(data, _meta, context) {
31515
31673
  const rawCol = (constants.supplyToken?.token0 ?? constants.supplyToken ?? "").toString().toLowerCase();
31516
31674
  const rawLoan = (constants.borrowToken?.token0 ?? constants.borrowToken ?? "").toString().toLowerCase();
31517
31675
  if (!rawCol || !rawLoan) continue;
31518
- const collateral = normalizeUnderlying2(rawCol);
31519
- const loan = normalizeUnderlying2(rawLoan);
31676
+ const collateral = normalizeUnderlying3(rawCol);
31677
+ const loan = normalizeUnderlying3(rawLoan);
31520
31678
  const colDec = tokenList?.[collateral]?.decimals ?? 18;
31521
31679
  const loanDec = tokenList?.[loan]?.decimals ?? 18;
31522
31680
  const rawPrice = configs.oraclePriceOperate?.toString() ?? "0";
@@ -31524,7 +31682,7 @@ function parseFluidResults(data, _meta, context) {
31524
31682
  const priceDebtPerCol = priceColInDebt(rawPrice, colDec, loanDec);
31525
31683
  if (!Number.isFinite(priceDebtPerCol) || priceDebtPerCol === 0) continue;
31526
31684
  const vaultId = Number(constants.vaultId ?? 0);
31527
- const lenderKey = `${Lender.FLUID}_${vaultId}`;
31685
+ const lenderKey = `${Lender.FLUID}_${chainId}_${vaultId}`;
31528
31686
  const loanOracleKey = tokenList?.[loan]?.assetGroup ?? `${chainId}-${loan}`;
31529
31687
  const loanUSD = usdPrices[loanOracleKey] ?? usdPrices[loan];
31530
31688
  if (!loanUSD) continue;
@@ -32875,8 +33033,8 @@ var buildFluidFTokensCall = (chainId) => {
32875
33033
  };
32876
33034
 
32877
33035
  // src/vaults/fluid/publicCallParse.ts
32878
- var FLUID_EEE_LOWER3 = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
32879
- 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;
32880
33038
  var FLUID_RATE_SCALE2 = 100;
32881
33039
  var scaleFluidRate2 = (raw) => {
32882
33040
  if (raw === void 0 || raw === null) return 0;
@@ -32898,7 +33056,7 @@ function parseFTokens(fTokens, chainId, prices, tokenList) {
32898
33056
  for (const ft of fTokens) {
32899
33057
  const rawAsset = (ft.asset ?? "").toString().toLowerCase();
32900
33058
  if (!rawAsset) continue;
32901
- const underlying = normalizeUnderlying3(rawAsset);
33059
+ const underlying = normalizeUnderlying4(rawAsset);
32902
33060
  const assetMeta = tokenList[underlying];
32903
33061
  const decimals = Number(ft.decimals ?? assetMeta?.decimals ?? 18);
32904
33062
  const totalAssetsFormatted = Number(