@1delta/margin-fetcher 0.0.235 → 0.0.237

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +414 -7
  4. package/dist/index.js.map +1 -1
  5. package/dist/lending/public-data/fetchLender.d.ts.map +1 -1
  6. package/dist/lending/public-data/fluid/index.d.ts +3 -0
  7. package/dist/lending/public-data/fluid/index.d.ts.map +1 -0
  8. package/dist/lending/public-data/fluid/publicCallBuild.d.ts +49 -0
  9. package/dist/lending/public-data/fluid/publicCallBuild.d.ts.map +1 -0
  10. package/dist/lending/public-data/fluid/publicCallParse.d.ts +18 -0
  11. package/dist/lending/public-data/fluid/publicCallParse.d.ts.map +1 -0
  12. package/dist/prices/oracle-prices/fetchOraclePrices.d.ts +2 -1
  13. package/dist/prices/oracle-prices/fetchOraclePrices.d.ts.map +1 -1
  14. package/dist/prices/oracle-prices/fetchers/fluid.d.ts +743 -0
  15. package/dist/prices/oracle-prices/fetchers/fluid.d.ts.map +1 -0
  16. package/dist/prices/oracle-prices/fetchers/index.d.ts +1 -0
  17. package/dist/prices/oracle-prices/fetchers/index.d.ts.map +1 -1
  18. package/dist/utils/index.d.ts +1 -1
  19. package/dist/utils/index.d.ts.map +1 -1
  20. package/dist/utils/marketName.d.ts.map +1 -1
  21. package/dist/vaults/fluid/fetchPublic.d.ts +21 -0
  22. package/dist/vaults/fluid/fetchPublic.d.ts.map +1 -0
  23. package/dist/vaults/fluid/index.d.ts +5 -0
  24. package/dist/vaults/fluid/index.d.ts.map +1 -0
  25. package/dist/vaults/fluid/publicCallBuild.d.ts +16 -0
  26. package/dist/vaults/fluid/publicCallBuild.d.ts.map +1 -0
  27. package/dist/vaults/fluid/publicCallParse.d.ts +15 -0
  28. package/dist/vaults/fluid/publicCallParse.d.ts.map +1 -0
  29. package/dist/vaults/fluid/types.d.ts +57 -0
  30. package/dist/vaults/fluid/types.d.ts.map +1 -0
  31. package/dist/vaults/index.d.ts +2 -0
  32. package/dist/vaults/index.d.ts.map +1 -0
  33. package/package.json +7 -7
package/dist/index.d.ts CHANGED
@@ -4,6 +4,7 @@ export { fetchGeneralYields, fetchGeneralYieldsByMarketUid } from './yields';
4
4
  export { fetchPendlePrices, fetchOraclePrices, selectAssetGroupPrices, type TokenListInput, type FetchOraclePricesOptions, type OraclePriceEntry, type StructuredOraclePrices, type USDPriceMap, type MorphoMarketOverrides, type ListaMarketOverrides, type OracleDiagnostics, type OraclePricesResult, type ChainDiagnostic, type TrackerDiagnostic, type StaleFeedEntry, } from './prices';
5
5
  export { getLendersForChain, filterLendersByProtocol, getAavesForChain, getLenderAssets, isCompoundV3, isCompoundV3Type, isInit, isMorphoType, isAaveV3Type, isAaveV2Type, isYLDR, isAaveV32Type, isAaveType, isMultiMarket, createMarketUid, } from './utils';
6
6
  export { fetchFlashLiquidityForChain, attachPricesToFlashLiquidity, } from './flash-liquidity';
7
+ export { buildFluidFTokensCall, getFluidFTokensConverter, fetchFluidFTokens, type FluidFToken, type FluidFTokens, } from './vaults';
7
8
  export { type GenericCurrency, type GenericTokenList, type ParsedResponse, type ChainLinkResponse, type LenderRewardsMap, type NumberMap, type FullLenderRewardsMap, type AdditionalYields, type TokenList, type LenderUserQuery, type UserLendingPosition, type LenderUserResponse, type AaveV2UserReserveResponse, type AaveV3UserReserveResponse, type MorphoUserReserveResponse, type CompoundV3UserReserveResponse, type AaveV3Public, type LenderPublicBase, type LenderYields, type LenderTotalAmounts, type LenderConfigMap, type LenderConfigData, type ModeBase, type EModeData, type AaveV2Public, type CompoundV3Public, type UserApr, type InitUserReserveResponse, type InitPublic, type LenderData, type PoolData, type ConfigEntry, } from './types';
8
9
  export { computeDepositDelta, computeWithdrawDelta, computeBorrowDelta, computeRepayDelta, getHealthFactor, getBorrowCapacity, getAssetConfig, computePostTradeMetrics, EMPTY_BALANCE, } from './lending/margin/base';
9
10
  export type { PostTradeMetrics } from './lending/margin/base';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import { parseAbi, formatEther, BaseError, encodeFunctionData, formatUnits, decodeFunctionResult, decodeAbiParameters, AbiEncodingLengthMismatchError, concatHex, isAddress, InvalidAddressError, pad, stringToHex, boolToHex, integerRegex, numberToHex, bytesRegex, BytesSizeMismatchError, arrayRegex, UnsupportedPackedAbiType } from './chunk-ZVIJSUIM.js';
2
2
  import './chunk-BYTNVMX7.js';
3
3
  import './chunk-PR4QN5HX.js';
4
- import { Lender, isAaveType, isCompoundV3, isMultiMarket, isSiloV2Type, isSiloV3Type, isAaveV4Type, isInit, isMorphoType, isCompoundV2Type, isVenusType, isSumerType, AAVE_V3_LENDERS, AAVE_V2_LENDERS, isAaveV2Type, isAaveV32Type, isAaveV3Type, isEulerType, isYLDR, isCompoundV3Type, isLista, isTectonicType, isBenqiType } from '@1delta/lender-registry';
4
+ import { Lender, isAaveType, isCompoundV3, isMultiMarket, isSiloV2Type, isSiloV3Type, isAaveV4Type, isInit, isMorphoType, isCompoundV2Type, isVenusType, isSumerType, AAVE_V3_LENDERS, AAVE_V2_LENDERS, isAaveV2Type, isAaveV32Type, isAaveV3Type, isEulerType, isFluid, isYLDR, isCompoundV3Type, isLista, isTectonicType, isBenqiType } from '@1delta/lender-registry';
5
5
  export { isAaveType, isAaveV2Type, isAaveV32Type, isAaveV3Type, isCompoundV3, isCompoundV3Type, isInit, isMorphoType, isMultiMarket, isYLDR } from '@1delta/lender-registry';
6
6
  import lodash from 'lodash';
7
7
  import { getEvmChain, getEvmClient, getEvmClientUniversal, multicallRetryUniversal } from '@1delta/providers';
8
- import { MorphoLensAbi, AaveV4SpokeAbi, AaveV4OracleAbi, AaveV4HubAbi, MorphoBlueAbi } from '@1delta/abis';
8
+ import { FluidLendingResolverAbi, MorphoLensAbi, AaveV4SpokeAbi, AaveV4OracleAbi, AaveV4HubAbi, FluidVaultResolverAbi, MorphoBlueAbi } from '@1delta/abis';
9
9
  export { MorphoLensAbi } from '@1delta/abis';
10
10
  import { prepareDebitDataMulticall, prepareLenderDebitMulticall, parseDebitDataResult, parseLenderDebitResult, getPermit2ContractAddress, getCompoundV3CometAddress as getCompoundV3CometAddress$1, getMorphoAddress, getAaveCollateralTokenAddress, getSiloHalfForUnderlying, InitMarginAddresses } from '@1delta/calldata-sdk';
11
11
  import { BALANCER_V2_FORKS, BALANCER_V3_FORKS, UNISWAP_V4_FORKS, isFlashLoanSourceExcluded, FLASH_LOAN_IDS } from '@1delta/dex-registry';
@@ -6281,7 +6281,9 @@ globalThis[GLOBAL_LENDER_DATA_KEY] = {
6281
6281
  siloMarkets: {},
6282
6282
  siloPeripherals: {},
6283
6283
  siloMarketsV3: {},
6284
- siloPeripheralsV3: {}
6284
+ siloPeripheralsV3: {},
6285
+ fluidResolvers: {},
6286
+ fluidVaults: {}
6285
6287
  };
6286
6288
  function getGlobalData2() {
6287
6289
  return globalThis[GLOBAL_LENDER_DATA_KEY];
@@ -6309,6 +6311,7 @@ var aaveV4Spokes = () => getGlobalData2()?.aaveV4Spokes;
6309
6311
  var aaveV4Oracles = () => getGlobalData2()?.aaveV4Oracles;
6310
6312
  var siloMarkets = () => getGlobalData2()?.siloMarkets;
6311
6313
  var siloMarketsV3 = () => getGlobalData2()?.siloMarketsV3;
6314
+ var fluidResolvers = () => getGlobalData2()?.fluidResolvers;
6312
6315
  function aaveV4SpokeLenderKey(spoke) {
6313
6316
  if (!spoke || !spoke.startsWith("0x") || spoke.length !== 42) {
6314
6317
  throw new Error(`aaveV4SpokeLenderKey: invalid spoke address ${spoke}`);
@@ -6402,6 +6405,7 @@ var LENDER_SHORT_NAMES = {
6402
6405
  [Lender.COMPOUND_V3_WETH]: "Comp. WETH",
6403
6406
  [Lender.COMPOUND_V3_WSTETH]: "Comp. wstETH",
6404
6407
  [Lender.EULER_V2]: "Euler V2",
6408
+ [Lender.FLUID]: "Fluid",
6405
6409
  [Lender.FLUX_FINANCE]: "Flux",
6406
6410
  [Lender.GRANARY]: "Granary",
6407
6411
  [Lender.HANA]: "Hana",
@@ -6412,7 +6416,7 @@ var LENDER_SHORT_NAMES = {
6412
6416
  [Lender.MERIDIAN]: "Meridian"
6413
6417
  };
6414
6418
  function formatUnderscoreString(input) {
6415
- const _in = input.replace("MORPHO_BLUE", "MB");
6419
+ const _in = input.replace("MORPHO_BLUE", "MB").replace(/^FLUID_/, "Fluid ");
6416
6420
  return _in.split("_").map((word, index) => {
6417
6421
  if (index === 0) {
6418
6422
  return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
@@ -6421,6 +6425,7 @@ function formatUnderscoreString(input) {
6421
6425
  }).join(" ");
6422
6426
  }
6423
6427
  function lenderShortName(lender) {
6428
+ if (lender?.startsWith("FLUID")) return "Fluid";
6424
6429
  return LENDER_SHORT_NAMES[lender] ?? formatUnderscoreString(lender);
6425
6430
  }
6426
6431
 
@@ -19140,8 +19145,211 @@ var getSiloV3ReservesDataConverter = (lender, chainId, prices, additionalYields,
19140
19145
  SILO_V3_CALLS_PER_PAIR
19141
19146
  ];
19142
19147
  };
19148
+ var { chunk: chunk4 } = lodash;
19149
+ var buildFluidCall = (chainId, _lender) => {
19150
+ const resolvers = fluidResolvers()?.[chainId];
19151
+ if (!resolvers) return [];
19152
+ return [
19153
+ {
19154
+ address: resolvers.vaultResolver,
19155
+ name: "getVaultsEntireData",
19156
+ params: []
19157
+ }
19158
+ ];
19159
+ };
19143
19160
 
19144
- // src/lending/public-data/fetchLender.ts
19161
+ // src/lending/public-data/fluid/publicCallParse.ts
19162
+ var FLUID_EEE_LOWER = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
19163
+ var normalizeUnderlying = (addr) => addr === FLUID_EEE_LOWER ? zeroAddress : addr;
19164
+ var FLUID_RATE_SCALE = 100;
19165
+ var scaleFluidRate = (raw) => {
19166
+ if (raw === void 0 || raw === null) return 0;
19167
+ return Number(raw) / FLUID_RATE_SCALE;
19168
+ };
19169
+ var getFluidPublicDataConverter = (_lender, chainId, prices, additionalYields, tokenList = {}) => {
19170
+ const expectedNumberOfCalls = 1;
19171
+ return [
19172
+ (data) => {
19173
+ if (data.length !== expectedNumberOfCalls) return void 0;
19174
+ const [vaultEntireData] = data;
19175
+ const out = {};
19176
+ for (const vault of vaultEntireData ?? []) {
19177
+ const parsed = parseVault(
19178
+ vault,
19179
+ chainId,
19180
+ prices,
19181
+ additionalYields,
19182
+ tokenList
19183
+ );
19184
+ if (parsed) {
19185
+ out[parsed.lender] = {
19186
+ data: parsed.data,
19187
+ params: parsed.params,
19188
+ chainId
19189
+ };
19190
+ }
19191
+ }
19192
+ return out;
19193
+ },
19194
+ expectedNumberOfCalls
19195
+ ];
19196
+ };
19197
+ function parseVault(vault, chainId, prices, additionalYields, tokenList) {
19198
+ const vaultAddress = (vault.vault ?? "").toLowerCase();
19199
+ const constants = vault.constantVariables;
19200
+ const configs = vault.configs;
19201
+ const rates = vault.exchangePricesAndRates;
19202
+ const totals = vault.totalSupplyAndBorrow;
19203
+ const limits = vault.limitsAndAvailability;
19204
+ if (!vaultAddress || !constants || !configs || !rates || !totals) {
19205
+ return void 0;
19206
+ }
19207
+ if (vault.isSmartCol || vault.isSmartDebt) return void 0;
19208
+ const rawCollateral = (constants.supplyToken?.token0 ?? constants.supplyToken ?? "").toString().toLowerCase();
19209
+ const rawLoan = (constants.borrowToken?.token0 ?? constants.borrowToken ?? "").toString().toLowerCase();
19210
+ if (!rawCollateral || !rawLoan) return void 0;
19211
+ const collateralAddress = normalizeUnderlying(rawCollateral);
19212
+ const loanAddress = normalizeUnderlying(rawLoan);
19213
+ const vaultId = Number(constants.vaultId ?? 0);
19214
+ const lender = `FLUID_${vaultId}`;
19215
+ const collateralMeta = tokenList[collateralAddress];
19216
+ const loanMeta = tokenList[loanAddress];
19217
+ const colDecimals = Number(
19218
+ constants.supplyDecimals ?? collateralMeta?.decimals ?? 18
19219
+ );
19220
+ const borrowDecimals = Number(
19221
+ constants.borrowDecimals ?? loanMeta?.decimals ?? 18
19222
+ );
19223
+ const totalSupply = Number(
19224
+ parseRawAmount(totals.totalSupplyVault?.toString(), colDecimals)
19225
+ );
19226
+ const totalBorrow = Number(
19227
+ parseRawAmount(totals.totalBorrowVault?.toString(), borrowDecimals)
19228
+ );
19229
+ const borrowable = Number(
19230
+ parseRawAmount(limits?.borrowable?.toString(), borrowDecimals)
19231
+ );
19232
+ const collateralPriceKey = toOracleKey(collateralMeta?.assetGroup) ?? toGenericPriceKey(collateralAddress, chainId);
19233
+ const loanPriceKey = toOracleKey(loanMeta?.assetGroup) ?? toGenericPriceKey(loanAddress, chainId);
19234
+ const collateralPrice = prices[collateralPriceKey] ?? 0;
19235
+ const loanPrice = prices[loanPriceKey] ?? 0;
19236
+ const ltv = Number(configs.collateralFactor ?? 0) / BPS;
19237
+ const liquidationThreshold = Number(configs.liquidationThreshold ?? 0) / BPS;
19238
+ const liquidationPenalty = Number(configs.liquidationPenalty ?? 0) / BPS;
19239
+ const supplyRate = scaleFluidRate(rates.supplyRateVault);
19240
+ const borrowRate = scaleFluidRate(rates.borrowRateVault);
19241
+ const utilization = totalSupply > 0 ? totalBorrow / totalSupply : 0;
19242
+ const data = {};
19243
+ const collateralMarketUid = createMarketUid(chainId, lender, collateralAddress);
19244
+ data[collateralMarketUid] = {
19245
+ marketUid: collateralMarketUid,
19246
+ name: "Collateral " + (collateralMeta?.symbol ?? ""),
19247
+ poolId: collateralAddress,
19248
+ underlying: collateralAddress,
19249
+ asset: collateralMeta,
19250
+ totalDeposits: totalSupply,
19251
+ totalDebtStable: 0,
19252
+ totalDebt: 0,
19253
+ totalLiquidity: totalSupply,
19254
+ borrowLiquidity: 0,
19255
+ totalDepositsUSD: totalSupply * collateralPrice,
19256
+ totalDebtStableUSD: 0,
19257
+ totalDebtUSD: 0,
19258
+ totalLiquidityUSD: totalSupply * collateralPrice,
19259
+ borrowLiquidityUSD: 0,
19260
+ utilization: 0,
19261
+ depositRate: supplyRate,
19262
+ // vault collateral earns the supply side rate
19263
+ variableBorrowRate: 0,
19264
+ stableBorrowRate: 0,
19265
+ intrinsicYield: additionalYields?.intrinsicYields?.[collateralPriceKey] ?? 0,
19266
+ rewards: [],
19267
+ decimals: colDecimals,
19268
+ config: {
19269
+ "0": {
19270
+ category: 0,
19271
+ borrowCollateralFactor: ltv,
19272
+ collateralFactor: liquidationThreshold,
19273
+ borrowFactor: 1,
19274
+ collateralDisabled: false,
19275
+ debtDisabled: true
19276
+ }
19277
+ },
19278
+ liquidationBonus: liquidationPenalty,
19279
+ collateralActive: true,
19280
+ borrowingEnabled: false,
19281
+ depositsEnabled: true,
19282
+ hasStable: false,
19283
+ isActive: true,
19284
+ isFrozen: false
19285
+ };
19286
+ const loanMarketUid = createMarketUid(chainId, lender, loanAddress);
19287
+ data[loanMarketUid] = {
19288
+ marketUid: loanMarketUid,
19289
+ name: "Loan " + (loanMeta?.symbol ?? ""),
19290
+ poolId: loanAddress,
19291
+ underlying: loanAddress,
19292
+ asset: loanMeta,
19293
+ totalDeposits: 0,
19294
+ totalDebtStable: 0,
19295
+ totalDebt: totalBorrow,
19296
+ totalLiquidity: borrowable,
19297
+ borrowLiquidity: borrowable,
19298
+ totalDepositsUSD: 0,
19299
+ totalDebtStableUSD: 0,
19300
+ totalDebtUSD: totalBorrow * loanPrice,
19301
+ totalLiquidityUSD: borrowable * loanPrice,
19302
+ borrowLiquidityUSD: borrowable * loanPrice,
19303
+ utilization,
19304
+ depositRate: 0,
19305
+ variableBorrowRate: borrowRate,
19306
+ stableBorrowRate: 0,
19307
+ intrinsicYield: additionalYields?.intrinsicYields?.[loanPriceKey] ?? 0,
19308
+ rewards: [],
19309
+ decimals: borrowDecimals,
19310
+ config: {
19311
+ "0": {
19312
+ category: 0,
19313
+ borrowCollateralFactor: 0,
19314
+ collateralFactor: 0,
19315
+ borrowFactor: 1,
19316
+ collateralDisabled: true,
19317
+ debtDisabled: false
19318
+ }
19319
+ },
19320
+ liquidationBonus: 0,
19321
+ collateralActive: false,
19322
+ borrowingEnabled: true,
19323
+ depositsEnabled: false,
19324
+ hasStable: false,
19325
+ isActive: true,
19326
+ isFrozen: false
19327
+ };
19328
+ return {
19329
+ lender,
19330
+ data,
19331
+ params: {
19332
+ vault: {
19333
+ lender,
19334
+ vaultAddress,
19335
+ vaultId,
19336
+ collateralAddress,
19337
+ loanAddress,
19338
+ collateralDecimals: colDecimals,
19339
+ loanDecimals: borrowDecimals,
19340
+ oracle: configs.oracle,
19341
+ rebalancer: configs.rebalancer,
19342
+ liquidationThreshold,
19343
+ ltv,
19344
+ liquidationPenalty,
19345
+ oraclePriceOperate: configs.oraclePriceOperate?.toString(),
19346
+ oraclePriceLiquidate: configs.oraclePriceLiquidate?.toString(),
19347
+ isSmartCol: !!vault.isSmartCol,
19348
+ isSmartDebt: !!vault.isSmartDebt
19349
+ }
19350
+ }
19351
+ };
19352
+ }
19145
19353
  function getMorphoTypeMarketConverter(lender, chainId, prices, additionalYields, tokenList = {}, marketsOverride) {
19146
19354
  if (lender.startsWith("LISTA_DAO"))
19147
19355
  return getListaMarketDataConverter(
@@ -19178,6 +19386,7 @@ function buildLenderCall(chainId, lender) {
19178
19386
  if (isAaveV4Type(lender)) return buildAaveV4LenderReserveCall(chainId, lender);
19179
19387
  if (isSiloV2Type(lender)) return buildSiloV2LenderReserveCall(chainId, lender);
19180
19388
  if (isSiloV3Type(lender)) return buildSiloV3LenderReserveCall(chainId, lender);
19389
+ if (isFluid(lender)) return buildFluidCall(chainId);
19181
19390
  return [];
19182
19391
  }
19183
19392
  function getLenderDataConverter(lender, chainId, prices, additionalYields, tokenList = {}) {
@@ -19262,6 +19471,14 @@ function getLenderDataConverter(lender, chainId, prices, additionalYields, token
19262
19471
  additionalYields,
19263
19472
  tokenList
19264
19473
  );
19474
+ if (isFluid(lender))
19475
+ return getFluidPublicDataConverter(
19476
+ lender,
19477
+ chainId,
19478
+ prices,
19479
+ additionalYields,
19480
+ tokenList
19481
+ );
19265
19482
  return [() => null, 0];
19266
19483
  }
19267
19484
  var getAbi = (lender) => {
@@ -19286,6 +19503,8 @@ var getAbi = (lender) => {
19286
19503
  return [...SiloAbi, ...SiloLensAbi, ...InterestRateModelV2Abi];
19287
19504
  if (isSiloV3Type(lender))
19288
19505
  return [...SiloAbi, ...SiloLensAbi, ...InterestRateModelV2Abi];
19506
+ if (isFluid(lender))
19507
+ return [...FluidVaultResolverAbi];
19289
19508
  if (isSumerType(lender)) return [...SumerLensAbi, ...SumerComptrollerAbi];
19290
19509
  if (lender === Lender.TAKARA) return [...TakaraMarketStateAbi];
19291
19510
  if (isCompoundV2Type(lender)) return VenusLensAbi;
@@ -31258,6 +31477,88 @@ var siloV3Fetcher = {
31258
31477
  parse: parseSiloV3Results,
31259
31478
  getAbi: getSiloV3Abi
31260
31479
  };
31480
+ var FLUID_EEE_LOWER2 = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
31481
+ var normalizeUnderlying2 = (addr) => addr === FLUID_EEE_LOWER2 ? zeroAddress : addr;
31482
+ function priceColInDebt(raw, colDec, debtDec) {
31483
+ return formatMorphoPrice(raw, debtDec, colDec + 9);
31484
+ }
31485
+ function getFluidCalls(chainId) {
31486
+ const resolvers = fluidResolvers()?.[chainId];
31487
+ if (!resolvers) return [];
31488
+ const call = {
31489
+ address: resolvers.vaultResolver,
31490
+ name: "getVaultsEntireData",
31491
+ params: []
31492
+ };
31493
+ return [
31494
+ {
31495
+ calls: [call],
31496
+ // Empty placeholder — populated per-vault inside `parse` from the
31497
+ // resolver response. Kept as an empty object to match the shape
31498
+ // other fetchers expose.
31499
+ meta: { vaults: [] },
31500
+ lender: Lender.FLUID
31501
+ }
31502
+ ];
31503
+ }
31504
+ function parseFluidResults(data, _meta, context) {
31505
+ const { chainId, usdPrices, tokenList } = context;
31506
+ const entries = [];
31507
+ const vaults = data[0];
31508
+ if (!Array.isArray(vaults) || vaults.length === 0) return entries;
31509
+ for (const vault of vaults) {
31510
+ try {
31511
+ if (vault.isSmartCol || vault.isSmartDebt) continue;
31512
+ const constants = vault.constantVariables;
31513
+ const configs = vault.configs;
31514
+ if (!constants || !configs) continue;
31515
+ const rawCol = (constants.supplyToken?.token0 ?? constants.supplyToken ?? "").toString().toLowerCase();
31516
+ const rawLoan = (constants.borrowToken?.token0 ?? constants.borrowToken ?? "").toString().toLowerCase();
31517
+ if (!rawCol || !rawLoan) continue;
31518
+ const collateral = normalizeUnderlying2(rawCol);
31519
+ const loan = normalizeUnderlying2(rawLoan);
31520
+ const colDec = tokenList?.[collateral]?.decimals ?? 18;
31521
+ const loanDec = tokenList?.[loan]?.decimals ?? 18;
31522
+ const rawPrice = configs.oraclePriceOperate?.toString() ?? "0";
31523
+ if (!rawPrice || rawPrice === "0") continue;
31524
+ const priceDebtPerCol = priceColInDebt(rawPrice, colDec, loanDec);
31525
+ if (!Number.isFinite(priceDebtPerCol) || priceDebtPerCol === 0) continue;
31526
+ const vaultId = Number(constants.vaultId ?? 0);
31527
+ const lenderKey = `${Lender.FLUID}_${vaultId}`;
31528
+ const loanOracleKey = tokenList?.[loan]?.assetGroup ?? `${chainId}-${loan}`;
31529
+ const loanUSD = usdPrices[loanOracleKey] ?? usdPrices[loan];
31530
+ if (!loanUSD) continue;
31531
+ entries.push({
31532
+ asset: loan,
31533
+ price: 1,
31534
+ priceUSD: loanUSD,
31535
+ marketUid: createMarketUid(chainId, lenderKey, loan),
31536
+ targetLender: lenderKey,
31537
+ description: "Fluid loan asset",
31538
+ staticBase: true,
31539
+ baseAsset: loan
31540
+ });
31541
+ entries.push({
31542
+ asset: collateral,
31543
+ price: priceDebtPerCol,
31544
+ priceUSD: priceDebtPerCol * loanUSD,
31545
+ marketUid: createMarketUid(chainId, lenderKey, collateral),
31546
+ targetLender: lenderKey,
31547
+ baseAsset: loan
31548
+ });
31549
+ } catch {
31550
+ }
31551
+ }
31552
+ return entries;
31553
+ }
31554
+ function getFluidAbi() {
31555
+ return FluidVaultResolverAbi;
31556
+ }
31557
+ var fluidFetcher = {
31558
+ getCalls: getFluidCalls,
31559
+ parse: parseFluidResults,
31560
+ getAbi: getFluidAbi
31561
+ };
31261
31562
 
31262
31563
  // src/prices/oracle-prices/fetchers/siloV2Graphql.ts
31263
31564
  async function fetchSiloV2GraphQLMarkets(chainId) {
@@ -31707,6 +32008,11 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
31707
32008
  () => siloV3Fetcher.getCalls(chainId),
31708
32009
  getCallsErrors
31709
32010
  ) : [];
32011
+ const fluidResults = isActive("fluid") ? safeGetCalls(
32012
+ "fluid",
32013
+ () => fluidFetcher.getCalls(chainId),
32014
+ getCallsErrors
32015
+ ) : [];
31710
32016
  const aaveGroup = buildGroup(
31711
32017
  "aave",
31712
32018
  aaveResults,
@@ -31761,6 +32067,12 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
31761
32067
  siloV3Fetcher.parse,
31762
32068
  getSiloV3Abi()
31763
32069
  );
32070
+ const fluidGroup = buildGroup(
32071
+ "fluid",
32072
+ fluidResults,
32073
+ fluidFetcher.parse,
32074
+ getFluidAbi()
32075
+ );
31764
32076
  const allGroups = [
31765
32077
  aaveGroup,
31766
32078
  compoundV2Group,
@@ -31770,7 +32082,8 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
31770
32082
  aaveV4Group,
31771
32083
  morphoGroup,
31772
32084
  siloV2Group,
31773
- siloV3Group
32085
+ siloV3Group,
32086
+ fluidGroup
31774
32087
  ];
31775
32088
  const totalCalls = allGroups.reduce((s, g) => s + g.calls.length, 0);
31776
32089
  if (totalCalls === 0 && !isActive("morpho")) {
@@ -31798,6 +32111,7 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
31798
32111
  listaData,
31799
32112
  eulerData,
31800
32113
  aaveV4Data,
32114
+ fluidData,
31801
32115
  morphoGqlEntries,
31802
32116
  siloV2GqlEntries,
31803
32117
  siloV3GqlEntries
@@ -31850,6 +32164,14 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
31850
32164
  allowFailure,
31851
32165
  rpcOverrides
31852
32166
  ),
32167
+ executeGroup(
32168
+ fluidGroup,
32169
+ chainId,
32170
+ chainBatchSize,
32171
+ retries,
32172
+ allowFailure,
32173
+ rpcOverrides
32174
+ ),
31853
32175
  morphoGqlPromise,
31854
32176
  siloV2GqlPromise,
31855
32177
  siloV3GqlPromise
@@ -31901,6 +32223,7 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
31901
32223
  { group: listaGroup, data: listaData },
31902
32224
  { group: eulerGroup, data: eulerData },
31903
32225
  { group: aaveV4Group, data: aaveV4Data },
32226
+ { group: fluidGroup, data: fluidData },
31904
32227
  ...siloV2GqlEntries != null ? [] : [{ group: siloV2Group, data: siloV2Data }],
31905
32228
  ...siloV3GqlEntries != null ? [] : [{ group: siloV3Group, data: siloV3Data }],
31906
32229
  ...useMorphoGql ? [] : [{ group: morphoGroup, data: morphoData }]
@@ -31987,6 +32310,7 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
31987
32310
  true,
31988
32311
  (t) => !!t.meta.baseAssetSource
31989
32312
  );
32313
+ parseTrackers(fluidGroup, fluidData.results, false);
31990
32314
  if (siloV2GqlEntries != null) {
31991
32315
  const diag2 = {
31992
32316
  lender: "SILO_V2 (GraphQL)",
@@ -32537,6 +32861,89 @@ function attachPricesToFlashLiquidity(chainId, liq, prices, list = {}) {
32537
32861
  return liqCopy;
32538
32862
  }
32539
32863
 
32864
+ // src/vaults/fluid/publicCallBuild.ts
32865
+ var buildFluidFTokensCall = (chainId) => {
32866
+ const resolvers = fluidResolvers()?.[chainId];
32867
+ if (!resolvers) return [];
32868
+ return [
32869
+ {
32870
+ address: resolvers.lendingResolver,
32871
+ name: "getFTokensEntireData",
32872
+ params: []
32873
+ }
32874
+ ];
32875
+ };
32876
+
32877
+ // src/vaults/fluid/publicCallParse.ts
32878
+ var FLUID_EEE_LOWER3 = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
32879
+ var normalizeUnderlying3 = (addr) => addr === FLUID_EEE_LOWER3 ? zeroAddress : addr;
32880
+ var FLUID_RATE_SCALE2 = 100;
32881
+ var scaleFluidRate2 = (raw) => {
32882
+ if (raw === void 0 || raw === null) return 0;
32883
+ return Number(raw) / FLUID_RATE_SCALE2;
32884
+ };
32885
+ var getFluidFTokensConverter = (chainId, prices = {}, tokenList = {}) => {
32886
+ const expectedNumberOfCalls = 1;
32887
+ return [
32888
+ (data) => {
32889
+ if (data.length !== expectedNumberOfCalls) return void 0;
32890
+ const [fTokenDetails] = data;
32891
+ return parseFTokens(fTokenDetails ?? [], chainId, prices, tokenList);
32892
+ },
32893
+ expectedNumberOfCalls
32894
+ ];
32895
+ };
32896
+ function parseFTokens(fTokens, chainId, prices, tokenList) {
32897
+ const out = {};
32898
+ for (const ft of fTokens) {
32899
+ const rawAsset = (ft.asset ?? "").toString().toLowerCase();
32900
+ if (!rawAsset) continue;
32901
+ const underlying = normalizeUnderlying3(rawAsset);
32902
+ const assetMeta = tokenList[underlying];
32903
+ const decimals = Number(ft.decimals ?? assetMeta?.decimals ?? 18);
32904
+ const totalAssetsFormatted = Number(
32905
+ parseRawAmount(ft.totalAssets?.toString(), decimals)
32906
+ );
32907
+ const oracleKey = toOracleKey(assetMeta?.assetGroup) ?? toGenericPriceKey(underlying, chainId);
32908
+ const priceUsd = prices[oracleKey] ?? 0;
32909
+ const supplyRate = scaleFluidRate2(ft.supplyRate);
32910
+ const rewardsRate = scaleFluidRate2(ft.rewardsRate);
32911
+ const entry = {
32912
+ address: ft.tokenAddress,
32913
+ underlying,
32914
+ symbol: ft.symbol ?? "",
32915
+ name: ft.name ?? "",
32916
+ decimals,
32917
+ totalAssets: ft.totalAssets?.toString() ?? "0",
32918
+ totalSupply: ft.totalSupply?.toString() ?? "0",
32919
+ convertToShares: ft.convertToShares?.toString() ?? "0",
32920
+ convertToAssets: ft.convertToAssets?.toString() ?? "0",
32921
+ supplyRate,
32922
+ rewardsRate,
32923
+ depositRate: supplyRate + rewardsRate,
32924
+ isNativeUnderlying: !!ft.isNativeUnderlying,
32925
+ eip2612Deposits: !!ft.eip2612Deposits,
32926
+ asset: assetMeta,
32927
+ priceUsd: priceUsd || void 0,
32928
+ totalAssetsFormatted,
32929
+ totalAssetsUsd: totalAssetsFormatted * priceUsd
32930
+ };
32931
+ out[underlying] = entry;
32932
+ }
32933
+ return out;
32934
+ }
32935
+ var fetchFluidFTokens = async (chainId, multicallRetry, prices = {}, tokenList = {}) => {
32936
+ const calls = buildFluidFTokensCall(chainId);
32937
+ if (calls.length === 0) return {};
32938
+ const raw = await multicallRetry({
32939
+ chain: chainId,
32940
+ calls,
32941
+ abi: calls.map(() => FluidLendingResolverAbi)
32942
+ });
32943
+ const [converter] = getFluidFTokensConverter(chainId, prices, tokenList);
32944
+ return converter(raw) ?? {};
32945
+ };
32946
+
32540
32947
  // src/lending/margin/e-mode/index.ts
32541
32948
  function computeEModeSwitchHealth(positions, lenderMeta, currentCollateral, currentAdjustedDebt, currentMode, targetMode) {
32542
32949
  if (currentAdjustedDebt === 0) return null;
@@ -33023,6 +33430,6 @@ async function fetchTokenBalances(chainId, account, tokens, options = {}) {
33023
33430
  return parseTokenBalanceResult(rawResult, prepared.query);
33024
33431
  }
33025
33432
 
33026
- export { EMPTY_BALANCE, MORPHO_LENS, MaxParamThresholds, applyPositionDelta, attachPricesToFlashLiquidity, buildLoopResult, buildMorphoTypeCall, buildMorphoTypeUserCallWithLens, buildPortfolioTotals, buildSumerAccumulators, buildSummaries, calculateLeverage, calculateNetApr, calculateOverallNetApr, calculateWeightedAverage, computeBorrowDelta2 as computeBorrowDelta, computeCloseTradeDeltas, computeCollateralSwapDeltas, computeDebtSwapDeltas, computeDepositDelta2 as computeDepositDelta, computeEModeAnalysis, computeOpenTradeDeltas, computePostTradeMetrics, computeRepayDelta2 as computeRepayDelta, computeSumerBorrowDelta, computeSumerDepositDelta, computeSumerRepayDelta, computeSumerWaterfall, computeSumerWithdrawDelta, computeWithdrawDelta2 as computeWithdrawDelta, computeZapTradeDeltas, convertLenderUserDataResult, createMarketUid, createMulticallRpcCall, createRawRpcCalls, decodeListaMarkets, decodeMarkets, decodePackedListaUserDataset, decodePackedMorphoUserDataset, encodeBalanceFetcherCalldata, fetchEulerSubAccountIndexes, fetchFlashLiquidityForChain, fetchGeneralYields, fetchGeneralYieldsByMarketUid, fetchOraclePrices, fetchPendlePrices, fetchTokenBalances, fetchTokenMetadata, filterActiveLenders, filterLendersByProtocol, fuseLenderData, generateLendingPools, getAavesForChain, getAssetConfig, getBalanceForMarketUid, getBorrowCapacity, getHealthFactor, getLenderAssets, getLenderPublicData, getLenderPublicDataAll, getLenderPublicDataViaApi, getLenderUserDataMulti, getLenderUserDataResult, getLendersForChain, getMaxAmountClose, getMaxAmountCollateralSwap, getMaxAmountDebtSwap, getMaxAmountOpen, getMergedUserData, getMorphoTypeMarketConverter, getSubAccountAddress, getSubAccountIndex, keysFromMaps, multicall3Abi, nanTo, needsLenderApproval, needsTokenApproval, noOpResult, normalizeToBytes, parseBalanceFetcherResult, parseMergedResult, parseMulticallRpcResponses, parseRawRpcBatchResponses, parseRawRpcResponses, parseTokenBalanceResult, positivePart2 as positivePart, prepareLenderUserDataRpcCalls, prepareMergedMulticallParams, prepareMergedRpcCalls, prepareMulticallInputs, prepareTokenBalanceRpcCalls, selectAssetGroupPrices, unflattenLenderData };
33433
+ export { EMPTY_BALANCE, MORPHO_LENS, MaxParamThresholds, applyPositionDelta, attachPricesToFlashLiquidity, buildFluidFTokensCall, buildLoopResult, buildMorphoTypeCall, buildMorphoTypeUserCallWithLens, buildPortfolioTotals, buildSumerAccumulators, buildSummaries, calculateLeverage, calculateNetApr, calculateOverallNetApr, calculateWeightedAverage, computeBorrowDelta2 as computeBorrowDelta, computeCloseTradeDeltas, computeCollateralSwapDeltas, computeDebtSwapDeltas, computeDepositDelta2 as computeDepositDelta, computeEModeAnalysis, computeOpenTradeDeltas, computePostTradeMetrics, computeRepayDelta2 as computeRepayDelta, computeSumerBorrowDelta, computeSumerDepositDelta, computeSumerRepayDelta, computeSumerWaterfall, computeSumerWithdrawDelta, computeWithdrawDelta2 as computeWithdrawDelta, computeZapTradeDeltas, convertLenderUserDataResult, createMarketUid, createMulticallRpcCall, createRawRpcCalls, decodeListaMarkets, decodeMarkets, decodePackedListaUserDataset, decodePackedMorphoUserDataset, encodeBalanceFetcherCalldata, fetchEulerSubAccountIndexes, fetchFlashLiquidityForChain, fetchFluidFTokens, fetchGeneralYields, fetchGeneralYieldsByMarketUid, fetchOraclePrices, fetchPendlePrices, fetchTokenBalances, fetchTokenMetadata, filterActiveLenders, filterLendersByProtocol, fuseLenderData, generateLendingPools, getAavesForChain, getAssetConfig, getBalanceForMarketUid, getBorrowCapacity, getFluidFTokensConverter, getHealthFactor, getLenderAssets, getLenderPublicData, getLenderPublicDataAll, getLenderPublicDataViaApi, getLenderUserDataMulti, getLenderUserDataResult, getLendersForChain, getMaxAmountClose, getMaxAmountCollateralSwap, getMaxAmountDebtSwap, getMaxAmountOpen, getMergedUserData, getMorphoTypeMarketConverter, getSubAccountAddress, getSubAccountIndex, keysFromMaps, multicall3Abi, nanTo, needsLenderApproval, needsTokenApproval, noOpResult, normalizeToBytes, parseBalanceFetcherResult, parseMergedResult, parseMulticallRpcResponses, parseRawRpcBatchResponses, parseRawRpcResponses, parseTokenBalanceResult, positivePart2 as positivePart, prepareLenderUserDataRpcCalls, prepareMergedMulticallParams, prepareMergedRpcCalls, prepareMulticallInputs, prepareTokenBalanceRpcCalls, selectAssetGroupPrices, unflattenLenderData };
33027
33434
  //# sourceMappingURL=index.js.map
33028
33435
  //# sourceMappingURL=index.js.map