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