@1delta/margin-fetcher 0.0.236 → 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.
package/dist/index.js CHANGED
@@ -31477,6 +31477,88 @@ var siloV3Fetcher = {
31477
31477
  parse: parseSiloV3Results,
31478
31478
  getAbi: getSiloV3Abi
31479
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
+ };
31480
31562
 
31481
31563
  // src/prices/oracle-prices/fetchers/siloV2Graphql.ts
31482
31564
  async function fetchSiloV2GraphQLMarkets(chainId) {
@@ -31926,6 +32008,11 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
31926
32008
  () => siloV3Fetcher.getCalls(chainId),
31927
32009
  getCallsErrors
31928
32010
  ) : [];
32011
+ const fluidResults = isActive("fluid") ? safeGetCalls(
32012
+ "fluid",
32013
+ () => fluidFetcher.getCalls(chainId),
32014
+ getCallsErrors
32015
+ ) : [];
31929
32016
  const aaveGroup = buildGroup(
31930
32017
  "aave",
31931
32018
  aaveResults,
@@ -31980,6 +32067,12 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
31980
32067
  siloV3Fetcher.parse,
31981
32068
  getSiloV3Abi()
31982
32069
  );
32070
+ const fluidGroup = buildGroup(
32071
+ "fluid",
32072
+ fluidResults,
32073
+ fluidFetcher.parse,
32074
+ getFluidAbi()
32075
+ );
31983
32076
  const allGroups = [
31984
32077
  aaveGroup,
31985
32078
  compoundV2Group,
@@ -31989,7 +32082,8 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
31989
32082
  aaveV4Group,
31990
32083
  morphoGroup,
31991
32084
  siloV2Group,
31992
- siloV3Group
32085
+ siloV3Group,
32086
+ fluidGroup
31993
32087
  ];
31994
32088
  const totalCalls = allGroups.reduce((s, g) => s + g.calls.length, 0);
31995
32089
  if (totalCalls === 0 && !isActive("morpho")) {
@@ -32017,6 +32111,7 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
32017
32111
  listaData,
32018
32112
  eulerData,
32019
32113
  aaveV4Data,
32114
+ fluidData,
32020
32115
  morphoGqlEntries,
32021
32116
  siloV2GqlEntries,
32022
32117
  siloV3GqlEntries
@@ -32069,6 +32164,14 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
32069
32164
  allowFailure,
32070
32165
  rpcOverrides
32071
32166
  ),
32167
+ executeGroup(
32168
+ fluidGroup,
32169
+ chainId,
32170
+ chainBatchSize,
32171
+ retries,
32172
+ allowFailure,
32173
+ rpcOverrides
32174
+ ),
32072
32175
  morphoGqlPromise,
32073
32176
  siloV2GqlPromise,
32074
32177
  siloV3GqlPromise
@@ -32120,6 +32223,7 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
32120
32223
  { group: listaGroup, data: listaData },
32121
32224
  { group: eulerGroup, data: eulerData },
32122
32225
  { group: aaveV4Group, data: aaveV4Data },
32226
+ { group: fluidGroup, data: fluidData },
32123
32227
  ...siloV2GqlEntries != null ? [] : [{ group: siloV2Group, data: siloV2Data }],
32124
32228
  ...siloV3GqlEntries != null ? [] : [{ group: siloV3Group, data: siloV3Data }],
32125
32229
  ...useMorphoGql ? [] : [{ group: morphoGroup, data: morphoData }]
@@ -32206,6 +32310,7 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
32206
32310
  true,
32207
32311
  (t) => !!t.meta.baseAssetSource
32208
32312
  );
32313
+ parseTrackers(fluidGroup, fluidData.results, false);
32209
32314
  if (siloV2GqlEntries != null) {
32210
32315
  const diag2 = {
32211
32316
  lender: "SILO_V2 (GraphQL)",
@@ -32770,8 +32875,8 @@ var buildFluidFTokensCall = (chainId) => {
32770
32875
  };
32771
32876
 
32772
32877
  // src/vaults/fluid/publicCallParse.ts
32773
- var FLUID_EEE_LOWER2 = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
32774
- var normalizeUnderlying2 = (addr) => addr === FLUID_EEE_LOWER2 ? zeroAddress : addr;
32878
+ var FLUID_EEE_LOWER3 = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
32879
+ var normalizeUnderlying3 = (addr) => addr === FLUID_EEE_LOWER3 ? zeroAddress : addr;
32775
32880
  var FLUID_RATE_SCALE2 = 100;
32776
32881
  var scaleFluidRate2 = (raw) => {
32777
32882
  if (raw === void 0 || raw === null) return 0;
@@ -32793,7 +32898,7 @@ function parseFTokens(fTokens, chainId, prices, tokenList) {
32793
32898
  for (const ft of fTokens) {
32794
32899
  const rawAsset = (ft.asset ?? "").toString().toLowerCase();
32795
32900
  if (!rawAsset) continue;
32796
- const underlying = normalizeUnderlying2(rawAsset);
32901
+ const underlying = normalizeUnderlying3(rawAsset);
32797
32902
  const assetMeta = tokenList[underlying];
32798
32903
  const decimals = Number(ft.decimals ?? assetMeta?.decimals ?? 18);
32799
32904
  const totalAssetsFormatted = Number(