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