@1delta/margin-fetcher 0.0.314 → 0.0.317

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 (33) hide show
  1. package/dist/index.js +745 -288
  2. package/dist/index.js.map +1 -1
  3. package/dist/lending/public-data/fetchLenderAll.d.ts.map +1 -1
  4. package/dist/lending/public-data/fetchLenderExt.d.ts.map +1 -1
  5. package/dist/lending/public-data/midnight/apiClient.d.ts +21 -0
  6. package/dist/lending/public-data/midnight/apiClient.d.ts.map +1 -0
  7. package/dist/lending/public-data/midnight/convertPublic.d.ts +25 -0
  8. package/dist/lending/public-data/midnight/convertPublic.d.ts.map +1 -0
  9. package/dist/lending/public-data/midnight/fetchPublic.d.ts +12 -0
  10. package/dist/lending/public-data/midnight/fetchPublic.d.ts.map +1 -0
  11. package/dist/lending/public-data/midnight/index.d.ts +6 -0
  12. package/dist/lending/public-data/midnight/index.d.ts.map +1 -0
  13. package/dist/lending/public-data/midnight/live.test.d.ts +2 -0
  14. package/dist/lending/public-data/midnight/live.test.d.ts.map +1 -0
  15. package/dist/lending/public-data/midnight/math.d.ts +22 -0
  16. package/dist/lending/public-data/midnight/math.d.ts.map +1 -0
  17. package/dist/lending/public-data/midnight/math.test.d.ts +2 -0
  18. package/dist/lending/public-data/midnight/math.test.d.ts.map +1 -0
  19. package/dist/lending/public-data/midnight/types.d.ts +45 -0
  20. package/dist/lending/public-data/midnight/types.d.ts.map +1 -0
  21. package/dist/lending/user-data/abis.d.ts.map +1 -1
  22. package/dist/lending/user-data/fetch-balances/parse.d.ts.map +1 -1
  23. package/dist/lending/user-data/fetch-balances/prepare.d.ts.map +1 -1
  24. package/dist/lending/user-data/midnight/index.d.ts +3 -0
  25. package/dist/lending/user-data/midnight/index.d.ts.map +1 -0
  26. package/dist/lending/user-data/midnight/userCallBuild.d.ts +16 -0
  27. package/dist/lending/user-data/midnight/userCallBuild.d.ts.map +1 -0
  28. package/dist/lending/user-data/midnight/userCallParse.d.ts +17 -0
  29. package/dist/lending/user-data/midnight/userCallParse.d.ts.map +1 -0
  30. package/dist/utils/index.d.ts +1 -1
  31. package/dist/utils/index.d.ts.map +1 -1
  32. package/dist/yields/intrinsic/index.d.ts.map +1 -1
  33. package/package.json +7 -7
package/dist/index.js CHANGED
@@ -1,12 +1,12 @@
1
1
  import { parseAbi, keccak256, encodeAbiParameters, formatEther, BaseError, encodeFunctionData, formatUnits, isAddress, getAddress, decodeFunctionResult, decodeAbiParameters, AbiEncodingLengthMismatchError, concatHex, pad, InvalidAddressError, stringToHex, boolToHex, integerRegex, numberToHex, bytesRegex, BytesSizeMismatchError, arrayRegex, UnsupportedPackedAbiType } from './chunk-Z3MGRQJR.js';
2
2
  import './chunk-BYTNVMX7.js';
3
3
  import './chunk-PR4QN5HX.js';
4
- import { Lender, isAaveType, isCompoundV3, isMultiMarket, isSiloV2Type, isSiloV3Type, isDolomite, isEulerType, isAaveV4Type, isInit, isMorphoType, isCompoundV2Type, isVenusType, isSumerType, AAVE_V3_LENDERS, AAVE_V2_LENDERS, isAaveV2Type, isAaveV32Type, isAaveV3Type, isFluid, isGearboxV3, isYLDR, isCompoundV3Type, isLista, isTectonicType, isKineticType, isBenqiType } from '@1delta/lender-registry';
4
+ import { Lender, isAaveType, isCompoundV3, isMultiMarket, isSiloV2Type, isSiloV3Type, isDolomite, isEulerType, isAaveV4Type, isInit, isMorphoType, isCompoundV2Type, isVenusType, isSumerType, AAVE_V3_LENDERS, AAVE_V2_LENDERS, isAaveV2Type, isAaveV32Type, isAaveV3Type, isFluid, isGearboxV3, isMidnight, isYLDR, isCompoundV3Type, isLista, isTectonicType, isKineticType, isBenqiType } from '@1delta/lender-registry';
5
5
  export { isAaveType, isAaveV2Type, isAaveV32Type, isAaveV3Type, isCompoundV3, isCompoundV3Type, isInit, isMorphoType, isMultiMarket, isYLDR } from '@1delta/lender-registry';
6
- import { aavePools, compoundV3Pools, initConfig, morphoPools, compoundV2Pools, eulerVaults, siloMarkets, siloV2LenderKey, siloMarketsV3, siloV3LenderKey, aaveV4Spokes, aaveV4SpokeLenderKey, fluidResolvers, gearboxResolvers, dolomiteConfigs, aaveReserves, compoundV3Reserves, morphoTypeMarkets, getSiloV2MarketEntry, getSiloV3MarketEntry, dolomiteEmode, aaveTokens, morphoTypeVaults, eulerConfigs, gearboxMarketCompressor, gearboxMarketConfigurators, gearboxV3LenderKey, parseAaveV4SpokeLenderKey, gearboxAccountCompressor, compoundV2Tokens, aaveOracles, aaveOraclesConfig, compoundV2Oracles, compoundV2TokenArray, compoundV2OraclesConfig, compoundV3OraclesData, compoundV3BaseData, compoundV2Reserves, fetchTokenLists, fetchTokenList, aaveV4Oracles } from '@1delta/data-sdk';
6
+ import { aavePools, compoundV3Pools, initConfig, morphoPools, compoundV2Pools, eulerVaults, siloMarkets, siloV2LenderKey, siloMarketsV3, siloV3LenderKey, aaveV4Spokes, aaveV4SpokeLenderKey, fluidResolvers, gearboxResolvers, dolomiteConfigs, midnightConfig, aaveReserves, compoundV3Reserves, morphoTypeMarkets, getSiloV2MarketEntry, getSiloV3MarketEntry, dolomiteEmode, aaveTokens, morphoTypeVaults, eulerConfigs, gearboxMarketCompressor, gearboxMarketConfigurators, gearboxV3LenderKey, midnightMarketsByChain, parseAaveV4SpokeLenderKey, gearboxAccountCompressor, compoundV2Tokens, aaveOracles, aaveOraclesConfig, compoundV2Oracles, compoundV2TokenArray, compoundV2OraclesConfig, compoundV3OraclesData, compoundV3BaseData, compoundV2Reserves, fetchTokenLists, fetchTokenList, aaveV4Oracles } from '@1delta/data-sdk';
7
7
  import lodash from 'lodash';
8
8
  import { getEvmClient, getEvmChain, getEvmClientUniversal, multicallRetryUniversal } from '@1delta/providers';
9
- import { MetaMorphoAbi, FluidLendingResolverAbi, FluidVaultResolverAbi, MoolahVaultAbi, MorphoLensAbi, AaveV4SpokeAbi, AaveV4OracleAbi, AaveV4HubAbi, DolomiteMarginAbi, GearboxMarketCompressorV310Abi, MorphoBlueAbi, GearboxCreditAccountCompressorV310Abi } from '@1delta/abis';
9
+ import { MetaMorphoAbi, FluidLendingResolverAbi, FluidVaultResolverAbi, MoolahVaultAbi, MorphoLensAbi, AaveV4SpokeAbi, AaveV4OracleAbi, AaveV4HubAbi, DolomiteMarginAbi, GearboxMarketCompressorV310Abi, MorphoBlueAbi, MidnightAbi, GearboxCreditAccountCompressorV310Abi } from '@1delta/abis';
10
10
  export { MorphoLensAbi } from '@1delta/abis';
11
11
  import { prepareDebitDataMulticall, prepareLenderDebitMulticall, parseDebitDataResult, parseLenderDebitResult, getPermit2ContractAddress, getCompoundV3CometAddress as getCompoundV3CometAddress$1, getMorphoAddress, getAaveCollateralTokenAddress, getSiloHalfForUnderlying, InitMarginAddresses, getLstAcceptedInputs } from '@1delta/calldata-sdk';
12
12
  import { proxyNativeFetch } from '@1delta/proxy-fetch';
@@ -7501,6 +7501,9 @@ var getLendersForChain = (c) => {
7501
7501
  if (dolomiteConfigs()?.[c]?.dolomiteMargin) {
7502
7502
  lenders.push(Lender.DOLOMITE);
7503
7503
  }
7504
+ if (midnightConfig()?.[c]?.midnight) {
7505
+ lenders.push(Lender.MORPHO_MIDNIGHT);
7506
+ }
7504
7507
  return lenders.filter((l) => !isExcludedLender(l));
7505
7508
  };
7506
7509
  var filterLendersByProtocol = (allLenders, protocolList) => {
@@ -13036,7 +13039,7 @@ var MathLib;
13036
13039
  return x * y / denominator;
13037
13040
  }
13038
13041
  MathLib2.mulDivDown = mulDivDown;
13039
- function mulDivUp(x, y, denominator) {
13042
+ function mulDivUp2(x, y, denominator) {
13040
13043
  x = BigInt(x);
13041
13044
  y = BigInt(y);
13042
13045
  denominator = BigInt(denominator);
@@ -13044,7 +13047,7 @@ var MathLib;
13044
13047
  const roundup = x * y % denominator > 0 ? 1n : 0n;
13045
13048
  return x * y / denominator + roundup;
13046
13049
  }
13047
- MathLib2.mulDivUp = mulDivUp;
13050
+ MathLib2.mulDivUp = mulDivUp2;
13048
13051
  function mulDiv(x, y, denominator, rounding) {
13049
13052
  return MathLib2[`mulDiv${rounding}`](x, y, denominator);
13050
13053
  }
@@ -13151,7 +13154,7 @@ var MathLib;
13151
13154
  } else {
13152
13155
  const _newRateAtTarget = (la) => MathLib2.min(
13153
13156
  MathLib2.max(
13154
- MathLib2.wMulDown(startRateAtTarget, wExp(la)),
13157
+ MathLib2.wMulDown(startRateAtTarget, wExp2(la)),
13155
13158
  MIN_RATE_AT_TARGET
13156
13159
  ),
13157
13160
  MAX_RATE_AT_TARGET
@@ -13180,7 +13183,7 @@ var MathLib;
13180
13183
  const LN_WEI_INT = -41446531673892822312n;
13181
13184
  const WEXP_UPPER_BOUND = 93859467695000404319n;
13182
13185
  const WEXP_UPPER_VALUE = 57716089161558943949701069502944508345128422502756744429568n;
13183
- function wExp(x) {
13186
+ function wExp2(x) {
13184
13187
  x = BigInt(x);
13185
13188
  if (x < LN_WEI_INT) return 0n;
13186
13189
  if (x >= WEXP_UPPER_BOUND) return WEXP_UPPER_VALUE;
@@ -13191,7 +13194,7 @@ var MathLib;
13191
13194
  if (q >= 0n) return expR << q;
13192
13195
  return expR >> -q;
13193
13196
  }
13194
- MathLib2.wExp = wExp;
13197
+ MathLib2.wExp = wExp2;
13195
13198
  function _getBorrowRate(startUtilization, startRateAtTarget, elapsed) {
13196
13199
  startUtilization = BigInt(startUtilization);
13197
13200
  startRateAtTarget = BigInt(startRateAtTarget);
@@ -13215,7 +13218,7 @@ var MathLib;
13215
13218
  } else {
13216
13219
  const _newRateAtTarget = (linearAdaptation2) => MathLib2.min(
13217
13220
  MathLib2.max(
13218
- MathLib2.wMulDown(startRateAtTarget, wExp(linearAdaptation2)),
13221
+ MathLib2.wMulDown(startRateAtTarget, wExp2(linearAdaptation2)),
13219
13222
  MIN_RATE_AT_TARGET
13220
13223
  ),
13221
13224
  MAX_RATE_AT_TARGET
@@ -19582,7 +19585,7 @@ var getSiloV2ReservesDataConverter = (lender, chainId, prices, additionalYields,
19582
19585
  { self: market.silo0, other: market.silo1 },
19583
19586
  { self: market.silo1, other: market.silo0 }
19584
19587
  ];
19585
- const toBigInt14 = (v) => {
19588
+ const toBigInt15 = (v) => {
19586
19589
  if (v === void 0 || v === null || v === "0x") return 0n;
19587
19590
  if (typeof v === "bigint") return v;
19588
19591
  try {
@@ -19594,8 +19597,8 @@ var getSiloV2ReservesDataConverter = (lender, chainId, prices, additionalYields,
19594
19597
  for (let s = 0; s < 2; s++) {
19595
19598
  const { self, other } = sides[s];
19596
19599
  const slot = s * SILO_V2_CALLS_PER_SIDE;
19597
- const totalAssetsRaw = toBigInt14(data[slot]);
19598
- const debtAssetsRaw = toBigInt14(data[slot + 1]);
19600
+ const totalAssetsRaw = toBigInt15(data[slot]);
19601
+ const debtAssetsRaw = toBigInt15(data[slot + 1]);
19599
19602
  const irmConfigRaw = data[slot + 2];
19600
19603
  const decimals = self.decimals;
19601
19604
  const totalDeposits = Number(formatUnits(totalAssetsRaw, decimals));
@@ -19750,7 +19753,7 @@ var getSiloV3ReservesDataConverter = (lender, chainId, prices, additionalYields,
19750
19753
  { self: market.silo0, other: market.silo1 },
19751
19754
  { self: market.silo1, other: market.silo0 }
19752
19755
  ];
19753
- const toBigInt14 = (v) => {
19756
+ const toBigInt15 = (v) => {
19754
19757
  if (v === void 0 || v === null || v === "0x") return 0n;
19755
19758
  if (typeof v === "bigint") return v;
19756
19759
  try {
@@ -19762,8 +19765,8 @@ var getSiloV3ReservesDataConverter = (lender, chainId, prices, additionalYields,
19762
19765
  for (let s = 0; s < 2; s++) {
19763
19766
  const { self, other } = sides[s];
19764
19767
  const slot = s * SILO_V3_CALLS_PER_SIDE;
19765
- const totalAssetsRaw = toBigInt14(data[slot]);
19766
- const debtAssetsRaw = toBigInt14(data[slot + 1]);
19768
+ const totalAssetsRaw = toBigInt15(data[slot]);
19769
+ const debtAssetsRaw = toBigInt15(data[slot + 1]);
19767
19770
  const irmConfigRaw = data[slot + 2];
19768
19771
  const decimals = self.decimals;
19769
19772
  const totalDeposits = Number(formatUnits(totalAssetsRaw, decimals));
@@ -20751,6 +20754,310 @@ var getLenderPublicData = async (chainId, lenders, prices, additionalYields, mul
20751
20754
  }
20752
20755
  return lenderData;
20753
20756
  };
20757
+ var DEFAULT_MIDNIGHT_API = "https://api.morpho.org/v0/midnight";
20758
+ var warn = (...args) => {
20759
+ };
20760
+ function midnightApiBaseUrl(chainId) {
20761
+ const base = midnightConfig()?.[chainId]?.apiBaseUrl;
20762
+ return (base && base.length > 0 ? base : DEFAULT_MIDNIGHT_API).replace(/\/+$/, "");
20763
+ }
20764
+ var toBig2 = (v) => {
20765
+ try {
20766
+ if (v == null) return 0n;
20767
+ if (typeof v === "bigint") return v;
20768
+ if (typeof v === "number") return BigInt(Math.trunc(v));
20769
+ return BigInt(String(v));
20770
+ } catch {
20771
+ return 0n;
20772
+ }
20773
+ };
20774
+ function parseLevel(raw) {
20775
+ const tick = toBig2(raw?.tick);
20776
+ const units = toBig2(raw?.units);
20777
+ let assets = toBig2(raw?.assets);
20778
+ if (assets === 0n && units > 0n && raw?.price != null) {
20779
+ assets = toBig2(raw.price) * units / 1000000000000000000n;
20780
+ }
20781
+ return { tick, units, assets };
20782
+ }
20783
+ function reduceTop(bids, asks) {
20784
+ let bestBorrowTick;
20785
+ let bestSupplyTick;
20786
+ let borrowDepthUnits = 0n;
20787
+ let borrowDepthAssets = 0n;
20788
+ let supplyDepthUnits = 0n;
20789
+ let supplyDepthAssets = 0n;
20790
+ for (const l of bids) {
20791
+ borrowDepthUnits += l.units;
20792
+ borrowDepthAssets += l.assets;
20793
+ if (bestBorrowTick === void 0 || l.tick > bestBorrowTick) bestBorrowTick = l.tick;
20794
+ }
20795
+ for (const l of asks) {
20796
+ supplyDepthUnits += l.units;
20797
+ supplyDepthAssets += l.assets;
20798
+ if (bestSupplyTick === void 0 || l.tick < bestSupplyTick) bestSupplyTick = l.tick;
20799
+ }
20800
+ return {
20801
+ bestBorrowTick,
20802
+ bestSupplyTick,
20803
+ borrowDepthUnits,
20804
+ borrowDepthAssets,
20805
+ supplyDepthUnits,
20806
+ supplyDepthAssets
20807
+ };
20808
+ }
20809
+ var ApiBookSource = class {
20810
+ constructor(baseUrl, fetchImpl = fetch) {
20811
+ this.baseUrl = baseUrl;
20812
+ this.fetchImpl = fetchImpl;
20813
+ }
20814
+ baseUrl;
20815
+ fetchImpl;
20816
+ async getBookTop(marketId) {
20817
+ const url = `${this.baseUrl}/books/${marketId}`;
20818
+ try {
20819
+ const res = await this.fetchImpl(url);
20820
+ if (!res.ok) {
20821
+ warn(`book ${marketId} \u2192 HTTP ${res.status}`);
20822
+ return null;
20823
+ }
20824
+ const json = await res.json();
20825
+ const book = json?.data ?? json;
20826
+ const bids = Array.isArray(book?.bids) ? book.bids.map(parseLevel) : [];
20827
+ const asks = Array.isArray(book?.asks) ? book.asks.map(parseLevel) : [];
20828
+ return reduceTop(bids, asks);
20829
+ } catch (e) {
20830
+ warn(`book ${marketId} fetch failed:`, e?.message ?? e);
20831
+ return null;
20832
+ }
20833
+ }
20834
+ };
20835
+ function createMidnightBookSource(chainId, fetchImpl = fetch) {
20836
+ return new ApiBookSource(midnightApiBaseUrl(chainId), fetchImpl);
20837
+ }
20838
+
20839
+ // src/lending/public-data/midnight/fetchPublic.ts
20840
+ async function fetchMidnightMarkets(chainId, source = createMidnightBookSource(chainId)) {
20841
+ const markets = midnightMarketsByChain(chainId);
20842
+ if (markets.length === 0) return [];
20843
+ return Promise.all(
20844
+ markets.map(async (config) => ({
20845
+ config,
20846
+ top: await source.getBookTop(config.marketId).catch(() => null)
20847
+ }))
20848
+ );
20849
+ }
20850
+
20851
+ // src/lending/public-data/midnight/math.ts
20852
+ var WAD2 = 1000000000000000000n;
20853
+ var WAD_SQUARED = 1000000000000000000000000000000000000n;
20854
+ var LN_ONE_PLUS_DELTA = 4987541511039073n;
20855
+ var LN_2 = 693147180559945309n;
20856
+ var EXP_OFFSET = 322611214989459870n;
20857
+ var MAX_TICK = 6744n;
20858
+ var PRICE_ROUNDING_STEP = 100000000000n;
20859
+ var SECONDS_PER_YEAR7 = 31536000n;
20860
+ var mulDivUp = (x, y, d) => (x * y + (d - 1n)) / d;
20861
+ var divHalfDownUnchecked = (x, d) => (x + (d - 1n) / 2n) / d;
20862
+ function wExp(x) {
20863
+ if (x < 0n) return WAD_SQUARED / wExp(-x);
20864
+ const q = (x + EXP_OFFSET) / LN_2;
20865
+ const r = x - q * LN_2;
20866
+ const secondTerm = r * r / (2n * WAD2);
20867
+ const thirdTerm = secondTerm * r / (3n * WAD2);
20868
+ const expR = WAD2 + r + secondTerm + thirdTerm;
20869
+ return expR << q;
20870
+ }
20871
+ function tickToPrice(tick) {
20872
+ if (tick < 0n || tick > MAX_TICK)
20873
+ throw new Error(`midnight tick out of range: ${tick}`);
20874
+ const exponent = LN_ONE_PLUS_DELTA * (MAX_TICK / 2n - tick);
20875
+ const rawPrice = divHalfDownUnchecked(WAD_SQUARED, WAD2 + wExp(exponent));
20876
+ return divHalfDownUnchecked(rawPrice, PRICE_ROUNDING_STEP) * PRICE_ROUNDING_STEP;
20877
+ }
20878
+ function tickToRate(tick) {
20879
+ const price2 = tickToPrice(tick);
20880
+ if (price2 === 0n) throw new Error("midnight tick price is zero");
20881
+ return mulDivUp(WAD2, WAD2, price2) - WAD2;
20882
+ }
20883
+ function tickToApr(tick, timeToMaturity) {
20884
+ if (timeToMaturity <= 0n) return 0n;
20885
+ return mulDivUp(tickToRate(tick), SECONDS_PER_YEAR7, timeToMaturity);
20886
+ }
20887
+ function tickToAprNumber(tick, timeToMaturity) {
20888
+ return Number(tickToApr(tick, timeToMaturity)) / 1e18;
20889
+ }
20890
+
20891
+ // src/lending/public-data/midnight/convertPublic.ts
20892
+ var nowSec = () => Math.floor(Date.now() / 1e3);
20893
+ function midnightLenderKey(marketId) {
20894
+ return "MORPHO_MIDNIGHT_" + marketId.slice(2).toUpperCase();
20895
+ }
20896
+ function currencyFor(address, decimals, tokens) {
20897
+ const lower = address.toLowerCase();
20898
+ return tokens[lower] ?? {
20899
+ address: lower,
20900
+ symbol: "",
20901
+ name: "",
20902
+ decimals
20903
+ };
20904
+ }
20905
+ function convertMidnightMarketsToResponse(raw, chainId, prices = {}, _additionalYields = {
20906
+ intrinsicYields: {},
20907
+ lenderRewards: {},
20908
+ loaded: true
20909
+ }, tokens = {}) {
20910
+ const out = {};
20911
+ const now = nowSec();
20912
+ for (const { config, top } of raw) {
20913
+ if (!config?.marketId || !config.loanToken) continue;
20914
+ const m = midnightLenderKey(config.marketId);
20915
+ const maturity = Number(config.maturity);
20916
+ const ttm = maturity - now;
20917
+ const matured = ttm <= 0;
20918
+ const ttmBig = BigInt(Math.max(0, ttm));
20919
+ const supplyAprPct = top?.bestSupplyTick != null && !matured ? tickToAprNumber(top.bestSupplyTick, ttmBig) * 100 : 0;
20920
+ const borrowAprPct = top?.bestBorrowTick != null && !matured ? tickToAprNumber(top.bestBorrowTick, ttmBig) * 100 : 0;
20921
+ const terms = borrowAprPct > 0 && !matured ? [
20922
+ {
20923
+ termId: 0,
20924
+ durationSecs: Math.max(0, ttm),
20925
+ durationDays: ttm / 86400,
20926
+ apr: borrowAprPct
20927
+ }
20928
+ ] : void 0;
20929
+ const loanAddr = config.loanToken.toLowerCase();
20930
+ const loanPrice = prices[loanAddr] ?? 0;
20931
+ const supplyLiquidity = formatNr(top?.supplyDepthAssets ?? 0n, config.loanDecimals);
20932
+ const borrowLiquidity = formatNr(top?.borrowDepthAssets ?? 0n, config.loanDecimals);
20933
+ const entry = { data: {} };
20934
+ const loanUid = createMarketUid(chainId, m, loanAddr);
20935
+ entry.data[loanUid] = {
20936
+ marketUid: loanUid,
20937
+ name: "Loan " + (tokens[loanAddr]?.symbol ?? ""),
20938
+ poolId: loanAddr,
20939
+ underlying: loanAddr,
20940
+ asset: currencyFor(loanAddr, config.loanDecimals, tokens),
20941
+ totalDeposits: supplyLiquidity,
20942
+ totalDebtStable: 0,
20943
+ totalDebt: 0,
20944
+ totalLiquidity: borrowLiquidity,
20945
+ borrowLiquidity,
20946
+ totalLiquidityUSD: borrowLiquidity * loanPrice,
20947
+ borrowLiquidityUSD: borrowLiquidity * loanPrice,
20948
+ totalDepositsUSD: supplyLiquidity * loanPrice,
20949
+ totalDebtStableUSD: 0,
20950
+ totalDebtUSD: 0,
20951
+ utilization: 0,
20952
+ depositRate: supplyAprPct,
20953
+ variableBorrowRate: borrowAprPct,
20954
+ // Midnight is fixed-rate: expose the fixed borrow APR on stableBorrowRate
20955
+ // too, so fixed-rate consumers pick it up like a term product.
20956
+ stableBorrowRate: borrowAprPct,
20957
+ intrinsicYield: 0,
20958
+ rewards: void 0,
20959
+ decimals: config.loanDecimals,
20960
+ config: {
20961
+ 0: {
20962
+ category: 0,
20963
+ borrowCollateralFactor: 0,
20964
+ collateralFactor: 0,
20965
+ borrowFactor: 1,
20966
+ liquidationPenalty: 0,
20967
+ closeFactor: 1,
20968
+ collateralDisabled: true,
20969
+ debtDisabled: false
20970
+ }
20971
+ },
20972
+ closeFactor: 1,
20973
+ collateralActive: false,
20974
+ borrowingEnabled: !matured,
20975
+ depositsEnabled: !matured,
20976
+ hasStable: false,
20977
+ // Midnight borrowing is fixed-term (carried via `terms` + `maturity` on
20978
+ // params.market), but it IS borrowable — do NOT mark variable borrow
20979
+ // disabled, or borrowable-only filters would hide the market.
20980
+ variableBorrowDisabled: false,
20981
+ isActive: true,
20982
+ isFrozen: false
20983
+ };
20984
+ config.collateralParams.forEach((c) => {
20985
+ const collAddr = c.token.toLowerCase();
20986
+ const ltv = parseLtv(c.lltv);
20987
+ const liquidationPenalty = liquidationPenaltyFromLltv(ltv);
20988
+ const collUid = createMarketUid(chainId, m, collAddr);
20989
+ entry.data[collUid] = {
20990
+ marketUid: collUid,
20991
+ name: "Collateral " + (tokens[collAddr]?.symbol ?? ""),
20992
+ poolId: collAddr,
20993
+ underlying: collAddr,
20994
+ asset: currencyFor(collAddr, c.decimals, tokens),
20995
+ totalDeposits: 0,
20996
+ totalDebtStable: 0,
20997
+ totalDebt: 0,
20998
+ totalLiquidity: 0,
20999
+ borrowLiquidity: 0,
21000
+ totalLiquidityUSD: 0,
21001
+ borrowLiquidityUSD: 0,
21002
+ totalDepositsUSD: 0,
21003
+ totalDebtStableUSD: 0,
21004
+ totalDebtUSD: 0,
21005
+ utilization: 0,
21006
+ depositRate: 0,
21007
+ variableBorrowRate: 0,
21008
+ stableBorrowRate: 0,
21009
+ intrinsicYield: 0,
21010
+ rewards: void 0,
21011
+ decimals: c.decimals,
21012
+ config: {
21013
+ 0: {
21014
+ category: 0,
21015
+ borrowCollateralFactor: ltv,
21016
+ collateralFactor: ltv,
21017
+ borrowFactor: 1,
21018
+ liquidationPenalty,
21019
+ closeFactor: 1,
21020
+ collateralDisabled: false,
21021
+ debtDisabled: true
21022
+ }
21023
+ },
21024
+ closeFactor: 1,
21025
+ collateralActive: true,
21026
+ borrowingEnabled: false,
21027
+ depositsEnabled: !matured,
21028
+ hasStable: false,
21029
+ isActive: true,
21030
+ isFrozen: false
21031
+ };
21032
+ });
21033
+ const primaryCollateral = config.collateralParams[0];
21034
+ entry.params = {
21035
+ market: {
21036
+ lender: m,
21037
+ name: config.name,
21038
+ loanDecimals: config.loanDecimals,
21039
+ collateralDecimals: primaryCollateral?.decimals,
21040
+ id: config.marketId,
21041
+ lltv: primaryCollateral?.lltv ?? "0",
21042
+ oracle: primaryCollateral?.oracle ?? zeroAddress,
21043
+ irm: zeroAddress,
21044
+ collateralAddress: primaryCollateral?.token ?? zeroAddress,
21045
+ loanAddress: loanAddr,
21046
+ // Fixed-term rate card (single maturity); undefined when no live rate.
21047
+ terms,
21048
+ // Midnight-specific extras (consumed by calldata / worker-api resolvers)
21049
+ maturity: config.maturity,
21050
+ rcfThreshold: config.rcfThreshold,
21051
+ enterGate: config.enterGate,
21052
+ liquidatorGate: config.liquidatorGate,
21053
+ collateralParams: config.collateralParams
21054
+ }
21055
+ };
21056
+ entry.chainId = chainId;
21057
+ out[m] = entry;
21058
+ }
21059
+ return out;
21060
+ }
20754
21061
 
20755
21062
  // src/lending/public-data/silo-v2/fetchPublic.ts
20756
21063
  var BASE_URL2 = "https://api-v3.silo.finance";
@@ -21348,16 +21655,25 @@ function convertDolomiteSubgraphMarkets(raw, chainId, prices, additionalYields,
21348
21655
  }
21349
21656
  return { data: result, chainId };
21350
21657
  }
21351
- var warn = (...args) => {
21658
+ var warn2 = (...args) => {
21352
21659
  };
21353
21660
  async function getLenderDataFromApi(lender, chainId, prices, additionalYields, includeUnlisted = false) {
21354
21661
  if (isMorphoType(lender))
21355
21662
  return await fetchMorphoMarkets(chainId, includeUnlisted);
21663
+ if (isMidnight(lender)) return await fetchMidnightMarkets(chainId);
21356
21664
  return {};
21357
21665
  }
21358
21666
  function convertLenderDataFromApi(lender, chainId, data, prices, additionalYields, list = {}) {
21359
21667
  if (isMorphoType(lender))
21360
21668
  return convertMarketsToMorphoResponse(data, chainId, additionalYields, list);
21669
+ if (isMidnight(lender))
21670
+ return convertMidnightMarketsToResponse(
21671
+ data,
21672
+ chainId,
21673
+ prices,
21674
+ additionalYields,
21675
+ list
21676
+ );
21361
21677
  return {};
21362
21678
  }
21363
21679
  var getLenderPublicDataViaApi = async (chainId, lenders, prices, additionalYields, tokenList = async () => {
@@ -21398,7 +21714,7 @@ var getLenderPublicDataViaApi = async (chainId, lenders, prices, additionalYield
21398
21714
  const listResult = settled[0];
21399
21715
  const list = listResult.status === "fulfilled" ? listResult.value : {};
21400
21716
  if (listResult.status === "rejected") {
21401
- warn(
21717
+ warn2(
21402
21718
  `[lending] tokenList fetch failed on chain ${chainId}:`,
21403
21719
  listResult.reason
21404
21720
  );
@@ -21420,13 +21736,13 @@ var getLenderPublicDataViaApi = async (chainId, lenders, prices, additionalYield
21420
21736
  if (converted[lk]) lenderData[lk] = converted[lk];
21421
21737
  }
21422
21738
  } catch (e) {
21423
- warn(
21739
+ warn2(
21424
21740
  `[lending] Silo v2 API convert failed on chain ${chainId}:`,
21425
21741
  e?.message ?? e
21426
21742
  );
21427
21743
  }
21428
21744
  } else {
21429
- warn(
21745
+ warn2(
21430
21746
  `[lending] Silo v2 API fetch failed on chain ${chainId}:`,
21431
21747
  siloV2Result.reason?.message ?? siloV2Result.reason
21432
21748
  );
@@ -21448,13 +21764,13 @@ var getLenderPublicDataViaApi = async (chainId, lenders, prices, additionalYield
21448
21764
  if (converted[lk]) lenderData[lk] = converted[lk];
21449
21765
  }
21450
21766
  } catch (e) {
21451
- warn(
21767
+ warn2(
21452
21768
  `[lending] Silo v3 API convert failed on chain ${chainId}:`,
21453
21769
  e?.message ?? e
21454
21770
  );
21455
21771
  }
21456
21772
  } else {
21457
- warn(
21773
+ warn2(
21458
21774
  `[lending] Silo v3 API fetch failed on chain ${chainId}:`,
21459
21775
  siloV3Result.reason?.message ?? siloV3Result.reason
21460
21776
  );
@@ -21464,7 +21780,7 @@ var getLenderPublicDataViaApi = async (chainId, lenders, prices, additionalYield
21464
21780
  try {
21465
21781
  const result = settled[i + 3];
21466
21782
  if (result.status === "rejected") {
21467
- warn(
21783
+ warn2(
21468
21784
  `[lending] API fetch failed for ${otherLenders[i]} on chain ${chainId}:`,
21469
21785
  result.reason?.message ?? result.reason
21470
21786
  );
@@ -21508,13 +21824,13 @@ var getLenderPublicDataViaApi = async (chainId, lenders, prices, additionalYield
21508
21824
  );
21509
21825
  for (const lk of dolomiteLenders) lenderData[lk] = converted;
21510
21826
  } catch (e) {
21511
- warn(
21827
+ warn2(
21512
21828
  `[lending] Dolomite subgraph convert failed on chain ${chainId}:`,
21513
21829
  e?.message ?? e
21514
21830
  );
21515
21831
  }
21516
21832
  } else if (dolomiteResult.status === "rejected") {
21517
- warn(
21833
+ warn2(
21518
21834
  `[lending] Dolomite subgraph fetch failed on chain ${chainId}:`,
21519
21835
  dolomiteResult.reason?.message ?? dolomiteResult.reason
21520
21836
  );
@@ -21522,7 +21838,7 @@ var getLenderPublicDataViaApi = async (chainId, lenders, prices, additionalYield
21522
21838
  }
21523
21839
  return lenderData;
21524
21840
  };
21525
- var warn2 = (...args) => {
21841
+ var warn3 = (...args) => {
21526
21842
  };
21527
21843
  function lenderApiOnly(lender, chainId) {
21528
21844
  if (lender === Lender.MORPHO_BLUE) {
@@ -21541,6 +21857,7 @@ function lenderApiOnly(lender, chainId) {
21541
21857
  if (chainId === "4114") return false;
21542
21858
  return true;
21543
21859
  }
21860
+ if (isMidnight(lender)) return true;
21544
21861
  return false;
21545
21862
  }
21546
21863
  function lenderApiWithOnChainFallback(lender, chainId) {
@@ -21568,7 +21885,7 @@ var getLenderPublicDataAll = async (chainId, lenders, prices, additionalYields,
21568
21885
  includeUnlistedMorphoMarkets
21569
21886
  );
21570
21887
  } catch (e) {
21571
- warn2(
21888
+ warn3(
21572
21889
  `[lending] API fetch failed for chain ${chainId}:`,
21573
21890
  e?.message ?? e
21574
21891
  );
@@ -21591,7 +21908,7 @@ var getLenderPublicDataAll = async (chainId, lenders, prices, additionalYields,
21591
21908
  tokenList
21592
21909
  );
21593
21910
  } catch (e) {
21594
- warn2(
21911
+ warn3(
21595
21912
  `[lending] on-chain fetch failed for chain ${chainId}:`,
21596
21913
  e?.message ?? e
21597
21914
  );
@@ -22231,6 +22548,28 @@ var buildDolomiteUserCall = async (chainId, _lender, account, accountNumbers) =>
22231
22548
  params: [{ owner: account, number }]
22232
22549
  }));
22233
22550
  };
22551
+ var midnightMarketCallCount = (collateralCount) => 1 + collateralCount;
22552
+ var buildMidnightUserCall = (chainId, _lender, account) => {
22553
+ const midnight = midnightConfig()?.[chainId]?.midnight;
22554
+ const markets = midnightMarketsByChain(chainId);
22555
+ if (!midnight || markets.length === 0) return [];
22556
+ const calls = [];
22557
+ for (const market of markets) {
22558
+ calls.push({
22559
+ address: midnight,
22560
+ name: "position",
22561
+ params: [market.marketId, account]
22562
+ });
22563
+ for (let index = 0; index < market.collateralParams.length; index++) {
22564
+ calls.push({
22565
+ address: midnight,
22566
+ name: "collateral",
22567
+ params: [market.marketId, account, BigInt(index)]
22568
+ });
22569
+ }
22570
+ }
22571
+ return calls;
22572
+ };
22234
22573
 
22235
22574
  // src/lending/user-data/fetch-balances/prepare.ts
22236
22575
  async function buildUserCall(chainId, lender, account, params, getClient) {
@@ -22246,6 +22585,7 @@ async function buildUserCall(chainId, lender, account, params, getClient) {
22246
22585
  params,
22247
22586
  getClient
22248
22587
  );
22588
+ if (isMidnight(lender)) return buildMidnightUserCall(chainId, lender, account);
22249
22589
  if (isCompoundV3Type(lender))
22250
22590
  return buildCompoundV3UserCall(chainId, lender, account);
22251
22591
  if (isEulerType(lender))
@@ -24474,6 +24814,119 @@ function normalizeUnderlying3(token) {
24474
24814
  const lower = token.toLowerCase();
24475
24815
  return Object.values(WETH_BY_CHAIN).includes(lower) ? zeroAddress : lower;
24476
24816
  }
24817
+ var MIDNIGHT_UNIT_DECIMALS = 18;
24818
+ function toBigInt10(v) {
24819
+ if (v === void 0 || v === null || v === "0x") return 0n;
24820
+ if (typeof v === "bigint") return v;
24821
+ try {
24822
+ return BigInt(v);
24823
+ } catch {
24824
+ return 0n;
24825
+ }
24826
+ }
24827
+ function readDebtUnits(positionResult) {
24828
+ if (Array.isArray(positionResult)) return toBigInt10(positionResult[4]);
24829
+ if (positionResult && typeof positionResult === "object")
24830
+ return toBigInt10(positionResult.debt);
24831
+ return 0n;
24832
+ }
24833
+ var getMidnightUserDataConverter = (_lender, chainId, account, meta) => {
24834
+ const markets = midnightMarketsByChain(chainId);
24835
+ const totalCalls = markets.reduce(
24836
+ (sum, m) => sum + midnightMarketCallCount(m.collateralParams.length),
24837
+ 0
24838
+ );
24839
+ return [
24840
+ (data) => {
24841
+ if (!data || data.length < totalCalls) return void 0;
24842
+ const out = {};
24843
+ let cursor = 0;
24844
+ for (const market of markets) {
24845
+ const positionResult = data[cursor];
24846
+ const collateralResults = market.collateralParams.map(
24847
+ (_c, i) => data[cursor + 1 + i]
24848
+ );
24849
+ cursor += midnightMarketCallCount(market.collateralParams.length);
24850
+ const lenderKey = midnightLenderKey(market.marketId);
24851
+ const metaMap = meta?.[lenderKey];
24852
+ if (!metaMap) continue;
24853
+ const loanAddr = market.loanToken.toLowerCase();
24854
+ const loanUid = createMarketUid(chainId, lenderKey, loanAddr);
24855
+ const loanMeta = metaMap[loanUid];
24856
+ const loanDisplayPrice = loanMeta ? getDisplayPrice(loanMeta) : 0;
24857
+ const loanOraclePrice = loanMeta ? getOraclePrice(loanMeta) : 0;
24858
+ const loanPriceHist = loanMeta?.price?.priceUsd24h ?? loanDisplayPrice;
24859
+ const debtUnits = readDebtUnits(positionResult);
24860
+ const debtStr = parseRawAmount(debtUnits.toString(), MIDNIGHT_UNIT_DECIMALS);
24861
+ const debtNum = Number(debtStr);
24862
+ const posData = {};
24863
+ let anyBalance = debtUnits > 0n;
24864
+ let depositsUSD24h = 0;
24865
+ posData[loanUid] = {
24866
+ marketUid: loanUid,
24867
+ underlying: loanAddr,
24868
+ deposits: "0",
24869
+ debt: debtStr,
24870
+ debtStable: "0",
24871
+ depositsUSD: 0,
24872
+ debtUSD: debtNum * loanDisplayPrice,
24873
+ debtStableUSD: 0,
24874
+ depositsUSDOracle: 0,
24875
+ debtUSDOracle: debtNum * loanOraclePrice,
24876
+ debtStableUSDOracle: 0,
24877
+ stableBorrowRate: "0",
24878
+ collateralEnabled: false,
24879
+ claimableRewards: 0
24880
+ };
24881
+ market.collateralParams.forEach((c, i) => {
24882
+ const collAmt = toBigInt10(collateralResults[i]);
24883
+ if (collAmt === 0n) return;
24884
+ anyBalance = true;
24885
+ const collAddr = c.token.toLowerCase();
24886
+ const collUid = createMarketUid(chainId, lenderKey, collAddr);
24887
+ const collMeta = metaMap[collUid];
24888
+ const collDec = collMeta?.asset?.decimals ?? c.decimals;
24889
+ const collDisplayPrice = collMeta ? getDisplayPrice(collMeta) : 0;
24890
+ const collOraclePrice = collMeta ? getOraclePrice(collMeta) : 0;
24891
+ const collPriceHist = collMeta?.price?.priceUsd24h ?? collDisplayPrice;
24892
+ const depositsStr = parseRawAmount(collAmt.toString(), collDec);
24893
+ const depositsNum = Number(depositsStr);
24894
+ depositsUSD24h += depositsNum * collPriceHist;
24895
+ posData[collUid] = {
24896
+ marketUid: collUid,
24897
+ underlying: collAddr,
24898
+ deposits: depositsStr,
24899
+ debt: "0",
24900
+ debtStable: "0",
24901
+ depositsUSD: depositsNum * collDisplayPrice,
24902
+ debtUSD: 0,
24903
+ debtStableUSD: 0,
24904
+ depositsUSDOracle: depositsNum * collOraclePrice,
24905
+ debtUSDOracle: 0,
24906
+ debtStableUSDOracle: 0,
24907
+ stableBorrowRate: "0",
24908
+ collateralEnabled: true,
24909
+ claimableRewards: 0
24910
+ };
24911
+ });
24912
+ if (!anyBalance) continue;
24913
+ const userData = createMultiAccountTypeUserState(
24914
+ {
24915
+ chainId,
24916
+ account,
24917
+ lendingPositions: { "0": posData },
24918
+ modes: { "0": 0 }
24919
+ },
24920
+ metaMap,
24921
+ { "0": { totalDeposits24h: depositsUSD24h, totalDebt24h: debtNum * loanPriceHist } }
24922
+ );
24923
+ if (userData && userData.data.length > 0) out[lenderKey] = userData;
24924
+ }
24925
+ return Object.keys(out).length > 0 ? out : void 0;
24926
+ },
24927
+ totalCalls
24928
+ ];
24929
+ };
24477
24930
 
24478
24931
  // src/lending/user-data/fetch-balances/parse.ts
24479
24932
  function getUserDataConverter(lender, chainId, account, params, meta) {
@@ -24495,6 +24948,8 @@ function getUserDataConverter(lender, chainId, account, params, meta) {
24495
24948
  params,
24496
24949
  meta
24497
24950
  );
24951
+ if (isMidnight(lender))
24952
+ return getMidnightUserDataConverter(lender, chainId, account, meta);
24498
24953
  if (isCompoundV3Type(lender))
24499
24954
  return getCompoundV3UserDataConverter(
24500
24955
  lender,
@@ -29249,6 +29704,7 @@ var getAbi2 = (lender) => {
29249
29704
  if (isCompoundV3(lender))
29250
29705
  return [...CometAbi, ...CometExtAbi, ...CometRewardsAbi];
29251
29706
  if (isMorphoType(lender)) return [...MorphoBlueAbi, ...MorphoLensAbi];
29707
+ if (isMidnight(lender)) return [...MidnightAbi];
29252
29708
  if (isInit(lender)) return InitLensAbi;
29253
29709
  if (isEulerType(lender)) return accountLensAbi;
29254
29710
  if (isCompoundV2Type(lender))
@@ -32436,8 +32892,8 @@ var TIMEOUT_MS = 8e3;
32436
32892
  var slisBnbFetcher = {
32437
32893
  label: "SLISBNB",
32438
32894
  fetch: async () => {
32439
- const nowSec = Math.floor(Date.now() / 1e3);
32440
- const url = `${HISTORY_URL}?name=slisBNBRate&cycle=1&startTime=${nowSec - LOOKBACK_SECONDS}&endTime=${nowSec}`;
32895
+ const nowSec2 = Math.floor(Date.now() / 1e3);
32896
+ const url = `${HISTORY_URL}?name=slisBNBRate&cycle=1&startTime=${nowSec2 - LOOKBACK_SECONDS}&endTime=${nowSec2}`;
32441
32897
  const controller = new AbortController();
32442
32898
  const timer = setTimeout(() => controller.abort(), TIMEOUT_MS);
32443
32899
  try {
@@ -32839,6 +33295,67 @@ var hastraPrimeFetcher = {
32839
33295
  return { [HASTRA_PRIME_KEY]: Math.max(0, apr) };
32840
33296
  }
32841
33297
  };
33298
+ var CHAIN_ID4 = "4663";
33299
+ var VAULT2 = "0xde770c84fe66e063336b31737cfe9790f18c4087";
33300
+ var SPARK_SAVINGS_USDG_KEY = "SPUSDG";
33301
+ var RAY3 = 10n ** 27n;
33302
+ var YEAR_SECONDS6 = 365 * 24 * 60 * 60;
33303
+ var WINDOW_BLOCKS3 = 400000n;
33304
+ var MAX_RPC_TRIES3 = 3;
33305
+ var CHI_ABI = [
33306
+ {
33307
+ name: "chi",
33308
+ type: "function",
33309
+ stateMutability: "view",
33310
+ inputs: [],
33311
+ outputs: [{ type: "uint256" }]
33312
+ }
33313
+ ];
33314
+ var readChiAt = (client, blockNumber) => client.readContract({
33315
+ address: VAULT2,
33316
+ abi: CHI_ABI,
33317
+ functionName: "chi",
33318
+ ...blockNumber !== void 0 ? { blockNumber } : {}
33319
+ });
33320
+ var computeApr4 = async () => {
33321
+ let lastErr;
33322
+ for (let rpcId = 0; rpcId < MAX_RPC_TRIES3; rpcId++) {
33323
+ try {
33324
+ const client = getEvmClient(CHAIN_ID4, rpcId);
33325
+ const head = await client.getBlockNumber();
33326
+ const pastBlock = head > WINDOW_BLOCKS3 ? head - WINDOW_BLOCKS3 : 0n;
33327
+ const [chiNow, chiThen, headBlock, thenBlock] = await Promise.all([
33328
+ readChiAt(client),
33329
+ readChiAt(client, pastBlock),
33330
+ client.getBlock({ blockNumber: head }),
33331
+ client.getBlock({ blockNumber: pastBlock })
33332
+ ]);
33333
+ if (chiNow < RAY3 || chiThen < RAY3 || chiNow < chiThen) {
33334
+ throw new Error(
33335
+ `non-archival or invalid chi (now=${chiNow}, then=${chiThen})`
33336
+ );
33337
+ }
33338
+ const elapsed = Number(headBlock.timestamp - thenBlock.timestamp);
33339
+ if (elapsed <= 0) throw new Error("non-positive elapsed window");
33340
+ const growth = Number(chiNow - chiThen) / Number(chiThen);
33341
+ const apr = growth * (YEAR_SECONDS6 / elapsed) * 100;
33342
+ if (!Number.isFinite(apr) || apr < 0) throw new Error(`bad apr ${apr}`);
33343
+ return apr;
33344
+ } catch (e) {
33345
+ lastErr = e;
33346
+ }
33347
+ }
33348
+ throw new Error(
33349
+ `spUSDG APR: no Robinhood RPC returned valid historical chi (${String(lastErr)})`
33350
+ );
33351
+ };
33352
+ var sparkSavingsUsdgFetcher = {
33353
+ label: "SPARK_SAVINGS_USDG",
33354
+ fetch: async () => {
33355
+ const apr = await computeApr4();
33356
+ return { [SPARK_SAVINGS_USDG_KEY]: apr };
33357
+ }
33358
+ };
32842
33359
 
32843
33360
  // src/yields/intrinsic/fetchers/lombard.ts
32844
33361
  var LBTC_APY_URL = "https://mainnet.prod.lombard.finance/api/v1/analytics/estimated-apy";
@@ -33035,6 +33552,7 @@ async function fetchIntrinsicYields() {
33035
33552
  psxdcFetcher,
33036
33553
  coreLstFetcher,
33037
33554
  hastraPrimeFetcher,
33555
+ sparkSavingsUsdgFetcher,
33038
33556
  lombardLbtcFetcher,
33039
33557
  lombardLbtcvFetcher,
33040
33558
  accountableFetcher,
@@ -38496,14 +39014,14 @@ var fetchEulerEarnVaults = async (chainId, prices = {}, tokenList = {}, multical
38496
39014
  ).catch(() => void 0);
38497
39015
  return isNonEmpty(fromSubgraph) ? fromSubgraph : fromApi ?? {};
38498
39016
  };
38499
- var CHAIN_ID4 = "1";
39017
+ var CHAIN_ID5 = "1";
38500
39018
  var SWBTC = "0x8db2350d78abc13f5673a411d4700bcf87864dde";
38501
39019
  var ONE_E8 = 10n ** 8n;
38502
- var YEAR_SECONDS6 = 365 * 24 * 60 * 60;
39020
+ var YEAR_SECONDS7 = 365 * 24 * 60 * 60;
38503
39021
  var WINDOW_SECONDS4 = 7 * 24 * 60 * 60;
38504
39022
  var BLOCK_TIME_SECONDS3 = 12;
38505
- var WINDOW_BLOCKS3 = BigInt(Math.floor(WINDOW_SECONDS4 / BLOCK_TIME_SECONDS3));
38506
- var MAX_RPC_TRIES3 = 5;
39023
+ var WINDOW_BLOCKS4 = BigInt(Math.floor(WINDOW_SECONDS4 / BLOCK_TIME_SECONDS3));
39024
+ var MAX_RPC_TRIES4 = 5;
38507
39025
  var CONVERT_TO_ASSETS_ABI3 = [
38508
39026
  {
38509
39027
  name: "convertToAssets",
@@ -38520,13 +39038,13 @@ var readRateAt3 = (client, blockNumber) => client.readContract({
38520
39038
  args: [ONE_E8],
38521
39039
  ...blockNumber !== void 0 ? { blockNumber } : {}
38522
39040
  });
38523
- var computeApr4 = async () => {
39041
+ var computeApr5 = async () => {
38524
39042
  let lastErr;
38525
- for (let rpcId = 0; rpcId < MAX_RPC_TRIES3; rpcId++) {
39043
+ for (let rpcId = 0; rpcId < MAX_RPC_TRIES4; rpcId++) {
38526
39044
  try {
38527
- const client = getEvmClient(CHAIN_ID4, rpcId);
39045
+ const client = getEvmClient(CHAIN_ID5, rpcId);
38528
39046
  const head = await client.getBlockNumber();
38529
- const pastBlock = head > WINDOW_BLOCKS3 ? head - WINDOW_BLOCKS3 : 0n;
39047
+ const pastBlock = head > WINDOW_BLOCKS4 ? head - WINDOW_BLOCKS4 : 0n;
38530
39048
  const [rateNow, rateThen, headBlock, thenBlock] = await Promise.all([
38531
39049
  readRateAt3(client),
38532
39050
  readRateAt3(client, pastBlock),
@@ -38541,7 +39059,7 @@ var computeApr4 = async () => {
38541
39059
  const elapsed = Number(headBlock.timestamp - thenBlock.timestamp);
38542
39060
  if (elapsed <= 0) throw new Error(`bad elapsed ${elapsed}`);
38543
39061
  const growth = Number(rateNow) / Number(rateThen) - 1;
38544
- const apr = growth * (YEAR_SECONDS6 / elapsed) * 100;
39062
+ const apr = growth * (YEAR_SECONDS7 / elapsed) * 100;
38545
39063
  if (!Number.isFinite(apr) || apr < 0) throw new Error(`bad apr ${apr}`);
38546
39064
  return apr;
38547
39065
  } catch (e) {
@@ -38556,20 +39074,20 @@ var swBtcFetcher = {
38556
39074
  label: "SWBTC",
38557
39075
  fetch: async () => {
38558
39076
  try {
38559
- return { SWBTC: await computeApr4() };
39077
+ return { SWBTC: await computeApr5() };
38560
39078
  } catch {
38561
39079
  return { SWBTC: 0 };
38562
39080
  }
38563
39081
  }
38564
39082
  };
38565
- var CHAIN_ID5 = "42220";
39083
+ var CHAIN_ID6 = "42220";
38566
39084
  var MANAGER = "0x0239b96d10a434a56cc9e09383077a0490cf9398";
38567
39085
  var ONE_E184 = 10n ** 18n;
38568
- var YEAR_SECONDS7 = 365 * 24 * 60 * 60;
39086
+ var YEAR_SECONDS8 = 365 * 24 * 60 * 60;
38569
39087
  var WINDOW_SECONDS5 = 7 * 24 * 60 * 60;
38570
39088
  var BLOCK_TIME_SECONDS4 = 1;
38571
- var WINDOW_BLOCKS4 = BigInt(Math.floor(WINDOW_SECONDS5 / BLOCK_TIME_SECONDS4));
38572
- var MAX_RPC_TRIES4 = 5;
39089
+ var WINDOW_BLOCKS5 = BigInt(Math.floor(WINDOW_SECONDS5 / BLOCK_TIME_SECONDS4));
39090
+ var MAX_RPC_TRIES5 = 5;
38573
39091
  var TO_CELO_ABI = [
38574
39092
  {
38575
39093
  name: "toCelo",
@@ -38586,13 +39104,13 @@ var readRateAt4 = (client, blockNumber) => client.readContract({
38586
39104
  args: [ONE_E184],
38587
39105
  ...blockNumber !== void 0 ? { blockNumber } : {}
38588
39106
  });
38589
- var computeApr5 = async () => {
39107
+ var computeApr6 = async () => {
38590
39108
  let lastErr;
38591
- for (let rpcId = 0; rpcId < MAX_RPC_TRIES4; rpcId++) {
39109
+ for (let rpcId = 0; rpcId < MAX_RPC_TRIES5; rpcId++) {
38592
39110
  try {
38593
- const client = getEvmClient(CHAIN_ID5, rpcId);
39111
+ const client = getEvmClient(CHAIN_ID6, rpcId);
38594
39112
  const head = await client.getBlockNumber();
38595
- const pastBlock = head > WINDOW_BLOCKS4 ? head - WINDOW_BLOCKS4 : 0n;
39113
+ const pastBlock = head > WINDOW_BLOCKS5 ? head - WINDOW_BLOCKS5 : 0n;
38596
39114
  const [rateNow, rateThen, headBlock, thenBlock] = await Promise.all([
38597
39115
  readRateAt4(client),
38598
39116
  readRateAt4(client, pastBlock),
@@ -38607,7 +39125,7 @@ var computeApr5 = async () => {
38607
39125
  const elapsed = Number(headBlock.timestamp - thenBlock.timestamp);
38608
39126
  if (elapsed <= 0) throw new Error("non-positive elapsed window");
38609
39127
  const growth = Number(rateNow - rateThen) / Number(rateThen);
38610
- const apr = growth * (YEAR_SECONDS7 / elapsed) * 100;
39128
+ const apr = growth * (YEAR_SECONDS8 / elapsed) * 100;
38611
39129
  if (!Number.isFinite(apr) || apr < 0) throw new Error(`bad apr ${apr}`);
38612
39130
  return apr;
38613
39131
  } catch (e) {
@@ -38621,18 +39139,18 @@ var computeApr5 = async () => {
38621
39139
  var stceloFetcher = {
38622
39140
  label: "STCELO",
38623
39141
  fetch: async () => {
38624
- const apr = await computeApr5();
39142
+ const apr = await computeApr6();
38625
39143
  return { STCELO: apr };
38626
39144
  }
38627
39145
  };
38628
- var CHAIN_ID6 = "1284";
39146
+ var CHAIN_ID7 = "1284";
38629
39147
  var STDOT = "0xbc7e02c4178a7df7d3e564323a5c359dc96c4db4";
38630
39148
  var ONE_E185 = 10n ** 18n;
38631
- var YEAR_SECONDS8 = 365 * 24 * 60 * 60;
39149
+ var YEAR_SECONDS9 = 365 * 24 * 60 * 60;
38632
39150
  var WINDOW_SECONDS6 = 180 * 24 * 60 * 60;
38633
39151
  var BLOCK_TIME_SECONDS5 = 6;
38634
- var WINDOW_BLOCKS5 = BigInt(Math.floor(WINDOW_SECONDS6 / BLOCK_TIME_SECONDS5));
38635
- var MAX_RPC_TRIES5 = 5;
39152
+ var WINDOW_BLOCKS6 = BigInt(Math.floor(WINDOW_SECONDS6 / BLOCK_TIME_SECONDS5));
39153
+ var MAX_RPC_TRIES6 = 5;
38636
39154
  var POOLED_BY_SHARES_ABI = [
38637
39155
  {
38638
39156
  name: "getPooledTokenByShares",
@@ -38649,13 +39167,13 @@ var readRateAt5 = (client, blockNumber) => client.readContract({
38649
39167
  args: [ONE_E185],
38650
39168
  ...blockNumber !== void 0 ? { blockNumber } : {}
38651
39169
  });
38652
- var computeApr6 = async () => {
39170
+ var computeApr7 = async () => {
38653
39171
  let lastErr;
38654
- for (let rpcId = 0; rpcId < MAX_RPC_TRIES5; rpcId++) {
39172
+ for (let rpcId = 0; rpcId < MAX_RPC_TRIES6; rpcId++) {
38655
39173
  try {
38656
- const client = getEvmClient(CHAIN_ID6, rpcId);
39174
+ const client = getEvmClient(CHAIN_ID7, rpcId);
38657
39175
  const head = await client.getBlockNumber();
38658
- const pastBlock = head > WINDOW_BLOCKS5 ? head - WINDOW_BLOCKS5 : 0n;
39176
+ const pastBlock = head > WINDOW_BLOCKS6 ? head - WINDOW_BLOCKS6 : 0n;
38659
39177
  const [rateNow, rateThen, headBlock, thenBlock] = await Promise.all([
38660
39178
  readRateAt5(client),
38661
39179
  readRateAt5(client, pastBlock),
@@ -38670,7 +39188,7 @@ var computeApr6 = async () => {
38670
39188
  const elapsed = Number(headBlock.timestamp - thenBlock.timestamp);
38671
39189
  if (elapsed <= 0) throw new Error("non-positive elapsed window");
38672
39190
  const growth = Number(rateNow - rateThen) / Number(rateThen);
38673
- const apr = growth * (YEAR_SECONDS8 / elapsed) * 100;
39191
+ const apr = growth * (YEAR_SECONDS9 / elapsed) * 100;
38674
39192
  if (!Number.isFinite(apr) || apr < 0) throw new Error(`bad apr ${apr}`);
38675
39193
  return apr;
38676
39194
  } catch (e) {
@@ -38684,7 +39202,7 @@ var computeApr6 = async () => {
38684
39202
  var stDotFetcher = {
38685
39203
  label: "STDOT",
38686
39204
  fetch: async () => {
38687
- const apr = await computeApr6();
39205
+ const apr = await computeApr7();
38688
39206
  return { STDOT: apr };
38689
39207
  }
38690
39208
  };
@@ -40112,7 +40630,7 @@ var Multicall3BalanceAbi = [
40112
40630
  outputs: [{ type: "uint256" }]
40113
40631
  }
40114
40632
  ];
40115
- var toBigInt10 = (v) => {
40633
+ var toBigInt11 = (v) => {
40116
40634
  if (v === void 0 || v === null) return void 0;
40117
40635
  if (typeof v === "bigint") return v;
40118
40636
  if (typeof v === "number") return BigInt(v);
@@ -40136,12 +40654,12 @@ var readerBeetsStS = (entry) => ({
40136
40654
  ],
40137
40655
  abis: [TotalSupplyAbi, BeetsStSAbi, BeetsStSAbi],
40138
40656
  parse: ([supply, rate, pool]) => {
40139
- const totalSupply = toBigInt10(supply);
40140
- const exchangeRate = toBigInt10(rate);
40657
+ const totalSupply = toBigInt11(supply);
40658
+ const exchangeRate = toBigInt11(rate);
40141
40659
  if (totalSupply === void 0 || exchangeRate === void 0) {
40142
40660
  return void 0;
40143
40661
  }
40144
- const liquidity = toBigInt10(pool);
40662
+ const liquidity = toBigInt11(pool);
40145
40663
  return {
40146
40664
  totalAssets: totalSupply * exchangeRate / ONE_E186,
40147
40665
  totalSupply,
@@ -40182,12 +40700,12 @@ var readerBenqiSavax = (entry) => ({
40182
40700
  ],
40183
40701
  abis: [TotalSupplyAbi, BenqiSavaxAbi, BenqiSavaxAbi],
40184
40702
  parse: ([supply, rate, totalPooled]) => {
40185
- const totalSupply = toBigInt10(supply);
40186
- const exchangeRate = toBigInt10(rate);
40703
+ const totalSupply = toBigInt11(supply);
40704
+ const exchangeRate = toBigInt11(rate);
40187
40705
  if (totalSupply === void 0 || exchangeRate === void 0) {
40188
40706
  return void 0;
40189
40707
  }
40190
- const totalAssets = toBigInt10(totalPooled) ?? totalSupply * exchangeRate / ONE_E186;
40708
+ const totalAssets = toBigInt11(totalPooled) ?? totalSupply * exchangeRate / ONE_E186;
40191
40709
  return {
40192
40710
  totalAssets,
40193
40711
  totalSupply,
@@ -40201,7 +40719,7 @@ var readerBgtWrapper1to1 = (entry) => ({
40201
40719
  calls: [{ address: entry.address, name: "totalSupply", params: [] }],
40202
40720
  abis: [TotalSupplyAbi],
40203
40721
  parse: ([supply]) => {
40204
- const totalSupply = toBigInt10(supply);
40722
+ const totalSupply = toBigInt11(supply);
40205
40723
  if (totalSupply === void 0) return void 0;
40206
40724
  return {
40207
40725
  totalAssets: totalSupply,
@@ -40230,8 +40748,8 @@ var readerDineroBeraEth = (entry) => ({
40230
40748
  ],
40231
40749
  abis: [TotalSupplyAbi, DineroBeraEthAbi],
40232
40750
  parse: ([supply, rate]) => {
40233
- const totalSupply = toBigInt10(supply);
40234
- const exchangeRate = toBigInt10(rate);
40751
+ const totalSupply = toBigInt11(supply);
40752
+ const exchangeRate = toBigInt11(rate);
40235
40753
  if (totalSupply === void 0 || exchangeRate === void 0) {
40236
40754
  return void 0;
40237
40755
  }
@@ -40252,9 +40770,9 @@ var readerErc4626 = (entry) => ({
40252
40770
  ],
40253
40771
  abis: [Erc4626ReadAbi, TotalSupplyAbi, Erc4626ReadAbi],
40254
40772
  parse: ([assets, supply, rate]) => {
40255
- const totalAssets = toBigInt10(assets);
40256
- const totalSupply = toBigInt10(supply);
40257
- const exchangeRate = toBigInt10(rate);
40773
+ const totalAssets = toBigInt11(assets);
40774
+ const totalSupply = toBigInt11(supply);
40775
+ const exchangeRate = toBigInt11(rate);
40258
40776
  if (totalAssets === void 0 || totalSupply === void 0 || exchangeRate === void 0) {
40259
40777
  return void 0;
40260
40778
  }
@@ -40269,9 +40787,9 @@ var readerErc4626PreviewRedeem = (entry) => ({
40269
40787
  ],
40270
40788
  abis: [Erc4626PreviewRedeemAbi, TotalSupplyAbi, Erc4626PreviewRedeemAbi],
40271
40789
  parse: ([assets, supply, rate]) => {
40272
- const totalAssets = toBigInt10(assets);
40273
- const totalSupply = toBigInt10(supply);
40274
- const exchangeRate = toBigInt10(rate);
40790
+ const totalAssets = toBigInt11(assets);
40791
+ const totalSupply = toBigInt11(supply);
40792
+ const exchangeRate = toBigInt11(rate);
40275
40793
  if (totalAssets === void 0 || totalSupply === void 0 || exchangeRate === void 0) {
40276
40794
  return void 0;
40277
40795
  }
@@ -40331,15 +40849,15 @@ var readerEtherFiWeEth = (entry) => {
40331
40849
  calls,
40332
40850
  abis,
40333
40851
  parse: (slice) => {
40334
- const totalSupply = toBigInt10(slice[0]);
40335
- const exchangeRate = toBigInt10(slice[1]);
40852
+ const totalSupply = toBigInt11(slice[0]);
40853
+ const exchangeRate = toBigInt11(slice[1]);
40336
40854
  if (totalSupply === void 0 || exchangeRate === void 0) {
40337
40855
  return void 0;
40338
40856
  }
40339
40857
  let liquidity;
40340
40858
  if (lp) {
40341
- const lpBalance = toBigInt10(slice[2]);
40342
- const locked = toBigInt10(slice[3]);
40859
+ const lpBalance = toBigInt11(slice[2]);
40860
+ const locked = toBigInt11(slice[3]);
40343
40861
  if (lpBalance !== void 0 && locked !== void 0) {
40344
40862
  liquidity = lpBalance > locked ? lpBalance - locked : 0n;
40345
40863
  }
@@ -40373,7 +40891,7 @@ var readerHyperbeatBeHype = (entry) => {
40373
40891
  calls: [{ address: entry.address, name: "totalSupply", params: [] }],
40374
40892
  abis: [TotalSupplyAbi],
40375
40893
  parse: ([supply]) => {
40376
- const totalSupply = toBigInt10(supply);
40894
+ const totalSupply = toBigInt11(supply);
40377
40895
  if (totalSupply === void 0) return void 0;
40378
40896
  return {
40379
40897
  totalAssets: totalSupply,
@@ -40390,8 +40908,8 @@ var readerHyperbeatBeHype = (entry) => {
40390
40908
  ],
40391
40909
  abis: [TotalSupplyAbi, HyperbeatStakingCoreAbi],
40392
40910
  parse: ([supply, rate]) => {
40393
- const totalSupply = toBigInt10(supply);
40394
- const exchangeRate = toBigInt10(rate);
40911
+ const totalSupply = toBigInt11(supply);
40912
+ const exchangeRate = toBigInt11(rate);
40395
40913
  if (totalSupply === void 0 || exchangeRate === void 0) {
40396
40914
  return void 0;
40397
40915
  }
@@ -40423,7 +40941,7 @@ var readerKelpRsEth = (entry) => {
40423
40941
  calls: [{ address: entry.address, name: "totalSupply", params: [] }],
40424
40942
  abis: [TotalSupplyAbi],
40425
40943
  parse: ([supply]) => {
40426
- const totalSupply = toBigInt10(supply);
40944
+ const totalSupply = toBigInt11(supply);
40427
40945
  if (totalSupply === void 0) return void 0;
40428
40946
  return {
40429
40947
  totalAssets: totalSupply,
@@ -40440,8 +40958,8 @@ var readerKelpRsEth = (entry) => {
40440
40958
  ],
40441
40959
  abis: [TotalSupplyAbi, KelpLrtOracleAbi],
40442
40960
  parse: ([supply, rate]) => {
40443
- const totalSupply = toBigInt10(supply);
40444
- const exchangeRate = toBigInt10(rate);
40961
+ const totalSupply = toBigInt11(supply);
40962
+ const exchangeRate = toBigInt11(rate);
40445
40963
  if (totalSupply === void 0 || exchangeRate === void 0) {
40446
40964
  return void 0;
40447
40965
  }
@@ -40473,7 +40991,7 @@ var readerKinetiqKHype = (entry) => {
40473
40991
  calls: [{ address: entry.address, name: "totalSupply", params: [] }],
40474
40992
  abis: [TotalSupplyAbi],
40475
40993
  parse: ([supply]) => {
40476
- const totalSupply = toBigInt10(supply);
40994
+ const totalSupply = toBigInt11(supply);
40477
40995
  if (totalSupply === void 0) return void 0;
40478
40996
  return {
40479
40997
  totalAssets: totalSupply,
@@ -40490,8 +41008,8 @@ var readerKinetiqKHype = (entry) => {
40490
41008
  ],
40491
41009
  abis: [TotalSupplyAbi, KinetiqStakingAccountantAbi],
40492
41010
  parse: ([supply, rate]) => {
40493
- const totalSupply = toBigInt10(supply);
40494
- const exchangeRate = toBigInt10(rate);
41011
+ const totalSupply = toBigInt11(supply);
41012
+ const exchangeRate = toBigInt11(rate);
40495
41013
  if (totalSupply === void 0 || exchangeRate === void 0) {
40496
41014
  return void 0;
40497
41015
  }
@@ -40531,12 +41049,12 @@ var readerLairStKaia = (entry) => ({
40531
41049
  ],
40532
41050
  abis: [TotalSupplyAbi, LairStKaiaAbi, LairStKaiaAbi],
40533
41051
  parse: ([supply, rate, totalStaking]) => {
40534
- const totalSupply = toBigInt10(supply);
40535
- const exchangeRate = toBigInt10(rate);
41052
+ const totalSupply = toBigInt11(supply);
41053
+ const exchangeRate = toBigInt11(rate);
40536
41054
  if (totalSupply === void 0 || exchangeRate === void 0) {
40537
41055
  return void 0;
40538
41056
  }
40539
- const totalAssets = toBigInt10(totalStaking) ?? totalSupply * exchangeRate / ONE_E186;
41057
+ const totalAssets = toBigInt11(totalStaking) ?? totalSupply * exchangeRate / ONE_E186;
40540
41058
  return {
40541
41059
  totalAssets,
40542
41060
  totalSupply,
@@ -40564,8 +41082,8 @@ var readerLidoWstEth = (entry) => ({
40564
41082
  ],
40565
41083
  abis: [TotalSupplyAbi, LidoWstEthAbi],
40566
41084
  parse: ([supply, rate]) => {
40567
- const totalSupply = toBigInt10(supply);
40568
- const exchangeRate = toBigInt10(rate);
41085
+ const totalSupply = toBigInt11(supply);
41086
+ const exchangeRate = toBigInt11(rate);
40569
41087
  if (totalSupply === void 0 || exchangeRate === void 0) {
40570
41088
  return void 0;
40571
41089
  }
@@ -40603,7 +41121,7 @@ var readerListaSlisBnb = (entry) => {
40603
41121
  calls: [{ address: entry.address, name: "totalSupply", params: [] }],
40604
41122
  abis: [TotalSupplyAbi],
40605
41123
  parse: ([supply]) => {
40606
- const totalSupply = toBigInt10(supply);
41124
+ const totalSupply = toBigInt11(supply);
40607
41125
  if (totalSupply === void 0) return void 0;
40608
41126
  return {
40609
41127
  totalAssets: totalSupply,
@@ -40621,12 +41139,12 @@ var readerListaSlisBnb = (entry) => {
40621
41139
  ],
40622
41140
  abis: [TotalSupplyAbi, ListaStakeManagerReadAbi, ListaStakeManagerReadAbi],
40623
41141
  parse: ([supply, rate, pooled]) => {
40624
- const totalSupply = toBigInt10(supply);
40625
- const exchangeRate = toBigInt10(rate);
41142
+ const totalSupply = toBigInt11(supply);
41143
+ const exchangeRate = toBigInt11(rate);
40626
41144
  if (totalSupply === void 0 || exchangeRate === void 0) {
40627
41145
  return void 0;
40628
41146
  }
40629
- const pooledBnb = toBigInt10(pooled);
41147
+ const pooledBnb = toBigInt11(pooled);
40630
41148
  const totalAssets = pooledBnb ?? totalSupply * exchangeRate / ONE_E186;
40631
41149
  return { totalAssets, totalSupply, exchangeRate };
40632
41150
  }
@@ -40652,7 +41170,7 @@ var readerMantleMEth = (entry) => {
40652
41170
  calls: [{ address: entry.address, name: "totalSupply", params: [] }],
40653
41171
  abis: [TotalSupplyAbi],
40654
41172
  parse: ([supply]) => {
40655
- const totalSupply = toBigInt10(supply);
41173
+ const totalSupply = toBigInt11(supply);
40656
41174
  if (totalSupply === void 0) return void 0;
40657
41175
  return {
40658
41176
  totalAssets: totalSupply,
@@ -40669,8 +41187,8 @@ var readerMantleMEth = (entry) => {
40669
41187
  ],
40670
41188
  abis: [TotalSupplyAbi, MantleStakingAbi],
40671
41189
  parse: ([supply, rate]) => {
40672
- const totalSupply = toBigInt10(supply);
40673
- const exchangeRate = toBigInt10(rate);
41190
+ const totalSupply = toBigInt11(supply);
41191
+ const exchangeRate = toBigInt11(rate);
40674
41192
  if (totalSupply === void 0 || exchangeRate === void 0) {
40675
41193
  return void 0;
40676
41194
  }
@@ -40691,7 +41209,7 @@ var readerOffChain = (entry) => {
40691
41209
  calls: [{ address: entry.address, name: "totalSupply", params: [] }],
40692
41210
  abis: [TotalSupplyAbi],
40693
41211
  parse: ([supply]) => {
40694
- const totalSupply = toBigInt10(supply);
41212
+ const totalSupply = toBigInt11(supply);
40695
41213
  if (totalSupply === void 0) return void 0;
40696
41214
  return {
40697
41215
  totalAssets: rescaleDecimals(totalSupply, shareDec, underlyingDec),
@@ -40725,7 +41243,7 @@ var readerRenzoEzEth = (entry) => {
40725
41243
  calls: [{ address: entry.address, name: "totalSupply", params: [] }],
40726
41244
  abis: [TotalSupplyAbi],
40727
41245
  parse: ([supply]) => {
40728
- const totalSupply = toBigInt10(supply);
41246
+ const totalSupply = toBigInt11(supply);
40729
41247
  if (totalSupply === void 0) return void 0;
40730
41248
  return {
40731
41249
  totalAssets: totalSupply,
@@ -40742,9 +41260,9 @@ var readerRenzoEzEth = (entry) => {
40742
41260
  ],
40743
41261
  abis: [TotalSupplyAbi, RenzoRestakeManagerAbi],
40744
41262
  parse: ([supply, tvls]) => {
40745
- const totalSupply = toBigInt10(supply);
41263
+ const totalSupply = toBigInt11(supply);
40746
41264
  if (totalSupply === void 0 || totalSupply === 0n) return void 0;
40747
- const totalTvl = Array.isArray(tvls) && tvls.length >= 3 ? toBigInt10(tvls[2]) : void 0;
41265
+ const totalTvl = Array.isArray(tvls) && tvls.length >= 3 ? toBigInt11(tvls[2]) : void 0;
40748
41266
  if (totalTvl === void 0) return void 0;
40749
41267
  return {
40750
41268
  totalAssets: totalTvl,
@@ -40798,12 +41316,12 @@ var readerRocketReth = (entry) => {
40798
41316
  calls,
40799
41317
  abis,
40800
41318
  parse: (slice) => {
40801
- const totalSupply = toBigInt10(slice[0]);
40802
- const exchangeRate = toBigInt10(slice[1]);
41319
+ const totalSupply = toBigInt11(slice[0]);
41320
+ const exchangeRate = toBigInt11(slice[1]);
40803
41321
  if (totalSupply === void 0 || exchangeRate === void 0) {
40804
41322
  return void 0;
40805
41323
  }
40806
- const liquidity = depositPool ? toBigInt10(slice[2]) : void 0;
41324
+ const liquidity = depositPool ? toBigInt11(slice[2]) : void 0;
40807
41325
  return {
40808
41326
  totalAssets: totalSupply * exchangeRate / ONE_E186,
40809
41327
  totalSupply,
@@ -40842,7 +41360,7 @@ var readerStaderEthx = (entry) => {
40842
41360
  calls: [{ address: entry.address, name: "totalSupply", params: [] }],
40843
41361
  abis: [TotalSupplyAbi],
40844
41362
  parse: ([supply]) => {
40845
- const totalSupply = toBigInt10(supply);
41363
+ const totalSupply = toBigInt11(supply);
40846
41364
  if (totalSupply === void 0) return void 0;
40847
41365
  return {
40848
41366
  totalAssets: totalSupply,
@@ -40859,8 +41377,8 @@ var readerStaderEthx = (entry) => {
40859
41377
  ],
40860
41378
  abis: [TotalSupplyAbi, StaderEthxAbi],
40861
41379
  parse: ([supply, rate]) => {
40862
- const totalSupply = toBigInt10(supply);
40863
- const exchangeRate = toBigInt10(rate);
41380
+ const totalSupply = toBigInt11(supply);
41381
+ const exchangeRate = toBigInt11(rate);
40864
41382
  if (totalSupply === void 0 || exchangeRate === void 0) {
40865
41383
  return void 0;
40866
41384
  }
@@ -40888,10 +41406,10 @@ var readerStaderMaticX = (entry) => {
40888
41406
  ],
40889
41407
  abis: [TotalSupplyAbi, StaderMaticXAbi],
40890
41408
  parse: ([supply, tup]) => {
40891
- const totalSupply = toBigInt10(supply);
41409
+ const totalSupply = toBigInt11(supply);
40892
41410
  if (!Array.isArray(tup) || tup.length < 3) return void 0;
40893
- const amountInMatic = toBigInt10(tup[0]);
40894
- const totalPooledMatic = toBigInt10(tup[2]);
41411
+ const amountInMatic = toBigInt11(tup[0]);
41412
+ const totalPooledMatic = toBigInt11(tup[2]);
40895
41413
  if (totalSupply === void 0 || amountInMatic === void 0) {
40896
41414
  return void 0;
40897
41415
  }
@@ -40924,7 +41442,7 @@ var readerStakeWiseOsEth = (entry) => {
40924
41442
  calls: [{ address: entry.address, name: "totalSupply", params: [] }],
40925
41443
  abis: [TotalSupplyAbi],
40926
41444
  parse: ([supply]) => {
40927
- const totalSupply = toBigInt10(supply);
41445
+ const totalSupply = toBigInt11(supply);
40928
41446
  if (totalSupply === void 0) return void 0;
40929
41447
  return {
40930
41448
  totalAssets: totalSupply,
@@ -40941,8 +41459,8 @@ var readerStakeWiseOsEth = (entry) => {
40941
41459
  ],
40942
41460
  abis: [TotalSupplyAbi, StakeWiseOsTokenAbi],
40943
41461
  parse: ([supply, rate]) => {
40944
- const totalSupply = toBigInt10(supply);
40945
- const exchangeRate = toBigInt10(rate);
41462
+ const totalSupply = toBigInt11(supply);
41463
+ const exchangeRate = toBigInt11(rate);
40946
41464
  if (totalSupply === void 0 || exchangeRate === void 0) {
40947
41465
  return void 0;
40948
41466
  }
@@ -40974,7 +41492,7 @@ var readerStCelo = (entry) => {
40974
41492
  calls: [{ address: entry.address, name: "totalSupply", params: [] }],
40975
41493
  abis: [TotalSupplyAbi],
40976
41494
  parse: ([supply]) => {
40977
- const totalSupply = toBigInt10(supply);
41495
+ const totalSupply = toBigInt11(supply);
40978
41496
  if (totalSupply === void 0) return void 0;
40979
41497
  return {
40980
41498
  totalAssets: totalSupply,
@@ -40991,8 +41509,8 @@ var readerStCelo = (entry) => {
40991
41509
  ],
40992
41510
  abis: [TotalSupplyAbi, StCeloManagerAbi],
40993
41511
  parse: ([supply, rate]) => {
40994
- const totalSupply = toBigInt10(supply);
40995
- const exchangeRate = toBigInt10(rate);
41512
+ const totalSupply = toBigInt11(supply);
41513
+ const exchangeRate = toBigInt11(rate);
40996
41514
  if (totalSupply === void 0 || exchangeRate === void 0) {
40997
41515
  return void 0;
40998
41516
  }
@@ -41024,8 +41542,8 @@ var readerSwellGetRate = (entry) => ({
41024
41542
  ],
41025
41543
  abis: [TotalSupplyAbi, SwellGetRateAbi],
41026
41544
  parse: ([supply, rate]) => {
41027
- const totalSupply = toBigInt10(supply);
41028
- const exchangeRate = toBigInt10(rate);
41545
+ const totalSupply = toBigInt11(supply);
41546
+ const exchangeRate = toBigInt11(rate);
41029
41547
  if (totalSupply === void 0 || exchangeRate === void 0) {
41030
41548
  return void 0;
41031
41549
  }
@@ -41056,7 +41574,7 @@ var readerValantisWstHype = (entry) => {
41056
41574
  calls: [{ address: entry.address, name: "totalSupply", params: [] }],
41057
41575
  abis: [TotalSupplyAbi],
41058
41576
  parse: ([supply]) => {
41059
- const totalSupply = toBigInt10(supply);
41577
+ const totalSupply = toBigInt11(supply);
41060
41578
  if (totalSupply === void 0) return void 0;
41061
41579
  return {
41062
41580
  totalAssets: totalSupply,
@@ -41073,8 +41591,8 @@ var readerValantisWstHype = (entry) => {
41073
41591
  ],
41074
41592
  abis: [TotalSupplyAbi, ValantisStHypeAbi],
41075
41593
  parse: ([supply, rate]) => {
41076
- const totalSupply = toBigInt10(supply);
41077
- const exchangeRate = toBigInt10(rate);
41594
+ const totalSupply = toBigInt11(supply);
41595
+ const exchangeRate = toBigInt11(rate);
41078
41596
  if (totalSupply === void 0 || exchangeRate === void 0) {
41079
41597
  return void 0;
41080
41598
  }
@@ -41108,7 +41626,7 @@ var readerVedaAccountant = (entry) => {
41108
41626
  calls: [{ address: entry.address, name: "totalSupply", params: [] }],
41109
41627
  abis: [TotalSupplyAbi],
41110
41628
  parse: ([supply]) => {
41111
- const totalSupply = toBigInt10(supply);
41629
+ const totalSupply = toBigInt11(supply);
41112
41630
  if (totalSupply === void 0) return void 0;
41113
41631
  return {
41114
41632
  totalAssets: rescaleDecimals(totalSupply, shareDec, underlyingDec),
@@ -41126,8 +41644,8 @@ var readerVedaAccountant = (entry) => {
41126
41644
  ],
41127
41645
  abis: [TotalSupplyAbi, VedaAccountantGetRateAbi],
41128
41646
  parse: ([supply, rate]) => {
41129
- const totalSupply = toBigInt10(supply);
41130
- const rawRate = toBigInt10(rate);
41647
+ const totalSupply = toBigInt11(supply);
41648
+ const rawRate = toBigInt11(rate);
41131
41649
  if (totalSupply === void 0 || rawRate === void 0) return void 0;
41132
41650
  const exchangeRate = rawRate * scale;
41133
41651
  return {
@@ -41162,8 +41680,8 @@ var readerAnkrRatio = (entry) => ({
41162
41680
  ],
41163
41681
  abis: [TotalSupplyAbi, AnkrRatioAbi],
41164
41682
  parse: ([supply, ratio]) => {
41165
- const totalSupply = toBigInt10(supply);
41166
- const r = toBigInt10(ratio);
41683
+ const totalSupply = toBigInt11(supply);
41684
+ const r = toBigInt11(ratio);
41167
41685
  if (totalSupply === void 0 || r === void 0 || r === 0n) {
41168
41686
  return void 0;
41169
41687
  }
@@ -41206,8 +41724,8 @@ var readerCoreEarnRate = (entry) => {
41206
41724
  ],
41207
41725
  abis: [CoreEarnRateAbi, TotalSupplyAbi],
41208
41726
  parse: ([rate, supply]) => {
41209
- const r = toBigInt10(rate);
41210
- const totalSupply = toBigInt10(supply);
41727
+ const r = toBigInt11(rate);
41728
+ const totalSupply = toBigInt11(supply);
41211
41729
  if (r === void 0 || r === 0n || totalSupply === void 0) {
41212
41730
  return void 0;
41213
41731
  }
@@ -41228,8 +41746,8 @@ var readerCoreStakedRatio = (entry) => {
41228
41746
  ],
41229
41747
  abis: [CoreTotalStakedAbi, TotalSupplyAbi],
41230
41748
  parse: ([staked, supply]) => {
41231
- const totalStaked = toBigInt10(staked);
41232
- const totalSupply = toBigInt10(supply);
41749
+ const totalStaked = toBigInt11(staked);
41750
+ const totalSupply = toBigInt11(supply);
41233
41751
  if (totalStaked === void 0 || totalSupply === void 0 || totalSupply === 0n) {
41234
41752
  return void 0;
41235
41753
  }
@@ -41273,12 +41791,12 @@ var readerStellaStDot = (entry) => ({
41273
41791
  ],
41274
41792
  abis: [TotalSupplyAbi, StellaStDotAbi, StellaStDotAbi],
41275
41793
  parse: ([supply, rate, pooled]) => {
41276
- const totalSupply = toBigInt10(supply);
41277
- const exchangeRate = toBigInt10(rate);
41794
+ const totalSupply = toBigInt11(supply);
41795
+ const exchangeRate = toBigInt11(rate);
41278
41796
  if (totalSupply === void 0 || exchangeRate === void 0) {
41279
41797
  return void 0;
41280
41798
  }
41281
- const totalAssets = toBigInt10(pooled) ?? totalSupply * exchangeRate / ONE_E186;
41799
+ const totalAssets = toBigInt11(pooled) ?? totalSupply * exchangeRate / ONE_E186;
41282
41800
  return {
41283
41801
  totalAssets,
41284
41802
  totalSupply,
@@ -41313,8 +41831,8 @@ var readerKintsuSMon = (entry) => ({
41313
41831
  ],
41314
41832
  abis: [KintsuSMonAbi, KintsuSMonAbi],
41315
41833
  parse: ([pooled, shares]) => {
41316
- const totalAssets = toBigInt10(pooled);
41317
- const totalSupply = toBigInt10(shares);
41834
+ const totalAssets = toBigInt11(pooled);
41835
+ const totalSupply = toBigInt11(shares);
41318
41836
  if (totalAssets === void 0 || totalSupply === void 0) return void 0;
41319
41837
  const exchangeRate = totalSupply > 0n ? totalAssets * ONE_E186 / totalSupply : ONE_E186;
41320
41838
  return { totalAssets, totalSupply, exchangeRate };
@@ -41831,7 +42349,7 @@ var fetchLstShareTokens = async (chainId, multicallRetry, prices = {}, tokenList
41831
42349
  const validatorsByAddress = new Map(validatorEntries);
41832
42350
  const idleByAddress = /* @__PURE__ */ new Map();
41833
42351
  idleEntries.forEach((e, i) => {
41834
- const bal = toBigInt10(idleResults[i]);
42352
+ const bal = toBigInt11(idleResults[i]);
41835
42353
  if (bal !== void 0) idleByAddress.set(e.address.toLowerCase(), bal);
41836
42354
  });
41837
42355
  const rawResults = new Array(allCalls.length);
@@ -41961,7 +42479,7 @@ var BeetsStSWithdrawalAbi = [
41961
42479
  ];
41962
42480
 
41963
42481
  // src/vaults/lst/withdrawals/readers/shared.ts
41964
- var toBigInt11 = (v) => {
42482
+ var toBigInt12 = (v) => {
41965
42483
  if (v === void 0 || v === null) return void 0;
41966
42484
  if (typeof v === "bigint") return v;
41967
42485
  if (typeof v === "number") return BigInt(v);
@@ -41976,7 +42494,7 @@ var toBigInt11 = (v) => {
41976
42494
  return void 0;
41977
42495
  };
41978
42496
  var toNumber = (v) => {
41979
- const b = toBigInt11(v);
42497
+ const b = toBigInt12(v);
41980
42498
  if (b === void 0) return void 0;
41981
42499
  if (b > BigInt(Number.MAX_SAFE_INTEGER)) return void 0;
41982
42500
  return Number(b);
@@ -42013,7 +42531,7 @@ var readerBeets = {
42013
42531
  const out = [];
42014
42532
  for (let i = 0; i < reqs.length; i++) {
42015
42533
  const r = reqs[i];
42016
- const amount = toBigInt11(r.assetAmount);
42534
+ const amount = toBigInt12(r.assetAmount);
42017
42535
  const ts = toNumber(r.requestTimestamp);
42018
42536
  const isWithdrawn = Boolean(r.isWithdrawn);
42019
42537
  if (amount === void 0 || ts === void 0) continue;
@@ -42105,13 +42623,13 @@ var readerBeHype = {
42105
42623
  const q = stage2[i * 2];
42106
42624
  const canClaim = Boolean(stage2[i * 2 + 1]);
42107
42625
  if (!q) continue;
42108
- const hypeAmount = Array.isArray(q) ? toBigInt11(q[2]) : toBigInt11(q.hypeAmount);
42626
+ const hypeAmount = Array.isArray(q) ? toBigInt12(q[2]) : toBigInt12(q.hypeAmount);
42109
42627
  if (hypeAmount === void 0) continue;
42110
42628
  out.push({
42111
42629
  lst: entry.lst,
42112
42630
  brand: entry.brand,
42113
42631
  symbol: entry.symbol,
42114
- requestId: String(toBigInt11(ids[i]) ?? i),
42632
+ requestId: String(toBigInt12(ids[i]) ?? i),
42115
42633
  amountUnderlying: hypeAmount.toString(),
42116
42634
  status: canClaim ? "claimable" : "pending"
42117
42635
  });
@@ -42214,7 +42732,7 @@ var readerBenqi = {
42214
42732
  for (let i = 0; i < reqs.length; i++) {
42215
42733
  const r = reqs[i];
42216
42734
  const startedAt = toNumber(r.startedAt);
42217
- const shareAmount = toBigInt11(r.shareAmount);
42735
+ const shareAmount = toBigInt12(r.shareAmount);
42218
42736
  if (startedAt === void 0 || shareAmount === void 0) continue;
42219
42737
  const readyAt = startedAt + cooldown;
42220
42738
  const expiresAt = readyAt + claimWindow;
@@ -42277,8 +42795,8 @@ var readerBeraPaw = {
42277
42795
  }
42278
42796
  const pos = res[0];
42279
42797
  if (!pos) return [];
42280
- const queued = Array.isArray(pos) ? toBigInt11(pos[0]) : toBigInt11(pos.queued);
42281
- const available = Array.isArray(pos) ? toBigInt11(pos[1]) : toBigInt11(pos.available);
42798
+ const queued = Array.isArray(pos) ? toBigInt12(pos[0]) : toBigInt12(pos.queued);
42799
+ const available = Array.isArray(pos) ? toBigInt12(pos[1]) : toBigInt12(pos.available);
42282
42800
  const out = [];
42283
42801
  if (available !== void 0 && available > 0n) {
42284
42802
  out.push({
@@ -42360,7 +42878,7 @@ var readerIbera = {
42360
42878
  return [];
42361
42879
  }
42362
42880
  const length = toNumber(stage1[0]) ?? 0;
42363
- const frontier = toBigInt11(stage1[1]) ?? 0n;
42881
+ const frontier = toBigInt12(stage1[1]) ?? 0n;
42364
42882
  if (length === 0) return [];
42365
42883
  const start = length > MAX_SCAN ? length - MAX_SCAN : 0;
42366
42884
  const ids = Array.from({ length: length - start }, (_3, k) => start + k);
@@ -42384,7 +42902,7 @@ var readerIbera = {
42384
42902
  const r = stage2[k];
42385
42903
  if (!r) continue;
42386
42904
  const receiver = Array.isArray(r) ? r[2] : r.receiver;
42387
- const amount = Array.isArray(r) ? toBigInt11(r[3]) : toBigInt11(r.amount);
42905
+ const amount = Array.isArray(r) ? toBigInt12(r[3]) : toBigInt12(r.amount);
42388
42906
  if (typeof receiver !== "string" || receiver.toLowerCase() !== target || amount === void 0 || amount === 0n) {
42389
42907
  continue;
42390
42908
  }
@@ -42457,7 +42975,7 @@ var readerPrimeStaking = {
42457
42975
  return [];
42458
42976
  }
42459
42977
  const length = toNumber(stage1[0]) ?? 0;
42460
- const frontier = toBigInt11(stage1[1]) ?? 0n;
42978
+ const frontier = toBigInt12(stage1[1]) ?? 0n;
42461
42979
  if (length === 0) return [];
42462
42980
  const start = length > MAX_SCAN2 ? length - MAX_SCAN2 : 0;
42463
42981
  const ids = Array.from({ length: length - start }, (_3, k) => start + k);
@@ -42481,7 +42999,7 @@ var readerPrimeStaking = {
42481
42999
  const r = stage2[k];
42482
43000
  if (!r) continue;
42483
43001
  const receiver = Array.isArray(r) ? r[1] : r.receiver;
42484
- const assets = Array.isArray(r) ? toBigInt11(r[3]) : toBigInt11(r.assets);
43002
+ const assets = Array.isArray(r) ? toBigInt12(r[3]) : toBigInt12(r.assets);
42485
43003
  const processed = Array.isArray(r) ? r[4] : r.processed;
42486
43004
  if (typeof receiver !== "string" || receiver.toLowerCase() !== target || assets === void 0 || assets === 0n) {
42487
43005
  continue;
@@ -42551,8 +43069,8 @@ var readerErc7540 = {
42551
43069
  ],
42552
43070
  abi: [Erc7540Abi, Erc7540Abi]
42553
43071
  });
42554
- const pending = toBigInt11(stage1[0]) ?? 0n;
42555
- const claimable = toBigInt11(stage1[1]) ?? 0n;
43072
+ const pending = toBigInt12(stage1[0]) ?? 0n;
43073
+ const claimable = toBigInt12(stage1[1]) ?? 0n;
42556
43074
  const out = [];
42557
43075
  if (claimable > 0n) {
42558
43076
  const stage2 = await multicallRetry({
@@ -42566,7 +43084,7 @@ var readerErc7540 = {
42566
43084
  ],
42567
43085
  abi: [Erc7540Abi]
42568
43086
  });
42569
- const amount = toBigInt11(stage2[0]) ?? claimable;
43087
+ const amount = toBigInt12(stage2[0]) ?? claimable;
42570
43088
  out.push({
42571
43089
  lst: entry.lst,
42572
43090
  brand: entry.brand,
@@ -42620,11 +43138,11 @@ var readerEthenaCooldown = {
42620
43138
  let cooldownEnd;
42621
43139
  let amount;
42622
43140
  if (Array.isArray(cell)) {
42623
- cooldownEnd = toBigInt11(cell[0]);
42624
- amount = toBigInt11(cell[1]);
43141
+ cooldownEnd = toBigInt12(cell[0]);
43142
+ amount = toBigInt12(cell[1]);
42625
43143
  } else if (cell && typeof cell === "object") {
42626
- cooldownEnd = toBigInt11(cell.cooldownEnd);
42627
- amount = toBigInt11(cell.underlyingAmount);
43144
+ cooldownEnd = toBigInt12(cell.cooldownEnd);
43145
+ amount = toBigInt12(cell.underlyingAmount);
42628
43146
  }
42629
43147
  if (!amount || amount === 0n) return [];
42630
43148
  const readyAt = Number(cooldownEnd ?? 0n);
@@ -42719,7 +43237,7 @@ var readerEtherFi = {
42719
43237
  calls: enumCalls,
42720
43238
  abi: enumCalls.map(() => EtherFiWithdrawRequestAbi)
42721
43239
  });
42722
- const ids = stage2.map(toBigInt11).filter((v) => v !== void 0);
43240
+ const ids = stage2.map(toBigInt12).filter((v) => v !== void 0);
42723
43241
  if (ids.length === 0) return [];
42724
43242
  const detailCalls = ids.flatMap((id) => [
42725
43243
  { address: entry.withdrawalContract, name: "getRequest", params: [id] },
@@ -42739,7 +43257,7 @@ var readerEtherFi = {
42739
43257
  const isValid = Boolean(stage3[i * 3 + 2]);
42740
43258
  if (!req) continue;
42741
43259
  if (!isValid) continue;
42742
- const amount = toBigInt11(req.amountOfEEth);
43260
+ const amount = toBigInt12(req.amountOfEEth);
42743
43261
  if (amount === void 0) continue;
42744
43262
  out.push({
42745
43263
  lst: entry.lst,
@@ -42834,7 +43352,7 @@ var readerKelp = {
42834
43352
  }
42835
43353
  ],
42836
43354
  abi: [KelpWithdrawalManagerAbi]
42837
- }).then((res) => toBigInt11(res[0]) ?? 0n)
43355
+ }).then((res) => toBigInt12(res[0]) ?? 0n)
42838
43356
  ]);
42839
43357
  lengths = storageReads;
42840
43358
  currentBlock = block;
@@ -42864,9 +43382,9 @@ var readerKelp = {
42864
43382
  for (let i = 0; i < detailCalls.length; i++) {
42865
43383
  const r = stage2[i];
42866
43384
  if (!r) continue;
42867
- const expected = Array.isArray(r) ? toBigInt11(r[1]) : toBigInt11(r.expectedAssetAmount);
42868
- const startBlock = Array.isArray(r) ? toBigInt11(r[2]) : toBigInt11(r.withdrawalStartBlock);
42869
- const nonce = Array.isArray(r) ? toBigInt11(r[3]) : toBigInt11(r.userNonce);
43385
+ const expected = Array.isArray(r) ? toBigInt12(r[1]) : toBigInt12(r.expectedAssetAmount);
43386
+ const startBlock = Array.isArray(r) ? toBigInt12(r[2]) : toBigInt12(r.withdrawalStartBlock);
43387
+ const nonce = Array.isArray(r) ? toBigInt12(r[3]) : toBigInt12(r.userNonce);
42870
43388
  if (expected === void 0 || startBlock === void 0) continue;
42871
43389
  const claimable = currentBlock >= startBlock + delayBlocks;
42872
43390
  out.push({
@@ -42943,7 +43461,7 @@ var readerLido = {
42943
43461
  abi: [LidoWithdrawalQueueAbi, LidoWithdrawalQueueAbi]
42944
43462
  });
42945
43463
  const ids = stage1[0];
42946
- const frontier = toBigInt11(stage1[1]) ?? 0n;
43464
+ const frontier = toBigInt12(stage1[1]) ?? 0n;
42947
43465
  if (!Array.isArray(ids) || ids.length === 0) return [];
42948
43466
  const stage2 = await multicallRetry({
42949
43467
  chain: chainId,
@@ -42960,10 +43478,10 @@ var readerLido = {
42960
43478
  if (!Array.isArray(statuses)) return [];
42961
43479
  const out = [];
42962
43480
  for (let i = 0; i < ids.length; i++) {
42963
- const id = toBigInt11(ids[i]);
43481
+ const id = toBigInt12(ids[i]);
42964
43482
  const s = statuses[i];
42965
43483
  if (id === void 0 || !s) continue;
42966
- const amountOfStETH = toBigInt11(s.amountOfStETH);
43484
+ const amountOfStETH = toBigInt12(s.amountOfStETH);
42967
43485
  const isFinalized = Boolean(s.isFinalized);
42968
43486
  const isClaimed = Boolean(s.isClaimed);
42969
43487
  if (amountOfStETH === void 0) continue;
@@ -43072,11 +43590,11 @@ var readerLista = {
43072
43590
  const status = stage2[i];
43073
43591
  if (!status) continue;
43074
43592
  const isClaimable = Array.isArray(status) ? Boolean(status[0]) : Boolean(status._isClaimable);
43075
- const bnbAmount = Array.isArray(status) ? toBigInt11(status[1]) : toBigInt11(status._amount);
43076
- const snbnbAmount = Array.isArray(req) ? toBigInt11(req[1]) : toBigInt11(req?.amountInSnBnb);
43593
+ const bnbAmount = Array.isArray(status) ? toBigInt12(status[1]) : toBigInt12(status._amount);
43594
+ const snbnbAmount = Array.isArray(req) ? toBigInt12(req[1]) : toBigInt12(req?.amountInSnBnb);
43077
43595
  const amount = bnbAmount ?? snbnbAmount;
43078
43596
  if (amount === void 0) continue;
43079
- const uuid = Array.isArray(req) ? toBigInt11(req[0]) : toBigInt11(req?.uuid);
43597
+ const uuid = Array.isArray(req) ? toBigInt12(req[0]) : toBigInt12(req?.uuid);
43080
43598
  out.push({
43081
43599
  lst: entry.lst,
43082
43600
  brand: entry.brand,
@@ -43161,7 +43679,7 @@ var readerRenzo = {
43161
43679
  for (let i = 0; i < count; i++) {
43162
43680
  const tup = stage2[i];
43163
43681
  if (!Array.isArray(tup) || tup.length < 5) continue;
43164
- const amountToRedeem = toBigInt11(tup[2]);
43682
+ const amountToRedeem = toBigInt12(tup[2]);
43165
43683
  const createdAt = toNumber(tup[4]);
43166
43684
  if (amountToRedeem === void 0 || createdAt === void 0) continue;
43167
43685
  const readyAt = createdAt + cooldown;
@@ -43234,9 +43752,9 @@ var readerStaderEthx2 = {
43234
43752
  ]
43235
43753
  });
43236
43754
  const ids = stage1[0];
43237
- const frontier = toBigInt11(stage1[1]) ?? 0n;
43755
+ const frontier = toBigInt12(stage1[1]) ?? 0n;
43238
43756
  if (!Array.isArray(ids) || ids.length === 0) return [];
43239
- const idBigInts = ids.map(toBigInt11).filter((v) => v !== void 0);
43757
+ const idBigInts = ids.map(toBigInt12).filter((v) => v !== void 0);
43240
43758
  const detailCalls = idBigInts.map((id) => ({
43241
43759
  address: entry.withdrawalContract,
43242
43760
  name: "userWithdrawRequests",
@@ -43252,8 +43770,8 @@ var readerStaderEthx2 = {
43252
43770
  const id = idBigInts[i];
43253
43771
  const tup = stage2[i];
43254
43772
  if (!Array.isArray(tup) || tup.length < 5) continue;
43255
- const ethExpected = toBigInt11(tup[2]) ?? 0n;
43256
- const ethFinalized = toBigInt11(tup[3]) ?? 0n;
43773
+ const ethExpected = toBigInt12(tup[2]) ?? 0n;
43774
+ const ethFinalized = toBigInt12(tup[3]) ?? 0n;
43257
43775
  const isFinalized = id < frontier && ethFinalized > 0n;
43258
43776
  const queuePosition = isFinalized ? 0 : Number(id - frontier);
43259
43777
  out.push({
@@ -43332,13 +43850,13 @@ var readerStaderMaticX2 = {
43332
43850
  });
43333
43851
  const arr = stage1[0];
43334
43852
  if (!Array.isArray(arr)) return [];
43335
- const currentEpoch = stakeManager ? toBigInt11(stage1[1]) ?? 0n : 0n;
43336
- const delay = stakeManager ? toBigInt11(stage1[2]) ?? 0n : 0n;
43853
+ const currentEpoch = stakeManager ? toBigInt12(stage1[1]) ?? 0n : 0n;
43854
+ const delay = stakeManager ? toBigInt12(stage1[2]) ?? 0n : 0n;
43337
43855
  const out = [];
43338
43856
  for (let i = 0; i < arr.length; i++) {
43339
43857
  const r = arr[i];
43340
- const amount = toBigInt11(r.amount) ?? 0n;
43341
- const requestEpoch = toBigInt11(r.requestEpoch);
43858
+ const amount = toBigInt12(r.amount) ?? 0n;
43859
+ const requestEpoch = toBigInt12(r.requestEpoch);
43342
43860
  if (requestEpoch === void 0) continue;
43343
43861
  const ready = stakeManager ? currentEpoch >= requestEpoch + delay : false;
43344
43862
  out.push({
@@ -43425,9 +43943,9 @@ var readerMantle = {
43425
43943
  if (typeof requester === "string" && requester.toLowerCase() !== lcUser) {
43426
43944
  continue;
43427
43945
  }
43428
- const ethRequested = Array.isArray(detail) ? toBigInt11(detail[3]) : toBigInt11(detail.ethRequested);
43946
+ const ethRequested = Array.isArray(detail) ? toBigInt12(detail[3]) : toBigInt12(detail.ethRequested);
43429
43947
  const isFinalized = Array.isArray(info) ? Boolean(info[0]) : Boolean(info.isFinalized);
43430
- const claimable = Array.isArray(info) ? toBigInt11(info[1]) : toBigInt11(info.claimableAmount);
43948
+ const claimable = Array.isArray(info) ? toBigInt12(info[1]) : toBigInt12(info.claimableAmount);
43431
43949
  if (ethRequested === void 0) continue;
43432
43950
  out.push({
43433
43951
  lst: entry.lst,
@@ -43506,8 +44024,8 @@ var readerPuffer = {
43506
44024
  calls,
43507
44025
  abi: calls.map(() => PufferWithdrawalManagerAbi)
43508
44026
  });
43509
- const finalizedBatch = toBigInt11(results[detailCalls.length]) ?? 0n;
43510
- const batchSize = toBigInt11(results[detailCalls.length + 1]) ?? 0n;
44027
+ const finalizedBatch = toBigInt12(results[detailCalls.length]) ?? 0n;
44028
+ const batchSize = toBigInt12(results[detailCalls.length + 1]) ?? 0n;
43511
44029
  const out = [];
43512
44030
  const lcUser = user.toLowerCase();
43513
44031
  for (let i = 0; i < ids.length; i++) {
@@ -43517,7 +44035,7 @@ var readerPuffer = {
43517
44035
  if (typeof recipient === "string" && recipient.toLowerCase() !== lcUser) {
43518
44036
  continue;
43519
44037
  }
43520
- const pufETHAmount = Array.isArray(d) ? toBigInt11(d[0]) : toBigInt11(d.pufETHAmount);
44038
+ const pufETHAmount = Array.isArray(d) ? toBigInt12(d[0]) : toBigInt12(d.pufETHAmount);
43521
44039
  if (pufETHAmount === void 0) continue;
43522
44040
  const batchIdx = batchSize > 0n ? ids[i] / batchSize : 0n;
43523
44041
  const claimable = batchIdx <= finalizedBatch;
@@ -43615,7 +44133,7 @@ var readerKinetiq = {
43615
44133
  for (let i = 0; i < count; i++) {
43616
44134
  const r = stage2[i];
43617
44135
  if (!r) continue;
43618
- const hypeAmount = Array.isArray(r) ? toBigInt11(r[0]) : toBigInt11(r.hypeAmount);
44136
+ const hypeAmount = Array.isArray(r) ? toBigInt12(r[0]) : toBigInt12(r.hypeAmount);
43619
44137
  const timestamp = Array.isArray(r) ? toNumber(r[4]) : toNumber(r.timestamp);
43620
44138
  if (hypeAmount === void 0 || hypeAmount === 0n || timestamp === void 0) {
43621
44139
  continue;
@@ -43743,7 +44261,7 @@ var readerStakeWise = {
43743
44261
  const claimedByIdx = /* @__PURE__ */ new Map();
43744
44262
  for (let i = 0; i < onChainChecks.length; i++) {
43745
44263
  const cell = checkResults[i];
43746
- const claimed = Array.isArray(cell) ? toBigInt11(cell[2]) : toBigInt11(cell?.claimedAssets);
44264
+ const claimed = Array.isArray(cell) ? toBigInt12(cell[2]) : toBigInt12(cell?.claimedAssets);
43747
44265
  if (claimed !== void 0 && claimed > 0n) {
43748
44266
  claimedByIdx.set(onChainChecks[i].idx, claimed);
43749
44267
  }
@@ -43751,7 +44269,7 @@ var readerStakeWise = {
43751
44269
  const out = [];
43752
44270
  for (let i = 0; i < requests.length; i++) {
43753
44271
  const r = requests[i];
43754
- const amount = toBigInt11(r.totalAssets) ?? 0n;
44272
+ const amount = toBigInt12(r.totalAssets) ?? 0n;
43755
44273
  const onChainClaimed = claimedByIdx.get(i);
43756
44274
  const claimable = onChainClaimed !== void 0 || r.isClaimable;
43757
44275
  out.push({
@@ -43808,7 +44326,7 @@ var readerStCelo2 = {
43808
44326
  const timestamps = cell[1] ?? [];
43809
44327
  const out = [];
43810
44328
  for (let i = 0; i < values.length; i++) {
43811
- const amount = toBigInt11(values[i]);
44329
+ const amount = toBigInt12(values[i]);
43812
44330
  const readyAt = toNumber(timestamps[i]);
43813
44331
  if (amount === void 0 || readyAt === void 0) continue;
43814
44332
  out.push({
@@ -43853,11 +44371,11 @@ var readerStellaUnbond = {
43853
44371
  let waiting;
43854
44372
  let unbonded;
43855
44373
  if (Array.isArray(cell)) {
43856
- waiting = toBigInt11(cell[0]);
43857
- unbonded = toBigInt11(cell[1]);
44374
+ waiting = toBigInt12(cell[0]);
44375
+ unbonded = toBigInt12(cell[1]);
43858
44376
  } else if (cell && typeof cell === "object") {
43859
- waiting = toBigInt11(cell.waiting);
43860
- unbonded = toBigInt11(cell.unbonded);
44377
+ waiting = toBigInt12(cell.waiting);
44378
+ unbonded = toBigInt12(cell.unbonded);
43861
44379
  }
43862
44380
  const out = [];
43863
44381
  if (unbonded && unbonded > 0n) {
@@ -43947,7 +44465,7 @@ var readerSwell = {
43947
44465
  abi: [SwellRswExitAbi, SwellRswExitAbi]
43948
44466
  });
43949
44467
  const count = toNumber(stage1[0]) ?? 0;
43950
- const lastProcessed = toBigInt11(stage1[1]) ?? 0n;
44468
+ const lastProcessed = toBigInt12(stage1[1]) ?? 0n;
43951
44469
  if (count === 0) return [];
43952
44470
  const enumCalls = Array.from({ length: count }, (_3, i) => ({
43953
44471
  address: entry.withdrawalContract,
@@ -43959,7 +44477,7 @@ var readerSwell = {
43959
44477
  calls: enumCalls,
43960
44478
  abi: enumCalls.map(() => SwellRswExitAbi)
43961
44479
  });
43962
- const ids = stage2.map(toBigInt11).filter((v) => v !== void 0);
44480
+ const ids = stage2.map(toBigInt12).filter((v) => v !== void 0);
43963
44481
  if (ids.length === 0) return [];
43964
44482
  const detailCalls = ids.map((id) => ({
43965
44483
  address: entry.withdrawalContract,
@@ -43976,7 +44494,7 @@ var readerSwell = {
43976
44494
  const id = ids[i];
43977
44495
  const r = stage3[i];
43978
44496
  if (!r) continue;
43979
- const amount = toBigInt11(r.amount);
44497
+ const amount = toBigInt12(r.amount);
43980
44498
  if (amount === void 0) continue;
43981
44499
  const claimable = id <= lastProcessed;
43982
44500
  out.push({
@@ -44050,14 +44568,14 @@ var readerValantis = {
44050
44568
  for (let i = 0; i < burns.length; i++) {
44051
44569
  const b = burns[i];
44052
44570
  if (!b) continue;
44053
- const amount = Array.isArray(b) ? toBigInt11(b[0]) : toBigInt11(b.amount);
44571
+ const amount = Array.isArray(b) ? toBigInt12(b[0]) : toBigInt12(b.amount);
44054
44572
  const completed = Array.isArray(b) ? Boolean(b[2]) : Boolean(b.completed);
44055
44573
  if (amount === void 0 || completed) continue;
44056
44574
  out.push({
44057
44575
  lst: entry.lst,
44058
44576
  brand: entry.brand,
44059
44577
  symbol: entry.symbol,
44060
- requestId: String(toBigInt11(ids[i]) ?? i),
44578
+ requestId: String(toBigInt12(ids[i]) ?? i),
44061
44579
  amountUnderlying: amount.toString(),
44062
44580
  status: redeemable[i] ? "claimable" : "pending"
44063
44581
  });
@@ -44130,7 +44648,7 @@ var readerTruFin = {
44130
44648
  if (typeof recipient === "string" && recipient.toLowerCase() !== lcUser) {
44131
44649
  continue;
44132
44650
  }
44133
- const amount = Array.isArray(w) ? toBigInt11(w[1]) : toBigInt11(w.amount);
44651
+ const amount = Array.isArray(w) ? toBigInt12(w[1]) : toBigInt12(w.amount);
44134
44652
  if (amount === void 0 || amount === 0n) continue;
44135
44653
  out.push({
44136
44654
  lst: entry.lst,
@@ -44226,7 +44744,7 @@ var readerYieldNest = {
44226
44744
  calls: enumCalls,
44227
44745
  abi: enumCalls.map(() => YieldNestWithdrawalQueueAbi)
44228
44746
  });
44229
- const ids = stage2.map(toBigInt11).filter((v) => v !== void 0);
44747
+ const ids = stage2.map(toBigInt12).filter((v) => v !== void 0);
44230
44748
  if (ids.length === 0) return [];
44231
44749
  const detailCalls = ids.map((id) => ({
44232
44750
  address: entry.withdrawalContract,
@@ -44245,7 +44763,7 @@ var readerYieldNest = {
44245
44763
  const id = ids[i];
44246
44764
  const r = stage3[i];
44247
44765
  if (!r) continue;
44248
- const amount = toBigInt11(r.amount);
44766
+ const amount = toBigInt12(r.amount);
44249
44767
  const created = toNumber(r.creationTimestamp);
44250
44768
  const processed = Boolean(r.processed);
44251
44769
  if (amount === void 0 || created === void 0) continue;
@@ -44838,7 +45356,7 @@ var getLstWithdrawalRegistry = (chainId, extraEntries) => {
44838
45356
  const extra = extraEntries.filter((e) => !seen.has(e.lst.toLowerCase()));
44839
45357
  return extra.length === 0 ? base : [...base, ...extra];
44840
45358
  };
44841
- var warn3 = (...args) => {
45359
+ var warn4 = (...args) => {
44842
45360
  };
44843
45361
  var getLstWithdrawalRequests = async (user, chainId, multicallRetry, options) => {
44844
45362
  const entries = getLstWithdrawalRegistry(chainId, options?.extraEntries);
@@ -44853,7 +45371,7 @@ var getLstWithdrawalRequests = async (user, chainId, multicallRetry, options) =>
44853
45371
  try {
44854
45372
  return await reader.fetch(lcUser, multicallRetry, chainId, entry, ids);
44855
45373
  } catch (e) {
44856
- warn3(
45374
+ warn4(
44857
45375
  `[lst-withdrawals] ${entry.brand} ${entry.symbol} (${entry.lst}) failed:`,
44858
45376
  e?.message ?? e
44859
45377
  );
@@ -44898,7 +45416,7 @@ var Erc4626ReadAbi2 = [
44898
45416
 
44899
45417
  // src/vaults/savings/readers/shared.ts
44900
45418
  var ONE_E188 = 10n ** 18n;
44901
- var toBigInt12 = (v) => {
45419
+ var toBigInt13 = (v) => {
44902
45420
  if (v === void 0 || v === null) return void 0;
44903
45421
  if (typeof v === "bigint") return v;
44904
45422
  if (typeof v === "number") return BigInt(v);
@@ -44929,9 +45447,9 @@ var readerErc46262 = (entry) => {
44929
45447
  ],
44930
45448
  abis: [Erc4626ReadAbi2, TotalSupplyAbi2, Erc4626ReadAbi2],
44931
45449
  parse: ([assets, supply, rate]) => {
44932
- const totalAssets = toBigInt12(assets);
44933
- const totalSupply = toBigInt12(supply);
44934
- const convertToAssetsRaw = toBigInt12(rate);
45450
+ const totalAssets = toBigInt13(assets);
45451
+ const totalSupply = toBigInt13(supply);
45452
+ const convertToAssetsRaw = toBigInt13(rate);
44935
45453
  if (totalAssets === void 0 || totalSupply === void 0 || convertToAssetsRaw === void 0) {
44936
45454
  return void 0;
44937
45455
  }
@@ -44946,67 +45464,6 @@ var readerErc46262 = (entry) => {
44946
45464
 
44947
45465
  // src/vaults/savings/readers/index.ts
44948
45466
  var buildReader2 = (entry) => readerErc46262(entry);
44949
- var CHAIN_ID7 = "4663";
44950
- var VAULT2 = "0xde770c84fe66e063336b31737cfe9790f18c4087";
44951
- var SPARK_SAVINGS_USDG_KEY = "SPUSDG";
44952
- var RAY3 = 10n ** 27n;
44953
- var YEAR_SECONDS9 = 365 * 24 * 60 * 60;
44954
- var WINDOW_BLOCKS6 = 400000n;
44955
- var MAX_RPC_TRIES6 = 3;
44956
- var CHI_ABI = [
44957
- {
44958
- name: "chi",
44959
- type: "function",
44960
- stateMutability: "view",
44961
- inputs: [],
44962
- outputs: [{ type: "uint256" }]
44963
- }
44964
- ];
44965
- var readChiAt = (client, blockNumber) => client.readContract({
44966
- address: VAULT2,
44967
- abi: CHI_ABI,
44968
- functionName: "chi",
44969
- ...blockNumber !== void 0 ? { blockNumber } : {}
44970
- });
44971
- var computeApr7 = async () => {
44972
- let lastErr;
44973
- for (let rpcId = 0; rpcId < MAX_RPC_TRIES6; rpcId++) {
44974
- try {
44975
- const client = getEvmClient(CHAIN_ID7, rpcId);
44976
- const head = await client.getBlockNumber();
44977
- const pastBlock = head > WINDOW_BLOCKS6 ? head - WINDOW_BLOCKS6 : 0n;
44978
- const [chiNow, chiThen, headBlock, thenBlock] = await Promise.all([
44979
- readChiAt(client),
44980
- readChiAt(client, pastBlock),
44981
- client.getBlock({ blockNumber: head }),
44982
- client.getBlock({ blockNumber: pastBlock })
44983
- ]);
44984
- if (chiNow < RAY3 || chiThen < RAY3 || chiNow < chiThen) {
44985
- throw new Error(
44986
- `non-archival or invalid chi (now=${chiNow}, then=${chiThen})`
44987
- );
44988
- }
44989
- const elapsed = Number(headBlock.timestamp - thenBlock.timestamp);
44990
- if (elapsed <= 0) throw new Error("non-positive elapsed window");
44991
- const growth = Number(chiNow - chiThen) / Number(chiThen);
44992
- const apr = growth * (YEAR_SECONDS9 / elapsed) * 100;
44993
- if (!Number.isFinite(apr) || apr < 0) throw new Error(`bad apr ${apr}`);
44994
- return apr;
44995
- } catch (e) {
44996
- lastErr = e;
44997
- }
44998
- }
44999
- throw new Error(
45000
- `spUSDG APR: no Robinhood RPC returned valid historical chi (${String(lastErr)})`
45001
- );
45002
- };
45003
- var sparkSavingsUsdgFetcher = {
45004
- label: "SPARK_SAVINGS_USDG",
45005
- fetch: async () => {
45006
- const apr = await computeApr7();
45007
- return { [SPARK_SAVINGS_USDG_KEY]: apr };
45008
- }
45009
- };
45010
45467
 
45011
45468
  // src/vaults/savings/registry.ts
45012
45469
  var stUsdGroup = {
@@ -45827,7 +46284,7 @@ var resolveAaveEarnCuratorName = (chainId, owner) => {
45827
46284
 
45828
46285
  // src/vaults/aave-earn/fetchPublic.ts
45829
46286
  var BRAND2 = "Aave";
45830
- var toBigInt13 = (v) => {
46287
+ var toBigInt14 = (v) => {
45831
46288
  if (v === void 0 || v === null) return void 0;
45832
46289
  if (typeof v === "bigint") return v;
45833
46290
  if (typeof v === "number") return BigInt(v);
@@ -45887,15 +46344,15 @@ var fetchAaveEarnVaults = async (chainId, multicallRetry, prices = {}, tokenList
45887
46344
  const token = v.usedReserve.underlyingToken;
45888
46345
  const underlyingLc = token.address.toLowerCase();
45889
46346
  const assetDecimals = token.decimals;
45890
- const shareDecOnChain = toBigInt13(slice[1]);
46347
+ const shareDecOnChain = toBigInt14(slice[1]);
45891
46348
  const decimals = shareDecOnChain !== void 0 ? Number(shareDecOnChain) : assetDecimals;
45892
- const totalSupply = toBigInt13(slice[2]);
46349
+ const totalSupply = toBigInt14(slice[2]);
45893
46350
  if (totalSupply === void 0) continue;
45894
46351
  const shareUnit = 10n ** BigInt(decimals);
45895
46352
  const underlyingUnit = 10n ** BigInt(assetDecimals);
45896
- const convertToAssets = toBigInt13(slice[3]) ?? 0n;
46353
+ const convertToAssets = toBigInt14(slice[3]) ?? 0n;
45897
46354
  const convertToShares = convertToAssets > 0n ? shareUnit * underlyingUnit / convertToAssets : 0n;
45898
- const totalAssets = toBigInt13(slice[0]) ?? totalSupply * convertToAssets / shareUnit;
46355
+ const totalAssets = toBigInt14(slice[0]) ?? totalSupply * convertToAssets / shareUnit;
45899
46356
  const totalAssetsFormatted = Number(totalAssets) / 10 ** assetDecimals;
45900
46357
  const asset = tokenList[underlyingLc];
45901
46358
  const priceUsd = prices[underlyingLc] ?? (v.balance?.usdPerToken != null ? num2(v.balance.usdPerToken) : void 0);
@@ -47914,7 +48371,7 @@ function buildVaultLookup(data) {
47914
48371
  addEntries(data.yearn, "yearn");
47915
48372
  return map;
47916
48373
  }
47917
- var warn4 = (...args) => {
48374
+ var warn5 = (...args) => {
47918
48375
  };
47919
48376
  var HYPERCORE_PROVIDER_CHAIN = "999";
47920
48377
  var getVaultPublicDataAll = async (chainId, providers, multicallRetry, prices = {}, tokenList = {}, options) => {
@@ -47927,7 +48384,7 @@ var getVaultPublicDataAll = async (chainId, providers, multicallRetry, prices =
47927
48384
  fetchFluidFTokens(chainId, multicallRetry, prices, tokenList).then((res) => {
47928
48385
  out.fluid = res;
47929
48386
  }).catch((e) => {
47930
- warn4(
48387
+ warn5(
47931
48388
  `[vaults] fluid fetch failed for chain ${chainId}:`,
47932
48389
  e?.message ?? e
47933
48390
  );
@@ -47939,7 +48396,7 @@ var getVaultPublicDataAll = async (chainId, providers, multicallRetry, prices =
47939
48396
  fetchGearboxV3Pools(chainId, multicallRetry, prices, tokenList).then((res) => {
47940
48397
  out.gearbox = res;
47941
48398
  }).catch((e) => {
47942
- warn4(
48399
+ warn5(
47943
48400
  `[vaults] gearbox fetch failed for chain ${chainId}:`,
47944
48401
  e?.message ?? e
47945
48402
  );
@@ -47951,7 +48408,7 @@ var getVaultPublicDataAll = async (chainId, providers, multicallRetry, prices =
47951
48408
  fetchMorphoVaults(chainId, multicallRetry, prices, tokenList).then((res) => {
47952
48409
  out.morpho = res;
47953
48410
  }).catch((e) => {
47954
- warn4(
48411
+ warn5(
47955
48412
  `[vaults] morpho fetch failed for chain ${chainId}:`,
47956
48413
  e?.message ?? e
47957
48414
  );
@@ -47963,7 +48420,7 @@ var getVaultPublicDataAll = async (chainId, providers, multicallRetry, prices =
47963
48420
  fetchListaVaultsFromChain(chainId, multicallRetry, prices, tokenList).then((res) => {
47964
48421
  out.lista = res;
47965
48422
  }).catch((e) => {
47966
- warn4(
48423
+ warn5(
47967
48424
  `[vaults] lista fetch failed for chain ${chainId}:`,
47968
48425
  e?.message ?? e
47969
48426
  );
@@ -47978,7 +48435,7 @@ var getVaultPublicDataAll = async (chainId, providers, multicallRetry, prices =
47978
48435
  }).then((res) => {
47979
48436
  out.silo = res;
47980
48437
  }).catch((e) => {
47981
- warn4(
48438
+ warn5(
47982
48439
  `[vaults] silo fetch failed for chain ${chainId}:`,
47983
48440
  e?.message ?? e
47984
48441
  );
@@ -47990,7 +48447,7 @@ var getVaultPublicDataAll = async (chainId, providers, multicallRetry, prices =
47990
48447
  fetchEulerEarnVaults(chainId, prices, tokenList, multicallRetry).then((res) => {
47991
48448
  out["euler-earn"] = res;
47992
48449
  }).catch((e) => {
47993
- warn4(
48450
+ warn5(
47994
48451
  `[vaults] euler-earn fetch failed for chain ${chainId}:`,
47995
48452
  e?.message ?? e
47996
48453
  );
@@ -48002,7 +48459,7 @@ var getVaultPublicDataAll = async (chainId, providers, multicallRetry, prices =
48002
48459
  fetchLstShareTokens(chainId, multicallRetry, prices, tokenList).then((res) => {
48003
48460
  out.lst = res;
48004
48461
  }).catch((e) => {
48005
- warn4(
48462
+ warn5(
48006
48463
  `[vaults] lst fetch failed for chain ${chainId}:`,
48007
48464
  e?.message ?? e
48008
48465
  );
@@ -48014,7 +48471,7 @@ var getVaultPublicDataAll = async (chainId, providers, multicallRetry, prices =
48014
48471
  fetchSavingsVaults(chainId, multicallRetry, prices, tokenList).then((res) => {
48015
48472
  out.savings = res;
48016
48473
  }).catch((e) => {
48017
- warn4(
48474
+ warn5(
48018
48475
  `[vaults] savings fetch failed for chain ${chainId}:`,
48019
48476
  e?.message ?? e
48020
48477
  );
@@ -48026,7 +48483,7 @@ var getVaultPublicDataAll = async (chainId, providers, multicallRetry, prices =
48026
48483
  fetchLagoonVaults(chainId, prices, tokenList).then((res) => {
48027
48484
  out.lagoon = res;
48028
48485
  }).catch((e) => {
48029
- warn4(
48486
+ warn5(
48030
48487
  `[vaults] lagoon fetch failed for chain ${chainId}:`,
48031
48488
  e?.message ?? e
48032
48489
  );
@@ -48038,7 +48495,7 @@ var getVaultPublicDataAll = async (chainId, providers, multicallRetry, prices =
48038
48495
  fetchAaveEarnVaults(chainId, multicallRetry, prices, tokenList).then((res) => {
48039
48496
  out["aave-earn"] = res;
48040
48497
  }).catch((e) => {
48041
- warn4(
48498
+ warn5(
48042
48499
  `[vaults] aave-earn fetch failed for chain ${chainId}:`,
48043
48500
  e?.message ?? e
48044
48501
  );
@@ -48050,7 +48507,7 @@ var getVaultPublicDataAll = async (chainId, providers, multicallRetry, prices =
48050
48507
  fetchUpshiftVaults(chainId, prices, tokenList).then((res) => {
48051
48508
  out.upshift = res;
48052
48509
  }).catch((e) => {
48053
- warn4(
48510
+ warn5(
48054
48511
  `[vaults] upshift fetch failed for chain ${chainId}:`,
48055
48512
  e?.message ?? e
48056
48513
  );
@@ -48062,7 +48519,7 @@ var getVaultPublicDataAll = async (chainId, providers, multicallRetry, prices =
48062
48519
  fetchYearnVaults(chainId, multicallRetry, prices, tokenList).then((res) => {
48063
48520
  out.yearn = res;
48064
48521
  }).catch((e) => {
48065
- warn4(
48522
+ warn5(
48066
48523
  `[vaults] yearn fetch failed for chain ${chainId}:`,
48067
48524
  e?.message ?? e
48068
48525
  );
@@ -48074,7 +48531,7 @@ var getVaultPublicDataAll = async (chainId, providers, multicallRetry, prices =
48074
48531
  fetchHypercoreVaults().then((res) => {
48075
48532
  out.hypercore = res;
48076
48533
  }).catch((e) => {
48077
- warn4(
48534
+ warn5(
48078
48535
  `[vaults] hypercore fetch failed for chain ${chainId}:`,
48079
48536
  e?.message ?? e
48080
48537
  );
@@ -48086,7 +48543,7 @@ var getVaultPublicDataAll = async (chainId, providers, multicallRetry, prices =
48086
48543
  fetchGmxVaults(chainId, multicallRetry).then((res) => {
48087
48544
  out.gmx = res;
48088
48545
  }).catch((e) => {
48089
- warn4(
48546
+ warn5(
48090
48547
  `[vaults] gmx fetch failed for chain ${chainId}:`,
48091
48548
  e?.message ?? e
48092
48549
  );
@@ -48102,7 +48559,7 @@ var getVaultPublicDataAll = async (chainId, providers, multicallRetry, prices =
48102
48559
  );
48103
48560
  if (fees) out.gmxExecutionFees = fees;
48104
48561
  })().catch((e) => {
48105
- warn4(
48562
+ warn5(
48106
48563
  `[vaults] gmx execution-fee fetch failed for chain ${chainId}:`,
48107
48564
  e?.message ?? e
48108
48565
  );