@1delta/data-sdk 0.0.36 → 0.0.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +160 -16
- package/dist/index.mjs +132 -17
- package/dist/lending.d.ts +471 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -80,6 +80,13 @@ globalThis[GLOBAL_LENDER_DATA_KEY] = {
|
|
|
80
80
|
inverseConfig: {},
|
|
81
81
|
termMaxConfig: {},
|
|
82
82
|
inverseMarkets: {},
|
|
83
|
+
usddConfig: {},
|
|
84
|
+
usddMarkets: {},
|
|
85
|
+
frankencoinConfig: {},
|
|
86
|
+
frankencoinMarkets: {},
|
|
87
|
+
llamaLendConfig: {},
|
|
88
|
+
llamaLendMarkets: {},
|
|
89
|
+
resupplyConfig: {},
|
|
83
90
|
compoundV3Bulker: {},
|
|
84
91
|
eulerConfigs: {},
|
|
85
92
|
eulerVaults: {},
|
|
@@ -143,6 +150,13 @@ function initializeLenderData({
|
|
|
143
150
|
inverseConfigOverride,
|
|
144
151
|
termMaxConfigOverride,
|
|
145
152
|
inverseMarketsOverride,
|
|
153
|
+
usddConfigOverride,
|
|
154
|
+
usddMarketsOverride,
|
|
155
|
+
frankencoinConfigOverride,
|
|
156
|
+
frankencoinMarketsOverride,
|
|
157
|
+
llamaLendConfigOverride,
|
|
158
|
+
llamaLendMarketsOverride,
|
|
159
|
+
resupplyConfigOverride,
|
|
146
160
|
compoundV3BulkerOverride,
|
|
147
161
|
eulerConfigsOverride,
|
|
148
162
|
eulerVaultsOverride,
|
|
@@ -199,6 +213,13 @@ function initializeLenderData({
|
|
|
199
213
|
if (inverseConfigOverride) data.inverseConfig = inverseConfigOverride;
|
|
200
214
|
if (termMaxConfigOverride) data.termMaxConfig = termMaxConfigOverride;
|
|
201
215
|
if (inverseMarketsOverride) data.inverseMarkets = inverseMarketsOverride;
|
|
216
|
+
if (usddConfigOverride) data.usddConfig = usddConfigOverride;
|
|
217
|
+
if (usddMarketsOverride) data.usddMarkets = usddMarketsOverride;
|
|
218
|
+
if (frankencoinConfigOverride) data.frankencoinConfig = frankencoinConfigOverride;
|
|
219
|
+
if (frankencoinMarketsOverride) data.frankencoinMarkets = frankencoinMarketsOverride;
|
|
220
|
+
if (llamaLendConfigOverride) data.llamaLendConfig = llamaLendConfigOverride;
|
|
221
|
+
if (llamaLendMarketsOverride) data.llamaLendMarkets = llamaLendMarketsOverride;
|
|
222
|
+
if (resupplyConfigOverride) data.resupplyConfig = resupplyConfigOverride;
|
|
202
223
|
if (compoundV3BulkerOverride) data.compoundV3Bulker = compoundV3BulkerOverride;
|
|
203
224
|
if (eulerConfigsOverride) data.eulerConfigs = eulerConfigsOverride;
|
|
204
225
|
if (eulerVaultsOverride) data.eulerVaults = eulerVaultsOverride;
|
|
@@ -206,13 +227,11 @@ function initializeLenderData({
|
|
|
206
227
|
if (dolomiteEmodeOverride) data.dolomiteEmode = dolomiteEmodeOverride;
|
|
207
228
|
if (aaveV4SpokesOverride) data.aaveV4Spokes = aaveV4SpokesOverride;
|
|
208
229
|
if (aaveV4OraclesOverride) data.aaveV4Oracles = aaveV4OraclesOverride;
|
|
209
|
-
if (aaveV4PeripheralsOverride)
|
|
210
|
-
data.aaveV4Peripherals = aaveV4PeripheralsOverride;
|
|
230
|
+
if (aaveV4PeripheralsOverride) data.aaveV4Peripherals = aaveV4PeripheralsOverride;
|
|
211
231
|
if (siloMarketsOverride) data.siloMarkets = siloMarketsOverride;
|
|
212
232
|
if (siloPeripheralsOverride) data.siloPeripherals = siloPeripheralsOverride;
|
|
213
233
|
if (siloMarketsV3Override) data.siloMarketsV3 = siloMarketsV3Override;
|
|
214
|
-
if (siloPeripheralsV3Override)
|
|
215
|
-
data.siloPeripheralsV3 = siloPeripheralsV3Override;
|
|
234
|
+
if (siloPeripheralsV3Override) data.siloPeripheralsV3 = siloPeripheralsV3Override;
|
|
216
235
|
if (fluidResolversOverride) data.fluidResolvers = fluidResolversOverride;
|
|
217
236
|
if (fluidVaultsOverride) data.fluidVaults = fluidVaultsOverride;
|
|
218
237
|
if (gearboxResolversOverride) data.gearboxResolvers = gearboxResolversOverride;
|
|
@@ -303,9 +322,7 @@ var liquityBranchesByChain = (lender, chainId) => getGlobalData2()?.liquityMarke
|
|
|
303
322
|
var liquityBranchByIndex = (lender, chainId, collIndex) => liquityBranchesByChain(lender, chainId).find((b) => b.collIndex === Number(collIndex));
|
|
304
323
|
var liquityBranchByTroveManager = (lender, chainId, troveManager) => {
|
|
305
324
|
const lower = troveManager.toLowerCase();
|
|
306
|
-
return liquityBranchesByChain(lender, chainId).find(
|
|
307
|
-
(b) => b.troveManager.toLowerCase() === lower
|
|
308
|
-
);
|
|
325
|
+
return liquityBranchesByChain(lender, chainId).find((b) => b.troveManager.toLowerCase() === lower);
|
|
309
326
|
};
|
|
310
327
|
var liquityLendersByChain = (chainId) => {
|
|
311
328
|
const cfg = getGlobalData2()?.liquityConfig ?? {};
|
|
@@ -339,6 +356,99 @@ var inverseLendersByChain = (chainId) => {
|
|
|
339
356
|
const chain = String(chainId);
|
|
340
357
|
return Object.keys(cfg).filter((lender) => !!cfg[lender]?.[chain]?.dola);
|
|
341
358
|
};
|
|
359
|
+
var llamaLendConfig = () => getGlobalData2()?.llamaLendConfig;
|
|
360
|
+
var llamaLendConfigFor = (lender, chainId) => getGlobalData2()?.llamaLendConfig?.[lender]?.[String(chainId)];
|
|
361
|
+
var llamaLendMarkets = () => getGlobalData2()?.llamaLendMarkets;
|
|
362
|
+
var llamaLendChainData = (lender, chainId) => getGlobalData2()?.llamaLendMarkets?.[lender]?.[String(chainId)];
|
|
363
|
+
var llamaLendMarketByController = (lender, chainId, controller) => {
|
|
364
|
+
const lower = controller.toLowerCase();
|
|
365
|
+
return llamaLendChainData(lender, chainId)?.markets?.find((m) => m.controller.toLowerCase() === lower);
|
|
366
|
+
};
|
|
367
|
+
var llamaLendMarketByVault = (lender, chainId, vault) => {
|
|
368
|
+
const lower = vault.toLowerCase();
|
|
369
|
+
return llamaLendChainData(lender, chainId)?.markets?.find((m) => m.vault.toLowerCase() === lower);
|
|
370
|
+
};
|
|
371
|
+
var llamaLendLendersByChain = (chainId) => {
|
|
372
|
+
const cfg = getGlobalData2()?.llamaLendConfig ?? {};
|
|
373
|
+
const chain = String(chainId);
|
|
374
|
+
return Object.keys(cfg).filter(
|
|
375
|
+
(lender) => !!(cfg[lender]?.[chain]?.oneWayFactory || cfg[lender]?.[chain]?.lendFactory)
|
|
376
|
+
);
|
|
377
|
+
};
|
|
378
|
+
var llamaLendSupportsDelegation = (lender, chainId, controller) => llamaLendMarketByController(lender, chainId, controller)?.supportsDelegation === true;
|
|
379
|
+
var llamaLendLeverageZap = (lender, chainId, aggregator) => {
|
|
380
|
+
const cfg = llamaLendConfigFor(lender, chainId);
|
|
381
|
+
if (!cfg) return void 0;
|
|
382
|
+
const zap = aggregator === "odos" ? cfg.leverageZapOdos : cfg.leverageZap1inch;
|
|
383
|
+
const router = aggregator === "odos" ? cfg.leverageZapOdosRouter : cfg.leverageZap1inchRouter;
|
|
384
|
+
if (!zap || !router) return void 0;
|
|
385
|
+
return { zap, router };
|
|
386
|
+
};
|
|
387
|
+
var llamaLendSupportsLeverage = (lender, chainId, controller) => {
|
|
388
|
+
const m = llamaLendMarketByController(lender, chainId, controller);
|
|
389
|
+
if (!m?.supportsLeverage) return false;
|
|
390
|
+
const cfg = llamaLendConfigFor(lender, chainId);
|
|
391
|
+
return Boolean(cfg?.leverageZapOdos || cfg?.leverageZap1inch);
|
|
392
|
+
};
|
|
393
|
+
var llamaLendApiBaseUrl = (lender, chainId) => llamaLendConfigFor(lender, chainId)?.apiBaseUrl || "https://api.curve.finance";
|
|
394
|
+
var usddConfig = () => getGlobalData2()?.usddConfig;
|
|
395
|
+
var usddConfigFor = (lender, chainId) => getGlobalData2()?.usddConfig?.[lender]?.[String(chainId)];
|
|
396
|
+
var usddMarkets = () => getGlobalData2()?.usddMarkets;
|
|
397
|
+
var usddChainData = (lender, chainId) => getGlobalData2()?.usddMarkets?.[lender]?.[String(chainId)];
|
|
398
|
+
var usddMarketByIlk = (lender, chainId, ilk) => usddChainData(lender, chainId)?.markets?.find((m) => m.ilk === ilk);
|
|
399
|
+
var usddLendersByChain = (chainId) => {
|
|
400
|
+
const cfg = getGlobalData2()?.usddConfig ?? {};
|
|
401
|
+
const chain = String(chainId);
|
|
402
|
+
return Object.keys(cfg).filter((lender) => !!cfg[lender]?.[chain]?.vat);
|
|
403
|
+
};
|
|
404
|
+
var frankencoinConfig = () => getGlobalData2()?.frankencoinConfig;
|
|
405
|
+
var frankencoinConfigFor = (lender, chainId) => getGlobalData2()?.frankencoinConfig?.[lender]?.[String(chainId)];
|
|
406
|
+
var frankencoinMarkets = () => getGlobalData2()?.frankencoinMarkets;
|
|
407
|
+
var frankencoinChainData = (lender, chainId) => getGlobalData2()?.frankencoinMarkets?.[lender]?.[String(chainId)];
|
|
408
|
+
var frankencoinMarketByPosition = (lender, chainId, position) => {
|
|
409
|
+
const lower = position.toLowerCase();
|
|
410
|
+
return frankencoinChainData(lender, chainId)?.markets?.find((m) => m.position.toLowerCase() === lower);
|
|
411
|
+
};
|
|
412
|
+
var frankencoinLendersByChain = (chainId) => {
|
|
413
|
+
const cfg = getGlobalData2()?.frankencoinConfig ?? {};
|
|
414
|
+
const chain = String(chainId);
|
|
415
|
+
return Object.keys(cfg).filter((lender) => !!cfg[lender]?.[chain]?.mintingHub);
|
|
416
|
+
};
|
|
417
|
+
var RESUPPLY_ETHEREUM_CONFIG = {
|
|
418
|
+
registry: "0x10101010E0C3171D894B71B3400668aF311e7D94",
|
|
419
|
+
reusd: "0x57aB1E0003F623289CD798B1824Be09a793e4Bec",
|
|
420
|
+
utilities: "0x5f896C250DA6b462873813ceEc47F3e4D8CBA464",
|
|
421
|
+
curveSwapper: "0x042f48346be16Be381190a7397A80808243f3b2e",
|
|
422
|
+
ensoSwapper: "0x181c98113ce60BA75A0f72d8901Eb17e5065043D",
|
|
423
|
+
lifiSwapper: "0x597Db76794c75E588D3a70534FB34B7780941fCe",
|
|
424
|
+
redemptionHandler: "0x5eeB063d0abefBBc78F576E28d762a16b637A025",
|
|
425
|
+
liquidationHandler: "0x88888888c227c36401493Ed9F3e3Dcc3800B2634",
|
|
426
|
+
insurancePool: "0x00000000efe883b3304aFf71eaCf72Dbc3e1b577",
|
|
427
|
+
sreusd: "0x557AB1e003951A73c12D16F0fEA8490E39C33C35",
|
|
428
|
+
priceWatcher: "0xAaaa0013e2ec451F76816d1e0a02ABA596dd9251",
|
|
429
|
+
debtDecimals: 18
|
|
430
|
+
};
|
|
431
|
+
var RESUPPLY_BUILTIN = {
|
|
432
|
+
RESUPPLY: { "1": RESUPPLY_ETHEREUM_CONFIG }
|
|
433
|
+
};
|
|
434
|
+
var resupplyConfig = () => getGlobalData2()?.resupplyConfig;
|
|
435
|
+
var resupplyConfigFor = (lender, chainId) => {
|
|
436
|
+
const published = getGlobalData2()?.resupplyConfig?.[lender]?.[String(chainId)];
|
|
437
|
+
if (published?.registry) return published;
|
|
438
|
+
return RESUPPLY_BUILTIN[lender]?.[String(chainId)];
|
|
439
|
+
};
|
|
440
|
+
var resupplyLendersByChain = (chainId) => {
|
|
441
|
+
const chain = String(chainId);
|
|
442
|
+
const cfg = getGlobalData2()?.resupplyConfig ?? {};
|
|
443
|
+
const keys = /* @__PURE__ */ new Set();
|
|
444
|
+
for (const lender of Object.keys(cfg)) {
|
|
445
|
+
if (cfg[lender]?.[chain]?.registry) keys.add(lender);
|
|
446
|
+
}
|
|
447
|
+
for (const lender of Object.keys(RESUPPLY_BUILTIN)) {
|
|
448
|
+
if (RESUPPLY_BUILTIN[lender]?.[chain]?.registry) keys.add(lender);
|
|
449
|
+
}
|
|
450
|
+
return [...keys];
|
|
451
|
+
};
|
|
342
452
|
var compoundV3Bulker = () => getGlobalData2()?.compoundV3Bulker;
|
|
343
453
|
var eulerConfigs = () => getGlobalData2()?.eulerConfigs;
|
|
344
454
|
var eulerVaults = () => getGlobalData2()?.eulerVaults;
|
|
@@ -438,9 +548,7 @@ function getSiloV2MarketEntry(chainId, lenderKey) {
|
|
|
438
548
|
if (!parsed) return void 0;
|
|
439
549
|
const list = getGlobalData2()?.siloMarkets?.[chainId];
|
|
440
550
|
if (!list) return void 0;
|
|
441
|
-
return list.find(
|
|
442
|
-
(m) => m.siloConfig.toLowerCase() === parsed.siloConfigAddrLower
|
|
443
|
-
);
|
|
551
|
+
return list.find((m) => m.siloConfig.toLowerCase() === parsed.siloConfigAddrLower);
|
|
444
552
|
}
|
|
445
553
|
function siloV3LenderKey(siloConfig) {
|
|
446
554
|
if (!siloConfig || !siloConfig.startsWith("0x") || siloConfig.length !== 42) {
|
|
@@ -458,15 +566,11 @@ function getSiloV3MarketEntry(chainId, lenderKey) {
|
|
|
458
566
|
if (!parsed) return void 0;
|
|
459
567
|
const list = getGlobalData2()?.siloMarketsV3?.[chainId];
|
|
460
568
|
if (!list) return void 0;
|
|
461
|
-
return list.find(
|
|
462
|
-
(m) => m.siloConfig.toLowerCase() === parsed.siloConfigAddrLower
|
|
463
|
-
);
|
|
569
|
+
return list.find((m) => m.siloConfig.toLowerCase() === parsed.siloConfigAddrLower);
|
|
464
570
|
}
|
|
465
571
|
function gearboxV3LenderKey(creditManager) {
|
|
466
572
|
if (!creditManager || !creditManager.startsWith("0x") || creditManager.length !== 42) {
|
|
467
|
-
throw new Error(
|
|
468
|
-
`gearboxV3LenderKey: invalid creditManager address ${creditManager}`
|
|
469
|
-
);
|
|
573
|
+
throw new Error(`gearboxV3LenderKey: invalid creditManager address ${creditManager}`);
|
|
470
574
|
}
|
|
471
575
|
return `GEARBOX_V3_${creditManager.slice(2).toUpperCase()}`;
|
|
472
576
|
}
|
|
@@ -486,6 +590,17 @@ function parseTermMaxLenderKey(lenderKey) {
|
|
|
486
590
|
if (!match) return void 0;
|
|
487
591
|
return { marketAddrLower: "0x" + match[1].toLowerCase() };
|
|
488
592
|
}
|
|
593
|
+
function llamaLendLenderKey(controller) {
|
|
594
|
+
if (!controller || !controller.startsWith("0x") || controller.length !== 42) {
|
|
595
|
+
throw new Error(`llamaLendLenderKey: invalid controller address ${controller}`);
|
|
596
|
+
}
|
|
597
|
+
return `LLAMALEND_${controller.slice(2).toUpperCase()}`;
|
|
598
|
+
}
|
|
599
|
+
function parseLlamaLendLenderKey(lenderKey) {
|
|
600
|
+
const match = lenderKey.match(/^LLAMALEND_([0-9A-Fa-f]{40})$/);
|
|
601
|
+
if (!match) return void 0;
|
|
602
|
+
return { controllerAddrLower: "0x" + match[1].toLowerCase() };
|
|
603
|
+
}
|
|
489
604
|
|
|
490
605
|
// src/tokens.ts
|
|
491
606
|
var getListUrl = (chainId) => `https://raw.githubusercontent.com/1delta-DAO/token-lists/main/${chainId}.json`;
|
|
@@ -519,6 +634,7 @@ async function fetchMainTokensMap() {
|
|
|
519
634
|
}
|
|
520
635
|
|
|
521
636
|
exports.GEARBOX_ACCOUNT_COMPRESSOR_V310 = GEARBOX_ACCOUNT_COMPRESSOR_V310;
|
|
637
|
+
exports.RESUPPLY_ETHEREUM_CONFIG = RESUPPLY_ETHEREUM_CONFIG;
|
|
522
638
|
exports.aaveOracles = aaveOracles;
|
|
523
639
|
exports.aaveOraclesConfig = aaveOraclesConfig;
|
|
524
640
|
exports.aavePools = aavePools;
|
|
@@ -562,6 +678,12 @@ exports.fluidChains = fluidChains;
|
|
|
562
678
|
exports.fluidResolvers = fluidResolvers;
|
|
563
679
|
exports.fluidVaultEntries = fluidVaultEntries;
|
|
564
680
|
exports.fluidVaults = fluidVaults;
|
|
681
|
+
exports.frankencoinChainData = frankencoinChainData;
|
|
682
|
+
exports.frankencoinConfig = frankencoinConfig;
|
|
683
|
+
exports.frankencoinConfigFor = frankencoinConfigFor;
|
|
684
|
+
exports.frankencoinLendersByChain = frankencoinLendersByChain;
|
|
685
|
+
exports.frankencoinMarketByPosition = frankencoinMarketByPosition;
|
|
686
|
+
exports.frankencoinMarkets = frankencoinMarkets;
|
|
565
687
|
exports.gearboxAccountCompressor = gearboxAccountCompressor;
|
|
566
688
|
exports.gearboxAddressProviderV310 = gearboxAddressProviderV310;
|
|
567
689
|
exports.gearboxBotListV3 = gearboxBotListV3;
|
|
@@ -594,6 +716,18 @@ exports.liquityConfigFor = liquityConfigFor;
|
|
|
594
716
|
exports.liquityLendersByChain = liquityLendersByChain;
|
|
595
717
|
exports.liquityMarkets = liquityMarkets;
|
|
596
718
|
exports.listaNativeProvider = listaNativeProvider;
|
|
719
|
+
exports.llamaLendApiBaseUrl = llamaLendApiBaseUrl;
|
|
720
|
+
exports.llamaLendChainData = llamaLendChainData;
|
|
721
|
+
exports.llamaLendConfig = llamaLendConfig;
|
|
722
|
+
exports.llamaLendConfigFor = llamaLendConfigFor;
|
|
723
|
+
exports.llamaLendLenderKey = llamaLendLenderKey;
|
|
724
|
+
exports.llamaLendLendersByChain = llamaLendLendersByChain;
|
|
725
|
+
exports.llamaLendLeverageZap = llamaLendLeverageZap;
|
|
726
|
+
exports.llamaLendMarketByController = llamaLendMarketByController;
|
|
727
|
+
exports.llamaLendMarketByVault = llamaLendMarketByVault;
|
|
728
|
+
exports.llamaLendMarkets = llamaLendMarkets;
|
|
729
|
+
exports.llamaLendSupportsDelegation = llamaLendSupportsDelegation;
|
|
730
|
+
exports.llamaLendSupportsLeverage = llamaLendSupportsLeverage;
|
|
597
731
|
exports.midnightApiBaseOverride = midnightApiBaseOverride;
|
|
598
732
|
exports.midnightConfig = midnightConfig;
|
|
599
733
|
exports.midnightMarketById = midnightMarketById;
|
|
@@ -607,11 +741,15 @@ exports.morphoTypeOracles = morphoTypeOracles;
|
|
|
607
741
|
exports.morphoTypeVaults = morphoTypeVaults;
|
|
608
742
|
exports.parseAaveV4SpokeLenderKey = parseAaveV4SpokeLenderKey;
|
|
609
743
|
exports.parseGearboxV3LenderKey = parseGearboxV3LenderKey;
|
|
744
|
+
exports.parseLlamaLendLenderKey = parseLlamaLendLenderKey;
|
|
610
745
|
exports.parseSiloV2LenderKey = parseSiloV2LenderKey;
|
|
611
746
|
exports.parseSiloV3LenderKey = parseSiloV3LenderKey;
|
|
612
747
|
exports.parseTermMaxLenderKey = parseTermMaxLenderKey;
|
|
613
748
|
exports.resolveMidnightApiBase = resolveMidnightApiBase;
|
|
614
749
|
exports.resolveTermApiBase = resolveTermApiBase;
|
|
750
|
+
exports.resupplyConfig = resupplyConfig;
|
|
751
|
+
exports.resupplyConfigFor = resupplyConfigFor;
|
|
752
|
+
exports.resupplyLendersByChain = resupplyLendersByChain;
|
|
615
753
|
exports.riverChainData = riverChainData;
|
|
616
754
|
exports.riverConfig = riverConfig;
|
|
617
755
|
exports.riverConfigFor = riverConfigFor;
|
|
@@ -641,3 +779,9 @@ exports.termMaxChainIds = termMaxChainIds;
|
|
|
641
779
|
exports.termMaxConfig = termMaxConfig;
|
|
642
780
|
exports.termMaxConfigByChain = termMaxConfigByChain;
|
|
643
781
|
exports.termMaxLenderKey = termMaxLenderKey;
|
|
782
|
+
exports.usddChainData = usddChainData;
|
|
783
|
+
exports.usddConfig = usddConfig;
|
|
784
|
+
exports.usddConfigFor = usddConfigFor;
|
|
785
|
+
exports.usddLendersByChain = usddLendersByChain;
|
|
786
|
+
exports.usddMarketByIlk = usddMarketByIlk;
|
|
787
|
+
exports.usddMarkets = usddMarkets;
|
package/dist/index.mjs
CHANGED
|
@@ -78,6 +78,13 @@ globalThis[GLOBAL_LENDER_DATA_KEY] = {
|
|
|
78
78
|
inverseConfig: {},
|
|
79
79
|
termMaxConfig: {},
|
|
80
80
|
inverseMarkets: {},
|
|
81
|
+
usddConfig: {},
|
|
82
|
+
usddMarkets: {},
|
|
83
|
+
frankencoinConfig: {},
|
|
84
|
+
frankencoinMarkets: {},
|
|
85
|
+
llamaLendConfig: {},
|
|
86
|
+
llamaLendMarkets: {},
|
|
87
|
+
resupplyConfig: {},
|
|
81
88
|
compoundV3Bulker: {},
|
|
82
89
|
eulerConfigs: {},
|
|
83
90
|
eulerVaults: {},
|
|
@@ -141,6 +148,13 @@ function initializeLenderData({
|
|
|
141
148
|
inverseConfigOverride,
|
|
142
149
|
termMaxConfigOverride,
|
|
143
150
|
inverseMarketsOverride,
|
|
151
|
+
usddConfigOverride,
|
|
152
|
+
usddMarketsOverride,
|
|
153
|
+
frankencoinConfigOverride,
|
|
154
|
+
frankencoinMarketsOverride,
|
|
155
|
+
llamaLendConfigOverride,
|
|
156
|
+
llamaLendMarketsOverride,
|
|
157
|
+
resupplyConfigOverride,
|
|
144
158
|
compoundV3BulkerOverride,
|
|
145
159
|
eulerConfigsOverride,
|
|
146
160
|
eulerVaultsOverride,
|
|
@@ -197,6 +211,13 @@ function initializeLenderData({
|
|
|
197
211
|
if (inverseConfigOverride) data.inverseConfig = inverseConfigOverride;
|
|
198
212
|
if (termMaxConfigOverride) data.termMaxConfig = termMaxConfigOverride;
|
|
199
213
|
if (inverseMarketsOverride) data.inverseMarkets = inverseMarketsOverride;
|
|
214
|
+
if (usddConfigOverride) data.usddConfig = usddConfigOverride;
|
|
215
|
+
if (usddMarketsOverride) data.usddMarkets = usddMarketsOverride;
|
|
216
|
+
if (frankencoinConfigOverride) data.frankencoinConfig = frankencoinConfigOverride;
|
|
217
|
+
if (frankencoinMarketsOverride) data.frankencoinMarkets = frankencoinMarketsOverride;
|
|
218
|
+
if (llamaLendConfigOverride) data.llamaLendConfig = llamaLendConfigOverride;
|
|
219
|
+
if (llamaLendMarketsOverride) data.llamaLendMarkets = llamaLendMarketsOverride;
|
|
220
|
+
if (resupplyConfigOverride) data.resupplyConfig = resupplyConfigOverride;
|
|
200
221
|
if (compoundV3BulkerOverride) data.compoundV3Bulker = compoundV3BulkerOverride;
|
|
201
222
|
if (eulerConfigsOverride) data.eulerConfigs = eulerConfigsOverride;
|
|
202
223
|
if (eulerVaultsOverride) data.eulerVaults = eulerVaultsOverride;
|
|
@@ -204,13 +225,11 @@ function initializeLenderData({
|
|
|
204
225
|
if (dolomiteEmodeOverride) data.dolomiteEmode = dolomiteEmodeOverride;
|
|
205
226
|
if (aaveV4SpokesOverride) data.aaveV4Spokes = aaveV4SpokesOverride;
|
|
206
227
|
if (aaveV4OraclesOverride) data.aaveV4Oracles = aaveV4OraclesOverride;
|
|
207
|
-
if (aaveV4PeripheralsOverride)
|
|
208
|
-
data.aaveV4Peripherals = aaveV4PeripheralsOverride;
|
|
228
|
+
if (aaveV4PeripheralsOverride) data.aaveV4Peripherals = aaveV4PeripheralsOverride;
|
|
209
229
|
if (siloMarketsOverride) data.siloMarkets = siloMarketsOverride;
|
|
210
230
|
if (siloPeripheralsOverride) data.siloPeripherals = siloPeripheralsOverride;
|
|
211
231
|
if (siloMarketsV3Override) data.siloMarketsV3 = siloMarketsV3Override;
|
|
212
|
-
if (siloPeripheralsV3Override)
|
|
213
|
-
data.siloPeripheralsV3 = siloPeripheralsV3Override;
|
|
232
|
+
if (siloPeripheralsV3Override) data.siloPeripheralsV3 = siloPeripheralsV3Override;
|
|
214
233
|
if (fluidResolversOverride) data.fluidResolvers = fluidResolversOverride;
|
|
215
234
|
if (fluidVaultsOverride) data.fluidVaults = fluidVaultsOverride;
|
|
216
235
|
if (gearboxResolversOverride) data.gearboxResolvers = gearboxResolversOverride;
|
|
@@ -301,9 +320,7 @@ var liquityBranchesByChain = (lender, chainId) => getGlobalData2()?.liquityMarke
|
|
|
301
320
|
var liquityBranchByIndex = (lender, chainId, collIndex) => liquityBranchesByChain(lender, chainId).find((b) => b.collIndex === Number(collIndex));
|
|
302
321
|
var liquityBranchByTroveManager = (lender, chainId, troveManager) => {
|
|
303
322
|
const lower = troveManager.toLowerCase();
|
|
304
|
-
return liquityBranchesByChain(lender, chainId).find(
|
|
305
|
-
(b) => b.troveManager.toLowerCase() === lower
|
|
306
|
-
);
|
|
323
|
+
return liquityBranchesByChain(lender, chainId).find((b) => b.troveManager.toLowerCase() === lower);
|
|
307
324
|
};
|
|
308
325
|
var liquityLendersByChain = (chainId) => {
|
|
309
326
|
const cfg = getGlobalData2()?.liquityConfig ?? {};
|
|
@@ -337,6 +354,99 @@ var inverseLendersByChain = (chainId) => {
|
|
|
337
354
|
const chain = String(chainId);
|
|
338
355
|
return Object.keys(cfg).filter((lender) => !!cfg[lender]?.[chain]?.dola);
|
|
339
356
|
};
|
|
357
|
+
var llamaLendConfig = () => getGlobalData2()?.llamaLendConfig;
|
|
358
|
+
var llamaLendConfigFor = (lender, chainId) => getGlobalData2()?.llamaLendConfig?.[lender]?.[String(chainId)];
|
|
359
|
+
var llamaLendMarkets = () => getGlobalData2()?.llamaLendMarkets;
|
|
360
|
+
var llamaLendChainData = (lender, chainId) => getGlobalData2()?.llamaLendMarkets?.[lender]?.[String(chainId)];
|
|
361
|
+
var llamaLendMarketByController = (lender, chainId, controller) => {
|
|
362
|
+
const lower = controller.toLowerCase();
|
|
363
|
+
return llamaLendChainData(lender, chainId)?.markets?.find((m) => m.controller.toLowerCase() === lower);
|
|
364
|
+
};
|
|
365
|
+
var llamaLendMarketByVault = (lender, chainId, vault) => {
|
|
366
|
+
const lower = vault.toLowerCase();
|
|
367
|
+
return llamaLendChainData(lender, chainId)?.markets?.find((m) => m.vault.toLowerCase() === lower);
|
|
368
|
+
};
|
|
369
|
+
var llamaLendLendersByChain = (chainId) => {
|
|
370
|
+
const cfg = getGlobalData2()?.llamaLendConfig ?? {};
|
|
371
|
+
const chain = String(chainId);
|
|
372
|
+
return Object.keys(cfg).filter(
|
|
373
|
+
(lender) => !!(cfg[lender]?.[chain]?.oneWayFactory || cfg[lender]?.[chain]?.lendFactory)
|
|
374
|
+
);
|
|
375
|
+
};
|
|
376
|
+
var llamaLendSupportsDelegation = (lender, chainId, controller) => llamaLendMarketByController(lender, chainId, controller)?.supportsDelegation === true;
|
|
377
|
+
var llamaLendLeverageZap = (lender, chainId, aggregator) => {
|
|
378
|
+
const cfg = llamaLendConfigFor(lender, chainId);
|
|
379
|
+
if (!cfg) return void 0;
|
|
380
|
+
const zap = aggregator === "odos" ? cfg.leverageZapOdos : cfg.leverageZap1inch;
|
|
381
|
+
const router = aggregator === "odos" ? cfg.leverageZapOdosRouter : cfg.leverageZap1inchRouter;
|
|
382
|
+
if (!zap || !router) return void 0;
|
|
383
|
+
return { zap, router };
|
|
384
|
+
};
|
|
385
|
+
var llamaLendSupportsLeverage = (lender, chainId, controller) => {
|
|
386
|
+
const m = llamaLendMarketByController(lender, chainId, controller);
|
|
387
|
+
if (!m?.supportsLeverage) return false;
|
|
388
|
+
const cfg = llamaLendConfigFor(lender, chainId);
|
|
389
|
+
return Boolean(cfg?.leverageZapOdos || cfg?.leverageZap1inch);
|
|
390
|
+
};
|
|
391
|
+
var llamaLendApiBaseUrl = (lender, chainId) => llamaLendConfigFor(lender, chainId)?.apiBaseUrl || "https://api.curve.finance";
|
|
392
|
+
var usddConfig = () => getGlobalData2()?.usddConfig;
|
|
393
|
+
var usddConfigFor = (lender, chainId) => getGlobalData2()?.usddConfig?.[lender]?.[String(chainId)];
|
|
394
|
+
var usddMarkets = () => getGlobalData2()?.usddMarkets;
|
|
395
|
+
var usddChainData = (lender, chainId) => getGlobalData2()?.usddMarkets?.[lender]?.[String(chainId)];
|
|
396
|
+
var usddMarketByIlk = (lender, chainId, ilk) => usddChainData(lender, chainId)?.markets?.find((m) => m.ilk === ilk);
|
|
397
|
+
var usddLendersByChain = (chainId) => {
|
|
398
|
+
const cfg = getGlobalData2()?.usddConfig ?? {};
|
|
399
|
+
const chain = String(chainId);
|
|
400
|
+
return Object.keys(cfg).filter((lender) => !!cfg[lender]?.[chain]?.vat);
|
|
401
|
+
};
|
|
402
|
+
var frankencoinConfig = () => getGlobalData2()?.frankencoinConfig;
|
|
403
|
+
var frankencoinConfigFor = (lender, chainId) => getGlobalData2()?.frankencoinConfig?.[lender]?.[String(chainId)];
|
|
404
|
+
var frankencoinMarkets = () => getGlobalData2()?.frankencoinMarkets;
|
|
405
|
+
var frankencoinChainData = (lender, chainId) => getGlobalData2()?.frankencoinMarkets?.[lender]?.[String(chainId)];
|
|
406
|
+
var frankencoinMarketByPosition = (lender, chainId, position) => {
|
|
407
|
+
const lower = position.toLowerCase();
|
|
408
|
+
return frankencoinChainData(lender, chainId)?.markets?.find((m) => m.position.toLowerCase() === lower);
|
|
409
|
+
};
|
|
410
|
+
var frankencoinLendersByChain = (chainId) => {
|
|
411
|
+
const cfg = getGlobalData2()?.frankencoinConfig ?? {};
|
|
412
|
+
const chain = String(chainId);
|
|
413
|
+
return Object.keys(cfg).filter((lender) => !!cfg[lender]?.[chain]?.mintingHub);
|
|
414
|
+
};
|
|
415
|
+
var RESUPPLY_ETHEREUM_CONFIG = {
|
|
416
|
+
registry: "0x10101010E0C3171D894B71B3400668aF311e7D94",
|
|
417
|
+
reusd: "0x57aB1E0003F623289CD798B1824Be09a793e4Bec",
|
|
418
|
+
utilities: "0x5f896C250DA6b462873813ceEc47F3e4D8CBA464",
|
|
419
|
+
curveSwapper: "0x042f48346be16Be381190a7397A80808243f3b2e",
|
|
420
|
+
ensoSwapper: "0x181c98113ce60BA75A0f72d8901Eb17e5065043D",
|
|
421
|
+
lifiSwapper: "0x597Db76794c75E588D3a70534FB34B7780941fCe",
|
|
422
|
+
redemptionHandler: "0x5eeB063d0abefBBc78F576E28d762a16b637A025",
|
|
423
|
+
liquidationHandler: "0x88888888c227c36401493Ed9F3e3Dcc3800B2634",
|
|
424
|
+
insurancePool: "0x00000000efe883b3304aFf71eaCf72Dbc3e1b577",
|
|
425
|
+
sreusd: "0x557AB1e003951A73c12D16F0fEA8490E39C33C35",
|
|
426
|
+
priceWatcher: "0xAaaa0013e2ec451F76816d1e0a02ABA596dd9251",
|
|
427
|
+
debtDecimals: 18
|
|
428
|
+
};
|
|
429
|
+
var RESUPPLY_BUILTIN = {
|
|
430
|
+
RESUPPLY: { "1": RESUPPLY_ETHEREUM_CONFIG }
|
|
431
|
+
};
|
|
432
|
+
var resupplyConfig = () => getGlobalData2()?.resupplyConfig;
|
|
433
|
+
var resupplyConfigFor = (lender, chainId) => {
|
|
434
|
+
const published = getGlobalData2()?.resupplyConfig?.[lender]?.[String(chainId)];
|
|
435
|
+
if (published?.registry) return published;
|
|
436
|
+
return RESUPPLY_BUILTIN[lender]?.[String(chainId)];
|
|
437
|
+
};
|
|
438
|
+
var resupplyLendersByChain = (chainId) => {
|
|
439
|
+
const chain = String(chainId);
|
|
440
|
+
const cfg = getGlobalData2()?.resupplyConfig ?? {};
|
|
441
|
+
const keys = /* @__PURE__ */ new Set();
|
|
442
|
+
for (const lender of Object.keys(cfg)) {
|
|
443
|
+
if (cfg[lender]?.[chain]?.registry) keys.add(lender);
|
|
444
|
+
}
|
|
445
|
+
for (const lender of Object.keys(RESUPPLY_BUILTIN)) {
|
|
446
|
+
if (RESUPPLY_BUILTIN[lender]?.[chain]?.registry) keys.add(lender);
|
|
447
|
+
}
|
|
448
|
+
return [...keys];
|
|
449
|
+
};
|
|
340
450
|
var compoundV3Bulker = () => getGlobalData2()?.compoundV3Bulker;
|
|
341
451
|
var eulerConfigs = () => getGlobalData2()?.eulerConfigs;
|
|
342
452
|
var eulerVaults = () => getGlobalData2()?.eulerVaults;
|
|
@@ -436,9 +546,7 @@ function getSiloV2MarketEntry(chainId, lenderKey) {
|
|
|
436
546
|
if (!parsed) return void 0;
|
|
437
547
|
const list = getGlobalData2()?.siloMarkets?.[chainId];
|
|
438
548
|
if (!list) return void 0;
|
|
439
|
-
return list.find(
|
|
440
|
-
(m) => m.siloConfig.toLowerCase() === parsed.siloConfigAddrLower
|
|
441
|
-
);
|
|
549
|
+
return list.find((m) => m.siloConfig.toLowerCase() === parsed.siloConfigAddrLower);
|
|
442
550
|
}
|
|
443
551
|
function siloV3LenderKey(siloConfig) {
|
|
444
552
|
if (!siloConfig || !siloConfig.startsWith("0x") || siloConfig.length !== 42) {
|
|
@@ -456,15 +564,11 @@ function getSiloV3MarketEntry(chainId, lenderKey) {
|
|
|
456
564
|
if (!parsed) return void 0;
|
|
457
565
|
const list = getGlobalData2()?.siloMarketsV3?.[chainId];
|
|
458
566
|
if (!list) return void 0;
|
|
459
|
-
return list.find(
|
|
460
|
-
(m) => m.siloConfig.toLowerCase() === parsed.siloConfigAddrLower
|
|
461
|
-
);
|
|
567
|
+
return list.find((m) => m.siloConfig.toLowerCase() === parsed.siloConfigAddrLower);
|
|
462
568
|
}
|
|
463
569
|
function gearboxV3LenderKey(creditManager) {
|
|
464
570
|
if (!creditManager || !creditManager.startsWith("0x") || creditManager.length !== 42) {
|
|
465
|
-
throw new Error(
|
|
466
|
-
`gearboxV3LenderKey: invalid creditManager address ${creditManager}`
|
|
467
|
-
);
|
|
571
|
+
throw new Error(`gearboxV3LenderKey: invalid creditManager address ${creditManager}`);
|
|
468
572
|
}
|
|
469
573
|
return `GEARBOX_V3_${creditManager.slice(2).toUpperCase()}`;
|
|
470
574
|
}
|
|
@@ -484,6 +588,17 @@ function parseTermMaxLenderKey(lenderKey) {
|
|
|
484
588
|
if (!match) return void 0;
|
|
485
589
|
return { marketAddrLower: "0x" + match[1].toLowerCase() };
|
|
486
590
|
}
|
|
591
|
+
function llamaLendLenderKey(controller) {
|
|
592
|
+
if (!controller || !controller.startsWith("0x") || controller.length !== 42) {
|
|
593
|
+
throw new Error(`llamaLendLenderKey: invalid controller address ${controller}`);
|
|
594
|
+
}
|
|
595
|
+
return `LLAMALEND_${controller.slice(2).toUpperCase()}`;
|
|
596
|
+
}
|
|
597
|
+
function parseLlamaLendLenderKey(lenderKey) {
|
|
598
|
+
const match = lenderKey.match(/^LLAMALEND_([0-9A-Fa-f]{40})$/);
|
|
599
|
+
if (!match) return void 0;
|
|
600
|
+
return { controllerAddrLower: "0x" + match[1].toLowerCase() };
|
|
601
|
+
}
|
|
487
602
|
|
|
488
603
|
// src/tokens.ts
|
|
489
604
|
var getListUrl = (chainId) => `https://raw.githubusercontent.com/1delta-DAO/token-lists/main/${chainId}.json`;
|
|
@@ -516,4 +631,4 @@ async function fetchMainTokensMap() {
|
|
|
516
631
|
return await data.json();
|
|
517
632
|
}
|
|
518
633
|
|
|
519
|
-
export { GEARBOX_ACCOUNT_COMPRESSOR_V310, aaveOracles, aaveOraclesConfig, aavePools, aaveReserves, aaveTokens, aaveV4Oracles, aaveV4Peripherals, aaveV4SpokeLenderKey, aaveV4Spokes, aaveWethGateway, chainLogoURI, chains, compoundV2Oracles, compoundV2OraclesConfig, compoundV2Pools, compoundV2Reserves, compoundV2TokenArray, compoundV2Tokens, compoundV3BaseData, compoundV3Bulker, compoundV3OraclesData, compoundV3Pools, compoundV3Reserves, dolomiteChains, dolomiteConfigs, dolomiteEmode, dolomiteMarketIdByToken, eulerConfigs, eulerVaults, exactlyConfig, exactlyMarketByAddress, exactlyMarketByAsset, exactlyMarkets, exactlyMarketsByChain, fetchMainTokensMap, fetchTokenList, fetchTokenListFile, fetchTokenLists, findAaveV4PositionManager, fluidChains, fluidResolvers, fluidVaultEntries, fluidVaults, gearboxAccountCompressor, gearboxAddressProviderV310, gearboxBotListV3, gearboxChains, gearboxMarketCompressor, gearboxMarketConfigurators, gearboxResolvers, gearboxV3LenderKey, getAaveV4GatewayAddresses, getAaveV4PositionManagers, getAaveV4SpokeEntry, getAaveV4SpokePeripherals, getChainEntries, getSiloV2MarketEntry, getSiloV3MarketEntry, initConfig, initializeChainData, initializeLenderData, inverseChainData, inverseConfig, inverseConfigFor, inverseLendersByChain, inverseMarketByAddress, inverseMarkets, liquityBranchByIndex, liquityBranchByTroveManager, liquityBranchesByChain, liquityConfig, liquityConfigFor, liquityLendersByChain, liquityMarkets, listaNativeProvider, midnightApiBaseOverride, midnightConfig, midnightMarketById, midnightMarkets, midnightMarketsByChain, morphoBundler3, morphoOracles, morphoPools, morphoTypeMarkets, morphoTypeOracles, morphoTypeVaults, parseAaveV4SpokeLenderKey, parseGearboxV3LenderKey, parseSiloV2LenderKey, parseSiloV3LenderKey, parseTermMaxLenderKey, resolveMidnightApiBase, resolveTermApiBase, riverChainData, riverConfig, riverConfigFor, riverLendersByChain, riverMarketByIndex, riverMarkets, setMidnightApiBase, setTermApiBase, siloMarkets, siloMarketsV3, siloPeripherals, siloPeripheralsV3, siloV2LenderKey, siloV3LenderKey, tellerConfig, tellerConfigByChain, tellerPoolByAddress, tellerPools, tellerPoolsByChain, termApiBaseOverride, termConfig, termMarketById, termMarkets, termMarketsByChain, termMaxApiBaseUrl, termMaxChainIds, termMaxConfig, termMaxConfigByChain, termMaxLenderKey };
|
|
634
|
+
export { GEARBOX_ACCOUNT_COMPRESSOR_V310, RESUPPLY_ETHEREUM_CONFIG, aaveOracles, aaveOraclesConfig, aavePools, aaveReserves, aaveTokens, aaveV4Oracles, aaveV4Peripherals, aaveV4SpokeLenderKey, aaveV4Spokes, aaveWethGateway, chainLogoURI, chains, compoundV2Oracles, compoundV2OraclesConfig, compoundV2Pools, compoundV2Reserves, compoundV2TokenArray, compoundV2Tokens, compoundV3BaseData, compoundV3Bulker, compoundV3OraclesData, compoundV3Pools, compoundV3Reserves, dolomiteChains, dolomiteConfigs, dolomiteEmode, dolomiteMarketIdByToken, eulerConfigs, eulerVaults, exactlyConfig, exactlyMarketByAddress, exactlyMarketByAsset, exactlyMarkets, exactlyMarketsByChain, fetchMainTokensMap, fetchTokenList, fetchTokenListFile, fetchTokenLists, findAaveV4PositionManager, fluidChains, fluidResolvers, fluidVaultEntries, fluidVaults, frankencoinChainData, frankencoinConfig, frankencoinConfigFor, frankencoinLendersByChain, frankencoinMarketByPosition, frankencoinMarkets, gearboxAccountCompressor, gearboxAddressProviderV310, gearboxBotListV3, gearboxChains, gearboxMarketCompressor, gearboxMarketConfigurators, gearboxResolvers, gearboxV3LenderKey, getAaveV4GatewayAddresses, getAaveV4PositionManagers, getAaveV4SpokeEntry, getAaveV4SpokePeripherals, getChainEntries, getSiloV2MarketEntry, getSiloV3MarketEntry, initConfig, initializeChainData, initializeLenderData, inverseChainData, inverseConfig, inverseConfigFor, inverseLendersByChain, inverseMarketByAddress, inverseMarkets, liquityBranchByIndex, liquityBranchByTroveManager, liquityBranchesByChain, liquityConfig, liquityConfigFor, liquityLendersByChain, liquityMarkets, listaNativeProvider, llamaLendApiBaseUrl, llamaLendChainData, llamaLendConfig, llamaLendConfigFor, llamaLendLenderKey, llamaLendLendersByChain, llamaLendLeverageZap, llamaLendMarketByController, llamaLendMarketByVault, llamaLendMarkets, llamaLendSupportsDelegation, llamaLendSupportsLeverage, midnightApiBaseOverride, midnightConfig, midnightMarketById, midnightMarkets, midnightMarketsByChain, morphoBundler3, morphoOracles, morphoPools, morphoTypeMarkets, morphoTypeOracles, morphoTypeVaults, parseAaveV4SpokeLenderKey, parseGearboxV3LenderKey, parseLlamaLendLenderKey, parseSiloV2LenderKey, parseSiloV3LenderKey, parseTermMaxLenderKey, resolveMidnightApiBase, resolveTermApiBase, resupplyConfig, resupplyConfigFor, resupplyLendersByChain, riverChainData, riverConfig, riverConfigFor, riverLendersByChain, riverMarketByIndex, riverMarkets, setMidnightApiBase, setTermApiBase, siloMarkets, siloMarketsV3, siloPeripherals, siloPeripheralsV3, siloV2LenderKey, siloV3LenderKey, tellerConfig, tellerConfigByChain, tellerPoolByAddress, tellerPools, tellerPoolsByChain, termApiBaseOverride, termConfig, termMarketById, termMarkets, termMarketsByChain, termMaxApiBaseUrl, termMaxChainIds, termMaxConfig, termMaxConfigByChain, termMaxLenderKey, usddChainData, usddConfig, usddConfigFor, usddLendersByChain, usddMarketByIlk, usddMarkets };
|
package/dist/lending.d.ts
CHANGED
|
@@ -208,7 +208,10 @@ export type ExactlyConfigChain = {
|
|
|
208
208
|
marketETHRouter?: string | null;
|
|
209
209
|
/** The WETH Market the ETH router wraps (optional convenience). */
|
|
210
210
|
wethMarket?: string | null;
|
|
211
|
-
/**
|
|
211
|
+
/** Debt-rollover periphery — Optimism `DebtManager` (all three roll
|
|
212
|
+
* directions + leverage), Base `DebtRoller` (`rollFixed` ONLY). Same
|
|
213
|
+
* field, different deployment name per chain; consumed by the Exactly
|
|
214
|
+
* rollover builder. */
|
|
212
215
|
debtManager?: string | null;
|
|
213
216
|
/** RewardsController — EXA/OP rewards (optional, not used yet). */
|
|
214
217
|
rewardsController?: string | null;
|
|
@@ -519,6 +522,10 @@ export type InverseMarketConfig = {
|
|
|
519
522
|
collateralFactorBps: string;
|
|
520
523
|
liquidationIncentiveBps: string;
|
|
521
524
|
liquidationFactorBps: string;
|
|
525
|
+
/** Replenisher's cut of a force-replenish (1000 = 10%). Optional: older
|
|
526
|
+
* metadata snapshots predate it, and it is bot-side economics — the
|
|
527
|
+
* borrower always pays the full `DBR.replenishmentPriceBps`. */
|
|
528
|
+
replenishmentIncentiveBps?: string;
|
|
522
529
|
/** Smaller borrows revert (DOLA units, human number as string). */
|
|
523
530
|
minDebt: string;
|
|
524
531
|
/** Per-market daily borrow cap (DOLA, human number as string). */
|
|
@@ -535,6 +542,328 @@ export type InverseMarketsType = {
|
|
|
535
542
|
[chainId: string]: InverseChainData;
|
|
536
543
|
};
|
|
537
544
|
};
|
|
545
|
+
/** Per-chain Frankencoin deployment seed (hand-maintained). */
|
|
546
|
+
export type FrankencoinConfigChain = {
|
|
547
|
+
/** ZCHF — the only debt asset. */
|
|
548
|
+
zchf: string;
|
|
549
|
+
/** MintingHub V2 — clone/challenge entry point. */
|
|
550
|
+
mintingHub: string;
|
|
551
|
+
/** Equity (FPS) — first-loss tranche holding the withheld reserve. */
|
|
552
|
+
equity: string;
|
|
553
|
+
/** PositionRoller (carries a protocol-native ZCHF flash loan). */
|
|
554
|
+
roller?: string;
|
|
555
|
+
/** Leadrate module — the protocol-wide base rate. */
|
|
556
|
+
leadrate?: string;
|
|
557
|
+
/** Savings module (the savings vault leg lives in SAVINGS_REGISTRY;
|
|
558
|
+
* carried here for completeness). */
|
|
559
|
+
savings?: string;
|
|
560
|
+
/** Chainlink-shaped CHF/USD feed — required for USD normalisation. */
|
|
561
|
+
chfUsdFeed?: string;
|
|
562
|
+
/** Debt decimals (18). */
|
|
563
|
+
debtDecimals?: number;
|
|
564
|
+
/** Legacy MintingHub V1 — dead but deployed; positions carrying this hub
|
|
565
|
+
* must never reach the V2 builders. */
|
|
566
|
+
mintingHubV1?: string;
|
|
567
|
+
};
|
|
568
|
+
export type FrankencoinConfigType = {
|
|
569
|
+
[lender: string]: {
|
|
570
|
+
[chainId: string]: FrankencoinConfigChain;
|
|
571
|
+
};
|
|
572
|
+
};
|
|
573
|
+
/** One Frankencoin market (= one ORIGINAL position). */
|
|
574
|
+
export type FrankencoinMarketConfig = {
|
|
575
|
+
/** The original position contract — also the per-market key suffix
|
|
576
|
+
* (`FRANKENCOIN_<chainId>_<ADDR>`). */
|
|
577
|
+
position: string;
|
|
578
|
+
collToken: string;
|
|
579
|
+
collDecimals: number;
|
|
580
|
+
collSymbol?: string;
|
|
581
|
+
/** Owner-declared liquidation price, 36-dec scaled against the
|
|
582
|
+
* collateral's decimals. NOT an oracle quote. */
|
|
583
|
+
price: string;
|
|
584
|
+
/** ppm — risk premium on top of the hub lead rate. */
|
|
585
|
+
riskPremiumPPM: string;
|
|
586
|
+
/** ppm — withheld into the equity reserve at mint (10-40% observed). */
|
|
587
|
+
reserveContribution: string;
|
|
588
|
+
/** Minimum collateral for a clone (raw collateral units). */
|
|
589
|
+
minimumCollateral: string;
|
|
590
|
+
/** Total ZCHF this original + its clones may mint. */
|
|
591
|
+
limitForClones?: string;
|
|
592
|
+
/** Unix seconds — positions EXPIRE (forced sale after). */
|
|
593
|
+
expiration: string;
|
|
594
|
+
start?: string;
|
|
595
|
+
challengePeriod?: string;
|
|
596
|
+
/** Position version — only 2 is supported; V1 is dead. */
|
|
597
|
+
version?: number;
|
|
598
|
+
name?: string;
|
|
599
|
+
};
|
|
600
|
+
/** Generated per-chain data: the curated original-position roster. */
|
|
601
|
+
export type FrankencoinChainData = {
|
|
602
|
+
markets: FrankencoinMarketConfig[];
|
|
603
|
+
};
|
|
604
|
+
export type FrankencoinMarketsType = {
|
|
605
|
+
[lender: string]: {
|
|
606
|
+
[chainId: string]: FrankencoinChainData;
|
|
607
|
+
};
|
|
608
|
+
};
|
|
609
|
+
/** Per-chain, protocol-level (evergreen) Resupply addresses. */
|
|
610
|
+
export type ResupplyConfigChain = {
|
|
611
|
+
/** ResupplyRegistry — `getAllPairAddresses()` IS the market discovery, and
|
|
612
|
+
* `getAddress(key)` resolves every other singleton. */
|
|
613
|
+
registry: string;
|
|
614
|
+
/** reUSD — the only debt asset. */
|
|
615
|
+
reusd: string;
|
|
616
|
+
/** Utilities lens — `getPairInterestRate`, `getUnderlyingSupplyRate`,
|
|
617
|
+
* `getSwapRouteAmountOut`, `isSolventAfterLeverage`. Optional, but every
|
|
618
|
+
* rate and every leverage pre-flight is far cheaper with it. */
|
|
619
|
+
utilities?: string | null;
|
|
620
|
+
/** The built-in Curve `Swapper` — every leg for every pair is already
|
|
621
|
+
* registered on it, so a leverage route needs no aggregator at all. This
|
|
622
|
+
* is THE DEFAULT leverage swapper. */
|
|
623
|
+
curveSwapper?: string | null;
|
|
624
|
+
/** `RouterSwapper` wrapping the Enso router. Whitelisted on every pair, and
|
|
625
|
+
* it executes ARBITRARY router calldata packed into the `address[] path` —
|
|
626
|
+
* which is what makes aggregator-quoted looping possible at all. */
|
|
627
|
+
ensoSwapper?: string | null;
|
|
628
|
+
/** Same, wrapping the LI.FI Diamond. No LI.FI fetcher on our side yet. */
|
|
629
|
+
lifiSwapper?: string | null;
|
|
630
|
+
/** RedemptionHandler — the (communal) peg mechanism. Read-only for us. */
|
|
631
|
+
redemptionHandler?: string | null;
|
|
632
|
+
/** LiquidationHandler — liquidations are insurance-pool-funded, whole-position. */
|
|
633
|
+
liquidationHandler?: string | null;
|
|
634
|
+
/** InsurancePool — reUSD staked as first-loss capital. */
|
|
635
|
+
insurancePool?: string | null;
|
|
636
|
+
/** sreUSD — the savings leg (belongs to SAVINGS_REGISTRY; carried here for
|
|
637
|
+
* completeness so one config row describes the whole protocol). */
|
|
638
|
+
sreusd?: string | null;
|
|
639
|
+
/** PriceWatcher — supplies the off-peg weight the borrow rate is scaled by. */
|
|
640
|
+
priceWatcher?: string | null;
|
|
641
|
+
/** reUSD decimals (18). */
|
|
642
|
+
debtDecimals?: number;
|
|
643
|
+
/** Optional allowlist of pair addresses. When set, on-chain discovery is
|
|
644
|
+
* INTERSECTED with it; when absent (the default) every registered pair
|
|
645
|
+
* with a non-zero `borrowLimit` is published. */
|
|
646
|
+
pairAllowlist?: string[] | null;
|
|
647
|
+
};
|
|
648
|
+
export type ResupplyConfigType = {
|
|
649
|
+
[lender: string]: {
|
|
650
|
+
[chainId: string]: ResupplyConfigChain;
|
|
651
|
+
};
|
|
652
|
+
};
|
|
653
|
+
/** Per-chain LlamaLend deployment seed (hand-maintained). */
|
|
654
|
+
export type LlamaLendConfigChain = {
|
|
655
|
+
/** v1 `OneWayLendingFactory` — parallel index getters. Absent on chains
|
|
656
|
+
* that only ever got v2. */
|
|
657
|
+
oneWayFactory?: string;
|
|
658
|
+
/** v2 `LendFactory` — struct-returning `markets(i)`; `version()` = `2.0.0`. */
|
|
659
|
+
lendFactory?: string;
|
|
660
|
+
/** v2 LendConfigurator (admin surface; carried for completeness). */
|
|
661
|
+
configurator?: string;
|
|
662
|
+
/**
|
|
663
|
+
* Curve's deployed v1 LeverageZap for this chain, and the aggregator router
|
|
664
|
+
* it is hard-wired to. THIS is how leverage works here — we do not deploy a
|
|
665
|
+
* callbacker.
|
|
666
|
+
*
|
|
667
|
+
* The zap's router is an IMMUTABLE with no allowlist, and `callback_bytes`
|
|
668
|
+
* is forwarded to it verbatim, so arbitrary aggregator calldata is already
|
|
669
|
+
* permitted. Two are deployed per chain (Odos and 1inch); pick whichever
|
|
670
|
+
* aggregator is quoting, and ALWAYS check the quote's target against
|
|
671
|
+
* `*Router` before encoding — the zap forwards mismatched calldata to the
|
|
672
|
+
* wrong contract rather than rejecting it.
|
|
673
|
+
*/
|
|
674
|
+
leverageZapOdos?: string;
|
|
675
|
+
leverageZapOdosRouter?: string;
|
|
676
|
+
leverageZap1inch?: string;
|
|
677
|
+
leverageZap1inchRouter?: string;
|
|
678
|
+
/**
|
|
679
|
+
* Lowest `factoryIndex` the zaps accept — markets below it were deployed
|
|
680
|
+
* from a blueprint the zap does not recognise. 9 on Ethereum and Arbitrum,
|
|
681
|
+
* 0 on Optimism. This is a WIDER gate than delegation: 84.9% of borrows
|
|
682
|
+
* qualify, including markets that are not delegation-capable, because
|
|
683
|
+
* leverage is EOA-direct and needs no grant.
|
|
684
|
+
*/
|
|
685
|
+
leverageStartId?: number;
|
|
686
|
+
/**
|
|
687
|
+
* The crvUSD mint (CDP) factory, when the chain's zap indexes it as
|
|
688
|
+
* `factoryId = 1`. Present on Ethereum only. Recorded because the SAME zap
|
|
689
|
+
* serves those markets — see LLAMALEND_PLAN.md.
|
|
690
|
+
*/
|
|
691
|
+
crvUsdFactory?: string;
|
|
692
|
+
/** Curve data API base. Overridable so a self-hosted indexer can be
|
|
693
|
+
* swapped in; the default serves every chain and both generations from
|
|
694
|
+
* one call. */
|
|
695
|
+
apiBaseUrl?: string | null;
|
|
696
|
+
/** The chain's slug in the Curve API's `blockchainId` field
|
|
697
|
+
* (`ethereum` / `optimism` / `arbitrum` / `fraxtal` / `sonic`). */
|
|
698
|
+
apiChainSlug?: string;
|
|
699
|
+
};
|
|
700
|
+
export type LlamaLendConfigType = {
|
|
701
|
+
[lender: string]: {
|
|
702
|
+
[chainId: string]: LlamaLendConfigChain;
|
|
703
|
+
};
|
|
704
|
+
};
|
|
705
|
+
/** One LlamaLend market (= one Controller). */
|
|
706
|
+
export type LlamaLendMarketConfig = {
|
|
707
|
+
/** Controller contract — also the per-market key suffix
|
|
708
|
+
* (`LLAMALEND_<CONTROLLER_ADDR>`). */
|
|
709
|
+
controller: string;
|
|
710
|
+
/** ERC-4626 vault — the lender side. TRAP: shares run ~1000x the asset
|
|
711
|
+
* scale (`DEAD_SHARES`), so never assume 1:1. */
|
|
712
|
+
vault: string;
|
|
713
|
+
/** LLAMMA. MUST be excluded from any leverage swap route — the Controller
|
|
714
|
+
* asserts the AMM's band state is unchanged across a callback. */
|
|
715
|
+
amm: string;
|
|
716
|
+
collateralToken: string;
|
|
717
|
+
collateralDecimals: number;
|
|
718
|
+
collateralSymbol?: string;
|
|
719
|
+
borrowedToken: string;
|
|
720
|
+
borrowedDecimals: number;
|
|
721
|
+
borrowedSymbol?: string;
|
|
722
|
+
monetaryPolicy: string;
|
|
723
|
+
priceOracle?: string;
|
|
724
|
+
/** 1 = `oneway` (v1, `*_extended` leverage), 2 = `oneway-v2` (v2, callbacker
|
|
725
|
+
* folded into the base functions). Branch every encoder on this. */
|
|
726
|
+
version: 1 | 2;
|
|
727
|
+
/**
|
|
728
|
+
* Whether this Controller carries the boolean delegation grant
|
|
729
|
+
* (`approve(spender, allow)` + `_for` on the writes).
|
|
730
|
+
*
|
|
731
|
+
* PER-MARKET, not per-protocol: only newer-blueprint controllers have it
|
|
732
|
+
* (48 of 98 markets at 2026-08, and 0 of 22 on Arbitrum). Derived by the
|
|
733
|
+
* metadata generator from a runtime-bytecode selector scan, because an
|
|
734
|
+
* `eth_call` probe cannot distinguish "no such method" from a node hiccup
|
|
735
|
+
* on most public RPCs. FAIL CLOSED — treat `undefined` as `false`.
|
|
736
|
+
*/
|
|
737
|
+
supportsDelegation: boolean;
|
|
738
|
+
/** Band-geometry parameter `A` from the AMM. With `loanDiscount` and the
|
|
739
|
+
* chosen `N` this fixes the effective collateral factor. */
|
|
740
|
+
ammA: string;
|
|
741
|
+
/** WAD haircut used when sizing a loan. */
|
|
742
|
+
loanDiscount: string;
|
|
743
|
+
/** WAD hard-liquidation bonus (applies only BELOW the whole band range —
|
|
744
|
+
* inside it the position soft-liquidates with no penalty). */
|
|
745
|
+
liquidationDiscount: string;
|
|
746
|
+
/**
|
|
747
|
+
* The market's index in its factory — `controllers(i)`. Doubles as the
|
|
748
|
+
* `controller_id` the leverage zap's `callback_args` requires, so it is
|
|
749
|
+
* mandatory for any leveraged encode. The Curve API exposes it as the
|
|
750
|
+
* numeric suffix of `id` (`oneway-41`).
|
|
751
|
+
*/
|
|
752
|
+
factoryIndex: number;
|
|
753
|
+
/**
|
|
754
|
+
* Whether Curve's v1 leverage zap accepts this market
|
|
755
|
+
* (`factoryIndex >= leverageStartId`, and v1 only — v2 markets live in a
|
|
756
|
+
* factory the zap does not index). Independent of `supportsDelegation`.
|
|
757
|
+
*/
|
|
758
|
+
supportsLeverage: boolean;
|
|
759
|
+
/** Band count offered by default in the UI (Curve's own default is 10).
|
|
760
|
+
* There is no single LTV — the collateral factor is a function of N — so
|
|
761
|
+
* public data reports `collateralFactor` at this N and exposes the rest
|
|
762
|
+
* of the curve alongside. */
|
|
763
|
+
defaultBands?: number;
|
|
764
|
+
/** Monetary-policy family: `semilog` (v1) or `hyperbolic` (v2). The
|
|
765
|
+
* `hyperbolic-dynamic` variant pulls its target rate from an external
|
|
766
|
+
* rate calculator tracking a yield-bearing asset, so its curve moves
|
|
767
|
+
* under a cache — never serve it from stale params. */
|
|
768
|
+
rateModel?: 'semilog' | 'hyperbolic' | 'hyperbolic-dynamic';
|
|
769
|
+
/** Gauge (CRV emissions on the vault side), v1 only. */
|
|
770
|
+
gauge?: string | null;
|
|
771
|
+
/** v2 only: 0 DISABLES borrowing. A fresh v2 market looks live but is not. */
|
|
772
|
+
borrowCap?: string;
|
|
773
|
+
name?: string;
|
|
774
|
+
};
|
|
775
|
+
/** Generated per-chain data: the curated market roster. */
|
|
776
|
+
export type LlamaLendChainData = {
|
|
777
|
+
markets: LlamaLendMarketConfig[];
|
|
778
|
+
};
|
|
779
|
+
export type LlamaLendMarketsType = {
|
|
780
|
+
[lender: string]: {
|
|
781
|
+
[chainId: string]: LlamaLendChainData;
|
|
782
|
+
};
|
|
783
|
+
};
|
|
784
|
+
/** One USDD PSM (1:1 stable swap module; NOT a lending market). */
|
|
785
|
+
export type UsddPsmConfig = {
|
|
786
|
+
ilk: string;
|
|
787
|
+
psm: string;
|
|
788
|
+
/** Approval target for `sellGem` (the PSM's own gem adapter). */
|
|
789
|
+
gemJoin: string;
|
|
790
|
+
gem: string;
|
|
791
|
+
gemSymbol?: string;
|
|
792
|
+
/** 6 on Ethereum (USDT/USDC), 18 on BNB (BSC-USDT). */
|
|
793
|
+
gemDecimals: number;
|
|
794
|
+
};
|
|
795
|
+
/** Per-chain USDD deployment seed (hand-maintained). */
|
|
796
|
+
export type UsddConfigChain = {
|
|
797
|
+
/** Core accounting engine — ilk params + urns live here. */
|
|
798
|
+
vat: string;
|
|
799
|
+
/** Stability-fee module (`ilks(ilk).duty`, per-second ray). */
|
|
800
|
+
jug: string;
|
|
801
|
+
/** Oracle liaison (`ilks(ilk)` → pip + mat). */
|
|
802
|
+
spot: string;
|
|
803
|
+
/** Liquidation module (clip, chop, hole per ilk). */
|
|
804
|
+
dog: string;
|
|
805
|
+
/** DssCdpManager — CDP ids, urn handles, `cdpAllow` grants. */
|
|
806
|
+
cdpManager: string;
|
|
807
|
+
/** DssProxyActions — the atomic one-shot target (via DSProxy.execute). */
|
|
808
|
+
proxyActions: string;
|
|
809
|
+
/** ProxyRegistry — `proxies(user)` / `build()` for the DSProxy route. */
|
|
810
|
+
proxyRegistry: string;
|
|
811
|
+
/** The debt token. */
|
|
812
|
+
usdd: string;
|
|
813
|
+
/** DaiJoin-equivalent for USDD enter/exit. */
|
|
814
|
+
usddJoin: string;
|
|
815
|
+
/** Debt decimals (18). */
|
|
816
|
+
debtDecimals?: number;
|
|
817
|
+
/** The savings Pot (sDAI-style; savings side lives in margin-fetcher's
|
|
818
|
+
* SAVINGS_REGISTRY, carried here for completeness). */
|
|
819
|
+
pot?: string;
|
|
820
|
+
susdd?: string;
|
|
821
|
+
/** 1:1 stable PSMs (swap modules — not lending markets). */
|
|
822
|
+
psms?: UsddPsmConfig[];
|
|
823
|
+
};
|
|
824
|
+
export type UsddConfigType = {
|
|
825
|
+
[lender: string]: {
|
|
826
|
+
[chainId: string]: UsddConfigChain;
|
|
827
|
+
};
|
|
828
|
+
};
|
|
829
|
+
/** One USDD market (= one collateral ilk). */
|
|
830
|
+
export type UsddMarketConfig = {
|
|
831
|
+
/** Ilk string (e.g. `WBTC-A`) — also the per-market key suffix
|
|
832
|
+
* (`USDD_<chainId>_<ILK>`). bytes32-encode via stringToHex(size 32). */
|
|
833
|
+
ilk: string;
|
|
834
|
+
/** Collateral adapter — approval target for deposits. */
|
|
835
|
+
gemJoin: string;
|
|
836
|
+
collToken: string;
|
|
837
|
+
collDecimals: number;
|
|
838
|
+
collSymbol?: string;
|
|
839
|
+
/** Price feed behind the Spot (OSM/Median). */
|
|
840
|
+
pip?: string;
|
|
841
|
+
/** Liquidation ratio, ray (Spot.mat). */
|
|
842
|
+
mat: string;
|
|
843
|
+
/** Per-second stability fee, ray (Jug.duty). */
|
|
844
|
+
duty: string;
|
|
845
|
+
/** Dutch-auction contract (Dog.clip). */
|
|
846
|
+
clip?: string;
|
|
847
|
+
/** Liquidation penalty, wad (Dog.chop; 1e18 = none). */
|
|
848
|
+
chop?: string;
|
|
849
|
+
/** Debt ceiling, rad (Vat.ilks.line). */
|
|
850
|
+
line: string;
|
|
851
|
+
/** Per-CDP debt floor, rad (Vat.ilks.dust). */
|
|
852
|
+
dust: string;
|
|
853
|
+
name?: string;
|
|
854
|
+
};
|
|
855
|
+
/** Generated per-chain data: verified ilk list + the cdpi trigger snapshot. */
|
|
856
|
+
export type UsddChainData = {
|
|
857
|
+
markets: UsddMarketConfig[];
|
|
858
|
+
/** `cdpManager.cdpi()` at generation time — the USDD_PLAN.md
|
|
859
|
+
* re-evaluation trigger (0 = no CDP ever opened on this chain). */
|
|
860
|
+
cdpi?: string;
|
|
861
|
+
};
|
|
862
|
+
export type UsddMarketsType = {
|
|
863
|
+
[lender: string]: {
|
|
864
|
+
[chainId: string]: UsddChainData;
|
|
865
|
+
};
|
|
866
|
+
};
|
|
538
867
|
type OracleMap = {
|
|
539
868
|
[lender: string]: {
|
|
540
869
|
[chainId: string]: string;
|
|
@@ -949,7 +1278,7 @@ export type AaveV4PeripheralsType = {
|
|
|
949
1278
|
[chainId: string]: AaveV4ChainPeripherals;
|
|
950
1279
|
};
|
|
951
1280
|
/** Override datas used in the SDK - works across all module instances */
|
|
952
|
-
export declare function initializeLenderData({ aaveTokensOverride, aavePoolsOverride, aaveOraclesOverride, compoundV2OraclesOverride, compoundV3OraclesDataOverride, compoundV3PoolsOverride, compoundV3BaseDataOverride, morphoPoolsOverride, compoundV2TokensOverride, compoundV2TokenArrayOverride, compoundV2PoolsOverride, initConfigOverride, aaveReservesOverride, compoundV3ReservesOverride, compoundV2ReservesOverride, morphoOraclesOverride, morphoTypeOraclesOverride, morphoTypeMarketsOverride, morphoTypeVaultsOverride, aaveOraclesConfigOverride, compoundV2OraclesConfigOverride, aaveWethGatewayOverride, morphoBundler3Override, listaNativeProviderOverride, midnightConfigOverride, midnightMarketsOverride, termConfigOverride, termMarketsOverride, exactlyConfigOverride, exactlyMarketsOverride, tellerConfigOverride, tellerPoolsOverride, liquityConfigOverride, liquityMarketsOverride, riverConfigOverride, riverMarketsOverride, inverseConfigOverride, termMaxConfigOverride, inverseMarketsOverride, compoundV3BulkerOverride, eulerConfigsOverride, eulerVaultsOverride, dolomiteConfigsOverride, dolomiteEmodeOverride, aaveV4SpokesOverride, aaveV4OraclesOverride, aaveV4PeripheralsOverride, siloMarketsOverride, siloPeripheralsOverride, siloMarketsV3Override, siloPeripheralsV3Override, fluidResolversOverride, fluidVaultsOverride, gearboxResolversOverride, }: {
|
|
1281
|
+
export declare function initializeLenderData({ aaveTokensOverride, aavePoolsOverride, aaveOraclesOverride, compoundV2OraclesOverride, compoundV3OraclesDataOverride, compoundV3PoolsOverride, compoundV3BaseDataOverride, morphoPoolsOverride, compoundV2TokensOverride, compoundV2TokenArrayOverride, compoundV2PoolsOverride, initConfigOverride, aaveReservesOverride, compoundV3ReservesOverride, compoundV2ReservesOverride, morphoOraclesOverride, morphoTypeOraclesOverride, morphoTypeMarketsOverride, morphoTypeVaultsOverride, aaveOraclesConfigOverride, compoundV2OraclesConfigOverride, aaveWethGatewayOverride, morphoBundler3Override, listaNativeProviderOverride, midnightConfigOverride, midnightMarketsOverride, termConfigOverride, termMarketsOverride, exactlyConfigOverride, exactlyMarketsOverride, tellerConfigOverride, tellerPoolsOverride, liquityConfigOverride, liquityMarketsOverride, riverConfigOverride, riverMarketsOverride, inverseConfigOverride, termMaxConfigOverride, inverseMarketsOverride, usddConfigOverride, usddMarketsOverride, frankencoinConfigOverride, frankencoinMarketsOverride, llamaLendConfigOverride, llamaLendMarketsOverride, resupplyConfigOverride, compoundV3BulkerOverride, eulerConfigsOverride, eulerVaultsOverride, dolomiteConfigsOverride, dolomiteEmodeOverride, aaveV4SpokesOverride, aaveV4OraclesOverride, aaveV4PeripheralsOverride, siloMarketsOverride, siloPeripheralsOverride, siloMarketsV3Override, siloPeripheralsV3Override, fluidResolversOverride, fluidVaultsOverride, gearboxResolversOverride, }: {
|
|
953
1282
|
aaveTokensOverride?: AaveTokensType;
|
|
954
1283
|
aavePoolsOverride?: AavePoolsType;
|
|
955
1284
|
aaveOraclesOverride?: OracleMap;
|
|
@@ -989,6 +1318,13 @@ export declare function initializeLenderData({ aaveTokensOverride, aavePoolsOver
|
|
|
989
1318
|
inverseConfigOverride?: InverseConfigType;
|
|
990
1319
|
termMaxConfigOverride?: TermMaxConfigType;
|
|
991
1320
|
inverseMarketsOverride?: InverseMarketsType;
|
|
1321
|
+
usddConfigOverride?: UsddConfigType;
|
|
1322
|
+
usddMarketsOverride?: UsddMarketsType;
|
|
1323
|
+
frankencoinConfigOverride?: FrankencoinConfigType;
|
|
1324
|
+
frankencoinMarketsOverride?: FrankencoinMarketsType;
|
|
1325
|
+
llamaLendConfigOverride?: LlamaLendConfigType;
|
|
1326
|
+
llamaLendMarketsOverride?: LlamaLendMarketsType;
|
|
1327
|
+
resupplyConfigOverride?: ResupplyConfigType;
|
|
992
1328
|
compoundV3BulkerOverride?: CompoundV3BulkerType;
|
|
993
1329
|
eulerConfigsOverride?: EulerConfigsType;
|
|
994
1330
|
eulerVaultsOverride?: EulerVaultsType;
|
|
@@ -1113,6 +1449,115 @@ export declare const riverMarketByIndex: (lender: string, chainId: string | numb
|
|
|
1113
1449
|
export declare const riverLendersByChain: (chainId: string | number) => string[];
|
|
1114
1450
|
/** All Inverse lender keys with config on a chain (drives getLendersForChain). */
|
|
1115
1451
|
export declare const inverseLendersByChain: (chainId: string | number) => string[];
|
|
1452
|
+
export declare const llamaLendConfig: () => LlamaLendConfigType;
|
|
1453
|
+
/** Deployment seed for one LlamaLend lender on a chain (undefined if unloaded). */
|
|
1454
|
+
export declare const llamaLendConfigFor: (lender: string, chainId: string | number) => LlamaLendConfigChain | undefined;
|
|
1455
|
+
export declare const llamaLendMarkets: () => LlamaLendMarketsType;
|
|
1456
|
+
/** Generated chain data (curated market roster; undefined if unloaded). */
|
|
1457
|
+
export declare const llamaLendChainData: (lender: string, chainId: string | number) => LlamaLendChainData | undefined;
|
|
1458
|
+
/** Find one LlamaLend market by its Controller address. */
|
|
1459
|
+
export declare const llamaLendMarketByController: (lender: string, chainId: string | number, controller: string) => LlamaLendMarketConfig | undefined;
|
|
1460
|
+
/**
|
|
1461
|
+
* Find one LlamaLend market by its ERC-4626 VAULT address (the lender side).
|
|
1462
|
+
*
|
|
1463
|
+
* The roster is keyed on the Controller because that is the borrow surface,
|
|
1464
|
+
* but other protocols reference LlamaLend by its vault — Resupply, for
|
|
1465
|
+
* instance, custodies the vault SHARE as collateral, so the vault is the only
|
|
1466
|
+
* handle it exposes. This is the join for "which LlamaLend market does that
|
|
1467
|
+
* wrapper actually sit on top of".
|
|
1468
|
+
*/
|
|
1469
|
+
export declare const llamaLendMarketByVault: (lender: string, chainId: string | number, vault: string) => LlamaLendMarketConfig | undefined;
|
|
1470
|
+
/**
|
|
1471
|
+
* All LlamaLend lender keys with config on a chain (drives getLendersForChain).
|
|
1472
|
+
* Gated on a factory being present — a chain entry with neither factory is a
|
|
1473
|
+
* placeholder, not a live deployment.
|
|
1474
|
+
*/
|
|
1475
|
+
export declare const llamaLendLendersByChain: (chainId: string | number) => string[];
|
|
1476
|
+
/**
|
|
1477
|
+
* Whether a LlamaLend market accepts on-behalf calls (`_for` + the boolean
|
|
1478
|
+
* `approve` grant). FAILS CLOSED: an unknown market, an unloaded roster or an
|
|
1479
|
+
* explicit `false` all return `false`, because calling `approve` on an older
|
|
1480
|
+
* controller reverts with no usable reason string.
|
|
1481
|
+
*/
|
|
1482
|
+
export declare const llamaLendSupportsDelegation: (lender: string, chainId: string | number, controller: string) => boolean;
|
|
1483
|
+
/**
|
|
1484
|
+
* Resolve the leverage zap + its hard-wired router for a chain and aggregator.
|
|
1485
|
+
* `undefined` means leverage is unavailable there for that aggregator, which
|
|
1486
|
+
* callers must report rather than silently falling back — there is no Composer
|
|
1487
|
+
* route that can be funded.
|
|
1488
|
+
*/
|
|
1489
|
+
export declare const llamaLendLeverageZap: (lender: string, chainId: string | number, aggregator: "odos" | "1inch") => {
|
|
1490
|
+
zap: string;
|
|
1491
|
+
router: string;
|
|
1492
|
+
} | undefined;
|
|
1493
|
+
/**
|
|
1494
|
+
* Whether a market can be leveraged at all: it must be v1, at or above the
|
|
1495
|
+
* chain's `leverageStartId`, and the chain must have a zap deployed. Fails
|
|
1496
|
+
* closed on an unknown market.
|
|
1497
|
+
*/
|
|
1498
|
+
export declare const llamaLendSupportsLeverage: (lender: string, chainId: string | number, controller: string) => boolean;
|
|
1499
|
+
/**
|
|
1500
|
+
* Curve data API base. Read through the getter (not a module constant) for the
|
|
1501
|
+
* same reason as TermMax/Midnight: the per-request metadata re-init rewrites
|
|
1502
|
+
* `llamaLendConfig`, so a captured value goes stale.
|
|
1503
|
+
*/
|
|
1504
|
+
export declare const llamaLendApiBaseUrl: (lender: string, chainId: string | number) => string;
|
|
1505
|
+
export declare const usddConfig: () => UsddConfigType;
|
|
1506
|
+
/** Deployment seed for one USDD lender on a chain (undefined if unloaded). */
|
|
1507
|
+
export declare const usddConfigFor: (lender: string, chainId: string | number) => UsddConfigChain | undefined;
|
|
1508
|
+
export declare const usddMarkets: () => UsddMarketsType;
|
|
1509
|
+
/** Generated chain data (verified ilk list + cdpi snapshot; undefined if unloaded). */
|
|
1510
|
+
export declare const usddChainData: (lender: string, chainId: string | number) => UsddChainData | undefined;
|
|
1511
|
+
/** Look up one USDD market by its ilk string (the per-market key suffix). */
|
|
1512
|
+
export declare const usddMarketByIlk: (lender: string, chainId: string | number, ilk: string) => UsddMarketConfig | undefined;
|
|
1513
|
+
/** All USDD lender keys with config on a chain (drives getLendersForChain).
|
|
1514
|
+
* NB: config presence (`vat`) — not market presence — gates the fan-out, so
|
|
1515
|
+
* the (empty-roster) provider still runs and reports zero markets rather
|
|
1516
|
+
* than being invisible; the per-ilk keys only exist once metadata fills. */
|
|
1517
|
+
export declare const usddLendersByChain: (chainId: string | number) => string[];
|
|
1518
|
+
export declare const frankencoinConfig: () => FrankencoinConfigType;
|
|
1519
|
+
/** Deployment seed for one Frankencoin lender on a chain. */
|
|
1520
|
+
export declare const frankencoinConfigFor: (lender: string, chainId: string | number) => FrankencoinConfigChain | undefined;
|
|
1521
|
+
export declare const frankencoinMarkets: () => FrankencoinMarketsType;
|
|
1522
|
+
/** Generated chain data (curated original-position roster). */
|
|
1523
|
+
export declare const frankencoinChainData: (lender: string, chainId: string | number) => FrankencoinChainData | undefined;
|
|
1524
|
+
/** Look up one market by its ORIGINAL position address (the key suffix). */
|
|
1525
|
+
export declare const frankencoinMarketByPosition: (lender: string, chainId: string | number, position: string) => FrankencoinMarketConfig | undefined;
|
|
1526
|
+
/** All Frankencoin lender keys with config on a chain (drives
|
|
1527
|
+
* getLendersForChain). Gated on the MintingHub, the one address every
|
|
1528
|
+
* flow needs. */
|
|
1529
|
+
export declare const frankencoinLendersByChain: (chainId: string | number) => string[];
|
|
1530
|
+
/**
|
|
1531
|
+
* Built-in Ethereum deployment seed for Resupply.
|
|
1532
|
+
*
|
|
1533
|
+
* Every other lender's config comes exclusively from `lender-metadata`, and a
|
|
1534
|
+
* published `config/resupply.json` still WINS over this (see
|
|
1535
|
+
* `resupplyConfigFor`). The fallback exists because these are immutable
|
|
1536
|
+
* protocol singletons — `RouterSwapper` even hardcodes the registry address in
|
|
1537
|
+
* its own bytecode — and because the whole market roster is discovered from
|
|
1538
|
+
* `registry` at runtime. So the integration is live with nothing to publish,
|
|
1539
|
+
* and publishing later is a pure override.
|
|
1540
|
+
*
|
|
1541
|
+
* Verified on-chain 2026-08-04 (block ~25,683,400). Deliberately NOT taken
|
|
1542
|
+
* from the docs' `faq/contract-addresses` page or the repo's
|
|
1543
|
+
* `deployment/contracts.json`: both are stale and list a REVOKED Odos swapper.
|
|
1544
|
+
* Resolved via `Registry.getAddress(key)` over `getAllKeys()`.
|
|
1545
|
+
*/
|
|
1546
|
+
export declare const RESUPPLY_ETHEREUM_CONFIG: ResupplyConfigChain;
|
|
1547
|
+
export declare const resupplyConfig: () => ResupplyConfigType;
|
|
1548
|
+
/**
|
|
1549
|
+
* Deployment seed for one Resupply lender on a chain. Published metadata wins;
|
|
1550
|
+
* the built-in Ethereum row is the fallback so the provider works before
|
|
1551
|
+
* `config/resupply.json` exists.
|
|
1552
|
+
*/
|
|
1553
|
+
export declare const resupplyConfigFor: (lender: string, chainId: string | number) => ResupplyConfigChain | undefined;
|
|
1554
|
+
/**
|
|
1555
|
+
* All Resupply lender keys with config on a chain (drives getLendersForChain).
|
|
1556
|
+
* Gated on the REGISTRY — the one address the whole provider is bootstrapped
|
|
1557
|
+
* from. Union of published metadata and the built-in row, so the fan-out
|
|
1558
|
+
* happens with or without a publish.
|
|
1559
|
+
*/
|
|
1560
|
+
export declare const resupplyLendersByChain: (chainId: string | number) => string[];
|
|
1116
1561
|
export declare const compoundV3Bulker: () => CompoundV3BulkerType;
|
|
1117
1562
|
export declare const eulerConfigs: () => EulerConfigsType;
|
|
1118
1563
|
export declare const eulerVaults: () => EulerVaultsType;
|
|
@@ -1348,4 +1793,28 @@ export declare function termMaxLenderKey(market: string): string;
|
|
|
1348
1793
|
export declare function parseTermMaxLenderKey(lenderKey: string): {
|
|
1349
1794
|
marketAddrLower: string;
|
|
1350
1795
|
} | undefined;
|
|
1796
|
+
/**
|
|
1797
|
+
* Per-market lender key for one LlamaLend market, keyed by its CONTROLLER (the
|
|
1798
|
+
* borrow-side contract), not the vault — the Controller is what every write
|
|
1799
|
+
* and every user read targets.
|
|
1800
|
+
*
|
|
1801
|
+
* Format: `LLAMALEND_${controllerAddr.slice(2).toUpperCase()}`
|
|
1802
|
+
*
|
|
1803
|
+
* Both generations share this key space deliberately: they are one brand to the
|
|
1804
|
+
* user, and the Curve API returns them in one list. The `version` field on the
|
|
1805
|
+
* market row is what encoders branch on. chainId is intentionally NOT in the
|
|
1806
|
+
* token (chain scoping happens at the marketUid level), matching every other
|
|
1807
|
+
* per-market key in this file.
|
|
1808
|
+
*
|
|
1809
|
+
* `isLlamaLend()` works on this because it matches `startsWith('LLAMALEND')`.
|
|
1810
|
+
*/
|
|
1811
|
+
export declare function llamaLendLenderKey(controller: string): string;
|
|
1812
|
+
/**
|
|
1813
|
+
* Inverse of `llamaLendLenderKey`: given a per-market lender key, return
|
|
1814
|
+
* `{ controllerAddrLower }`. Returns `undefined` if the key isn't a per-market
|
|
1815
|
+
* LlamaLend key (e.g. someone passed the bare prefix `LLAMALEND`).
|
|
1816
|
+
*/
|
|
1817
|
+
export declare function parseLlamaLendLenderKey(lenderKey: string): {
|
|
1818
|
+
controllerAddrLower: string;
|
|
1819
|
+
} | undefined;
|
|
1351
1820
|
export {};
|