@1delta/margin-fetcher 0.0.317 → 0.0.319
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 +109 -7
- package/dist/index.js.map +1 -1
- package/dist/lending/public-data/midnight/apiClient.d.ts +1 -1
- package/dist/lending/public-data/midnight/apiClient.d.ts.map +1 -1
- package/dist/lending/public-data/midnight/convertPublic.d.ts.map +1 -1
- package/dist/lending/user-data/midnight/userCallParse.d.ts.map +1 -1
- package/dist/prices/oracle-prices/fetchOraclePrices.d.ts +1 -1
- package/dist/prices/oracle-prices/fetchOraclePrices.d.ts.map +1 -1
- package/dist/prices/oracle-prices/fetchers/index.d.ts +1 -0
- package/dist/prices/oracle-prices/fetchers/index.d.ts.map +1 -1
- package/dist/prices/oracle-prices/fetchers/midnight.d.ts +86 -0
- package/dist/prices/oracle-prices/fetchers/midnight.d.ts.map +1 -0
- package/dist/prices/oracle-prices/index.d.ts +1 -0
- package/dist/prices/oracle-prices/index.d.ts.map +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import './chunk-BYTNVMX7.js';
|
|
|
3
3
|
import './chunk-PR4QN5HX.js';
|
|
4
4
|
import { Lender, isAaveType, isCompoundV3, isMultiMarket, isSiloV2Type, isSiloV3Type, isDolomite, isEulerType, isAaveV4Type, isInit, isMorphoType, isCompoundV2Type, isVenusType, isSumerType, AAVE_V3_LENDERS, AAVE_V2_LENDERS, isAaveV2Type, isAaveV32Type, isAaveV3Type, isFluid, isGearboxV3, isMidnight, isYLDR, isCompoundV3Type, isLista, isTectonicType, isKineticType, isBenqiType } from '@1delta/lender-registry';
|
|
5
5
|
export { isAaveType, isAaveV2Type, isAaveV32Type, isAaveV3Type, isCompoundV3, isCompoundV3Type, isInit, isMorphoType, isMultiMarket, isYLDR } from '@1delta/lender-registry';
|
|
6
|
-
import { aavePools, compoundV3Pools, initConfig, morphoPools, compoundV2Pools, eulerVaults, siloMarkets, siloV2LenderKey, siloMarketsV3, siloV3LenderKey, aaveV4Spokes, aaveV4SpokeLenderKey, fluidResolvers, gearboxResolvers, dolomiteConfigs, midnightConfig, aaveReserves, compoundV3Reserves, morphoTypeMarkets, getSiloV2MarketEntry, getSiloV3MarketEntry, dolomiteEmode, aaveTokens, morphoTypeVaults, eulerConfigs, gearboxMarketCompressor, gearboxMarketConfigurators, gearboxV3LenderKey, midnightMarketsByChain, parseAaveV4SpokeLenderKey, gearboxAccountCompressor, compoundV2Tokens, aaveOracles, aaveOraclesConfig, compoundV2Oracles, compoundV2TokenArray, compoundV2OraclesConfig, compoundV3OraclesData, compoundV3BaseData, compoundV2Reserves, fetchTokenLists, fetchTokenList, aaveV4Oracles } from '@1delta/data-sdk';
|
|
6
|
+
import { aavePools, compoundV3Pools, initConfig, morphoPools, compoundV2Pools, eulerVaults, siloMarkets, siloV2LenderKey, siloMarketsV3, siloV3LenderKey, aaveV4Spokes, aaveV4SpokeLenderKey, fluidResolvers, gearboxResolvers, dolomiteConfigs, midnightConfig, aaveReserves, compoundV3Reserves, morphoTypeMarkets, getSiloV2MarketEntry, getSiloV3MarketEntry, dolomiteEmode, aaveTokens, morphoTypeVaults, eulerConfigs, gearboxMarketCompressor, gearboxMarketConfigurators, gearboxV3LenderKey, midnightMarketsByChain, parseAaveV4SpokeLenderKey, gearboxAccountCompressor, compoundV2Tokens, aaveOracles, aaveOraclesConfig, compoundV2Oracles, compoundV2TokenArray, compoundV2OraclesConfig, compoundV3OraclesData, compoundV3BaseData, compoundV2Reserves, fetchTokenLists, fetchTokenList, aaveV4Oracles, resolveMidnightApiBase } from '@1delta/data-sdk';
|
|
7
7
|
import lodash from 'lodash';
|
|
8
8
|
import { getEvmClient, getEvmChain, getEvmClientUniversal, multicallRetryUniversal } from '@1delta/providers';
|
|
9
9
|
import { MetaMorphoAbi, FluidLendingResolverAbi, FluidVaultResolverAbi, MoolahVaultAbi, MorphoLensAbi, AaveV4SpokeAbi, AaveV4OracleAbi, AaveV4HubAbi, DolomiteMarginAbi, GearboxMarketCompressorV310Abi, MorphoBlueAbi, MidnightAbi, GearboxCreditAccountCompressorV310Abi } from '@1delta/abis';
|
|
@@ -20754,12 +20754,10 @@ var getLenderPublicData = async (chainId, lenders, prices, additionalYields, mul
|
|
|
20754
20754
|
}
|
|
20755
20755
|
return lenderData;
|
|
20756
20756
|
};
|
|
20757
|
-
var DEFAULT_MIDNIGHT_API = "https://api.morpho.org/v0/midnight";
|
|
20758
20757
|
var warn = (...args) => {
|
|
20759
20758
|
};
|
|
20760
20759
|
function midnightApiBaseUrl(chainId) {
|
|
20761
|
-
|
|
20762
|
-
return (base && base.length > 0 ? base : DEFAULT_MIDNIGHT_API).replace(/\/+$/, "");
|
|
20760
|
+
return resolveMidnightApiBase(chainId);
|
|
20763
20761
|
}
|
|
20764
20762
|
var toBig2 = (v) => {
|
|
20765
20763
|
try {
|
|
@@ -20927,7 +20925,9 @@ function convertMidnightMarketsToResponse(raw, chainId, prices = {}, _additional
|
|
|
20927
20925
|
}
|
|
20928
20926
|
] : void 0;
|
|
20929
20927
|
const loanAddr = config.loanToken.toLowerCase();
|
|
20930
|
-
const
|
|
20928
|
+
const loanAsset = tokens[loanAddr];
|
|
20929
|
+
const loanKey = toOracleKey(loanAsset?.assetGroup) ?? toGenericPriceKey(loanAsset?.address ?? config.loanToken, chainId);
|
|
20930
|
+
const loanPrice = prices[loanKey] ?? 0;
|
|
20931
20931
|
const supplyLiquidity = formatNr(top?.supplyDepthAssets ?? 0n, config.loanDecimals);
|
|
20932
20932
|
const borrowLiquidity = formatNr(top?.borrowDepthAssets ?? 0n, config.loanDecimals);
|
|
20933
20933
|
const entry = { data: {} };
|
|
@@ -24814,7 +24814,6 @@ function normalizeUnderlying3(token) {
|
|
|
24814
24814
|
const lower = token.toLowerCase();
|
|
24815
24815
|
return Object.values(WETH_BY_CHAIN).includes(lower) ? zeroAddress : lower;
|
|
24816
24816
|
}
|
|
24817
|
-
var MIDNIGHT_UNIT_DECIMALS = 18;
|
|
24818
24817
|
function toBigInt10(v) {
|
|
24819
24818
|
if (v === void 0 || v === null || v === "0x") return 0n;
|
|
24820
24819
|
if (typeof v === "bigint") return v;
|
|
@@ -24857,7 +24856,7 @@ var getMidnightUserDataConverter = (_lender, chainId, account, meta) => {
|
|
|
24857
24856
|
const loanOraclePrice = loanMeta ? getOraclePrice(loanMeta) : 0;
|
|
24858
24857
|
const loanPriceHist = loanMeta?.price?.priceUsd24h ?? loanDisplayPrice;
|
|
24859
24858
|
const debtUnits = readDebtUnits(positionResult);
|
|
24860
|
-
const debtStr = parseRawAmount(debtUnits.toString(),
|
|
24859
|
+
const debtStr = parseRawAmount(debtUnits.toString(), market.loanDecimals);
|
|
24861
24860
|
const debtNum = Number(debtStr);
|
|
24862
24861
|
const posData = {};
|
|
24863
24862
|
let anyBalance = debtUnits > 0n;
|
|
@@ -34228,6 +34227,86 @@ var morphoFetcher = {
|
|
|
34228
34227
|
parse: parseMorphoResults,
|
|
34229
34228
|
getAbi: getMorphoAbi
|
|
34230
34229
|
};
|
|
34230
|
+
function getMidnightCalls(chainId) {
|
|
34231
|
+
const markets = midnightMarketsByChain(chainId);
|
|
34232
|
+
if (markets.length === 0) return [];
|
|
34233
|
+
const results = [];
|
|
34234
|
+
for (const market of markets) {
|
|
34235
|
+
if (!market.marketId || !market.loanToken) continue;
|
|
34236
|
+
const legs = [];
|
|
34237
|
+
const calls = [];
|
|
34238
|
+
for (const c of market.collateralParams ?? []) {
|
|
34239
|
+
if (!c.oracle || !c.token) continue;
|
|
34240
|
+
legs.push({
|
|
34241
|
+
collateralAsset: c.token.toLowerCase(),
|
|
34242
|
+
collateralDecimals: c.decimals,
|
|
34243
|
+
oracle: c.oracle
|
|
34244
|
+
});
|
|
34245
|
+
calls.push({ address: c.oracle, name: "price", params: [] });
|
|
34246
|
+
}
|
|
34247
|
+
if (legs.length === 0) continue;
|
|
34248
|
+
results.push({
|
|
34249
|
+
calls,
|
|
34250
|
+
meta: {
|
|
34251
|
+
marketId: market.marketId,
|
|
34252
|
+
loanAsset: market.loanToken.toLowerCase(),
|
|
34253
|
+
loanDecimals: market.loanDecimals,
|
|
34254
|
+
legs
|
|
34255
|
+
},
|
|
34256
|
+
lender: midnightLenderKey(market.marketId)
|
|
34257
|
+
});
|
|
34258
|
+
}
|
|
34259
|
+
return results;
|
|
34260
|
+
}
|
|
34261
|
+
function parseMidnightResults(data, meta, context) {
|
|
34262
|
+
const { chainId, usdPrices, tokenList } = context;
|
|
34263
|
+
const entries = [];
|
|
34264
|
+
const loanAsset = meta.loanAsset;
|
|
34265
|
+
const loanDecimals = meta.loanDecimals ?? tokenList?.[loanAsset]?.decimals ?? 18;
|
|
34266
|
+
const loanOracleKey = tokenList?.[loanAsset]?.assetGroup ?? `${chainId}-${loanAsset}`;
|
|
34267
|
+
const loanAssetUSD = usdPrices[loanOracleKey] ?? usdPrices[loanAsset];
|
|
34268
|
+
if (!loanAssetUSD) return entries;
|
|
34269
|
+
const lenderKey = midnightLenderKey(meta.marketId);
|
|
34270
|
+
entries.push({
|
|
34271
|
+
asset: loanAsset,
|
|
34272
|
+
price: 1,
|
|
34273
|
+
priceUSD: loanAssetUSD,
|
|
34274
|
+
marketUid: createMarketUid(chainId, lenderKey, loanAsset),
|
|
34275
|
+
targetLender: lenderKey,
|
|
34276
|
+
description: "Midnight loan asset",
|
|
34277
|
+
staticBase: true,
|
|
34278
|
+
baseAsset: loanAsset
|
|
34279
|
+
});
|
|
34280
|
+
meta.legs.forEach((leg, i) => {
|
|
34281
|
+
const rawPrice = data[i];
|
|
34282
|
+
if (!rawPrice || rawPrice === "0x") return;
|
|
34283
|
+
const collateralDecimals = leg.collateralDecimals ?? tokenList?.[leg.collateralAsset]?.decimals ?? 18;
|
|
34284
|
+
const priceDebtToCollateral = formatMorphoPrice(
|
|
34285
|
+
rawPrice.toString(),
|
|
34286
|
+
loanDecimals,
|
|
34287
|
+
collateralDecimals
|
|
34288
|
+
);
|
|
34289
|
+
if (isNaN(priceDebtToCollateral) || priceDebtToCollateral === 0) return;
|
|
34290
|
+
entries.push({
|
|
34291
|
+
asset: leg.collateralAsset,
|
|
34292
|
+
price: priceDebtToCollateral,
|
|
34293
|
+
// raw: collateral price in loan asset terms
|
|
34294
|
+
priceUSD: priceDebtToCollateral * loanAssetUSD,
|
|
34295
|
+
marketUid: createMarketUid(chainId, lenderKey, leg.collateralAsset),
|
|
34296
|
+
targetLender: lenderKey,
|
|
34297
|
+
baseAsset: loanAsset
|
|
34298
|
+
});
|
|
34299
|
+
});
|
|
34300
|
+
return entries;
|
|
34301
|
+
}
|
|
34302
|
+
function getMidnightAbi() {
|
|
34303
|
+
return ProxyOracleAbi;
|
|
34304
|
+
}
|
|
34305
|
+
var midnightFetcher = {
|
|
34306
|
+
getCalls: getMidnightCalls,
|
|
34307
|
+
parse: parseMidnightResults,
|
|
34308
|
+
getAbi: getMidnightAbi
|
|
34309
|
+
};
|
|
34231
34310
|
var CompoundV2OracleAbi = [
|
|
34232
34311
|
{
|
|
34233
34312
|
inputs: [{ internalType: "address", name: "cToken", type: "address" }],
|
|
@@ -35822,6 +35901,11 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
|
|
|
35822
35901
|
}),
|
|
35823
35902
|
getCallsErrors
|
|
35824
35903
|
) : [];
|
|
35904
|
+
const midnightResults = isActive("midnight") ? safeGetCalls(
|
|
35905
|
+
"midnight",
|
|
35906
|
+
() => midnightFetcher.getCalls(chainId),
|
|
35907
|
+
getCallsErrors
|
|
35908
|
+
) : [];
|
|
35825
35909
|
const siloV2Results = isActive("silov2") ? safeGetCalls(
|
|
35826
35910
|
"siloV2",
|
|
35827
35911
|
() => siloV2Fetcher.getCalls(chainId),
|
|
@@ -35889,6 +35973,12 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
|
|
|
35889
35973
|
morphoFetcher.parse,
|
|
35890
35974
|
ProxyOracleAbi
|
|
35891
35975
|
);
|
|
35976
|
+
const midnightGroup = buildGroup(
|
|
35977
|
+
"midnight",
|
|
35978
|
+
midnightResults,
|
|
35979
|
+
midnightFetcher.parse,
|
|
35980
|
+
ProxyOracleAbi
|
|
35981
|
+
);
|
|
35892
35982
|
const siloV2Group = buildGroup(
|
|
35893
35983
|
"siloV2",
|
|
35894
35984
|
siloV2Results,
|
|
@@ -35927,6 +36017,7 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
|
|
|
35927
36017
|
eulerGroup,
|
|
35928
36018
|
aaveV4Group,
|
|
35929
36019
|
morphoGroup,
|
|
36020
|
+
midnightGroup,
|
|
35930
36021
|
siloV2Group,
|
|
35931
36022
|
siloV3Group,
|
|
35932
36023
|
fluidGroup,
|
|
@@ -35962,6 +36053,7 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
|
|
|
35962
36053
|
fluidData,
|
|
35963
36054
|
gearboxV3Data,
|
|
35964
36055
|
dolomiteData,
|
|
36056
|
+
midnightData,
|
|
35965
36057
|
morphoGqlEntries,
|
|
35966
36058
|
siloV2GqlEntries,
|
|
35967
36059
|
siloV3GqlEntries
|
|
@@ -36038,6 +36130,14 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
|
|
|
36038
36130
|
allowFailure,
|
|
36039
36131
|
rpcOverrides
|
|
36040
36132
|
),
|
|
36133
|
+
executeGroup(
|
|
36134
|
+
midnightGroup,
|
|
36135
|
+
chainId,
|
|
36136
|
+
chainBatchSize,
|
|
36137
|
+
retries,
|
|
36138
|
+
allowFailure,
|
|
36139
|
+
rpcOverrides
|
|
36140
|
+
),
|
|
36041
36141
|
morphoGqlPromise,
|
|
36042
36142
|
siloV2GqlPromise,
|
|
36043
36143
|
siloV3GqlPromise
|
|
@@ -36088,6 +36188,7 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
|
|
|
36088
36188
|
{ group: fluidGroup, data: fluidData },
|
|
36089
36189
|
{ group: gearboxV3Group, data: gearboxV3Data },
|
|
36090
36190
|
{ group: dolomiteGroup, data: dolomiteData },
|
|
36191
|
+
{ group: midnightGroup, data: midnightData },
|
|
36091
36192
|
...siloV2GqlEntries != null ? [] : [{ group: siloV2Group, data: siloV2Data }],
|
|
36092
36193
|
...siloV3GqlEntries != null ? [] : [{ group: siloV3Group, data: siloV3Data }],
|
|
36093
36194
|
// In hybrid mode the on-chain multicall ran too — surface its errors.
|
|
@@ -36281,6 +36382,7 @@ async function fetchOraclePrices(chainIds, rpcOverrides, lists = {}, retries = 3
|
|
|
36281
36382
|
}
|
|
36282
36383
|
parseTrackers(morphoGroup, morphoData.results, false);
|
|
36283
36384
|
}
|
|
36385
|
+
parseTrackers(midnightGroup, midnightData.results, false);
|
|
36284
36386
|
const totalFailedCalls = trackerDiags.reduce(
|
|
36285
36387
|
(sum, d) => sum + d.failedCalls,
|
|
36286
36388
|
0
|