@circle-fin/app-kit 1.6.1 → 1.8.0

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 (60) hide show
  1. package/CHANGELOG.md +225 -0
  2. package/README.md +28 -5
  3. package/bridge.cjs +19951 -0
  4. package/bridge.cjs.map +1 -0
  5. package/bridge.d.cts +6603 -0
  6. package/bridge.d.mts +6603 -0
  7. package/bridge.d.ts +6603 -0
  8. package/bridge.mjs +19944 -0
  9. package/bridge.mjs.map +1 -0
  10. package/chains.cjs +1018 -1087
  11. package/chains.d.cts +2060 -0
  12. package/chains.d.mts +2060 -0
  13. package/chains.d.ts +40 -37
  14. package/chains.mjs +1018 -1087
  15. package/context.cjs +59 -0
  16. package/context.cjs.map +1 -0
  17. package/context.d.cts +6428 -0
  18. package/context.d.mts +6428 -0
  19. package/context.d.ts +6428 -0
  20. package/context.mjs +57 -0
  21. package/context.mjs.map +1 -0
  22. package/earn.cjs +7940 -4626
  23. package/earn.d.cts +8340 -0
  24. package/earn.d.mts +8340 -0
  25. package/earn.d.ts +987 -85
  26. package/earn.mjs +7937 -4627
  27. package/estimateBridge.cjs +19889 -0
  28. package/estimateBridge.cjs.map +1 -0
  29. package/estimateBridge.d.cts +6483 -0
  30. package/estimateBridge.d.mts +6483 -0
  31. package/estimateBridge.d.ts +6483 -0
  32. package/estimateBridge.mjs +19882 -0
  33. package/estimateBridge.mjs.map +1 -0
  34. package/estimateSwap.cjs +21577 -0
  35. package/estimateSwap.cjs.map +1 -0
  36. package/estimateSwap.d.cts +6625 -0
  37. package/estimateSwap.d.mts +6625 -0
  38. package/estimateSwap.d.ts +6625 -0
  39. package/estimateSwap.mjs +21571 -0
  40. package/estimateSwap.mjs.map +1 -0
  41. package/index.cjs +15844 -11589
  42. package/index.d.cts +26657 -0
  43. package/index.d.mts +26657 -0
  44. package/index.d.ts +5667 -688
  45. package/index.mjs +15834 -11590
  46. package/package.json +66 -32
  47. package/swap.cjs +21577 -0
  48. package/swap.cjs.map +1 -0
  49. package/swap.d.cts +6721 -0
  50. package/swap.d.mts +6721 -0
  51. package/swap.d.ts +6721 -0
  52. package/swap.mjs +21571 -0
  53. package/swap.mjs.map +1 -0
  54. package/unifiedBalance.cjs +20557 -0
  55. package/unifiedBalance.cjs.map +1 -0
  56. package/unifiedBalance.d.cts +7276 -0
  57. package/unifiedBalance.d.mts +7276 -0
  58. package/unifiedBalance.d.ts +7276 -0
  59. package/unifiedBalance.mjs +20551 -0
  60. package/unifiedBalance.mjs.map +1 -0
package/chains.mjs CHANGED
@@ -18,23 +18,34 @@
18
18
 
19
19
  import { z } from 'zod';
20
20
 
21
- // -----------------------------------------------------------------------------
22
- // Blockchain Enum
23
- // -----------------------------------------------------------------------------
24
21
  /**
25
- * Enumeration of all blockchains known to this library.
22
+ * @packageDocumentation
23
+ * @module ChainDefinitions
26
24
  *
27
- * This enum contains every blockchain that has a chain definition, regardless
28
- * of whether bridging is currently supported. For chains that support bridging
29
- * via CCTPv2, see {@link BridgeChain}.
25
+ * This module provides a complete type system for blockchain chain definitions.
26
+ * It supports both EVM and non‑EVM chains, token configurations, and multiple
27
+ * versions of the Cross-Chain Transfer Protocol (CCTP). Additionally, utility types
28
+ * are provided to extract subsets of chains (e.g. chains supporting USDC, EURC, or specific
29
+ * CCTP versions) from a provided collection.
30
30
  *
31
- * @enum
32
- * @category Enums
33
- * @description Provides string identifiers for each blockchain with a definition.
34
- * @see {@link BridgeChain} for the subset of chains that support CCTPv2 bridging.
35
- */
36
- var Blockchain;
37
- (function (Blockchain) {
31
+ * All types are fully documented with TSDoc to maximize developer experience.
32
+ */ // -----------------------------------------------------------------------------
33
+ // Currency and Base Types
34
+ // -----------------------------------------------------------------------------
35
+ /**
36
+ * Represents basic information about a currency or token.
37
+ * @category Types
38
+ * @description Provides the essential properties of a cryptocurrency or token.
39
+ * @example
40
+ * ```typescript
41
+ * const ethCurrency: Currency = {
42
+ * name: "Ether",
43
+ * symbol: "ETH",
44
+ * decimals: 18
45
+ * };
46
+ * ```
47
+ */ var Blockchain;
48
+ (function(Blockchain) {
38
49
  Blockchain["Algorand"] = "Algorand";
39
50
  Blockchain["Algorand_Testnet"] = "Algorand_Testnet";
40
51
  Blockchain["Aptos"] = "Aptos";
@@ -101,103 +112,8 @@ var Blockchain;
101
112
  Blockchain["ZKSync_Era"] = "ZKSync_Era";
102
113
  Blockchain["ZKSync_Sepolia"] = "ZKSync_Sepolia";
103
114
  })(Blockchain || (Blockchain = {}));
104
- /**
105
- * Enum representing the subset of {@link Blockchain} that supports swap operations.
106
- *
107
- * This enum provides compile-time type safety for swap chain selection,
108
- * ensuring only supported chains are available in IDE autocomplete
109
- * when building swap parameters.
110
- *
111
- * @remarks
112
- * Unlike the full {@link Blockchain} enum, SwapChain only includes networks
113
- * where the swap functionality is actively supported by the library.
114
- * Using this enum prevents runtime errors from attempting unsupported
115
- * cross-chain swaps.
116
- *
117
- * Currently supports:
118
- * - Ethereum mainnet
119
- * - Base mainnet
120
- * - Polygon mainnet
121
- * - Solana mainnet
122
- *
123
- * @example
124
- * ```typescript
125
- * import { SwapChain, swap, createSwapKitContext } from '@circle-fin/swap-kit'
126
- * import { createViemAdapterFromPrivateKey } from '@circle-fin/adapter-viem-v2'
127
- *
128
- * const context = createSwapKitContext()
129
- * const adapter = createViemAdapterFromPrivateKey({
130
- * privateKey: process.env.PRIVATE_KEY
131
- * })
132
- *
133
- * // ✅ Autocomplete shows only swap-supported chains
134
- * const result = await swap(context, {
135
- * from: {
136
- * adapter,
137
- * chain: SwapChain.Ethereum // Autocomplete: Ethereum, Base, Polygon, Solana
138
- * },
139
- * tokenIn: 'USDC',
140
- * tokenOut: 'USDT',
141
- * amount: '100.0'
142
- * })
143
- * ```
144
- *
145
- * @example
146
- * ```typescript
147
- * // String literals also work (constrained to SwapChain values)
148
- * const result = await swap(context, {
149
- * from: {
150
- * adapter,
151
- * chain: 'Ethereum' // ✅ Only SwapChain strings allowed
152
- * },
153
- * tokenIn: 'USDC',
154
- * tokenOut: 'NATIVE',
155
- * amount: '50.0'
156
- * })
157
- *
158
- * // ❌ TypeScript error - Sui not in SwapChain enum
159
- * const invalidResult = await swap(context, {
160
- * from: {
161
- * adapter,
162
- * chain: 'Sui' // Compile-time error!
163
- * },
164
- * tokenIn: 'USDC',
165
- * tokenOut: 'USDT',
166
- * amount: '100.0'
167
- * })
168
- * ```
169
- */
170
- /**
171
- * Enum representing chains that support same-chain swaps through the Swap Kit.
172
- *
173
- * Unlike the full {@link Blockchain} enum, SwapChain includes mainnet
174
- * networks and explicitly whitelisted testnets (e.g., {@link Arc_Testnet})
175
- * where adapter contracts are deployed (CCTPv2 support).
176
- *
177
- * Dynamic validation via {@link isSwapSupportedChain} ensures chains
178
- * automatically work when adapter contracts and supported tokens are deployed.
179
- *
180
- * @example
181
- * ```typescript
182
- * import { SwapChain } from '@core/chains'
183
- * import { swap } from '@circle-fin/swap-kit'
184
- *
185
- * const result = await swap(context, {
186
- * from: {
187
- * adapter,
188
- * chain: SwapChain.Arbitrum // Now supported!
189
- * },
190
- * tokenIn: 'USDC',
191
- * tokenOut: 'WETH',
192
- * amount: '100.0'
193
- * })
194
- * ```
195
- *
196
- * @see {@link isSwapSupportedChain} for runtime validation
197
- * @see {@link getSwapSupportedChains} for all supported chains
198
- */
199
115
  var SwapChain;
200
- (function (SwapChain) {
116
+ (function(SwapChain) {
201
117
  // Original 4 chains
202
118
  SwapChain["Ethereum"] = "Ethereum";
203
119
  SwapChain["Base"] = "Base";
@@ -220,57 +136,8 @@ var SwapChain;
220
136
  // Testnet chains with swap support
221
137
  SwapChain["Arc_Testnet"] = "Arc_Testnet";
222
138
  })(SwapChain || (SwapChain = {}));
223
- // -----------------------------------------------------------------------------
224
- // Bridge Chain Enum (CCTPv2 Supported Chains)
225
- // -----------------------------------------------------------------------------
226
- /**
227
- * Enumeration of blockchains that support cross-chain bridging via CCTPv2.
228
- *
229
- * The enum is derived from the full {@link Blockchain} enum but filtered to only
230
- * include chains with active CCTPv2 support. When new chains gain CCTPv2 support,
231
- * they are added to this enum.
232
- *
233
- * @enum
234
- * @category Enums
235
- *
236
- * @remarks
237
- * - This enum is the **canonical source** of bridging-supported chains.
238
- * - Use this enum (or its string literals) in `kit.bridge()` calls for type safety.
239
- * - Attempting to use a chain not in this enum will produce a TypeScript compile error.
240
- *
241
- * @example
242
- * ```typescript
243
- * import { BridgeKit, BridgeChain } from '@circle-fin/bridge-kit'
244
- *
245
- * const kit = new BridgeKit()
246
- *
247
- * // ✅ Valid - autocomplete suggests only supported chains
248
- * await kit.bridge({
249
- * from: { adapter, chain: BridgeChain.Ethereum },
250
- * to: { adapter, chain: BridgeChain.Base },
251
- * amount: '100'
252
- * })
253
- *
254
- * // ✅ Also valid - string literals work with autocomplete
255
- * await kit.bridge({
256
- * from: { adapter, chain: 'Ethereum_Sepolia' },
257
- * to: { adapter, chain: 'Base_Sepolia' },
258
- * amount: '100'
259
- * })
260
- *
261
- * // ❌ Compile error - Algorand is not in BridgeChain
262
- * await kit.bridge({
263
- * from: { adapter, chain: 'Algorand' }, // TypeScript error!
264
- * to: { adapter, chain: 'Base' },
265
- * amount: '100'
266
- * })
267
- * ```
268
- *
269
- * @see {@link Blockchain} for the complete list of all known blockchains.
270
- * @see {@link BridgeChainIdentifier} for the type that accepts these values.
271
- */
272
139
  var BridgeChain;
273
- (function (BridgeChain) {
140
+ (function(BridgeChain) {
274
141
  // Mainnet chains with CCTPv2 support
275
142
  BridgeChain["Arbitrum"] = "Arbitrum";
276
143
  BridgeChain["Avalanche"] = "Avalanche";
@@ -319,30 +186,8 @@ var BridgeChain;
319
186
  BridgeChain["World_Chain_Sepolia"] = "World_Chain_Sepolia";
320
187
  BridgeChain["XDC_Apothem"] = "XDC_Apothem";
321
188
  })(BridgeChain || (BridgeChain = {}));
322
- // -----------------------------------------------------------------------------
323
- // Unified Balance Chain Enum (Gateway V1 Supported Chains)
324
- // -----------------------------------------------------------------------------
325
- /**
326
- * Enumeration of blockchains that support Gateway V1 operations
327
- * (deposit, spend, balance, delegate, removeFund).
328
- *
329
- * Derived from the full {@link Blockchain} enum but filtered to only
330
- * include chains with active Gateway V1 contract support. When new chains
331
- * gain Gateway V1 support, they are added to this enum.
332
- *
333
- * @enum
334
- * @category Enums
335
- *
336
- * @remarks
337
- * - This enum is the **canonical source** of Gateway-supported chains.
338
- * - Use this enum (or its string literals) in unified-balance-kit calls
339
- * for type safety.
340
- *
341
- * @see {@link Blockchain} for the complete list of all known blockchains.
342
- * @see {@link UnifiedBalanceChainIdentifier} for the type that accepts these values.
343
- */
344
189
  var UnifiedBalanceChain;
345
- (function (UnifiedBalanceChain) {
190
+ (function(UnifiedBalanceChain) {
346
191
  // Mainnet chains with Gateway V1 support
347
192
  UnifiedBalanceChain["Arbitrum"] = "Arbitrum";
348
193
  UnifiedBalanceChain["Avalanche"] = "Avalanche";
@@ -371,28 +216,41 @@ var UnifiedBalanceChain;
371
216
  UnifiedBalanceChain["Unichain_Sepolia"] = "Unichain_Sepolia";
372
217
  UnifiedBalanceChain["World_Chain_Sepolia"] = "World_Chain_Sepolia";
373
218
  })(UnifiedBalanceChain || (UnifiedBalanceChain = {}));
374
- // Earn Chain Enum
375
- // -----------------------------------------------------------------------------
219
+ var EarnChain;
220
+ (function(EarnChain) {
221
+ EarnChain["Arc_Testnet"] = "Arc_Testnet";
222
+ })(EarnChain || (EarnChain = {}));
223
+ /**
224
+ * Blockchains supported as the source chain for cross-chain Earn deposits.
225
+ *
226
+ * Single source of truth for the source allowlist: the Earn Service bridge
227
+ * route map is `satisfies`-checked against {@link EarnBridgeSourceBlockchain},
228
+ * and both the type and the runtime validation schema derive from this array.
229
+ *
230
+ * @example
231
+ * ```typescript
232
+ * import { EARN_BRIDGE_SOURCE_BLOCKCHAINS } from '@core/chains'
233
+ *
234
+ * console.log(EARN_BRIDGE_SOURCE_BLOCKCHAINS.join(', '))
235
+ * ```
236
+ */ const EARN_BRIDGE_SOURCE_BLOCKCHAINS = [
237
+ "Arbitrum_Sepolia",
238
+ "Base_Sepolia",
239
+ "Ethereum_Sepolia"
240
+ ];
376
241
  /**
377
- * Enumeration of blockchains that support earn (vault deposit/withdraw)
378
- * operations through the Earn Kit.
242
+ * Blockchains supported as the destination (vault) chain for cross-chain Earn
243
+ * deposits. Single source of truth for the destination allowlist.
379
244
  *
380
245
  * @example
381
246
  * ```typescript
382
- * import { EarnChain } from '@core/chains'
247
+ * import { EARN_BRIDGE_DESTINATION_BLOCKCHAINS } from '@core/chains'
383
248
  *
384
- * const result = await earnKit.deposit({
385
- * from: { adapter, chain: EarnChain.Arc_Testnet },
386
- * vaultAddress: '0x...',
387
- * amount: '100',
388
- * })
249
+ * console.log(EARN_BRIDGE_DESTINATION_BLOCKCHAINS.join(', '))
389
250
  * ```
390
- */
391
- // Values must match Blockchain enum members exactly.
392
- var EarnChain;
393
- (function (EarnChain) {
394
- EarnChain["Arc_Testnet"] = "Arc_Testnet";
395
- })(EarnChain || (EarnChain = {}));
251
+ */ const EARN_BRIDGE_DESTINATION_BLOCKCHAINS = [
252
+ "Arc_Testnet"
253
+ ];
396
254
 
397
255
  /**
398
256
  * Helper function to define a chain with proper TypeScript typing.
@@ -428,8 +286,7 @@ var EarnChain;
428
286
  * }
429
287
  * } as const);
430
288
  * ```
431
- */
432
- function defineChain(chain) {
289
+ */ function defineChain(chain) {
433
290
  return chain;
434
291
  }
435
292
 
@@ -437,8 +294,7 @@ function defineChain(chain) {
437
294
  * Algorand Mainnet chain definition
438
295
  * @remarks
439
296
  * This represents the official production network for the Algorand blockchain.
440
- */
441
- defineChain({
297
+ */ defineChain({
442
298
  type: 'algorand',
443
299
  chain: Blockchain.Algorand,
444
300
  name: 'Algorand',
@@ -446,23 +302,24 @@ defineChain({
446
302
  nativeCurrency: {
447
303
  name: 'Algo',
448
304
  symbol: 'ALGO',
449
- decimals: 6,
305
+ decimals: 6
450
306
  },
451
307
  isTestnet: false,
452
308
  explorerUrl: 'https://explorer.perawallet.app/tx/{hash}',
453
- rpcEndpoints: ['https://mainnet-api.algonode.cloud'],
309
+ rpcEndpoints: [
310
+ 'https://mainnet-api.algonode.cloud'
311
+ ],
454
312
  eurcAddress: null,
455
313
  usdcAddress: '31566704',
456
314
  usdtAddress: null,
457
- cctp: null,
315
+ cctp: null
458
316
  });
459
317
 
460
318
  /**
461
319
  * Algorand Testnet chain definition
462
320
  * @remarks
463
321
  * This represents the official testnet for the Algorand blockchain.
464
- */
465
- defineChain({
322
+ */ defineChain({
466
323
  type: 'algorand',
467
324
  chain: Blockchain.Algorand_Testnet,
468
325
  name: 'Algorand Testnet',
@@ -470,23 +327,24 @@ defineChain({
470
327
  nativeCurrency: {
471
328
  name: 'Algo',
472
329
  symbol: 'ALGO',
473
- decimals: 6,
330
+ decimals: 6
474
331
  },
475
332
  isTestnet: true,
476
333
  explorerUrl: 'https://testnet.explorer.perawallet.app/tx/{hash}',
477
- rpcEndpoints: ['https://testnet-api.algonode.cloud'],
334
+ rpcEndpoints: [
335
+ 'https://testnet-api.algonode.cloud'
336
+ ],
478
337
  eurcAddress: null,
479
338
  usdcAddress: '10458941',
480
339
  usdtAddress: null,
481
- cctp: null,
340
+ cctp: null
482
341
  });
483
342
 
484
343
  /**
485
344
  * Aptos Mainnet chain definition
486
345
  * @remarks
487
346
  * This represents the official production network for the Aptos blockchain.
488
- */
489
- defineChain({
347
+ */ defineChain({
490
348
  type: 'aptos',
491
349
  chain: Blockchain.Aptos,
492
350
  name: 'Aptos',
@@ -494,11 +352,13 @@ defineChain({
494
352
  nativeCurrency: {
495
353
  name: 'Aptos',
496
354
  symbol: 'APT',
497
- decimals: 8,
355
+ decimals: 8
498
356
  },
499
357
  isTestnet: false,
500
358
  explorerUrl: 'https://explorer.aptoslabs.com/txn/{hash}?network=mainnet',
501
- rpcEndpoints: ['https://fullnode.mainnet.aptoslabs.com/v1'],
359
+ rpcEndpoints: [
360
+ 'https://fullnode.mainnet.aptoslabs.com/v1'
361
+ ],
502
362
  eurcAddress: null,
503
363
  usdcAddress: '0xbae207659db88bea0cbead6da0ed00aac12edcdda169e591cd41c94180b46f3b',
504
364
  usdtAddress: '0x357b0b74bc833e95a115ad22604854d6b0fca151cecd94111770e5d6ffc9dc2b',
@@ -509,22 +369,21 @@ defineChain({
509
369
  type: 'split',
510
370
  tokenMessenger: '0x9bce6734f7b63e835108e3bd8c36743d4709fe435f44791918801d0989640a9d',
511
371
  messageTransmitter: '0x177e17751820e4b4371873ca8c30279be63bdea63b88ed0f2239c2eea10f1772',
512
- confirmations: 1,
513
- },
372
+ confirmations: 1
373
+ }
514
374
  },
515
375
  forwarderSupported: {
516
376
  source: false,
517
- destination: false,
518
- },
519
- },
377
+ destination: false
378
+ }
379
+ }
520
380
  });
521
381
 
522
382
  /**
523
383
  * Aptos Testnet chain definition
524
384
  * @remarks
525
385
  * This represents the official test network for the Aptos blockchain.
526
- */
527
- defineChain({
386
+ */ defineChain({
528
387
  type: 'aptos',
529
388
  chain: Blockchain.Aptos_Testnet,
530
389
  name: 'Aptos Testnet',
@@ -532,11 +391,13 @@ defineChain({
532
391
  nativeCurrency: {
533
392
  name: 'Aptos',
534
393
  symbol: 'APT',
535
- decimals: 8,
394
+ decimals: 8
536
395
  },
537
396
  isTestnet: true,
538
397
  explorerUrl: 'https://explorer.aptoslabs.com/txn/{hash}?network=testnet',
539
- rpcEndpoints: ['https://fullnode.testnet.aptoslabs.com/v1'],
398
+ rpcEndpoints: [
399
+ 'https://fullnode.testnet.aptoslabs.com/v1'
400
+ ],
540
401
  eurcAddress: null,
541
402
  usdcAddress: '0x69091fbab5f7d635ee7ac5098cf0c1efbe31d68fec0f2cd565e8d168daf52832',
542
403
  usdtAddress: null,
@@ -547,17 +408,28 @@ defineChain({
547
408
  type: 'split',
548
409
  tokenMessenger: '0x5f9b937419dda90aa06c1836b7847f65bbbe3f1217567758dc2488be31a477b9',
549
410
  messageTransmitter: '0x081e86cebf457a0c6004f35bd648a2794698f52e0dde09a48619dcd3d4cc23d9',
550
- confirmations: 1,
551
- },
411
+ confirmations: 1
412
+ }
552
413
  },
553
414
  forwarderSupported: {
554
415
  source: false,
555
- destination: false,
556
- },
557
- },
416
+ destination: false
417
+ }
418
+ }
558
419
  });
559
420
 
560
421
  /**
422
+ * @packageDocumentation
423
+ * @module SwapTokenRegistry
424
+ *
425
+ * Central swap token registry for swap-supported tokens.
426
+ *
427
+ * Contains metadata for all tokens that can be used in swap operations,
428
+ * including decimals, categories, and descriptions. All packages should import
429
+ * from this registry instead of maintaining separate token lists.
430
+ */ /**
431
+ * Swap token metadata.
432
+ */ /**
561
433
  * Complete swap token registry - single source of truth for all swap-supported tokens.
562
434
  *
563
435
  * @remarks
@@ -576,8 +448,7 @@ defineChain({
576
448
  * // Check if token is stablecoin
577
449
  * const isStable = SWAP_TOKEN_REGISTRY.DAI.category === 'stablecoin' // true
578
450
  * ```
579
- */
580
- const SWAP_TOKEN_REGISTRY = {
451
+ */ const SWAP_TOKEN_REGISTRY = {
581
452
  // ============================================================================
582
453
  // Stablecoins (6 decimals)
583
454
  // ============================================================================
@@ -585,25 +456,25 @@ const SWAP_TOKEN_REGISTRY = {
585
456
  symbol: 'USDC',
586
457
  decimals: 6,
587
458
  category: 'stablecoin',
588
- description: 'USD Coin',
459
+ description: 'USD Coin'
589
460
  },
590
461
  EURC: {
591
462
  symbol: 'EURC',
592
463
  decimals: 6,
593
464
  category: 'stablecoin',
594
- description: 'Euro Coin',
465
+ description: 'Euro Coin'
595
466
  },
596
467
  USDT: {
597
468
  symbol: 'USDT',
598
469
  decimals: 6,
599
470
  category: 'stablecoin',
600
- description: 'Tether USD',
471
+ description: 'Tether USD'
601
472
  },
602
473
  PYUSD: {
603
474
  symbol: 'PYUSD',
604
475
  decimals: 6,
605
476
  category: 'stablecoin',
606
- description: 'PayPal USD',
477
+ description: 'PayPal USD'
607
478
  },
608
479
  // ============================================================================
609
480
  // Stablecoins (18 decimals)
@@ -612,13 +483,13 @@ const SWAP_TOKEN_REGISTRY = {
612
483
  symbol: 'DAI',
613
484
  decimals: 18,
614
485
  category: 'stablecoin',
615
- description: 'MakerDAO stablecoin',
486
+ description: 'MakerDAO stablecoin'
616
487
  },
617
488
  USDE: {
618
489
  symbol: 'USDE',
619
490
  decimals: 18,
620
491
  category: 'stablecoin',
621
- description: 'Ethena USD (synthetic dollar)',
492
+ description: 'Ethena USD (synthetic dollar)'
622
493
  },
623
494
  // ============================================================================
624
495
  // Wrapped Tokens
@@ -627,38 +498,38 @@ const SWAP_TOKEN_REGISTRY = {
627
498
  symbol: 'WBTC',
628
499
  decimals: 8,
629
500
  category: 'wrapped',
630
- description: 'Wrapped Bitcoin',
501
+ description: 'Wrapped Bitcoin'
631
502
  },
632
503
  WETH: {
633
504
  symbol: 'WETH',
634
505
  decimals: 18,
635
506
  category: 'wrapped',
636
- description: 'Wrapped Ethereum',
507
+ description: 'Wrapped Ethereum'
637
508
  },
638
509
  WSOL: {
639
510
  symbol: 'WSOL',
640
511
  decimals: 9,
641
512
  category: 'wrapped',
642
- description: 'Wrapped Solana',
513
+ description: 'Wrapped Solana'
643
514
  },
644
515
  WAVAX: {
645
516
  symbol: 'WAVAX',
646
517
  decimals: 18,
647
518
  category: 'wrapped',
648
- description: 'Wrapped Avalanche',
519
+ description: 'Wrapped Avalanche'
649
520
  },
650
521
  WPOL: {
651
522
  symbol: 'WPOL',
652
523
  decimals: 18,
653
524
  category: 'wrapped',
654
- description: 'Wrapped Polygon',
525
+ description: 'Wrapped Polygon'
655
526
  },
656
527
  CIRBTC: {
657
528
  symbol: 'CIRBTC',
658
529
  decimals: 8,
659
530
  category: 'wrapped',
660
- description: 'Circle Bitcoin',
661
- },
531
+ description: 'Circle Bitcoin'
532
+ }
662
533
  };
663
534
  /**
664
535
  * Special NATIVE token constant for swap operations.
@@ -667,15 +538,13 @@ const SWAP_TOKEN_REGISTRY = {
667
538
  * NATIVE is handled separately from SWAP_TOKEN_REGISTRY because it resolves
668
539
  * dynamically based on the chain (ETH on Ethereum, SOL on Solana, etc.).
669
540
  * Its decimals are chain-specific.
670
- */
671
- const NATIVE_TOKEN = 'NATIVE';
541
+ */ const NATIVE_TOKEN = 'NATIVE';
672
542
  /**
673
543
  * Array of all supported swap token symbols including NATIVE.
674
544
  * Useful for iteration, validation, and filtering.
675
- */
676
- [
545
+ */ [
677
546
  ...Object.keys(SWAP_TOKEN_REGISTRY),
678
- NATIVE_TOKEN,
547
+ NATIVE_TOKEN
679
548
  ];
680
549
 
681
550
  /**
@@ -684,87 +553,75 @@ const NATIVE_TOKEN = 'NATIVE';
684
553
  * This contract handles USDC transfers on testnet environments across
685
554
  * EVM-compatible chains. Use this address when deploying or testing
686
555
  * cross-chain USDC transfers on test networks.
687
- */
688
- const BRIDGE_CONTRACT_EVM_TESTNET = '0xC5567a5E3370d4DBfB0540025078e283e36A363d';
556
+ */ const BRIDGE_CONTRACT_EVM_TESTNET = '0xC5567a5E3370d4DBfB0540025078e283e36A363d';
689
557
  /**
690
558
  * The bridge contract address for EVM mainnet networks.
691
559
  *
692
560
  * This contract handles USDC transfers on mainnet environments across
693
561
  * EVM-compatible chains. Use this address for production cross-chain
694
562
  * USDC transfers on live networks.
695
- */
696
- const BRIDGE_CONTRACT_EVM_MAINNET = '0xB3FA262d0fB521cc93bE83d87b322b8A23DAf3F0';
563
+ */ const BRIDGE_CONTRACT_EVM_MAINNET = '0xB3FA262d0fB521cc93bE83d87b322b8A23DAf3F0';
697
564
  /**
698
565
  * The adapter contract address for EVM mainnet networks.
699
566
  *
700
567
  * This contract serves as an adapter for integrating with various protocols
701
568
  * on EVM-compatible chains. Use this address for mainnet adapter integrations.
702
- */
703
- const ADAPTER_CONTRACT_EVM_MAINNET = '0x7FB8c7260b63934d8da38aF902f87ae6e284a845';
569
+ */ const ADAPTER_CONTRACT_EVM_MAINNET = '0x7FB8c7260b63934d8da38aF902f87ae6e284a845';
704
570
  /**
705
571
  * The adapter contract address for EVM testnet networks.
706
572
  *
707
573
  * This contract serves as an adapter for integrating with various protocols
708
574
  * on EVM-compatible testnet chains. Use this address for testnet adapter
709
575
  * integrations (e.g., Arc Testnet).
710
- */
711
- const ADAPTER_CONTRACT_EVM_TESTNET = '0xBBD70b01a1CAbc96d5b7b129Ae1AAabdf50dd40b';
576
+ */ const ADAPTER_CONTRACT_EVM_TESTNET = '0xBBD70b01a1CAbc96d5b7b129Ae1AAabdf50dd40b';
712
577
  /**
713
578
  * The GatewayWallet contract address for EVM mainnet networks.
714
579
  *
715
580
  * This contract manages wallet operations for Gateway transactions
716
581
  * on mainnet environments across EVM-compatible chains.
717
- */
718
- const GATEWAY_WALLET_EVM_MAINNET = '0x77777777Dcc4d5A8B6E418Fd04D8997ef11000eE';
582
+ */ const GATEWAY_WALLET_EVM_MAINNET = '0x77777777Dcc4d5A8B6E418Fd04D8997ef11000eE';
719
583
  /**
720
584
  * The GatewayMinter contract address for EVM mainnet networks.
721
585
  *
722
586
  * This contract handles minting operations for Gateway transactions
723
587
  * on mainnet environments across EVM-compatible chains.
724
- */
725
- const GATEWAY_MINTER_EVM_MAINNET = '0x2222222d7164433c4C09B0b0D809a9b52C04C205';
588
+ */ const GATEWAY_MINTER_EVM_MAINNET = '0x2222222d7164433c4C09B0b0D809a9b52C04C205';
726
589
  /**
727
590
  * The GatewayWallet contract address for EVM testnet networks.
728
591
  *
729
592
  * This contract manages wallet operations for Gateway transactions
730
593
  * on testnet environments across EVM-compatible chains.
731
- */
732
- const GATEWAY_WALLET_EVM_TESTNET = '0x0077777d7EBA4688BDeF3E311b846F25870A19B9';
594
+ */ const GATEWAY_WALLET_EVM_TESTNET = '0x0077777d7EBA4688BDeF3E311b846F25870A19B9';
733
595
  /**
734
596
  * The GatewayMinter contract address for EVM testnet networks.
735
597
  *
736
598
  * This contract handles minting operations for Gateway transactions
737
599
  * on testnet environments across EVM-compatible chains.
738
- */
739
- const GATEWAY_MINTER_EVM_TESTNET = '0x0022222ABE238Cc2C7Bb1f21003F0a260052475B';
600
+ */ const GATEWAY_MINTER_EVM_TESTNET = '0x0022222ABE238Cc2C7Bb1f21003F0a260052475B';
740
601
  /**
741
602
  * The GatewayWallet program address for Solana mainnet.
742
603
  *
743
604
  * This program manages wallet operations for Gateway transactions
744
605
  * on Solana mainnet.
745
- */
746
- const GATEWAY_WALLET_SOLANA_MAINNET = 'GATEwy4YxeiEbRJLwB6dXgg7q61e6zBPrMzYj5h1pRXQ';
606
+ */ const GATEWAY_WALLET_SOLANA_MAINNET = 'GATEwy4YxeiEbRJLwB6dXgg7q61e6zBPrMzYj5h1pRXQ';
747
607
  /**
748
608
  * The GatewayMinter program address for Solana mainnet.
749
609
  *
750
610
  * This program handles minting operations for Gateway transactions
751
611
  * on Solana mainnet.
752
- */
753
- const GATEWAY_MINTER_SOLANA_MAINNET = 'GATEm5SoBJiSw1v2Pz1iPBgUYkXzCUJ27XSXhDfSyzVZ';
612
+ */ const GATEWAY_MINTER_SOLANA_MAINNET = 'GATEm5SoBJiSw1v2Pz1iPBgUYkXzCUJ27XSXhDfSyzVZ';
754
613
  /**
755
614
  * The GatewayWallet program address for Solana devnet.
756
615
  *
757
616
  * This program manages wallet operations for Gateway transactions
758
617
  * on Solana devnet.
759
- */
760
- const GATEWAY_WALLET_SOLANA_DEVNET = 'GATEwdfmYNELfp5wDmmR6noSr2vHnAfBPMm2PvCzX5vu';
618
+ */ const GATEWAY_WALLET_SOLANA_DEVNET = 'GATEwdfmYNELfp5wDmmR6noSr2vHnAfBPMm2PvCzX5vu';
761
619
  /**
762
620
  * The GatewayMinter program address for Solana devnet.
763
621
  *
764
622
  * This program handles minting operations for Gateway transactions
765
623
  * on Solana devnet.
766
- */
767
- const GATEWAY_MINTER_SOLANA_DEVNET = 'GATEmKK2ECL1brEngQZWCgMWPbvrEYqsV6u29dAaHavr';
624
+ */ const GATEWAY_MINTER_SOLANA_DEVNET = 'GATEmKK2ECL1brEngQZWCgMWPbvrEYqsV6u29dAaHavr';
768
625
 
769
626
  /**
770
627
  * Arc Testnet chain definition
@@ -774,8 +631,7 @@ const GATEWAY_MINTER_SOLANA_DEVNET = 'GATEmKK2ECL1brEngQZWCgMWPbvrEYqsV6u29dAaHa
774
631
  * and asset tokenization. Arc uses USDC as the native gas token and
775
632
  * features the Malachite Byzantine Fault Tolerant (BFT) consensus
776
633
  * engine for sub-second finality.
777
- */
778
- const ArcTestnet = defineChain({
634
+ */ const ArcTestnet = defineChain({
779
635
  type: 'evm',
780
636
  chain: Blockchain.Arc_Testnet,
781
637
  name: 'Arc Testnet',
@@ -786,12 +642,14 @@ const ArcTestnet = defineChain({
786
642
  // Arc uses native USDC with 18 decimals for gas payments (EVM standard).
787
643
  // Note: The ERC-20 USDC contract at usdcAddress uses 6 decimals.
788
644
  // See: https://docs.arc.network/arc/references/contract-addresses
789
- decimals: 18,
645
+ decimals: 18
790
646
  },
791
647
  chainId: 5042002,
792
648
  isTestnet: true,
793
649
  explorerUrl: 'https://testnet.arcscan.app/tx/{hash}',
794
- rpcEndpoints: ['https://rpc.testnet.arc.network/'],
650
+ rpcEndpoints: [
651
+ 'https://rpc.testnet.arc.network/'
652
+ ],
795
653
  eurcAddress: '0x89B50855Aa3bE2F677cD6303Cec089B5F319D72a',
796
654
  usdcAddress: '0x3600000000000000000000000000000000000000',
797
655
  usdtAddress: null,
@@ -803,39 +661,38 @@ const ArcTestnet = defineChain({
803
661
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
804
662
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
805
663
  confirmations: 1,
806
- fastConfirmations: 1,
807
- },
664
+ fastConfirmations: 1
665
+ }
808
666
  },
809
667
  forwarderSupported: {
810
- source: true,
811
- destination: true,
812
- },
668
+ source: false,
669
+ destination: true
670
+ }
813
671
  },
814
672
  kitContracts: {
815
673
  bridge: BRIDGE_CONTRACT_EVM_TESTNET,
816
- adapter: ADAPTER_CONTRACT_EVM_TESTNET,
674
+ adapter: ADAPTER_CONTRACT_EVM_TESTNET
817
675
  },
818
676
  gateway: {
819
677
  domain: 26,
820
678
  contracts: {
821
679
  v1: {
822
680
  wallet: GATEWAY_WALLET_EVM_TESTNET,
823
- minter: GATEWAY_MINTER_EVM_TESTNET,
824
- },
681
+ minter: GATEWAY_MINTER_EVM_TESTNET
682
+ }
825
683
  },
826
684
  forwarderSupported: {
827
685
  source: true,
828
- destination: true,
829
- },
830
- },
686
+ destination: true
687
+ }
688
+ }
831
689
  });
832
690
 
833
691
  /**
834
692
  * Arbitrum Mainnet chain definition
835
693
  * @remarks
836
694
  * This represents the official production network for the Arbitrum blockchain.
837
- */
838
- const Arbitrum = defineChain({
695
+ */ const Arbitrum = defineChain({
839
696
  type: 'evm',
840
697
  chain: Blockchain.Arbitrum,
841
698
  name: 'Arbitrum',
@@ -843,12 +700,14 @@ const Arbitrum = defineChain({
843
700
  nativeCurrency: {
844
701
  name: 'Ether',
845
702
  symbol: 'ETH',
846
- decimals: 18,
703
+ decimals: 18
847
704
  },
848
705
  chainId: 42161,
849
706
  isTestnet: false,
850
707
  explorerUrl: 'https://arbiscan.io/tx/{hash}',
851
- rpcEndpoints: ['https://arb1.arbitrum.io/rpc'],
708
+ rpcEndpoints: [
709
+ 'https://arb1.arbitrum.io/rpc'
710
+ ],
852
711
  eurcAddress: null,
853
712
  usdcAddress: '0xaf88d065e77c8cc2239327c5edb3a432268e5831',
854
713
  usdtAddress: null,
@@ -859,46 +718,45 @@ const Arbitrum = defineChain({
859
718
  type: 'split',
860
719
  tokenMessenger: '0x19330d10D9Cc8751218eaf51E8885D058642E08A',
861
720
  messageTransmitter: '0xC30362313FBBA5cf9163F0bb16a0e01f01A896ca',
862
- confirmations: 65,
721
+ confirmations: 65
863
722
  },
864
723
  v2: {
865
724
  type: 'split',
866
725
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
867
726
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
868
727
  confirmations: 65,
869
- fastConfirmations: 1,
870
- },
728
+ fastConfirmations: 1
729
+ }
871
730
  },
872
731
  forwarderSupported: {
873
- source: true,
874
- destination: true,
875
- },
732
+ source: false,
733
+ destination: true
734
+ }
876
735
  },
877
736
  kitContracts: {
878
737
  bridge: BRIDGE_CONTRACT_EVM_MAINNET,
879
- adapter: ADAPTER_CONTRACT_EVM_MAINNET,
738
+ adapter: ADAPTER_CONTRACT_EVM_MAINNET
880
739
  },
881
740
  gateway: {
882
741
  domain: 3,
883
742
  contracts: {
884
743
  v1: {
885
744
  wallet: GATEWAY_WALLET_EVM_MAINNET,
886
- minter: GATEWAY_MINTER_EVM_MAINNET,
887
- },
745
+ minter: GATEWAY_MINTER_EVM_MAINNET
746
+ }
888
747
  },
889
748
  forwarderSupported: {
890
749
  source: true,
891
- destination: true,
892
- },
893
- },
750
+ destination: true
751
+ }
752
+ }
894
753
  });
895
754
 
896
755
  /**
897
756
  * Arbitrum Sepolia Testnet chain definition
898
757
  * @remarks
899
758
  * This represents the official test network for the Arbitrum blockchain on Sepolia.
900
- */
901
- const ArbitrumSepolia = defineChain({
759
+ */ const ArbitrumSepolia = defineChain({
902
760
  type: 'evm',
903
761
  chain: Blockchain.Arbitrum_Sepolia,
904
762
  name: 'Arbitrum Sepolia',
@@ -906,12 +764,14 @@ const ArbitrumSepolia = defineChain({
906
764
  nativeCurrency: {
907
765
  name: 'Sepolia Ether',
908
766
  symbol: 'ETH',
909
- decimals: 18,
767
+ decimals: 18
910
768
  },
911
769
  chainId: 421614,
912
770
  isTestnet: true,
913
771
  explorerUrl: 'https://sepolia.arbiscan.io/tx/{hash}',
914
- rpcEndpoints: ['https://sepolia-rollup.arbitrum.io/rpc'],
772
+ rpcEndpoints: [
773
+ 'https://sepolia-rollup.arbitrum.io/rpc'
774
+ ],
915
775
  eurcAddress: null,
916
776
  usdcAddress: '0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d',
917
777
  usdtAddress: null,
@@ -922,45 +782,45 @@ const ArbitrumSepolia = defineChain({
922
782
  type: 'split',
923
783
  tokenMessenger: '0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5',
924
784
  messageTransmitter: '0xaCF1ceeF35caAc005e15888dDb8A3515C41B4872',
925
- confirmations: 65,
785
+ confirmations: 65
926
786
  },
927
787
  v2: {
928
788
  type: 'split',
929
789
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
930
790
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
931
791
  confirmations: 65,
932
- fastConfirmations: 1,
933
- },
792
+ fastConfirmations: 1
793
+ }
934
794
  },
935
795
  forwarderSupported: {
936
- source: true,
937
- destination: true,
938
- },
796
+ source: false,
797
+ destination: true
798
+ }
939
799
  },
940
800
  kitContracts: {
941
801
  bridge: BRIDGE_CONTRACT_EVM_TESTNET,
802
+ adapter: ADAPTER_CONTRACT_EVM_TESTNET
942
803
  },
943
804
  gateway: {
944
805
  domain: 3,
945
806
  contracts: {
946
807
  v1: {
947
808
  wallet: GATEWAY_WALLET_EVM_TESTNET,
948
- minter: GATEWAY_MINTER_EVM_TESTNET,
949
- },
809
+ minter: GATEWAY_MINTER_EVM_TESTNET
810
+ }
950
811
  },
951
812
  forwarderSupported: {
952
813
  source: true,
953
- destination: true,
954
- },
955
- },
814
+ destination: true
815
+ }
816
+ }
956
817
  });
957
818
 
958
819
  /**
959
820
  * Avalanche Mainnet chain definition
960
821
  * @remarks
961
822
  * This represents the official production network for the Avalanche blockchain.
962
- */
963
- const Avalanche = defineChain({
823
+ */ const Avalanche = defineChain({
964
824
  type: 'evm',
965
825
  chain: Blockchain.Avalanche,
966
826
  name: 'Avalanche',
@@ -968,12 +828,14 @@ const Avalanche = defineChain({
968
828
  nativeCurrency: {
969
829
  name: 'Avalanche',
970
830
  symbol: 'AVAX',
971
- decimals: 18,
831
+ decimals: 18
972
832
  },
973
833
  chainId: 43114,
974
834
  isTestnet: false,
975
835
  explorerUrl: 'https://subnets.avax.network/c-chain/tx/{hash}',
976
- rpcEndpoints: ['https://api.avax.network/ext/bc/C/rpc'],
836
+ rpcEndpoints: [
837
+ 'https://api.avax.network/ext/bc/C/rpc'
838
+ ],
977
839
  eurcAddress: '0xc891eb4cbdeff6e073e859e987815ed1505c2acd',
978
840
  usdcAddress: '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E',
979
841
  usdtAddress: '0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7',
@@ -984,46 +846,45 @@ const Avalanche = defineChain({
984
846
  type: 'split',
985
847
  tokenMessenger: '0x6b25532e1060ce10cc3b0a99e5683b91bfde6982',
986
848
  messageTransmitter: '0x8186359af5f57fbb40c6b14a588d2a59c0c29880',
987
- confirmations: 1,
849
+ confirmations: 1
988
850
  },
989
851
  v2: {
990
852
  type: 'split',
991
853
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
992
854
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
993
855
  confirmations: 1,
994
- fastConfirmations: 1,
995
- },
856
+ fastConfirmations: 1
857
+ }
996
858
  },
997
859
  forwarderSupported: {
998
- source: true,
999
- destination: true,
1000
- },
860
+ source: false,
861
+ destination: true
862
+ }
1001
863
  },
1002
864
  kitContracts: {
1003
865
  bridge: BRIDGE_CONTRACT_EVM_MAINNET,
1004
- adapter: ADAPTER_CONTRACT_EVM_MAINNET,
866
+ adapter: ADAPTER_CONTRACT_EVM_MAINNET
1005
867
  },
1006
868
  gateway: {
1007
869
  domain: 1,
1008
870
  contracts: {
1009
871
  v1: {
1010
872
  wallet: GATEWAY_WALLET_EVM_MAINNET,
1011
- minter: GATEWAY_MINTER_EVM_MAINNET,
1012
- },
873
+ minter: GATEWAY_MINTER_EVM_MAINNET
874
+ }
1013
875
  },
1014
876
  forwarderSupported: {
1015
877
  source: true,
1016
- destination: true,
1017
- },
1018
- },
878
+ destination: true
879
+ }
880
+ }
1019
881
  });
1020
882
 
1021
883
  /**
1022
884
  * Avalanche Fuji Testnet chain definition
1023
885
  * @remarks
1024
886
  * This represents the official test network for the Avalanche blockchain.
1025
- */
1026
- const AvalancheFuji = defineChain({
887
+ */ const AvalancheFuji = defineChain({
1027
888
  type: 'evm',
1028
889
  chain: Blockchain.Avalanche_Fuji,
1029
890
  name: 'Avalanche Fuji',
@@ -1031,7 +892,7 @@ const AvalancheFuji = defineChain({
1031
892
  nativeCurrency: {
1032
893
  name: 'Avalanche',
1033
894
  symbol: 'AVAX',
1034
- decimals: 18,
895
+ decimals: 18
1035
896
  },
1036
897
  chainId: 43113,
1037
898
  isTestnet: true,
@@ -1046,46 +907,47 @@ const AvalancheFuji = defineChain({
1046
907
  type: 'split',
1047
908
  tokenMessenger: '0xeb08f243e5d3fcff26a9e38ae5520a669f4019d0',
1048
909
  messageTransmitter: '0xa9fb1b3009dcb79e2fe346c16a604b8fa8ae0a79',
1049
- confirmations: 1,
910
+ confirmations: 1
1050
911
  },
1051
912
  v2: {
1052
913
  type: 'split',
1053
914
  tokenMessenger: '0x8fe6b999dc680ccfdd5bf7eb0974218be2542daa',
1054
915
  messageTransmitter: '0xe737e5cebeeba77efe34d4aa090756590b1ce275',
1055
916
  confirmations: 1,
1056
- fastConfirmations: 1,
1057
- },
917
+ fastConfirmations: 1
918
+ }
1058
919
  },
1059
920
  forwarderSupported: {
1060
- source: true,
1061
- destination: true,
1062
- },
921
+ source: false,
922
+ destination: true
923
+ }
1063
924
  },
1064
- rpcEndpoints: ['https://api.avax-test.network/ext/bc/C/rpc'],
925
+ rpcEndpoints: [
926
+ 'https://api.avax-test.network/ext/bc/C/rpc'
927
+ ],
1065
928
  kitContracts: {
1066
- bridge: BRIDGE_CONTRACT_EVM_TESTNET,
929
+ bridge: BRIDGE_CONTRACT_EVM_TESTNET
1067
930
  },
1068
931
  gateway: {
1069
932
  domain: 1,
1070
933
  contracts: {
1071
934
  v1: {
1072
935
  wallet: GATEWAY_WALLET_EVM_TESTNET,
1073
- minter: GATEWAY_MINTER_EVM_TESTNET,
1074
- },
936
+ minter: GATEWAY_MINTER_EVM_TESTNET
937
+ }
1075
938
  },
1076
939
  forwarderSupported: {
1077
940
  source: true,
1078
- destination: true,
1079
- },
1080
- },
941
+ destination: true
942
+ }
943
+ }
1081
944
  });
1082
945
 
1083
946
  /**
1084
947
  * Base chain definition
1085
948
  * @remarks
1086
949
  * This represents the official production network for the Base blockchain.
1087
- */
1088
- const Base = defineChain({
950
+ */ const Base = defineChain({
1089
951
  type: 'evm',
1090
952
  chain: Blockchain.Base,
1091
953
  name: 'Base',
@@ -1093,12 +955,15 @@ const Base = defineChain({
1093
955
  nativeCurrency: {
1094
956
  name: 'Ether',
1095
957
  symbol: 'ETH',
1096
- decimals: 18,
958
+ decimals: 18
1097
959
  },
1098
960
  chainId: 8453,
1099
961
  isTestnet: false,
1100
962
  explorerUrl: 'https://basescan.org/tx/{hash}',
1101
- rpcEndpoints: ['https://mainnet.base.org', 'https://base.publicnode.com'],
963
+ rpcEndpoints: [
964
+ 'https://mainnet.base.org',
965
+ 'https://base.publicnode.com'
966
+ ],
1102
967
  eurcAddress: '0x60a3e35cc302bfa44cb288bc5a4f316fdb1adb42',
1103
968
  usdcAddress: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
1104
969
  usdtAddress: null,
@@ -1109,46 +974,45 @@ const Base = defineChain({
1109
974
  type: 'split',
1110
975
  tokenMessenger: '0x1682Ae6375C4E4A97e4B583BC394c861A46D8962',
1111
976
  messageTransmitter: '0xAD09780d193884d503182aD4588450C416D6F9D4',
1112
- confirmations: 65,
977
+ confirmations: 65
1113
978
  },
1114
979
  v2: {
1115
980
  type: 'split',
1116
981
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
1117
982
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
1118
983
  confirmations: 65,
1119
- fastConfirmations: 1,
1120
- },
984
+ fastConfirmations: 1
985
+ }
1121
986
  },
1122
987
  forwarderSupported: {
1123
- source: true,
1124
- destination: true,
1125
- },
988
+ source: false,
989
+ destination: true
990
+ }
1126
991
  },
1127
992
  kitContracts: {
1128
993
  bridge: BRIDGE_CONTRACT_EVM_MAINNET,
1129
- adapter: ADAPTER_CONTRACT_EVM_MAINNET,
994
+ adapter: ADAPTER_CONTRACT_EVM_MAINNET
1130
995
  },
1131
996
  gateway: {
1132
997
  domain: 6,
1133
998
  contracts: {
1134
999
  v1: {
1135
1000
  wallet: GATEWAY_WALLET_EVM_MAINNET,
1136
- minter: GATEWAY_MINTER_EVM_MAINNET,
1137
- },
1001
+ minter: GATEWAY_MINTER_EVM_MAINNET
1002
+ }
1138
1003
  },
1139
1004
  forwarderSupported: {
1140
1005
  source: true,
1141
- destination: true,
1142
- },
1143
- },
1006
+ destination: true
1007
+ }
1008
+ }
1144
1009
  });
1145
1010
 
1146
1011
  /**
1147
1012
  * Base Sepolia Testnet chain definition
1148
1013
  * @remarks
1149
1014
  * This represents the official test network for the Base blockchain on Sepolia.
1150
- */
1151
- const BaseSepolia = defineChain({
1015
+ */ const BaseSepolia = defineChain({
1152
1016
  type: 'evm',
1153
1017
  chain: Blockchain.Base_Sepolia,
1154
1018
  name: 'Base Sepolia',
@@ -1156,12 +1020,14 @@ const BaseSepolia = defineChain({
1156
1020
  nativeCurrency: {
1157
1021
  name: 'Sepolia Ether',
1158
1022
  symbol: 'ETH',
1159
- decimals: 18,
1023
+ decimals: 18
1160
1024
  },
1161
1025
  chainId: 84532,
1162
1026
  isTestnet: true,
1163
1027
  explorerUrl: 'https://sepolia.basescan.org/tx/{hash}',
1164
- rpcEndpoints: ['https://sepolia.base.org'],
1028
+ rpcEndpoints: [
1029
+ 'https://sepolia.base.org'
1030
+ ],
1165
1031
  eurcAddress: '0x808456652fdb597867f38412077A9182bf77359F',
1166
1032
  usdcAddress: '0x036CbD53842c5426634e7929541eC2318f3dCF7e',
1167
1033
  usdtAddress: null,
@@ -1172,45 +1038,45 @@ const BaseSepolia = defineChain({
1172
1038
  type: 'split',
1173
1039
  tokenMessenger: '0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5',
1174
1040
  messageTransmitter: '0x7865fAfC2db2093669d92c0F33AeEF291086BEFD',
1175
- confirmations: 65,
1041
+ confirmations: 65
1176
1042
  },
1177
1043
  v2: {
1178
1044
  type: 'split',
1179
1045
  tokenMessenger: '0x8fe6b999dc680ccfdd5bf7eb0974218be2542daa',
1180
1046
  messageTransmitter: '0xe737e5cebeeba77efe34d4aa090756590b1ce275',
1181
1047
  confirmations: 65,
1182
- fastConfirmations: 1,
1183
- },
1048
+ fastConfirmations: 1
1049
+ }
1184
1050
  },
1185
1051
  forwarderSupported: {
1186
- source: true,
1187
- destination: true,
1188
- },
1052
+ source: false,
1053
+ destination: true
1054
+ }
1189
1055
  },
1190
1056
  kitContracts: {
1191
1057
  bridge: BRIDGE_CONTRACT_EVM_TESTNET,
1058
+ adapter: ADAPTER_CONTRACT_EVM_TESTNET
1192
1059
  },
1193
1060
  gateway: {
1194
1061
  domain: 6,
1195
1062
  contracts: {
1196
1063
  v1: {
1197
1064
  wallet: GATEWAY_WALLET_EVM_TESTNET,
1198
- minter: GATEWAY_MINTER_EVM_TESTNET,
1199
- },
1065
+ minter: GATEWAY_MINTER_EVM_TESTNET
1066
+ }
1200
1067
  },
1201
1068
  forwarderSupported: {
1202
1069
  source: true,
1203
- destination: true,
1204
- },
1205
- },
1070
+ destination: true
1071
+ }
1072
+ }
1206
1073
  });
1207
1074
 
1208
1075
  /**
1209
1076
  * Celo Mainnet chain definition
1210
1077
  * @remarks
1211
1078
  * This represents the official production network for the Celo blockchain.
1212
- */
1213
- defineChain({
1079
+ */ defineChain({
1214
1080
  type: 'evm',
1215
1081
  chain: Blockchain.Celo,
1216
1082
  name: 'Celo',
@@ -1218,24 +1084,25 @@ defineChain({
1218
1084
  nativeCurrency: {
1219
1085
  name: 'Celo',
1220
1086
  symbol: 'CELO',
1221
- decimals: 18,
1087
+ decimals: 18
1222
1088
  },
1223
1089
  chainId: 42220,
1224
1090
  isTestnet: false,
1225
1091
  explorerUrl: 'https://celoscan.io/tx/{hash}',
1226
- rpcEndpoints: ['https://forno.celo.org'],
1092
+ rpcEndpoints: [
1093
+ 'https://forno.celo.org'
1094
+ ],
1227
1095
  eurcAddress: null,
1228
1096
  usdcAddress: '0xcebA9300f2b948710d2653dD7B07f33A8B32118C',
1229
1097
  usdtAddress: '0x48065fbBE25f71C9282ddf5e1cD6D6A887483D5e',
1230
- cctp: null,
1098
+ cctp: null
1231
1099
  });
1232
1100
 
1233
1101
  /**
1234
1102
  * Celo Alfajores Testnet chain definition
1235
1103
  * @remarks
1236
1104
  * This represents the official test network for the Celo blockchain.
1237
- */
1238
- defineChain({
1105
+ */ defineChain({
1239
1106
  type: 'evm',
1240
1107
  chain: Blockchain.Celo_Alfajores_Testnet,
1241
1108
  name: 'Celo Alfajores',
@@ -1243,24 +1110,25 @@ defineChain({
1243
1110
  nativeCurrency: {
1244
1111
  name: 'Celo',
1245
1112
  symbol: 'CELO',
1246
- decimals: 18,
1113
+ decimals: 18
1247
1114
  },
1248
1115
  chainId: 44787,
1249
1116
  isTestnet: true,
1250
1117
  explorerUrl: 'https://alfajores.celoscan.io/tx/{hash}',
1251
- rpcEndpoints: ['https://alfajores-forno.celo-testnet.org'],
1118
+ rpcEndpoints: [
1119
+ 'https://alfajores-forno.celo-testnet.org'
1120
+ ],
1252
1121
  eurcAddress: null,
1253
1122
  usdcAddress: '0x2F25deB3848C207fc8E0c34035B3Ba7fC157602B',
1254
1123
  usdtAddress: null,
1255
- cctp: null,
1124
+ cctp: null
1256
1125
  });
1257
1126
 
1258
1127
  /**
1259
1128
  * Codex Mainnet chain definition
1260
1129
  * @remarks
1261
1130
  * This represents the main network for the Codex blockchain.
1262
- */
1263
- const Codex = defineChain({
1131
+ */ const Codex = defineChain({
1264
1132
  type: 'evm',
1265
1133
  chain: Blockchain.Codex,
1266
1134
  name: 'Codex Mainnet',
@@ -1268,12 +1136,14 @@ const Codex = defineChain({
1268
1136
  nativeCurrency: {
1269
1137
  name: 'ETH',
1270
1138
  symbol: 'ETH',
1271
- decimals: 18,
1139
+ decimals: 18
1272
1140
  },
1273
1141
  chainId: 81224,
1274
1142
  isTestnet: false,
1275
1143
  explorerUrl: 'https://explorer.codex.xyz/tx/{hash}',
1276
- rpcEndpoints: ['https://rpc.codex.xyz'],
1144
+ rpcEndpoints: [
1145
+ 'https://rpc.codex.xyz'
1146
+ ],
1277
1147
  eurcAddress: null,
1278
1148
  usdcAddress: '0xd996633a415985DBd7D6D12f4A4343E31f5037cf',
1279
1149
  usdtAddress: null,
@@ -1285,25 +1155,24 @@ const Codex = defineChain({
1285
1155
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
1286
1156
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
1287
1157
  confirmations: 65,
1288
- fastConfirmations: 1,
1289
- },
1158
+ fastConfirmations: 1
1159
+ }
1290
1160
  },
1291
1161
  forwarderSupported: {
1292
- source: true,
1293
- destination: true,
1294
- },
1162
+ source: false,
1163
+ destination: true
1164
+ }
1295
1165
  },
1296
1166
  kitContracts: {
1297
- bridge: BRIDGE_CONTRACT_EVM_MAINNET,
1298
- },
1167
+ bridge: BRIDGE_CONTRACT_EVM_MAINNET
1168
+ }
1299
1169
  });
1300
1170
 
1301
1171
  /**
1302
1172
  * Codex Testnet chain definition
1303
1173
  * @remarks
1304
1174
  * This represents the test network for the Codex blockchain.
1305
- */
1306
- const CodexTestnet = defineChain({
1175
+ */ const CodexTestnet = defineChain({
1307
1176
  type: 'evm',
1308
1177
  chain: Blockchain.Codex_Testnet,
1309
1178
  name: 'Codex Testnet',
@@ -1311,12 +1180,14 @@ const CodexTestnet = defineChain({
1311
1180
  nativeCurrency: {
1312
1181
  name: 'ETH',
1313
1182
  symbol: 'ETH',
1314
- decimals: 18,
1183
+ decimals: 18
1315
1184
  },
1316
1185
  chainId: 812242,
1317
1186
  isTestnet: true,
1318
1187
  explorerUrl: 'https://explorer.codex-stg.xyz/tx/{hash}',
1319
- rpcEndpoints: ['https://rpc.codex-stg.xyz'],
1188
+ rpcEndpoints: [
1189
+ 'https://rpc.codex-stg.xyz'
1190
+ ],
1320
1191
  eurcAddress: null,
1321
1192
  usdcAddress: '0x6d7f141b6819C2c9CC2f818e6ad549E7Ca090F8f',
1322
1193
  usdtAddress: null,
@@ -1328,17 +1199,17 @@ const CodexTestnet = defineChain({
1328
1199
  tokenMessenger: '0x8fe6b999dc680ccfdd5bf7eb0974218be2542daa',
1329
1200
  messageTransmitter: '0xe737e5cebeeba77efe34d4aa090756590b1ce275',
1330
1201
  confirmations: 65,
1331
- fastConfirmations: 1,
1332
- },
1202
+ fastConfirmations: 1
1203
+ }
1333
1204
  },
1334
1205
  forwarderSupported: {
1335
- source: true,
1336
- destination: true,
1337
- },
1206
+ source: false,
1207
+ destination: true
1208
+ }
1338
1209
  },
1339
1210
  kitContracts: {
1340
- bridge: BRIDGE_CONTRACT_EVM_TESTNET,
1341
- },
1211
+ bridge: BRIDGE_CONTRACT_EVM_TESTNET
1212
+ }
1342
1213
  });
1343
1214
 
1344
1215
  /**
@@ -1346,8 +1217,7 @@ const CodexTestnet = defineChain({
1346
1217
  * @remarks
1347
1218
  * This represents the official production network for the Edge blockchain.
1348
1219
  * Edge is an EVM-compatible blockchain.
1349
- */
1350
- defineChain({
1220
+ */ defineChain({
1351
1221
  type: 'evm',
1352
1222
  chain: Blockchain.Edge,
1353
1223
  name: 'Edge',
@@ -1355,12 +1225,14 @@ defineChain({
1355
1225
  nativeCurrency: {
1356
1226
  name: 'Ether',
1357
1227
  symbol: 'ETH',
1358
- decimals: 18,
1228
+ decimals: 18
1359
1229
  },
1360
1230
  chainId: 3343,
1361
1231
  isTestnet: false,
1362
1232
  explorerUrl: 'https://pro.edgex.exchange/en-US/explorer/tx/{hash}',
1363
- rpcEndpoints: ['https://edge-mainnet.g.alchemy.com/public'],
1233
+ rpcEndpoints: [
1234
+ 'https://edge-mainnet.g.alchemy.com/public'
1235
+ ],
1364
1236
  eurcAddress: null,
1365
1237
  usdcAddress: '0x98d2919b9A214E6Fa5384AC81E6864bA686Ad74c',
1366
1238
  usdtAddress: null,
@@ -1372,17 +1244,17 @@ defineChain({
1372
1244
  tokenMessenger: '0x98706A006bc632Df31CAdFCBD43F38887ce2ca5c',
1373
1245
  messageTransmitter: '0x5b61381Fc9e58E70EfC13a4A97516997019198ee',
1374
1246
  confirmations: 65,
1375
- fastConfirmations: 1,
1376
- },
1247
+ fastConfirmations: 1
1248
+ }
1377
1249
  },
1378
1250
  forwarderSupported: {
1379
- source: true,
1380
- destination: true,
1381
- },
1251
+ source: false,
1252
+ destination: true
1253
+ }
1382
1254
  },
1383
1255
  kitContracts: {
1384
- bridge: '0x6D1AaE1c34Aeb582022916a67f2A655C6f4eDFF2', //Unique bridge address as CCTP address for Edge is also unique
1385
- },
1256
+ bridge: '0x6D1AaE1c34Aeb582022916a67f2A655C6f4eDFF2'
1257
+ }
1386
1258
  });
1387
1259
 
1388
1260
  /**
@@ -1390,8 +1262,7 @@ defineChain({
1390
1262
  * @remarks
1391
1263
  * This represents the official test network for the Edge blockchain.
1392
1264
  * Edge is an EVM-compatible blockchain.
1393
- */
1394
- defineChain({
1265
+ */ defineChain({
1395
1266
  type: 'evm',
1396
1267
  chain: Blockchain.Edge_Testnet,
1397
1268
  name: 'Edge Testnet',
@@ -1399,12 +1270,14 @@ defineChain({
1399
1270
  nativeCurrency: {
1400
1271
  name: 'Ether',
1401
1272
  symbol: 'ETH',
1402
- decimals: 18,
1273
+ decimals: 18
1403
1274
  },
1404
1275
  chainId: 33431,
1405
1276
  isTestnet: true,
1406
1277
  explorerUrl: 'https://edge-testnet.explorer.alchemy.com/tx/{hash}',
1407
- rpcEndpoints: ['https://edge-testnet.g.alchemy.com/public'],
1278
+ rpcEndpoints: [
1279
+ 'https://edge-testnet.g.alchemy.com/public'
1280
+ ],
1408
1281
  eurcAddress: null,
1409
1282
  usdcAddress: '0x2d9F7CAD728051AA35Ecdc472a14cf8cDF5CFD6B',
1410
1283
  usdtAddress: null,
@@ -1416,25 +1289,24 @@ defineChain({
1416
1289
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
1417
1290
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
1418
1291
  confirmations: 65,
1419
- fastConfirmations: 1,
1420
- },
1292
+ fastConfirmations: 1
1293
+ }
1421
1294
  },
1422
1295
  forwarderSupported: {
1423
- source: true,
1424
- destination: true,
1425
- },
1296
+ source: false,
1297
+ destination: true
1298
+ }
1426
1299
  },
1427
1300
  kitContracts: {
1428
- bridge: BRIDGE_CONTRACT_EVM_TESTNET,
1429
- },
1301
+ bridge: BRIDGE_CONTRACT_EVM_TESTNET
1302
+ }
1430
1303
  });
1431
1304
 
1432
1305
  /**
1433
1306
  * Ethereum Mainnet chain definition
1434
1307
  * @remarks
1435
1308
  * This represents the official production network for the Ethereum blockchain.
1436
- */
1437
- const Ethereum = defineChain({
1309
+ */ const Ethereum = defineChain({
1438
1310
  type: 'evm',
1439
1311
  chain: Blockchain.Ethereum,
1440
1312
  name: 'Ethereum',
@@ -1442,14 +1314,14 @@ const Ethereum = defineChain({
1442
1314
  nativeCurrency: {
1443
1315
  name: 'Ether',
1444
1316
  symbol: 'ETH',
1445
- decimals: 18,
1317
+ decimals: 18
1446
1318
  },
1447
1319
  chainId: 1,
1448
1320
  isTestnet: false,
1449
1321
  explorerUrl: 'https://etherscan.io/tx/{hash}',
1450
1322
  rpcEndpoints: [
1451
1323
  'https://ethereum-rpc.publicnode.com',
1452
- 'https://ethereum.publicnode.com',
1324
+ 'https://ethereum.publicnode.com'
1453
1325
  ],
1454
1326
  eurcAddress: '0x1aBaEA1f7C830bD89Acc67eC4af516284b1bC33c',
1455
1327
  usdcAddress: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
@@ -1461,46 +1333,45 @@ const Ethereum = defineChain({
1461
1333
  type: 'split',
1462
1334
  tokenMessenger: '0xbd3fa81b58ba92a82136038b25adec7066af3155',
1463
1335
  messageTransmitter: '0x0a992d191deec32afe36203ad87d7d289a738f81',
1464
- confirmations: 65,
1336
+ confirmations: 65
1465
1337
  },
1466
1338
  v2: {
1467
1339
  type: 'split',
1468
1340
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
1469
1341
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
1470
1342
  confirmations: 65,
1471
- fastConfirmations: 2,
1472
- },
1343
+ fastConfirmations: 2
1344
+ }
1473
1345
  },
1474
1346
  forwarderSupported: {
1475
- source: true,
1476
- destination: true,
1477
- },
1347
+ source: false,
1348
+ destination: true
1349
+ }
1478
1350
  },
1479
1351
  kitContracts: {
1480
1352
  bridge: BRIDGE_CONTRACT_EVM_MAINNET,
1481
- adapter: ADAPTER_CONTRACT_EVM_MAINNET,
1353
+ adapter: ADAPTER_CONTRACT_EVM_MAINNET
1482
1354
  },
1483
1355
  gateway: {
1484
1356
  domain: 0,
1485
1357
  contracts: {
1486
1358
  v1: {
1487
1359
  wallet: GATEWAY_WALLET_EVM_MAINNET,
1488
- minter: GATEWAY_MINTER_EVM_MAINNET,
1489
- },
1360
+ minter: GATEWAY_MINTER_EVM_MAINNET
1361
+ }
1490
1362
  },
1491
1363
  forwarderSupported: {
1492
1364
  source: true,
1493
- destination: true,
1494
- },
1495
- },
1365
+ destination: true
1366
+ }
1367
+ }
1496
1368
  });
1497
1369
 
1498
1370
  /**
1499
1371
  * Ethereum Sepolia Testnet chain definition
1500
1372
  * @remarks
1501
1373
  * This represents the official test network for the Ethereum blockchain on Sepolia.
1502
- */
1503
- const EthereumSepolia = defineChain({
1374
+ */ const EthereumSepolia = defineChain({
1504
1375
  type: 'evm',
1505
1376
  chain: Blockchain.Ethereum_Sepolia,
1506
1377
  name: 'Ethereum Sepolia',
@@ -1508,12 +1379,14 @@ const EthereumSepolia = defineChain({
1508
1379
  nativeCurrency: {
1509
1380
  name: 'Sepolia Ether',
1510
1381
  symbol: 'ETH',
1511
- decimals: 18,
1382
+ decimals: 18
1512
1383
  },
1513
1384
  chainId: 11155111,
1514
1385
  isTestnet: true,
1515
1386
  explorerUrl: 'https://sepolia.etherscan.io/tx/{hash}',
1516
- rpcEndpoints: ['https://ethereum-sepolia-rpc.publicnode.com'],
1387
+ rpcEndpoints: [
1388
+ 'https://ethereum-sepolia-rpc.publicnode.com'
1389
+ ],
1517
1390
  eurcAddress: '0x08210F9170F89Ab7658F0B5E3fF39b0E03C594D4',
1518
1391
  usdcAddress: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238',
1519
1392
  usdtAddress: null,
@@ -1524,45 +1397,45 @@ const EthereumSepolia = defineChain({
1524
1397
  type: 'split',
1525
1398
  tokenMessenger: '0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5',
1526
1399
  messageTransmitter: '0x7865fAfC2db2093669d92c0F33AeEF291086BEFD',
1527
- confirmations: 65,
1400
+ confirmations: 65
1528
1401
  },
1529
1402
  v2: {
1530
1403
  type: 'split',
1531
1404
  tokenMessenger: '0x8fe6b999dc680ccfdd5bf7eb0974218be2542daa',
1532
1405
  messageTransmitter: '0xe737e5cebeeba77efe34d4aa090756590b1ce275',
1533
1406
  confirmations: 65,
1534
- fastConfirmations: 2,
1535
- },
1407
+ fastConfirmations: 2
1408
+ }
1536
1409
  },
1537
1410
  forwarderSupported: {
1538
- source: true,
1539
- destination: true,
1540
- },
1411
+ source: false,
1412
+ destination: true
1413
+ }
1541
1414
  },
1542
1415
  kitContracts: {
1543
1416
  bridge: BRIDGE_CONTRACT_EVM_TESTNET,
1417
+ adapter: ADAPTER_CONTRACT_EVM_TESTNET
1544
1418
  },
1545
1419
  gateway: {
1546
1420
  domain: 0,
1547
1421
  contracts: {
1548
1422
  v1: {
1549
1423
  wallet: GATEWAY_WALLET_EVM_TESTNET,
1550
- minter: GATEWAY_MINTER_EVM_TESTNET,
1551
- },
1424
+ minter: GATEWAY_MINTER_EVM_TESTNET
1425
+ }
1552
1426
  },
1553
1427
  forwarderSupported: {
1554
1428
  source: true,
1555
- destination: true,
1556
- },
1557
- },
1429
+ destination: true
1430
+ }
1431
+ }
1558
1432
  });
1559
1433
 
1560
1434
  /**
1561
1435
  * Hedera Mainnet chain definition
1562
1436
  * @remarks
1563
1437
  * This represents the official production network for the Hedera blockchain.
1564
- */
1565
- defineChain({
1438
+ */ defineChain({
1566
1439
  type: 'hedera',
1567
1440
  chain: Blockchain.Hedera,
1568
1441
  name: 'Hedera',
@@ -1570,23 +1443,24 @@ defineChain({
1570
1443
  nativeCurrency: {
1571
1444
  name: 'HBAR',
1572
1445
  symbol: 'HBAR',
1573
- decimals: 18,
1446
+ decimals: 18
1574
1447
  },
1575
1448
  isTestnet: false,
1576
- explorerUrl: 'https://hashscan.io/mainnet/transaction/{hash}', // Note: Hedera uses `transaction_id`, not hash. Format is typically `0.0.X-YYYY...`.
1577
- rpcEndpoints: ['https://mainnet.hashio.io/api'],
1449
+ explorerUrl: 'https://hashscan.io/mainnet/transaction/{hash}',
1450
+ rpcEndpoints: [
1451
+ 'https://mainnet.hashio.io/api'
1452
+ ],
1578
1453
  eurcAddress: null,
1579
1454
  usdcAddress: '0.0.456858',
1580
1455
  usdtAddress: null,
1581
- cctp: null,
1456
+ cctp: null
1582
1457
  });
1583
1458
 
1584
1459
  /**
1585
1460
  * Hedera Testnet chain definition
1586
1461
  * @remarks
1587
1462
  * This represents the official test network for the Hedera blockchain.
1588
- */
1589
- defineChain({
1463
+ */ defineChain({
1590
1464
  type: 'hedera',
1591
1465
  chain: Blockchain.Hedera_Testnet,
1592
1466
  name: 'Hedera Testnet',
@@ -1594,15 +1468,17 @@ defineChain({
1594
1468
  nativeCurrency: {
1595
1469
  name: 'HBAR',
1596
1470
  symbol: 'HBAR',
1597
- decimals: 18,
1471
+ decimals: 18
1598
1472
  },
1599
1473
  isTestnet: true,
1600
- explorerUrl: 'https://hashscan.io/testnet/transaction/{hash}', // Note: Hedera uses `transaction_id`, not hash. Format is typically `0.0.X-YYYY...`.
1601
- rpcEndpoints: ['https://testnet.hashio.io/api'],
1474
+ explorerUrl: 'https://hashscan.io/testnet/transaction/{hash}',
1475
+ rpcEndpoints: [
1476
+ 'https://testnet.hashio.io/api'
1477
+ ],
1602
1478
  eurcAddress: null,
1603
1479
  usdcAddress: '0.0.429274',
1604
1480
  usdtAddress: null,
1605
- cctp: null,
1481
+ cctp: null
1606
1482
  });
1607
1483
 
1608
1484
  /**
@@ -1611,8 +1487,7 @@ defineChain({
1611
1487
  * This represents the official production network for the HyperEVM blockchain.
1612
1488
  * HyperEVM is a Layer 1 blockchain specialized for DeFi and trading applications
1613
1489
  * with native orderbook and matching engine.
1614
- */
1615
- const HyperEVM = defineChain({
1490
+ */ const HyperEVM = defineChain({
1616
1491
  type: 'evm',
1617
1492
  chain: Blockchain.HyperEVM,
1618
1493
  name: 'HyperEVM',
@@ -1620,12 +1495,14 @@ const HyperEVM = defineChain({
1620
1495
  nativeCurrency: {
1621
1496
  name: 'Hype',
1622
1497
  symbol: 'HYPE',
1623
- decimals: 18,
1498
+ decimals: 18
1624
1499
  },
1625
1500
  chainId: 999,
1626
1501
  isTestnet: false,
1627
1502
  explorerUrl: 'https://hyperevmscan.io/tx/{hash}',
1628
- rpcEndpoints: ['https://rpc.hyperliquid.xyz/evm'],
1503
+ rpcEndpoints: [
1504
+ 'https://rpc.hyperliquid.xyz/evm'
1505
+ ],
1629
1506
  eurcAddress: null,
1630
1507
  usdcAddress: '0xb88339CB7199b77E23DB6E890353E22632Ba630f',
1631
1508
  usdtAddress: null,
@@ -1637,31 +1514,31 @@ const HyperEVM = defineChain({
1637
1514
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
1638
1515
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
1639
1516
  confirmations: 1,
1640
- fastConfirmations: 1,
1641
- },
1517
+ fastConfirmations: 1
1518
+ }
1642
1519
  },
1643
1520
  forwarderSupported: {
1644
- source: true,
1645
- destination: true,
1646
- },
1521
+ source: false,
1522
+ destination: true
1523
+ }
1647
1524
  },
1648
1525
  kitContracts: {
1649
1526
  bridge: BRIDGE_CONTRACT_EVM_MAINNET,
1650
- adapter: ADAPTER_CONTRACT_EVM_MAINNET,
1527
+ adapter: ADAPTER_CONTRACT_EVM_MAINNET
1651
1528
  },
1652
1529
  gateway: {
1653
1530
  domain: 19,
1654
1531
  contracts: {
1655
1532
  v1: {
1656
1533
  wallet: GATEWAY_WALLET_EVM_MAINNET,
1657
- minter: GATEWAY_MINTER_EVM_MAINNET,
1658
- },
1534
+ minter: GATEWAY_MINTER_EVM_MAINNET
1535
+ }
1659
1536
  },
1660
1537
  forwarderSupported: {
1661
1538
  source: true,
1662
- destination: true,
1663
- },
1664
- },
1539
+ destination: true
1540
+ }
1541
+ }
1665
1542
  });
1666
1543
 
1667
1544
  /**
@@ -1669,8 +1546,7 @@ const HyperEVM = defineChain({
1669
1546
  * @remarks
1670
1547
  * This represents the official testnet for the HyperEVM blockchain.
1671
1548
  * Used for development and testing purposes before deploying to mainnet.
1672
- */
1673
- const HyperEVMTestnet = defineChain({
1549
+ */ const HyperEVMTestnet = defineChain({
1674
1550
  type: 'evm',
1675
1551
  chain: Blockchain.HyperEVM_Testnet,
1676
1552
  name: 'HyperEVM Testnet',
@@ -1678,12 +1554,14 @@ const HyperEVMTestnet = defineChain({
1678
1554
  nativeCurrency: {
1679
1555
  name: 'Hype',
1680
1556
  symbol: 'HYPE',
1681
- decimals: 18,
1557
+ decimals: 18
1682
1558
  },
1683
1559
  chainId: 998,
1684
1560
  isTestnet: true,
1685
1561
  explorerUrl: 'https://app.hyperliquid-testnet.xyz/explorer/tx/{hash}',
1686
- rpcEndpoints: ['https://rpc.hyperliquid-testnet.xyz/evm'],
1562
+ rpcEndpoints: [
1563
+ 'https://rpc.hyperliquid-testnet.xyz/evm'
1564
+ ],
1687
1565
  eurcAddress: null,
1688
1566
  usdcAddress: '0x2B3370eE501B4a559b57D449569354196457D8Ab',
1689
1567
  usdtAddress: null,
@@ -1695,30 +1573,30 @@ const HyperEVMTestnet = defineChain({
1695
1573
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
1696
1574
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
1697
1575
  confirmations: 1,
1698
- fastConfirmations: 1,
1699
- },
1576
+ fastConfirmations: 1
1577
+ }
1700
1578
  },
1701
1579
  forwarderSupported: {
1702
- source: true,
1703
- destination: true,
1704
- },
1580
+ source: false,
1581
+ destination: true
1582
+ }
1705
1583
  },
1706
1584
  kitContracts: {
1707
- bridge: BRIDGE_CONTRACT_EVM_TESTNET,
1585
+ bridge: BRIDGE_CONTRACT_EVM_TESTNET
1708
1586
  },
1709
1587
  gateway: {
1710
1588
  domain: 19,
1711
1589
  contracts: {
1712
1590
  v1: {
1713
1591
  wallet: GATEWAY_WALLET_EVM_TESTNET,
1714
- minter: GATEWAY_MINTER_EVM_TESTNET,
1715
- },
1592
+ minter: GATEWAY_MINTER_EVM_TESTNET
1593
+ }
1716
1594
  },
1717
1595
  forwarderSupported: {
1718
1596
  source: true,
1719
- destination: true,
1720
- },
1721
- },
1597
+ destination: true
1598
+ }
1599
+ }
1722
1600
  });
1723
1601
 
1724
1602
  /**
@@ -1728,8 +1606,7 @@ const HyperEVMTestnet = defineChain({
1728
1606
  * Injective is a high-performance, interoperable Layer-1 blockchain built for
1729
1607
  * finance, with an EVM execution layer on top of a Cosmos SDK base and
1730
1608
  * sub-second block finality.
1731
- */
1732
- defineChain({
1609
+ */ defineChain({
1733
1610
  type: 'evm',
1734
1611
  chain: Blockchain.Injective,
1735
1612
  name: 'Injective',
@@ -1737,12 +1614,14 @@ defineChain({
1737
1614
  nativeCurrency: {
1738
1615
  name: 'Injective',
1739
1616
  symbol: 'INJ',
1740
- decimals: 18,
1617
+ decimals: 18
1741
1618
  },
1742
1619
  chainId: 1776,
1743
1620
  isTestnet: false,
1744
1621
  explorerUrl: 'https://injscan.com/transaction/{hash}',
1745
- rpcEndpoints: ['https://sentry.evm-rpc.injective.network'],
1622
+ rpcEndpoints: [
1623
+ 'https://sentry.evm-rpc.injective.network'
1624
+ ],
1746
1625
  eurcAddress: null,
1747
1626
  usdcAddress: '0xa00C59fF5a080D2b954d0c75e46E22a0c371235a',
1748
1627
  usdtAddress: null,
@@ -1754,17 +1633,17 @@ defineChain({
1754
1633
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
1755
1634
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
1756
1635
  confirmations: 1,
1757
- fastConfirmations: 1,
1758
- },
1636
+ fastConfirmations: 1
1637
+ }
1759
1638
  },
1760
1639
  forwarderSupported: {
1761
1640
  source: false,
1762
- destination: false,
1763
- },
1641
+ destination: false
1642
+ }
1764
1643
  },
1765
1644
  kitContracts: {
1766
- bridge: BRIDGE_CONTRACT_EVM_MAINNET,
1767
- },
1645
+ bridge: BRIDGE_CONTRACT_EVM_MAINNET
1646
+ }
1768
1647
  });
1769
1648
 
1770
1649
  /**
@@ -1774,8 +1653,7 @@ defineChain({
1774
1653
  * Injective is a high-performance, interoperable Layer-1 blockchain built for
1775
1654
  * finance, with an EVM execution layer on top of a Cosmos SDK base and
1776
1655
  * sub-second block finality.
1777
- */
1778
- defineChain({
1656
+ */ defineChain({
1779
1657
  type: 'evm',
1780
1658
  chain: Blockchain.Injective_Testnet,
1781
1659
  name: 'Injective Testnet',
@@ -1783,12 +1661,14 @@ defineChain({
1783
1661
  nativeCurrency: {
1784
1662
  name: 'Injective',
1785
1663
  symbol: 'INJ',
1786
- decimals: 18,
1664
+ decimals: 18
1787
1665
  },
1788
1666
  chainId: 1439,
1789
1667
  isTestnet: true,
1790
1668
  explorerUrl: 'https://testnet.explorer.injective.network/transaction/{hash}',
1791
- rpcEndpoints: ['https://k8s.testnet.json-rpc.injective.network'],
1669
+ rpcEndpoints: [
1670
+ 'https://k8s.testnet.json-rpc.injective.network'
1671
+ ],
1792
1672
  eurcAddress: null,
1793
1673
  usdcAddress: '0x0C382e685bbeeFE5d3d9C29e29E341fEE8E84C5d',
1794
1674
  usdtAddress: null,
@@ -1800,17 +1680,17 @@ defineChain({
1800
1680
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
1801
1681
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
1802
1682
  confirmations: 1,
1803
- fastConfirmations: 1,
1804
- },
1683
+ fastConfirmations: 1
1684
+ }
1805
1685
  },
1806
1686
  forwarderSupported: {
1807
1687
  source: false,
1808
- destination: false,
1809
- },
1688
+ destination: false
1689
+ }
1810
1690
  },
1811
1691
  kitContracts: {
1812
- bridge: BRIDGE_CONTRACT_EVM_TESTNET,
1813
- },
1692
+ bridge: BRIDGE_CONTRACT_EVM_TESTNET
1693
+ }
1814
1694
  });
1815
1695
 
1816
1696
  /**
@@ -1819,8 +1699,7 @@ defineChain({
1819
1699
  * This represents the official production network for the Ink blockchain.
1820
1700
  * Ink is a Layer 1 blockchain specialized for DeFi and trading applications
1821
1701
  * with native orderbook and matching engine.
1822
- */
1823
- const Ink = defineChain({
1702
+ */ const Ink = defineChain({
1824
1703
  type: 'evm',
1825
1704
  chain: Blockchain.Ink,
1826
1705
  name: 'Ink',
@@ -1828,14 +1707,14 @@ const Ink = defineChain({
1828
1707
  nativeCurrency: {
1829
1708
  name: 'Ether',
1830
1709
  symbol: 'ETH',
1831
- decimals: 18,
1710
+ decimals: 18
1832
1711
  },
1833
1712
  chainId: 57073,
1834
1713
  isTestnet: false,
1835
1714
  explorerUrl: 'https://explorer.inkonchain.com/tx/{hash}',
1836
1715
  rpcEndpoints: [
1837
1716
  'https://rpc-gel.inkonchain.com',
1838
- 'https://rpc-qnd.inkonchain.com',
1717
+ 'https://rpc-qnd.inkonchain.com'
1839
1718
  ],
1840
1719
  eurcAddress: null,
1841
1720
  usdcAddress: '0x2D270e6886d130D724215A266106e6832161EAEd',
@@ -1848,18 +1727,18 @@ const Ink = defineChain({
1848
1727
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
1849
1728
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
1850
1729
  confirmations: 65,
1851
- fastConfirmations: 1,
1852
- },
1730
+ fastConfirmations: 1
1731
+ }
1853
1732
  },
1854
1733
  forwarderSupported: {
1855
- source: true,
1856
- destination: true,
1857
- },
1734
+ source: false,
1735
+ destination: true
1736
+ }
1858
1737
  },
1859
1738
  kitContracts: {
1860
1739
  bridge: BRIDGE_CONTRACT_EVM_MAINNET,
1861
- adapter: ADAPTER_CONTRACT_EVM_MAINNET,
1862
- },
1740
+ adapter: ADAPTER_CONTRACT_EVM_MAINNET
1741
+ }
1863
1742
  });
1864
1743
 
1865
1744
  /**
@@ -1867,8 +1746,7 @@ const Ink = defineChain({
1867
1746
  * @remarks
1868
1747
  * This represents the official testnet for the Ink blockchain.
1869
1748
  * Used for development and testing purposes before deploying to mainnet.
1870
- */
1871
- const InkTestnet = defineChain({
1749
+ */ const InkTestnet = defineChain({
1872
1750
  type: 'evm',
1873
1751
  chain: Blockchain.Ink_Testnet,
1874
1752
  name: 'Ink Sepolia',
@@ -1876,14 +1754,14 @@ const InkTestnet = defineChain({
1876
1754
  nativeCurrency: {
1877
1755
  name: 'Sepolia Ether',
1878
1756
  symbol: 'ETH',
1879
- decimals: 18,
1757
+ decimals: 18
1880
1758
  },
1881
1759
  chainId: 763373,
1882
1760
  isTestnet: true,
1883
1761
  explorerUrl: 'https://explorer-sepolia.inkonchain.com/tx/{hash}',
1884
1762
  rpcEndpoints: [
1885
1763
  'https://rpc-gel-sepolia.inkonchain.com',
1886
- 'https://rpc-qnd-sepolia.inkonchain.com',
1764
+ 'https://rpc-qnd-sepolia.inkonchain.com'
1887
1765
  ],
1888
1766
  eurcAddress: null,
1889
1767
  usdcAddress: '0xFabab97dCE620294D2B0b0e46C68964e326300Ac',
@@ -1896,25 +1774,24 @@ const InkTestnet = defineChain({
1896
1774
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
1897
1775
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
1898
1776
  confirmations: 65,
1899
- fastConfirmations: 1,
1900
- },
1777
+ fastConfirmations: 1
1778
+ }
1901
1779
  },
1902
1780
  forwarderSupported: {
1903
- source: true,
1904
- destination: true,
1905
- },
1781
+ source: false,
1782
+ destination: true
1783
+ }
1906
1784
  },
1907
1785
  kitContracts: {
1908
- bridge: BRIDGE_CONTRACT_EVM_TESTNET,
1909
- },
1786
+ bridge: BRIDGE_CONTRACT_EVM_TESTNET
1787
+ }
1910
1788
  });
1911
1789
 
1912
1790
  /**
1913
1791
  * Linea Mainnet chain definition
1914
1792
  * @remarks
1915
1793
  * This represents the official production network for the Linea blockchain.
1916
- */
1917
- const Linea = defineChain({
1794
+ */ const Linea = defineChain({
1918
1795
  type: 'evm',
1919
1796
  chain: Blockchain.Linea,
1920
1797
  name: 'Linea',
@@ -1922,12 +1799,14 @@ const Linea = defineChain({
1922
1799
  nativeCurrency: {
1923
1800
  name: 'Ether',
1924
1801
  symbol: 'ETH',
1925
- decimals: 18,
1802
+ decimals: 18
1926
1803
  },
1927
1804
  chainId: 59144,
1928
1805
  isTestnet: false,
1929
1806
  explorerUrl: 'https://lineascan.build/tx/{hash}',
1930
- rpcEndpoints: ['https://rpc.linea.build'],
1807
+ rpcEndpoints: [
1808
+ 'https://rpc.linea.build'
1809
+ ],
1931
1810
  eurcAddress: null,
1932
1811
  usdcAddress: '0x176211869ca2b568f2a7d4ee941e073a821ee1ff',
1933
1812
  usdtAddress: null,
@@ -1939,26 +1818,25 @@ const Linea = defineChain({
1939
1818
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
1940
1819
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
1941
1820
  confirmations: 1,
1942
- fastConfirmations: 1,
1943
- },
1821
+ fastConfirmations: 1
1822
+ }
1944
1823
  },
1945
1824
  forwarderSupported: {
1946
- source: true,
1947
- destination: true,
1948
- },
1825
+ source: false,
1826
+ destination: true
1827
+ }
1949
1828
  },
1950
1829
  kitContracts: {
1951
1830
  bridge: BRIDGE_CONTRACT_EVM_MAINNET,
1952
- adapter: ADAPTER_CONTRACT_EVM_MAINNET,
1953
- },
1831
+ adapter: ADAPTER_CONTRACT_EVM_MAINNET
1832
+ }
1954
1833
  });
1955
1834
 
1956
1835
  /**
1957
1836
  * Linea Sepolia Testnet chain definition
1958
1837
  * @remarks
1959
1838
  * This represents the official test network for the Linea blockchain on Sepolia.
1960
- */
1961
- const LineaSepolia = defineChain({
1839
+ */ const LineaSepolia = defineChain({
1962
1840
  type: 'evm',
1963
1841
  chain: Blockchain.Linea_Sepolia,
1964
1842
  name: 'Linea Sepolia',
@@ -1966,12 +1844,14 @@ const LineaSepolia = defineChain({
1966
1844
  nativeCurrency: {
1967
1845
  name: 'Sepolia Ether',
1968
1846
  symbol: 'ETH',
1969
- decimals: 18,
1847
+ decimals: 18
1970
1848
  },
1971
1849
  chainId: 59141,
1972
1850
  isTestnet: true,
1973
1851
  explorerUrl: 'https://sepolia.lineascan.build/tx/{hash}',
1974
- rpcEndpoints: ['https://rpc.sepolia.linea.build'],
1852
+ rpcEndpoints: [
1853
+ 'https://rpc.sepolia.linea.build'
1854
+ ],
1975
1855
  eurcAddress: null,
1976
1856
  usdcAddress: '0xfece4462d57bd51a6a552365a011b95f0e16d9b7',
1977
1857
  usdtAddress: null,
@@ -1983,17 +1863,17 @@ const LineaSepolia = defineChain({
1983
1863
  tokenMessenger: '0x8fe6b999dc680ccfdd5bf7eb0974218be2542daa',
1984
1864
  messageTransmitter: '0xe737e5cebeeba77efe34d4aa090756590b1ce275',
1985
1865
  confirmations: 1,
1986
- fastConfirmations: 1,
1987
- },
1866
+ fastConfirmations: 1
1867
+ }
1988
1868
  },
1989
1869
  forwarderSupported: {
1990
- source: true,
1991
- destination: true,
1992
- },
1870
+ source: false,
1871
+ destination: true
1872
+ }
1993
1873
  },
1994
1874
  kitContracts: {
1995
- bridge: BRIDGE_CONTRACT_EVM_TESTNET,
1996
- },
1875
+ bridge: BRIDGE_CONTRACT_EVM_TESTNET
1876
+ }
1997
1877
  });
1998
1878
 
1999
1879
  /**
@@ -2002,8 +1882,7 @@ const LineaSepolia = defineChain({
2002
1882
  * This represents the official production network for the Monad blockchain.
2003
1883
  * Monad is a high-performance EVM-compatible Layer-1 blockchain featuring
2004
1884
  * over 10,000 TPS, sub-second finality, and near-zero gas fees.
2005
- */
2006
- defineChain({
1885
+ */ defineChain({
2007
1886
  type: 'evm',
2008
1887
  chain: Blockchain.Monad,
2009
1888
  name: 'Monad',
@@ -2011,12 +1890,14 @@ defineChain({
2011
1890
  nativeCurrency: {
2012
1891
  name: 'Monad',
2013
1892
  symbol: 'MON',
2014
- decimals: 18,
1893
+ decimals: 18
2015
1894
  },
2016
1895
  chainId: 143,
2017
1896
  isTestnet: false,
2018
1897
  explorerUrl: 'https://monadscan.com/tx/{hash}',
2019
- rpcEndpoints: ['https://rpc.monad.xyz'],
1898
+ rpcEndpoints: [
1899
+ 'https://rpc.monad.xyz'
1900
+ ],
2020
1901
  eurcAddress: null,
2021
1902
  usdcAddress: '0x754704Bc059F8C67012fEd69BC8A327a5aafb603',
2022
1903
  usdtAddress: null,
@@ -2028,18 +1909,18 @@ defineChain({
2028
1909
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
2029
1910
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
2030
1911
  confirmations: 1,
2031
- fastConfirmations: 1,
2032
- },
1912
+ fastConfirmations: 1
1913
+ }
2033
1914
  },
2034
1915
  forwarderSupported: {
2035
- source: true,
2036
- destination: true,
2037
- },
1916
+ source: false,
1917
+ destination: true
1918
+ }
2038
1919
  },
2039
1920
  kitContracts: {
2040
1921
  bridge: BRIDGE_CONTRACT_EVM_MAINNET,
2041
- adapter: ADAPTER_CONTRACT_EVM_MAINNET,
2042
- },
1922
+ adapter: ADAPTER_CONTRACT_EVM_MAINNET
1923
+ }
2043
1924
  });
2044
1925
 
2045
1926
  /**
@@ -2048,8 +1929,7 @@ defineChain({
2048
1929
  * This represents the official test network for the Monad blockchain.
2049
1930
  * Monad is a high-performance EVM-compatible Layer-1 blockchain featuring
2050
1931
  * over 10,000 TPS, sub-second finality, and near-zero gas fees.
2051
- */
2052
- defineChain({
1932
+ */ defineChain({
2053
1933
  type: 'evm',
2054
1934
  chain: Blockchain.Monad_Testnet,
2055
1935
  name: 'Monad Testnet',
@@ -2057,12 +1937,14 @@ defineChain({
2057
1937
  nativeCurrency: {
2058
1938
  name: 'Monad',
2059
1939
  symbol: 'MON',
2060
- decimals: 18,
1940
+ decimals: 18
2061
1941
  },
2062
1942
  chainId: 10143,
2063
1943
  isTestnet: true,
2064
1944
  explorerUrl: 'https://testnet.monadscan.com/tx/{hash}',
2065
- rpcEndpoints: ['https://testnet-rpc.monad.xyz'],
1945
+ rpcEndpoints: [
1946
+ 'https://testnet-rpc.monad.xyz'
1947
+ ],
2066
1948
  eurcAddress: null,
2067
1949
  usdcAddress: '0x534b2f3A21130d7a60830c2Df862319e593943A3',
2068
1950
  usdtAddress: null,
@@ -2074,17 +1956,17 @@ defineChain({
2074
1956
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
2075
1957
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
2076
1958
  confirmations: 1,
2077
- fastConfirmations: 1,
2078
- },
1959
+ fastConfirmations: 1
1960
+ }
2079
1961
  },
2080
1962
  forwarderSupported: {
2081
- source: true,
2082
- destination: true,
2083
- },
1963
+ source: false,
1964
+ destination: true
1965
+ }
2084
1966
  },
2085
1967
  kitContracts: {
2086
- bridge: BRIDGE_CONTRACT_EVM_TESTNET,
2087
- },
1968
+ bridge: BRIDGE_CONTRACT_EVM_TESTNET
1969
+ }
2088
1970
  });
2089
1971
 
2090
1972
  /**
@@ -2092,8 +1974,7 @@ defineChain({
2092
1974
  * @remarks
2093
1975
  * This represents the official production network for the Morph blockchain.
2094
1976
  * Morph is an EVM-compatible Layer-2 blockchain built on the OP Stack.
2095
- */
2096
- defineChain({
1977
+ */ defineChain({
2097
1978
  type: 'evm',
2098
1979
  chain: Blockchain.Morph,
2099
1980
  name: 'Morph',
@@ -2101,12 +1982,14 @@ defineChain({
2101
1982
  nativeCurrency: {
2102
1983
  name: 'Ether',
2103
1984
  symbol: 'ETH',
2104
- decimals: 18,
1985
+ decimals: 18
2105
1986
  },
2106
1987
  chainId: 2818,
2107
1988
  isTestnet: false,
2108
1989
  explorerUrl: 'https://explorer.morph.network/tx/{hash}',
2109
- rpcEndpoints: ['https://rpc.morphl2.io'],
1990
+ rpcEndpoints: [
1991
+ 'https://rpc.morphl2.io'
1992
+ ],
2110
1993
  eurcAddress: null,
2111
1994
  usdcAddress: '0xCfb1186F4e93D60E60a8bDd997427D1F33bc372B',
2112
1995
  usdtAddress: null,
@@ -2118,17 +2001,17 @@ defineChain({
2118
2001
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
2119
2002
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
2120
2003
  confirmations: 64,
2121
- fastConfirmations: 1,
2122
- },
2004
+ fastConfirmations: 1
2005
+ }
2123
2006
  },
2124
2007
  forwarderSupported: {
2125
2008
  source: false,
2126
- destination: false,
2127
- },
2009
+ destination: false
2010
+ }
2128
2011
  },
2129
2012
  kitContracts: {
2130
- bridge: BRIDGE_CONTRACT_EVM_MAINNET,
2131
- },
2013
+ bridge: BRIDGE_CONTRACT_EVM_MAINNET
2014
+ }
2132
2015
  });
2133
2016
 
2134
2017
  /**
@@ -2136,8 +2019,7 @@ defineChain({
2136
2019
  * @remarks
2137
2020
  * This represents the official test network for the Morph blockchain.
2138
2021
  * Morph is an EVM-compatible Layer-2 blockchain built on the OP Stack.
2139
- */
2140
- defineChain({
2022
+ */ defineChain({
2141
2023
  type: 'evm',
2142
2024
  chain: Blockchain.Morph_Testnet,
2143
2025
  name: 'Morph Hoodi',
@@ -2145,12 +2027,14 @@ defineChain({
2145
2027
  nativeCurrency: {
2146
2028
  name: 'Ether',
2147
2029
  symbol: 'ETH',
2148
- decimals: 18,
2030
+ decimals: 18
2149
2031
  },
2150
2032
  chainId: 2910,
2151
2033
  isTestnet: true,
2152
2034
  explorerUrl: 'https://explorer-hoodi.morphl2.io/tx/{hash}',
2153
- rpcEndpoints: ['https://rpc-hoodi.morphl2.io'],
2035
+ rpcEndpoints: [
2036
+ 'https://rpc-hoodi.morphl2.io'
2037
+ ],
2154
2038
  eurcAddress: null,
2155
2039
  usdcAddress: '0x7433b41C6c5e1d58D4Da99483609520255ab661B',
2156
2040
  usdtAddress: null,
@@ -2162,25 +2046,24 @@ defineChain({
2162
2046
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
2163
2047
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
2164
2048
  confirmations: 64,
2165
- fastConfirmations: 1,
2166
- },
2049
+ fastConfirmations: 1
2050
+ }
2167
2051
  },
2168
2052
  forwarderSupported: {
2169
2053
  source: false,
2170
- destination: false,
2171
- },
2054
+ destination: false
2055
+ }
2172
2056
  },
2173
2057
  kitContracts: {
2174
- bridge: BRIDGE_CONTRACT_EVM_TESTNET,
2175
- },
2058
+ bridge: BRIDGE_CONTRACT_EVM_TESTNET
2059
+ }
2176
2060
  });
2177
2061
 
2178
2062
  /**
2179
2063
  * NEAR Protocol Mainnet chain definition
2180
2064
  * @remarks
2181
2065
  * This represents the official production network for the NEAR Protocol blockchain.
2182
- */
2183
- defineChain({
2066
+ */ defineChain({
2184
2067
  type: 'near',
2185
2068
  chain: Blockchain.NEAR,
2186
2069
  name: 'NEAR Protocol',
@@ -2188,23 +2071,24 @@ defineChain({
2188
2071
  nativeCurrency: {
2189
2072
  name: 'NEAR',
2190
2073
  symbol: 'NEAR',
2191
- decimals: 24,
2074
+ decimals: 24
2192
2075
  },
2193
2076
  isTestnet: false,
2194
2077
  explorerUrl: 'https://nearblocks.io/txns/{hash}',
2195
- rpcEndpoints: ['https://eth-rpc.mainnet.near.org'],
2078
+ rpcEndpoints: [
2079
+ 'https://eth-rpc.mainnet.near.org'
2080
+ ],
2196
2081
  eurcAddress: null,
2197
2082
  usdcAddress: '17208628f84f5d6ad33f0da3bbbeb27ffcb398eac501a31bd6ad2011e36133a1',
2198
2083
  usdtAddress: 'usdt.tether-token.near',
2199
- cctp: null,
2084
+ cctp: null
2200
2085
  });
2201
2086
 
2202
2087
  /**
2203
2088
  * NEAR Testnet chain definition
2204
2089
  * @remarks
2205
2090
  * This represents the official test network for the NEAR Protocol blockchain.
2206
- */
2207
- defineChain({
2091
+ */ defineChain({
2208
2092
  type: 'near',
2209
2093
  chain: Blockchain.NEAR_Testnet,
2210
2094
  name: 'NEAR Protocol Testnet',
@@ -2212,23 +2096,24 @@ defineChain({
2212
2096
  nativeCurrency: {
2213
2097
  name: 'NEAR',
2214
2098
  symbol: 'NEAR',
2215
- decimals: 24,
2099
+ decimals: 24
2216
2100
  },
2217
2101
  isTestnet: true,
2218
2102
  explorerUrl: 'https://testnet.nearblocks.io/txns/{hash}',
2219
- rpcEndpoints: ['https://eth-rpc.testnet.near.org'],
2103
+ rpcEndpoints: [
2104
+ 'https://eth-rpc.testnet.near.org'
2105
+ ],
2220
2106
  eurcAddress: null,
2221
2107
  usdcAddress: '3e2210e1184b45b64c8a434c0a7e7b23cc04ea7eb7a6c3c32520d03d4afcb8af',
2222
2108
  usdtAddress: null,
2223
- cctp: null,
2109
+ cctp: null
2224
2110
  });
2225
2111
 
2226
2112
  /**
2227
2113
  * Noble Mainnet chain definition
2228
2114
  * @remarks
2229
2115
  * This represents the official production network for the Noble blockchain.
2230
- */
2231
- defineChain({
2116
+ */ defineChain({
2232
2117
  type: 'noble',
2233
2118
  chain: Blockchain.Noble,
2234
2119
  name: 'Noble',
@@ -2236,11 +2121,13 @@ defineChain({
2236
2121
  nativeCurrency: {
2237
2122
  name: 'Noble USDC',
2238
2123
  symbol: 'USDC',
2239
- decimals: 6,
2124
+ decimals: 6
2240
2125
  },
2241
2126
  isTestnet: false,
2242
2127
  explorerUrl: 'https://www.mintscan.io/noble/tx/{hash}',
2243
- rpcEndpoints: ['https://noble-rpc.polkachu.com'],
2128
+ rpcEndpoints: [
2129
+ 'https://noble-rpc.polkachu.com'
2130
+ ],
2244
2131
  eurcAddress: null,
2245
2132
  usdcAddress: 'uusdc',
2246
2133
  usdtAddress: null,
@@ -2250,22 +2137,21 @@ defineChain({
2250
2137
  v1: {
2251
2138
  type: 'merged',
2252
2139
  contract: 'noble12l2w4ugfz4m6dd73yysz477jszqnfughxvkss5',
2253
- confirmations: 1,
2254
- },
2140
+ confirmations: 1
2141
+ }
2255
2142
  },
2256
2143
  forwarderSupported: {
2257
2144
  source: false,
2258
- destination: false,
2259
- },
2260
- },
2145
+ destination: false
2146
+ }
2147
+ }
2261
2148
  });
2262
2149
 
2263
2150
  /**
2264
2151
  * Noble Testnet chain definition
2265
2152
  * @remarks
2266
2153
  * This represents the official test network for the Noble blockchain.
2267
- */
2268
- defineChain({
2154
+ */ defineChain({
2269
2155
  type: 'noble',
2270
2156
  chain: Blockchain.Noble_Testnet,
2271
2157
  name: 'Noble Testnet',
@@ -2273,11 +2159,13 @@ defineChain({
2273
2159
  nativeCurrency: {
2274
2160
  name: 'Noble USDC',
2275
2161
  symbol: 'USDC',
2276
- decimals: 6,
2162
+ decimals: 6
2277
2163
  },
2278
2164
  isTestnet: true,
2279
2165
  explorerUrl: 'https://www.mintscan.io/noble-testnet/tx/{hash}',
2280
- rpcEndpoints: ['https://noble-testnet-rpc.polkachu.com'],
2166
+ rpcEndpoints: [
2167
+ 'https://noble-testnet-rpc.polkachu.com'
2168
+ ],
2281
2169
  eurcAddress: null,
2282
2170
  usdcAddress: 'uusdc',
2283
2171
  usdtAddress: null,
@@ -2287,22 +2175,21 @@ defineChain({
2287
2175
  v1: {
2288
2176
  type: 'merged',
2289
2177
  contract: 'noble12l2w4ugfz4m6dd73yysz477jszqnfughxvkss5',
2290
- confirmations: 1,
2291
- },
2178
+ confirmations: 1
2179
+ }
2292
2180
  },
2293
2181
  forwarderSupported: {
2294
2182
  source: false,
2295
- destination: false,
2296
- },
2297
- },
2183
+ destination: false
2184
+ }
2185
+ }
2298
2186
  });
2299
2187
 
2300
2188
  /**
2301
2189
  * Optimism Mainnet chain definition
2302
2190
  * @remarks
2303
2191
  * This represents the official production network for the Optimism blockchain.
2304
- */
2305
- const Optimism = defineChain({
2192
+ */ const Optimism = defineChain({
2306
2193
  type: 'evm',
2307
2194
  chain: Blockchain.Optimism,
2308
2195
  name: 'Optimism',
@@ -2310,12 +2197,14 @@ const Optimism = defineChain({
2310
2197
  nativeCurrency: {
2311
2198
  name: 'Ether',
2312
2199
  symbol: 'ETH',
2313
- decimals: 18,
2200
+ decimals: 18
2314
2201
  },
2315
2202
  chainId: 10,
2316
2203
  isTestnet: false,
2317
2204
  explorerUrl: 'https://optimistic.etherscan.io/tx/{hash}',
2318
- rpcEndpoints: ['https://mainnet.optimism.io'],
2205
+ rpcEndpoints: [
2206
+ 'https://mainnet.optimism.io'
2207
+ ],
2319
2208
  eurcAddress: null,
2320
2209
  usdcAddress: '0x0b2c639c533813f4aa9d7837caf62653d097ff85',
2321
2210
  usdtAddress: null,
@@ -2326,46 +2215,45 @@ const Optimism = defineChain({
2326
2215
  type: 'split',
2327
2216
  tokenMessenger: '0x2B4069517957735bE00ceE0fadAE88a26365528f',
2328
2217
  messageTransmitter: '0x0a992d191deec32afe36203ad87d7d289a738f81',
2329
- confirmations: 65,
2218
+ confirmations: 65
2330
2219
  },
2331
2220
  v2: {
2332
2221
  type: 'split',
2333
2222
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
2334
2223
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
2335
2224
  confirmations: 65,
2336
- fastConfirmations: 1,
2337
- },
2225
+ fastConfirmations: 1
2226
+ }
2338
2227
  },
2339
2228
  forwarderSupported: {
2340
- source: true,
2341
- destination: true,
2342
- },
2229
+ source: false,
2230
+ destination: true
2231
+ }
2343
2232
  },
2344
2233
  kitContracts: {
2345
2234
  bridge: BRIDGE_CONTRACT_EVM_MAINNET,
2346
- adapter: ADAPTER_CONTRACT_EVM_MAINNET,
2235
+ adapter: ADAPTER_CONTRACT_EVM_MAINNET
2347
2236
  },
2348
2237
  gateway: {
2349
2238
  domain: 2,
2350
2239
  contracts: {
2351
2240
  v1: {
2352
2241
  wallet: GATEWAY_WALLET_EVM_MAINNET,
2353
- minter: GATEWAY_MINTER_EVM_MAINNET,
2354
- },
2242
+ minter: GATEWAY_MINTER_EVM_MAINNET
2243
+ }
2355
2244
  },
2356
2245
  forwarderSupported: {
2357
2246
  source: true,
2358
- destination: true,
2359
- },
2360
- },
2247
+ destination: true
2248
+ }
2249
+ }
2361
2250
  });
2362
2251
 
2363
2252
  /**
2364
2253
  * Optimism Sepolia Testnet chain definition
2365
2254
  * @remarks
2366
2255
  * This represents the official test network for the Optimism blockchain on Sepolia.
2367
- */
2368
- const OptimismSepolia = defineChain({
2256
+ */ const OptimismSepolia = defineChain({
2369
2257
  type: 'evm',
2370
2258
  chain: Blockchain.Optimism_Sepolia,
2371
2259
  name: 'Optimism Sepolia',
@@ -2373,12 +2261,14 @@ const OptimismSepolia = defineChain({
2373
2261
  nativeCurrency: {
2374
2262
  name: 'Sepolia Ether',
2375
2263
  symbol: 'ETH',
2376
- decimals: 18,
2264
+ decimals: 18
2377
2265
  },
2378
2266
  chainId: 11155420,
2379
2267
  isTestnet: true,
2380
2268
  explorerUrl: 'https://sepolia-optimistic.etherscan.io/tx/{hash}',
2381
- rpcEndpoints: ['https://sepolia.optimism.io'],
2269
+ rpcEndpoints: [
2270
+ 'https://sepolia.optimism.io'
2271
+ ],
2382
2272
  eurcAddress: null,
2383
2273
  usdcAddress: '0x5fd84259d66Cd46123540766Be93DFE6D43130D7',
2384
2274
  usdtAddress: null,
@@ -2389,37 +2279,37 @@ const OptimismSepolia = defineChain({
2389
2279
  type: 'split',
2390
2280
  tokenMessenger: '0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5',
2391
2281
  messageTransmitter: '0x7865fAfC2db2093669d92c0F33AeEF291086BEFD',
2392
- confirmations: 65,
2282
+ confirmations: 65
2393
2283
  },
2394
2284
  v2: {
2395
2285
  type: 'split',
2396
2286
  tokenMessenger: '0x8fe6b999dc680ccfdd5bf7eb0974218be2542daa',
2397
2287
  messageTransmitter: '0xe737e5cebeeba77efe34d4aa090756590b1ce275',
2398
2288
  confirmations: 65,
2399
- fastConfirmations: 1,
2400
- },
2289
+ fastConfirmations: 1
2290
+ }
2401
2291
  },
2402
2292
  forwarderSupported: {
2403
- source: true,
2404
- destination: true,
2405
- },
2293
+ source: false,
2294
+ destination: true
2295
+ }
2406
2296
  },
2407
2297
  kitContracts: {
2408
- bridge: BRIDGE_CONTRACT_EVM_TESTNET,
2298
+ bridge: BRIDGE_CONTRACT_EVM_TESTNET
2409
2299
  },
2410
2300
  gateway: {
2411
2301
  domain: 2,
2412
2302
  contracts: {
2413
2303
  v1: {
2414
2304
  wallet: GATEWAY_WALLET_EVM_TESTNET,
2415
- minter: GATEWAY_MINTER_EVM_TESTNET,
2416
- },
2305
+ minter: GATEWAY_MINTER_EVM_TESTNET
2306
+ }
2417
2307
  },
2418
2308
  forwarderSupported: {
2419
2309
  source: true,
2420
- destination: true,
2421
- },
2422
- },
2310
+ destination: true
2311
+ }
2312
+ }
2423
2313
  });
2424
2314
 
2425
2315
  /**
@@ -2428,8 +2318,7 @@ const OptimismSepolia = defineChain({
2428
2318
  * This represents the official production network for the Pharos blockchain.
2429
2319
  * Pharos is a modular, full-stack parallel Layer 1 blockchain with
2430
2320
  * sub-second finality and EVM compatibility.
2431
- */
2432
- defineChain({
2321
+ */ defineChain({
2433
2322
  type: 'evm',
2434
2323
  chain: Blockchain.Pharos,
2435
2324
  name: 'Pharos',
@@ -2437,12 +2326,14 @@ defineChain({
2437
2326
  nativeCurrency: {
2438
2327
  name: 'Pharos',
2439
2328
  symbol: 'PHAROS',
2440
- decimals: 18,
2329
+ decimals: 18
2441
2330
  },
2442
2331
  chainId: 1672,
2443
2332
  isTestnet: false,
2444
2333
  explorerUrl: 'https://pharos.socialscan.io/tx/{hash}',
2445
- rpcEndpoints: ['https://rpc.pharos.xyz'],
2334
+ rpcEndpoints: [
2335
+ 'https://rpc.pharos.xyz'
2336
+ ],
2446
2337
  eurcAddress: null,
2447
2338
  usdcAddress: '0xC879C018dB60520F4355C26eD1a6D572cdAC1815',
2448
2339
  usdtAddress: null,
@@ -2454,17 +2345,17 @@ defineChain({
2454
2345
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
2455
2346
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
2456
2347
  confirmations: 1,
2457
- fastConfirmations: 1,
2458
- },
2348
+ fastConfirmations: 1
2349
+ }
2459
2350
  },
2460
2351
  forwarderSupported: {
2461
2352
  source: false,
2462
- destination: false,
2463
- },
2353
+ destination: false
2354
+ }
2464
2355
  },
2465
2356
  kitContracts: {
2466
- bridge: BRIDGE_CONTRACT_EVM_MAINNET,
2467
- },
2357
+ bridge: BRIDGE_CONTRACT_EVM_MAINNET
2358
+ }
2468
2359
  });
2469
2360
 
2470
2361
  /**
@@ -2473,8 +2364,7 @@ defineChain({
2473
2364
  * This represents the official test network for the Pharos blockchain.
2474
2365
  * Pharos is a modular, full-stack parallel Layer 1 blockchain with
2475
2366
  * sub-second finality and EVM compatibility.
2476
- */
2477
- defineChain({
2367
+ */ defineChain({
2478
2368
  type: 'evm',
2479
2369
  chain: Blockchain.Pharos_Testnet,
2480
2370
  name: 'Pharos Atlantic',
@@ -2482,12 +2372,14 @@ defineChain({
2482
2372
  nativeCurrency: {
2483
2373
  name: 'Pharos',
2484
2374
  symbol: 'PHAROS',
2485
- decimals: 18,
2375
+ decimals: 18
2486
2376
  },
2487
2377
  chainId: 688689,
2488
2378
  isTestnet: true,
2489
2379
  explorerUrl: 'https://atlantic.pharosscan.xyz/tx/{hash}',
2490
- rpcEndpoints: ['https://atlantic.dplabs-internal.com'],
2380
+ rpcEndpoints: [
2381
+ 'https://atlantic.dplabs-internal.com'
2382
+ ],
2491
2383
  eurcAddress: null,
2492
2384
  usdcAddress: '0xcfC8330f4BCAB529c625D12781b1C19466A9Fc8B',
2493
2385
  usdtAddress: null,
@@ -2499,17 +2391,17 @@ defineChain({
2499
2391
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
2500
2392
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
2501
2393
  confirmations: 1,
2502
- fastConfirmations: 1,
2503
- },
2394
+ fastConfirmations: 1
2395
+ }
2504
2396
  },
2505
2397
  forwarderSupported: {
2506
2398
  source: false,
2507
- destination: false,
2508
- },
2399
+ destination: false
2400
+ }
2509
2401
  },
2510
2402
  kitContracts: {
2511
- bridge: BRIDGE_CONTRACT_EVM_TESTNET,
2512
- },
2403
+ bridge: BRIDGE_CONTRACT_EVM_TESTNET
2404
+ }
2513
2405
  });
2514
2406
 
2515
2407
  /**
@@ -2518,8 +2410,7 @@ defineChain({
2518
2410
  * This represents the official production network for the Plume blockchain.
2519
2411
  * Plume is a Layer 1 blockchain specialized for DeFi and trading applications
2520
2412
  * with native orderbook and matching engine.
2521
- */
2522
- const Plume = defineChain({
2413
+ */ const Plume = defineChain({
2523
2414
  type: 'evm',
2524
2415
  chain: Blockchain.Plume,
2525
2416
  name: 'Plume',
@@ -2527,12 +2418,14 @@ const Plume = defineChain({
2527
2418
  nativeCurrency: {
2528
2419
  name: 'Plume',
2529
2420
  symbol: 'PLUME',
2530
- decimals: 18,
2421
+ decimals: 18
2531
2422
  },
2532
2423
  chainId: 98866,
2533
2424
  isTestnet: false,
2534
2425
  explorerUrl: 'https://explorer.plume.org/tx/{hash}',
2535
- rpcEndpoints: ['https://rpc.plume.org'],
2426
+ rpcEndpoints: [
2427
+ 'https://rpc.plume.org'
2428
+ ],
2536
2429
  eurcAddress: null,
2537
2430
  usdcAddress: '0x222365EF19F7947e5484218551B56bb3965Aa7aF',
2538
2431
  usdtAddress: null,
@@ -2544,18 +2437,18 @@ const Plume = defineChain({
2544
2437
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
2545
2438
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
2546
2439
  confirmations: 65,
2547
- fastConfirmations: 1,
2548
- },
2440
+ fastConfirmations: 1
2441
+ }
2549
2442
  },
2550
2443
  forwarderSupported: {
2551
- source: true,
2552
- destination: true,
2553
- },
2444
+ source: false,
2445
+ destination: true
2446
+ }
2554
2447
  },
2555
2448
  kitContracts: {
2556
2449
  bridge: BRIDGE_CONTRACT_EVM_MAINNET,
2557
- adapter: ADAPTER_CONTRACT_EVM_MAINNET,
2558
- },
2450
+ adapter: ADAPTER_CONTRACT_EVM_MAINNET
2451
+ }
2559
2452
  });
2560
2453
 
2561
2454
  /**
@@ -2563,8 +2456,7 @@ const Plume = defineChain({
2563
2456
  * @remarks
2564
2457
  * This represents the official testnet for the Plume blockchain.
2565
2458
  * Used for development and testing purposes before deploying to mainnet.
2566
- */
2567
- const PlumeTestnet = defineChain({
2459
+ */ const PlumeTestnet = defineChain({
2568
2460
  type: 'evm',
2569
2461
  chain: Blockchain.Plume_Testnet,
2570
2462
  name: 'Plume Testnet',
@@ -2572,12 +2464,14 @@ const PlumeTestnet = defineChain({
2572
2464
  nativeCurrency: {
2573
2465
  name: 'Plume',
2574
2466
  symbol: 'PLUME',
2575
- decimals: 18,
2467
+ decimals: 18
2576
2468
  },
2577
2469
  chainId: 98867,
2578
2470
  isTestnet: true,
2579
2471
  explorerUrl: 'https://testnet-explorer.plume.org/tx/{hash}',
2580
- rpcEndpoints: ['https://testnet-rpc.plume.org'],
2472
+ rpcEndpoints: [
2473
+ 'https://testnet-rpc.plume.org'
2474
+ ],
2581
2475
  eurcAddress: null,
2582
2476
  usdcAddress: '0xcB5f30e335672893c7eb944B374c196392C19D18',
2583
2477
  usdtAddress: null,
@@ -2589,25 +2483,24 @@ const PlumeTestnet = defineChain({
2589
2483
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
2590
2484
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
2591
2485
  confirmations: 65,
2592
- fastConfirmations: 1,
2593
- },
2486
+ fastConfirmations: 1
2487
+ }
2594
2488
  },
2595
2489
  forwarderSupported: {
2596
- source: true,
2597
- destination: true,
2598
- },
2490
+ source: false,
2491
+ destination: true
2492
+ }
2599
2493
  },
2600
2494
  kitContracts: {
2601
- bridge: BRIDGE_CONTRACT_EVM_TESTNET,
2602
- },
2495
+ bridge: BRIDGE_CONTRACT_EVM_TESTNET
2496
+ }
2603
2497
  });
2604
2498
 
2605
2499
  /**
2606
2500
  * Polkadot Asset Hub chain definition
2607
2501
  * @remarks
2608
2502
  * This represents the official asset management parachain for the Polkadot blockchain.
2609
- */
2610
- defineChain({
2503
+ */ defineChain({
2611
2504
  type: 'polkadot',
2612
2505
  chain: Blockchain.Polkadot_Asset_Hub,
2613
2506
  name: 'Polkadot Asset Hub',
@@ -2615,23 +2508,24 @@ defineChain({
2615
2508
  nativeCurrency: {
2616
2509
  name: 'Polkadot',
2617
2510
  symbol: 'DOT',
2618
- decimals: 10,
2511
+ decimals: 10
2619
2512
  },
2620
2513
  isTestnet: false,
2621
2514
  explorerUrl: 'https://polkadot.subscan.io/extrinsic/{hash}',
2622
- rpcEndpoints: ['https://asset-hub-polkadot-rpc.n.dwellir.com'],
2515
+ rpcEndpoints: [
2516
+ 'https://asset-hub-polkadot-rpc.n.dwellir.com'
2517
+ ],
2623
2518
  eurcAddress: null,
2624
2519
  usdcAddress: '1337',
2625
2520
  usdtAddress: '1984',
2626
- cctp: null,
2521
+ cctp: null
2627
2522
  });
2628
2523
 
2629
2524
  /**
2630
2525
  * Polkadot Westmint chain definition
2631
2526
  * @remarks
2632
2527
  * This represents an asset management parachain in the Polkadot ecosystem.
2633
- */
2634
- defineChain({
2528
+ */ defineChain({
2635
2529
  type: 'polkadot',
2636
2530
  chain: Blockchain.Polkadot_Westmint,
2637
2531
  name: 'Polkadot Westmint',
@@ -2639,23 +2533,24 @@ defineChain({
2639
2533
  nativeCurrency: {
2640
2534
  name: 'Polkadot',
2641
2535
  symbol: 'DOT',
2642
- decimals: 10,
2536
+ decimals: 10
2643
2537
  },
2644
2538
  isTestnet: false,
2645
2539
  explorerUrl: 'https://assethub-polkadot.subscan.io/extrinsic/{hash}',
2646
- rpcEndpoints: ['https://westmint-rpc.polkadot.io'],
2540
+ rpcEndpoints: [
2541
+ 'https://westmint-rpc.polkadot.io'
2542
+ ],
2647
2543
  eurcAddress: null,
2648
2544
  usdcAddress: 'Asset ID 31337',
2649
2545
  usdtAddress: null,
2650
- cctp: null,
2546
+ cctp: null
2651
2547
  });
2652
2548
 
2653
2549
  /**
2654
2550
  * Polygon Mainnet chain definition
2655
2551
  * @remarks
2656
2552
  * This represents the official production network for the Polygon blockchain.
2657
- */
2658
- const Polygon = defineChain({
2553
+ */ const Polygon = defineChain({
2659
2554
  type: 'evm',
2660
2555
  chain: Blockchain.Polygon,
2661
2556
  name: 'Polygon',
@@ -2663,12 +2558,15 @@ const Polygon = defineChain({
2663
2558
  nativeCurrency: {
2664
2559
  name: 'POL',
2665
2560
  symbol: 'POL',
2666
- decimals: 18,
2561
+ decimals: 18
2667
2562
  },
2668
2563
  chainId: 137,
2669
2564
  isTestnet: false,
2670
2565
  explorerUrl: 'https://polygonscan.com/tx/{hash}',
2671
- rpcEndpoints: ['https://polygon.publicnode.com', 'https://polygon.drpc.org'],
2566
+ rpcEndpoints: [
2567
+ 'https://polygon.publicnode.com',
2568
+ 'https://polygon.drpc.org'
2569
+ ],
2672
2570
  eurcAddress: null,
2673
2571
  usdcAddress: '0x3c499c542cef5e3811e1192ce70d8cc03d5c3359',
2674
2572
  usdtAddress: null,
@@ -2679,46 +2577,45 @@ const Polygon = defineChain({
2679
2577
  type: 'split',
2680
2578
  tokenMessenger: '0x9daF8c91AEFAE50b9c0E69629D3F6Ca40cA3B3FE',
2681
2579
  messageTransmitter: '0xF3be9355363857F3e001be68856A2f96b4C39Ba9',
2682
- confirmations: 200,
2580
+ confirmations: 200
2683
2581
  },
2684
2582
  v2: {
2685
2583
  type: 'split',
2686
2584
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
2687
2585
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
2688
2586
  confirmations: 33,
2689
- fastConfirmations: 13,
2690
- },
2587
+ fastConfirmations: 13
2588
+ }
2691
2589
  },
2692
2590
  forwarderSupported: {
2693
- source: true,
2694
- destination: true,
2695
- },
2591
+ source: false,
2592
+ destination: true
2593
+ }
2696
2594
  },
2697
2595
  kitContracts: {
2698
2596
  bridge: BRIDGE_CONTRACT_EVM_MAINNET,
2699
- adapter: ADAPTER_CONTRACT_EVM_MAINNET,
2597
+ adapter: ADAPTER_CONTRACT_EVM_MAINNET
2700
2598
  },
2701
2599
  gateway: {
2702
2600
  domain: 7,
2703
2601
  contracts: {
2704
2602
  v1: {
2705
2603
  wallet: GATEWAY_WALLET_EVM_MAINNET,
2706
- minter: GATEWAY_MINTER_EVM_MAINNET,
2707
- },
2604
+ minter: GATEWAY_MINTER_EVM_MAINNET
2605
+ }
2708
2606
  },
2709
2607
  forwarderSupported: {
2710
2608
  source: true,
2711
- destination: true,
2712
- },
2713
- },
2609
+ destination: true
2610
+ }
2611
+ }
2714
2612
  });
2715
2613
 
2716
2614
  /**
2717
2615
  * Polygon Amoy Testnet chain definition
2718
2616
  * @remarks
2719
2617
  * This represents the official test network for the Polygon blockchain.
2720
- */
2721
- const PolygonAmoy = defineChain({
2618
+ */ const PolygonAmoy = defineChain({
2722
2619
  type: 'evm',
2723
2620
  chain: Blockchain.Polygon_Amoy_Testnet,
2724
2621
  name: 'Polygon Amoy',
@@ -2726,12 +2623,14 @@ const PolygonAmoy = defineChain({
2726
2623
  nativeCurrency: {
2727
2624
  name: 'POL',
2728
2625
  symbol: 'POL',
2729
- decimals: 18,
2626
+ decimals: 18
2730
2627
  },
2731
2628
  chainId: 80002,
2732
2629
  isTestnet: true,
2733
2630
  explorerUrl: 'https://amoy.polygonscan.com/tx/{hash}',
2734
- rpcEndpoints: ['https://rpc-amoy.polygon.technology'],
2631
+ rpcEndpoints: [
2632
+ 'https://rpc-amoy.polygon.technology'
2633
+ ],
2735
2634
  eurcAddress: null,
2736
2635
  usdcAddress: '0x41e94eb019c0762f9bfcf9fb1e58725bfb0e7582',
2737
2636
  usdtAddress: null,
@@ -2742,37 +2641,37 @@ const PolygonAmoy = defineChain({
2742
2641
  type: 'split',
2743
2642
  tokenMessenger: '0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5',
2744
2643
  messageTransmitter: '0x7865fAfC2db2093669d92c0F33AeEF291086BEFD',
2745
- confirmations: 200,
2644
+ confirmations: 200
2746
2645
  },
2747
2646
  v2: {
2748
2647
  type: 'split',
2749
2648
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
2750
2649
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
2751
2650
  confirmations: 33,
2752
- fastConfirmations: 13,
2753
- },
2651
+ fastConfirmations: 13
2652
+ }
2754
2653
  },
2755
2654
  forwarderSupported: {
2756
- source: true,
2757
- destination: true,
2758
- },
2655
+ source: false,
2656
+ destination: true
2657
+ }
2759
2658
  },
2760
2659
  kitContracts: {
2761
- bridge: BRIDGE_CONTRACT_EVM_TESTNET,
2660
+ bridge: BRIDGE_CONTRACT_EVM_TESTNET
2762
2661
  },
2763
2662
  gateway: {
2764
2663
  domain: 7,
2765
2664
  contracts: {
2766
2665
  v1: {
2767
2666
  wallet: GATEWAY_WALLET_EVM_TESTNET,
2768
- minter: GATEWAY_MINTER_EVM_TESTNET,
2769
- },
2667
+ minter: GATEWAY_MINTER_EVM_TESTNET
2668
+ }
2770
2669
  },
2771
2670
  forwarderSupported: {
2772
2671
  source: true,
2773
- destination: true,
2774
- },
2775
- },
2672
+ destination: true
2673
+ }
2674
+ }
2776
2675
  });
2777
2676
 
2778
2677
  /**
@@ -2781,8 +2680,7 @@ const PolygonAmoy = defineChain({
2781
2680
  * This represents the official production network for the Sei blockchain.
2782
2681
  * Sei is a Layer 1 blockchain specialized for DeFi and trading applications
2783
2682
  * with native orderbook and matching engine.
2784
- */
2785
- const Sei = defineChain({
2683
+ */ const Sei = defineChain({
2786
2684
  type: 'evm',
2787
2685
  chain: Blockchain.Sei,
2788
2686
  name: 'Sei',
@@ -2790,12 +2688,14 @@ const Sei = defineChain({
2790
2688
  nativeCurrency: {
2791
2689
  name: 'Sei',
2792
2690
  symbol: 'SEI',
2793
- decimals: 18,
2691
+ decimals: 18
2794
2692
  },
2795
2693
  chainId: 1329,
2796
2694
  isTestnet: false,
2797
2695
  explorerUrl: 'https://seiscan.io/tx/{hash}',
2798
- rpcEndpoints: ['https://evm-rpc.sei-apis.com'],
2696
+ rpcEndpoints: [
2697
+ 'https://evm-rpc.sei-apis.com'
2698
+ ],
2799
2699
  eurcAddress: null,
2800
2700
  usdcAddress: '0xe15fC38F6D8c56aF07bbCBe3BAf5708A2Bf42392',
2801
2701
  usdtAddress: null,
@@ -2807,31 +2707,31 @@ const Sei = defineChain({
2807
2707
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
2808
2708
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
2809
2709
  confirmations: 1,
2810
- fastConfirmations: 1,
2811
- },
2710
+ fastConfirmations: 1
2711
+ }
2812
2712
  },
2813
2713
  forwarderSupported: {
2814
- source: true,
2815
- destination: true,
2816
- },
2714
+ source: false,
2715
+ destination: true
2716
+ }
2817
2717
  },
2818
2718
  kitContracts: {
2819
2719
  bridge: BRIDGE_CONTRACT_EVM_MAINNET,
2820
- adapter: ADAPTER_CONTRACT_EVM_MAINNET,
2720
+ adapter: ADAPTER_CONTRACT_EVM_MAINNET
2821
2721
  },
2822
2722
  gateway: {
2823
2723
  domain: 16,
2824
2724
  contracts: {
2825
2725
  v1: {
2826
2726
  wallet: GATEWAY_WALLET_EVM_MAINNET,
2827
- minter: GATEWAY_MINTER_EVM_MAINNET,
2828
- },
2727
+ minter: GATEWAY_MINTER_EVM_MAINNET
2728
+ }
2829
2729
  },
2830
2730
  forwarderSupported: {
2831
2731
  source: true,
2832
- destination: true,
2833
- },
2834
- },
2732
+ destination: true
2733
+ }
2734
+ }
2835
2735
  });
2836
2736
 
2837
2737
  /**
@@ -2839,8 +2739,7 @@ const Sei = defineChain({
2839
2739
  * @remarks
2840
2740
  * This represents the official testnet for the Sei blockchain.
2841
2741
  * Used for development and testing purposes before deploying to mainnet.
2842
- */
2843
- const SeiTestnet = defineChain({
2742
+ */ const SeiTestnet = defineChain({
2844
2743
  type: 'evm',
2845
2744
  chain: Blockchain.Sei_Testnet,
2846
2745
  name: 'Sei Testnet',
@@ -2848,12 +2747,14 @@ const SeiTestnet = defineChain({
2848
2747
  nativeCurrency: {
2849
2748
  name: 'Sei',
2850
2749
  symbol: 'SEI',
2851
- decimals: 18,
2750
+ decimals: 18
2852
2751
  },
2853
2752
  chainId: 1328,
2854
2753
  isTestnet: true,
2855
2754
  explorerUrl: 'https://testnet.seiscan.io/tx/{hash}',
2856
- rpcEndpoints: ['https://evm-rpc-testnet.sei-apis.com'],
2755
+ rpcEndpoints: [
2756
+ 'https://evm-rpc-testnet.sei-apis.com'
2757
+ ],
2857
2758
  eurcAddress: null,
2858
2759
  usdcAddress: '0x4fCF1784B31630811181f670Aea7A7bEF803eaED',
2859
2760
  usdtAddress: null,
@@ -2865,38 +2766,37 @@ const SeiTestnet = defineChain({
2865
2766
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
2866
2767
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
2867
2768
  confirmations: 1,
2868
- fastConfirmations: 1,
2869
- },
2769
+ fastConfirmations: 1
2770
+ }
2870
2771
  },
2871
2772
  forwarderSupported: {
2872
- source: true,
2873
- destination: true,
2874
- },
2773
+ source: false,
2774
+ destination: true
2775
+ }
2875
2776
  },
2876
2777
  kitContracts: {
2877
- bridge: BRIDGE_CONTRACT_EVM_TESTNET,
2778
+ bridge: BRIDGE_CONTRACT_EVM_TESTNET
2878
2779
  },
2879
2780
  gateway: {
2880
2781
  domain: 16,
2881
2782
  contracts: {
2882
2783
  v1: {
2883
2784
  wallet: GATEWAY_WALLET_EVM_TESTNET,
2884
- minter: GATEWAY_MINTER_EVM_TESTNET,
2885
- },
2785
+ minter: GATEWAY_MINTER_EVM_TESTNET
2786
+ }
2886
2787
  },
2887
2788
  forwarderSupported: {
2888
2789
  source: true,
2889
- destination: true,
2890
- },
2891
- },
2790
+ destination: true
2791
+ }
2792
+ }
2892
2793
  });
2893
2794
 
2894
2795
  /**
2895
2796
  * Sonic Mainnet chain definition
2896
2797
  * @remarks
2897
2798
  * This represents the official production network for the Sonic blockchain.
2898
- */
2899
- const Sonic = defineChain({
2799
+ */ const Sonic = defineChain({
2900
2800
  type: 'evm',
2901
2801
  chain: Blockchain.Sonic,
2902
2802
  name: 'Sonic',
@@ -2904,12 +2804,14 @@ const Sonic = defineChain({
2904
2804
  nativeCurrency: {
2905
2805
  name: 'Sonic',
2906
2806
  symbol: 'S',
2907
- decimals: 18,
2807
+ decimals: 18
2908
2808
  },
2909
2809
  chainId: 146,
2910
2810
  isTestnet: false,
2911
2811
  explorerUrl: 'https://sonicscan.org/tx/{hash}',
2912
- rpcEndpoints: ['https://rpc.soniclabs.com'],
2812
+ rpcEndpoints: [
2813
+ 'https://rpc.soniclabs.com'
2814
+ ],
2913
2815
  eurcAddress: null,
2914
2816
  usdcAddress: '0x29219dd400f2Bf60E5a23d13Be72B486D4038894',
2915
2817
  usdtAddress: null,
@@ -2921,39 +2823,38 @@ const Sonic = defineChain({
2921
2823
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
2922
2824
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
2923
2825
  confirmations: 1,
2924
- fastConfirmations: 1,
2925
- },
2826
+ fastConfirmations: 1
2827
+ }
2926
2828
  },
2927
2829
  forwarderSupported: {
2928
- source: true,
2929
- destination: true,
2930
- },
2830
+ source: false,
2831
+ destination: true
2832
+ }
2931
2833
  },
2932
2834
  kitContracts: {
2933
2835
  bridge: BRIDGE_CONTRACT_EVM_MAINNET,
2934
- adapter: ADAPTER_CONTRACT_EVM_MAINNET,
2836
+ adapter: ADAPTER_CONTRACT_EVM_MAINNET
2935
2837
  },
2936
2838
  gateway: {
2937
2839
  domain: 13,
2938
2840
  contracts: {
2939
2841
  v1: {
2940
2842
  wallet: GATEWAY_WALLET_EVM_MAINNET,
2941
- minter: GATEWAY_MINTER_EVM_MAINNET,
2942
- },
2843
+ minter: GATEWAY_MINTER_EVM_MAINNET
2844
+ }
2943
2845
  },
2944
2846
  forwarderSupported: {
2945
2847
  source: true,
2946
- destination: true,
2947
- },
2948
- },
2848
+ destination: true
2849
+ }
2850
+ }
2949
2851
  });
2950
2852
 
2951
2853
  /**
2952
2854
  * Sonic Testnet chain definition
2953
2855
  * @remarks
2954
2856
  * This represents the official test network for the Sonic blockchain.
2955
- */
2956
- const SonicTestnet = defineChain({
2857
+ */ const SonicTestnet = defineChain({
2957
2858
  type: 'evm',
2958
2859
  chain: Blockchain.Sonic_Testnet,
2959
2860
  name: 'Sonic Testnet',
@@ -2961,12 +2862,14 @@ const SonicTestnet = defineChain({
2961
2862
  nativeCurrency: {
2962
2863
  name: 'Sonic',
2963
2864
  symbol: 'S',
2964
- decimals: 18,
2865
+ decimals: 18
2965
2866
  },
2966
2867
  chainId: 14601,
2967
2868
  isTestnet: true,
2968
2869
  explorerUrl: 'https://testnet.sonicscan.org/tx/{hash}',
2969
- rpcEndpoints: ['https://rpc.testnet.soniclabs.com'],
2870
+ rpcEndpoints: [
2871
+ 'https://rpc.testnet.soniclabs.com'
2872
+ ],
2970
2873
  eurcAddress: null,
2971
2874
  usdcAddress: '0x0BA304580ee7c9a980CF72e55f5Ed2E9fd30Bc51',
2972
2875
  usdtAddress: null,
@@ -2978,38 +2881,37 @@ const SonicTestnet = defineChain({
2978
2881
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
2979
2882
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
2980
2883
  confirmations: 1,
2981
- fastConfirmations: 1,
2982
- },
2884
+ fastConfirmations: 1
2885
+ }
2983
2886
  },
2984
2887
  forwarderSupported: {
2985
- source: true,
2986
- destination: true,
2987
- },
2888
+ source: false,
2889
+ destination: true
2890
+ }
2988
2891
  },
2989
2892
  kitContracts: {
2990
- bridge: BRIDGE_CONTRACT_EVM_TESTNET,
2893
+ bridge: BRIDGE_CONTRACT_EVM_TESTNET
2991
2894
  },
2992
2895
  gateway: {
2993
2896
  domain: 13,
2994
2897
  contracts: {
2995
2898
  v1: {
2996
2899
  wallet: GATEWAY_WALLET_EVM_TESTNET,
2997
- minter: GATEWAY_MINTER_EVM_TESTNET,
2998
- },
2900
+ minter: GATEWAY_MINTER_EVM_TESTNET
2901
+ }
2999
2902
  },
3000
2903
  forwarderSupported: {
3001
2904
  source: true,
3002
- destination: true,
3003
- },
3004
- },
2905
+ destination: true
2906
+ }
2907
+ }
3005
2908
  });
3006
2909
 
3007
2910
  /**
3008
2911
  * Solana Mainnet chain definition
3009
2912
  * @remarks
3010
2913
  * This represents the official production network for the Solana blockchain.
3011
- */
3012
- const Solana = defineChain({
2914
+ */ const Solana = defineChain({
3013
2915
  type: 'solana',
3014
2916
  chain: Blockchain.Solana,
3015
2917
  name: 'Solana',
@@ -3017,11 +2919,13 @@ const Solana = defineChain({
3017
2919
  nativeCurrency: {
3018
2920
  name: 'Solana',
3019
2921
  symbol: 'SOL',
3020
- decimals: 9,
2922
+ decimals: 9
3021
2923
  },
3022
2924
  isTestnet: false,
3023
2925
  explorerUrl: 'https://solscan.io/tx/{hash}',
3024
- rpcEndpoints: ['https://api.mainnet-beta.solana.com'],
2926
+ rpcEndpoints: [
2927
+ 'https://api.mainnet-beta.solana.com'
2928
+ ],
3025
2929
  eurcAddress: 'HzwqbKZw8HxMN6bF2yFZNrht3c2iXXzpKcFu7uBEDKtr',
3026
2930
  usdcAddress: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
3027
2931
  usdtAddress: 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB',
@@ -3032,45 +2936,44 @@ const Solana = defineChain({
3032
2936
  type: 'split',
3033
2937
  tokenMessenger: 'CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3',
3034
2938
  messageTransmitter: 'CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd',
3035
- confirmations: 32,
2939
+ confirmations: 32
3036
2940
  },
3037
2941
  v2: {
3038
2942
  type: 'split',
3039
2943
  tokenMessenger: 'CCTPV2vPZJS2u2BBsUoscuikbYjnpFmbFsvVuJdgUMQe',
3040
2944
  messageTransmitter: 'CCTPV2Sm4AdWt5296sk4P66VBZ7bEhcARwFaaS9YPbeC',
3041
2945
  confirmations: 32,
3042
- fastConfirmations: 3,
3043
- },
2946
+ fastConfirmations: 3
2947
+ }
3044
2948
  },
3045
2949
  forwarderSupported: {
3046
- source: true,
3047
- destination: true,
3048
- },
2950
+ source: false,
2951
+ destination: true
2952
+ }
3049
2953
  },
3050
2954
  kitContracts: {
3051
- bridge: 'DFaauJEjmiHkPs1JG89A4p95hDWi9m9SAEERY1LQJiC3',
2955
+ bridge: 'DFaauJEjmiHkPs1JG89A4p95hDWi9m9SAEERY1LQJiC3'
3052
2956
  },
3053
2957
  gateway: {
3054
2958
  domain: 5,
3055
2959
  contracts: {
3056
2960
  v1: {
3057
2961
  wallet: GATEWAY_WALLET_SOLANA_MAINNET,
3058
- minter: GATEWAY_MINTER_SOLANA_MAINNET,
3059
- },
2962
+ minter: GATEWAY_MINTER_SOLANA_MAINNET
2963
+ }
3060
2964
  },
3061
2965
  forwarderSupported: {
3062
2966
  source: true,
3063
- destination: false,
3064
- },
3065
- },
2967
+ destination: true
2968
+ }
2969
+ }
3066
2970
  });
3067
2971
 
3068
2972
  /**
3069
2973
  * Solana Devnet chain definition
3070
2974
  * @remarks
3071
2975
  * This represents the development test network for the Solana blockchain.
3072
- */
3073
- const SolanaDevnet = defineChain({
2976
+ */ const SolanaDevnet = defineChain({
3074
2977
  type: 'solana',
3075
2978
  chain: Blockchain.Solana_Devnet,
3076
2979
  name: 'Solana Devnet',
@@ -3078,7 +2981,7 @@ const SolanaDevnet = defineChain({
3078
2981
  nativeCurrency: {
3079
2982
  name: 'Solana',
3080
2983
  symbol: 'SOL',
3081
- decimals: 9,
2984
+ decimals: 9
3082
2985
  },
3083
2986
  isTestnet: true,
3084
2987
  explorerUrl: 'https://solscan.io/tx/{hash}?cluster=devnet',
@@ -3092,46 +2995,47 @@ const SolanaDevnet = defineChain({
3092
2995
  type: 'split',
3093
2996
  tokenMessenger: 'CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3',
3094
2997
  messageTransmitter: 'CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd',
3095
- confirmations: 32,
2998
+ confirmations: 32
3096
2999
  },
3097
3000
  v2: {
3098
3001
  type: 'split',
3099
3002
  tokenMessenger: 'CCTPV2vPZJS2u2BBsUoscuikbYjnpFmbFsvVuJdgUMQe',
3100
3003
  messageTransmitter: 'CCTPV2Sm4AdWt5296sk4P66VBZ7bEhcARwFaaS9YPbeC',
3101
3004
  confirmations: 32,
3102
- fastConfirmations: 3,
3103
- },
3005
+ fastConfirmations: 3
3006
+ }
3104
3007
  },
3105
3008
  forwarderSupported: {
3106
- source: true,
3107
- destination: true,
3108
- },
3009
+ source: false,
3010
+ destination: true
3011
+ }
3109
3012
  },
3110
3013
  kitContracts: {
3111
- bridge: 'DFaauJEjmiHkPs1JG89A4p95hDWi9m9SAEERY1LQJiC3',
3014
+ bridge: 'DFaauJEjmiHkPs1JG89A4p95hDWi9m9SAEERY1LQJiC3'
3112
3015
  },
3113
- rpcEndpoints: ['https://api.devnet.solana.com'],
3016
+ rpcEndpoints: [
3017
+ 'https://api.devnet.solana.com'
3018
+ ],
3114
3019
  gateway: {
3115
3020
  domain: 5,
3116
3021
  contracts: {
3117
3022
  v1: {
3118
3023
  wallet: GATEWAY_WALLET_SOLANA_DEVNET,
3119
- minter: GATEWAY_MINTER_SOLANA_DEVNET,
3120
- },
3024
+ minter: GATEWAY_MINTER_SOLANA_DEVNET
3025
+ }
3121
3026
  },
3122
3027
  forwarderSupported: {
3123
3028
  source: true,
3124
- destination: false,
3125
- },
3126
- },
3029
+ destination: true
3030
+ }
3031
+ }
3127
3032
  });
3128
3033
 
3129
3034
  /**
3130
3035
  * Stellar Mainnet chain definition
3131
3036
  * @remarks
3132
3037
  * This represents the official production network for the Stellar blockchain.
3133
- */
3134
- defineChain({
3038
+ */ defineChain({
3135
3039
  type: 'stellar',
3136
3040
  chain: Blockchain.Stellar,
3137
3041
  name: 'Stellar',
@@ -3139,23 +3043,24 @@ defineChain({
3139
3043
  nativeCurrency: {
3140
3044
  name: 'Stellar Lumens',
3141
3045
  symbol: 'XLM',
3142
- decimals: 7,
3046
+ decimals: 7
3143
3047
  },
3144
3048
  isTestnet: false,
3145
3049
  explorerUrl: 'https://stellar.expert/explorer/public/tx/{hash}',
3146
- rpcEndpoints: ['https://horizon.stellar.org'],
3050
+ rpcEndpoints: [
3051
+ 'https://horizon.stellar.org'
3052
+ ],
3147
3053
  eurcAddress: 'EURC-GDHU6WRG4IEQXM5NZ4BMPKOXHW76MZM4Y2IEMFDVXBSDP6SJY4ITNPP2',
3148
3054
  usdcAddress: 'USDC-GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN',
3149
3055
  usdtAddress: null,
3150
- cctp: null,
3056
+ cctp: null
3151
3057
  });
3152
3058
 
3153
3059
  /**
3154
3060
  * Stellar Testnet chain definition
3155
3061
  * @remarks
3156
3062
  * This represents the official test network for the Stellar blockchain.
3157
- */
3158
- defineChain({
3063
+ */ defineChain({
3159
3064
  type: 'stellar',
3160
3065
  chain: Blockchain.Stellar_Testnet,
3161
3066
  name: 'Stellar Testnet',
@@ -3163,23 +3068,24 @@ defineChain({
3163
3068
  nativeCurrency: {
3164
3069
  name: 'Stellar Lumens',
3165
3070
  symbol: 'XLM',
3166
- decimals: 7,
3071
+ decimals: 7
3167
3072
  },
3168
3073
  isTestnet: true,
3169
3074
  explorerUrl: 'https://stellar.expert/explorer/testnet/tx/{hash}',
3170
- rpcEndpoints: ['https://horizon-testnet.stellar.org'],
3075
+ rpcEndpoints: [
3076
+ 'https://horizon-testnet.stellar.org'
3077
+ ],
3171
3078
  eurcAddress: 'EURC-GB3Q6QDZYTHWT7E5PVS3W7FUT5GVAFC5KSZFFLPU25GO7VTC3NM2ZTVO',
3172
3079
  usdcAddress: 'USDC-GBBD47IF6LWK7P7MDEVSCWR7DPUWV3NY3DTQEVFL4NAT4AQH3ZLLFLA5',
3173
3080
  usdtAddress: null,
3174
- cctp: null,
3081
+ cctp: null
3175
3082
  });
3176
3083
 
3177
3084
  /**
3178
3085
  * Sui Mainnet chain definition
3179
3086
  * @remarks
3180
3087
  * This represents the official production network for the Sui blockchain.
3181
- */
3182
- defineChain({
3088
+ */ defineChain({
3183
3089
  type: 'sui',
3184
3090
  chain: Blockchain.Sui,
3185
3091
  name: 'Sui',
@@ -3187,11 +3093,13 @@ defineChain({
3187
3093
  nativeCurrency: {
3188
3094
  name: 'Sui',
3189
3095
  symbol: 'SUI',
3190
- decimals: 9,
3096
+ decimals: 9
3191
3097
  },
3192
3098
  isTestnet: false,
3193
3099
  explorerUrl: 'https://suiscan.xyz/mainnet/tx/{hash}',
3194
- rpcEndpoints: ['https://fullnode.mainnet.sui.io'],
3100
+ rpcEndpoints: [
3101
+ 'https://fullnode.mainnet.sui.io'
3102
+ ],
3195
3103
  eurcAddress: null,
3196
3104
  usdcAddress: '0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC',
3197
3105
  usdtAddress: null,
@@ -3202,22 +3110,21 @@ defineChain({
3202
3110
  type: 'split',
3203
3111
  tokenMessenger: '0x2aa6c5d56376c371f88a6cc42e852824994993cb9bab8d3e6450cbe3cb32b94e',
3204
3112
  messageTransmitter: '0x08d87d37ba49e785dde270a83f8e979605b03dc552b5548f26fdf2f49bf7ed1b',
3205
- confirmations: 1,
3206
- },
3113
+ confirmations: 1
3114
+ }
3207
3115
  },
3208
3116
  forwarderSupported: {
3209
3117
  source: false,
3210
- destination: false,
3211
- },
3212
- },
3118
+ destination: false
3119
+ }
3120
+ }
3213
3121
  });
3214
3122
 
3215
3123
  /**
3216
3124
  * Sui Testnet chain definition
3217
3125
  * @remarks
3218
3126
  * This represents the official test network for the Sui blockchain.
3219
- */
3220
- defineChain({
3127
+ */ defineChain({
3221
3128
  type: 'sui',
3222
3129
  chain: Blockchain.Sui_Testnet,
3223
3130
  name: 'Sui Testnet',
@@ -3225,11 +3132,13 @@ defineChain({
3225
3132
  nativeCurrency: {
3226
3133
  name: 'Sui',
3227
3134
  symbol: 'SUI',
3228
- decimals: 9,
3135
+ decimals: 9
3229
3136
  },
3230
3137
  isTestnet: true,
3231
3138
  explorerUrl: 'https://suiscan.xyz/testnet/tx/{hash}',
3232
- rpcEndpoints: ['https://fullnode.testnet.sui.io'],
3139
+ rpcEndpoints: [
3140
+ 'https://fullnode.testnet.sui.io'
3141
+ ],
3233
3142
  eurcAddress: null,
3234
3143
  usdcAddress: '0xa1ec7fc00a6f40db9693ad1415d0c193ad3906494428cf252621037bd7117e29::usdc::USDC',
3235
3144
  usdtAddress: null,
@@ -3240,22 +3149,21 @@ defineChain({
3240
3149
  type: 'split',
3241
3150
  tokenMessenger: '0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb',
3242
3151
  messageTransmitter: '0x4931e06dce648b3931f890035bd196920770e913e43e45990b383f6486fdd0a5',
3243
- confirmations: 1,
3244
- },
3152
+ confirmations: 1
3153
+ }
3245
3154
  },
3246
3155
  forwarderSupported: {
3247
3156
  source: false,
3248
- destination: false,
3249
- },
3250
- },
3157
+ destination: false
3158
+ }
3159
+ }
3251
3160
  });
3252
3161
 
3253
3162
  /**
3254
3163
  * Unichain Mainnet chain definition
3255
3164
  * @remarks
3256
3165
  * This represents the official production network for the Unichain blockchain.
3257
- */
3258
- const Unichain = defineChain({
3166
+ */ const Unichain = defineChain({
3259
3167
  type: 'evm',
3260
3168
  chain: Blockchain.Unichain,
3261
3169
  name: 'Unichain',
@@ -3263,12 +3171,14 @@ const Unichain = defineChain({
3263
3171
  nativeCurrency: {
3264
3172
  name: 'Uni',
3265
3173
  symbol: 'UNI',
3266
- decimals: 18,
3174
+ decimals: 18
3267
3175
  },
3268
3176
  chainId: 130,
3269
3177
  isTestnet: false,
3270
3178
  explorerUrl: 'https://unichain.blockscout.com/tx/{hash}',
3271
- rpcEndpoints: ['https://mainnet.unichain.org'],
3179
+ rpcEndpoints: [
3180
+ 'https://mainnet.unichain.org'
3181
+ ],
3272
3182
  eurcAddress: null,
3273
3183
  usdcAddress: '0x078D782b760474a361dDA0AF3839290b0EF57AD6',
3274
3184
  usdtAddress: null,
@@ -3279,46 +3189,45 @@ const Unichain = defineChain({
3279
3189
  type: 'split',
3280
3190
  tokenMessenger: '0x4e744b28E787c3aD0e810eD65A24461D4ac5a762',
3281
3191
  messageTransmitter: '0x353bE9E2E38AB1D19104534e4edC21c643Df86f4',
3282
- confirmations: 65,
3192
+ confirmations: 65
3283
3193
  },
3284
3194
  v2: {
3285
3195
  type: 'split',
3286
3196
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
3287
3197
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
3288
3198
  confirmations: 65,
3289
- fastConfirmations: 1,
3290
- },
3199
+ fastConfirmations: 1
3200
+ }
3291
3201
  },
3292
3202
  forwarderSupported: {
3293
- source: true,
3294
- destination: true,
3295
- },
3203
+ source: false,
3204
+ destination: true
3205
+ }
3296
3206
  },
3297
3207
  kitContracts: {
3298
3208
  bridge: BRIDGE_CONTRACT_EVM_MAINNET,
3299
- adapter: ADAPTER_CONTRACT_EVM_MAINNET,
3209
+ adapter: ADAPTER_CONTRACT_EVM_MAINNET
3300
3210
  },
3301
3211
  gateway: {
3302
3212
  domain: 10,
3303
3213
  contracts: {
3304
3214
  v1: {
3305
3215
  wallet: GATEWAY_WALLET_EVM_MAINNET,
3306
- minter: GATEWAY_MINTER_EVM_MAINNET,
3307
- },
3216
+ minter: GATEWAY_MINTER_EVM_MAINNET
3217
+ }
3308
3218
  },
3309
3219
  forwarderSupported: {
3310
3220
  source: true,
3311
- destination: true,
3312
- },
3313
- },
3221
+ destination: true
3222
+ }
3223
+ }
3314
3224
  });
3315
3225
 
3316
3226
  /**
3317
3227
  * Unichain Sepolia Testnet chain definition
3318
3228
  * @remarks
3319
3229
  * This represents the official test network for the Unichain blockchain.
3320
- */
3321
- const UnichainSepolia = defineChain({
3230
+ */ const UnichainSepolia = defineChain({
3322
3231
  type: 'evm',
3323
3232
  chain: Blockchain.Unichain_Sepolia,
3324
3233
  name: 'Unichain Sepolia',
@@ -3326,12 +3235,14 @@ const UnichainSepolia = defineChain({
3326
3235
  nativeCurrency: {
3327
3236
  name: 'Sepolia Uni',
3328
3237
  symbol: 'UNI',
3329
- decimals: 18,
3238
+ decimals: 18
3330
3239
  },
3331
3240
  chainId: 1301,
3332
3241
  isTestnet: true,
3333
3242
  explorerUrl: 'https://unichain-sepolia.blockscout.com/tx/{hash}',
3334
- rpcEndpoints: ['https://sepolia.unichain.org'],
3243
+ rpcEndpoints: [
3244
+ 'https://sepolia.unichain.org'
3245
+ ],
3335
3246
  eurcAddress: null,
3336
3247
  usdcAddress: '0x31d0220469e10c4E71834a79b1f276d740d3768F',
3337
3248
  usdtAddress: null,
@@ -3342,45 +3253,44 @@ const UnichainSepolia = defineChain({
3342
3253
  type: 'split',
3343
3254
  tokenMessenger: '0x8ed94B8dAd2Dc5453862ea5e316A8e71AAed9782',
3344
3255
  messageTransmitter: '0xbc498c326533d675cf571B90A2Ced265ACb7d086',
3345
- confirmations: 65,
3256
+ confirmations: 65
3346
3257
  },
3347
3258
  v2: {
3348
3259
  type: 'split',
3349
3260
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
3350
3261
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
3351
3262
  confirmations: 65,
3352
- fastConfirmations: 1,
3353
- },
3263
+ fastConfirmations: 1
3264
+ }
3354
3265
  },
3355
3266
  forwarderSupported: {
3356
- source: true,
3357
- destination: true,
3358
- },
3267
+ source: false,
3268
+ destination: true
3269
+ }
3359
3270
  },
3360
3271
  kitContracts: {
3361
- bridge: BRIDGE_CONTRACT_EVM_TESTNET,
3272
+ bridge: BRIDGE_CONTRACT_EVM_TESTNET
3362
3273
  },
3363
3274
  gateway: {
3364
3275
  domain: 10,
3365
3276
  contracts: {
3366
3277
  v1: {
3367
3278
  wallet: GATEWAY_WALLET_EVM_TESTNET,
3368
- minter: GATEWAY_MINTER_EVM_TESTNET,
3369
- },
3279
+ minter: GATEWAY_MINTER_EVM_TESTNET
3280
+ }
3370
3281
  },
3371
3282
  forwarderSupported: {
3372
3283
  source: true,
3373
- destination: true,
3374
- },
3375
- },
3284
+ destination: true
3285
+ }
3286
+ }
3376
3287
  });
3377
3288
 
3378
3289
  /**
3379
3290
  * World Chain chain definition
3380
3291
  * @remarks
3381
3292
  * This represents the main network for the World Chain blockchain.
3382
- */
3383
- const WorldChain = defineChain({
3293
+ */ const WorldChain = defineChain({
3384
3294
  type: 'evm',
3385
3295
  chain: Blockchain.World_Chain,
3386
3296
  name: 'World Chain',
@@ -3388,12 +3298,14 @@ const WorldChain = defineChain({
3388
3298
  nativeCurrency: {
3389
3299
  name: 'Ether',
3390
3300
  symbol: 'ETH',
3391
- decimals: 18,
3301
+ decimals: 18
3392
3302
  },
3393
3303
  chainId: 480,
3394
3304
  isTestnet: false,
3395
3305
  explorerUrl: 'https://worldscan.org/tx/{hash}',
3396
- rpcEndpoints: ['https://worldchain-mainnet.g.alchemy.com/public'],
3306
+ rpcEndpoints: [
3307
+ 'https://worldchain-mainnet.g.alchemy.com/public'
3308
+ ],
3397
3309
  eurcAddress: null,
3398
3310
  usdcAddress: '0x79A02482A880bCE3F13e09Da970dC34db4CD24d1',
3399
3311
  usdtAddress: null,
@@ -3405,39 +3317,38 @@ const WorldChain = defineChain({
3405
3317
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cF5d',
3406
3318
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
3407
3319
  confirmations: 65,
3408
- fastConfirmations: 1,
3409
- },
3320
+ fastConfirmations: 1
3321
+ }
3410
3322
  },
3411
3323
  forwarderSupported: {
3412
- source: true,
3413
- destination: true,
3414
- },
3324
+ source: false,
3325
+ destination: true
3326
+ }
3415
3327
  },
3416
3328
  kitContracts: {
3417
3329
  bridge: BRIDGE_CONTRACT_EVM_MAINNET,
3418
- adapter: ADAPTER_CONTRACT_EVM_MAINNET,
3330
+ adapter: ADAPTER_CONTRACT_EVM_MAINNET
3419
3331
  },
3420
3332
  gateway: {
3421
3333
  domain: 14,
3422
3334
  contracts: {
3423
3335
  v1: {
3424
3336
  wallet: GATEWAY_WALLET_EVM_MAINNET,
3425
- minter: GATEWAY_MINTER_EVM_MAINNET,
3426
- },
3337
+ minter: GATEWAY_MINTER_EVM_MAINNET
3338
+ }
3427
3339
  },
3428
3340
  forwarderSupported: {
3429
3341
  source: true,
3430
- destination: true,
3431
- },
3432
- },
3342
+ destination: true
3343
+ }
3344
+ }
3433
3345
  });
3434
3346
 
3435
3347
  /**
3436
3348
  * World Chain Sepolia chain definition
3437
3349
  * @remarks
3438
3350
  * This represents the test network for the World Chain blockchain.
3439
- */
3440
- const WorldChainSepolia = defineChain({
3351
+ */ const WorldChainSepolia = defineChain({
3441
3352
  type: 'evm',
3442
3353
  chain: Blockchain.World_Chain_Sepolia,
3443
3354
  name: 'World Chain Sepolia',
@@ -3445,14 +3356,14 @@ const WorldChainSepolia = defineChain({
3445
3356
  nativeCurrency: {
3446
3357
  name: 'Ether',
3447
3358
  symbol: 'ETH',
3448
- decimals: 18,
3359
+ decimals: 18
3449
3360
  },
3450
3361
  chainId: 4801,
3451
3362
  isTestnet: true,
3452
3363
  explorerUrl: 'https://sepolia.worldscan.org/tx/{hash}',
3453
3364
  rpcEndpoints: [
3454
3365
  'https://worldchain-sepolia.drpc.org',
3455
- 'https://worldchain-sepolia.g.alchemy.com/public',
3366
+ 'https://worldchain-sepolia.g.alchemy.com/public'
3456
3367
  ],
3457
3368
  eurcAddress: null,
3458
3369
  usdcAddress: '0x66145f38cBAC35Ca6F1Dfb4914dF98F1614aeA88',
@@ -3465,30 +3376,30 @@ const WorldChainSepolia = defineChain({
3465
3376
  tokenMessenger: '0x8fe6b999dc680ccfdd5bf7eb0974218be2542daa',
3466
3377
  messageTransmitter: '0xe737e5cebeeba77efe34d4aa090756590b1ce275',
3467
3378
  confirmations: 65,
3468
- fastConfirmations: 1,
3469
- },
3379
+ fastConfirmations: 1
3380
+ }
3470
3381
  },
3471
3382
  forwarderSupported: {
3472
- source: true,
3473
- destination: true,
3474
- },
3383
+ source: false,
3384
+ destination: true
3385
+ }
3475
3386
  },
3476
3387
  kitContracts: {
3477
- bridge: BRIDGE_CONTRACT_EVM_TESTNET,
3388
+ bridge: BRIDGE_CONTRACT_EVM_TESTNET
3478
3389
  },
3479
3390
  gateway: {
3480
3391
  domain: 14,
3481
3392
  contracts: {
3482
3393
  v1: {
3483
3394
  wallet: GATEWAY_WALLET_EVM_TESTNET,
3484
- minter: GATEWAY_MINTER_EVM_TESTNET,
3485
- },
3395
+ minter: GATEWAY_MINTER_EVM_TESTNET
3396
+ }
3486
3397
  },
3487
3398
  forwarderSupported: {
3488
3399
  source: true,
3489
- destination: true,
3490
- },
3491
- },
3400
+ destination: true
3401
+ }
3402
+ }
3492
3403
  });
3493
3404
 
3494
3405
  /**
@@ -3497,8 +3408,7 @@ const WorldChainSepolia = defineChain({
3497
3408
  * This represents the official production network for the XDC blockchain.
3498
3409
  * XDC is a Layer 1 blockchain specialized for DeFi and trading applications
3499
3410
  * with native orderbook and matching engine.
3500
- */
3501
- const XDC = defineChain({
3411
+ */ const XDC = defineChain({
3502
3412
  type: 'evm',
3503
3413
  chain: Blockchain.XDC,
3504
3414
  name: 'XDC',
@@ -3506,12 +3416,15 @@ const XDC = defineChain({
3506
3416
  nativeCurrency: {
3507
3417
  name: 'XDC',
3508
3418
  symbol: 'XDC',
3509
- decimals: 18,
3419
+ decimals: 18
3510
3420
  },
3511
3421
  chainId: 50,
3512
3422
  isTestnet: false,
3513
3423
  explorerUrl: 'https://xdcscan.io/tx/{hash}',
3514
- rpcEndpoints: ['https://erpc.xdcrpc.com', 'https://erpc.xinfin.network'],
3424
+ rpcEndpoints: [
3425
+ 'https://erpc.xdcrpc.com',
3426
+ 'https://erpc.xinfin.network'
3427
+ ],
3515
3428
  eurcAddress: null,
3516
3429
  usdcAddress: '0xfA2958CB79b0491CC627c1557F441eF849Ca8eb1',
3517
3430
  usdtAddress: null,
@@ -3523,26 +3436,25 @@ const XDC = defineChain({
3523
3436
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
3524
3437
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
3525
3438
  confirmations: 3,
3526
- fastConfirmations: 3,
3527
- },
3439
+ fastConfirmations: 3
3440
+ }
3528
3441
  },
3529
3442
  forwarderSupported: {
3530
- source: true,
3531
- destination: true,
3532
- },
3443
+ source: false,
3444
+ destination: true
3445
+ }
3533
3446
  },
3534
3447
  kitContracts: {
3535
3448
  bridge: BRIDGE_CONTRACT_EVM_MAINNET,
3536
- adapter: ADAPTER_CONTRACT_EVM_MAINNET,
3537
- },
3449
+ adapter: ADAPTER_CONTRACT_EVM_MAINNET
3450
+ }
3538
3451
  });
3539
3452
 
3540
3453
  /**
3541
3454
  * XDC Apothem Testnet chain definition
3542
3455
  * @remarks
3543
3456
  * This represents the official test network for the XDC Network, known as Apothem.
3544
- */
3545
- const XDCApothem = defineChain({
3457
+ */ const XDCApothem = defineChain({
3546
3458
  type: 'evm',
3547
3459
  chain: Blockchain.XDC_Apothem,
3548
3460
  name: 'Apothem Network',
@@ -3550,12 +3462,14 @@ const XDCApothem = defineChain({
3550
3462
  nativeCurrency: {
3551
3463
  name: 'TXDC',
3552
3464
  symbol: 'TXDC',
3553
- decimals: 18,
3465
+ decimals: 18
3554
3466
  },
3555
3467
  chainId: 51,
3556
3468
  isTestnet: true,
3557
3469
  explorerUrl: 'https://testnet.xdcscan.com/tx/{hash}',
3558
- rpcEndpoints: ['https://erpc.apothem.network'],
3470
+ rpcEndpoints: [
3471
+ 'https://erpc.apothem.network'
3472
+ ],
3559
3473
  eurcAddress: null,
3560
3474
  usdcAddress: '0xb5AB69F7bBada22B28e79C8FFAECe55eF1c771D4',
3561
3475
  usdtAddress: null,
@@ -3567,25 +3481,24 @@ const XDCApothem = defineChain({
3567
3481
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
3568
3482
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
3569
3483
  confirmations: 3,
3570
- fastConfirmations: 1,
3571
- },
3484
+ fastConfirmations: 1
3485
+ }
3572
3486
  },
3573
3487
  forwarderSupported: {
3574
- source: true,
3575
- destination: true,
3576
- },
3488
+ source: false,
3489
+ destination: true
3490
+ }
3577
3491
  },
3578
3492
  kitContracts: {
3579
- bridge: BRIDGE_CONTRACT_EVM_TESTNET,
3580
- },
3493
+ bridge: BRIDGE_CONTRACT_EVM_TESTNET
3494
+ }
3581
3495
  });
3582
3496
 
3583
3497
  /**
3584
3498
  * ZKSync Era Mainnet chain definition
3585
3499
  * @remarks
3586
3500
  * This represents the official production network for the ZKSync Era blockchain.
3587
- */
3588
- defineChain({
3501
+ */ defineChain({
3589
3502
  type: 'evm',
3590
3503
  chain: Blockchain.ZKSync_Era,
3591
3504
  name: 'ZKSync Era',
@@ -3593,24 +3506,25 @@ defineChain({
3593
3506
  nativeCurrency: {
3594
3507
  name: 'Ether',
3595
3508
  symbol: 'ETH',
3596
- decimals: 18,
3509
+ decimals: 18
3597
3510
  },
3598
3511
  chainId: 324,
3599
3512
  isTestnet: false,
3600
3513
  explorerUrl: 'https://explorer.zksync.io/tx/{hash}',
3601
- rpcEndpoints: ['https://mainnet.era.zksync.io'],
3514
+ rpcEndpoints: [
3515
+ 'https://mainnet.era.zksync.io'
3516
+ ],
3602
3517
  eurcAddress: null,
3603
3518
  usdcAddress: '0x1d17CBcF0D6D143135aE902365D2E5e2A16538D4',
3604
3519
  usdtAddress: null,
3605
- cctp: null,
3520
+ cctp: null
3606
3521
  });
3607
3522
 
3608
3523
  /**
3609
3524
  * ZKSync Era Sepolia Testnet chain definition
3610
3525
  * @remarks
3611
3526
  * This represents the official test network for the ZKSync Era blockchain on Sepolia.
3612
- */
3613
- defineChain({
3527
+ */ defineChain({
3614
3528
  type: 'evm',
3615
3529
  chain: Blockchain.ZKSync_Sepolia,
3616
3530
  name: 'ZKSync Era Sepolia',
@@ -3618,16 +3532,18 @@ defineChain({
3618
3532
  nativeCurrency: {
3619
3533
  name: 'Sepolia Ether',
3620
3534
  symbol: 'ETH',
3621
- decimals: 18,
3535
+ decimals: 18
3622
3536
  },
3623
3537
  chainId: 300,
3624
3538
  isTestnet: true,
3625
3539
  explorerUrl: 'https://sepolia.explorer.zksync.io/tx/{hash}',
3626
- rpcEndpoints: ['https://sepolia.era.zksync.dev'],
3540
+ rpcEndpoints: [
3541
+ 'https://sepolia.era.zksync.dev'
3542
+ ],
3627
3543
  eurcAddress: null,
3628
3544
  usdcAddress: '0xAe045DE5638162fa134807Cb558E15A3F5A7F853',
3629
3545
  usdtAddress: null,
3630
- cctp: null,
3546
+ cctp: null
3631
3547
  });
3632
3548
 
3633
3549
  /**
@@ -3640,23 +3556,17 @@ defineChain({
3640
3556
  * minter: '0xabcdef1234567890abcdef1234567890abcdef12'
3641
3557
  * })
3642
3558
  * ```
3643
- */
3644
- const gatewayV1ContractsSchema = z
3645
- .object({
3646
- wallet: z
3647
- .string({
3559
+ */ const gatewayV1ContractsSchema = z.object({
3560
+ wallet: z.string({
3648
3561
  required_error: 'Gateway wallet address is required. Please provide a valid contract address.',
3649
- invalid_type_error: 'Gateway wallet address must be a string.',
3650
- })
3651
- .min(1, 'Gateway wallet address cannot be empty.'),
3652
- minter: z
3653
- .string({
3562
+ invalid_type_error: 'Gateway wallet address must be a string.'
3563
+ }).min(1, 'Gateway wallet address cannot be empty.'),
3564
+ minter: z.string({
3654
3565
  required_error: 'Gateway minter address is required. Please provide a valid contract address.',
3655
- invalid_type_error: 'Gateway minter address must be a string.',
3656
- })
3657
- .min(1, 'Gateway minter address cannot be empty.'),
3658
- })
3659
- .strict(); // Reject any additional properties not defined in the schema
3566
+ invalid_type_error: 'Gateway minter address must be a string.'
3567
+ }).min(1, 'Gateway minter address cannot be empty.')
3568
+ }).strict() // Reject any additional properties not defined in the schema
3569
+ ;
3660
3570
  /**
3661
3571
  * Zod schema for validating the versioned Gateway contracts map.
3662
3572
  *
@@ -3673,12 +3583,10 @@ const gatewayV1ContractsSchema = z
3673
3583
  * }
3674
3584
  * })
3675
3585
  * ```
3676
- */
3677
- const gatewayContractsSchema = z
3678
- .object({
3679
- v1: gatewayV1ContractsSchema.optional(),
3680
- })
3681
- .strict(); // Reject any additional properties not defined in the schema
3586
+ */ const gatewayContractsSchema = z.object({
3587
+ v1: gatewayV1ContractsSchema.optional()
3588
+ }).strict() // Reject any additional properties not defined in the schema
3589
+ ;
3682
3590
  /**
3683
3591
  * Zod schema for validating the full Gateway configuration.
3684
3592
  *
@@ -3697,59 +3605,54 @@ const gatewayContractsSchema = z
3697
3605
  * }
3698
3606
  * })
3699
3607
  * ```
3700
- */
3701
- const gatewayConfigSchema = z
3702
- .object({
3608
+ */ const gatewayConfigSchema = z.object({
3703
3609
  domain: z.number({
3704
3610
  required_error: 'Gateway domain is required. Please provide a valid domain number.',
3705
- invalid_type_error: 'Gateway domain must be a number.',
3611
+ invalid_type_error: 'Gateway domain must be a number.'
3706
3612
  }),
3707
3613
  contracts: gatewayContractsSchema,
3708
3614
  forwarderSupported: z.object({
3709
3615
  source: z.boolean(),
3710
- destination: z.boolean(),
3711
- }),
3712
- })
3713
- .strict(); // Reject any additional properties not defined in the schema
3616
+ destination: z.boolean()
3617
+ })
3618
+ }).strict() // Reject any additional properties not defined in the schema
3619
+ ;
3714
3620
  /**
3715
3621
  * Base schema for common chain definition properties.
3716
3622
  * This contains all properties shared between EVM and non-EVM chains.
3717
- */
3718
- const baseChainDefinitionSchema = z.object({
3623
+ */ const baseChainDefinitionSchema = z.object({
3719
3624
  chain: z.nativeEnum(Blockchain, {
3720
3625
  required_error: 'Chain enum is required. Please provide a valid Blockchain enum value.',
3721
- invalid_type_error: 'Chain must be a valid Blockchain enum value.',
3626
+ invalid_type_error: 'Chain must be a valid Blockchain enum value.'
3722
3627
  }),
3723
3628
  name: z.string({
3724
3629
  required_error: 'Chain name is required. Please provide a valid chain name.',
3725
- invalid_type_error: 'Chain name must be a string.',
3630
+ invalid_type_error: 'Chain name must be a string.'
3726
3631
  }),
3727
3632
  title: z.string().optional(),
3728
3633
  nativeCurrency: z.object({
3729
3634
  name: z.string(),
3730
3635
  symbol: z.string(),
3731
- decimals: z.number(),
3636
+ decimals: z.number()
3732
3637
  }),
3733
3638
  isTestnet: z.boolean({
3734
3639
  required_error: 'isTestnet is required. Please specify whether this is a testnet.',
3735
- invalid_type_error: 'isTestnet must be a boolean.',
3640
+ invalid_type_error: 'isTestnet must be a boolean.'
3736
3641
  }),
3737
3642
  explorerUrl: z.string({
3738
3643
  required_error: 'Explorer URL is required. Please provide a valid explorer URL.',
3739
- invalid_type_error: 'Explorer URL must be a string.',
3644
+ invalid_type_error: 'Explorer URL must be a string.'
3740
3645
  }),
3741
3646
  rpcEndpoints: z.array(z.string()),
3742
3647
  eurcAddress: z.string().nullable(),
3743
3648
  usdcAddress: z.string().nullable(),
3744
3649
  usdtAddress: z.string().nullable(),
3745
- cctp: z.any().nullable(), // We'll accept any CCTP config structure
3746
- kitContracts: z
3747
- .object({
3650
+ cctp: z.any().nullable(),
3651
+ kitContracts: z.object({
3748
3652
  bridge: z.string().optional(),
3749
- adapter: z.string().optional(),
3750
- })
3751
- .optional(),
3752
- gateway: gatewayConfigSchema.optional(),
3653
+ adapter: z.string().optional()
3654
+ }).optional(),
3655
+ gateway: gatewayConfigSchema.optional()
3753
3656
  });
3754
3657
  /**
3755
3658
  * Zod schema for validating EVM chain definitions specifically.
@@ -3780,22 +3683,18 @@ const baseChainDefinitionSchema = z.object({
3780
3683
  * console.error('Validation failed:', result.error)
3781
3684
  * }
3782
3685
  * ```
3783
- */
3784
- const evmChainDefinitionSchema = baseChainDefinitionSchema
3785
- .extend({
3686
+ */ const evmChainDefinitionSchema = baseChainDefinitionSchema.extend({
3786
3687
  type: z.literal('evm'),
3787
3688
  chainId: z.number({
3788
3689
  required_error: 'EVM chains must have a chainId. Please provide a valid EVM chain ID.',
3789
- invalid_type_error: 'EVM chain ID must be a number.',
3790
- }),
3791
- })
3792
- .strict(); //// Reject any additional properties not defined in the schema
3690
+ invalid_type_error: 'EVM chain ID must be a number.'
3691
+ })
3692
+ }).strict() //// Reject any additional properties not defined in the schema
3693
+ ;
3793
3694
  /**
3794
3695
  * Zod schema for validating non-EVM chain definitions.
3795
3696
  * This schema extends the base schema with non-EVM specific properties.
3796
- */
3797
- const nonEvmChainDefinitionSchema = baseChainDefinitionSchema
3798
- .extend({
3697
+ */ const nonEvmChainDefinitionSchema = baseChainDefinitionSchema.extend({
3799
3698
  type: z.enum([
3800
3699
  'algorand',
3801
3700
  'avalanche',
@@ -3806,10 +3705,10 @@ const nonEvmChainDefinitionSchema = baseChainDefinitionSchema
3806
3705
  'sui',
3807
3706
  'hedera',
3808
3707
  'noble',
3809
- 'polkadot',
3810
- ]),
3811
- })
3812
- .strict(); // Reject any additional properties not defined in the schema
3708
+ 'polkadot'
3709
+ ])
3710
+ }).strict() // Reject any additional properties not defined in the schema
3711
+ ;
3813
3712
  /**
3814
3713
  * Discriminated union schema for all chain definitions.
3815
3714
  * This schema validates different chain types based on their 'type' field.
@@ -3834,10 +3733,9 @@ const nonEvmChainDefinitionSchema = baseChainDefinitionSchema
3834
3733
  * // ... other properties (no chainId)
3835
3734
  * })
3836
3735
  * ```
3837
- */
3838
- const chainDefinitionSchema = z.discriminatedUnion('type', [
3736
+ */ const chainDefinitionSchema = z.discriminatedUnion('type', [
3839
3737
  evmChainDefinitionSchema,
3840
- nonEvmChainDefinitionSchema,
3738
+ nonEvmChainDefinitionSchema
3841
3739
  ]);
3842
3740
  /**
3843
3741
  * Zod schema for validating chain identifiers.
@@ -3854,13 +3752,10 @@ const chainDefinitionSchema = z.discriminatedUnion('type', [
3854
3752
  * chainIdentifierSchema.parse(Blockchain.Ethereum)
3855
3753
  * chainIdentifierSchema.parse(Ethereum)
3856
3754
  * ```
3857
- */
3858
- z.union([
3859
- z
3860
- .string()
3861
- .refine((val) => val in Blockchain, 'Must be a valid Blockchain enum value as string'),
3755
+ */ z.union([
3756
+ z.string().refine((val)=>val in Blockchain, 'Must be a valid Blockchain enum value as string'),
3862
3757
  z.nativeEnum(Blockchain),
3863
- chainDefinitionSchema,
3758
+ chainDefinitionSchema
3864
3759
  ]);
3865
3760
  /**
3866
3761
  * Zod schema for validating swap-specific chain identifiers.
@@ -3870,20 +3765,17 @@ z.union([
3870
3765
  * - Mainnet only (no testnets)
3871
3766
  * - At least one supported token available
3872
3767
  *
3873
- */
3874
- z.union([
3768
+ */ z.union([
3875
3769
  // String blockchain identifier (accepts SwapChain enum values)
3876
- z.string().refine((val) => val in SwapChain, (val) => ({
3877
- message: `"${val}" is not a supported swap chain. ` +
3878
- `Supported chains: ${Object.values(SwapChain).join(', ')}`,
3879
- })),
3770
+ z.string().refine((val)=>val in SwapChain, (val)=>({
3771
+ message: `"${val}" is not a supported swap chain. ` + `Supported chains: ${Object.values(SwapChain).join(', ')}`
3772
+ })),
3880
3773
  // SwapChain enum
3881
3774
  z.nativeEnum(SwapChain),
3882
3775
  // ChainDefinition object (checks if chain.chain is in SwapChain)
3883
- chainDefinitionSchema.refine((chain) => chain.chain in SwapChain, (chain) => ({
3884
- message: `"${chain.chain}" is not a supported swap chain. ` +
3885
- `Supported chains: ${Object.values(SwapChain).join(', ')}`,
3886
- })),
3776
+ chainDefinitionSchema.refine((chain)=>chain.chain in SwapChain, (chain)=>({
3777
+ message: `"${chain.chain}" is not a supported swap chain. ` + `Supported chains: ${Object.values(SwapChain).join(', ')}`
3778
+ }))
3887
3779
  ]);
3888
3780
  /**
3889
3781
  * Zod schema for validating bridge chain identifiers.
@@ -3914,14 +3806,13 @@ z.union([
3914
3806
  * ```
3915
3807
  *
3916
3808
  * @see {@link BridgeChain} for the enum of supported chains.
3917
- */
3918
- z.union([
3919
- z.string().refine((val) => val in BridgeChain, (val) => ({
3920
- message: `Chain "${val}" is not supported for bridging. Only chains in the BridgeChain enum support CCTPv2 bridging.`,
3921
- })),
3922
- chainDefinitionSchema.refine((chainDef) => chainDef.chain in BridgeChain, (chainDef) => ({
3923
- message: `Chain "${chainDef.name}" (${chainDef.chain}) is not supported for bridging. Only chains in the BridgeChain enum support CCTPv2 bridging.`,
3924
- })),
3809
+ */ z.union([
3810
+ z.string().refine((val)=>val in BridgeChain, (val)=>({
3811
+ message: `Chain "${val}" is not supported for bridging. Only chains in the BridgeChain enum support CCTPv2 bridging.`
3812
+ })),
3813
+ chainDefinitionSchema.refine((chainDef)=>chainDef.chain in BridgeChain, (chainDef)=>({
3814
+ message: `Chain "${chainDef.name}" (${chainDef.chain}) is not supported for bridging. Only chains in the BridgeChain enum support CCTPv2 bridging.`
3815
+ }))
3925
3816
  ]);
3926
3817
  /**
3927
3818
  * Zod schema for validating earn-specific chain identifiers.
@@ -3946,17 +3837,68 @@ z.union([
3946
3837
  * // Invalid (throws ZodError)
3947
3838
  * earnChainIdentifierSchema.parse('Solana')
3948
3839
  * ```
3949
- */
3950
- z.union([
3951
- z.string().refine((val) => val in EarnChain, (val) => ({
3952
- message: `"${val}" is not a supported earn chain. ` +
3953
- `Supported chains: ${Object.values(EarnChain).join(', ')}`,
3954
- })),
3840
+ */ z.union([
3841
+ z.string().refine((val)=>val in EarnChain, (val)=>({
3842
+ message: `"${val}" is not a supported earn chain. ` + `Supported chains: ${Object.values(EarnChain).join(', ')}`
3843
+ })),
3955
3844
  z.nativeEnum(EarnChain),
3956
- chainDefinitionSchema.refine((chain) => chain.chain in EarnChain, (chain) => ({
3957
- message: `"${chain.chain}" is not a supported earn chain. ` +
3958
- `Supported chains: ${Object.values(EarnChain).join(', ')}`,
3959
- })),
3845
+ chainDefinitionSchema.refine((chain)=>chain.chain in EarnChain, (chain)=>({
3846
+ message: `"${chain.chain}" is not a supported earn chain. ` + `Supported chains: ${Object.values(EarnChain).join(', ')}`
3847
+ }))
3848
+ ]);
3849
+ // Widened views so `.includes()` accepts arbitrary strings under strict TS.
3850
+ const EARN_BRIDGE_SOURCE_CHAIN_VALUES = EARN_BRIDGE_SOURCE_BLOCKCHAINS;
3851
+ const EARN_BRIDGE_DESTINATION_CHAIN_VALUES = EARN_BRIDGE_DESTINATION_BLOCKCHAINS;
3852
+ /**
3853
+ * Zod schema for validating the source chain of a cross-chain Earn deposit.
3854
+ *
3855
+ * Accept a supported source Blockchain value, a matching string literal, or a
3856
+ * ChainDefinition for a supported source chain. Source chains are Ethereum
3857
+ * Sepolia, Arbitrum Sepolia, and Base Sepolia.
3858
+ *
3859
+ * @example
3860
+ * ```typescript
3861
+ * import { earnBridgeSourceChainIdentifierSchema } from '@core/chains'
3862
+ *
3863
+ * // Valid
3864
+ * earnBridgeSourceChainIdentifierSchema.parse('Ethereum_Sepolia')
3865
+ *
3866
+ * // Invalid (throws ZodError)
3867
+ * earnBridgeSourceChainIdentifierSchema.parse('Arc_Testnet')
3868
+ * ```
3869
+ */ z.union([
3870
+ z.string().refine((val)=>EARN_BRIDGE_SOURCE_CHAIN_VALUES.includes(val), (val)=>({
3871
+ message: `"${val}" is not a supported cross-chain Earn source chain. ` + `Supported chains: ${EARN_BRIDGE_SOURCE_BLOCKCHAINS.join(', ')}`
3872
+ })),
3873
+ chainDefinitionSchema.refine((chain)=>EARN_BRIDGE_SOURCE_CHAIN_VALUES.includes(chain.chain), (chain)=>({
3874
+ message: `"${chain.chain}" is not a supported cross-chain Earn source chain. ` + `Supported chains: ${EARN_BRIDGE_SOURCE_BLOCKCHAINS.join(', ')}`
3875
+ }))
3876
+ ]);
3877
+ /**
3878
+ * Zod schema for validating the destination chain of a cross-chain Earn
3879
+ * deposit.
3880
+ *
3881
+ * Accept a supported destination Blockchain value, a matching string literal,
3882
+ * or a ChainDefinition for a supported destination chain. Currently only Arc
3883
+ * Testnet is supported.
3884
+ *
3885
+ * @example
3886
+ * ```typescript
3887
+ * import { earnBridgeDestinationChainIdentifierSchema } from '@core/chains'
3888
+ *
3889
+ * // Valid
3890
+ * earnBridgeDestinationChainIdentifierSchema.parse('Arc_Testnet')
3891
+ *
3892
+ * // Invalid (throws ZodError)
3893
+ * earnBridgeDestinationChainIdentifierSchema.parse('Ethereum_Sepolia')
3894
+ * ```
3895
+ */ z.union([
3896
+ z.string().refine((val)=>EARN_BRIDGE_DESTINATION_CHAIN_VALUES.includes(val), (val)=>({
3897
+ message: `"${val}" is not a supported cross-chain Earn destination chain. ` + `Supported chains: ${EARN_BRIDGE_DESTINATION_BLOCKCHAINS.join(', ')}`
3898
+ })),
3899
+ chainDefinitionSchema.refine((chain)=>EARN_BRIDGE_DESTINATION_CHAIN_VALUES.includes(chain.chain), (chain)=>({
3900
+ message: `"${chain.chain}" is not a supported cross-chain Earn destination chain. ` + `Supported chains: ${EARN_BRIDGE_DESTINATION_BLOCKCHAINS.join(', ')}`
3901
+ }))
3960
3902
  ]);
3961
3903
  /**
3962
3904
  * Zod schema for validating unified balance chain identifiers.
@@ -3984,27 +3926,20 @@ z.union([
3984
3926
  * ```
3985
3927
  *
3986
3928
  * @see {@link UnifiedBalanceChain} for the enum of supported chains.
3987
- */
3988
- const supportedUnifiedBalanceChains = Object.keys(UnifiedBalanceChain).join(', ');
3929
+ */ const supportedUnifiedBalanceChains = Object.keys(UnifiedBalanceChain).join(', ');
3989
3930
  z.union([
3990
- z.string().refine((val) => val in UnifiedBalanceChain, (val) => ({
3991
- message: `Chain "${val}" is not supported for unified balance operations. Supported chains: ${supportedUnifiedBalanceChains}.`,
3992
- })),
3993
- chainDefinitionSchema.refine((chainDef) => chainDef.chain in UnifiedBalanceChain, (chainDef) => ({
3994
- message: `Chain "${chainDef.name}" (${chainDef.chain}) is not supported for unified balance operations. Supported chains: ${supportedUnifiedBalanceChains}.`,
3995
- })),
3931
+ z.string().refine((val)=>val in UnifiedBalanceChain, (val)=>({
3932
+ message: `Chain "${val}" is not supported for unified balance operations. Supported chains: ${supportedUnifiedBalanceChains}.`
3933
+ })),
3934
+ chainDefinitionSchema.refine((chainDef)=>chainDef.chain in UnifiedBalanceChain, (chainDef)=>({
3935
+ message: `Chain "${chainDef.name}" (${chainDef.chain}) is not supported for unified balance operations. Supported chains: ${supportedUnifiedBalanceChains}.`
3936
+ }))
3996
3937
  ]);
3997
3938
 
3998
- /**
3999
- * @packageDocumentation
4000
- * @module SwapTokenSchemas
4001
- *
4002
- * Zod validation schemas for supported swap tokens.
4003
- */
4004
3939
  // Internal enum used after input normalization.
4005
3940
  const swapTokenEnumSchema = z.enum([
4006
3941
  ...Object.keys(SWAP_TOKEN_REGISTRY),
4007
- NATIVE_TOKEN,
3942
+ NATIVE_TOKEN
4008
3943
  ]);
4009
3944
  /**
4010
3945
  * Zod schema for validating supported swap token symbols.
@@ -4021,11 +3956,7 @@ const swapTokenEnumSchema = z.enum([
4021
3956
  * console.log('Valid swap token:', result.data)
4022
3957
  * }
4023
3958
  * ```
4024
- */
4025
- z
4026
- .string()
4027
- .transform((value) => value.toUpperCase())
4028
- .pipe(swapTokenEnumSchema);
3959
+ */ z.string().transform((value)=>value.toUpperCase()).pipe(swapTokenEnumSchema);
4029
3960
 
4030
3961
  export { Arbitrum, ArbitrumSepolia, ArcTestnet, Avalanche, AvalancheFuji, Base, BaseSepolia, Codex, CodexTestnet, Ethereum, EthereumSepolia, HyperEVM, HyperEVMTestnet, Ink, InkTestnet, Linea, LineaSepolia, Optimism, OptimismSepolia, Plume, PlumeTestnet, Polygon, PolygonAmoy, Sei, SeiTestnet, Solana, SolanaDevnet, Sonic, SonicTestnet, Unichain, UnichainSepolia, WorldChain, WorldChainSepolia, XDC, XDCApothem };
4031
3962
  //# sourceMappingURL=chains.mjs.map