@1delta/margin-fetcher 0.0.175 → 0.0.177
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 +125 -88
- package/dist/index.js.map +1 -1
- package/dist/lending/margin/loop/index.d.ts +1 -0
- package/dist/lending/margin/loop/index.d.ts.map +1 -1
- package/dist/lending/margin/loop/ranges/getMaxAmountOpen.d.ts +30 -0
- package/dist/lending/margin/loop/ranges/getMaxAmountOpen.d.ts.map +1 -0
- package/dist/lending/margin/loop/ranges/index.d.ts +2 -0
- package/dist/lending/margin/loop/ranges/index.d.ts.map +1 -0
- package/dist/lending/public-data/compound-v3/publicCallParse.d.ts.map +1 -1
- package/dist/lending/public-data/euler/fetcher/normalize.d.ts +17 -17
- package/dist/lending/public-data/euler/fetcher/normalize.d.ts.map +1 -1
- package/dist/lending/user-data/euler/userCallBuild.d.ts +35 -5
- package/dist/lending/user-data/euler/userCallBuild.d.ts.map +1 -1
- package/dist/lending/user-data/euler/userCallParse.d.ts +9 -1
- package/dist/lending/user-data/euler/userCallParse.d.ts.map +1 -1
- package/dist/lending/user-data/fetch-balances/e2e.d.ts +2 -3
- package/dist/lending/user-data/fetch-balances/e2e.d.ts.map +1 -1
- package/dist/lending/user-data/fetch-balances/prepare.d.ts +2 -1
- package/dist/lending/user-data/fetch-balances/prepare.d.ts.map +1 -1
- package/dist/lending/user-data/utils/createEulerMultiAccountTypeUserState.d.ts +9 -6
- package/dist/lending/user-data/utils/createEulerMultiAccountTypeUserState.d.ts.map +1 -1
- package/dist/lending/user-data/with-permissions/prepare.d.ts +2 -2
- package/dist/lending/user-data/with-permissions/prepare.d.ts.map +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/package.json +4 -4
package/dist/index.js
CHANGED
|
@@ -7485,7 +7485,8 @@ var DISABLED_COMPOUNDS = {
|
|
|
7485
7485
|
[Chain.ETHEREUM_MAINNET]: [Lender.CREAM_FINANCE]
|
|
7486
7486
|
};
|
|
7487
7487
|
var ENABLED_EULER_V2_CHAINS = [
|
|
7488
|
-
Chain.BNB_SMART_CHAIN_MAINNET
|
|
7488
|
+
Chain.BNB_SMART_CHAIN_MAINNET,
|
|
7489
|
+
Chain.PLASMA_MAINNET
|
|
7489
7490
|
];
|
|
7490
7491
|
var getLendersForChain = (c) => {
|
|
7491
7492
|
let lenders = [];
|
|
@@ -17500,49 +17501,19 @@ function buildReverseLTVIndex(cluster) {
|
|
|
17500
17501
|
}
|
|
17501
17502
|
return index;
|
|
17502
17503
|
}
|
|
17503
|
-
function
|
|
17504
|
-
const index = /* @__PURE__ */ new Map();
|
|
17505
|
-
for (const [addr, info] of cluster.vaultData) {
|
|
17506
|
-
const borrowVault = addr.toLowerCase();
|
|
17507
|
-
const entries = [];
|
|
17508
|
-
for (const ltv of info.collateralLTVInfo) {
|
|
17509
|
-
if (ltv.borrowLTV <= 0n) continue;
|
|
17510
|
-
entries.push({
|
|
17511
|
-
collateralVault: ltv.collateral.toLowerCase(),
|
|
17512
|
-
ltv
|
|
17513
|
-
});
|
|
17514
|
-
}
|
|
17515
|
-
if (entries.length > 0) {
|
|
17516
|
-
index.set(borrowVault, entries);
|
|
17517
|
-
}
|
|
17518
|
-
}
|
|
17519
|
-
return index;
|
|
17520
|
-
}
|
|
17521
|
-
function buildTokenConfig(vaultAddr, reverseLTV, forwardLTV, borrowVaults, clusterVaults) {
|
|
17504
|
+
function buildTokenConfig(vaultAddr, reverseLTV, borrowVaults, vaultData) {
|
|
17522
17505
|
const config = {};
|
|
17523
17506
|
const reverseEntries = reverseLTV.get(vaultAddr) ?? [];
|
|
17524
17507
|
for (const { borrowVault, ltv } of reverseEntries) {
|
|
17525
17508
|
if (!borrowVaults.has(borrowVault)) continue;
|
|
17526
17509
|
config[borrowVault] = {
|
|
17527
17510
|
category: borrowVault,
|
|
17511
|
+
label: findInfo(borrowVault, vaultData)?.vaultName ?? borrowVault,
|
|
17528
17512
|
borrowCollateralFactor: ltvToNumber(ltv.borrowLTV),
|
|
17529
17513
|
collateralFactor: ltvToNumber(ltv.liquidationLTV),
|
|
17530
17514
|
borrowFactor: 1
|
|
17531
17515
|
};
|
|
17532
17516
|
}
|
|
17533
|
-
if (borrowVaults.has(vaultAddr)) {
|
|
17534
|
-
const forwardEntries = forwardLTV.get(vaultAddr) ?? [];
|
|
17535
|
-
for (const { collateralVault } of forwardEntries) {
|
|
17536
|
-
if (!clusterVaults.has(collateralVault)) continue;
|
|
17537
|
-
if (config[collateralVault]) continue;
|
|
17538
|
-
config[collateralVault] = {
|
|
17539
|
-
category: collateralVault,
|
|
17540
|
-
borrowCollateralFactor: 0,
|
|
17541
|
-
collateralFactor: 0,
|
|
17542
|
-
borrowFactor: 1
|
|
17543
|
-
};
|
|
17544
|
-
}
|
|
17545
|
-
}
|
|
17546
17517
|
return config;
|
|
17547
17518
|
}
|
|
17548
17519
|
function buildEModes(borrowVaults, cluster) {
|
|
@@ -17652,10 +17623,6 @@ function findInfo(addr, vaultData) {
|
|
|
17652
17623
|
function normalizeCluster(cluster, opts) {
|
|
17653
17624
|
const borrowVaults = identifyBorrowVaults(cluster);
|
|
17654
17625
|
const reverseLTV = buildReverseLTVIndex(cluster);
|
|
17655
|
-
const forwardLTV = buildForwardLTVIndex(cluster);
|
|
17656
|
-
const clusterVaults = new Set(
|
|
17657
|
-
[...cluster.vaultData.keys()].map((a) => a.toLowerCase())
|
|
17658
|
-
);
|
|
17659
17626
|
const collateralActiveVaults = /* @__PURE__ */ new Set();
|
|
17660
17627
|
for (const [collateral, entries] of reverseLTV) {
|
|
17661
17628
|
if (entries.some((e) => borrowVaults.has(e.borrowVault))) {
|
|
@@ -17669,9 +17636,8 @@ function normalizeCluster(cluster, opts) {
|
|
|
17669
17636
|
const config = buildTokenConfig(
|
|
17670
17637
|
norm,
|
|
17671
17638
|
reverseLTV,
|
|
17672
|
-
forwardLTV,
|
|
17673
17639
|
borrowVaults,
|
|
17674
|
-
|
|
17640
|
+
cluster.vaultData
|
|
17675
17641
|
);
|
|
17676
17642
|
data[norm] = buildTokenEntry(
|
|
17677
17643
|
info,
|
|
@@ -18284,7 +18250,83 @@ function createCompoundV2Entry(i, data, key, assetsIn, vToken, meta, claimableRe
|
|
|
18284
18250
|
}
|
|
18285
18251
|
|
|
18286
18252
|
// src/lending/user-data/euler/userCallBuild.ts
|
|
18287
|
-
|
|
18253
|
+
Array.from(
|
|
18254
|
+
{ length: 256 },
|
|
18255
|
+
(_2, i) => i
|
|
18256
|
+
);
|
|
18257
|
+
var EULER_SUBGRAPH_BASE = "https://api.goldsky.com/api/public/project_cm4iagnemt1wp01xn4gh1agft/subgraphs";
|
|
18258
|
+
var EULER_SUBGRAPH_URLS = {
|
|
18259
|
+
"1": `${EULER_SUBGRAPH_BASE}/euler-v2-mainnet/latest/gn`,
|
|
18260
|
+
"10": `${EULER_SUBGRAPH_BASE}/euler-v2-optimism/latest/gn`,
|
|
18261
|
+
"56": `${EULER_SUBGRAPH_BASE}/euler-v2-bsc/latest/gn`,
|
|
18262
|
+
"100": `${EULER_SUBGRAPH_BASE}/euler-v2-gnosis/latest/gn`,
|
|
18263
|
+
"130": `${EULER_SUBGRAPH_BASE}/euler-v2-unichain/latest/gn`,
|
|
18264
|
+
"146": `${EULER_SUBGRAPH_BASE}/euler-v2-sonic/latest/gn`,
|
|
18265
|
+
"239": `${EULER_SUBGRAPH_BASE}/euler-v2-tac/latest/gn`,
|
|
18266
|
+
"480": `${EULER_SUBGRAPH_BASE}/euler-v2-worldchain/latest/gn`,
|
|
18267
|
+
"999": `${EULER_SUBGRAPH_BASE}/euler-v2-hyperevm/latest/gn`,
|
|
18268
|
+
"1923": `${EULER_SUBGRAPH_BASE}/euler-v2-swell/latest/gn`,
|
|
18269
|
+
"5000": `${EULER_SUBGRAPH_BASE}/euler-v2-mantle/latest/gn`,
|
|
18270
|
+
"8453": `${EULER_SUBGRAPH_BASE}/euler-v2-base/latest/gn`,
|
|
18271
|
+
"9745": `${EULER_SUBGRAPH_BASE}/euler-v2-plasma/latest/gn`,
|
|
18272
|
+
"42161": `${EULER_SUBGRAPH_BASE}/euler-v2-arbitrum/latest/gn`,
|
|
18273
|
+
"43114": `${EULER_SUBGRAPH_BASE}/euler-v2-avalanche/latest/gn`,
|
|
18274
|
+
"57073": `${EULER_SUBGRAPH_BASE}/euler-v2-ink/latest/gn`,
|
|
18275
|
+
"60808": `${EULER_SUBGRAPH_BASE}/euler-v2-bob/latest/gn`,
|
|
18276
|
+
"80094": `${EULER_SUBGRAPH_BASE}/euler-v2-berachain/latest/gn`
|
|
18277
|
+
};
|
|
18278
|
+
var SUBGRAPH_CACHE_TTL_MS = 3e4;
|
|
18279
|
+
var subgraphCache = /* @__PURE__ */ new Map();
|
|
18280
|
+
function fetchEulerSubAccountIndexes(chainId, owner) {
|
|
18281
|
+
const key = `${chainId}:${owner.toLowerCase()}`;
|
|
18282
|
+
const cached = subgraphCache.get(key);
|
|
18283
|
+
if (cached) return cached.promise;
|
|
18284
|
+
const promise = fetchSubAccountsFromSubgraph(chainId, owner).then((idxs) => idxs.length > 0 ? idxs : [0]).catch(() => [0]);
|
|
18285
|
+
const timer = setTimeout(
|
|
18286
|
+
() => subgraphCache.delete(key),
|
|
18287
|
+
SUBGRAPH_CACHE_TTL_MS
|
|
18288
|
+
);
|
|
18289
|
+
subgraphCache.set(key, { promise, timer });
|
|
18290
|
+
return promise;
|
|
18291
|
+
}
|
|
18292
|
+
async function fetchSubAccountsFromSubgraph(chainId, owner) {
|
|
18293
|
+
const url = EULER_SUBGRAPH_URLS[chainId];
|
|
18294
|
+
if (!url) return [0];
|
|
18295
|
+
const query2 = `{
|
|
18296
|
+
accounts(first: 100, where: { owner: "${owner.toLowerCase()}" }) {
|
|
18297
|
+
id
|
|
18298
|
+
subAccount
|
|
18299
|
+
}
|
|
18300
|
+
}`;
|
|
18301
|
+
const response = await fetch(url, {
|
|
18302
|
+
method: "POST",
|
|
18303
|
+
headers: { "Content-Type": "application/json" },
|
|
18304
|
+
body: JSON.stringify({ query: query2 })
|
|
18305
|
+
});
|
|
18306
|
+
if (!response.ok) return [0];
|
|
18307
|
+
const data = await response.json();
|
|
18308
|
+
const accounts = data?.data?.accounts;
|
|
18309
|
+
if (!accounts || accounts.length === 0) return [0];
|
|
18310
|
+
return accounts.map((a) => {
|
|
18311
|
+
const addr = a.subAccount || a.id;
|
|
18312
|
+
return getSubAccountIndex(addr);
|
|
18313
|
+
});
|
|
18314
|
+
}
|
|
18315
|
+
var RESOLVED_STORE_TTL_MS = 6e4;
|
|
18316
|
+
var resolvedIndexesStore = /* @__PURE__ */ new Map();
|
|
18317
|
+
function getResolvedEulerSubAccountIndexes(chainId, account) {
|
|
18318
|
+
return resolvedIndexesStore.get(`${chainId}:${account.toLowerCase()}`)?.indexes;
|
|
18319
|
+
}
|
|
18320
|
+
function storeResolvedIndexes(chainId, account, indexes) {
|
|
18321
|
+
const key = `${chainId}:${account.toLowerCase()}`;
|
|
18322
|
+
const existing = resolvedIndexesStore.get(key);
|
|
18323
|
+
if (existing) clearTimeout(existing.timer);
|
|
18324
|
+
const timer = setTimeout(
|
|
18325
|
+
() => resolvedIndexesStore.delete(key),
|
|
18326
|
+
RESOLVED_STORE_TTL_MS
|
|
18327
|
+
);
|
|
18328
|
+
resolvedIndexesStore.set(key, { indexes, timer });
|
|
18329
|
+
}
|
|
18288
18330
|
function getSubAccountAddress(owner, index) {
|
|
18289
18331
|
const prefix = owner.slice(0, 40);
|
|
18290
18332
|
const suffix = index.toString(16).padStart(2, "0");
|
|
@@ -18293,20 +18335,23 @@ function getSubAccountAddress(owner, index) {
|
|
|
18293
18335
|
function getSubAccountIndex(addr) {
|
|
18294
18336
|
return parseInt(addr.slice(40), 16);
|
|
18295
18337
|
}
|
|
18296
|
-
|
|
18338
|
+
function resolveSubAccountIndexes(account, subAccountIndexes) {
|
|
18339
|
+
const ownerIndex = getSubAccountIndex(account);
|
|
18340
|
+
const indices = new Set(subAccountIndexes);
|
|
18341
|
+
indices.add(ownerIndex);
|
|
18342
|
+
return [...indices].sort((a, b) => a - b);
|
|
18343
|
+
}
|
|
18344
|
+
var buildEulerUserCall = async (chainId, lender, account, subAccountIndexes) => {
|
|
18345
|
+
console.log("subAccountIndexes", subAccountIndexes);
|
|
18297
18346
|
if (!ENABLED_EULER_V2_CHAINS.includes(chainId)) return [];
|
|
18298
18347
|
const config = eulerConfigs()?.[lender]?.[chainId];
|
|
18299
18348
|
if (!config) return [];
|
|
18300
18349
|
const accountLensAddress = config.accountLens;
|
|
18301
18350
|
const evcAddress = config.evc;
|
|
18302
18351
|
if (!accountLensAddress || !evcAddress) return [];
|
|
18303
|
-
const
|
|
18304
|
-
const
|
|
18305
|
-
|
|
18306
|
-
for (let i = 0; indices.size < maxSubAccounts && i < 256; i++) {
|
|
18307
|
-
indices.add(i);
|
|
18308
|
-
}
|
|
18309
|
-
const sortedIndices = [...indices].sort((a, b) => a - b);
|
|
18352
|
+
const indexes = subAccountIndexes ?? await fetchEulerSubAccountIndexes(chainId, account);
|
|
18353
|
+
const sortedIndices = resolveSubAccountIndexes(account, indexes);
|
|
18354
|
+
storeResolvedIndexes(chainId, account, indexes);
|
|
18310
18355
|
return sortedIndices.map((i) => ({
|
|
18311
18356
|
address: accountLensAddress,
|
|
18312
18357
|
name: "getAccountEnabledVaultsInfo",
|
|
@@ -18315,7 +18360,7 @@ var buildEulerUserCall = (chainId, lender, account, maxSubAccounts = DEFAULT_MAX
|
|
|
18315
18360
|
};
|
|
18316
18361
|
|
|
18317
18362
|
// src/lending/user-data/fetch-balances/prepare.ts
|
|
18318
|
-
function buildUserCall(chainId, lender, account, params) {
|
|
18363
|
+
async function buildUserCall(chainId, lender, account, params) {
|
|
18319
18364
|
if (isAaveV2Type(lender)) return buildAaveV2UserCall(chainId, lender, account);
|
|
18320
18365
|
if (isAaveV3Type(lender)) return buildAaveV3UserCall(chainId, lender, account);
|
|
18321
18366
|
if (isInit(lender)) return buildInitUserCall(chainId, lender, account);
|
|
@@ -18324,7 +18369,7 @@ function buildUserCall(chainId, lender, account, params) {
|
|
|
18324
18369
|
if (isCompoundV3Type(lender))
|
|
18325
18370
|
return buildCompoundV3UserCall(chainId, lender, account);
|
|
18326
18371
|
if (isEulerType(lender))
|
|
18327
|
-
return buildEulerUserCall(chainId, lender, account);
|
|
18372
|
+
return buildEulerUserCall(chainId, lender, account, params?.subAccountIndexes);
|
|
18328
18373
|
return buildCompoundV2UserCall(chainId, lender, account);
|
|
18329
18374
|
}
|
|
18330
18375
|
function organizeUserQueries(queries) {
|
|
@@ -19207,16 +19252,16 @@ function createMorphoEntryFromMarketWithLens(balanceInfo, metaMap, chainId, lend
|
|
|
19207
19252
|
|
|
19208
19253
|
// src/lending/user-data/utils/createEulerMultiAccountTypeUserState.ts
|
|
19209
19254
|
function createEulerMultiAccountTypeUserState(payload, lenderData, histData) {
|
|
19210
|
-
const
|
|
19255
|
+
const subAccountIndexes = Object.keys(payload.lendingPositions ?? {});
|
|
19211
19256
|
const marketUids = getMarketUidsFromMeta(lenderData);
|
|
19212
19257
|
const { chainId, account } = payload;
|
|
19213
19258
|
const data = [];
|
|
19214
|
-
for (let j = 0; j <
|
|
19215
|
-
const
|
|
19216
|
-
const controller = payload.controllers?.[
|
|
19259
|
+
for (let j = 0; j < subAccountIndexes.length; j++) {
|
|
19260
|
+
const subAccountIndex = subAccountIndexes[j];
|
|
19261
|
+
const controller = payload.controllers?.[subAccountIndex];
|
|
19217
19262
|
const configKey = controller ?? String(LENDER_MODE_NO_MODE);
|
|
19218
19263
|
const userConfig = {
|
|
19219
|
-
id:
|
|
19264
|
+
id: subAccountIndex,
|
|
19220
19265
|
selectedMode: configKey,
|
|
19221
19266
|
isWhitelisted: true
|
|
19222
19267
|
};
|
|
@@ -19233,9 +19278,9 @@ function createEulerMultiAccountTypeUserState(payload, lenderData, histData) {
|
|
|
19233
19278
|
let adjustedDebt = 0;
|
|
19234
19279
|
for (let i = 0; i < marketUids.length; i++) {
|
|
19235
19280
|
const marketUid = marketUids[i];
|
|
19236
|
-
if (!lenderData?.[marketUid] || !payload.lendingPositions[
|
|
19281
|
+
if (!lenderData?.[marketUid] || !payload.lendingPositions[subAccountIndex][marketUid])
|
|
19237
19282
|
continue;
|
|
19238
|
-
const pos = payload.lendingPositions[
|
|
19283
|
+
const pos = payload.lendingPositions[subAccountIndex][marketUid];
|
|
19239
19284
|
const { depositsUSD, debtUSD } = pos;
|
|
19240
19285
|
const depositsUSDOracle = pos.depositsUSDOracle ?? depositsUSD;
|
|
19241
19286
|
const debtUSDOracle = pos.debtUSDOracle ?? debtUSD;
|
|
@@ -19271,9 +19316,9 @@ function createEulerMultiAccountTypeUserState(payload, lenderData, histData) {
|
|
|
19271
19316
|
debt,
|
|
19272
19317
|
adjustedDebt,
|
|
19273
19318
|
nav,
|
|
19274
|
-
deposits24h: histData[
|
|
19275
|
-
debt24h: histData[
|
|
19276
|
-
nav24h: histData[
|
|
19319
|
+
deposits24h: histData[subAccountIndex]?.totalDeposits24h,
|
|
19320
|
+
debt24h: histData[subAccountIndex]?.totalDebt24h,
|
|
19321
|
+
nav24h: histData[subAccountIndex]?.totalDeposits24h - histData[subAccountIndex]?.totalDebt24h
|
|
19277
19322
|
};
|
|
19278
19323
|
const aprData2 = {
|
|
19279
19324
|
apr: safeDivide(depositInterest - borrowInterest, nav),
|
|
@@ -19299,7 +19344,7 @@ function createEulerMultiAccountTypeUserState(payload, lenderData, histData) {
|
|
|
19299
19344
|
const price = getOraclePrice(lenderData[marketUid]);
|
|
19300
19345
|
const bcf = config?.borrowCollateralFactor ?? 1;
|
|
19301
19346
|
const bf = config?.borrowFactor ?? 1;
|
|
19302
|
-
const pos = payload.lendingPositions[
|
|
19347
|
+
const pos = payload.lendingPositions[subAccountIndex]?.[marketUid];
|
|
19303
19348
|
if (pos) {
|
|
19304
19349
|
let withdrawable;
|
|
19305
19350
|
if (!pos.collateralEnabled || config?.collateralDisabled) {
|
|
@@ -19334,7 +19379,7 @@ function createEulerMultiAccountTypeUserState(payload, lenderData, histData) {
|
|
|
19334
19379
|
if (borrowLiquidity != null) {
|
|
19335
19380
|
borrowable = String(Math.min(Number(borrowable), borrowLiquidity));
|
|
19336
19381
|
}
|
|
19337
|
-
payload.lendingPositions[
|
|
19382
|
+
payload.lendingPositions[subAccountIndex][marketUid] = {
|
|
19338
19383
|
marketUid,
|
|
19339
19384
|
underlying: lenderData[marketUid].underlying,
|
|
19340
19385
|
deposits: "0",
|
|
@@ -19354,13 +19399,13 @@ function createEulerMultiAccountTypeUserState(payload, lenderData, histData) {
|
|
|
19354
19399
|
}
|
|
19355
19400
|
}
|
|
19356
19401
|
data.push({
|
|
19357
|
-
accountId:
|
|
19402
|
+
accountId: subAccountIndex,
|
|
19358
19403
|
health: balanceData2.debt === 0 ? null : balanceData2.adjustedDebt > 0 ? balanceData2.borrowDiscountedCollateral / balanceData2.adjustedDebt : balanceData2.collateral / balanceData2.debt,
|
|
19359
19404
|
borrowCapacityUSD: creditLine,
|
|
19360
19405
|
userConfig,
|
|
19361
19406
|
balanceData: balanceData2,
|
|
19362
19407
|
aprData: aprData2,
|
|
19363
|
-
positions: Object.values(payload.lendingPositions[
|
|
19408
|
+
positions: Object.values(payload.lendingPositions[subAccountIndex])
|
|
19364
19409
|
});
|
|
19365
19410
|
}
|
|
19366
19411
|
return {
|
|
@@ -19372,14 +19417,9 @@ function createEulerMultiAccountTypeUserState(payload, lenderData, histData) {
|
|
|
19372
19417
|
}
|
|
19373
19418
|
|
|
19374
19419
|
// src/lending/user-data/euler/userCallParse.ts
|
|
19375
|
-
var getEulerUserDataConverter = (lender, chainId, account, metaMap,
|
|
19376
|
-
const
|
|
19377
|
-
const
|
|
19378
|
-
indices.add(ownerIndex);
|
|
19379
|
-
for (let i = 0; indices.size < maxSubAccounts && i < 256; i++) {
|
|
19380
|
-
indices.add(i);
|
|
19381
|
-
}
|
|
19382
|
-
const sortedIndices = [...indices].sort((a, b) => a - b);
|
|
19420
|
+
var getEulerUserDataConverter = (lender, chainId, account, metaMap, subAccountIndexes) => {
|
|
19421
|
+
const effectiveIndexes = subAccountIndexes ?? getResolvedEulerSubAccountIndexes(chainId, account) ?? [0];
|
|
19422
|
+
const sortedIndices = resolveSubAccountIndexes(account, effectiveIndexes);
|
|
19383
19423
|
const expectedNumberOfCalls = sortedIndices.length;
|
|
19384
19424
|
return [
|
|
19385
19425
|
(_data) => {
|
|
@@ -19395,14 +19435,11 @@ var getEulerUserDataConverter = (lender, chainId, account, metaMap, maxSubAccoun
|
|
|
19395
19435
|
const evcInfo = result.evcAccountInfo ?? result[0];
|
|
19396
19436
|
const vaultAccounts = result.vaultAccountInfo ?? result[1] ?? [];
|
|
19397
19437
|
if (vaultAccounts.length === 0) continue;
|
|
19398
|
-
const
|
|
19399
|
-
account,
|
|
19400
|
-
sortedIndices[idx]
|
|
19401
|
-
).toLowerCase();
|
|
19438
|
+
const subAccountId = String(sortedIndices[idx]);
|
|
19402
19439
|
const enabledControllers = (evcInfo?.enabledControllers ?? []).map((a) => a.toLowerCase());
|
|
19403
19440
|
const controller = enabledControllers.length > 0 ? enabledControllers[0] : void 0;
|
|
19404
19441
|
if (controller) {
|
|
19405
|
-
controllers[
|
|
19442
|
+
controllers[subAccountId] = controller;
|
|
19406
19443
|
}
|
|
19407
19444
|
const positions = {};
|
|
19408
19445
|
let totalDebt24h = 0;
|
|
@@ -19446,8 +19483,8 @@ var getEulerUserDataConverter = (lender, chainId, account, metaMap, maxSubAccoun
|
|
|
19446
19483
|
};
|
|
19447
19484
|
}
|
|
19448
19485
|
if (Object.keys(positions).length > 0) {
|
|
19449
|
-
lendingPositions[
|
|
19450
|
-
histData[
|
|
19486
|
+
lendingPositions[subAccountId] = positions;
|
|
19487
|
+
histData[subAccountId] = { totalDebt24h, totalDeposits24h };
|
|
19451
19488
|
}
|
|
19452
19489
|
}
|
|
19453
19490
|
if (Object.keys(lendingPositions).length === 0) {
|
|
@@ -19491,7 +19528,7 @@ function getUserDataConverter(lender, chainId, account, params, meta) {
|
|
|
19491
19528
|
meta?.[lender]
|
|
19492
19529
|
);
|
|
19493
19530
|
if (isEulerType(lender))
|
|
19494
|
-
return getEulerUserDataConverter(lender, chainId, account, meta?.[lender]);
|
|
19531
|
+
return getEulerUserDataConverter(lender, chainId, account, meta?.[lender], params?.subAccountIndexes);
|
|
19495
19532
|
return getCompoundV2UserDataConverter(
|
|
19496
19533
|
lender,
|
|
19497
19534
|
chainId,
|
|
@@ -24279,7 +24316,7 @@ var getLenderUserDataResult = async (chainId, queriesRaw, getEvmClient3, allowFa
|
|
|
24279
24316
|
const queries = organizeUserQueries(queriesRaw);
|
|
24280
24317
|
for (const query2 of queries) {
|
|
24281
24318
|
const abi = getAbi2(query2.lender);
|
|
24282
|
-
const callData = buildUserCall(
|
|
24319
|
+
const callData = await buildUserCall(
|
|
24283
24320
|
chainId,
|
|
24284
24321
|
query2.lender,
|
|
24285
24322
|
query2.account,
|
|
@@ -24301,13 +24338,13 @@ var getLenderUserDataResult = async (chainId, queriesRaw, getEvmClient3, allowFa
|
|
|
24301
24338
|
logs
|
|
24302
24339
|
);
|
|
24303
24340
|
};
|
|
24304
|
-
var prepareLenderUserDataRpcCalls = (chainId, queriesRaw, batchSize = MULTICALL_DEFAULT_BATCH_SIZE, blockTag = "latest",
|
|
24341
|
+
var prepareLenderUserDataRpcCalls = async (chainId, queriesRaw, batchSize = MULTICALL_DEFAULT_BATCH_SIZE, blockTag = "latest", allowFailure = true) => {
|
|
24305
24342
|
let calls = [];
|
|
24306
24343
|
const multicallAddress = getEvmChain(chainId).contracts?.multicall3?.address;
|
|
24307
24344
|
const queries = organizeUserQueries(queriesRaw);
|
|
24308
24345
|
for (const query2 of queries) {
|
|
24309
24346
|
const abi = getAbi2(query2.lender);
|
|
24310
|
-
const callData = buildUserCall(
|
|
24347
|
+
const callData = await buildUserCall(
|
|
24311
24348
|
chainId,
|
|
24312
24349
|
query2.lender,
|
|
24313
24350
|
query2.account,
|
|
@@ -24398,7 +24435,7 @@ var EMPTY_TOKEN_APPROVAL_META = {
|
|
|
24398
24435
|
tokenAddresses: [],
|
|
24399
24436
|
spenders: []
|
|
24400
24437
|
};
|
|
24401
|
-
function prepareMergedRpcCalls(chainId, balanceQueries, permissionParams, tokenApprovalParams, batchSize = MULTICALL_DEFAULT_BATCH_SIZE, blockTag = "latest", allowFailure = true) {
|
|
24438
|
+
async function prepareMergedRpcCalls(chainId, balanceQueries, permissionParams, tokenApprovalParams, batchSize = MULTICALL_DEFAULT_BATCH_SIZE, blockTag = "latest", allowFailure = true) {
|
|
24402
24439
|
const multicallAddress = getEvmChain(chainId).contracts?.multicall3?.address;
|
|
24403
24440
|
let tokenApprovalPreparedCalls = [];
|
|
24404
24441
|
let tokenApprovalMeta = EMPTY_TOKEN_APPROVAL_META;
|
|
@@ -24423,7 +24460,7 @@ function prepareMergedRpcCalls(chainId, balanceQueries, permissionParams, tokenA
|
|
|
24423
24460
|
const organizedQueries = organizeUserQueries(balanceQueries);
|
|
24424
24461
|
for (const query2 of organizedQueries) {
|
|
24425
24462
|
const abi = getAbi2(query2.lender);
|
|
24426
|
-
const callData = buildUserCall(
|
|
24463
|
+
const callData = await buildUserCall(
|
|
24427
24464
|
chainId,
|
|
24428
24465
|
query2.lender,
|
|
24429
24466
|
query2.account,
|
|
@@ -24459,7 +24496,7 @@ function prepareMergedRpcCalls(chainId, balanceQueries, permissionParams, tokenA
|
|
|
24459
24496
|
balanceQueries
|
|
24460
24497
|
};
|
|
24461
24498
|
}
|
|
24462
|
-
function prepareMergedMulticallParams(chainId, balanceQueries, permissionParams, tokenApprovalParams) {
|
|
24499
|
+
async function prepareMergedMulticallParams(chainId, balanceQueries, permissionParams, tokenApprovalParams) {
|
|
24463
24500
|
let tokenApprovalCalls = [];
|
|
24464
24501
|
let tokenApprovalAbis = [];
|
|
24465
24502
|
let tokenApprovalMeta = EMPTY_TOKEN_APPROVAL_META;
|
|
@@ -24488,7 +24525,7 @@ function prepareMergedMulticallParams(chainId, balanceQueries, permissionParams,
|
|
|
24488
24525
|
const organizedQueries = organizeUserQueries(balanceQueries);
|
|
24489
24526
|
for (const query2 of organizedQueries) {
|
|
24490
24527
|
const abi = getAbi2(query2.lender);
|
|
24491
|
-
const callData = buildUserCall(
|
|
24528
|
+
const callData = await buildUserCall(
|
|
24492
24529
|
chainId,
|
|
24493
24530
|
query2.lender,
|
|
24494
24531
|
query2.account,
|
|
@@ -24550,7 +24587,7 @@ function parseMergedResult(chainId, rawResults, prepared, lenderState) {
|
|
|
24550
24587
|
|
|
24551
24588
|
// src/lending/user-data/with-permissions/e2e.ts
|
|
24552
24589
|
async function getMergedUserData(chainId, balanceQueries, permissionParams, lenderState, multicallRetry3, batchSize = MULTICALL_DEFAULT_BATCH_SIZE, maxRetries2 = 3, tokenApprovalParams) {
|
|
24553
|
-
const prepared = prepareMergedMulticallParams(
|
|
24590
|
+
const prepared = await prepareMergedMulticallParams(
|
|
24554
24591
|
chainId,
|
|
24555
24592
|
balanceQueries,
|
|
24556
24593
|
permissionParams,
|