@1delta/margin-fetcher 5.0.14 → 5.0.15

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
@@ -1,13 +1,13 @@
1
- import { parseAbi, keccak256, encodeAbiParameters, formatEther, BaseError, erc20Abi, stringToHex, pad, encodeFunctionData, formatUnits, isAddress, getAddress, decodeFunctionResult, decodeAbiParameters, concat, AbiEncodingLengthMismatchError, concatHex, toBytes, slice, hexToString, InvalidAddressError, boolToHex, integerRegex, numberToHex, bytesRegex, BytesSizeMismatchError, arrayRegex, UnsupportedPackedAbiType } from './chunk-YILYOOYB.js';
1
+ import { parseAbi, keccak256, encodeAbiParameters, formatEther, BaseError, erc20Abi, stringToHex, isAddress, pad, encodeFunctionData, formatUnits, getAddress, decodeFunctionResult, decodeAbiParameters, concat, AbiEncodingLengthMismatchError, concatHex, toBytes, slice, hexToString, InvalidAddressError, boolToHex, integerRegex, numberToHex, bytesRegex, BytesSizeMismatchError, arrayRegex, UnsupportedPackedAbiType } from './chunk-YILYOOYB.js';
2
2
  import './chunk-BYTNVMX7.js';
3
3
  import './chunk-PR4QN5HX.js';
4
- import { Lender, isExactly, isMidnight, isTerm, isTermMax, isTeller, isListaDao, isLiquityFamily, isRiver, isInverse, isUsdd, isCompoundV3Type, isFluid, isGearboxV3, isLlamaLend, isFrankencoin, isResupply, isCurvance, LIQUITY_FAMILY_LENDERS, isAaveType, isCompoundV3, isMultiMarket, isSiloV2Type, isSiloV3Type, isDolomite, hasCrossMarginRisk, isEulerType, isAaveV4Type, isInit, isMorphoType, isCompoundV2Type, isVenusType, isSumerType, AAVE_V3_LENDERS, AAVE_V2_LENDERS, isAaveV2Type, isAaveV32Type, isAaveV3Type, isYLDR, isLista, hasSubAccounts, isTectonicType, isKineticType, isBenqiType } from '@1delta/lender-registry';
4
+ import { Lender, isExactly, isMidnight, isTerm, isTermMax, isTeller, isListaDao, isLiquityFamily, isRiver, isInverse, isDssType, isCompoundV3Type, isFluid, isGearboxV3, isLlamaLend, isFrankencoin, isResupply, isCurvance, LIQUITY_FAMILY_LENDERS, isAaveType, isCompoundV3, isMultiMarket, isSiloV2Type, isSiloV3Type, isDolomite, hasCrossMarginRisk, isEulerType, isAaveV4Type, isInit, isMorphoType, isCompoundV2Type, isVenusType, isSumerType, AAVE_V3_LENDERS, AAVE_V2_LENDERS, isAaveV2Type, isAaveV32Type, isAaveV3Type, isUsdd, isSky, 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, liquityLendersByChain, riverLendersByChain, inverseLendersByChain, llamaLendLendersByChain, usddLendersByChain, frankencoinLendersByChain, resupplyLendersByChain, curvanceLendersByChain, tellerConfigByChain, tellerPoolsByChain, termMaxConfigByChain, aaveReserves, compoundV3Reserves, liquityConfigFor, liquityBranchesByChain, riverConfigFor, riverChainData, termMaxApiBaseUrl, termMaxLenderKey, inverseConfigFor, inverseChainData, llamaLendConfigFor, llamaLendChainData, llamaLendApiBaseUrl, resupplyConfigFor, usddConfigFor, usddChainData, frankencoinConfigFor, frankencoinChainData, aaveOracles, morphoTypeMarkets, resolveMidnightApiBase, resolveTermApiBase, llamaLendMarketByVault, getSiloV2MarketEntry, getSiloV3MarketEntry, dolomiteEmode, curvanceConfigFor, aaveTokens, morphoTypeVaults, eulerConfigs, gearboxMarketCompressor, gearboxMarketConfigurators, gearboxV3LenderKey, midnightMarketsByChain, parseAaveV4SpokeLenderKey, gearboxAccountCompressor, compoundV2Tokens, exactlyMarketsByChain, aaveOraclesConfig, compoundV2Oracles, compoundV2TokenArray, compoundV2OraclesConfig, compoundV3OraclesData, compoundV3BaseData, compoundV2Reserves, aaveV4Oracles } 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, liquityLendersByChain, riverLendersByChain, inverseLendersByChain, llamaLendLendersByChain, usddLendersByChain, skyLendersByChain, frankencoinLendersByChain, resupplyLendersByChain, curvanceLendersByChain, tellerConfigByChain, tellerPoolsByChain, termMaxConfigByChain, aaveReserves, compoundV3Reserves, liquityConfigFor, liquityBranchesByChain, riverConfigFor, riverChainData, termMaxApiBaseUrl, termMaxLenderKey, inverseConfigFor, inverseChainData, llamaLendConfigFor, llamaLendChainData, llamaLendApiBaseUrl, resupplyConfigFor, dssConfigFor, dssChainData, dssDebtToken, dssDebtJoin, frankencoinConfigFor, frankencoinChainData, aaveOracles, morphoTypeMarkets, resolveMidnightApiBase, resolveTermApiBase, llamaLendMarketByVault, getSiloV2MarketEntry, getSiloV3MarketEntry, dolomiteEmode, curvanceConfigFor, aaveTokens, morphoTypeVaults, eulerConfigs, gearboxMarketCompressor, gearboxMarketConfigurators, gearboxV3LenderKey, midnightMarketsByChain, parseAaveV4SpokeLenderKey, gearboxAccountCompressor, compoundV2Tokens, exactlyMarketsByChain, aaveOraclesConfig, compoundV2Oracles, compoundV2TokenArray, compoundV2OraclesConfig, compoundV3OraclesData, compoundV3BaseData, compoundV2Reserves, aaveV4Oracles } from '@1delta/data-sdk';
7
7
  import lodash from 'lodash';
8
8
  import { Chain } from '@1delta/chain-registry';
9
9
  import { multicallRetryUniversal, getEvmClient, getEvmChain, getEvmClientUniversal } from '@1delta/providers';
10
- import { LiquityTroveManagerAbi, LiquityActivePoolAbi, LiquityStabilityPoolAbi, LiquityPriceFeedAbi, LiquitySortedTrovesAbi, RiverTroveManagerAbi, RiverStabilityPoolAbi, TellerMarketRegistryAbi, TellerV2Abi, InverseMarketAbi, InverseOracleAbi, InverseDbrAbi, Erc20Abi, LlamaLendControllerAbi, LlamaLendControllerV1Abi, LlamaLendControllerV2Abi, LlamaLendVaultAbi, LlamaLendAmmAbi, MetaMorphoAbi, ExactlyPreviewerAbi, ExactlyAuditorAbi, LenderCommitmentGroupAbi, ResupplyRegistryAbi, ResupplyPairAbi, ResupplyUtilitiesAbi, ResupplyRewardHandlerAbi, ResupplyPairEmissionsAbi, ConvexPoolUtilAbi, UsddVatAbi, UsddJugAbi, UsddSpotAbi, FrankencoinPositionAbi, FluidLendingResolverAbi, FluidVaultResolverAbi, FluidLiquidityResolverAbi, MoolahVaultAbi, MorphoLensAbi, AaveV4SpokeAbi, AaveV4OracleAbi, AaveV4HubAbi, DolomiteMarginAbi, GearboxMarketCompressorV310Abi, MorphoBlueAbi, MidnightAbi, TermRepoTokenAbi, TermRepoServicerAbi, TermRepoCollateralManagerAbi, LiquityTroveNFTAbi, LiquityCollSurplusPoolAbi, TellerCollateralManagerAbi, TermMaxViewerAbi, InverseEscrowAbi, CurvanceMarketManagerAbi, CurvanceCTokenAbi, GearboxCreditAccountCompressorV310Abi, UsddCdpManagerAbi, UsddProxyRegistryAbi, CurvanceProtocolReaderAbi, CurvanceCentralRegistryAbi, TermPriceConsumerAbi, CurvanceOracleManagerAbi, TermMaxOracleAggregatorV2Abi } from '@1delta/abis';
10
+ import { LiquityTroveManagerAbi, LiquityActivePoolAbi, LiquityStabilityPoolAbi, LiquityPriceFeedAbi, LiquitySortedTrovesAbi, RiverTroveManagerAbi, RiverStabilityPoolAbi, TellerMarketRegistryAbi, TellerV2Abi, InverseMarketAbi, InverseOracleAbi, InverseDbrAbi, Erc20Abi, LlamaLendControllerAbi, LlamaLendControllerV1Abi, LlamaLendControllerV2Abi, LlamaLendVaultAbi, LlamaLendAmmAbi, MetaMorphoAbi, ExactlyPreviewerAbi, ExactlyAuditorAbi, LenderCommitmentGroupAbi, ResupplyRegistryAbi, ResupplyPairAbi, ResupplyUtilitiesAbi, ResupplyRewardHandlerAbi, ResupplyPairEmissionsAbi, ConvexPoolUtilAbi, FrankencoinPositionAbi, FluidLendingResolverAbi, FluidVaultResolverAbi, FluidLiquidityResolverAbi, MoolahVaultAbi, UsddVatAbi, UsddJugAbi, UsddSpotAbi, MorphoLensAbi, AaveV4SpokeAbi, AaveV4OracleAbi, AaveV4HubAbi, DolomiteMarginAbi, GearboxMarketCompressorV310Abi, MorphoBlueAbi, MidnightAbi, TermRepoTokenAbi, TermRepoServicerAbi, TermRepoCollateralManagerAbi, LiquityTroveNFTAbi, LiquityCollSurplusPoolAbi, TellerCollateralManagerAbi, TermMaxViewerAbi, InverseEscrowAbi, CurvanceMarketManagerAbi, CurvanceCTokenAbi, GearboxCreditAccountCompressorV310Abi, UsddCdpManagerAbi, UsddProxyRegistryAbi, CurvanceProtocolReaderAbi, CurvanceCentralRegistryAbi, TermPriceConsumerAbi, CurvanceOracleManagerAbi, TermMaxOracleAggregatorV2Abi } from '@1delta/abis';
11
11
  export { MorphoLensAbi } from '@1delta/abis';
12
12
  import { prepareDebitDataMulticall, prepareLenderDebitMulticall, parseDebitDataResult, parseLenderDebitResult, getPermit2ContractAddress, getCompoundV3CometAddress as getCompoundV3CometAddress$1, getMorphoAddress, getAaveCollateralTokenAddress, getSiloHalfForUnderlying, bandLtvCurve, InitMarginAddresses, getLstAcceptedInputs } from '@1delta/calldata-sdk';
13
13
  import { proxyNativeFetch } from '@1delta/proxy-fetch';
@@ -6424,6 +6424,9 @@ var getLendersForChain = (c) => {
6424
6424
  for (const l of usddLendersByChain(c)) {
6425
6425
  lenders.push(l);
6426
6426
  }
6427
+ for (const l of skyLendersByChain(c)) {
6428
+ lenders.push(l);
6429
+ }
6427
6430
  for (const l of frankencoinLendersByChain(c)) {
6428
6431
  lenders.push(l);
6429
6432
  }
@@ -6454,7 +6457,7 @@ var filterLendersByProtocol = (allLenders, protocolList) => {
6454
6457
  (b) => protocolList.includes(b)
6455
6458
  );
6456
6459
  return allLenders.filter(
6457
- (lender) => protocolList.includes(lender) || hasMorpho && lender?.startsWith("MORPHO_BLUE") || hasMoolah && lender?.startsWith("LISTA_DAO") || hasFluid && lender?.startsWith("FLUID") || hasGearboxV3 && lender?.startsWith("GEARBOX_V3") || hasDolomite && lender?.startsWith("DOLOMITE") || liquityBases.some((b) => lender?.startsWith(b)) || protocolList.includes(Lender.RIVER) && lender?.startsWith("RIVER") || protocolList.includes(Lender.TELLER) && lender?.startsWith("TELLER") || protocolList.includes(Lender.USDD) && lender?.startsWith("USDD") || protocolList.includes(Lender.FRANKENCOIN) && lender?.startsWith("FRANKENCOIN")
6460
+ (lender) => protocolList.includes(lender) || hasMorpho && lender?.startsWith("MORPHO_BLUE") || hasMoolah && lender?.startsWith("LISTA_DAO") || hasFluid && lender?.startsWith("FLUID") || hasGearboxV3 && lender?.startsWith("GEARBOX_V3") || hasDolomite && lender?.startsWith("DOLOMITE") || liquityBases.some((b) => lender?.startsWith(b)) || protocolList.includes(Lender.RIVER) && lender?.startsWith("RIVER") || protocolList.includes(Lender.TELLER) && lender?.startsWith("TELLER") || protocolList.includes(Lender.USDD) && lender?.startsWith("USDD") || protocolList.includes(Lender.SKY) && lender?.startsWith("SKY") || protocolList.includes(Lender.FRANKENCOIN) && lender?.startsWith("FRANKENCOIN")
6458
6461
  );
6459
6462
  };
6460
6463
  var getAavesForChain = () => {
@@ -21885,7 +21888,7 @@ async function fetchTellerMarkets(chainId) {
21885
21888
  } catch {
21886
21889
  return { chainId, pools: [] };
21887
21890
  }
21888
- const big15 = (i) => {
21891
+ const big16 = (i) => {
21889
21892
  const r = results[i];
21890
21893
  if (typeof r === "bigint") return r;
21891
21894
  if (typeof r === "number") return BigInt(r);
@@ -21899,20 +21902,20 @@ async function fetchTellerMarkets(chainId) {
21899
21902
  return null;
21900
21903
  };
21901
21904
  const num12 = (i) => {
21902
- const b = big15(i);
21905
+ const b = big16(i);
21903
21906
  return b === null ? null : Number(b);
21904
21907
  };
21905
21908
  const pool0 = pools.map((config, i) => {
21906
21909
  const base = i * READS_PER_POOL;
21907
21910
  return {
21908
21911
  config,
21909
- available: big15(base),
21910
- committed: big15(base + 1),
21912
+ available: big16(base),
21913
+ committed: big16(base + 1),
21911
21914
  minRateBps: num12(base + 2),
21912
- collateralPerPrincipal: big15(base + 3),
21915
+ collateralPerPrincipal: big16(base + 3),
21913
21916
  maxLoanDuration: num12(base + 4),
21914
- marketId: big15(base + 5),
21915
- totalAssets: big15(base + 6)
21917
+ marketId: big16(base + 5),
21918
+ totalAssets: big16(base + 6)
21916
21919
  };
21917
21920
  });
21918
21921
  const attByMarket = /* @__PURE__ */ new Map();
@@ -25019,72 +25022,90 @@ function resolvePositionManagers(cfg, marketManager) {
25019
25022
  }
25020
25023
  return void 0;
25021
25024
  }
25022
- var READS_PER_ILK = 4;
25023
- var USDD_ABI_PER_READ = [UsddVatAbi, UsddJugAbi, UsddSpotAbi, erc20Abi];
25024
- var usddIlkBytes32 = (ilk) => stringToHex(ilk, { size: 32 });
25025
- async function fetchUsddMarkets(lender, chainId) {
25026
- const config = usddConfigFor(lender, chainId);
25027
- const chainData = usddChainData(lender, chainId);
25025
+ var CORE_READS_PER_ILK = 3;
25026
+ var DSS_CORE_ABI_PER_READ = [UsddVatAbi, UsddJugAbi, UsddSpotAbi];
25027
+ var dssIlkBytes32 = (ilk) => stringToHex(ilk, { size: 32 });
25028
+ async function fetchDssMarkets(lender, chainId) {
25029
+ const config = dssConfigFor(lender, chainId);
25030
+ const chainData = dssChainData(lender, chainId);
25028
25031
  const markets = chainData?.markets ?? [];
25029
25032
  if (!config || markets.length === 0) {
25030
25033
  return { lender, config, chainData, markets: [] };
25031
25034
  }
25032
- const calls = markets.flatMap((m) => {
25033
- const ilk32 = usddIlkBytes32(m.ilk);
25034
- return [
25035
+ const calls = [];
25036
+ const abi = [];
25037
+ const joinReadIndex = [];
25038
+ for (const m of markets) {
25039
+ const ilk32 = dssIlkBytes32(m.ilk);
25040
+ calls.push(
25035
25041
  { address: config.vat, name: "ilks", params: [ilk32] },
25036
25042
  { address: config.jug, name: "ilks", params: [ilk32] },
25037
- { address: config.spot, name: "ilks", params: [ilk32] },
25038
- { address: m.collToken, name: "balanceOf", params: [m.gemJoin] }
25039
- ];
25040
- });
25043
+ { address: config.spot, name: "ilks", params: [ilk32] }
25044
+ );
25045
+ abi.push(...DSS_CORE_ABI_PER_READ);
25046
+ if (isAddress(m.gemJoin ?? "", { strict: false })) {
25047
+ joinReadIndex.push(calls.length);
25048
+ calls.push({
25049
+ address: m.collToken,
25050
+ name: "balanceOf",
25051
+ params: [m.gemJoin]
25052
+ });
25053
+ abi.push(erc20Abi);
25054
+ } else {
25055
+ joinReadIndex.push(-1);
25056
+ }
25057
+ }
25041
25058
  let results = [];
25042
25059
  try {
25043
25060
  results = await multicallRetryUniversal({
25044
25061
  chain: chainId,
25045
25062
  calls,
25046
- abi: markets.flatMap(() => USDD_ABI_PER_READ),
25063
+ abi,
25047
25064
  allowFailure: true
25048
25065
  });
25049
25066
  } catch {
25050
25067
  return { lender, config, chainData, markets: [] };
25051
25068
  }
25052
- const big15 = (v) => {
25069
+ const big16 = (v) => {
25053
25070
  if (typeof v === "bigint") return v;
25054
25071
  if (typeof v === "number") return BigInt(v);
25055
25072
  return null;
25056
25073
  };
25057
- const field12 = (res, name, idx) => big15(res?.[name] ?? res?.[idx]);
25074
+ const field13 = (res, name, idx) => big16(res?.[name] ?? res?.[idx]);
25075
+ let cursor = 0;
25058
25076
  const out = markets.map((market, i) => {
25059
- const base = i * READS_PER_ILK;
25077
+ const base = cursor;
25078
+ cursor += CORE_READS_PER_ILK + (joinReadIndex[i] >= 0 ? 1 : 0);
25060
25079
  const vatIlk = results[base];
25061
25080
  const jugIlk = results[base + 1];
25062
25081
  const spotIlk = results[base + 2];
25063
25082
  return {
25064
25083
  market,
25065
- Art: field12(vatIlk, "Art", 0),
25066
- rate: field12(vatIlk, "rate", 1),
25067
- spot: field12(vatIlk, "spot", 2),
25068
- line: field12(vatIlk, "line", 3),
25069
- dust: field12(vatIlk, "dust", 4),
25070
- duty: field12(jugIlk, "duty", 0),
25071
- mat: field12(spotIlk, "mat", 1),
25072
- joinBalance: big15(results[base + 3])
25084
+ Art: field13(vatIlk, "Art", 0),
25085
+ rate: field13(vatIlk, "rate", 1),
25086
+ spot: field13(vatIlk, "spot", 2),
25087
+ line: field13(vatIlk, "line", 3),
25088
+ dust: field13(vatIlk, "dust", 4),
25089
+ duty: field13(jugIlk, "duty", 0),
25090
+ mat: field13(spotIlk, "mat", 1),
25091
+ joinBalance: joinReadIndex[i] >= 0 ? big16(results[joinReadIndex[i]]) : null
25073
25092
  };
25074
25093
  });
25075
25094
  return { lender, config, chainData, markets: out };
25076
25095
  }
25077
-
25078
- // src/lending/public-data/usdd/convertPublic.ts
25079
- function usddLenderKey(lender, chainId, ilk) {
25096
+ var fetchUsddMarkets = fetchDssMarkets;
25097
+ var usddIlkBytes32 = dssIlkBytes32;
25098
+ function dssLenderKey(lender, chainId, ilk) {
25080
25099
  return `${lender}_${chainId}_${ilk}`;
25081
25100
  }
25082
- function usddKeyParts(key2) {
25083
- if (!key2.startsWith("USDD_")) return void 0;
25084
- const suffix = key2.slice("USDD_".length);
25085
- const m = suffix.match(/^(\d+)_([A-Z0-9][A-Z0-9-]*)$/);
25101
+ var DSS_KEY_PREFIXES = ["USDD", "SKY"];
25102
+ var DSS_KEY_RE = new RegExp(
25103
+ `^(${DSS_KEY_PREFIXES.join("|")})_(\\d+)_([A-Z0-9][A-Z0-9-]*)$`
25104
+ );
25105
+ function dssKeyParts(key2) {
25106
+ const m = key2.match(DSS_KEY_RE);
25086
25107
  if (!m) return void 0;
25087
- return { lender: "USDD", chainId: m[1], ilk: m[2] };
25108
+ return { lender: m[1], chainId: m[2], ilk: m[3] };
25088
25109
  }
25089
25110
  var WAD9 = 1e18;
25090
25111
  var RAY4 = 1e27;
@@ -25097,7 +25118,7 @@ function currencyFor12(address, decimals, symbol, tokens) {
25097
25118
  const lower3 = address.toLowerCase();
25098
25119
  return tokens[lower3] ?? { address: lower3, symbol, name: symbol, decimals };
25099
25120
  }
25100
- function convertUsddMarketsToResponse(raw, chainId, prices = {}, _additionalYields = {
25121
+ function convertDssMarketsToResponse(raw, chainId, prices = {}, _additionalYields = {
25101
25122
  intrinsicYields: {},
25102
25123
  lenderRewards: {},
25103
25124
  loaded: true
@@ -25106,15 +25127,18 @@ function convertUsddMarketsToResponse(raw, chainId, prices = {}, _additionalYiel
25106
25127
  const cfg = raw?.config;
25107
25128
  const chainData = raw?.chainData;
25108
25129
  if (!cfg || !chainData) return out;
25109
- const debtAddr = cfg.usdd.toLowerCase();
25130
+ const rawDebtAddr = dssDebtToken(cfg);
25131
+ if (!rawDebtAddr) return out;
25132
+ const debtAddr = rawDebtAddr.toLowerCase();
25133
+ const debtJoin = dssDebtJoin(cfg);
25110
25134
  const debtDecimals = cfg.debtDecimals ?? 18;
25111
25135
  const debtToken = tokens[debtAddr];
25112
- const debtSymbol = debtToken?.symbol ?? "USDD";
25136
+ const debtSymbol = debtToken?.symbol ?? cfg.debtSymbol ?? "USDD";
25113
25137
  const debtPriceKey = toOracleKey(debtToken?.assetGroup) || toGenericPriceKey(debtAddr, chainId);
25114
25138
  const debtPrice = prices[debtPriceKey] || 1;
25115
25139
  for (const m of raw.markets ?? []) {
25116
25140
  const market = m.market;
25117
- const lenderKey = usddLenderKey(raw.lender, chainId, market.ilk);
25141
+ const lenderKey = dssLenderKey(raw.lender, chainId, market.ilk);
25118
25142
  const collAddr = market.collToken.toLowerCase();
25119
25143
  const collDecimals = market.collDecimals;
25120
25144
  const collToken = tokens[collAddr];
@@ -25133,13 +25157,14 @@ function convertUsddMarketsToResponse(raw, chainId, prices = {}, _additionalYiel
25133
25157
  const borrowApr = duty > BigInt(1e27) ? Number(duty - BigInt(10) ** BigInt(27)) / RAY4 * YEAR_SECONDS2 * 100 : 0;
25134
25158
  const line = m.line !== null ? Number(m.line) / RAD : 0;
25135
25159
  let borrowLiquidity = Math.max(0, line - totalDebt);
25136
- const halted = line === 0;
25160
+ const offboarded = market.offboarded === true;
25161
+ const halted = line === 0 || offboarded;
25137
25162
  const entry = { data: {} };
25138
25163
  const collUid = createMarketUid(chainId, lenderKey, collAddr);
25139
25164
  entry.data[collUid] = {
25140
25165
  marketUid: collUid,
25141
25166
  name: "Collateral " + collSymbol,
25142
- poolId: market.gemJoin.toLowerCase(),
25167
+ poolId: market.gemJoin?.toLowerCase(),
25143
25168
  underlying: collAddr,
25144
25169
  asset: currencyFor12(collAddr, collDecimals, collSymbol, tokens),
25145
25170
  totalDeposits: totalColl,
@@ -25197,7 +25222,8 @@ function convertUsddMarketsToResponse(raw, chainId, prices = {}, _additionalYiel
25197
25222
  totalDebtStableUSD: 0,
25198
25223
  totalDebtUSD: totalDebt * debtPrice,
25199
25224
  utilization: 0,
25200
- // The earn side is sUSDD (savings provider), not a lending deposit.
25225
+ // The earn side is the savings token (savings provider), not a lending
25226
+ // deposit.
25201
25227
  depositRate: 0,
25202
25228
  variableBorrowRate: borrowApr,
25203
25229
  stableBorrowRate: 0,
@@ -25227,6 +25253,38 @@ function convertUsddMarketsToResponse(raw, chainId, prices = {}, _additionalYiel
25227
25253
  isActive: !halted,
25228
25254
  isFrozen: halted
25229
25255
  };
25256
+ const descriptor = {
25257
+ ilk: market.ilk,
25258
+ /** Per-second stability fee (ray string) — live, metadata fallback. */
25259
+ duty: duty.toString(),
25260
+ /** Liquidation ratio (ray string). */
25261
+ mat: m.mat !== null ? m.mat.toString() : market.mat,
25262
+ /** Liquidation penalty multiplier (wad string, Dog.chop). */
25263
+ chop: market.chop,
25264
+ /** Ilk debt ceiling / per-CDP floor (rad strings). */
25265
+ line: m.line !== null ? m.line.toString() : market.line,
25266
+ dust: m.dust !== null ? m.dust.toString() : market.dust,
25267
+ /** Debt accumulator (ray string) — art × rate = debt. */
25268
+ rate: m.rate !== null ? m.rate.toString() : void 0,
25269
+ /** Governance has retired the ilk: no new debt, exits only. */
25270
+ offboarded,
25271
+ addresses: {
25272
+ vat: cfg.vat,
25273
+ jug: cfg.jug,
25274
+ spot: cfg.spot,
25275
+ dog: cfg.dog,
25276
+ cdpManager: cfg.cdpManager,
25277
+ proxyActions: cfg.proxyActions,
25278
+ proxyRegistry: cfg.proxyRegistry,
25279
+ /** DaiJoin-equivalent — the debt enter/exit adapter. */
25280
+ debtJoin,
25281
+ /** @deprecated brand-specific alias of `debtJoin`. */
25282
+ usddJoin: debtJoin,
25283
+ gemJoin: market.gemJoin,
25284
+ clip: market.clip,
25285
+ pip: market.pip
25286
+ }
25287
+ };
25230
25288
  entry.params = {
25231
25289
  market: {
25232
25290
  lender: lenderKey,
@@ -25235,41 +25293,16 @@ function convertUsddMarketsToResponse(raw, chainId, prices = {}, _additionalYiel
25235
25293
  collateralDecimals: collDecimals,
25236
25294
  // The gem join doubles as the market id (marketUid address) — one
25237
25295
  // adapter per ilk, like River's TroveManager.
25238
- id: market.gemJoin.toLowerCase(),
25296
+ id: market.gemJoin?.toLowerCase(),
25239
25297
  lltv: m.mat !== null ? m.mat.toString() : market.mat,
25240
25298
  oracle: market.pip ?? zeroAddress,
25241
25299
  irm: zeroAddress,
25242
25300
  collateralAddress: collAddr,
25243
25301
  loanAddress: debtAddr,
25244
- // --- USDD descriptor (metadata + live snapshot; consumed by the
25245
- // calldata builders + worker-api resolvers) ---
25246
- usdd: {
25247
- ilk: market.ilk,
25248
- /** Per-second stability fee (ray string) — live, metadata fallback. */
25249
- duty: duty.toString(),
25250
- /** Liquidation ratio (ray string). */
25251
- mat: m.mat !== null ? m.mat.toString() : market.mat,
25252
- /** Liquidation penalty multiplier (wad string, Dog.chop). */
25253
- chop: market.chop,
25254
- /** Ilk debt ceiling / per-CDP floor (rad strings). */
25255
- line: m.line !== null ? m.line.toString() : market.line,
25256
- dust: m.dust !== null ? m.dust.toString() : market.dust,
25257
- /** Debt accumulator (ray string) — art × rate = debt. */
25258
- rate: m.rate !== null ? m.rate.toString() : void 0,
25259
- addresses: {
25260
- vat: cfg.vat,
25261
- jug: cfg.jug,
25262
- spot: cfg.spot,
25263
- dog: cfg.dog,
25264
- cdpManager: cfg.cdpManager,
25265
- proxyActions: cfg.proxyActions,
25266
- proxyRegistry: cfg.proxyRegistry,
25267
- usddJoin: cfg.usddJoin,
25268
- gemJoin: market.gemJoin,
25269
- clip: market.clip,
25270
- pip: market.pip
25271
- }
25272
- }
25302
+ dss: descriptor,
25303
+ // Back-compat duplicate: worker-api + the term-sheet input list read
25304
+ // `market.usdd`. Same object, so the two can never drift.
25305
+ usdd: descriptor
25273
25306
  }
25274
25307
  };
25275
25308
  entry.chainId = chainId;
@@ -25277,6 +25310,9 @@ function convertUsddMarketsToResponse(raw, chainId, prices = {}, _additionalYiel
25277
25310
  }
25278
25311
  return out;
25279
25312
  }
25313
+ var convertUsddMarketsToResponse = convertDssMarketsToResponse;
25314
+ var usddLenderKey = dssLenderKey;
25315
+ var usddKeyParts = dssKeyParts;
25280
25316
  var READS_PER_MARKET3 = 10;
25281
25317
  var FRANKENCOIN_ABI_PER_READ = [
25282
25318
  FrankencoinPositionAbi,
@@ -25324,26 +25360,26 @@ async function fetchFrankencoinMarkets(lender, chainId) {
25324
25360
  } catch {
25325
25361
  return { lender, config, chainData, markets: [] };
25326
25362
  }
25327
- const big15 = (v) => {
25363
+ const big16 = (v) => {
25328
25364
  if (typeof v === "bigint") return v;
25329
25365
  if (typeof v === "number") return BigInt(v);
25330
25366
  return null;
25331
25367
  };
25332
25368
  const out = markets.map((market, i) => {
25333
25369
  const base = i * READS_PER_MARKET3;
25334
- const expiration = big15(results[base + 7]);
25370
+ const expiration = big16(results[base + 7]);
25335
25371
  return {
25336
25372
  market,
25337
- price: big15(results[base]),
25338
- minted: big15(results[base + 1]),
25339
- availableForClones: big15(results[base + 2]),
25340
- annualInterestPPM: big15(results[base + 3]),
25341
- currentFeePPM: big15(results[base + 4]),
25342
- reserveContribution: big15(results[base + 5]),
25343
- challengedAmount: big15(results[base + 6]),
25373
+ price: big16(results[base]),
25374
+ minted: big16(results[base + 1]),
25375
+ availableForClones: big16(results[base + 2]),
25376
+ annualInterestPPM: big16(results[base + 3]),
25377
+ currentFeePPM: big16(results[base + 4]),
25378
+ reserveContribution: big16(results[base + 5]),
25379
+ challengedAmount: big16(results[base + 6]),
25344
25380
  expiration,
25345
25381
  isClosed: typeof results[base + 8] === "boolean" ? results[base + 8] : null,
25346
- collateralBalance: big15(results[base + 9])
25382
+ collateralBalance: big16(results[base + 9])
25347
25383
  };
25348
25384
  });
25349
25385
  return { lender, config, chainData, markets: out };
@@ -26188,7 +26224,7 @@ async function getLenderDataFromApi(lender, chainId, prices, additionalYields, i
26188
26224
  if (isResupply(lender)) return await fetchResupplyMarkets(lender, chainId);
26189
26225
  if (isCurvance(lender)) return await fetchCurvanceMarkets(lender, chainId);
26190
26226
  if (isTermMax(lender)) return await fetchTermMaxMarkets(chainId);
26191
- if (isUsdd(lender)) return await fetchUsddMarkets(lender, chainId);
26227
+ if (isDssType(lender)) return await fetchDssMarkets(lender, chainId);
26192
26228
  if (isFrankencoin(lender))
26193
26229
  return await fetchFrankencoinMarkets(lender, chainId);
26194
26230
  return {};
@@ -26284,8 +26320,8 @@ function convertLenderDataFromApi(lender, chainId, data, prices, additionalYield
26284
26320
  additionalYields,
26285
26321
  list
26286
26322
  );
26287
- if (isUsdd(lender))
26288
- return convertUsddMarketsToResponse(
26323
+ if (isDssType(lender))
26324
+ return convertDssMarketsToResponse(
26289
26325
  data,
26290
26326
  chainId,
26291
26327
  prices,
@@ -26503,7 +26539,7 @@ function lenderApiOnly(lender, chainId) {
26503
26539
  if (isTermMax(lender)) return true;
26504
26540
  if (isResupply(lender)) return true;
26505
26541
  if (isCurvance(lender)) return true;
26506
- if (isUsdd(lender)) return true;
26542
+ if (isDssType(lender)) return true;
26507
26543
  if (isFrankencoin(lender)) return true;
26508
26544
  if (isLlamaLend(lender)) return true;
26509
26545
  return false;
@@ -28183,13 +28219,13 @@ var buildCurvanceUserCall = async (chainId, lender, account) => {
28183
28219
  ])
28184
28220
  ]);
28185
28221
  };
28186
- var USDD_CALLS_PER_CDP = 1;
28222
+ var DSS_CALLS_PER_CDP = 1;
28187
28223
  var MAX_CDP_WALK = 64;
28188
28224
  var CACHE_TTL_MS2 = 5 * 6e4;
28189
28225
  var discoveryCache4 = /* @__PURE__ */ new Map();
28190
- var cacheKey2 = (chainId, account) => `${chainId}:${account.toLowerCase()}`;
28191
- var getCachedUsddCdps = (chainId, account) => {
28192
- const hit = discoveryCache4.get(cacheKey2(chainId, account));
28226
+ var cacheKey2 = (lender, chainId, account) => `${lender}:${chainId}:${account.toLowerCase()}`;
28227
+ var getCachedDssCdps = (lender, chainId, account) => {
28228
+ const hit = discoveryCache4.get(cacheKey2(lender, chainId, account));
28193
28229
  if (!hit || Date.now() - hit.at > CACHE_TTL_MS2) return void 0;
28194
28230
  return hit;
28195
28231
  };
@@ -28202,10 +28238,10 @@ var big3 = (v) => {
28202
28238
  return 0n;
28203
28239
  };
28204
28240
  var field6 = (res, name, idx) => res?.[name] ?? res?.[idx];
28205
- var buildUsddUserCall = async (chainId, lender, account) => {
28206
- const cfg = usddConfigFor(lender, chainId);
28207
- const markets = usddChainData(lender, chainId)?.markets ?? [];
28208
- const stash = (d) => discoveryCache4.set(cacheKey2(chainId, account), d);
28241
+ var buildDssUserCall = async (chainId, lender, account) => {
28242
+ const cfg = dssConfigFor(lender, chainId);
28243
+ const markets = dssChainData(lender, chainId)?.markets ?? [];
28244
+ const stash = (d) => discoveryCache4.set(cacheKey2(lender, chainId, account), d);
28209
28245
  if (!cfg || markets.length === 0) {
28210
28246
  stash({ cdps: [], ilks: [], at: Date.now() });
28211
28247
  return [];
@@ -28255,7 +28291,7 @@ var buildUsddUserCall = async (chainId, lender, account) => {
28255
28291
  );
28256
28292
  if (head.count > BigInt(MAX_CDP_WALK)) {
28257
28293
  console.warn(
28258
- `USDD: owner ${head.owner} holds ${head.count} CDPs on chain ${chainId} \u2014 truncating discovery at ${MAX_CDP_WALK}`
28294
+ `${lender}: owner ${head.owner} holds ${head.count} CDPs on chain ${chainId} \u2014 truncating discovery at ${MAX_CDP_WALK}`
28259
28295
  );
28260
28296
  }
28261
28297
  for (let i = 0; i < steps && cursor !== 0n; i++) {
@@ -28289,13 +28325,13 @@ var buildUsddUserCall = async (chainId, lender, account) => {
28289
28325
  const calls = cdps.map((c) => ({
28290
28326
  address: cfg.vat,
28291
28327
  name: "urns",
28292
- params: [usddIlkBytes32(c.ilk), c.urn]
28328
+ params: [dssIlkBytes32(c.ilk), c.urn]
28293
28329
  }));
28294
28330
  for (const ilk of ilks) {
28295
28331
  calls.push({
28296
28332
  address: cfg.vat,
28297
28333
  name: "ilks",
28298
- params: [usddIlkBytes32(ilk)]
28334
+ params: [dssIlkBytes32(ilk)]
28299
28335
  });
28300
28336
  }
28301
28337
  return calls;
@@ -28530,7 +28566,7 @@ async function buildUserCall(chainId, lender, account, params, getClient) {
28530
28566
  return buildLlamaLendUserCall(chainId, lender, account);
28531
28567
  if (isResupply(lender)) return buildResupplyUserCall(chainId, lender, account);
28532
28568
  if (isCurvance(lender)) return buildCurvanceUserCall(chainId, lender, account);
28533
- if (isUsdd(lender)) return buildUsddUserCall(chainId, lender, account);
28569
+ if (isDssType(lender)) return buildDssUserCall(chainId, lender, account);
28534
28570
  if (isFrankencoin(lender))
28535
28571
  return buildFrankencoinUserCall(chainId, lender, account);
28536
28572
  if (isCompoundV3Type(lender))
@@ -28569,12 +28605,13 @@ function organizeUserQueries(queries) {
28569
28605
  const teller = queries.filter((q) => isTeller(q.lender));
28570
28606
  const termMax = queries.filter((q) => isTermMax(q.lender));
28571
28607
  const usdd = queries.filter((q) => isUsdd(q.lender));
28608
+ const sky = queries.filter((q) => isSky(q.lender));
28572
28609
  const llamaLend = queries.filter((q) => isLlamaLend(q.lender));
28573
28610
  const frankencoin = queries.filter((q) => isFrankencoin(q.lender));
28574
- if (morphos.length === 0 && gearbox.length === 0 && midnight.length === 0 && term.length === 0 && exactly.length === 0 && liquity.length === 0 && river.length === 0 && teller.length === 0 && termMax.length === 0 && usdd.length === 0 && frankencoin.length === 0 && llamaLend.length === 0)
28611
+ if (morphos.length === 0 && gearbox.length === 0 && midnight.length === 0 && term.length === 0 && exactly.length === 0 && liquity.length === 0 && river.length === 0 && teller.length === 0 && termMax.length === 0 && usdd.length === 0 && sky.length === 0 && frankencoin.length === 0 && llamaLend.length === 0)
28575
28612
  return queries;
28576
28613
  const others = queries.filter(
28577
- (q) => !isMorphoType(q.lender) && !isGearboxV3(q.lender) && !isMidnight(q.lender) && !isTerm(q.lender) && !isExactly(q.lender) && !isLiquityFamily(q.lender) && !isRiver(q.lender) && !isTeller(q.lender) && !isTermMax(q.lender) && !isUsdd(q.lender) && !isFrankencoin(q.lender) && !isLlamaLend(q.lender)
28614
+ (q) => !isMorphoType(q.lender) && !isGearboxV3(q.lender) && !isMidnight(q.lender) && !isTerm(q.lender) && !isExactly(q.lender) && !isLiquityFamily(q.lender) && !isRiver(q.lender) && !isTeller(q.lender) && !isTermMax(q.lender) && !isDssType(q.lender) && !isFrankencoin(q.lender) && !isLlamaLend(q.lender)
28578
28615
  );
28579
28616
  const morphoBlue = morphos.filter((q) => q.lender.startsWith("MORPHO_BLUE"));
28580
28617
  const moolah = morphos.filter((q) => q.lender.startsWith("LISTA_DAO"));
@@ -28651,6 +28688,14 @@ function organizeUserQueries(queries) {
28651
28688
  assets: void 0
28652
28689
  });
28653
28690
  }
28691
+ if (sky.length > 0) {
28692
+ result.push({
28693
+ lender: Lender.SKY,
28694
+ account: sky[0].account,
28695
+ params: sky.map((p) => p.lender),
28696
+ assets: void 0
28697
+ });
28698
+ }
28654
28699
  if (llamaLend.length > 0) {
28655
28700
  result.push({
28656
28701
  lender: Lender.LLAMALEND,
@@ -32190,27 +32235,29 @@ var big10 = (v) => {
32190
32235
  return 0n;
32191
32236
  };
32192
32237
  var field9 = (res, name, idx) => big10(res?.[name] ?? res?.[idx]);
32193
- var getUsddUserDataConverter = (lender, chainId, account, meta) => {
32194
- const cfg = usddConfigFor(lender, chainId);
32195
- const markets = usddChainData(lender, chainId)?.markets ?? [];
32196
- const discovery = getCachedUsddCdps(chainId, account);
32238
+ var getDssUserDataConverter = (lender, chainId, account, meta) => {
32239
+ const cfg = dssConfigFor(lender, chainId);
32240
+ const markets = dssChainData(lender, chainId)?.markets ?? [];
32241
+ const discovery = getCachedDssCdps(lender, chainId, account);
32197
32242
  const cdps = discovery?.cdps ?? [];
32198
32243
  const ilks = discovery?.ilks ?? [];
32199
- const expected = cfg && markets.length > 0 && cdps.length > 0 ? cdps.length * USDD_CALLS_PER_CDP + ilks.length : 0;
32244
+ const expected = cfg && markets.length > 0 && cdps.length > 0 ? cdps.length * DSS_CALLS_PER_CDP + ilks.length : 0;
32200
32245
  return [
32201
32246
  (data) => {
32202
32247
  if (!cfg || expected === 0) return void 0;
32203
32248
  if (!data || data.length < expected) return void 0;
32204
- const debtAddr = cfg.usdd.toLowerCase();
32249
+ const rawDebtAddr = dssDebtToken(cfg);
32250
+ if (!rawDebtAddr) return void 0;
32251
+ const debtAddr = rawDebtAddr.toLowerCase();
32205
32252
  const debtDecimals = cfg.debtDecimals ?? 18;
32206
32253
  const rateByIlk = /* @__PURE__ */ new Map();
32207
32254
  ilks.forEach((ilk, i) => {
32208
- const res = data[cdps.length * USDD_CALLS_PER_CDP + i];
32255
+ const res = data[cdps.length * DSS_CALLS_PER_CDP + i];
32209
32256
  if (!isFailedCall(res)) rateByIlk.set(ilk, field9(res, "rate", 1));
32210
32257
  });
32211
32258
  const perMarket = /* @__PURE__ */ new Map();
32212
32259
  cdps.forEach((cdp, i) => {
32213
- const res = data[i * USDD_CALLS_PER_CDP];
32260
+ const res = data[i * DSS_CALLS_PER_CDP];
32214
32261
  if (isFailedCall(res)) return;
32215
32262
  const ink = field9(res, "ink", 0);
32216
32263
  const art = field9(res, "art", 1);
@@ -32219,7 +32266,7 @@ var getUsddUserDataConverter = (lender, chainId, account, meta) => {
32219
32266
  if (ink === 0n && debt === 0n) return;
32220
32267
  const market = markets.find((m) => m.ilk === cdp.ilk);
32221
32268
  if (!market) return;
32222
- const key2 = usddLenderKey(lender, chainId, cdp.ilk);
32269
+ const key2 = dssLenderKey(lender, chainId, cdp.ilk);
32223
32270
  if (!perMarket.has(key2)) perMarket.set(key2, { market, positions: [] });
32224
32271
  perMarket.get(key2).positions.push({ cdp, ink, debt });
32225
32272
  });
@@ -32247,7 +32294,7 @@ var getUsddUserDataConverter = (lender, chainId, account, meta) => {
32247
32294
  const collNum = Number(collStr);
32248
32295
  const debtStr = parseRawAmount(debt.toString(), debtDecimals);
32249
32296
  const debtNum = Number(debtStr);
32250
- const usddInfo = { ...cdp };
32297
+ const dssInfo = { ...cdp };
32251
32298
  lendingPositions[cdp.cdpId] = {
32252
32299
  [collUid]: {
32253
32300
  marketUid: collUid,
@@ -32280,7 +32327,7 @@ var getUsddUserDataConverter = (lender, chainId, account, meta) => {
32280
32327
  stableBorrowRate: "0",
32281
32328
  collateralEnabled: false,
32282
32329
  claimableRewards: 0,
32283
- usddInfo
32330
+ dssInfo
32284
32331
  }
32285
32332
  };
32286
32333
  modes[cdp.cdpId] = 0;
@@ -32768,21 +32815,21 @@ function checkSubAccount(entry) {
32768
32815
  const accountId = entry?.accountId ?? "0";
32769
32816
  const balance = entry?.balanceData;
32770
32817
  const apr = entry?.aprData;
32771
- for (const field12 of BALANCE_FIELDS) {
32772
- if (isBadNumber(balance?.[field12]))
32818
+ for (const field13 of BALANCE_FIELDS) {
32819
+ if (isBadNumber(balance?.[field13]))
32773
32820
  violations.push({
32774
32821
  accountId,
32775
32822
  code: "non-finite",
32776
- detail: `balanceData.${field12} = ${balance[field12]}`,
32823
+ detail: `balanceData.${field13} = ${balance[field13]}`,
32777
32824
  requiresFailedReads: false
32778
32825
  });
32779
32826
  }
32780
- for (const field12 of APR_FIELDS) {
32781
- if (isBadNumber(apr?.[field12]))
32827
+ for (const field13 of APR_FIELDS) {
32828
+ if (isBadNumber(apr?.[field13]))
32782
32829
  violations.push({
32783
32830
  accountId,
32784
32831
  code: "non-finite",
32785
- detail: `aprData.${field12} = ${apr[field12]}`,
32832
+ detail: `aprData.${field13} = ${apr[field13]}`,
32786
32833
  requiresFailedReads: false
32787
32834
  });
32788
32835
  }
@@ -32873,8 +32920,8 @@ function getUserDataConverter(lender, chainId, account, params, meta) {
32873
32920
  return getResupplyUserDataConverter(lender, chainId, account, meta);
32874
32921
  if (isCurvance(lender))
32875
32922
  return getCurvanceUserDataConverter(lender, chainId, account, meta);
32876
- if (isUsdd(lender))
32877
- return getUsddUserDataConverter(lender, chainId, account, meta);
32923
+ if (isDssType(lender))
32924
+ return getDssUserDataConverter(lender, chainId, account, meta);
32878
32925
  if (isFrankencoin(lender))
32879
32926
  return getFrankencoinUserDataConverter(lender, chainId, account, meta);
32880
32927
  if (isCompoundV3Type(lender))
@@ -37532,7 +37579,7 @@ var getAbi2 = (lender) => {
37532
37579
  return [...InverseMarketAbi, ...InverseEscrowAbi, ...InverseDbrAbi];
37533
37580
  if (isLlamaLend(lender))
37534
37581
  return [...LlamaLendControllerAbi, ...LlamaLendAmmAbi];
37535
- if (isUsdd(lender)) return [...UsddVatAbi];
37582
+ if (isDssType(lender)) return [...UsddVatAbi];
37536
37583
  if (isFrankencoin(lender))
37537
37584
  return [...FrankencoinPositionAbi, ...erc20Abi];
37538
37585
  if (isResupply(lender))
@@ -38304,8 +38351,8 @@ function calculateOverallNetApr(totalDepositsUSD, totalDebtUSD, avgDepositApr, a
38304
38351
  return (totalDepositsUSD * avgDepositApr - totalDebtUSD * avgBorrowApr) / Math.abs(totalNetWorth) * (totalNetWorth > 0 ? 1 : -1);
38305
38352
  }
38306
38353
  function calculateWeightedAprs(items) {
38307
- const wa = (field12, weightField) => calculateWeightedAverage(
38308
- items.filter((i) => i[weightField] !== 0).map((i) => ({ value: i[field12], weight: Math.abs(i[weightField]) }))
38354
+ const wa = (field13, weightField) => calculateWeightedAverage(
38355
+ items.filter((i) => i[weightField] !== 0).map((i) => ({ value: i[field13], weight: Math.abs(i[weightField]) }))
38309
38356
  );
38310
38357
  return {
38311
38358
  apr: wa("apr", "nav"),
@@ -47963,6 +48010,96 @@ var riverFetcher = {
47963
48010
  parse: parseRiverResults,
47964
48011
  getAbi: getRiverAbi
47965
48012
  };
48013
+ var dssLendersByChain = (chainId) => [
48014
+ ...skyLendersByChain(chainId),
48015
+ ...usddLendersByChain(chainId)
48016
+ ];
48017
+ function getDssCalls(chainId) {
48018
+ const results = [];
48019
+ for (const lender of dssLendersByChain(chainId)) {
48020
+ const cfg = dssConfigFor(lender, chainId);
48021
+ const markets = dssChainData(lender, chainId)?.markets ?? [];
48022
+ if (!cfg?.vat || markets.length === 0) continue;
48023
+ const debtToken = dssDebtToken(cfg);
48024
+ for (const m of markets) {
48025
+ if (!m.ilk || !m.collToken || !m.mat) continue;
48026
+ const calls = [
48027
+ { address: cfg.vat, name: "ilks", params: [dssIlkBytes32(m.ilk)] }
48028
+ ];
48029
+ results.push({
48030
+ calls,
48031
+ meta: {
48032
+ lender,
48033
+ chainId,
48034
+ ilk: m.ilk,
48035
+ collToken: m.collToken.toLowerCase(),
48036
+ debtToken: debtToken?.toLowerCase(),
48037
+ mat: String(m.mat)
48038
+ },
48039
+ lender: dssLenderKey(lender, chainId, m.ilk)
48040
+ });
48041
+ }
48042
+ }
48043
+ return results;
48044
+ }
48045
+ var RAY8 = 1e27;
48046
+ var big13 = (v) => {
48047
+ try {
48048
+ if (typeof v === "bigint") return v;
48049
+ if (v == null || v === "0x") return 0n;
48050
+ return BigInt(v);
48051
+ } catch {
48052
+ return 0n;
48053
+ }
48054
+ };
48055
+ var field12 = (res, name, idx) => {
48056
+ const v = res?.[name];
48057
+ if (typeof v === "bigint" || typeof v === "number" || typeof v === "string") {
48058
+ return big13(v);
48059
+ }
48060
+ return big13(res?.[idx]);
48061
+ };
48062
+ function parseDssResults(data, meta, context) {
48063
+ const { chainId } = context;
48064
+ const key2 = dssLenderKey(meta.lender, chainId, meta.ilk);
48065
+ const entries = [];
48066
+ const spot = field12(data?.[0], "spot", 2);
48067
+ const mat = big13(meta.mat);
48068
+ if (spot > 0n && mat > 0n) {
48069
+ const collUSD = Number(spot) / RAY8 * (Number(mat) / RAY8);
48070
+ if (collUSD > 0 && collUSD < 1e9) {
48071
+ entries.push({
48072
+ asset: meta.collToken,
48073
+ price: collUSD,
48074
+ priceUSD: collUSD,
48075
+ marketUid: createMarketUid(chainId, key2, meta.collToken),
48076
+ targetLender: key2,
48077
+ description: "Maker OSM via Vat.spot \xD7 Spot.mat (USD, ~1h delayed)"
48078
+ });
48079
+ }
48080
+ }
48081
+ if (meta.debtToken) {
48082
+ entries.push({
48083
+ asset: meta.debtToken,
48084
+ price: 1,
48085
+ priceUSD: 1,
48086
+ marketUid: createMarketUid(chainId, key2, meta.debtToken),
48087
+ targetLender: key2,
48088
+ description: "dss debt token (par)",
48089
+ staticBase: true,
48090
+ baseAsset: meta.debtToken
48091
+ });
48092
+ }
48093
+ return entries;
48094
+ }
48095
+ function getDssAbi() {
48096
+ return UsddVatAbi;
48097
+ }
48098
+ var dssFetcher = {
48099
+ getCalls: getDssCalls,
48100
+ parse: parseDssResults,
48101
+ getAbi: getDssAbi
48102
+ };
47966
48103
  var READS_PER_ASSET = 2;
47967
48104
  function getCurvanceCalls(chainId) {
47968
48105
  const results = [];
@@ -50117,6 +50254,7 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
50117
50254
  () => riverFetcher.getCalls(chainId),
50118
50255
  getCallsErrors
50119
50256
  ) : [];
50257
+ const dssResults = isActive("dss") ? safeGetCalls("dss", () => dssFetcher.getCalls(chainId), getCallsErrors) : [];
50120
50258
  const curvanceResults = isActive("curvance") ? safeGetCalls(
50121
50259
  "curvance",
50122
50260
  () => curvanceFetcher.getCalls(chainId),
@@ -50253,6 +50391,13 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
50253
50391
  getRiverAbi(),
50254
50392
  "direct"
50255
50393
  );
50394
+ const dssGroup = buildGroup(
50395
+ "dss",
50396
+ dssResults,
50397
+ dssFetcher.parse,
50398
+ dssFetcher.getAbi(),
50399
+ "direct"
50400
+ );
50256
50401
  const curvanceGroup = buildGroup(
50257
50402
  "curvance",
50258
50403
  curvanceResults,
@@ -50332,6 +50477,7 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
50332
50477
  termGroup,
50333
50478
  liquityGroup,
50334
50479
  riverGroup,
50480
+ dssGroup,
50335
50481
  curvanceGroup,
50336
50482
  inverseGroup,
50337
50483
  tellerGroup,
@@ -50382,6 +50528,7 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
50382
50528
  termData,
50383
50529
  liquityData,
50384
50530
  riverData,
50531
+ dssData,
50385
50532
  curvanceData,
50386
50533
  inverseData,
50387
50534
  tellerData,
@@ -50510,6 +50657,14 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
50510
50657
  allowFailure,
50511
50658
  rpcOverrides
50512
50659
  ),
50660
+ executeGroup(
50661
+ dssGroup,
50662
+ chainId,
50663
+ chainBatchSize,
50664
+ retries,
50665
+ allowFailure,
50666
+ rpcOverrides
50667
+ ),
50513
50668
  executeGroup(
50514
50669
  curvanceGroup,
50515
50670
  chainId,
@@ -50669,6 +50824,7 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
50669
50824
  parseTrackers(termGroup, termData.results);
50670
50825
  parseTrackers(liquityGroup, liquityData.results);
50671
50826
  parseTrackers(riverGroup, riverData.results);
50827
+ parseTrackers(dssGroup, dssData.results);
50672
50828
  parseTrackers(curvanceGroup, curvanceData.results);
50673
50829
  parseTrackers(inverseGroup, inverseData.results);
50674
50830
  if (siloV2GqlEntries != null) {
@@ -51269,10 +51425,10 @@ function createAssetArrayPerChain() {
51269
51425
  return assetsPerChain;
51270
51426
  }
51271
51427
  var RELEVANT_LENDING_ASSETS = () => createAssetArrayPerChain();
51272
- function createSimpleArrayPerChain(fork, field12 = void 0) {
51428
+ function createSimpleArrayPerChain(fork, field13 = void 0) {
51273
51429
  let pools = {};
51274
51430
  Object.entries(fork ?? {}).forEach(([b2, data]) => {
51275
- Object.entries(field12 ? data[field12] : data).forEach(
51431
+ Object.entries(field13 ? data[field13] : data).forEach(
51276
51432
  ([chainId, address]) => {
51277
51433
  if (!pools[chainId]) pools[chainId] = [];
51278
51434
  pools[chainId] = uniq2([...pools[chainId], { address, pool: b2 }]);
@@ -53479,9 +53635,9 @@ query EvkByAssets($assets: [Bytes!]!) {
53479
53635
  `;
53480
53636
  var ZERO2 = 0n;
53481
53637
  var RAY_TO_PERCENT3 = 1e25;
53482
- function readAddress2(field12) {
53483
- if (!field12) return void 0;
53484
- return field12.toLowerCase();
53638
+ function readAddress2(field13) {
53639
+ if (!field13) return void 0;
53640
+ return field13.toLowerCase();
53485
53641
  }
53486
53642
  function parseVaultFee(v) {
53487
53643
  if (v.performanceFee == null) return 0;
@@ -53846,7 +54002,7 @@ var num4 = (v) => {
53846
54002
  const n = Number(v);
53847
54003
  return Number.isFinite(n) ? n : 0;
53848
54004
  };
53849
- var big13 = (v) => {
54005
+ var big14 = (v) => {
53850
54006
  try {
53851
54007
  if (v === void 0 || v === null || v === "") return "0";
53852
54008
  const s = String(v);
@@ -53882,12 +54038,12 @@ async function fetchTermMaxVaultsFromApi(chainId, prices = {}, tokenList = {}, f
53882
54038
  const assetEntry = tokenList[underlying];
53883
54039
  const priceKey = toOracleKey(assetEntry?.assetGroup) || toGenericPriceKey(underlying, chainId);
53884
54040
  const priceUsd = prices[priceKey];
53885
- const totalAssets = big13(r.totalAssets);
53886
- const totalSupply = big13(r.totalSupplyAmt);
54041
+ const totalAssets = big14(r.totalAssets);
54042
+ const totalSupply = big14(r.totalSupplyAmt);
53887
54043
  const totalAssetsFormatted = Number(totalAssets) / scale2;
53888
54044
  const supplyRate = num4(r.apr) * 100;
53889
54045
  const rewardsRate = num4(r?.incentiveData?.TMX_APR) * 100;
53890
- const rawLiquidity = BigInt(big13(r.redeemableAmt ?? r.idleFunds ?? "0"));
54046
+ const rawLiquidity = BigInt(big14(r.redeemableAmt ?? r.idleFunds ?? "0"));
53891
54047
  const totalAssetsBig = BigInt(totalAssets);
53892
54048
  const liquidity = (rawLiquidity > totalAssetsBig ? totalAssetsBig : rawLiquidity).toString();
53893
54049
  const liquidityFormatted = Number(liquidity) / scale2;
@@ -53923,7 +54079,7 @@ async function fetchTermMaxVaultsFromApi(chainId, prices = {}, tokenList = {}, f
53923
54079
  liquidityUsd: priceUsd ? liquidityFormatted * priceUsd : 0,
53924
54080
  version: r.version,
53925
54081
  isPaused: r.isPaused === true || void 0,
53926
- supplyCap: r.capacity ? big13(r.capacity) : void 0,
54082
+ supplyCap: r.capacity ? big14(r.capacity) : void 0,
53927
54083
  basePool: r.poolAddress ? lower2(r.poolAddress) : void 0
53928
54084
  };
53929
54085
  }
@@ -53979,7 +54135,7 @@ var Erc20DecimalsBalanceAbi = [
53979
54135
 
53980
54136
  // src/vaults/termmax/fetchFromChain.ts
53981
54137
  var DECIMAL_BASE2 = 100000000n;
53982
- var big14 = (v) => {
54138
+ var big15 = (v) => {
53983
54139
  if (v === void 0 || v === null || v === "0x") return 0n;
53984
54140
  try {
53985
54141
  return typeof v === "bigint" ? v : BigInt(v);
@@ -54043,7 +54199,7 @@ var fetchTermMaxVaultsFromChain = async (chainId, multicallRetry, prices = {}, t
54043
54199
  vaults.forEach((address, i) => {
54044
54200
  const at = (k) => res[i * READS_PER_VAULT + VAULT_READS.indexOf(k)];
54045
54201
  const asset = addr(at("asset"));
54046
- const totalAssets = big14(at("totalAssets"));
54202
+ const totalAssets = big15(at("totalAssets"));
54047
54203
  if (!asset || totalAssets === 0n) return;
54048
54204
  rows.push({
54049
54205
  address,
@@ -54052,11 +54208,11 @@ var fetchTermMaxVaultsFromChain = async (chainId, multicallRetry, prices = {}, t
54052
54208
  decimals: num5(at("decimals")) ?? 18,
54053
54209
  asset,
54054
54210
  totalAssets,
54055
- totalSupply: big14(at("totalSupply")),
54056
- annualizedInterest: big14(at("annualizedInterest")),
54057
- accretingPrincipal: big14(at("accretingPrincipal")),
54058
- performanceFeeRate: big14(at("performanceFeeRate")),
54059
- aprRaw: at("apr") != null ? big14(at("apr")) : void 0,
54211
+ totalSupply: big15(at("totalSupply")),
54212
+ annualizedInterest: big15(at("annualizedInterest")),
54213
+ accretingPrincipal: big15(at("accretingPrincipal")),
54214
+ performanceFeeRate: big15(at("performanceFeeRate")),
54215
+ aprRaw: at("apr") != null ? big15(at("apr")) : void 0,
54060
54216
  curator: addr(at("curator")),
54061
54217
  guardian: addr(at("guardian")),
54062
54218
  timelock: num5(at("timelock")),
@@ -54077,7 +54233,7 @@ var fetchTermMaxVaultsFromChain = async (chainId, multicallRetry, prices = {}, t
54077
54233
  const out = {};
54078
54234
  rows.forEach((r, i) => {
54079
54235
  const assetDecimals = num5(res2[i * 2]) ?? r.decimals;
54080
- const idle = big14(res2[i * 2 + 1]);
54236
+ const idle = big15(res2[i * 2 + 1]);
54081
54237
  const assetEntry = tokenList[r.asset];
54082
54238
  const priceKey = toOracleKey(assetEntry?.assetGroup) || toGenericPriceKey(r.asset, chainId);
54083
54239
  const priceUsd = prices[priceKey];
@@ -61482,23 +61638,23 @@ var priceGmMarkets = async (chainId, multicallRetry, markets, prices) => {
61482
61638
  const indexMax = price(prices, m.indexToken)?.max;
61483
61639
  if (Array.isArray(dsRes) && longMax != null && shortMax != null) {
61484
61640
  const base = i * SLOTS;
61485
- const big15 = (j) => typeof dsRes[base + j] === "bigint" ? dsRes[base + j] : 0n;
61641
+ const big16 = (j) => typeof dsRes[base + j] === "bigint" ? dsRes[base + j] : 0n;
61486
61642
  const cap = computeDepositCapacityUsd(
61487
- [info?.longTokenAmount, longMax, big15(0), big15(2)],
61488
- [info?.shortTokenAmount, shortMax, big15(1), big15(3)]
61643
+ [info?.longTokenAmount, longMax, big16(0), big16(2)],
61644
+ [info?.shortTokenAmount, shortMax, big16(1), big16(3)]
61489
61645
  );
61490
61646
  if (cap != null) value.depositCapacityUsd = cap;
61491
61647
  if (indexMax != null) {
61492
61648
  const divisor = m.longToken.toLowerCase() === m.shortToken.toLowerCase() ? 2n : 1n;
61493
- const reservedUsdLong = (big15(4) + big15(5)) / divisor * indexMax;
61494
- const reservedUsdShort = (big15(6) + big15(7)) / divisor;
61649
+ const reservedUsdLong = (big16(4) + big16(5)) / divisor * indexMax;
61650
+ const reservedUsdShort = (big16(6) + big16(7)) / divisor;
61495
61651
  const liq = computeLiquidityUsd(
61496
61652
  info?.longTokenUsd,
61497
61653
  info?.shortTokenUsd,
61498
61654
  reservedUsdLong,
61499
61655
  reservedUsdShort,
61500
- big15(8),
61501
- big15(9)
61656
+ big16(8),
61657
+ big16(9)
61502
61658
  );
61503
61659
  if (liq != null)
61504
61660
  value.liquidityUsd = Math.max(0, Math.min(liq, value.tvlUsd));
@@ -61697,21 +61853,21 @@ var fetchGmxExecutionFees = async (chainId, multicallRetry, gasPriceWei) => {
61697
61853
  } catch {
61698
61854
  return void 0;
61699
61855
  }
61700
- const big15 = (i) => typeof res[i] === "bigint" ? res[i] : 0n;
61701
- const base = big15(0);
61702
- const mult = big15(1);
61856
+ const big16 = (i) => typeof res[i] === "bigint" ? res[i] : 0n;
61857
+ const base = big16(0);
61858
+ const mult = big16(1);
61703
61859
  if (base === 0n && mult === 0n) return void 0;
61704
61860
  const PRECISION = 10n ** 30n;
61705
61861
  const adjusted = (opGas) => base + opGas * mult / PRECISION;
61706
61862
  const fee = (opGas) => (adjusted(opGas) * gasPriceWei).toString();
61707
- const glvExtra = big15(6) * GLV_NOMINAL_MARKET_COUNT;
61863
+ const glvExtra = big16(6) * GLV_NOMINAL_MARKET_COUNT;
61708
61864
  return {
61709
61865
  chainId,
61710
61866
  gasPriceWei: gasPriceWei.toString(),
61711
- deposit: fee(big15(2)),
61712
- withdrawal: fee(big15(3)),
61713
- glvDeposit: fee(big15(4) + glvExtra),
61714
- glvWithdrawal: fee(big15(5) + glvExtra)
61867
+ deposit: fee(big16(2)),
61868
+ withdrawal: fee(big16(3)),
61869
+ glvDeposit: fee(big16(4) + glvExtra),
61870
+ glvWithdrawal: fee(big16(5) + glvExtra)
61715
61871
  };
61716
61872
  };
61717
61873
 
@@ -63059,6 +63215,7 @@ var ROW_DESCRIPTOR_KEYS = [
63059
63215
  "inverse",
63060
63216
  "exactly",
63061
63217
  "usdd",
63218
+ "dss",
63062
63219
  "termmax",
63063
63220
  // These five were missing, and the failure is SILENT: the adapter still
63064
63221
  // runs, reads an empty descriptor and returns a sheet that looks complete
@@ -63680,9 +63837,12 @@ var TERM_PROFILES = [
63680
63837
  }
63681
63838
  }),
63682
63839
  P({
63683
- id: "usdd.cdp@v1",
63684
- name: "USDD CDP ilk",
63685
- family: "usdd",
63840
+ id: "dss.cdp@v1",
63841
+ name: "Maker-style (dss) CDP ilk",
63842
+ // One profile for the whole dss family — Sky (the original MakerDAO) and
63843
+ // its forks (USDD 2.0). The prose is identical because the mechanism is:
63844
+ // same Vat/Jug/Spot accounting, same governance-set stability fee.
63845
+ family: "dss",
63686
63846
  borrow: {
63687
63847
  description: "A Maker-style CDP with a governance-set stability fee and no utilization curve.",
63688
63848
  implications: [
@@ -64003,8 +64163,8 @@ function resolveMinDebt(input) {
64003
64163
  m.river?.minNetDebt,
64004
64164
  // Inverse FiRM.
64005
64165
  m.inverse?.minDebt,
64006
- // USDD / Maker-fork: `dust` IS the per-vault debt floor.
64007
- m.usdd?.dust,
64166
+ // dss (Sky / the USDD fork): `dust` IS the per-vault debt floor.
64167
+ m.dss?.dust ?? m.usdd?.dust,
64008
64168
  // Gearbox credit facade.
64009
64169
  m.gearbox?.minDebt,
64010
64170
  // Resupply — a hard per-position floor that also bounds partial repayment.
@@ -65170,10 +65330,10 @@ var inverseAdapter = {
65170
65330
  }
65171
65331
  })
65172
65332
  };
65173
- var usddAdapter = {
65174
- id: "usdd",
65175
- matches: isUsdd,
65176
- profileId: () => "usdd.cdp@v1",
65333
+ var dssAdapter = {
65334
+ id: "dss",
65335
+ matches: isDssType,
65336
+ profileId: () => "dss.cdp@v1",
65177
65337
  build: () => ({
65178
65338
  borrow: {
65179
65339
  rate: { kind: "variable-managed", source: "governance", isLocked: false },
@@ -65587,7 +65747,7 @@ var TERM_ADAPTERS = [
65587
65747
  liquityAdapter,
65588
65748
  riverAdapter,
65589
65749
  inverseAdapter,
65590
- usddAdapter,
65750
+ dssAdapter,
65591
65751
  compoundV3Adapter,
65592
65752
  fluidAdapter,
65593
65753
  gearboxAdapter,
@@ -66029,6 +66189,6 @@ function validateTermSheets(sheets) {
66029
66189
  return sheets.flatMap((s) => validateTermSheet(s));
66030
66190
  }
66031
66191
 
66032
- export { ApiBookSource, DEFAULT_MIDNIGHT_API, DEFAULT_OUTLIER_GUARD, DEFAULT_PROFILE_ID, DEFAULT_STALE_REJECT_SECONDS, DEFAULT_TERMMAX_API, EMPTY_BALANCE, EXACTLY_LENDER_KEY, 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, STABLECOIN_SYMBOLS, STCELO_MANAGER_ADDRESS, TELLER_CALLS_PER_BID, TERMMAX_CALLS_PER_ACCOUNT, DECIMAL_BASE as TERMMAX_DECIMAL_BASE, TERMMAX_LIQUIDATION_PENALTY, TERMMAX_LIQUIDATION_WINDOW_SECS, TERMMAX_LIQUIDATOR_BONUS, 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_SHARE_PRICE_PROBE, VOLATILE_VAULT_OVERRIDES, YEARN_CHAIN_IDS, YEARN_YDAEMON_BASE, __resetResupplyUserCaches, accountDepositListKey, accountWithdrawalListKey, appendSnapshot, applyPositionDelta, attachImplications, attachPricesToFlashLiquidity, borrowDescription, borrowFindings, borrowHeadline, buildExposures2 as buildExposures, buildFluidFTokensCall, buildLiquityUserCall, buildLoopResult, buildMorphoTypeCall, buildMorphoTypeUserCallWithLens, buildPortfolioTotals, buildSumerAccumulators, buildSummaries, buildTellerUserCall, buildTermMaxUserCall, buildTermSheet, buildTermSheetsForGroup, buildVaultLookup, calculateLeverage, calculateNetApr, calculateOverallNetApr, calculateWeightedAverage, classifyFreshness, classifyReliability, classifyVault, 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, convertExactlyMarketsToResponse, convertFrankencoinMarketsToResponse, convertInverseMarketsToResponse, convertLenderUserDataResult, convertLiquityMarketsToResponse, convertLlamaLendMarketsToResponse, convertResupplyMarketsToResponse, convertRiverMarketsToResponse, convertTellerMarketsToResponse, convertTermMarketsToResponse, convertTermMaxMarketsToResponse, convertUsddMarketsToResponse, createMarketUid, createMidnightBookSource, createMulticallRpcCall, createRawRpcCalls, createTermBookSource, createTermMaxDataSource, decodeListaMarkets, decodeMarkets, decodePackedListaUserDataset, decodePackedMorphoUserDataset, deriveBorrowTags, deriveSupplyTags, detectInterfaceKinds, duration, encodeBalanceFetcherCalldata, enrichTermSheet, enrichmentIndexFromRows, exactlyPairLtv, exactlyPenaltyRateToAprPercent, exactlyWadRateToPercent, feePhrase, feedKeyOf, feedStatKey, fetchDolomiteAccountNumbers, fetchEulerEarnVaults, fetchEulerEarnVaultsFromSubgraph, fetchEulerSubAccountIndexes, fetchExactlyMarkets, fetchFlashLiquidityForChain, fetchFluidFTokens, fetchFrankencoinMarkets, fetchGeneralYields, fetchGeneralYieldsByMarketUid, fetchGmxExecutionFees, fetchGmxTickerPrices, fetchGmxVaults, fetchHypercoreVaults, fetchInverseMarkets, fetchLagoonApiVaults, fetchLagoonVaults, fetchLiquityMarkets, fetchListaVaultsFromChain, fetchLlamaLendMarkets, fetchMorphoUserBalances, fetchMorphoUserPositionMarkets, fetchMorphoVaults, fetchMorphoVaultsFromApi, fetchMorphoVaultsFromChain, fetchOraclePrices, fetchPendlePrices, fetchResupplyMarkets, fetchRiverMarkets, fetchSiloVaults, fetchTellerMarkets, fetchTermMarkets, fetchTermMaxMarkets, fetchTokenBalances, fetchTokenMetadata, fetchUpshiftApiVaults, fetchUpshiftVaults, fetchUsddMarkets, fetchYearnApiVaults, fetchYearnVaults, filterActiveLenders, filterLendersByProtocol, finalizeInfo, findingsFor, frankencoinKeyParts, frankencoinLenderKey, fuseLenderData, generateLendingPools, getAavesForChain, getAssetConfig, getBalanceForMarketUid, getBorrowCapacity, 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, hasUpshiftVaults, hasYearnVaults, inverseKeyParts, inverseLenderKey, isFailedCall, isStablecoinSymbol, isYearnV3, keysFromMaps, lenderApiOnly, lenderFamily, liquityCandidateTroveIds, liquityKeyParts, liquityLenderKey, llamaLendKeyParts, llamaLendLenderKey, mergeDeep, multicall3Abi2 as multicall3Abi, nanTo, needsLenderApproval, needsTokenApproval, noOpResult, normalizeToBytes, parseBalanceFetcherResult, parseMergedResult, parseMulticallRpcResponses, parseRawRpcBatchResponses, parseRawRpcResponses, parseTermMaxLtv, parseTokenBalanceResult, pct, positivePart2 as positivePart, predictInverseEscrow, prepareLenderUserDataRpcCalls, prepareMergedMulticallParams, prepareMergedRpcCalls, prepareMulticallInputs, prepareTokenBalanceRpcCalls, priceGlvVaults, priceGmMarkets, probeAaveFeedTimestamps, pruneFeedStats, rankFindings, readVaultSharePrices, rejectOutliers as rejectPriceOutliers, resolveAdapter, resolveDerivation, resolveStCeloDepositGroup, resupplyKeyParts, resupplyLenderKey, resupplyMarketLabel, riverKeyParts, riverLenderKey, selectAssetGroupPrices, shortDate, stampVaultClassification, supplyDescription, supplyFindings, supplyHeadline, tellerBpsToPercent, tellerImpliedLtv, tellerLenderKey, tellerPoolFromLenderKey, 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, tickToAprNumber, tickToPrice, toDigest, toTermSheetInput, unflattenLenderData, updateFeedStats, usddIlkBytes32, usddKeyParts, usddLenderKey, validateTermSheet, validateTermSheets, validateUserData };
66192
+ export { ApiBookSource, DEFAULT_MIDNIGHT_API, DEFAULT_OUTLIER_GUARD, DEFAULT_PROFILE_ID, DEFAULT_STALE_REJECT_SECONDS, DEFAULT_TERMMAX_API, EMPTY_BALANCE, EXACTLY_LENDER_KEY, 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, STABLECOIN_SYMBOLS, STCELO_MANAGER_ADDRESS, TELLER_CALLS_PER_BID, TERMMAX_CALLS_PER_ACCOUNT, DECIMAL_BASE as TERMMAX_DECIMAL_BASE, TERMMAX_LIQUIDATION_PENALTY, TERMMAX_LIQUIDATION_WINDOW_SECS, TERMMAX_LIQUIDATOR_BONUS, 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_SHARE_PRICE_PROBE, VOLATILE_VAULT_OVERRIDES, YEARN_CHAIN_IDS, YEARN_YDAEMON_BASE, __resetResupplyUserCaches, accountDepositListKey, accountWithdrawalListKey, appendSnapshot, applyPositionDelta, attachImplications, attachPricesToFlashLiquidity, borrowDescription, borrowFindings, borrowHeadline, buildExposures2 as buildExposures, buildFluidFTokensCall, buildLiquityUserCall, buildLoopResult, buildMorphoTypeCall, buildMorphoTypeUserCallWithLens, buildPortfolioTotals, buildSumerAccumulators, buildSummaries, buildTellerUserCall, buildTermMaxUserCall, buildTermSheet, buildTermSheetsForGroup, buildVaultLookup, calculateLeverage, calculateNetApr, calculateOverallNetApr, calculateWeightedAverage, classifyFreshness, classifyReliability, classifyVault, 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, convertDssMarketsToResponse, convertExactlyMarketsToResponse, convertFrankencoinMarketsToResponse, convertInverseMarketsToResponse, convertLenderUserDataResult, convertLiquityMarketsToResponse, convertLlamaLendMarketsToResponse, convertResupplyMarketsToResponse, convertRiverMarketsToResponse, convertTellerMarketsToResponse, convertTermMarketsToResponse, convertTermMaxMarketsToResponse, convertUsddMarketsToResponse, createMarketUid, createMidnightBookSource, createMulticallRpcCall, createRawRpcCalls, createTermBookSource, createTermMaxDataSource, decodeListaMarkets, decodeMarkets, decodePackedListaUserDataset, decodePackedMorphoUserDataset, deriveBorrowTags, deriveSupplyTags, detectInterfaceKinds, dssIlkBytes32, dssKeyParts, dssLenderKey, duration, encodeBalanceFetcherCalldata, enrichTermSheet, enrichmentIndexFromRows, exactlyPairLtv, exactlyPenaltyRateToAprPercent, exactlyWadRateToPercent, feePhrase, feedKeyOf, feedStatKey, fetchDolomiteAccountNumbers, fetchDssMarkets, fetchEulerEarnVaults, fetchEulerEarnVaultsFromSubgraph, fetchEulerSubAccountIndexes, fetchExactlyMarkets, fetchFlashLiquidityForChain, fetchFluidFTokens, fetchFrankencoinMarkets, fetchGeneralYields, fetchGeneralYieldsByMarketUid, fetchGmxExecutionFees, fetchGmxTickerPrices, fetchGmxVaults, fetchHypercoreVaults, fetchInverseMarkets, fetchLagoonApiVaults, fetchLagoonVaults, fetchLiquityMarkets, fetchListaVaultsFromChain, fetchLlamaLendMarkets, fetchMorphoUserBalances, fetchMorphoUserPositionMarkets, fetchMorphoVaults, fetchMorphoVaultsFromApi, fetchMorphoVaultsFromChain, fetchOraclePrices, fetchPendlePrices, fetchResupplyMarkets, fetchRiverMarkets, fetchSiloVaults, fetchTellerMarkets, fetchTermMarkets, fetchTermMaxMarkets, fetchTokenBalances, fetchTokenMetadata, fetchUpshiftApiVaults, fetchUpshiftVaults, fetchUsddMarkets, fetchYearnApiVaults, fetchYearnVaults, filterActiveLenders, filterLendersByProtocol, finalizeInfo, findingsFor, frankencoinKeyParts, frankencoinLenderKey, fuseLenderData, generateLendingPools, getAavesForChain, getAssetConfig, getBalanceForMarketUid, getBorrowCapacity, 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, hasUpshiftVaults, hasYearnVaults, inverseKeyParts, inverseLenderKey, isFailedCall, isStablecoinSymbol, isYearnV3, keysFromMaps, lenderApiOnly, lenderFamily, liquityCandidateTroveIds, liquityKeyParts, liquityLenderKey, llamaLendKeyParts, llamaLendLenderKey, mergeDeep, multicall3Abi2 as multicall3Abi, nanTo, needsLenderApproval, needsTokenApproval, noOpResult, normalizeToBytes, parseBalanceFetcherResult, parseMergedResult, parseMulticallRpcResponses, parseRawRpcBatchResponses, parseRawRpcResponses, parseTermMaxLtv, parseTokenBalanceResult, pct, positivePart2 as positivePart, predictInverseEscrow, prepareLenderUserDataRpcCalls, prepareMergedMulticallParams, prepareMergedRpcCalls, prepareMulticallInputs, prepareTokenBalanceRpcCalls, priceGlvVaults, priceGmMarkets, probeAaveFeedTimestamps, pruneFeedStats, rankFindings, readVaultSharePrices, rejectOutliers as rejectPriceOutliers, resolveAdapter, resolveDerivation, resolveStCeloDepositGroup, resupplyKeyParts, resupplyLenderKey, resupplyMarketLabel, riverKeyParts, riverLenderKey, selectAssetGroupPrices, shortDate, stampVaultClassification, supplyDescription, supplyFindings, supplyHeadline, tellerBpsToPercent, tellerImpliedLtv, tellerLenderKey, tellerPoolFromLenderKey, 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, tickToAprNumber, tickToPrice, toDigest, toTermSheetInput, unflattenLenderData, updateFeedStats, usddIlkBytes32, usddKeyParts, usddLenderKey, validateTermSheet, validateTermSheets, validateUserData };
66033
66193
  //# sourceMappingURL=index.js.map
66034
66194
  //# sourceMappingURL=index.js.map