@mento-protocol/mento-sdk 3.1.0-beta.0 → 3.1.0-beta.2

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.
@@ -1,5 +1,5 @@
1
1
  // This file is auto-generated. Do not edit manually.
2
- // Generated on 2026-03-10T12:14:17.694Z
2
+ // Generated on 2026-03-10T14:45:05.132Z
3
3
  /**
4
4
  * Enum of all token symbols across all supported chains
5
5
  */
@@ -9,10 +9,8 @@ export var TokenSymbol;
9
9
  TokenSymbol["AUSD"] = "AUSD";
10
10
  TokenSymbol["BRLm"] = "BRLm";
11
11
  TokenSymbol["CADm"] = "CADm";
12
- TokenSymbol["CELO"] = "CELO";
13
12
  TokenSymbol["CHFm"] = "CHFm";
14
13
  TokenSymbol["COPm"] = "COPm";
15
- TokenSymbol["EURm"] = "EURm";
16
14
  TokenSymbol["GBPm"] = "GBPm";
17
15
  TokenSymbol["GHSm"] = "GHSm";
18
16
  TokenSymbol["JPYm"] = "JPYm";
@@ -24,7 +22,6 @@ export var TokenSymbol;
24
22
  TokenSymbol["USD_"] = "USD\u20AE";
25
23
  TokenSymbol["XOFm"] = "XOFm";
26
24
  TokenSymbol["ZARm"] = "ZARm";
27
- TokenSymbol["axlEUROC"] = "axlEUROC";
28
25
  TokenSymbol["axlUSDC"] = "axlUSDC";
29
26
  })(TokenSymbol || (TokenSymbol = {}));
30
27
  /**
@@ -35,6 +32,12 @@ export const cachedTokens = {
35
32
  143: [],
36
33
  // Chain 10143
37
34
  10143: [
35
+ {
36
+ address: '0x04de554E875c9797dC4ceBd834A9e99fa8fD5Df9',
37
+ symbol: TokenSymbol.GBPm,
38
+ name: 'Mento British Pound',
39
+ decimals: 18,
40
+ },
38
41
  {
39
42
  address: '0x5eCc03111ad2A78F981A108759bc73BAE2AB31bc',
40
43
  symbol: TokenSymbol.USDm,
@@ -57,46 +60,34 @@ export const cachedTokens = {
57
60
  // Chain 42220
58
61
  42220: [
59
62
  {
60
- address: '0x765DE816845861e75A25fCA122bb6898B8B1282a',
61
- symbol: TokenSymbol.USDm,
62
- name: 'Mento Dollar',
63
- decimals: 18,
64
- },
65
- {
66
- address: '0xD8763CBa276a3738E6DE85b4b3bF5FDed6D6cA73',
67
- symbol: TokenSymbol.EURm,
68
- name: 'Mento Euro',
69
- decimals: 18,
70
- },
71
- {
72
- address: '0xe8537a3d056DA446677B9E9d6c5dB704EaAb4787',
73
- symbol: TokenSymbol.BRLm,
74
- name: 'Mento Brazilian Real',
63
+ address: '0xCCF663b1fF11028f0b19058d0f7B674004a40746',
64
+ symbol: TokenSymbol.GBPm,
65
+ name: 'Mento British Pound',
75
66
  decimals: 18,
76
67
  },
77
68
  {
78
- address: '0x73F93dcc49cB8A239e2032663e9475dd5ef29A08',
79
- symbol: TokenSymbol.XOFm,
80
- name: 'Mento West African CFA franc',
69
+ address: '0x765DE816845861e75A25fCA122bb6898B8B1282a',
70
+ symbol: TokenSymbol.USDm,
71
+ name: 'Mento Dollar',
81
72
  decimals: 18,
82
73
  },
83
74
  {
84
- address: '0x456a3D042C0DbD3db53D5489e98dFb038553B0d0',
85
- symbol: TokenSymbol.KESm,
86
- name: 'Mento Kenyan Shilling',
87
- decimals: 18,
75
+ address: '0xEB466342C4d449BC9f53A865D5Cb90586f405215',
76
+ symbol: TokenSymbol.axlUSDC,
77
+ name: 'Axelar Wrapped USDC',
78
+ decimals: 6,
88
79
  },
89
80
  {
90
- address: '0x105d4A9306D2E55a71d2Eb95B81553AE1dC20d7B',
91
- symbol: TokenSymbol.PHPm,
92
- name: 'Mento Philippine Peso',
93
- decimals: 18,
81
+ address: '0xcebA9300f2b948710d2653dD7B07f33A8B32118C',
82
+ symbol: TokenSymbol.USDC,
83
+ name: 'USDC',
84
+ decimals: 6,
94
85
  },
95
86
  {
96
- address: '0x8A567e2aE79CA692Bd748aB832081C45de4041eA',
97
- symbol: TokenSymbol.COPm,
98
- name: 'Mento Colombian Peso',
99
- decimals: 18,
87
+ address: '0x48065fbBE25f71C9282ddf5e1cD6D6A887483D5e',
88
+ symbol: TokenSymbol.USD_,
89
+ name: 'Tether USD',
90
+ decimals: 6,
100
91
  },
101
92
  {
102
93
  address: '0xfAeA5F3404bbA20D3cc2f8C4B0A888F55a3c7313',
@@ -104,24 +95,12 @@ export const cachedTokens = {
104
95
  name: 'Mento Ghanaian Cedi',
105
96
  decimals: 18,
106
97
  },
107
- {
108
- address: '0xCCF663b1fF11028f0b19058d0f7B674004a40746',
109
- symbol: TokenSymbol.GBPm,
110
- name: 'Mento British Pound',
111
- decimals: 18,
112
- },
113
98
  {
114
99
  address: '0x4c35853A3B4e647fD266f4de678dCc8fEC410BF6',
115
100
  symbol: TokenSymbol.ZARm,
116
101
  name: 'Mento South African Rand',
117
102
  decimals: 18,
118
103
  },
119
- {
120
- address: '0xff4Ab19391af240c311c54200a492233052B6325',
121
- symbol: TokenSymbol.CADm,
122
- name: 'Mento Canadian Dollar',
123
- decimals: 18,
124
- },
125
104
  {
126
105
  address: '0x7175504C455076F15c04A2F90a8e352281F492F9',
127
106
  symbol: TokenSymbol.AUDm,
@@ -141,73 +120,79 @@ export const cachedTokens = {
141
120
  decimals: 18,
142
121
  },
143
122
  {
144
- address: '0xc45eCF20f3CD864B32D9794d6f76814aE8892e20',
145
- symbol: TokenSymbol.JPYm,
146
- name: 'Mento Japanese Yen',
123
+ address: '0x456a3D042C0DbD3db53D5489e98dFb038553B0d0',
124
+ symbol: TokenSymbol.KESm,
125
+ name: 'Mento Kenyan Shilling',
147
126
  decimals: 18,
148
127
  },
149
128
  {
150
- address: '0x471EcE3750Da237f93B8E339c536989b8978a438',
151
- symbol: TokenSymbol.CELO,
152
- name: 'Celo native asset',
129
+ address: '0xff4Ab19391af240c311c54200a492233052B6325',
130
+ symbol: TokenSymbol.CADm,
131
+ name: 'Mento Canadian Dollar',
153
132
  decimals: 18,
154
133
  },
155
134
  {
156
- address: '0x061cc5a2C863E0C1Cb404006D559dB18A34C762d',
157
- symbol: TokenSymbol.axlEUROC,
158
- name: 'Axelar Wrapped EUROC',
159
- decimals: 6,
135
+ address: '0x105d4A9306D2E55a71d2Eb95B81553AE1dC20d7B',
136
+ symbol: TokenSymbol.PHPm,
137
+ name: 'Mento Philippine Peso',
138
+ decimals: 18,
160
139
  },
161
140
  {
162
- address: '0xcebA9300f2b948710d2653dD7B07f33A8B32118C',
163
- symbol: TokenSymbol.USDC,
164
- name: 'USDC',
165
- decimals: 6,
141
+ address: '0xc45eCF20f3CD864B32D9794d6f76814aE8892e20',
142
+ symbol: TokenSymbol.JPYm,
143
+ name: 'Mento Japanese Yen',
144
+ decimals: 18,
166
145
  },
167
146
  {
168
- address: '0xEB466342C4d449BC9f53A865D5Cb90586f405215',
169
- symbol: TokenSymbol.axlUSDC,
170
- name: 'Axelar Wrapped USDC',
171
- decimals: 6,
147
+ address: '0x8A567e2aE79CA692Bd748aB832081C45de4041eA',
148
+ symbol: TokenSymbol.COPm,
149
+ name: 'Mento Colombian Peso',
150
+ decimals: 18,
172
151
  },
173
152
  {
174
- address: '0x48065fbBE25f71C9282ddf5e1cD6D6A887483D5e',
175
- symbol: TokenSymbol.USD_,
176
- name: 'Tether USD',
177
- decimals: 6,
153
+ address: '0xe8537a3d056DA446677B9E9d6c5dB704EaAb4787',
154
+ symbol: TokenSymbol.BRLm,
155
+ name: 'Mento Brazilian Real',
156
+ decimals: 18,
157
+ },
158
+ {
159
+ address: '0x73F93dcc49cB8A239e2032663e9475dd5ef29A08',
160
+ symbol: TokenSymbol.XOFm,
161
+ name: 'Mento West African CFA franc',
162
+ decimals: 18,
178
163
  }
179
164
  ],
180
165
  // Chain 11142220
181
166
  11142220: [
182
167
  {
183
- address: '0xdE9e4C3ce781b4bA68120d6261cbad65ce0aB00b',
184
- symbol: TokenSymbol.USDm,
185
- name: 'Mento Dollar',
168
+ address: '0x85F5181Abdbf0e1814Fc4358582Ae07b8eBA3aF3',
169
+ symbol: TokenSymbol.GBPm,
170
+ name: 'Mento British Pound',
186
171
  decimals: 18,
187
172
  },
188
173
  {
189
- address: '0xA99dC247d6b7B2E3ab48a1fEE101b83cD6aCd82a',
190
- symbol: TokenSymbol.EURm,
191
- name: 'Mento Euro',
174
+ address: '0xdE9e4C3ce781b4bA68120d6261cbad65ce0aB00b',
175
+ symbol: TokenSymbol.USDm,
176
+ name: 'Mento Dollar',
192
177
  decimals: 18,
193
178
  },
194
179
  {
195
- address: '0x2294298942fdc79417DE9E0D740A4957E0e7783a',
196
- symbol: TokenSymbol.BRLm,
197
- name: 'Mento Brazilian Real',
180
+ address: '0x6285De9DA7C1d329C0451628638908915002d9d1',
181
+ symbol: TokenSymbol.axlUSDC,
182
+ name: 'Mento Mock axlUSDC',
198
183
  decimals: 18,
199
184
  },
200
185
  {
201
- address: '0x5505b70207aE3B826c1A7607F19F3Bf73444A082',
202
- symbol: TokenSymbol.XOFm,
203
- name: 'Mento West African CFA franc',
204
- decimals: 18,
186
+ address: '0x01C5C0122039549AD1493B8220cABEdD739BC44E',
187
+ symbol: TokenSymbol.USDC,
188
+ name: 'USDC',
189
+ decimals: 6,
205
190
  },
206
191
  {
207
- address: '0xC7e4635651E3e3Af82b61d3E23c159438daE3BbF',
208
- symbol: TokenSymbol.KESm,
209
- name: 'Mento Kenyan Shilling',
210
- decimals: 18,
192
+ address: '0xd077A400968890Eacc75cdc901F0356c943e4fDb',
193
+ symbol: TokenSymbol.USD_,
194
+ name: 'Tether USD',
195
+ decimals: 6,
211
196
  },
212
197
  {
213
198
  address: '0x0352976d940a2C3FBa0C3623198947Ee1d17869E',
@@ -216,27 +201,15 @@ export const cachedTokens = {
216
201
  decimals: 18,
217
202
  },
218
203
  {
219
- address: '0x5F8d55c3627d2dc0a2B4afa798f877242F382F67',
220
- symbol: TokenSymbol.COPm,
221
- name: 'Mento Colombian Peso',
222
- decimals: 18,
223
- },
224
- {
225
- address: '0x5e94B8C872bD47BC4255E60ECBF44D5E66e7401C',
226
- symbol: TokenSymbol.GHSm,
227
- name: 'Mento Ghanaian Cedi',
228
- decimals: 18,
229
- },
230
- {
231
- address: '0x85F5181Abdbf0e1814Fc4358582Ae07b8eBA3aF3',
232
- symbol: TokenSymbol.GBPm,
233
- name: 'Mento British Pound',
204
+ address: '0x5505b70207aE3B826c1A7607F19F3Bf73444A082',
205
+ symbol: TokenSymbol.XOFm,
206
+ name: 'Mento West African CFA franc',
234
207
  decimals: 18,
235
208
  },
236
209
  {
237
- address: '0x10CCfB235b0E1Ed394bACE4560C3ed016697687e',
238
- symbol: TokenSymbol.ZARm,
239
- name: 'Mento South African Rand',
210
+ address: '0x5873Faeb42F3563dcD77F0fbbdA818E6d6DA3139',
211
+ symbol: TokenSymbol.AUDm,
212
+ name: 'Mento Australian Dollar',
240
213
  decimals: 18,
241
214
  },
242
215
  {
@@ -246,9 +219,9 @@ export const cachedTokens = {
246
219
  decimals: 18,
247
220
  },
248
221
  {
249
- address: '0x5873Faeb42F3563dcD77F0fbbdA818E6d6DA3139',
250
- symbol: TokenSymbol.AUDm,
251
- name: 'Mento Australian Dollar',
222
+ address: '0x10CCfB235b0E1Ed394bACE4560C3ed016697687e',
223
+ symbol: TokenSymbol.ZARm,
224
+ name: 'Mento South African Rand',
252
225
  decimals: 18,
253
226
  },
254
227
  {
@@ -264,40 +237,34 @@ export const cachedTokens = {
264
237
  decimals: 18,
265
238
  },
266
239
  {
267
- address: '0x3d5ae86F34E2a82771496D140daFAEf3789dF888',
268
- symbol: TokenSymbol.NGNm,
269
- name: 'Mento Nigerian Naira',
240
+ address: '0x5F8d55c3627d2dc0a2B4afa798f877242F382F67',
241
+ symbol: TokenSymbol.COPm,
242
+ name: 'Mento Colombian Peso',
270
243
  decimals: 18,
271
244
  },
272
245
  {
273
- address: '0x6285De9DA7C1d329C0451628638908915002d9d1',
274
- symbol: TokenSymbol.axlUSDC,
275
- name: 'Mento Mock axlUSDC',
246
+ address: '0x2294298942fdc79417DE9E0D740A4957E0e7783a',
247
+ symbol: TokenSymbol.BRLm,
248
+ name: 'Mento Brazilian Real',
276
249
  decimals: 18,
277
250
  },
278
251
  {
279
- address: '0x471EcE3750Da237f93B8E339c536989b8978a438',
280
- symbol: TokenSymbol.CELO,
281
- name: 'Celo native asset',
252
+ address: '0x5e94B8C872bD47BC4255E60ECBF44D5E66e7401C',
253
+ symbol: TokenSymbol.GHSm,
254
+ name: 'Mento Ghanaian Cedi',
282
255
  decimals: 18,
283
256
  },
284
257
  {
285
- address: '0x9883d788d40F1C7595a780ed881Ea833C7743B4B',
286
- symbol: TokenSymbol.axlEUROC,
287
- name: 'Mento Mock axlEUROC',
258
+ address: '0x3d5ae86F34E2a82771496D140daFAEf3789dF888',
259
+ symbol: TokenSymbol.NGNm,
260
+ name: 'Mento Nigerian Naira',
288
261
  decimals: 18,
289
262
  },
290
263
  {
291
- address: '0x01C5C0122039549AD1493B8220cABEdD739BC44E',
292
- symbol: TokenSymbol.USDC,
293
- name: 'USDC',
294
- decimals: 6,
295
- },
296
- {
297
- address: '0xd077A400968890Eacc75cdc901F0356c943e4fDb',
298
- symbol: TokenSymbol.USD_,
299
- name: 'Tether USD',
300
- decimals: 6,
264
+ address: '0xC7e4635651E3e3Af82b61d3E23c159438daE3BbF',
265
+ symbol: TokenSymbol.KESm,
266
+ name: 'Mento Kenyan Shilling',
267
+ decimals: 18,
301
268
  }
302
269
  ],
303
270
  };
@@ -308,53 +275,48 @@ export const cachedTokens = {
308
275
  export const TOKEN_ADDRESSES_BY_CHAIN = {
309
276
  143: {},
310
277
  10143: {
278
+ [TokenSymbol.GBPm]: '0x04de554E875c9797dC4ceBd834A9e99fa8fD5Df9',
311
279
  [TokenSymbol.USDm]: '0x5eCc03111ad2A78F981A108759bc73BAE2AB31bc',
312
280
  [TokenSymbol.USDC]: '0x534b2f3A21130d7a60830c2Df862319e593943A3',
313
281
  [TokenSymbol.AUSD]: '0x502E67D3fE9302A5e4Ec1CFCDdbD6F34F9B9484B',
314
282
  },
315
283
  42220: {
284
+ [TokenSymbol.GBPm]: '0xCCF663b1fF11028f0b19058d0f7B674004a40746',
316
285
  [TokenSymbol.USDm]: '0x765DE816845861e75A25fCA122bb6898B8B1282a',
317
- [TokenSymbol.EURm]: '0xD8763CBa276a3738E6DE85b4b3bF5FDed6D6cA73',
318
- [TokenSymbol.BRLm]: '0xe8537a3d056DA446677B9E9d6c5dB704EaAb4787',
319
- [TokenSymbol.XOFm]: '0x73F93dcc49cB8A239e2032663e9475dd5ef29A08',
320
- [TokenSymbol.KESm]: '0x456a3D042C0DbD3db53D5489e98dFb038553B0d0',
321
- [TokenSymbol.PHPm]: '0x105d4A9306D2E55a71d2Eb95B81553AE1dC20d7B',
322
- [TokenSymbol.COPm]: '0x8A567e2aE79CA692Bd748aB832081C45de4041eA',
286
+ [TokenSymbol.axlUSDC]: '0xEB466342C4d449BC9f53A865D5Cb90586f405215',
287
+ [TokenSymbol.USDC]: '0xcebA9300f2b948710d2653dD7B07f33A8B32118C',
288
+ [TokenSymbol.USD_]: '0x48065fbBE25f71C9282ddf5e1cD6D6A887483D5e',
323
289
  [TokenSymbol.GHSm]: '0xfAeA5F3404bbA20D3cc2f8C4B0A888F55a3c7313',
324
- [TokenSymbol.GBPm]: '0xCCF663b1fF11028f0b19058d0f7B674004a40746',
325
290
  [TokenSymbol.ZARm]: '0x4c35853A3B4e647fD266f4de678dCc8fEC410BF6',
326
- [TokenSymbol.CADm]: '0xff4Ab19391af240c311c54200a492233052B6325',
327
291
  [TokenSymbol.AUDm]: '0x7175504C455076F15c04A2F90a8e352281F492F9',
328
292
  [TokenSymbol.CHFm]: '0xb55a79F398E759E43C95b979163f30eC87Ee131D',
329
293
  [TokenSymbol.NGNm]: '0xE2702Bd97ee33c88c8f6f92DA3B733608aa76F71',
294
+ [TokenSymbol.KESm]: '0x456a3D042C0DbD3db53D5489e98dFb038553B0d0',
295
+ [TokenSymbol.CADm]: '0xff4Ab19391af240c311c54200a492233052B6325',
296
+ [TokenSymbol.PHPm]: '0x105d4A9306D2E55a71d2Eb95B81553AE1dC20d7B',
330
297
  [TokenSymbol.JPYm]: '0xc45eCF20f3CD864B32D9794d6f76814aE8892e20',
331
- [TokenSymbol.CELO]: '0x471EcE3750Da237f93B8E339c536989b8978a438',
332
- [TokenSymbol.axlEUROC]: '0x061cc5a2C863E0C1Cb404006D559dB18A34C762d',
333
- [TokenSymbol.USDC]: '0xcebA9300f2b948710d2653dD7B07f33A8B32118C',
334
- [TokenSymbol.axlUSDC]: '0xEB466342C4d449BC9f53A865D5Cb90586f405215',
335
- [TokenSymbol.USD_]: '0x48065fbBE25f71C9282ddf5e1cD6D6A887483D5e',
298
+ [TokenSymbol.COPm]: '0x8A567e2aE79CA692Bd748aB832081C45de4041eA',
299
+ [TokenSymbol.BRLm]: '0xe8537a3d056DA446677B9E9d6c5dB704EaAb4787',
300
+ [TokenSymbol.XOFm]: '0x73F93dcc49cB8A239e2032663e9475dd5ef29A08',
336
301
  },
337
302
  11142220: {
303
+ [TokenSymbol.GBPm]: '0x85F5181Abdbf0e1814Fc4358582Ae07b8eBA3aF3',
338
304
  [TokenSymbol.USDm]: '0xdE9e4C3ce781b4bA68120d6261cbad65ce0aB00b',
339
- [TokenSymbol.EURm]: '0xA99dC247d6b7B2E3ab48a1fEE101b83cD6aCd82a',
340
- [TokenSymbol.BRLm]: '0x2294298942fdc79417DE9E0D740A4957E0e7783a',
341
- [TokenSymbol.XOFm]: '0x5505b70207aE3B826c1A7607F19F3Bf73444A082',
342
- [TokenSymbol.KESm]: '0xC7e4635651E3e3Af82b61d3E23c159438daE3BbF',
305
+ [TokenSymbol.axlUSDC]: '0x6285De9DA7C1d329C0451628638908915002d9d1',
306
+ [TokenSymbol.USDC]: '0x01C5C0122039549AD1493B8220cABEdD739BC44E',
307
+ [TokenSymbol.USD_]: '0xd077A400968890Eacc75cdc901F0356c943e4fDb',
343
308
  [TokenSymbol.PHPm]: '0x0352976d940a2C3FBa0C3623198947Ee1d17869E',
344
- [TokenSymbol.COPm]: '0x5F8d55c3627d2dc0a2B4afa798f877242F382F67',
345
- [TokenSymbol.GHSm]: '0x5e94B8C872bD47BC4255E60ECBF44D5E66e7401C',
346
- [TokenSymbol.GBPm]: '0x85F5181Abdbf0e1814Fc4358582Ae07b8eBA3aF3',
347
- [TokenSymbol.ZARm]: '0x10CCfB235b0E1Ed394bACE4560C3ed016697687e',
348
- [TokenSymbol.CADm]: '0xF151c9a13b78C84f93f50B8b3bC689fedc134F60',
309
+ [TokenSymbol.XOFm]: '0x5505b70207aE3B826c1A7607F19F3Bf73444A082',
349
310
  [TokenSymbol.AUDm]: '0x5873Faeb42F3563dcD77F0fbbdA818E6d6DA3139',
311
+ [TokenSymbol.CADm]: '0xF151c9a13b78C84f93f50B8b3bC689fedc134F60',
312
+ [TokenSymbol.ZARm]: '0x10CCfB235b0E1Ed394bACE4560C3ed016697687e',
350
313
  [TokenSymbol.CHFm]: '0x284E9b7B623eAE866914b7FA0eB720C2Bb3C2980',
351
314
  [TokenSymbol.JPYm]: '0x85Bee67D435A39f7467a8a9DE34a5B73D25Df426',
315
+ [TokenSymbol.COPm]: '0x5F8d55c3627d2dc0a2B4afa798f877242F382F67',
316
+ [TokenSymbol.BRLm]: '0x2294298942fdc79417DE9E0D740A4957E0e7783a',
317
+ [TokenSymbol.GHSm]: '0x5e94B8C872bD47BC4255E60ECBF44D5E66e7401C',
352
318
  [TokenSymbol.NGNm]: '0x3d5ae86F34E2a82771496D140daFAEf3789dF888',
353
- [TokenSymbol.axlUSDC]: '0x6285De9DA7C1d329C0451628638908915002d9d1',
354
- [TokenSymbol.CELO]: '0x471EcE3750Da237f93B8E339c536989b8978a438',
355
- [TokenSymbol.axlEUROC]: '0x9883d788d40F1C7595a780ed881Ea833C7743B4B',
356
- [TokenSymbol.USDC]: '0x01C5C0122039549AD1493B8220cABEdD739BC44E',
357
- [TokenSymbol.USD_]: '0xd077A400968890Eacc75cdc901F0356c943e4fDb',
319
+ [TokenSymbol.KESm]: '0xC7e4635651E3e3Af82b61d3E23c159438daE3BbF',
358
320
  },
359
321
  };
360
322
  /**
@@ -30,16 +30,12 @@ export const addresses = {
30
30
  CDPLiquidityStrategy: '0x4e78BD9565341EAbe99cDC024acB044d9BDcB985',
31
31
  },
32
32
  [ChainId.MONAD_TESTNET]: {
33
- // Oracles & Breakers
34
33
  BreakerBox: '0x88869E30609D2C0E4032463D713328C6f541878e',
35
34
  MedianDeltaBreaker: '0xf923C884F319b8866F67C5719A80E5cB4D0FAF2c',
36
35
  SortedOracles: '0x85ed9ac57827132B8F60938F3165BC139E1F53cd',
37
36
  ValueDeltaBreaker: '0xbbD0D093F5F11D16D4456FBd6229c9a3b70B8Aaf',
38
- // DEX
39
37
  Reserve: '0xbCdc1D0b92DfceEaa0FcD0a0D53355F4bF1DB8a7',
40
- // Stable Tokens
41
38
  StableToken: '0x5eCc03111ad2A78F981A108759bc73BAE2AB31bc', // USDm
42
- // V3
43
39
  FPMMFactory: '0x353ED52bF8482027C0e0b9e3c0e5d96A9F680980',
44
40
  Router: '0xcf6cD45210b3ffE3cA28379C4683F1e60D0C2CCd',
45
41
  ReserveLiquidityStrategy: '0x734bb3251Ec3f1A83f8f2A8609bcEF649D54EbF8',
@@ -4,3 +4,4 @@ export * from './quotes';
4
4
  export * from './swap';
5
5
  export * from './trading';
6
6
  export * from './borrow';
7
+ export * from './tokens';
@@ -9,42 +9,62 @@ export async function fetchFPMMPoolDetails(publicClient, chainId, pool) {
9
9
  try {
10
10
  // Known liquidity strategy addresses for this chain
11
11
  const knownStrategies = getKnownLiquidityStrategies(chainId);
12
- // Fetch core data
13
- const [reservesResult, decimals0, decimals1, lpFee, protocolFee, rebalanceIncentive, rebalanceThresholdAbove, rebalanceThresholdBelow, ...strategyResults] = await Promise.all([
14
- publicClient.readContract({ address, abi: FPMM_ABI, functionName: 'getReserves' }),
15
- publicClient.readContract({ address, abi: FPMM_ABI, functionName: 'decimals0' }),
16
- publicClient.readContract({ address, abi: FPMM_ABI, functionName: 'decimals1' }),
17
- publicClient.readContract({ address, abi: FPMM_ABI, functionName: 'lpFee' }),
18
- publicClient.readContract({ address, abi: FPMM_ABI, functionName: 'protocolFee' }),
19
- publicClient.readContract({ address, abi: FPMM_ABI, functionName: 'rebalanceIncentive' }),
20
- publicClient.readContract({ address, abi: FPMM_ABI, functionName: 'rebalanceThresholdAbove' }),
21
- publicClient.readContract({ address, abi: FPMM_ABI, functionName: 'rebalanceThresholdBelow' }),
22
- ...knownStrategies.map((strategyAddr) => publicClient.readContract({
12
+ // Build all contract reads for a single multicall
13
+ const coreContracts = [
14
+ { address, abi: FPMM_ABI, functionName: 'getReserves' },
15
+ { address, abi: FPMM_ABI, functionName: 'decimals0' },
16
+ { address, abi: FPMM_ABI, functionName: 'decimals1' },
17
+ { address, abi: FPMM_ABI, functionName: 'lpFee' },
18
+ { address, abi: FPMM_ABI, functionName: 'protocolFee' },
19
+ { address, abi: FPMM_ABI, functionName: 'rebalanceIncentive' },
20
+ { address, abi: FPMM_ABI, functionName: 'rebalanceThresholdAbove' },
21
+ { address, abi: FPMM_ABI, functionName: 'rebalanceThresholdBelow' },
22
+ ...knownStrategies.map((strategyAddr) => ({
23
23
  address,
24
24
  abi: FPMM_ABI,
25
25
  functionName: 'liquidityStrategy',
26
26
  args: [strategyAddr],
27
27
  })),
28
- ]);
29
- const [reserve0, reserve1, blockTimestampLast] = reservesResult;
30
- const lpFeeBps = lpFee;
31
- const protocolFeeBps = protocolFee;
32
- const rebalanceIncentiveBps = rebalanceIncentive;
33
- const thresholdAboveBps = rebalanceThresholdAbove;
34
- const thresholdBelowBps = rebalanceThresholdBelow;
35
- // Find the active liquidity strategy (first match wins)
36
- const activeIndex = strategyResults.findIndex((result) => result === true);
28
+ // Include getRebalancingState in the same multicall (allowFailure handles FXMarketClosed)
29
+ { address, abi: FPMM_ABI, functionName: 'getRebalancingState' },
30
+ ];
31
+ const results = await publicClient.multicall({ contracts: coreContracts });
32
+ // Parse core results (first 8 are fixed)
33
+ const reservesRes = results[0];
34
+ const decimals0Res = results[1];
35
+ const decimals1Res = results[2];
36
+ const lpFeeRes = results[3];
37
+ const protocolFeeRes = results[4];
38
+ const rebalanceIncentiveRes = results[5];
39
+ const thresholdAboveRes = results[6];
40
+ const thresholdBelowRes = results[7];
41
+ // Check core results
42
+ if (reservesRes.status === 'failure' ||
43
+ decimals0Res.status === 'failure' ||
44
+ decimals1Res.status === 'failure' ||
45
+ lpFeeRes.status === 'failure' ||
46
+ protocolFeeRes.status === 'failure' ||
47
+ rebalanceIncentiveRes.status === 'failure' ||
48
+ thresholdAboveRes.status === 'failure' ||
49
+ thresholdBelowRes.status === 'failure') {
50
+ throw new Error('One or more core pool reads failed');
51
+ }
52
+ const [reserve0, reserve1, blockTimestampLast] = reservesRes.result;
53
+ const lpFeeBps = lpFeeRes.result;
54
+ const protocolFeeBps = protocolFeeRes.result;
55
+ const rebalanceIncentiveBps = rebalanceIncentiveRes.result;
56
+ const thresholdAboveBps = thresholdAboveRes.result;
57
+ const thresholdBelowBps = thresholdBelowRes.result;
58
+ // Parse strategy results (indices 8 .. 8+N-1)
59
+ const strategyResults = results.slice(8, 8 + knownStrategies.length);
60
+ const activeIndex = strategyResults.findIndex((r) => r.status === 'success' && r.result === true);
37
61
  const liquidityStrategy = activeIndex >= 0 ? knownStrategies[activeIndex] : null;
38
- // Fetch pricing separately — graceful degradation when FX market is closed
62
+ // Parse getRebalancingState (last result) — graceful degradation when FX market is closed
63
+ const rebalancingRes = results[8 + knownStrategies.length];
39
64
  let pricing = null;
40
65
  let inBand = null;
41
- try {
42
- const rebalancingStateResult = await publicClient.readContract({
43
- address,
44
- abi: FPMM_ABI,
45
- functionName: 'getRebalancingState',
46
- });
47
- const [oraclePriceNum, oraclePriceDen, reservePriceNum, reservePriceDen, reservePriceAboveOraclePrice, rebalanceThreshold, priceDifference,] = rebalancingStateResult;
66
+ if (rebalancingRes.status === 'success') {
67
+ const [oraclePriceNum, oraclePriceDen, reservePriceNum, reservePriceDen, reservePriceAboveOraclePrice, rebalanceThreshold, priceDifference,] = rebalancingRes.result;
48
68
  pricing = {
49
69
  oraclePriceNum,
50
70
  oraclePriceDen,
@@ -58,14 +78,12 @@ export async function fetchFPMMPoolDetails(publicClient, chainId, pool) {
58
78
  };
59
79
  inBand = priceDifference < BigInt(rebalanceThreshold);
60
80
  }
61
- catch {
62
- // getRebalancingState() failed (likely FXMarketClosed) — pricing stays null
63
- }
81
+ // If rebalancingRes.status === 'failure' (likely FXMarketClosed) — pricing stays null
64
82
  return {
65
83
  ...pool,
66
84
  poolType: 'FPMM',
67
- scalingFactor0: decimals0,
68
- scalingFactor1: decimals1,
85
+ scalingFactor0: decimals0Res.result,
86
+ scalingFactor1: decimals1Res.result,
69
87
  reserve0,
70
88
  reserve1,
71
89
  blockTimestampLast,
@@ -99,14 +117,19 @@ export async function fetchFPMMPoolDetails(publicClient, chainId, pool) {
99
117
  export async function fetchVirtualPoolDetails(publicClient, pool) {
100
118
  const address = pool.poolAddr;
101
119
  try {
102
- const [reservesResult, protocolFee, metadataResult] = await Promise.all([
103
- publicClient.readContract({ address, abi: VIRTUAL_POOL_ABI, functionName: 'getReserves' }),
104
- publicClient.readContract({ address, abi: VIRTUAL_POOL_ABI, functionName: 'protocolFee' }),
105
- publicClient.readContract({ address, abi: VIRTUAL_POOL_ABI, functionName: 'metadata' }),
106
- ]);
107
- const [reserve0, reserve1, blockTimestampLast] = reservesResult;
108
- const [dec0, dec1] = metadataResult;
109
- const spreadBps = protocolFee;
120
+ const results = await publicClient.multicall({
121
+ contracts: [
122
+ { address, abi: VIRTUAL_POOL_ABI, functionName: 'getReserves' },
123
+ { address, abi: VIRTUAL_POOL_ABI, functionName: 'protocolFee' },
124
+ { address, abi: VIRTUAL_POOL_ABI, functionName: 'metadata' },
125
+ ],
126
+ });
127
+ if (results[0].status === 'failure' || results[1].status === 'failure' || results[2].status === 'failure') {
128
+ throw new Error('One or more virtual pool reads failed');
129
+ }
130
+ const [reserve0, reserve1, blockTimestampLast] = results[0].result;
131
+ const [dec0, dec1] = results[2].result;
132
+ const spreadBps = results[1].result;
110
133
  return {
111
134
  ...pool,
112
135
  poolType: 'Virtual',