@circle-fin/app-kit 1.13.0 → 1.15.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 (53) hide show
  1. package/CHANGELOG.md +122 -0
  2. package/README.md +3 -3
  3. package/bridge.cjs +8388 -515
  4. package/bridge.d.cts +640 -61
  5. package/bridge.d.mts +640 -61
  6. package/bridge.d.ts +640 -61
  7. package/bridge.mjs +8389 -516
  8. package/chains.cjs +275 -15
  9. package/chains.d.cts +117 -2
  10. package/chains.d.mts +117 -2
  11. package/chains.d.ts +117 -2
  12. package/chains.mjs +275 -16
  13. package/context.d.cts +577 -57
  14. package/context.d.mts +577 -57
  15. package/context.d.ts +577 -57
  16. package/earn.cjs +973 -271
  17. package/earn.d.cts +577 -57
  18. package/earn.d.mts +577 -57
  19. package/earn.d.ts +577 -57
  20. package/earn.mjs +919 -221
  21. package/estimateBridge.cjs +8388 -518
  22. package/estimateBridge.d.cts +704 -82
  23. package/estimateBridge.d.mts +704 -82
  24. package/estimateBridge.d.ts +704 -82
  25. package/estimateBridge.mjs +8390 -520
  26. package/estimateSwap.cjs +982 -237
  27. package/estimateSwap.d.cts +577 -57
  28. package/estimateSwap.d.mts +577 -57
  29. package/estimateSwap.d.ts +577 -57
  30. package/estimateSwap.mjs +981 -237
  31. package/index.cjs +21401 -8522
  32. package/index.d.cts +6045 -2149
  33. package/index.d.mts +6045 -2149
  34. package/index.d.ts +6045 -2149
  35. package/index.mjs +21401 -8524
  36. package/package.json +17 -6
  37. package/server.cjs +10040 -0
  38. package/server.cjs.map +1 -0
  39. package/server.d.cts +2467 -0
  40. package/server.d.mts +2467 -0
  41. package/server.d.ts +2467 -0
  42. package/server.mjs +10028 -0
  43. package/server.mjs.map +1 -0
  44. package/swap.cjs +982 -237
  45. package/swap.d.cts +577 -57
  46. package/swap.d.mts +577 -57
  47. package/swap.d.ts +577 -57
  48. package/swap.mjs +981 -237
  49. package/unifiedBalance.cjs +20510 -7599
  50. package/unifiedBalance.d.cts +807 -201
  51. package/unifiedBalance.d.mts +807 -201
  52. package/unifiedBalance.d.ts +807 -201
  53. package/unifiedBalance.mjs +20513 -7603
package/chains.mjs CHANGED
@@ -61,9 +61,10 @@ import { z } from 'zod';
61
61
  Blockchain["Algorand_Testnet"] = "Algorand_Testnet";
62
62
  Blockchain["Aptos"] = "Aptos";
63
63
  Blockchain["Aptos_Testnet"] = "Aptos_Testnet";
64
- Blockchain["Arc_Testnet"] = "Arc_Testnet";
65
64
  Blockchain["Arbitrum"] = "Arbitrum";
66
65
  Blockchain["Arbitrum_Sepolia"] = "Arbitrum_Sepolia";
66
+ Blockchain["Arc"] = "Arc";
67
+ Blockchain["Arc_Testnet"] = "Arc_Testnet";
67
68
  Blockchain["Avalanche"] = "Avalanche";
68
69
  Blockchain["Avalanche_Fuji"] = "Avalanche_Fuji";
69
70
  Blockchain["Base"] = "Base";
@@ -150,6 +151,7 @@ var SwapChain;
150
151
  SwapChain["XDC"] = "XDC";
151
152
  SwapChain["HyperEVM"] = "HyperEVM";
152
153
  SwapChain["Monad"] = "Monad";
154
+ SwapChain["Arc"] = "Arc";
153
155
  // Testnet chains with swap support
154
156
  SwapChain["Arc_Testnet"] = "Arc_Testnet";
155
157
  })(SwapChain || (SwapChain = {}));
@@ -157,6 +159,7 @@ var BridgeChain;
157
159
  (function(BridgeChain) {
158
160
  // Mainnet chains with CCTPv2 support
159
161
  BridgeChain["Arbitrum"] = "Arbitrum";
162
+ BridgeChain["Arc"] = "Arc";
160
163
  BridgeChain["Avalanche"] = "Avalanche";
161
164
  BridgeChain["Base"] = "Base";
162
165
  BridgeChain["Codex"] = "Codex";
@@ -212,6 +215,7 @@ var BridgeChain;
212
215
  var UnifiedBalanceChain;
213
216
  (function(UnifiedBalanceChain) {
214
217
  // Mainnet chains with Gateway V1 support
218
+ UnifiedBalanceChain["Arc"] = "Arc";
215
219
  UnifiedBalanceChain["Arbitrum"] = "Arbitrum";
216
220
  UnifiedBalanceChain["Avalanche"] = "Avalanche";
217
221
  UnifiedBalanceChain["Base"] = "Base";
@@ -241,6 +245,7 @@ var UnifiedBalanceChain;
241
245
  })(UnifiedBalanceChain || (UnifiedBalanceChain = {}));
242
246
  var EarnChain;
243
247
  (function(EarnChain) {
248
+ EarnChain["Arc"] = "Arc";
244
249
  EarnChain["Arc_Testnet"] = "Arc_Testnet";
245
250
  })(EarnChain || (EarnChain = {}));
246
251
  /**
@@ -257,8 +262,11 @@ var EarnChain;
257
262
  * console.log(EARN_BRIDGE_SOURCE_BLOCKCHAINS.join(', '))
258
263
  * ```
259
264
  */ const EARN_BRIDGE_SOURCE_BLOCKCHAINS = [
265
+ "Arbitrum",
260
266
  "Arbitrum_Sepolia",
267
+ "Base",
261
268
  "Base_Sepolia",
269
+ "Ethereum",
262
270
  "Ethereum_Sepolia"
263
271
  ];
264
272
  /**
@@ -272,6 +280,7 @@ var EarnChain;
272
280
  * console.log(EARN_BRIDGE_DESTINATION_BLOCKCHAINS.join(', '))
273
281
  * ```
274
282
  */ const EARN_BRIDGE_DESTINATION_BLOCKCHAINS = [
283
+ "Arc",
275
284
  "Arc_Testnet"
276
285
  ];
277
286
 
@@ -577,6 +586,25 @@ var EarnChain;
577
586
  * EVM-compatible chains. Use this address when deploying or testing
578
587
  * cross-chain USDC transfers on test networks.
579
588
  */ const BRIDGE_CONTRACT_EVM_TESTNET = '0xC5567a5E3370d4DBfB0540025078e283e36A363d';
589
+ /**
590
+ * The CrossChainTokenService (CCTPx) service address for EVM testnet networks.
591
+ *
592
+ * This service coordinates CCTPx cross-chain token operations on testnet
593
+ * environments and is shared by every EVM test network CCTPx supports. Read the
594
+ * chain definitions via `isCCTPXSupported` rather than trusting a list here,
595
+ * which goes stale as deployments land.
596
+ */ const CCTPX_SERVICE_ADDRESS_EVM_TESTNET = '0x63753E722bd2C2A5DF6EE19C5106662208B81077';
597
+ /**
598
+ * CrossChainTokenService (CCTS) proxy address for CCTPx on EVM **mainnet**.
599
+ *
600
+ * @remarks
601
+ * A distinct deployment from {@link CCTPX_SERVICE_ADDRESS_EVM_TESTNET}, shared
602
+ * by every EVM mainnet chain that CCTPx supports. A chain becomes
603
+ * CCTPx-eligible only once its definition carries this as
604
+ * `cctpx.serviceAddress`, and a route additionally needs both of its endpoints
605
+ * eligible — so adding a chain here is the deliberate, reviewable step that
606
+ * opens mainnet CCTPx for it.
607
+ */ const CCTPX_SERVICE_ADDRESS_EVM_MAINNET = '0x431871229103b780868f8C6BB820cd16ECf942BC';
580
608
  /**
581
609
  * The bridge contract address for EVM mainnet networks.
582
610
  *
@@ -645,8 +673,115 @@ var EarnChain;
645
673
  * This program handles minting operations for Gateway transactions
646
674
  * on Solana devnet.
647
675
  */ const GATEWAY_MINTER_SOLANA_DEVNET = 'GATEmKK2ECL1brEngQZWCgMWPbvrEYqsV6u29dAaHavr';
648
- /** TokenMessengerWithFees address shared by enabled EVM mainnet sources. */ const TOKEN_MESSENGER_WITH_FEES_EVM_MAINNET = '0x71f54F818671cD0D7ea140Da213e5C8b5C92a408';
649
- /** TokenMessengerWithFees address shared by enabled EVM testnet sources. */ const TOKEN_MESSENGER_WITH_FEES_EVM_TESTNET = '0x8745D906D67C346E5eb1aEEED38Eb87F34DF0C0A';
676
+ /**
677
+ * The `TokenMessengerWithFees` proxy contract address for EVM mainnet networks
678
+ * (all chains except Edge).
679
+ *
680
+ * Deployed at a CREATE3-derived address; identical across all mainnet EVM
681
+ * source chains. Present on any chain that supports the prepaid FORWARD path
682
+ * via `depositForBurnWithHookAndFees`.
683
+ */ const TOKEN_MESSENGER_WITH_FEES_EVM_MAINNET = '0x71f54F818671cD0D7ea140Da213e5C8b5C92a408';
684
+ /**
685
+ * The `TokenMessengerWithFees` proxy contract address for EVM testnet networks.
686
+ *
687
+ * Identical across all testnet EVM source chains. Present on any testnet chain
688
+ * that supports the prepaid FORWARD path via `depositForBurnWithHookAndFees`.
689
+ */ const TOKEN_MESSENGER_WITH_FEES_EVM_TESTNET = '0x8745D906D67C346E5eb1aEEED38Eb87F34DF0C0A';
690
+ /**
691
+ * The `DepositForHandler` proxy contract address for EVM mainnet networks.
692
+ *
693
+ * The handler the GenericExecutor calls on a fast-deposit destination chain to
694
+ * run a cross-chain deposit into the GatewayWallet. Deployed at the same
695
+ * address across all mainnet EVM destination chains.
696
+ */ const DEPOSIT_FOR_HANDLER_EVM_MAINNET = '0x16529813203f77E036576666336554a1210dce4D';
697
+ /**
698
+ * The `DepositForHandler` proxy contract address for EVM testnet networks.
699
+ *
700
+ * Identical across all testnet EVM destination chains.
701
+ */ const DEPOSIT_FOR_HANDLER_EVM_TESTNET = '0xD05E7D2E7d30b92c5F17d7d0fC575fce231F1A48';
702
+ /**
703
+ * The `GenericExecutor` proxy contract address for EVM mainnet networks.
704
+ *
705
+ * The GenericExecutor is the `mintRecipient` and `destinationCaller` on the
706
+ * destination chain for the CCTP v2 prepaid FORWARD path. It receives the CCTP
707
+ * mint and calls the `DepositForHandler` to complete the fast deposit.
708
+ * Deployed at the same address across all mainnet EVM destination chains.
709
+ */ const GENERIC_EXECUTOR_EVM_MAINNET = '0xFa7be2f04F3Ad4ca969260729c6d45B5625984A7';
710
+ /**
711
+ * The `GenericExecutor` proxy contract address for EVM testnet networks.
712
+ *
713
+ * Identical across all testnet EVM destination chains.
714
+ */ const GENERIC_EXECUTOR_EVM_TESTNET = '0xEdC81040756AcCfF070c21D37b265b9D0b5Ba45e';
715
+
716
+ /**
717
+ * Arc Mainnet chain definition
718
+ * @remarks
719
+ * This represents the official production network for the Arc blockchain,
720
+ * Circle's EVM-compatible Layer-1 designed for stablecoin finance
721
+ * and asset tokenization. Arc uses USDC as the native gas token and
722
+ * features the Malachite Byzantine Fault Tolerant (BFT) consensus
723
+ * engine for sub-second finality.
724
+ */ const Arc = defineChain({
725
+ type: 'evm',
726
+ chain: Blockchain.Arc,
727
+ name: 'Arc',
728
+ title: 'Arc Mainnet',
729
+ nativeCurrency: {
730
+ name: 'USDC',
731
+ symbol: 'USDC',
732
+ // Arc uses native USDC with 18 decimals for gas payments (EVM standard).
733
+ // Note: The ERC-20 USDC contract at usdcAddress uses 6 decimals.
734
+ // See: https://docs.arc.network/arc/references/contract-addresses
735
+ decimals: 18
736
+ },
737
+ chainId: 5042,
738
+ isTestnet: false,
739
+ explorerUrl: 'https://explorer.arc.io/tx/{hash}',
740
+ rpcEndpoints: [
741
+ 'https://rpc.mainnet.arc.io/'
742
+ ],
743
+ eurcAddress: '0xbEf5f6d51CB62b58e6A8f77868681825C6fe21c1',
744
+ usdcAddress: '0x3600000000000000000000000000000000000000',
745
+ usdtAddress: null,
746
+ cctp: {
747
+ domain: 26,
748
+ contracts: {
749
+ v2: {
750
+ type: 'split',
751
+ tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
752
+ messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
753
+ confirmations: 1,
754
+ fastConfirmations: 1
755
+ }
756
+ },
757
+ forwarderSupported: {
758
+ source: false,
759
+ destination: true
760
+ }
761
+ },
762
+ cctpx: {
763
+ serviceAddress: CCTPX_SERVICE_ADDRESS_EVM_MAINNET
764
+ },
765
+ kitContracts: {
766
+ bridge: BRIDGE_CONTRACT_EVM_MAINNET,
767
+ adapter: ADAPTER_CONTRACT_EVM_MAINNET
768
+ },
769
+ gateway: {
770
+ domain: 26,
771
+ contracts: {
772
+ v1: {
773
+ wallet: GATEWAY_WALLET_EVM_MAINNET,
774
+ minter: GATEWAY_MINTER_EVM_MAINNET,
775
+ depositForHandler: DEPOSIT_FOR_HANDLER_EVM_MAINNET,
776
+ genericExecutor: GENERIC_EXECUTOR_EVM_MAINNET
777
+ }
778
+ },
779
+ forwarderSupported: {
780
+ source: true,
781
+ destination: true
782
+ }
783
+ }
784
+ });
650
785
 
651
786
  /**
652
787
  * Arc Testnet chain definition
@@ -695,6 +830,9 @@ var EarnChain;
695
830
  destination: true
696
831
  }
697
832
  },
833
+ cctpx: {
834
+ serviceAddress: CCTPX_SERVICE_ADDRESS_EVM_TESTNET
835
+ },
698
836
  kitContracts: {
699
837
  bridge: BRIDGE_CONTRACT_EVM_TESTNET,
700
838
  adapter: ADAPTER_CONTRACT_EVM_TESTNET
@@ -705,9 +843,8 @@ var EarnChain;
705
843
  v1: {
706
844
  wallet: GATEWAY_WALLET_EVM_TESTNET,
707
845
  minter: GATEWAY_MINTER_EVM_TESTNET,
708
- // DepositForHandler the GenericExecutor calls to run a fast cross-chain
709
- // deposit into the GatewayWallet above.
710
- depositForHandler: '0xD05E7D2E7d30b92c5F17d7d0fC575fce231F1A48'
846
+ depositForHandler: DEPOSIT_FOR_HANDLER_EVM_TESTNET,
847
+ genericExecutor: GENERIC_EXECUTOR_EVM_TESTNET
711
848
  }
712
849
  },
713
850
  forwarderSupported: {
@@ -763,6 +900,9 @@ var EarnChain;
763
900
  destination: true
764
901
  }
765
902
  },
903
+ cctpx: {
904
+ serviceAddress: CCTPX_SERVICE_ADDRESS_EVM_MAINNET
905
+ },
766
906
  kitContracts: {
767
907
  bridge: BRIDGE_CONTRACT_EVM_MAINNET,
768
908
  adapter: ADAPTER_CONTRACT_EVM_MAINNET
@@ -828,6 +968,9 @@ var EarnChain;
828
968
  destination: true
829
969
  }
830
970
  },
971
+ cctpx: {
972
+ serviceAddress: CCTPX_SERVICE_ADDRESS_EVM_TESTNET
973
+ },
831
974
  kitContracts: {
832
975
  bridge: BRIDGE_CONTRACT_EVM_TESTNET,
833
976
  adapter: ADAPTER_CONTRACT_EVM_TESTNET
@@ -893,6 +1036,9 @@ var EarnChain;
893
1036
  destination: true
894
1037
  }
895
1038
  },
1039
+ cctpx: {
1040
+ serviceAddress: CCTPX_SERVICE_ADDRESS_EVM_MAINNET
1041
+ },
896
1042
  kitContracts: {
897
1043
  bridge: BRIDGE_CONTRACT_EVM_MAINNET,
898
1044
  adapter: ADAPTER_CONTRACT_EVM_MAINNET
@@ -902,7 +1048,9 @@ var EarnChain;
902
1048
  contracts: {
903
1049
  v1: {
904
1050
  wallet: GATEWAY_WALLET_EVM_MAINNET,
905
- minter: GATEWAY_MINTER_EVM_MAINNET
1051
+ minter: GATEWAY_MINTER_EVM_MAINNET,
1052
+ depositForHandler: DEPOSIT_FOR_HANDLER_EVM_MAINNET,
1053
+ genericExecutor: GENERIC_EXECUTOR_EVM_MAINNET
906
1054
  }
907
1055
  },
908
1056
  forwarderSupported: {
@@ -958,6 +1106,9 @@ var EarnChain;
958
1106
  rpcEndpoints: [
959
1107
  'https://api.avax-test.network/ext/bc/C/rpc'
960
1108
  ],
1109
+ cctpx: {
1110
+ serviceAddress: CCTPX_SERVICE_ADDRESS_EVM_TESTNET
1111
+ },
961
1112
  kitContracts: {
962
1113
  bridge: BRIDGE_CONTRACT_EVM_TESTNET
963
1114
  },
@@ -966,7 +1117,9 @@ var EarnChain;
966
1117
  contracts: {
967
1118
  v1: {
968
1119
  wallet: GATEWAY_WALLET_EVM_TESTNET,
969
- minter: GATEWAY_MINTER_EVM_TESTNET
1120
+ minter: GATEWAY_MINTER_EVM_TESTNET,
1121
+ depositForHandler: DEPOSIT_FOR_HANDLER_EVM_TESTNET,
1122
+ genericExecutor: GENERIC_EXECUTOR_EVM_TESTNET
970
1123
  }
971
1124
  },
972
1125
  forwarderSupported: {
@@ -1023,6 +1176,9 @@ var EarnChain;
1023
1176
  destination: true
1024
1177
  }
1025
1178
  },
1179
+ cctpx: {
1180
+ serviceAddress: CCTPX_SERVICE_ADDRESS_EVM_MAINNET
1181
+ },
1026
1182
  kitContracts: {
1027
1183
  bridge: BRIDGE_CONTRACT_EVM_MAINNET,
1028
1184
  adapter: ADAPTER_CONTRACT_EVM_MAINNET
@@ -1088,6 +1244,9 @@ var EarnChain;
1088
1244
  destination: true
1089
1245
  }
1090
1246
  },
1247
+ cctpx: {
1248
+ serviceAddress: CCTPX_SERVICE_ADDRESS_EVM_TESTNET
1249
+ },
1091
1250
  kitContracts: {
1092
1251
  bridge: BRIDGE_CONTRACT_EVM_TESTNET,
1093
1252
  adapter: ADAPTER_CONTRACT_EVM_TESTNET
@@ -1279,6 +1438,7 @@ var EarnChain;
1279
1438
  v2: {
1280
1439
  type: 'split',
1281
1440
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
1441
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_MAINNET,
1282
1442
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
1283
1443
  confirmations: 1,
1284
1444
  fastConfirmations: 1
@@ -1324,6 +1484,7 @@ var EarnChain;
1324
1484
  v2: {
1325
1485
  type: 'split',
1326
1486
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
1487
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_TESTNET,
1327
1488
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
1328
1489
  confirmations: 1,
1329
1490
  fastConfirmations: 1
@@ -1369,6 +1530,7 @@ var EarnChain;
1369
1530
  v2: {
1370
1531
  type: 'split',
1371
1532
  tokenMessenger: '0x98706A006bc632Df31CAdFCBD43F38887ce2ca5c',
1533
+ tokenMessengerWithFees: '0x3Ac96675F9a3E6922713e041645D82f3561d3686',
1372
1534
  messageTransmitter: '0x5b61381Fc9e58E70EfC13a4A97516997019198ee',
1373
1535
  confirmations: 65,
1374
1536
  fastConfirmations: 1
@@ -1414,6 +1576,7 @@ var EarnChain;
1414
1576
  v2: {
1415
1577
  type: 'split',
1416
1578
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
1579
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_TESTNET,
1417
1580
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
1418
1581
  confirmations: 65,
1419
1582
  fastConfirmations: 1
@@ -1476,6 +1639,9 @@ var EarnChain;
1476
1639
  destination: true
1477
1640
  }
1478
1641
  },
1642
+ cctpx: {
1643
+ serviceAddress: CCTPX_SERVICE_ADDRESS_EVM_MAINNET
1644
+ },
1479
1645
  kitContracts: {
1480
1646
  bridge: BRIDGE_CONTRACT_EVM_MAINNET,
1481
1647
  adapter: ADAPTER_CONTRACT_EVM_MAINNET
@@ -1541,6 +1707,9 @@ var EarnChain;
1541
1707
  destination: true
1542
1708
  }
1543
1709
  },
1710
+ cctpx: {
1711
+ serviceAddress: CCTPX_SERVICE_ADDRESS_EVM_TESTNET
1712
+ },
1544
1713
  kitContracts: {
1545
1714
  bridge: BRIDGE_CONTRACT_EVM_TESTNET,
1546
1715
  adapter: ADAPTER_CONTRACT_EVM_TESTNET
@@ -1762,6 +1931,7 @@ var EarnChain;
1762
1931
  v2: {
1763
1932
  type: 'split',
1764
1933
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
1934
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_MAINNET,
1765
1935
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
1766
1936
  confirmations: 1,
1767
1937
  fastConfirmations: 1
@@ -1809,6 +1979,7 @@ var EarnChain;
1809
1979
  v2: {
1810
1980
  type: 'split',
1811
1981
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
1982
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_TESTNET,
1812
1983
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
1813
1984
  confirmations: 1,
1814
1985
  fastConfirmations: 1
@@ -2090,6 +2261,7 @@ var EarnChain;
2090
2261
  v2: {
2091
2262
  type: 'split',
2092
2263
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
2264
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_TESTNET,
2093
2265
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
2094
2266
  confirmations: 1,
2095
2267
  fastConfirmations: 1
@@ -2135,6 +2307,7 @@ var EarnChain;
2135
2307
  v2: {
2136
2308
  type: 'split',
2137
2309
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
2310
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_MAINNET,
2138
2311
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
2139
2312
  confirmations: 64,
2140
2313
  fastConfirmations: 1
@@ -2180,6 +2353,7 @@ var EarnChain;
2180
2353
  v2: {
2181
2354
  type: 'split',
2182
2355
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
2356
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_TESTNET,
2183
2357
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
2184
2358
  confirmations: 64,
2185
2359
  fastConfirmations: 1
@@ -2367,6 +2541,9 @@ var EarnChain;
2367
2541
  destination: true
2368
2542
  }
2369
2543
  },
2544
+ cctpx: {
2545
+ serviceAddress: CCTPX_SERVICE_ADDRESS_EVM_MAINNET
2546
+ },
2370
2547
  kitContracts: {
2371
2548
  bridge: BRIDGE_CONTRACT_EVM_MAINNET,
2372
2549
  adapter: ADAPTER_CONTRACT_EVM_MAINNET
@@ -2432,6 +2609,9 @@ var EarnChain;
2432
2609
  destination: true
2433
2610
  }
2434
2611
  },
2612
+ cctpx: {
2613
+ serviceAddress: CCTPX_SERVICE_ADDRESS_EVM_TESTNET
2614
+ },
2435
2615
  kitContracts: {
2436
2616
  bridge: BRIDGE_CONTRACT_EVM_TESTNET
2437
2617
  },
@@ -2481,6 +2661,7 @@ var EarnChain;
2481
2661
  v2: {
2482
2662
  type: 'split',
2483
2663
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
2664
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_MAINNET,
2484
2665
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
2485
2666
  confirmations: 1,
2486
2667
  fastConfirmations: 1
@@ -2527,6 +2708,7 @@ var EarnChain;
2527
2708
  v2: {
2528
2709
  type: 'split',
2529
2710
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
2711
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_TESTNET,
2530
2712
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
2531
2713
  confirmations: 1,
2532
2714
  fastConfirmations: 1
@@ -2825,6 +3007,9 @@ var EarnChain;
2825
3007
  destination: true
2826
3008
  }
2827
3009
  },
3010
+ cctpx: {
3011
+ serviceAddress: CCTPX_SERVICE_ADDRESS_EVM_MAINNET
3012
+ },
2828
3013
  kitContracts: {
2829
3014
  bridge: BRIDGE_CONTRACT_EVM_MAINNET,
2830
3015
  adapter: ADAPTER_CONTRACT_EVM_MAINNET
@@ -2834,7 +3019,9 @@ var EarnChain;
2834
3019
  contracts: {
2835
3020
  v1: {
2836
3021
  wallet: GATEWAY_WALLET_EVM_MAINNET,
2837
- minter: GATEWAY_MINTER_EVM_MAINNET
3022
+ minter: GATEWAY_MINTER_EVM_MAINNET,
3023
+ depositForHandler: DEPOSIT_FOR_HANDLER_EVM_MAINNET,
3024
+ genericExecutor: GENERIC_EXECUTOR_EVM_MAINNET
2838
3025
  }
2839
3026
  },
2840
3027
  forwarderSupported: {
@@ -2891,6 +3078,9 @@ var EarnChain;
2891
3078
  destination: true
2892
3079
  }
2893
3080
  },
3081
+ cctpx: {
3082
+ serviceAddress: CCTPX_SERVICE_ADDRESS_EVM_TESTNET
3083
+ },
2894
3084
  kitContracts: {
2895
3085
  bridge: BRIDGE_CONTRACT_EVM_TESTNET
2896
3086
  },
@@ -2899,7 +3089,9 @@ var EarnChain;
2899
3089
  contracts: {
2900
3090
  v1: {
2901
3091
  wallet: GATEWAY_WALLET_EVM_TESTNET,
2902
- minter: GATEWAY_MINTER_EVM_TESTNET
3092
+ minter: GATEWAY_MINTER_EVM_TESTNET,
3093
+ depositForHandler: DEPOSIT_FOR_HANDLER_EVM_TESTNET,
3094
+ genericExecutor: GENERIC_EXECUTOR_EVM_TESTNET
2903
3095
  }
2904
3096
  },
2905
3097
  forwarderSupported: {
@@ -3889,6 +4081,67 @@ var EarnChain;
3889
4081
  cctp: null
3890
4082
  });
3891
4083
 
4084
+ /**
4085
+ * Chains the Fee Service accepts as a SOURCE for source-paid ("receive-exact")
4086
+ * CCTP v2 fees. An explicit allowlist is required because the
4087
+ * `TokenMessengerWithFees` wrapper address is now shared with the fast-deposit
4088
+ * forwarder path, so wrapper presence no longer implies source-fee support.
4089
+ * Keep in sync with backend coverage.
4090
+ */ new Set([
4091
+ // Mainnet
4092
+ Blockchain.Ethereum,
4093
+ Blockchain.Base,
4094
+ Blockchain.Arbitrum,
4095
+ Blockchain.Unichain,
4096
+ Blockchain.Optimism,
4097
+ Blockchain.Codex,
4098
+ Blockchain.Ink,
4099
+ Blockchain.Plume,
4100
+ Blockchain.Linea,
4101
+ Blockchain.World_Chain,
4102
+ // Testnet counterparts
4103
+ Blockchain.Ethereum_Sepolia,
4104
+ Blockchain.Base_Sepolia,
4105
+ Blockchain.Arbitrum_Sepolia,
4106
+ Blockchain.Unichain_Sepolia,
4107
+ Blockchain.Optimism_Sepolia,
4108
+ Blockchain.Codex_Testnet,
4109
+ Blockchain.Ink_Testnet,
4110
+ Blockchain.Plume_Testnet,
4111
+ Blockchain.Linea_Sepolia,
4112
+ Blockchain.World_Chain_Sepolia
4113
+ ]);
4114
+
4115
+ /**
4116
+ * Temporary allowlist of chains permitted to initiate Gateway fast deposits.
4117
+ * Only chains keyed here are eligible; all others are rejected. Using the
4118
+ * {@link Blockchain} enum keeps entries type-safe and catches typos at compile
4119
+ * time. Remove this allowlist once roll-out is complete.
4120
+ */ new Set([
4121
+ // Mainnet
4122
+ Blockchain.Ethereum,
4123
+ Blockchain.Base,
4124
+ Blockchain.Arbitrum,
4125
+ Blockchain.Unichain,
4126
+ Blockchain.Optimism,
4127
+ Blockchain.Codex,
4128
+ Blockchain.Ink,
4129
+ Blockchain.Plume,
4130
+ Blockchain.Linea,
4131
+ Blockchain.World_Chain,
4132
+ // Testnet counterparts
4133
+ Blockchain.Ethereum_Sepolia,
4134
+ Blockchain.Base_Sepolia,
4135
+ Blockchain.Arbitrum_Sepolia,
4136
+ Blockchain.Unichain_Sepolia,
4137
+ Blockchain.Optimism_Sepolia,
4138
+ Blockchain.Codex_Testnet,
4139
+ Blockchain.Ink_Testnet,
4140
+ Blockchain.Plume_Testnet,
4141
+ Blockchain.Linea_Sepolia,
4142
+ Blockchain.World_Chain_Sepolia
4143
+ ]);
4144
+
3892
4145
  /**
3893
4146
  * Zod schema for validating Gateway v1 contract addresses.
3894
4147
  *
@@ -3910,7 +4163,10 @@ var EarnChain;
3910
4163
  }).min(1, 'Gateway minter address cannot be empty.'),
3911
4164
  depositForHandler: z.string({
3912
4165
  invalid_type_error: 'Gateway depositForHandler address must be a string.'
3913
- }).min(1, 'Gateway depositForHandler address cannot be empty.').optional()
4166
+ }).min(1, 'Gateway depositForHandler address cannot be empty.').optional(),
4167
+ genericExecutor: z.string({
4168
+ invalid_type_error: 'Gateway genericExecutor address must be a string.'
4169
+ }).min(1, 'Gateway genericExecutor address cannot be empty.').optional()
3914
4170
  }).strict() // Reject any additional properties not defined in the schema
3915
4171
  ;
3916
4172
  /**
@@ -3994,6 +4250,7 @@ var EarnChain;
3994
4250
  usdcAddress: z.string().nullable(),
3995
4251
  usdtAddress: z.string().nullable(),
3996
4252
  cctp: z.any().nullable(),
4253
+ cctpx: z.any().optional(),
3997
4254
  kitContracts: z.object({
3998
4255
  bridge: z.string().optional(),
3999
4256
  adapter: z.string().optional()
@@ -4199,14 +4456,15 @@ const EARN_BRIDGE_DESTINATION_CHAIN_VALUES = EARN_BRIDGE_DESTINATION_BLOCKCHAINS
4199
4456
  * Zod schema for validating the source chain of a cross-chain Earn deposit.
4200
4457
  *
4201
4458
  * Accept a supported source Blockchain value, a matching string literal, or a
4202
- * ChainDefinition for a supported source chain. Source chains are Ethereum
4203
- * Sepolia, Arbitrum Sepolia, and Base Sepolia.
4459
+ * ChainDefinition for a supported source chain. Source chains are Ethereum,
4460
+ * Arbitrum, and Base (mainnet and testnet).
4204
4461
  *
4205
4462
  * @example
4206
4463
  * ```typescript
4207
4464
  * import { earnBridgeSourceChainIdentifierSchema } from '@core/chains'
4208
4465
  *
4209
4466
  * // Valid
4467
+ * earnBridgeSourceChainIdentifierSchema.parse('Ethereum')
4210
4468
  * earnBridgeSourceChainIdentifierSchema.parse('Ethereum_Sepolia')
4211
4469
  *
4212
4470
  * // Invalid (throws ZodError)
@@ -4225,14 +4483,15 @@ const EARN_BRIDGE_DESTINATION_CHAIN_VALUES = EARN_BRIDGE_DESTINATION_BLOCKCHAINS
4225
4483
  * deposit.
4226
4484
  *
4227
4485
  * Accept a supported destination Blockchain value, a matching string literal,
4228
- * or a ChainDefinition for a supported destination chain. Currently only Arc
4229
- * Testnet is supported.
4486
+ * or a ChainDefinition for a supported destination chain. Arc (mainnet) and
4487
+ * Arc Testnet are supported.
4230
4488
  *
4231
4489
  * @example
4232
4490
  * ```typescript
4233
4491
  * import { earnBridgeDestinationChainIdentifierSchema } from '@core/chains'
4234
4492
  *
4235
4493
  * // Valid
4494
+ * earnBridgeDestinationChainIdentifierSchema.parse('Arc')
4236
4495
  * earnBridgeDestinationChainIdentifierSchema.parse('Arc_Testnet')
4237
4496
  *
4238
4497
  * // Invalid (throws ZodError)
@@ -4304,5 +4563,5 @@ const swapTokenEnumSchema = z.enum([
4304
4563
  * ```
4305
4564
  */ z.string().transform((value)=>value.toUpperCase()).pipe(swapTokenEnumSchema);
4306
4565
 
4307
- export { Arbitrum, ArbitrumSepolia, ArcTestnet, Avalanche, AvalancheFuji, Base, BaseSepolia, Codex, CodexTestnet, Ethereum, EthereumSepolia, HyperEVM, HyperEVMTestnet, Ink, InkTestnet, Linea, LineaSepolia, Optimism, OptimismSepolia, Plasma, PlasmaTestnet, Plume, PlumeTestnet, Polygon, PolygonAmoy, Sei, SeiTestnet, Solana, SolanaDevnet, Sonic, SonicTestnet, Unichain, UnichainSepolia, WorldChain, WorldChainSepolia, XDC, XDCApothem, XLayer, XLayerTestnet };
4566
+ export { Arbitrum, ArbitrumSepolia, Arc, ArcTestnet, Avalanche, AvalancheFuji, Base, BaseSepolia, Codex, CodexTestnet, Ethereum, EthereumSepolia, HyperEVM, HyperEVMTestnet, Ink, InkTestnet, Linea, LineaSepolia, Optimism, OptimismSepolia, Plasma, PlasmaTestnet, Plume, PlumeTestnet, Polygon, PolygonAmoy, Sei, SeiTestnet, Solana, SolanaDevnet, Sonic, SonicTestnet, Unichain, UnichainSepolia, WorldChain, WorldChainSepolia, XDC, XDCApothem, XLayer, XLayerTestnet };
4308
4567
  //# sourceMappingURL=chains.mjs.map