@1delta/margin-fetcher 5.0.87 → 5.0.88

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ import './chunk-BYTNVMX7.js';
3
3
  import './chunk-PR4QN5HX.js';
4
4
  import { Lender, isExactly, isMidnight, isTerm, isTermMax, isTeller, isListaDao, isLiquityFamily, isRiver, isInverse, isCooler, isDssType, isCompoundV3Type, isFluid, isGearboxV3, isLlamaLend, isFrankencoin, isResupply, isCurvance, isFlyingTulip, isTwyne, isFraxlend, isAaveV4Type, LIQUITY_FAMILY_LENDERS, isAaveType, isCompoundV3, isCompoundV2Type, isMultiMarket, isSiloV2Type, isSiloV3Type, isDolomite, isMorphoType, isUsdd, isSky, hasCrossMarginRisk, isEulerType, isInit, isVenusType, isSumerType, AAVE_V3_LENDERS, AAVE_V2_LENDERS, isMorphoBlue, isAaveV2Type, isAaveV32Type, isAaveV3Type, isYLDR, isLista, hasSubAccounts, isTectonicType, isKineticType, isBenqiType } from '@1delta/lender-registry';
5
5
  export { hasCrossMarginRisk, isAaveType, isAaveV2Type, isAaveV32Type, isAaveV3Type, isCompoundV3, isCompoundV3Type, isInit, isMorphoType, isMultiMarket, isYLDR } from '@1delta/lender-registry';
6
- import { fetchTokenLists, fetchTokenList, aavePools, compoundV3Pools, initConfig, morphoPools, compoundV2Pools, eulerVaults, siloMarkets, siloV2LenderKey, siloMarketsV3, siloV3LenderKey, aaveV4Spokes, aaveV4SpokeLenderKey, fluidResolvers, gearboxResolvers, dolomiteConfigs, midnightConfig, termConfig, termMarketsByChain, exactlyConfig, flyingTulipLendersByChain, liquityLendersByChain, riverLendersByChain, inverseLendersByChain, coolerLendersByChain, llamaLendLendersByChain, usddLendersByChain, skyLendersByChain, frankencoinLendersByChain, resupplyLendersByChain, curvanceLendersByChain, fraxlendLendersByChain, twyneLendersByChain, tellerConfigByChain, tellerPoolsByChain, termMaxConfigByChain, aaveReserves, compoundV3Reserves, morphoTypeMarkets, resolveTermApiBase, flyingTulipConfigFor, flyingTulipAssetsFor, liquityConfigFor, liquityBranchesByChain, riverConfigFor, riverChainData, termMaxApiBaseUrl, termMaxLenderKey, inverseConfigFor, inverseChainData, coolerConfigFor, llamaLendConfigFor, llamaLendChainData, llamaLendApiBaseUrl, resupplyConfigFor, fraxlendConfigFor, dssConfigFor, dssChainData, dssDebtToken, dssDebtJoin, frankencoinConfigFor, frankencoinChainData, aaveOracles, resolveMidnightApiBase, llamaLendMarketByVault, getSiloV2MarketEntry, getSiloV3MarketEntry, dolomiteEmode, curvanceConfigFor, aaveTokens, morphoTypeVaults, listaCollateralProvider, eulerConfigs, gearboxMarketCompressor, gearboxMarketConfigurators, compoundV2TokenArray, gearboxV3LenderKey, midnightMarketsByChain, twyneConfigFor, twyneChainData, midnightCollateralRef, parseAaveV4SpokeLenderKey, fraxlendPairsFor, gearboxAccountCompressor, compoundV2Tokens, exactlyMarketsByChain, aaveOraclesConfig, compoundV2Oracles, compoundV2OraclesConfig, compoundV3OraclesData, compoundV3BaseData, compoundV2Reserves, aaveV4Oracles, morphoTypeOracles } from '@1delta/data-sdk';
6
+ import { fetchTokenLists, fetchTokenList, aavePools, compoundV3Pools, initConfig, morphoPools, compoundV2Pools, eulerVaults, siloMarkets, siloV2LenderKey, siloMarketsV3, siloV3LenderKey, aaveV4Spokes, aaveV4SpokeLenderKey, fluidResolvers, gearboxResolvers, dolomiteConfigs, midnightConfig, termConfig, termMarketsByChain, exactlyConfig, flyingTulipLendersByChain, liquityLendersByChain, riverLendersByChain, inverseLendersByChain, coolerLendersByChain, llamaLendLendersByChain, usddLendersByChain, skyLendersByChain, frankencoinLendersByChain, resupplyLendersByChain, curvanceLendersByChain, fraxlendLendersByChain, twyneLendersByChain, tellerConfigByChain, tellerPoolsByChain, termMaxConfigByChain, aaveReserves, compoundV3Reserves, dolomiteIsolationMarket, morphoTypeMarkets, resolveTermApiBase, flyingTulipConfigFor, flyingTulipAssetsFor, liquityConfigFor, liquityBranchesByChain, riverConfigFor, riverChainData, termMaxApiBaseUrl, termMaxLenderKey, inverseConfigFor, inverseChainData, coolerConfigFor, llamaLendConfigFor, llamaLendChainData, llamaLendApiBaseUrl, resupplyConfigFor, fraxlendConfigFor, dssConfigFor, dssChainData, dssDebtToken, dssDebtJoin, frankencoinConfigFor, frankencoinChainData, aaveOracles, resolveMidnightApiBase, llamaLendMarketByVault, getSiloV2MarketEntry, getSiloV3MarketEntry, dolomiteEmode, curvanceConfigFor, aaveTokens, morphoTypeVaults, listaCollateralProvider, eulerConfigs, gearboxMarketCompressor, gearboxMarketConfigurators, compoundV2TokenArray, gearboxV3LenderKey, midnightMarketsByChain, twyneConfigFor, twyneChainData, midnightCollateralRef, parseAaveV4SpokeLenderKey, fraxlendPairsFor, gearboxAccountCompressor, compoundV2Tokens, exactlyMarketsByChain, aaveOraclesConfig, compoundV2Oracles, compoundV2OraclesConfig, compoundV3OraclesData, compoundV3BaseData, compoundV2Reserves, aaveV4Oracles, morphoTypeOracles } from '@1delta/data-sdk';
7
7
  import lodash from 'lodash';
8
8
  import { Chain, isEvmChainId } from '@1delta/chain-registry';
9
9
  import { multicallRetryUniversal, getEvmClient, getEvmChain, createMulticallRetryUniversal, LIST_OVERRIDES, getEvmClientUniversal } from '@1delta/providers';
@@ -12013,7 +12013,7 @@ function createSumerUserState(payload, lenderData, totalDeposits24h = 0, totalDe
12013
12013
  // src/lending/user-data/utils/createMultiAccountStyleUserState.ts
12014
12014
  function createMultiAccountTypeUserState(payload, lenderData, histData) {
12015
12015
  const positionKeys = Object.keys(payload.lendingPositions ?? {});
12016
- let marketUids = getMarketUidsFromMeta(lenderData);
12016
+ let marketUids2 = getMarketUidsFromMeta(lenderData);
12017
12017
  const { chainId, account } = payload;
12018
12018
  let data = [];
12019
12019
  for (let j = 0; j < positionKeys.length; j++) {
@@ -12036,8 +12036,8 @@ function createMultiAccountTypeUserState(payload, lenderData, histData) {
12036
12036
  let collateral = 0;
12037
12037
  let borrowDiscountedCollateral = 0;
12038
12038
  let adjustedDebt = 0;
12039
- for (let i = 0; i < marketUids.length; i++) {
12040
- const marketUid = marketUids[i];
12039
+ for (let i = 0; i < marketUids2.length; i++) {
12040
+ const marketUid = marketUids2[i];
12041
12041
  if (!lenderData?.[marketUid] || !payload.lendingPositions[posId][marketUid])
12042
12042
  continue;
12043
12043
  const pos = payload.lendingPositions[posId][marketUid];
@@ -12093,8 +12093,8 @@ function createMultiAccountTypeUserState(payload, lenderData, histData) {
12093
12093
  rewards: {}
12094
12094
  };
12095
12095
  const creditLine = Math.max(0, borrowDiscountedCollateral - adjustedDebt);
12096
- for (let i = 0; i < marketUids.length; i++) {
12097
- const marketUid = marketUids[i];
12096
+ for (let i = 0; i < marketUids2.length; i++) {
12097
+ const marketUid = marketUids2[i];
12098
12098
  if (!lenderData?.[marketUid]) continue;
12099
12099
  const { configs, flags, borrowLiquidity, withdrawLiquidity } = lenderData[marketUid];
12100
12100
  const config = resolveModeConfig(configs, mode);
@@ -20598,7 +20598,10 @@ var DOLOMITE_MARKET_FNS = [
20598
20598
  "getMarketMarginPremium",
20599
20599
  "getMarketInterestRate"
20600
20600
  ];
20601
- var DOLOMITE_GLOBAL_FNS = ["getMarginRatio", "getEarningsRate"];
20601
+ var DOLOMITE_GLOBAL_FNS = [
20602
+ "getMarginRatio",
20603
+ "getEarningsRate"
20604
+ ];
20602
20605
  var buildDolomiteCall = (chainId, _lender) => {
20603
20606
  const margin = dolomiteConfigs()?.[chainId]?.dolomiteMargin;
20604
20607
  const marketIds = getDolomiteMarketIds(chainId);
@@ -20678,6 +20681,59 @@ function resolveDolomiteMode(heldMarketIds, emode) {
20678
20681
  }
20679
20682
  return cats.size === 1 ? [...cats][0] : "0";
20680
20683
  }
20684
+ var marketUids = (chainId, lender, ids) => ids.map((id) => createMarketUid(chainId, lender, String(id)));
20685
+ function resolveDolomiteRowIdentity(chainId, lender, marketId, token, tokenList = {}) {
20686
+ const lower4 = token.toLowerCase();
20687
+ const meta = tokenList[lower4];
20688
+ const table = dolomiteIsolationMarket(
20689
+ chainId,
20690
+ marketId
20691
+ );
20692
+ const receiptUnderlying = meta?.props?.receipt?.protocol === "dolomite-isolation" ? meta.props.receipt.underlying?.toLowerCase() : void 0;
20693
+ const underlying = table?.underlying?.toLowerCase() ?? receiptUnderlying;
20694
+ if (!underlying) {
20695
+ return {
20696
+ name: lenderShortName(lender) + " " + (meta?.symbol ?? ""),
20697
+ asset: meta,
20698
+ yieldKey: toOracleKey(meta?.assetGroup ?? null)
20699
+ };
20700
+ }
20701
+ const underlyingMeta = tokenList[underlying];
20702
+ const symbol = meta?.symbol ?? (underlyingMeta?.symbol ? "d" + underlyingMeta.symbol : table?.underlyingSymbol ? "d" + table.underlyingSymbol : "");
20703
+ const asset = meta && !meta.logoURI && underlyingMeta?.logoURI ? { ...meta, logoURI: underlyingMeta.logoURI } : meta;
20704
+ const isolation = table ? {
20705
+ factory: table.factory,
20706
+ underlying,
20707
+ underlyingSymbol: table.underlyingSymbol,
20708
+ underlyingDecimals: table.underlyingDecimals,
20709
+ allowedDebtMarketUids: table.allowableDebtMarketIds.length > 0 ? marketUids(chainId, lender, table.allowableDebtMarketIds) : void 0,
20710
+ allowedCollateralMarketUids: table.allowableCollateralMarketIds.length > 0 ? marketUids(chainId, lender, table.allowableCollateralMarketIds) : void 0,
20711
+ wrapper: table.wrapper,
20712
+ unwrapper: table.unwrapper,
20713
+ wrapperInputMarketUids: marketUids(
20714
+ chainId,
20715
+ lender,
20716
+ table.wrapperInputMarketIds
20717
+ ),
20718
+ unwrapperOutputMarketUids: marketUids(
20719
+ chainId,
20720
+ lender,
20721
+ table.unwrapperOutputMarketIds
20722
+ ),
20723
+ async: table.async,
20724
+ executionFeeWei: table.executionFeeWei
20725
+ } : void 0;
20726
+ return {
20727
+ name: lenderShortName(lender) + " " + symbol,
20728
+ asset,
20729
+ // The underlying's group; fall back to the dToken's own group only when
20730
+ // the underlying is unlisted (then nothing is keyed on it anyway).
20731
+ yieldKey: toOracleKey(
20732
+ underlyingMeta?.assetGroup ?? meta?.assetGroup ?? null
20733
+ ),
20734
+ isolation
20735
+ };
20736
+ }
20681
20737
 
20682
20738
  // src/lending/public-data/dolomite/publicCallParse.ts
20683
20739
  var BASE = 10n ** 18n;
@@ -20735,12 +20791,19 @@ var getDolomitePublicDataConverter = (lender, chainId, _prices, additionalYields
20735
20791
  const config = buildDolomiteConfigs(marketId, p, R, isClosing, emode);
20736
20792
  const liquidity = Number(totalDeposits) - Number(totalDebt);
20737
20793
  const marketUid = createMarketUid(chainId, lender, String(marketId));
20794
+ const identity = resolveDolomiteRowIdentity(
20795
+ chainId,
20796
+ lender,
20797
+ marketId,
20798
+ underlying,
20799
+ tokenList
20800
+ );
20738
20801
  result[marketUid] = {
20739
20802
  marketUid,
20740
- name: lenderShortName(lender) + " " + (meta?.symbol ?? ""),
20803
+ name: identity.name,
20741
20804
  poolId: underlying,
20742
20805
  underlying,
20743
- asset: meta,
20806
+ asset: identity.asset,
20744
20807
  marketId,
20745
20808
  totalDeposits,
20746
20809
  totalDebt,
@@ -20756,7 +20819,9 @@ var getDolomitePublicDataConverter = (lender, chainId, _prices, additionalYields
20756
20819
  variableBorrowRate,
20757
20820
  stableBorrowRate: 0,
20758
20821
  collateralActive: true,
20759
- intrinsicYield: additionalYields?.intrinsicYields?.[underlying] ?? 0,
20822
+ // By ASSET GROUP (the map's key), the underlying's for an isolation
20823
+ // market — see `isolation.ts`.
20824
+ intrinsicYield: additionalYields?.intrinsicYields?.[identity.yieldKey] ?? 0,
20760
20825
  rewards: [],
20761
20826
  config,
20762
20827
  closeFactor: 1,
@@ -20772,7 +20837,11 @@ var getDolomitePublicDataConverter = (lender, chainId, _prices, additionalYields
20772
20837
  // and the term sheet then printed a red "Currently unavailable" over
20773
20838
  // the collateral leg of a loop that builds and executes fine. The
20774
20839
  // borrow half is already carried correctly by `config[*].debtDisabled`.
20775
- depositsEnabled: true
20840
+ depositsEnabled: true,
20841
+ ...identity.isolation && {
20842
+ isolation: identity.isolation,
20843
+ allowedDebtMarketUids: identity.isolation.allowedDebtMarketUids
20844
+ }
20776
20845
  };
20777
20846
  });
20778
20847
  return { data: result, chainId };
@@ -29549,13 +29618,24 @@ function convertDolomiteSubgraphMarkets(raw, chainId, prices, additionalYields,
29549
29618
  isClosing,
29550
29619
  emode
29551
29620
  );
29552
- const marketUid = createMarketUid(chainId, LENDER, String(info.token.marketId));
29621
+ const marketUid = createMarketUid(
29622
+ chainId,
29623
+ LENDER,
29624
+ String(info.token.marketId)
29625
+ );
29626
+ const identity = resolveDolomiteRowIdentity(
29627
+ chainId,
29628
+ LENDER,
29629
+ info.token.marketId,
29630
+ underlying,
29631
+ tokenList
29632
+ );
29553
29633
  result[marketUid] = {
29554
29634
  marketUid,
29555
- name: lenderShortName(LENDER) + " " + (meta?.symbol ?? info.token.symbol ?? ""),
29635
+ name: meta ? identity.name : lenderShortName(LENDER) + " " + (info.token.symbol ?? ""),
29556
29636
  poolId: underlying,
29557
29637
  underlying,
29558
- asset: meta,
29638
+ asset: identity.asset,
29559
29639
  marketId: info.token.marketId,
29560
29640
  totalDeposits,
29561
29641
  totalDebt,
@@ -29571,14 +29651,22 @@ function convertDolomiteSubgraphMarkets(raw, chainId, prices, additionalYields,
29571
29651
  variableBorrowRate,
29572
29652
  stableBorrowRate: 0,
29573
29653
  collateralActive: true,
29574
- intrinsicYield: additionalYields?.intrinsicYields?.[underlying] ?? 0,
29654
+ // Keyed by ASSET GROUP like every other lender (the map is
29655
+ // `intrinsicYields[assetGroup]`, never by address) — and for an
29656
+ // isolation market by the UNDERLYING's group, since a dGM earns what
29657
+ // its GM earns.
29658
+ intrinsicYield: additionalYields?.intrinsicYields?.[identity.yieldKey] ?? 0,
29575
29659
  rewards: [],
29576
29660
  config,
29577
29661
  closeFactor: 1,
29578
29662
  borrowingEnabled: !isClosing,
29579
29663
  // Deposits are NOT gated by this flag — see the note in `publicCallParse`.
29580
29664
  // The subgraph names it `isBorrowingDisabled`, which says so outright.
29581
- depositsEnabled: true
29665
+ depositsEnabled: true,
29666
+ ...identity.isolation && {
29667
+ isolation: identity.isolation,
29668
+ allowedDebtMarketUids: identity.isolation.allowedDebtMarketUids
29669
+ }
29582
29670
  };
29583
29671
  }
29584
29672
  return { data: result, chainId };
@@ -31223,30 +31311,59 @@ var buildGearboxV3UserCall = (chainId, _lender, account) => {
31223
31311
  };
31224
31312
  var SUBGRAPH_CACHE_TTL_MS = 3e4;
31225
31313
  var SUBGRAPH_TIMEOUT_MS2 = 1e4;
31314
+ var DOLOMITE_ISO_ID_PREFIX = "iso:";
31315
+ function parseDolomiteSubAccountId(id) {
31316
+ if (id.startsWith(DOLOMITE_ISO_ID_PREFIX)) {
31317
+ const [, marketId, number] = id.split(":");
31318
+ return { isolationMarketId: marketId, number };
31319
+ }
31320
+ return { number: id };
31321
+ }
31322
+ function toDolomiteSubAccountId(number, isolationMarketId) {
31323
+ return isolationMarketId ? `${DOLOMITE_ISO_ID_PREFIX}${isolationMarketId}:${number}` : number;
31324
+ }
31226
31325
  var subgraphCache = /* @__PURE__ */ new Map();
31227
- function fetchDolomiteAccountNumbers(chainId, owner) {
31326
+ function fetchDolomiteSubAccounts(chainId, owner) {
31228
31327
  const key3 = `${chainId}:${owner.toLowerCase()}`;
31229
31328
  const cached = subgraphCache.get(key3);
31230
31329
  if (cached) return cached.promise;
31231
- const promise = fetchAccountNumbersFromSubgraph(chainId, owner).then((ns) => dedupeWithDefault(ns)).catch(() => ["0"]);
31232
- const timer = setTimeout(() => subgraphCache.delete(key3), SUBGRAPH_CACHE_TTL_MS);
31330
+ const promise = fetchSubAccountsFromSubgraph(chainId, owner).then((accounts) => withDefault(owner, accounts)).catch(() => withDefault(owner, []));
31331
+ const timer = setTimeout(
31332
+ () => subgraphCache.delete(key3),
31333
+ SUBGRAPH_CACHE_TTL_MS
31334
+ );
31233
31335
  subgraphCache.set(key3, { promise, timer });
31234
31336
  return promise;
31235
31337
  }
31236
- function dedupeWithDefault(numbers) {
31237
- const set = new Set(numbers);
31238
- set.add("0");
31239
- return [...set];
31338
+ async function fetchDolomiteAccountNumbers(chainId, owner) {
31339
+ const accounts = await fetchDolomiteSubAccounts(chainId, owner);
31340
+ return accounts.filter((a) => !a.isolationMarketId).map((a) => a.number);
31341
+ }
31342
+ function withDefault(owner, accounts) {
31343
+ const seen = /* @__PURE__ */ new Set();
31344
+ const out = [];
31345
+ const push2 = (a) => {
31346
+ if (seen.has(a.id)) return;
31347
+ seen.add(a.id);
31348
+ out.push(a);
31349
+ };
31350
+ push2({ id: "0", owner, number: "0" });
31351
+ accounts.forEach(push2);
31352
+ return out;
31240
31353
  }
31241
- async function fetchAccountNumbersFromSubgraph(chainId, owner) {
31354
+ async function fetchSubAccountsFromSubgraph(chainId, owner) {
31242
31355
  const url = DOLOMITE_SUBGRAPH_URLS[chainId];
31243
- if (!url) return ["0"];
31356
+ if (!url) return [];
31244
31357
  const query3 = `{
31245
31358
  marginAccounts(
31246
31359
  first: 1000
31247
- where: { user: "${owner.toLowerCase()}", or: [{ hasSupplyValue: true }, { hasBorrowValue: true }] }
31360
+ where: { and: [
31361
+ { effectiveUser: "${owner.toLowerCase()}" },
31362
+ { or: [{ hasSupplyValue: true }, { hasBorrowValue: true }] }
31363
+ ] }
31248
31364
  ) {
31249
31365
  accountNumber
31366
+ user { id isolationModeVault { marketId } }
31250
31367
  }
31251
31368
  }`;
31252
31369
  const controller = new AbortController();
@@ -31258,21 +31375,46 @@ async function fetchAccountNumbersFromSubgraph(chainId, owner) {
31258
31375
  body: JSON.stringify({ query: query3 }),
31259
31376
  signal: controller.signal
31260
31377
  });
31261
- if (!response.ok) return ["0"];
31378
+ if (!response.ok) {
31379
+ console.warn(
31380
+ `[dolomite] sub-account query for ${owner} on chain ${chainId} answered HTTP ${response.status}; serving the default account only`
31381
+ );
31382
+ return [];
31383
+ }
31262
31384
  const data = await response.json();
31385
+ if (data?.errors?.length) {
31386
+ console.warn(
31387
+ `[dolomite] sub-account query for ${owner} on chain ${chainId} rejected: ${data.errors.map((e) => e.message).join("; ")}; serving the default account only`
31388
+ );
31389
+ return [];
31390
+ }
31263
31391
  const accounts = data?.data?.marginAccounts;
31264
- if (!accounts || accounts.length === 0) return ["0"];
31265
- return accounts.map((a) => String(a.accountNumber));
31392
+ if (!accounts || accounts.length === 0) return [];
31393
+ const lowerOwner = owner.toLowerCase();
31394
+ return accounts.map((a) => {
31395
+ const number = String(a.accountNumber);
31396
+ const accountOwner = a.user.id.toLowerCase();
31397
+ const isolationMarketId = accountOwner !== lowerOwner ? a.user.isolationModeVault?.marketId : void 0;
31398
+ return {
31399
+ id: toDolomiteSubAccountId(number, isolationMarketId),
31400
+ owner: accountOwner,
31401
+ number,
31402
+ isolationMarketId
31403
+ };
31404
+ });
31266
31405
  } finally {
31267
31406
  clearTimeout(timeout);
31268
31407
  }
31269
31408
  }
31270
31409
  var RESOLVED_STORE_TTL_MS2 = 6e4;
31271
31410
  var resolvedStore = /* @__PURE__ */ new Map();
31411
+ function getResolvedDolomiteSubAccounts(chainId, account) {
31412
+ return resolvedStore.get(`${chainId}:${account.toLowerCase()}`)?.accounts;
31413
+ }
31272
31414
  function getResolvedDolomiteAccountNumbers(chainId, account) {
31273
- return resolvedStore.get(`${chainId}:${account.toLowerCase()}`)?.numbers;
31415
+ return getResolvedDolomiteSubAccounts(chainId, account)?.map((a) => a.id);
31274
31416
  }
31275
- function storeResolvedNumbers(chainId, account, numbers) {
31417
+ function storeResolved(chainId, account, accounts) {
31276
31418
  const key3 = `${chainId}:${account.toLowerCase()}`;
31277
31419
  const existing = resolvedStore.get(key3);
31278
31420
  if (existing) clearTimeout(existing.timer);
@@ -31280,17 +31422,20 @@ function storeResolvedNumbers(chainId, account, numbers) {
31280
31422
  () => resolvedStore.delete(key3),
31281
31423
  RESOLVED_STORE_TTL_MS2
31282
31424
  );
31283
- resolvedStore.set(key3, { numbers, timer });
31425
+ resolvedStore.set(key3, { accounts, timer });
31284
31426
  }
31285
31427
  var buildDolomiteUserCall = async (chainId, _lender, account, accountNumbers) => {
31286
31428
  const margin = dolomiteConfigs()?.[chainId]?.dolomiteMargin;
31287
31429
  if (!margin) return [];
31288
- const numbers = accountNumbers ?? await fetchDolomiteAccountNumbers(chainId, account);
31289
- storeResolvedNumbers(chainId, account, numbers);
31290
- return numbers.map((number) => ({
31430
+ const accounts = accountNumbers ? withDefault(
31431
+ account,
31432
+ accountNumbers.map((n) => ({ id: n, owner: account, number: n }))
31433
+ ) : await fetchDolomiteSubAccounts(chainId, account);
31434
+ storeResolved(chainId, account, accounts);
31435
+ return accounts.map(({ owner, number }) => ({
31291
31436
  address: margin,
31292
31437
  name: "getAccountBalances",
31293
- params: [{ owner: account, number }]
31438
+ params: [{ owner, number }]
31294
31439
  }));
31295
31440
  };
31296
31441
  var midnightMarketCallCount = (collateralCount) => 2 + collateralCount;
@@ -33961,7 +34106,7 @@ function createMorphoEntryFromMarketWithLens(balanceInfo, metaMap, chainId, lend
33961
34106
  // src/lending/user-data/utils/createEulerMultiAccountTypeUserState.ts
33962
34107
  function createEulerMultiAccountTypeUserState(payload, lenderData, histData) {
33963
34108
  const subAccountIndexes = Object.keys(payload.lendingPositions ?? {});
33964
- const marketUids = getMarketUidsFromMeta(lenderData);
34109
+ const marketUids2 = getMarketUidsFromMeta(lenderData);
33965
34110
  const { chainId, account } = payload;
33966
34111
  const data = [];
33967
34112
  for (let j = 0; j < subAccountIndexes.length; j++) {
@@ -33984,8 +34129,8 @@ function createEulerMultiAccountTypeUserState(payload, lenderData, histData) {
33984
34129
  let collateral = 0;
33985
34130
  let borrowDiscountedCollateral = 0;
33986
34131
  let adjustedDebt = 0;
33987
- for (let i = 0; i < marketUids.length; i++) {
33988
- const marketUid = marketUids[i];
34132
+ for (let i = 0; i < marketUids2.length; i++) {
34133
+ const marketUid = marketUids2[i];
33989
34134
  if (!lenderData?.[marketUid] || !payload.lendingPositions[subAccountIndex][marketUid])
33990
34135
  continue;
33991
34136
  const pos = payload.lendingPositions[subAccountIndex][marketUid];
@@ -34044,8 +34189,8 @@ function createEulerMultiAccountTypeUserState(payload, lenderData, histData) {
34044
34189
  rewards: {}
34045
34190
  };
34046
34191
  const creditLine = Math.max(0, borrowDiscountedCollateral - adjustedDebt);
34047
- for (let i = 0; i < marketUids.length; i++) {
34048
- const marketUid = marketUids[i];
34192
+ for (let i = 0; i < marketUids2.length; i++) {
34193
+ const marketUid = marketUids2[i];
34049
34194
  if (!lenderData?.[marketUid]) continue;
34050
34195
  const { configs, flags, borrowLiquidity, withdrawLiquidity } = lenderData[marketUid];
34051
34196
  const config = configs?.[configKey];
@@ -35107,8 +35252,10 @@ var getGearboxV3UserDataConverter = (_lender, chainId, account, meta) => {
35107
35252
  ];
35108
35253
  };
35109
35254
  var getDolomiteUserDataConverter = (lender, chainId, account, metaMap) => {
35110
- const numbers = getResolvedDolomiteAccountNumbers(chainId, account) ?? ["0"];
35111
- const expectedNumberOfCalls = numbers.length;
35255
+ const subAccounts = getResolvedDolomiteSubAccounts(chainId, account) ?? [
35256
+ { id: "0", owner: account, number: "0" }
35257
+ ];
35258
+ const expectedNumberOfCalls = subAccounts.length;
35112
35259
  const emode = dolomiteEmode()?.[chainId];
35113
35260
  return [
35114
35261
  (_data) => {
@@ -35118,7 +35265,7 @@ var getDolomiteUserDataConverter = (lender, chainId, account, metaMap) => {
35118
35265
  const modes = {};
35119
35266
  _data.forEach((res, i) => {
35120
35267
  if (isFailedCall(res)) return;
35121
- const id = numbers[i];
35268
+ const id = subAccounts[i].id;
35122
35269
  histData[id] = { totalDebt24h: 0, totalDeposits24h: 0 };
35123
35270
  lendingPositions[id] = {};
35124
35271
  const marketIds = res?.[0 /* markets */] ?? [];
@@ -51392,20 +51539,19 @@ var stEurGroup = {
51392
51539
  chains: {
51393
51540
  "1": {
51394
51541
  address: "0x004626a008b1acdc4c74ab51644093b155e59a23",
51395
- underlying: "0x1abaea1f7c830bd89acc67ec4af516284b1bc33c"
51542
+ underlying: "0x1a7e4e63778b4f12a199c062f3efdd288afcbce8"
51396
51543
  },
51397
51544
  "42161": {
51398
51545
  address: "0x004626a008b1acdc4c74ab51644093b155e59a23",
51399
- underlying: "0x1abaea1f7c830bd89acc67ec4af516284b1bc33c"
51546
+ underlying: "0xfa5ed56a203466cbbc2430a43c66b9d8723528e7"
51400
51547
  },
51401
- // Gnosis — `0x1aBa…` EURA exists on chain 100 per Angle docs.
51402
51548
  "100": {
51403
51549
  address: "0x004626a008b1acdc4c74ab51644093b155e59a23",
51404
- underlying: "0x1abaea1f7c830bd89acc67ec4af516284b1bc33c"
51550
+ underlying: "0x4b1e2c2762667331bc91648052f646d1b0d35984"
51405
51551
  },
51406
51552
  "59144": {
51407
51553
  address: "0x004626a008b1acdc4c74ab51644093b155e59a23",
51408
- underlying: "0x1abaea1f7c830bd89acc67ec4af516284b1bc33c"
51554
+ underlying: "0x1a7e4e63778b4f12a199c062f3efdd288afcbce8"
51409
51555
  }
51410
51556
  }
51411
51557
  };
@@ -52511,7 +52657,12 @@ var SINGLE_CHAIN_ENTRIES = {
52511
52657
  },
52512
52658
  {
52513
52659
  address: "0x1202f5c7b4b9e47a1a484e8b270be34dbbc75055",
52514
- underlying: "0x6c8984bc7dbbedaf4f6b2fd766f16ebb7d10aab4",
52660
+ // `asset()` is USR itself: wstUSR is a 4626 over USR (deposit USR, get
52661
+ // wstUSR) that holds the rebasing stUSR internally. The row carried
52662
+ // stUSR `0x6c8984bc…` as its underlying until 2026-09-18, which would
52663
+ // have had the generic deposit route pull a token the vault never asks
52664
+ // for.
52665
+ underlying: "0x66a1e37c9b0eaddca17d3662d6c05f4decf3e110",
52515
52666
  symbol: "wstUSR",
52516
52667
  brand: "Resolv",
52517
52668
  description: "USR is Resolv's delta-neutral synthetic dollar (ETH collateral hedged with perpetual shorts; the RLP insurance layer absorbs losses first). stUSR stakes it and rebases; wstUSR is the non-rebasing wrapper. Instant unwrap with no cooldown.",
@@ -53625,32 +53776,32 @@ var fetchGmxRawData = async (chainId, period, apiUrlOverride) => {
53625
53776
  };
53626
53777
 
53627
53778
  // src/yields/intrinsic/fetchers/gmx.ts
53628
- var GMX_CHAIN = "42161";
53629
- var gmx_eth_usd = "GMX Market ETH/USD::GM [WETH-USDC]";
53630
- var gmx_btc_usd = "GMX Market BTC/USD::GM [WBTC-USDC]";
53631
- var glv_wbtc_usdc = "GMX Liquidity Vault [WBTC-USDC]::GLV [WBTC-USDC]";
53632
- var glv_weth_usdc = "GMX Liquidity Vault [WETH-USDC]::GLV [WETH-USDC]";
53633
- var gmx_eth_usd_address = "0x70d95587d40a2caf56bd97485ab3eec10bee6336";
53634
- var gmx_btc_usd_address = "0x47c031236e19d024b42f8ae6780e44a573170703";
53635
- var glv_wbtc_usdc_address = "0xdf03eed325b82bc1d4db8b49c30ecc9e05104b96";
53636
- var glv_weth_usdc_address = "0x528a5bac7e746c9a509a1f4f6df58a03d44279f9";
53779
+ var GMX_CHAIN = String(Chain.ARBITRUM_ONE);
53780
+ var LEGACY_KEYS = {
53781
+ "0x70d95587d40a2caf56bd97485ab3eec10bee6336": "GMX Market ETH/USD::GM [WETH-USDC]",
53782
+ "0x47c031236e19d024b42f8ae6780e44a573170703": "GMX Market BTC/USD::GM [WBTC-USDC]",
53783
+ "0xdf03eed325b82bc1d4db8b49c30ecc9e05104b96": "GMX Liquidity Vault [WBTC-USDC]::GLV [WBTC-USDC]",
53784
+ "0x528a5bac7e746c9a509a1f4f6df58a03d44279f9": "GMX Liquidity Vault [WETH-USDC]::GLV [WETH-USDC]"
53785
+ };
53637
53786
  var gmxFetcher = {
53638
53787
  label: "GMX",
53639
53788
  fetch: async () => {
53640
- const { apy } = await fetchGmxRawData(GMX_CHAIN, GMX_DEFAULT_APY_PERIOD);
53789
+ const [{ apy }, lists] = await Promise.all([
53790
+ fetchGmxRawData(GMX_CHAIN, GMX_DEFAULT_APY_PERIOD),
53791
+ getListsMulti([GMX_CHAIN]).catch(() => ({}))
53792
+ ]);
53793
+ const list = lists?.[GMX_CHAIN]?.list ?? {};
53641
53794
  const rData = {};
53642
- for (const [addr4, d] of Object.entries(apy.markets ?? {})) {
53643
- const a = addr4.toLowerCase();
53644
- if (a === gmx_eth_usd_address) rData[gmx_eth_usd] = apyToApr(d.apy) * 100;
53645
- if (a === gmx_btc_usd_address) rData[gmx_btc_usd] = apyToApr(d.apy) * 100;
53646
- }
53647
- for (const [addr4, d] of Object.entries(apy.glvs ?? {})) {
53795
+ const put = (addr4, d) => {
53648
53796
  const a = addr4.toLowerCase();
53649
- if (a === glv_wbtc_usdc_address)
53650
- rData[glv_wbtc_usdc] = apyToApr(d.apy) * 100;
53651
- if (a === glv_weth_usdc_address)
53652
- rData[glv_weth_usdc] = apyToApr(d.apy) * 100;
53653
- }
53797
+ const apr = apyToApr(d.apy) * 100;
53798
+ const group = list[a]?.assetGroup;
53799
+ if (group) rData[group] = apr;
53800
+ const legacy = LEGACY_KEYS[a];
53801
+ if (legacy && legacy !== group) rData[legacy] = apr;
53802
+ };
53803
+ for (const [addr4, d] of Object.entries(apy.markets ?? {})) put(addr4, d);
53804
+ for (const [addr4, d] of Object.entries(apy.glvs ?? {})) put(addr4, d);
53654
53805
  return rData;
53655
53806
  }
53656
53807
  };
@@ -54275,6 +54426,28 @@ var INTRINSIC_FETCHERS = (() => {
54275
54426
  return [...seen];
54276
54427
  })();
54277
54428
 
54429
+ // src/yields/intrinsic/receipts.ts
54430
+ var RECEIPT_CHAINS = ["42161", "5000", "80094"];
54431
+ async function propagateReceiptYields(intrinsicYields) {
54432
+ let lists;
54433
+ try {
54434
+ lists = await getListsMulti(RECEIPT_CHAINS);
54435
+ } catch {
54436
+ return;
54437
+ }
54438
+ for (const chainId of RECEIPT_CHAINS) {
54439
+ const list = lists?.[chainId]?.list ?? {};
54440
+ for (const token of Object.values(list)) {
54441
+ const receipt = token?.props?.receipt;
54442
+ if (!receipt?.underlying || !token.assetGroup) continue;
54443
+ if (intrinsicYields[token.assetGroup] !== void 0) continue;
54444
+ const underlying = list[String(receipt.underlying).toLowerCase()];
54445
+ const rate = underlying?.assetGroup ? intrinsicYields[underlying.assetGroup] : void 0;
54446
+ if (rate !== void 0) intrinsicYields[token.assetGroup] = rate;
54447
+ }
54448
+ }
54449
+ }
54450
+
54278
54451
  // src/yields/intrinsic/index.ts
54279
54452
  async function fetchIntrinsicYields() {
54280
54453
  const wstethPromise = safeFetch(wstethFetcher.label, wstethFetcher.fetch);
@@ -54289,6 +54462,7 @@ async function fetchIntrinsicYields() {
54289
54462
  for (const result of results) {
54290
54463
  if (result) Object.assign(intrinsicYields, result);
54291
54464
  }
54465
+ await propagateReceiptYields(intrinsicYields);
54292
54466
  return intrinsicYields;
54293
54467
  }
54294
54468
 
@@ -81239,6 +81413,6 @@ function earnPositionTotals(items) {
81239
81413
  };
81240
81414
  }
81241
81415
 
81242
- export { ApiBookSource, DEFAULT_MIDNIGHT_API, DEFAULT_OUTLIER_GUARD, DEFAULT_PROFILE_ID, DEFAULT_STALE_REJECT_SECONDS, DEFAULT_TERMMAX_API, DEFAULT_TERM_ORDER_STORE, EARN_DESCRIPTIONS, EARN_LABELS, EARN_RATE_SOURCE_BY_PROVIDER, EMPTY_BALANCE, EXACTLY_LENDER_KEY, FLYING_TULIP_LENDER_KEY, FRACTION_RATE_PROVIDERS, GMX_API_HOSTS, GMX_READ_CONTRACTS, GMX_SUPPORTED_CHAINS, HYPERCORE_VAULT_REGISTRY, IDLE_MARKET_ID, INTERFACE_IDS, LAGOON_API_URL, LAGOON_CHAIN_IDS, MORPHO_LENS, MULTICALL_FAILURE, MaxParamThresholds, PASSTHROUGH_RATE_EPSILON, PENDLE_ASSETS_URL, PENDLE_CHAIN_IDS, PENDLE_MARKETS_URL, SDK_FRACTION_RATE_PROVIDERS, SPECTRA_NETWORKS, SPECTRA_RATE_MAX_PERCENT, SPECTRA_RATE_MIN_PERCENT, STABLECOIN_SYMBOLS, STCELO_MANAGER_ADDRESS, TELLER_CALLS_PER_BID, DECIMAL_BASE as TERMMAX_DECIMAL_BASE, TERMMAX_LIQUIDATION_PENALTY, TERMMAX_LIQUIDATION_WINDOW_SECS, TERMMAX_LIQUIDATOR_BONUS, TERMMAX_MARKETS_PER_CALL, TERMMAX_PARTIAL_CLOSE_FACTOR, TERMMAX_PARTIAL_LIQUIDATION_THRESHOLD_USD, TERM_ADAPTERS, TERM_PROFILES, TERM_SHEET_SCHEMA_VERSION, TermMaxApiSource, TermSubgraphSource, UPSHIFT_CHAIN_IDS, UPSHIFT_VAULTS_URL, VAULT_PROVIDERS, VAULT_PROVIDER_PROFILE, VAULT_PROVIDER_TRAITS, VAULT_SHARE_PRICE_PROBE, VAULT_VENUE_PREFIX, VOLATILE_VAULT_OVERRIDES, YEARN_CHAIN_IDS, YEARN_YDAEMON_BASE, __resetResupplyUserCaches, accountDepositListKey, accountWithdrawalListKey, appendSnapshot, applyEarnSanity, applyPositionDelta, attachImplications, attachPricesToFlashLiquidity, borrowDescription, borrowFindings, borrowHeadline, buildExposures2 as buildExposures, buildFluidFTokensCall, buildLendingPositionUid, buildLiquityUserCall, buildLoopResult, buildMorphoTypeCall, buildMorphoTypeUserCallWithLens, buildPortfolioTotals, buildSumerAccumulators, buildSummaries, buildTellerUserCall, buildTermMaxUserCall, buildTermSheet, buildTermSheetsForGroup, buildVaultEarnUid, buildVaultLookup, buildVaultTermSheet, calculateLeverage, calculateNetApr, calculateOverallNetApr, calculateWeightedAverage, classifyFreshness, classifyReliability, classifyVault, clearPendleMarketsCache, clearSpectraMarketsCache, collateralSymbolsByVenue, collectFeedObservations, computeBorrowDelta2 as computeBorrowDelta, computeCloseTradeDeltas, computeCollateralSwapDeltas, computeDebtSwapDeltas, computeDepositDelta2 as computeDepositDelta, computeEModeAnalysis, computeOpenTradeDeltas, computePostTradeMetrics, computeRepayDelta2 as computeRepayDelta, computeSumerBorrowDelta, computeSumerDepositDelta, computeSumerRepayDelta, computeSumerWaterfall, computeSumerWithdrawDelta, computeVaultApr, computeWithdrawDelta2 as computeWithdrawDelta, computeZapTradeDeltas, consensusReference, convertCoolerMarketsToResponse, convertDssMarketsToResponse, convertExactlyMarketsToResponse, convertFlyingTulipMarketsToResponse, convertFrankencoinMarketsToResponse, convertFraxlendPairsToResponse, convertInverseMarketsToResponse, convertLenderUserDataResult, convertLiquityMarketsToResponse, convertLlamaLendMarketsToResponse, convertResupplyMarketsToResponse, convertRiverMarketsToResponse, convertTellerMarketsToResponse, convertTermMarketsToResponse, convertTermMaxMarketsToResponse, convertUsddMarketsToResponse, createMarketUid, createMidnightBookSource, createMulticallRpcCall, createRawRpcCalls, createTermBookSource, createTermMaxDataSource, decodeListaMarkets, decodeMarkets, decodePackedListaUserDataset, decodePackedMorphoUserDataset, deriveBorrowTags, deriveSupplyTags, detectInterfaceKinds, dexResolverFor, disambiguateEarnNames, dssIlkBytes32, dssKeyParts, dssLenderKey, duration, earnDescription, earnLabel, earnMarketFromPool, earnMarketFromVault, earnMarketLabel, earnPositionFromLenderEntry, earnPositionFromVaultBalance, earnPositionTotals, earnRateAtMaturity, earnRowSubtitle, earnUidFromMarketUid, earnVaultTerms, earnVenueKind, encodeBalanceFetcherCalldata, enrichTermSheet, enrichmentIndexFromRows, exactlyPairLtv, exactlyPenaltyRateToAprPercent, exactlyWadRateToPercent, feePhrase, feedKeyOf, feedStatKey, fetchCoolerMarkets, fetchDolomiteAccountNumbers, fetchDssMarkets, fetchEulerEarnVaults, fetchEulerEarnVaultsFromSubgraph, fetchEulerSubAccountIndexes, fetchExactlyMarkets, fetchFlashLiquidityForChain, fetchFluidDexState, fetchFluidFTokens, fetchFlyingTulipMarkets, fetchFrankencoinMarkets, fetchFraxlendPairs, fetchGeneralYields, fetchGeneralYieldsByMarketUid, fetchGmxExecutionFees, fetchGmxTickerPrices, fetchGmxVaults, fetchHypercoreVaults, fetchInverseMarkets, fetchLagoonApiVaults, fetchLagoonVaults, fetchLiquityMarkets, fetchListaVaultsFromChain, fetchLlamaLendMarkets, fetchMorphoUserBalances, fetchMorphoUserPositionMarkets, fetchMorphoVaults, fetchMorphoVaultsFromApi, fetchMorphoVaultsFromChain, fetchOraclePrices, fetchPendleApiAssets, fetchPendleApiMarkets, fetchPendlePrices, fetchPendlePtMarkets, fetchResupplyMarkets, fetchRiverMarkets, fetchSiloVaults, fetchSpectraApiMarkets, fetchSpectraPtMarkets, fetchTellerMarkets, fetchTermMarkets, fetchTermMaxMarkets, fetchTermStoreOrders, fetchTokenBalances, fetchTokenMetadata, fetchUpshiftApiVaults, fetchUpshiftVaults, fetchUsddMarkets, fetchYearnApiVaults, fetchYearnVaults, fillableRemaining, filterActiveLenders, filterLendersByProtocol, finalizeInfo, findingsFor, formatRaw, frankencoinKeyParts, frankencoinLenderKey, fraxlendAssetPerCollateral, fraxlendKeyParts, fraxlendLenderKey, fuseLenderData, generateLendingPools, getAavesForChain, getAssetConfig, getBalanceForMarketUid, getBorrowCapacity, getCachedFluidDexState, getCachedLiquityTroves, getCachedTellerBids, getCachedTermMaxDiscovery, getCachedTermMaxMarket, getCachedTermMaxMarkets, getCoreValidators, getFluidFTokensConverter, getGmxApiHost, getGmxReadContracts, getGmxUserPositions, getHealthFactor, getHypercoreUserPositions, getHypercoreVaultRegistry, getLenderAssets, getLenderPublicData, getLenderPublicDataAll, getLenderPublicDataViaApi, getLenderUserDataMulti, getLenderUserDataResult, getLendersForChain, getLstDelegation, getLstValidators, getLstWithdrawalRegistry, getLstWithdrawalRequests, getMaxAmountClose, getMaxAmountCollateralSwap, getMaxAmountDebtSwap, getMaxAmountOpen, getMergedUserData, getMorphoTypeMarketConverter, getReadFailurePolicy, getResolvedDolomiteAccountNumbers, getStCeloValidatorGroups, getSubAccountAddress, getSubAccountIndex, getTermProfile, getVaultPublicDataAll, getVaultWithdrawalRequests, hasCritical, hasEulerEarnVaultSubgraph, hasLagoonVaults, hasMorphoPositionIndex, hasMorphoUserApi, hasMorphoUserSubgraph, hasPendleMarkets, hasSpectraMarkets, hasUpshiftVaults, hasYearnVaults, ilkToKeySegment, implausibleRatePercent, inverseKeyParts, inverseLenderKey, isBoundNeed, isFailedCall, isIlliquid, isLendingPosition, isLiveMarket as isLivePendleMarket, isLiveSpectraMarket, isMaturedTerm, isSecondaryMarketOnly, isStablecoinSymbol, isUnearnableEarnRate, isUnrealizableEarnRate, isVaultPosition, isVaultVenue, isYearnV3, keySegmentToIlk, keysFromMaps, lenderApiOnly, lenderFamily, liquityCandidateTroveIds, liquityKeyParts, liquityLenderKey, llamaLendKeyParts, llamaLendLenderKey, meetsLiquidityFloor, mergeDeep, multicall3Abi2 as multicall3Abi, nanTo, needsLenderApproval, needsTokenApproval, noOpResult, normalizeToBytes, organizeUserQueries, parseBalanceFetcherResult, parseEarnUid, parseMergedResult, parseMulticallRpcResponses, parseExpirySeconds as parsePendleExpirySeconds, parseRawRpcBatchResponses, parseRawRpcResponses, parseCurveFee as parseSpectraCurveFee, parsePtRate as parseSpectraPtRate, parseTermMaxLtv, parseTokenBalanceResult, pct, assetKey as pendleAssetKey, pickPool as pickSpectraPool, positivePart2 as positivePart, predictInverseEscrow, prepareLenderUserDataRpcCalls, prepareMergedMulticallParams, prepareMergedRpcCalls, prepareMulticallInputs, prepareTokenBalanceRpcCalls, priceGlvVaults, priceGmMarkets, probeAaveFeedTimestamps, pruneFeedStats, rankFindings, ratePercent, readVaultSharePrices, rejectOutliers as rejectPriceOutliers, repairImpossibleTvl, resolveAdapter, resolveDerivation, resolveEarnIdentity, resolveModeConfig, resolveStCeloDepositGroup, resolveVaultProfileId, resupplyKeyParts, resupplyLenderKey, resupplyMarketLabel, riverKeyParts, riverLenderKey, sanePercent as saneSpectraPercent, savingsAddresses, savingsBalanceKind, secondaryMarketVault, selectAssetGroupPrices, setMysticApiKey, shortDate, spectraAddress, spectraNetwork, spectraPoolsUrl, splitChainScopedAddress as splitPendleChainScopedAddress, stampCapabilities, stampEarnSubtitles, stampVaultClassification, stampVaultTermSheets, stripLeadingBrand, supplyDescription, supplyFindings, supplyHeadline, swapRoutedProvidersArePriceConsistent, tellerBpsToPercent, tellerImpliedLtv, tellerLenderKey, tellerPoolFromLenderKey, termApiBaseUrl, termLenderKey, termMaxApiBase, borrowNif as termMaxBorrowNif, curveApr as termMaxCurveApr, curveAprNumber as termMaxCurveAprNumber, daysToMaturity as termMaxDaysToMaturity, lendNif as termMaxLendNif, mintGtFeeRatio as termMaxMintGtFeeRatio, ratioToNumber as termMaxRatioToNumber, ratioToPercent as termMaxRatioToPercent, termOfferRateToAprPct, termOrderStoreBaseUrl, tickToAprNumber, tickToPrice, toDigest, toTermFillNow, toTermSheetInput, toVaultTermInput, trancheFromCounterparty, tryParseEarnUid, unflattenLenderData, updateFeedStats, usdValue, usddIlkBytes32, usddKeyParts, usddLenderKey, validateTermSheet, validateTermSheets, validateUserData, vaultSharesToAssets, vaultTermInputFromEarnMarket, vaultTermInputFromSourceRow, vaultTraits, vaultVenue, venueBrand, venueBrandKey, withMaturityLabel, withTrancheLabel };
81416
+ export { ApiBookSource, DEFAULT_MIDNIGHT_API, DEFAULT_OUTLIER_GUARD, DEFAULT_PROFILE_ID, DEFAULT_STALE_REJECT_SECONDS, DEFAULT_TERMMAX_API, DEFAULT_TERM_ORDER_STORE, DOLOMITE_ISO_ID_PREFIX, EARN_DESCRIPTIONS, EARN_LABELS, EARN_RATE_SOURCE_BY_PROVIDER, EMPTY_BALANCE, EXACTLY_LENDER_KEY, FLYING_TULIP_LENDER_KEY, FRACTION_RATE_PROVIDERS, GMX_API_HOSTS, GMX_READ_CONTRACTS, GMX_SUPPORTED_CHAINS, HYPERCORE_VAULT_REGISTRY, IDLE_MARKET_ID, INTERFACE_IDS, LAGOON_API_URL, LAGOON_CHAIN_IDS, MORPHO_LENS, MULTICALL_FAILURE, MaxParamThresholds, PASSTHROUGH_RATE_EPSILON, PENDLE_ASSETS_URL, PENDLE_CHAIN_IDS, PENDLE_MARKETS_URL, SDK_FRACTION_RATE_PROVIDERS, SPECTRA_NETWORKS, SPECTRA_RATE_MAX_PERCENT, SPECTRA_RATE_MIN_PERCENT, STABLECOIN_SYMBOLS, STCELO_MANAGER_ADDRESS, TELLER_CALLS_PER_BID, DECIMAL_BASE as TERMMAX_DECIMAL_BASE, TERMMAX_LIQUIDATION_PENALTY, TERMMAX_LIQUIDATION_WINDOW_SECS, TERMMAX_LIQUIDATOR_BONUS, TERMMAX_MARKETS_PER_CALL, TERMMAX_PARTIAL_CLOSE_FACTOR, TERMMAX_PARTIAL_LIQUIDATION_THRESHOLD_USD, TERM_ADAPTERS, TERM_PROFILES, TERM_SHEET_SCHEMA_VERSION, TermMaxApiSource, TermSubgraphSource, UPSHIFT_CHAIN_IDS, UPSHIFT_VAULTS_URL, VAULT_PROVIDERS, VAULT_PROVIDER_PROFILE, VAULT_PROVIDER_TRAITS, VAULT_SHARE_PRICE_PROBE, VAULT_VENUE_PREFIX, VOLATILE_VAULT_OVERRIDES, YEARN_CHAIN_IDS, YEARN_YDAEMON_BASE, __resetResupplyUserCaches, accountDepositListKey, accountWithdrawalListKey, appendSnapshot, applyEarnSanity, applyPositionDelta, attachImplications, attachPricesToFlashLiquidity, borrowDescription, borrowFindings, borrowHeadline, buildExposures2 as buildExposures, buildFluidFTokensCall, buildLendingPositionUid, buildLiquityUserCall, buildLoopResult, buildMorphoTypeCall, buildMorphoTypeUserCallWithLens, buildPortfolioTotals, buildSumerAccumulators, buildSummaries, buildTellerUserCall, buildTermMaxUserCall, buildTermSheet, buildTermSheetsForGroup, buildVaultEarnUid, buildVaultLookup, buildVaultTermSheet, calculateLeverage, calculateNetApr, calculateOverallNetApr, calculateWeightedAverage, classifyFreshness, classifyReliability, classifyVault, clearPendleMarketsCache, clearSpectraMarketsCache, collateralSymbolsByVenue, collectFeedObservations, computeBorrowDelta2 as computeBorrowDelta, computeCloseTradeDeltas, computeCollateralSwapDeltas, computeDebtSwapDeltas, computeDepositDelta2 as computeDepositDelta, computeEModeAnalysis, computeOpenTradeDeltas, computePostTradeMetrics, computeRepayDelta2 as computeRepayDelta, computeSumerBorrowDelta, computeSumerDepositDelta, computeSumerRepayDelta, computeSumerWaterfall, computeSumerWithdrawDelta, computeVaultApr, computeWithdrawDelta2 as computeWithdrawDelta, computeZapTradeDeltas, consensusReference, convertCoolerMarketsToResponse, convertDssMarketsToResponse, convertExactlyMarketsToResponse, convertFlyingTulipMarketsToResponse, convertFrankencoinMarketsToResponse, convertFraxlendPairsToResponse, convertInverseMarketsToResponse, convertLenderUserDataResult, convertLiquityMarketsToResponse, convertLlamaLendMarketsToResponse, convertResupplyMarketsToResponse, convertRiverMarketsToResponse, convertTellerMarketsToResponse, convertTermMarketsToResponse, convertTermMaxMarketsToResponse, convertUsddMarketsToResponse, createMarketUid, createMidnightBookSource, createMulticallRpcCall, createRawRpcCalls, createTermBookSource, createTermMaxDataSource, decodeListaMarkets, decodeMarkets, decodePackedListaUserDataset, decodePackedMorphoUserDataset, deriveBorrowTags, deriveSupplyTags, detectInterfaceKinds, dexResolverFor, disambiguateEarnNames, dssIlkBytes32, dssKeyParts, dssLenderKey, duration, earnDescription, earnLabel, earnMarketFromPool, earnMarketFromVault, earnMarketLabel, earnPositionFromLenderEntry, earnPositionFromVaultBalance, earnPositionTotals, earnRateAtMaturity, earnRowSubtitle, earnUidFromMarketUid, earnVaultTerms, earnVenueKind, encodeBalanceFetcherCalldata, enrichTermSheet, enrichmentIndexFromRows, exactlyPairLtv, exactlyPenaltyRateToAprPercent, exactlyWadRateToPercent, feePhrase, feedKeyOf, feedStatKey, fetchCoolerMarkets, fetchDolomiteAccountNumbers, fetchDolomiteSubAccounts, fetchDssMarkets, fetchEulerEarnVaults, fetchEulerEarnVaultsFromSubgraph, fetchEulerSubAccountIndexes, fetchExactlyMarkets, fetchFlashLiquidityForChain, fetchFluidDexState, fetchFluidFTokens, fetchFlyingTulipMarkets, fetchFrankencoinMarkets, fetchFraxlendPairs, fetchGeneralYields, fetchGeneralYieldsByMarketUid, fetchGmxExecutionFees, fetchGmxTickerPrices, fetchGmxVaults, fetchHypercoreVaults, fetchInverseMarkets, fetchLagoonApiVaults, fetchLagoonVaults, fetchLiquityMarkets, fetchListaVaultsFromChain, fetchLlamaLendMarkets, fetchMorphoUserBalances, fetchMorphoUserPositionMarkets, fetchMorphoVaults, fetchMorphoVaultsFromApi, fetchMorphoVaultsFromChain, fetchOraclePrices, fetchPendleApiAssets, fetchPendleApiMarkets, fetchPendlePrices, fetchPendlePtMarkets, fetchResupplyMarkets, fetchRiverMarkets, fetchSiloVaults, fetchSpectraApiMarkets, fetchSpectraPtMarkets, fetchTellerMarkets, fetchTermMarkets, fetchTermMaxMarkets, fetchTermStoreOrders, fetchTokenBalances, fetchTokenMetadata, fetchUpshiftApiVaults, fetchUpshiftVaults, fetchUsddMarkets, fetchYearnApiVaults, fetchYearnVaults, fillableRemaining, filterActiveLenders, filterLendersByProtocol, finalizeInfo, findingsFor, formatRaw, frankencoinKeyParts, frankencoinLenderKey, fraxlendAssetPerCollateral, fraxlendKeyParts, fraxlendLenderKey, fuseLenderData, generateLendingPools, getAavesForChain, getAssetConfig, getBalanceForMarketUid, getBorrowCapacity, getCachedFluidDexState, getCachedLiquityTroves, getCachedTellerBids, getCachedTermMaxDiscovery, getCachedTermMaxMarket, getCachedTermMaxMarkets, getCoreValidators, getFluidFTokensConverter, getGmxApiHost, getGmxReadContracts, getGmxUserPositions, getHealthFactor, getHypercoreUserPositions, getHypercoreVaultRegistry, getLenderAssets, getLenderPublicData, getLenderPublicDataAll, getLenderPublicDataViaApi, getLenderUserDataMulti, getLenderUserDataResult, getLendersForChain, getLstDelegation, getLstValidators, getLstWithdrawalRegistry, getLstWithdrawalRequests, getMaxAmountClose, getMaxAmountCollateralSwap, getMaxAmountDebtSwap, getMaxAmountOpen, getMergedUserData, getMorphoTypeMarketConverter, getReadFailurePolicy, getResolvedDolomiteAccountNumbers, getResolvedDolomiteSubAccounts, getStCeloValidatorGroups, getSubAccountAddress, getSubAccountIndex, getTermProfile, getVaultPublicDataAll, getVaultWithdrawalRequests, hasCritical, hasEulerEarnVaultSubgraph, hasLagoonVaults, hasMorphoPositionIndex, hasMorphoUserApi, hasMorphoUserSubgraph, hasPendleMarkets, hasSpectraMarkets, hasUpshiftVaults, hasYearnVaults, ilkToKeySegment, implausibleRatePercent, inverseKeyParts, inverseLenderKey, isBoundNeed, isFailedCall, isIlliquid, isLendingPosition, isLiveMarket as isLivePendleMarket, isLiveSpectraMarket, isMaturedTerm, isSecondaryMarketOnly, isStablecoinSymbol, isUnearnableEarnRate, isUnrealizableEarnRate, isVaultPosition, isVaultVenue, isYearnV3, keySegmentToIlk, keysFromMaps, lenderApiOnly, lenderFamily, liquityCandidateTroveIds, liquityKeyParts, liquityLenderKey, llamaLendKeyParts, llamaLendLenderKey, meetsLiquidityFloor, mergeDeep, multicall3Abi2 as multicall3Abi, nanTo, needsLenderApproval, needsTokenApproval, noOpResult, normalizeToBytes, organizeUserQueries, parseBalanceFetcherResult, parseDolomiteSubAccountId, parseEarnUid, parseMergedResult, parseMulticallRpcResponses, parseExpirySeconds as parsePendleExpirySeconds, parseRawRpcBatchResponses, parseRawRpcResponses, parseCurveFee as parseSpectraCurveFee, parsePtRate as parseSpectraPtRate, parseTermMaxLtv, parseTokenBalanceResult, pct, assetKey as pendleAssetKey, pickPool as pickSpectraPool, positivePart2 as positivePart, predictInverseEscrow, prepareLenderUserDataRpcCalls, prepareMergedMulticallParams, prepareMergedRpcCalls, prepareMulticallInputs, prepareTokenBalanceRpcCalls, priceGlvVaults, priceGmMarkets, probeAaveFeedTimestamps, pruneFeedStats, rankFindings, ratePercent, readVaultSharePrices, rejectOutliers as rejectPriceOutliers, repairImpossibleTvl, resolveAdapter, resolveDerivation, resolveDolomiteRowIdentity, resolveEarnIdentity, resolveModeConfig, resolveStCeloDepositGroup, resolveVaultProfileId, resupplyKeyParts, resupplyLenderKey, resupplyMarketLabel, riverKeyParts, riverLenderKey, sanePercent as saneSpectraPercent, savingsAddresses, savingsBalanceKind, secondaryMarketVault, selectAssetGroupPrices, setMysticApiKey, shortDate, spectraAddress, spectraNetwork, spectraPoolsUrl, splitChainScopedAddress as splitPendleChainScopedAddress, stampCapabilities, stampEarnSubtitles, stampVaultClassification, stampVaultTermSheets, stripLeadingBrand, supplyDescription, supplyFindings, supplyHeadline, swapRoutedProvidersArePriceConsistent, tellerBpsToPercent, tellerImpliedLtv, tellerLenderKey, tellerPoolFromLenderKey, termApiBaseUrl, termLenderKey, termMaxApiBase, borrowNif as termMaxBorrowNif, curveApr as termMaxCurveApr, curveAprNumber as termMaxCurveAprNumber, daysToMaturity as termMaxDaysToMaturity, lendNif as termMaxLendNif, mintGtFeeRatio as termMaxMintGtFeeRatio, ratioToNumber as termMaxRatioToNumber, ratioToPercent as termMaxRatioToPercent, termOfferRateToAprPct, termOrderStoreBaseUrl, tickToAprNumber, tickToPrice, toDigest, toDolomiteSubAccountId, toTermFillNow, toTermSheetInput, toVaultTermInput, trancheFromCounterparty, tryParseEarnUid, unflattenLenderData, updateFeedStats, usdValue, usddIlkBytes32, usddKeyParts, usddLenderKey, validateTermSheet, validateTermSheets, validateUserData, vaultSharesToAssets, vaultTermInputFromEarnMarket, vaultTermInputFromSourceRow, vaultTraits, vaultVenue, venueBrand, venueBrandKey, withMaturityLabel, withTrancheLabel };
81243
81417
  //# sourceMappingURL=index.js.map
81244
81418
  //# sourceMappingURL=index.js.map