@defisaver/positions-sdk 2.1.150-cirbtc-dev → 2.1.151-midnight-dev

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.
Files changed (38) hide show
  1. package/cjs/claiming/compV3.js +0 -1
  2. package/cjs/config/contracts.d.ts +4 -0
  3. package/cjs/config/contracts.js +4 -0
  4. package/cjs/helpers/morphoMidnightHelpers/tenor.d.ts +6 -2
  5. package/cjs/helpers/morphoMidnightHelpers/tenor.js +5 -1
  6. package/cjs/markets/index.d.ts +1 -1
  7. package/cjs/markets/index.js +2 -1
  8. package/cjs/markets/morphoBlue/index.js +122 -122
  9. package/cjs/markets/morphoMidnight/index.d.ts +44 -10
  10. package/cjs/markets/morphoMidnight/index.js +380 -59
  11. package/cjs/morphoMidnight/index.js +11 -1
  12. package/cjs/portfolio/index.js +3 -27
  13. package/cjs/types/morphoMidnight.d.ts +35 -4
  14. package/cjs/types/morphoMidnight.js +23 -0
  15. package/esm/claiming/compV3.js +0 -1
  16. package/esm/config/contracts.d.ts +4 -0
  17. package/esm/config/contracts.js +4 -0
  18. package/esm/helpers/morphoMidnightHelpers/tenor.d.ts +6 -2
  19. package/esm/helpers/morphoMidnightHelpers/tenor.js +6 -2
  20. package/esm/markets/index.d.ts +1 -1
  21. package/esm/markets/index.js +1 -1
  22. package/esm/markets/morphoBlue/index.js +122 -122
  23. package/esm/markets/morphoMidnight/index.d.ts +44 -10
  24. package/esm/markets/morphoMidnight/index.js +356 -58
  25. package/esm/morphoMidnight/index.js +11 -1
  26. package/esm/portfolio/index.js +4 -28
  27. package/esm/types/morphoMidnight.d.ts +35 -4
  28. package/esm/types/morphoMidnight.js +23 -0
  29. package/package.json +1 -1
  30. package/src/claiming/compV3.ts +0 -1
  31. package/src/config/contracts.ts +4 -0
  32. package/src/helpers/morphoMidnightHelpers/tenor.ts +6 -2
  33. package/src/markets/index.ts +1 -0
  34. package/src/markets/morphoBlue/index.ts +122 -122
  35. package/src/markets/morphoMidnight/index.ts +446 -60
  36. package/src/morphoMidnight/index.ts +8 -1
  37. package/src/portfolio/index.ts +3 -27
  38. package/src/types/morphoMidnight.ts +37 -3
@@ -1,21 +1,39 @@
1
1
  import { MorphoMidnightVersions, NetworkNumber, } from '../../types';
2
2
  import { ZERO_ADDRESS } from '../../constants';
3
3
  /**
4
- * Morpho Midnight core contract on Base. Every Midnight market trades against this one, whoever curates
5
- * its order book — it is part of the market struct the id is hashed from, and it is what offer tuples
6
- * encode for `Midnight.take`.
4
+ * Morpho Midnight core contract, one per chain. Every Midnight market on a chain trades against its core,
5
+ * whoever curates the order book — it is part of the market struct the id is hashed from, and it is what
6
+ * offer tuples encode for `Midnight.take`. Listed at
7
+ * https://docs.morpho.org/get-started/resources/addresses/.
7
8
  */
8
9
  export const MIDNIGHT_BASE = '0xAdedD8ab6dE832766Fedf0FaC4992E5C4D3EA18A';
10
+ export const MIDNIGHT_ETH = '0x471686c42792F93528B000beF54bC10E3aa2045f';
11
+ export const midnightCoreAddress = (network) => (network === NetworkNumber.Eth ? MIDNIGHT_ETH : MIDNIGHT_BASE);
9
12
  const USDC_BASE = '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913';
10
13
  const WETH_BASE = '0x4200000000000000000000000000000000000006';
11
14
  const CBBTC_BASE = '0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf';
12
15
  const CBETH_BASE = '0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22';
16
+ const USDC_ETH = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48';
17
+ const WETH_ETH = '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2';
18
+ const WBTC_ETH = '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599';
19
+ const CBBTC_ETH = '0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf';
20
+ const STRUSD_ETH = '0x280839980a7eD0D7717F64125fE241012E5F5815';
21
+ const WSRUSD_ETH = '0xd3fD63209FA2D55B07A0f6db36C2f43900be3094';
22
+ const USD3_ETH = '0x056B269Eb1f75477a8666ae8C7fE01b64dD55eCc';
23
+ const REUSD_ETH = '0x5086bf358635B81D8C47C66d1C8b9E567Db70c72';
24
+ const SIUSD_ETH = '0xDBDC1Ef57537E34680B898E1FEBD3D68c7389bCB';
13
25
  // Tenor's ERC-4626 collateral vaults, one per pair and shared by that pair's whole maturity ladder. Each
14
26
  // is a collateral of its markets on-chain without being an asset the app deals in — see the note above
15
27
  // the Tenor markets below, and https://www.docs.tenor.finance/technical-docs/addresses/#vaults.
16
28
  const TENOR_CBBTC_USDC_VAULT_BASE = '0xf6a70085b7f79FA76B04EbF7A2D7D87C3c5c04BC';
17
29
  const TENOR_WETH_USDC_VAULT_BASE = '0xe690a58EF52854513462745237F6A213a0d54dF1';
18
30
  const TENOR_CBETH_WETH_VAULT_BASE = '0xFa750DD0099eAdB72d401244De73ce7B89edf90F';
31
+ const TENOR_WETH_USDC_VAULT_ETH = '0x7579a75658A7A0b7d277296dFaEecF4018746091';
32
+ const TENOR_STRUSD_USDC_VAULT_ETH = '0xef6955d886fce26D87753dA45192eA50F59dc91c';
33
+ const TENOR_WSRUSD_USDC_VAULT_ETH = '0x09409fa71bCfd3f433571dbeec0C0A9C19B0d30E';
34
+ const TENOR_USD3_USDC_VAULT_ETH = '0x26C46ACb48B46cC99ccB3cf6C365BdaFa2556E80';
35
+ const TENOR_REUSD_USDC_VAULT_ETH = '0xe3891d8cA7E00Bc42157D9bb5797C88D9159AAC6';
36
+ const TENOR_SIUSD_USDC_VAULT_ETH = '0x226ecbf4755a5F81ed721E18c3fDA11f004Ea9e0';
19
37
  // Sourced from the official listing at https://markets.morpho.org/fixed/base
20
38
  // BASE — USDC/cbBTC, 86% LLTV, monthly maturity ladder
21
39
  export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20260731 = (networkId = NetworkNumber.Base) => ({
@@ -180,19 +198,20 @@ export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20270129 = (networkId = NetworkNumbe
180
198
  // = Tenor's `fixedMarketIdentifier`; they come back `listed: false`, meaning Tenor — not Morpho — serves
181
199
  // the book.
182
200
  //
183
- // Every market below is verified against `MidnightView.toMarket(marketId)` on Base: core address,
184
- // maturity, rcfThreshold, loan token, gates and collaterals all match. On-chain each market carries **two**
185
- // collaterals the pair's own token at index 0, and Tenor's ERC-4626 vault at index 1 (98% LLTV; the
186
- // `metadata.vault` of the parent tenor market, listed at
187
- // https://www.docs.tenor.finance/technical-docs/addresses/#vaults). The vault is not an asset the app
188
- // deals in, so it is split out into `hiddenCollaterals` instead of `collaterals`: everything that renders
189
- // or prices a position sees a single-collateral market, and because the vault stays the *suffix* of the
190
- // set, the SDK's positional `prices[i]` / `collateral[i]` reads stay aligned with `collaterals`.
201
+ // Every market below is verified by replaying `MidnightView.toId` over the struct these fields build:
202
+ // core address, maturity, rcfThreshold, loan token, gates and the whole ordered collateral set have to
203
+ // match or the hash does not come back as the recorded `marketId`. On-chain each market carries **two**
204
+ // collaterals the pair's own token, and Tenor's ERC-4626 vault at 98% LLTV (the `metadata.vault` of the
205
+ // parent tenor market, listed at https://www.docs.tenor.finance/technical-docs/addresses/#vaults). The
206
+ // vault is not an asset the app deals in, so it carries `hidden: true`: everything that renders or prices
207
+ // a position skips it and sees a single-collateral market.
191
208
  //
192
- // It is only split out, never dropped: the market id is the hash of the full struct, so a `Market` handed
193
- // to the core has to be `[...collaterals, ...hiddenCollaterals]` or the call addresses a market of its own
194
- // making. The take path builds no structoffer tuples carry the market's full collateral set straight
195
- // from the router's offer JSON.
209
+ // It is only flagged, never dropped or reordered: the market id is the hash of the full struct, so a
210
+ // `Market` handed to the core has to carry the complete set in the chain's own order or the call
211
+ // addresses a market of its own makingwhich does not revert, because markets are permissionless. On
212
+ // Base the vault happens to come last every time; on mainnet the order varies per market, which is why
213
+ // the flag lives on the entry rather than in a second list. The take path builds no struct — offer
214
+ // tuples carry the market's full collateral set straight from the router's offer JSON.
196
215
  export const MORPHO_MIDNIGHT_TENOR_CBBTC_USDC_860_20260827 = (networkId = NetworkNumber.Base) => ({
197
216
  chainIds: [NetworkNumber.Base],
198
217
  label: 'Tenor cbBTC/USDC',
@@ -206,12 +225,12 @@ export const MORPHO_MIDNIGHT_TENOR_CBBTC_USDC_860_20260827 = (networkId = Networ
206
225
  lltv: 0.86,
207
226
  liquidationCursor: '300000000000000000',
208
227
  oracle: '0x663BECd10daE6C4A3Dcd89F1d76c1174199639B9',
209
- }],
210
- hiddenCollaterals: [{
228
+ }, {
211
229
  token: TENOR_CBBTC_USDC_VAULT_BASE,
212
230
  lltv: 0.98,
213
231
  liquidationCursor: '300000000000000000',
214
232
  oracle: '0x4a24e4bf269cE26aAD2dF00437e7730d25FCdE26',
233
+ hidden: true,
215
234
  }],
216
235
  maturity: 1787788800, // 2026-08-27T00:00:00Z
217
236
  rcfThreshold: '3000000000',
@@ -234,12 +253,12 @@ export const MORPHO_MIDNIGHT_TENOR_CBBTC_USDC_860_20260924 = (networkId = Networ
234
253
  lltv: 0.86,
235
254
  liquidationCursor: '300000000000000000',
236
255
  oracle: '0x663BECd10daE6C4A3Dcd89F1d76c1174199639B9',
237
- }],
238
- hiddenCollaterals: [{
256
+ }, {
239
257
  token: TENOR_CBBTC_USDC_VAULT_BASE,
240
258
  lltv: 0.98,
241
259
  liquidationCursor: '300000000000000000',
242
260
  oracle: '0x4a24e4bf269cE26aAD2dF00437e7730d25FCdE26',
261
+ hidden: true,
243
262
  }],
244
263
  maturity: 1790208000, // 2026-09-24T00:00:00Z
245
264
  rcfThreshold: '3000000000',
@@ -262,12 +281,12 @@ export const MORPHO_MIDNIGHT_TENOR_CBBTC_USDC_860_20261022 = (networkId = Networ
262
281
  lltv: 0.86,
263
282
  liquidationCursor: '300000000000000000',
264
283
  oracle: '0x663BECd10daE6C4A3Dcd89F1d76c1174199639B9',
265
- }],
266
- hiddenCollaterals: [{
284
+ }, {
267
285
  token: TENOR_CBBTC_USDC_VAULT_BASE,
268
286
  lltv: 0.98,
269
287
  liquidationCursor: '300000000000000000',
270
288
  oracle: '0x4a24e4bf269cE26aAD2dF00437e7730d25FCdE26',
289
+ hidden: true,
271
290
  }],
272
291
  maturity: 1792627200, // 2026-10-22T00:00:00Z
273
292
  rcfThreshold: '3000000000',
@@ -290,12 +309,12 @@ export const MORPHO_MIDNIGHT_TENOR_CBBTC_USDC_860_20261119 = (networkId = Networ
290
309
  lltv: 0.86,
291
310
  liquidationCursor: '300000000000000000',
292
311
  oracle: '0x663BECd10daE6C4A3Dcd89F1d76c1174199639B9',
293
- }],
294
- hiddenCollaterals: [{
312
+ }, {
295
313
  token: TENOR_CBBTC_USDC_VAULT_BASE,
296
314
  lltv: 0.98,
297
315
  liquidationCursor: '300000000000000000',
298
316
  oracle: '0x4a24e4bf269cE26aAD2dF00437e7730d25FCdE26',
317
+ hidden: true,
299
318
  }],
300
319
  maturity: 1795046400, // 2026-11-19T00:00:00Z
301
320
  rcfThreshold: '3000000000',
@@ -318,12 +337,12 @@ export const MORPHO_MIDNIGHT_TENOR_CBBTC_USDC_860_20261217 = (networkId = Networ
318
337
  lltv: 0.86,
319
338
  liquidationCursor: '300000000000000000',
320
339
  oracle: '0x663BECd10daE6C4A3Dcd89F1d76c1174199639B9',
321
- }],
322
- hiddenCollaterals: [{
340
+ }, {
323
341
  token: TENOR_CBBTC_USDC_VAULT_BASE,
324
342
  lltv: 0.98,
325
343
  liquidationCursor: '300000000000000000',
326
344
  oracle: '0x4a24e4bf269cE26aAD2dF00437e7730d25FCdE26',
345
+ hidden: true,
327
346
  }],
328
347
  maturity: 1797465600, // 2026-12-17T00:00:00Z
329
348
  rcfThreshold: '3000000000',
@@ -346,12 +365,12 @@ export const MORPHO_MIDNIGHT_TENOR_WETH_USDC_860_20260827 = (networkId = Network
346
365
  lltv: 0.86,
347
366
  liquidationCursor: '300000000000000000',
348
367
  oracle: '0xFEa2D58cEfCb9fcb597723c6bAE66fFE4193aFE4',
349
- }],
350
- hiddenCollaterals: [{
368
+ }, {
351
369
  token: TENOR_WETH_USDC_VAULT_BASE,
352
370
  lltv: 0.98,
353
371
  liquidationCursor: '300000000000000000',
354
372
  oracle: '0x784519B1b59A1e1498f077066bB9336672bcc3EE',
373
+ hidden: true,
355
374
  }],
356
375
  maturity: 1787788800,
357
376
  rcfThreshold: '3000000000',
@@ -374,12 +393,12 @@ export const MORPHO_MIDNIGHT_TENOR_WETH_USDC_860_20260924 = (networkId = Network
374
393
  lltv: 0.86,
375
394
  liquidationCursor: '300000000000000000',
376
395
  oracle: '0xFEa2D58cEfCb9fcb597723c6bAE66fFE4193aFE4',
377
- }],
378
- hiddenCollaterals: [{
396
+ }, {
379
397
  token: TENOR_WETH_USDC_VAULT_BASE,
380
398
  lltv: 0.98,
381
399
  liquidationCursor: '300000000000000000',
382
400
  oracle: '0x784519B1b59A1e1498f077066bB9336672bcc3EE',
401
+ hidden: true,
383
402
  }],
384
403
  maturity: 1790208000,
385
404
  rcfThreshold: '3000000000',
@@ -402,12 +421,12 @@ export const MORPHO_MIDNIGHT_TENOR_WETH_USDC_860_20261022 = (networkId = Network
402
421
  lltv: 0.86,
403
422
  liquidationCursor: '300000000000000000',
404
423
  oracle: '0xFEa2D58cEfCb9fcb597723c6bAE66fFE4193aFE4',
405
- }],
406
- hiddenCollaterals: [{
424
+ }, {
407
425
  token: TENOR_WETH_USDC_VAULT_BASE,
408
426
  lltv: 0.98,
409
427
  liquidationCursor: '300000000000000000',
410
428
  oracle: '0x784519B1b59A1e1498f077066bB9336672bcc3EE',
429
+ hidden: true,
411
430
  }],
412
431
  maturity: 1792627200,
413
432
  rcfThreshold: '3000000000',
@@ -430,12 +449,12 @@ export const MORPHO_MIDNIGHT_TENOR_WETH_USDC_860_20261119 = (networkId = Network
430
449
  lltv: 0.86,
431
450
  liquidationCursor: '300000000000000000',
432
451
  oracle: '0xFEa2D58cEfCb9fcb597723c6bAE66fFE4193aFE4',
433
- }],
434
- hiddenCollaterals: [{
452
+ }, {
435
453
  token: TENOR_WETH_USDC_VAULT_BASE,
436
454
  lltv: 0.98,
437
455
  liquidationCursor: '300000000000000000',
438
456
  oracle: '0x784519B1b59A1e1498f077066bB9336672bcc3EE',
457
+ hidden: true,
439
458
  }],
440
459
  maturity: 1795046400,
441
460
  rcfThreshold: '3000000000',
@@ -458,12 +477,12 @@ export const MORPHO_MIDNIGHT_TENOR_WETH_USDC_860_20261217 = (networkId = Network
458
477
  lltv: 0.86,
459
478
  liquidationCursor: '300000000000000000',
460
479
  oracle: '0xFEa2D58cEfCb9fcb597723c6bAE66fFE4193aFE4',
461
- }],
462
- hiddenCollaterals: [{
480
+ }, {
463
481
  token: TENOR_WETH_USDC_VAULT_BASE,
464
482
  lltv: 0.98,
465
483
  liquidationCursor: '300000000000000000',
466
484
  oracle: '0x784519B1b59A1e1498f077066bB9336672bcc3EE',
485
+ hidden: true,
467
486
  }],
468
487
  maturity: 1797465600,
469
488
  rcfThreshold: '3000000000',
@@ -486,12 +505,12 @@ export const MORPHO_MIDNIGHT_TENOR_CBETH_WETH_945_20260827 = (networkId = Networ
486
505
  lltv: 0.945,
487
506
  liquidationCursor: '300000000000000000',
488
507
  oracle: '0xB03855Ad5AFD6B8db8091DD5551CAC4ed621d9E6',
489
- }],
490
- hiddenCollaterals: [{
508
+ }, {
491
509
  token: TENOR_CBETH_WETH_VAULT_BASE,
492
510
  lltv: 0.98,
493
511
  liquidationCursor: '300000000000000000',
494
512
  oracle: '0xa02f629871be35d6db0F88C944cF955554Ec87c0',
513
+ hidden: true,
495
514
  }],
496
515
  maturity: 1787788800,
497
516
  rcfThreshold: '4000000000000000000',
@@ -514,12 +533,12 @@ export const MORPHO_MIDNIGHT_TENOR_CBETH_WETH_945_20260924 = (networkId = Networ
514
533
  lltv: 0.945,
515
534
  liquidationCursor: '300000000000000000',
516
535
  oracle: '0xB03855Ad5AFD6B8db8091DD5551CAC4ed621d9E6',
517
- }],
518
- hiddenCollaterals: [{
536
+ }, {
519
537
  token: TENOR_CBETH_WETH_VAULT_BASE,
520
538
  lltv: 0.98,
521
539
  liquidationCursor: '300000000000000000',
522
540
  oracle: '0xa02f629871be35d6db0F88C944cF955554Ec87c0',
541
+ hidden: true,
523
542
  }],
524
543
  maturity: 1790208000,
525
544
  rcfThreshold: '4000000000000000000',
@@ -542,12 +561,12 @@ export const MORPHO_MIDNIGHT_TENOR_CBETH_WETH_945_20261022 = (networkId = Networ
542
561
  lltv: 0.945,
543
562
  liquidationCursor: '300000000000000000',
544
563
  oracle: '0xB03855Ad5AFD6B8db8091DD5551CAC4ed621d9E6',
545
- }],
546
- hiddenCollaterals: [{
564
+ }, {
547
565
  token: TENOR_CBETH_WETH_VAULT_BASE,
548
566
  lltv: 0.98,
549
567
  liquidationCursor: '300000000000000000',
550
568
  oracle: '0xa02f629871be35d6db0F88C944cF955554Ec87c0',
569
+ hidden: true,
551
570
  }],
552
571
  maturity: 1792627200,
553
572
  rcfThreshold: '4000000000000000000',
@@ -570,12 +589,12 @@ export const MORPHO_MIDNIGHT_TENOR_CBETH_WETH_945_20261119 = (networkId = Networ
570
589
  lltv: 0.945,
571
590
  liquidationCursor: '300000000000000000',
572
591
  oracle: '0xB03855Ad5AFD6B8db8091DD5551CAC4ed621d9E6',
573
- }],
574
- hiddenCollaterals: [{
592
+ }, {
575
593
  token: TENOR_CBETH_WETH_VAULT_BASE,
576
594
  lltv: 0.98,
577
595
  liquidationCursor: '300000000000000000',
578
596
  oracle: '0xa02f629871be35d6db0F88C944cF955554Ec87c0',
597
+ hidden: true,
579
598
  }],
580
599
  maturity: 1795046400,
581
600
  rcfThreshold: '4000000000000000000',
@@ -598,12 +617,12 @@ export const MORPHO_MIDNIGHT_TENOR_CBETH_WETH_945_20261217 = (networkId = Networ
598
617
  lltv: 0.945,
599
618
  liquidationCursor: '300000000000000000',
600
619
  oracle: '0xB03855Ad5AFD6B8db8091DD5551CAC4ed621d9E6',
601
- }],
602
- hiddenCollaterals: [{
620
+ }, {
603
621
  token: TENOR_CBETH_WETH_VAULT_BASE,
604
622
  lltv: 0.98,
605
623
  liquidationCursor: '300000000000000000',
606
624
  oracle: '0xa02f629871be35d6db0F88C944cF955554Ec87c0',
625
+ hidden: true,
607
626
  }],
608
627
  maturity: 1797465600,
609
628
  rcfThreshold: '4000000000000000000',
@@ -628,12 +647,12 @@ const createTenorWethUsdcRollingMarket = (value, url, maturity, marketId) => ({
628
647
  lltv: 0.86,
629
648
  liquidationCursor: '300000000000000000',
630
649
  oracle: '0xFEa2D58cEfCb9fcb597723c6bAE66fFE4193aFE4',
631
- }],
632
- hiddenCollaterals: [{
650
+ }, {
633
651
  token: TENOR_WETH_USDC_VAULT_BASE,
634
652
  lltv: 0.98,
635
653
  liquidationCursor: '300000000000000000',
636
654
  oracle: '0x784519B1b59A1e1498f077066bB9336672bcc3EE',
655
+ hidden: true,
637
656
  }],
638
657
  maturity,
639
658
  rcfThreshold: '3000000000',
@@ -656,12 +675,12 @@ const createTenorCbEthWethRollingMarket = (value, url, maturity, marketId) => ({
656
675
  lltv: 0.945,
657
676
  liquidationCursor: '300000000000000000',
658
677
  oracle: '0xB03855Ad5AFD6B8db8091DD5551CAC4ed621d9E6',
659
- }],
660
- hiddenCollaterals: [{
678
+ }, {
661
679
  token: TENOR_CBETH_WETH_VAULT_BASE,
662
680
  lltv: 0.98,
663
681
  liquidationCursor: '300000000000000000',
664
682
  oracle: '0xa02f629871be35d6db0F88C944cF955554Ec87c0',
683
+ hidden: true,
665
684
  }],
666
685
  maturity,
667
686
  rcfThreshold: '4000000000000000000',
@@ -681,6 +700,260 @@ export const MORPHO_MIDNIGHT_TENOR_CBETH_WETH_945_20261030 = () => createTenorCb
681
700
  export const MORPHO_MIDNIGHT_TENOR_CBETH_WETH_945_20261127 = () => createTenorCbEthWethRollingMarket(MorphoMidnightVersions.MorphoMidnightTenorCbETHWETH_20261127_Base, 'tenor-cbeth-weth-20261127', 1795791600, '0xbb9ee13ffe52f4d52311775b1bd4fa309e402fd01ddfa165023c42dd6e5c051d');
682
701
  export const MORPHO_MIDNIGHT_TENOR_CBETH_WETH_945_20261225 = () => createTenorCbEthWethRollingMarket(MorphoMidnightVersions.MorphoMidnightTenorCbETHWETH_20261225_Base, 'tenor-cbeth-weth-20261225', 1798210800, '0x80530386795c88ba8c1ea6d686ae6168525c819ce4e0ea6017cb59afe34fb6d2');
683
702
  export const MORPHO_MIDNIGHT_TENOR_CBETH_WETH_945_20270129 = () => createTenorCbEthWethRollingMarket(MorphoMidnightVersions.MorphoMidnightTenorCbETHWETH_20270129_Base, 'tenor-cbeth-weth-20270129', 1801234800, '0x3cfda244eeec7e5cda2a07ef23e2a5e3fe6ba17882417cafbf3f3c432377ff1d');
703
+ // ── ETHEREUM ─────────────────────────────────────────────────────────────────────────────────────
704
+ const createWBTCUsdcEthMarket = (value, url, maturity, marketId) => ({
705
+ chainIds: [NetworkNumber.Eth],
706
+ label: 'Morpho Midnight WBTC/USDC',
707
+ shortLabel: 'WBTC/USDC',
708
+ url,
709
+ value,
710
+ midnight: MIDNIGHT_ETH,
711
+ loanToken: USDC_ETH,
712
+ collaterals: [{
713
+ token: WBTC_ETH,
714
+ lltv: 0.86,
715
+ liquidationCursor: '300000000000000000',
716
+ oracle: '0xDddd770BADd886dF3864029e4B377B5F6a2B6b83',
717
+ }, {
718
+ token: USDC_ETH,
719
+ lltv: 0.98,
720
+ liquidationCursor: '300000000000000000',
721
+ oracle: '0x8d1A84515B54C58bAc3b18315B6b1f17dA5cf6ca',
722
+ hidden: true,
723
+ }],
724
+ maturity,
725
+ rcfThreshold: '300000000000',
726
+ enterGate: ZERO_ADDRESS,
727
+ liquidatorGate: ZERO_ADDRESS,
728
+ marketId,
729
+ protocolName: 'morpho-midnight',
730
+ curator: 'Morpho',
731
+ });
732
+ const createCbBTCUsdcEthMarket = (value, url, maturity, marketId) => ({
733
+ chainIds: [NetworkNumber.Eth],
734
+ label: 'Morpho Midnight cbBTC/USDC',
735
+ shortLabel: 'cbBTC/USDC',
736
+ url,
737
+ value,
738
+ midnight: MIDNIGHT_ETH,
739
+ loanToken: USDC_ETH,
740
+ collaterals: [{
741
+ token: USDC_ETH,
742
+ lltv: 0.98,
743
+ liquidationCursor: '300000000000000000',
744
+ oracle: '0x8d1A84515B54C58bAc3b18315B6b1f17dA5cf6ca',
745
+ hidden: true,
746
+ }, {
747
+ token: CBBTC_ETH,
748
+ lltv: 0.86,
749
+ liquidationCursor: '300000000000000000',
750
+ oracle: '0xA6D6950c9F177F1De7f7757FB33539e3Ec60182a',
751
+ }],
752
+ maturity,
753
+ rcfThreshold: '300000000000',
754
+ enterGate: ZERO_ADDRESS,
755
+ liquidatorGate: ZERO_ADDRESS,
756
+ marketId,
757
+ protocolName: 'morpho-midnight',
758
+ curator: 'Morpho',
759
+ });
760
+ export const MORPHO_MIDNIGHT_WBTC_USDC_860_20260925_ETH = () => createWBTCUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightWBTCUSDC_860_20260925_Eth, 'wbtc-usdc-20260925', 1790348400, // 2026-09-25T15:00:00Z
761
+ '0x6dae37424723dd8cef0da2db84fd2819f7dfa4e3a98e602ccc3c65ee1fac61c2');
762
+ export const MORPHO_MIDNIGHT_WBTC_USDC_860_20261030_ETH = () => createWBTCUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightWBTCUSDC_860_20261030_Eth, 'wbtc-usdc-20261030', 1793372400, // 2026-10-30T15:00:00Z
763
+ '0xe5e6fbd5d81875dbfb0c94866cb0d300e1c7b9aacc0a458e63dccbcc0ce278c8');
764
+ export const MORPHO_MIDNIGHT_WBTC_USDC_860_20261127_ETH = () => createWBTCUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightWBTCUSDC_860_20261127_Eth, 'wbtc-usdc-20261127', 1795791600, // 2026-11-27T15:00:00Z
765
+ '0xe0efc89dc1f747ba502f6a4100b6b1db9ebd0d57569fd5a54771d3a026b6a27b');
766
+ export const MORPHO_MIDNIGHT_WBTC_USDC_860_20261225_ETH = () => createWBTCUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightWBTCUSDC_860_20261225_Eth, 'wbtc-usdc-20261225', 1798210800, // 2026-12-25T15:00:00Z
767
+ '0x3323abf2d2a3ec804f46552db920d900bb9c7ffd3f48143ab879a918fd6c0977');
768
+ export const MORPHO_MIDNIGHT_WBTC_USDC_860_20270129_ETH = () => createWBTCUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightWBTCUSDC_860_20270129_Eth, 'wbtc-usdc-20270129', 1801234800, // 2027-01-29T15:00:00Z
769
+ '0xf8052f557ce70d39cf9da1bd6e37e44a49f51757afb5dc881f675490ca6b3e9f');
770
+ export const MORPHO_MIDNIGHT_WBTC_USDC_860_20270226_ETH = () => createWBTCUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightWBTCUSDC_860_20270226_Eth, 'wbtc-usdc-20270226', 1803654000, // 2027-02-26T15:00:00Z
771
+ '0x7e399db474781e92b22b5a647d811959f65997b1e2bb68deaade674d8afbbdbd');
772
+ export const MORPHO_MIDNIGHT_WBTC_USDC_860_20270326_ETH = () => createWBTCUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightWBTCUSDC_860_20270326_Eth, 'wbtc-usdc-20270326', 1806073200, // 2027-03-26T15:00:00Z
773
+ '0x54a722a6dbaa237cfe088afd295417091bfb792fe3fac96999af41635977b2b0');
774
+ export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20260925_ETH = () => createCbBTCUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20260925_Eth, 'cbbtc-usdc-20260925', 1790348400, // 2026-09-25T15:00:00Z
775
+ '0x2a9ae59053a64e409e819d3b76750948e06065b3164278915eb80cb1b7474b65');
776
+ export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20261030_ETH = () => createCbBTCUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20261030_Eth, 'cbbtc-usdc-20261030', 1793372400, // 2026-10-30T15:00:00Z
777
+ '0xeea94e3f7185bb8cfcdf41aca2c9776788e86d6c14de345b911b04f75cd49959');
778
+ export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20261127_ETH = () => createCbBTCUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20261127_Eth, 'cbbtc-usdc-20261127', 1795791600, // 2026-11-27T15:00:00Z
779
+ '0xa6454499939a47927d3d27d65dce18486cc2aabbf75f8f5f8482e93567f4a183');
780
+ export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20261225_ETH = () => createCbBTCUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20261225_Eth, 'cbbtc-usdc-20261225', 1798210800, // 2026-12-25T15:00:00Z
781
+ '0xcf447db8cff164867b02edbf7ee7af06d241d4f3a44b34d6e3a3ea872ddea5d6');
782
+ export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20270129_ETH = () => createCbBTCUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20270129_Eth, 'cbbtc-usdc-20270129', 1801234800, // 2027-01-29T15:00:00Z
783
+ '0x9ea83106928cf45829a89c02cea7c73cb3a066d2429d7ca2fcdc0015dc191df1');
784
+ export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20270226_ETH = () => createCbBTCUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20270226_Eth, 'cbbtc-usdc-20270226', 1803654000, // 2027-02-26T15:00:00Z
785
+ '0xf9c1a9849863863a87600beb24394985a04ad3256b0c750baee0841f35f7f0e2');
786
+ export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20270326_ETH = () => createCbBTCUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20270326_Eth, 'cbbtc-usdc-20270326', 1806073200, // 2027-03-26T15:00:00Z
787
+ '0xb00767d2cc7d5d9e27501a14e7912a089e34da675a2eb9e030072233db2c4c3b');
788
+ // ETHEREUM — Tenor-curated
789
+ export const MORPHO_MIDNIGHT_TENOR_WETH_USDC_860_20260925_ETH = () => ({
790
+ chainIds: [NetworkNumber.Eth],
791
+ label: 'Tenor WETH/USDC',
792
+ shortLabel: 'Tenor WETH/USDC',
793
+ url: 'tenor-weth-usdc-20260925',
794
+ value: MorphoMidnightVersions.MorphoMidnightTenorWETHUSDC_20260925_Eth,
795
+ midnight: MIDNIGHT_ETH,
796
+ loanToken: USDC_ETH,
797
+ collaterals: [{
798
+ token: TENOR_WETH_USDC_VAULT_ETH,
799
+ lltv: 0.98,
800
+ liquidationCursor: '300000000000000000',
801
+ oracle: '0x5c4fd2864C21F0b81730B4EC74030130aA2193Ca',
802
+ hidden: true,
803
+ }, {
804
+ token: WETH_ETH,
805
+ lltv: 0.86,
806
+ liquidationCursor: '300000000000000000',
807
+ oracle: '0x0F948CBa8231Db7898ef36A4212581Ad7b1B4580',
808
+ }],
809
+ maturity: 1790348400, // 2026-09-25T15:00:00Z
810
+ rcfThreshold: '300000000000',
811
+ enterGate: ZERO_ADDRESS,
812
+ liquidatorGate: ZERO_ADDRESS,
813
+ marketId: '0x6a463fa464b97f7ba86516be7de82761bfa411522701ede713a269c2c385c70a',
814
+ protocolName: 'morpho-midnight',
815
+ curator: 'Tenor',
816
+ });
817
+ export const MORPHO_MIDNIGHT_TENOR_STRUSD_USDC_860_20260925_ETH = () => ({
818
+ chainIds: [NetworkNumber.Eth],
819
+ label: 'Tenor strUSD/USDC',
820
+ shortLabel: 'Tenor strUSD/USDC',
821
+ url: 'tenor-strusd-usdc-20260925',
822
+ value: MorphoMidnightVersions.MorphoMidnightTenorStrUSDUSDC_20260925_Eth,
823
+ midnight: MIDNIGHT_ETH,
824
+ loanToken: USDC_ETH,
825
+ collaterals: [{
826
+ token: STRUSD_ETH,
827
+ lltv: 0.86,
828
+ liquidationCursor: '300000000000000000',
829
+ oracle: '0x1506c98cE61aC63c8438B710C054a51c5dD9A6A4',
830
+ }, {
831
+ token: TENOR_STRUSD_USDC_VAULT_ETH,
832
+ lltv: 0.98,
833
+ liquidationCursor: '300000000000000000',
834
+ oracle: '0x361904890a43d4af2D1b8cF642A6C5e661Da5641',
835
+ hidden: true,
836
+ }],
837
+ maturity: 1790348400, // 2026-09-25T15:00:00Z
838
+ rcfThreshold: '300000000000',
839
+ enterGate: ZERO_ADDRESS,
840
+ liquidatorGate: ZERO_ADDRESS,
841
+ marketId: '0xa46399e45fe90b7d3c0488c4c73e9b361f758c4481734832a43d764ccdde0c64',
842
+ protocolName: 'morpho-midnight',
843
+ curator: 'Tenor',
844
+ });
845
+ export const MORPHO_MIDNIGHT_TENOR_WSRUSD_USDC_945_20260925_ETH = () => ({
846
+ chainIds: [NetworkNumber.Eth],
847
+ label: 'Tenor wsrUSD/USDC',
848
+ shortLabel: 'Tenor wsrUSD/USDC',
849
+ url: 'tenor-wsrusd-usdc-20260925',
850
+ value: MorphoMidnightVersions.MorphoMidnightTenorWsrUSDUSDC_20260925_Eth,
851
+ midnight: MIDNIGHT_ETH,
852
+ loanToken: USDC_ETH,
853
+ collaterals: [{
854
+ token: TENOR_WSRUSD_USDC_VAULT_ETH,
855
+ lltv: 0.98,
856
+ liquidationCursor: '300000000000000000',
857
+ oracle: '0x7C997e4dddF1D4B7C0D5f290B92d0909ba227c14',
858
+ hidden: true,
859
+ }, {
860
+ token: WSRUSD_ETH,
861
+ lltv: 0.945,
862
+ liquidationCursor: '300000000000000000',
863
+ oracle: '0x938D2eDb20425cF80F008E7ec314Eb456940Da15',
864
+ }],
865
+ maturity: 1790348400, // 2026-09-25T15:00:00Z
866
+ rcfThreshold: '700000000000',
867
+ enterGate: ZERO_ADDRESS,
868
+ liquidatorGate: ZERO_ADDRESS,
869
+ marketId: '0xc028a0b50ba0c606fbf83e5620018f23019b1fb5d1d15b4a5a0d17cc72edcfeb',
870
+ protocolName: 'morpho-midnight',
871
+ curator: 'Tenor',
872
+ });
873
+ export const MORPHO_MIDNIGHT_TENOR_USD3_USDC_915_20260925_ETH = () => ({
874
+ chainIds: [NetworkNumber.Eth],
875
+ label: 'Tenor USD3/USDC',
876
+ shortLabel: 'Tenor USD3/USDC',
877
+ url: 'tenor-usd3-usdc-20260925',
878
+ value: MorphoMidnightVersions.MorphoMidnightTenorUSD3USDC_20260925_Eth,
879
+ midnight: MIDNIGHT_ETH,
880
+ loanToken: USDC_ETH,
881
+ collaterals: [{
882
+ token: USD3_ETH,
883
+ lltv: 0.915,
884
+ liquidationCursor: '300000000000000000',
885
+ oracle: '0x68b4c2B2b2e245AB54a3bD55DfD5A9d84f029C06',
886
+ }, {
887
+ token: TENOR_USD3_USDC_VAULT_ETH,
888
+ lltv: 0.98,
889
+ liquidationCursor: '300000000000000000',
890
+ oracle: '0x2C198EC459e0a035078565dEdc3c206604b57d4D',
891
+ hidden: true,
892
+ }],
893
+ maturity: 1790348400, // 2026-09-25T15:00:00Z
894
+ rcfThreshold: '500000000000',
895
+ enterGate: ZERO_ADDRESS,
896
+ liquidatorGate: ZERO_ADDRESS,
897
+ marketId: '0x1edea0a3875af341ea885fc7eac7e02bfce90c534a1602dbd40fefccfe4c24d4',
898
+ protocolName: 'morpho-midnight',
899
+ curator: 'Tenor',
900
+ });
901
+ export const MORPHO_MIDNIGHT_TENOR_REUSD_USDC_915_20260925_ETH = () => ({
902
+ chainIds: [NetworkNumber.Eth],
903
+ label: 'Tenor reUSD/USDC',
904
+ shortLabel: 'Tenor reUSD/USDC',
905
+ url: 'tenor-reusd-usdc-20260925',
906
+ value: MorphoMidnightVersions.MorphoMidnightTenorReUSDUSDC_20260925_Eth,
907
+ midnight: MIDNIGHT_ETH,
908
+ loanToken: USDC_ETH,
909
+ collaterals: [{
910
+ token: REUSD_ETH,
911
+ lltv: 0.915,
912
+ liquidationCursor: '300000000000000000',
913
+ oracle: '0xA66a4F03Fd8031973f8C7718904ce32385f54E70',
914
+ }, {
915
+ token: TENOR_REUSD_USDC_VAULT_ETH,
916
+ lltv: 0.98,
917
+ liquidationCursor: '300000000000000000',
918
+ oracle: '0xE5f7f5A74E6f4dA2F68b1aa017F204a1883eC0df',
919
+ hidden: true,
920
+ }],
921
+ maturity: 1790348400, // 2026-09-25T15:00:00Z
922
+ rcfThreshold: '500000000000',
923
+ enterGate: ZERO_ADDRESS,
924
+ liquidatorGate: ZERO_ADDRESS,
925
+ marketId: '0xdba251b941d135577e1b423301b2eb6a76dfe11479c843185d20bee9208e7393',
926
+ protocolName: 'morpho-midnight',
927
+ curator: 'Tenor',
928
+ });
929
+ export const MORPHO_MIDNIGHT_TENOR_SIUSD_USDC_915_20260925_ETH = () => ({
930
+ chainIds: [NetworkNumber.Eth],
931
+ label: 'Tenor siUSD/USDC',
932
+ shortLabel: 'Tenor siUSD/USDC',
933
+ url: 'tenor-siusd-usdc-20260925',
934
+ value: MorphoMidnightVersions.MorphoMidnightTenorSiUSDUSDC_20260925_Eth,
935
+ midnight: MIDNIGHT_ETH,
936
+ loanToken: USDC_ETH,
937
+ collaterals: [{
938
+ token: TENOR_SIUSD_USDC_VAULT_ETH,
939
+ lltv: 0.98,
940
+ liquidationCursor: '300000000000000000',
941
+ oracle: '0xE872d1d33b13B52aE7cD9A0CDD4102468350e5fa',
942
+ hidden: true,
943
+ }, {
944
+ token: SIUSD_ETH,
945
+ lltv: 0.915,
946
+ liquidationCursor: '300000000000000000',
947
+ oracle: '0xd2cC46b9B2D761502eF933320ecf0268EC0dfa6d',
948
+ }],
949
+ maturity: 1790348400, // 2026-09-25T15:00:00Z
950
+ rcfThreshold: '500000000000',
951
+ enterGate: ZERO_ADDRESS,
952
+ liquidatorGate: ZERO_ADDRESS,
953
+ marketId: '0x48d95ace842493ce2c1c474c0cb60ac208e9d8a714258e278af9c8ae01a88fa5',
954
+ protocolName: 'morpho-midnight',
955
+ curator: 'Tenor',
956
+ });
684
957
  export const MorphoMidnightMarkets = (networkId) => ({
685
958
  // BASE — Morpho-curated
686
959
  [MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20260731_Base]: MORPHO_MIDNIGHT_CBBTC_USDC_860_20260731(networkId),
@@ -716,19 +989,44 @@ export const MorphoMidnightMarkets = (networkId) => ({
716
989
  [MorphoMidnightVersions.MorphoMidnightTenorCbETHWETH_20261127_Base]: MORPHO_MIDNIGHT_TENOR_CBETH_WETH_945_20261127(),
717
990
  [MorphoMidnightVersions.MorphoMidnightTenorCbETHWETH_20261225_Base]: MORPHO_MIDNIGHT_TENOR_CBETH_WETH_945_20261225(),
718
991
  [MorphoMidnightVersions.MorphoMidnightTenorCbETHWETH_20270129_Base]: MORPHO_MIDNIGHT_TENOR_CBETH_WETH_945_20270129(),
992
+ // ETHEREUM — Morpho-curated
993
+ [MorphoMidnightVersions.MorphoMidnightWBTCUSDC_860_20260925_Eth]: MORPHO_MIDNIGHT_WBTC_USDC_860_20260925_ETH(),
994
+ [MorphoMidnightVersions.MorphoMidnightWBTCUSDC_860_20261030_Eth]: MORPHO_MIDNIGHT_WBTC_USDC_860_20261030_ETH(),
995
+ [MorphoMidnightVersions.MorphoMidnightWBTCUSDC_860_20261127_Eth]: MORPHO_MIDNIGHT_WBTC_USDC_860_20261127_ETH(),
996
+ [MorphoMidnightVersions.MorphoMidnightWBTCUSDC_860_20261225_Eth]: MORPHO_MIDNIGHT_WBTC_USDC_860_20261225_ETH(),
997
+ [MorphoMidnightVersions.MorphoMidnightWBTCUSDC_860_20270129_Eth]: MORPHO_MIDNIGHT_WBTC_USDC_860_20270129_ETH(),
998
+ [MorphoMidnightVersions.MorphoMidnightWBTCUSDC_860_20270226_Eth]: MORPHO_MIDNIGHT_WBTC_USDC_860_20270226_ETH(),
999
+ [MorphoMidnightVersions.MorphoMidnightWBTCUSDC_860_20270326_Eth]: MORPHO_MIDNIGHT_WBTC_USDC_860_20270326_ETH(),
1000
+ [MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20260925_Eth]: MORPHO_MIDNIGHT_CBBTC_USDC_860_20260925_ETH(),
1001
+ [MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20261030_Eth]: MORPHO_MIDNIGHT_CBBTC_USDC_860_20261030_ETH(),
1002
+ [MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20261127_Eth]: MORPHO_MIDNIGHT_CBBTC_USDC_860_20261127_ETH(),
1003
+ [MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20261225_Eth]: MORPHO_MIDNIGHT_CBBTC_USDC_860_20261225_ETH(),
1004
+ [MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20270129_Eth]: MORPHO_MIDNIGHT_CBBTC_USDC_860_20270129_ETH(),
1005
+ [MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20270226_Eth]: MORPHO_MIDNIGHT_CBBTC_USDC_860_20270226_ETH(),
1006
+ [MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20270326_Eth]: MORPHO_MIDNIGHT_CBBTC_USDC_860_20270326_ETH(),
1007
+ // ETHEREUM — Tenor-curated
1008
+ [MorphoMidnightVersions.MorphoMidnightTenorWETHUSDC_20260925_Eth]: MORPHO_MIDNIGHT_TENOR_WETH_USDC_860_20260925_ETH(),
1009
+ [MorphoMidnightVersions.MorphoMidnightTenorUSD3USDC_20260925_Eth]: MORPHO_MIDNIGHT_TENOR_USD3_USDC_915_20260925_ETH(),
1010
+ // ── Pending `@defisaver/tokens` ────────────────────────────────────────────────────────────────
1011
+ // Collateralised by stablecoins the app does not carry yet, so `getAssetInfoByAddress` hands back the
1012
+ // `?` proto and the market renders an unnamed collateral at a NaN price. The definitions below are
1013
+ // verified against the chain and complete — this map is the only place they are withheld from, so
1014
+ // uncommenting these four lines is the whole re-enable once the assets ship.
1015
+ // [MorphoMidnightVersions.MorphoMidnightTenorStrUSDUSDC_20260925_Eth]: MORPHO_MIDNIGHT_TENOR_STRUSD_USDC_860_20260925_ETH(),
1016
+ // [MorphoMidnightVersions.MorphoMidnightTenorWsrUSDUSDC_20260925_Eth]: MORPHO_MIDNIGHT_TENOR_WSRUSD_USDC_945_20260925_ETH(),
1017
+ // [MorphoMidnightVersions.MorphoMidnightTenorReUSDUSDC_20260925_Eth]: MORPHO_MIDNIGHT_TENOR_REUSD_USDC_915_20260925_ETH(),
1018
+ // [MorphoMidnightVersions.MorphoMidnightTenorSiUSDUSDC_20260925_Eth]: MORPHO_MIDNIGHT_TENOR_SIUSD_USDC_915_20260925_ETH(),
719
1019
  });
720
- // Which markets Tenor's router quotes, by id, for the quote helpers that only receive one.
721
1020
  const TENOR_MARKET_IDS = new Set(Object.values(MorphoMidnightMarkets(NetworkNumber.Base))
722
1021
  .filter((market) => market.curator === 'Tenor')
723
1022
  .map((market) => market.marketId.toLowerCase()));
724
1023
  export const isTenorMidnightMarket = (market) => (typeof market === 'string'
725
1024
  ? TENOR_MARKET_IDS.has(market.toLowerCase())
726
1025
  : market.curator === 'Tenor');
727
- export const findMorphoMidnightMarket = (marketId, network = NetworkNumber.Base) => Object.values(MorphoMidnightMarkets(network)).find((market) => market.marketId.toLowerCase() === marketId.toLowerCase());
728
- /**
729
- * The market's collateral set as the chain knows it: the listed collaterals followed by the curator's
730
- * hidden ones. This not `collaterals` is what a `Market` struct takes, since the market id is the hash
731
- * of that struct. Anything assembling one for a contract call goes through here so it can't quietly build
732
- * a market of its own instead.
733
- */
734
- export const morphoMidnightMarketCollateralParams = (market) => [...market.collaterals, ...(market.hiddenCollaterals || [])];
1026
+ export const findMorphoMidnightMarket = (marketId, network) => (Object.values(MorphoMidnightMarkets(network !== null && network !== void 0 ? network : NetworkNumber.Base))
1027
+ .find((market) => market.marketId.toLowerCase() === marketId.toLowerCase()
1028
+ && (network === undefined || market.chainIds.includes(network))));
1029
+ export const morphoMidnightMarketCollateralParams = (market) => market.collaterals.map(({ token, lltv, liquidationCursor, oracle, }) => ({
1030
+ token, lltv, liquidationCursor, oracle,
1031
+ }));
1032
+ export const morphoMidnightVisibleCollaterals = (market) => market.collaterals.filter((collateral) => !collateral.hidden);