@1delta/margin-fetcher 0.0.68 → 0.0.71

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
@@ -8287,9 +8287,9 @@ var getAaveV3ReservesDataConverter = (lender, chainId, prices, additionalYields,
8287
8287
  const resultReserves = {};
8288
8288
  const decimalsCeiling = data[expectedNumberOfCalls - 1];
8289
8289
  let eModeConfigs = {};
8290
- allModes.map((mode, index) => {
8290
+ allModes.forEach((mode, index) => {
8291
8291
  const rawCfg = emodeDataResult[index];
8292
- if (mode === 0 || rawCfg?.label !== "")
8292
+ if ((mode === 0 || rawCfg?.label !== "") && Number(rawCfg.ltv) !== 0) {
8293
8293
  eModeConfigs[mode] = {
8294
8294
  category: mode,
8295
8295
  label: rawCfg.label,
@@ -8297,6 +8297,7 @@ var getAaveV3ReservesDataConverter = (lender, chainId, prices, additionalYields,
8297
8297
  collateralFactor: rawCfg.liquidationThreshold / BPS,
8298
8298
  borrowFactor: 1
8299
8299
  };
8300
+ }
8300
8301
  });
8301
8302
  for (let i = 0; i < assetsToQuery.length; i++) {
8302
8303
  const asset = assetsToQuery[i];
@@ -8370,8 +8371,6 @@ var getAaveV3ReservesDataConverter = (lender, chainId, prices, additionalYields,
8370
8371
  hasStable: configData?.[7 /* stableBorrowRateEnabled */],
8371
8372
  isActive: configData?.[8 /* isActive */],
8372
8373
  isFrozen: configData?.[9 /* isFrozen */],
8373
- // eMode
8374
- eMode: eModeConfigs[eModeCategory],
8375
8374
  // caps
8376
8375
  borrowCap: Number(reserveCaps[0]?.toString()),
8377
8376
  supplyCap: Number(reserveCaps[1]?.toString()),
@@ -8395,23 +8394,32 @@ var getAaveV3ReservesDataConverter = (lender, chainId, prices, additionalYields,
8395
8394
  var populateEModes = (borrowCollateralFactor, collateralFactor, eModeCategory, eModeConfigs, allModes) => {
8396
8395
  let data = {};
8397
8396
  allModes.forEach((e) => {
8398
- data[e] = {
8399
- category: e,
8400
- borrowCollateralFactor,
8401
- collateralFactor,
8402
- borrowFactor: 1
8403
- };
8404
- if (e > 0) data[e].debtDisabled = true;
8405
- if (e > 0 && e === eModeCategory && eModeConfigs[e]) {
8397
+ if (e === 0)
8406
8398
  data[e] = {
8407
- ...data[e],
8399
+ label: "Disabled",
8408
8400
  category: e,
8409
- label: eModeConfigs[e]?.label ?? "Default",
8410
- borrowCollateralFactor: eModeConfigs[e]?.borrowCollateralFactor ?? 0,
8411
- collateralFactor: eModeConfigs[e]?.collateralFactor ?? 0,
8412
- borrowFactor: 1,
8413
- debtDisabled: false
8401
+ borrowCollateralFactor,
8402
+ collateralFactor,
8403
+ borrowFactor: 1
8414
8404
  };
8405
+ if (e > 0 && eModeConfigs[e]?.label && eModeConfigs[e]?.label !== "") {
8406
+ data[e] = {};
8407
+ data[e].label = eModeConfigs[e]?.label;
8408
+ data[e].debtDisabled = true;
8409
+ data[e].category = e;
8410
+ data[e].borrowFactor = 1;
8411
+ data[e].collateralFactor = collateralFactor;
8412
+ data[e].borrowCollateralFactor = borrowCollateralFactor;
8413
+ if (e > 0 && e === eModeCategory && eModeConfigs[e]) {
8414
+ data[e] = {
8415
+ ...data[e],
8416
+ category: e,
8417
+ borrowCollateralFactor: eModeConfigs[e]?.borrowCollateralFactor ?? 0,
8418
+ collateralFactor: eModeConfigs[e]?.collateralFactor ?? 0,
8419
+ borrowFactor: 1,
8420
+ debtDisabled: false
8421
+ };
8422
+ }
8415
8423
  }
8416
8424
  });
8417
8425
  return data;
@@ -8419,27 +8427,39 @@ var populateEModes = (borrowCollateralFactor, collateralFactor, eModeCategory, e
8419
8427
  var populateEModes32 = (borrowCollateralFactor, collateralFactor, collateralBitmap, debtBitmap, assetIndex, eModeConfigs, allModes) => {
8420
8428
  let data = {};
8421
8429
  allModes.forEach((e) => {
8422
- data[e] = {
8423
- category: e,
8424
- borrowCollateralFactor,
8425
- collateralFactor,
8426
- borrowFactor: 1
8427
- };
8428
- if (e > 0) data[e].debtDisabled = !!eModeConfigs[e];
8429
- if (e > 0 && eModeConfigs[e]) {
8430
+ if (e === 0)
8430
8431
  data[e] = {
8431
- ...data[e],
8432
+ label: "Disabled",
8432
8433
  category: e,
8433
- label: eModeConfigs[e]?.label ?? "Default",
8434
- borrowCollateralFactor: eModeConfigs[e]?.borrowCollateralFactor ?? 0,
8435
- collateralFactor: eModeConfigs[e]?.collateralFactor ?? 0,
8436
- borrowFactor: 1,
8437
- collateralDisabled: !isReserveEnabledOnBitmap(
8438
- collateralBitmap[e],
8439
- assetIndex
8440
- ),
8441
- debtDisabled: !isReserveEnabledOnBitmap(debtBitmap[e], assetIndex)
8434
+ borrowCollateralFactor,
8435
+ collateralFactor,
8436
+ borrowFactor: 1
8442
8437
  };
8438
+ if (e > 0) {
8439
+ if (eModeConfigs[e]?.label && eModeConfigs[e]?.label !== "") {
8440
+ data[e] = {};
8441
+ data[e].label = eModeConfigs[e]?.label ?? "Default";
8442
+ data[e].debtDisabled = true;
8443
+ data[e].category = e;
8444
+ data[e].borrowFactor = 1;
8445
+ data[e].collateralFactor = collateralFactor;
8446
+ data[e].borrowCollateralFactor = borrowCollateralFactor;
8447
+ data[e].debtDisabled = !!eModeConfigs[e];
8448
+ if (eModeConfigs[e]) {
8449
+ data[e] = {
8450
+ ...data[e],
8451
+ category: e,
8452
+ borrowCollateralFactor: eModeConfigs[e]?.borrowCollateralFactor ?? 0,
8453
+ collateralFactor: eModeConfigs[e]?.collateralFactor ?? 0,
8454
+ borrowFactor: 1,
8455
+ collateralDisabled: !isReserveEnabledOnBitmap(
8456
+ collateralBitmap[e],
8457
+ assetIndex
8458
+ ),
8459
+ debtDisabled: !isReserveEnabledOnBitmap(debtBitmap[e], assetIndex)
8460
+ };
8461
+ }
8462
+ }
8443
8463
  }
8444
8464
  });
8445
8465
  return data;
@@ -8559,9 +8579,9 @@ function parseAave32(chainId, lender, prices, additionalYields, tokenList) {
8559
8579
  let eModeConfigs = {};
8560
8580
  let collateralBitmap = {};
8561
8581
  let debtBitmap = {};
8562
- allModes.map((mode, index) => {
8582
+ allModes.forEach((mode, index) => {
8563
8583
  const rawCfg = emodeDataResult[3 * index];
8564
- if (rawCfg && (mode === 0 || rawCfg?.label !== ""))
8584
+ if (rawCfg && (mode === 0 || rawCfg?.label !== "")) {
8565
8585
  eModeConfigs[mode] = {
8566
8586
  category: mode,
8567
8587
  label: rawCfg.label,
@@ -8569,8 +8589,9 @@ function parseAave32(chainId, lender, prices, additionalYields, tokenList) {
8569
8589
  collateralFactor: rawCfg.liquidationThreshold / BPS,
8570
8590
  borrowFactor: 1
8571
8591
  };
8572
- debtBitmap[mode] = emodeDataResult[3 * index + 1];
8573
- collateralBitmap[mode] = emodeDataResult[3 * index + 2];
8592
+ debtBitmap[mode] = emodeDataResult[3 * index + 1];
8593
+ collateralBitmap[mode] = emodeDataResult[3 * index + 2];
8594
+ }
8574
8595
  });
8575
8596
  const lowerReservesList = reservesList?.map(
8576
8597
  (a) => a.toLowerCase()
@@ -8629,7 +8650,7 @@ function parseAave32(chainId, lender, prices, additionalYields, tokenList) {
8629
8650
  const activeEmodes = allModes.map(
8630
8651
  (mode) => isReserveEnabledOnBitmap(debtBitmap[mode], assetIndex) || isReserveEnabledOnBitmap(collateralBitmap[mode], assetIndex) ? mode : -1
8631
8652
  ).filter((m) => m !== void 0 && m > 0);
8632
- const eModeCategory = activeEmodes.length === 0 ? 0 : activeEmodes[0];
8653
+ activeEmodes.length === 0 ? 0 : activeEmodes[0];
8633
8654
  resultReserves[asset] = {
8634
8655
  ...resultReserves[asset],
8635
8656
  decimals: Number(
@@ -8652,8 +8673,6 @@ function parseAave32(chainId, lender, prices, additionalYields, tokenList) {
8652
8673
  hasStable: configData?.[7 /* stableBorrowRateEnabled */],
8653
8674
  isActive: configData?.[8 /* isActive */],
8654
8675
  isFrozen: configData?.[9 /* isFrozen */],
8655
- // eMode
8656
- eMode: eModeConfigs[eModeCategory],
8657
8676
  // caps
8658
8677
  borrowCap: Number(reserveCaps[0]?.toString()),
8659
8678
  supplyCap: Number(reserveCaps[1]?.toString()),
@@ -16695,12 +16714,10 @@ var getInitUserDataConverter = (lender, chainId, account, prices, pricesHist, le
16695
16714
  return void 0;
16696
16715
  }
16697
16716
  const [data] = _data;
16698
- const indexes = data[0 /* posMeta */].map(
16699
- (e, i) => {
16700
- return { e, i };
16701
- }
16702
- ).filter((a) => a.e.owner.toLowerCase() === validOwner).map((a) => a.i);
16703
- const assets = getLenderAssets(chainId, lender);
16717
+ const indexes = data[0 /* posMeta */].map((e, i) => {
16718
+ return { e, i };
16719
+ }).filter((a) => a.e.owner.toLowerCase() === validOwner).map((a) => a.i);
16720
+ const assets = Object.keys(lenderData);
16704
16721
  let histData = {};
16705
16722
  const result = Object.assign(
16706
16723
  {},
@@ -16710,20 +16727,33 @@ var getInitUserDataConverter = (lender, chainId, account, prices, pricesHist, le
16710
16727
  const id = entry.posId.toString();
16711
16728
  const collatData = Object.assign(
16712
16729
  {},
16713
- ...data[1 /* collaterals */][index].map((c) => {
16714
- const asset = c.underlying.toLowerCase();
16715
- const decimals = lenderData[asset].asset?.decimals ?? 18;
16716
- const depositsRaw = c.amount.toString();
16717
- return { [asset]: { deposits: parseRawAmount(depositsRaw, decimals), depositsRaw } };
16718
- })
16730
+ ...data[1 /* collaterals */][index].map(
16731
+ (c) => {
16732
+ const asset = c.underlying.toLowerCase();
16733
+ const decimals = lenderData[asset].asset?.decimals ?? 18;
16734
+ const depositsRaw = c.amount.toString();
16735
+ return {
16736
+ [asset]: {
16737
+ deposits: parseRawAmount(depositsRaw, decimals),
16738
+ depositsRaw
16739
+ }
16740
+ };
16741
+ }
16742
+ )
16719
16743
  );
16720
16744
  const debtData = Object.assign(
16721
16745
  {},
16722
- ...data[2 /* debts */][index].map((c) => {
16723
- const asset = c.underlying.toLowerCase();
16724
- const decimals = lenderData[asset]?.asset?.decimals ?? 18;
16725
- return { [asset]: { debt: parseRawAmount(c.amount.toString(), decimals) } };
16726
- })
16746
+ ...data[2 /* debts */][index].map(
16747
+ (c) => {
16748
+ const asset = c.underlying.toLowerCase();
16749
+ const decimals = lenderData[asset]?.asset?.decimals ?? 18;
16750
+ return {
16751
+ [asset]: {
16752
+ debt: parseRawAmount(c.amount.toString(), decimals)
16753
+ }
16754
+ };
16755
+ }
16756
+ )
16727
16757
  );
16728
16758
  return {
16729
16759
  [id]: {
@@ -16734,10 +16764,11 @@ var getInitUserDataConverter = (lender, chainId, account, prices, pricesHist, le
16734
16764
  const ams = toOracleKey(lenderData[a]?.asset?.assetGroup);
16735
16765
  const price = prices[ams] ?? 1;
16736
16766
  const priceHist = pricesHist?.[ams] ?? price;
16737
- if (!histData[id]) histData[id] = {
16738
- totalDebt24h: 0,
16739
- totalDeposits24h: 0
16740
- };
16767
+ if (!histData[id])
16768
+ histData[id] = {
16769
+ totalDebt24h: 0,
16770
+ totalDeposits24h: 0
16771
+ };
16741
16772
  const debt = debtData[a]?.debt ?? 0;
16742
16773
  const deposits = collatData[a]?.deposits ?? 0;
16743
16774
  const depositsRaw = collatData[a]?.depositsRaw ?? "0";
@@ -18418,6 +18449,7 @@ var RUSD = "0x09d4214c03d01f49544c0448dbe3a27f768f2b34";
18418
18449
  var USDF = "0xfa2b947eec368f42195f24f36d2af29f7c24cec2";
18419
18450
  var USUAL = "0xc4441c2be5d8fa8126822b9929ca0b81ea0de38e";
18420
18451
  var WOETH = "0xdcee70654261af21c44c093c300ed3bb97b78192";
18452
+ var DEUSD = "0x15700B564Ca08D9439C58cA5053166E8317aa138";
18421
18453
  var datasEthereum = [
18422
18454
  RETH,
18423
18455
  WBTC,
@@ -18462,7 +18494,8 @@ var datasEthereum = [
18462
18494
  RUSD,
18463
18495
  USDF,
18464
18496
  USUAL,
18465
- WOETH
18497
+ WOETH,
18498
+ DEUSD
18466
18499
  ].map((d) => prefixEthereum + d).join(",");
18467
18500
  var prefixAvalanche = "avax:";
18468
18501
  var WAVAX = "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7";
@@ -18639,7 +18672,8 @@ var SYMBOL_MAP = {
18639
18672
  wbera: "WBERA",
18640
18673
  wtlos: "WTLOS",
18641
18674
  xpl: "WXPL",
18642
- wglmr: "WGLMR"
18675
+ wglmr: "WGLMR",
18676
+ deusd: "Elixir deUSD::DEUSD"
18643
18677
  };
18644
18678
  async function fetchDefillamaData() {
18645
18679
  try {
@@ -20226,6 +20260,7 @@ var fetchMainPrices = async (chainIds, rpcOverrides, lists = {}) => {
20226
20260
  const uniswapV3Calls = getUniswapV3Calls(chainId);
20227
20261
  const [api3Calls, api3Names] = getApi3Calls(chainId);
20228
20262
  const [rwaCalls, rwaNames] = getRWADynamicOracleCalls(chainId);
20263
+ const [cometCalls, cometNames] = getCometCalls(chainId);
20229
20264
  const allCalls = [
20230
20265
  ...chainlinkCalls,
20231
20266
  ...aaveCalls,
@@ -20233,6 +20268,7 @@ var fetchMainPrices = async (chainIds, rpcOverrides, lists = {}) => {
20233
20268
  ...uniswapV3Calls,
20234
20269
  ...api3Calls,
20235
20270
  ...rwaCalls,
20271
+ ...cometCalls,
20236
20272
  ...morphoCalls
20237
20273
  ];
20238
20274
  const abis = [
@@ -20242,7 +20278,8 @@ var fetchMainPrices = async (chainIds, rpcOverrides, lists = {}) => {
20242
20278
  ...AaveOracleAbi,
20243
20279
  ...Api3OracleAbi,
20244
20280
  ...RWADynamicOracleAbi,
20245
- ...ProxyOracleAbi
20281
+ ...ProxyOracleAbi,
20282
+ ...CometAbi
20246
20283
  ];
20247
20284
  const result = await multicallRetry(
20248
20285
  chainId,
@@ -20262,6 +20299,7 @@ var fetchMainPrices = async (chainIds, rpcOverrides, lists = {}) => {
20262
20299
  chainlink: { calls: chainlinkCalls, names: chainlinkNames },
20263
20300
  api3: { calls: api3Calls, names: api3Names },
20264
20301
  rwa: { calls: rwaCalls, names: rwaNames },
20302
+ comet: { calls: cometCalls, names: cometNames },
20265
20303
  morpho: { queries: morphoQueries },
20266
20304
  uniswapCalls,
20267
20305
  uniswapV3Calls,
@@ -20285,6 +20323,7 @@ var fetchMainPrices = async (chainIds, rpcOverrides, lists = {}) => {
20285
20323
  rwa,
20286
20324
  uniswapCalls,
20287
20325
  uniswapV3Calls,
20326
+ comet,
20288
20327
  aaveCalls
20289
20328
  }
20290
20329
  } of chainResults) {
@@ -20316,6 +20355,13 @@ var fetchMainPrices = async (chainIds, rpcOverrides, lists = {}) => {
20316
20355
  const rwaSlice = result.slice(offset, offset + rwa.calls.length);
20317
20356
  const rwaData = parseRWADynamicOracleResults(chainId, rwaSlice, rwa.names);
20318
20357
  offset += rwa.calls.length;
20358
+ const cometSlice = result.slice(offset, offset + comet.calls.length);
20359
+ const cometData = parseCometResults(
20360
+ chainId,
20361
+ cometSlice,
20362
+ comet.names
20363
+ );
20364
+ offset += comet.calls.length;
20319
20365
  allPrices = {
20320
20366
  ...allPrices,
20321
20367
  ...chainlinkData,
@@ -20323,7 +20369,8 @@ var fetchMainPrices = async (chainIds, rpcOverrides, lists = {}) => {
20323
20369
  ...uniswapData,
20324
20370
  ...uniswapV3Data,
20325
20371
  ...api3Data,
20326
- ...rwaData
20372
+ ...rwaData,
20373
+ ...cometData
20327
20374
  };
20328
20375
  }
20329
20376
  allPrices = { ...otherResults[0], ...allPrices, ...otherResults[1] };
@@ -20383,6 +20430,68 @@ var getUniswapV2Calls = (chainId) => {
20383
20430
  return [];
20384
20431
  }
20385
20432
  };
20433
+ var getCometCalls = (chainId) => {
20434
+ switch (chainId) {
20435
+ case Chain.ETHEREUM_MAINNET: {
20436
+ const names = [
20437
+ "Staked FRAX::SFRAX",
20438
+ //
20439
+ "Elixir deUSD::DEUSD",
20440
+ "Elixir Staked deUSD::SDEUSD"
20441
+ ];
20442
+ return [
20443
+ [
20444
+ {
20445
+ address: "0x3Afdc9BCA9213A35503b077a6072F3D0d5AB0840",
20446
+ // usdt comet
20447
+ name: "getPrice",
20448
+ params: [
20449
+ "0x8C74B2811D2F1aD65517ADB5C65773c1E520ed2f"
20450
+ // sfrax
20451
+ ]
20452
+ },
20453
+ {
20454
+ address: "0x3Afdc9BCA9213A35503b077a6072F3D0d5AB0840",
20455
+ name: "getPrice",
20456
+ params: [
20457
+ "0x471a6299C027Bd81ed4D66069dc510Bd0569f4F8"
20458
+ // deusd
20459
+ ]
20460
+ },
20461
+ {
20462
+ address: "0x3Afdc9BCA9213A35503b077a6072F3D0d5AB0840",
20463
+ name: "getPrice",
20464
+ params: [
20465
+ "0xE4829421ae79f2F44716cCbbb40751cd6Be3d483"
20466
+ // sdeusd
20467
+ ]
20468
+ }
20469
+ ],
20470
+ names
20471
+ ];
20472
+ }
20473
+ default:
20474
+ return [[], []];
20475
+ }
20476
+ };
20477
+ var parseCometResults = (chainId, data, names) => {
20478
+ switch (chainId) {
20479
+ case Chain.ETHEREUM_MAINNET: {
20480
+ const targetDecimals = [8, 8, 8];
20481
+ return Object.assign(
20482
+ {},
20483
+ ...data.map((entry, index) => {
20484
+ return {
20485
+ [names[index]]: Number(parseRawAmount(entry ?? "0", targetDecimals[index]))
20486
+ };
20487
+ })
20488
+ );
20489
+ }
20490
+ default: {
20491
+ return {};
20492
+ }
20493
+ }
20494
+ };
20386
20495
  var getUniswapV3Calls = (chainId) => {
20387
20496
  switch (chainId) {
20388
20497
  case Chain.HEMI_NETWORK:
@@ -20530,12 +20639,10 @@ var parseMorphoResults = (chainId, data, queries, donePrices = {}, list = {}) =>
20530
20639
  let prices = {};
20531
20640
  data.forEach((d, i) => {
20532
20641
  const details = queries[i];
20533
- const {
20534
- loanAsset,
20535
- collateralAsset,
20536
- loanAssetDecimals,
20537
- collateralAssetDecimals
20538
- } = details;
20642
+ const loanAsset = details?.loanAsset;
20643
+ const collateralAsset = details?.collateralAsset;
20644
+ const loanAssetDecimals = details?.loanAssetDecimals;
20645
+ const collateralAssetDecimals = details?.collateralAssetDecimals;
20539
20646
  const oracleId = list[loanAsset]?.assetGroup ?? chainId + "-" + loanAsset;
20540
20647
  const debtPrice = donePrices[oracleId] ?? prices[oracleId];
20541
20648
  const oracleIdCollateral = list[collateralAsset]?.assetGroup ?? chainId + "-" + collateralAsset;
@@ -20546,12 +20653,12 @@ var parseMorphoResults = (chainId, data, queries, donePrices = {}, list = {}) =>
20546
20653
  collateralAssetDecimals
20547
20654
  );
20548
20655
  if (debtPrice) {
20549
- if (!prices[oracleIdCollateral]) {
20656
+ if (!prices[oracleIdCollateral] && !donePrices[oracleIdCollateral]) {
20550
20657
  prices[oracleIdCollateral] = priceDebtToCollateral * debtPrice;
20551
20658
  }
20552
20659
  } else {
20553
20660
  if (collateralPrice) {
20554
- if (!prices[oracleId]) {
20661
+ if (!prices[oracleId] && !donePrices[oracleId]) {
20555
20662
  prices[oracleId] = collateralPrice / priceDebtToCollateral;
20556
20663
  }
20557
20664
  }