@defisaver/positions-sdk 2.1.151-midnight-2-dev → 2.1.151

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 (42) hide show
  1. package/cjs/claiming/compV3.js +1 -0
  2. package/cjs/config/contracts.d.ts +0 -4
  3. package/cjs/config/contracts.js +0 -4
  4. package/cjs/helpers/morphoMidnightHelpers/tenor.d.ts +2 -6
  5. package/cjs/helpers/morphoMidnightHelpers/tenor.js +1 -5
  6. package/cjs/markets/aaveV4/index.d.ts +2 -0
  7. package/cjs/markets/aaveV4/index.js +13 -1
  8. package/cjs/markets/index.d.ts +1 -1
  9. package/cjs/markets/index.js +1 -2
  10. package/cjs/markets/morphoMidnight/index.d.ts +10 -92
  11. package/cjs/markets/morphoMidnight/index.js +60 -519
  12. package/cjs/morphoMidnight/index.js +1 -11
  13. package/cjs/types/aaveV4.d.ts +1 -0
  14. package/cjs/types/aaveV4.js +1 -0
  15. package/cjs/types/morphoMidnight.d.ts +4 -57
  16. package/cjs/types/morphoMidnight.js +0 -45
  17. package/esm/claiming/compV3.js +1 -0
  18. package/esm/config/contracts.d.ts +0 -4
  19. package/esm/config/contracts.js +0 -4
  20. package/esm/helpers/morphoMidnightHelpers/tenor.d.ts +2 -6
  21. package/esm/helpers/morphoMidnightHelpers/tenor.js +2 -6
  22. package/esm/markets/aaveV4/index.d.ts +2 -0
  23. package/esm/markets/aaveV4/index.js +11 -0
  24. package/esm/markets/index.d.ts +1 -1
  25. package/esm/markets/index.js +1 -1
  26. package/esm/markets/morphoMidnight/index.d.ts +10 -92
  27. package/esm/markets/morphoMidnight/index.js +59 -473
  28. package/esm/morphoMidnight/index.js +1 -11
  29. package/esm/types/aaveV4.d.ts +1 -0
  30. package/esm/types/aaveV4.js +1 -0
  31. package/esm/types/morphoMidnight.d.ts +4 -57
  32. package/esm/types/morphoMidnight.js +0 -45
  33. package/package.json +2 -2
  34. package/src/claiming/compV3.ts +1 -0
  35. package/src/config/contracts.ts +0 -4
  36. package/src/helpers/morphoMidnightHelpers/tenor.ts +2 -6
  37. package/src/markets/aaveV4/index.ts +12 -0
  38. package/src/markets/index.ts +0 -1
  39. package/src/markets/morphoMidnight/index.ts +61 -724
  40. package/src/morphoMidnight/index.ts +1 -8
  41. package/src/types/aaveV4.ts +1 -0
  42. package/src/types/morphoMidnight.ts +3 -59
@@ -1,41 +1,21 @@
1
1
  import { MorphoMidnightVersions, NetworkNumber, } from '../../types';
2
2
  import { ZERO_ADDRESS } from '../../constants';
3
3
  /**
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/.
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`.
8
7
  */
9
8
  export const MIDNIGHT_BASE = '0xAdedD8ab6dE832766Fedf0FaC4992E5C4D3EA18A';
10
- export const MIDNIGHT_ETH = '0x471686c42792F93528B000beF54bC10E3aa2045f';
11
- export const midnightCoreAddress = (network) => (network === NetworkNumber.Eth ? MIDNIGHT_ETH : MIDNIGHT_BASE);
12
9
  const USDC_BASE = '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913';
13
10
  const WETH_BASE = '0x4200000000000000000000000000000000000006';
14
11
  const CBBTC_BASE = '0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf';
15
12
  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';
25
- const WSTETH_ETH = '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0';
26
13
  // Tenor's ERC-4626 collateral vaults, one per pair and shared by that pair's whole maturity ladder. Each
27
14
  // is a collateral of its markets on-chain without being an asset the app deals in — see the note above
28
15
  // the Tenor markets below, and https://www.docs.tenor.finance/technical-docs/addresses/#vaults.
29
16
  const TENOR_CBBTC_USDC_VAULT_BASE = '0xf6a70085b7f79FA76B04EbF7A2D7D87C3c5c04BC';
30
17
  const TENOR_WETH_USDC_VAULT_BASE = '0xe690a58EF52854513462745237F6A213a0d54dF1';
31
18
  const TENOR_CBETH_WETH_VAULT_BASE = '0xFa750DD0099eAdB72d401244De73ce7B89edf90F';
32
- const TENOR_WETH_USDC_VAULT_ETH = '0x7579a75658A7A0b7d277296dFaEecF4018746091';
33
- const TENOR_STRUSD_USDC_VAULT_ETH = '0xef6955d886fce26D87753dA45192eA50F59dc91c';
34
- const TENOR_WSRUSD_USDC_VAULT_ETH = '0x09409fa71bCfd3f433571dbeec0C0A9C19B0d30E';
35
- const TENOR_USD3_USDC_VAULT_ETH = '0x26C46ACb48B46cC99ccB3cf6C365BdaFa2556E80';
36
- const TENOR_REUSD_USDC_VAULT_ETH = '0xe3891d8cA7E00Bc42157D9bb5797C88D9159AAC6';
37
- const TENOR_SIUSD_USDC_VAULT_ETH = '0x226ecbf4755a5F81ed721E18c3fDA11f004Ea9e0';
38
- const TENOR_WSTETH_WETH_VAULT_ETH = '0xe1Bdb88eE5DBaCE653ecD2123E8396BB5BA8adc5';
39
19
  // Sourced from the official listing at https://markets.morpho.org/fixed/base
40
20
  // BASE — USDC/cbBTC, 86% LLTV, monthly maturity ladder
41
21
  export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20260731 = (networkId = NetworkNumber.Base) => ({
@@ -200,20 +180,19 @@ export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20270129 = (networkId = NetworkNumbe
200
180
  // = Tenor's `fixedMarketIdentifier`; they come back `listed: false`, meaning Tenor — not Morpho — serves
201
181
  // the book.
202
182
  //
203
- // Every market below is verified by replaying `MidnightView.toId` over the struct these fields build:
204
- // core address, maturity, rcfThreshold, loan token, gates and the whole ordered collateral set have to
205
- // match or the hash does not come back as the recorded `marketId`. On-chain each market carries **two**
206
- // collaterals the pair's own token, and Tenor's ERC-4626 vault at 98% LLTV (the `metadata.vault` of the
207
- // parent tenor market, listed at https://www.docs.tenor.finance/technical-docs/addresses/#vaults). The
208
- // vault is not an asset the app deals in, so it carries `hidden: true`: everything that renders or prices
209
- // a position skips it and sees a single-collateral market.
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`.
210
191
  //
211
- // It is only flagged, never dropped or reordered: the market id is the hash of the full struct, so a
212
- // `Market` handed to the core has to carry the complete set in the chain's own order or the call
213
- // addresses a market of its own makingwhich does not revert, because markets are permissionless. On
214
- // Base the vault happens to come last every time; on mainnet the order varies per market, which is why
215
- // the flag lives on the entry rather than in a second list. The take path builds no struct — offer
216
- // tuples carry the market's full collateral set straight from the router's offer JSON.
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.
217
196
  export const MORPHO_MIDNIGHT_TENOR_CBBTC_USDC_860_20260827 = (networkId = NetworkNumber.Base) => ({
218
197
  chainIds: [NetworkNumber.Base],
219
198
  label: 'Tenor cbBTC/USDC',
@@ -227,12 +206,12 @@ export const MORPHO_MIDNIGHT_TENOR_CBBTC_USDC_860_20260827 = (networkId = Networ
227
206
  lltv: 0.86,
228
207
  liquidationCursor: '300000000000000000',
229
208
  oracle: '0x663BECd10daE6C4A3Dcd89F1d76c1174199639B9',
230
- }, {
209
+ }],
210
+ hiddenCollaterals: [{
231
211
  token: TENOR_CBBTC_USDC_VAULT_BASE,
232
212
  lltv: 0.98,
233
213
  liquidationCursor: '300000000000000000',
234
214
  oracle: '0x4a24e4bf269cE26aAD2dF00437e7730d25FCdE26',
235
- hidden: true,
236
215
  }],
237
216
  maturity: 1787788800, // 2026-08-27T00:00:00Z
238
217
  rcfThreshold: '3000000000',
@@ -255,12 +234,12 @@ export const MORPHO_MIDNIGHT_TENOR_CBBTC_USDC_860_20260924 = (networkId = Networ
255
234
  lltv: 0.86,
256
235
  liquidationCursor: '300000000000000000',
257
236
  oracle: '0x663BECd10daE6C4A3Dcd89F1d76c1174199639B9',
258
- }, {
237
+ }],
238
+ hiddenCollaterals: [{
259
239
  token: TENOR_CBBTC_USDC_VAULT_BASE,
260
240
  lltv: 0.98,
261
241
  liquidationCursor: '300000000000000000',
262
242
  oracle: '0x4a24e4bf269cE26aAD2dF00437e7730d25FCdE26',
263
- hidden: true,
264
243
  }],
265
244
  maturity: 1790208000, // 2026-09-24T00:00:00Z
266
245
  rcfThreshold: '3000000000',
@@ -283,12 +262,12 @@ export const MORPHO_MIDNIGHT_TENOR_CBBTC_USDC_860_20261022 = (networkId = Networ
283
262
  lltv: 0.86,
284
263
  liquidationCursor: '300000000000000000',
285
264
  oracle: '0x663BECd10daE6C4A3Dcd89F1d76c1174199639B9',
286
- }, {
265
+ }],
266
+ hiddenCollaterals: [{
287
267
  token: TENOR_CBBTC_USDC_VAULT_BASE,
288
268
  lltv: 0.98,
289
269
  liquidationCursor: '300000000000000000',
290
270
  oracle: '0x4a24e4bf269cE26aAD2dF00437e7730d25FCdE26',
291
- hidden: true,
292
271
  }],
293
272
  maturity: 1792627200, // 2026-10-22T00:00:00Z
294
273
  rcfThreshold: '3000000000',
@@ -311,12 +290,12 @@ export const MORPHO_MIDNIGHT_TENOR_CBBTC_USDC_860_20261119 = (networkId = Networ
311
290
  lltv: 0.86,
312
291
  liquidationCursor: '300000000000000000',
313
292
  oracle: '0x663BECd10daE6C4A3Dcd89F1d76c1174199639B9',
314
- }, {
293
+ }],
294
+ hiddenCollaterals: [{
315
295
  token: TENOR_CBBTC_USDC_VAULT_BASE,
316
296
  lltv: 0.98,
317
297
  liquidationCursor: '300000000000000000',
318
298
  oracle: '0x4a24e4bf269cE26aAD2dF00437e7730d25FCdE26',
319
- hidden: true,
320
299
  }],
321
300
  maturity: 1795046400, // 2026-11-19T00:00:00Z
322
301
  rcfThreshold: '3000000000',
@@ -339,12 +318,12 @@ export const MORPHO_MIDNIGHT_TENOR_CBBTC_USDC_860_20261217 = (networkId = Networ
339
318
  lltv: 0.86,
340
319
  liquidationCursor: '300000000000000000',
341
320
  oracle: '0x663BECd10daE6C4A3Dcd89F1d76c1174199639B9',
342
- }, {
321
+ }],
322
+ hiddenCollaterals: [{
343
323
  token: TENOR_CBBTC_USDC_VAULT_BASE,
344
324
  lltv: 0.98,
345
325
  liquidationCursor: '300000000000000000',
346
326
  oracle: '0x4a24e4bf269cE26aAD2dF00437e7730d25FCdE26',
347
- hidden: true,
348
327
  }],
349
328
  maturity: 1797465600, // 2026-12-17T00:00:00Z
350
329
  rcfThreshold: '3000000000',
@@ -367,12 +346,12 @@ export const MORPHO_MIDNIGHT_TENOR_WETH_USDC_860_20260827 = (networkId = Network
367
346
  lltv: 0.86,
368
347
  liquidationCursor: '300000000000000000',
369
348
  oracle: '0xFEa2D58cEfCb9fcb597723c6bAE66fFE4193aFE4',
370
- }, {
349
+ }],
350
+ hiddenCollaterals: [{
371
351
  token: TENOR_WETH_USDC_VAULT_BASE,
372
352
  lltv: 0.98,
373
353
  liquidationCursor: '300000000000000000',
374
354
  oracle: '0x784519B1b59A1e1498f077066bB9336672bcc3EE',
375
- hidden: true,
376
355
  }],
377
356
  maturity: 1787788800,
378
357
  rcfThreshold: '3000000000',
@@ -395,12 +374,12 @@ export const MORPHO_MIDNIGHT_TENOR_WETH_USDC_860_20260924 = (networkId = Network
395
374
  lltv: 0.86,
396
375
  liquidationCursor: '300000000000000000',
397
376
  oracle: '0xFEa2D58cEfCb9fcb597723c6bAE66fFE4193aFE4',
398
- }, {
377
+ }],
378
+ hiddenCollaterals: [{
399
379
  token: TENOR_WETH_USDC_VAULT_BASE,
400
380
  lltv: 0.98,
401
381
  liquidationCursor: '300000000000000000',
402
382
  oracle: '0x784519B1b59A1e1498f077066bB9336672bcc3EE',
403
- hidden: true,
404
383
  }],
405
384
  maturity: 1790208000,
406
385
  rcfThreshold: '3000000000',
@@ -423,12 +402,12 @@ export const MORPHO_MIDNIGHT_TENOR_WETH_USDC_860_20261022 = (networkId = Network
423
402
  lltv: 0.86,
424
403
  liquidationCursor: '300000000000000000',
425
404
  oracle: '0xFEa2D58cEfCb9fcb597723c6bAE66fFE4193aFE4',
426
- }, {
405
+ }],
406
+ hiddenCollaterals: [{
427
407
  token: TENOR_WETH_USDC_VAULT_BASE,
428
408
  lltv: 0.98,
429
409
  liquidationCursor: '300000000000000000',
430
410
  oracle: '0x784519B1b59A1e1498f077066bB9336672bcc3EE',
431
- hidden: true,
432
411
  }],
433
412
  maturity: 1792627200,
434
413
  rcfThreshold: '3000000000',
@@ -451,12 +430,12 @@ export const MORPHO_MIDNIGHT_TENOR_WETH_USDC_860_20261119 = (networkId = Network
451
430
  lltv: 0.86,
452
431
  liquidationCursor: '300000000000000000',
453
432
  oracle: '0xFEa2D58cEfCb9fcb597723c6bAE66fFE4193aFE4',
454
- }, {
433
+ }],
434
+ hiddenCollaterals: [{
455
435
  token: TENOR_WETH_USDC_VAULT_BASE,
456
436
  lltv: 0.98,
457
437
  liquidationCursor: '300000000000000000',
458
438
  oracle: '0x784519B1b59A1e1498f077066bB9336672bcc3EE',
459
- hidden: true,
460
439
  }],
461
440
  maturity: 1795046400,
462
441
  rcfThreshold: '3000000000',
@@ -479,12 +458,12 @@ export const MORPHO_MIDNIGHT_TENOR_WETH_USDC_860_20261217 = (networkId = Network
479
458
  lltv: 0.86,
480
459
  liquidationCursor: '300000000000000000',
481
460
  oracle: '0xFEa2D58cEfCb9fcb597723c6bAE66fFE4193aFE4',
482
- }, {
461
+ }],
462
+ hiddenCollaterals: [{
483
463
  token: TENOR_WETH_USDC_VAULT_BASE,
484
464
  lltv: 0.98,
485
465
  liquidationCursor: '300000000000000000',
486
466
  oracle: '0x784519B1b59A1e1498f077066bB9336672bcc3EE',
487
- hidden: true,
488
467
  }],
489
468
  maturity: 1797465600,
490
469
  rcfThreshold: '3000000000',
@@ -507,12 +486,12 @@ export const MORPHO_MIDNIGHT_TENOR_CBETH_WETH_945_20260827 = (networkId = Networ
507
486
  lltv: 0.945,
508
487
  liquidationCursor: '300000000000000000',
509
488
  oracle: '0xB03855Ad5AFD6B8db8091DD5551CAC4ed621d9E6',
510
- }, {
489
+ }],
490
+ hiddenCollaterals: [{
511
491
  token: TENOR_CBETH_WETH_VAULT_BASE,
512
492
  lltv: 0.98,
513
493
  liquidationCursor: '300000000000000000',
514
494
  oracle: '0xa02f629871be35d6db0F88C944cF955554Ec87c0',
515
- hidden: true,
516
495
  }],
517
496
  maturity: 1787788800,
518
497
  rcfThreshold: '4000000000000000000',
@@ -535,12 +514,12 @@ export const MORPHO_MIDNIGHT_TENOR_CBETH_WETH_945_20260924 = (networkId = Networ
535
514
  lltv: 0.945,
536
515
  liquidationCursor: '300000000000000000',
537
516
  oracle: '0xB03855Ad5AFD6B8db8091DD5551CAC4ed621d9E6',
538
- }, {
517
+ }],
518
+ hiddenCollaterals: [{
539
519
  token: TENOR_CBETH_WETH_VAULT_BASE,
540
520
  lltv: 0.98,
541
521
  liquidationCursor: '300000000000000000',
542
522
  oracle: '0xa02f629871be35d6db0F88C944cF955554Ec87c0',
543
- hidden: true,
544
523
  }],
545
524
  maturity: 1790208000,
546
525
  rcfThreshold: '4000000000000000000',
@@ -563,12 +542,12 @@ export const MORPHO_MIDNIGHT_TENOR_CBETH_WETH_945_20261022 = (networkId = Networ
563
542
  lltv: 0.945,
564
543
  liquidationCursor: '300000000000000000',
565
544
  oracle: '0xB03855Ad5AFD6B8db8091DD5551CAC4ed621d9E6',
566
- }, {
545
+ }],
546
+ hiddenCollaterals: [{
567
547
  token: TENOR_CBETH_WETH_VAULT_BASE,
568
548
  lltv: 0.98,
569
549
  liquidationCursor: '300000000000000000',
570
550
  oracle: '0xa02f629871be35d6db0F88C944cF955554Ec87c0',
571
- hidden: true,
572
551
  }],
573
552
  maturity: 1792627200,
574
553
  rcfThreshold: '4000000000000000000',
@@ -591,12 +570,12 @@ export const MORPHO_MIDNIGHT_TENOR_CBETH_WETH_945_20261119 = (networkId = Networ
591
570
  lltv: 0.945,
592
571
  liquidationCursor: '300000000000000000',
593
572
  oracle: '0xB03855Ad5AFD6B8db8091DD5551CAC4ed621d9E6',
594
- }, {
573
+ }],
574
+ hiddenCollaterals: [{
595
575
  token: TENOR_CBETH_WETH_VAULT_BASE,
596
576
  lltv: 0.98,
597
577
  liquidationCursor: '300000000000000000',
598
578
  oracle: '0xa02f629871be35d6db0F88C944cF955554Ec87c0',
599
- hidden: true,
600
579
  }],
601
580
  maturity: 1795046400,
602
581
  rcfThreshold: '4000000000000000000',
@@ -619,12 +598,12 @@ export const MORPHO_MIDNIGHT_TENOR_CBETH_WETH_945_20261217 = (networkId = Networ
619
598
  lltv: 0.945,
620
599
  liquidationCursor: '300000000000000000',
621
600
  oracle: '0xB03855Ad5AFD6B8db8091DD5551CAC4ed621d9E6',
622
- }, {
601
+ }],
602
+ hiddenCollaterals: [{
623
603
  token: TENOR_CBETH_WETH_VAULT_BASE,
624
604
  lltv: 0.98,
625
605
  liquidationCursor: '300000000000000000',
626
606
  oracle: '0xa02f629871be35d6db0F88C944cF955554Ec87c0',
627
- hidden: true,
628
607
  }],
629
608
  maturity: 1797465600,
630
609
  rcfThreshold: '4000000000000000000',
@@ -649,12 +628,12 @@ const createTenorWethUsdcRollingMarket = (value, url, maturity, marketId) => ({
649
628
  lltv: 0.86,
650
629
  liquidationCursor: '300000000000000000',
651
630
  oracle: '0xFEa2D58cEfCb9fcb597723c6bAE66fFE4193aFE4',
652
- }, {
631
+ }],
632
+ hiddenCollaterals: [{
653
633
  token: TENOR_WETH_USDC_VAULT_BASE,
654
634
  lltv: 0.98,
655
635
  liquidationCursor: '300000000000000000',
656
636
  oracle: '0x784519B1b59A1e1498f077066bB9336672bcc3EE',
657
- hidden: true,
658
637
  }],
659
638
  maturity,
660
639
  rcfThreshold: '3000000000',
@@ -677,12 +656,12 @@ const createTenorCbEthWethRollingMarket = (value, url, maturity, marketId) => ({
677
656
  lltv: 0.945,
678
657
  liquidationCursor: '300000000000000000',
679
658
  oracle: '0xB03855Ad5AFD6B8db8091DD5551CAC4ed621d9E6',
680
- }, {
659
+ }],
660
+ hiddenCollaterals: [{
681
661
  token: TENOR_CBETH_WETH_VAULT_BASE,
682
662
  lltv: 0.98,
683
663
  liquidationCursor: '300000000000000000',
684
664
  oracle: '0xa02f629871be35d6db0F88C944cF955554Ec87c0',
685
- hidden: true,
686
665
  }],
687
666
  maturity,
688
667
  rcfThreshold: '4000000000000000000',
@@ -702,352 +681,7 @@ export const MORPHO_MIDNIGHT_TENOR_CBETH_WETH_945_20261030 = () => createTenorCb
702
681
  export const MORPHO_MIDNIGHT_TENOR_CBETH_WETH_945_20261127 = () => createTenorCbEthWethRollingMarket(MorphoMidnightVersions.MorphoMidnightTenorCbETHWETH_20261127_Base, 'tenor-cbeth-weth-20261127', 1795791600, '0xbb9ee13ffe52f4d52311775b1bd4fa309e402fd01ddfa165023c42dd6e5c051d');
703
682
  export const MORPHO_MIDNIGHT_TENOR_CBETH_WETH_945_20261225 = () => createTenorCbEthWethRollingMarket(MorphoMidnightVersions.MorphoMidnightTenorCbETHWETH_20261225_Base, 'tenor-cbeth-weth-20261225', 1798210800, '0x80530386795c88ba8c1ea6d686ae6168525c819ce4e0ea6017cb59afe34fb6d2');
704
683
  export const MORPHO_MIDNIGHT_TENOR_CBETH_WETH_945_20270129 = () => createTenorCbEthWethRollingMarket(MorphoMidnightVersions.MorphoMidnightTenorCbETHWETH_20270129_Base, 'tenor-cbeth-weth-20270129', 1801234800, '0x3cfda244eeec7e5cda2a07ef23e2a5e3fe6ba17882417cafbf3f3c432377ff1d');
705
- // ── ETHEREUM ─────────────────────────────────────────────────────────────────────────────────────
706
- const createWBTCUsdcEthMarket = (value, url, maturity, marketId) => ({
707
- chainIds: [NetworkNumber.Eth],
708
- label: 'Morpho Midnight WBTC/USDC',
709
- shortLabel: 'WBTC/USDC',
710
- url,
711
- value,
712
- midnight: MIDNIGHT_ETH,
713
- loanToken: USDC_ETH,
714
- collaterals: [{
715
- token: WBTC_ETH,
716
- lltv: 0.86,
717
- liquidationCursor: '300000000000000000',
718
- oracle: '0xDddd770BADd886dF3864029e4B377B5F6a2B6b83',
719
- }, {
720
- token: USDC_ETH,
721
- lltv: 0.98,
722
- liquidationCursor: '300000000000000000',
723
- oracle: '0x8d1A84515B54C58bAc3b18315B6b1f17dA5cf6ca',
724
- hidden: true,
725
- }],
726
- maturity,
727
- rcfThreshold: '300000000000',
728
- enterGate: ZERO_ADDRESS,
729
- liquidatorGate: ZERO_ADDRESS,
730
- marketId,
731
- protocolName: 'morpho-midnight',
732
- curator: 'Morpho',
733
- });
734
- const createCbBTCUsdcEthMarket = (value, url, maturity, marketId) => ({
735
- chainIds: [NetworkNumber.Eth],
736
- label: 'Morpho Midnight cbBTC/USDC',
737
- shortLabel: 'cbBTC/USDC',
738
- url,
739
- value,
740
- midnight: MIDNIGHT_ETH,
741
- loanToken: USDC_ETH,
742
- collaterals: [{
743
- token: USDC_ETH,
744
- lltv: 0.98,
745
- liquidationCursor: '300000000000000000',
746
- oracle: '0x8d1A84515B54C58bAc3b18315B6b1f17dA5cf6ca',
747
- hidden: true,
748
- }, {
749
- token: CBBTC_ETH,
750
- lltv: 0.86,
751
- liquidationCursor: '300000000000000000',
752
- oracle: '0xA6D6950c9F177F1De7f7757FB33539e3Ec60182a',
753
- }],
754
- maturity,
755
- rcfThreshold: '300000000000',
756
- enterGate: ZERO_ADDRESS,
757
- liquidatorGate: ZERO_ADDRESS,
758
- marketId,
759
- protocolName: 'morpho-midnight',
760
- curator: 'Morpho',
761
- });
762
- export const MORPHO_MIDNIGHT_WBTC_USDC_860_20260925_ETH = () => createWBTCUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightWBTCUSDC_860_20260925_Eth, 'wbtc-usdc-20260925', 1790348400, // 2026-09-25T15:00:00Z
763
- '0x6dae37424723dd8cef0da2db84fd2819f7dfa4e3a98e602ccc3c65ee1fac61c2');
764
- export const MORPHO_MIDNIGHT_WBTC_USDC_860_20261030_ETH = () => createWBTCUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightWBTCUSDC_860_20261030_Eth, 'wbtc-usdc-20261030', 1793372400, // 2026-10-30T15:00:00Z
765
- '0xe5e6fbd5d81875dbfb0c94866cb0d300e1c7b9aacc0a458e63dccbcc0ce278c8');
766
- export const MORPHO_MIDNIGHT_WBTC_USDC_860_20261127_ETH = () => createWBTCUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightWBTCUSDC_860_20261127_Eth, 'wbtc-usdc-20261127', 1795791600, // 2026-11-27T15:00:00Z
767
- '0xe0efc89dc1f747ba502f6a4100b6b1db9ebd0d57569fd5a54771d3a026b6a27b');
768
- export const MORPHO_MIDNIGHT_WBTC_USDC_860_20261225_ETH = () => createWBTCUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightWBTCUSDC_860_20261225_Eth, 'wbtc-usdc-20261225', 1798210800, // 2026-12-25T15:00:00Z
769
- '0x3323abf2d2a3ec804f46552db920d900bb9c7ffd3f48143ab879a918fd6c0977');
770
- export const MORPHO_MIDNIGHT_WBTC_USDC_860_20270129_ETH = () => createWBTCUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightWBTCUSDC_860_20270129_Eth, 'wbtc-usdc-20270129', 1801234800, // 2027-01-29T15:00:00Z
771
- '0xf8052f557ce70d39cf9da1bd6e37e44a49f51757afb5dc881f675490ca6b3e9f');
772
- export const MORPHO_MIDNIGHT_WBTC_USDC_860_20270226_ETH = () => createWBTCUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightWBTCUSDC_860_20270226_Eth, 'wbtc-usdc-20270226', 1803654000, // 2027-02-26T15:00:00Z
773
- '0x7e399db474781e92b22b5a647d811959f65997b1e2bb68deaade674d8afbbdbd');
774
- export const MORPHO_MIDNIGHT_WBTC_USDC_860_20270326_ETH = () => createWBTCUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightWBTCUSDC_860_20270326_Eth, 'wbtc-usdc-20270326', 1806073200, // 2027-03-26T15:00:00Z
775
- '0x54a722a6dbaa237cfe088afd295417091bfb792fe3fac96999af41635977b2b0');
776
- export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20260925_ETH = () => createCbBTCUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20260925_Eth, 'cbbtc-usdc-20260925', 1790348400, // 2026-09-25T15:00:00Z
777
- '0x2a9ae59053a64e409e819d3b76750948e06065b3164278915eb80cb1b7474b65');
778
- export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20261030_ETH = () => createCbBTCUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20261030_Eth, 'cbbtc-usdc-20261030', 1793372400, // 2026-10-30T15:00:00Z
779
- '0xeea94e3f7185bb8cfcdf41aca2c9776788e86d6c14de345b911b04f75cd49959');
780
- export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20261127_ETH = () => createCbBTCUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20261127_Eth, 'cbbtc-usdc-20261127', 1795791600, // 2026-11-27T15:00:00Z
781
- '0xa6454499939a47927d3d27d65dce18486cc2aabbf75f8f5f8482e93567f4a183');
782
- export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20261225_ETH = () => createCbBTCUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20261225_Eth, 'cbbtc-usdc-20261225', 1798210800, // 2026-12-25T15:00:00Z
783
- '0xcf447db8cff164867b02edbf7ee7af06d241d4f3a44b34d6e3a3ea872ddea5d6');
784
- export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20270129_ETH = () => createCbBTCUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20270129_Eth, 'cbbtc-usdc-20270129', 1801234800, // 2027-01-29T15:00:00Z
785
- '0x9ea83106928cf45829a89c02cea7c73cb3a066d2429d7ca2fcdc0015dc191df1');
786
- export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20270226_ETH = () => createCbBTCUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20270226_Eth, 'cbbtc-usdc-20270226', 1803654000, // 2027-02-26T15:00:00Z
787
- '0xf9c1a9849863863a87600beb24394985a04ad3256b0c750baee0841f35f7f0e2');
788
- export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20270326_ETH = () => createCbBTCUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20270326_Eth, 'cbbtc-usdc-20270326', 1806073200, // 2027-03-26T15:00:00Z
789
- '0xb00767d2cc7d5d9e27501a14e7912a089e34da675a2eb9e030072233db2c4c3b');
790
- // ETHEREUM — Tenor-curated, one rolling ladder per pair
791
- const createTenorReUSDUsdcEthMarket = (value, url, maturity, marketId) => ({
792
- chainIds: [NetworkNumber.Eth],
793
- label: 'Tenor reUSD/USDC',
794
- shortLabel: 'Tenor reUSD/USDC',
795
- url,
796
- value,
797
- midnight: MIDNIGHT_ETH,
798
- loanToken: USDC_ETH,
799
- collaterals: [{
800
- token: REUSD_ETH,
801
- lltv: 0.915,
802
- liquidationCursor: '300000000000000000',
803
- oracle: '0xA66a4F03Fd8031973f8C7718904ce32385f54E70',
804
- }, {
805
- token: TENOR_REUSD_USDC_VAULT_ETH,
806
- lltv: 0.98,
807
- liquidationCursor: '300000000000000000',
808
- oracle: '0xE5f7f5A74E6f4dA2F68b1aa017F204a1883eC0df',
809
- hidden: true,
810
- }],
811
- maturity,
812
- rcfThreshold: '500000000000',
813
- enterGate: ZERO_ADDRESS,
814
- liquidatorGate: ZERO_ADDRESS,
815
- marketId,
816
- protocolName: 'morpho-midnight',
817
- curator: 'Tenor',
818
- });
819
- export const MORPHO_MIDNIGHT_TENOR_REUSD_USDC_915_20260925_ETH = () => createTenorReUSDUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightTenorReUSDUSDC_20260925_Eth, 'tenor-reusd-usdc-20260925', 1790348400, // 2026-09-25T15:00:00Z
820
- '0xdba251b941d135577e1b423301b2eb6a76dfe11479c843185d20bee9208e7393');
821
- export const MORPHO_MIDNIGHT_TENOR_REUSD_USDC_915_20261030_ETH = () => createTenorReUSDUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightTenorReUSDUSDC_20261030_Eth, 'tenor-reusd-usdc-20261030', 1793372400, // 2026-10-30T15:00:00Z
822
- '0x0fdbbc14a6275905b3fc7372e7ce2828eafced9f2c3e442990682055839092c3');
823
- export const MORPHO_MIDNIGHT_TENOR_REUSD_USDC_915_20261127_ETH = () => createTenorReUSDUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightTenorReUSDUSDC_20261127_Eth, 'tenor-reusd-usdc-20261127', 1795791600, // 2026-11-27T15:00:00Z
824
- '0x1cf59f7382f72aee174e251ffaed5b8ada9e052da326fc3f32626bb52e126db6');
825
- export const MORPHO_MIDNIGHT_TENOR_REUSD_USDC_915_20261225_ETH = () => createTenorReUSDUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightTenorReUSDUSDC_20261225_Eth, 'tenor-reusd-usdc-20261225', 1798210800, // 2026-12-25T15:00:00Z
826
- '0xc78981202d07dae20266843ca668a20057beaafe3291b326529558227a03c9ad');
827
- const createTenorSiUSDUsdcEthMarket = (value, url, maturity, marketId) => ({
828
- chainIds: [NetworkNumber.Eth],
829
- label: 'Tenor siUSD/USDC',
830
- shortLabel: 'Tenor siUSD/USDC',
831
- url,
832
- value,
833
- midnight: MIDNIGHT_ETH,
834
- loanToken: USDC_ETH,
835
- collaterals: [{
836
- token: TENOR_SIUSD_USDC_VAULT_ETH,
837
- lltv: 0.98,
838
- liquidationCursor: '300000000000000000',
839
- oracle: '0xE872d1d33b13B52aE7cD9A0CDD4102468350e5fa',
840
- hidden: true,
841
- }, {
842
- token: SIUSD_ETH,
843
- lltv: 0.915,
844
- liquidationCursor: '300000000000000000',
845
- oracle: '0xd2cC46b9B2D761502eF933320ecf0268EC0dfa6d',
846
- }],
847
- maturity,
848
- rcfThreshold: '500000000000',
849
- enterGate: ZERO_ADDRESS,
850
- liquidatorGate: ZERO_ADDRESS,
851
- marketId,
852
- protocolName: 'morpho-midnight',
853
- curator: 'Tenor',
854
- });
855
- export const MORPHO_MIDNIGHT_TENOR_SIUSD_USDC_915_20260925_ETH = () => createTenorSiUSDUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightTenorSiUSDUSDC_20260925_Eth, 'tenor-siusd-usdc-20260925', 1790348400, // 2026-09-25T15:00:00Z
856
- '0x48d95ace842493ce2c1c474c0cb60ac208e9d8a714258e278af9c8ae01a88fa5');
857
- export const MORPHO_MIDNIGHT_TENOR_SIUSD_USDC_915_20261030_ETH = () => createTenorSiUSDUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightTenorSiUSDUSDC_20261030_Eth, 'tenor-siusd-usdc-20261030', 1793372400, // 2026-10-30T15:00:00Z
858
- '0x64985d39a1bae43d2741e7900cd42a2456dbacaee10e73f937abb1c9885d79da');
859
- export const MORPHO_MIDNIGHT_TENOR_SIUSD_USDC_915_20261127_ETH = () => createTenorSiUSDUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightTenorSiUSDUSDC_20261127_Eth, 'tenor-siusd-usdc-20261127', 1795791600, // 2026-11-27T15:00:00Z
860
- '0xed33721166c3f28bc834ce34135cf19b407056275eedf5faf662ccc7a821b7eb');
861
- export const MORPHO_MIDNIGHT_TENOR_SIUSD_USDC_915_20261225_ETH = () => createTenorSiUSDUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightTenorSiUSDUSDC_20261225_Eth, 'tenor-siusd-usdc-20261225', 1798210800, // 2026-12-25T15:00:00Z
862
- '0xe47e71bd0faf8383881b81b7d781ab93bf7bd4d4dc44c9c40add360841e5b26d');
863
- const createTenorStrUSDUsdcEthMarket = (value, url, maturity, marketId) => ({
864
- chainIds: [NetworkNumber.Eth],
865
- label: 'Tenor strUSD/USDC',
866
- shortLabel: 'Tenor strUSD/USDC',
867
- url,
868
- value,
869
- midnight: MIDNIGHT_ETH,
870
- loanToken: USDC_ETH,
871
- collaterals: [{
872
- token: STRUSD_ETH,
873
- lltv: 0.86,
874
- liquidationCursor: '300000000000000000',
875
- oracle: '0x1506c98cE61aC63c8438B710C054a51c5dD9A6A4',
876
- }, {
877
- token: TENOR_STRUSD_USDC_VAULT_ETH,
878
- lltv: 0.98,
879
- liquidationCursor: '300000000000000000',
880
- oracle: '0x361904890a43d4af2D1b8cF642A6C5e661Da5641',
881
- hidden: true,
882
- }],
883
- maturity,
884
- rcfThreshold: '300000000000',
885
- enterGate: ZERO_ADDRESS,
886
- liquidatorGate: ZERO_ADDRESS,
887
- marketId,
888
- protocolName: 'morpho-midnight',
889
- curator: 'Tenor',
890
- });
891
- export const MORPHO_MIDNIGHT_TENOR_STRUSD_USDC_860_20260925_ETH = () => createTenorStrUSDUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightTenorStrUSDUSDC_20260925_Eth, 'tenor-strusd-usdc-20260925', 1790348400, // 2026-09-25T15:00:00Z
892
- '0xa46399e45fe90b7d3c0488c4c73e9b361f758c4481734832a43d764ccdde0c64');
893
- export const MORPHO_MIDNIGHT_TENOR_STRUSD_USDC_860_20261030_ETH = () => createTenorStrUSDUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightTenorStrUSDUSDC_20261030_Eth, 'tenor-strusd-usdc-20261030', 1793372400, // 2026-10-30T15:00:00Z
894
- '0xe473f755d4bd358a676d9385036d8a9e28b64aac250d0959d56d935bed80d675');
895
- export const MORPHO_MIDNIGHT_TENOR_STRUSD_USDC_860_20261127_ETH = () => createTenorStrUSDUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightTenorStrUSDUSDC_20261127_Eth, 'tenor-strusd-usdc-20261127', 1795791600, // 2026-11-27T15:00:00Z
896
- '0x41d4f364feb13ead0b892b252eeb3636969de96a5be843400c86835aa98b1d67');
897
- export const MORPHO_MIDNIGHT_TENOR_STRUSD_USDC_860_20261225_ETH = () => createTenorStrUSDUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightTenorStrUSDUSDC_20261225_Eth, 'tenor-strusd-usdc-20261225', 1798210800, // 2026-12-25T15:00:00Z
898
- '0x91e872193d98f3452424b5dd05e15ac291ed38236af5ff9ff02371bb8efbedb7');
899
- const createTenorUSD3UsdcEthMarket = (value, url, maturity, marketId) => ({
900
- chainIds: [NetworkNumber.Eth],
901
- label: 'Tenor USD3/USDC',
902
- shortLabel: 'Tenor USD3/USDC',
903
- url,
904
- value,
905
- midnight: MIDNIGHT_ETH,
906
- loanToken: USDC_ETH,
907
- collaterals: [{
908
- token: USD3_ETH,
909
- lltv: 0.915,
910
- liquidationCursor: '300000000000000000',
911
- oracle: '0x68b4c2B2b2e245AB54a3bD55DfD5A9d84f029C06',
912
- }, {
913
- token: TENOR_USD3_USDC_VAULT_ETH,
914
- lltv: 0.98,
915
- liquidationCursor: '300000000000000000',
916
- oracle: '0x2C198EC459e0a035078565dEdc3c206604b57d4D',
917
- hidden: true,
918
- }],
919
- maturity,
920
- rcfThreshold: '500000000000',
921
- enterGate: ZERO_ADDRESS,
922
- liquidatorGate: ZERO_ADDRESS,
923
- marketId,
924
- protocolName: 'morpho-midnight',
925
- curator: 'Tenor',
926
- });
927
- export const MORPHO_MIDNIGHT_TENOR_USD3_USDC_915_20260925_ETH = () => createTenorUSD3UsdcEthMarket(MorphoMidnightVersions.MorphoMidnightTenorUSD3USDC_20260925_Eth, 'tenor-usd3-usdc-20260925', 1790348400, // 2026-09-25T15:00:00Z
928
- '0x1edea0a3875af341ea885fc7eac7e02bfce90c534a1602dbd40fefccfe4c24d4');
929
- export const MORPHO_MIDNIGHT_TENOR_USD3_USDC_915_20261030_ETH = () => createTenorUSD3UsdcEthMarket(MorphoMidnightVersions.MorphoMidnightTenorUSD3USDC_20261030_Eth, 'tenor-usd3-usdc-20261030', 1793372400, // 2026-10-30T15:00:00Z
930
- '0x11c6795118a68a7bf5d8995240614454291a698ac387aa6c0e23db46ec5112ed');
931
- export const MORPHO_MIDNIGHT_TENOR_USD3_USDC_915_20261127_ETH = () => createTenorUSD3UsdcEthMarket(MorphoMidnightVersions.MorphoMidnightTenorUSD3USDC_20261127_Eth, 'tenor-usd3-usdc-20261127', 1795791600, // 2026-11-27T15:00:00Z
932
- '0x72ee2771278a1d78e7970a60dc1723c95e16a4384893b044cdbd707347f1abf6');
933
- export const MORPHO_MIDNIGHT_TENOR_USD3_USDC_915_20261225_ETH = () => createTenorUSD3UsdcEthMarket(MorphoMidnightVersions.MorphoMidnightTenorUSD3USDC_20261225_Eth, 'tenor-usd3-usdc-20261225', 1798210800, // 2026-12-25T15:00:00Z
934
- '0x2a6b8c5d4fc953e0f747590267d7b4018f35246ba0fdbf8adbc269a2491bdde1');
935
- const createTenorWETHUsdcEthMarket = (value, url, maturity, marketId) => ({
936
- chainIds: [NetworkNumber.Eth],
937
- label: 'Tenor WETH/USDC',
938
- shortLabel: 'Tenor WETH/USDC',
939
- url,
940
- value,
941
- midnight: MIDNIGHT_ETH,
942
- loanToken: USDC_ETH,
943
- collaterals: [{
944
- token: TENOR_WETH_USDC_VAULT_ETH,
945
- lltv: 0.98,
946
- liquidationCursor: '300000000000000000',
947
- oracle: '0x5c4fd2864C21F0b81730B4EC74030130aA2193Ca',
948
- hidden: true,
949
- }, {
950
- token: WETH_ETH,
951
- lltv: 0.86,
952
- liquidationCursor: '300000000000000000',
953
- oracle: '0x0F948CBa8231Db7898ef36A4212581Ad7b1B4580',
954
- }],
955
- maturity,
956
- rcfThreshold: '300000000000',
957
- enterGate: ZERO_ADDRESS,
958
- liquidatorGate: ZERO_ADDRESS,
959
- marketId,
960
- protocolName: 'morpho-midnight',
961
- curator: 'Tenor',
962
- });
963
- export const MORPHO_MIDNIGHT_TENOR_WETH_USDC_860_20260925_ETH = () => createTenorWETHUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightTenorWETHUSDC_20260925_Eth, 'tenor-weth-usdc-20260925', 1790348400, // 2026-09-25T15:00:00Z
964
- '0x6a463fa464b97f7ba86516be7de82761bfa411522701ede713a269c2c385c70a');
965
- export const MORPHO_MIDNIGHT_TENOR_WETH_USDC_860_20261030_ETH = () => createTenorWETHUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightTenorWETHUSDC_20261030_Eth, 'tenor-weth-usdc-20261030', 1793372400, // 2026-10-30T15:00:00Z
966
- '0xbd6a19559ca14acff13ac124ac0302c0ce6c41ff6a34841242752601e8b0e42c');
967
- export const MORPHO_MIDNIGHT_TENOR_WETH_USDC_860_20261127_ETH = () => createTenorWETHUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightTenorWETHUSDC_20261127_Eth, 'tenor-weth-usdc-20261127', 1795791600, // 2026-11-27T15:00:00Z
968
- '0x348fb368e0f88eb63e739c6753bb0fbf306fb269a8dc0585542a6e4be5c63d6c');
969
- export const MORPHO_MIDNIGHT_TENOR_WETH_USDC_860_20261225_ETH = () => createTenorWETHUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightTenorWETHUSDC_20261225_Eth, 'tenor-weth-usdc-20261225', 1798210800, // 2026-12-25T15:00:00Z
970
- '0xbe554be39e1df0ac1e8287d78ec8de26f0ea6197c6797bdeaed5350f45ae5b9f');
971
- const createTenorWsrUSDUsdcEthMarket = (value, url, maturity, marketId) => ({
972
- chainIds: [NetworkNumber.Eth],
973
- label: 'Tenor wsrUSD/USDC',
974
- shortLabel: 'Tenor wsrUSD/USDC',
975
- url,
976
- value,
977
- midnight: MIDNIGHT_ETH,
978
- loanToken: USDC_ETH,
979
- collaterals: [{
980
- token: TENOR_WSRUSD_USDC_VAULT_ETH,
981
- lltv: 0.98,
982
- liquidationCursor: '300000000000000000',
983
- oracle: '0x7C997e4dddF1D4B7C0D5f290B92d0909ba227c14',
984
- hidden: true,
985
- }, {
986
- token: WSRUSD_ETH,
987
- lltv: 0.945,
988
- liquidationCursor: '300000000000000000',
989
- oracle: '0x938D2eDb20425cF80F008E7ec314Eb456940Da15',
990
- }],
991
- maturity,
992
- rcfThreshold: '700000000000',
993
- enterGate: ZERO_ADDRESS,
994
- liquidatorGate: ZERO_ADDRESS,
995
- marketId,
996
- protocolName: 'morpho-midnight',
997
- curator: 'Tenor',
998
- });
999
- export const MORPHO_MIDNIGHT_TENOR_WSRUSD_USDC_945_20260925_ETH = () => createTenorWsrUSDUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightTenorWsrUSDUSDC_20260925_Eth, 'tenor-wsrusd-usdc-20260925', 1790348400, // 2026-09-25T15:00:00Z
1000
- '0xc028a0b50ba0c606fbf83e5620018f23019b1fb5d1d15b4a5a0d17cc72edcfeb');
1001
- export const MORPHO_MIDNIGHT_TENOR_WSRUSD_USDC_945_20261030_ETH = () => createTenorWsrUSDUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightTenorWsrUSDUSDC_20261030_Eth, 'tenor-wsrusd-usdc-20261030', 1793372400, // 2026-10-30T15:00:00Z
1002
- '0xc6079abce78d158671adedd6778c55edb786f4e4bc7097a59e7fb56e9ddda1b9');
1003
- export const MORPHO_MIDNIGHT_TENOR_WSRUSD_USDC_945_20261127_ETH = () => createTenorWsrUSDUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightTenorWsrUSDUSDC_20261127_Eth, 'tenor-wsrusd-usdc-20261127', 1795791600, // 2026-11-27T15:00:00Z
1004
- '0x8d4dafdceb706a31e06fba2946e5e12ac9656f98ba430eeb695b553333d78640');
1005
- export const MORPHO_MIDNIGHT_TENOR_WSRUSD_USDC_945_20261225_ETH = () => createTenorWsrUSDUsdcEthMarket(MorphoMidnightVersions.MorphoMidnightTenorWsrUSDUSDC_20261225_Eth, 'tenor-wsrusd-usdc-20261225', 1798210800, // 2026-12-25T15:00:00Z
1006
- '0x02763ffcac291ea4b16ed0b3e3e524ee9aa07248a6e4ea6613e3724b54cce116');
1007
- const createTenorWstETHWethEthMarket = (value, url, maturity, marketId) => ({
1008
- chainIds: [NetworkNumber.Eth],
1009
- label: 'Tenor wstETH/WETH',
1010
- shortLabel: 'Tenor wstETH/WETH',
1011
- url,
1012
- value,
1013
- midnight: MIDNIGHT_ETH,
1014
- loanToken: WETH_ETH,
1015
- collaterals: [{
1016
- token: WSTETH_ETH,
1017
- lltv: 0.965,
1018
- liquidationCursor: '300000000000000000',
1019
- oracle: '0xbD60A6770b27E084E8617335ddE769241B0e71D8',
1020
- }, {
1021
- token: TENOR_WSTETH_WETH_VAULT_ETH,
1022
- lltv: 0.98,
1023
- liquidationCursor: '300000000000000000',
1024
- oracle: '0x4eA702113EFAE91B906fC9eC1415dd7a9B860c89',
1025
- hidden: true,
1026
- }],
1027
- maturity,
1028
- rcfThreshold: '600000000000000000000',
1029
- enterGate: ZERO_ADDRESS,
1030
- liquidatorGate: ZERO_ADDRESS,
1031
- marketId,
1032
- protocolName: 'morpho-midnight',
1033
- curator: 'Tenor',
1034
- });
1035
- export const MORPHO_MIDNIGHT_TENOR_WSTETH_WETH_965_20260925_ETH = () => createTenorWstETHWethEthMarket(MorphoMidnightVersions.MorphoMidnightTenorWstETHWETH_20260925_Eth, 'tenor-wsteth-weth-20260925', 1790348400, // 2026-09-25T15:00:00Z
1036
- '0x9ac6a639ace1c291b68b212eb1a95fd080332793f7bfc7dbed58b92bc518ca70');
1037
- export const MORPHO_MIDNIGHT_TENOR_WSTETH_WETH_965_20261030_ETH = () => createTenorWstETHWethEthMarket(MorphoMidnightVersions.MorphoMidnightTenorWstETHWETH_20261030_Eth, 'tenor-wsteth-weth-20261030', 1793372400, // 2026-10-30T15:00:00Z
1038
- '0xf032c0184869e9b856b20cdcc298a1ebbec2cd4ee86e6189ff94852fa368a1b3');
1039
- export const MORPHO_MIDNIGHT_TENOR_WSTETH_WETH_965_20261127_ETH = () => createTenorWstETHWethEthMarket(MorphoMidnightVersions.MorphoMidnightTenorWstETHWETH_20261127_Eth, 'tenor-wsteth-weth-20261127', 1795791600, // 2026-11-27T15:00:00Z
1040
- '0x0cc2301b2247d109d5a05d7a95012077cbdf9908f9f72f315de601c1f7b438f9');
1041
- export const MORPHO_MIDNIGHT_TENOR_WSTETH_WETH_965_20261225_ETH = () => createTenorWstETHWethEthMarket(MorphoMidnightVersions.MorphoMidnightTenorWstETHWETH_20261225_Eth, 'tenor-wsteth-weth-20261225', 1798210800, // 2026-12-25T15:00:00Z
1042
- '0x646f7959780a1555f7696aad335a197fe45710f73f0bcf70f26712923249af4b');
1043
- /**
1044
- * Collaterals we deliberately do not list. Their markets are defined and verified above — they are real
1045
- * markets — but withheld from the map below, so nothing in the app offers, prices or routes to them.
1046
- */
1047
- const EXCLUDED_COLLATERALS = [STRUSD_ETH, WSRUSD_ETH, REUSD_ETH, SIUSD_ETH, USD3_ETH];
1048
- const isExcludedMarket = (market) => market.collaterals.some((collateral) => !collateral.hidden
1049
- && EXCLUDED_COLLATERALS.some((token) => token.toLowerCase() === collateral.token.toLowerCase()));
1050
- const allMorphoMidnightMarkets = (networkId) => ({
684
+ export const MorphoMidnightMarkets = (networkId) => ({
1051
685
  // BASE — Morpho-curated
1052
686
  [MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20260731_Base]: MORPHO_MIDNIGHT_CBBTC_USDC_860_20260731(networkId),
1053
687
  [MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20260828_Base]: MORPHO_MIDNIGHT_CBBTC_USDC_860_20260828(networkId),
@@ -1082,67 +716,19 @@ const allMorphoMidnightMarkets = (networkId) => ({
1082
716
  [MorphoMidnightVersions.MorphoMidnightTenorCbETHWETH_20261127_Base]: MORPHO_MIDNIGHT_TENOR_CBETH_WETH_945_20261127(),
1083
717
  [MorphoMidnightVersions.MorphoMidnightTenorCbETHWETH_20261225_Base]: MORPHO_MIDNIGHT_TENOR_CBETH_WETH_945_20261225(),
1084
718
  [MorphoMidnightVersions.MorphoMidnightTenorCbETHWETH_20270129_Base]: MORPHO_MIDNIGHT_TENOR_CBETH_WETH_945_20270129(),
1085
- // ETHEREUM — Morpho-curated
1086
- [MorphoMidnightVersions.MorphoMidnightWBTCUSDC_860_20260925_Eth]: MORPHO_MIDNIGHT_WBTC_USDC_860_20260925_ETH(),
1087
- [MorphoMidnightVersions.MorphoMidnightWBTCUSDC_860_20261030_Eth]: MORPHO_MIDNIGHT_WBTC_USDC_860_20261030_ETH(),
1088
- [MorphoMidnightVersions.MorphoMidnightWBTCUSDC_860_20261127_Eth]: MORPHO_MIDNIGHT_WBTC_USDC_860_20261127_ETH(),
1089
- [MorphoMidnightVersions.MorphoMidnightWBTCUSDC_860_20261225_Eth]: MORPHO_MIDNIGHT_WBTC_USDC_860_20261225_ETH(),
1090
- [MorphoMidnightVersions.MorphoMidnightWBTCUSDC_860_20270129_Eth]: MORPHO_MIDNIGHT_WBTC_USDC_860_20270129_ETH(),
1091
- [MorphoMidnightVersions.MorphoMidnightWBTCUSDC_860_20270226_Eth]: MORPHO_MIDNIGHT_WBTC_USDC_860_20270226_ETH(),
1092
- [MorphoMidnightVersions.MorphoMidnightWBTCUSDC_860_20270326_Eth]: MORPHO_MIDNIGHT_WBTC_USDC_860_20270326_ETH(),
1093
- [MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20260925_Eth]: MORPHO_MIDNIGHT_CBBTC_USDC_860_20260925_ETH(),
1094
- [MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20261030_Eth]: MORPHO_MIDNIGHT_CBBTC_USDC_860_20261030_ETH(),
1095
- [MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20261127_Eth]: MORPHO_MIDNIGHT_CBBTC_USDC_860_20261127_ETH(),
1096
- [MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20261225_Eth]: MORPHO_MIDNIGHT_CBBTC_USDC_860_20261225_ETH(),
1097
- [MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20270129_Eth]: MORPHO_MIDNIGHT_CBBTC_USDC_860_20270129_ETH(),
1098
- [MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20270226_Eth]: MORPHO_MIDNIGHT_CBBTC_USDC_860_20270226_ETH(),
1099
- [MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20270326_Eth]: MORPHO_MIDNIGHT_CBBTC_USDC_860_20270326_ETH(),
1100
- // ETHEREUM — Tenor-curated
1101
- [MorphoMidnightVersions.MorphoMidnightTenorReUSDUSDC_20260925_Eth]: MORPHO_MIDNIGHT_TENOR_REUSD_USDC_915_20260925_ETH(),
1102
- [MorphoMidnightVersions.MorphoMidnightTenorReUSDUSDC_20261030_Eth]: MORPHO_MIDNIGHT_TENOR_REUSD_USDC_915_20261030_ETH(),
1103
- [MorphoMidnightVersions.MorphoMidnightTenorReUSDUSDC_20261127_Eth]: MORPHO_MIDNIGHT_TENOR_REUSD_USDC_915_20261127_ETH(),
1104
- [MorphoMidnightVersions.MorphoMidnightTenorReUSDUSDC_20261225_Eth]: MORPHO_MIDNIGHT_TENOR_REUSD_USDC_915_20261225_ETH(),
1105
- [MorphoMidnightVersions.MorphoMidnightTenorSiUSDUSDC_20260925_Eth]: MORPHO_MIDNIGHT_TENOR_SIUSD_USDC_915_20260925_ETH(),
1106
- [MorphoMidnightVersions.MorphoMidnightTenorSiUSDUSDC_20261030_Eth]: MORPHO_MIDNIGHT_TENOR_SIUSD_USDC_915_20261030_ETH(),
1107
- [MorphoMidnightVersions.MorphoMidnightTenorSiUSDUSDC_20261127_Eth]: MORPHO_MIDNIGHT_TENOR_SIUSD_USDC_915_20261127_ETH(),
1108
- [MorphoMidnightVersions.MorphoMidnightTenorSiUSDUSDC_20261225_Eth]: MORPHO_MIDNIGHT_TENOR_SIUSD_USDC_915_20261225_ETH(),
1109
- [MorphoMidnightVersions.MorphoMidnightTenorStrUSDUSDC_20260925_Eth]: MORPHO_MIDNIGHT_TENOR_STRUSD_USDC_860_20260925_ETH(),
1110
- [MorphoMidnightVersions.MorphoMidnightTenorStrUSDUSDC_20261030_Eth]: MORPHO_MIDNIGHT_TENOR_STRUSD_USDC_860_20261030_ETH(),
1111
- [MorphoMidnightVersions.MorphoMidnightTenorStrUSDUSDC_20261127_Eth]: MORPHO_MIDNIGHT_TENOR_STRUSD_USDC_860_20261127_ETH(),
1112
- [MorphoMidnightVersions.MorphoMidnightTenorStrUSDUSDC_20261225_Eth]: MORPHO_MIDNIGHT_TENOR_STRUSD_USDC_860_20261225_ETH(),
1113
- [MorphoMidnightVersions.MorphoMidnightTenorUSD3USDC_20260925_Eth]: MORPHO_MIDNIGHT_TENOR_USD3_USDC_915_20260925_ETH(),
1114
- [MorphoMidnightVersions.MorphoMidnightTenorUSD3USDC_20261030_Eth]: MORPHO_MIDNIGHT_TENOR_USD3_USDC_915_20261030_ETH(),
1115
- [MorphoMidnightVersions.MorphoMidnightTenorUSD3USDC_20261127_Eth]: MORPHO_MIDNIGHT_TENOR_USD3_USDC_915_20261127_ETH(),
1116
- [MorphoMidnightVersions.MorphoMidnightTenorUSD3USDC_20261225_Eth]: MORPHO_MIDNIGHT_TENOR_USD3_USDC_915_20261225_ETH(),
1117
- [MorphoMidnightVersions.MorphoMidnightTenorWETHUSDC_20260925_Eth]: MORPHO_MIDNIGHT_TENOR_WETH_USDC_860_20260925_ETH(),
1118
- [MorphoMidnightVersions.MorphoMidnightTenorWETHUSDC_20261030_Eth]: MORPHO_MIDNIGHT_TENOR_WETH_USDC_860_20261030_ETH(),
1119
- [MorphoMidnightVersions.MorphoMidnightTenorWETHUSDC_20261127_Eth]: MORPHO_MIDNIGHT_TENOR_WETH_USDC_860_20261127_ETH(),
1120
- [MorphoMidnightVersions.MorphoMidnightTenorWETHUSDC_20261225_Eth]: MORPHO_MIDNIGHT_TENOR_WETH_USDC_860_20261225_ETH(),
1121
- [MorphoMidnightVersions.MorphoMidnightTenorWsrUSDUSDC_20260925_Eth]: MORPHO_MIDNIGHT_TENOR_WSRUSD_USDC_945_20260925_ETH(),
1122
- [MorphoMidnightVersions.MorphoMidnightTenorWsrUSDUSDC_20261030_Eth]: MORPHO_MIDNIGHT_TENOR_WSRUSD_USDC_945_20261030_ETH(),
1123
- [MorphoMidnightVersions.MorphoMidnightTenorWsrUSDUSDC_20261127_Eth]: MORPHO_MIDNIGHT_TENOR_WSRUSD_USDC_945_20261127_ETH(),
1124
- [MorphoMidnightVersions.MorphoMidnightTenorWsrUSDUSDC_20261225_Eth]: MORPHO_MIDNIGHT_TENOR_WSRUSD_USDC_945_20261225_ETH(),
1125
- [MorphoMidnightVersions.MorphoMidnightTenorWstETHWETH_20260925_Eth]: MORPHO_MIDNIGHT_TENOR_WSTETH_WETH_965_20260925_ETH(),
1126
- [MorphoMidnightVersions.MorphoMidnightTenorWstETHWETH_20261030_Eth]: MORPHO_MIDNIGHT_TENOR_WSTETH_WETH_965_20261030_ETH(),
1127
- [MorphoMidnightVersions.MorphoMidnightTenorWstETHWETH_20261127_Eth]: MORPHO_MIDNIGHT_TENOR_WSTETH_WETH_965_20261127_ETH(),
1128
- [MorphoMidnightVersions.MorphoMidnightTenorWstETHWETH_20261225_Eth]: MORPHO_MIDNIGHT_TENOR_WSTETH_WETH_965_20261225_ETH(),
1129
719
  });
1130
- export const MorphoMidnightMarkets = (networkId) => {
1131
- const all = allMorphoMidnightMarkets(networkId);
1132
- if (!EXCLUDED_COLLATERALS.length)
1133
- return all;
1134
- return Object.fromEntries(Object.entries(all).filter(([, market]) => !isExcludedMarket(market)));
1135
- };
720
+ // Which markets Tenor's router quotes, by id, for the quote helpers that only receive one.
1136
721
  const TENOR_MARKET_IDS = new Set(Object.values(MorphoMidnightMarkets(NetworkNumber.Base))
1137
722
  .filter((market) => market.curator === 'Tenor')
1138
723
  .map((market) => market.marketId.toLowerCase()));
1139
724
  export const isTenorMidnightMarket = (market) => (typeof market === 'string'
1140
725
  ? TENOR_MARKET_IDS.has(market.toLowerCase())
1141
726
  : market.curator === 'Tenor');
1142
- export const findMorphoMidnightMarket = (marketId, network) => (Object.values(MorphoMidnightMarkets(network !== null && network !== void 0 ? network : NetworkNumber.Base))
1143
- .find((market) => market.marketId.toLowerCase() === marketId.toLowerCase()
1144
- && (network === undefined || market.chainIds.includes(network))));
1145
- export const morphoMidnightMarketCollateralParams = (market) => market.collaterals.map(({ token, lltv, liquidationCursor, oracle, }) => ({
1146
- token, lltv, liquidationCursor, oracle,
1147
- }));
1148
- export const morphoMidnightVisibleCollaterals = (market) => market.collaterals.filter((collateral) => !collateral.hidden);
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 || [])];