@1delta/margin-fetcher 5.0.59 → 5.0.60
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 +18 -1
- package/dist/index.js +445 -68
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { parseAbi, keccak256, encodeAbiParameters, formatEther, BaseError, erc20Abi, stringToHex, isAddress, pad, encodeFunctionData, formatUnits, getAddress, decodeFunctionResult, decodeAbiParameters, concat, AbiEncodingLengthMismatchError, concatHex, toBytes, slice, hexToString,
|
|
1
|
+
import { parseAbi, keccak256, encodeAbiParameters, formatEther, BaseError, erc20Abi, stringToHex, isAddress, pad, encodeFunctionData, formatUnits, getAddress, decodeFunctionResult, decodeAbiParameters, concat, parseAbiParameters, AbiEncodingLengthMismatchError, concatHex, toBytes, slice, 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
|
-
import { Lender, isExactly, isMidnight, isTerm, isTermMax, isTeller, isListaDao, isLiquityFamily, isRiver, isInverse, isCooler, isDssType, isCompoundV3Type, isFluid, isGearboxV3, isLlamaLend, isFrankencoin, isResupply, isCurvance, isTwyne, isFraxlend, LIQUITY_FAMILY_LENDERS, isAaveType, isCompoundV3, isMultiMarket, isSiloV2Type, isSiloV3Type, isDolomite, hasCrossMarginRisk, isEulerType, isAaveV4Type, isInit,
|
|
4
|
+
import { Lender, isExactly, isMidnight, isTerm, isTermMax, isTeller, isListaDao, isLiquityFamily, isRiver, isInverse, isCooler, isDssType, isCompoundV3Type, isFluid, isGearboxV3, isLlamaLend, isFrankencoin, isResupply, isCurvance, isTwyne, isFraxlend, LIQUITY_FAMILY_LENDERS, isAaveType, isCompoundV3, isMultiMarket, isSiloV2Type, isSiloV3Type, isDolomite, isMorphoType, isUsdd, isSky, hasCrossMarginRisk, isEulerType, isAaveV4Type, isInit, isCompoundV2Type, isVenusType, isSumerType, AAVE_V3_LENDERS, AAVE_V2_LENDERS, isMorphoBlue, isAaveV2Type, isAaveV32Type, isAaveV3Type, isYLDR, isLista, hasSubAccounts, isTectonicType, isKineticType, isBenqiType } from '@1delta/lender-registry';
|
|
5
5
|
export { hasCrossMarginRisk, isAaveType, isAaveV2Type, isAaveV32Type, isAaveV3Type, isCompoundV3, isCompoundV3Type, isInit, isMorphoType, isMultiMarket, isYLDR } from '@1delta/lender-registry';
|
|
6
6
|
import { fetchTokenLists, fetchTokenList, aavePools, compoundV3Pools, initConfig, morphoPools, compoundV2Pools, eulerVaults, siloMarkets, siloV2LenderKey, siloMarketsV3, siloV3LenderKey, aaveV4Spokes, aaveV4SpokeLenderKey, fluidResolvers, gearboxResolvers, dolomiteConfigs, midnightConfig, termConfig, termMarketsByChain, exactlyConfig, liquityLendersByChain, riverLendersByChain, inverseLendersByChain, coolerLendersByChain, llamaLendLendersByChain, usddLendersByChain, skyLendersByChain, frankencoinLendersByChain, resupplyLendersByChain, curvanceLendersByChain, fraxlendLendersByChain, twyneLendersByChain, tellerConfigByChain, tellerPoolsByChain, termMaxConfigByChain, aaveReserves, compoundV3Reserves, resolveTermApiBase, liquityConfigFor, liquityBranchesByChain, riverConfigFor, riverChainData, termMaxApiBaseUrl, termMaxLenderKey, inverseConfigFor, inverseChainData, coolerConfigFor, llamaLendConfigFor, llamaLendChainData, llamaLendApiBaseUrl, resupplyConfigFor, fraxlendConfigFor, dssConfigFor, dssChainData, dssDebtToken, dssDebtJoin, frankencoinConfigFor, frankencoinChainData, aaveOracles, morphoTypeMarkets, resolveMidnightApiBase, llamaLendMarketByVault, getSiloV2MarketEntry, getSiloV3MarketEntry, dolomiteEmode, curvanceConfigFor, aaveTokens, morphoTypeVaults, listaCollateralProvider, eulerConfigs, gearboxMarketCompressor, gearboxMarketConfigurators, gearboxV3LenderKey, midnightMarketsByChain, twyneConfigFor, twyneChainData, parseAaveV4SpokeLenderKey, fraxlendPairsFor, gearboxAccountCompressor, compoundV2Tokens, exactlyMarketsByChain, aaveOraclesConfig, compoundV2Oracles, compoundV2TokenArray, compoundV2OraclesConfig, compoundV3OraclesData, compoundV3BaseData, compoundV2Reserves, aaveV4Oracles, morphoTypeOracles } from '@1delta/data-sdk';
|
|
7
7
|
import lodash from 'lodash';
|
|
@@ -19897,7 +19897,18 @@ var getDolomitePublicDataConverter = (lender, chainId, _prices, additionalYields
|
|
|
19897
19897
|
config,
|
|
19898
19898
|
closeFactor: 1,
|
|
19899
19899
|
borrowingEnabled: !isClosing,
|
|
19900
|
-
|
|
19900
|
+
// `isClosing` gates BORROWS ONLY — DolomiteMargin's own comment on the
|
|
19901
|
+
// field is "whether additional borrows are allowed", and
|
|
19902
|
+
// `_verifyFinalState` only asserts the market's total borrow par did
|
|
19903
|
+
// not grow. Supplying is untouched, which is the whole point of the
|
|
19904
|
+
// flag: Dolomite marks yield-bearing assets (weETH, sUSDe, wstETH, the
|
|
19905
|
+
// dGM/dPT wrappers) borrow-disabled precisely so they can be SUPPLIED
|
|
19906
|
+
// as collateral. Mapping it onto deposits made 60/77 Arbitrum, 39/48
|
|
19907
|
+
// Berachain and 14/23 Ethereum markets report "deposits disabled" —
|
|
19908
|
+
// and the term sheet then printed a red "Currently unavailable" over
|
|
19909
|
+
// the collateral leg of a loop that builds and executes fine. The
|
|
19910
|
+
// borrow half is already carried correctly by `config[*].debtDisabled`.
|
|
19911
|
+
depositsEnabled: true
|
|
19901
19912
|
};
|
|
19902
19913
|
});
|
|
19903
19914
|
return { data: result, chainId };
|
|
@@ -21265,7 +21276,9 @@ function termOrderStoreBaseUrl(chainId) {
|
|
|
21265
21276
|
return DEFAULT_TERM_ORDER_STORE;
|
|
21266
21277
|
}
|
|
21267
21278
|
var ZERO_ADDRESS6 = "0x0000000000000000000000000000000000000000";
|
|
21268
|
-
var DEFAULT_TIMEOUT_MS =
|
|
21279
|
+
var DEFAULT_TIMEOUT_MS = 8e3;
|
|
21280
|
+
var STORE_LKG_TTL_MS = 30 * 6e4;
|
|
21281
|
+
var storeLastGood = /* @__PURE__ */ new Map();
|
|
21269
21282
|
function fillableRemaining(order, nowSec9) {
|
|
21270
21283
|
if (order.taker && order.taker.toLowerCase() !== ZERO_ADDRESS6) return 0n;
|
|
21271
21284
|
if (order.hasSufficientApproval === false) return 0n;
|
|
@@ -21292,10 +21305,27 @@ async function fetchTermStoreOrders(chainId, fetchImpl = fetch, filter = "fillab
|
|
|
21292
21305
|
const base = termOrderStoreBaseUrl(chainId);
|
|
21293
21306
|
const url = `${base}/orders?chainId=${chainId}`;
|
|
21294
21307
|
try {
|
|
21295
|
-
|
|
21296
|
-
|
|
21297
|
-
|
|
21298
|
-
|
|
21308
|
+
let res;
|
|
21309
|
+
for (let attempt = 0; attempt < 2; attempt++) {
|
|
21310
|
+
try {
|
|
21311
|
+
res = await fetchImpl.call(globalThis, url, {
|
|
21312
|
+
headers: {
|
|
21313
|
+
accept: "application/json",
|
|
21314
|
+
"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0 Safari/537.36"
|
|
21315
|
+
},
|
|
21316
|
+
signal: AbortSignal.timeout(DEFAULT_TIMEOUT_MS)
|
|
21317
|
+
});
|
|
21318
|
+
if (res.ok) break;
|
|
21319
|
+
} catch (e) {
|
|
21320
|
+
if (attempt === 1) throw e;
|
|
21321
|
+
}
|
|
21322
|
+
}
|
|
21323
|
+
if (!res?.ok) {
|
|
21324
|
+
console.warn(
|
|
21325
|
+
`[term-order-store] chain ${chainId}: HTTP ${res?.status ?? "ERR"} from ${base} \u2014 serving last-known-good if fresh`
|
|
21326
|
+
);
|
|
21327
|
+
return filter === "fillable" ? staleStoreOrDegrade(chainId) : null;
|
|
21328
|
+
}
|
|
21299
21329
|
const json = await res.json();
|
|
21300
21330
|
const orders = Array.isArray(json?.orders) ? json.orders : Array.isArray(json) ? json : [];
|
|
21301
21331
|
const nowSec9 = Math.floor(Date.now() / 1e3);
|
|
@@ -21310,11 +21340,22 @@ async function fetchTermStoreOrders(chainId, fetchImpl = fetch, filter = "fillab
|
|
|
21310
21340
|
if (list) list.push(order);
|
|
21311
21341
|
else byServicer.set(key3, [order]);
|
|
21312
21342
|
}
|
|
21343
|
+
if (filter === "fillable") {
|
|
21344
|
+
storeLastGood.set(chainId, { byServicer, at: Date.now() });
|
|
21345
|
+
}
|
|
21313
21346
|
return byServicer;
|
|
21314
|
-
} catch {
|
|
21315
|
-
|
|
21347
|
+
} catch (e) {
|
|
21348
|
+
console.warn(
|
|
21349
|
+
`[term-order-store] chain ${chainId}: fetch failed (${e?.message ?? e}) \u2014 serving last-known-good if fresh`
|
|
21350
|
+
);
|
|
21351
|
+
return filter === "fillable" ? staleStoreOrDegrade(chainId) : null;
|
|
21316
21352
|
}
|
|
21317
21353
|
}
|
|
21354
|
+
function staleStoreOrDegrade(chainId) {
|
|
21355
|
+
const hit = storeLastGood.get(chainId);
|
|
21356
|
+
if (hit && Date.now() - hit.at <= STORE_LKG_TTL_MS) return hit.byServicer;
|
|
21357
|
+
return null;
|
|
21358
|
+
}
|
|
21318
21359
|
function toLevels(orders, loanDecimals, nowSec9) {
|
|
21319
21360
|
const scale3 = 10 ** loanDecimals;
|
|
21320
21361
|
return orders.map((o) => {
|
|
@@ -21618,6 +21659,7 @@ function convertTermMarketsToResponse(raw, chainId, prices = {}, _additionalYiel
|
|
|
21618
21659
|
config.collateralParams.forEach((c) => {
|
|
21619
21660
|
const collAddr = c.token.toLowerCase();
|
|
21620
21661
|
const ltv = termMaintenanceRatioToLtv(c.maintenanceRatio);
|
|
21662
|
+
const initialLtv = c.initialRatio ? termMaintenanceRatioToLtv(c.initialRatio) : ltv;
|
|
21621
21663
|
const liquidationPenalty = termLiquidatedDamagesToPenalty(c.liquidatedDamages) || liquidationPenaltyFromLltv(ltv);
|
|
21622
21664
|
const collUid = createMarketUid(chainId, m, collAddr);
|
|
21623
21665
|
entry.data[collUid] = {
|
|
@@ -21646,7 +21688,7 @@ function convertTermMarketsToResponse(raw, chainId, prices = {}, _additionalYiel
|
|
|
21646
21688
|
config: {
|
|
21647
21689
|
0: {
|
|
21648
21690
|
category: 0,
|
|
21649
|
-
borrowCollateralFactor:
|
|
21691
|
+
borrowCollateralFactor: initialLtv,
|
|
21650
21692
|
collateralFactor: ltv,
|
|
21651
21693
|
borrowFactor: 1,
|
|
21652
21694
|
liquidationPenalty,
|
|
@@ -28327,7 +28369,9 @@ function convertDolomiteSubgraphMarkets(raw, chainId, prices, additionalYields,
|
|
|
28327
28369
|
config,
|
|
28328
28370
|
closeFactor: 1,
|
|
28329
28371
|
borrowingEnabled: !isClosing,
|
|
28330
|
-
|
|
28372
|
+
// Deposits are NOT gated by this flag — see the note in `publicCallParse`.
|
|
28373
|
+
// The subgraph names it `isBorrowingDisabled`, which says so outright.
|
|
28374
|
+
depositsEnabled: true
|
|
28331
28375
|
};
|
|
28332
28376
|
}
|
|
28333
28377
|
return { data: result, chainId };
|
|
@@ -29319,7 +29363,7 @@ function prepareMulticallInputs(abi, calls) {
|
|
|
29319
29363
|
abi: abiIsArray ? abi[i] : abi
|
|
29320
29364
|
}));
|
|
29321
29365
|
}
|
|
29322
|
-
var
|
|
29366
|
+
var POSITION_LENS_V6 = "0x110ff05D2822DBBe1a5404d2a485267e2Ed962C6";
|
|
29323
29367
|
var LENS_FAMILY = {
|
|
29324
29368
|
COMPOUND_V2: 1,
|
|
29325
29369
|
SILO: 2,
|
|
@@ -29345,6 +29389,17 @@ var LENS_FAMILY = {
|
|
|
29345
29389
|
* `getUserDataCompact` — verified against the live deployment — so the existing
|
|
29346
29390
|
* decoder keeps working unchanged. Not in any deployed PositionLens yet: until
|
|
29347
29391
|
* one declares it, Morpho keeps using `MORPHO_LENS`.
|
|
29392
|
+
*
|
|
29393
|
+
* KNOWN GAP, both contracts: `borrowAssets` is `toAssetsUp` over `market()`
|
|
29394
|
+
* totals, which are as-of the market's `lastUpdate` — the pending accrual
|
|
29395
|
+
* since then is missing, and on a dormant market that gap is unbounded (a
|
|
29396
|
+
* 141-day-stale Base market understated by 0.62 %, which broke a bundler3
|
|
29397
|
+
* close sized off it). Fine for display, NEVER for funding — anything sizing
|
|
29398
|
+
* a repay/flash must accrue via `IRM.borrowRateView` first (TS reference:
|
|
29399
|
+
* worker-api `readMorphoUserState`). The next lens cut should accrue in the
|
|
29400
|
+
* contract or emit the market totals + `lastUpdate` so the client can. See
|
|
29401
|
+
* USER_DATA_READ_PATH.md §3 "Morpho — the lens reports debt WITHOUT pending
|
|
29402
|
+
* accrual".
|
|
29348
29403
|
*/
|
|
29349
29404
|
MORPHO: 7,
|
|
29350
29405
|
/** Aave V4, per spoke. Not in any deployed contract. */
|
|
@@ -29371,40 +29426,36 @@ var LENS_FAMILY = {
|
|
|
29371
29426
|
*/
|
|
29372
29427
|
RESUPPLY: 15
|
|
29373
29428
|
};
|
|
29374
|
-
var
|
|
29375
|
-
LENS_FAMILY
|
|
29376
|
-
LENS_FAMILY.AAVE_V4
|
|
29377
|
-
]);
|
|
29378
|
-
var V3_FAMILIES = new Set(
|
|
29379
|
-
Object.values(LENS_FAMILY).filter(
|
|
29380
|
-
(f) => !V3_WITHHELD.has(f)
|
|
29381
|
-
)
|
|
29429
|
+
var ALL_FAMILIES = new Set(
|
|
29430
|
+
Object.values(LENS_FAMILY)
|
|
29382
29431
|
);
|
|
29383
|
-
var
|
|
29384
|
-
address:
|
|
29385
|
-
families:
|
|
29432
|
+
var v6 = () => ({
|
|
29433
|
+
address: POSITION_LENS_V6,
|
|
29434
|
+
families: ALL_FAMILIES
|
|
29386
29435
|
});
|
|
29387
29436
|
var POSITION_LENS = {
|
|
29388
|
-
[Chain.ETHEREUM_MAINNET]:
|
|
29389
|
-
[Chain.ARBITRUM_ONE]:
|
|
29390
|
-
[Chain.AVALANCHE_C_CHAIN]:
|
|
29391
|
-
[Chain.BNB_SMART_CHAIN_MAINNET]:
|
|
29392
|
-
[Chain.BASE]:
|
|
29393
|
-
[Chain.SONIC_MAINNET]:
|
|
29394
|
-
[Chain.SEI_NETWORK]:
|
|
29395
|
-
[Chain.KATANA]:
|
|
29396
|
-
[Chain.HYPEREVM]:
|
|
29397
|
-
[Chain.MANTLE]:
|
|
29398
|
-
[Chain.XDC_NETWORK]:
|
|
29399
|
-
[Chain.OP_MAINNET]:
|
|
29400
|
-
[Chain.POLYGON_MAINNET]:
|
|
29401
|
-
[Chain.LINEA]:
|
|
29402
|
-
[Chain.SONEIUM]:
|
|
29403
|
-
[Chain.PLASMA_MAINNET]:
|
|
29404
|
-
[Chain.HEMI_NETWORK]:
|
|
29405
|
-
[Chain.SCROLL]:
|
|
29406
|
-
[Chain.FLARE_MAINNET]:
|
|
29407
|
-
[Chain.KAIA_MAINNET]:
|
|
29437
|
+
[Chain.ETHEREUM_MAINNET]: v6(),
|
|
29438
|
+
[Chain.ARBITRUM_ONE]: v6(),
|
|
29439
|
+
[Chain.AVALANCHE_C_CHAIN]: v6(),
|
|
29440
|
+
[Chain.BNB_SMART_CHAIN_MAINNET]: v6(),
|
|
29441
|
+
[Chain.BASE]: v6(),
|
|
29442
|
+
[Chain.SONIC_MAINNET]: v6(),
|
|
29443
|
+
[Chain.SEI_NETWORK]: v6(),
|
|
29444
|
+
[Chain.KATANA]: v6(),
|
|
29445
|
+
[Chain.HYPEREVM]: v6(),
|
|
29446
|
+
[Chain.MANTLE]: v6(),
|
|
29447
|
+
[Chain.XDC_NETWORK]: v6(),
|
|
29448
|
+
[Chain.OP_MAINNET]: v6(),
|
|
29449
|
+
[Chain.POLYGON_MAINNET]: v6(),
|
|
29450
|
+
[Chain.LINEA]: v6(),
|
|
29451
|
+
[Chain.SONEIUM]: v6(),
|
|
29452
|
+
[Chain.PLASMA_MAINNET]: v6(),
|
|
29453
|
+
[Chain.HEMI_NETWORK]: v6(),
|
|
29454
|
+
[Chain.SCROLL]: v6(),
|
|
29455
|
+
[Chain.FLARE_MAINNET]: v6(),
|
|
29456
|
+
[Chain.KAIA_MAINNET]: v6(),
|
|
29457
|
+
[Chain.CORE_BLOCKCHAIN_MAINNET]: v6(),
|
|
29458
|
+
[Chain.MONAD_MAINNET]: v6()
|
|
29408
29459
|
};
|
|
29409
29460
|
var getPositionLensFor = (chainId, family) => {
|
|
29410
29461
|
const dep = POSITION_LENS[chainId];
|
|
@@ -29443,14 +29494,17 @@ function toBytes2(hex) {
|
|
|
29443
29494
|
const h = hex.startsWith("0x") ? hex.slice(2) : hex;
|
|
29444
29495
|
if (h.length === 0) return new Uint8Array(0);
|
|
29445
29496
|
const out = new Uint8Array(h.length / 2);
|
|
29446
|
-
for (let i = 0; i < out.length; i++)
|
|
29497
|
+
for (let i = 0; i < out.length; i++)
|
|
29498
|
+
out[i] = parseInt(h.slice(i * 2, i * 2 + 2), 16);
|
|
29447
29499
|
return out;
|
|
29448
29500
|
}
|
|
29449
29501
|
function decodeLensRows(blob, wordCount, headerBytes = 0, flagBytes = 1) {
|
|
29450
29502
|
const buf = toBytes2(blob);
|
|
29451
29503
|
const minimum = headerBytes + 2;
|
|
29452
29504
|
if (buf.length < minimum) {
|
|
29453
|
-
throw new Error(
|
|
29505
|
+
throw new Error(
|
|
29506
|
+
`position-lens: blob too short (${buf.length} < ${minimum})`
|
|
29507
|
+
);
|
|
29454
29508
|
}
|
|
29455
29509
|
const header = buf.slice(0, headerBytes);
|
|
29456
29510
|
const count = Number(readBE(buf, headerBytes, 2));
|
|
@@ -29476,6 +29530,49 @@ function decodeLensRows(blob, wordCount, headerBytes = 0, flagBytes = 1) {
|
|
|
29476
29530
|
}
|
|
29477
29531
|
return { header, rows };
|
|
29478
29532
|
}
|
|
29533
|
+
function decodeVariableLensRows(blob, fixedWords, headerBytes = 0) {
|
|
29534
|
+
const buf = toBytes2(blob);
|
|
29535
|
+
const minimum = headerBytes + 2;
|
|
29536
|
+
if (buf.length < minimum) {
|
|
29537
|
+
throw new Error(
|
|
29538
|
+
`position-lens: blob too short (${buf.length} < ${minimum})`
|
|
29539
|
+
);
|
|
29540
|
+
}
|
|
29541
|
+
const header = buf.slice(0, headerBytes);
|
|
29542
|
+
const count = Number(readBE(buf, headerBytes, 2));
|
|
29543
|
+
const rows = [];
|
|
29544
|
+
let off = minimum;
|
|
29545
|
+
for (let i = 0; i < count; i++) {
|
|
29546
|
+
if (off + 3 > buf.length) {
|
|
29547
|
+
throw new Error(`position-lens: row ${i} header runs past the blob`);
|
|
29548
|
+
}
|
|
29549
|
+
const index = Number(readBE(buf, off, 2));
|
|
29550
|
+
const tailCount = buf[off + 2];
|
|
29551
|
+
off += 3;
|
|
29552
|
+
const words = fixedWords + tailCount;
|
|
29553
|
+
if (off + words * WORD > buf.length) {
|
|
29554
|
+
throw new Error(
|
|
29555
|
+
`position-lens: row ${i} claims ${tailCount} tail words, only ${(buf.length - off) / WORD} remain`
|
|
29556
|
+
);
|
|
29557
|
+
}
|
|
29558
|
+
const all = [];
|
|
29559
|
+
for (let k = 0; k < words; k++) {
|
|
29560
|
+
all.push(readBE(buf, off, WORD));
|
|
29561
|
+
off += WORD;
|
|
29562
|
+
}
|
|
29563
|
+
rows.push({
|
|
29564
|
+
index,
|
|
29565
|
+
fixed: all.slice(0, fixedWords),
|
|
29566
|
+
tail: all.slice(fixedWords)
|
|
29567
|
+
});
|
|
29568
|
+
}
|
|
29569
|
+
if (off !== buf.length) {
|
|
29570
|
+
throw new Error(
|
|
29571
|
+
`position-lens: ${buf.length - off} trailing bytes after ${count} rows`
|
|
29572
|
+
);
|
|
29573
|
+
}
|
|
29574
|
+
return { header, rows };
|
|
29575
|
+
}
|
|
29479
29576
|
|
|
29480
29577
|
// src/lending/user-data/aave-v3-type/lens.ts
|
|
29481
29578
|
var ZERO2 = "0x0000000000000000000000000000000000000000";
|
|
@@ -29816,7 +29913,7 @@ var getCompoundV2UserDataConverter = (lender, chainId, account, metaMap) => {
|
|
|
29816
29913
|
COMPOUND_V2_LENS_WORDS,
|
|
29817
29914
|
COMPOUND_V2_LENS_HEADER_BYTES
|
|
29818
29915
|
);
|
|
29819
|
-
if (header[0]
|
|
29916
|
+
if ((header[0] & 1) === 0) return void 0;
|
|
29820
29917
|
states = new Map(
|
|
29821
29918
|
rows.map((r) => [
|
|
29822
29919
|
r.index,
|
|
@@ -29950,14 +30047,16 @@ var EULER_API_CHAINS = /* @__PURE__ */ new Set([
|
|
|
29950
30047
|
// BSC
|
|
29951
30048
|
"130",
|
|
29952
30049
|
// Unichain
|
|
30050
|
+
"143",
|
|
30051
|
+
// Monad — served; was missing while carrying 134 vaults
|
|
29953
30052
|
"146",
|
|
29954
|
-
// Sonic
|
|
30053
|
+
// Sonic — 404 as of 2026-08-22 (was served); kept, see above
|
|
29955
30054
|
"239",
|
|
29956
|
-
// TAC
|
|
30055
|
+
// TAC — 404 as of 2026-08-22
|
|
29957
30056
|
"999",
|
|
29958
30057
|
// HyperEVM
|
|
29959
30058
|
"1923",
|
|
29960
|
-
// Swell
|
|
30059
|
+
// Swell — 404 as of 2026-08-22
|
|
29961
30060
|
"8453",
|
|
29962
30061
|
// Base
|
|
29963
30062
|
"9745",
|
|
@@ -29966,10 +30065,12 @@ var EULER_API_CHAINS = /* @__PURE__ */ new Set([
|
|
|
29966
30065
|
// Arbitrum
|
|
29967
30066
|
"43114",
|
|
29968
30067
|
// Avalanche
|
|
30068
|
+
"59144",
|
|
30069
|
+
// Linea — served; was missing while carrying 88 vaults
|
|
29969
30070
|
"60808",
|
|
29970
|
-
// BOB
|
|
30071
|
+
// BOB — 404 as of 2026-08-22
|
|
29971
30072
|
"80094"
|
|
29972
|
-
// Berachain
|
|
30073
|
+
// Berachain — 404 as of 2026-08-22
|
|
29973
30074
|
]);
|
|
29974
30075
|
var eulerApiSupportsChain = (chainId) => EULER_API_CHAINS.has(chainId);
|
|
29975
30076
|
async function fetchEulerPositionsFromApi(chainId, owner, forceFresh = true) {
|
|
@@ -30125,9 +30226,9 @@ var buildAaveV4UserCall = (chainId, lender, account) => {
|
|
|
30125
30226
|
return calls;
|
|
30126
30227
|
};
|
|
30127
30228
|
var resolveSiloRoster = (chainId, lender, params) => {
|
|
30128
|
-
const
|
|
30129
|
-
const entryFor =
|
|
30130
|
-
const keyFor =
|
|
30229
|
+
const v3 = isSiloV3Type(lender);
|
|
30230
|
+
const entryFor = v3 ? getSiloV3MarketEntry : getSiloV2MarketEntry;
|
|
30231
|
+
const keyFor = v3 ? siloV3LenderKey : siloV2LenderKey;
|
|
30131
30232
|
if (Array.isArray(params) && params.length > 0) {
|
|
30132
30233
|
const out = [];
|
|
30133
30234
|
for (const key3 of params) {
|
|
@@ -30138,7 +30239,7 @@ var resolveSiloRoster = (chainId, lender, params) => {
|
|
|
30138
30239
|
}
|
|
30139
30240
|
const single = entryFor(chainId, lender);
|
|
30140
30241
|
if (single) return [{ key: lender, market: single }];
|
|
30141
|
-
const all = (
|
|
30242
|
+
const all = (v3 ? siloMarketsV3() : siloMarkets())?.[chainId] ?? [];
|
|
30142
30243
|
return all.map((market) => ({ key: keyFor(market.siloConfig), market }));
|
|
30143
30244
|
};
|
|
30144
30245
|
|
|
@@ -30403,10 +30504,83 @@ var buildMidnightUserCall = (chainId, _lender, account) => {
|
|
|
30403
30504
|
}
|
|
30404
30505
|
return calls;
|
|
30405
30506
|
};
|
|
30507
|
+
var usesTermLens = (chainId) => getPositionLensFor(chainId, LENS_FAMILY.TERM) !== void 0;
|
|
30508
|
+
var buildTermLensCall = (chainId, markets, account) => {
|
|
30509
|
+
const lens = getPositionLensFor(chainId, LENS_FAMILY.TERM);
|
|
30510
|
+
if (!lens) return [];
|
|
30511
|
+
if (markets.some(
|
|
30512
|
+
(m) => !m.repoToken || !m.servicer || !m.collateralManager || !m.collateralParams
|
|
30513
|
+
)) {
|
|
30514
|
+
return [];
|
|
30515
|
+
}
|
|
30516
|
+
const payload = encodeAbiParameters(
|
|
30517
|
+
[
|
|
30518
|
+
{
|
|
30519
|
+
type: "tuple[]",
|
|
30520
|
+
components: [
|
|
30521
|
+
{ name: "repoToken", type: "address" },
|
|
30522
|
+
{ name: "servicer", type: "address" },
|
|
30523
|
+
{ name: "collateralManager", type: "address" },
|
|
30524
|
+
{ name: "collateralTokens", type: "address[]" }
|
|
30525
|
+
]
|
|
30526
|
+
}
|
|
30527
|
+
],
|
|
30528
|
+
[
|
|
30529
|
+
markets.map((m) => ({
|
|
30530
|
+
repoToken: m.repoToken,
|
|
30531
|
+
servicer: m.servicer,
|
|
30532
|
+
collateralManager: m.collateralManager,
|
|
30533
|
+
collateralTokens: m.collateralParams.map((c) => c.token)
|
|
30534
|
+
}))
|
|
30535
|
+
]
|
|
30536
|
+
);
|
|
30537
|
+
return [
|
|
30538
|
+
{
|
|
30539
|
+
address: lens,
|
|
30540
|
+
name: "getUserData",
|
|
30541
|
+
params: [[{ family: LENS_FAMILY.TERM, payload }], account],
|
|
30542
|
+
abi: PositionLensAbi
|
|
30543
|
+
}
|
|
30544
|
+
];
|
|
30545
|
+
};
|
|
30546
|
+
var rebuildTermData = (blobs, markets) => {
|
|
30547
|
+
if (isFailedCall(blobs) || !Array.isArray(blobs) || blobs.length !== 1) {
|
|
30548
|
+
return void 0;
|
|
30549
|
+
}
|
|
30550
|
+
let rows;
|
|
30551
|
+
try {
|
|
30552
|
+
rows = decodeVariableLensRows(blobs[0], 3, 0).rows;
|
|
30553
|
+
} catch {
|
|
30554
|
+
return void 0;
|
|
30555
|
+
}
|
|
30556
|
+
const out = [];
|
|
30557
|
+
const offsets = [];
|
|
30558
|
+
for (const m of markets) {
|
|
30559
|
+
offsets.push(out.length);
|
|
30560
|
+
out.push(0n, 0n, 0n);
|
|
30561
|
+
for (let c = 0; c < m.collateralParams.length; c++) out.push(0n);
|
|
30562
|
+
}
|
|
30563
|
+
for (const r of rows) {
|
|
30564
|
+
if (r.index >= markets.length) return void 0;
|
|
30565
|
+
const base = offsets[r.index];
|
|
30566
|
+
out[base] = r.fixed[0];
|
|
30567
|
+
out[base + 1] = r.fixed[1];
|
|
30568
|
+
out[base + 2] = r.fixed[2];
|
|
30569
|
+
if (r.tail.length !== markets[r.index].collateralParams.length) return void 0;
|
|
30570
|
+
for (let c = 0; c < r.tail.length; c++) out[base + 3 + c] = r.tail[c];
|
|
30571
|
+
}
|
|
30572
|
+
return out;
|
|
30573
|
+
};
|
|
30574
|
+
|
|
30575
|
+
// src/lending/user-data/term/userCallBuild.ts
|
|
30406
30576
|
var termMarketCallCount = (collateralCount) => 3 + collateralCount;
|
|
30407
30577
|
var buildTermUserCall = (chainId, _lender, account) => {
|
|
30408
30578
|
const markets = termMarketsByChain(chainId);
|
|
30409
30579
|
if (markets.length === 0) return [];
|
|
30580
|
+
if (usesTermLens(chainId)) {
|
|
30581
|
+
const lensCall = buildTermLensCall(chainId, markets, account);
|
|
30582
|
+
if (lensCall.length) return lensCall;
|
|
30583
|
+
}
|
|
30410
30584
|
const calls = [];
|
|
30411
30585
|
for (const market of markets) {
|
|
30412
30586
|
calls.push({ address: market.repoToken, name: "balanceOf", params: [account] });
|
|
@@ -30625,11 +30799,66 @@ function buildDataPhaseCalls(branches, perBranch, account) {
|
|
|
30625
30799
|
});
|
|
30626
30800
|
return calls;
|
|
30627
30801
|
}
|
|
30802
|
+
|
|
30803
|
+
// src/lending/user-data/river/lens.ts
|
|
30804
|
+
var usesRiverLens = (chainId) => getPositionLensFor(chainId, LENS_FAMILY.RIVER) !== void 0;
|
|
30805
|
+
var isAddress2 = (v) => typeof v === "string" && /^0x[0-9a-fA-F]{40}$/.test(v);
|
|
30806
|
+
var buildRiverLensCall = (chainId, cfg, markets, account) => {
|
|
30807
|
+
const lens = getPositionLensFor(chainId, LENS_FAMILY.RIVER);
|
|
30808
|
+
if (!lens) return [];
|
|
30809
|
+
if (!isAddress2(cfg.xapp) || markets.some((m) => !isAddress2(m.troveManager))) {
|
|
30810
|
+
return [];
|
|
30811
|
+
}
|
|
30812
|
+
const payload = encodeAbiParameters(
|
|
30813
|
+
parseAbiParameters("address[], address"),
|
|
30814
|
+
[markets.map((m) => m.troveManager), cfg.xapp]
|
|
30815
|
+
);
|
|
30816
|
+
return [
|
|
30817
|
+
{
|
|
30818
|
+
address: lens,
|
|
30819
|
+
name: "getUserData",
|
|
30820
|
+
params: [[{ family: LENS_FAMILY.RIVER, payload }], account],
|
|
30821
|
+
abi: PositionLensAbi
|
|
30822
|
+
}
|
|
30823
|
+
];
|
|
30824
|
+
};
|
|
30825
|
+
var rebuildRiverData = (blobs, marketCount) => {
|
|
30826
|
+
if (isFailedCall(blobs) || !Array.isArray(blobs) || blobs.length !== 1) {
|
|
30827
|
+
return void 0;
|
|
30828
|
+
}
|
|
30829
|
+
let decoded;
|
|
30830
|
+
try {
|
|
30831
|
+
decoded = decodeLensRows(blobs[0], 6, 32, 0);
|
|
30832
|
+
} catch {
|
|
30833
|
+
return void 0;
|
|
30834
|
+
}
|
|
30835
|
+
let spDeposit = 0n;
|
|
30836
|
+
for (const b of decoded.header) spDeposit = spDeposit << 8n | BigInt(b);
|
|
30837
|
+
const out = [];
|
|
30838
|
+
for (let i = 0; i < marketCount; i++) {
|
|
30839
|
+
out.push([0n, 0n, 0n, 0n], 0n, 0n);
|
|
30840
|
+
}
|
|
30841
|
+
for (const r of decoded.rows) {
|
|
30842
|
+
if (r.index >= marketCount) return void 0;
|
|
30843
|
+
const base = r.index * 3;
|
|
30844
|
+
out[base] = [r.words[0], r.words[1], r.words[2], r.words[3]];
|
|
30845
|
+
out[base + 1] = r.words[4];
|
|
30846
|
+
out[base + 2] = r.words[5];
|
|
30847
|
+
}
|
|
30848
|
+
out.push(spDeposit);
|
|
30849
|
+
return out;
|
|
30850
|
+
};
|
|
30851
|
+
|
|
30852
|
+
// src/lending/user-data/river/userCallBuild.ts
|
|
30628
30853
|
var RIVER_CALLS_PER_MARKET = 3;
|
|
30629
30854
|
var buildRiverUserCall = (chainId, lender, account) => {
|
|
30630
30855
|
const cfg = riverConfigFor(lender, chainId);
|
|
30631
30856
|
const markets = riverChainData(lender, chainId)?.markets ?? [];
|
|
30632
30857
|
if (!cfg || markets.length === 0) return [];
|
|
30858
|
+
if (usesRiverLens(chainId)) {
|
|
30859
|
+
const lensCall = buildRiverLensCall(chainId, cfg, markets, account);
|
|
30860
|
+
if (lensCall.length) return lensCall;
|
|
30861
|
+
}
|
|
30633
30862
|
const calls = markets.flatMap((m) => [
|
|
30634
30863
|
{
|
|
30635
30864
|
address: m.troveManager,
|
|
@@ -30935,10 +31164,67 @@ function __resetResupplyUserCaches() {
|
|
|
30935
31164
|
rosterCache3.clear();
|
|
30936
31165
|
discoveryCache2.clear();
|
|
30937
31166
|
}
|
|
31167
|
+
|
|
31168
|
+
// src/lending/user-data/fraxlend/lens.ts
|
|
31169
|
+
var usesFraxlendLens = (chainId) => getPositionLensFor(chainId, LENS_FAMILY.FRAXLEND) !== void 0;
|
|
31170
|
+
var isAddress3 = (v) => typeof v === "string" && /^0x[0-9a-fA-F]{40}$/.test(v);
|
|
31171
|
+
var buildFraxlendLensCall = (chainId, pairs, account) => {
|
|
31172
|
+
const lens = getPositionLensFor(chainId, LENS_FAMILY.FRAXLEND);
|
|
31173
|
+
if (!lens) return [];
|
|
31174
|
+
if (pairs.some((p) => !isAddress3(p.address))) return [];
|
|
31175
|
+
const payload = encodeAbiParameters(parseAbiParameters("address[]"), [
|
|
31176
|
+
pairs.map((p) => p.address)
|
|
31177
|
+
]);
|
|
31178
|
+
return [
|
|
31179
|
+
{
|
|
31180
|
+
address: lens,
|
|
31181
|
+
name: "getUserData",
|
|
31182
|
+
params: [[{ family: LENS_FAMILY.FRAXLEND, payload }], account],
|
|
31183
|
+
abi: PositionLensAbi
|
|
31184
|
+
}
|
|
31185
|
+
];
|
|
31186
|
+
};
|
|
31187
|
+
var rebuildFraxlendData = (blobs, pairCount) => {
|
|
31188
|
+
if (isFailedCall(blobs) || !Array.isArray(blobs) || blobs.length !== 1) {
|
|
31189
|
+
return void 0;
|
|
31190
|
+
}
|
|
31191
|
+
let decoded;
|
|
31192
|
+
try {
|
|
31193
|
+
decoded = decodeLensRows(blobs[0], 9, 0, 0);
|
|
31194
|
+
} catch {
|
|
31195
|
+
return void 0;
|
|
31196
|
+
}
|
|
31197
|
+
const out = [];
|
|
31198
|
+
for (let i = 0; i < pairCount; i++) {
|
|
31199
|
+
out.push(0n, 0n, 0n, [0n, 0n, 0n, 0n, [0n, 0n], [0n, 0n]]);
|
|
31200
|
+
}
|
|
31201
|
+
for (const r of decoded.rows) {
|
|
31202
|
+
if (r.index >= pairCount) return void 0;
|
|
31203
|
+
const base = r.index * 4;
|
|
31204
|
+
out[base] = r.words[0];
|
|
31205
|
+
out[base + 1] = r.words[1];
|
|
31206
|
+
out[base + 2] = r.words[2];
|
|
31207
|
+
out[base + 3] = [
|
|
31208
|
+
0n,
|
|
31209
|
+
0n,
|
|
31210
|
+
0n,
|
|
31211
|
+
0n,
|
|
31212
|
+
[r.words[5], r.words[6]],
|
|
31213
|
+
[r.words[7], r.words[8]]
|
|
31214
|
+
];
|
|
31215
|
+
}
|
|
31216
|
+
return out;
|
|
31217
|
+
};
|
|
31218
|
+
|
|
31219
|
+
// src/lending/user-data/fraxlend/userCallBuild.ts
|
|
30938
31220
|
var FRAXLEND_CALLS_PER_PAIR = 4;
|
|
30939
31221
|
var buildFraxlendUserCall = (chainId, lender, account) => {
|
|
30940
31222
|
const pairs = fraxlendPairsFor(lender, chainId);
|
|
30941
31223
|
if (pairs.length === 0) return [];
|
|
31224
|
+
if (usesFraxlendLens(chainId)) {
|
|
31225
|
+
const lensCall = buildFraxlendLensCall(chainId, pairs, account);
|
|
31226
|
+
if (lensCall.length) return lensCall;
|
|
31227
|
+
}
|
|
30942
31228
|
return pairs.flatMap((p) => [
|
|
30943
31229
|
{ address: p.address, name: "userCollateralBalance", params: [account] },
|
|
30944
31230
|
{ address: p.address, name: "userBorrowShares", params: [account] },
|
|
@@ -31121,7 +31407,7 @@ function getCachedTwyneDiscovery(chainId, lender, account) {
|
|
|
31121
31407
|
return discoveryCache4.get(discoveryKey3(chainId, lender, account));
|
|
31122
31408
|
}
|
|
31123
31409
|
var lower2 = (a) => String(a).toLowerCase();
|
|
31124
|
-
var
|
|
31410
|
+
var isAddress4 = (v) => typeof v === "string" && /^0x[0-9a-fA-F]{40}$/.test(v);
|
|
31125
31411
|
async function discover(chainId, lender, account) {
|
|
31126
31412
|
const key3 = discoveryKey3(chainId, lender, account);
|
|
31127
31413
|
const cached = discoveryCache4.get(key3);
|
|
@@ -31141,7 +31427,7 @@ async function discover(chainId, lender, account) {
|
|
|
31141
31427
|
abi: TwyneCollateralVaultFactoryAbi,
|
|
31142
31428
|
allowFailure: true
|
|
31143
31429
|
});
|
|
31144
|
-
const created = Array.isArray(listRaw) ? listRaw.filter(
|
|
31430
|
+
const created = Array.isArray(listRaw) ? listRaw.filter(isAddress4).map(lower2) : [];
|
|
31145
31431
|
if (created.length === 0) {
|
|
31146
31432
|
discoveryCache4.set(key3, empty);
|
|
31147
31433
|
return empty;
|
|
@@ -31172,8 +31458,8 @@ async function discover(chainId, lender, account) {
|
|
|
31172
31458
|
const iv = refs[i * 3];
|
|
31173
31459
|
const target = refs[i * 3 + 1];
|
|
31174
31460
|
const owner = refs[i * 3 + 2];
|
|
31175
|
-
if (!
|
|
31176
|
-
if (
|
|
31461
|
+
if (!isAddress4(iv) || !isAddress4(target)) return;
|
|
31462
|
+
if (isAddress4(owner) && lower2(owner) !== lower2(account)) return;
|
|
31177
31463
|
const marketKey2 = `${lower2(iv)}|${lower2(target)}`;
|
|
31178
31464
|
if (!known.has(marketKey2)) return;
|
|
31179
31465
|
vaults.push({
|
|
@@ -31413,6 +31699,53 @@ var buildFrankencoinUserCall = async (chainId, lender, account) => {
|
|
|
31413
31699
|
}
|
|
31414
31700
|
return calls;
|
|
31415
31701
|
};
|
|
31702
|
+
var ROW_BYTES2 = 117;
|
|
31703
|
+
var usesTellerLens = (chainId) => getPositionLensFor(chainId, LENS_FAMILY.TELLER) !== void 0;
|
|
31704
|
+
async function discoverTellerBidsViaLens(chainId, tellerV2, account) {
|
|
31705
|
+
const lens = getPositionLensFor(chainId, LENS_FAMILY.TELLER);
|
|
31706
|
+
if (!lens || !tellerV2) return void 0;
|
|
31707
|
+
const payload = encodeAbiParameters(parseAbiParameters("address, uint256"), [
|
|
31708
|
+
tellerV2,
|
|
31709
|
+
0n
|
|
31710
|
+
]);
|
|
31711
|
+
let blob;
|
|
31712
|
+
try {
|
|
31713
|
+
const res = await multicallRetryUniversal({
|
|
31714
|
+
chain: chainId,
|
|
31715
|
+
calls: [
|
|
31716
|
+
{
|
|
31717
|
+
address: lens,
|
|
31718
|
+
name: "getUserData",
|
|
31719
|
+
params: [[{ family: LENS_FAMILY.TELLER, payload }], account]
|
|
31720
|
+
}
|
|
31721
|
+
],
|
|
31722
|
+
abi: PositionLensAbi,
|
|
31723
|
+
allowFailure: true
|
|
31724
|
+
});
|
|
31725
|
+
const blobs = res?.[0];
|
|
31726
|
+
if (!Array.isArray(blobs) || blobs.length !== 1) return void 0;
|
|
31727
|
+
blob = blobs[0];
|
|
31728
|
+
} catch {
|
|
31729
|
+
return void 0;
|
|
31730
|
+
}
|
|
31731
|
+
if (typeof blob !== "string" || !blob.startsWith("0x") || blob.length < 6) {
|
|
31732
|
+
return void 0;
|
|
31733
|
+
}
|
|
31734
|
+
const buf = Buffer.from(blob.slice(2), "hex");
|
|
31735
|
+
const count = buf.readUInt16BE(0);
|
|
31736
|
+
if (buf.length !== 2 + count * ROW_BYTES2) return void 0;
|
|
31737
|
+
const out = [];
|
|
31738
|
+
for (let i = 0; i < count; i++) {
|
|
31739
|
+
const o = 2 + i * ROW_BYTES2;
|
|
31740
|
+
out.push({
|
|
31741
|
+
bidId: BigInt("0x" + buf.subarray(o, o + 32).toString("hex")).toString(),
|
|
31742
|
+
lender: getAddress("0x" + buf.subarray(o + 32, o + 52).toString("hex"))
|
|
31743
|
+
});
|
|
31744
|
+
}
|
|
31745
|
+
return out;
|
|
31746
|
+
}
|
|
31747
|
+
|
|
31748
|
+
// src/lending/user-data/teller/userCallBuild.ts
|
|
31416
31749
|
var TELLER_CALLS_PER_BID = 4;
|
|
31417
31750
|
var CACHE_TTL_MS3 = 5 * 6e4;
|
|
31418
31751
|
var discoveryCache7 = /* @__PURE__ */ new Map();
|
|
@@ -31440,6 +31773,27 @@ var buildTellerUserCall = async (chainId, _lender, account) => {
|
|
|
31440
31773
|
if (!proto?.tellerV2 || !proto?.collateralManager || pools.length === 0) {
|
|
31441
31774
|
return [];
|
|
31442
31775
|
}
|
|
31776
|
+
const poolByAddrEarly = /* @__PURE__ */ new Map();
|
|
31777
|
+
for (const p of pools) poolByAddrEarly.set(p.pool.toLowerCase(), p);
|
|
31778
|
+
if (usesTellerLens(chainId)) {
|
|
31779
|
+
const viaLens = await discoverTellerBidsViaLens(
|
|
31780
|
+
chainId,
|
|
31781
|
+
proto.tellerV2,
|
|
31782
|
+
account
|
|
31783
|
+
);
|
|
31784
|
+
if (viaLens) {
|
|
31785
|
+
const keptLens = [];
|
|
31786
|
+
for (const b of viaLens) {
|
|
31787
|
+
const pool = poolByAddrEarly.get(b.lender.toLowerCase());
|
|
31788
|
+
if (pool) keptLens.push({ bidId: b.bidId, pool });
|
|
31789
|
+
}
|
|
31790
|
+
discoveryCache7.set(cacheKey4(chainId, account), {
|
|
31791
|
+
bids: keptLens,
|
|
31792
|
+
at: Date.now()
|
|
31793
|
+
});
|
|
31794
|
+
return buildTellerDataPhase(proto, keptLens);
|
|
31795
|
+
}
|
|
31796
|
+
}
|
|
31443
31797
|
let ids = [];
|
|
31444
31798
|
try {
|
|
31445
31799
|
const res = await multicallRetryUniversal({
|
|
@@ -31487,6 +31841,9 @@ var buildTellerUserCall = async (chainId, _lender, account) => {
|
|
|
31487
31841
|
if (pool) kept.push({ bidId: id, pool });
|
|
31488
31842
|
});
|
|
31489
31843
|
discoveryCache7.set(cacheKey4(chainId, account), { bids: kept, at: Date.now() });
|
|
31844
|
+
return buildTellerDataPhase(proto, kept);
|
|
31845
|
+
};
|
|
31846
|
+
function buildTellerDataPhase(proto, kept, _account) {
|
|
31490
31847
|
if (kept.length === 0) return [];
|
|
31491
31848
|
const ts = nowSec5();
|
|
31492
31849
|
const calls = [];
|
|
@@ -31509,7 +31866,7 @@ var buildTellerUserCall = async (chainId, _lender, account) => {
|
|
|
31509
31866
|
});
|
|
31510
31867
|
}
|
|
31511
31868
|
return calls;
|
|
31512
|
-
}
|
|
31869
|
+
}
|
|
31513
31870
|
var TERMMAX_MARKETS_PER_CALL = 180;
|
|
31514
31871
|
var CACHE_TTL_MS4 = 5 * 6e4;
|
|
31515
31872
|
var discoveryCache8 = /* @__PURE__ */ new Map();
|
|
@@ -34141,8 +34498,12 @@ var getTermUserDataConverter = (_lender, chainId, account, meta) => {
|
|
|
34141
34498
|
(sum3, m) => sum3 + termMarketCallCount(m.collateralParams.length),
|
|
34142
34499
|
0
|
|
34143
34500
|
);
|
|
34501
|
+
const viaLens = usesTermLens(chainId);
|
|
34144
34502
|
return [
|
|
34145
|
-
(
|
|
34503
|
+
(raw) => {
|
|
34504
|
+
if (!raw) return void 0;
|
|
34505
|
+
if (viaLens && raw.length !== 1) return void 0;
|
|
34506
|
+
const data = viaLens ? rebuildTermData(raw[0], markets) : raw;
|
|
34146
34507
|
if (!data || data.length < totalCalls) return void 0;
|
|
34147
34508
|
const out = {};
|
|
34148
34509
|
let cursor = 0;
|
|
@@ -34241,7 +34602,10 @@ var getTermUserDataConverter = (_lender, chainId, account, meta) => {
|
|
|
34241
34602
|
}
|
|
34242
34603
|
return Object.keys(out).length > 0 ? out : void 0;
|
|
34243
34604
|
},
|
|
34244
|
-
|
|
34605
|
+
// The CALL count the framework hands us: one blob on the lens path, the whole
|
|
34606
|
+
// per-repo walk otherwise. `totalCalls` stays the SLOT count the cursor
|
|
34607
|
+
// arithmetic above is written against.
|
|
34608
|
+
viaLens ? 1 : totalCalls
|
|
34245
34609
|
];
|
|
34246
34610
|
};
|
|
34247
34611
|
var nowSec6 = () => Math.floor(Date.now() / 1e3);
|
|
@@ -34655,9 +35019,13 @@ var getRiverUserDataConverter = (lender, chainId, account, meta) => {
|
|
|
34655
35019
|
const cfg = riverConfigFor(lender, chainId);
|
|
34656
35020
|
const markets = riverChainData(lender, chainId)?.markets ?? [];
|
|
34657
35021
|
const expected = cfg && markets.length > 0 ? markets.length * RIVER_CALLS_PER_MARKET + 1 : 0;
|
|
35022
|
+
const viaLens = expected > 0 && usesRiverLens(chainId);
|
|
34658
35023
|
return [
|
|
34659
|
-
(
|
|
35024
|
+
(raw) => {
|
|
34660
35025
|
if (!cfg || expected === 0) return void 0;
|
|
35026
|
+
if (!raw) return void 0;
|
|
35027
|
+
if (viaLens && raw.length !== 1) return void 0;
|
|
35028
|
+
const data = viaLens ? rebuildRiverData(raw[0], markets.length) : raw;
|
|
34661
35029
|
if (!data || data.length < expected) return void 0;
|
|
34662
35030
|
const debtAddr = cfg.debtToken.toLowerCase();
|
|
34663
35031
|
const debtDecimals = cfg.debtDecimals ?? 18;
|
|
@@ -34773,7 +35141,10 @@ var getRiverUserDataConverter = (lender, chainId, account, meta) => {
|
|
|
34773
35141
|
});
|
|
34774
35142
|
return Object.keys(out).length > 0 ? out : void 0;
|
|
34775
35143
|
},
|
|
34776
|
-
|
|
35144
|
+
// The CALL count the framework hands us: one blob on the lens path, the
|
|
35145
|
+
// whole per-manager walk otherwise. `expected` stays the SLOT count the
|
|
35146
|
+
// cursor arithmetic above is written against.
|
|
35147
|
+
viaLens ? 1 : expected
|
|
34777
35148
|
];
|
|
34778
35149
|
};
|
|
34779
35150
|
var big9 = (v) => {
|
|
@@ -35367,9 +35738,13 @@ function fraxlendToAmount(shares, totalAmount, totalShares, roundUp) {
|
|
|
35367
35738
|
var getFraxlendUserDataConverter = (lender, chainId, account, meta) => {
|
|
35368
35739
|
const pairs = fraxlendPairsFor(lender, chainId);
|
|
35369
35740
|
const expected = pairs.length * FRAXLEND_CALLS_PER_PAIR;
|
|
35741
|
+
const viaLens = expected > 0 && usesFraxlendLens(chainId);
|
|
35370
35742
|
return [
|
|
35371
|
-
(
|
|
35743
|
+
(raw) => {
|
|
35372
35744
|
if (expected === 0) return void 0;
|
|
35745
|
+
if (!raw) return void 0;
|
|
35746
|
+
if (viaLens && raw.length !== 1) return void 0;
|
|
35747
|
+
const data = viaLens ? rebuildFraxlendData(raw[0], pairs.length) : raw;
|
|
35373
35748
|
if (!data || data.length < expected) return void 0;
|
|
35374
35749
|
const out = {};
|
|
35375
35750
|
pairs.forEach((pair, i) => {
|
|
@@ -35498,7 +35873,9 @@ var getFraxlendUserDataConverter = (lender, chainId, account, meta) => {
|
|
|
35498
35873
|
});
|
|
35499
35874
|
return Object.keys(out).length > 0 ? out : void 0;
|
|
35500
35875
|
},
|
|
35501
|
-
expected
|
|
35876
|
+
// One blob on the lens path, the whole per-pair walk otherwise. `expected`
|
|
35877
|
+
// stays the SLOT count the cursor arithmetic above is written against.
|
|
35878
|
+
viaLens ? 1 : expected
|
|
35502
35879
|
];
|
|
35503
35880
|
};
|
|
35504
35881
|
var WAD14 = 10n ** 18n;
|
|
@@ -75897,6 +76274,6 @@ function earnPositionTotals(items) {
|
|
|
75897
76274
|
};
|
|
75898
76275
|
}
|
|
75899
76276
|
|
|
75900
|
-
export { ApiBookSource, DEFAULT_MIDNIGHT_API, DEFAULT_OUTLIER_GUARD, DEFAULT_PROFILE_ID, DEFAULT_STALE_REJECT_SECONDS, DEFAULT_TERMMAX_API, DEFAULT_TERM_ORDER_STORE, EARN_DESCRIPTIONS, EARN_LABELS, EMPTY_BALANCE, EXACTLY_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, 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, 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, dssIlkBytes32, dssKeyParts, dssLenderKey, duration, earnDescription, earnLabel, earnMarketFromPool, earnMarketFromVault, earnMarketLabel, earnPositionFromLenderEntry, earnPositionFromVaultBalance, earnPositionTotals, earnRowSubtitle, earnUidFromMarketUid, earnVaultTerms, earnVenueKind, encodeBalanceFetcherCalldata, enrichTermSheet, enrichmentIndexFromRows, exactlyPairLtv, exactlyPenaltyRateToAprPercent, exactlyWadRateToPercent, feePhrase, feedKeyOf, feedStatKey, fetchCoolerMarkets, fetchDolomiteAccountNumbers, fetchDssMarkets, fetchEulerEarnVaults, fetchEulerEarnVaultsFromSubgraph, fetchEulerSubAccountIndexes, fetchExactlyMarkets, fetchFlashLiquidityForChain, fetchFluidDexState, fetchFluidFTokens, 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, 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, isSecondaryMarketOnly, isStablecoinSymbol, isVaultPosition, isVaultVenue, isYearnV3, keySegmentToIlk, keysFromMaps, lenderApiOnly, lenderFamily, liquityCandidateTroveIds, liquityKeyParts, liquityLenderKey, llamaLendKeyParts, llamaLendLenderKey, meetsLiquidityFloor, mergeDeep, multicall3Abi2 as multicall3Abi, nanTo, needsLenderApproval, needsTokenApproval, noOpResult, normalizeToBytes, parseBalanceFetcherResult, 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, resolveAdapter, resolveDerivation, resolveEarnIdentity, resolveModeConfig, resolveStCeloDepositGroup, resolveVaultProfileId, resupplyKeyParts, resupplyLenderKey, resupplyMarketLabel, riverKeyParts, riverLenderKey, sanePercent as saneSpectraPercent, savingsAddresses, savingsBalanceKind, secondaryMarketVault, selectAssetGroupPrices, 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, toTermFillNow, toTermSheetInput, toVaultTermInput, trancheFromCounterparty, tryParseEarnUid, unflattenLenderData, updateFeedStats, usdValue, usddIlkBytes32, usddKeyParts, usddLenderKey, validateTermSheet, validateTermSheets, validateUserData, vaultSharesToAssets, vaultTermInputFromEarnMarket, vaultTermInputFromSourceRow, vaultTraits, vaultVenue, venueBrand, venueBrandKey, withMaturityLabel, withTrancheLabel };
|
|
76277
|
+
export { ApiBookSource, DEFAULT_MIDNIGHT_API, DEFAULT_OUTLIER_GUARD, DEFAULT_PROFILE_ID, DEFAULT_STALE_REJECT_SECONDS, DEFAULT_TERMMAX_API, DEFAULT_TERM_ORDER_STORE, EARN_DESCRIPTIONS, EARN_LABELS, EMPTY_BALANCE, EXACTLY_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, 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, 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, dssIlkBytes32, dssKeyParts, dssLenderKey, duration, earnDescription, earnLabel, earnMarketFromPool, earnMarketFromVault, earnMarketLabel, earnPositionFromLenderEntry, earnPositionFromVaultBalance, earnPositionTotals, earnRowSubtitle, earnUidFromMarketUid, earnVaultTerms, earnVenueKind, encodeBalanceFetcherCalldata, enrichTermSheet, enrichmentIndexFromRows, exactlyPairLtv, exactlyPenaltyRateToAprPercent, exactlyWadRateToPercent, feePhrase, feedKeyOf, feedStatKey, fetchCoolerMarkets, fetchDolomiteAccountNumbers, fetchDssMarkets, fetchEulerEarnVaults, fetchEulerEarnVaultsFromSubgraph, fetchEulerSubAccountIndexes, fetchExactlyMarkets, fetchFlashLiquidityForChain, fetchFluidDexState, fetchFluidFTokens, 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, 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, isSecondaryMarketOnly, isStablecoinSymbol, isVaultPosition, isVaultVenue, isYearnV3, keySegmentToIlk, keysFromMaps, lenderApiOnly, lenderFamily, liquityCandidateTroveIds, liquityKeyParts, liquityLenderKey, llamaLendKeyParts, llamaLendLenderKey, meetsLiquidityFloor, mergeDeep, multicall3Abi2 as multicall3Abi, nanTo, needsLenderApproval, needsTokenApproval, noOpResult, normalizeToBytes, organizeUserQueries, parseBalanceFetcherResult, 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, resolveAdapter, resolveDerivation, resolveEarnIdentity, resolveModeConfig, resolveStCeloDepositGroup, resolveVaultProfileId, resupplyKeyParts, resupplyLenderKey, resupplyMarketLabel, riverKeyParts, riverLenderKey, sanePercent as saneSpectraPercent, savingsAddresses, savingsBalanceKind, secondaryMarketVault, selectAssetGroupPrices, 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, toTermFillNow, toTermSheetInput, toVaultTermInput, trancheFromCounterparty, tryParseEarnUid, unflattenLenderData, updateFeedStats, usdValue, usddIlkBytes32, usddKeyParts, usddLenderKey, validateTermSheet, validateTermSheets, validateUserData, vaultSharesToAssets, vaultTermInputFromEarnMarket, vaultTermInputFromSourceRow, vaultTraits, vaultVenue, venueBrand, venueBrandKey, withMaturityLabel, withTrancheLabel };
|
|
75901
76278
|
//# sourceMappingURL=index.js.map
|
|
75902
76279
|
//# sourceMappingURL=index.js.map
|