@1delta/margin-fetcher 0.0.242 → 0.0.245
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +533 -21
- package/dist/index.js.map +1 -1
- package/dist/lending/public-data/fetchLender.d.ts.map +1 -1
- package/dist/lending/public-data/gearbox/index.d.ts +3 -0
- package/dist/lending/public-data/gearbox/index.d.ts.map +1 -0
- package/dist/lending/public-data/gearbox/publicCallBuild.d.ts +17 -0
- package/dist/lending/public-data/gearbox/publicCallBuild.d.ts.map +1 -0
- package/dist/lending/public-data/gearbox/publicCallParse.d.ts +27 -0
- package/dist/lending/public-data/gearbox/publicCallParse.d.ts.map +1 -0
- package/dist/lending/user-data/abis.d.ts.map +1 -1
- package/dist/lending/user-data/fetch-balances/parse.d.ts.map +1 -1
- package/dist/lending/user-data/fetch-balances/prepare.d.ts.map +1 -1
- package/dist/lending/user-data/gearbox/index.d.ts +3 -0
- package/dist/lending/user-data/gearbox/index.d.ts.map +1 -0
- package/dist/lending/user-data/gearbox/userCallBuild.d.ts +19 -0
- package/dist/lending/user-data/gearbox/userCallBuild.d.ts.map +1 -0
- package/dist/lending/user-data/gearbox/userCallParse.d.ts +25 -0
- package/dist/lending/user-data/gearbox/userCallParse.d.ts.map +1 -0
- package/dist/prices/oracle-prices/fetchOraclePrices.d.ts.map +1 -1
- package/dist/prices/oracle-prices/fetchers/gearbox.d.ts +601 -0
- package/dist/prices/oracle-prices/fetchers/gearbox.d.ts.map +1 -0
- package/dist/prices/oracle-prices/fetchers/index.d.ts +2 -1
- package/dist/prices/oracle-prices/fetchers/index.d.ts.map +1 -1
- package/dist/prices/oracle-prices/fetchers/morpho.d.ts +9 -0
- package/dist/prices/oracle-prices/fetchers/morpho.d.ts.map +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/marketName.d.ts.map +1 -1
- package/dist/vaults/gearbox/fetchPublic.d.ts +23 -0
- package/dist/vaults/gearbox/fetchPublic.d.ts.map +1 -0
- package/dist/vaults/gearbox/index.d.ts +5 -0
- package/dist/vaults/gearbox/index.d.ts.map +1 -0
- package/dist/vaults/gearbox/publicCallBuild.d.ts +14 -0
- package/dist/vaults/gearbox/publicCallBuild.d.ts.map +1 -0
- package/dist/vaults/gearbox/publicCallParse.d.ts +13 -0
- package/dist/vaults/gearbox/publicCallParse.d.ts.map +1 -0
- package/dist/vaults/gearbox/types.d.ts +61 -0
- package/dist/vaults/gearbox/types.d.ts.map +1 -0
- package/dist/vaults/index.d.ts +1 -0
- package/dist/vaults/index.d.ts.map +1 -1
- package/package.json +6 -6
package/dist/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { parseAbi, formatEther, BaseError, encodeFunctionData, formatUnits, decodeFunctionResult, decodeAbiParameters, AbiEncodingLengthMismatchError, concatHex, isAddress, InvalidAddressError, pad, stringToHex, boolToHex, integerRegex, numberToHex, bytesRegex, BytesSizeMismatchError, arrayRegex, UnsupportedPackedAbiType } from './chunk-KQ6K6D2V.js';
|
|
2
2
|
import './chunk-BYTNVMX7.js';
|
|
3
3
|
import './chunk-PR4QN5HX.js';
|
|
4
|
-
import { Lender, isAaveType, isCompoundV3, isMultiMarket, isSiloV2Type, isSiloV3Type, isAaveV4Type, isInit, isMorphoType, isCompoundV2Type, isVenusType, isSumerType, AAVE_V3_LENDERS, AAVE_V2_LENDERS, isAaveV2Type, isAaveV32Type, isAaveV3Type, isEulerType, isFluid, isYLDR, isCompoundV3Type, isLista, isTectonicType, isBenqiType } from '@1delta/lender-registry';
|
|
4
|
+
import { Lender, isAaveType, isCompoundV3, isMultiMarket, isSiloV2Type, isSiloV3Type, isAaveV4Type, isInit, isMorphoType, isCompoundV2Type, isVenusType, isSumerType, AAVE_V3_LENDERS, AAVE_V2_LENDERS, isAaveV2Type, isAaveV32Type, isAaveV3Type, isEulerType, isFluid, isGearboxV3, 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
7
|
import { getEvmChain, getEvmClient, getEvmClientUniversal, multicallRetryUniversal } from '@1delta/providers';
|
|
8
|
-
import { FluidLendingResolverAbi, MorphoLensAbi, AaveV4SpokeAbi, AaveV4OracleAbi, AaveV4HubAbi, FluidVaultResolverAbi, MorphoBlueAbi } from '@1delta/abis';
|
|
8
|
+
import { FluidLendingResolverAbi, MorphoLensAbi, AaveV4SpokeAbi, AaveV4OracleAbi, AaveV4HubAbi, FluidVaultResolverAbi, GearboxDataCompressorV3Abi, 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, getSiloHalfForUnderlying, InitMarginAddresses } from '@1delta/calldata-sdk';
|
|
11
11
|
import { BALANCER_V2_FORKS, BALANCER_V3_FORKS, UNISWAP_V4_FORKS, isFlashLoanSourceExcluded, FLASH_LOAN_IDS } from '@1delta/dex-registry';
|
|
@@ -6283,7 +6283,8 @@ globalThis[GLOBAL_LENDER_DATA_KEY] = {
|
|
|
6283
6283
|
siloMarketsV3: {},
|
|
6284
6284
|
siloPeripheralsV3: {},
|
|
6285
6285
|
fluidResolvers: {},
|
|
6286
|
-
fluidVaults: {}
|
|
6286
|
+
fluidVaults: {},
|
|
6287
|
+
gearboxResolvers: {}
|
|
6287
6288
|
};
|
|
6288
6289
|
function getGlobalData2() {
|
|
6289
6290
|
return globalThis[GLOBAL_LENDER_DATA_KEY];
|
|
@@ -6312,6 +6313,7 @@ var aaveV4Oracles = () => getGlobalData2()?.aaveV4Oracles;
|
|
|
6312
6313
|
var siloMarkets = () => getGlobalData2()?.siloMarkets;
|
|
6313
6314
|
var siloMarketsV3 = () => getGlobalData2()?.siloMarketsV3;
|
|
6314
6315
|
var fluidResolvers = () => getGlobalData2()?.fluidResolvers;
|
|
6316
|
+
var gearboxResolvers = () => getGlobalData2()?.gearboxResolvers;
|
|
6315
6317
|
function aaveV4SpokeLenderKey(spoke) {
|
|
6316
6318
|
if (!spoke || !spoke.startsWith("0x") || spoke.length !== 42) {
|
|
6317
6319
|
throw new Error(`aaveV4SpokeLenderKey: invalid spoke address ${spoke}`);
|
|
@@ -6363,6 +6365,14 @@ function getSiloV3MarketEntry(chainId, lenderKey) {
|
|
|
6363
6365
|
(m) => m.siloConfig.toLowerCase() === parsed.siloConfigAddrLower
|
|
6364
6366
|
);
|
|
6365
6367
|
}
|
|
6368
|
+
function gearboxV3LenderKey(creditManager) {
|
|
6369
|
+
if (!creditManager || !creditManager.startsWith("0x") || creditManager.length !== 42) {
|
|
6370
|
+
throw new Error(
|
|
6371
|
+
`gearboxV3LenderKey: invalid creditManager address ${creditManager}`
|
|
6372
|
+
);
|
|
6373
|
+
}
|
|
6374
|
+
return `GEARBOX_V3_${creditManager.slice(2).toUpperCase()}`;
|
|
6375
|
+
}
|
|
6366
6376
|
var getListUrl = (chainId) => `https://raw.githubusercontent.com/1delta-DAO/token-lists/main/${chainId}.json`;
|
|
6367
6377
|
async function fetchTokenList(chainId) {
|
|
6368
6378
|
const data = await fetch(getListUrl(chainId));
|
|
@@ -6407,6 +6417,7 @@ var LENDER_SHORT_NAMES = {
|
|
|
6407
6417
|
[Lender.EULER_V2]: "Euler V2",
|
|
6408
6418
|
[Lender.FLUID]: "Fluid",
|
|
6409
6419
|
[Lender.FLUX_FINANCE]: "Flux",
|
|
6420
|
+
[Lender.GEARBOX_V3]: "Gearbox V3",
|
|
6410
6421
|
[Lender.GRANARY]: "Granary",
|
|
6411
6422
|
[Lender.HANA]: "Hana",
|
|
6412
6423
|
[Lender.INIT]: "Init",
|
|
@@ -6416,7 +6427,7 @@ var LENDER_SHORT_NAMES = {
|
|
|
6416
6427
|
[Lender.MERIDIAN]: "Meridian"
|
|
6417
6428
|
};
|
|
6418
6429
|
function formatUnderscoreString(input) {
|
|
6419
|
-
const _in = input.replace("MORPHO_BLUE", "MB").replace(/^FLUID_/, "Fluid ");
|
|
6430
|
+
const _in = input.replace("MORPHO_BLUE", "MB").replace(/^FLUID_/, "Fluid ").replace(/^GEARBOX_V3_/, "Gearbox V3 ");
|
|
6420
6431
|
return _in.split("_").map((word, index) => {
|
|
6421
6432
|
if (index === 0) {
|
|
6422
6433
|
return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
|
|
@@ -6426,6 +6437,7 @@ function formatUnderscoreString(input) {
|
|
|
6426
6437
|
}
|
|
6427
6438
|
function lenderShortName(lender) {
|
|
6428
6439
|
if (lender?.startsWith("FLUID")) return "Fluid";
|
|
6440
|
+
if (lender?.startsWith("GEARBOX_V3")) return "Gearbox V3";
|
|
6429
6441
|
return LENDER_SHORT_NAMES[lender] ?? formatUnderscoreString(lender);
|
|
6430
6442
|
}
|
|
6431
6443
|
|
|
@@ -7610,6 +7622,9 @@ var getLendersForChain = (c) => {
|
|
|
7610
7622
|
if (fluidResolvers()?.[c]) {
|
|
7611
7623
|
lenders.push(Lender.FLUID);
|
|
7612
7624
|
}
|
|
7625
|
+
if (gearboxResolvers()?.[c]) {
|
|
7626
|
+
lenders.push(Lender.GEARBOX_V3);
|
|
7627
|
+
}
|
|
7613
7628
|
return lenders;
|
|
7614
7629
|
};
|
|
7615
7630
|
var filterLendersByProtocol = (allLenders, protocolList) => {
|
|
@@ -7619,8 +7634,9 @@ var filterLendersByProtocol = (allLenders, protocolList) => {
|
|
|
7619
7634
|
const hasMorpho = protocolList.includes(Lender.MORPHO_BLUE);
|
|
7620
7635
|
const hasMoolah = protocolList.includes(Lender.LISTA_DAO);
|
|
7621
7636
|
const hasFluid = protocolList.includes(Lender.FLUID);
|
|
7637
|
+
const hasGearboxV3 = protocolList.includes(Lender.GEARBOX_V3);
|
|
7622
7638
|
return allLenders.filter(
|
|
7623
|
-
(lender) => protocolList.includes(lender) || hasMorpho && lender?.startsWith("MORPHO_BLUE") || hasMoolah && lender?.startsWith("LISTA_DAO") || hasFluid && lender?.startsWith("FLUID")
|
|
7639
|
+
(lender) => protocolList.includes(lender) || hasMorpho && lender?.startsWith("MORPHO_BLUE") || hasMoolah && lender?.startsWith("LISTA_DAO") || hasFluid && lender?.startsWith("FLUID") || hasGearboxV3 && lender?.startsWith("GEARBOX_V3")
|
|
7624
7640
|
);
|
|
7625
7641
|
};
|
|
7626
7642
|
var getAavesForChain = () => {
|
|
@@ -18867,7 +18883,7 @@ var getSiloV2ReservesDataConverter = (lender, chainId, prices, additionalYields,
|
|
|
18867
18883
|
{ self: market.silo0, other: market.silo1 },
|
|
18868
18884
|
{ self: market.silo1, other: market.silo0 }
|
|
18869
18885
|
];
|
|
18870
|
-
const
|
|
18886
|
+
const toBigInt9 = (v) => {
|
|
18871
18887
|
if (v === void 0 || v === null || v === "0x") return 0n;
|
|
18872
18888
|
if (typeof v === "bigint") return v;
|
|
18873
18889
|
try {
|
|
@@ -18879,8 +18895,8 @@ var getSiloV2ReservesDataConverter = (lender, chainId, prices, additionalYields,
|
|
|
18879
18895
|
for (let s = 0; s < 2; s++) {
|
|
18880
18896
|
const { self, other } = sides[s];
|
|
18881
18897
|
const slot = s * SILO_V2_CALLS_PER_SIDE;
|
|
18882
|
-
const totalAssetsRaw =
|
|
18883
|
-
const debtAssetsRaw =
|
|
18898
|
+
const totalAssetsRaw = toBigInt9(data[slot]);
|
|
18899
|
+
const debtAssetsRaw = toBigInt9(data[slot + 1]);
|
|
18884
18900
|
const irmConfigRaw = data[slot + 2];
|
|
18885
18901
|
const decimals = self.decimals;
|
|
18886
18902
|
const totalDeposits = Number(formatUnits(totalAssetsRaw, decimals));
|
|
@@ -19035,7 +19051,7 @@ var getSiloV3ReservesDataConverter = (lender, chainId, prices, additionalYields,
|
|
|
19035
19051
|
{ self: market.silo0, other: market.silo1 },
|
|
19036
19052
|
{ self: market.silo1, other: market.silo0 }
|
|
19037
19053
|
];
|
|
19038
|
-
const
|
|
19054
|
+
const toBigInt9 = (v) => {
|
|
19039
19055
|
if (v === void 0 || v === null || v === "0x") return 0n;
|
|
19040
19056
|
if (typeof v === "bigint") return v;
|
|
19041
19057
|
try {
|
|
@@ -19047,8 +19063,8 @@ var getSiloV3ReservesDataConverter = (lender, chainId, prices, additionalYields,
|
|
|
19047
19063
|
for (let s = 0; s < 2; s++) {
|
|
19048
19064
|
const { self, other } = sides[s];
|
|
19049
19065
|
const slot = s * SILO_V3_CALLS_PER_SIDE;
|
|
19050
|
-
const totalAssetsRaw =
|
|
19051
|
-
const debtAssetsRaw =
|
|
19066
|
+
const totalAssetsRaw = toBigInt9(data[slot]);
|
|
19067
|
+
const debtAssetsRaw = toBigInt9(data[slot + 1]);
|
|
19052
19068
|
const irmConfigRaw = data[slot + 2];
|
|
19053
19069
|
const decimals = self.decimals;
|
|
19054
19070
|
const totalDeposits = Number(formatUnits(totalAssetsRaw, decimals));
|
|
@@ -19354,6 +19370,203 @@ function parseVault(vault, chainId, prices, additionalYields, tokenList) {
|
|
|
19354
19370
|
}
|
|
19355
19371
|
};
|
|
19356
19372
|
}
|
|
19373
|
+
|
|
19374
|
+
// src/lending/public-data/gearbox/publicCallBuild.ts
|
|
19375
|
+
var buildGearboxCall = (chainId, _lender) => {
|
|
19376
|
+
const resolvers = gearboxResolvers()?.[chainId];
|
|
19377
|
+
if (!resolvers?.dataCompressor) return [];
|
|
19378
|
+
return [
|
|
19379
|
+
{
|
|
19380
|
+
address: resolvers.dataCompressor,
|
|
19381
|
+
name: "getPoolsV3List",
|
|
19382
|
+
params: []
|
|
19383
|
+
},
|
|
19384
|
+
{
|
|
19385
|
+
address: resolvers.dataCompressor,
|
|
19386
|
+
name: "getCreditManagersV3List",
|
|
19387
|
+
params: []
|
|
19388
|
+
}
|
|
19389
|
+
];
|
|
19390
|
+
};
|
|
19391
|
+
|
|
19392
|
+
// src/lending/public-data/gearbox/publicCallParse.ts
|
|
19393
|
+
var RAY_TO_PERCENT = 1e25;
|
|
19394
|
+
var scaleGearboxRate = (raw) => {
|
|
19395
|
+
if (raw === void 0 || raw === null) return 0;
|
|
19396
|
+
return Number(raw) / RAY_TO_PERCENT;
|
|
19397
|
+
};
|
|
19398
|
+
var getGearboxV3PublicDataConverter = (_lender, chainId, prices, additionalYields, tokenList = {}) => {
|
|
19399
|
+
const expectedNumberOfCalls = 2;
|
|
19400
|
+
return [
|
|
19401
|
+
(data) => {
|
|
19402
|
+
if (data.length !== expectedNumberOfCalls) return void 0;
|
|
19403
|
+
const [poolsData, cmsData] = data;
|
|
19404
|
+
const out = {};
|
|
19405
|
+
const poolByAddr = {};
|
|
19406
|
+
for (const pool of poolsData ?? []) {
|
|
19407
|
+
const addr = (pool.addr ?? "").toString().toLowerCase();
|
|
19408
|
+
if (!addr) continue;
|
|
19409
|
+
poolByAddr[addr] = pool;
|
|
19410
|
+
}
|
|
19411
|
+
for (const cm of cmsData ?? []) {
|
|
19412
|
+
const cmAddr = (cm.addr ?? "").toString().toLowerCase();
|
|
19413
|
+
if (!cmAddr) continue;
|
|
19414
|
+
const poolAddr = (cm.pool ?? "").toString().toLowerCase();
|
|
19415
|
+
const pool = poolByAddr[poolAddr];
|
|
19416
|
+
if (!pool) continue;
|
|
19417
|
+
if (pool.isPaused) continue;
|
|
19418
|
+
const rawPoolUnderlying = (cm.underlying ?? pool.underlying ?? "").toString().toLowerCase();
|
|
19419
|
+
if (!rawPoolUnderlying) continue;
|
|
19420
|
+
const underlying = rawPoolUnderlying;
|
|
19421
|
+
const underlyingMeta = tokenList[underlying];
|
|
19422
|
+
const underlyingDecimals = Number(underlyingMeta?.decimals ?? 18);
|
|
19423
|
+
const supplyRate = scaleGearboxRate(pool.supplyRate);
|
|
19424
|
+
const borrowRate = scaleGearboxRate(
|
|
19425
|
+
cm.baseBorrowRate ?? pool.baseInterestRate
|
|
19426
|
+
);
|
|
19427
|
+
const underlyingPriceKey = toOracleKey(underlyingMeta?.assetGroup) ?? toGenericPriceKey(underlying, chainId);
|
|
19428
|
+
const underlyingPrice = prices[underlyingPriceKey] ?? 0;
|
|
19429
|
+
let lender;
|
|
19430
|
+
try {
|
|
19431
|
+
lender = gearboxV3LenderKey(cmAddr);
|
|
19432
|
+
} catch {
|
|
19433
|
+
continue;
|
|
19434
|
+
}
|
|
19435
|
+
const availableToBorrow = Number(
|
|
19436
|
+
parseRawAmount(
|
|
19437
|
+
cm.availableToBorrow?.toString(),
|
|
19438
|
+
underlyingDecimals
|
|
19439
|
+
)
|
|
19440
|
+
);
|
|
19441
|
+
const totalDebtCm = Number(
|
|
19442
|
+
parseRawAmount(cm.totalDebt?.toString(), underlyingDecimals)
|
|
19443
|
+
);
|
|
19444
|
+
const data2 = {};
|
|
19445
|
+
const loanMarketUid = createMarketUid(chainId, lender, underlying);
|
|
19446
|
+
data2[loanMarketUid] = {
|
|
19447
|
+
marketUid: loanMarketUid,
|
|
19448
|
+
name: "Loan " + (underlyingMeta?.symbol ?? pool.symbol ?? ""),
|
|
19449
|
+
poolId: underlying,
|
|
19450
|
+
underlying,
|
|
19451
|
+
asset: underlyingMeta,
|
|
19452
|
+
totalDeposits: 0,
|
|
19453
|
+
totalDebtStable: 0,
|
|
19454
|
+
totalDebt: totalDebtCm,
|
|
19455
|
+
totalLiquidity: availableToBorrow,
|
|
19456
|
+
borrowLiquidity: availableToBorrow,
|
|
19457
|
+
totalDepositsUSD: 0,
|
|
19458
|
+
totalDebtStableUSD: 0,
|
|
19459
|
+
totalDebtUSD: totalDebtCm * underlyingPrice,
|
|
19460
|
+
totalLiquidityUSD: availableToBorrow * underlyingPrice,
|
|
19461
|
+
borrowLiquidityUSD: availableToBorrow * underlyingPrice,
|
|
19462
|
+
utilization: 0,
|
|
19463
|
+
depositRate: supplyRate,
|
|
19464
|
+
variableBorrowRate: borrowRate,
|
|
19465
|
+
stableBorrowRate: 0,
|
|
19466
|
+
intrinsicYield: additionalYields?.intrinsicYields?.[underlyingPriceKey] ?? 0,
|
|
19467
|
+
rewards: [],
|
|
19468
|
+
decimals: underlyingDecimals,
|
|
19469
|
+
config: {
|
|
19470
|
+
"0": {
|
|
19471
|
+
category: 0,
|
|
19472
|
+
borrowCollateralFactor: 0,
|
|
19473
|
+
collateralFactor: 0,
|
|
19474
|
+
borrowFactor: 1,
|
|
19475
|
+
collateralDisabled: true,
|
|
19476
|
+
debtDisabled: false
|
|
19477
|
+
}
|
|
19478
|
+
},
|
|
19479
|
+
liquidationBonus: 0,
|
|
19480
|
+
collateralActive: false,
|
|
19481
|
+
borrowingEnabled: true,
|
|
19482
|
+
depositsEnabled: false,
|
|
19483
|
+
hasStable: false,
|
|
19484
|
+
isActive: true,
|
|
19485
|
+
isFrozen: false
|
|
19486
|
+
};
|
|
19487
|
+
const collateralTokens = Array.isArray(cm.collateralTokens) ? cm.collateralTokens : [];
|
|
19488
|
+
const liquidationThresholds = Array.isArray(
|
|
19489
|
+
cm.liquidationThresholds
|
|
19490
|
+
) ? cm.liquidationThresholds : [];
|
|
19491
|
+
for (let i = 0; i < collateralTokens.length; i++) {
|
|
19492
|
+
const rawToken = (collateralTokens[i] ?? "").toString().toLowerCase();
|
|
19493
|
+
if (!rawToken) continue;
|
|
19494
|
+
const token = rawToken;
|
|
19495
|
+
const ltRaw = Number(liquidationThresholds[i] ?? 0);
|
|
19496
|
+
const lt = ltRaw / BPS;
|
|
19497
|
+
if (lt <= 0) continue;
|
|
19498
|
+
const ctMeta = tokenList[token];
|
|
19499
|
+
const ctDecimals = Number(ctMeta?.decimals ?? 18);
|
|
19500
|
+
const ctPriceKey = toOracleKey(ctMeta?.assetGroup) ?? toGenericPriceKey(token, chainId);
|
|
19501
|
+
const colMarketUid = createMarketUid(chainId, lender, token);
|
|
19502
|
+
if (colMarketUid === loanMarketUid) continue;
|
|
19503
|
+
data2[colMarketUid] = {
|
|
19504
|
+
marketUid: colMarketUid,
|
|
19505
|
+
name: "Collateral " + (ctMeta?.symbol ?? ""),
|
|
19506
|
+
poolId: token,
|
|
19507
|
+
underlying: token,
|
|
19508
|
+
asset: ctMeta,
|
|
19509
|
+
totalDeposits: 0,
|
|
19510
|
+
totalDebtStable: 0,
|
|
19511
|
+
totalDebt: 0,
|
|
19512
|
+
totalLiquidity: 0,
|
|
19513
|
+
borrowLiquidity: 0,
|
|
19514
|
+
totalDepositsUSD: 0,
|
|
19515
|
+
totalDebtStableUSD: 0,
|
|
19516
|
+
totalDebtUSD: 0,
|
|
19517
|
+
totalLiquidityUSD: 0,
|
|
19518
|
+
borrowLiquidityUSD: 0,
|
|
19519
|
+
utilization: 0,
|
|
19520
|
+
depositRate: 0,
|
|
19521
|
+
variableBorrowRate: 0,
|
|
19522
|
+
stableBorrowRate: 0,
|
|
19523
|
+
intrinsicYield: additionalYields?.intrinsicYields?.[ctPriceKey] ?? 0,
|
|
19524
|
+
rewards: [],
|
|
19525
|
+
decimals: ctDecimals,
|
|
19526
|
+
config: {
|
|
19527
|
+
"0": {
|
|
19528
|
+
category: 0,
|
|
19529
|
+
borrowCollateralFactor: lt,
|
|
19530
|
+
collateralFactor: lt,
|
|
19531
|
+
borrowFactor: 1,
|
|
19532
|
+
collateralDisabled: false,
|
|
19533
|
+
debtDisabled: true
|
|
19534
|
+
}
|
|
19535
|
+
},
|
|
19536
|
+
liquidationBonus: 0,
|
|
19537
|
+
collateralActive: true,
|
|
19538
|
+
borrowingEnabled: false,
|
|
19539
|
+
depositsEnabled: false,
|
|
19540
|
+
hasStable: false,
|
|
19541
|
+
isActive: true,
|
|
19542
|
+
isFrozen: false
|
|
19543
|
+
};
|
|
19544
|
+
}
|
|
19545
|
+
out[lender] = {
|
|
19546
|
+
data: data2,
|
|
19547
|
+
params: {
|
|
19548
|
+
creditManager: {
|
|
19549
|
+
lender,
|
|
19550
|
+
creditManager: cmAddr,
|
|
19551
|
+
creditFacade: (cm.creditFacade ?? "").toString().toLowerCase(),
|
|
19552
|
+
pool: poolAddr,
|
|
19553
|
+
underlying,
|
|
19554
|
+
underlyingDecimals,
|
|
19555
|
+
minDebt: cm.minDebt?.toString() ?? "0",
|
|
19556
|
+
maxDebt: cm.maxDebt?.toString() ?? "0",
|
|
19557
|
+
degenNFT: (cm.degenNFT ?? zeroAddress).toString().toLowerCase(),
|
|
19558
|
+
forbiddenTokenMask: cm.forbiddenTokenMask?.toString() ?? "0",
|
|
19559
|
+
isDegenMode: !!cm.isDegenMode
|
|
19560
|
+
}
|
|
19561
|
+
},
|
|
19562
|
+
chainId
|
|
19563
|
+
};
|
|
19564
|
+
}
|
|
19565
|
+
return out;
|
|
19566
|
+
},
|
|
19567
|
+
expectedNumberOfCalls
|
|
19568
|
+
];
|
|
19569
|
+
};
|
|
19357
19570
|
function getMorphoTypeMarketConverter(lender, chainId, prices, additionalYields, tokenList = {}, marketsOverride) {
|
|
19358
19571
|
if (lender.startsWith("LISTA_DAO"))
|
|
19359
19572
|
return getListaMarketDataConverter(
|
|
@@ -19391,6 +19604,7 @@ function buildLenderCall(chainId, lender) {
|
|
|
19391
19604
|
if (isSiloV2Type(lender)) return buildSiloV2LenderReserveCall(chainId, lender);
|
|
19392
19605
|
if (isSiloV3Type(lender)) return buildSiloV3LenderReserveCall(chainId, lender);
|
|
19393
19606
|
if (isFluid(lender)) return buildFluidCall(chainId);
|
|
19607
|
+
if (isGearboxV3(lender)) return buildGearboxCall(chainId);
|
|
19394
19608
|
return [];
|
|
19395
19609
|
}
|
|
19396
19610
|
function getLenderDataConverter(lender, chainId, prices, additionalYields, tokenList = {}) {
|
|
@@ -19483,6 +19697,14 @@ function getLenderDataConverter(lender, chainId, prices, additionalYields, token
|
|
|
19483
19697
|
additionalYields,
|
|
19484
19698
|
tokenList
|
|
19485
19699
|
);
|
|
19700
|
+
if (isGearboxV3(lender))
|
|
19701
|
+
return getGearboxV3PublicDataConverter(
|
|
19702
|
+
lender,
|
|
19703
|
+
chainId,
|
|
19704
|
+
prices,
|
|
19705
|
+
additionalYields,
|
|
19706
|
+
tokenList
|
|
19707
|
+
);
|
|
19486
19708
|
return [() => null, 0];
|
|
19487
19709
|
}
|
|
19488
19710
|
var getAbi = (lender) => {
|
|
@@ -19509,6 +19731,8 @@ var getAbi = (lender) => {
|
|
|
19509
19731
|
return [...SiloAbi, ...SiloLensAbi, ...InterestRateModelV2Abi];
|
|
19510
19732
|
if (isFluid(lender))
|
|
19511
19733
|
return [...FluidVaultResolverAbi];
|
|
19734
|
+
if (isGearboxV3(lender))
|
|
19735
|
+
return [...GearboxDataCompressorV3Abi];
|
|
19512
19736
|
if (isSumerType(lender)) return [...SumerLensAbi, ...SumerComptrollerAbi];
|
|
19513
19737
|
if (lender === Lender.TAKARA) return [...TakaraMarketStateAbi];
|
|
19514
19738
|
if (isCompoundV2Type(lender)) return VenusLensAbi;
|
|
@@ -20741,6 +20965,22 @@ var buildFluidUserCall = (chainId, _lender, account) => {
|
|
|
20741
20965
|
];
|
|
20742
20966
|
};
|
|
20743
20967
|
|
|
20968
|
+
// src/lending/user-data/gearbox/userCallBuild.ts
|
|
20969
|
+
var GEARBOX_V3_USER_CALL_COUNT = 1;
|
|
20970
|
+
var buildGearboxV3UserCall = (chainId, _lender, account) => {
|
|
20971
|
+
const resolvers = gearboxResolvers()?.[chainId];
|
|
20972
|
+
if (!resolvers?.dataCompressor) return [];
|
|
20973
|
+
return [
|
|
20974
|
+
{
|
|
20975
|
+
address: resolvers.dataCompressor,
|
|
20976
|
+
name: "getCreditAccountsByBorrower",
|
|
20977
|
+
// Second arg is `PriceOnDemand[] priceUpdates` — empty means
|
|
20978
|
+
// "use the current on-chain feed quotes for healthFactor".
|
|
20979
|
+
params: [account, []]
|
|
20980
|
+
}
|
|
20981
|
+
];
|
|
20982
|
+
};
|
|
20983
|
+
|
|
20744
20984
|
// src/lending/user-data/fetch-balances/prepare.ts
|
|
20745
20985
|
async function buildUserCall(chainId, lender, account, params) {
|
|
20746
20986
|
if (isAaveV4Type(lender)) return buildAaveV4UserCall(chainId, lender, account);
|
|
@@ -20761,6 +21001,8 @@ async function buildUserCall(chainId, lender, account, params) {
|
|
|
20761
21001
|
return buildCompoundV2UserCall(chainId, lender, account);
|
|
20762
21002
|
if (isFluid(lender))
|
|
20763
21003
|
return buildFluidUserCall(chainId, lender, account);
|
|
21004
|
+
if (isGearboxV3(lender))
|
|
21005
|
+
return buildGearboxV3UserCall(chainId, lender, account);
|
|
20764
21006
|
return [];
|
|
20765
21007
|
}
|
|
20766
21008
|
function organizeUserQueries(queries) {
|
|
@@ -22624,6 +22866,169 @@ var getFluidUserDataConverter = (lender, chainId, account, meta) => {
|
|
|
22624
22866
|
];
|
|
22625
22867
|
};
|
|
22626
22868
|
|
|
22869
|
+
// src/lending/user-data/gearbox/userCallParse.ts
|
|
22870
|
+
function toBigInt8(v) {
|
|
22871
|
+
if (v === void 0 || v === null || v === "0x") return 0n;
|
|
22872
|
+
if (typeof v === "bigint") return v;
|
|
22873
|
+
try {
|
|
22874
|
+
return BigInt(v);
|
|
22875
|
+
} catch {
|
|
22876
|
+
return 0n;
|
|
22877
|
+
}
|
|
22878
|
+
}
|
|
22879
|
+
var getGearboxV3UserDataConverter = (_lender, chainId, account, meta) => {
|
|
22880
|
+
return [
|
|
22881
|
+
(data) => {
|
|
22882
|
+
if (!data || data.length !== GEARBOX_V3_USER_CALL_COUNT) return void 0;
|
|
22883
|
+
const creditAccounts = data[0];
|
|
22884
|
+
if (!Array.isArray(creditAccounts) || creditAccounts.length === 0)
|
|
22885
|
+
return void 0;
|
|
22886
|
+
const perCM = /* @__PURE__ */ new Map();
|
|
22887
|
+
for (const ca of creditAccounts) {
|
|
22888
|
+
if (!ca?.isSuccessful) continue;
|
|
22889
|
+
const cm = (ca.creditManager ?? "").toString().toLowerCase();
|
|
22890
|
+
if (!cm) continue;
|
|
22891
|
+
if (!perCM.has(cm)) perCM.set(cm, []);
|
|
22892
|
+
perCM.get(cm).push(ca);
|
|
22893
|
+
}
|
|
22894
|
+
if (perCM.size === 0) return void 0;
|
|
22895
|
+
const out = {};
|
|
22896
|
+
for (const [cmAddr, accounts] of perCM) {
|
|
22897
|
+
let lenderKey;
|
|
22898
|
+
try {
|
|
22899
|
+
lenderKey = gearboxV3LenderKey(cmAddr);
|
|
22900
|
+
} catch {
|
|
22901
|
+
continue;
|
|
22902
|
+
}
|
|
22903
|
+
const metaMap = meta?.[lenderKey];
|
|
22904
|
+
if (!metaMap) continue;
|
|
22905
|
+
const firstCa = accounts[0];
|
|
22906
|
+
const rawUnderlying = (firstCa.underlying ?? "").toString().toLowerCase();
|
|
22907
|
+
const underlying = rawUnderlying;
|
|
22908
|
+
const loanMarketUid = createMarketUid(chainId, lenderKey, underlying);
|
|
22909
|
+
const loanMeta = metaMap[loanMarketUid];
|
|
22910
|
+
const loanDec = loanMeta?.asset?.decimals ?? 18;
|
|
22911
|
+
const loanDisplayPrice = loanMeta ? getDisplayPrice(loanMeta) : 0;
|
|
22912
|
+
const loanOraclePrice = loanMeta ? getOraclePrice(loanMeta) : 0;
|
|
22913
|
+
const loanPriceHist = loanMeta?.price?.priceUsd24h ?? loanDisplayPrice;
|
|
22914
|
+
const lendingPositions = {};
|
|
22915
|
+
const modes = {};
|
|
22916
|
+
const histData = {};
|
|
22917
|
+
for (const ca of accounts) {
|
|
22918
|
+
const caAddress = (ca.addr ?? "").toString().toLowerCase();
|
|
22919
|
+
if (!caAddress) continue;
|
|
22920
|
+
const debtRaw = toBigInt8(ca.debt);
|
|
22921
|
+
const balances = Array.isArray(ca.balances) ? ca.balances : [];
|
|
22922
|
+
const hasAnyBalance = balances.some(
|
|
22923
|
+
(b) => toBigInt8(b?.balance) > 0n
|
|
22924
|
+
);
|
|
22925
|
+
if (debtRaw === 0n && !hasAnyBalance) continue;
|
|
22926
|
+
modes[caAddress] = 0;
|
|
22927
|
+
const posData = {};
|
|
22928
|
+
let totalDepositsUSD = 0;
|
|
22929
|
+
for (const bal of balances) {
|
|
22930
|
+
const rawToken = (bal?.token ?? "").toString().toLowerCase();
|
|
22931
|
+
if (!rawToken) continue;
|
|
22932
|
+
const token = rawToken;
|
|
22933
|
+
const balRaw = toBigInt8(bal.balance);
|
|
22934
|
+
if (balRaw === 0n) continue;
|
|
22935
|
+
const colMarketUid = createMarketUid(chainId, lenderKey, token);
|
|
22936
|
+
const colMeta = metaMap[colMarketUid];
|
|
22937
|
+
const colDec = colMeta?.asset?.decimals ?? 18;
|
|
22938
|
+
const colDisplayPrice = colMeta ? getDisplayPrice(colMeta) : 0;
|
|
22939
|
+
const colOraclePrice = colMeta ? getOraclePrice(colMeta) : 0;
|
|
22940
|
+
const depositsStr = parseRawAmount(balRaw.toString(), colDec);
|
|
22941
|
+
const depositsNum = Number(depositsStr);
|
|
22942
|
+
const depositsUSD = depositsNum * colDisplayPrice;
|
|
22943
|
+
const depositsUSDOracle = depositsNum * colOraclePrice;
|
|
22944
|
+
totalDepositsUSD += depositsUSD;
|
|
22945
|
+
if (posData[colMarketUid]) {
|
|
22946
|
+
const existing = posData[colMarketUid];
|
|
22947
|
+
const prevDepositsNum = Number(existing.deposits ?? 0);
|
|
22948
|
+
const combinedDeposits = (prevDepositsNum + depositsNum).toString();
|
|
22949
|
+
posData[colMarketUid] = {
|
|
22950
|
+
...existing,
|
|
22951
|
+
deposits: combinedDeposits,
|
|
22952
|
+
depositsUSD: existing.depositsUSD + depositsUSD,
|
|
22953
|
+
depositsUSDOracle: existing.depositsUSDOracle + depositsUSDOracle,
|
|
22954
|
+
collateralEnabled: existing.collateralEnabled || !!bal?.isQuoted
|
|
22955
|
+
};
|
|
22956
|
+
} else {
|
|
22957
|
+
posData[colMarketUid] = {
|
|
22958
|
+
marketUid: colMarketUid,
|
|
22959
|
+
underlying: token,
|
|
22960
|
+
deposits: depositsStr,
|
|
22961
|
+
debt: "0",
|
|
22962
|
+
debtStable: "0",
|
|
22963
|
+
depositsUSD,
|
|
22964
|
+
debtUSD: 0,
|
|
22965
|
+
debtStableUSD: 0,
|
|
22966
|
+
depositsUSDOracle,
|
|
22967
|
+
debtUSDOracle: 0,
|
|
22968
|
+
debtStableUSDOracle: 0,
|
|
22969
|
+
stableBorrowRate: "0",
|
|
22970
|
+
collateralEnabled: !!bal?.isQuoted,
|
|
22971
|
+
claimableRewards: 0
|
|
22972
|
+
};
|
|
22973
|
+
}
|
|
22974
|
+
}
|
|
22975
|
+
const debtStr = parseRawAmount(debtRaw.toString(), loanDec);
|
|
22976
|
+
const debtNum = Number(debtStr);
|
|
22977
|
+
const debtUSD = debtNum * loanDisplayPrice;
|
|
22978
|
+
const debtUSDOracle = debtNum * loanOraclePrice;
|
|
22979
|
+
if (posData[loanMarketUid]) {
|
|
22980
|
+
const existing = posData[loanMarketUid];
|
|
22981
|
+
posData[loanMarketUid] = {
|
|
22982
|
+
...existing,
|
|
22983
|
+
debt: debtStr,
|
|
22984
|
+
debtUSD,
|
|
22985
|
+
debtUSDOracle
|
|
22986
|
+
};
|
|
22987
|
+
} else {
|
|
22988
|
+
posData[loanMarketUid] = {
|
|
22989
|
+
marketUid: loanMarketUid,
|
|
22990
|
+
underlying,
|
|
22991
|
+
deposits: "0",
|
|
22992
|
+
debt: debtStr,
|
|
22993
|
+
debtStable: "0",
|
|
22994
|
+
depositsUSD: 0,
|
|
22995
|
+
debtUSD,
|
|
22996
|
+
debtStableUSD: 0,
|
|
22997
|
+
depositsUSDOracle: 0,
|
|
22998
|
+
debtUSDOracle,
|
|
22999
|
+
debtStableUSDOracle: 0,
|
|
23000
|
+
stableBorrowRate: "0",
|
|
23001
|
+
collateralEnabled: false,
|
|
23002
|
+
claimableRewards: 0
|
|
23003
|
+
};
|
|
23004
|
+
}
|
|
23005
|
+
histData[caAddress] = {
|
|
23006
|
+
totalDeposits24h: totalDepositsUSD,
|
|
23007
|
+
totalDebt24h: debtNum * loanPriceHist
|
|
23008
|
+
};
|
|
23009
|
+
lendingPositions[caAddress] = posData;
|
|
23010
|
+
}
|
|
23011
|
+
if (Object.keys(lendingPositions).length === 0) continue;
|
|
23012
|
+
const userData = createMultiAccountTypeUserState(
|
|
23013
|
+
{
|
|
23014
|
+
chainId,
|
|
23015
|
+
account,
|
|
23016
|
+
lendingPositions,
|
|
23017
|
+
modes
|
|
23018
|
+
},
|
|
23019
|
+
metaMap,
|
|
23020
|
+
histData
|
|
23021
|
+
);
|
|
23022
|
+
if (userData && userData.data.length > 0) {
|
|
23023
|
+
out[lenderKey] = userData;
|
|
23024
|
+
}
|
|
23025
|
+
}
|
|
23026
|
+
return Object.keys(out).length > 0 ? out : void 0;
|
|
23027
|
+
},
|
|
23028
|
+
GEARBOX_V3_USER_CALL_COUNT
|
|
23029
|
+
];
|
|
23030
|
+
};
|
|
23031
|
+
|
|
22627
23032
|
// src/lending/user-data/fetch-balances/parse.ts
|
|
22628
23033
|
function getUserDataConverter(lender, chainId, account, params, meta) {
|
|
22629
23034
|
if (isAaveV4Type(lender))
|
|
@@ -22664,6 +23069,8 @@ function getUserDataConverter(lender, chainId, account, params, meta) {
|
|
|
22664
23069
|
return getSiloV3UserDataConverter(lender, chainId, account, meta?.[lender]);
|
|
22665
23070
|
if (isFluid(lender))
|
|
22666
23071
|
return getFluidUserDataConverter(lender, chainId, account, meta);
|
|
23072
|
+
if (isGearboxV3(lender))
|
|
23073
|
+
return getGearboxV3UserDataConverter(lender, chainId, account, meta);
|
|
22667
23074
|
return getCompoundV2UserDataConverter(
|
|
22668
23075
|
lender,
|
|
22669
23076
|
chainId,
|
|
@@ -27346,6 +27753,8 @@ var getAbi2 = (lender) => {
|
|
|
27346
27753
|
if (isSiloV2Type(lender) || isSiloV3Type(lender))
|
|
27347
27754
|
return [...SiloAbi];
|
|
27348
27755
|
if (isFluid(lender)) return [...FluidVaultResolverAbi];
|
|
27756
|
+
if (isGearboxV3(lender))
|
|
27757
|
+
return [...GearboxDataCompressorV3Abi];
|
|
27349
27758
|
return [];
|
|
27350
27759
|
};
|
|
27351
27760
|
|
|
@@ -30544,6 +30953,7 @@ function morphoApiAvailable(chainId) {
|
|
|
30544
30953
|
if (chainId === Chain.BERACHAIN) return false;
|
|
30545
30954
|
if (chainId === Chain.SEI_NETWORK) return false;
|
|
30546
30955
|
if (chainId === Chain.CELO_MAINNET) return false;
|
|
30956
|
+
if (chainId === Chain.LISK) return false;
|
|
30547
30957
|
return true;
|
|
30548
30958
|
}
|
|
30549
30959
|
function generateMarketId(oracle, loanAsset, collateralAsset) {
|
|
@@ -31757,6 +32167,88 @@ var fluidFetcher = {
|
|
|
31757
32167
|
parse: parseFluidResults,
|
|
31758
32168
|
getAbi: getFluidAbi
|
|
31759
32169
|
};
|
|
32170
|
+
function getGearboxV3Calls(chainId) {
|
|
32171
|
+
const resolvers = gearboxResolvers()?.[chainId];
|
|
32172
|
+
if (!resolvers?.dataCompressor) return [];
|
|
32173
|
+
const call = {
|
|
32174
|
+
address: resolvers.dataCompressor,
|
|
32175
|
+
name: "getPoolsV3List",
|
|
32176
|
+
params: []
|
|
32177
|
+
};
|
|
32178
|
+
return [
|
|
32179
|
+
{
|
|
32180
|
+
calls: [call],
|
|
32181
|
+
meta: { _: [] },
|
|
32182
|
+
lender: Lender.GEARBOX_V3
|
|
32183
|
+
}
|
|
32184
|
+
];
|
|
32185
|
+
}
|
|
32186
|
+
function parseGearboxV3Results(data, _meta, context) {
|
|
32187
|
+
const { chainId, usdPrices, tokenList } = context;
|
|
32188
|
+
const entries = [];
|
|
32189
|
+
const now = Math.floor(Date.now() / 1e3);
|
|
32190
|
+
const pools = data[0];
|
|
32191
|
+
if (!Array.isArray(pools) || pools.length === 0) return entries;
|
|
32192
|
+
const resolvePriceUSD = (token) => {
|
|
32193
|
+
const key = tokenList?.[token]?.assetGroup ?? `${chainId}-${token}`;
|
|
32194
|
+
return usdPrices[key] ?? usdPrices[token];
|
|
32195
|
+
};
|
|
32196
|
+
for (const pool of pools) {
|
|
32197
|
+
try {
|
|
32198
|
+
const underlying = (pool.underlying ?? "").toString().toLowerCase();
|
|
32199
|
+
if (!underlying) continue;
|
|
32200
|
+
const underlyingUSD = resolvePriceUSD(underlying);
|
|
32201
|
+
if (!underlyingUSD) continue;
|
|
32202
|
+
for (const cm of pool.creditManagers ?? []) {
|
|
32203
|
+
const cmAddr = (cm.addr ?? "").toString().toLowerCase();
|
|
32204
|
+
if (!cmAddr) continue;
|
|
32205
|
+
const expirationDate = Number(cm.expirationDate ?? 0);
|
|
32206
|
+
if (expirationDate > 0 && expirationDate < now) continue;
|
|
32207
|
+
let lenderKey;
|
|
32208
|
+
try {
|
|
32209
|
+
lenderKey = gearboxV3LenderKey(cmAddr);
|
|
32210
|
+
} catch {
|
|
32211
|
+
continue;
|
|
32212
|
+
}
|
|
32213
|
+
entries.push({
|
|
32214
|
+
asset: underlying,
|
|
32215
|
+
price: 1,
|
|
32216
|
+
priceUSD: underlyingUSD,
|
|
32217
|
+
marketUid: createMarketUid(chainId, lenderKey, underlying),
|
|
32218
|
+
targetLender: lenderKey,
|
|
32219
|
+
description: `Gearbox V3 loan (${pool.symbol ?? ""})`,
|
|
32220
|
+
staticBase: true,
|
|
32221
|
+
baseAsset: underlying
|
|
32222
|
+
});
|
|
32223
|
+
for (const ct of cm.collateralTokens ?? []) {
|
|
32224
|
+
const token = (ct.token ?? "").toString().toLowerCase();
|
|
32225
|
+
if (!token) continue;
|
|
32226
|
+
if (token === underlying) continue;
|
|
32227
|
+
const tokenUSD = resolvePriceUSD(token);
|
|
32228
|
+
if (!tokenUSD) continue;
|
|
32229
|
+
entries.push({
|
|
32230
|
+
asset: token,
|
|
32231
|
+
price: tokenUSD / underlyingUSD,
|
|
32232
|
+
priceUSD: tokenUSD,
|
|
32233
|
+
marketUid: createMarketUid(chainId, lenderKey, token),
|
|
32234
|
+
targetLender: lenderKey,
|
|
32235
|
+
baseAsset: underlying
|
|
32236
|
+
});
|
|
32237
|
+
}
|
|
32238
|
+
}
|
|
32239
|
+
} catch {
|
|
32240
|
+
}
|
|
32241
|
+
}
|
|
32242
|
+
return entries;
|
|
32243
|
+
}
|
|
32244
|
+
function getGearboxV3Abi() {
|
|
32245
|
+
return GearboxDataCompressorV3Abi;
|
|
32246
|
+
}
|
|
32247
|
+
var gearboxV3Fetcher = {
|
|
32248
|
+
getCalls: getGearboxV3Calls,
|
|
32249
|
+
parse: parseGearboxV3Results,
|
|
32250
|
+
getAbi: getGearboxV3Abi
|
|
32251
|
+
};
|
|
31760
32252
|
|
|
31761
32253
|
// src/prices/oracle-prices/fetchers/siloV2Graphql.ts
|
|
31762
32254
|
async function fetchSiloV2GraphQLMarkets(chainId) {
|
|
@@ -32189,7 +32681,9 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
|
|
|
32189
32681
|
() => aaveV4Fetcher.getCalls(chainId),
|
|
32190
32682
|
getCallsErrors
|
|
32191
32683
|
) : [];
|
|
32192
|
-
const
|
|
32684
|
+
const morphoUseApi = isActive("morpho") && morphoApiAvailable(chainId);
|
|
32685
|
+
const morphoUseOnChain = isActive("morpho") && !morphoUseApi;
|
|
32686
|
+
const morphoResults = morphoUseOnChain ? safeGetCalls(
|
|
32193
32687
|
"morpho",
|
|
32194
32688
|
() => morphoFetcher.getCalls(chainId, {
|
|
32195
32689
|
marketOverrides: morphoMarketOverrides
|
|
@@ -32211,6 +32705,11 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
|
|
|
32211
32705
|
() => fluidFetcher.getCalls(chainId),
|
|
32212
32706
|
getCallsErrors
|
|
32213
32707
|
) : [];
|
|
32708
|
+
const gearboxV3Results = isActive("gearboxV3") ? safeGetCalls(
|
|
32709
|
+
"gearboxV3",
|
|
32710
|
+
() => gearboxV3Fetcher.getCalls(chainId),
|
|
32711
|
+
getCallsErrors
|
|
32712
|
+
) : [];
|
|
32214
32713
|
const aaveGroup = buildGroup(
|
|
32215
32714
|
"aave",
|
|
32216
32715
|
aaveResults,
|
|
@@ -32271,6 +32770,12 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
|
|
|
32271
32770
|
fluidFetcher.parse,
|
|
32272
32771
|
getFluidAbi()
|
|
32273
32772
|
);
|
|
32773
|
+
const gearboxV3Group = buildGroup(
|
|
32774
|
+
"gearboxV3",
|
|
32775
|
+
gearboxV3Results,
|
|
32776
|
+
gearboxV3Fetcher.parse,
|
|
32777
|
+
getGearboxV3Abi()
|
|
32778
|
+
);
|
|
32274
32779
|
const allGroups = [
|
|
32275
32780
|
aaveGroup,
|
|
32276
32781
|
compoundV2Group,
|
|
@@ -32281,7 +32786,8 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
|
|
|
32281
32786
|
morphoGroup,
|
|
32282
32787
|
siloV2Group,
|
|
32283
32788
|
siloV3Group,
|
|
32284
|
-
fluidGroup
|
|
32789
|
+
fluidGroup,
|
|
32790
|
+
gearboxV3Group
|
|
32285
32791
|
];
|
|
32286
32792
|
const totalCalls = allGroups.reduce((s, g) => s + g.calls.length, 0);
|
|
32287
32793
|
if (totalCalls === 0 && !isActive("morpho")) {
|
|
@@ -32299,7 +32805,7 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
|
|
|
32299
32805
|
return { chainId, data: chainResult, diagnostic: diag2 };
|
|
32300
32806
|
}
|
|
32301
32807
|
const chainBatchSize = batchSize?.[chainId];
|
|
32302
|
-
const morphoGqlPromise =
|
|
32808
|
+
const morphoGqlPromise = morphoUseApi ? fetchMorphoGraphQLPrices(chainId) : Promise.resolve(null);
|
|
32303
32809
|
const siloV2GqlPromise = isActive("silov2") ? fetchSiloV2GraphQLPrices(chainId, basePrices, tokenList) : Promise.resolve(null);
|
|
32304
32810
|
const siloV3GqlPromise = isActive("silov3") ? fetchSiloV3GraphQLPrices(chainId, basePrices, tokenList) : Promise.resolve(null);
|
|
32305
32811
|
const [
|
|
@@ -32310,6 +32816,7 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
|
|
|
32310
32816
|
eulerData,
|
|
32311
32817
|
aaveV4Data,
|
|
32312
32818
|
fluidData,
|
|
32819
|
+
gearboxV3Data,
|
|
32313
32820
|
morphoGqlEntries,
|
|
32314
32821
|
siloV2GqlEntries,
|
|
32315
32822
|
siloV3GqlEntries
|
|
@@ -32370,6 +32877,14 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
|
|
|
32370
32877
|
allowFailure,
|
|
32371
32878
|
rpcOverrides
|
|
32372
32879
|
),
|
|
32880
|
+
executeGroup(
|
|
32881
|
+
gearboxV3Group,
|
|
32882
|
+
chainId,
|
|
32883
|
+
chainBatchSize,
|
|
32884
|
+
retries,
|
|
32885
|
+
allowFailure,
|
|
32886
|
+
rpcOverrides
|
|
32887
|
+
),
|
|
32373
32888
|
morphoGqlPromise,
|
|
32374
32889
|
siloV2GqlPromise,
|
|
32375
32890
|
siloV3GqlPromise
|
|
@@ -32400,19 +32915,14 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
|
|
|
32400
32915
|
allowFailure,
|
|
32401
32916
|
rpcOverrides
|
|
32402
32917
|
);
|
|
32403
|
-
|
|
32404
|
-
console.warn(
|
|
32405
|
-
`[prices] chain ${chainId}: Morpho GraphQL returned null, falling back to on-chain (${morphoGroup.trackers.length} trackers)`
|
|
32406
|
-
);
|
|
32407
|
-
}
|
|
32408
|
-
const morphoData = morphoGqlEntries != null ? { results: [], error: void 0 } : await executeGroup(
|
|
32918
|
+
const morphoData = morphoUseOnChain ? await executeGroup(
|
|
32409
32919
|
morphoGroup,
|
|
32410
32920
|
chainId,
|
|
32411
32921
|
chainBatchSize,
|
|
32412
32922
|
retries,
|
|
32413
32923
|
allowFailure,
|
|
32414
32924
|
rpcOverrides
|
|
32415
|
-
);
|
|
32925
|
+
) : { results: [], error: void 0 };
|
|
32416
32926
|
const useMorphoGql = morphoGqlEntries != null;
|
|
32417
32927
|
const groupResults = [
|
|
32418
32928
|
{ group: aaveGroup, data: aaveData },
|
|
@@ -32422,6 +32932,7 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
|
|
|
32422
32932
|
{ group: eulerGroup, data: eulerData },
|
|
32423
32933
|
{ group: aaveV4Group, data: aaveV4Data },
|
|
32424
32934
|
{ group: fluidGroup, data: fluidData },
|
|
32935
|
+
{ group: gearboxV3Group, data: gearboxV3Data },
|
|
32425
32936
|
...siloV2GqlEntries != null ? [] : [{ group: siloV2Group, data: siloV2Data }],
|
|
32426
32937
|
...siloV3GqlEntries != null ? [] : [{ group: siloV3Group, data: siloV3Data }],
|
|
32427
32938
|
...useMorphoGql ? [] : [{ group: morphoGroup, data: morphoData }]
|
|
@@ -32509,6 +33020,7 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
|
|
|
32509
33020
|
(t) => !!t.meta.baseAssetSource
|
|
32510
33021
|
);
|
|
32511
33022
|
parseTrackers(fluidGroup, fluidData.results, false);
|
|
33023
|
+
parseTrackers(gearboxV3Group, gearboxV3Data.results, false);
|
|
32512
33024
|
if (siloV2GqlEntries != null) {
|
|
32513
33025
|
const diag2 = {
|
|
32514
33026
|
lender: "SILO_V2 (GraphQL)",
|