@1delta/margin-fetcher 5.0.78 → 5.0.80
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 +108 -23
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/dist/index.js
CHANGED
|
@@ -17091,6 +17091,7 @@ var parseMantissaWad = (raw) => {
|
|
|
17091
17091
|
}
|
|
17092
17092
|
};
|
|
17093
17093
|
var getCompoundV2DataConverter = (lender, chainId, prices, additionalYields, tokenList = {}, unitSeconds) => {
|
|
17094
|
+
if (!getCompoundV2Lens(chainId, lender)) return [() => void 0, 0];
|
|
17094
17095
|
if (lender === Lender.TAKARA) {
|
|
17095
17096
|
return [
|
|
17096
17097
|
(data) => {
|
|
@@ -18468,6 +18469,7 @@ function buildTokenConfig(vaultAddr, reverseLTV, borrowVaults, vaultData) {
|
|
|
18468
18469
|
const config = {};
|
|
18469
18470
|
const ownInfo = findInfo(vaultAddr, vaultData);
|
|
18470
18471
|
const liquidationPenalty = ownInfo ? ltvToNumber(ownInfo.maxLiquidationDiscount) : 0;
|
|
18472
|
+
const ownDepositsOff = ownInfo ? isOperationDisabled(ownInfo, OP_DEPOSIT) : false;
|
|
18471
18473
|
const reverseEntries = reverseLTV.get(vaultAddr) ?? [];
|
|
18472
18474
|
for (const { borrowVault, ltv } of reverseEntries) {
|
|
18473
18475
|
if (!borrowVaults.has(borrowVault)) continue;
|
|
@@ -18479,7 +18481,7 @@ function buildTokenConfig(vaultAddr, reverseLTV, borrowVaults, vaultData) {
|
|
|
18479
18481
|
borrowFactor: 1,
|
|
18480
18482
|
liquidationPenalty,
|
|
18481
18483
|
closeFactor: 1,
|
|
18482
|
-
collateralDisabled:
|
|
18484
|
+
collateralDisabled: ownDepositsOff,
|
|
18483
18485
|
debtDisabled: true
|
|
18484
18486
|
};
|
|
18485
18487
|
}
|
|
@@ -18493,7 +18495,8 @@ function buildTokenConfig(vaultAddr, reverseLTV, borrowVaults, vaultData) {
|
|
|
18493
18495
|
borrowFactor: 1,
|
|
18494
18496
|
liquidationPenalty,
|
|
18495
18497
|
closeFactor: 1,
|
|
18496
|
-
|
|
18498
|
+
// Borrow hooked off (zero hook target) ⇒ no new debt in this config.
|
|
18499
|
+
debtDisabled: selfInfo ? isOperationDisabled(selfInfo, OP_BORROW) : false,
|
|
18497
18500
|
collateralDisabled: true
|
|
18498
18501
|
};
|
|
18499
18502
|
}
|
|
@@ -20614,7 +20617,7 @@ var toBig = (v) => {
|
|
|
20614
20617
|
var parToWei = (par, index) => toBig(par) * toBig(index) / BASE;
|
|
20615
20618
|
var getDolomitePublicDataConverter = (lender, chainId, _prices, additionalYields, tokenList = {}) => {
|
|
20616
20619
|
const marketIds = getDolomiteMarketIds(chainId);
|
|
20617
|
-
const expectedNumberOfCalls = GLOBAL_COUNT + MARKET_STRIDE * marketIds.length;
|
|
20620
|
+
const expectedNumberOfCalls = !dolomiteConfigs()?.[chainId]?.dolomiteMargin || marketIds.length === 0 ? 0 : GLOBAL_COUNT + MARKET_STRIDE * marketIds.length;
|
|
20618
20621
|
return [
|
|
20619
20622
|
(data) => {
|
|
20620
20623
|
if (data.length !== expectedNumberOfCalls) return void 0;
|
|
@@ -21146,12 +21149,14 @@ var getLenderPublicData = async (chainId, lenders, prices, additionalYields, mul
|
|
|
21146
21149
|
let calls = [];
|
|
21147
21150
|
const validLenders = [];
|
|
21148
21151
|
const sliceStart = {};
|
|
21152
|
+
const sliceBuilt = {};
|
|
21149
21153
|
for (const lender of lenders) {
|
|
21150
21154
|
const abi = getAbi(lender);
|
|
21151
21155
|
const callData = buildLenderCall(chainId, lender);
|
|
21152
21156
|
if (callData.some((c) => !c.address)) continue;
|
|
21153
21157
|
const mappedCalls = callData.map((call) => ({ call, abi: call.abi ?? abi }));
|
|
21154
21158
|
sliceStart[lender] = calls.length;
|
|
21159
|
+
sliceBuilt[lender] = mappedCalls.length;
|
|
21155
21160
|
calls.push(...mappedCalls);
|
|
21156
21161
|
validLenders.push(lender);
|
|
21157
21162
|
}
|
|
@@ -21203,9 +21208,27 @@ var getLenderPublicData = async (chainId, lenders, prices, additionalYields, mul
|
|
|
21203
21208
|
}
|
|
21204
21209
|
})
|
|
21205
21210
|
);
|
|
21206
|
-
|
|
21211
|
+
const slices = sliceLenderResults(
|
|
21212
|
+
chainId,
|
|
21213
|
+
rawResults,
|
|
21214
|
+
validLenders.map((lender) => ({
|
|
21215
|
+
lender,
|
|
21216
|
+
start: sliceStart[lender],
|
|
21217
|
+
built: sliceBuilt[lender],
|
|
21218
|
+
declared: getLenderDataConverter(
|
|
21219
|
+
lender,
|
|
21220
|
+
chainId,
|
|
21221
|
+
prices,
|
|
21222
|
+
additionalYields,
|
|
21223
|
+
list,
|
|
21224
|
+
rateUnitSeconds.get(lender)
|
|
21225
|
+
)[1]
|
|
21226
|
+
}))
|
|
21227
|
+
);
|
|
21207
21228
|
for (const lender of validLenders) {
|
|
21208
|
-
const
|
|
21229
|
+
const data = slices[lender];
|
|
21230
|
+
if (!data || data.length === 0) continue;
|
|
21231
|
+
const [converter] = getLenderDataConverter(
|
|
21209
21232
|
lender,
|
|
21210
21233
|
chainId,
|
|
21211
21234
|
prices,
|
|
@@ -21213,30 +21236,40 @@ var getLenderPublicData = async (chainId, lenders, prices, additionalYields, mul
|
|
|
21213
21236
|
list,
|
|
21214
21237
|
rateUnitSeconds.get(lender)
|
|
21215
21238
|
);
|
|
21216
|
-
|
|
21217
|
-
|
|
21218
|
-
|
|
21219
|
-
|
|
21220
|
-
|
|
21221
|
-
if (!convertedData) {
|
|
21222
|
-
invalidLenders.push(lender);
|
|
21223
|
-
} else {
|
|
21224
|
-
Object.assign(lenderData, convertedData);
|
|
21225
|
-
}
|
|
21239
|
+
try {
|
|
21240
|
+
const convertedData = converter(data);
|
|
21241
|
+
if (isMultiMarket(lender)) {
|
|
21242
|
+
if (!convertedData) {
|
|
21243
|
+
invalidLenders.push(lender);
|
|
21226
21244
|
} else {
|
|
21227
|
-
|
|
21228
|
-
|
|
21229
|
-
|
|
21230
|
-
|
|
21231
|
-
|
|
21245
|
+
Object.assign(lenderData, convertedData);
|
|
21246
|
+
}
|
|
21247
|
+
} else {
|
|
21248
|
+
if (!convertedData) {
|
|
21249
|
+
invalidLenders.push(lender);
|
|
21250
|
+
} else {
|
|
21251
|
+
lenderData[lender] = convertedData;
|
|
21232
21252
|
}
|
|
21233
|
-
} catch {
|
|
21234
21253
|
}
|
|
21235
|
-
|
|
21254
|
+
} catch {
|
|
21236
21255
|
}
|
|
21237
21256
|
}
|
|
21238
21257
|
return lenderData;
|
|
21239
21258
|
};
|
|
21259
|
+
function sliceLenderResults(chainId, rawResults, entries) {
|
|
21260
|
+
const out = {};
|
|
21261
|
+
for (const { lender, start, built, declared } of entries) {
|
|
21262
|
+
if (declared !== built) {
|
|
21263
|
+
console.warn(
|
|
21264
|
+
`[lending] chain ${chainId} ${lender}: builder emitted ${built} calls but parser expects ${declared} \u2014 dropping this lender for the cycle (builder/parser out of sync)`
|
|
21265
|
+
);
|
|
21266
|
+
out[lender] = null;
|
|
21267
|
+
continue;
|
|
21268
|
+
}
|
|
21269
|
+
out[lender] = built > 0 ? rawResults.slice(start, start + built) : [];
|
|
21270
|
+
}
|
|
21271
|
+
return out;
|
|
21272
|
+
}
|
|
21240
21273
|
var DEFAULT_MIDNIGHT_API = "https://api.morpho.org/v0/midnight";
|
|
21241
21274
|
var warn = (...args) => {
|
|
21242
21275
|
};
|
|
@@ -60611,6 +60644,52 @@ function computeV2Allocation(decimals, totalAssetsFormatted, feePercent2, priceU
|
|
|
60611
60644
|
};
|
|
60612
60645
|
}
|
|
60613
60646
|
|
|
60647
|
+
// src/vaults/morpho/stubVaults.ts
|
|
60648
|
+
var MORPHO_STUB_VAULTS = {
|
|
60649
|
+
"14": ["0x5eae7e544258e421cb2774e508e15ee8dade8200"],
|
|
60650
|
+
// Flare
|
|
60651
|
+
"146": ["0xd7f2f89e1991de2b9d62fbeeeb3bc0b01d032328"],
|
|
60652
|
+
// Sonic
|
|
60653
|
+
"239": ["0x2903a9e55bb8a05e6cbdd5c5d00203bf527fa9db"],
|
|
60654
|
+
// TAC
|
|
60655
|
+
"1135": ["0x389724731cea95c4a46cc93e96f211f389f31405"],
|
|
60656
|
+
// Lisk
|
|
60657
|
+
"1672": ["0x79ded579756072372510ff3a86f884433a697b5c"],
|
|
60658
|
+
// Pharos
|
|
60659
|
+
"1868": ["0x94665e0df3c8c25119d80b2e3c703ccd127bf37e"],
|
|
60660
|
+
// Soneium
|
|
60661
|
+
"2741": ["0x225c6e63970bb04d0780b3abb047dba659ad3cec"],
|
|
60662
|
+
// Abstract
|
|
60663
|
+
"2818": ["0x7cf2c1a184c2f17e0413a13b21b1fdafd51df08c"],
|
|
60664
|
+
// Morph
|
|
60665
|
+
"4114": ["0xc063aca30b0d56ff0a9e446a94f8cdb421ab89fb"],
|
|
60666
|
+
// Citrea
|
|
60667
|
+
"4326": ["0xf55c695ebaf1f4eefeda0833ef6a29c90e7b7f05"],
|
|
60668
|
+
// MegaETH
|
|
60669
|
+
"34443": ["0xf4461806c58d9e7cd74e79b113d81d127634b807"],
|
|
60670
|
+
// Mode
|
|
60671
|
+
"42220": ["0x099272b39ae8e6d7d415e8ba252c3d2c59432087"],
|
|
60672
|
+
// Celo
|
|
60673
|
+
"43111": ["0x339b3b6413345b4d3beb524c12cd3910c6dd8dbb"],
|
|
60674
|
+
// Hemi
|
|
60675
|
+
"57073": ["0xb00123b1058c13559408b9d609ed417617f588ed"],
|
|
60676
|
+
// Ink
|
|
60677
|
+
"59144": ["0x3e89134a270b8f0dc3dfd8bf6e249fddb2f7a634"],
|
|
60678
|
+
// Linea
|
|
60679
|
+
"98866": [
|
|
60680
|
+
"0x6f8acb9c03abb7ba6ba24b4698b019ffe96eae60",
|
|
60681
|
+
"0xd2586890224ab02bf31334e15872cd9c93f68ba8"
|
|
60682
|
+
]
|
|
60683
|
+
// Plume
|
|
60684
|
+
};
|
|
60685
|
+
var STUB_SET = new Map(
|
|
60686
|
+
Object.entries(MORPHO_STUB_VAULTS).map(([chainId, list]) => [
|
|
60687
|
+
chainId,
|
|
60688
|
+
new Set(list.map((a) => a.toLowerCase()))
|
|
60689
|
+
])
|
|
60690
|
+
);
|
|
60691
|
+
var isMorphoStubVault = (chainId, vault) => STUB_SET.get(chainId)?.has(vault.toLowerCase()) ?? false;
|
|
60692
|
+
|
|
60614
60693
|
// src/vaults/morpho/fetchFromChain.ts
|
|
60615
60694
|
var { chunk: chunk5 } = lodash;
|
|
60616
60695
|
var VAULT_CALLS = [
|
|
@@ -60706,7 +60785,13 @@ var collectEntries = (chainId, protocols, skip) => {
|
|
|
60706
60785
|
return out;
|
|
60707
60786
|
};
|
|
60708
60787
|
var fetchMorphoVaultsFromChain = async (chainId, multicallRetry, prices = {}, tokenList = {}, opts = {}) => {
|
|
60709
|
-
const entries = opts.vaultsOverride ? opts.vaultsOverride.map((entry) => ({ protocol: "", entry })) : collectEntries(chainId, opts.protocols, DEFAULT_SKIP_PROTOCOLS)
|
|
60788
|
+
const entries = (opts.vaultsOverride ? opts.vaultsOverride.map((entry) => ({ protocol: "", entry })) : collectEntries(chainId, opts.protocols, DEFAULT_SKIP_PROTOCOLS)).filter(({ entry }) => {
|
|
60789
|
+
if (!isMorphoStubVault(chainId, entry.vault)) return true;
|
|
60790
|
+
console.warn(
|
|
60791
|
+
`[morpho vaults] chain ${chainId}: skipping ${entry.vault} \u2014 factory smoke-test vault (stub underlying)`
|
|
60792
|
+
);
|
|
60793
|
+
return false;
|
|
60794
|
+
});
|
|
60710
60795
|
if (entries.length === 0) return {};
|
|
60711
60796
|
const phase1Calls = entries.flatMap(
|
|
60712
60797
|
({ entry }) => PHASE1_CALLS.map((name) => ({
|