@1delta/margin-fetcher 0.0.224 → 0.0.226

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 (53) hide show
  1. package/dist/index.d.ts +1 -2
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +272 -3216
  4. package/dist/index.js.map +1 -1
  5. package/dist/lending/public-data/aave-v2-type/publicCallParse.d.ts.map +1 -1
  6. package/dist/lending/public-data/aave-v3-type/publicCallParse.d.ts.map +1 -1
  7. package/dist/lending/public-data/aave-v4-type/fetcher/normalize.d.ts +56 -0
  8. package/dist/lending/public-data/aave-v4-type/fetcher/normalize.d.ts.map +1 -1
  9. package/dist/lending/public-data/aave-v4-type/fetcher/types.d.ts +8 -0
  10. package/dist/lending/public-data/aave-v4-type/fetcher/types.d.ts.map +1 -1
  11. package/dist/lending/public-data/aave-v4-type/publicCallParse.d.ts.map +1 -1
  12. package/dist/lending/public-data/compound-v2/convert/benqi.d.ts +2 -0
  13. package/dist/lending/public-data/compound-v2/convert/benqi.d.ts.map +1 -1
  14. package/dist/lending/public-data/compound-v2/convert/standard.d.ts +2 -0
  15. package/dist/lending/public-data/compound-v2/convert/standard.d.ts.map +1 -1
  16. package/dist/lending/public-data/compound-v2/convert/sumer.d.ts +2 -0
  17. package/dist/lending/public-data/compound-v2/convert/sumer.d.ts.map +1 -1
  18. package/dist/lending/public-data/compound-v2/convert/takara.d.ts +2 -0
  19. package/dist/lending/public-data/compound-v2/convert/takara.d.ts.map +1 -1
  20. package/dist/lending/public-data/compound-v2/convert/tectonic.d.ts +2 -0
  21. package/dist/lending/public-data/compound-v2/convert/tectonic.d.ts.map +1 -1
  22. package/dist/lending/public-data/compound-v3/publicCallParse.d.ts.map +1 -1
  23. package/dist/lending/public-data/euler/publicCallParse.d.ts.map +1 -1
  24. package/dist/lending/public-data/init/publicCallParse.d.ts.map +1 -1
  25. package/dist/lending/public-data/lista/getMarketsFromChain.d.ts.map +1 -1
  26. package/dist/lending/public-data/morpho/convertPublic.d.ts.map +1 -1
  27. package/dist/lending/public-data/morpho/getMarketsFromChain.d.ts.map +1 -1
  28. package/dist/lending/user-data/aave-v4-type/createAaveV4UserState.d.ts.map +1 -1
  29. package/dist/prices/index.d.ts +0 -2
  30. package/dist/prices/index.d.ts.map +1 -1
  31. package/dist/types/apiReturnType.d.ts +7 -0
  32. package/dist/types/apiReturnType.d.ts.map +1 -1
  33. package/dist/types/lender/compound-v2-types.d.ts +2 -0
  34. package/dist/types/lender/compound-v2-types.d.ts.map +1 -1
  35. package/dist/types/lender/morpho-types.d.ts +2 -0
  36. package/dist/types/lender/morpho-types.d.ts.map +1 -1
  37. package/dist/types/lenderTypes.d.ts +2 -0
  38. package/dist/types/lenderTypes.d.ts.map +1 -1
  39. package/package.json +4 -4
  40. package/dist/lending-pairs/computeLendingPairs.d.ts +0 -58
  41. package/dist/lending-pairs/computeLendingPairs.d.ts.map +0 -1
  42. package/dist/lending-pairs/index.d.ts +0 -2
  43. package/dist/lending-pairs/index.d.ts.map +0 -1
  44. package/dist/prices/defillama/index.d.ts +0 -3
  45. package/dist/prices/defillama/index.d.ts.map +0 -1
  46. package/dist/prices/main-prices/addresses/api3.d.ts +0 -6
  47. package/dist/prices/main-prices/addresses/api3.d.ts.map +0 -1
  48. package/dist/prices/main-prices/addresses/chainlink.d.ts +0 -733
  49. package/dist/prices/main-prices/addresses/chainlink.d.ts.map +0 -1
  50. package/dist/prices/main-prices/fetchOracleData.d.ts +0 -17
  51. package/dist/prices/main-prices/fetchOracleData.d.ts.map +0 -1
  52. package/dist/prices/main-prices/index.d.ts +0 -2
  53. package/dist/prices/main-prices/index.d.ts.map +0 -1
package/dist/index.js CHANGED
@@ -4,7 +4,7 @@ import './chunk-PR4QN5HX.js';
4
4
  import { Lender, isAaveType, isCompoundV3, isMultiMarket, 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';
5
5
  export { isAaveType, isAaveV2Type, isAaveV32Type, isAaveV3Type, isCompoundV3, isCompoundV3Type, isInit, isMorphoType, isMultiMarket, isYLDR } from '@1delta/lender-registry';
6
6
  import lodash from 'lodash';
7
- import { getEvmChain, multicallRetryUniversal, getEvmClient, getEvmClientUniversal } from '@1delta/providers';
7
+ import { getEvmChain, getEvmClient, getEvmClientUniversal, multicallRetryUniversal } from '@1delta/providers';
8
8
  import { MorphoLensAbi, AaveV4SpokeAbi, AaveV4OracleAbi, AaveV4HubAbi, 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, InitMarginAddresses } from '@1delta/calldata-sdk';
@@ -6287,7 +6287,6 @@ var aavePools = () => getGlobalData2()?.aavePools;
6287
6287
  var aaveOracles = () => getGlobalData2()?.aaveOracles;
6288
6288
  var compoundV2Oracles = () => getGlobalData2()?.compoundV2Oracles;
6289
6289
  var compoundV3OraclesData = () => getGlobalData2()?.compoundV3OraclesData;
6290
- var morphoTypeOracles = () => getGlobalData2()?.morphoTypeOracles;
6291
6290
  var morphoTypeMarkets = () => getGlobalData2()?.morphoTypeMarkets;
6292
6291
  var aaveReserves = () => getGlobalData2()?.aaveReserves;
6293
6292
  var compoundV3Reserves = () => getGlobalData2()?.compoundV3Reserves;
@@ -8107,18 +8106,6 @@ var convertRateToApr = (ratePerSecond) => {
8107
8106
  if (isNaN(rps)) return 0;
8108
8107
  return rps * 3600 * 24 * 365 * 100;
8109
8108
  };
8110
- var formatAavePrice = (price, exponent = 10n) => {
8111
- try {
8112
- return Number(
8113
- formatEther(
8114
- BigInt(price ?? "0") * // 10^(18 - decimals)
8115
- 10n ** exponent
8116
- )
8117
- );
8118
- } catch {
8119
- return NaN;
8120
- }
8121
- };
8122
8109
  var formatMorphoPrice = (price, collateralDec, debtDec) => {
8123
8110
  try {
8124
8111
  return Number(
@@ -8186,11 +8173,13 @@ var getAaveV2ReservesDataConverter = (lender, chainId, prices, additionalYields,
8186
8173
  totalDebtStable: totalStableDebt,
8187
8174
  totalDebt: totalVariableDebt,
8188
8175
  totalLiquidity: liquidity,
8176
+ borrowLiquidity: liquidity,
8189
8177
  // USD amounts
8190
8178
  totalDepositsUSD,
8191
8179
  totalDebtStableUSD: Number(totalStableDebt) * price,
8192
8180
  totalDebtUSD,
8193
8181
  totalLiquidityUSD: liquidity * price,
8182
+ borrowLiquidityUSD: liquidity * price,
8194
8183
  utilization: computeUtilization(
8195
8184
  totalAToken,
8196
8185
  totalVariableDebt,
@@ -8354,11 +8343,13 @@ var getAaveV3ReservesDataConverter = (lender, chainId, prices, additionalYields,
8354
8343
  totalDebtStable,
8355
8344
  totalDebt,
8356
8345
  totalLiquidity: liquidity,
8346
+ borrowLiquidity: liquidity,
8357
8347
  // USD amounts
8358
8348
  totalDepositsUSD: Number(totalDeposits) * price,
8359
8349
  totalDebtStableUSD: Number(totalDebtStable) * price,
8360
8350
  totalDebtUSD: Number(totalDebt) * price,
8361
8351
  totalLiquidityUSD: liquidity * price,
8352
+ borrowLiquidityUSD: liquidity * price,
8362
8353
  utilization: computeUtilization(
8363
8354
  totalDeposits,
8364
8355
  totalDebt,
@@ -8410,7 +8401,17 @@ var getAaveV3ReservesDataConverter = (lender, chainId, prices, additionalYields,
8410
8401
  debtCeiling?.toString(),
8411
8402
  Number(decimalsCeiling?.toString())
8412
8403
  )
8413
- )
8404
+ ),
8405
+ // borrow liquidity (cap-adjusted)
8406
+ ...(() => {
8407
+ const bc = Number(reserveCaps[0]?.toString());
8408
+ const liq = resultReserves[marketUid].totalLiquidity;
8409
+ const bl = bc > 0 ? Math.min(liq, Math.max(0, bc - Number(totalDebt) - Number(totalDebtStable))) : liq;
8410
+ return {
8411
+ borrowLiquidity: bl,
8412
+ borrowLiquidityUSD: bl * price
8413
+ };
8414
+ })()
8414
8415
  };
8415
8416
  const aaveTokens2 = aaveTokenMap[asset];
8416
8417
  if (!!aaveTokens2) {
@@ -8567,11 +8568,13 @@ function parseYLDRCall(chainId, lender, additionalYields, prices, tokenList) {
8567
8568
  totalDebtStable: 0,
8568
8569
  totalDebt: totalVariableDebt,
8569
8570
  totalLiquidity: liquidity,
8571
+ borrowLiquidity: liquidity,
8570
8572
  // USD amounts
8571
8573
  totalDepositsUSD,
8572
8574
  totalDebtStableUSD: 0,
8573
8575
  totalDebtUSD,
8574
8576
  totalLiquidityUSD: liquidity * price,
8577
+ borrowLiquidityUSD: liquidity * price,
8575
8578
  utilization: computeUtilization(totalAToken, totalVariableDebt),
8576
8579
  // rates
8577
8580
  depositRate: formatAaveRawApyToApr(
@@ -8706,11 +8709,13 @@ function parseAave32(chainId, lender, prices, additionalYields, tokenList) {
8706
8709
  totalDebtStable,
8707
8710
  totalDebt,
8708
8711
  totalLiquidity: liquidity,
8712
+ borrowLiquidity: liquidity,
8709
8713
  // USD amounts
8710
8714
  totalDepositsUSD: Number(totalDeposits) * price,
8711
8715
  totalDebtStableUSD: Number(totalDebtStable) * price,
8712
8716
  totalDebtUSD: Number(totalDebt) * price,
8713
8717
  totalLiquidityUSD: liquidity * price,
8718
+ borrowLiquidityUSD: liquidity * price,
8714
8719
  utilization: computeUtilization(
8715
8720
  totalDeposits,
8716
8721
  totalDebt,
@@ -8766,7 +8771,17 @@ function parseAave32(chainId, lender, prices, additionalYields, tokenList) {
8766
8771
  debtCeiling?.toString(),
8767
8772
  Number(decimalsCeiling?.toString())
8768
8773
  )
8769
- )
8774
+ ),
8775
+ // borrow liquidity (cap-adjusted)
8776
+ ...(() => {
8777
+ const bc = Number(reserveCaps[0]?.toString());
8778
+ const liq = resultReserves[marketUid].totalLiquidity;
8779
+ const bl = bc > 0 ? Math.min(liq, Math.max(0, bc - Number(totalDebt) - Number(totalDebtStable))) : liq;
8780
+ return {
8781
+ borrowLiquidity: bl,
8782
+ borrowLiquidityUSD: bl * price
8783
+ };
8784
+ })()
8770
8785
  };
8771
8786
  const aaveTokens2 = aaveTokenMap[asset];
8772
8787
  if (!!aaveTokens2) {
@@ -8825,23 +8840,25 @@ var getInitReservesDataConverter = (lender, chainId, prices, additionalYields, t
8825
8840
  meta.decimals
8826
8841
  );
8827
8842
  const oracleKey = toOracleKey(meta?.assetGroup) ?? toGenericPriceKey(asset, chainId);
8828
- const price = prices[oracleKey];
8843
+ const price = prices[oracleKey] ?? 0;
8829
8844
  const liquidity = Number(totalDeposits) - Number(totalDebt);
8830
8845
  const poolId = underlyingToPoolMap.get(asset);
8831
8846
  const params = !!poolId ? { metadata: { poolId } } : void 0;
8832
8847
  if (!poolId) return;
8833
8848
  const marketUid = createMarketUid(chainId, lender, poolId);
8834
8849
  const name = INIT_POOL_NAME_OVERRIDES[poolId.toLowerCase()] ?? lenderShortName(lender) + " " + (meta?.symbol ?? "");
8850
+ const borrowCap = Number(parseRawAmount(
8851
+ dat?.borrowCap.toString(),
8852
+ meta.decimals
8853
+ ));
8854
+ const borrowLiq = borrowCap > 0 ? Math.min(liquidity, Math.max(0, borrowCap - Number(totalDebt))) : liquidity;
8835
8855
  result[asset] = {
8836
8856
  marketUid,
8837
8857
  name,
8838
8858
  poolId: asset,
8839
8859
  underlying: asset,
8840
8860
  asset: meta,
8841
- borrowCap: parseRawAmount(
8842
- dat?.borrowCap.toString(),
8843
- meta.decimals
8844
- ),
8861
+ borrowCap,
8845
8862
  canBurn: Boolean(dat?.canBurn),
8846
8863
  canFlash: Boolean(dat?.canFlash),
8847
8864
  canMint: Boolean(dat?.canMint),
@@ -8851,7 +8868,9 @@ var getInitReservesDataConverter = (lender, chainId, prices, additionalYields, t
8851
8868
  totalDepositsUSD: price * Number(totalDeposits),
8852
8869
  totalDebtUSD: price * Number(totalDebt),
8853
8870
  totalLiquidity: liquidity,
8871
+ borrowLiquidity: borrowLiq,
8854
8872
  totalLiquidityUSD: liquidity * price,
8873
+ borrowLiquidityUSD: borrowLiq * price,
8855
8874
  utilization: computeUtilization(totalDeposits, totalDebt),
8856
8875
  depositRate: convertRateToApr(
8857
8876
  Number(parseRawAmount(dat?.supplyRate.toString(), 18))
@@ -8989,7 +9008,9 @@ var getCompoundV3ReservesDataConverter = (lender, chainId, prices, additionalYie
8989
9008
  totalDebt: 0,
8990
9009
  totalDebtUSD: 0,
8991
9010
  totalLiquidity: totals,
9011
+ borrowLiquidity: totals,
8992
9012
  totalLiquidityUSD: totalUsd,
9013
+ borrowLiquidityUSD: totalUsd,
8993
9014
  // deposits are different outputs for base asset and others
8994
9015
  totalDeposits: totals,
8995
9016
  totalDepositsUSD: totalUsd,
@@ -9063,7 +9084,9 @@ var getCompoundV3ReservesDataConverter = (lender, chainId, prices, additionalYie
9063
9084
  )
9064
9085
  ),
9065
9086
  totalLiquidity: liquidity,
9087
+ borrowLiquidity: liquidity,
9066
9088
  totalLiquidityUSD: liquidity * price,
9089
+ borrowLiquidityUSD: liquidity * price,
9067
9090
  totalDebt: resultsBorrow,
9068
9091
  totalDeposits: resultsSupply,
9069
9092
  totalDebtUSD: Number(resultsBorrow) * price,
@@ -12188,7 +12211,9 @@ function convertMarketsToMorphoResponse(response, chainId, additionalYields = {
12188
12211
  totalDepositsUSD: Number(state.supplyAssetsUsd),
12189
12212
  totalDebtStableUSD: 0,
12190
12213
  totalLiquidity: totalDeposits - totalDebt,
12214
+ borrowLiquidity: totalDeposits - totalDebt,
12191
12215
  totalLiquidityUSD: Number(state.supplyAssetsUsd) - Number(state.borrowAssetsUsd),
12216
+ borrowLiquidityUSD: Number(state.supplyAssetsUsd) - Number(state.borrowAssetsUsd),
12192
12217
  totalDebtUSD: Number(state.borrowAssetsUsd),
12193
12218
  utilization,
12194
12219
  depositRate: apyToApr2(Number(state.supplyApy)) * 100,
@@ -12238,7 +12263,12 @@ function convertMarketsToMorphoResponse(response, chainId, additionalYields = {
12238
12263
  state.collateralAssets,
12239
12264
  collateralAsset.decimals
12240
12265
  ),
12266
+ borrowLiquidity: formatNr(
12267
+ state.collateralAssets,
12268
+ collateralAsset.decimals
12269
+ ),
12241
12270
  totalLiquidityUSD: Number(state.collateralAssetsUsd),
12271
+ borrowLiquidityUSD: Number(state.collateralAssetsUsd),
12242
12272
  totalDepositsUSD: Number(state.collateralAssetsUsd),
12243
12273
  totalDebtStableUSD: 0,
12244
12274
  totalDebtUSD: 0,
@@ -12942,7 +12972,9 @@ function getListaMarketDataConverter(lender, chainId, prices, additionalYields =
12942
12972
  totalDepositsUSD: totalDeposits * loanPrice,
12943
12973
  totalDebtStableUSD: 0,
12944
12974
  totalLiquidity: totalDeposits - totalDebt,
12975
+ borrowLiquidity: totalDeposits - totalDebt,
12945
12976
  totalLiquidityUSD: (totalDeposits - totalDebt) * loanPrice,
12977
+ borrowLiquidityUSD: (totalDeposits - totalDebt) * loanPrice,
12946
12978
  totalDebtUSD: totalDebt * loanPrice,
12947
12979
  // utilization is a WAD bigint from MathLib; surface as 0..1 number
12948
12980
  utilization: Number(utilization) / 1e18,
@@ -12983,7 +13015,9 @@ function getListaMarketDataConverter(lender, chainId, prices, additionalYields =
12983
13015
  totalDebtStable: 0,
12984
13016
  totalDebt: 0,
12985
13017
  totalLiquidity: 0,
13018
+ borrowLiquidity: 0,
12986
13019
  totalLiquidityUSD: 0,
13020
+ borrowLiquidityUSD: 0,
12987
13021
  totalDepositsUSD: 0,
12988
13022
  totalDebtStableUSD: 0,
12989
13023
  totalDebtUSD: 0,
@@ -13154,7 +13188,9 @@ function getMorphoMarketDataConverter(lender, chainId, prices, additionalYields
13154
13188
  totalDepositsUSD: totalDeposits * loanPrice,
13155
13189
  totalDebtStableUSD: 0,
13156
13190
  totalLiquidity: totalDeposits - totalDebt,
13191
+ borrowLiquidity: totalDeposits - totalDebt,
13157
13192
  totalLiquidityUSD: (totalDeposits - totalDebt) * loanPrice,
13193
+ borrowLiquidityUSD: (totalDeposits - totalDebt) * loanPrice,
13158
13194
  totalDebtUSD: totalDebt * loanPrice,
13159
13195
  // utilization is a WAD bigint from MathLib; surface as 0..1 number
13160
13196
  utilization: Number(utilization) / 1e18,
@@ -13200,7 +13236,9 @@ function getMorphoMarketDataConverter(lender, chainId, prices, additionalYields
13200
13236
  totalDebtStable: 0,
13201
13237
  totalDebt: 0,
13202
13238
  totalLiquidity: 0,
13239
+ borrowLiquidity: 0,
13203
13240
  totalLiquidityUSD: 0,
13241
+ borrowLiquidityUSD: 0,
13204
13242
  totalDepositsUSD: 0,
13205
13243
  totalDebtStableUSD: 0,
13206
13244
  totalDebtUSD: 0,
@@ -15795,7 +15833,9 @@ function convertSingleEntry(opts) {
15795
15833
  variableBorrowRate: currentEntry.variableBorrowRate,
15796
15834
  stableBorrowRate: 0,
15797
15835
  totalLiquidity: liquidity,
15836
+ borrowLiquidity: liquidity,
15798
15837
  totalLiquidityUSD: liquidity * price,
15838
+ borrowLiquidityUSD: liquidity * price,
15799
15839
  totalDebt,
15800
15840
  totalDebtUSD: totalDebt * price,
15801
15841
  totalDeposits: totalSupplyUnderlying,
@@ -15897,7 +15937,9 @@ function convertSumerEntry(opts) {
15897
15937
  variableBorrowRate: currentEntry.variableBorrowRate,
15898
15938
  stableBorrowRate: 0,
15899
15939
  totalLiquidity: liquidity,
15940
+ borrowLiquidity: liquidity,
15900
15941
  totalLiquidityUSD: liquidity * price,
15942
+ borrowLiquidityUSD: liquidity * price,
15901
15943
  totalDebt,
15902
15944
  totalDebtUSD: totalDebt * price,
15903
15945
  totalDeposits: totalSupplyUnderlying,
@@ -15961,7 +16003,9 @@ function convertTakaraEntry(opts) {
15961
16003
  variableBorrowRate: rates.variableBorrowRate,
15962
16004
  stableBorrowRate: 0,
15963
16005
  totalLiquidity: liquidity,
16006
+ borrowLiquidity: liquidity,
15964
16007
  totalLiquidityUSD: liquidityUSD,
16008
+ borrowLiquidityUSD: liquidityUSD,
15965
16009
  totalDebt,
15966
16010
  totalDebtUSD,
15967
16011
  totalDeposits,
@@ -16031,7 +16075,9 @@ function convertTectonicEntry(opts) {
16031
16075
  variableBorrowRate: rates.variableBorrowRate,
16032
16076
  stableBorrowRate: 0,
16033
16077
  totalLiquidity: liquidity,
16078
+ borrowLiquidity: liquidity,
16034
16079
  totalLiquidityUSD: liquidity * price,
16080
+ borrowLiquidityUSD: liquidity * price,
16035
16081
  totalDebt,
16036
16082
  totalDebtUSD: totalDebt * price,
16037
16083
  totalDeposits: totalSupplyUnderlying,
@@ -16196,7 +16242,9 @@ function convertBenqiEntry(opts) {
16196
16242
  variableBorrowRate: rates.variableBorrowRate,
16197
16243
  stableBorrowRate: 0,
16198
16244
  totalLiquidity: liquidity,
16245
+ borrowLiquidity: liquidity,
16199
16246
  totalLiquidityUSD: liquidity * price,
16247
+ borrowLiquidityUSD: liquidity * price,
16200
16248
  totalDebt,
16201
16249
  totalDebtUSD: totalDebt * price,
16202
16250
  totalDeposits,
@@ -17925,6 +17973,14 @@ var getEulerV2ReservesDataConverter = (lender, chainId, prices, additionalYields
17925
17973
  totalDebtStable: String(entry.totalDebtStable),
17926
17974
  totalDebt: String(totalDebt),
17927
17975
  totalLiquidity: String(totalLiquidity),
17976
+ ...(() => {
17977
+ const bc = entry.borrowCap;
17978
+ const bl = bc > 0 ? Math.min(totalLiquidity, Math.max(0, bc - totalDebt)) : totalLiquidity;
17979
+ return {
17980
+ borrowLiquidity: bl,
17981
+ borrowLiquidityUSD: bl * price
17982
+ };
17983
+ })(),
17928
17984
  // USD amounts
17929
17985
  totalDepositsUSD,
17930
17986
  totalDebtStableUSD: entry.totalDebtStableUSD,
@@ -18100,10 +18156,11 @@ function toTokenAmount2(raw, decimals) {
18100
18156
  }
18101
18157
  function toTokenNumber(raw, decimals) {
18102
18158
  if (raw === 0n) return 0;
18103
- return Number(raw) / 10 ** decimals;
18159
+ return parseFloat(toTokenAmount2(raw, decimals));
18104
18160
  }
18105
18161
  var RAY2 = 1e27;
18106
18162
  var MAX_SPOKE_CAP = 2 ** 40 - 1;
18163
+ var RAY_BIGINT = 10n ** 27n;
18107
18164
  function rayRateToApr(rateRay) {
18108
18165
  if (rateRay === 0n) return 0;
18109
18166
  return Number(rateRay) / RAY2 * 100;
@@ -18137,28 +18194,41 @@ function normalizeAaveV4(spokeDataList, chainId, spokeLenderKeyArg, prices, addi
18137
18194
  const spokeTotalDebtNum = toTokenNumber(reserve.totalDebt, decimals);
18138
18195
  const supplyCap = reserve.spokeBinding?.addCap ?? 0;
18139
18196
  const borrowCap = reserve.spokeBinding?.drawCap ?? 0;
18197
+ const bindingExists = reserve.spokeBinding !== void 0;
18198
+ const spokeActive = reserve.spokeBinding?.active;
18199
+ const spokeHalted = reserve.spokeBinding?.halted;
18140
18200
  const hubDecimals = reserve.hubAsset.decimals || decimals;
18201
+ let spokeDeficitTokens = 0;
18202
+ const rawDeficitRay = reserve.spokeBinding?.deficitRay;
18203
+ if (rawDeficitRay && rawDeficitRay > 0n) {
18204
+ const deficitRawTokens = (rawDeficitRay + RAY_BIGINT - 1n) / RAY_BIGINT;
18205
+ spokeDeficitTokens = toTokenNumber(deficitRawTokens, hubDecimals);
18206
+ }
18141
18207
  const hubLiquidityNum = toTokenNumber(
18142
18208
  reserve.hubAsset.liquidity ?? 0n,
18143
18209
  hubDecimals
18144
18210
  );
18145
18211
  let borrowLiquidityNum = hubLiquidityNum;
18146
- if (borrowCap > 0 && borrowCap < MAX_SPOKE_CAP) {
18147
- const spokeHeadroom = borrowCap - spokeTotalDebtNum;
18212
+ const hubBindingBlocked = bindingExists && (spokeActive === false || spokeHalted === true);
18213
+ if (hubBindingBlocked) {
18214
+ borrowLiquidityNum = 0;
18215
+ } else if (bindingExists && borrowCap === 0) {
18216
+ borrowLiquidityNum = 0;
18217
+ } else if (borrowCap > 0 && borrowCap < MAX_SPOKE_CAP) {
18218
+ const spokeHeadroom = borrowCap - spokeTotalDebtNum - spokeDeficitTokens;
18148
18219
  if (spokeHeadroom < borrowLiquidityNum)
18149
18220
  borrowLiquidityNum = spokeHeadroom;
18150
18221
  }
18151
18222
  if (borrowLiquidityNum < 0) borrowLiquidityNum = 0;
18152
- const borrowLiquidityUSD = borrowLiquidityNum * price;
18153
18223
  const variableBorrowRate = rayRateToApr(reserve.hubAsset.drawnRate);
18154
18224
  const hubTotalSupplyRaw = reserve.hubAsset.totalAddedAssets ?? 0n;
18155
18225
  const hubTotalOwedRaw = reserve.hubAsset.totalOwedAssets ?? 0n;
18156
- const totalDepositsStr = toTokenAmount2(hubTotalSupplyRaw, hubDecimals);
18157
- const totalDebtStr = toTokenAmount2(hubTotalOwedRaw, hubDecimals);
18226
+ const hubDepositsStr = toTokenAmount2(hubTotalSupplyRaw, hubDecimals);
18227
+ const hubBorrowsStr = toTokenAmount2(hubTotalOwedRaw, hubDecimals);
18158
18228
  const hubTotalSupply = toTokenNumber(hubTotalSupplyRaw, hubDecimals);
18159
18229
  const hubTotalOwed = toTokenNumber(hubTotalOwedRaw, hubDecimals);
18160
- const totalDepositsUSD = hubTotalSupply * price;
18161
- const totalDebtUSD = hubTotalOwed * price;
18230
+ const hubDepositsUSD = hubTotalSupply * price;
18231
+ const hubBorrowsUSD = hubTotalOwed * price;
18162
18232
  const hubUtilization = hubTotalSupply > 0 ? hubTotalOwed / hubTotalSupply : 0;
18163
18233
  const feeRate = reserve.hubAsset.liquidityFee ? reserve.hubAsset.liquidityFee / BPS : 0;
18164
18234
  const depositRate = variableBorrowRate * hubUtilization * (1 - feeRate);
@@ -18172,8 +18242,10 @@ function normalizeAaveV4(spokeDataList, chainId, spokeLenderKeyArg, prices, addi
18172
18242
  borrowCollateralFactor: dynCfg.collateralFactor / BPS,
18173
18243
  collateralFactor: dynCfg.collateralFactor / BPS,
18174
18244
  borrowFactor: 1,
18175
- collateralDisabled: dynCfg.collateralFactor === 0 || reserve.config.paused,
18176
- debtDisabled: !reserve.config.borrowable || reserve.config.paused
18245
+ // _validateSetUsingAsCollateral: !paused && !frozen (frozen blocks enabling)
18246
+ collateralDisabled: dynCfg.collateralFactor === 0 || reserve.config.paused || reserve.config.frozen,
18247
+ // _validateBorrow: !paused && !frozen && borrowable
18248
+ debtDisabled: !reserve.config.borrowable || reserve.config.paused || reserve.config.frozen
18177
18249
  };
18178
18250
  }
18179
18251
  if (Object.keys(config).length === 0) {
@@ -18184,12 +18256,25 @@ function normalizeAaveV4(spokeDataList, chainId, spokeLenderKeyArg, prices, addi
18184
18256
  collateralFactor: 0,
18185
18257
  borrowFactor: 1,
18186
18258
  collateralDisabled: true,
18187
- debtDisabled: !reserve.config.borrowable || reserve.config.paused
18259
+ debtDisabled: !reserve.config.borrowable || reserve.config.paused || reserve.config.frozen
18188
18260
  };
18189
18261
  }
18190
18262
  const collateralActive = Object.values(reserve.dynamicConfigs).some(
18191
18263
  (c) => c.collateralFactor > 0
18192
18264
  );
18265
+ const totalDepositsStr = toTokenAmount2(reserve.suppliedAssets, decimals);
18266
+ const totalDebtStr = toTokenAmount2(reserve.totalDebt, decimals);
18267
+ const spokeSupplyNum = toTokenNumber(reserve.suppliedAssets, decimals);
18268
+ const totalDepositsUSD = spokeSupplyNum * price;
18269
+ const totalDebtUSD = spokeTotalDebtNum * price;
18270
+ let depositableNum;
18271
+ if (hubBindingBlocked || bindingExists && supplyCap === 0) {
18272
+ depositableNum = 0;
18273
+ } else if (supplyCap >= MAX_SPOKE_CAP) {
18274
+ depositableNum = null;
18275
+ } else {
18276
+ depositableNum = Math.max(0, supplyCap - spokeSupplyNum);
18277
+ }
18193
18278
  data[marketUid] = {
18194
18279
  marketUid,
18195
18280
  name: "Aave V4 " + spokeData.label + " " + (assetMeta?.symbol ?? ""),
@@ -18199,13 +18284,17 @@ function normalizeAaveV4(spokeDataList, chainId, spokeLenderKeyArg, prices, addi
18199
18284
  totalDeposits: totalDepositsStr,
18200
18285
  totalDebtStable: "0",
18201
18286
  totalDebt: totalDebtStr,
18202
- // V4 borrow liquidity comes from the hub, not from local supplies.
18203
- // See the comment block where `borrowLiquidityNum` is computed.
18204
- totalLiquidity: borrowLiquidityNum,
18287
+ // Raw hub liquidity withdraw-side ceiling, not cap-gated.
18288
+ totalLiquidity: hubLiquidityNum,
18205
18289
  totalDepositsUSD,
18206
18290
  totalDebtStableUSD: 0,
18207
18291
  totalDebtUSD,
18208
- totalLiquidityUSD: borrowLiquidityUSD,
18292
+ totalLiquidityUSD: hubLiquidityNum * price,
18293
+ // Hub aggregates for IRM consumers.
18294
+ hubDeposits: hubDepositsStr,
18295
+ hubBorrows: hubBorrowsStr,
18296
+ hubDepositsUSD,
18297
+ hubBorrowsUSD,
18209
18298
  depositRate,
18210
18299
  variableBorrowRate,
18211
18300
  stableBorrowRate: 0,
@@ -18215,14 +18304,22 @@ function normalizeAaveV4(spokeDataList, chainId, spokeLenderKeyArg, prices, addi
18215
18304
  decimals,
18216
18305
  config,
18217
18306
  collateralActive,
18218
- borrowingEnabled: reserve.config.borrowable,
18219
- depositsEnabled: reserve.config.receiveSharesEnabled && !reserve.config.paused,
18307
+ // On-chain: Spoke._validateBorrow checks !paused && !frozen && borrowable,
18308
+ // then Hub._validateDraw checks spoke.active && !halted && drawCap headroom.
18309
+ borrowingEnabled: reserve.config.borrowable && !reserve.config.paused && !reserve.config.frozen && !hubBindingBlocked && !(bindingExists && borrowCap === 0),
18310
+ // On-chain: Spoke._validateSupply checks !paused && !frozen,
18311
+ // then Hub._validateAdd checks spoke.active && !halted && addCap headroom.
18312
+ // Note: receiveSharesEnabled is a liquidation-mode flag (whether liquidators
18313
+ // receive shares or underlying) — it does NOT gate user deposits.
18314
+ depositsEnabled: !reserve.config.paused && !reserve.config.frozen && !hubBindingBlocked && !(bindingExists && supplyCap === 0),
18220
18315
  hasStable: false,
18221
18316
  isActive: !reserve.config.paused,
18222
18317
  isFrozen: reserve.config.frozen,
18223
18318
  borrowCap,
18224
18319
  supplyCap,
18225
18320
  debtCeiling: 0,
18321
+ spokeActive,
18322
+ spokeHalted,
18226
18323
  params: {
18227
18324
  metadata: {
18228
18325
  assetId: reserve.reserve.assetId,
@@ -18231,7 +18328,10 @@ function normalizeAaveV4(spokeDataList, chainId, spokeLenderKeyArg, prices, addi
18231
18328
  }
18232
18329
  },
18233
18330
  collateralRiskBps,
18234
- riskPremiumThresholdBps
18331
+ riskPremiumThresholdBps,
18332
+ depositable: depositableNum,
18333
+ borrowLiquidity: borrowLiquidityNum,
18334
+ borrowLiquidityUSD: borrowLiquidityNum * price
18235
18335
  };
18236
18336
  }
18237
18337
  if (Object.keys(data).length === 0) return void 0;
@@ -18422,7 +18522,8 @@ var getAaveV4ReservesDataConverter = (lender, chainId, prices, additionalYields,
18422
18522
  active: Boolean(rawBinding?.active ?? false),
18423
18523
  halted: Boolean(rawBinding?.halted ?? false),
18424
18524
  addCap: Number(rawBinding?.addCap ?? 0),
18425
- drawCap: Number(rawBinding?.drawCap ?? 0)
18525
+ drawCap: Number(rawBinding?.drawCap ?? 0),
18526
+ deficitRay: BigInt(rawBinding?.deficitRay ?? 0)
18426
18527
  };
18427
18528
  const target = parsedReserves.find(
18428
18529
  (pr) => pr.reserveId === r.reserveId
@@ -20467,7 +20568,7 @@ function createAaveV4UserState(payload, lenderData, totalDeposits24h = 0, totalD
20467
20568
  for (const marketUid of spokeMarketUids) {
20468
20569
  const meta = lenderData?.[marketUid];
20469
20570
  if (!meta) continue;
20470
- const { configs, flags, borrowLiquidity, withdrawLiquidity } = meta;
20571
+ const { configs, flags, borrowLiquidity, withdrawLiquidity, depositable } = meta;
20471
20572
  const pos = positions[marketUid];
20472
20573
  const config = resolveDynamicConfig(
20473
20574
  configs,
@@ -20503,6 +20604,7 @@ function createAaveV4UserState(payload, lenderData, totalDeposits24h = 0, totalD
20503
20604
  }
20504
20605
  pos.withdrawable = withdrawable;
20505
20606
  pos.borrowable = borrowable;
20607
+ pos.depositable = depositable == null ? null : String(depositable);
20506
20608
  pos.underlyingInfo = buildUnderlyingInfo(meta);
20507
20609
  } else if ((deposits > 0 || debt > 0) && flags?.borrowingEnabled && !flags?.isFrozen && !config?.debtDisabled) {
20508
20610
  let borrowable = String(Math.max(creditLine / bf, 0) / price);
@@ -20521,6 +20623,7 @@ function createAaveV4UserState(payload, lenderData, totalDeposits24h = 0, totalD
20521
20623
  claimableRewards: 0,
20522
20624
  withdrawable: "0",
20523
20625
  borrowable,
20626
+ depositable: depositable == null ? null : String(depositable),
20524
20627
  underlyingInfo: buildUnderlyingInfo(meta)
20525
20628
  };
20526
20629
  }
@@ -26991,402 +27094,6 @@ function getMaxAmountClose(borrowDiscountedCollateral, adjustedDebt, ltvIn, bfOu
26991
27094
  return (borrowDiscountedCollateral - 1.01 /* SAFE_HF */ * adjustedDebt) / denominator;
26992
27095
  }
26993
27096
 
26994
- // src/assets/liquidityThresholds.ts
26995
- var DEFAULT_LIQUIDITY_THRESHOLDS = {
26996
- minDepositsUSD: 25e3,
26997
- minDebtUSD: 1e4,
26998
- minLiquidityUSD: 15e3
26999
- };
27000
- var ASSET_GROUP_LIQUIDITY_THRESHOLDS = {
27001
- USDC: {
27002
- minDepositsUSD: 25e3,
27003
- minDebtUSD: 5e3,
27004
- minLiquidityUSD: 15e3
27005
- }
27006
- };
27007
- var CHAIN_THRESHOLD_MULTIPLIERS = {
27008
- [Chain.POLYGON_MAINNET]: 1,
27009
- [Chain.ARBITRUM_ONE]: 1,
27010
- [Chain.OP_MAINNET]: 1,
27011
- [Chain.BASE]: 1,
27012
- [Chain.MANTLE]: 0.8,
27013
- [Chain.LINEA]: 0.8,
27014
- [Chain.ZKSYNC_MAINNET]: 0.8,
27015
- [Chain.SCROLL]: 0.8,
27016
- [Chain.TAIKO_ALETHIA]: 0.6,
27017
- [Chain.HEMI_NETWORK]: 0.6
27018
- };
27019
- var ASSET_SPECIFIC_THRESHOLDS = {};
27020
- function getLiquidityThresholds(chainId, assetAddress, assetGroup) {
27021
- const assetKey = `${chainId}-${assetAddress.toLowerCase()}`;
27022
- if (ASSET_SPECIFIC_THRESHOLDS[assetKey]) {
27023
- return ASSET_SPECIFIC_THRESHOLDS[assetKey];
27024
- }
27025
- let baseThresholds = assetGroup && ASSET_GROUP_LIQUIDITY_THRESHOLDS[assetGroup] ? ASSET_GROUP_LIQUIDITY_THRESHOLDS[assetGroup] : DEFAULT_LIQUIDITY_THRESHOLDS;
27026
- const chainMultiplier = CHAIN_THRESHOLD_MULTIPLIERS[chainId] ?? 1;
27027
- return {
27028
- minDepositsUSD: Math.floor(baseThresholds.minDepositsUSD * chainMultiplier),
27029
- minDebtUSD: Math.floor(baseThresholds.minDebtUSD * chainMultiplier),
27030
- minLiquidityUSD: Math.floor(
27031
- baseThresholds.minLiquidityUSD * chainMultiplier
27032
- )
27033
- };
27034
- }
27035
- function meetsLiquidityThresholdsLong(pool, thresholds) {
27036
- return pool.totalDepositsUSD >= thresholds.minDepositsUSD;
27037
- }
27038
- function meetsLiquidityThresholdsShort(pool, thresholds) {
27039
- return pool.totalDebtUSD >= thresholds.minDebtUSD && pool.totalLiquidityUSD >= thresholds.minLiquidityUSD;
27040
- }
27041
- function findMaxBorrowCollateralFactorRatio(lender, configsIn, configsOut) {
27042
- let maxRatio = -Infinity;
27043
- let result = { modeId: "0", eModeCategory: 0 };
27044
- for (const modeId of Object.keys(configsIn)) {
27045
- const dataIn = configsIn[modeId];
27046
- const dataOut = configsOut[modeId];
27047
- if (dataIn.debtDisabled || isAaveV32Type(lender) && dataOut.collateralDisabled) {
27048
- continue;
27049
- }
27050
- if (dataOut.borrowFactor === 0) {
27051
- continue;
27052
- }
27053
- const ratio = dataIn.borrowCollateralFactor / dataOut.borrowFactor;
27054
- if (ratio > maxRatio) {
27055
- maxRatio = ratio;
27056
- result = {
27057
- modeId,
27058
- eModeCategory: dataIn.category
27059
- // category comes from LenderConfigData
27060
- };
27061
- }
27062
- }
27063
- return result;
27064
- }
27065
- var isEMode = (lender, longData, shortData) => findMaxBorrowCollateralFactorRatio(
27066
- lender,
27067
- shortData?.config ?? {},
27068
- longData?.config ?? {}
27069
- );
27070
- var intersection = (a0, a1) => {
27071
- return a0.filter((a) => a1.includes(a));
27072
- };
27073
- var LENDER_MODE_NO_MODE2 = "0";
27074
- var NO_LEVERAGE = {
27075
- maxLeverage: 1,
27076
- eModeConfigId: "0",
27077
- borrowCollateralFactorLong: 0,
27078
- collateralFactorLong: 0,
27079
- borrowFactorShort: 1
27080
- };
27081
- var getLeverageParams = (lender, longData, shortData) => {
27082
- if (isAaveV3Type(lender)) {
27083
- const emode = isEMode(lender, longData, shortData).modeId;
27084
- const modeId = emode ?? LENDER_MODE_NO_MODE2;
27085
- const longConfig2 = longData.config[modeId];
27086
- const shortConfig2 = shortData.config[modeId];
27087
- const cf2 = longConfig2?.borrowCollateralFactor;
27088
- return {
27089
- maxLeverage: 1 / (1 - cf2),
27090
- eModeConfigId: modeId,
27091
- borrowCollateralFactorLong: cf2,
27092
- collateralFactorLong: longConfig2?.collateralFactor ?? cf2,
27093
- borrowFactorShort: shortConfig2?.borrowFactor ?? 1
27094
- };
27095
- }
27096
- if (isInit(lender)) {
27097
- const modeIntersect = intersection(
27098
- Object.values(longData.config).map((c) => c.category),
27099
- Object.values(shortData.config).map((c) => c.category)
27100
- );
27101
- if (modeIntersect.length === 0) return NO_LEVERAGE;
27102
- const configId = String(Object.values(longData.config).filter((c) => modeIntersect.includes(c.category)).sort(
27103
- (c, d) => c.borrowCollateralFactor < d.borrowCollateralFactor ? 1 : -1
27104
- )[0].category);
27105
- const longConfig2 = longData.config[configId];
27106
- const shortConfig2 = shortData.config[configId];
27107
- const cf2 = longConfig2?.borrowCollateralFactor;
27108
- const bf = shortConfig2?.borrowFactor;
27109
- return {
27110
- maxLeverage: 1 / (1 - cf2 / bf),
27111
- eModeConfigId: configId,
27112
- borrowCollateralFactorLong: cf2,
27113
- collateralFactorLong: longConfig2?.collateralFactor ?? cf2,
27114
- borrowFactorShort: bf
27115
- };
27116
- }
27117
- if (isSumerType(lender)) {
27118
- const shortEntries = Object.entries(shortData?.config ?? {});
27119
- if (shortEntries.length === 0) return NO_LEVERAGE;
27120
- const shortGroupId = shortEntries.sort(
27121
- ([, a], [, b]) => b.borrowCollateralFactor - a.borrowCollateralFactor
27122
- )[0][0];
27123
- const longConfig2 = longData?.config?.[shortGroupId];
27124
- const cf2 = longConfig2?.borrowCollateralFactor ?? 0;
27125
- if (cf2 <= 0 || cf2 >= 1) return NO_LEVERAGE;
27126
- return {
27127
- maxLeverage: 1 / (1 - cf2),
27128
- eModeConfigId: shortGroupId,
27129
- borrowCollateralFactorLong: cf2,
27130
- collateralFactorLong: longConfig2?.collateralFactor ?? cf2,
27131
- borrowFactorShort: 1
27132
- };
27133
- }
27134
- const longConfig = longData?.config?.[LENDER_MODE_NO_MODE2];
27135
- const shortConfig = shortData?.config?.[LENDER_MODE_NO_MODE2];
27136
- const cf = longConfig?.borrowCollateralFactor ?? 0.8;
27137
- return {
27138
- maxLeverage: 1 / (1 - cf),
27139
- eModeConfigId: LENDER_MODE_NO_MODE2,
27140
- borrowCollateralFactorLong: cf,
27141
- collateralFactorLong: longConfig?.collateralFactor ?? cf,
27142
- borrowFactorShort: shortConfig?.borrowFactor ?? 1
27143
- };
27144
- };
27145
- function generateLendingPairs(lenderData, prices, histPrices) {
27146
- const pairs = [];
27147
- for (const chainId in lenderData) {
27148
- const chainEntry = lenderData[chainId];
27149
- const lenderToData = chainEntry.data ?? chainEntry;
27150
- for (const lender in lenderToData) {
27151
- const lenderEntry = lenderToData[lender];
27152
- let pools = Object.values(
27153
- lenderEntry?.data ?? lenderEntry ?? {}
27154
- ).map((a) => a?.data ? a.data : a);
27155
- const hasErrorMessages = pools.some(
27156
- (p) => typeof p === "string" && (p.includes("No lenders available") || p.includes("Failed to fetch"))
27157
- );
27158
- if (hasErrorMessages) continue;
27159
- const validPools = pools.filter(
27160
- (p) => typeof p === "object" && p !== null
27161
- );
27162
- const poolArray = validPools.filter((p) => !p?.isFrozen);
27163
- for (let i = 0; i < poolArray.length; i++) {
27164
- for (let j = 0; j < poolArray.length; j++) {
27165
- if (i === j) continue;
27166
- const long = poolArray[i];
27167
- const short = poolArray[j];
27168
- if (!short.borrowingEnabled) continue;
27169
- if (long.underlying === short.underlying) continue;
27170
- const leverageParams = getLeverageParams(lender, long, short);
27171
- const maxDepositLeverage = leverageParams.maxLeverage;
27172
- if (maxDepositLeverage < 1.05) continue;
27173
- const borrowLeverage = maxDepositLeverage - 1;
27174
- const depositLeverage = maxDepositLeverage;
27175
- let collateralRewards = 0;
27176
- let borrowRewards = 0;
27177
- for (const [rewardId, baseYields] of Object.entries(
27178
- long.rewards ?? {}
27179
- )) {
27180
- collateralRewards += baseYields.depositRate;
27181
- if (baseYields.depositRate > 0)
27182
- baseYields.depositRate * depositLeverage;
27183
- }
27184
- for (const [rewardId, baseYields] of Object.entries(
27185
- short.rewards ?? {}
27186
- )) {
27187
- const borrowRate = baseYields.stableBorrowRate >= baseYields.variableBorrowRate ? baseYields.stableBorrowRate : baseYields.variableBorrowRate;
27188
- borrowRewards += borrowRate;
27189
- }
27190
- const depositApr = long.depositRate + long.intrinsicYield;
27191
- const borrowApr = short.variableBorrowRate + short.intrinsicYield;
27192
- const [assetGroupLong, keyLong] = getPriceKey2(long.asset);
27193
- const [assetGroupShort, keyShort] = getPriceKey2(short.asset);
27194
- const priceLong = prices[keyLong] ?? 0;
27195
- const priceShort = prices[keyShort] ?? 0;
27196
- const price24hLong = histPrices[keyLong] ?? priceLong;
27197
- const price24hShort = histPrices[keyShort] ?? priceShort;
27198
- const price = priceShort !== 0 ? priceLong / priceShort : 0;
27199
- const price24h = price24hShort !== 0 ? price24hLong / price24hShort : 0;
27200
- const baseApr = depositApr * depositLeverage - borrowApr * borrowLeverage;
27201
- const rewardApr = collateralRewards * depositLeverage + borrowRewards * borrowLeverage;
27202
- const totalApr = baseApr + rewardApr;
27203
- pairs.push({
27204
- chainId,
27205
- lender,
27206
- assetLong: long.underlying,
27207
- assetShort: short.underlying,
27208
- infoLong: { poolId: long.poolId, asset: long.asset },
27209
- infoShort: { poolId: short.poolId, asset: short.asset },
27210
- price,
27211
- price24h,
27212
- priceLong,
27213
- priceShort,
27214
- assetGroupLong,
27215
- assetGroupShort,
27216
- priceChange: price24h === 0 ? 0 : (price - price24h) / price24h,
27217
- maxLeverage: maxDepositLeverage,
27218
- apr: totalApr,
27219
- baseApr,
27220
- rewardApr,
27221
- eMode: Number(leverageParams.eModeConfigId) || 0,
27222
- eModeConfigId: leverageParams.eModeConfigId,
27223
- borrowCollateralFactorLong: leverageParams.borrowCollateralFactorLong,
27224
- collateralFactorLong: leverageParams.collateralFactorLong,
27225
- borrowFactorShort: leverageParams.borrowFactorShort,
27226
- longTotalDepositsUSD: long.totalDepositsUSD,
27227
- longTotalDebtUSD: long.totalDebtUSD,
27228
- // if the asset cannot be borrowed, liquidity is not a pparameter for longing
27229
- longTotalLiquidityUSD: long.borrowingEnabled ? long.totalLiquidityUSD : 1e10,
27230
- shortTotalDepositsUSD: short.totalDepositsUSD,
27231
- shortTotalDebtUSD: short.totalDebtUSD,
27232
- shortTotalLiquidityUSD: short.totalLiquidityUSD,
27233
- longIsActive: long.isActive,
27234
- longIsFrozen: long.isFrozen,
27235
- shortIsActive: short.isActive,
27236
- shortIsFrozen: short.isFrozen,
27237
- shortBorrowingEnabled: short.borrowingEnabled
27238
- });
27239
- }
27240
- }
27241
- }
27242
- }
27243
- return pairs;
27244
- }
27245
- function getPriceKey2(asset) {
27246
- const assetGroup = asset?.assetGroup;
27247
- return [
27248
- assetGroup,
27249
- toOracleKey(assetGroup) ?? toGenericPriceKey(asset?.address, asset?.chainId)
27250
- ];
27251
- }
27252
- var MAX_ENTRIES = 10;
27253
- function filterPairsByCategory(pairs, longFilter, shortFilter) {
27254
- return pairs.filter((p) => {
27255
- if (!longFilter(p.assetGroupLong) || !shortFilter(p.assetGroupShort)) {
27256
- return false;
27257
- }
27258
- if (p.assetGroupShort?.includes("PT-") || p.assetGroupLong?.includes("PT-")) {
27259
- return false;
27260
- }
27261
- if (!p.longIsActive || p.longIsFrozen || !p.shortIsActive || p.shortIsFrozen) {
27262
- return false;
27263
- }
27264
- if (!p.shortBorrowingEnabled) {
27265
- return false;
27266
- }
27267
- const longThresholds = getLiquidityThresholds(
27268
- p.chainId,
27269
- p.assetLong,
27270
- p.assetGroupLong
27271
- );
27272
- const shortThresholds = getLiquidityThresholds(
27273
- p.chainId,
27274
- p.assetShort,
27275
- p.assetGroupShort
27276
- );
27277
- const longMeetsThresholds = isMorphoType(p.lender) || meetsLiquidityThresholdsLong(
27278
- {
27279
- totalDepositsUSD: p.longTotalDepositsUSD,
27280
- totalDebtUSD: p.longTotalDebtUSD,
27281
- totalLiquidityUSD: p.longTotalLiquidityUSD
27282
- },
27283
- longThresholds
27284
- );
27285
- const shortMeetsThresholds = meetsLiquidityThresholdsShort(
27286
- {
27287
- totalDepositsUSD: p.shortTotalDepositsUSD,
27288
- totalDebtUSD: p.shortTotalDebtUSD,
27289
- totalLiquidityUSD: p.shortTotalLiquidityUSD
27290
- },
27291
- shortThresholds
27292
- );
27293
- if (!longMeetsThresholds || !shortMeetsThresholds) {
27294
- return false;
27295
- }
27296
- return true;
27297
- }).sort((a, b) => b.baseApr - a.baseApr).slice(0, MAX_ENTRIES);
27298
- }
27299
- function getTopPairs(pairs) {
27300
- const stables = filterPairsByCategory(
27301
- pairs,
27302
- (group) => group?.includes("USD") ?? false,
27303
- (group) => group?.includes("USD") ?? false
27304
- );
27305
- const btcLst = filterPairsByCategory(
27306
- pairs,
27307
- (group) => group?.includes("BTC") ?? false,
27308
- (group) => group?.includes("BTC") ?? false
27309
- );
27310
- const ethLst = filterPairsByCategory(
27311
- pairs,
27312
- (group) => group?.includes("ETH") ?? false,
27313
- (group) => group?.includes("ETH") ?? false
27314
- );
27315
- return {
27316
- stables,
27317
- btcLst,
27318
- ethLst,
27319
- gainers: getDistinctPairsByShortAsset(pairs).slice(0, MAX_ENTRIES)
27320
- };
27321
- }
27322
- function isStable(assetGroup) {
27323
- return assetGroup.includes("USD");
27324
- }
27325
- function getDistinctPairsByShortAsset(pairs) {
27326
- const qualityPairs = pairs.filter((p) => {
27327
- if (!isFinite(p.apr) || !isFinite(p.priceChange)) {
27328
- return false;
27329
- }
27330
- if (!p.longIsActive || p.longIsFrozen || !p.shortIsActive || p.shortIsFrozen) {
27331
- return false;
27332
- }
27333
- if (!p.shortBorrowingEnabled) {
27334
- return false;
27335
- }
27336
- const longThresholds = getLiquidityThresholds(
27337
- p.chainId,
27338
- p.assetLong,
27339
- p.assetGroupLong
27340
- );
27341
- const shortThresholds = getLiquidityThresholds(
27342
- p.chainId,
27343
- p.assetShort,
27344
- p.assetGroupShort
27345
- );
27346
- const longMeetsThresholds = meetsLiquidityThresholdsLong(
27347
- {
27348
- totalDepositsUSD: p.longTotalDepositsUSD,
27349
- totalDebtUSD: p.longTotalDebtUSD,
27350
- totalLiquidityUSD: p.longTotalLiquidityUSD
27351
- },
27352
- longThresholds
27353
- );
27354
- const shortMeetsThresholds = meetsLiquidityThresholdsShort(
27355
- {
27356
- totalDepositsUSD: p.shortTotalDepositsUSD,
27357
- totalDebtUSD: p.shortTotalDebtUSD,
27358
- totalLiquidityUSD: p.shortTotalLiquidityUSD
27359
- },
27360
- shortThresholds
27361
- );
27362
- if (!longMeetsThresholds || !shortMeetsThresholds) {
27363
- return false;
27364
- }
27365
- if (p.assetGroupShort?.includes("PT-") || p.assetGroupLong?.includes("PT-")) {
27366
- return false;
27367
- }
27368
- return true;
27369
- });
27370
- const sorted = [...qualityPairs].sort((a, b) => b.priceChange - a.priceChange);
27371
- const blacklist = /* @__PURE__ */ new Set();
27372
- const blacklistLong = /* @__PURE__ */ new Set();
27373
- const result = [];
27374
- for (const pair of sorted) {
27375
- const shortGroup = pair.assetGroupShort;
27376
- const longGroup = pair.assetGroupLong;
27377
- if (blacklist.has(shortGroup) || blacklistLong.has(longGroup)) continue;
27378
- result.push(pair);
27379
- if (!isStable(shortGroup)) {
27380
- blacklist.add(shortGroup);
27381
- }
27382
- if (!isStable(longGroup)) {
27383
- blacklistLong.add(longGroup);
27384
- }
27385
- if (result.length >= 10) return result;
27386
- }
27387
- return result;
27388
- }
27389
-
27390
27097
  // src/yields/helpers.ts
27391
27098
  function averageDataLastN(arr, n = 7) {
27392
27099
  const last = arr.slice(-n);
@@ -28640,337 +28347,6 @@ var flattenLenderRewards = (input) => {
28640
28347
  return result;
28641
28348
  };
28642
28349
 
28643
- // src/prices/defillama/index.ts
28644
- var prefixEthereum = "ethereum:";
28645
- var RETH = "0xae78736Cd615f374D3085123A210448E74Fc6393";
28646
- var WBTC = "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599";
28647
- var WETH = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2";
28648
- var MNT = "0x3c3a81e81dc49a522a592e7622a7e711c06bf354";
28649
- var USDE = "0x4c9edd5852cd905f086c759e8383e09bff1e68b3";
28650
- var METH = "0xd5f7838f5c461feff7fe49ea5ebaf7728bb0adfa";
28651
- var USDC = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48";
28652
- var USDT = "0xdac17f958d2ee523a2206206994597c13d831ec7";
28653
- var USDY = "0x96f6ef951840721adbf46ac996b59e0235cb985c";
28654
- var CRV = "0xD533a949740bb3306d119CC777fa900bA034cd52";
28655
- var BAL = "0xba100000625a3754423978a60c9317c58a424e3D";
28656
- var AGEUR = "0x1a7e4e63778B4f12a199C062f3eFdD288afCBce8";
28657
- var LINK = "0x514910771AF9Ca656af840dff83E8264EcF986CA";
28658
- var DAI = "0x6B175474E89094C44Da98b954EedeAC495271d0F";
28659
- var MATIC = "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0";
28660
- var BNB = "0xB8c77482e45F1F44dE1745F52C74426C631bDD52";
28661
- var STMATIC = "0x9ee91F9f426fA633d227f7a9b000E28b9dfd8599";
28662
- var MATICX = "0xf03A7Eb46d01d9EcAA104558C732Cf82f6B6B645";
28663
- var AAVE = "0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9";
28664
- var COMP = "0xc00e94cb662c3520282e6f5717214004a7f26888";
28665
- var EURS = "0xdB25f211AB05b1c97D595516F45794528a807ad8";
28666
- var FBTC = "0xC96dE26018A54D51c097160568752c4E3BD6C364";
28667
- var TAIKO = "0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800";
28668
- var CMETH = "0xe6829d9a7ee3040e1276fa75293bde931859e8fa";
28669
- var AUSD = "0x00000000efe302beaa2b3e6e1b18d08d69a9012a";
28670
- var SUSDE = "0x9D39A5DE30e57443BfF2A8307A4256c8797A3497";
28671
- var FUEL = "0x675B68AA4d9c2d3BB3F0397048e62E6B7192079c";
28672
- var GHO = "0x40d16fc0246ad3160ccc09b8d0d3a2cd28ae6c2f";
28673
- var FRAX = "0x853d955acef822db058eb8505911ed77f175b99e";
28674
- var WEETH = "0xcd5fe23c85820f7b72d0926fc9b05b43e359b7ee";
28675
- var ARB = "0xb50721bcf8d664c30412cfbc6cf7a15145234ad1";
28676
- var WUSDM = "0x57f5e098cad7a3d1eed53991d4d66c45c9af7812";
28677
- var RSETH = "0xa1290d69c65a6fe4df752f95823fae25cb99e5a7";
28678
- var CBETH = "0xbe9895146f7af43049ca1c1ae358b0541ea49704";
28679
- var SNX = "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f";
28680
- var VUSD = "0x677ddbd918637e5f2c79e164d402454de7da8619";
28681
- var EZETH = "0xbf5495Efe5DB9ce00f80364C8B423567e58d2110";
28682
- var LBTC = "0x8236a87084f8B84306f72007F36F2618A5634494";
28683
- var BRBTC = "0x2eC37d45FCAE65D9787ECf71dc85a444968f6646";
28684
- var SDAI = "0x83f20f44975d03b1b09e64809b757c47f942beea";
28685
- var RUSD = "0x09d4214c03d01f49544c0448dbe3a27f768f2b34";
28686
- var USDF = "0xfa2b947eec368f42195f24f36d2af29f7c24cec2";
28687
- var USUAL = "0xc4441c2be5d8fa8126822b9929ca0b81ea0de38e";
28688
- var WOETH = "0xdcee70654261af21c44c093c300ed3bb97b78192";
28689
- var DEUSD = "0x15700B564Ca08D9439C58cA5053166E8317aa138";
28690
- var SKY = "0x56072C95FAA701256059aa122697B133aDEd9279";
28691
- var datasEthereum = [
28692
- RETH,
28693
- WBTC,
28694
- WETH,
28695
- MNT,
28696
- USDC,
28697
- USDT,
28698
- USDE,
28699
- METH,
28700
- USDY,
28701
- CRV,
28702
- BAL,
28703
- AGEUR,
28704
- LINK,
28705
- DAI,
28706
- BNB,
28707
- MATIC,
28708
- STMATIC,
28709
- MATICX,
28710
- AAVE,
28711
- COMP,
28712
- EURS,
28713
- FBTC,
28714
- TAIKO,
28715
- CMETH,
28716
- AUSD,
28717
- SUSDE,
28718
- FUEL,
28719
- GHO,
28720
- FRAX,
28721
- WEETH,
28722
- ARB,
28723
- WUSDM,
28724
- RSETH,
28725
- CBETH,
28726
- SNX,
28727
- EZETH,
28728
- VUSD,
28729
- LBTC,
28730
- BRBTC,
28731
- SDAI,
28732
- RUSD,
28733
- USDF,
28734
- USUAL,
28735
- WOETH,
28736
- DEUSD,
28737
- SKY
28738
- ].map((d) => prefixEthereum + d).join(",");
28739
- var prefixAvalanche = "avax:";
28740
- var WAVAX = "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7";
28741
- var SAVAX = "0x2b2C81e08f1Af8835a78Bb2A90AE924ACE0eA4bE";
28742
- var prefixArbitrum = "arbitrum:";
28743
- var GMX = "0xfc5a1a6eb076a2c7ad06ed22c90d7e710e35ad0a";
28744
- var prefixOptimism = "optimism:";
28745
- var OP = "0x4200000000000000000000000000000000000042";
28746
- var SUSD = "0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9";
28747
- var WRSETH = "0x87eee96d50fb761ad85b1c982d28a042169d61b1";
28748
- var prefixBase = "base:";
28749
- var AERO = "0x940181a94A35A4569E4529A3CDfB74e38FD98631";
28750
- var prefixSonic = "sonic:";
28751
- var WS = "0x039e2fb66102314ce7b64ce5ce3e5183bc94ad38";
28752
- var prefixFantom = "fantom:";
28753
- var WFTM = "0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83";
28754
- var prefixPolygon = "polygon:";
28755
- var TRUMATIC = "0xf33687811f3ad0cd6b48dd4b39f9f977bd7165a2";
28756
- var prefixHyperEVM = "hyperliquid:";
28757
- var WYPE = "0x5555555555555555555555555555555555555555";
28758
- var WSTHYPE = "0x94e8396e0869c9f2200760af0621afd240e1cf38";
28759
- var kHYPE2 = "0xfd739d4e423301ce9385c1fb8850539d657c296d";
28760
- var prefixSolana = "solana:";
28761
- var JITOSOL = "J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn";
28762
- var SOL = "So11111111111111111111111111111111111111112";
28763
- var prefixBera = "berachain:";
28764
- var WBERA = "0x6969696969696969696969696969696969696969";
28765
- var prefixCronos = "cronos:";
28766
- var WCRO = "0x5c7f8a570d578ed84e63fdfa7b1ee72deae1ae23";
28767
- var prefixTelos = "telos:";
28768
- var wtlos = "0xd102ce6a4db07d247fcc28f366a623df0938ca9e";
28769
- var prefixManta = "manta:";
28770
- var manta = "0x95cef13441be50d20ca4558cc0a27b601ac544e5";
28771
- var prefixbsc = "bsc:";
28772
- var xpl = "0x405FBc9004D857903bFD6b3357792D71a50726b0";
28773
- var prefixmoonbeam = "moonbeam:";
28774
- var glmr = "0xacc15dc74880c9944775448304b263d191c6077f";
28775
- var datasAvalanche = [WAVAX, SAVAX].map((d) => prefixAvalanche + d).join(",");
28776
- var datasArbitrum = [GMX].map((d) => prefixArbitrum + d).join(",");
28777
- var datasOptimism = [OP, SUSD, WRSETH].map((d) => prefixOptimism + d).join(",");
28778
- var datasBase = [AERO].map((d) => prefixBase + d).join(",");
28779
- var datasFantom = [WFTM].map((d) => prefixFantom + d).join(",");
28780
- var datasPolygon = [TRUMATIC].map((d) => prefixPolygon + d).join(",");
28781
- var datasSonic = [WS].map((d) => prefixSonic + d).join(",");
28782
- var datasHyperEvm = [WYPE, WSTHYPE, kHYPE2].map((d) => prefixHyperEVM + d).join(",");
28783
- var datasSolana = [JITOSOL, SOL].map((d) => prefixSolana + d).join(",");
28784
- var datasBera = [WBERA].map((d) => prefixBera + d).join(",");
28785
- var datasCronos = [WCRO].map((d) => prefixCronos + d).join(",");
28786
- var datasManta = [manta].map((d) => prefixManta + d).join(",");
28787
- var datasTelos = [wtlos].map((d) => prefixTelos + d).join(",");
28788
- var datasbsc = [xpl].map((d) => prefixbsc + d).join(",");
28789
- var datasmoonbeam = [glmr].map((d) => prefixmoonbeam + d).join(",");
28790
- var URL2 = `https://coins.llama.fi/prices/current/${[
28791
- datasEthereum,
28792
- datasAvalanche,
28793
- datasArbitrum,
28794
- datasOptimism,
28795
- datasBase,
28796
- // datasCore,
28797
- // datasMetis,
28798
- datasFantom,
28799
- datasHyperEvm,
28800
- // datasKaia,
28801
- datasmoonbeam,
28802
- datasSonic,
28803
- datasPolygon,
28804
- datasSolana,
28805
- datasBera,
28806
- // datasXdc,
28807
- datasCronos,
28808
- datasManta,
28809
- datasTelos,
28810
- datasbsc
28811
- // datassei,
28812
- ].join(",")}`;
28813
- var URL_HIST = (ref) => `https://coins.llama.fi/prices/historical/${ref}/${[
28814
- datasEthereum,
28815
- datasAvalanche,
28816
- datasArbitrum,
28817
- datasOptimism,
28818
- datasBase,
28819
- // datasCore,
28820
- // datasMetis,
28821
- datasFantom,
28822
- // datasKaia,
28823
- datasmoonbeam,
28824
- datasHyperEvm,
28825
- datasPolygon,
28826
- datasSonic,
28827
- datasSolana,
28828
- datasbsc
28829
- ].join(",")}`;
28830
- var SYMBOL_MAP = {
28831
- weth: "WETH",
28832
- usde: "USDE",
28833
- meth: "METH",
28834
- mnt: "WMNT",
28835
- usdc: "USDC",
28836
- usdt: "USDT",
28837
- wbtc: "WBTC",
28838
- usdy: "USDY",
28839
- crv: "CRV",
28840
- op: "OP",
28841
- bal: "BAL",
28842
- eura: "AGEUR",
28843
- link: "LINK",
28844
- // // dai: 'DAI',
28845
- // bnb: 'WBNB',
28846
- matic: "WPOL",
28847
- // wpol: 'WPOL',
28848
- // pol: 'WPOL',
28849
- stmatic: "STMATIC",
28850
- maticx: "MATICX",
28851
- wavax: "WAVAX",
28852
- aave: "AAVE",
28853
- comp: "COMP",
28854
- eurs: "EURS",
28855
- fbtc: "FBTC",
28856
- taiko: "TAIKO",
28857
- cmeth: "CMETH",
28858
- ausd: "AUSD",
28859
- susde: "SUSDE",
28860
- fuel: "FUEL",
28861
- gho: "GHO",
28862
- frax: "FRAX",
28863
- weeth: "WEETH",
28864
- arb: "ARB",
28865
- lusd: "LUSD",
28866
- reth: "RETH",
28867
- gmx: "GMX",
28868
- wusdm: "WUSDM",
28869
- rseth: "RSETH",
28870
- susd: "SUSD",
28871
- wrseth: "WRSETH",
28872
- cbeth: "CBETH",
28873
- aero: "AERO",
28874
- snx: "SNX",
28875
- wftm: "WFTM",
28876
- ftm: "WFTM",
28877
- // wcore: 'WCORE',
28878
- // core: 'WCORE',
28879
- // ws: 'WS',
28880
- // s: 'WS',
28881
- // // wmetis: 'WMETIS',
28882
- // metis: 'WMETIS',
28883
- vusd: "VUSD",
28884
- ezeth: "EZETH",
28885
- lbtc: "LBTC",
28886
- brbtc: "BRBTC",
28887
- sdai: "SDAI",
28888
- wkaia: "KAIA",
28889
- savax: "SAVAX",
28890
- whype: "WHYPE",
28891
- // khype: 'Kinetiq Staked HYPE::kHYPE',
28892
- // wsthype: 'Staked HYPE Shares::WSTHYPE',
28893
- // trumatic: 'TRUMATIC',
28894
- rusd: "Reservoir rUSD::RUSD",
28895
- usdf: "Falcon Finance::USDF",
28896
- usual: "Usual::USUAL",
28897
- woeth: "Wrapped OETH::WOETH",
28898
- jitosol: "Jito Staked SOL::JitoSOL",
28899
- manta: "Manta::MANTA",
28900
- sol: "SOL",
28901
- wcro: "WCRO",
28902
- // wxdc: 'WXDC',
28903
- wbera: "WBERA",
28904
- wtlos: "WTLOS",
28905
- xpl: "WXPL",
28906
- wglmr: "WGLMR",
28907
- wsei: "SEI",
28908
- deusd: "Elixir deUSD::DEUSD",
28909
- sky: "SKY Governance Token::SKY"
28910
- };
28911
- async function fetchDefillamaData() {
28912
- try {
28913
- const res = await fetch(URL2).then((a) => a.json());
28914
- let prices = Object.assign(
28915
- {},
28916
- ...Object.values(res.coins).map((k) => {
28917
- return { [SYMBOL_MAP[k.symbol.toLowerCase()]]: k.price };
28918
- })
28919
- );
28920
- prices["WSOL"] = prices["SOL"];
28921
- prices["AVAX"] = prices["WAVAX"];
28922
- prices["CRO"] = prices["WCRO"];
28923
- prices["BERA"] = prices["WBERA"];
28924
- prices["TLOS"] = prices["WTLOS"];
28925
- prices["XPL"] = prices["WXPL"];
28926
- prices["GLMR"] = prices["WGLMR"];
28927
- prices["WSEI"] = prices["SEI"];
28928
- prices["SUBTC"] = prices["WBTC"];
28929
- prices["IBTC"] = prices["WBTC"];
28930
- prices["ENZOBTC"] = prices["WBTC"];
28931
- return prices;
28932
- } catch (e) {
28933
- console.log("error fetching prices from defillama", e);
28934
- return {};
28935
- }
28936
- }
28937
- async function fetchDefillamaHistData() {
28938
- try {
28939
- const nowMinus24 = Math.floor(Date.now() / 1e3 - 24 * 3600);
28940
- const resHist = await fetch(URL_HIST(nowMinus24)).then((a) => a.json());
28941
- let histPrices = Object.assign(
28942
- {},
28943
- ...Object.values(resHist.coins).map((k) => {
28944
- return { [SYMBOL_MAP[k.symbol.toLowerCase()]]: k.price };
28945
- })
28946
- );
28947
- histPrices["CORE"] = histPrices["WCORE"];
28948
- histPrices["WSOL"] = histPrices["SOL"];
28949
- histPrices["AVAX"] = histPrices["WAVAX"];
28950
- histPrices["HYPE"] = histPrices["WHYPE"];
28951
- histPrices["BERA"] = histPrices["WBERA"];
28952
- histPrices["CRO"] = histPrices["WCRO"];
28953
- histPrices["XDC"] = histPrices["WXDC"];
28954
- histPrices["TLOS"] = histPrices["WTLOS"];
28955
- histPrices["XPL"] = histPrices["WXPL"];
28956
- histPrices["GLMR"] = histPrices["WGLMR"];
28957
- histPrices["WSEI"] = histPrices["SEI"];
28958
- histPrices["LUSD"] = histPrices["USDT"];
28959
- histPrices["XDAI"] = histPrices["DAI"];
28960
- histPrices["WXDAI"] = histPrices["DAI"];
28961
- histPrices["HEMIBTC"] = histPrices["WBTC"];
28962
- histPrices["SUBTC"] = histPrices["WBTC"];
28963
- histPrices["IBTC"] = histPrices["WBTC"];
28964
- histPrices["ENZOBTC"] = histPrices["WBTC"];
28965
- histPrices["CBBTC"] = histPrices["WBTC"];
28966
- histPrices["PUMPBTC"] = histPrices["WBTC"];
28967
- return histPrices;
28968
- } catch (e) {
28969
- console.log("error fetching prices from defillama", e);
28970
- return {};
28971
- }
28972
- }
28973
-
28974
28350
  // src/abis/oracle/AaveOracle.ts
28975
28351
  var AaveOracleAbi = [
28976
28352
  {
@@ -29039,129 +28415,122 @@ var AaveOracleAbi = [
29039
28415
  }
29040
28416
  ];
29041
28417
 
29042
- // src/abis/oracle/ChainLinkAggregator.ts
29043
- var ChainLinkAggregatorAbi = [
28418
+ // src/prices/oracle-prices/fetchers/aave.ts
28419
+ function getAaveLendersForChain(chainId) {
28420
+ const oracles = aaveOracles() ?? {};
28421
+ const reserves = aaveReserves() ?? {};
28422
+ const lenders = [];
28423
+ for (const [lender, chains] of Object.entries(oracles)) {
28424
+ if (chains[chainId] && reserves[lender]?.[chainId]?.length > 0) {
28425
+ lenders.push(lender);
28426
+ }
28427
+ }
28428
+ return lenders;
28429
+ }
28430
+ function getAaveCalls(chainId) {
28431
+ const lenders = getAaveLendersForChain(chainId);
28432
+ const oracles = aaveOracles() ?? {};
28433
+ const reserves = aaveReserves() ?? {};
28434
+ const results = [];
28435
+ for (const lender of lenders) {
28436
+ const oracle = oracles[lender]?.[chainId];
28437
+ const assets = reserves[lender]?.[chainId] ?? [];
28438
+ if (!oracle || assets.length === 0) continue;
28439
+ const calls = [];
28440
+ calls.push({
28441
+ address: oracle,
28442
+ name: "BASE_CURRENCY_UNIT",
28443
+ params: []
28444
+ });
28445
+ for (const asset of assets) {
28446
+ calls.push({
28447
+ address: oracle,
28448
+ name: "getAssetPrice",
28449
+ params: [asset]
28450
+ });
28451
+ }
28452
+ const config = aaveOraclesConfig() ?? {};
28453
+ const lenderOverride = config[lender]?.[chainId];
28454
+ results.push({
28455
+ calls,
28456
+ meta: {
28457
+ oracle,
28458
+ assets,
28459
+ fork: lender,
28460
+ baseCurrencyUnitIndex: 0,
28461
+ assetCallCount: assets.length,
28462
+ baseAssetOverride: lenderOverride?.baseAsset,
28463
+ baseCurrencyUnitOverride: lenderOverride?.baseCurrencyUnit ? BigInt(lenderOverride.baseCurrencyUnit) : void 0,
28464
+ baseAssetSource: lenderOverride?.baseAssetSource
28465
+ },
28466
+ lender
28467
+ });
28468
+ }
28469
+ return results;
28470
+ }
28471
+ function parseAaveResults(data, meta, context) {
28472
+ const { chainId, usdPrices, tokenList } = context;
28473
+ const entries = [];
28474
+ if (data.length === 0) return entries;
28475
+ let baseCurrencyUnitValue = meta.baseCurrencyUnitOverride ?? data[meta.baseCurrencyUnitIndex];
28476
+ if (!baseCurrencyUnitValue || baseCurrencyUnitValue === "0x") {
28477
+ return entries;
28478
+ }
28479
+ let decimals;
28480
+ try {
28481
+ const baseCurrencyUnitBigInt = BigInt(baseCurrencyUnitValue.toString());
28482
+ decimals = Math.round(Math.log10(Number(baseCurrencyUnitBigInt)));
28483
+ } catch {
28484
+ return entries;
28485
+ }
28486
+ let baseAssetUSD = 1;
28487
+ if (meta.baseAssetOverride) {
28488
+ const baseAssetLc = meta.baseAssetOverride.toLowerCase();
28489
+ const baseOracleKey = tokenList?.[baseAssetLc]?.assetGroup ?? `${chainId}-${baseAssetLc}`;
28490
+ baseAssetUSD = usdPrices[baseOracleKey] ?? usdPrices[baseAssetLc] ?? 1;
28491
+ }
28492
+ for (let i = 0; i < meta.assetCallCount; i++) {
28493
+ const priceIndex = meta.baseCurrencyUnitIndex + 1 + i;
28494
+ const rawPrice = data[priceIndex];
28495
+ const asset = meta.assets[i];
28496
+ if (rawPrice === void 0 || rawPrice === "0x" || !asset) continue;
28497
+ try {
28498
+ const rawPriceNum = Number(
28499
+ formatUnits(BigInt(rawPrice.toString()), decimals)
28500
+ );
28501
+ if (isNaN(rawPriceNum) || rawPriceNum === 0) continue;
28502
+ const priceUSD = rawPriceNum * baseAssetUSD;
28503
+ const isBaseAsset = meta.baseAssetOverride && asset.toLowerCase() === meta.baseAssetOverride.toLowerCase();
28504
+ entries.push({
28505
+ asset: asset.toLowerCase(),
28506
+ price: rawPriceNum,
28507
+ // Raw price (in base asset terms)
28508
+ priceUSD,
28509
+ marketUid: createMarketUid(chainId, meta.fork, asset),
28510
+ staticBase: isBaseAsset || void 0,
28511
+ baseAsset: meta.baseAssetOverride
28512
+ });
28513
+ } catch {
28514
+ continue;
28515
+ }
28516
+ }
28517
+ return entries;
28518
+ }
28519
+ function getAaveAbi() {
28520
+ return AaveOracleAbi;
28521
+ }
28522
+ var aaveFetcher = {
28523
+ getCalls: getAaveCalls,
28524
+ parse: parseAaveResults,
28525
+ getAbi: getAaveAbi
28526
+ };
28527
+
28528
+ // src/abis/oracle/ProxyOracle.ts
28529
+ var ProxyOracleAbi = [
29044
28530
  {
29045
- inputs: [
29046
- {
29047
- internalType: "uint80",
29048
- name: "_roundId",
29049
- type: "uint80"
29050
- }
29051
- ],
29052
- name: "getRoundData",
29053
- outputs: [
29054
- {
29055
- internalType: "uint80",
29056
- name: "roundId",
29057
- type: "uint80"
29058
- },
29059
- {
29060
- internalType: "int256",
29061
- name: "answer",
29062
- type: "int256"
29063
- },
29064
- {
29065
- internalType: "uint256",
29066
- name: "startedAt",
29067
- type: "uint256"
29068
- },
29069
- {
29070
- internalType: "uint256",
29071
- name: "updatedAt",
29072
- type: "uint256"
29073
- },
29074
- {
29075
- internalType: "uint80",
29076
- name: "answeredInRound",
29077
- type: "uint80"
29078
- }
29079
- ],
29080
- stateMutability: "view",
29081
- type: "function"
29082
- },
29083
- {
29084
- inputs: [
29085
- {
29086
- internalType: "uint256",
29087
- name: "_roundId",
29088
- type: "uint256"
29089
- }
29090
- ],
29091
- name: "getTimestamp",
29092
- outputs: [
29093
- {
29094
- internalType: "uint256",
29095
- name: "",
29096
- type: "uint256"
29097
- }
29098
- ],
29099
- stateMutability: "view",
29100
- type: "function"
29101
- },
29102
- {
29103
- inputs: [],
29104
- name: "latestAnswer",
29105
- outputs: [
29106
- {
29107
- internalType: "int256",
29108
- name: "",
29109
- type: "int256"
29110
- }
29111
- ],
29112
- stateMutability: "view",
29113
- type: "function"
29114
- },
29115
- {
29116
- inputs: [],
29117
- name: "latestRound",
29118
- outputs: [
29119
- {
29120
- internalType: "uint256",
29121
- name: "",
29122
- type: "uint256"
29123
- }
29124
- ],
29125
- stateMutability: "view",
29126
- type: "function"
29127
- },
29128
- {
29129
- inputs: [],
29130
- name: "latestRoundData",
29131
- outputs: [
29132
- {
29133
- internalType: "uint80",
29134
- name: "roundId",
29135
- type: "uint80"
29136
- },
29137
- {
29138
- internalType: "int256",
29139
- name: "answer",
29140
- type: "int256"
29141
- },
29142
- {
29143
- internalType: "uint256",
29144
- name: "startedAt",
29145
- type: "uint256"
29146
- },
29147
- {
29148
- internalType: "uint256",
29149
- name: "updatedAt",
29150
- type: "uint256"
29151
- },
29152
- {
29153
- internalType: "uint80",
29154
- name: "answeredInRound",
29155
- type: "uint80"
29156
- }
29157
- ],
29158
- stateMutability: "view",
29159
- type: "function"
29160
- },
29161
- {
29162
- inputs: [],
29163
- name: "latestTimestamp",
29164
- outputs: [
28531
+ inputs: [],
28532
+ name: "price",
28533
+ outputs: [
29165
28534
  {
29166
28535
  internalType: "uint256",
29167
28536
  name: "",
@@ -29172,2327 +28541,14 @@ var ChainLinkAggregatorAbi = [
29172
28541
  type: "function"
29173
28542
  },
29174
28543
  {
29175
- inputs: [],
29176
- name: "owner",
29177
- outputs: [
29178
- {
29179
- internalType: "address payable",
29180
- name: "",
29181
- type: "address"
29182
- }
29183
- ],
29184
- stateMutability: "view",
29185
- type: "function"
29186
- },
29187
- {
29188
- inputs: [],
29189
- name: "proposedLatestRoundData",
29190
- outputs: [
29191
- {
29192
- internalType: "uint80",
29193
- name: "roundId",
29194
- type: "uint80"
29195
- },
29196
- {
29197
- internalType: "int256",
29198
- name: "answer",
29199
- type: "int256"
29200
- },
29201
- {
29202
- internalType: "uint256",
29203
- name: "startedAt",
29204
- type: "uint256"
29205
- },
29206
- {
29207
- internalType: "uint256",
29208
- name: "updatedAt",
29209
- type: "uint256"
29210
- },
29211
- {
29212
- internalType: "uint80",
29213
- name: "answeredInRound",
29214
- type: "uint80"
29215
- }
29216
- ],
29217
- stateMutability: "view",
29218
- type: "function"
29219
- },
29220
- {
29221
- constant: true,
29222
- inputs: [
29223
- { internalType: "contract MToken", name: "mToken", type: "address" }
29224
- ],
29225
- name: "getUnderlyingPrice",
28544
+ inputs: [{ internalType: "address", name: "asset", type: "address" }],
28545
+ name: "peek",
29226
28546
  outputs: [{ internalType: "uint256", name: "", type: "uint256" }],
29227
- payable: false,
29228
- stateMutability: "view",
29229
- type: "function"
29230
- }
29231
- ];
29232
-
29233
- // src/abis/oracle/Api3Oracle.ts
29234
- var Api3OracleAbi = [
29235
- {
29236
- inputs: [
29237
- {
29238
- internalType: "address",
29239
- name: "_api3ServerV1",
29240
- type: "address"
29241
- },
29242
- {
29243
- internalType: "bytes32",
29244
- name: "_dapiNameHash",
29245
- type: "bytes32"
29246
- }
29247
- ],
29248
- stateMutability: "nonpayable",
29249
- type: "constructor"
29250
- },
29251
- {
29252
- inputs: [],
29253
- name: "api3ServerV1",
29254
- outputs: [
29255
- {
29256
- internalType: "address",
29257
- name: "",
29258
- type: "address"
29259
- }
29260
- ],
29261
- stateMutability: "view",
29262
- type: "function"
29263
- },
29264
- {
29265
- inputs: [],
29266
- name: "dapiNameHash",
29267
- outputs: [
29268
- {
29269
- internalType: "bytes32",
29270
- name: "",
29271
- type: "bytes32"
29272
- }
29273
- ],
29274
- stateMutability: "view",
29275
- type: "function"
29276
- },
29277
- {
29278
- inputs: [],
29279
- name: "read",
29280
- outputs: [
29281
- {
29282
- internalType: "int224",
29283
- name: "value",
29284
- type: "int224"
29285
- },
29286
- {
29287
- internalType: "uint32",
29288
- name: "timestamp",
29289
- type: "uint32"
29290
- }
29291
- ],
29292
- stateMutability: "view",
29293
- type: "function"
29294
- }
29295
- ];
29296
-
29297
- // src/abis/oracle/RWADynamicOracle.ts
29298
- var RWADynamicOracleAbi = [
29299
- {
29300
- inputs: [],
29301
- name: "getPrice",
29302
- outputs: [
29303
- {
29304
- internalType: "uint256",
29305
- name: "price",
29306
- type: "uint256"
29307
- }
29308
- ],
29309
28547
  stateMutability: "view",
29310
28548
  type: "function"
29311
28549
  }
29312
28550
  ];
29313
28551
 
29314
- // src/prices/main-prices/addresses/api3.ts
29315
- var api3OracleAddresses = {
29316
- [Chain.MANTLE]: {
29317
- ["WETH"]: "0x009E9B1eec955E9Fe7FE64f80aE868e661cb4729",
29318
- ["METH"]: "0xF55faBDf4C4F19D48d12A94209c735ca5AC43c78",
29319
- ["CMETH"]: "0x9B762Ccd8719Adb4c27B176A1817498Ed7946D06",
29320
- ["FBTC"]: "0xd13684dC3f4E40AeA1b74eFbfeBDE5cB00574c8e"
29321
- }
29322
- };
29323
-
29324
- // src/prices/main-prices/addresses/chainlink.ts
29325
- var chainlinkOracles = {
29326
- "MIMATIC-USD": {
29327
- [Chain.POLYGON_MAINNET]: "0xd8d483d813547cfb624b8dc33a00f2fcbcd2d428"
29328
- },
29329
- "BTC-ETH": {
29330
- [Chain.POLYGON_MAINNET]: "0x19b0F0833C78c0848109E3842D34d2fDF2cA69BA"
29331
- },
29332
- "BTC-USD": {
29333
- [Chain.POLYGON_MAINNET]: "0xc907E116054Ad103354f2D350FD2514433D57F6f",
29334
- [Chain.ETHEREUM_MAINNET]: "0xF4030086522a5bEEa4988F8cA5B36dbC97BeE88c",
29335
- [Chain.BNB_SMART_CHAIN_MAINNET]: "0x264990fbd0A4796A3E3d8E37C4d5F87a3aCa5Ebf"
29336
- },
29337
- "DAI-USD": {
29338
- [Chain.POLYGON_MAINNET]: "0x4746DeC9e833A82EC7C2C1356372CcF2cfcD2F3D",
29339
- [Chain.ETHEREUM_MAINNET]: "0xAed0c38402a5d19df6E4c03F4E2DceD6e29c1ee9",
29340
- [Chain.BNB_SMART_CHAIN_MAINNET]: "0x132d3C0B1D2cEa0BC552588063bdBb210FDeecfA"
29341
- },
29342
- "ETH-USD": {
29343
- [Chain.POLYGON_MAINNET]: "0xF9680D99D6C9589e2a93a78A04A279e509205945",
29344
- [Chain.ETHEREUM_MAINNET]: "0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419",
29345
- [Chain.BNB_SMART_CHAIN_MAINNET]: "0x9ef1B8c0E4F7dc8bF5719Ea496883DC6401d5b2e"
29346
- },
29347
- "BNB-USD": {
29348
- [Chain.BNB_SMART_CHAIN_MAINNET]: "0x0567F2323251f0Aab15c8dFb1967E4e8A7D42aeE"
29349
- },
29350
- "CAKE-USD": {
29351
- [Chain.BNB_SMART_CHAIN_MAINNET]: "0xB6064eD41d4f67e353768aA239cA86f4F73665a1"
29352
- },
29353
- "DOGE-USD": {
29354
- [Chain.BNB_SMART_CHAIN_MAINNET]: "0x3AB0A0d137D4F946fBB19eecc6e92E64660231C8"
29355
- },
29356
- "DOT-USD": {
29357
- [Chain.BNB_SMART_CHAIN_MAINNET]: "0xC333eb0086309a16aa7c8308DfD32c8BBA0a2592"
29358
- },
29359
- "BUSD-USD": {
29360
- [Chain.BNB_SMART_CHAIN_MAINNET]: "0xcBb98864Ef56E9042e7d2efef76141f15731B82f"
29361
- },
29362
- "BETH-USD": {
29363
- [Chain.BNB_SMART_CHAIN_MAINNET]: "0x2A3796273d47c4eD363b361D3AEFb7F7E2A13782"
29364
- },
29365
- "FIL-USD": {
29366
- [Chain.BNB_SMART_CHAIN_MAINNET]: "0xE5dbFD9003bFf9dF5feB2f4F445Ca00fb121fb83"
29367
- },
29368
- "LTC-USD": {
29369
- [Chain.BNB_SMART_CHAIN_MAINNET]: "0x74E72F37A8c415c8f1a98Ed42E78Ff997435791D"
29370
- },
29371
- "SXP-USD": {
29372
- [Chain.BNB_SMART_CHAIN_MAINNET]: "0xE188A9875af525d25334d75F3327863B2b8cd0F1"
29373
- },
29374
- "TRX-USD": {
29375
- [Chain.BNB_SMART_CHAIN_MAINNET]: "0xF4C5e535756D11994fCBB12Ba8adD0192D9b88be"
29376
- },
29377
- "JPY-USD": {
29378
- [Chain.POLYGON_MAINNET]: "0xD647a6fC9BC6402301583C91decC5989d8Bc382D"
29379
- },
29380
- "LINK-USD": {
29381
- [Chain.POLYGON_MAINNET]: "0xd9FFdb71EbE7496cC440152d43986Aae0AB76665",
29382
- [Chain.ETHEREUM_MAINNET]: "0x2c1d072e956AFFC0D435Cb7AC38EF18d24d9127c",
29383
- [Chain.BNB_SMART_CHAIN_MAINNET]: "0xca236E327F629f9Fc2c30A4E95775EbF0B89fac8"
29384
- },
29385
- "TUSD-USD": {
29386
- [Chain.BNB_SMART_CHAIN_MAINNET]: "0xa3334A9762090E827413A7495AfeCE76F41dFc06"
29387
- },
29388
- "LINK-MATIC": {
29389
- [Chain.POLYGON_MAINNET]: "0x5787BefDc0ECd210Dfa948264631CD53E68F7802"
29390
- },
29391
- "MATIC-USD": {
29392
- [Chain.POLYGON_MAINNET]: "0xAB594600376Ec9fD91F8e885dADF0CE036862dE0",
29393
- [Chain.BNB_SMART_CHAIN_MAINNET]: "0x7CA57b0cA6367191c94C8914d7Df09A57655905f"
29394
- },
29395
- "MATICX-USD": {
29396
- [Chain.POLYGON_MAINNET]: "0x5d37E4b374E6907de8Fc7fb33EE3b0af403C7403"
29397
- },
29398
- "STMATIC-USD": {
29399
- [Chain.POLYGON_MAINNET]: "0x97371dF4492605486e23Da797fA68e55Fc38a13f"
29400
- },
29401
- "XVS-USD": {
29402
- [Chain.BNB_SMART_CHAIN_MAINNET]: "0xBF63F430A79D4036A5900C19818aFf1fa710f206"
29403
- },
29404
- "USDC-USD": {
29405
- [Chain.POLYGON_MAINNET]: "0xfE4A8cc5b5B2366C1B58Bea3858e81843581b2F7",
29406
- [Chain.ETHEREUM_MAINNET]: "0x8fFfFfd4AfB6115b954Bd326cbe7B4BA576818f6",
29407
- [Chain.BNB_SMART_CHAIN_MAINNET]: "0x51597f405303C4377E36123cBc172b13269EA163"
29408
- },
29409
- "USDT-USD": {
29410
- [Chain.ETHEREUM_MAINNET]: "0x3E7d1eAB13ad0104d2750B8863b489D65364e32D",
29411
- [Chain.POLYGON_MAINNET]: "0x0a6513e40db6eb1b165753ad52e80663aea50545",
29412
- [Chain.BNB_SMART_CHAIN_MAINNET]: "0xB97Ad0E74fa7d920791E90258A6E2085088b4320"
29413
- },
29414
- "VAI-USD": {
29415
- [Chain.BNB_SMART_CHAIN_MAINNET]: "0x058316f8Bb13aCD442ee7A216C7b60CFB4Ea1B53"
29416
- },
29417
- "XRP-USD": {
29418
- [Chain.BNB_SMART_CHAIN_MAINNET]: "0x93A67D414896A280bF8FFB3b389fE3686E014fda"
29419
- },
29420
- "WIN-USD": {
29421
- [Chain.BNB_SMART_CHAIN_MAINNET]: "0x9e7377E194E41d63795907c92c3EB351a2eb0233"
29422
- },
29423
- "EUR-USD": {
29424
- [Chain.POLYGON_MAINNET]: "0x73366Fe0AA0Ded304479862808e02506FE556a98"
29425
- },
29426
- "SAND-USD": {},
29427
- "USDT-USDC": {
29428
- [Chain.POLYGON_MAINNET]: "0x0A6513e40db6EB1b165753AD52E80663aeA50545"
29429
- },
29430
- "AAVE-USD": {
29431
- [Chain.ETHEREUM_MAINNET]: "0x547a514d5e3769680Ce22B2361c10Ea13619e8a9",
29432
- [Chain.BNB_SMART_CHAIN_MAINNET]: "0xA8357BF572460fC40f4B0aCacbB2a6A61c89f475"
29433
- },
29434
- "ADA-USD": {
29435
- [Chain.BNB_SMART_CHAIN_MAINNET]: "0xa767f745331D267c7751297D982b050c93985627"
29436
- },
29437
- "BCH-USD": {
29438
- [Chain.BNB_SMART_CHAIN_MAINNET]: "0x43d80f616DAf0b0B42a928EeD32147dC59027D41"
29439
- },
29440
- "BAT-ETH": {
29441
- [Chain.ETHEREUM_MAINNET]: "0x0d16d4528239e9ee52fa531af613AcdB23D88c94"
29442
- },
29443
- "UNI-USD": {
29444
- [Chain.ETHEREUM_MAINNET]: "0x553303d460EE0afB37EdFf9bE42922D8FF63220e",
29445
- [Chain.POLYGON_MAINNET]: "0xdf0Fb4e4F928d2dCB76f438575fDD8682386e13C",
29446
- [Chain.BNB_SMART_CHAIN_MAINNET]: "0xb57f259E7C24e56a1dA00F66b55A5640d9f9E7e4"
29447
- },
29448
- "YFI-USD": {
29449
- [Chain.ETHEREUM_MAINNET]: "0xA027702dbb89fbd58938e4324ac03B58d812b0E1"
29450
- },
29451
- "USDP-USD": {
29452
- [Chain.ETHEREUM_MAINNET]: "0x09023c0DA49Aaf8fc3fA3ADF34C6A7016D38D5e3"
29453
- },
29454
- "ZRX-USD": {
29455
- [Chain.ETHEREUM_MAINNET]: "0x2885d15b8Af22648b98B122b22FDF4D2a56c6023"
29456
- },
29457
- "MKR-USD": {
29458
- [Chain.ETHEREUM_MAINNET]: "0xec1D1B3b0443256cc3860e24a46F108e699484Aa"
29459
- // [Chain.POLYGON_MAINNET]: '0xa070427bF5bA5709f70e98b94Cb2F435a242C46C',
29460
- },
29461
- "COMP-USD": {
29462
- [Chain.ETHEREUM_MAINNET]: "0xdbd020CAeF83eFd542f4De03e3cF0C28A4428bd5",
29463
- [Chain.POLYGON_MAINNET]: "0x2A8758b7257102461BC958279054e372C2b1bDE6"
29464
- },
29465
- "WSTETH-ETH": {
29466
- [Chain.POLYGON_MAINNET]: "0x10f964234cae09cB6a9854B56FF7D4F38Cda5E6a"
29467
- }
29468
- };
29469
- var getChainLinkKeys = (chainId) => {
29470
- return Object.keys(chainlinkOracles).filter(
29471
- // @ts-ignore
29472
- (x) => chainlinkOracles[x][chainId] !== void 0
29473
- );
29474
- };
29475
- ({
29476
- "1INCH-USD": {
29477
- [Chain.ETHEREUM_MAINNET]: "0xc929ad75B72593967DE83E7F7Cda0493458261D9"
29478
- },
29479
- "AAPL-USD": {
29480
- [Chain.ETHEREUM_MAINNET]: "0x139C8512Cde1778e9b9a8e721ce1aEbd4dD43587"
29481
- },
29482
- "AAVE-ETH": {
29483
- [Chain.ETHEREUM_MAINNET]: "0x6Df09E975c830ECae5bd4eD9d90f3A95a4f88012"
29484
- },
29485
- "AAVE-USD": {
29486
- [Chain.ETHEREUM_MAINNET]: "0x547a514d5e3769680Ce22B2361c10Ea13619e8a9"
29487
- },
29488
- "ADA-USD": {
29489
- [Chain.ETHEREUM_MAINNET]: "0xAE48c91dF1fE419994FFDa27da09D5aC69c30f55"
29490
- },
29491
- "ADX-USD": {
29492
- [Chain.ETHEREUM_MAINNET]: "0x231e764B44b2C1b7Ca171fa8021A24ed520Cde10"
29493
- },
29494
- "ALCX-ETH": {
29495
- [Chain.ETHEREUM_MAINNET]: "0x194a9AaF2e0b67c35915cD01101585A33Fe25CAa"
29496
- },
29497
- "ALCX-USD": {
29498
- [Chain.ETHEREUM_MAINNET]: "0xc355e4C0B3ff4Ed0B49EaACD55FE29B311f42976"
29499
- },
29500
- "ALPHA-ETH": {
29501
- [Chain.ETHEREUM_MAINNET]: "0x89c7926c7c15fD5BFDB1edcFf7E7fC8283B578F6"
29502
- },
29503
- "AMP-USD": {
29504
- [Chain.ETHEREUM_MAINNET]: "0x8797ABc4641dE76342b8acE9C63e3301DC35e3d8"
29505
- },
29506
- "AMPL-ETH": {
29507
- [Chain.ETHEREUM_MAINNET]: "0x492575FDD11a0fCf2C6C719867890a7648d526eB"
29508
- },
29509
- "AMZN-USD": {
29510
- [Chain.ETHEREUM_MAINNET]: "0x8994115d287207144236c13Be5E2bDbf6357D9Fd"
29511
- },
29512
- "ANKR-USD": {
29513
- [Chain.ETHEREUM_MAINNET]: "0x7eed379bf00005CfeD29feD4009669dE9Bcc21ce"
29514
- },
29515
- "ANT-ETH": {
29516
- [Chain.ETHEREUM_MAINNET]: "0x8f83670260F8f7708143b836a2a6F11eF0aBac01"
29517
- },
29518
- "APE-ETH": {
29519
- [Chain.ETHEREUM_MAINNET]: "0xc7de7f4d4C9c991fF62a07D18b3E31e349833A18"
29520
- },
29521
- "APE-USD": {
29522
- [Chain.ETHEREUM_MAINNET]: "0xD10aBbC76679a20055E167BB80A24ac851b37056"
29523
- },
29524
- "ARPA-USD": {
29525
- [Chain.ETHEREUM_MAINNET]: "0xc40ec815A2f8eb9912BD688d3bdE6B6D50A37ff2"
29526
- },
29527
- "ATOM-ETH": {
29528
- [Chain.ETHEREUM_MAINNET]: "0x15c8eA24Ba2d36671Fa22aD4Cff0a8eafe144352"
29529
- },
29530
- "ATOM-USD": {
29531
- [Chain.ETHEREUM_MAINNET]: "0xDC4BDB458C6361093069Ca2aD30D74cc152EdC75"
29532
- },
29533
- "AUD-USD": {
29534
- [Chain.ETHEREUM_MAINNET]: "0x77F9710E7d0A19669A13c055F62cd80d313dF022"
29535
- },
29536
- "AVAX-USD": {
29537
- [Chain.ETHEREUM_MAINNET]: "0xFF3EEb22B5E3dE6e705b44749C2559d704923FD7"
29538
- },
29539
- "AXS-ETH": {
29540
- [Chain.ETHEREUM_MAINNET]: "0x8B4fC5b68cD50eAc1dD33f695901624a4a1A0A8b"
29541
- },
29542
- "BADGER-ETH": {
29543
- [Chain.ETHEREUM_MAINNET]: "0x58921Ac140522867bf50b9E009599Da0CA4A2379"
29544
- },
29545
- "BADGER-USD": {
29546
- [Chain.ETHEREUM_MAINNET]: "0x66a47b7206130e6FF64854EF0E1EDfa237E65339"
29547
- },
29548
- "BAL-ETH": {
29549
- [Chain.ETHEREUM_MAINNET]: "0xC1438AA3823A6Ba0C159CfA8D98dF5A994bA120b"
29550
- },
29551
- "BAL-USD": {
29552
- [Chain.ETHEREUM_MAINNET]: "0xdF2917806E30300537aEB49A7663062F4d1F2b5F"
29553
- },
29554
- "BAND-ETH": {
29555
- [Chain.ETHEREUM_MAINNET]: "0x0BDb051e10c9718d1C29efbad442E88D38958274"
29556
- },
29557
- "BAND-USD": {
29558
- [Chain.ETHEREUM_MAINNET]: "0x919C77ACc7373D000b329c1276C76586ed2Dd19F"
29559
- },
29560
- "BAT-ETH": {
29561
- [Chain.ETHEREUM_MAINNET]: "0x0d16d4528239e9ee52fa531af613AcdB23D88c94"
29562
- },
29563
- "BCH-USD": {
29564
- [Chain.ETHEREUM_MAINNET]: "0x9F0F69428F923D6c95B781F89E165C9b2df9789D"
29565
- },
29566
- "BIT-USD": {
29567
- [Chain.ETHEREUM_MAINNET]: "0x7b33EbfA52F215a30FaD5a71b3FeE57a4831f1F0"
29568
- },
29569
- "BNB-ETH": {
29570
- [Chain.ETHEREUM_MAINNET]: "0xc546d2d06144F9DD42815b8bA46Ee7B8FcAFa4a2"
29571
- },
29572
- "BNB-USD": {
29573
- [Chain.ETHEREUM_MAINNET]: "0x14e613AC84a31f709eadbdF89C6CC390fDc9540A"
29574
- },
29575
- "BNT-ETH": {
29576
- [Chain.ETHEREUM_MAINNET]: "0xCf61d1841B178fe82C8895fe60c2EDDa08314416"
29577
- },
29578
- "BNT-USD": {
29579
- [Chain.ETHEREUM_MAINNET]: "0x1E6cF0D433de4FE882A437ABC654F58E1e78548c"
29580
- },
29581
- "BOND-ETH": {
29582
- [Chain.ETHEREUM_MAINNET]: "0xdd22A54e05410D8d1007c38b5c7A3eD74b855281"
29583
- },
29584
- "BRL-USD": {
29585
- [Chain.ETHEREUM_MAINNET]: "0x971E8F1B779A5F1C36e1cd7ef44Ba1Cc2F5EeE0f"
29586
- },
29587
- "BTC-ETH": {
29588
- [Chain.ETHEREUM_MAINNET]: "0xdeb288F737066589598e9214E782fa5A8eD689e8"
29589
- },
29590
- "BTC-USD": {
29591
- [Chain.ETHEREUM_MAINNET]: "0xF4030086522a5bEEa4988F8cA5B36dbC97BeE88c"
29592
- },
29593
- "BUSD-ETH": {
29594
- [Chain.ETHEREUM_MAINNET]: "0x614715d2Af89E6EC99A233818275142cE88d1Cfd"
29595
- },
29596
- "BUSD-USD": {
29597
- [Chain.ETHEREUM_MAINNET]: "0x833D8Eb16D306ed1FbB5D7A2E019e106B960965A"
29598
- },
29599
- "C98-USD": {
29600
- [Chain.ETHEREUM_MAINNET]: "0xE95CDc33E1F5BfE7eB26f45E29C6C9032B97db7F"
29601
- },
29602
- "CAD-USD": {
29603
- [Chain.ETHEREUM_MAINNET]: "0xa34317DB73e77d453b1B8d04550c44D10e981C8e"
29604
- },
29605
- "CAKE-USD": {
29606
- [Chain.ETHEREUM_MAINNET]: "0xEb0adf5C06861d6c07174288ce4D0a8128164003"
29607
- },
29608
- "CBETH-ETH": {
29609
- [Chain.ETHEREUM_MAINNET]: "0xF017fcB346A1885194689bA23Eff2fE6fA5C483b"
29610
- },
29611
- "CEL-ETH": {
29612
- [Chain.ETHEREUM_MAINNET]: "0x75FbD83b4bd51dEe765b2a01e8D3aa1B020F9d33"
29613
- },
29614
- "CELO-ETH": {
29615
- [Chain.ETHEREUM_MAINNET]: "0x9ae96129ed8FE0C707D6eeBa7b90bB1e139e543e"
29616
- },
29617
- "CHF-USD": {
29618
- [Chain.ETHEREUM_MAINNET]: "0x449d117117838fFA61263B61dA6301AA2a88B13A"
29619
- },
29620
- "CNY-USD": {
29621
- [Chain.ETHEREUM_MAINNET]: "0xeF8A4aF35cd47424672E3C590aBD37FBB7A7759a"
29622
- },
29623
- "COMP-ETH": {
29624
- [Chain.ETHEREUM_MAINNET]: "0x1B39Ee86Ec5979ba5C322b826B3ECb8C79991699"
29625
- },
29626
- "COMP-USD": {
29627
- [Chain.ETHEREUM_MAINNET]: "0xdbd020CAeF83eFd542f4De03e3cF0C28A4428bd5"
29628
- },
29629
- "CREAM-ETH": {
29630
- [Chain.ETHEREUM_MAINNET]: "0x82597CFE6af8baad7c0d441AA82cbC3b51759607"
29631
- },
29632
- "CRO-USD": {
29633
- [Chain.ETHEREUM_MAINNET]: "0x00Cb80Cf097D9aA9A3779ad8EE7cF98437eaE050"
29634
- },
29635
- "CRV-ETH": {
29636
- [Chain.ETHEREUM_MAINNET]: "0x8a12Be339B0cD1829b91Adc01977caa5E9ac121e"
29637
- },
29638
- "CRV-USD": {
29639
- [Chain.ETHEREUM_MAINNET]: "0xCd627aA160A6fA45Eb793D19Ef54f5062F20f33f"
29640
- },
29641
- "CSPR-USD": {
29642
- [Chain.ETHEREUM_MAINNET]: "0x9e37a8Ee3bFa8eD6783Db031Dc458d200b226074"
29643
- },
29644
- "CTSI-ETH": {
29645
- [Chain.ETHEREUM_MAINNET]: "0x0a1d1b9847d602e789be38B802246161FFA24930"
29646
- },
29647
- "CVX-ETH": {
29648
- [Chain.ETHEREUM_MAINNET]: "0xC9CbF687f43176B302F03f5e58470b77D07c61c6"
29649
- },
29650
- "CVX-USD": {
29651
- [Chain.ETHEREUM_MAINNET]: "0xd962fC30A72A84cE50161031391756Bf2876Af5D"
29652
- },
29653
- "DAI-ETH": {
29654
- [Chain.ETHEREUM_MAINNET]: "0x773616E4d11A78F511299002da57A0a94577F1f4"
29655
- },
29656
- "DAI-USD": {
29657
- [Chain.ETHEREUM_MAINNET]: "0xAed0c38402a5d19df6E4c03F4E2DceD6e29c1ee9"
29658
- },
29659
- "DASH-USD": {
29660
- [Chain.ETHEREUM_MAINNET]: "0xFb0cADFEa136E9E343cfb55B863a6Df8348ab912"
29661
- },
29662
- "DODO-USD": {
29663
- [Chain.ETHEREUM_MAINNET]: "0x9613A51Ad59EE375e6D8fa12eeef0281f1448739"
29664
- },
29665
- "DOGE-USD": {
29666
- [Chain.ETHEREUM_MAINNET]: "0x2465CefD3b488BE410b941b1d4b2767088e2A028"
29667
- },
29668
- "DOT-USD": {
29669
- [Chain.ETHEREUM_MAINNET]: "0x1C07AFb8E2B827c5A4739C6d59Ae3A5035f28734"
29670
- },
29671
- "DYDX-USD": {
29672
- [Chain.ETHEREUM_MAINNET]: "0x478909D4D798f3a1F11fFB25E4920C959B4aDe0b"
29673
- },
29674
- "ENJ-ETH": {
29675
- [Chain.ETHEREUM_MAINNET]: "0x24D9aB51950F3d62E9144fdC2f3135DAA6Ce8D1B"
29676
- },
29677
- "ENJ-USD": {
29678
- [Chain.ETHEREUM_MAINNET]: "0x23905C55dC11D609D5d11Dc604905779545De9a7"
29679
- },
29680
- "ENS-USD": {
29681
- [Chain.ETHEREUM_MAINNET]: "0x5C00128d4d1c2F4f652C267d7bcdD7aC99C16E16"
29682
- },
29683
- "EOS-USD": {
29684
- [Chain.ETHEREUM_MAINNET]: "0x10a43289895eAff840E8d45995BBa89f9115ECEe"
29685
- },
29686
- "ERN-USD": {
29687
- [Chain.ETHEREUM_MAINNET]: "0x0a87e12689374A4EF49729582B474a1013cceBf8"
29688
- },
29689
- "ETC-USD": {
29690
- [Chain.ETHEREUM_MAINNET]: "0xaEA2808407B7319A31A383B6F8B60f04BCa23cE2"
29691
- },
29692
- "ETH-BTC": {
29693
- [Chain.ETHEREUM_MAINNET]: "0xAc559F25B1619171CbC396a50854A3240b6A4e99"
29694
- },
29695
- "ETH-USD": {
29696
- [Chain.ETHEREUM_MAINNET]: "0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419"
29697
- },
29698
- "EUR-USD": {
29699
- [Chain.ETHEREUM_MAINNET]: "0xb49f677943BC038e9857d61E7d053CaA2C1734C1"
29700
- },
29701
- "EURT-USD": {
29702
- [Chain.ETHEREUM_MAINNET]: "0x01D391A48f4F7339aC64CA2c83a07C22F95F587a"
29703
- },
29704
- "FARM-ETH": {
29705
- [Chain.ETHEREUM_MAINNET]: "0x611E0d2709416E002A3f38085e4e1cf77c015921"
29706
- },
29707
- "FB-USD": {
29708
- [Chain.ETHEREUM_MAINNET]: "0xCe1051646393087e706288C1B57Fd26446657A7f"
29709
- },
29710
- "FEI-ETH": {
29711
- [Chain.ETHEREUM_MAINNET]: "0x7F0D2c2838c6AC24443d13e23d99490017bDe370"
29712
- },
29713
- "FIL-ETH": {
29714
- [Chain.ETHEREUM_MAINNET]: "0x0606Be69451B1C9861Ac6b3626b99093b713E801"
29715
- },
29716
- "FLOW-USD": {
29717
- [Chain.ETHEREUM_MAINNET]: "0xD9BdD9f5ffa7d89c846A5E3231a093AE4b3469D2"
29718
- },
29719
- "FOR-USD": {
29720
- [Chain.ETHEREUM_MAINNET]: "0x456834f736094Fb0AAD40a9BBc9D4a0f37818A54"
29721
- },
29722
- "FORTH-USD": {
29723
- [Chain.ETHEREUM_MAINNET]: "0x7D77Fd73E468baECe26852776BeaF073CDc55fA0"
29724
- },
29725
- "FRAX-ETH": {
29726
- [Chain.ETHEREUM_MAINNET]: "0x14d04Fff8D21bd62987a5cE9ce543d2F1edF5D3E"
29727
- },
29728
- "FRAX-USD": {
29729
- [Chain.ETHEREUM_MAINNET]: "0xB9E1E3A9feFf48998E45Fa90847ed4D467E8BcfD"
29730
- },
29731
- "FTM-ETH": {
29732
- [Chain.ETHEREUM_MAINNET]: "0x2DE7E4a9488488e0058B95854CC2f7955B35dC9b"
29733
- },
29734
- "FXS-USD": {
29735
- [Chain.ETHEREUM_MAINNET]: "0x6Ebc52C8C1089be9eB3945C4350B68B8E4C2233f"
29736
- },
29737
- "GBP-USD": {
29738
- [Chain.ETHEREUM_MAINNET]: "0x5c0Ab2d9b5a7ed9f470386e82BB36A3613cDd4b5"
29739
- },
29740
- "GLM-USD": {
29741
- [Chain.ETHEREUM_MAINNET]: "0x83441C3A10F4D05de6e0f2E849A850Ccf27E6fa7"
29742
- },
29743
- "GNO-ETH": {
29744
- [Chain.ETHEREUM_MAINNET]: "0xA614953dF476577E90dcf4e3428960e221EA4727"
29745
- },
29746
- "GOOGL-USD": {
29747
- [Chain.ETHEREUM_MAINNET]: "0x36D39936BeA501755921beB5A382a88179070219"
29748
- },
29749
- "GRT-ETH": {
29750
- [Chain.ETHEREUM_MAINNET]: "0x17D054eCac33D91F7340645341eFB5DE9009F1C1"
29751
- },
29752
- "GRT-USD": {
29753
- [Chain.ETHEREUM_MAINNET]: "0x86cF33a451dE9dc61a2862FD94FF4ad4Bd65A5d2"
29754
- },
29755
- "GTC-ETH": {
29756
- [Chain.ETHEREUM_MAINNET]: "0x0e773A17a01E2c92F5d4c53435397E2bd48e215F"
29757
- },
29758
- "GUSD-ETH": {
29759
- [Chain.ETHEREUM_MAINNET]: "0x96d15851CBac05aEe4EFD9eA3a3DD9BDEeC9fC28"
29760
- },
29761
- "GUSD-USD": {
29762
- [Chain.ETHEREUM_MAINNET]: "0xa89f5d2365ce98B3cD68012b6f503ab1416245Fc"
29763
- },
29764
- "HBAR-USD": {
29765
- [Chain.ETHEREUM_MAINNET]: "0x38C5ae3ee324ee027D88c5117ee58d07c9b4699b"
29766
- },
29767
- "HIGH-USD": {
29768
- [Chain.ETHEREUM_MAINNET]: "0xe2F95bC12FE8a3C35684Be7586C39fD7c0E5b403"
29769
- },
29770
- "HT-USD": {
29771
- [Chain.ETHEREUM_MAINNET]: "0xE1329B3f6513912CAf589659777b66011AEE5880"
29772
- },
29773
- "ILV-ETH": {
29774
- [Chain.ETHEREUM_MAINNET]: "0xf600984CCa37cd562E74E3EE514289e3613ce8E4"
29775
- },
29776
- "IMX-USD": {
29777
- [Chain.ETHEREUM_MAINNET]: "0xBAEbEFc1D023c0feCcc047Bff42E75F15Ff213E6"
29778
- },
29779
- "INJ-USD": {
29780
- [Chain.ETHEREUM_MAINNET]: "0xaE2EbE3c4D20cE13cE47cbb49b6d7ee631Cd816e"
29781
- },
29782
- "INR-USD": {
29783
- [Chain.ETHEREUM_MAINNET]: "0x605D5c2fBCeDb217D7987FC0951B5753069bC360"
29784
- },
29785
- "IOTX-USD": {
29786
- [Chain.ETHEREUM_MAINNET]: "0x96c45535d235148Dc3ABA1E48A6E3cFB3510f4E2"
29787
- },
29788
- "JPY-USD": {
29789
- [Chain.ETHEREUM_MAINNET]: "0xBcE206caE7f0ec07b545EddE332A47C2F75bbeb3"
29790
- },
29791
- "KNC-ETH": {
29792
- [Chain.ETHEREUM_MAINNET]: "0x656c0544eF4C98A6a98491833A89204Abb045d6b"
29793
- },
29794
- "KNC-USD": {
29795
- [Chain.ETHEREUM_MAINNET]: "0xf8fF43E991A81e6eC886a3D281A2C6cC19aE70Fc"
29796
- },
29797
- "KP3R-ETH": {
29798
- [Chain.ETHEREUM_MAINNET]: "0xe7015CCb7E5F788B8c1010FC22343473EaaC3741"
29799
- },
29800
- "KRW-USD": {
29801
- [Chain.ETHEREUM_MAINNET]: "0x01435677FB11763550905594A16B645847C1d0F3"
29802
- },
29803
- "KSM-USD": {
29804
- [Chain.ETHEREUM_MAINNET]: "0x06E4164E24E72B879D93360D1B9fA05838A62EB5"
29805
- },
29806
- "LDO-ETH": {
29807
- [Chain.ETHEREUM_MAINNET]: "0x4e844125952D32AcdF339BE976c98E22F6F318dB"
29808
- },
29809
- "LINK-ETH": {
29810
- [Chain.ETHEREUM_MAINNET]: "0xDC530D9457755926550b59e8ECcdaE7624181557"
29811
- },
29812
- "LINK-USD": {
29813
- [Chain.ETHEREUM_MAINNET]: "0x2c1d072e956AFFC0D435Cb7AC38EF18d24d9127c"
29814
- },
29815
- "LON-ETH": {
29816
- [Chain.ETHEREUM_MAINNET]: "0x13A8F2cC27ccC2761ca1b21d2F3E762445f201CE"
29817
- },
29818
- "LRC-ETH": {
29819
- [Chain.ETHEREUM_MAINNET]: "0x160AC928A16C93eD4895C2De6f81ECcE9a7eB7b4"
29820
- },
29821
- "LTC-USD": {
29822
- [Chain.ETHEREUM_MAINNET]: "0x6AF09DF7563C363B5763b9102712EbeD3b9e859B"
29823
- },
29824
- "LUSD-USD": {
29825
- [Chain.ETHEREUM_MAINNET]: "0x3D7aE7E594f2f2091Ad8798313450130d0Aba3a0"
29826
- },
29827
- "MANA-ETH": {
29828
- [Chain.ETHEREUM_MAINNET]: "0x82A44D92D6c329826dc557c5E1Be6ebeC5D5FeB9"
29829
- },
29830
- "MANA-USD": {
29831
- [Chain.ETHEREUM_MAINNET]: "0x56a4857acbcfe3a66965c251628B1c9f1c408C19"
29832
- },
29833
- "MATIC-USD": {
29834
- [Chain.ETHEREUM_MAINNET]: "0x7bAC85A8a13A4BcD8abb3eB7d6b4d632c5a57676"
29835
- },
29836
- "MIM-USD": {
29837
- [Chain.ETHEREUM_MAINNET]: "0x7A364e8770418566e3eb2001A96116E6138Eb32F"
29838
- },
29839
- "MKR-ETH": {
29840
- [Chain.ETHEREUM_MAINNET]: "0x24551a8Fb2A7211A25a17B1481f043A8a8adC7f2"
29841
- },
29842
- "MKR-USD": {
29843
- [Chain.ETHEREUM_MAINNET]: "0xec1D1B3b0443256cc3860e24a46F108e699484Aa"
29844
- },
29845
- "MLN-ETH": {
29846
- [Chain.ETHEREUM_MAINNET]: "0xDaeA8386611A157B08829ED4997A8A62B557014C"
29847
- },
29848
- "MSFT-USD": {
29849
- [Chain.ETHEREUM_MAINNET]: "0x021Fb44bfeafA0999C7b07C4791cf4B859C3b431"
29850
- },
29851
- "NEAR-USD": {
29852
- [Chain.ETHEREUM_MAINNET]: "0xC12A6d1D827e23318266Ef16Ba6F397F2F91dA9b"
29853
- },
29854
- "NFLX-USD": {
29855
- [Chain.ETHEREUM_MAINNET]: "0x67C2e69c5272B94AF3C90683a9947C39Dc605ddE"
29856
- },
29857
- "NMR-ETH": {
29858
- [Chain.ETHEREUM_MAINNET]: "0x9cB2A01A7E64992d32A34db7cEea4c919C391f6A"
29859
- },
29860
- "NMR-USD": {
29861
- [Chain.ETHEREUM_MAINNET]: "0xcC445B35b3636bC7cC7051f4769D8982ED0d449A"
29862
- },
29863
- "NZD-USD": {
29864
- [Chain.ETHEREUM_MAINNET]: "0x3977CFc9e4f29C184D4675f4EB8e0013236e5f3e"
29865
- },
29866
- "OCEAN-ETH": {
29867
- [Chain.ETHEREUM_MAINNET]: "0x9b0FC4bb9981e5333689d69BdBF66351B9861E62"
29868
- },
29869
- "OGN-ETH": {
29870
- [Chain.ETHEREUM_MAINNET]: "0x2c881B6f3f6B5ff6C975813F87A4dad0b241C15b"
29871
- },
29872
- "OHMv2-ETH": {
29873
- [Chain.ETHEREUM_MAINNET]: "0x9a72298ae3886221820B1c878d12D872087D3a23"
29874
- },
29875
- "OM-USD": {
29876
- [Chain.ETHEREUM_MAINNET]: "0xb9583cfBdEeacd2705546F392E43F8E03eB92216"
29877
- },
29878
- "OMG-ETH": {
29879
- [Chain.ETHEREUM_MAINNET]: "0x57C9aB3e56EE4a83752c181f241120a3DBba06a1"
29880
- },
29881
- "OMG-USD": {
29882
- [Chain.ETHEREUM_MAINNET]: "0x7D476f061F8212A8C9317D5784e72B4212436E93"
29883
- },
29884
- "ONT-USD": {
29885
- [Chain.ETHEREUM_MAINNET]: "0xcDa3708C5c2907FCca52BB3f9d3e4c2028b89319"
29886
- },
29887
- "ORN-ETH": {
29888
- [Chain.ETHEREUM_MAINNET]: "0xbA9B2a360eb8aBdb677d6d7f27E12De11AA052ef"
29889
- },
29890
- "OXT-USD": {
29891
- [Chain.ETHEREUM_MAINNET]: "0xd75AAaE4AF0c398ca13e2667Be57AF2ccA8B5de6"
29892
- },
29893
- "PAXG-ETH": {
29894
- [Chain.ETHEREUM_MAINNET]: "0x9B97304EA12EFed0FAd976FBeCAad46016bf269e"
29895
- },
29896
- "PERP-ETH": {
29897
- [Chain.ETHEREUM_MAINNET]: "0x3b41D5571468904D4e53b6a8d93A6BaC43f02dC9"
29898
- },
29899
- "PERP-USD": {
29900
- [Chain.ETHEREUM_MAINNET]: "0x01cE1210Fe8153500F60f7131d63239373D7E26C"
29901
- },
29902
- "PHA-USD": {
29903
- [Chain.ETHEREUM_MAINNET]: "0x2B1248028fe48864c4f1c305E524e2e6702eAFDF"
29904
- },
29905
- "RAI-ETH": {
29906
- [Chain.ETHEREUM_MAINNET]: "0x4ad7B025127e89263242aB68F0f9c4E5C033B489"
29907
- },
29908
- "REN-ETH": {
29909
- [Chain.ETHEREUM_MAINNET]: "0x3147D7203354Dc06D9fd350c7a2437bcA92387a4"
29910
- },
29911
- "REN-USD": {
29912
- [Chain.ETHEREUM_MAINNET]: "0x0f59666EDE214281e956cb3b2D0d69415AfF4A01"
29913
- },
29914
- "REQ-USD": {
29915
- [Chain.ETHEREUM_MAINNET]: "0x2F05888D185970f178f40610306a0Cc305e52bBF"
29916
- },
29917
- "RLC-ETH": {
29918
- [Chain.ETHEREUM_MAINNET]: "0x4cba1e1fdc738D0fe8DB3ee07728E2Bc4DA676c6"
29919
- },
29920
- "RUNE-ETH": {
29921
- [Chain.ETHEREUM_MAINNET]: "0x875D60C44cfbC38BaA4Eb2dDB76A767dEB91b97e"
29922
- },
29923
- "SAND-USD": {
29924
- [Chain.ETHEREUM_MAINNET]: "0x35E3f7E558C04cE7eEE1629258EcbbA03B36Ec56"
29925
- },
29926
- "SGD-USD": {
29927
- [Chain.ETHEREUM_MAINNET]: "0xe25277fF4bbF9081C75Ab0EB13B4A13a721f3E13"
29928
- },
29929
- "SHIB-ETH": {
29930
- [Chain.ETHEREUM_MAINNET]: "0x8dD1CD88F43aF196ae478e91b9F5E4Ac69A97C61"
29931
- },
29932
- "SNX-ETH": {
29933
- [Chain.ETHEREUM_MAINNET]: "0x79291A9d692Df95334B1a0B3B4AE6bC606782f8c"
29934
- },
29935
- "SNX-USD": {
29936
- [Chain.ETHEREUM_MAINNET]: "0xDC3EA94CD0AC27d9A86C180091e7f78C683d3699"
29937
- },
29938
- "SOL-USD": {
29939
- [Chain.ETHEREUM_MAINNET]: "0x4ffC43a60e009B551865A93d232E33Fce9f01507"
29940
- },
29941
- "SPELL-USD": {
29942
- [Chain.ETHEREUM_MAINNET]: "0x8c110B94C5f1d347fAcF5E1E938AB2db60E3c9a8"
29943
- },
29944
- "SRM-ETH": {
29945
- [Chain.ETHEREUM_MAINNET]: "0x050c048c9a0CD0e76f166E2539F87ef2acCEC58f"
29946
- },
29947
- "STETH-ETH": {
29948
- [Chain.ETHEREUM_MAINNET]: "0x86392dC19c0b719886221c78AB11eb8Cf5c52812"
29949
- },
29950
- "SUSD-ETH": {
29951
- [Chain.ETHEREUM_MAINNET]: "0x8e0b7e6062272B5eF4524250bFFF8e5Bd3497757"
29952
- },
29953
- "SUSHI-ETH": {
29954
- [Chain.ETHEREUM_MAINNET]: "0xe572CeF69f43c2E488b33924AF04BDacE19079cf"
29955
- },
29956
- "SUSHI-USD": {
29957
- [Chain.ETHEREUM_MAINNET]: "0xCc70F09A6CC17553b2E31954cD36E4A2d89501f7"
29958
- },
29959
- "SXP-USD": {
29960
- [Chain.ETHEREUM_MAINNET]: "0xFb0CfD6c19e25DB4a08D8a204a387cEa48Cc138f"
29961
- },
29962
- "TOMO-USD": {
29963
- [Chain.ETHEREUM_MAINNET]: "0x3d44925a8E9F9DFd90390E58e92Ec16c996A331b"
29964
- },
29965
- "TRIBE-ETH": {
29966
- [Chain.ETHEREUM_MAINNET]: "0x84a24deCA415Acc0c395872a9e6a63E27D6225c8"
29967
- },
29968
- "TRU-USD": {
29969
- [Chain.ETHEREUM_MAINNET]: "0x26929b85fE284EeAB939831002e1928183a10fb1"
29970
- },
29971
- "TRY-USD": {
29972
- [Chain.ETHEREUM_MAINNET]: "0xB09fC5fD3f11Cf9eb5E1C5Dba43114e3C9f477b5"
29973
- },
29974
- "TSLA-USD": {
29975
- [Chain.ETHEREUM_MAINNET]: "0x1ceDaaB50936881B3e449e47e40A2cDAF5576A4a"
29976
- },
29977
- "TUSD-ETH": {
29978
- [Chain.ETHEREUM_MAINNET]: "0x3886BA987236181D98F2401c507Fb8BeA7871dF2"
29979
- },
29980
- "TUSD-USD": {
29981
- [Chain.ETHEREUM_MAINNET]: "0xec746eCF986E2927Abd291a2A1716c940100f8Ba"
29982
- },
29983
- "UNI-ETH": {
29984
- [Chain.ETHEREUM_MAINNET]: "0xD6aA3D25116d8dA79Ea0246c4826EB951872e02e"
29985
- },
29986
- "UNI-USD": {
29987
- [Chain.ETHEREUM_MAINNET]: "0x553303d460EE0afB37EdFf9bE42922D8FF63220e"
29988
- },
29989
- "USDC-ETH": {
29990
- [Chain.ETHEREUM_MAINNET]: "0x986b5E1e1755e3C2440e960477f25201B0a8bbD4"
29991
- },
29992
- "USDC-USD": {
29993
- [Chain.ETHEREUM_MAINNET]: "0x8fFfFfd4AfB6115b954Bd326cbe7B4BA576818f6"
29994
- },
29995
- "USDK-USD": {
29996
- [Chain.ETHEREUM_MAINNET]: "0xfAC81Ea9Dd29D8E9b212acd6edBEb6dE38Cb43Af"
29997
- },
29998
- "USDN-USD": {
29999
- [Chain.ETHEREUM_MAINNET]: "0x7a8544894F7FD0C69cFcBE2b4b2E277B0b9a4355"
30000
- },
30001
- "USDP-USD": {
30002
- [Chain.ETHEREUM_MAINNET]: "0x09023c0DA49Aaf8fc3fA3ADF34C6A7016D38D5e3"
30003
- },
30004
- "USDT-ETH": {
30005
- [Chain.ETHEREUM_MAINNET]: "0xEe9F2375b4bdF6387aa8265dD4FB8F16512A1d46"
30006
- },
30007
- "USDT-USD": {
30008
- [Chain.ETHEREUM_MAINNET]: "0x3E7d1eAB13ad0104d2750B8863b489D65364e32D"
30009
- },
30010
- "WBTC-BTC": {
30011
- [Chain.ETHEREUM_MAINNET]: "0xfdFD9C85aD200c506Cf9e21F1FD8dd01932FBB23"
30012
- },
30013
- "WING-USD": {
30014
- [Chain.ETHEREUM_MAINNET]: "0x134fE0a225Fb8e6683617C13cEB6B3319fB4fb82"
30015
- },
30016
- "WNXM-ETH": {
30017
- [Chain.ETHEREUM_MAINNET]: "0xe5Dc0A609Ab8bCF15d3f35cFaa1Ff40f521173Ea"
30018
- },
30019
- "WTI-USD": {
30020
- [Chain.ETHEREUM_MAINNET]: "0xf3584F4dd3b467e73C2339EfD008665a70A4185c"
30021
- },
30022
- "XAG-USD": {
30023
- [Chain.ETHEREUM_MAINNET]: "0x379589227b15F1a12195D3f2d90bBc9F31f95235"
30024
- },
30025
- "XAU-USD": {
30026
- [Chain.ETHEREUM_MAINNET]: "0x214eD9Da11D2fbe465a6fc601a91E62EbEc1a0D6"
30027
- },
30028
- "XCN-USD": {
30029
- [Chain.ETHEREUM_MAINNET]: "0xeb988B77b94C186053282BfcD8B7ED55142D3cAB"
30030
- },
30031
- "XMR-USD": {
30032
- [Chain.ETHEREUM_MAINNET]: "0xFA66458Cce7Dd15D8650015c4fce4D278271618F"
30033
- },
30034
- "XRP-USD": {
30035
- [Chain.ETHEREUM_MAINNET]: "0xCed2660c6Dd1Ffd856A5A82C67f3482d88C50b12"
30036
- },
30037
- "YFI-ETH": {
30038
- [Chain.ETHEREUM_MAINNET]: "0x7c5d4F8345e66f68099581Db340cd65B078C41f4"
30039
- },
30040
- "YFI-USD": {
30041
- [Chain.ETHEREUM_MAINNET]: "0xA027702dbb89fbd58938e4324ac03B58d812b0E1"
30042
- },
30043
- "YFII-ETH": {
30044
- [Chain.ETHEREUM_MAINNET]: "0xaaB2f6b45B28E962B3aCd1ee4fC88aEdDf557756"
30045
- },
30046
- "ZRX-ETH": {
30047
- [Chain.ETHEREUM_MAINNET]: "0x2Da4983a622a8498bb1a21FaE9D8F6C664939962"
30048
- },
30049
- "ZRX-USD": {
30050
- [Chain.ETHEREUM_MAINNET]: "0x2885d15b8Af22648b98B122b22FDF4D2a56c6023"
30051
- },
30052
- "sUSD-USD": {
30053
- [Chain.ETHEREUM_MAINNET]: "0xad35Bd71b9aFE6e4bDc266B345c198eaDEf9Ad94"
30054
- }
30055
- });
30056
-
30057
- // src/abis/oracle/ProxyOracle.ts
30058
- var ProxyOracleAbi = [
30059
- {
30060
- inputs: [],
30061
- name: "price",
30062
- outputs: [
30063
- {
30064
- internalType: "uint256",
30065
- name: "",
30066
- type: "uint256"
30067
- }
30068
- ],
30069
- stateMutability: "view",
30070
- type: "function"
30071
- },
30072
- {
30073
- inputs: [{ internalType: "address", name: "asset", type: "address" }],
30074
- name: "peek",
30075
- outputs: [{ internalType: "uint256", name: "", type: "uint256" }],
30076
- stateMutability: "view",
30077
- type: "function"
30078
- }
30079
- ];
30080
-
30081
- // src/abis/oracle/UniV3.ts
30082
- var UniswapV3Abi = [
30083
- {
30084
- inputs: [],
30085
- name: "slot0",
30086
- outputs: [
30087
- {
30088
- internalType: "uint160",
30089
- name: "sqrtPriceX96",
30090
- type: "uint160"
30091
- }
30092
- ],
30093
- stateMutability: "view",
30094
- type: "function"
30095
- }
30096
- ];
30097
-
30098
- // src/prices/main-prices/fetchOracleData.ts
30099
- var LENDLE_PAIR_MANTLE = "0x4c57BE599d0e0414785943569E9B6A66dA79Aa6b";
30100
- var AU_PAIR_MANTLE = "0x709503fbb50b10f921e812c48fbd5c5522a0b20c";
30101
- var WMNT_USDT_PAIR = "0x3e5922cd0cec71dc2d60ec8b36aa4c05b7c1672f";
30102
- var RWA_DYNAMIC_ORACLE = "0xA96abbe61AfEdEB0D14a20440Ae7100D9aB4882f";
30103
- var fetchMainPrices = async (chainIds, rpcOverrides, lists = {}, retries = 3, batchSize = void 0, allowFailure = true) => {
30104
- const aaves = getAavesForChain();
30105
- const multicallPromises = chainIds.map(async (chainId) => {
30106
- let aaveForks = aaves?.[chainId];
30107
- if (chainId === Chain.KAIA_MAINNET)
30108
- aaveForks = aaveForks?.filter((a) => a !== Lender.KLAP);
30109
- if (chainId === Chain.GNOSIS)
30110
- aaveForks = aaveForks?.filter((a) => a !== Lender.AGAVE);
30111
- if (chainId === Chain.ETHEREUM_MAINNET)
30112
- aaveForks = aaveForks?.filter(
30113
- (a) => a !== Lender.ZEROLEND_STABLECOINS_RWA && a !== Lender.ZEROLEND_ETH_LRTS
30114
- );
30115
- if (chainId === Chain.SCROLL)
30116
- aaveForks = aaveForks?.filter((a) => a !== Lender.LORE);
30117
- if (chainId === Chain.TAIKO_ALETHIA)
30118
- aaveForks = aaveForks?.filter(
30119
- (a) => a !== Lender.TAKOTAKO && a !== Lender.TAKOTAKO_ETH
30120
- );
30121
- if (chainId === Chain.BNB_SMART_CHAIN_MAINNET)
30122
- aaveForks = aaveForks?.filter((a) => a !== Lender.AVALON_USDX);
30123
- if (chainId === Chain.MANTA_PACIFIC_MAINNET)
30124
- aaveForks = aaveForks?.filter((a) => a !== Lender.ZEROLEND);
30125
- const reservesToQuery = aaveForks?.map((a) => ({
30126
- fork: a,
30127
- assets: getAaveAssets(chainId, a)
30128
- })) ?? [];
30129
- const handled = /* @__PURE__ */ new Set();
30130
- const queries = [];
30131
- for (const e of reservesToQuery) {
30132
- const newAssets = e.assets.filter((a) => !handled.has(a));
30133
- if (newAssets.length > 0) {
30134
- queries.push({
30135
- assets: newAssets,
30136
- // @ts-ignore
30137
- oracle: aaveOracles()?.[e.fork]?.[chainId],
30138
- fork: e.fork
30139
- });
30140
- newAssets.forEach((a) => handled.add(a));
30141
- }
30142
- }
30143
- const morphoTypeOraclesObtained = morphoTypeOracles();
30144
- let morphoQueries = [];
30145
- let listaCalls = [];
30146
- Object.entries(morphoTypeOraclesObtained[chainId] ?? {}).forEach(
30147
- ([fork, datas]) => {
30148
- datas.forEach((data) => {
30149
- if (fork === Lender.LISTA_DAO) {
30150
- if (!handled.has(data.collateralAsset))
30151
- listaCalls.push({
30152
- asset: data.collateralAsset,
30153
- address: data.oracle,
30154
- name: "peek",
30155
- params: [data.collateralAsset]
30156
- });
30157
- if (!handled.has(data.loanAsset))
30158
- listaCalls.push({
30159
- asset: data.loanAsset,
30160
- address: data.oracle,
30161
- name: "peek",
30162
- params: [data.loanAsset]
30163
- });
30164
- } else if (fork === Lender.MORPHO_BLUE && (!handled.has(data.collateralAsset) || !handled.has(data.loanAsset))) {
30165
- morphoQueries.push({
30166
- fork,
30167
- ...data
30168
- });
30169
- }
30170
- });
30171
- }
30172
- );
30173
- const morphoCalls = getMorphoCalls(morphoQueries);
30174
- const aaveCalls = getAaveCalls(queries);
30175
- const [chainlinkCalls, chainlinkNames] = getChainLinkCalls(chainId);
30176
- const uniswapCalls = getUniswapV2Calls(chainId);
30177
- const uniswapV3Calls = getUniswapV3Calls(chainId);
30178
- const [api3Calls, api3Names] = getApi3Calls(chainId);
30179
- const [rwaCalls, rwaNames] = getRWADynamicOracleCalls(chainId);
30180
- const [cometCalls, cometNames] = getCometCalls(chainId);
30181
- const [compoundV2Calls, compoundV2Names] = getCompoundV2Calls(chainId);
30182
- const allCalls = [
30183
- ...chainlinkCalls,
30184
- ...aaveCalls,
30185
- ...uniswapCalls,
30186
- ...uniswapV3Calls,
30187
- ...api3Calls,
30188
- ...rwaCalls,
30189
- ...cometCalls,
30190
- ...compoundV2Calls,
30191
- ...morphoCalls,
30192
- ...listaCalls
30193
- ];
30194
- const abis = [
30195
- ...ChainLinkAggregatorAbi,
30196
- ...UniswapV2PairAbi,
30197
- ...UniswapV3Abi,
30198
- ...AaveOracleAbi,
30199
- ...Api3OracleAbi,
30200
- ...RWADynamicOracleAbi,
30201
- ...ProxyOracleAbi,
30202
- ...CometAbi,
30203
- ...VenusLensAbi
30204
- ];
30205
- const result = await multicallRetryUniversal({
30206
- chain: chainId,
30207
- calls: allCalls,
30208
- abi: abis,
30209
- batchSize,
30210
- maxRetries: retries,
30211
- providerId: 0,
30212
- allowFailure,
30213
- overrdies: rpcOverrides
30214
- });
30215
- return {
30216
- chainId,
30217
- result,
30218
- meta: {
30219
- queries,
30220
- chainlink: { calls: chainlinkCalls, names: chainlinkNames },
30221
- api3: { calls: api3Calls, names: api3Names },
30222
- rwa: { calls: rwaCalls, names: rwaNames },
30223
- comet: { calls: cometCalls, names: cometNames },
30224
- compoundV2: { calls: compoundV2Calls, names: compoundV2Names },
30225
- morpho: { queries: morphoQueries },
30226
- listaCalls,
30227
- uniswapCalls,
30228
- uniswapV3Calls,
30229
- aaveCalls
30230
- }
30231
- };
30232
- });
30233
- const otherDataPromises = [fetchDefillamaData(), fetchPendlePrices(lists)];
30234
- const [chainResults, ...otherResults] = await Promise.all([
30235
- Promise.all(multicallPromises),
30236
- ...otherDataPromises
30237
- ]);
30238
- let allPrices = { ...otherResults[0], ...otherResults[1] };
30239
- for (const {
30240
- chainId,
30241
- result,
30242
- meta: {
30243
- queries,
30244
- chainlink,
30245
- api3,
30246
- rwa,
30247
- uniswapCalls,
30248
- uniswapV3Calls,
30249
- comet,
30250
- compoundV2,
30251
- aaveCalls
30252
- }
30253
- } of chainResults) {
30254
- let offset = 0;
30255
- const chainlinkSlice = result.slice(offset, offset + chainlink.calls.length);
30256
- const chainlinkData = parseChainLinkResults(
30257
- chainId,
30258
- chainlinkSlice,
30259
- chainlink.names
30260
- );
30261
- offset += chainlink.calls.length;
30262
- const aaveSlice = result.slice(offset, offset + aaveCalls.length);
30263
- const aaveData = parseAaveResults(
30264
- chainId,
30265
- aaveSlice,
30266
- queries,
30267
- lists[chainId]?.list,
30268
- allPrices
30269
- );
30270
- offset += aaveCalls.length;
30271
- const uniswapSlice = result.slice(offset, offset + uniswapCalls.length);
30272
- const uniswapData = parseUniswapV2results(uniswapSlice, chainId, aaveData);
30273
- offset += uniswapCalls.length;
30274
- const uniswapV3Slice = result.slice(offset, offset + uniswapV3Calls.length);
30275
- const uniswapV3Data = parseUniswapV3results(
30276
- uniswapV3Slice,
30277
- chainId,
30278
- allPrices
30279
- );
30280
- offset += uniswapV3Calls.length;
30281
- const api3Slice = result.slice(offset, offset + api3.calls.length);
30282
- const api3Data = parseApi3Results(chainId, api3Slice, api3.names);
30283
- offset += api3.calls.length;
30284
- const rwaSlice = result.slice(offset, offset + rwa.calls.length);
30285
- const rwaData = parseRWADynamicOracleResults(chainId, rwaSlice, rwa.names);
30286
- offset += rwa.calls.length;
30287
- const cometSlice = result.slice(offset, offset + comet.calls.length);
30288
- const cometData = parseCometResults(chainId, cometSlice, comet.names);
30289
- offset += comet.calls.length;
30290
- const compoundV2Slice = result.slice(
30291
- offset,
30292
- offset + compoundV2.calls.length
30293
- );
30294
- const compoundV2Data = parseCompoundV2Results(
30295
- chainId,
30296
- compoundV2Slice,
30297
- compoundV2.names,
30298
- aaveData
30299
- );
30300
- offset += comet.calls.length;
30301
- allPrices = {
30302
- ...allPrices,
30303
- ...chainlinkData,
30304
- ...aaveData,
30305
- ...uniswapData,
30306
- ...uniswapV3Data,
30307
- ...api3Data,
30308
- ...rwaData,
30309
- ...cometData,
30310
- ...compoundV2Data
30311
- };
30312
- }
30313
- for (const {
30314
- chainId,
30315
- result,
30316
- meta: {
30317
- morpho,
30318
- listaCalls,
30319
- chainlink,
30320
- aaveCalls,
30321
- uniswapCalls,
30322
- uniswapV3Calls,
30323
- api3,
30324
- rwa,
30325
- comet,
30326
- compoundV2
30327
- }
30328
- } of chainResults) {
30329
- const morphoOffset = chainlink.calls.length + aaveCalls.length + uniswapCalls.length + uniswapV3Calls.length + api3.calls.length + comet.calls.length + compoundV2.calls.length + rwa.calls.length;
30330
- const listaOffset = morphoOffset + morpho.queries.length;
30331
- const morphoResult = result.slice(morphoOffset, listaOffset);
30332
- const listaResult = result.slice(listaOffset);
30333
- const morphoData = parseMorphoResults(
30334
- chainId,
30335
- morphoResult,
30336
- morpho.queries,
30337
- allPrices,
30338
- lists[chainId]?.list
30339
- );
30340
- const listaData = parseListaResults(
30341
- chainId,
30342
- listaResult,
30343
- listaCalls,
30344
- allPrices,
30345
- lists[chainId]?.list
30346
- );
30347
- allPrices = {
30348
- ...allPrices,
30349
- ...morphoData,
30350
- ...listaData
30351
- };
30352
- }
30353
- for (const r of otherResults) {
30354
- allPrices = { ...allPrices, ...r };
30355
- }
30356
- return allPrices;
30357
- };
30358
- var getUniswapV2Calls = (chainId) => {
30359
- switch (chainId) {
30360
- case Chain.MANTLE:
30361
- return [
30362
- {
30363
- address: WMNT_USDT_PAIR,
30364
- name: "getReserves",
30365
- params: []
30366
- },
30367
- {
30368
- address: LENDLE_PAIR_MANTLE,
30369
- name: "getReserves",
30370
- params: []
30371
- },
30372
- {
30373
- address: AU_PAIR_MANTLE,
30374
- name: "getReserves",
30375
- params: []
30376
- }
30377
- ];
30378
- case Chain.HYPEREVM: {
30379
- return [
30380
- {
30381
- // PRIME/HYPE
30382
- address: "0x981F145a71Da6DF4A7cBe892807782c9CC9a5515",
30383
- name: "getReserves",
30384
- params: []
30385
- }
30386
- ];
30387
- }
30388
- default:
30389
- return [];
30390
- }
30391
- };
30392
- var getCometCalls = (chainId) => {
30393
- switch (chainId) {
30394
- case Chain.ETHEREUM_MAINNET: {
30395
- const names = [
30396
- "Staked FRAX::SFRAX",
30397
- //
30398
- "Elixir deUSD::DEUSD",
30399
- "Elixir Staked deUSD::SDEUSD"
30400
- ];
30401
- return [
30402
- [
30403
- {
30404
- address: "0x3Afdc9BCA9213A35503b077a6072F3D0d5AB0840",
30405
- // usdt comet
30406
- name: "getPrice",
30407
- params: [
30408
- "0x8C74B2811D2F1aD65517ADB5C65773c1E520ed2f"
30409
- // sfrax
30410
- ]
30411
- },
30412
- {
30413
- address: "0x3Afdc9BCA9213A35503b077a6072F3D0d5AB0840",
30414
- name: "getPrice",
30415
- params: [
30416
- "0x471a6299C027Bd81ed4D66069dc510Bd0569f4F8"
30417
- // deusd
30418
- ]
30419
- },
30420
- {
30421
- address: "0x3Afdc9BCA9213A35503b077a6072F3D0d5AB0840",
30422
- name: "getPrice",
30423
- params: [
30424
- "0xE4829421ae79f2F44716cCbbb40751cd6Be3d483"
30425
- // sdeusd
30426
- ]
30427
- }
30428
- ],
30429
- names
30430
- ];
30431
- }
30432
- default:
30433
- return [[], []];
30434
- }
30435
- };
30436
- var parseCometResults = (chainId, data, names) => {
30437
- switch (chainId) {
30438
- case Chain.ETHEREUM_MAINNET: {
30439
- const targetDecimals = [8, 8, 8];
30440
- return Object.assign(
30441
- {},
30442
- ...data.map((entry, index) => {
30443
- return {
30444
- [names[index]]: Number(
30445
- parseRawAmount(entry ?? "0", targetDecimals[index])
30446
- )
30447
- };
30448
- })
30449
- );
30450
- }
30451
- default: {
30452
- return {};
30453
- }
30454
- }
30455
- };
30456
- var getCompoundV2Calls = (chainId) => {
30457
- switch (chainId) {
30458
- case Chain.ARBITRUM_ONE: {
30459
- const feedInfo = [
30460
- ["GMX Market ETH/USD::GM [WETH-USDC]", 18],
30461
- //
30462
- ["GMX Market BTC/USD::GM [WBTC-USDC]", 18]
30463
- ];
30464
- return [
30465
- [
30466
- {
30467
- address: "0x53F34FF95367B2A4542461a6A63fD321F8da22AD",
30468
- // lens
30469
- name: "vTokenUnderlyingPrice",
30470
- params: [
30471
- "0x9bb8cEc9C0d46F53b4f2173BB2A0221F66c353cC"
30472
- //
30473
- ]
30474
- },
30475
- {
30476
- address: "0x53F34FF95367B2A4542461a6A63fD321F8da22AD",
30477
- name: "vTokenUnderlyingPrice",
30478
- params: [
30479
- "0x4f3a73f318C5EA67A86eaaCE24309F29f89900dF"
30480
- //
30481
- ]
30482
- }
30483
- ],
30484
- feedInfo
30485
- ];
30486
- }
30487
- case Chain.BNB_SMART_CHAIN_MAINNET: {
30488
- const feedInfo = [
30489
- ["Cardano Token::ADA", 18],
30490
- //
30491
- ["Astherus Staked BNB::asBNB", 18],
30492
- ["THE", 18],
30493
- ["Trust Wallet::TWT", 18],
30494
- ["Wrapped Binance Beacon ETH::wBETH", 18],
30495
- ["Tron V2::TRX", 30],
30496
- ["LUNA", 18],
30497
- ["UST", 18],
30498
- ["Tron::TRX", 18],
30499
- ["Cannon::CAN", 18],
30500
- ["Beacon ETH::BETH", 18],
30501
- ["Filecoin::FIL", 18],
30502
- ["Polkadot Token::DOT", 18],
30503
- ["Bitcoin Cash Token::BCH", 18],
30504
- ["XRP Token::XRP", 18],
30505
- ["Litecoin Token::LTC", 18],
30506
- ["Venus::XVS", 18],
30507
- ["SXP", 18],
30508
- ["USD1::USD1", 18],
30509
- ["TUSD", 18],
30510
- ["Staked Lista BNB::slisBNB", 18],
30511
- ["FDUSD", 18],
30512
- ["Cannon::CAN", 18]
30513
- ];
30514
- return [
30515
- [
30516
- {
30517
- address: "0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621",
30518
- // lens
30519
- name: "vTokenUnderlyingPrice",
30520
- params: [
30521
- "0x9a0af7fdb2065ce470d72664de73cae409da28ec"
30522
- //
30523
- ]
30524
- },
30525
- {
30526
- address: "0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621",
30527
- // lens
30528
- name: "vTokenUnderlyingPrice",
30529
- params: [
30530
- "0xcc1db43a06d97f736c7b045aedd03c6707c09bdf"
30531
- //
30532
- ]
30533
- },
30534
- {
30535
- address: "0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621",
30536
- // lens
30537
- name: "vTokenUnderlyingPrice",
30538
- params: [
30539
- "0x86e06eafa6a1ea631eab51de500e3d474933739f"
30540
- //
30541
- ]
30542
- },
30543
- {
30544
- address: "0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621",
30545
- // lens
30546
- name: "vTokenUnderlyingPrice",
30547
- params: [
30548
- "0x4d41a36d04d97785bcea57b057c412b278e6edcc"
30549
- //
30550
- ]
30551
- },
30552
- {
30553
- address: "0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621",
30554
- // lens
30555
- name: "vTokenUnderlyingPrice",
30556
- params: [
30557
- "0x6cfdec747f37daf3b87a35a1d9c8ad3063a1a8a0"
30558
- //
30559
- ]
30560
- },
30561
- {
30562
- address: "0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621",
30563
- // lens
30564
- name: "vTokenUnderlyingPrice",
30565
- params: [
30566
- "0xc5d3466aa484b040ee977073fcf337f2c00071c1"
30567
- //
30568
- ]
30569
- },
30570
- {
30571
- address: "0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621",
30572
- // lens
30573
- name: "vTokenUnderlyingPrice",
30574
- params: [
30575
- "0xb91a659e88b51474767cd97ef3196a3e7cedd2c8"
30576
- //
30577
- ]
30578
- },
30579
- {
30580
- address: "0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621",
30581
- // lens
30582
- name: "vTokenUnderlyingPrice",
30583
- params: [
30584
- "0x78366446547d062f45b4c0f320cdaa6d710d87bb"
30585
- //
30586
- ]
30587
- },
30588
- {
30589
- address: "0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621",
30590
- // lens
30591
- name: "vTokenUnderlyingPrice",
30592
- params: [
30593
- "0x61edcfe8dd6ba3c891cb9bec2dc7657b3b422e93"
30594
- //
30595
- ]
30596
- },
30597
- {
30598
- address: "0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621",
30599
- // lens
30600
- name: "vTokenUnderlyingPrice",
30601
- params: [
30602
- "0xebd0070237a0713e8d94fef1b728d3d993d290ef"
30603
- //
30604
- ]
30605
- },
30606
- {
30607
- address: "0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621",
30608
- // lens
30609
- name: "vTokenUnderlyingPrice",
30610
- params: [
30611
- "0x972207a639cc1b374b893cc33fa251b55ceb7c07"
30612
- //
30613
- ]
30614
- },
30615
- {
30616
- address: "0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621",
30617
- // lens
30618
- name: "vTokenUnderlyingPrice",
30619
- params: [
30620
- "0xf91d58b5ae142dacc749f58a49fcbac340cb0343"
30621
- //
30622
- ]
30623
- },
30624
- {
30625
- address: "0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621",
30626
- // lens
30627
- name: "vTokenUnderlyingPrice",
30628
- params: [
30629
- "0x1610bc33319e9398de5f57b33a5b184c806ad217"
30630
- //
30631
- ]
30632
- },
30633
- {
30634
- address: "0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621",
30635
- // lens
30636
- name: "vTokenUnderlyingPrice",
30637
- params: [
30638
- "0x5f0388ebc2b94fa8e123f404b79ccf5f40b29176"
30639
- //
30640
- ]
30641
- },
30642
- {
30643
- address: "0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621",
30644
- // lens
30645
- name: "vTokenUnderlyingPrice",
30646
- params: [
30647
- "0xb248a295732e0225acd3337607cc01068e3b9c10"
30648
- //
30649
- ]
30650
- },
30651
- {
30652
- address: "0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621",
30653
- // lens
30654
- name: "vTokenUnderlyingPrice",
30655
- params: [
30656
- "0x57a5297f2cb2c0aac9d554660acd6d385ab50c6b"
30657
- //
30658
- ]
30659
- },
30660
- {
30661
- address: "0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621",
30662
- // lens
30663
- name: "vTokenUnderlyingPrice",
30664
- params: [
30665
- "0x151b1e2635a717bcdc836ecd6fbb62b674fe3e1d"
30666
- //
30667
- ]
30668
- },
30669
- {
30670
- address: "0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621",
30671
- // lens
30672
- name: "vTokenUnderlyingPrice",
30673
- params: [
30674
- "0x2ff3d0f6990a40261c66e1ff2017acbc282eb6d0"
30675
- //
30676
- ]
30677
- },
30678
- {
30679
- address: "0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621",
30680
- // lens
30681
- name: "vTokenUnderlyingPrice",
30682
- params: [
30683
- "0x0c1da220d301155b87318b90692da8dc43b67340"
30684
- //
30685
- ]
30686
- },
30687
- {
30688
- address: "0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621",
30689
- // lens
30690
- name: "vTokenUnderlyingPrice",
30691
- params: [
30692
- "0x08ceb3f4a7ed3500ca0982bcd0fc7816688084c3"
30693
- //
30694
- ]
30695
- },
30696
- {
30697
- address: "0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621",
30698
- // lens
30699
- name: "vTokenUnderlyingPrice",
30700
- params: [
30701
- "0x89c910eb8c90df818b4649b508ba22130dc73adc"
30702
- //
30703
- ]
30704
- },
30705
- {
30706
- address: "0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621",
30707
- // lens
30708
- name: "vTokenUnderlyingPrice",
30709
- params: [
30710
- "0xc4ef4229fec74ccfe17b2bdef7715fac740ba0ba"
30711
- //
30712
- ]
30713
- },
30714
- {
30715
- address: "0xA179d2f1Fd53D15Bc790bE91d5fF4a0108E29621",
30716
- // lens
30717
- name: "vTokenUnderlyingPrice",
30718
- params: [
30719
- "0xebd0070237a0713e8d94fef1b728d3d993d290ef"
30720
- //
30721
- ]
30722
- }
30723
- ],
30724
- feedInfo
30725
- ];
30726
- }
30727
- case Chain.ETHEREUM_MAINNET: {
30728
- const feedInfo = [
30729
- ["SFRXETH", 18],
30730
- //
30731
- ["Super Symbiotic LRT::weETHs", 18],
30732
- ["USDC-1 yVault::yvUSDC-1", 30],
30733
- ["USDS-1 yVault::yvUSDS-1", 18],
30734
- ["USDT-1 yVault::yvUSDT-1", 30],
30735
- ["WETH-1 yVault::yvWETH-1", 18]
30736
- ];
30737
- return [
30738
- [
30739
- {
30740
- address: "0x277950603178BDD223eB53B9b7cF5D0053aa3473",
30741
- // lens
30742
- name: "vTokenUnderlyingPrice",
30743
- params: [
30744
- "0x17142a05fe678e9584FA1d88EfAC1bF181bF7ABe"
30745
- //
30746
- ]
30747
- },
30748
- {
30749
- address: "0x277950603178BDD223eB53B9b7cF5D0053aa3473",
30750
- // lens
30751
- name: "vTokenUnderlyingPrice",
30752
- params: [
30753
- "0xc42E4bfb996ED35235bda505430cBE404Eb49F77"
30754
- //
30755
- ]
30756
- },
30757
- {
30758
- address: "0x277950603178BDD223eB53B9b7cF5D0053aa3473",
30759
- name: "vTokenUnderlyingPrice",
30760
- params: [
30761
- "0xf87c0a64dc3a8622D6c63265FA29137788163879"
30762
- //
30763
- ]
30764
- },
30765
- {
30766
- address: "0x277950603178BDD223eB53B9b7cF5D0053aa3473",
30767
- name: "vTokenUnderlyingPrice",
30768
- params: [
30769
- "0x520d67226Bc904aC122dcE66ed2f8f61AA1ED764"
30770
- //
30771
- ]
30772
- },
30773
- {
30774
- address: "0x277950603178BDD223eB53B9b7cF5D0053aa3473",
30775
- name: "vTokenUnderlyingPrice",
30776
- params: [
30777
- "0x475d0C68a8CD275c15D1F01F4f291804E445F677"
30778
- //
30779
- ]
30780
- },
30781
- {
30782
- address: "0x277950603178BDD223eB53B9b7cF5D0053aa3473",
30783
- name: "vTokenUnderlyingPrice",
30784
- params: [
30785
- "0xba3916302cBA4aBcB51a01e706fC6051AaF272A0"
30786
- //
30787
- ]
30788
- }
30789
- ],
30790
- feedInfo
30791
- ];
30792
- }
30793
- case Chain.PLASMA_MAINNET: {
30794
- const feedInfo = [
30795
- ["Staked Plasma USD::splUSD", 18],
30796
- //
30797
- ["Plasma USD::plUSD", 18]
30798
- // ['Staked Stream USD::xUSD', 30],
30799
- ];
30800
- return [
30801
- [
30802
- {
30803
- address: "0xE67B5097b8dC55aCECaB82102A3042078f016550",
30804
- // lens
30805
- name: "vTokenUnderlyingPrice",
30806
- params: [
30807
- "0x213824b154458Edb345921bB864d741e285b99F4"
30808
- //
30809
- ]
30810
- },
30811
- {
30812
- address: "0xE67B5097b8dC55aCECaB82102A3042078f016550",
30813
- // lens
30814
- name: "vTokenUnderlyingPrice",
30815
- params: [
30816
- "0xa82846aEFCC2DE156b61F7f5c35C5a4680D5D297"
30817
- //
30818
- ]
30819
- }
30820
- // {
30821
- // address: '0xE67B5097b8dC55aCECaB82102A3042078f016550',
30822
- // name: 'vTokenUnderlyingPrice',
30823
- // params: [
30824
- // '0xbaD1e57EbF56baCb7c39E3ddcD8Fe4DCC2fd4198', //
30825
- // ],
30826
- // },
30827
- ],
30828
- feedInfo
30829
- ];
30830
- }
30831
- case Chain.SONIC_MAINNET: {
30832
- const feedInfo = [
30833
- ["U$D::U$D", 30],
30834
- //
30835
- ["HLP0::HLP0", 30],
30836
- ["Enclabs Trevee VeETH::enclabsVeETH", 18],
30837
- ["Enclabs Trevee VeUSD::enclabsVeUSD::146::0", 30],
30838
- ["Enclabs Trevee VeUSD::enclabsVeUSD", 30],
30839
- ["Wrapped Stability USD::wmetaUSD", 18],
30840
- ["Bridged EURC::EURC.e", 30],
30841
- ["SJ Yield Token scUSD::YT-scUSD", 18],
30842
- ["Rings scETH::SCETH", 18],
30843
- ["Rings scUSD::SCUSD", 30],
30844
- ["Wrapped Origin Sonic::WOS", 18]
30845
- ];
30846
- return [
30847
- [
30848
- {
30849
- address: "0x3567B16050cB90236997eF47B1941502e85d65f3",
30850
- // lens
30851
- name: "vTokenUnderlyingPrice",
30852
- params: [
30853
- "0x0e528ae2376Bf60B5c6e4c62aE461F422052b457"
30854
- //
30855
- ]
30856
- },
30857
- {
30858
- address: "0x3567B16050cB90236997eF47B1941502e85d65f3",
30859
- // lens
30860
- name: "vTokenUnderlyingPrice",
30861
- params: [
30862
- "0x05C132E75D2775Ca4257FCf824169d99d593eBF1"
30863
- //
30864
- ]
30865
- },
30866
- {
30867
- address: "0x3567B16050cB90236997eF47B1941502e85d65f3",
30868
- // lens
30869
- name: "vTokenUnderlyingPrice",
30870
- params: [
30871
- "0x14515De791C58C430b85D837df3E3ac455B88fEd"
30872
- //
30873
- ]
30874
- },
30875
- {
30876
- address: "0x3567B16050cB90236997eF47B1941502e85d65f3",
30877
- // lens
30878
- name: "vTokenUnderlyingPrice",
30879
- params: [
30880
- "0x44D5602E26c1C1fD5F284036023e2750F3d855a0"
30881
- //
30882
- ]
30883
- },
30884
- {
30885
- address: "0x3567B16050cB90236997eF47B1941502e85d65f3",
30886
- // lens
30887
- name: "vTokenUnderlyingPrice",
30888
- params: [
30889
- "0x3f0c9dcCa72058950327b5D4a5783fB0CbA520Ce"
30890
- //
30891
- ]
30892
- },
30893
- {
30894
- address: "0x3567B16050cB90236997eF47B1941502e85d65f3",
30895
- name: "vTokenUnderlyingPrice",
30896
- params: [
30897
- "0x1D801dC616C79c499C5d38c998Ef2D0D6Cf868e8"
30898
- //
30899
- ]
30900
- },
30901
- {
30902
- address: "0x3567B16050cB90236997eF47B1941502e85d65f3",
30903
- name: "vTokenUnderlyingPrice",
30904
- params: [
30905
- "0x6fFD0B54E2B74FdaFBceC853145372066FE98fC1"
30906
- //
30907
- ]
30908
- },
30909
- {
30910
- address: "0x3567B16050cB90236997eF47B1941502e85d65f3",
30911
- name: "vTokenUnderlyingPrice",
30912
- params: [
30913
- "0xAb1fbEE94D9ba79269B3e479cE5D78C60F148716"
30914
- //
30915
- ]
30916
- },
30917
- {
30918
- address: "0x3567B16050cB90236997eF47B1941502e85d65f3",
30919
- name: "vTokenUnderlyingPrice",
30920
- params: [
30921
- "0x04568dB12221D60C93e1db9Cb7933aD6b7c4280C"
30922
- //
30923
- ]
30924
- },
30925
- {
30926
- address: "0x3567B16050cB90236997eF47B1941502e85d65f3",
30927
- name: "vTokenUnderlyingPrice",
30928
- params: [
30929
- "0x6770aF27FC5233A70B85BFf631061400a09d2e1c"
30930
- //
30931
- ]
30932
- },
30933
- {
30934
- address: "0x3567B16050cB90236997eF47B1941502e85d65f3",
30935
- name: "vTokenUnderlyingPrice",
30936
- params: [
30937
- "0x7FD79432cC704582235DF11b92b783f07ED40e13"
30938
- //
30939
- ]
30940
- }
30941
- ],
30942
- feedInfo
30943
- ];
30944
- }
30945
- case Chain.MOONBEAM: {
30946
- const feedInfo = [
30947
- ["xcDOT::DOT", 26],
30948
- // ['Bridged WETH (Nomad)::WETH', 18],
30949
- // ['Bridged WBTC (Nomad)::WBTC', 28],
30950
- // ['Bridged USDC (Nomad)::USDC', 18],
30951
- ["Wrapped BTC (Wormhole)::wh.WBTC", 28],
30952
- ["USD Coin (Wormhole)::wh.USDC", 30]
30953
- ];
30954
- return [
30955
- [
30956
- {
30957
- address: "0xED301cd3EB27217BDB05C4E9B820a8A3c8B665f9",
30958
- name: "getUnderlyingPrice",
30959
- params: ["0xd22da948c0ab3a27f5570b604f3adef5f68211c3"]
30960
- },
30961
- // {
30962
- // address: '0xED301cd3EB27217BDB05C4E9B820a8A3c8B665f9',
30963
- // name: 'getUnderlyingPrice',
30964
- // params: ['0xc3090f41eb54a7f18587fd6651d4d3ab477b07a4'],
30965
- // },
30966
- // {
30967
- // address: '0xED301cd3EB27217BDB05C4E9B820a8A3c8B665f9',
30968
- // name: 'getUnderlyingPrice',
30969
- // params: ['0x24a9d8f1f350d59cb0368d3d52a77db29c833d1d'],
30970
- // },
30971
- // {
30972
- // address: '0xED301cd3EB27217BDB05C4E9B820a8A3c8B665f9',
30973
- // name: 'getUnderlyingPrice',
30974
- // params: ['0x8f552a71efe5eefc207bf75485b356a0b3f01ec9'],
30975
- // },
30976
- {
30977
- address: "0xED301cd3EB27217BDB05C4E9B820a8A3c8B665f9",
30978
- name: "getUnderlyingPrice",
30979
- params: ["0xaaa20c5a584a9fecdfedd71e46da7858b774a9ce"]
30980
- },
30981
- {
30982
- address: "0xED301cd3EB27217BDB05C4E9B820a8A3c8B665f9",
30983
- name: "getUnderlyingPrice",
30984
- params: ["0x744b1756e7651c6d57f5311767eafe5e931d615b"]
30985
- }
30986
- ],
30987
- feedInfo
30988
- ];
30989
- }
30990
- case Chain.OP_MAINNET: {
30991
- const feedInfo = [
30992
- ["Velodrome V2::VELO", 18],
30993
- ["Velodrome::VELO", 18]
30994
- ];
30995
- return [
30996
- [
30997
- {
30998
- address: "0x2f1490bD6aD10C9CE42a2829afa13EAc0b746dcf",
30999
- name: "getUnderlyingPrice",
31000
- params: ["0x866b838b97Ee43F2c818B3cb5Cc77A0dc22003Fc"]
31001
- },
31002
- {
31003
- address: "0x2f1490bD6aD10C9CE42a2829afa13EAc0b746dcf",
31004
- name: "getUnderlyingPrice",
31005
- params: ["0x21d851585840942b0ef9f20d842c00c5f3735eaf"]
31006
- }
31007
- ],
31008
- feedInfo
31009
- ];
31010
- }
31011
- case Chain.BASE: {
31012
- const feedInfo = [
31013
- ["WELL", 18],
31014
- ["MORPHO", 18],
31015
- ["Mamo::MAMO", 18]
31016
- ];
31017
- return [
31018
- [
31019
- {
31020
- address: "0xEC942bE8A8114bFD0396A5052c36027f2cA6a9d0",
31021
- name: "getUnderlyingPrice",
31022
- params: ["0xdC7810B47eAAb250De623F0eE07764afa5F71ED1"]
31023
- },
31024
- {
31025
- address: "0xEC942bE8A8114bFD0396A5052c36027f2cA6a9d0",
31026
- name: "getUnderlyingPrice",
31027
- params: ["0x6308204872bdb7432df97b04b42443c714904f3e"]
31028
- },
31029
- {
31030
- address: "0xEC942bE8A8114bFD0396A5052c36027f2cA6a9d0",
31031
- name: "getUnderlyingPrice",
31032
- params: ["0x2F90Bb22eB3979f5FfAd31EA6C3F0792ca66dA32"]
31033
- }
31034
- ],
31035
- feedInfo
31036
- ];
31037
- }
31038
- default:
31039
- return [[], []];
31040
- }
31041
- };
31042
- function getValue(v) {
31043
- if (typeof v === "bigint") return v.toString();
31044
- if (v.underlyingPrice) return v?.underlyingPrice?.toString() ?? "0";
31045
- return v;
31046
- }
31047
- var parseCompoundV2Results = (chainId, data, names, other = {}) => {
31048
- return Object.assign(
31049
- {},
31050
- ...data.map((entry, index) => {
31051
- const val = getValue(entry);
31052
- let price = Number(parseRawAmount(val, names[index][1]));
31053
- const name = names[index][0];
31054
- if (name === "SFRXETH") {
31055
- price = other["ETH"] * price;
31056
- }
31057
- return {
31058
- [name]: price
31059
- };
31060
- })
31061
- );
31062
- };
31063
- var getUniswapV3Calls = (chainId) => {
31064
- switch (chainId) {
31065
- case Chain.HEMI_NETWORK:
31066
- return [
31067
- {
31068
- // HMEU/USDC pool
31069
- address: "0xe2f1012fa5e8709ed38888c15615207fac278b57",
31070
- name: "slot0",
31071
- params: []
31072
- }
31073
- ];
31074
- case Chain.BASE:
31075
- return [
31076
- //mseth/eth
31077
- {
31078
- address: "0x74f72788f4814d7ff3c49b44684aa98eee140c0e",
31079
- name: "slot0",
31080
- params: []
31081
- }
31082
- ];
31083
- default:
31084
- return [];
31085
- }
31086
- };
31087
- var BASE_MULTI = 10n ** 18n;
31088
- function getV3PriceFromSqrt(sqrtPrice, t0d, t1d) {
31089
- const scalarNumerator = 10n ** BigInt(t0d);
31090
- const scalarDenominator = 10n ** BigInt(t1d);
31091
- const sqrtP = BigInt(sqrtPrice);
31092
- const inputNumerator = sqrtP * sqrtP;
31093
- const inputDenominator = 2n ** 192n;
31094
- const adjustedForDecimalsNumerator = scalarDenominator * inputDenominator;
31095
- const adjustedForDecimalsDenominator = scalarNumerator * inputNumerator;
31096
- const price0to1 = Number(
31097
- formatUnits(
31098
- adjustedForDecimalsDenominator * BASE_MULTI / adjustedForDecimalsNumerator,
31099
- 18
31100
- // normalize amount to 18
31101
- )
31102
- );
31103
- return price0to1;
31104
- }
31105
- var parseUniswapV3results = (data, chainId, prices) => {
31106
- switch (chainId) {
31107
- case Chain.HEMI_NETWORK: {
31108
- let uniswapData = {};
31109
- if (data.length > 0) {
31110
- const sqrtPriceX96 = data[0];
31111
- const price = getV3PriceFromSqrt(sqrtPriceX96, 18, 6);
31112
- uniswapData["Hemi::HEMI"] = price;
31113
- }
31114
- return uniswapData;
31115
- }
31116
- case Chain.BASE: {
31117
- let uniswapData = {};
31118
- if (data.length > 0) {
31119
- const sqrtPriceX96 = data[0];
31120
- const price = getV3PriceFromSqrt(sqrtPriceX96, 18, 18);
31121
- uniswapData["Metronome Synth ETH::msETH"] = prices["ETH"] / price;
31122
- }
31123
- return uniswapData;
31124
- }
31125
- default:
31126
- return {};
31127
- }
31128
- };
31129
- var getAaveCalls = (query2) => {
31130
- if (query2.length === 0) return [];
31131
- return query2.map(({ oracle, assets }) => ({
31132
- address: oracle,
31133
- name: "getAssetsPrices",
31134
- params: [assets]
31135
- })).flat();
31136
- };
31137
- var getMorphoCalls = (query2 = []) => {
31138
- if (query2.length === 0) return [];
31139
- return query2.map(({ oracle }) => ({
31140
- address: oracle,
31141
- name: "price",
31142
- params: []
31143
- }));
31144
- };
31145
- var getChainLinkCalls = (chainId) => {
31146
- switch (chainId) {
31147
- case Chain.MANTLE:
31148
- return [[], []];
31149
- default: {
31150
- const keys = getChainLinkKeys(chainId).filter(
31151
- (k) => k.split("-")[1] === "USD"
31152
- );
31153
- const addresses = keys.map((k) => chainlinkOracles[k][chainId]);
31154
- return [
31155
- addresses.map((tk) => {
31156
- return {
31157
- address: tk,
31158
- name: "latestRoundData",
31159
- params: []
31160
- };
31161
- }),
31162
- keys.map((k) => k.split("-")[0])
31163
- ];
31164
- }
31165
- }
31166
- };
31167
- var parseUniswapV2results = (data, chainId, prices) => {
31168
- switch (chainId) {
31169
- case Chain.MANTLE: {
31170
- let uniswapData = {};
31171
- if (data.length > 0) {
31172
- const reserves = data[1];
31173
- const lendleReserve = Number(parseRawAmount(reserves[0].toString(), 18));
31174
- const wmntReserve = Number(parseRawAmount(reserves[1].toString(), 18));
31175
- const auReserves = data[2];
31176
- const auReserve = Number(parseRawAmount(auReserves[1].toString(), 18));
31177
- const wmntReserve_au = Number(
31178
- parseRawAmount(auReserves[0].toString(), 18)
31179
- );
31180
- const reservesWmntUsdt = data[0];
31181
- const usdtReserve = Number(
31182
- parseRawAmount(reservesWmntUsdt[0].toString(), 6)
31183
- );
31184
- const wmnt2Reserve = Number(
31185
- parseRawAmount(reservesWmntUsdt[1].toString(), 18)
31186
- );
31187
- const lendPrice = wmntReserve / lendleReserve / wmnt2Reserve * usdtReserve;
31188
- const auPrice = wmntReserve_au / auReserve / wmnt2Reserve * usdtReserve;
31189
- uniswapData["LEND"] = lendPrice;
31190
- uniswapData["AU"] = auPrice;
31191
- }
31192
- return uniswapData;
31193
- }
31194
- case Chain.HYPEREVM: {
31195
- const reserves = data[0];
31196
- const hypeReserve = Number(parseRawAmount(reserves[0].toString(), 18));
31197
- const primeReserve = Number(parseRawAmount(reserves[1].toString(), 18));
31198
- return { "PrimeFi::PRFI": prices["HYPE"] * hypeReserve / primeReserve };
31199
- }
31200
- default:
31201
- return {};
31202
- }
31203
- };
31204
- function getExponentForOracle(chainId, fork) {
31205
- if (chainId === Chain.AVALANCHE_C_CHAIN || chainId === Chain.MODE) {
31206
- return 10n;
31207
- }
31208
- if (chainId === Chain.XDC_NETWORK) {
31209
- if (fork === Lender.FATHOM) return 0n;
31210
- }
31211
- if (fork === Lender.PRIME_FI) return 10n;
31212
- if (chainId === Chain.TELOS_EVM_MAINNET) return 10n;
31213
- if (chainId === Chain.SONIC_MAINNET && fork === Lender.POLTER) return 10n;
31214
- if (chainId === Chain.ARBITRUM_ONE && fork === Lender.RADIANT_V2) return 10n;
31215
- return AAVE_V2_LENDERS.includes(fork) ? 0n : 10n;
31216
- }
31217
- var parseAaveResults = (chainId, data, queries, list = {}, otherPrices = {}) => {
31218
- let prices = {};
31219
- function scaler() {
31220
- if (chainId !== Chain.KAIA_MAINNET) return (p, l) => p;
31221
- return (p, l) => {
31222
- const scale = l === Lender.KLAYBANK ? otherPrices["KAIA"] ?? prices["KAIA"] : 1;
31223
- return p * scale;
31224
- };
31225
- }
31226
- const getScale = scaler();
31227
- data.forEach((d, i) => {
31228
- if (d !== "0x") {
31229
- const details = queries[i];
31230
- details.assets.forEach((a, j) => {
31231
- const oracleId = list[a]?.assetGroup ?? chainId + "-" + a;
31232
- prices[oracleId] = getScale(
31233
- formatAavePrice(
31234
- d[j].toString(),
31235
- getExponentForOracle(chainId, details.fork)
31236
- ),
31237
- details.fork
31238
- );
31239
- });
31240
- }
31241
- });
31242
- return prices;
31243
- };
31244
- var parseMorphoResults = (chainId, data, queries, donePrices = {}, list = {}) => {
31245
- let prices = {};
31246
- data.forEach((d, i) => {
31247
- const details = queries[i];
31248
- const loanAsset = details?.loanAsset;
31249
- const collateralAsset = details?.collateralAsset;
31250
- const loanAssetDecimals = details?.loanAssetDecimals;
31251
- const collateralAssetDecimals = details?.collateralAssetDecimals;
31252
- const oracleId = list[loanAsset]?.assetGroup ?? chainId + "-" + loanAsset;
31253
- const debtPrice = donePrices[oracleId] ?? prices[oracleId];
31254
- const oracleIdCollateral = list[collateralAsset]?.assetGroup ?? chainId + "-" + collateralAsset;
31255
- const collateralPrice = donePrices[oracleIdCollateral] ?? prices[oracleIdCollateral];
31256
- const priceDebtToCollateral = formatMorphoPrice(
31257
- d.toString(),
31258
- loanAssetDecimals,
31259
- collateralAssetDecimals
31260
- );
31261
- if (debtPrice) {
31262
- if (!prices[oracleIdCollateral] && !donePrices[oracleIdCollateral]) {
31263
- prices[oracleIdCollateral] = priceDebtToCollateral * debtPrice;
31264
- }
31265
- } else {
31266
- if (collateralPrice) {
31267
- if (!prices[oracleId] && !donePrices[oracleId]) {
31268
- prices[oracleId] = collateralPrice / priceDebtToCollateral;
31269
- }
31270
- }
31271
- }
31272
- });
31273
- return prices;
31274
- };
31275
- var parseListaResults = (chainId, data, queries, donePrices = {}, list = {}) => {
31276
- let prices = {};
31277
- data.forEach((d, i) => {
31278
- const details = queries[i];
31279
- const asset = details?.asset;
31280
- const oracleId = list[asset]?.assetGroup ?? chainId + "-" + asset;
31281
- if (!donePrices[oracleId]) prices[oracleId] = formatUnits(d, 8);
31282
- });
31283
- return prices;
31284
- };
31285
- var parseChainLinkResults = (chainId, data, assetName) => {
31286
- switch (chainId) {
31287
- default: {
31288
- return Object.assign(
31289
- {},
31290
- ...data.map((entry, index) => {
31291
- return {
31292
- [assetName[index]]: Number(
31293
- parseRawAmount(
31294
- entry?.[1 /* answer */]?.toString() ?? "0",
31295
- 8
31296
- )
31297
- )
31298
- };
31299
- })
31300
- );
31301
- }
31302
- }
31303
- };
31304
- var getApi3Calls = (chainId) => {
31305
- switch (chainId) {
31306
- case Chain.MANTLE: {
31307
- const keys = ["WETH", "METH", "FBTC", "CMETH"];
31308
- const addresses = keys.map((k) => api3OracleAddresses[chainId][k]);
31309
- return [
31310
- addresses.map((tk) => {
31311
- return {
31312
- address: tk,
31313
- name: "read",
31314
- params: []
31315
- };
31316
- }),
31317
- keys
31318
- ];
31319
- }
31320
- default:
31321
- return [[], []];
31322
- }
31323
- };
31324
- var parseApi3Results = (chainId, data, assetName) => {
31325
- switch (chainId) {
31326
- case Chain.MANTLE: {
31327
- let prices = Object.assign(
31328
- {},
31329
- ...data.map((entry, index) => {
31330
- return {
31331
- [assetName[index]]: Number(
31332
- parseRawAmount(entry?.[0]?.toString() ?? "0", 18)
31333
- )
31334
- };
31335
- })
31336
- );
31337
- prices["METH"] = prices["METH"] * prices["WETH"];
31338
- prices["CMETH"] = prices["CMETH"] * prices["METH"];
31339
- return prices;
31340
- }
31341
- default: {
31342
- return {};
31343
- }
31344
- }
31345
- };
31346
- var getRWADynamicOracleCalls = (chainId) => {
31347
- switch (chainId) {
31348
- case Chain.MANTLE: {
31349
- const keys = ["USDY_MUSD"];
31350
- return [
31351
- [
31352
- {
31353
- address: RWA_DYNAMIC_ORACLE,
31354
- name: "getPrice",
31355
- params: []
31356
- }
31357
- ],
31358
- keys
31359
- ];
31360
- }
31361
- default:
31362
- return [[], []];
31363
- }
31364
- };
31365
- var parseRWADynamicOracleResults = (chainId, data, assetName) => {
31366
- switch (chainId) {
31367
- case Chain.MANTLE: {
31368
- let prices = Object.assign(
31369
- {},
31370
- ...data.map((entry, index) => {
31371
- return {
31372
- [assetName[index]]: Number(
31373
- parseRawAmount(entry?.toString() ?? "0", 18)
31374
- )
31375
- };
31376
- })
31377
- );
31378
- return prices;
31379
- }
31380
- default: {
31381
- return {};
31382
- }
31383
- }
31384
- };
31385
-
31386
- // src/prices/oracle-prices/fetchers/aave.ts
31387
- function getAaveLendersForChain(chainId) {
31388
- const oracles = aaveOracles() ?? {};
31389
- const reserves = aaveReserves() ?? {};
31390
- const lenders = [];
31391
- for (const [lender, chains] of Object.entries(oracles)) {
31392
- if (chains[chainId] && reserves[lender]?.[chainId]?.length > 0) {
31393
- lenders.push(lender);
31394
- }
31395
- }
31396
- return lenders;
31397
- }
31398
- function getAaveCalls2(chainId) {
31399
- const lenders = getAaveLendersForChain(chainId);
31400
- const oracles = aaveOracles() ?? {};
31401
- const reserves = aaveReserves() ?? {};
31402
- const results = [];
31403
- for (const lender of lenders) {
31404
- const oracle = oracles[lender]?.[chainId];
31405
- const assets = reserves[lender]?.[chainId] ?? [];
31406
- if (!oracle || assets.length === 0) continue;
31407
- const calls = [];
31408
- calls.push({
31409
- address: oracle,
31410
- name: "BASE_CURRENCY_UNIT",
31411
- params: []
31412
- });
31413
- for (const asset of assets) {
31414
- calls.push({
31415
- address: oracle,
31416
- name: "getAssetPrice",
31417
- params: [asset]
31418
- });
31419
- }
31420
- const config = aaveOraclesConfig() ?? {};
31421
- const lenderOverride = config[lender]?.[chainId];
31422
- results.push({
31423
- calls,
31424
- meta: {
31425
- oracle,
31426
- assets,
31427
- fork: lender,
31428
- baseCurrencyUnitIndex: 0,
31429
- assetCallCount: assets.length,
31430
- baseAssetOverride: lenderOverride?.baseAsset,
31431
- baseCurrencyUnitOverride: lenderOverride?.baseCurrencyUnit ? BigInt(lenderOverride.baseCurrencyUnit) : void 0,
31432
- baseAssetSource: lenderOverride?.baseAssetSource
31433
- },
31434
- lender
31435
- });
31436
- }
31437
- return results;
31438
- }
31439
- function parseAaveResults2(data, meta, context) {
31440
- const { chainId, usdPrices, tokenList } = context;
31441
- const entries = [];
31442
- if (data.length === 0) return entries;
31443
- let baseCurrencyUnitValue = meta.baseCurrencyUnitOverride ?? data[meta.baseCurrencyUnitIndex];
31444
- if (!baseCurrencyUnitValue || baseCurrencyUnitValue === "0x") {
31445
- return entries;
31446
- }
31447
- let decimals;
31448
- try {
31449
- const baseCurrencyUnitBigInt = BigInt(baseCurrencyUnitValue.toString());
31450
- decimals = Math.round(Math.log10(Number(baseCurrencyUnitBigInt)));
31451
- } catch {
31452
- return entries;
31453
- }
31454
- let baseAssetUSD = 1;
31455
- if (meta.baseAssetOverride) {
31456
- const baseAssetLc = meta.baseAssetOverride.toLowerCase();
31457
- const baseOracleKey = tokenList?.[baseAssetLc]?.assetGroup ?? `${chainId}-${baseAssetLc}`;
31458
- baseAssetUSD = usdPrices[baseOracleKey] ?? usdPrices[baseAssetLc] ?? 1;
31459
- }
31460
- for (let i = 0; i < meta.assetCallCount; i++) {
31461
- const priceIndex = meta.baseCurrencyUnitIndex + 1 + i;
31462
- const rawPrice = data[priceIndex];
31463
- const asset = meta.assets[i];
31464
- if (rawPrice === void 0 || rawPrice === "0x" || !asset) continue;
31465
- try {
31466
- const rawPriceNum = Number(
31467
- formatUnits(BigInt(rawPrice.toString()), decimals)
31468
- );
31469
- if (isNaN(rawPriceNum) || rawPriceNum === 0) continue;
31470
- const priceUSD = rawPriceNum * baseAssetUSD;
31471
- const isBaseAsset = meta.baseAssetOverride && asset.toLowerCase() === meta.baseAssetOverride.toLowerCase();
31472
- entries.push({
31473
- asset: asset.toLowerCase(),
31474
- price: rawPriceNum,
31475
- // Raw price (in base asset terms)
31476
- priceUSD,
31477
- marketUid: createMarketUid(chainId, meta.fork, asset),
31478
- staticBase: isBaseAsset || void 0,
31479
- baseAsset: meta.baseAssetOverride
31480
- });
31481
- } catch {
31482
- continue;
31483
- }
31484
- }
31485
- return entries;
31486
- }
31487
- function getAaveAbi() {
31488
- return AaveOracleAbi;
31489
- }
31490
- var aaveFetcher = {
31491
- getCalls: getAaveCalls2,
31492
- parse: parseAaveResults2,
31493
- getAbi: getAaveAbi
31494
- };
31495
-
31496
28552
  // src/lending/public-data/morpho/fetchMorphoGoldsky.ts
31497
28553
  ({
31498
28554
  [Chain.SEI_NETWORK]: "https://api.goldsky.com/api/public/project_cmiergfbv4vma01vb642yaeam/subgraphs/morphoblue-sei/1.0.1/gn",
@@ -31533,7 +28589,7 @@ function getMorphoMarketsForChain(chainId, marketOverrides) {
31533
28589
  )
31534
28590
  }));
31535
28591
  }
31536
- function getMorphoCalls2(chainId, context) {
28592
+ function getMorphoCalls(chainId, context) {
31537
28593
  const queries = getMorphoMarketsForChain(chainId, context?.marketOverrides);
31538
28594
  if (queries.length === 0) return [];
31539
28595
  const oracleGroups = /* @__PURE__ */ new Map();
@@ -31557,7 +28613,7 @@ function getMorphoCalls2(chainId, context) {
31557
28613
  };
31558
28614
  });
31559
28615
  }
31560
- function parseMorphoResults2(data, meta, context) {
28616
+ function parseMorphoResults(data, meta, context) {
31561
28617
  const { chainId, usdPrices, tokenList } = context;
31562
28618
  const entries = [];
31563
28619
  const rawPrice = data[0];
@@ -31738,8 +28794,8 @@ function processMarketsToEntries(chainId, allMarkets, source) {
31738
28794
  return entries;
31739
28795
  }
31740
28796
  var morphoFetcher = {
31741
- getCalls: getMorphoCalls2,
31742
- parse: parseMorphoResults2,
28797
+ getCalls: getMorphoCalls,
28798
+ parse: parseMorphoResults,
31743
28799
  getAbi: getMorphoAbi
31744
28800
  };
31745
28801
  var SCALING_DECIMALS_OVERRIDES = {
@@ -31754,7 +28810,7 @@ var CompoundV2OracleAbi = [
31754
28810
  type: "function"
31755
28811
  }
31756
28812
  ];
31757
- function getCompoundV2Calls2(chainId) {
28813
+ function getCompoundV2Calls(chainId) {
31758
28814
  const oracles = compoundV2Oracles() ?? {};
31759
28815
  const tokenArrays = compoundV2TokenArray() ?? {};
31760
28816
  const results = [];
@@ -31786,7 +28842,7 @@ function getCompoundV2Calls2(chainId) {
31786
28842
  }
31787
28843
  return results;
31788
28844
  }
31789
- function parseCompoundV2Results2(data, meta, context) {
28845
+ function parseCompoundV2Results(data, meta, context) {
31790
28846
  const { tokenList } = context;
31791
28847
  const entries = [];
31792
28848
  data.forEach((rawResult, index) => {
@@ -31814,8 +28870,8 @@ function getCompoundV2Abi() {
31814
28870
  return CompoundV2OracleAbi;
31815
28871
  }
31816
28872
  var compoundV2Fetcher = {
31817
- getCalls: getCompoundV2Calls2,
31818
- parse: parseCompoundV2Results2,
28873
+ getCalls: getCompoundV2Calls,
28874
+ parse: parseCompoundV2Results,
31819
28875
  getAbi: getCompoundV2Abi
31820
28876
  };
31821
28877
  var ChainlinkAggregatorAbi = [
@@ -31976,7 +29032,7 @@ function getListaCalls(chainId, context) {
31976
29032
  lender: generateListaLenderKey(markets[0].marketId)
31977
29033
  }];
31978
29034
  }
31979
- function parseListaResults2(data, meta, context) {
29035
+ function parseListaResults(data, meta, context) {
31980
29036
  const entries = [];
31981
29037
  for (const market of meta.markets) {
31982
29038
  const oracleLc = market.oracle.toLowerCase();
@@ -32014,7 +29070,7 @@ function getListaAbi() {
32014
29070
  }
32015
29071
  var listaFetcher = {
32016
29072
  getCalls: getListaCalls,
32017
- parse: parseListaResults2,
29073
+ parse: parseListaResults,
32018
29074
  getAbi: getListaAbi
32019
29075
  };
32020
29076
 
@@ -33618,6 +30674,6 @@ async function fetchTokenBalances(chainId, account, tokens, options = {}) {
33618
30674
  return parseTokenBalanceResult(rawResult, prepared.query);
33619
30675
  }
33620
30676
 
33621
- 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, fetchDefillamaData, fetchDefillamaHistData, fetchEulerSubAccountIndexes, fetchFlashLiquidityForChain, fetchGeneralYields, fetchGeneralYieldsByMarketUid, fetchMainPrices, fetchOraclePrices, fetchPendlePrices, fetchTokenBalances, fetchTokenMetadata, filterActiveLenders, filterLendersByProtocol, fuseLenderData, generateLendingPairs, generateLendingPools, getAavesForChain, getAssetConfig, getBalanceForMarketUid, getBorrowCapacity, getHealthFactor, getLenderAssets, getLenderPublicData, getLenderPublicDataAll, getLenderPublicDataViaApi, getLenderUserDataMulti, getLenderUserDataResult, getLendersForChain, getMaxAmountClose, getMaxAmountCollateralSwap, getMaxAmountDebtSwap, getMaxAmountOpen, getMergedUserData, getMorphoTypeMarketConverter, getSubAccountAddress, getSubAccountIndex, getTopPairs, keysFromMaps, multicall3Abi, nanTo, needsLenderApproval, needsTokenApproval, noOpResult, normalizeToBytes, parseBalanceFetcherResult, parseMergedResult, parseMulticallRpcResponses, parseRawRpcBatchResponses, parseRawRpcResponses, parseTokenBalanceResult, positivePart2 as positivePart, prepareLenderUserDataRpcCalls, prepareMergedMulticallParams, prepareMergedRpcCalls, prepareMulticallInputs, prepareTokenBalanceRpcCalls, selectAssetGroupPrices, unflattenLenderData };
30677
+ 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 };
33622
30678
  //# sourceMappingURL=index.js.map
33623
30679
  //# sourceMappingURL=index.js.map