@1delta/margin-fetcher 0.0.223 → 0.0.225

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