@defisaver/positions-sdk 2.1.127-midnight-5-dev → 2.1.127-midnight-7-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 (36) hide show
  1. package/cjs/constants/index.d.ts +1 -0
  2. package/cjs/constants/index.js +2 -1
  3. package/cjs/helpers/morphoMidnightHelpers/index.d.ts +8 -14
  4. package/cjs/helpers/morphoMidnightHelpers/index.js +50 -62
  5. package/cjs/helpers/morphoMidnightHelpers/rate.d.ts +11 -0
  6. package/cjs/helpers/morphoMidnightHelpers/rate.js +49 -0
  7. package/cjs/helpers/morphoMidnightHelpers/tenor.d.ts +125 -0
  8. package/cjs/helpers/morphoMidnightHelpers/tenor.js +256 -0
  9. package/cjs/markets/index.d.ts +1 -1
  10. package/cjs/markets/index.js +3 -1
  11. package/cjs/markets/morphoMidnight/index.d.ts +45 -1
  12. package/cjs/markets/morphoMidnight/index.js +542 -42
  13. package/cjs/types/morphoMidnight.d.ts +22 -1
  14. package/cjs/types/morphoMidnight.js +16 -0
  15. package/esm/constants/index.d.ts +1 -0
  16. package/esm/constants/index.js +1 -0
  17. package/esm/helpers/morphoMidnightHelpers/index.d.ts +8 -14
  18. package/esm/helpers/morphoMidnightHelpers/index.js +27 -45
  19. package/esm/helpers/morphoMidnightHelpers/rate.d.ts +11 -0
  20. package/esm/helpers/morphoMidnightHelpers/rate.js +38 -0
  21. package/esm/helpers/morphoMidnightHelpers/tenor.d.ts +125 -0
  22. package/esm/helpers/morphoMidnightHelpers/tenor.js +239 -0
  23. package/esm/markets/index.d.ts +1 -1
  24. package/esm/markets/index.js +1 -1
  25. package/esm/markets/morphoMidnight/index.d.ts +45 -1
  26. package/esm/markets/morphoMidnight/index.js +507 -24
  27. package/esm/types/morphoMidnight.d.ts +22 -1
  28. package/esm/types/morphoMidnight.js +16 -0
  29. package/package.json +1 -1
  30. package/src/constants/index.ts +1 -0
  31. package/src/helpers/morphoMidnightHelpers/index.ts +49 -45
  32. package/src/helpers/morphoMidnightHelpers/rate.ts +46 -0
  33. package/src/helpers/morphoMidnightHelpers/tenor.ts +411 -0
  34. package/src/markets/index.ts +3 -1
  35. package/src/markets/morphoMidnight/index.ts +538 -24
  36. package/src/types/morphoMidnight.ts +23 -0
@@ -1,14 +1,22 @@
1
- import { MorphoMidnightVersions, NetworkNumber } from '../../types';
2
- // Morpho Midnight core contract on Base (same for every market).
3
- const MIDNIGHT_BASE = '0xAdedD8ab6dE832766Fedf0FaC4992E5C4D3EA18A';
4
- const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
5
- // Curated Morpho Midnight markets. Each market is fixed-term: it is uniquely identified on-chain by
6
- // `marketId` (bytes32), derived from the static struct below via MidnightView.toId. Because markets
7
- // churn as maturities roll, this list is hand-maintained for the pairs/maturities the app supports.
8
- // Sourced from the official listing at https://markets.morpho.org/fixed/base (see its sitemap.xml) —
9
- // currently a single USDC/cbBTC pair offered on a monthly maturity ladder; new maturities are added
10
- // there progressively. Every `marketId` here is verified against MidnightView.toId(marketStruct) in
11
- // tests/morphoMidnight.ts.
1
+ import { MorphoMidnightVersions, NetworkNumber, } from '../../types';
2
+ import { ZERO_ADDRESS } from '../../constants';
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`.
7
+ */
8
+ export const MIDNIGHT_BASE = '0xAdedD8ab6dE832766Fedf0FaC4992E5C4D3EA18A';
9
+ const USDC_BASE = '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913';
10
+ const WETH_BASE = '0x4200000000000000000000000000000000000006';
11
+ const CBBTC_BASE = '0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf';
12
+ const CBETH_BASE = '0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22';
13
+ // Tenor's ERC-4626 collateral vaults, one per pair and shared by that pair's whole maturity ladder. Each
14
+ // is a collateral of its markets on-chain without being an asset the app deals in — see the note above
15
+ // the Tenor markets below, and https://www.docs.tenor.finance/technical-docs/addresses/#vaults.
16
+ const TENOR_CBBTC_USDC_VAULT_BASE = '0xf6a70085b7f79FA76B04EbF7A2D7D87C3c5c04BC';
17
+ const TENOR_WETH_USDC_VAULT_BASE = '0xe690a58EF52854513462745237F6A213a0d54dF1';
18
+ const TENOR_CBETH_WETH_VAULT_BASE = '0xFa750DD0099eAdB72d401244De73ce7B89edf90F';
19
+ // Sourced from the official listing at https://markets.morpho.org/fixed/base
12
20
  // BASE — USDC/cbBTC, 86% LLTV, monthly maturity ladder
13
21
  export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20260731 = (networkId = NetworkNumber.Base) => ({
14
22
  chainIds: [NetworkNumber.Base],
@@ -17,9 +25,9 @@ export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20260731 = (networkId = NetworkNumbe
17
25
  url: 'cbbtc-usdc-20260731',
18
26
  value: MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20260731_Base,
19
27
  midnight: MIDNIGHT_BASE,
20
- loanToken: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', // USDC
28
+ loanToken: USDC_BASE,
21
29
  collaterals: [{
22
- token: '0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf', // cbBTC
30
+ token: CBBTC_BASE,
23
31
  lltv: 0.86,
24
32
  liquidationCursor: '300000000000000000',
25
33
  oracle: '0x663BECd10daE6C4A3Dcd89F1d76c1174199639B9',
@@ -30,6 +38,7 @@ export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20260731 = (networkId = NetworkNumbe
30
38
  liquidatorGate: ZERO_ADDRESS,
31
39
  marketId: '0x168e31250e0008b50d2255a5ab85e0265acd6c12e4f9a1336134b36a65a47937',
32
40
  protocolName: 'morpho-midnight',
41
+ curator: 'Morpho',
33
42
  });
34
43
  export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20260828 = (networkId = NetworkNumber.Base) => ({
35
44
  chainIds: [NetworkNumber.Base],
@@ -38,9 +47,9 @@ export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20260828 = (networkId = NetworkNumbe
38
47
  url: 'cbbtc-usdc-20260828',
39
48
  value: MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20260828_Base,
40
49
  midnight: MIDNIGHT_BASE,
41
- loanToken: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', // USDC
50
+ loanToken: USDC_BASE,
42
51
  collaterals: [{
43
- token: '0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf', // cbBTC
52
+ token: CBBTC_BASE,
44
53
  lltv: 0.86,
45
54
  liquidationCursor: '300000000000000000',
46
55
  oracle: '0x663BECd10daE6C4A3Dcd89F1d76c1174199639B9',
@@ -51,6 +60,7 @@ export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20260828 = (networkId = NetworkNumbe
51
60
  liquidatorGate: ZERO_ADDRESS,
52
61
  marketId: '0x05959752fdeff325962b9d263edb421efc6e2186a49360dba6c32e86ebf6c84c',
53
62
  protocolName: 'morpho-midnight',
63
+ curator: 'Morpho',
54
64
  });
55
65
  export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20260925 = (networkId = NetworkNumber.Base) => ({
56
66
  chainIds: [NetworkNumber.Base],
@@ -59,9 +69,9 @@ export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20260925 = (networkId = NetworkNumbe
59
69
  url: 'cbbtc-usdc-20260925',
60
70
  value: MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20260925_Base,
61
71
  midnight: MIDNIGHT_BASE,
62
- loanToken: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', // USDC
72
+ loanToken: USDC_BASE,
63
73
  collaterals: [{
64
- token: '0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf', // cbBTC
74
+ token: CBBTC_BASE,
65
75
  lltv: 0.86,
66
76
  liquidationCursor: '300000000000000000',
67
77
  oracle: '0x663BECd10daE6C4A3Dcd89F1d76c1174199639B9',
@@ -72,6 +82,7 @@ export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20260925 = (networkId = NetworkNumbe
72
82
  liquidatorGate: ZERO_ADDRESS,
73
83
  marketId: '0x549cd072daf99328554f3a6d2d4d6f4a07f1c59369e891e6391946f9cf75f221',
74
84
  protocolName: 'morpho-midnight',
85
+ curator: 'Morpho',
75
86
  });
76
87
  export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20261030 = (networkId = NetworkNumber.Base) => ({
77
88
  chainIds: [NetworkNumber.Base],
@@ -80,9 +91,9 @@ export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20261030 = (networkId = NetworkNumbe
80
91
  url: 'cbbtc-usdc-20261030',
81
92
  value: MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20261030_Base,
82
93
  midnight: MIDNIGHT_BASE,
83
- loanToken: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', // USDC
94
+ loanToken: USDC_BASE,
84
95
  collaterals: [{
85
- token: '0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf', // cbBTC
96
+ token: CBBTC_BASE,
86
97
  lltv: 0.86,
87
98
  liquidationCursor: '300000000000000000',
88
99
  oracle: '0x663BECd10daE6C4A3Dcd89F1d76c1174199639B9',
@@ -93,6 +104,7 @@ export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20261030 = (networkId = NetworkNumbe
93
104
  liquidatorGate: ZERO_ADDRESS,
94
105
  marketId: '0x43d6120738c57b2bc5835901f8250fdf7fc8054efbb006c6ccba61ec898e5ed9',
95
106
  protocolName: 'morpho-midnight',
107
+ curator: 'Morpho',
96
108
  });
97
109
  export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20261127 = (networkId = NetworkNumber.Base) => ({
98
110
  chainIds: [NetworkNumber.Base],
@@ -101,9 +113,9 @@ export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20261127 = (networkId = NetworkNumbe
101
113
  url: 'cbbtc-usdc-20261127',
102
114
  value: MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20261127_Base,
103
115
  midnight: MIDNIGHT_BASE,
104
- loanToken: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', // USDC
116
+ loanToken: USDC_BASE,
105
117
  collaterals: [{
106
- token: '0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf', // cbBTC
118
+ token: CBBTC_BASE,
107
119
  lltv: 0.86,
108
120
  liquidationCursor: '300000000000000000',
109
121
  oracle: '0x663BECd10daE6C4A3Dcd89F1d76c1174199639B9',
@@ -114,6 +126,7 @@ export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20261127 = (networkId = NetworkNumbe
114
126
  liquidatorGate: ZERO_ADDRESS,
115
127
  marketId: '0xe1878eec035b601f301484e63a49a428f8e008e2bf57a2fd88a3fc3a4c1b1acd',
116
128
  protocolName: 'morpho-midnight',
129
+ curator: 'Morpho',
117
130
  });
118
131
  export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20261225 = (networkId = NetworkNumber.Base) => ({
119
132
  chainIds: [NetworkNumber.Base],
@@ -122,9 +135,9 @@ export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20261225 = (networkId = NetworkNumbe
122
135
  url: 'cbbtc-usdc-20261225',
123
136
  value: MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20261225_Base,
124
137
  midnight: MIDNIGHT_BASE,
125
- loanToken: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', // USDC
138
+ loanToken: USDC_BASE,
126
139
  collaterals: [{
127
- token: '0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf', // cbBTC
140
+ token: CBBTC_BASE,
128
141
  lltv: 0.86,
129
142
  liquidationCursor: '300000000000000000',
130
143
  oracle: '0x663BECd10daE6C4A3Dcd89F1d76c1174199639B9',
@@ -135,14 +148,484 @@ export const MORPHO_MIDNIGHT_CBBTC_USDC_860_20261225 = (networkId = NetworkNumbe
135
148
  liquidatorGate: ZERO_ADDRESS,
136
149
  marketId: '0x9593c3a6dba45b6106af8dc8b45ba8c505d90d3d68a3d33f7c278dd921b637da',
137
150
  protocolName: 'morpho-midnight',
151
+ curator: 'Morpho',
152
+ });
153
+ // ── Tenor-curated ────────────────────────────────────────────────────────────────────────────────
154
+ // Tenor Midnight markets are the same structs as Morpho's (`MorphoMidnightMarketData`), on the same core
155
+ // contract; only the order book differs. Identify them on Morpho's `/v0/midnight/markets` by `market_id`
156
+ // = Tenor's `fixedMarketIdentifier`; they come back `listed: false`, meaning Tenor — not Morpho — serves
157
+ // the book.
158
+ //
159
+ // Every market below is verified against `MidnightView.toMarket(marketId)` on Base: core address,
160
+ // maturity, rcfThreshold, loan token, gates and collaterals all match. On-chain each market carries **two**
161
+ // collaterals — the pair's own token at index 0, and Tenor's ERC-4626 vault at index 1 (98% LLTV; the
162
+ // `metadata.vault` of the parent tenor market, listed at
163
+ // https://www.docs.tenor.finance/technical-docs/addresses/#vaults). The vault is not an asset the app
164
+ // deals in, so it is split out into `hiddenCollaterals` instead of `collaterals`: everything that renders
165
+ // or prices a position sees a single-collateral market, and because the vault stays the *suffix* of the
166
+ // set, the SDK's positional `prices[i]` / `collateral[i]` reads stay aligned with `collaterals`.
167
+ //
168
+ // It is only split out, never dropped: the market id is the hash of the full struct, so a `Market` handed
169
+ // to the core has to be `[...collaterals, ...hiddenCollaterals]` or the call addresses a market of its own
170
+ // making. The take path builds no struct — offer tuples carry the market's full collateral set straight
171
+ // from the router's offer JSON.
172
+ export const MORPHO_MIDNIGHT_TENOR_CBBTC_USDC_860_20260827 = (networkId = NetworkNumber.Base) => ({
173
+ chainIds: [NetworkNumber.Base],
174
+ label: 'Tenor cbBTC/USDC',
175
+ shortLabel: 'Tenor cbBTC/USDC',
176
+ url: 'tenor-cbbtc-usdc-20260827',
177
+ value: MorphoMidnightVersions.MorphoMidnightTenorCbBTCUSDC_20260827_Base,
178
+ midnight: MIDNIGHT_BASE,
179
+ loanToken: USDC_BASE,
180
+ collaterals: [{
181
+ token: CBBTC_BASE,
182
+ lltv: 0.86,
183
+ liquidationCursor: '300000000000000000',
184
+ oracle: '0x663BECd10daE6C4A3Dcd89F1d76c1174199639B9',
185
+ }],
186
+ hiddenCollaterals: [{
187
+ token: TENOR_CBBTC_USDC_VAULT_BASE,
188
+ lltv: 0.98,
189
+ liquidationCursor: '300000000000000000',
190
+ oracle: '0x4a24e4bf269cE26aAD2dF00437e7730d25FCdE26',
191
+ }],
192
+ maturity: 1787788800, // 2026-08-27T00:00:00Z
193
+ rcfThreshold: '3000000000',
194
+ enterGate: ZERO_ADDRESS,
195
+ liquidatorGate: ZERO_ADDRESS,
196
+ marketId: '0x44495af1cca7842191a65a73978e01ed72238731e193c3b11460083efd60a318',
197
+ protocolName: 'morpho-midnight',
198
+ curator: 'Tenor',
199
+ });
200
+ export const MORPHO_MIDNIGHT_TENOR_CBBTC_USDC_860_20260924 = (networkId = NetworkNumber.Base) => ({
201
+ chainIds: [NetworkNumber.Base],
202
+ label: 'Tenor cbBTC/USDC',
203
+ shortLabel: 'Tenor cbBTC/USDC',
204
+ url: 'tenor-cbbtc-usdc-20260924',
205
+ value: MorphoMidnightVersions.MorphoMidnightTenorCbBTCUSDC_20260924_Base,
206
+ midnight: MIDNIGHT_BASE,
207
+ loanToken: USDC_BASE,
208
+ collaterals: [{
209
+ token: CBBTC_BASE,
210
+ lltv: 0.86,
211
+ liquidationCursor: '300000000000000000',
212
+ oracle: '0x663BECd10daE6C4A3Dcd89F1d76c1174199639B9',
213
+ }],
214
+ hiddenCollaterals: [{
215
+ token: TENOR_CBBTC_USDC_VAULT_BASE,
216
+ lltv: 0.98,
217
+ liquidationCursor: '300000000000000000',
218
+ oracle: '0x4a24e4bf269cE26aAD2dF00437e7730d25FCdE26',
219
+ }],
220
+ maturity: 1790208000, // 2026-09-24T00:00:00Z
221
+ rcfThreshold: '3000000000',
222
+ enterGate: ZERO_ADDRESS,
223
+ liquidatorGate: ZERO_ADDRESS,
224
+ marketId: '0x99fbed74bc7cef3c90d68709d8de8f820261a45875ca197a0e65338affd09481',
225
+ protocolName: 'morpho-midnight',
226
+ curator: 'Tenor',
227
+ });
228
+ export const MORPHO_MIDNIGHT_TENOR_CBBTC_USDC_860_20261022 = (networkId = NetworkNumber.Base) => ({
229
+ chainIds: [NetworkNumber.Base],
230
+ label: 'Tenor cbBTC/USDC',
231
+ shortLabel: 'Tenor cbBTC/USDC',
232
+ url: 'tenor-cbbtc-usdc-20261022',
233
+ value: MorphoMidnightVersions.MorphoMidnightTenorCbBTCUSDC_20261022_Base,
234
+ midnight: MIDNIGHT_BASE,
235
+ loanToken: USDC_BASE,
236
+ collaterals: [{
237
+ token: CBBTC_BASE,
238
+ lltv: 0.86,
239
+ liquidationCursor: '300000000000000000',
240
+ oracle: '0x663BECd10daE6C4A3Dcd89F1d76c1174199639B9',
241
+ }],
242
+ hiddenCollaterals: [{
243
+ token: TENOR_CBBTC_USDC_VAULT_BASE,
244
+ lltv: 0.98,
245
+ liquidationCursor: '300000000000000000',
246
+ oracle: '0x4a24e4bf269cE26aAD2dF00437e7730d25FCdE26',
247
+ }],
248
+ maturity: 1792627200, // 2026-10-22T00:00:00Z
249
+ rcfThreshold: '3000000000',
250
+ enterGate: ZERO_ADDRESS,
251
+ liquidatorGate: ZERO_ADDRESS,
252
+ marketId: '0x2f4f088f20c0bebe6167f8c9d7aec11115c08eb73486b6f9642f7c7260d4d094',
253
+ protocolName: 'morpho-midnight',
254
+ curator: 'Tenor',
255
+ });
256
+ export const MORPHO_MIDNIGHT_TENOR_CBBTC_USDC_860_20261119 = (networkId = NetworkNumber.Base) => ({
257
+ chainIds: [NetworkNumber.Base],
258
+ label: 'Tenor cbBTC/USDC',
259
+ shortLabel: 'Tenor cbBTC/USDC',
260
+ url: 'tenor-cbbtc-usdc-20261119',
261
+ value: MorphoMidnightVersions.MorphoMidnightTenorCbBTCUSDC_20261119_Base,
262
+ midnight: MIDNIGHT_BASE,
263
+ loanToken: USDC_BASE,
264
+ collaterals: [{
265
+ token: CBBTC_BASE,
266
+ lltv: 0.86,
267
+ liquidationCursor: '300000000000000000',
268
+ oracle: '0x663BECd10daE6C4A3Dcd89F1d76c1174199639B9',
269
+ }],
270
+ hiddenCollaterals: [{
271
+ token: TENOR_CBBTC_USDC_VAULT_BASE,
272
+ lltv: 0.98,
273
+ liquidationCursor: '300000000000000000',
274
+ oracle: '0x4a24e4bf269cE26aAD2dF00437e7730d25FCdE26',
275
+ }],
276
+ maturity: 1795046400, // 2026-11-19T00:00:00Z
277
+ rcfThreshold: '3000000000',
278
+ enterGate: ZERO_ADDRESS,
279
+ liquidatorGate: ZERO_ADDRESS,
280
+ marketId: '0x776e8d667a394650c21615c9b5a9b5355f4aa777db3cebaebb057ffba588c7af',
281
+ protocolName: 'morpho-midnight',
282
+ curator: 'Tenor',
283
+ });
284
+ export const MORPHO_MIDNIGHT_TENOR_CBBTC_USDC_860_20261217 = (networkId = NetworkNumber.Base) => ({
285
+ chainIds: [NetworkNumber.Base],
286
+ label: 'Tenor cbBTC/USDC',
287
+ shortLabel: 'Tenor cbBTC/USDC',
288
+ url: 'tenor-cbbtc-usdc-20261217',
289
+ value: MorphoMidnightVersions.MorphoMidnightTenorCbBTCUSDC_20261217_Base,
290
+ midnight: MIDNIGHT_BASE,
291
+ loanToken: USDC_BASE,
292
+ collaterals: [{
293
+ token: CBBTC_BASE,
294
+ lltv: 0.86,
295
+ liquidationCursor: '300000000000000000',
296
+ oracle: '0x663BECd10daE6C4A3Dcd89F1d76c1174199639B9',
297
+ }],
298
+ hiddenCollaterals: [{
299
+ token: TENOR_CBBTC_USDC_VAULT_BASE,
300
+ lltv: 0.98,
301
+ liquidationCursor: '300000000000000000',
302
+ oracle: '0x4a24e4bf269cE26aAD2dF00437e7730d25FCdE26',
303
+ }],
304
+ maturity: 1797465600, // 2026-12-17T00:00:00Z
305
+ rcfThreshold: '3000000000',
306
+ enterGate: ZERO_ADDRESS,
307
+ liquidatorGate: ZERO_ADDRESS,
308
+ marketId: '0xd82863083585d715a2e0d8ed61e0e20e4f6c566171d3bfed513ad55797177b17',
309
+ protocolName: 'morpho-midnight',
310
+ curator: 'Tenor',
311
+ });
312
+ export const MORPHO_MIDNIGHT_TENOR_WETH_USDC_860_20260827 = (networkId = NetworkNumber.Base) => ({
313
+ chainIds: [NetworkNumber.Base],
314
+ label: 'Tenor WETH/USDC',
315
+ shortLabel: 'Tenor WETH/USDC',
316
+ url: 'tenor-weth-usdc-20260827',
317
+ value: MorphoMidnightVersions.MorphoMidnightTenorWETHUSDC_20260827_Base,
318
+ midnight: MIDNIGHT_BASE,
319
+ loanToken: USDC_BASE,
320
+ collaterals: [{
321
+ token: WETH_BASE,
322
+ lltv: 0.86,
323
+ liquidationCursor: '300000000000000000',
324
+ oracle: '0xFEa2D58cEfCb9fcb597723c6bAE66fFE4193aFE4',
325
+ }],
326
+ hiddenCollaterals: [{
327
+ token: TENOR_WETH_USDC_VAULT_BASE,
328
+ lltv: 0.98,
329
+ liquidationCursor: '300000000000000000',
330
+ oracle: '0x784519B1b59A1e1498f077066bB9336672bcc3EE',
331
+ }],
332
+ maturity: 1787788800,
333
+ rcfThreshold: '3000000000',
334
+ enterGate: ZERO_ADDRESS,
335
+ liquidatorGate: ZERO_ADDRESS,
336
+ marketId: '0xf27319855df886a604dda3d5675007f0aa6eee504c99f1d789c86b21075f7c20',
337
+ protocolName: 'morpho-midnight',
338
+ curator: 'Tenor',
339
+ });
340
+ export const MORPHO_MIDNIGHT_TENOR_WETH_USDC_860_20260924 = (networkId = NetworkNumber.Base) => ({
341
+ chainIds: [NetworkNumber.Base],
342
+ label: 'Tenor WETH/USDC',
343
+ shortLabel: 'Tenor WETH/USDC',
344
+ url: 'tenor-weth-usdc-20260924',
345
+ value: MorphoMidnightVersions.MorphoMidnightTenorWETHUSDC_20260924_Base,
346
+ midnight: MIDNIGHT_BASE,
347
+ loanToken: USDC_BASE,
348
+ collaterals: [{
349
+ token: WETH_BASE,
350
+ lltv: 0.86,
351
+ liquidationCursor: '300000000000000000',
352
+ oracle: '0xFEa2D58cEfCb9fcb597723c6bAE66fFE4193aFE4',
353
+ }],
354
+ hiddenCollaterals: [{
355
+ token: TENOR_WETH_USDC_VAULT_BASE,
356
+ lltv: 0.98,
357
+ liquidationCursor: '300000000000000000',
358
+ oracle: '0x784519B1b59A1e1498f077066bB9336672bcc3EE',
359
+ }],
360
+ maturity: 1790208000,
361
+ rcfThreshold: '3000000000',
362
+ enterGate: ZERO_ADDRESS,
363
+ liquidatorGate: ZERO_ADDRESS,
364
+ marketId: '0x9b7fed2a6b24c47b8995dfa4fb2b4bc87fe245c10fb842865e568611a96804aa',
365
+ protocolName: 'morpho-midnight',
366
+ curator: 'Tenor',
367
+ });
368
+ export const MORPHO_MIDNIGHT_TENOR_WETH_USDC_860_20261022 = (networkId = NetworkNumber.Base) => ({
369
+ chainIds: [NetworkNumber.Base],
370
+ label: 'Tenor WETH/USDC',
371
+ shortLabel: 'Tenor WETH/USDC',
372
+ url: 'tenor-weth-usdc-20261022',
373
+ value: MorphoMidnightVersions.MorphoMidnightTenorWETHUSDC_20261022_Base,
374
+ midnight: MIDNIGHT_BASE,
375
+ loanToken: USDC_BASE,
376
+ collaterals: [{
377
+ token: WETH_BASE,
378
+ lltv: 0.86,
379
+ liquidationCursor: '300000000000000000',
380
+ oracle: '0xFEa2D58cEfCb9fcb597723c6bAE66fFE4193aFE4',
381
+ }],
382
+ hiddenCollaterals: [{
383
+ token: TENOR_WETH_USDC_VAULT_BASE,
384
+ lltv: 0.98,
385
+ liquidationCursor: '300000000000000000',
386
+ oracle: '0x784519B1b59A1e1498f077066bB9336672bcc3EE',
387
+ }],
388
+ maturity: 1792627200,
389
+ rcfThreshold: '3000000000',
390
+ enterGate: ZERO_ADDRESS,
391
+ liquidatorGate: ZERO_ADDRESS,
392
+ marketId: '0xfc2562129c7d538fcb6b2490d07aa5c69971d9d0b75e2f9bbf054ef99a311474',
393
+ protocolName: 'morpho-midnight',
394
+ curator: 'Tenor',
395
+ });
396
+ export const MORPHO_MIDNIGHT_TENOR_WETH_USDC_860_20261119 = (networkId = NetworkNumber.Base) => ({
397
+ chainIds: [NetworkNumber.Base],
398
+ label: 'Tenor WETH/USDC',
399
+ shortLabel: 'Tenor WETH/USDC',
400
+ url: 'tenor-weth-usdc-20261119',
401
+ value: MorphoMidnightVersions.MorphoMidnightTenorWETHUSDC_20261119_Base,
402
+ midnight: MIDNIGHT_BASE,
403
+ loanToken: USDC_BASE,
404
+ collaterals: [{
405
+ token: WETH_BASE,
406
+ lltv: 0.86,
407
+ liquidationCursor: '300000000000000000',
408
+ oracle: '0xFEa2D58cEfCb9fcb597723c6bAE66fFE4193aFE4',
409
+ }],
410
+ hiddenCollaterals: [{
411
+ token: TENOR_WETH_USDC_VAULT_BASE,
412
+ lltv: 0.98,
413
+ liquidationCursor: '300000000000000000',
414
+ oracle: '0x784519B1b59A1e1498f077066bB9336672bcc3EE',
415
+ }],
416
+ maturity: 1795046400,
417
+ rcfThreshold: '3000000000',
418
+ enterGate: ZERO_ADDRESS,
419
+ liquidatorGate: ZERO_ADDRESS,
420
+ marketId: '0x8da96adc9a55288bda5f07eb062d501db04d0fa152dd0f78341f6232bc4f884d',
421
+ protocolName: 'morpho-midnight',
422
+ curator: 'Tenor',
423
+ });
424
+ export const MORPHO_MIDNIGHT_TENOR_WETH_USDC_860_20261217 = (networkId = NetworkNumber.Base) => ({
425
+ chainIds: [NetworkNumber.Base],
426
+ label: 'Tenor WETH/USDC',
427
+ shortLabel: 'Tenor WETH/USDC',
428
+ url: 'tenor-weth-usdc-20261217',
429
+ value: MorphoMidnightVersions.MorphoMidnightTenorWETHUSDC_20261217_Base,
430
+ midnight: MIDNIGHT_BASE,
431
+ loanToken: USDC_BASE,
432
+ collaterals: [{
433
+ token: WETH_BASE,
434
+ lltv: 0.86,
435
+ liquidationCursor: '300000000000000000',
436
+ oracle: '0xFEa2D58cEfCb9fcb597723c6bAE66fFE4193aFE4',
437
+ }],
438
+ hiddenCollaterals: [{
439
+ token: TENOR_WETH_USDC_VAULT_BASE,
440
+ lltv: 0.98,
441
+ liquidationCursor: '300000000000000000',
442
+ oracle: '0x784519B1b59A1e1498f077066bB9336672bcc3EE',
443
+ }],
444
+ maturity: 1797465600,
445
+ rcfThreshold: '3000000000',
446
+ enterGate: ZERO_ADDRESS,
447
+ liquidatorGate: ZERO_ADDRESS,
448
+ marketId: '0x24684af2c2c9edaa0ab4472dd9b8cc238aa33b7cc8151ae02fe614536f91af86',
449
+ protocolName: 'morpho-midnight',
450
+ curator: 'Tenor',
451
+ });
452
+ export const MORPHO_MIDNIGHT_TENOR_CBETH_WETH_945_20260827 = (networkId = NetworkNumber.Base) => ({
453
+ chainIds: [NetworkNumber.Base],
454
+ label: 'Tenor cbETH/WETH',
455
+ shortLabel: 'Tenor cbETH/WETH',
456
+ url: 'tenor-cbeth-weth-20260827',
457
+ value: MorphoMidnightVersions.MorphoMidnightTenorCbETHWETH_20260827_Base,
458
+ midnight: MIDNIGHT_BASE,
459
+ loanToken: WETH_BASE,
460
+ collaterals: [{
461
+ token: CBETH_BASE,
462
+ lltv: 0.945,
463
+ liquidationCursor: '300000000000000000',
464
+ oracle: '0xB03855Ad5AFD6B8db8091DD5551CAC4ed621d9E6',
465
+ }],
466
+ hiddenCollaterals: [{
467
+ token: TENOR_CBETH_WETH_VAULT_BASE,
468
+ lltv: 0.98,
469
+ liquidationCursor: '300000000000000000',
470
+ oracle: '0xa02f629871be35d6db0F88C944cF955554Ec87c0',
471
+ }],
472
+ maturity: 1787788800,
473
+ rcfThreshold: '4000000000000000000',
474
+ enterGate: ZERO_ADDRESS,
475
+ liquidatorGate: ZERO_ADDRESS,
476
+ marketId: '0x13cdfedf56f731817322c6932b48f496da937c36a51c7178ac63ed915d02fc98',
477
+ protocolName: 'morpho-midnight',
478
+ curator: 'Tenor',
479
+ });
480
+ export const MORPHO_MIDNIGHT_TENOR_CBETH_WETH_945_20260924 = (networkId = NetworkNumber.Base) => ({
481
+ chainIds: [NetworkNumber.Base],
482
+ label: 'Tenor cbETH/WETH',
483
+ shortLabel: 'Tenor cbETH/WETH',
484
+ url: 'tenor-cbeth-weth-20260924',
485
+ value: MorphoMidnightVersions.MorphoMidnightTenorCbETHWETH_20260924_Base,
486
+ midnight: MIDNIGHT_BASE,
487
+ loanToken: WETH_BASE,
488
+ collaterals: [{
489
+ token: CBETH_BASE,
490
+ lltv: 0.945,
491
+ liquidationCursor: '300000000000000000',
492
+ oracle: '0xB03855Ad5AFD6B8db8091DD5551CAC4ed621d9E6',
493
+ }],
494
+ hiddenCollaterals: [{
495
+ token: TENOR_CBETH_WETH_VAULT_BASE,
496
+ lltv: 0.98,
497
+ liquidationCursor: '300000000000000000',
498
+ oracle: '0xa02f629871be35d6db0F88C944cF955554Ec87c0',
499
+ }],
500
+ maturity: 1790208000,
501
+ rcfThreshold: '4000000000000000000',
502
+ enterGate: ZERO_ADDRESS,
503
+ liquidatorGate: ZERO_ADDRESS,
504
+ marketId: '0x74e310372280cc5c648a1f185db1ee906d2985a7dab8119568a9213f083efec0',
505
+ protocolName: 'morpho-midnight',
506
+ curator: 'Tenor',
507
+ });
508
+ export const MORPHO_MIDNIGHT_TENOR_CBETH_WETH_945_20261022 = (networkId = NetworkNumber.Base) => ({
509
+ chainIds: [NetworkNumber.Base],
510
+ label: 'Tenor cbETH/WETH',
511
+ shortLabel: 'Tenor cbETH/WETH',
512
+ url: 'tenor-cbeth-weth-20261022',
513
+ value: MorphoMidnightVersions.MorphoMidnightTenorCbETHWETH_20261022_Base,
514
+ midnight: MIDNIGHT_BASE,
515
+ loanToken: WETH_BASE,
516
+ collaterals: [{
517
+ token: CBETH_BASE,
518
+ lltv: 0.945,
519
+ liquidationCursor: '300000000000000000',
520
+ oracle: '0xB03855Ad5AFD6B8db8091DD5551CAC4ed621d9E6',
521
+ }],
522
+ hiddenCollaterals: [{
523
+ token: TENOR_CBETH_WETH_VAULT_BASE,
524
+ lltv: 0.98,
525
+ liquidationCursor: '300000000000000000',
526
+ oracle: '0xa02f629871be35d6db0F88C944cF955554Ec87c0',
527
+ }],
528
+ maturity: 1792627200,
529
+ rcfThreshold: '4000000000000000000',
530
+ enterGate: ZERO_ADDRESS,
531
+ liquidatorGate: ZERO_ADDRESS,
532
+ marketId: '0xcfce553a004af262e842c1b83cdfc01835bb83fbee7a8128f9b91663e2ebaf43',
533
+ protocolName: 'morpho-midnight',
534
+ curator: 'Tenor',
535
+ });
536
+ export const MORPHO_MIDNIGHT_TENOR_CBETH_WETH_945_20261119 = (networkId = NetworkNumber.Base) => ({
537
+ chainIds: [NetworkNumber.Base],
538
+ label: 'Tenor cbETH/WETH',
539
+ shortLabel: 'Tenor cbETH/WETH',
540
+ url: 'tenor-cbeth-weth-20261119',
541
+ value: MorphoMidnightVersions.MorphoMidnightTenorCbETHWETH_20261119_Base,
542
+ midnight: MIDNIGHT_BASE,
543
+ loanToken: WETH_BASE,
544
+ collaterals: [{
545
+ token: CBETH_BASE,
546
+ lltv: 0.945,
547
+ liquidationCursor: '300000000000000000',
548
+ oracle: '0xB03855Ad5AFD6B8db8091DD5551CAC4ed621d9E6',
549
+ }],
550
+ hiddenCollaterals: [{
551
+ token: TENOR_CBETH_WETH_VAULT_BASE,
552
+ lltv: 0.98,
553
+ liquidationCursor: '300000000000000000',
554
+ oracle: '0xa02f629871be35d6db0F88C944cF955554Ec87c0',
555
+ }],
556
+ maturity: 1795046400,
557
+ rcfThreshold: '4000000000000000000',
558
+ enterGate: ZERO_ADDRESS,
559
+ liquidatorGate: ZERO_ADDRESS,
560
+ marketId: '0xb1aa171a525fa9f3333ed47d816170930e9a1a83a1816a6b44ee0d89e1610691',
561
+ protocolName: 'morpho-midnight',
562
+ curator: 'Tenor',
563
+ });
564
+ export const MORPHO_MIDNIGHT_TENOR_CBETH_WETH_945_20261217 = (networkId = NetworkNumber.Base) => ({
565
+ chainIds: [NetworkNumber.Base],
566
+ label: 'Tenor cbETH/WETH',
567
+ shortLabel: 'Tenor cbETH/WETH',
568
+ url: 'tenor-cbeth-weth-20261217',
569
+ value: MorphoMidnightVersions.MorphoMidnightTenorCbETHWETH_20261217_Base,
570
+ midnight: MIDNIGHT_BASE,
571
+ loanToken: WETH_BASE,
572
+ collaterals: [{
573
+ token: CBETH_BASE,
574
+ lltv: 0.945,
575
+ liquidationCursor: '300000000000000000',
576
+ oracle: '0xB03855Ad5AFD6B8db8091DD5551CAC4ed621d9E6',
577
+ }],
578
+ hiddenCollaterals: [{
579
+ token: TENOR_CBETH_WETH_VAULT_BASE,
580
+ lltv: 0.98,
581
+ liquidationCursor: '300000000000000000',
582
+ oracle: '0xa02f629871be35d6db0F88C944cF955554Ec87c0',
583
+ }],
584
+ maturity: 1797465600,
585
+ rcfThreshold: '4000000000000000000',
586
+ enterGate: ZERO_ADDRESS,
587
+ liquidatorGate: ZERO_ADDRESS,
588
+ marketId: '0x001f992fd7dbc6f0fee600f1b1c627c4a7b6d70762043221a514b57f8df37cb7',
589
+ protocolName: 'morpho-midnight',
590
+ curator: 'Tenor',
138
591
  });
139
592
  export const MorphoMidnightMarkets = (networkId) => ({
140
- // BASE
593
+ // BASE — Morpho-curated
141
594
  [MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20260731_Base]: MORPHO_MIDNIGHT_CBBTC_USDC_860_20260731(networkId),
142
595
  [MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20260828_Base]: MORPHO_MIDNIGHT_CBBTC_USDC_860_20260828(networkId),
143
596
  [MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20260925_Base]: MORPHO_MIDNIGHT_CBBTC_USDC_860_20260925(networkId),
144
597
  [MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20261030_Base]: MORPHO_MIDNIGHT_CBBTC_USDC_860_20261030(networkId),
145
598
  [MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20261127_Base]: MORPHO_MIDNIGHT_CBBTC_USDC_860_20261127(networkId),
146
599
  [MorphoMidnightVersions.MorphoMidnightCbBTCUSDC_860_20261225_Base]: MORPHO_MIDNIGHT_CBBTC_USDC_860_20261225(networkId),
600
+ // BASE — Tenor-curated
601
+ [MorphoMidnightVersions.MorphoMidnightTenorCbBTCUSDC_20260827_Base]: MORPHO_MIDNIGHT_TENOR_CBBTC_USDC_860_20260827(networkId),
602
+ [MorphoMidnightVersions.MorphoMidnightTenorCbBTCUSDC_20260924_Base]: MORPHO_MIDNIGHT_TENOR_CBBTC_USDC_860_20260924(networkId),
603
+ [MorphoMidnightVersions.MorphoMidnightTenorCbBTCUSDC_20261022_Base]: MORPHO_MIDNIGHT_TENOR_CBBTC_USDC_860_20261022(networkId),
604
+ [MorphoMidnightVersions.MorphoMidnightTenorCbBTCUSDC_20261119_Base]: MORPHO_MIDNIGHT_TENOR_CBBTC_USDC_860_20261119(networkId),
605
+ [MorphoMidnightVersions.MorphoMidnightTenorCbBTCUSDC_20261217_Base]: MORPHO_MIDNIGHT_TENOR_CBBTC_USDC_860_20261217(networkId),
606
+ [MorphoMidnightVersions.MorphoMidnightTenorWETHUSDC_20260827_Base]: MORPHO_MIDNIGHT_TENOR_WETH_USDC_860_20260827(networkId),
607
+ [MorphoMidnightVersions.MorphoMidnightTenorWETHUSDC_20260924_Base]: MORPHO_MIDNIGHT_TENOR_WETH_USDC_860_20260924(networkId),
608
+ [MorphoMidnightVersions.MorphoMidnightTenorWETHUSDC_20261022_Base]: MORPHO_MIDNIGHT_TENOR_WETH_USDC_860_20261022(networkId),
609
+ [MorphoMidnightVersions.MorphoMidnightTenorWETHUSDC_20261119_Base]: MORPHO_MIDNIGHT_TENOR_WETH_USDC_860_20261119(networkId),
610
+ [MorphoMidnightVersions.MorphoMidnightTenorWETHUSDC_20261217_Base]: MORPHO_MIDNIGHT_TENOR_WETH_USDC_860_20261217(networkId),
611
+ [MorphoMidnightVersions.MorphoMidnightTenorCbETHWETH_20260827_Base]: MORPHO_MIDNIGHT_TENOR_CBETH_WETH_945_20260827(networkId),
612
+ [MorphoMidnightVersions.MorphoMidnightTenorCbETHWETH_20260924_Base]: MORPHO_MIDNIGHT_TENOR_CBETH_WETH_945_20260924(networkId),
613
+ [MorphoMidnightVersions.MorphoMidnightTenorCbETHWETH_20261022_Base]: MORPHO_MIDNIGHT_TENOR_CBETH_WETH_945_20261022(networkId),
614
+ [MorphoMidnightVersions.MorphoMidnightTenorCbETHWETH_20261119_Base]: MORPHO_MIDNIGHT_TENOR_CBETH_WETH_945_20261119(networkId),
615
+ [MorphoMidnightVersions.MorphoMidnightTenorCbETHWETH_20261217_Base]: MORPHO_MIDNIGHT_TENOR_CBETH_WETH_945_20261217(networkId),
147
616
  });
617
+ // Which markets Tenor's router quotes, by id, for the quote helpers that only receive one.
618
+ const TENOR_MARKET_IDS = new Set(Object.values(MorphoMidnightMarkets(NetworkNumber.Base))
619
+ .filter((market) => market.curator === 'Tenor')
620
+ .map((market) => market.marketId.toLowerCase()));
621
+ export const isTenorMidnightMarket = (market) => (typeof market === 'string'
622
+ ? TENOR_MARKET_IDS.has(market.toLowerCase())
623
+ : market.curator === 'Tenor');
148
624
  export const findMorphoMidnightMarket = (marketId, network = NetworkNumber.Base) => Object.values(MorphoMidnightMarkets(network)).find((market) => market.marketId.toLowerCase() === marketId.toLowerCase());
625
+ /**
626
+ * The market's collateral set as the chain knows it: the listed collaterals followed by the curator's
627
+ * hidden ones. This — not `collaterals` — is what a `Market` struct takes, since the market id is the hash
628
+ * of that struct. Anything assembling one for a contract call goes through here so it can't quietly build
629
+ * a market of its own instead.
630
+ */
631
+ export const morphoMidnightMarketCollateralParams = (market) => [...market.collaterals, ...(market.hiddenCollaterals || [])];
@@ -5,8 +5,24 @@ export declare enum MorphoMidnightVersions {
5
5
  MorphoMidnightCbBTCUSDC_860_20260925_Base = "morphomidnightcbbtcusdc_860_20260925_base",
6
6
  MorphoMidnightCbBTCUSDC_860_20261030_Base = "morphomidnightcbbtcusdc_860_20261030_base",
7
7
  MorphoMidnightCbBTCUSDC_860_20261127_Base = "morphomidnightcbbtcusdc_860_20261127_base",
8
- MorphoMidnightCbBTCUSDC_860_20261225_Base = "morphomidnightcbbtcusdc_860_20261225_base"
8
+ MorphoMidnightCbBTCUSDC_860_20261225_Base = "morphomidnightcbbtcusdc_860_20261225_base",
9
+ MorphoMidnightTenorCbBTCUSDC_20260827_Base = "morphomidnighttenorcbbtcusdc_20260827_base",
10
+ MorphoMidnightTenorCbBTCUSDC_20260924_Base = "morphomidnighttenorcbbtcusdc_20260924_base",
11
+ MorphoMidnightTenorCbBTCUSDC_20261022_Base = "morphomidnighttenorcbbtcusdc_20261022_base",
12
+ MorphoMidnightTenorCbBTCUSDC_20261119_Base = "morphomidnighttenorcbbtcusdc_20261119_base",
13
+ MorphoMidnightTenorCbBTCUSDC_20261217_Base = "morphomidnighttenorcbbtcusdc_20261217_base",
14
+ MorphoMidnightTenorWETHUSDC_20260827_Base = "morphomidnighttenorwethusdc_20260827_base",
15
+ MorphoMidnightTenorWETHUSDC_20260924_Base = "morphomidnighttenorwethusdc_20260924_base",
16
+ MorphoMidnightTenorWETHUSDC_20261022_Base = "morphomidnighttenorwethusdc_20261022_base",
17
+ MorphoMidnightTenorWETHUSDC_20261119_Base = "morphomidnighttenorwethusdc_20261119_base",
18
+ MorphoMidnightTenorWETHUSDC_20261217_Base = "morphomidnighttenorwethusdc_20261217_base",
19
+ MorphoMidnightTenorCbETHWETH_20260827_Base = "morphomidnighttenorcbethweth_20260827_base",
20
+ MorphoMidnightTenorCbETHWETH_20260924_Base = "morphomidnighttenorcbethweth_20260924_base",
21
+ MorphoMidnightTenorCbETHWETH_20261022_Base = "morphomidnighttenorcbethweth_20261022_base",
22
+ MorphoMidnightTenorCbETHWETH_20261119_Base = "morphomidnighttenorcbethweth_20261119_base",
23
+ MorphoMidnightTenorCbETHWETH_20261217_Base = "morphomidnighttenorcbethweth_20261217_base"
9
24
  }
25
+ export type MorphoMidnightCurator = 'Morpho' | 'Tenor';
10
26
  export interface MorphoMidnightCollateralParams {
11
27
  token: EthAddress;
12
28
  lltv: number | string;
@@ -22,12 +38,17 @@ export interface MorphoMidnightMarketData {
22
38
  midnight: EthAddress;
23
39
  loanToken: EthAddress;
24
40
  collaterals: MorphoMidnightCollateralParams[];
41
+ /**
42
+ * Tenor's curated markets list the curator's own vault share token next to the real collateral.
43
+ */
44
+ hiddenCollaterals?: MorphoMidnightCollateralParams[];
25
45
  maturity: number;
26
46
  rcfThreshold: number | string;
27
47
  enterGate: EthAddress;
28
48
  liquidatorGate: EthAddress;
29
49
  marketId: string;
30
50
  protocolName: string;
51
+ curator: MorphoMidnightCurator;
31
52
  }
32
53
  export interface MorphoMidnightAssetData {
33
54
  symbol: string;