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