@1delta/margin-fetcher 5.0.90 → 5.0.91
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 +248 -37
- package/dist/index.js +862 -565
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { parseAbi, keccak256, encodeAbiParameters, formatEther, BaseError, erc20Abi, isAddress, stringToHex, pad, encodeFunctionData,
|
|
1
|
+
import { parseAbi, keccak256, encodeAbiParameters, formatEther, BaseError, erc20Abi, isAddress, stringToHex, pad, encodeFunctionData, decodeFunctionResult, decodeAbiParameters, formatUnits, getAddress, toBytes, slice, concat, AbiEncodingLengthMismatchError, concatHex, parseAbiParameters, hexToString, InvalidAddressError, boolToHex, integerRegex, numberToHex, bytesRegex, BytesSizeMismatchError, arrayRegex, UnsupportedPackedAbiType } from './chunk-JUYF2XLF.js';
|
|
2
2
|
import './chunk-BYTNVMX7.js';
|
|
3
3
|
import './chunk-PR4QN5HX.js';
|
|
4
4
|
import { Lender, isExactly, isMidnight, isTerm, isTermMax, isTeller, isListaDao, isLiquityFamily, isRiver, isInverse, isCooler, isDssType, isCompoundV3Type, isFluid, isGearboxV3, isLlamaLend, isFrankencoin, isResupply, isCurvance, isFlyingTulip, isTwyne, isFraxlend, isAaveV4Type, LIQUITY_FAMILY_LENDERS, isAaveType, isCompoundV3, isCompoundV2Type, isMultiMarket, isSiloV2Type, isSiloV3Type, isDolomite, isMorphoType, isUsdd, isSky, hasCrossMarginRisk, isEulerType, isInit, isVenusType, isSumerType, AAVE_V3_LENDERS, AAVE_V2_LENDERS, isMorphoBlue, isAaveV2Type, isAaveV32Type, isAaveV3Type, isYLDR, isLista, hasSubAccounts, isTectonicType, isKineticType, isBenqiType } from '@1delta/lender-registry';
|
|
@@ -10656,6 +10656,7 @@ var brokerAbi = parseAbi([
|
|
|
10656
10656
|
]);
|
|
10657
10657
|
var BROKER_CACHE = {};
|
|
10658
10658
|
var FIXED_TERMS_CACHE = {};
|
|
10659
|
+
var brokerUserCacheKey = (chainId, account, blockNumber) => `${chainId}:${account.toLowerCase()}:${blockNumber === void 0 ? "head" : blockNumber.toString()}`;
|
|
10659
10660
|
var BROKER_USER_CACHE = {};
|
|
10660
10661
|
var FIXED_TERMS_INFLIGHT = {};
|
|
10661
10662
|
function toBytes32MarketId(key3) {
|
|
@@ -10820,11 +10821,11 @@ async function fetchListaFixedTerms(chainId, marketKeys, multicallRetry) {
|
|
|
10820
10821
|
function getCachedListaFixedTerms(chainId, marketKey2) {
|
|
10821
10822
|
return FIXED_TERMS_CACHE[chainId]?.[toBytes32MarketId(marketKey2)];
|
|
10822
10823
|
}
|
|
10823
|
-
async function fetchListaBrokerUserData(chainId, account, marketKeys, nowSecs = Math.floor(Date.now() / 1e3), getClient = getEvmClient) {
|
|
10824
|
+
async function fetchListaBrokerUserData(chainId, account, marketKeys, nowSecs = Math.floor(Date.now() / 1e3), getClient = getEvmClient, blockNumber) {
|
|
10824
10825
|
const brokers = await resolveListaBrokers(chainId, marketKeys, getClient);
|
|
10825
10826
|
const ids = Object.keys(brokers);
|
|
10826
10827
|
const out = {};
|
|
10827
|
-
const cacheKey7 =
|
|
10828
|
+
const cacheKey7 = brokerUserCacheKey(chainId, account, blockNumber);
|
|
10828
10829
|
BROKER_USER_CACHE[cacheKey7] = out;
|
|
10829
10830
|
if (ids.length === 0) return out;
|
|
10830
10831
|
try {
|
|
@@ -10858,7 +10859,11 @@ async function fetchListaBrokerUserData(chainId, account, marketKeys, nowSecs =
|
|
|
10858
10859
|
}
|
|
10859
10860
|
];
|
|
10860
10861
|
});
|
|
10861
|
-
const results = await client.multicall({
|
|
10862
|
+
const results = await client.multicall({
|
|
10863
|
+
allowFailure: true,
|
|
10864
|
+
contracts,
|
|
10865
|
+
...blockNumber === void 0 ? {} : { blockNumber }
|
|
10866
|
+
});
|
|
10862
10867
|
const now = BigInt(nowSecs);
|
|
10863
10868
|
ids.forEach((id, marketIdx) => {
|
|
10864
10869
|
const base = marketIdx * 4;
|
|
@@ -10931,8 +10936,8 @@ async function fetchListaBrokerUserData(chainId, account, marketKeys, nowSecs =
|
|
|
10931
10936
|
}
|
|
10932
10937
|
return out;
|
|
10933
10938
|
}
|
|
10934
|
-
function getCachedListaBrokerUserData(chainId, account, marketKey2) {
|
|
10935
|
-
return BROKER_USER_CACHE[
|
|
10939
|
+
function getCachedListaBrokerUserData(chainId, account, marketKey2, blockNumber) {
|
|
10940
|
+
return BROKER_USER_CACHE[brokerUserCacheKey(chainId, account, blockNumber)]?.[toBytes32MarketId(marketKey2)];
|
|
10936
10941
|
}
|
|
10937
10942
|
var { chunk } = lodash;
|
|
10938
10943
|
var MORPHO_LENS = {
|
|
@@ -10996,22 +11001,17 @@ var buildMorphoUserCallWithLens = (chainId, account, lender, marketsToQuery) =>
|
|
|
10996
11001
|
]
|
|
10997
11002
|
}));
|
|
10998
11003
|
};
|
|
10999
|
-
var buildMorphoTypeUserCallWithLens = (chainId, account, lender, marketsToQuery,
|
|
11000
|
-
return lender === Lender.MORPHO_BLUE ? buildMorphoUserCallWithLens(chainId, account, lender, marketsToQuery) : buildListaUserCallWithLens(
|
|
11001
|
-
chainId,
|
|
11002
|
-
account,
|
|
11003
|
-
lender,
|
|
11004
|
-
marketsToQuery,
|
|
11005
|
-
getClient
|
|
11006
|
-
);
|
|
11004
|
+
var buildMorphoTypeUserCallWithLens = (chainId, account, lender, marketsToQuery, opts) => {
|
|
11005
|
+
return lender === Lender.MORPHO_BLUE ? buildMorphoUserCallWithLens(chainId, account, lender, marketsToQuery) : buildListaUserCallWithLens(chainId, account, lender, marketsToQuery, opts);
|
|
11007
11006
|
};
|
|
11008
|
-
var buildListaUserCallWithLens = async (chainId, account, lender, marketsToQuery,
|
|
11007
|
+
var buildListaUserCallWithLens = async (chainId, account, lender, marketsToQuery, opts) => {
|
|
11009
11008
|
await fetchListaBrokerUserData(
|
|
11010
11009
|
chainId,
|
|
11011
11010
|
account,
|
|
11012
11011
|
marketsToQuery,
|
|
11013
11012
|
void 0,
|
|
11014
|
-
getClient
|
|
11013
|
+
opts?.getClient,
|
|
11014
|
+
opts?.blockNumber
|
|
11015
11015
|
).catch(() => ({}));
|
|
11016
11016
|
const marketSlices = chunk(marketsToQuery, 100);
|
|
11017
11017
|
return marketSlices.flatMap((marketsInChunk) => ({
|
|
@@ -12018,7 +12018,7 @@ function createSumerUserState(payload, lenderData, totalDeposits24h = 0, totalDe
|
|
|
12018
12018
|
}
|
|
12019
12019
|
|
|
12020
12020
|
// src/lending/user-data/utils/createMultiAccountStyleUserState.ts
|
|
12021
|
-
function createMultiAccountTypeUserState(payload, lenderData, histData) {
|
|
12021
|
+
function createMultiAccountTypeUserState(payload, lenderData, histData, accountAddresses) {
|
|
12022
12022
|
const positionKeys = Object.keys(payload.lendingPositions ?? {});
|
|
12023
12023
|
let marketUids2 = getMarketUidsFromMeta(lenderData);
|
|
12024
12024
|
const { chainId, account } = payload;
|
|
@@ -12094,7 +12094,10 @@ function createMultiAccountTypeUserState(payload, lenderData, histData) {
|
|
|
12094
12094
|
rewardApr: safeDivide(rewardDepositAccrual + rewardBorrowAccrual, nav),
|
|
12095
12095
|
rewardDepositApr: safeDivide(rewardDepositAccrual, deposits),
|
|
12096
12096
|
rewardBorrowApr: safeDivide(rewardBorrowAccrual, debt),
|
|
12097
|
-
intrinsicApr: safeDivide(
|
|
12097
|
+
intrinsicApr: safeDivide(
|
|
12098
|
+
stakingDepositAccrual - stakingBorrowAccrual,
|
|
12099
|
+
nav
|
|
12100
|
+
),
|
|
12098
12101
|
intrinsicDepositApr: safeDivide(stakingDepositAccrual, deposits),
|
|
12099
12102
|
intrinsicBorrowApr: safeDivide(stakingBorrowAccrual, debt),
|
|
12100
12103
|
rewards: {}
|
|
@@ -12117,10 +12120,14 @@ function createMultiAccountTypeUserState(payload, lenderData, histData) {
|
|
|
12117
12120
|
withdrawable = String(pos.deposits);
|
|
12118
12121
|
} else {
|
|
12119
12122
|
const withdrawableUSD = Math.max(creditLine / bcf, 0);
|
|
12120
|
-
withdrawable = String(
|
|
12123
|
+
withdrawable = String(
|
|
12124
|
+
Math.min(withdrawableUSD / price2, Number(pos.deposits))
|
|
12125
|
+
);
|
|
12121
12126
|
}
|
|
12122
12127
|
if (withdrawLiquidity != null) {
|
|
12123
|
-
withdrawable = String(
|
|
12128
|
+
withdrawable = String(
|
|
12129
|
+
Math.min(Number(withdrawable), withdrawLiquidity)
|
|
12130
|
+
);
|
|
12124
12131
|
}
|
|
12125
12132
|
let borrowable;
|
|
12126
12133
|
if (!flags?.borrowingEnabled || flags?.isFrozen || config?.debtDisabled) {
|
|
@@ -12134,7 +12141,9 @@ function createMultiAccountTypeUserState(payload, lenderData, histData) {
|
|
|
12134
12141
|
}
|
|
12135
12142
|
pos.withdrawable = withdrawable;
|
|
12136
12143
|
pos.borrowable = borrowable;
|
|
12137
|
-
pos.underlyingInfo = buildUnderlyingInfo(
|
|
12144
|
+
pos.underlyingInfo = buildUnderlyingInfo(
|
|
12145
|
+
lenderData[marketUid]
|
|
12146
|
+
);
|
|
12138
12147
|
} else if ((deposits > 0 || debt > 0) && flags?.borrowingEnabled && !flags?.isFrozen && !config?.debtDisabled) {
|
|
12139
12148
|
let borrowable = String(Math.max(creditLine / bf, 0) / price2);
|
|
12140
12149
|
if (borrowLiquidity != null) {
|
|
@@ -12156,6 +12165,7 @@ function createMultiAccountTypeUserState(payload, lenderData, histData) {
|
|
|
12156
12165
|
}
|
|
12157
12166
|
data.push({
|
|
12158
12167
|
accountId: posId,
|
|
12168
|
+
...accountAddresses?.[posId] ? { accountAddress: accountAddresses[posId] } : {},
|
|
12159
12169
|
health: balanceData2.debt === 0 ? null : balanceData2.adjustedDebt > 0 ? balanceData2.borrowDiscountedCollateral / balanceData2.adjustedDebt : balanceData2.collateral / balanceData2.debt,
|
|
12160
12170
|
borrowCapacityUSD: creditLine,
|
|
12161
12171
|
userConfig,
|
|
@@ -12173,6 +12183,27 @@ function createMultiAccountTypeUserState(payload, lenderData, histData) {
|
|
|
12173
12183
|
data
|
|
12174
12184
|
};
|
|
12175
12185
|
}
|
|
12186
|
+
|
|
12187
|
+
// src/lending/user-data/utils/readContext.ts
|
|
12188
|
+
var blockNumberFromTag = (blockTag) => {
|
|
12189
|
+
if (blockTag === void 0 || blockTag === null) return void 0;
|
|
12190
|
+
if (typeof blockTag === "bigint") return blockTag;
|
|
12191
|
+
if (typeof blockTag === "number")
|
|
12192
|
+
return Number.isInteger(blockTag) && blockTag >= 0 ? BigInt(blockTag) : void 0;
|
|
12193
|
+
const s = blockTag.trim();
|
|
12194
|
+
if (!/^(0x[0-9a-fA-F]+|\d+)$/.test(s)) return void 0;
|
|
12195
|
+
try {
|
|
12196
|
+
return BigInt(s);
|
|
12197
|
+
} catch {
|
|
12198
|
+
return void 0;
|
|
12199
|
+
}
|
|
12200
|
+
};
|
|
12201
|
+
var blockKey = (opts) => opts?.blockNumber === void 0 ? "head" : opts.blockNumber.toString();
|
|
12202
|
+
var discoveryMulticall = (params, opts) => multicallRetryUniversal({
|
|
12203
|
+
...params,
|
|
12204
|
+
...opts?.blockNumber === void 0 ? {} : { blockNumber: opts.blockNumber },
|
|
12205
|
+
...opts?.rpcOverrides === void 0 ? {} : { overrides: opts.rpcOverrides }
|
|
12206
|
+
});
|
|
12176
12207
|
var isFixedTermLender = (lender) => isMidnight(lender) || isTerm(lender) || isTermMax(lender) || isTeller(lender) || isExactly(lender);
|
|
12177
12208
|
function positionUnitKind(lenderKey, p) {
|
|
12178
12209
|
const hasShares = p.depositShares !== void 0 || p.debtShares !== void 0;
|
|
@@ -30471,6 +30502,166 @@ var getLenderPublicDataAll = async (chainId, lenders, prices, additionalYields,
|
|
|
30471
30502
|
}
|
|
30472
30503
|
return { ...onChainRes, ...apiRes };
|
|
30473
30504
|
};
|
|
30505
|
+
var marketKeysOf = (params) => Array.isArray(params) ? params : void 0;
|
|
30506
|
+
var subAccountsOf = (params) => params === void 0 || Array.isArray(params) ? void 0 : params;
|
|
30507
|
+
function organizeUserQueries(queries) {
|
|
30508
|
+
const morphos = queries.filter((q) => isMorphoType(q.lender));
|
|
30509
|
+
const gearbox = queries.filter((q) => isGearboxV3(q.lender));
|
|
30510
|
+
const midnight = queries.filter((q) => isMidnight(q.lender));
|
|
30511
|
+
const term = queries.filter((q) => isTerm(q.lender));
|
|
30512
|
+
const exactly = queries.filter((q) => isExactly(q.lender));
|
|
30513
|
+
const liquity = queries.filter((q) => isLiquityFamily(q.lender));
|
|
30514
|
+
const river = queries.filter((q) => isRiver(q.lender));
|
|
30515
|
+
const teller = queries.filter((q) => isTeller(q.lender));
|
|
30516
|
+
const termMax = queries.filter((q) => isTermMax(q.lender));
|
|
30517
|
+
const usdd = queries.filter((q) => isUsdd(q.lender));
|
|
30518
|
+
const sky = queries.filter((q) => isSky(q.lender));
|
|
30519
|
+
const llamaLend = queries.filter((q) => isLlamaLend(q.lender));
|
|
30520
|
+
const siloV2 = queries.filter((q) => isSiloV2Type(q.lender));
|
|
30521
|
+
const siloV3 = queries.filter((q) => isSiloV3Type(q.lender));
|
|
30522
|
+
const frankencoin = queries.filter((q) => isFrankencoin(q.lender));
|
|
30523
|
+
if (morphos.length === 0 && gearbox.length === 0 && midnight.length === 0 && term.length === 0 && exactly.length === 0 && liquity.length === 0 && river.length === 0 && teller.length === 0 && termMax.length === 0 && usdd.length === 0 && sky.length === 0 && frankencoin.length === 0 && llamaLend.length === 0 && siloV2.length === 0 && siloV3.length === 0)
|
|
30524
|
+
return queries;
|
|
30525
|
+
const others = queries.filter(
|
|
30526
|
+
(q) => !isMorphoType(q.lender) && !isGearboxV3(q.lender) && !isMidnight(q.lender) && !isTerm(q.lender) && !isExactly(q.lender) && !isLiquityFamily(q.lender) && !isRiver(q.lender) && !isTeller(q.lender) && !isTermMax(q.lender) && !isDssType(q.lender) && !isFrankencoin(q.lender) && !isLlamaLend(q.lender) && !isSiloV2Type(q.lender) && !isSiloV3Type(q.lender)
|
|
30527
|
+
);
|
|
30528
|
+
const morphoBlue = morphos.filter((q) => q.lender.startsWith("MORPHO_BLUE"));
|
|
30529
|
+
const moolah = morphos.filter((q) => q.lender.startsWith("LISTA_DAO"));
|
|
30530
|
+
const result = [...others];
|
|
30531
|
+
if (morphoBlue.length > 0) {
|
|
30532
|
+
result.push({
|
|
30533
|
+
lender: Lender.MORPHO_BLUE,
|
|
30534
|
+
account: morphoBlue[0].account,
|
|
30535
|
+
params: morphoBlue.map((p) => p.lender),
|
|
30536
|
+
assets: void 0
|
|
30537
|
+
});
|
|
30538
|
+
}
|
|
30539
|
+
if (moolah.length > 0) {
|
|
30540
|
+
result.push({
|
|
30541
|
+
lender: Lender.LISTA_DAO,
|
|
30542
|
+
account: moolah[0].account,
|
|
30543
|
+
params: moolah.map((p) => p.lender),
|
|
30544
|
+
assets: void 0
|
|
30545
|
+
});
|
|
30546
|
+
}
|
|
30547
|
+
if (gearbox.length > 0) {
|
|
30548
|
+
result.push({
|
|
30549
|
+
lender: Lender.GEARBOX_V3,
|
|
30550
|
+
account: gearbox[0].account,
|
|
30551
|
+
params: gearbox.map((p) => p.lender),
|
|
30552
|
+
assets: void 0
|
|
30553
|
+
});
|
|
30554
|
+
}
|
|
30555
|
+
if (midnight.length > 0) {
|
|
30556
|
+
result.push({
|
|
30557
|
+
lender: Lender.MORPHO_MIDNIGHT,
|
|
30558
|
+
account: midnight[0].account,
|
|
30559
|
+
params: midnight.map((p) => p.lender),
|
|
30560
|
+
assets: void 0
|
|
30561
|
+
});
|
|
30562
|
+
}
|
|
30563
|
+
if (term.length > 0) {
|
|
30564
|
+
result.push({
|
|
30565
|
+
lender: Lender.TERM_FINANCE,
|
|
30566
|
+
account: term[0].account,
|
|
30567
|
+
params: term.map((p) => p.lender),
|
|
30568
|
+
assets: void 0
|
|
30569
|
+
});
|
|
30570
|
+
}
|
|
30571
|
+
if (exactly.length > 0) {
|
|
30572
|
+
result.push({
|
|
30573
|
+
lender: Lender.EXACTLY,
|
|
30574
|
+
account: exactly[0].account,
|
|
30575
|
+
params: exactly.map((p) => p.lender),
|
|
30576
|
+
assets: void 0
|
|
30577
|
+
});
|
|
30578
|
+
}
|
|
30579
|
+
if (river.length > 0) {
|
|
30580
|
+
result.push({
|
|
30581
|
+
lender: Lender.RIVER,
|
|
30582
|
+
account: river[0].account,
|
|
30583
|
+
params: river.map((p) => p.lender),
|
|
30584
|
+
assets: void 0
|
|
30585
|
+
});
|
|
30586
|
+
}
|
|
30587
|
+
if (frankencoin.length > 0) {
|
|
30588
|
+
result.push({
|
|
30589
|
+
lender: Lender.FRANKENCOIN,
|
|
30590
|
+
account: frankencoin[0].account,
|
|
30591
|
+
params: frankencoin.map((p) => p.lender),
|
|
30592
|
+
assets: void 0
|
|
30593
|
+
});
|
|
30594
|
+
}
|
|
30595
|
+
if (usdd.length > 0) {
|
|
30596
|
+
result.push({
|
|
30597
|
+
lender: Lender.USDD,
|
|
30598
|
+
account: usdd[0].account,
|
|
30599
|
+
params: usdd.map((p) => p.lender),
|
|
30600
|
+
assets: void 0
|
|
30601
|
+
});
|
|
30602
|
+
}
|
|
30603
|
+
if (sky.length > 0) {
|
|
30604
|
+
result.push({
|
|
30605
|
+
lender: Lender.SKY,
|
|
30606
|
+
account: sky[0].account,
|
|
30607
|
+
params: sky.map((p) => p.lender),
|
|
30608
|
+
assets: void 0
|
|
30609
|
+
});
|
|
30610
|
+
}
|
|
30611
|
+
if (siloV2.length > 0) {
|
|
30612
|
+
result.push({
|
|
30613
|
+
lender: "SILO_V2",
|
|
30614
|
+
account: siloV2[0].account,
|
|
30615
|
+
params: siloV2.map((p) => p.lender),
|
|
30616
|
+
assets: void 0
|
|
30617
|
+
});
|
|
30618
|
+
}
|
|
30619
|
+
if (siloV3.length > 0) {
|
|
30620
|
+
result.push({
|
|
30621
|
+
lender: "SILO_V3",
|
|
30622
|
+
account: siloV3[0].account,
|
|
30623
|
+
params: siloV3.map((p) => p.lender),
|
|
30624
|
+
assets: void 0
|
|
30625
|
+
});
|
|
30626
|
+
}
|
|
30627
|
+
if (llamaLend.length > 0) {
|
|
30628
|
+
result.push({
|
|
30629
|
+
lender: Lender.LLAMALEND,
|
|
30630
|
+
account: llamaLend[0].account,
|
|
30631
|
+
params: llamaLend.map((p) => p.lender),
|
|
30632
|
+
assets: void 0
|
|
30633
|
+
});
|
|
30634
|
+
}
|
|
30635
|
+
if (teller.length > 0) {
|
|
30636
|
+
result.push({
|
|
30637
|
+
lender: Lender.TELLER,
|
|
30638
|
+
account: teller[0].account,
|
|
30639
|
+
params: teller.map((p) => p.lender),
|
|
30640
|
+
assets: void 0
|
|
30641
|
+
});
|
|
30642
|
+
}
|
|
30643
|
+
if (termMax.length > 0) {
|
|
30644
|
+
result.push({
|
|
30645
|
+
lender: Lender.TERMMAX,
|
|
30646
|
+
account: termMax[0].account,
|
|
30647
|
+
params: termMax.map((p) => p.lender),
|
|
30648
|
+
assets: void 0
|
|
30649
|
+
});
|
|
30650
|
+
}
|
|
30651
|
+
if (liquity.length > 0) {
|
|
30652
|
+
for (const base of LIQUITY_FAMILY_LENDERS) {
|
|
30653
|
+
const members = liquity.filter((q) => q.lender.startsWith(base));
|
|
30654
|
+
if (members.length === 0) continue;
|
|
30655
|
+
result.push({
|
|
30656
|
+
lender: base,
|
|
30657
|
+
account: members[0].account,
|
|
30658
|
+
params: members.map((p) => p.lender),
|
|
30659
|
+
assets: void 0
|
|
30660
|
+
});
|
|
30661
|
+
}
|
|
30662
|
+
}
|
|
30663
|
+
return result;
|
|
30664
|
+
}
|
|
30474
30665
|
|
|
30475
30666
|
// src/lending/user-data/aave-v2-type/userCallBuild.ts
|
|
30476
30667
|
var getBaseAaveV2Calls = (chainId, account, lender, assetsToQuery) => {
|
|
@@ -31840,7 +32031,7 @@ var buildExactlyUserCall = (chainId, _lender, account) => {
|
|
|
31840
32031
|
var OWNER_INDEX_PROBE_COUNT = 8;
|
|
31841
32032
|
var CACHE_TTL_MS = 5 * 6e4;
|
|
31842
32033
|
var discoveryCache = /* @__PURE__ */ new Map();
|
|
31843
|
-
async function discoverViaLens(chainId, branches, zappers, account) {
|
|
32034
|
+
async function discoverViaLens(chainId, branches, zappers, account, opts) {
|
|
31844
32035
|
const lens = getPositionLensFor(chainId, LENS_FAMILY.LIQUITY);
|
|
31845
32036
|
if (!lens) return void 0;
|
|
31846
32037
|
const payload = encodeAbiParameters(
|
|
@@ -31866,18 +32057,21 @@ async function discoverViaLens(chainId, branches, zappers, account) {
|
|
|
31866
32057
|
);
|
|
31867
32058
|
let blobs;
|
|
31868
32059
|
try {
|
|
31869
|
-
const res = await
|
|
31870
|
-
|
|
31871
|
-
|
|
31872
|
-
|
|
31873
|
-
|
|
31874
|
-
|
|
31875
|
-
|
|
31876
|
-
|
|
31877
|
-
|
|
31878
|
-
|
|
31879
|
-
|
|
31880
|
-
|
|
32060
|
+
const res = await discoveryMulticall(
|
|
32061
|
+
{
|
|
32062
|
+
chain: chainId,
|
|
32063
|
+
calls: [
|
|
32064
|
+
{
|
|
32065
|
+
address: lens,
|
|
32066
|
+
name: "getUserData",
|
|
32067
|
+
params: [[{ family: LENS_FAMILY.LIQUITY, payload }], account]
|
|
32068
|
+
}
|
|
32069
|
+
],
|
|
32070
|
+
abi: PositionLensAbi,
|
|
32071
|
+
allowFailure: true
|
|
32072
|
+
},
|
|
32073
|
+
opts
|
|
32074
|
+
);
|
|
31881
32075
|
blobs = res?.[0];
|
|
31882
32076
|
} catch {
|
|
31883
32077
|
return void 0;
|
|
@@ -31899,9 +32093,11 @@ async function discoverViaLens(chainId, branches, zappers, account) {
|
|
|
31899
32093
|
}
|
|
31900
32094
|
return perBranch;
|
|
31901
32095
|
}
|
|
31902
|
-
var cacheKey = (chainId, lender, account) => `${chainId}:${lender}:${account.toLowerCase()}`;
|
|
31903
|
-
var getCachedLiquityTroves = (chainId, lender, account) => {
|
|
31904
|
-
const hit = discoveryCache.get(
|
|
32096
|
+
var cacheKey = (chainId, lender, account, block = "head") => `${chainId}:${lender}:${account.toLowerCase()}:${block}`;
|
|
32097
|
+
var getCachedLiquityTroves = (chainId, lender, account, opts) => {
|
|
32098
|
+
const hit = discoveryCache.get(
|
|
32099
|
+
cacheKey(chainId, lender, account, blockKey(opts))
|
|
32100
|
+
);
|
|
31905
32101
|
if (!hit || Date.now() - hit.at > CACHE_TTL_MS) return void 0;
|
|
31906
32102
|
return hit;
|
|
31907
32103
|
};
|
|
@@ -31946,38 +32142,53 @@ function liquityCandidateTroveIds(account, zappers) {
|
|
|
31946
32142
|
return ids;
|
|
31947
32143
|
}
|
|
31948
32144
|
var liquityBranchCallCount = (branch, troveCount) => troveCount * 2 + 4 + (branch.collSurplusPool ? 1 : 0);
|
|
31949
|
-
var buildLiquityUserCall = async (chainId, lender, account) => {
|
|
32145
|
+
var buildLiquityUserCall = async (chainId, lender, account, opts) => {
|
|
31950
32146
|
const cfg = liquityConfigFor(lender, chainId);
|
|
31951
32147
|
const branches = liquityBranchesByChain(lender, chainId);
|
|
31952
32148
|
if (!cfg || branches.length === 0) return [];
|
|
31953
32149
|
const zappers = cfg.zappers ?? [];
|
|
31954
|
-
let perBranch = await discoverViaLens(
|
|
32150
|
+
let perBranch = await discoverViaLens(
|
|
32151
|
+
chainId,
|
|
32152
|
+
branches,
|
|
32153
|
+
zappers,
|
|
32154
|
+
account,
|
|
32155
|
+
opts
|
|
32156
|
+
);
|
|
31955
32157
|
if (!perBranch) {
|
|
31956
|
-
perBranch = await discoverByProbing(
|
|
32158
|
+
perBranch = await discoverByProbing(
|
|
32159
|
+
chainId,
|
|
32160
|
+
branches,
|
|
32161
|
+
zappers,
|
|
32162
|
+
account,
|
|
32163
|
+
opts
|
|
32164
|
+
);
|
|
31957
32165
|
if (!perBranch) return [];
|
|
31958
32166
|
}
|
|
31959
|
-
discoveryCache.set(cacheKey(chainId, lender, account), {
|
|
32167
|
+
discoveryCache.set(cacheKey(chainId, lender, account, blockKey(opts)), {
|
|
31960
32168
|
perBranch,
|
|
31961
32169
|
at: Date.now()
|
|
31962
32170
|
});
|
|
31963
32171
|
return buildDataPhaseCalls(branches, perBranch, account);
|
|
31964
32172
|
};
|
|
31965
|
-
async function discoverByProbing(chainId, branches, zappers, account) {
|
|
32173
|
+
async function discoverByProbing(chainId, branches, zappers, account, opts) {
|
|
31966
32174
|
const candidates = liquityCandidateTroveIds(account, zappers);
|
|
31967
32175
|
let statuses = [];
|
|
31968
32176
|
try {
|
|
31969
|
-
statuses = await
|
|
31970
|
-
|
|
31971
|
-
|
|
31972
|
-
|
|
31973
|
-
|
|
31974
|
-
|
|
31975
|
-
|
|
31976
|
-
|
|
31977
|
-
|
|
31978
|
-
|
|
31979
|
-
|
|
31980
|
-
|
|
32177
|
+
statuses = await discoveryMulticall(
|
|
32178
|
+
{
|
|
32179
|
+
chain: chainId,
|
|
32180
|
+
calls: branches.flatMap(
|
|
32181
|
+
(b) => candidates.map((id) => ({
|
|
32182
|
+
address: b.troveManager,
|
|
32183
|
+
name: "getTroveStatus",
|
|
32184
|
+
params: [id]
|
|
32185
|
+
}))
|
|
32186
|
+
),
|
|
32187
|
+
abi: LiquityTroveManagerAbi,
|
|
32188
|
+
allowFailure: true
|
|
32189
|
+
},
|
|
32190
|
+
opts
|
|
32191
|
+
);
|
|
31981
32192
|
} catch {
|
|
31982
32193
|
return void 0;
|
|
31983
32194
|
}
|
|
@@ -32289,19 +32500,22 @@ var DISCOVERY_TTL_MS = 6e4;
|
|
|
32289
32500
|
var SNAPSHOT_CHUNK = 12;
|
|
32290
32501
|
var rosterCache3 = /* @__PURE__ */ new Map();
|
|
32291
32502
|
var discoveryCache2 = /* @__PURE__ */ new Map();
|
|
32292
|
-
var rosterKey = (chainId, lender) => `${chainId}:${lender}`;
|
|
32293
|
-
var discoveryKey = (chainId, lender, account) => `${chainId}:${lender}:${account.toLowerCase()}`;
|
|
32294
|
-
var getCachedResupplyDiscovery = (chainId, lender, account) => discoveryCache2.get(discoveryKey(chainId, lender, account));
|
|
32295
|
-
var fetchRoster = async (chainId, lender, registry, allowlist2) => {
|
|
32296
|
-
const cached = rosterCache3.get(rosterKey(chainId, lender));
|
|
32503
|
+
var rosterKey = (chainId, lender, block = "head") => `${chainId}:${lender}:${block}`;
|
|
32504
|
+
var discoveryKey = (chainId, lender, account, block = "head") => `${chainId}:${lender}:${account.toLowerCase()}:${block}`;
|
|
32505
|
+
var getCachedResupplyDiscovery = (chainId, lender, account, opts) => discoveryCache2.get(discoveryKey(chainId, lender, account, blockKey(opts)));
|
|
32506
|
+
var fetchRoster = async (chainId, lender, registry, allowlist2, opts) => {
|
|
32507
|
+
const cached = rosterCache3.get(rosterKey(chainId, lender, blockKey(opts)));
|
|
32297
32508
|
if (cached && Date.now() - cached.at < ROSTER_TTL_MS) return cached;
|
|
32298
32509
|
let addresses = [];
|
|
32299
|
-
const [raw] = await
|
|
32300
|
-
|
|
32301
|
-
|
|
32302
|
-
|
|
32303
|
-
|
|
32304
|
-
|
|
32510
|
+
const [raw] = await discoveryMulticall(
|
|
32511
|
+
{
|
|
32512
|
+
chain: chainId,
|
|
32513
|
+
calls: [{ address: registry, name: "getAllPairAddresses", params: [] }],
|
|
32514
|
+
abi: ResupplyRegistryAbi,
|
|
32515
|
+
allowFailure: true
|
|
32516
|
+
},
|
|
32517
|
+
opts
|
|
32518
|
+
);
|
|
32305
32519
|
if (Array.isArray(raw)) {
|
|
32306
32520
|
addresses = raw.filter(
|
|
32307
32521
|
(a) => typeof a === "string" && a.startsWith("0x")
|
|
@@ -32313,42 +32527,48 @@ var fetchRoster = async (chainId, lender, registry, allowlist2) => {
|
|
|
32313
32527
|
}
|
|
32314
32528
|
if (addresses.length === 0) {
|
|
32315
32529
|
const empty = { pairs: [], at: Date.now() };
|
|
32316
|
-
rosterCache3.set(rosterKey(chainId, lender), empty);
|
|
32530
|
+
rosterCache3.set(rosterKey(chainId, lender, blockKey(opts)), empty);
|
|
32317
32531
|
return empty;
|
|
32318
32532
|
}
|
|
32319
|
-
const cols = await
|
|
32320
|
-
|
|
32321
|
-
|
|
32322
|
-
|
|
32323
|
-
|
|
32324
|
-
|
|
32325
|
-
|
|
32326
|
-
|
|
32327
|
-
|
|
32328
|
-
|
|
32533
|
+
const cols = await discoveryMulticall(
|
|
32534
|
+
{
|
|
32535
|
+
chain: chainId,
|
|
32536
|
+
calls: addresses.map((pair) => ({
|
|
32537
|
+
address: pair,
|
|
32538
|
+
name: "collateral",
|
|
32539
|
+
params: []
|
|
32540
|
+
})),
|
|
32541
|
+
abi: addresses.map(() => ResupplyPairAbi),
|
|
32542
|
+
allowFailure: true
|
|
32543
|
+
},
|
|
32544
|
+
opts
|
|
32545
|
+
);
|
|
32329
32546
|
const pairs = addresses.map((pair, i) => ({ pair, collateral: cols[i] })).filter(
|
|
32330
32547
|
(p) => typeof p.collateral === "string" && p.collateral.startsWith("0x")
|
|
32331
32548
|
);
|
|
32332
32549
|
const roster = { pairs, at: Date.now() };
|
|
32333
|
-
rosterCache3.set(rosterKey(chainId, lender), roster);
|
|
32550
|
+
rosterCache3.set(rosterKey(chainId, lender, blockKey(opts)), roster);
|
|
32334
32551
|
return roster;
|
|
32335
32552
|
};
|
|
32336
|
-
var discoverPositions = async (chainId, pairs, account) => {
|
|
32553
|
+
var discoverPositions = async (chainId, pairs, account, opts) => {
|
|
32337
32554
|
const active = [];
|
|
32338
32555
|
for (let i = 0; i < pairs.length; i += SNAPSHOT_CHUNK) {
|
|
32339
32556
|
const slice2 = pairs.slice(i, i + SNAPSHOT_CHUNK);
|
|
32340
32557
|
let res = [];
|
|
32341
32558
|
try {
|
|
32342
|
-
res = await
|
|
32343
|
-
|
|
32344
|
-
|
|
32345
|
-
|
|
32346
|
-
|
|
32347
|
-
|
|
32348
|
-
|
|
32349
|
-
|
|
32350
|
-
|
|
32351
|
-
|
|
32559
|
+
res = await discoveryMulticall(
|
|
32560
|
+
{
|
|
32561
|
+
chain: chainId,
|
|
32562
|
+
calls: slice2.map((p) => ({
|
|
32563
|
+
address: p.pair,
|
|
32564
|
+
name: "getUserSnapshot",
|
|
32565
|
+
params: [account]
|
|
32566
|
+
})),
|
|
32567
|
+
abi: slice2.map(() => ResupplyPairAbi),
|
|
32568
|
+
allowFailure: true
|
|
32569
|
+
},
|
|
32570
|
+
opts
|
|
32571
|
+
);
|
|
32352
32572
|
} catch {
|
|
32353
32573
|
continue;
|
|
32354
32574
|
}
|
|
@@ -32363,9 +32583,9 @@ var discoverPositions = async (chainId, pairs, account) => {
|
|
|
32363
32583
|
}
|
|
32364
32584
|
return active;
|
|
32365
32585
|
};
|
|
32366
|
-
var buildResupplyUserCall = async (chainId, lender, account) => {
|
|
32586
|
+
var buildResupplyUserCall = async (chainId, lender, account, opts) => {
|
|
32367
32587
|
const cfg = resupplyConfigFor(lender, chainId);
|
|
32368
|
-
const key3 = discoveryKey(chainId, lender, account);
|
|
32588
|
+
const key3 = discoveryKey(chainId, lender, account, blockKey(opts));
|
|
32369
32589
|
const stash = (positions2) => discoveryCache2.set(key3, { positions: positions2, at: Date.now() });
|
|
32370
32590
|
if (!cfg?.registry) {
|
|
32371
32591
|
stash([]);
|
|
@@ -32373,7 +32593,13 @@ var buildResupplyUserCall = async (chainId, lender, account) => {
|
|
|
32373
32593
|
}
|
|
32374
32594
|
let roster;
|
|
32375
32595
|
try {
|
|
32376
|
-
roster = await fetchRoster(
|
|
32596
|
+
roster = await fetchRoster(
|
|
32597
|
+
chainId,
|
|
32598
|
+
lender,
|
|
32599
|
+
cfg.registry,
|
|
32600
|
+
cfg.pairAllowlist,
|
|
32601
|
+
opts
|
|
32602
|
+
);
|
|
32377
32603
|
} catch {
|
|
32378
32604
|
return [];
|
|
32379
32605
|
}
|
|
@@ -32382,7 +32608,7 @@ var buildResupplyUserCall = async (chainId, lender, account) => {
|
|
|
32382
32608
|
return [];
|
|
32383
32609
|
}
|
|
32384
32610
|
const cachedDiscovery = discoveryCache2.get(key3);
|
|
32385
|
-
const positions = cachedDiscovery && Date.now() - cachedDiscovery.at < DISCOVERY_TTL_MS ? cachedDiscovery.positions : await discoverPositions(chainId, roster.pairs, account);
|
|
32611
|
+
const positions = cachedDiscovery && Date.now() - cachedDiscovery.at < DISCOVERY_TTL_MS ? cachedDiscovery.positions : await discoverPositions(chainId, roster.pairs, account, opts);
|
|
32386
32612
|
stash(positions);
|
|
32387
32613
|
if (positions.length === 0) return [];
|
|
32388
32614
|
return positions.flatMap(({ pair, collateral }) => [
|
|
@@ -32470,19 +32696,22 @@ var CURVANCE_MARKET_READS = 2;
|
|
|
32470
32696
|
var CURVANCE_READS_PER_TOKEN = 4;
|
|
32471
32697
|
var rosterCache4 = /* @__PURE__ */ new Map();
|
|
32472
32698
|
var discoveryCache3 = /* @__PURE__ */ new Map();
|
|
32473
|
-
var rosterKey2 = (chainId, lender) => `${chainId}:${lender}`;
|
|
32474
|
-
var discoveryKey2 = (chainId, lender, account) => `${chainId}:${lender}:${account.toLowerCase()}`;
|
|
32475
|
-
var getCachedCurvanceDiscovery = (chainId, lender, account) => discoveryCache3.get(discoveryKey2(chainId, lender, account));
|
|
32476
|
-
var fetchRoster2 = async (chainId, lender, centralRegistry, allowlist2) => {
|
|
32477
|
-
const cached = rosterCache4.get(rosterKey2(chainId, lender));
|
|
32699
|
+
var rosterKey2 = (chainId, lender, block = "head") => `${chainId}:${lender}:${block}`;
|
|
32700
|
+
var discoveryKey2 = (chainId, lender, account, block = "head") => `${chainId}:${lender}:${account.toLowerCase()}:${block}`;
|
|
32701
|
+
var getCachedCurvanceDiscovery = (chainId, lender, account, opts) => discoveryCache3.get(discoveryKey2(chainId, lender, account, blockKey(opts)));
|
|
32702
|
+
var fetchRoster2 = async (chainId, lender, centralRegistry, allowlist2, opts) => {
|
|
32703
|
+
const cached = rosterCache4.get(rosterKey2(chainId, lender, blockKey(opts)));
|
|
32478
32704
|
if (cached && Date.now() - cached.at < ROSTER_TTL_MS2) return cached;
|
|
32479
32705
|
let managers = [];
|
|
32480
|
-
const [raw] = await
|
|
32481
|
-
|
|
32482
|
-
|
|
32483
|
-
|
|
32484
|
-
|
|
32485
|
-
|
|
32706
|
+
const [raw] = await discoveryMulticall(
|
|
32707
|
+
{
|
|
32708
|
+
chain: chainId,
|
|
32709
|
+
calls: [{ address: centralRegistry, name: "marketManagers", params: [] }],
|
|
32710
|
+
abi: CurvanceCentralRegistryAbi,
|
|
32711
|
+
allowFailure: true
|
|
32712
|
+
},
|
|
32713
|
+
opts
|
|
32714
|
+
);
|
|
32486
32715
|
if (Array.isArray(raw)) {
|
|
32487
32716
|
managers = raw.filter(
|
|
32488
32717
|
(a) => typeof a === "string" && a.startsWith("0x")
|
|
@@ -32494,19 +32723,22 @@ var fetchRoster2 = async (chainId, lender, centralRegistry, allowlist2) => {
|
|
|
32494
32723
|
}
|
|
32495
32724
|
if (managers.length === 0) {
|
|
32496
32725
|
const empty = { markets: [], at: Date.now() };
|
|
32497
|
-
rosterCache4.set(rosterKey2(chainId, lender), empty);
|
|
32726
|
+
rosterCache4.set(rosterKey2(chainId, lender, blockKey(opts)), empty);
|
|
32498
32727
|
return empty;
|
|
32499
32728
|
}
|
|
32500
|
-
const listed = await
|
|
32501
|
-
|
|
32502
|
-
|
|
32503
|
-
|
|
32504
|
-
|
|
32505
|
-
|
|
32506
|
-
|
|
32507
|
-
|
|
32508
|
-
|
|
32509
|
-
|
|
32729
|
+
const listed = await discoveryMulticall(
|
|
32730
|
+
{
|
|
32731
|
+
chain: chainId,
|
|
32732
|
+
calls: managers.map((mm) => ({
|
|
32733
|
+
address: mm,
|
|
32734
|
+
name: "queryTokensListed",
|
|
32735
|
+
params: []
|
|
32736
|
+
})),
|
|
32737
|
+
abi: managers.map(() => CurvanceMarketManagerAbi),
|
|
32738
|
+
allowFailure: true
|
|
32739
|
+
},
|
|
32740
|
+
opts
|
|
32741
|
+
);
|
|
32510
32742
|
const withTokens = managers.map((marketManager, i) => ({
|
|
32511
32743
|
marketManager,
|
|
32512
32744
|
addresses: Array.isArray(listed[i]) ? listed[i].filter(
|
|
@@ -32518,16 +32750,19 @@ var fetchRoster2 = async (chainId, lender, centralRegistry, allowlist2) => {
|
|
|
32518
32750
|
);
|
|
32519
32751
|
let assets = [];
|
|
32520
32752
|
try {
|
|
32521
|
-
assets = await
|
|
32522
|
-
|
|
32523
|
-
|
|
32524
|
-
|
|
32525
|
-
|
|
32526
|
-
|
|
32527
|
-
|
|
32528
|
-
|
|
32529
|
-
|
|
32530
|
-
|
|
32753
|
+
assets = await discoveryMulticall(
|
|
32754
|
+
{
|
|
32755
|
+
chain: chainId,
|
|
32756
|
+
calls: flat.map((f) => ({
|
|
32757
|
+
address: f.cToken,
|
|
32758
|
+
name: "asset",
|
|
32759
|
+
params: []
|
|
32760
|
+
})),
|
|
32761
|
+
abi: flat.map(() => CurvanceCTokenAbi),
|
|
32762
|
+
allowFailure: true
|
|
32763
|
+
},
|
|
32764
|
+
opts
|
|
32765
|
+
);
|
|
32531
32766
|
} catch {
|
|
32532
32767
|
assets = [];
|
|
32533
32768
|
}
|
|
@@ -32546,26 +32781,29 @@ var fetchRoster2 = async (chainId, lender, centralRegistry, allowlist2) => {
|
|
|
32546
32781
|
})).filter((t) => t.asset !== "")
|
|
32547
32782
|
})).filter((m) => m.cTokens.length > 0);
|
|
32548
32783
|
const roster = { markets, at: Date.now() };
|
|
32549
|
-
rosterCache4.set(rosterKey2(chainId, lender), roster);
|
|
32784
|
+
rosterCache4.set(rosterKey2(chainId, lender, blockKey(opts)), roster);
|
|
32550
32785
|
return roster;
|
|
32551
32786
|
};
|
|
32552
|
-
var discoverPositions2 = async (chainId, markets, account) => {
|
|
32787
|
+
var discoverPositions2 = async (chainId, markets, account, opts) => {
|
|
32553
32788
|
const CHUNK = 15;
|
|
32554
32789
|
const active = [];
|
|
32555
32790
|
for (let i = 0; i < markets.length; i += CHUNK) {
|
|
32556
32791
|
const slice2 = markets.slice(i, i + CHUNK);
|
|
32557
32792
|
let res = [];
|
|
32558
32793
|
try {
|
|
32559
|
-
res = await
|
|
32560
|
-
|
|
32561
|
-
|
|
32562
|
-
|
|
32563
|
-
|
|
32564
|
-
|
|
32565
|
-
|
|
32566
|
-
|
|
32567
|
-
|
|
32568
|
-
|
|
32794
|
+
res = await discoveryMulticall(
|
|
32795
|
+
{
|
|
32796
|
+
chain: chainId,
|
|
32797
|
+
calls: slice2.map((m) => ({
|
|
32798
|
+
address: m.marketManager,
|
|
32799
|
+
name: "assetsOf",
|
|
32800
|
+
params: [account]
|
|
32801
|
+
})),
|
|
32802
|
+
abi: slice2.map(() => CurvanceMarketManagerAbi),
|
|
32803
|
+
allowFailure: true
|
|
32804
|
+
},
|
|
32805
|
+
opts
|
|
32806
|
+
);
|
|
32569
32807
|
} catch {
|
|
32570
32808
|
continue;
|
|
32571
32809
|
}
|
|
@@ -32584,9 +32822,9 @@ var discoverPositions2 = async (chainId, markets, account) => {
|
|
|
32584
32822
|
}
|
|
32585
32823
|
return active;
|
|
32586
32824
|
};
|
|
32587
|
-
var buildCurvanceUserCall = async (chainId, lender, account) => {
|
|
32825
|
+
var buildCurvanceUserCall = async (chainId, lender, account, opts) => {
|
|
32588
32826
|
const cfg = curvanceConfigFor(lender, chainId);
|
|
32589
|
-
const key3 = discoveryKey2(chainId, lender, account);
|
|
32827
|
+
const key3 = discoveryKey2(chainId, lender, account, blockKey(opts));
|
|
32590
32828
|
const stash = (positions2) => discoveryCache3.set(key3, { positions: positions2, at: Date.now() });
|
|
32591
32829
|
if (!cfg?.centralRegistry) {
|
|
32592
32830
|
stash([]);
|
|
@@ -32598,7 +32836,8 @@ var buildCurvanceUserCall = async (chainId, lender, account) => {
|
|
|
32598
32836
|
chainId,
|
|
32599
32837
|
lender,
|
|
32600
32838
|
cfg.centralRegistry,
|
|
32601
|
-
cfg.marketAllowlist
|
|
32839
|
+
cfg.marketAllowlist,
|
|
32840
|
+
opts
|
|
32602
32841
|
);
|
|
32603
32842
|
} catch {
|
|
32604
32843
|
return [];
|
|
@@ -32608,7 +32847,7 @@ var buildCurvanceUserCall = async (chainId, lender, account) => {
|
|
|
32608
32847
|
return [];
|
|
32609
32848
|
}
|
|
32610
32849
|
const cached = discoveryCache3.get(key3);
|
|
32611
|
-
const positions = cached && Date.now() - cached.at < DISCOVERY_TTL_MS2 ? cached.positions : await discoverPositions2(chainId, roster.markets, account);
|
|
32850
|
+
const positions = cached && Date.now() - cached.at < DISCOVERY_TTL_MS2 ? cached.positions : await discoverPositions2(chainId, roster.markets, account, opts);
|
|
32612
32851
|
stash(positions);
|
|
32613
32852
|
if (positions.length === 0) return [];
|
|
32614
32853
|
return positions.flatMap((p) => [
|
|
@@ -32634,46 +32873,54 @@ var buildCurvanceUserCall = async (chainId, lender, account) => {
|
|
|
32634
32873
|
var DISCOVERY_TTL_MS3 = 6e4;
|
|
32635
32874
|
var TWYNE_READS_PER_VAULT = 7;
|
|
32636
32875
|
var discoveryCache4 = /* @__PURE__ */ new Map();
|
|
32637
|
-
var discoveryKey3 = (chainId, lender, account) => `${chainId}:${lender}:${account.toLowerCase()}`;
|
|
32638
|
-
function getCachedTwyneDiscovery(chainId, lender, account) {
|
|
32639
|
-
return discoveryCache4.get(
|
|
32876
|
+
var discoveryKey3 = (chainId, lender, account, block = "head") => `${chainId}:${lender}:${account.toLowerCase()}:${block}`;
|
|
32877
|
+
function getCachedTwyneDiscovery(chainId, lender, account, opts) {
|
|
32878
|
+
return discoveryCache4.get(
|
|
32879
|
+
discoveryKey3(chainId, lender, account, blockKey(opts))
|
|
32880
|
+
);
|
|
32640
32881
|
}
|
|
32641
32882
|
var lower2 = (a) => String(a).toLowerCase();
|
|
32642
32883
|
var isAddress4 = (v) => typeof v === "string" && /^0x[0-9a-fA-F]{40}$/.test(v);
|
|
32643
|
-
async function discover(chainId, lender, account) {
|
|
32644
|
-
const key3 = discoveryKey3(chainId, lender, account);
|
|
32884
|
+
async function discover(chainId, lender, account, opts) {
|
|
32885
|
+
const key3 = discoveryKey3(chainId, lender, account, blockKey(opts));
|
|
32645
32886
|
const cached = discoveryCache4.get(key3);
|
|
32646
32887
|
if (cached && Date.now() - cached.at < DISCOVERY_TTL_MS3) return cached;
|
|
32647
32888
|
const cfg = twyneConfigFor(lender, chainId);
|
|
32648
32889
|
const empty = { vaults: [], at: Date.now() };
|
|
32649
32890
|
if (!cfg?.collateralVaultFactory) return empty;
|
|
32650
|
-
const [listRaw] = await
|
|
32651
|
-
|
|
32652
|
-
|
|
32653
|
-
|
|
32654
|
-
|
|
32655
|
-
|
|
32656
|
-
|
|
32657
|
-
|
|
32658
|
-
|
|
32659
|
-
|
|
32660
|
-
|
|
32661
|
-
|
|
32891
|
+
const [listRaw] = await discoveryMulticall(
|
|
32892
|
+
{
|
|
32893
|
+
chain: chainId,
|
|
32894
|
+
calls: [
|
|
32895
|
+
{
|
|
32896
|
+
address: cfg.collateralVaultFactory,
|
|
32897
|
+
name: "getCollateralVaults",
|
|
32898
|
+
args: [account]
|
|
32899
|
+
}
|
|
32900
|
+
],
|
|
32901
|
+
abi: TwyneCollateralVaultFactoryAbi,
|
|
32902
|
+
allowFailure: true
|
|
32903
|
+
},
|
|
32904
|
+
opts
|
|
32905
|
+
);
|
|
32662
32906
|
const created = Array.isArray(listRaw) ? listRaw.filter(isAddress4).map(lower2) : [];
|
|
32663
32907
|
if (created.length === 0) {
|
|
32664
32908
|
discoveryCache4.set(key3, empty);
|
|
32665
32909
|
return empty;
|
|
32666
32910
|
}
|
|
32667
|
-
const refs = await
|
|
32668
|
-
|
|
32669
|
-
|
|
32670
|
-
|
|
32671
|
-
|
|
32672
|
-
|
|
32673
|
-
|
|
32674
|
-
|
|
32675
|
-
|
|
32676
|
-
|
|
32911
|
+
const refs = await discoveryMulticall(
|
|
32912
|
+
{
|
|
32913
|
+
chain: chainId,
|
|
32914
|
+
calls: created.flatMap((v) => [
|
|
32915
|
+
{ address: v, name: "intermediateVault", args: [] },
|
|
32916
|
+
{ address: v, name: "targetAsset", args: [] },
|
|
32917
|
+
{ address: v, name: "borrower", args: [] }
|
|
32918
|
+
]),
|
|
32919
|
+
abi: TwyneCollateralVaultAbi,
|
|
32920
|
+
allowFailure: true
|
|
32921
|
+
},
|
|
32922
|
+
opts
|
|
32923
|
+
);
|
|
32677
32924
|
const queried = twyneKeyParts(lender);
|
|
32678
32925
|
const known = new Map(
|
|
32679
32926
|
(twyneChainData(lender, chainId)?.markets ?? []).filter(
|
|
@@ -32702,19 +32949,24 @@ async function discover(chainId, lender, account) {
|
|
|
32702
32949
|
});
|
|
32703
32950
|
});
|
|
32704
32951
|
const receipts = [
|
|
32705
|
-
...new Set(
|
|
32952
|
+
...new Set(
|
|
32953
|
+
vaults.map((v) => v.collateralAsset).filter((a) => !!a)
|
|
32954
|
+
)
|
|
32706
32955
|
];
|
|
32707
32956
|
if (receipts.length > 0) {
|
|
32708
|
-
const scales = await
|
|
32709
|
-
|
|
32710
|
-
|
|
32711
|
-
address
|
|
32712
|
-
|
|
32713
|
-
|
|
32714
|
-
|
|
32715
|
-
|
|
32716
|
-
|
|
32717
|
-
|
|
32957
|
+
const scales = await discoveryMulticall(
|
|
32958
|
+
{
|
|
32959
|
+
chain: chainId,
|
|
32960
|
+
calls: receipts.map((address) => ({
|
|
32961
|
+
address,
|
|
32962
|
+
name: "convertToAssets",
|
|
32963
|
+
args: [10n ** 18n]
|
|
32964
|
+
})),
|
|
32965
|
+
abi: TwyneATokenWrapperAbi,
|
|
32966
|
+
allowFailure: true
|
|
32967
|
+
},
|
|
32968
|
+
opts
|
|
32969
|
+
);
|
|
32718
32970
|
const byReceipt = /* @__PURE__ */ new Map();
|
|
32719
32971
|
receipts.forEach((address, i) => {
|
|
32720
32972
|
const v = scales[i];
|
|
@@ -32730,8 +32982,8 @@ async function discover(chainId, lender, account) {
|
|
|
32730
32982
|
discoveryCache4.set(key3, result);
|
|
32731
32983
|
return result;
|
|
32732
32984
|
}
|
|
32733
|
-
async function buildTwyneUserCall(chainId, lender, account) {
|
|
32734
|
-
const { vaults } = await discover(chainId, lender, account);
|
|
32985
|
+
async function buildTwyneUserCall(chainId, lender, account, opts) {
|
|
32986
|
+
const { vaults } = await discover(chainId, lender, account, opts);
|
|
32735
32987
|
if (vaults.length === 0) return [];
|
|
32736
32988
|
return vaults.flatMap(({ vault }) => [
|
|
32737
32989
|
{ address: vault, name: "totalAssetsDepositedOrReserved", args: [] },
|
|
@@ -32747,9 +32999,11 @@ var DSS_CALLS_PER_CDP = 1;
|
|
|
32747
32999
|
var MAX_CDP_WALK = 64;
|
|
32748
33000
|
var CACHE_TTL_MS2 = 5 * 6e4;
|
|
32749
33001
|
var discoveryCache5 = /* @__PURE__ */ new Map();
|
|
32750
|
-
var cacheKey2 = (lender, chainId, account) => `${lender}:${chainId}:${account.toLowerCase()}`;
|
|
32751
|
-
var getCachedDssCdps = (lender, chainId, account) => {
|
|
32752
|
-
const hit = discoveryCache5.get(
|
|
33002
|
+
var cacheKey2 = (lender, chainId, account, block = "head") => `${lender}:${chainId}:${account.toLowerCase()}:${block}`;
|
|
33003
|
+
var getCachedDssCdps = (lender, chainId, account, opts) => {
|
|
33004
|
+
const hit = discoveryCache5.get(
|
|
33005
|
+
cacheKey2(lender, chainId, account, blockKey(opts))
|
|
33006
|
+
);
|
|
32753
33007
|
if (!hit || Date.now() - hit.at > CACHE_TTL_MS2) return void 0;
|
|
32754
33008
|
return hit;
|
|
32755
33009
|
};
|
|
@@ -32762,10 +33016,10 @@ var big7 = (v) => {
|
|
|
32762
33016
|
return 0n;
|
|
32763
33017
|
};
|
|
32764
33018
|
var field6 = (res, name, idx) => res?.[name] ?? res?.[idx];
|
|
32765
|
-
var buildDssUserCall = async (chainId, lender, account) => {
|
|
33019
|
+
var buildDssUserCall = async (chainId, lender, account, opts) => {
|
|
32766
33020
|
const cfg = dssConfigFor(lender, chainId);
|
|
32767
33021
|
const markets = dssChainData(lender, chainId)?.markets ?? [];
|
|
32768
|
-
const stash = (d) => discoveryCache5.set(cacheKey2(lender, chainId, account), d);
|
|
33022
|
+
const stash = (d) => discoveryCache5.set(cacheKey2(lender, chainId, account, blockKey(opts)), d);
|
|
32769
33023
|
if (!cfg || markets.length === 0) {
|
|
32770
33024
|
stash({ cdps: [], ilks: [], at: Date.now() });
|
|
32771
33025
|
return [];
|
|
@@ -32774,28 +33028,34 @@ var buildDssUserCall = async (chainId, lender, account) => {
|
|
|
32774
33028
|
const zero2 = "0x0000000000000000000000000000000000000000";
|
|
32775
33029
|
const owners = [];
|
|
32776
33030
|
try {
|
|
32777
|
-
const [rawCount, rawFirst, rawProxy] = await
|
|
32778
|
-
|
|
32779
|
-
abi: [...UsddCdpManagerAbi, ...UsddProxyRegistryAbi],
|
|
32780
|
-
calls: [
|
|
32781
|
-
{ address: cfg.cdpManager, name: "count", params: [account] },
|
|
32782
|
-
{ address: cfg.cdpManager, name: "first", params: [account] },
|
|
32783
|
-
{ address: cfg.proxyRegistry, name: "proxies", params: [account] }
|
|
32784
|
-
],
|
|
32785
|
-
allowFailure: false
|
|
32786
|
-
});
|
|
32787
|
-
owners.push({ owner: account, count: big7(rawCount), cursor: big7(rawFirst) });
|
|
32788
|
-
const proxy = String(rawProxy ?? zero2);
|
|
32789
|
-
if (proxy.toLowerCase() !== zero2) {
|
|
32790
|
-
const [pCount, pFirst] = await multicallRetryUniversal({
|
|
33031
|
+
const [rawCount, rawFirst, rawProxy] = await discoveryMulticall(
|
|
33032
|
+
{
|
|
32791
33033
|
chain: chainId,
|
|
32792
|
-
abi: UsddCdpManagerAbi,
|
|
33034
|
+
abi: [...UsddCdpManagerAbi, ...UsddProxyRegistryAbi],
|
|
32793
33035
|
calls: [
|
|
32794
|
-
{ address: cfg.cdpManager, name: "count", params: [
|
|
32795
|
-
{ address: cfg.cdpManager, name: "first", params: [
|
|
33036
|
+
{ address: cfg.cdpManager, name: "count", params: [account] },
|
|
33037
|
+
{ address: cfg.cdpManager, name: "first", params: [account] },
|
|
33038
|
+
{ address: cfg.proxyRegistry, name: "proxies", params: [account] }
|
|
32796
33039
|
],
|
|
32797
33040
|
allowFailure: false
|
|
32798
|
-
}
|
|
33041
|
+
},
|
|
33042
|
+
opts
|
|
33043
|
+
);
|
|
33044
|
+
owners.push({ owner: account, count: big7(rawCount), cursor: big7(rawFirst) });
|
|
33045
|
+
const proxy = String(rawProxy ?? zero2);
|
|
33046
|
+
if (proxy.toLowerCase() !== zero2) {
|
|
33047
|
+
const [pCount, pFirst] = await discoveryMulticall(
|
|
33048
|
+
{
|
|
33049
|
+
chain: chainId,
|
|
33050
|
+
abi: UsddCdpManagerAbi,
|
|
33051
|
+
calls: [
|
|
33052
|
+
{ address: cfg.cdpManager, name: "count", params: [proxy] },
|
|
33053
|
+
{ address: cfg.cdpManager, name: "first", params: [proxy] }
|
|
33054
|
+
],
|
|
33055
|
+
allowFailure: false
|
|
33056
|
+
},
|
|
33057
|
+
opts
|
|
33058
|
+
);
|
|
32799
33059
|
owners.push({ owner: proxy, count: big7(pCount), cursor: big7(pFirst) });
|
|
32800
33060
|
}
|
|
32801
33061
|
} catch {
|
|
@@ -32819,16 +33079,19 @@ var buildDssUserCall = async (chainId, lender, account) => {
|
|
|
32819
33079
|
);
|
|
32820
33080
|
}
|
|
32821
33081
|
for (let i = 0; i < steps && cursor !== 0n; i++) {
|
|
32822
|
-
const [urn, ilk32, link] = await
|
|
32823
|
-
|
|
32824
|
-
|
|
32825
|
-
|
|
32826
|
-
|
|
32827
|
-
|
|
32828
|
-
|
|
32829
|
-
|
|
32830
|
-
|
|
32831
|
-
|
|
33082
|
+
const [urn, ilk32, link] = await discoveryMulticall(
|
|
33083
|
+
{
|
|
33084
|
+
chain: chainId,
|
|
33085
|
+
abi: UsddCdpManagerAbi,
|
|
33086
|
+
calls: [
|
|
33087
|
+
{ address: cfg.cdpManager, name: "urns", params: [cursor] },
|
|
33088
|
+
{ address: cfg.cdpManager, name: "ilks", params: [cursor] },
|
|
33089
|
+
{ address: cfg.cdpManager, name: "list", params: [cursor] }
|
|
33090
|
+
],
|
|
33091
|
+
allowFailure: false
|
|
33092
|
+
},
|
|
33093
|
+
opts
|
|
33094
|
+
);
|
|
32832
33095
|
let ilk = "";
|
|
32833
33096
|
try {
|
|
32834
33097
|
ilk = hexToString(ilk32, { size: 32 }).replace(/[\s\0]+$/g, "");
|
|
@@ -32931,9 +33194,11 @@ var buildFrankencoinUserCall = async (chainId, lender, account) => {
|
|
|
32931
33194
|
}
|
|
32932
33195
|
return calls;
|
|
32933
33196
|
};
|
|
33197
|
+
|
|
33198
|
+
// src/lending/user-data/teller/lens.ts
|
|
32934
33199
|
var ROW_BYTES2 = 117;
|
|
32935
33200
|
var usesTellerLens = (chainId) => getPositionLensFor(chainId, LENS_FAMILY.TELLER) !== void 0;
|
|
32936
|
-
async function discoverTellerBidsViaLens(chainId, tellerV2, account) {
|
|
33201
|
+
async function discoverTellerBidsViaLens(chainId, tellerV2, account, opts) {
|
|
32937
33202
|
const lens = getPositionLensFor(chainId, LENS_FAMILY.TELLER);
|
|
32938
33203
|
if (!lens || !tellerV2) return void 0;
|
|
32939
33204
|
const payload = encodeAbiParameters(parseAbiParameters("address, uint256"), [
|
|
@@ -32942,18 +33207,21 @@ async function discoverTellerBidsViaLens(chainId, tellerV2, account) {
|
|
|
32942
33207
|
]);
|
|
32943
33208
|
let blob;
|
|
32944
33209
|
try {
|
|
32945
|
-
const res = await
|
|
32946
|
-
|
|
32947
|
-
|
|
32948
|
-
|
|
32949
|
-
|
|
32950
|
-
|
|
32951
|
-
|
|
32952
|
-
|
|
32953
|
-
|
|
32954
|
-
|
|
32955
|
-
|
|
32956
|
-
|
|
33210
|
+
const res = await discoveryMulticall(
|
|
33211
|
+
{
|
|
33212
|
+
chain: chainId,
|
|
33213
|
+
calls: [
|
|
33214
|
+
{
|
|
33215
|
+
address: lens,
|
|
33216
|
+
name: "getUserData",
|
|
33217
|
+
params: [[{ family: LENS_FAMILY.TELLER, payload }], account]
|
|
33218
|
+
}
|
|
33219
|
+
],
|
|
33220
|
+
abi: PositionLensAbi,
|
|
33221
|
+
allowFailure: true
|
|
33222
|
+
},
|
|
33223
|
+
opts
|
|
33224
|
+
);
|
|
32957
33225
|
const blobs = res?.[0];
|
|
32958
33226
|
if (!Array.isArray(blobs) || blobs.length !== 1) return void 0;
|
|
32959
33227
|
blob = blobs[0];
|
|
@@ -32981,9 +33249,9 @@ async function discoverTellerBidsViaLens(chainId, tellerV2, account) {
|
|
|
32981
33249
|
var TELLER_CALLS_PER_BID = 4;
|
|
32982
33250
|
var CACHE_TTL_MS3 = 5 * 6e4;
|
|
32983
33251
|
var discoveryCache7 = /* @__PURE__ */ new Map();
|
|
32984
|
-
var cacheKey4 = (chainId, account) => `${chainId}:${account.toLowerCase()}`;
|
|
32985
|
-
var getCachedTellerBids = (chainId, account) => {
|
|
32986
|
-
const hit = discoveryCache7.get(cacheKey4(chainId, account));
|
|
33252
|
+
var cacheKey4 = (chainId, account, block = "head") => `${chainId}:${account.toLowerCase()}:${block}`;
|
|
33253
|
+
var getCachedTellerBids = (chainId, account, opts) => {
|
|
33254
|
+
const hit = discoveryCache7.get(cacheKey4(chainId, account, blockKey(opts)));
|
|
32987
33255
|
if (!hit || Date.now() - hit.at > CACHE_TTL_MS3) return void 0;
|
|
32988
33256
|
return hit;
|
|
32989
33257
|
};
|
|
@@ -32999,7 +33267,7 @@ var toBigints = (arr) => {
|
|
|
32999
33267
|
}
|
|
33000
33268
|
return out;
|
|
33001
33269
|
};
|
|
33002
|
-
var buildTellerUserCall = async (chainId, _lender, account) => {
|
|
33270
|
+
var buildTellerUserCall = async (chainId, _lender, account, opts) => {
|
|
33003
33271
|
const proto = tellerConfigByChain(chainId);
|
|
33004
33272
|
const pools = tellerPoolsByChain(chainId);
|
|
33005
33273
|
if (!proto?.tellerV2 || !proto?.collateralManager || pools.length === 0) {
|
|
@@ -33011,7 +33279,8 @@ var buildTellerUserCall = async (chainId, _lender, account) => {
|
|
|
33011
33279
|
const viaLens = await discoverTellerBidsViaLens(
|
|
33012
33280
|
chainId,
|
|
33013
33281
|
proto.tellerV2,
|
|
33014
|
-
account
|
|
33282
|
+
account,
|
|
33283
|
+
opts
|
|
33015
33284
|
);
|
|
33016
33285
|
if (viaLens) {
|
|
33017
33286
|
const keptLens = [];
|
|
@@ -33019,7 +33288,7 @@ var buildTellerUserCall = async (chainId, _lender, account) => {
|
|
|
33019
33288
|
const pool = poolByAddrEarly.get(b.lender.toLowerCase());
|
|
33020
33289
|
if (pool) keptLens.push({ bidId: b.bidId, pool });
|
|
33021
33290
|
}
|
|
33022
|
-
discoveryCache7.set(cacheKey4(chainId, account), {
|
|
33291
|
+
discoveryCache7.set(cacheKey4(chainId, account, blockKey(opts)), {
|
|
33023
33292
|
bids: keptLens,
|
|
33024
33293
|
at: Date.now()
|
|
33025
33294
|
});
|
|
@@ -33028,40 +33297,49 @@ var buildTellerUserCall = async (chainId, _lender, account) => {
|
|
|
33028
33297
|
}
|
|
33029
33298
|
let ids = [];
|
|
33030
33299
|
try {
|
|
33031
|
-
const res = await
|
|
33032
|
-
|
|
33033
|
-
|
|
33034
|
-
|
|
33035
|
-
|
|
33036
|
-
|
|
33037
|
-
|
|
33038
|
-
|
|
33039
|
-
|
|
33040
|
-
|
|
33041
|
-
|
|
33042
|
-
|
|
33300
|
+
const res = await discoveryMulticall(
|
|
33301
|
+
{
|
|
33302
|
+
chain: chainId,
|
|
33303
|
+
calls: [
|
|
33304
|
+
{
|
|
33305
|
+
address: proto.tellerV2,
|
|
33306
|
+
name: "getBorrowerActiveLoanIds",
|
|
33307
|
+
params: [account]
|
|
33308
|
+
}
|
|
33309
|
+
],
|
|
33310
|
+
abi: TellerV2Abi,
|
|
33311
|
+
allowFailure: true
|
|
33312
|
+
},
|
|
33313
|
+
opts
|
|
33314
|
+
);
|
|
33043
33315
|
ids = toBigints(res?.[0]);
|
|
33044
33316
|
} catch {
|
|
33045
33317
|
return [];
|
|
33046
33318
|
}
|
|
33047
33319
|
if (ids.length === 0) {
|
|
33048
|
-
discoveryCache7.set(cacheKey4(chainId, account
|
|
33320
|
+
discoveryCache7.set(cacheKey4(chainId, account, blockKey(opts)), {
|
|
33321
|
+
bids: [],
|
|
33322
|
+
at: Date.now()
|
|
33323
|
+
});
|
|
33049
33324
|
return [];
|
|
33050
33325
|
}
|
|
33051
33326
|
const poolByAddr = /* @__PURE__ */ new Map();
|
|
33052
33327
|
for (const p of pools) poolByAddr.set(p.pool.toLowerCase(), p);
|
|
33053
33328
|
let lenders = [];
|
|
33054
33329
|
try {
|
|
33055
|
-
lenders = await
|
|
33056
|
-
|
|
33057
|
-
|
|
33058
|
-
|
|
33059
|
-
|
|
33060
|
-
|
|
33061
|
-
|
|
33062
|
-
|
|
33063
|
-
|
|
33064
|
-
|
|
33330
|
+
lenders = await discoveryMulticall(
|
|
33331
|
+
{
|
|
33332
|
+
chain: chainId,
|
|
33333
|
+
calls: ids.map((id) => ({
|
|
33334
|
+
address: proto.tellerV2,
|
|
33335
|
+
name: "getLoanLender",
|
|
33336
|
+
params: [id]
|
|
33337
|
+
})),
|
|
33338
|
+
abi: TellerV2Abi,
|
|
33339
|
+
allowFailure: true
|
|
33340
|
+
},
|
|
33341
|
+
opts
|
|
33342
|
+
);
|
|
33065
33343
|
} catch {
|
|
33066
33344
|
return [];
|
|
33067
33345
|
}
|
|
@@ -33072,7 +33350,10 @@ var buildTellerUserCall = async (chainId, _lender, account) => {
|
|
|
33072
33350
|
const pool = poolByAddr.get(lenderAddr);
|
|
33073
33351
|
if (pool) kept.push({ bidId: id, pool });
|
|
33074
33352
|
});
|
|
33075
|
-
discoveryCache7.set(cacheKey4(chainId, account
|
|
33353
|
+
discoveryCache7.set(cacheKey4(chainId, account, blockKey(opts)), {
|
|
33354
|
+
bids: kept,
|
|
33355
|
+
at: Date.now()
|
|
33356
|
+
});
|
|
33076
33357
|
return buildTellerDataPhase(proto, kept);
|
|
33077
33358
|
};
|
|
33078
33359
|
function buildTellerDataPhase(proto, kept, _account) {
|
|
@@ -33164,7 +33445,7 @@ var buildTermMaxUserCall = async (chainId, _lender, account) => {
|
|
|
33164
33445
|
};
|
|
33165
33446
|
|
|
33166
33447
|
// src/lending/user-data/fetch-balances/prepare.ts
|
|
33167
|
-
async function buildUserCall(chainId, lender, account, params,
|
|
33448
|
+
async function buildUserCall(chainId, lender, account, params, opts) {
|
|
33168
33449
|
if (isAaveV4Type(lender)) return buildAaveV4UserCall(chainId, lender, account);
|
|
33169
33450
|
if (isAaveV2Type(lender)) return buildAaveV2UserCall(chainId, lender, account);
|
|
33170
33451
|
if (isAaveV3Type(lender)) return buildAaveV3UserCall(chainId, lender, account);
|
|
@@ -33174,16 +33455,17 @@ async function buildUserCall(chainId, lender, account, params, getClient) {
|
|
|
33174
33455
|
chainId,
|
|
33175
33456
|
account,
|
|
33176
33457
|
lender,
|
|
33177
|
-
params,
|
|
33178
|
-
|
|
33458
|
+
marketKeysOf(params) ?? [],
|
|
33459
|
+
opts
|
|
33179
33460
|
);
|
|
33180
33461
|
if (isMidnight(lender)) return buildMidnightUserCall(chainId, lender, account);
|
|
33181
33462
|
if (isTerm(lender)) return buildTermUserCall(chainId, lender, account);
|
|
33182
33463
|
if (isExactly(lender)) return buildExactlyUserCall(chainId, lender, account);
|
|
33183
33464
|
if (isLiquityFamily(lender))
|
|
33184
|
-
return buildLiquityUserCall(chainId, lender, account);
|
|
33465
|
+
return buildLiquityUserCall(chainId, lender, account, opts);
|
|
33185
33466
|
if (isRiver(lender)) return buildRiverUserCall(chainId, lender, account);
|
|
33186
|
-
if (isTeller(lender))
|
|
33467
|
+
if (isTeller(lender))
|
|
33468
|
+
return buildTellerUserCall(chainId, lender, account, opts);
|
|
33187
33469
|
if (isTermMax(lender)) return buildTermMaxUserCall(chainId, lender, account);
|
|
33188
33470
|
if (isInverse(lender)) return buildInverseUserCall(chainId, lender, account);
|
|
33189
33471
|
if (isCooler(lender)) return buildCoolerUserCall(chainId, lender, account);
|
|
@@ -33191,11 +33473,13 @@ async function buildUserCall(chainId, lender, account, params, getClient) {
|
|
|
33191
33473
|
return buildFlyingTulipUserCall(chainId, lender, account);
|
|
33192
33474
|
if (isLlamaLend(lender))
|
|
33193
33475
|
return buildLlamaLendUserCall(chainId, lender, account);
|
|
33194
|
-
if (isResupply(lender))
|
|
33476
|
+
if (isResupply(lender))
|
|
33477
|
+
return buildResupplyUserCall(chainId, lender, account, opts);
|
|
33195
33478
|
if (isFraxlend(lender)) return buildFraxlendUserCall(chainId, lender, account);
|
|
33196
|
-
if (isCurvance(lender))
|
|
33197
|
-
|
|
33198
|
-
if (
|
|
33479
|
+
if (isCurvance(lender))
|
|
33480
|
+
return buildCurvanceUserCall(chainId, lender, account, opts);
|
|
33481
|
+
if (isTwyne(lender)) return buildTwyneUserCall(chainId, lender, account, opts);
|
|
33482
|
+
if (isDssType(lender)) return buildDssUserCall(chainId, lender, account, opts);
|
|
33199
33483
|
if (isFrankencoin(lender))
|
|
33200
33484
|
return buildFrankencoinUserCall(chainId, lender, account);
|
|
33201
33485
|
if (isCompoundV3Type(lender))
|
|
@@ -33205,12 +33489,12 @@ async function buildUserCall(chainId, lender, account, params, getClient) {
|
|
|
33205
33489
|
chainId,
|
|
33206
33490
|
lender,
|
|
33207
33491
|
account,
|
|
33208
|
-
params?.subAccountIndexes
|
|
33492
|
+
subAccountsOf(params)?.subAccountIndexes
|
|
33209
33493
|
);
|
|
33210
33494
|
if (isSiloV2Type(lender))
|
|
33211
|
-
return buildSiloV2UserCall(chainId, lender, account, params);
|
|
33495
|
+
return buildSiloV2UserCall(chainId, lender, account, marketKeysOf(params));
|
|
33212
33496
|
if (isSiloV3Type(lender))
|
|
33213
|
-
return buildSiloV3UserCall(chainId, lender, account, params);
|
|
33497
|
+
return buildSiloV3UserCall(chainId, lender, account, marketKeysOf(params));
|
|
33214
33498
|
if (isCompoundV2Type(lender))
|
|
33215
33499
|
return buildCompoundV2UserCall(chainId, lender, account);
|
|
33216
33500
|
if (isFluid(lender)) return buildFluidUserCall(chainId, lender, account);
|
|
@@ -33221,168 +33505,10 @@ async function buildUserCall(chainId, lender, account, params, getClient) {
|
|
|
33221
33505
|
chainId,
|
|
33222
33506
|
lender,
|
|
33223
33507
|
account,
|
|
33224
|
-
params?.accountNumbers
|
|
33508
|
+
subAccountsOf(params)?.accountNumbers
|
|
33225
33509
|
);
|
|
33226
33510
|
return [];
|
|
33227
33511
|
}
|
|
33228
|
-
function organizeUserQueries(queries) {
|
|
33229
|
-
const morphos = queries.filter((q) => isMorphoType(q.lender));
|
|
33230
|
-
const gearbox = queries.filter((q) => isGearboxV3(q.lender));
|
|
33231
|
-
const midnight = queries.filter((q) => isMidnight(q.lender));
|
|
33232
|
-
const term = queries.filter((q) => isTerm(q.lender));
|
|
33233
|
-
const exactly = queries.filter((q) => isExactly(q.lender));
|
|
33234
|
-
const liquity = queries.filter((q) => isLiquityFamily(q.lender));
|
|
33235
|
-
const river = queries.filter((q) => isRiver(q.lender));
|
|
33236
|
-
const teller = queries.filter((q) => isTeller(q.lender));
|
|
33237
|
-
const termMax = queries.filter((q) => isTermMax(q.lender));
|
|
33238
|
-
const usdd = queries.filter((q) => isUsdd(q.lender));
|
|
33239
|
-
const sky = queries.filter((q) => isSky(q.lender));
|
|
33240
|
-
const llamaLend = queries.filter((q) => isLlamaLend(q.lender));
|
|
33241
|
-
const siloV2 = queries.filter((q) => isSiloV2Type(q.lender));
|
|
33242
|
-
const siloV3 = queries.filter((q) => isSiloV3Type(q.lender));
|
|
33243
|
-
const frankencoin = queries.filter((q) => isFrankencoin(q.lender));
|
|
33244
|
-
if (morphos.length === 0 && gearbox.length === 0 && midnight.length === 0 && term.length === 0 && exactly.length === 0 && liquity.length === 0 && river.length === 0 && teller.length === 0 && termMax.length === 0 && usdd.length === 0 && sky.length === 0 && frankencoin.length === 0 && llamaLend.length === 0 && siloV2.length === 0 && siloV3.length === 0)
|
|
33245
|
-
return queries;
|
|
33246
|
-
const others = queries.filter(
|
|
33247
|
-
(q) => !isMorphoType(q.lender) && !isGearboxV3(q.lender) && !isMidnight(q.lender) && !isTerm(q.lender) && !isExactly(q.lender) && !isLiquityFamily(q.lender) && !isRiver(q.lender) && !isTeller(q.lender) && !isTermMax(q.lender) && !isDssType(q.lender) && !isFrankencoin(q.lender) && !isLlamaLend(q.lender) && !isSiloV2Type(q.lender) && !isSiloV3Type(q.lender)
|
|
33248
|
-
);
|
|
33249
|
-
const morphoBlue = morphos.filter((q) => q.lender.startsWith("MORPHO_BLUE"));
|
|
33250
|
-
const moolah = morphos.filter((q) => q.lender.startsWith("LISTA_DAO"));
|
|
33251
|
-
const result = [...others];
|
|
33252
|
-
if (morphoBlue.length > 0) {
|
|
33253
|
-
result.push({
|
|
33254
|
-
lender: Lender.MORPHO_BLUE,
|
|
33255
|
-
account: morphoBlue[0].account,
|
|
33256
|
-
params: morphoBlue.map((p) => p.lender),
|
|
33257
|
-
assets: void 0
|
|
33258
|
-
});
|
|
33259
|
-
}
|
|
33260
|
-
if (moolah.length > 0) {
|
|
33261
|
-
result.push({
|
|
33262
|
-
lender: Lender.LISTA_DAO,
|
|
33263
|
-
account: moolah[0].account,
|
|
33264
|
-
params: moolah.map((p) => p.lender),
|
|
33265
|
-
assets: void 0
|
|
33266
|
-
});
|
|
33267
|
-
}
|
|
33268
|
-
if (gearbox.length > 0) {
|
|
33269
|
-
result.push({
|
|
33270
|
-
lender: Lender.GEARBOX_V3,
|
|
33271
|
-
account: gearbox[0].account,
|
|
33272
|
-
params: gearbox.map((p) => p.lender),
|
|
33273
|
-
assets: void 0
|
|
33274
|
-
});
|
|
33275
|
-
}
|
|
33276
|
-
if (midnight.length > 0) {
|
|
33277
|
-
result.push({
|
|
33278
|
-
lender: Lender.MORPHO_MIDNIGHT,
|
|
33279
|
-
account: midnight[0].account,
|
|
33280
|
-
params: midnight.map((p) => p.lender),
|
|
33281
|
-
assets: void 0
|
|
33282
|
-
});
|
|
33283
|
-
}
|
|
33284
|
-
if (term.length > 0) {
|
|
33285
|
-
result.push({
|
|
33286
|
-
lender: Lender.TERM_FINANCE,
|
|
33287
|
-
account: term[0].account,
|
|
33288
|
-
params: term.map((p) => p.lender),
|
|
33289
|
-
assets: void 0
|
|
33290
|
-
});
|
|
33291
|
-
}
|
|
33292
|
-
if (exactly.length > 0) {
|
|
33293
|
-
result.push({
|
|
33294
|
-
lender: Lender.EXACTLY,
|
|
33295
|
-
account: exactly[0].account,
|
|
33296
|
-
params: exactly.map((p) => p.lender),
|
|
33297
|
-
assets: void 0
|
|
33298
|
-
});
|
|
33299
|
-
}
|
|
33300
|
-
if (river.length > 0) {
|
|
33301
|
-
result.push({
|
|
33302
|
-
lender: Lender.RIVER,
|
|
33303
|
-
account: river[0].account,
|
|
33304
|
-
params: river.map((p) => p.lender),
|
|
33305
|
-
assets: void 0
|
|
33306
|
-
});
|
|
33307
|
-
}
|
|
33308
|
-
if (frankencoin.length > 0) {
|
|
33309
|
-
result.push({
|
|
33310
|
-
lender: Lender.FRANKENCOIN,
|
|
33311
|
-
account: frankencoin[0].account,
|
|
33312
|
-
params: frankencoin.map((p) => p.lender),
|
|
33313
|
-
assets: void 0
|
|
33314
|
-
});
|
|
33315
|
-
}
|
|
33316
|
-
if (usdd.length > 0) {
|
|
33317
|
-
result.push({
|
|
33318
|
-
lender: Lender.USDD,
|
|
33319
|
-
account: usdd[0].account,
|
|
33320
|
-
params: usdd.map((p) => p.lender),
|
|
33321
|
-
assets: void 0
|
|
33322
|
-
});
|
|
33323
|
-
}
|
|
33324
|
-
if (sky.length > 0) {
|
|
33325
|
-
result.push({
|
|
33326
|
-
lender: Lender.SKY,
|
|
33327
|
-
account: sky[0].account,
|
|
33328
|
-
params: sky.map((p) => p.lender),
|
|
33329
|
-
assets: void 0
|
|
33330
|
-
});
|
|
33331
|
-
}
|
|
33332
|
-
if (siloV2.length > 0) {
|
|
33333
|
-
result.push({
|
|
33334
|
-
lender: "SILO_V2",
|
|
33335
|
-
account: siloV2[0].account,
|
|
33336
|
-
params: siloV2.map((p) => p.lender),
|
|
33337
|
-
assets: void 0
|
|
33338
|
-
});
|
|
33339
|
-
}
|
|
33340
|
-
if (siloV3.length > 0) {
|
|
33341
|
-
result.push({
|
|
33342
|
-
lender: "SILO_V3",
|
|
33343
|
-
account: siloV3[0].account,
|
|
33344
|
-
params: siloV3.map((p) => p.lender),
|
|
33345
|
-
assets: void 0
|
|
33346
|
-
});
|
|
33347
|
-
}
|
|
33348
|
-
if (llamaLend.length > 0) {
|
|
33349
|
-
result.push({
|
|
33350
|
-
lender: Lender.LLAMALEND,
|
|
33351
|
-
account: llamaLend[0].account,
|
|
33352
|
-
params: llamaLend.map((p) => p.lender),
|
|
33353
|
-
assets: void 0
|
|
33354
|
-
});
|
|
33355
|
-
}
|
|
33356
|
-
if (teller.length > 0) {
|
|
33357
|
-
result.push({
|
|
33358
|
-
lender: Lender.TELLER,
|
|
33359
|
-
account: teller[0].account,
|
|
33360
|
-
params: teller.map((p) => p.lender),
|
|
33361
|
-
assets: void 0
|
|
33362
|
-
});
|
|
33363
|
-
}
|
|
33364
|
-
if (termMax.length > 0) {
|
|
33365
|
-
result.push({
|
|
33366
|
-
lender: Lender.TERMMAX,
|
|
33367
|
-
account: termMax[0].account,
|
|
33368
|
-
params: termMax.map((p) => p.lender),
|
|
33369
|
-
assets: void 0
|
|
33370
|
-
});
|
|
33371
|
-
}
|
|
33372
|
-
if (liquity.length > 0) {
|
|
33373
|
-
for (const base of LIQUITY_FAMILY_LENDERS) {
|
|
33374
|
-
const members = liquity.filter((q) => q.lender.startsWith(base));
|
|
33375
|
-
if (members.length === 0) continue;
|
|
33376
|
-
result.push({
|
|
33377
|
-
lender: base,
|
|
33378
|
-
account: members[0].account,
|
|
33379
|
-
params: members.map((p) => p.lender),
|
|
33380
|
-
assets: void 0
|
|
33381
|
-
});
|
|
33382
|
-
}
|
|
33383
|
-
}
|
|
33384
|
-
return result;
|
|
33385
|
-
}
|
|
33386
33512
|
|
|
33387
33513
|
// src/lending/user-data/aave-v2-type/userCallParse.ts
|
|
33388
33514
|
var getAaveV2UserDataConverter = (lender, chainId, account, metaMap) => {
|
|
@@ -34052,7 +34178,7 @@ var userDataEmpty = (account, chainId, notWhitelisted = false) => {
|
|
|
34052
34178
|
]
|
|
34053
34179
|
};
|
|
34054
34180
|
};
|
|
34055
|
-
var getMorphoTypeUserDataConverterWithlens = (lender, chainId, account, markets, metaMap) => {
|
|
34181
|
+
var getMorphoTypeUserDataConverterWithlens = (lender, chainId, account, markets, metaMap, opts) => {
|
|
34056
34182
|
return !isLista(lender) ? getMorphoUserDataConverterWithlens(
|
|
34057
34183
|
lender,
|
|
34058
34184
|
chainId,
|
|
@@ -34064,7 +34190,8 @@ var getMorphoTypeUserDataConverterWithlens = (lender, chainId, account, markets,
|
|
|
34064
34190
|
chainId,
|
|
34065
34191
|
account,
|
|
34066
34192
|
markets,
|
|
34067
|
-
metaMap
|
|
34193
|
+
metaMap,
|
|
34194
|
+
opts
|
|
34068
34195
|
);
|
|
34069
34196
|
};
|
|
34070
34197
|
var getMorphoUserDataConverterWithlens = (lender, chainId, account, markets, metaMap) => {
|
|
@@ -34118,7 +34245,7 @@ var getMorphoUserDataConverterWithlens = (lender, chainId, account, markets, met
|
|
|
34118
34245
|
expectedNumberOfCalls
|
|
34119
34246
|
];
|
|
34120
34247
|
};
|
|
34121
|
-
var getListaUserDataConverterWithlens = (lender, chainId, account, markets, metaMap) => {
|
|
34248
|
+
var getListaUserDataConverterWithlens = (lender, chainId, account, markets, metaMap, opts) => {
|
|
34122
34249
|
const expectedNumberOfCalls = Math.ceil(markets.length / CHUNK_SIZE);
|
|
34123
34250
|
return [
|
|
34124
34251
|
(data) => {
|
|
@@ -34151,7 +34278,8 @@ var getListaUserDataConverterWithlens = (lender, chainId, account, markets, meta
|
|
|
34151
34278
|
const brokerData = getCachedListaBrokerUserData(
|
|
34152
34279
|
chainId,
|
|
34153
34280
|
account,
|
|
34154
|
-
marketId
|
|
34281
|
+
marketId,
|
|
34282
|
+
opts?.blockNumber
|
|
34155
34283
|
);
|
|
34156
34284
|
const { dataForMarket, addedDebt, addedDeposits } = createMorphoEntryFromMarketWithLens(
|
|
34157
34285
|
balanceData2,
|
|
@@ -34357,6 +34485,13 @@ function createMorphoEntryFromMarketWithLens(balanceInfo, metaMap, chainId, lend
|
|
|
34357
34485
|
}
|
|
34358
34486
|
|
|
34359
34487
|
// src/lending/user-data/utils/createEulerMultiAccountTypeUserState.ts
|
|
34488
|
+
function subAccountAddressOf(owner, index) {
|
|
34489
|
+
const i = Number(index);
|
|
34490
|
+
if (!Number.isInteger(i) || i < 0 || i > 255) return void 0;
|
|
34491
|
+
if (!/^0x[0-9a-fA-F]{40}$/.test(owner)) return void 0;
|
|
34492
|
+
const last = parseInt(owner.slice(40), 16);
|
|
34493
|
+
return (owner.slice(0, 40) + ((last ^ i) & 255).toString(16).padStart(2, "0")).toLowerCase();
|
|
34494
|
+
}
|
|
34360
34495
|
function createEulerMultiAccountTypeUserState(payload, lenderData, histData) {
|
|
34361
34496
|
const subAccountIndexes = Object.keys(payload.lendingPositions ?? {});
|
|
34362
34497
|
const marketUids2 = getMarketUidsFromMeta(lenderData);
|
|
@@ -34513,6 +34648,11 @@ function createEulerMultiAccountTypeUserState(payload, lenderData, histData) {
|
|
|
34513
34648
|
}
|
|
34514
34649
|
data.push({
|
|
34515
34650
|
accountId: subAccountIndex,
|
|
34651
|
+
// owner ^ index, offline (see `euler/userCallBuild.ts`). Index 0 IS the
|
|
34652
|
+
// owner, so it carries no separate address.
|
|
34653
|
+
...subAccountIndex === "0" ? {} : {
|
|
34654
|
+
accountAddress: subAccountAddressOf(account, subAccountIndex)
|
|
34655
|
+
},
|
|
34516
34656
|
health: balanceData2.debt === 0 ? null : balanceData2.adjustedDebt > 0 ? balanceData2.collateral / balanceData2.adjustedDebt : balanceData2.collateral / balanceData2.debt,
|
|
34517
34657
|
borrowCapacityUSD: creditLine,
|
|
34518
34658
|
userConfig,
|
|
@@ -35571,7 +35711,16 @@ var getDolomiteUserDataConverter = (lender, chainId, account, metaMap) => {
|
|
|
35571
35711
|
modes,
|
|
35572
35712
|
account
|
|
35573
35713
|
};
|
|
35574
|
-
|
|
35714
|
+
const accountAddresses = {};
|
|
35715
|
+
for (const sa of subAccounts)
|
|
35716
|
+
if (sa.owner && sa.owner.toLowerCase() !== account.toLowerCase())
|
|
35717
|
+
accountAddresses[sa.id] = sa.owner.toLowerCase();
|
|
35718
|
+
return createMultiAccountTypeUserState(
|
|
35719
|
+
payload,
|
|
35720
|
+
metaMap,
|
|
35721
|
+
histData,
|
|
35722
|
+
accountAddresses
|
|
35723
|
+
);
|
|
35575
35724
|
},
|
|
35576
35725
|
expectedNumberOfCalls
|
|
35577
35726
|
];
|
|
@@ -36052,10 +36201,10 @@ var big8 = (v) => {
|
|
|
36052
36201
|
return 0n;
|
|
36053
36202
|
};
|
|
36054
36203
|
var field7 = (res, name, idx) => big8(res?.[name] ?? res?.[idx]);
|
|
36055
|
-
var getLiquityUserDataConverter = (lender, chainId, account, meta) => {
|
|
36204
|
+
var getLiquityUserDataConverter = (lender, chainId, account, meta, opts) => {
|
|
36056
36205
|
const cfg = liquityConfigFor(lender, chainId);
|
|
36057
36206
|
const branches = liquityBranchesByChain(lender, chainId);
|
|
36058
|
-
const discovery = getCachedLiquityTroves(chainId, lender, account);
|
|
36207
|
+
const discovery = getCachedLiquityTroves(chainId, lender, account, opts);
|
|
36059
36208
|
const expected = cfg && discovery ? branches.reduce(
|
|
36060
36209
|
(acc, b, i) => acc + liquityBranchCallCount(b, discovery.perBranch[i]?.length ?? 0),
|
|
36061
36210
|
0
|
|
@@ -36976,9 +37125,9 @@ function sharesToAmount(shares, totalAmount, totalShares) {
|
|
|
36976
37125
|
const q = shares * totalAmount / totalShares;
|
|
36977
37126
|
return q * totalShares < shares * totalAmount ? q + 1n : q;
|
|
36978
37127
|
}
|
|
36979
|
-
var getResupplyUserDataConverter = (lender, chainId, account, meta) => {
|
|
37128
|
+
var getResupplyUserDataConverter = (lender, chainId, account, meta, opts) => {
|
|
36980
37129
|
const cfg = resupplyConfigFor(lender, chainId);
|
|
36981
|
-
const discovery = getCachedResupplyDiscovery(chainId, lender, account);
|
|
37130
|
+
const discovery = getCachedResupplyDiscovery(chainId, lender, account, opts);
|
|
36982
37131
|
const positions = discovery?.positions ?? [];
|
|
36983
37132
|
const expected = cfg && positions.length > 0 ? positions.length * RESUPPLY_CALLS_PER_PAIR : 0;
|
|
36984
37133
|
return [
|
|
@@ -37263,9 +37412,9 @@ var big16 = (v) => {
|
|
|
37263
37412
|
};
|
|
37264
37413
|
var tupleAt2 = (v, i) => Array.isArray(v) ? big16(v[i]) : 0n;
|
|
37265
37414
|
var HOLD_PERIOD_SECONDS = 1200n;
|
|
37266
|
-
var getCurvanceUserDataConverter = (lender, chainId, account, meta) => {
|
|
37415
|
+
var getCurvanceUserDataConverter = (lender, chainId, account, meta, opts) => {
|
|
37267
37416
|
const cfg = curvanceConfigFor(lender, chainId);
|
|
37268
|
-
const discovery = getCachedCurvanceDiscovery(chainId, lender, account);
|
|
37417
|
+
const discovery = getCachedCurvanceDiscovery(chainId, lender, account, opts);
|
|
37269
37418
|
const positions = discovery?.positions ?? [];
|
|
37270
37419
|
const expected = cfg && positions.length > 0 ? positions.reduce(
|
|
37271
37420
|
(acc, p) => acc + CURVANCE_MARKET_READS + p.activeTokens.length * CURVANCE_READS_PER_TOKEN,
|
|
@@ -37377,8 +37526,8 @@ var big17 = (v) => {
|
|
|
37377
37526
|
}
|
|
37378
37527
|
return 0n;
|
|
37379
37528
|
};
|
|
37380
|
-
var getTwyneUserDataConverter = (lender, chainId, account, meta) => {
|
|
37381
|
-
const discovery = getCachedTwyneDiscovery(chainId, lender, account);
|
|
37529
|
+
var getTwyneUserDataConverter = (lender, chainId, account, meta, opts) => {
|
|
37530
|
+
const discovery = getCachedTwyneDiscovery(chainId, lender, account, opts);
|
|
37382
37531
|
const vaults = discovery?.vaults ?? [];
|
|
37383
37532
|
const expected = vaults.length * TWYNE_READS_PER_VAULT;
|
|
37384
37533
|
const markets = twyneChainData(lender, chainId)?.markets ?? [];
|
|
@@ -37405,7 +37554,12 @@ var getTwyneUserDataConverter = (lender, chainId, account, meta) => {
|
|
|
37405
37554
|
(m) => m.intermediateVault.toLowerCase() === ref.intermediateVault && m.targetAsset.toLowerCase() === ref.targetAsset
|
|
37406
37555
|
);
|
|
37407
37556
|
if (!market) return;
|
|
37408
|
-
const lenderKey = twyneLenderKey(
|
|
37557
|
+
const lenderKey = twyneLenderKey(
|
|
37558
|
+
lender,
|
|
37559
|
+
chainId,
|
|
37560
|
+
ref.intermediateVault,
|
|
37561
|
+
ref.targetAsset
|
|
37562
|
+
);
|
|
37409
37563
|
if (!byMarket.has(lenderKey)) {
|
|
37410
37564
|
byMarket.set(lenderKey, {
|
|
37411
37565
|
collAddr: market.underlyingAsset.toLowerCase(),
|
|
@@ -37522,10 +37676,10 @@ var big18 = (v) => {
|
|
|
37522
37676
|
return 0n;
|
|
37523
37677
|
};
|
|
37524
37678
|
var field9 = (res, name, idx) => big18(res?.[name] ?? res?.[idx]);
|
|
37525
|
-
var getDssUserDataConverter = (lender, chainId, account, meta) => {
|
|
37679
|
+
var getDssUserDataConverter = (lender, chainId, account, meta, opts) => {
|
|
37526
37680
|
const cfg = dssConfigFor(lender, chainId);
|
|
37527
37681
|
const markets = dssChainData(lender, chainId)?.markets ?? [];
|
|
37528
|
-
const discovery = getCachedDssCdps(lender, chainId, account);
|
|
37682
|
+
const discovery = getCachedDssCdps(lender, chainId, account, opts);
|
|
37529
37683
|
const cdps = discovery?.cdps ?? [];
|
|
37530
37684
|
const ilks = discovery?.ilks ?? [];
|
|
37531
37685
|
const expected = cfg && markets.length > 0 && cdps.length > 0 ? cdps.length * DSS_CALLS_PER_CDP + ilks.length : 0;
|
|
@@ -37780,8 +37934,8 @@ var big20 = (v) => {
|
|
|
37780
37934
|
return 0n;
|
|
37781
37935
|
};
|
|
37782
37936
|
var field10 = (res, name, idx) => res?.[name] ?? res?.[idx];
|
|
37783
|
-
var getTellerUserDataConverter = (_lender, chainId, account, meta) => {
|
|
37784
|
-
const discovery = getCachedTellerBids(chainId, account);
|
|
37937
|
+
var getTellerUserDataConverter = (_lender, chainId, account, meta, opts) => {
|
|
37938
|
+
const discovery = getCachedTellerBids(chainId, account, opts);
|
|
37785
37939
|
const kept = discovery?.bids ?? [];
|
|
37786
37940
|
const expected = kept.length * TELLER_CALLS_PER_BID;
|
|
37787
37941
|
return [
|
|
@@ -38184,7 +38338,7 @@ function validateUserData(userData, hadFailedReads) {
|
|
|
38184
38338
|
}
|
|
38185
38339
|
|
|
38186
38340
|
// src/lending/user-data/fetch-balances/parse.ts
|
|
38187
|
-
function getUserDataConverter(lender, chainId, account, params, meta) {
|
|
38341
|
+
function getUserDataConverter(lender, chainId, account, params, meta, opts) {
|
|
38188
38342
|
if (isAaveV4Type(lender))
|
|
38189
38343
|
return getAaveV4UserDataConverter(lender, chainId, account, meta?.[lender]);
|
|
38190
38344
|
if (isYLDR(lender))
|
|
@@ -38201,7 +38355,8 @@ function getUserDataConverter(lender, chainId, account, params, meta) {
|
|
|
38201
38355
|
chainId,
|
|
38202
38356
|
account,
|
|
38203
38357
|
params,
|
|
38204
|
-
meta
|
|
38358
|
+
meta,
|
|
38359
|
+
opts
|
|
38205
38360
|
);
|
|
38206
38361
|
if (isMidnight(lender))
|
|
38207
38362
|
return getMidnightUserDataConverter(lender, chainId, account, meta);
|
|
@@ -38210,11 +38365,11 @@ function getUserDataConverter(lender, chainId, account, params, meta) {
|
|
|
38210
38365
|
if (isExactly(lender))
|
|
38211
38366
|
return getExactlyUserDataConverter(lender, chainId, account, meta);
|
|
38212
38367
|
if (isLiquityFamily(lender))
|
|
38213
|
-
return getLiquityUserDataConverter(lender, chainId, account, meta);
|
|
38368
|
+
return getLiquityUserDataConverter(lender, chainId, account, meta, opts);
|
|
38214
38369
|
if (isRiver(lender))
|
|
38215
38370
|
return getRiverUserDataConverter(lender, chainId, account, meta);
|
|
38216
38371
|
if (isTeller(lender))
|
|
38217
|
-
return getTellerUserDataConverter(lender, chainId, account, meta);
|
|
38372
|
+
return getTellerUserDataConverter(lender, chainId, account, meta, opts);
|
|
38218
38373
|
if (isTermMax(lender))
|
|
38219
38374
|
return getTermMaxUserDataConverter(lender, chainId, account, meta);
|
|
38220
38375
|
if (isInverse(lender))
|
|
@@ -38231,15 +38386,15 @@ function getUserDataConverter(lender, chainId, account, params, meta) {
|
|
|
38231
38386
|
if (isLlamaLend(lender))
|
|
38232
38387
|
return getLlamaLendUserDataConverter(lender, chainId, account, meta);
|
|
38233
38388
|
if (isResupply(lender))
|
|
38234
|
-
return getResupplyUserDataConverter(lender, chainId, account, meta);
|
|
38389
|
+
return getResupplyUserDataConverter(lender, chainId, account, meta, opts);
|
|
38235
38390
|
if (isFraxlend(lender))
|
|
38236
38391
|
return getFraxlendUserDataConverter(lender, chainId, account, meta);
|
|
38237
38392
|
if (isCurvance(lender))
|
|
38238
|
-
return getCurvanceUserDataConverter(lender, chainId, account, meta);
|
|
38393
|
+
return getCurvanceUserDataConverter(lender, chainId, account, meta, opts);
|
|
38239
38394
|
if (isTwyne(lender))
|
|
38240
|
-
return getTwyneUserDataConverter(lender, chainId, account, meta);
|
|
38395
|
+
return getTwyneUserDataConverter(lender, chainId, account, meta, opts);
|
|
38241
38396
|
if (isDssType(lender))
|
|
38242
|
-
return getDssUserDataConverter(lender, chainId, account, meta);
|
|
38397
|
+
return getDssUserDataConverter(lender, chainId, account, meta, opts);
|
|
38243
38398
|
if (isFrankencoin(lender))
|
|
38244
38399
|
return getFrankencoinUserDataConverter(lender, chainId, account, meta);
|
|
38245
38400
|
if (isCompoundV3Type(lender))
|
|
@@ -38295,6 +38450,7 @@ var filterEmptyUserData = (userData, keepActiveControllerMode = false) => {
|
|
|
38295
38450
|
var getReadFailurePolicy = (lender) => isMultiMarket(lender) && !hasCrossMarginRisk(lender) ? "lenient" : "strict";
|
|
38296
38451
|
var convertLenderUserDataResult = (chainId, queriesRaw, rawResults, lenderState, options) => {
|
|
38297
38452
|
const queries = organizeUserQueries(queriesRaw);
|
|
38453
|
+
const readOpts = options?.blockNumber === void 0 ? void 0 : { blockNumber: options.blockNumber };
|
|
38298
38454
|
const lenderData = {};
|
|
38299
38455
|
let currentSlice = 0;
|
|
38300
38456
|
for (const query3 of queries) {
|
|
@@ -38303,7 +38459,8 @@ var convertLenderUserDataResult = (chainId, queriesRaw, rawResults, lenderState,
|
|
|
38303
38459
|
chainId,
|
|
38304
38460
|
query3.account,
|
|
38305
38461
|
query3.params,
|
|
38306
|
-
lenderState
|
|
38462
|
+
lenderState,
|
|
38463
|
+
readOpts
|
|
38307
38464
|
);
|
|
38308
38465
|
const data = rawResults.slice(currentSlice, currentSlice + sliceLength);
|
|
38309
38466
|
let failedCalls = 0;
|
|
@@ -43041,7 +43198,7 @@ var getLenderUserDataResult = async (chainId, queriesRaw, getEvmClient21, allowF
|
|
|
43041
43198
|
query3.lender,
|
|
43042
43199
|
query3.account,
|
|
43043
43200
|
query3.params,
|
|
43044
|
-
getEvmClient21
|
|
43201
|
+
{ getClient: getEvmClient21 }
|
|
43045
43202
|
);
|
|
43046
43203
|
return callData.map((call) => ({ call, abi: call.abi ?? abi }));
|
|
43047
43204
|
})
|
|
@@ -43065,9 +43222,13 @@ var getLenderUserDataResult = async (chainId, queriesRaw, getEvmClient21, allowF
|
|
|
43065
43222
|
onEndpointFailure ? { onEndpointFailure } : void 0
|
|
43066
43223
|
);
|
|
43067
43224
|
};
|
|
43068
|
-
var prepareLenderUserDataRpcCalls = async (chainId, queriesRaw, batchSize = MULTICALL_DEFAULT_BATCH_SIZE, blockTag = "latest", allowFailure = true) => {
|
|
43225
|
+
var prepareLenderUserDataRpcCalls = async (chainId, queriesRaw, batchSize = MULTICALL_DEFAULT_BATCH_SIZE, blockTag = "latest", allowFailure = true, opts) => {
|
|
43069
43226
|
const multicallAddress = getEvmChain(chainId).contracts?.multicall3?.address;
|
|
43070
43227
|
const queries = organizeUserQueries(queriesRaw);
|
|
43228
|
+
const readOpts = {
|
|
43229
|
+
...opts,
|
|
43230
|
+
blockNumber: opts?.blockNumber ?? blockNumberFromTag(blockTag)
|
|
43231
|
+
};
|
|
43071
43232
|
const builtCalls = await Promise.all(
|
|
43072
43233
|
queries.map(async (query3) => {
|
|
43073
43234
|
const abi = getAbi2(query3.lender);
|
|
@@ -43075,7 +43236,8 @@ var prepareLenderUserDataRpcCalls = async (chainId, queriesRaw, batchSize = MULT
|
|
|
43075
43236
|
chainId,
|
|
43076
43237
|
query3.lender,
|
|
43077
43238
|
query3.account,
|
|
43078
|
-
query3.params
|
|
43239
|
+
query3.params,
|
|
43240
|
+
readOpts
|
|
43079
43241
|
);
|
|
43080
43242
|
return callData.map((call) => ({ call, abi: call.abi ?? abi }));
|
|
43081
43243
|
})
|
|
@@ -43991,6 +44153,248 @@ function fuseLenderData(userDataResult, summary) {
|
|
|
43991
44153
|
return entries;
|
|
43992
44154
|
}
|
|
43993
44155
|
|
|
44156
|
+
// src/lending/user-data/read/select.ts
|
|
44157
|
+
var PREFIX_LENDERS = /* @__PURE__ */ new Set([
|
|
44158
|
+
"MORPHO_BLUE",
|
|
44159
|
+
"LISTA_DAO",
|
|
44160
|
+
"COMPOUND_V3",
|
|
44161
|
+
"CURVANCE"
|
|
44162
|
+
]);
|
|
44163
|
+
var parseLenderKey = (raw) => raw.trim().toUpperCase().replaceAll("-", "_");
|
|
44164
|
+
function filterLenderMeta(meta, filter) {
|
|
44165
|
+
const lenders = filter?.lenders;
|
|
44166
|
+
if (!lenders?.length) return meta;
|
|
44167
|
+
const exact = /* @__PURE__ */ new Set();
|
|
44168
|
+
const prefixes = [];
|
|
44169
|
+
for (const l of lenders) {
|
|
44170
|
+
if (PREFIX_LENDERS.has(l)) prefixes.push(l);
|
|
44171
|
+
else exact.add(l);
|
|
44172
|
+
}
|
|
44173
|
+
const markets = filter?.markets?.length ? new Set(filter.markets.map((m) => m.toLowerCase().replace(/^0x/, ""))) : void 0;
|
|
44174
|
+
const out = {};
|
|
44175
|
+
for (const key3 of Object.keys(meta)) {
|
|
44176
|
+
if (exact.has(key3)) {
|
|
44177
|
+
out[key3] = meta[key3];
|
|
44178
|
+
continue;
|
|
44179
|
+
}
|
|
44180
|
+
const p = prefixes.find((x) => key3.startsWith(`${x}_`));
|
|
44181
|
+
if (!p) continue;
|
|
44182
|
+
if (markets) {
|
|
44183
|
+
const id = key3.slice(p.length + 1).toLowerCase().replace(/^0x/, "");
|
|
44184
|
+
if (!markets.has(id)) continue;
|
|
44185
|
+
}
|
|
44186
|
+
out[key3] = meta[key3];
|
|
44187
|
+
}
|
|
44188
|
+
return out;
|
|
44189
|
+
}
|
|
44190
|
+
var buildQueriesFromMeta = (meta, account, selection) => Object.keys(meta).map((lender) => {
|
|
44191
|
+
if (selection?.subAccountIndexes?.length && isEulerType(lender))
|
|
44192
|
+
return {
|
|
44193
|
+
lender,
|
|
44194
|
+
account,
|
|
44195
|
+
params: { subAccountIndexes: selection.subAccountIndexes }
|
|
44196
|
+
};
|
|
44197
|
+
const dolomiteIds = selection?.accountNumbers ?? selection?.subAccountIndexes?.map((i) => String(i));
|
|
44198
|
+
if (dolomiteIds?.length && isDolomite(lender))
|
|
44199
|
+
return { lender, account, params: { accountNumbers: dolomiteIds } };
|
|
44200
|
+
return { lender, account };
|
|
44201
|
+
});
|
|
44202
|
+
var injectLenderInfoIntoEntries = (entries, infoByChain) => {
|
|
44203
|
+
if (!infoByChain) return;
|
|
44204
|
+
for (const entry of entries) {
|
|
44205
|
+
const hit = infoByChain[entry.chainId]?.[entry.lender];
|
|
44206
|
+
if (hit) entry.lenderInfo = hit;
|
|
44207
|
+
}
|
|
44208
|
+
};
|
|
44209
|
+
|
|
44210
|
+
// src/utils/rpcParse.ts
|
|
44211
|
+
function parseRawRpcResponses(responses, callMetadata, allowFailure = true) {
|
|
44212
|
+
const sortedResponses = [...responses].sort((a, b) => a.id - b.id);
|
|
44213
|
+
return sortedResponses.map((response, idx) => {
|
|
44214
|
+
const metadata = callMetadata[idx];
|
|
44215
|
+
if (response.error || !response.result) {
|
|
44216
|
+
if (!allowFailure) {
|
|
44217
|
+
throw new Error(
|
|
44218
|
+
`RPC call failed for ${metadata.functionName}: ${response.error?.message || "No result"}`
|
|
44219
|
+
);
|
|
44220
|
+
}
|
|
44221
|
+
return "0x";
|
|
44222
|
+
}
|
|
44223
|
+
try {
|
|
44224
|
+
const decoded = decodeFunctionResult({
|
|
44225
|
+
abi: metadata.abi,
|
|
44226
|
+
functionName: metadata.functionName,
|
|
44227
|
+
data: response.result
|
|
44228
|
+
});
|
|
44229
|
+
return decoded;
|
|
44230
|
+
} catch (error) {
|
|
44231
|
+
if (!allowFailure) {
|
|
44232
|
+
throw new Error(
|
|
44233
|
+
`Failed to decode result for ${metadata.functionName}: ${error}`
|
|
44234
|
+
);
|
|
44235
|
+
}
|
|
44236
|
+
return "0x";
|
|
44237
|
+
}
|
|
44238
|
+
});
|
|
44239
|
+
}
|
|
44240
|
+
function parseRawRpcBatchResponses(batches, batchResponses, allowFailure = true) {
|
|
44241
|
+
const allResults = [];
|
|
44242
|
+
batches.forEach((batch, batchIdx) => {
|
|
44243
|
+
const responses = batchResponses[batchIdx];
|
|
44244
|
+
const parsed = parseRawRpcResponses(
|
|
44245
|
+
responses,
|
|
44246
|
+
batch.callMetadata,
|
|
44247
|
+
allowFailure
|
|
44248
|
+
);
|
|
44249
|
+
allResults.push(...parsed);
|
|
44250
|
+
});
|
|
44251
|
+
return allResults;
|
|
44252
|
+
}
|
|
44253
|
+
function parseMulticallRpcResponses(responses, batches, allowFailure = true, permanentFailures) {
|
|
44254
|
+
const allResults = [];
|
|
44255
|
+
const sortedResponses = [...responses].sort((a, b) => a.id - b.id);
|
|
44256
|
+
sortedResponses.forEach((response, batchIdx) => {
|
|
44257
|
+
const batch = batches[batchIdx];
|
|
44258
|
+
if (response.error || !response.result) {
|
|
44259
|
+
if (!allowFailure) {
|
|
44260
|
+
throw new Error(
|
|
44261
|
+
`Multicall RPC failed: ${response.error?.message || "No result"}`
|
|
44262
|
+
);
|
|
44263
|
+
}
|
|
44264
|
+
batch.callMetadata.forEach(() => allResults.push("0x"));
|
|
44265
|
+
return;
|
|
44266
|
+
}
|
|
44267
|
+
try {
|
|
44268
|
+
const decoded = decodeAbiParameters(
|
|
44269
|
+
[
|
|
44270
|
+
{
|
|
44271
|
+
type: "tuple[]",
|
|
44272
|
+
components: [
|
|
44273
|
+
{ name: "success", type: "bool" },
|
|
44274
|
+
{ name: "returnData", type: "bytes" }
|
|
44275
|
+
]
|
|
44276
|
+
}
|
|
44277
|
+
],
|
|
44278
|
+
response.result
|
|
44279
|
+
)[0];
|
|
44280
|
+
decoded.forEach((result, idx) => {
|
|
44281
|
+
const metadata = batch.callMetadata[idx];
|
|
44282
|
+
if (!result.success || result.returnData === "0x") {
|
|
44283
|
+
if (!allowFailure) {
|
|
44284
|
+
throw new Error(`Call failed for ${metadata.functionName}`);
|
|
44285
|
+
}
|
|
44286
|
+
permanentFailures?.add(allResults.length);
|
|
44287
|
+
allResults.push("0x");
|
|
44288
|
+
return;
|
|
44289
|
+
}
|
|
44290
|
+
try {
|
|
44291
|
+
const decodedResult = decodeFunctionResult({
|
|
44292
|
+
abi: metadata.abi,
|
|
44293
|
+
functionName: metadata.functionName,
|
|
44294
|
+
data: result.returnData
|
|
44295
|
+
});
|
|
44296
|
+
allResults.push(decodedResult);
|
|
44297
|
+
} catch (error) {
|
|
44298
|
+
if (!allowFailure) {
|
|
44299
|
+
throw new Error(
|
|
44300
|
+
`Failed to decode result for ${metadata.functionName}: ${error}`
|
|
44301
|
+
);
|
|
44302
|
+
}
|
|
44303
|
+
permanentFailures?.add(allResults.length);
|
|
44304
|
+
allResults.push("0x");
|
|
44305
|
+
}
|
|
44306
|
+
});
|
|
44307
|
+
} catch (error) {
|
|
44308
|
+
if (!allowFailure) {
|
|
44309
|
+
throw new Error(`Failed to decode multicall response: ${error}`);
|
|
44310
|
+
}
|
|
44311
|
+
batch.callMetadata.forEach(() => allResults.push("0x"));
|
|
44312
|
+
}
|
|
44313
|
+
});
|
|
44314
|
+
return allResults;
|
|
44315
|
+
}
|
|
44316
|
+
|
|
44317
|
+
// src/lending/user-data/read/readUserPositions.ts
|
|
44318
|
+
async function readUserPositions(params) {
|
|
44319
|
+
const t0 = Date.now();
|
|
44320
|
+
const {
|
|
44321
|
+
chainId,
|
|
44322
|
+
account,
|
|
44323
|
+
meta,
|
|
44324
|
+
transport,
|
|
44325
|
+
batchSize = MULTICALL_DEFAULT_BATCH_SIZE
|
|
44326
|
+
} = params;
|
|
44327
|
+
const blockNumber = params.blockNumber === void 0 ? void 0 : BigInt(params.blockNumber);
|
|
44328
|
+
const asOfBlock = blockNumber === void 0 ? null : Number(blockNumber);
|
|
44329
|
+
const selected = filterLenderMeta(meta, {
|
|
44330
|
+
lenders: params.lenders,
|
|
44331
|
+
markets: params.markets
|
|
44332
|
+
});
|
|
44333
|
+
const queries = buildQueriesFromMeta(selected, account, {
|
|
44334
|
+
subAccountIndexes: params.subAccountIndexes,
|
|
44335
|
+
accountNumbers: params.accountNumbers
|
|
44336
|
+
});
|
|
44337
|
+
if (queries.length === 0)
|
|
44338
|
+
return {
|
|
44339
|
+
items: [],
|
|
44340
|
+
asOfBlock,
|
|
44341
|
+
partial: false,
|
|
44342
|
+
incompleteLenders: [],
|
|
44343
|
+
stats: { lenders: 0, calls: 0, batches: 0, ms: Date.now() - t0 }
|
|
44344
|
+
};
|
|
44345
|
+
const prepared = await prepareLenderUserDataRpcCalls(
|
|
44346
|
+
chainId,
|
|
44347
|
+
queries,
|
|
44348
|
+
batchSize,
|
|
44349
|
+
blockNumber === void 0 ? "latest" : `0x${blockNumber.toString(16)}`,
|
|
44350
|
+
true,
|
|
44351
|
+
{ ...params.readContext, blockNumber }
|
|
44352
|
+
);
|
|
44353
|
+
const responses = await transport(prepared.rpcCalls);
|
|
44354
|
+
const permanentFailures = /* @__PURE__ */ new Set();
|
|
44355
|
+
const decoded = parseMulticallRpcResponses(
|
|
44356
|
+
responses,
|
|
44357
|
+
prepared.batches,
|
|
44358
|
+
true,
|
|
44359
|
+
permanentFailures
|
|
44360
|
+
);
|
|
44361
|
+
const incompleteLenders = [];
|
|
44362
|
+
const converted = convertLenderUserDataResult(
|
|
44363
|
+
chainId,
|
|
44364
|
+
prepared.queries,
|
|
44365
|
+
decoded,
|
|
44366
|
+
selected,
|
|
44367
|
+
{
|
|
44368
|
+
permanentFailures,
|
|
44369
|
+
// The build phase cached its discoveries under this block; the parse
|
|
44370
|
+
// phase has to look them up under the same one.
|
|
44371
|
+
blockNumber,
|
|
44372
|
+
onIncomplete: (info) => {
|
|
44373
|
+
incompleteLenders.push(`${chainId}:${info.lender}`);
|
|
44374
|
+
params.onIncomplete?.(info);
|
|
44375
|
+
}
|
|
44376
|
+
}
|
|
44377
|
+
);
|
|
44378
|
+
const userData = { [chainId]: converted };
|
|
44379
|
+
const items = fuseLenderData(userData, buildSummaries(userData));
|
|
44380
|
+
injectLenderInfoIntoEntries(
|
|
44381
|
+
items,
|
|
44382
|
+
params.lenderInfo ? { [chainId]: params.lenderInfo } : void 0
|
|
44383
|
+
);
|
|
44384
|
+
return {
|
|
44385
|
+
items,
|
|
44386
|
+
asOfBlock,
|
|
44387
|
+
partial: incompleteLenders.length > 0,
|
|
44388
|
+
incompleteLenders,
|
|
44389
|
+
stats: {
|
|
44390
|
+
lenders: queries.length,
|
|
44391
|
+
calls: prepared.batches.reduce((n, b) => n + b.callMetadata.length, 0),
|
|
44392
|
+
batches: prepared.batches.length,
|
|
44393
|
+
ms: Date.now() - t0
|
|
44394
|
+
}
|
|
44395
|
+
};
|
|
44396
|
+
}
|
|
44397
|
+
|
|
43994
44398
|
// src/yields/intrinsic/fetchers/lido.ts
|
|
43995
44399
|
var WSTETH_URL = "https://eth-api.lido.fi/v1/protocol/steth/apr/sma";
|
|
43996
44400
|
var DEFILLAMA_LIDO_URL = "https://yields.llama.fi/chart/747c1d2a-c668-4682-b9f9-296708a3dd90";
|
|
@@ -79218,113 +79622,6 @@ function computeEModeAnalysis(subAccount, lenderMeta, eModes) {
|
|
|
79218
79622
|
};
|
|
79219
79623
|
});
|
|
79220
79624
|
}
|
|
79221
|
-
|
|
79222
|
-
// src/utils/rpcParse.ts
|
|
79223
|
-
function parseRawRpcResponses(responses, callMetadata, allowFailure = true) {
|
|
79224
|
-
const sortedResponses = [...responses].sort((a, b) => a.id - b.id);
|
|
79225
|
-
return sortedResponses.map((response, idx) => {
|
|
79226
|
-
const metadata = callMetadata[idx];
|
|
79227
|
-
if (response.error || !response.result) {
|
|
79228
|
-
if (!allowFailure) {
|
|
79229
|
-
throw new Error(
|
|
79230
|
-
`RPC call failed for ${metadata.functionName}: ${response.error?.message || "No result"}`
|
|
79231
|
-
);
|
|
79232
|
-
}
|
|
79233
|
-
return "0x";
|
|
79234
|
-
}
|
|
79235
|
-
try {
|
|
79236
|
-
const decoded = decodeFunctionResult({
|
|
79237
|
-
abi: metadata.abi,
|
|
79238
|
-
functionName: metadata.functionName,
|
|
79239
|
-
data: response.result
|
|
79240
|
-
});
|
|
79241
|
-
return decoded;
|
|
79242
|
-
} catch (error) {
|
|
79243
|
-
if (!allowFailure) {
|
|
79244
|
-
throw new Error(
|
|
79245
|
-
`Failed to decode result for ${metadata.functionName}: ${error}`
|
|
79246
|
-
);
|
|
79247
|
-
}
|
|
79248
|
-
return "0x";
|
|
79249
|
-
}
|
|
79250
|
-
});
|
|
79251
|
-
}
|
|
79252
|
-
function parseRawRpcBatchResponses(batches, batchResponses, allowFailure = true) {
|
|
79253
|
-
const allResults = [];
|
|
79254
|
-
batches.forEach((batch, batchIdx) => {
|
|
79255
|
-
const responses = batchResponses[batchIdx];
|
|
79256
|
-
const parsed = parseRawRpcResponses(
|
|
79257
|
-
responses,
|
|
79258
|
-
batch.callMetadata,
|
|
79259
|
-
allowFailure
|
|
79260
|
-
);
|
|
79261
|
-
allResults.push(...parsed);
|
|
79262
|
-
});
|
|
79263
|
-
return allResults;
|
|
79264
|
-
}
|
|
79265
|
-
function parseMulticallRpcResponses(responses, batches, allowFailure = true, permanentFailures) {
|
|
79266
|
-
const allResults = [];
|
|
79267
|
-
const sortedResponses = [...responses].sort((a, b) => a.id - b.id);
|
|
79268
|
-
sortedResponses.forEach((response, batchIdx) => {
|
|
79269
|
-
const batch = batches[batchIdx];
|
|
79270
|
-
if (response.error || !response.result) {
|
|
79271
|
-
if (!allowFailure) {
|
|
79272
|
-
throw new Error(
|
|
79273
|
-
`Multicall RPC failed: ${response.error?.message || "No result"}`
|
|
79274
|
-
);
|
|
79275
|
-
}
|
|
79276
|
-
batch.callMetadata.forEach(() => allResults.push("0x"));
|
|
79277
|
-
return;
|
|
79278
|
-
}
|
|
79279
|
-
try {
|
|
79280
|
-
const decoded = decodeAbiParameters(
|
|
79281
|
-
[
|
|
79282
|
-
{
|
|
79283
|
-
type: "tuple[]",
|
|
79284
|
-
components: [
|
|
79285
|
-
{ name: "success", type: "bool" },
|
|
79286
|
-
{ name: "returnData", type: "bytes" }
|
|
79287
|
-
]
|
|
79288
|
-
}
|
|
79289
|
-
],
|
|
79290
|
-
response.result
|
|
79291
|
-
)[0];
|
|
79292
|
-
decoded.forEach((result, idx) => {
|
|
79293
|
-
const metadata = batch.callMetadata[idx];
|
|
79294
|
-
if (!result.success || result.returnData === "0x") {
|
|
79295
|
-
if (!allowFailure) {
|
|
79296
|
-
throw new Error(`Call failed for ${metadata.functionName}`);
|
|
79297
|
-
}
|
|
79298
|
-
permanentFailures?.add(allResults.length);
|
|
79299
|
-
allResults.push("0x");
|
|
79300
|
-
return;
|
|
79301
|
-
}
|
|
79302
|
-
try {
|
|
79303
|
-
const decodedResult = decodeFunctionResult({
|
|
79304
|
-
abi: metadata.abi,
|
|
79305
|
-
functionName: metadata.functionName,
|
|
79306
|
-
data: result.returnData
|
|
79307
|
-
});
|
|
79308
|
-
allResults.push(decodedResult);
|
|
79309
|
-
} catch (error) {
|
|
79310
|
-
if (!allowFailure) {
|
|
79311
|
-
throw new Error(
|
|
79312
|
-
`Failed to decode result for ${metadata.functionName}: ${error}`
|
|
79313
|
-
);
|
|
79314
|
-
}
|
|
79315
|
-
permanentFailures?.add(allResults.length);
|
|
79316
|
-
allResults.push("0x");
|
|
79317
|
-
}
|
|
79318
|
-
});
|
|
79319
|
-
} catch (error) {
|
|
79320
|
-
if (!allowFailure) {
|
|
79321
|
-
throw new Error(`Failed to decode multicall response: ${error}`);
|
|
79322
|
-
}
|
|
79323
|
-
batch.callMetadata.forEach(() => allResults.push("0x"));
|
|
79324
|
-
}
|
|
79325
|
-
});
|
|
79326
|
-
return allResults;
|
|
79327
|
-
}
|
|
79328
79625
|
var ERC20_STRING_ABI = [
|
|
79329
79626
|
{
|
|
79330
79627
|
inputs: [],
|
|
@@ -82759,6 +83056,6 @@ function earnPositionTotals(items) {
|
|
|
82759
83056
|
};
|
|
82760
83057
|
}
|
|
82761
83058
|
|
|
82762
|
-
export { ApiBookSource, DEFAULT_MIDNIGHT_API, DEFAULT_OUTLIER_GUARD, DEFAULT_PROFILE_ID, DEFAULT_STALE_REJECT_SECONDS, DEFAULT_TERMMAX_API, DEFAULT_TERM_ORDER_STORE, DOLOMITE_ISO_ID_PREFIX, EARN_DESCRIPTIONS, EARN_LABELS, EARN_RATE_SOURCE_BY_PROVIDER, EMPTY_BALANCE, EXACTLY_LENDER_KEY, FLYING_TULIP_LENDER_KEY, FRACTION_RATE_PROVIDERS, GMX_API_HOSTS, GMX_READ_CONTRACTS, GMX_SUPPORTED_CHAINS, HYPERCORE_VAULT_REGISTRY, IDLE_MARKET_ID, INTERFACE_IDS, LAGOON_API_URL, LAGOON_CHAIN_IDS, MORPHO_LENS, MULTICALL_FAILURE, MaxParamThresholds, PASSTHROUGH_RATE_EPSILON, PENDLE_ASSETS_URL, PENDLE_CHAIN_IDS, PENDLE_MARKETS_URL, SDK_FRACTION_RATE_PROVIDERS, SPECTRA_NETWORKS, SPECTRA_RATE_MAX_PERCENT, SPECTRA_RATE_MIN_PERCENT, STABLECOIN_SYMBOLS, STCELO_MANAGER_ADDRESS, TELLER_CALLS_PER_BID, DECIMAL_BASE as TERMMAX_DECIMAL_BASE, TERMMAX_LIQUIDATION_PENALTY, TERMMAX_LIQUIDATION_WINDOW_SECS, TERMMAX_LIQUIDATOR_BONUS, TERMMAX_MARKETS_PER_CALL, TERMMAX_PARTIAL_CLOSE_FACTOR, TERMMAX_PARTIAL_LIQUIDATION_THRESHOLD_USD, TERM_ADAPTERS, TERM_PROFILES, TERM_SHEET_SCHEMA_VERSION, TermMaxApiSource, TermSubgraphSource, UPSHIFT_CHAIN_IDS, UPSHIFT_VAULTS_URL, VAULT_PROVIDERS, VAULT_PROVIDER_PROFILE, VAULT_PROVIDER_TRAITS, VAULT_SHARE_PRICE_PROBE, VAULT_VENUE_PREFIX, VOLATILE_VAULT_OVERRIDES, YEARN_CHAIN_IDS, YEARN_YDAEMON_BASE, __resetResupplyUserCaches, accountDepositListKey, accountWithdrawalListKey, appendSnapshot, applyEarnSanity, applyPositionDelta, attachImplications, attachPricesToFlashLiquidity, borrowDescription, borrowFindings, borrowHeadline, buildExposures2 as buildExposures, buildFluidFTokensCall, buildLendingPositionUid, buildLiquityUserCall, buildLoopResult, buildMorphoTypeCall, buildMorphoTypeUserCallWithLens, buildPortfolioTotals, buildSumerAccumulators, buildSummaries, buildTellerUserCall, buildTermMaxUserCall, buildTermSheet, buildTermSheetsForGroup, buildVaultEarnUid, buildVaultLookup, buildVaultTermSheet, calculateLeverage, calculateNetApr, calculateOverallNetApr, calculateWeightedAverage, classifyFreshness, classifyReliability, classifyVault, clearPendleMarketsCache, clearSpectraMarketsCache, collateralSymbolsByVenue, collectFeedObservations, computeBorrowDelta2 as computeBorrowDelta, computeCloseTradeDeltas, computeCollateralSwapDeltas, computeDebtSwapDeltas, computeDepositDelta2 as computeDepositDelta, computeEModeAnalysis, computeOpenTradeDeltas, computePostTradeMetrics, computeRepayDelta2 as computeRepayDelta, computeSumerBorrowDelta, computeSumerDepositDelta, computeSumerRepayDelta, computeSumerWaterfall, computeSumerWithdrawDelta, computeVaultApr, computeWithdrawDelta2 as computeWithdrawDelta, computeZapTradeDeltas, consensusReference, convertCoolerMarketsToResponse, convertDssMarketsToResponse, convertExactlyMarketsToResponse, convertFlyingTulipMarketsToResponse, convertFrankencoinMarketsToResponse, convertFraxlendPairsToResponse, convertInverseMarketsToResponse, convertLenderUserDataResult, convertLiquityMarketsToResponse, convertLlamaLendMarketsToResponse, convertResupplyMarketsToResponse, convertRiverMarketsToResponse, convertTellerMarketsToResponse, convertTermMarketsToResponse, convertTermMaxMarketsToResponse, convertUsddMarketsToResponse, createMarketUid, createMidnightBookSource, createMulticallRpcCall, createRawRpcCalls, createTermBookSource, createTermMaxDataSource, decodeListaMarkets, decodeMarkets, decodePackedListaUserDataset, decodePackedMorphoUserDataset, deriveBorrowTags, deriveSupplyTags, detectInterfaceKinds, dexResolverFor, disambiguateEarnNames, dolomiteVaultAddress, dssIlkBytes32, dssKeyParts, dssLenderKey, duration, earnDescription, earnLabel, earnMarketFromPool, earnMarketFromVault, earnMarketLabel, earnPositionFromLenderEntry, earnPositionFromVaultBalance, earnPositionTotals, earnRateAtMaturity, earnRowSubtitle, earnUidFromMarketUid, earnVaultTerms, earnVenueKind, emitterCoverage, encodeBalanceFetcherCalldata, enrichTermSheet, enrichmentIndexFromRows, enumerateEmitters, exactlyPairLtv, exactlyPenaltyRateToAprPercent, exactlyWadRateToPercent, feePhrase, feedKeyOf, feedStatKey, fetchCoolerMarkets, fetchDolomiteAccountNumbers, fetchDolomiteSubAccounts, fetchDssMarkets, fetchEulerEarnVaults, fetchEulerEarnVaultsFromSubgraph, fetchEulerSubAccountIndexes, fetchExactlyMarkets, fetchFlashLiquidityForChain, fetchFluidDexState, fetchFluidFTokens, fetchFlyingTulipMarkets, fetchFrankencoinMarkets, fetchFraxlendPairs, fetchGeneralYields, fetchGeneralYieldsByMarketUid, fetchGmxExecutionFees, fetchGmxTickerPrices, fetchGmxVaults, fetchHypercoreVaults, fetchInverseMarkets, fetchLagoonApiVaults, fetchLagoonVaults, fetchLiquityMarkets, fetchListaVaultsFromChain, fetchLlamaLendMarkets, fetchMorphoUserBalances, fetchMorphoUserPositionMarkets, fetchMorphoVaults, fetchMorphoVaultsFromApi, fetchMorphoVaultsFromChain, fetchOraclePrices, fetchPendleApiAssets, fetchPendleApiMarkets, fetchPendlePrices, fetchPendlePtMarkets, fetchResupplyMarkets, fetchRiverMarkets, fetchSiloVaults, fetchSpectraApiMarkets, fetchSpectraPtMarkets, fetchTellerMarkets, fetchTermMarkets, fetchTermMaxMarkets, fetchTermStoreOrders, fetchTokenBalances, fetchTokenMetadata, fetchUpshiftApiVaults, fetchUpshiftVaults, fetchUsddMarkets, fetchYearnApiVaults, fetchYearnVaults, fillableRemaining, filterActiveLenders, filterLendersByProtocol, finalizeInfo, findingsFor, formatRaw, frankencoinKeyParts, frankencoinLenderKey, fraxlendAssetPerCollateral, fraxlendKeyParts, fraxlendLenderKey, fuseLenderData, generateLendingPools, getAavesForChain, getAssetConfig, getBalanceForMarketUid, getBorrowCapacity, getCachedFluidDexState, getCachedLiquityTroves, getCachedTellerBids, getCachedTermMaxDiscovery, getCachedTermMaxMarket, getCachedTermMaxMarkets, getCoreValidators, getFluidFTokensConverter, getGmxApiHost, getGmxReadContracts, getGmxUserPositions, getHealthFactor, getHypercoreUserPositions, getHypercoreVaultRegistry, getLenderAssets, getLenderPublicData, getLenderPublicDataAll, getLenderPublicDataViaApi, getLenderUserDataMulti, getLenderUserDataResult, getLendersForChain, getLstDelegation, getLstValidators, getLstWithdrawalRegistry, getLstWithdrawalRequests, getMaxAmountClose, getMaxAmountCollateralSwap, getMaxAmountDebtSwap, getMaxAmountOpen, getMergedUserData, getMorphoTypeMarketConverter, getReadFailurePolicy, getResolvedDolomiteAccountNumbers, getResolvedDolomiteSubAccounts, getStCeloValidatorGroups, getSubAccountAddress, getSubAccountIndex, getTermProfile, getVaultPublicDataAll, getVaultWithdrawalRequests, hasCritical, hasEulerEarnVaultSubgraph, hasLagoonVaults, hasMorphoPositionIndex, hasMorphoUserApi, hasMorphoUserSubgraph, hasPendleMarkets, hasSpectraMarkets, hasUpshiftVaults, hasYearnVaults, ilkToKeySegment, implausibleRatePercent, inverseKeyParts, inverseLenderKey, isBoundNeed, isFailedCall, isIlliquid, isLendingPosition, isLiveMarket as isLivePendleMarket, isLiveSpectraMarket, isMaturedTerm, isSecondaryMarketOnly, isStablecoinSymbol, isUnearnableEarnRate, isUnrealizableEarnRate, isVaultPosition, isVaultVenue, isYearnV3, keySegmentToIlk, keysFromMaps, lenderApiOnly, lenderFamily, liquityCandidateTroveIds, liquityKeyParts, liquityLenderKey, llamaLendKeyParts, llamaLendLenderKey, meetsLiquidityFloor, mergeDeep, multicall3Abi2 as multicall3Abi, nanTo, needsLenderApproval, needsTokenApproval, noOpResult, normalizeToBytes, organizeUserQueries, parseBalanceFetcherResult, parseDolomiteSubAccountId, parseEarnUid, parseMergedResult, parseMulticallRpcResponses, parseExpirySeconds as parsePendleExpirySeconds, parseRawRpcBatchResponses, parseRawRpcResponses, parseCurveFee as parseSpectraCurveFee, parsePtRate as parseSpectraPtRate, parseTermMaxLtv, parseTokenBalanceResult, pct, assetKey as pendleAssetKey, pickPool as pickSpectraPool, positivePart2 as positivePart, predictInverseEscrow, prepareLenderUserDataRpcCalls, prepareMergedMulticallParams, prepareMergedRpcCalls, prepareMulticallInputs, prepareTokenBalanceRpcCalls, priceGlvVaults, priceGmMarkets, probeAaveFeedTimestamps, pruneFeedStats, rankFindings, ratePercent, readVaultSharePrices, rejectOutliers as rejectPriceOutliers, repairImpossibleTvl, resolveAdapter, resolveDerivation, resolveDolomiteRowIdentity, resolveEarnIdentity, resolveModeConfig, resolveStCeloDepositGroup, resolveVaultProfileId, resupplyKeyParts, resupplyLenderKey, resupplyMarketLabel, riverKeyParts, riverLenderKey, sanePercent as saneSpectraPercent, savingsAddresses, savingsBalanceKind, secondaryMarketVault, selectAssetGroupPrices, setMysticApiKey, shortDate, spectraAddress, spectraNetwork, spectraPoolsUrl, splitChainScopedAddress as splitPendleChainScopedAddress, stampCapabilities, stampEarnSubtitles, stampVaultClassification, stampVaultTermSheets, stripLeadingBrand, supplyDescription, supplyFindings, supplyHeadline, swapRoutedProvidersArePriceConsistent, tellerBpsToPercent, tellerImpliedLtv, tellerLenderKey, tellerPoolFromLenderKey, termApiBaseUrl, termLenderKey, termMaxApiBase, borrowNif as termMaxBorrowNif, curveApr as termMaxCurveApr, curveAprNumber as termMaxCurveAprNumber, daysToMaturity as termMaxDaysToMaturity, lendNif as termMaxLendNif, mintGtFeeRatio as termMaxMintGtFeeRatio, ratioToNumber as termMaxRatioToNumber, ratioToPercent as termMaxRatioToPercent, termOfferRateToAprPct, termOrderStoreBaseUrl, tickToAprNumber, tickToPrice, toDigest, toDolomiteSubAccountId, toTermFillNow, toTermSheetInput, toVaultTermInput, trancheFromCounterparty, tryParseEarnUid, unflattenLenderData, updateFeedStats, usdValue, usddIlkBytes32, usddKeyParts, usddLenderKey, validateTermSheet, validateTermSheets, validateUserData, vaultSharesToAssets, vaultTermInputFromEarnMarket, vaultTermInputFromSourceRow, vaultTraits, vaultVenue, venueBrand, venueBrandKey, withMaturityLabel, withTrancheLabel };
|
|
83059
|
+
export { ApiBookSource, DEFAULT_MIDNIGHT_API, DEFAULT_OUTLIER_GUARD, DEFAULT_PROFILE_ID, DEFAULT_STALE_REJECT_SECONDS, DEFAULT_TERMMAX_API, DEFAULT_TERM_ORDER_STORE, DOLOMITE_ISO_ID_PREFIX, EARN_DESCRIPTIONS, EARN_LABELS, EARN_RATE_SOURCE_BY_PROVIDER, EMPTY_BALANCE, EXACTLY_LENDER_KEY, FLYING_TULIP_LENDER_KEY, FRACTION_RATE_PROVIDERS, GMX_API_HOSTS, GMX_READ_CONTRACTS, GMX_SUPPORTED_CHAINS, HYPERCORE_VAULT_REGISTRY, IDLE_MARKET_ID, INTERFACE_IDS, LAGOON_API_URL, LAGOON_CHAIN_IDS, MORPHO_LENS, MULTICALL_FAILURE, MaxParamThresholds, PASSTHROUGH_RATE_EPSILON, PENDLE_ASSETS_URL, PENDLE_CHAIN_IDS, PENDLE_MARKETS_URL, PREFIX_LENDERS, SDK_FRACTION_RATE_PROVIDERS, SPECTRA_NETWORKS, SPECTRA_RATE_MAX_PERCENT, SPECTRA_RATE_MIN_PERCENT, STABLECOIN_SYMBOLS, STCELO_MANAGER_ADDRESS, TELLER_CALLS_PER_BID, DECIMAL_BASE as TERMMAX_DECIMAL_BASE, TERMMAX_LIQUIDATION_PENALTY, TERMMAX_LIQUIDATION_WINDOW_SECS, TERMMAX_LIQUIDATOR_BONUS, TERMMAX_MARKETS_PER_CALL, TERMMAX_PARTIAL_CLOSE_FACTOR, TERMMAX_PARTIAL_LIQUIDATION_THRESHOLD_USD, TERM_ADAPTERS, TERM_PROFILES, TERM_SHEET_SCHEMA_VERSION, TermMaxApiSource, TermSubgraphSource, UPSHIFT_CHAIN_IDS, UPSHIFT_VAULTS_URL, VAULT_PROVIDERS, VAULT_PROVIDER_PROFILE, VAULT_PROVIDER_TRAITS, VAULT_SHARE_PRICE_PROBE, VAULT_VENUE_PREFIX, VOLATILE_VAULT_OVERRIDES, YEARN_CHAIN_IDS, YEARN_YDAEMON_BASE, __resetResupplyUserCaches, accountDepositListKey, accountWithdrawalListKey, appendSnapshot, applyEarnSanity, applyPositionDelta, attachImplications, attachPricesToFlashLiquidity, blockNumberFromTag, borrowDescription, borrowFindings, borrowHeadline, buildExposures2 as buildExposures, buildFluidFTokensCall, buildLendingPositionUid, buildLiquityUserCall, buildLoopResult, buildMorphoTypeCall, buildMorphoTypeUserCallWithLens, buildPortfolioTotals, buildQueriesFromMeta, buildSumerAccumulators, buildSummaries, buildTellerUserCall, buildTermMaxUserCall, buildTermSheet, buildTermSheetsForGroup, buildVaultEarnUid, buildVaultLookup, buildVaultTermSheet, calculateLeverage, calculateNetApr, calculateOverallNetApr, calculateWeightedAverage, classifyFreshness, classifyReliability, classifyVault, clearPendleMarketsCache, clearSpectraMarketsCache, collateralSymbolsByVenue, collectFeedObservations, computeBorrowDelta2 as computeBorrowDelta, computeCloseTradeDeltas, computeCollateralSwapDeltas, computeDebtSwapDeltas, computeDepositDelta2 as computeDepositDelta, computeEModeAnalysis, computeOpenTradeDeltas, computePostTradeMetrics, computeRepayDelta2 as computeRepayDelta, computeSumerBorrowDelta, computeSumerDepositDelta, computeSumerRepayDelta, computeSumerWaterfall, computeSumerWithdrawDelta, computeVaultApr, computeWithdrawDelta2 as computeWithdrawDelta, computeZapTradeDeltas, consensusReference, convertCoolerMarketsToResponse, convertDssMarketsToResponse, convertExactlyMarketsToResponse, convertFlyingTulipMarketsToResponse, convertFrankencoinMarketsToResponse, convertFraxlendPairsToResponse, convertInverseMarketsToResponse, convertLenderUserDataResult, convertLiquityMarketsToResponse, convertLlamaLendMarketsToResponse, convertResupplyMarketsToResponse, convertRiverMarketsToResponse, convertTellerMarketsToResponse, convertTermMarketsToResponse, convertTermMaxMarketsToResponse, convertUsddMarketsToResponse, createMarketUid, createMidnightBookSource, createMulticallRpcCall, createRawRpcCalls, createTermBookSource, createTermMaxDataSource, decodeListaMarkets, decodeMarkets, decodePackedListaUserDataset, decodePackedMorphoUserDataset, deriveBorrowTags, deriveSupplyTags, detectInterfaceKinds, dexResolverFor, disambiguateEarnNames, dolomiteVaultAddress, dssIlkBytes32, dssKeyParts, dssLenderKey, duration, earnDescription, earnLabel, earnMarketFromPool, earnMarketFromVault, earnMarketLabel, earnPositionFromLenderEntry, earnPositionFromVaultBalance, earnPositionTotals, earnRateAtMaturity, earnRowSubtitle, earnUidFromMarketUid, earnVaultTerms, earnVenueKind, emitterCoverage, encodeBalanceFetcherCalldata, enrichTermSheet, enrichmentIndexFromRows, enumerateEmitters, exactlyPairLtv, exactlyPenaltyRateToAprPercent, exactlyWadRateToPercent, feePhrase, feedKeyOf, feedStatKey, fetchCoolerMarkets, fetchDolomiteAccountNumbers, fetchDolomiteSubAccounts, fetchDssMarkets, fetchEulerEarnVaults, fetchEulerEarnVaultsFromSubgraph, fetchEulerSubAccountIndexes, fetchExactlyMarkets, fetchFlashLiquidityForChain, fetchFluidDexState, fetchFluidFTokens, fetchFlyingTulipMarkets, fetchFrankencoinMarkets, fetchFraxlendPairs, fetchGeneralYields, fetchGeneralYieldsByMarketUid, fetchGmxExecutionFees, fetchGmxTickerPrices, fetchGmxVaults, fetchHypercoreVaults, fetchInverseMarkets, fetchLagoonApiVaults, fetchLagoonVaults, fetchLiquityMarkets, fetchListaVaultsFromChain, fetchLlamaLendMarkets, fetchMorphoUserBalances, fetchMorphoUserPositionMarkets, fetchMorphoVaults, fetchMorphoVaultsFromApi, fetchMorphoVaultsFromChain, fetchOraclePrices, fetchPendleApiAssets, fetchPendleApiMarkets, fetchPendlePrices, fetchPendlePtMarkets, fetchResupplyMarkets, fetchRiverMarkets, fetchSiloVaults, fetchSpectraApiMarkets, fetchSpectraPtMarkets, fetchTellerMarkets, fetchTermMarkets, fetchTermMaxMarkets, fetchTermStoreOrders, fetchTokenBalances, fetchTokenMetadata, fetchUpshiftApiVaults, fetchUpshiftVaults, fetchUsddMarkets, fetchYearnApiVaults, fetchYearnVaults, fillableRemaining, filterActiveLenders, filterLenderMeta, filterLendersByProtocol, finalizeInfo, findingsFor, formatRaw, frankencoinKeyParts, frankencoinLenderKey, fraxlendAssetPerCollateral, fraxlendKeyParts, fraxlendLenderKey, fuseLenderData, generateLendingPools, getAavesForChain, getAssetConfig, getBalanceForMarketUid, getBorrowCapacity, getCachedFluidDexState, getCachedLiquityTroves, getCachedTellerBids, getCachedTermMaxDiscovery, getCachedTermMaxMarket, getCachedTermMaxMarkets, getCoreValidators, getFluidFTokensConverter, getGmxApiHost, getGmxReadContracts, getGmxUserPositions, getHealthFactor, getHypercoreUserPositions, getHypercoreVaultRegistry, getLenderAssets, getLenderPublicData, getLenderPublicDataAll, getLenderPublicDataViaApi, getLenderUserDataMulti, getLenderUserDataResult, getLendersForChain, getLstDelegation, getLstValidators, getLstWithdrawalRegistry, getLstWithdrawalRequests, getMaxAmountClose, getMaxAmountCollateralSwap, getMaxAmountDebtSwap, getMaxAmountOpen, getMergedUserData, getMorphoTypeMarketConverter, getReadFailurePolicy, getResolvedDolomiteAccountNumbers, getResolvedDolomiteSubAccounts, getStCeloValidatorGroups, getSubAccountAddress, getSubAccountIndex, getTermProfile, getVaultPublicDataAll, getVaultWithdrawalRequests, hasCritical, hasEulerEarnVaultSubgraph, hasLagoonVaults, hasMorphoPositionIndex, hasMorphoUserApi, hasMorphoUserSubgraph, hasPendleMarkets, hasSpectraMarkets, hasUpshiftVaults, hasYearnVaults, ilkToKeySegment, implausibleRatePercent, injectLenderInfoIntoEntries, inverseKeyParts, inverseLenderKey, isBoundNeed, isFailedCall, isIlliquid, isLendingPosition, isLiveMarket as isLivePendleMarket, isLiveSpectraMarket, isMaturedTerm, isSecondaryMarketOnly, isStablecoinSymbol, isUnearnableEarnRate, isUnrealizableEarnRate, isVaultPosition, isVaultVenue, isYearnV3, keySegmentToIlk, keysFromMaps, lenderApiOnly, lenderFamily, liquityCandidateTroveIds, liquityKeyParts, liquityLenderKey, llamaLendKeyParts, llamaLendLenderKey, marketKeysOf, meetsLiquidityFloor, mergeDeep, multicall3Abi2 as multicall3Abi, nanTo, needsLenderApproval, needsTokenApproval, noOpResult, normalizeToBytes, organizeUserQueries, parseBalanceFetcherResult, parseDolomiteSubAccountId, parseEarnUid, parseLenderKey, parseMergedResult, parseMulticallRpcResponses, parseExpirySeconds as parsePendleExpirySeconds, parseRawRpcBatchResponses, parseRawRpcResponses, parseCurveFee as parseSpectraCurveFee, parsePtRate as parseSpectraPtRate, parseTermMaxLtv, parseTokenBalanceResult, pct, assetKey as pendleAssetKey, pickPool as pickSpectraPool, positivePart2 as positivePart, predictInverseEscrow, prepareLenderUserDataRpcCalls, prepareMergedMulticallParams, prepareMergedRpcCalls, prepareMulticallInputs, prepareTokenBalanceRpcCalls, priceGlvVaults, priceGmMarkets, probeAaveFeedTimestamps, pruneFeedStats, rankFindings, ratePercent, readUserPositions, readVaultSharePrices, rejectOutliers as rejectPriceOutliers, repairImpossibleTvl, resolveAdapter, resolveDerivation, resolveDolomiteRowIdentity, resolveEarnIdentity, resolveModeConfig, resolveStCeloDepositGroup, resolveVaultProfileId, resupplyKeyParts, resupplyLenderKey, resupplyMarketLabel, riverKeyParts, riverLenderKey, sanePercent as saneSpectraPercent, savingsAddresses, savingsBalanceKind, secondaryMarketVault, selectAssetGroupPrices, setMysticApiKey, shortDate, spectraAddress, spectraNetwork, spectraPoolsUrl, splitChainScopedAddress as splitPendleChainScopedAddress, stampCapabilities, stampEarnSubtitles, stampVaultClassification, stampVaultTermSheets, stripLeadingBrand, subAccountsOf, supplyDescription, supplyFindings, supplyHeadline, swapRoutedProvidersArePriceConsistent, tellerBpsToPercent, tellerImpliedLtv, tellerLenderKey, tellerPoolFromLenderKey, termApiBaseUrl, termLenderKey, termMaxApiBase, borrowNif as termMaxBorrowNif, curveApr as termMaxCurveApr, curveAprNumber as termMaxCurveAprNumber, daysToMaturity as termMaxDaysToMaturity, lendNif as termMaxLendNif, mintGtFeeRatio as termMaxMintGtFeeRatio, ratioToNumber as termMaxRatioToNumber, ratioToPercent as termMaxRatioToPercent, termOfferRateToAprPct, termOrderStoreBaseUrl, tickToAprNumber, tickToPrice, toDigest, toDolomiteSubAccountId, toTermFillNow, toTermSheetInput, toVaultTermInput, trancheFromCounterparty, tryParseEarnUid, unflattenLenderData, updateFeedStats, usdValue, usddIlkBytes32, usddKeyParts, usddLenderKey, validateTermSheet, validateTermSheets, validateUserData, vaultSharesToAssets, vaultTermInputFromEarnMarket, vaultTermInputFromSourceRow, vaultTraits, vaultVenue, venueBrand, venueBrandKey, withMaturityLabel, withTrancheLabel };
|
|
82763
83060
|
//# sourceMappingURL=index.js.map
|
|
82764
83061
|
//# sourceMappingURL=index.js.map
|