@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.cjs CHANGED
@@ -63,9 +63,10 @@ var zod = require('zod');
63
63
  Blockchain["Algorand_Testnet"] = "Algorand_Testnet";
64
64
  Blockchain["Aptos"] = "Aptos";
65
65
  Blockchain["Aptos_Testnet"] = "Aptos_Testnet";
66
- Blockchain["Arc_Testnet"] = "Arc_Testnet";
67
66
  Blockchain["Arbitrum"] = "Arbitrum";
68
67
  Blockchain["Arbitrum_Sepolia"] = "Arbitrum_Sepolia";
68
+ Blockchain["Arc"] = "Arc";
69
+ Blockchain["Arc_Testnet"] = "Arc_Testnet";
69
70
  Blockchain["Avalanche"] = "Avalanche";
70
71
  Blockchain["Avalanche_Fuji"] = "Avalanche_Fuji";
71
72
  Blockchain["Base"] = "Base";
@@ -152,6 +153,7 @@ var SwapChain;
152
153
  SwapChain["XDC"] = "XDC";
153
154
  SwapChain["HyperEVM"] = "HyperEVM";
154
155
  SwapChain["Monad"] = "Monad";
156
+ SwapChain["Arc"] = "Arc";
155
157
  // Testnet chains with swap support
156
158
  SwapChain["Arc_Testnet"] = "Arc_Testnet";
157
159
  })(SwapChain || (SwapChain = {}));
@@ -159,6 +161,7 @@ var BridgeChain;
159
161
  (function(BridgeChain) {
160
162
  // Mainnet chains with CCTPv2 support
161
163
  BridgeChain["Arbitrum"] = "Arbitrum";
164
+ BridgeChain["Arc"] = "Arc";
162
165
  BridgeChain["Avalanche"] = "Avalanche";
163
166
  BridgeChain["Base"] = "Base";
164
167
  BridgeChain["Codex"] = "Codex";
@@ -214,6 +217,7 @@ var BridgeChain;
214
217
  var UnifiedBalanceChain;
215
218
  (function(UnifiedBalanceChain) {
216
219
  // Mainnet chains with Gateway V1 support
220
+ UnifiedBalanceChain["Arc"] = "Arc";
217
221
  UnifiedBalanceChain["Arbitrum"] = "Arbitrum";
218
222
  UnifiedBalanceChain["Avalanche"] = "Avalanche";
219
223
  UnifiedBalanceChain["Base"] = "Base";
@@ -243,6 +247,7 @@ var UnifiedBalanceChain;
243
247
  })(UnifiedBalanceChain || (UnifiedBalanceChain = {}));
244
248
  var EarnChain;
245
249
  (function(EarnChain) {
250
+ EarnChain["Arc"] = "Arc";
246
251
  EarnChain["Arc_Testnet"] = "Arc_Testnet";
247
252
  })(EarnChain || (EarnChain = {}));
248
253
  /**
@@ -259,8 +264,11 @@ var EarnChain;
259
264
  * console.log(EARN_BRIDGE_SOURCE_BLOCKCHAINS.join(', '))
260
265
  * ```
261
266
  */ const EARN_BRIDGE_SOURCE_BLOCKCHAINS = [
267
+ "Arbitrum",
262
268
  "Arbitrum_Sepolia",
269
+ "Base",
263
270
  "Base_Sepolia",
271
+ "Ethereum",
264
272
  "Ethereum_Sepolia"
265
273
  ];
266
274
  /**
@@ -274,6 +282,7 @@ var EarnChain;
274
282
  * console.log(EARN_BRIDGE_DESTINATION_BLOCKCHAINS.join(', '))
275
283
  * ```
276
284
  */ const EARN_BRIDGE_DESTINATION_BLOCKCHAINS = [
285
+ "Arc",
277
286
  "Arc_Testnet"
278
287
  ];
279
288
 
@@ -579,6 +588,25 @@ var EarnChain;
579
588
  * EVM-compatible chains. Use this address when deploying or testing
580
589
  * cross-chain USDC transfers on test networks.
581
590
  */ const BRIDGE_CONTRACT_EVM_TESTNET = '0xC5567a5E3370d4DBfB0540025078e283e36A363d';
591
+ /**
592
+ * The CrossChainTokenService (CCTPx) service address for EVM testnet networks.
593
+ *
594
+ * This service coordinates CCTPx cross-chain token operations on testnet
595
+ * environments and is shared by every EVM test network CCTPx supports. Read the
596
+ * chain definitions via `isCCTPXSupported` rather than trusting a list here,
597
+ * which goes stale as deployments land.
598
+ */ const CCTPX_SERVICE_ADDRESS_EVM_TESTNET = '0x63753E722bd2C2A5DF6EE19C5106662208B81077';
599
+ /**
600
+ * CrossChainTokenService (CCTS) proxy address for CCTPx on EVM **mainnet**.
601
+ *
602
+ * @remarks
603
+ * A distinct deployment from {@link CCTPX_SERVICE_ADDRESS_EVM_TESTNET}, shared
604
+ * by every EVM mainnet chain that CCTPx supports. A chain becomes
605
+ * CCTPx-eligible only once its definition carries this as
606
+ * `cctpx.serviceAddress`, and a route additionally needs both of its endpoints
607
+ * eligible — so adding a chain here is the deliberate, reviewable step that
608
+ * opens mainnet CCTPx for it.
609
+ */ const CCTPX_SERVICE_ADDRESS_EVM_MAINNET = '0x431871229103b780868f8C6BB820cd16ECf942BC';
582
610
  /**
583
611
  * The bridge contract address for EVM mainnet networks.
584
612
  *
@@ -647,8 +675,115 @@ var EarnChain;
647
675
  * This program handles minting operations for Gateway transactions
648
676
  * on Solana devnet.
649
677
  */ const GATEWAY_MINTER_SOLANA_DEVNET = 'GATEmKK2ECL1brEngQZWCgMWPbvrEYqsV6u29dAaHavr';
650
- /** TokenMessengerWithFees address shared by enabled EVM mainnet sources. */ const TOKEN_MESSENGER_WITH_FEES_EVM_MAINNET = '0x71f54F818671cD0D7ea140Da213e5C8b5C92a408';
651
- /** TokenMessengerWithFees address shared by enabled EVM testnet sources. */ const TOKEN_MESSENGER_WITH_FEES_EVM_TESTNET = '0x8745D906D67C346E5eb1aEEED38Eb87F34DF0C0A';
678
+ /**
679
+ * The `TokenMessengerWithFees` proxy contract address for EVM mainnet networks
680
+ * (all chains except Edge).
681
+ *
682
+ * Deployed at a CREATE3-derived address; identical across all mainnet EVM
683
+ * source chains. Present on any chain that supports the prepaid FORWARD path
684
+ * via `depositForBurnWithHookAndFees`.
685
+ */ const TOKEN_MESSENGER_WITH_FEES_EVM_MAINNET = '0x71f54F818671cD0D7ea140Da213e5C8b5C92a408';
686
+ /**
687
+ * The `TokenMessengerWithFees` proxy contract address for EVM testnet networks.
688
+ *
689
+ * Identical across all testnet EVM source chains. Present on any testnet chain
690
+ * that supports the prepaid FORWARD path via `depositForBurnWithHookAndFees`.
691
+ */ const TOKEN_MESSENGER_WITH_FEES_EVM_TESTNET = '0x8745D906D67C346E5eb1aEEED38Eb87F34DF0C0A';
692
+ /**
693
+ * The `DepositForHandler` proxy contract address for EVM mainnet networks.
694
+ *
695
+ * The handler the GenericExecutor calls on a fast-deposit destination chain to
696
+ * run a cross-chain deposit into the GatewayWallet. Deployed at the same
697
+ * address across all mainnet EVM destination chains.
698
+ */ const DEPOSIT_FOR_HANDLER_EVM_MAINNET = '0x16529813203f77E036576666336554a1210dce4D';
699
+ /**
700
+ * The `DepositForHandler` proxy contract address for EVM testnet networks.
701
+ *
702
+ * Identical across all testnet EVM destination chains.
703
+ */ const DEPOSIT_FOR_HANDLER_EVM_TESTNET = '0xD05E7D2E7d30b92c5F17d7d0fC575fce231F1A48';
704
+ /**
705
+ * The `GenericExecutor` proxy contract address for EVM mainnet networks.
706
+ *
707
+ * The GenericExecutor is the `mintRecipient` and `destinationCaller` on the
708
+ * destination chain for the CCTP v2 prepaid FORWARD path. It receives the CCTP
709
+ * mint and calls the `DepositForHandler` to complete the fast deposit.
710
+ * Deployed at the same address across all mainnet EVM destination chains.
711
+ */ const GENERIC_EXECUTOR_EVM_MAINNET = '0xFa7be2f04F3Ad4ca969260729c6d45B5625984A7';
712
+ /**
713
+ * The `GenericExecutor` proxy contract address for EVM testnet networks.
714
+ *
715
+ * Identical across all testnet EVM destination chains.
716
+ */ const GENERIC_EXECUTOR_EVM_TESTNET = '0xEdC81040756AcCfF070c21D37b265b9D0b5Ba45e';
717
+
718
+ /**
719
+ * Arc Mainnet chain definition
720
+ * @remarks
721
+ * This represents the official production network for the Arc blockchain,
722
+ * Circle's EVM-compatible Layer-1 designed for stablecoin finance
723
+ * and asset tokenization. Arc uses USDC as the native gas token and
724
+ * features the Malachite Byzantine Fault Tolerant (BFT) consensus
725
+ * engine for sub-second finality.
726
+ */ const Arc = defineChain({
727
+ type: 'evm',
728
+ chain: Blockchain.Arc,
729
+ name: 'Arc',
730
+ title: 'Arc Mainnet',
731
+ nativeCurrency: {
732
+ name: 'USDC',
733
+ symbol: 'USDC',
734
+ // Arc uses native USDC with 18 decimals for gas payments (EVM standard).
735
+ // Note: The ERC-20 USDC contract at usdcAddress uses 6 decimals.
736
+ // See: https://docs.arc.network/arc/references/contract-addresses
737
+ decimals: 18
738
+ },
739
+ chainId: 5042,
740
+ isTestnet: false,
741
+ explorerUrl: 'https://explorer.arc.io/tx/{hash}',
742
+ rpcEndpoints: [
743
+ 'https://rpc.mainnet.arc.io/'
744
+ ],
745
+ eurcAddress: '0xbEf5f6d51CB62b58e6A8f77868681825C6fe21c1',
746
+ usdcAddress: '0x3600000000000000000000000000000000000000',
747
+ usdtAddress: null,
748
+ cctp: {
749
+ domain: 26,
750
+ contracts: {
751
+ v2: {
752
+ type: 'split',
753
+ tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
754
+ messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
755
+ confirmations: 1,
756
+ fastConfirmations: 1
757
+ }
758
+ },
759
+ forwarderSupported: {
760
+ source: false,
761
+ destination: true
762
+ }
763
+ },
764
+ cctpx: {
765
+ serviceAddress: CCTPX_SERVICE_ADDRESS_EVM_MAINNET
766
+ },
767
+ kitContracts: {
768
+ bridge: BRIDGE_CONTRACT_EVM_MAINNET,
769
+ adapter: ADAPTER_CONTRACT_EVM_MAINNET
770
+ },
771
+ gateway: {
772
+ domain: 26,
773
+ contracts: {
774
+ v1: {
775
+ wallet: GATEWAY_WALLET_EVM_MAINNET,
776
+ minter: GATEWAY_MINTER_EVM_MAINNET,
777
+ depositForHandler: DEPOSIT_FOR_HANDLER_EVM_MAINNET,
778
+ genericExecutor: GENERIC_EXECUTOR_EVM_MAINNET
779
+ }
780
+ },
781
+ forwarderSupported: {
782
+ source: true,
783
+ destination: true
784
+ }
785
+ }
786
+ });
652
787
 
653
788
  /**
654
789
  * Arc Testnet chain definition
@@ -697,6 +832,9 @@ var EarnChain;
697
832
  destination: true
698
833
  }
699
834
  },
835
+ cctpx: {
836
+ serviceAddress: CCTPX_SERVICE_ADDRESS_EVM_TESTNET
837
+ },
700
838
  kitContracts: {
701
839
  bridge: BRIDGE_CONTRACT_EVM_TESTNET,
702
840
  adapter: ADAPTER_CONTRACT_EVM_TESTNET
@@ -707,9 +845,8 @@ var EarnChain;
707
845
  v1: {
708
846
  wallet: GATEWAY_WALLET_EVM_TESTNET,
709
847
  minter: GATEWAY_MINTER_EVM_TESTNET,
710
- // DepositForHandler the GenericExecutor calls to run a fast cross-chain
711
- // deposit into the GatewayWallet above.
712
- depositForHandler: '0xD05E7D2E7d30b92c5F17d7d0fC575fce231F1A48'
848
+ depositForHandler: DEPOSIT_FOR_HANDLER_EVM_TESTNET,
849
+ genericExecutor: GENERIC_EXECUTOR_EVM_TESTNET
713
850
  }
714
851
  },
715
852
  forwarderSupported: {
@@ -765,6 +902,9 @@ var EarnChain;
765
902
  destination: true
766
903
  }
767
904
  },
905
+ cctpx: {
906
+ serviceAddress: CCTPX_SERVICE_ADDRESS_EVM_MAINNET
907
+ },
768
908
  kitContracts: {
769
909
  bridge: BRIDGE_CONTRACT_EVM_MAINNET,
770
910
  adapter: ADAPTER_CONTRACT_EVM_MAINNET
@@ -830,6 +970,9 @@ var EarnChain;
830
970
  destination: true
831
971
  }
832
972
  },
973
+ cctpx: {
974
+ serviceAddress: CCTPX_SERVICE_ADDRESS_EVM_TESTNET
975
+ },
833
976
  kitContracts: {
834
977
  bridge: BRIDGE_CONTRACT_EVM_TESTNET,
835
978
  adapter: ADAPTER_CONTRACT_EVM_TESTNET
@@ -895,6 +1038,9 @@ var EarnChain;
895
1038
  destination: true
896
1039
  }
897
1040
  },
1041
+ cctpx: {
1042
+ serviceAddress: CCTPX_SERVICE_ADDRESS_EVM_MAINNET
1043
+ },
898
1044
  kitContracts: {
899
1045
  bridge: BRIDGE_CONTRACT_EVM_MAINNET,
900
1046
  adapter: ADAPTER_CONTRACT_EVM_MAINNET
@@ -904,7 +1050,9 @@ var EarnChain;
904
1050
  contracts: {
905
1051
  v1: {
906
1052
  wallet: GATEWAY_WALLET_EVM_MAINNET,
907
- minter: GATEWAY_MINTER_EVM_MAINNET
1053
+ minter: GATEWAY_MINTER_EVM_MAINNET,
1054
+ depositForHandler: DEPOSIT_FOR_HANDLER_EVM_MAINNET,
1055
+ genericExecutor: GENERIC_EXECUTOR_EVM_MAINNET
908
1056
  }
909
1057
  },
910
1058
  forwarderSupported: {
@@ -960,6 +1108,9 @@ var EarnChain;
960
1108
  rpcEndpoints: [
961
1109
  'https://api.avax-test.network/ext/bc/C/rpc'
962
1110
  ],
1111
+ cctpx: {
1112
+ serviceAddress: CCTPX_SERVICE_ADDRESS_EVM_TESTNET
1113
+ },
963
1114
  kitContracts: {
964
1115
  bridge: BRIDGE_CONTRACT_EVM_TESTNET
965
1116
  },
@@ -968,7 +1119,9 @@ var EarnChain;
968
1119
  contracts: {
969
1120
  v1: {
970
1121
  wallet: GATEWAY_WALLET_EVM_TESTNET,
971
- minter: GATEWAY_MINTER_EVM_TESTNET
1122
+ minter: GATEWAY_MINTER_EVM_TESTNET,
1123
+ depositForHandler: DEPOSIT_FOR_HANDLER_EVM_TESTNET,
1124
+ genericExecutor: GENERIC_EXECUTOR_EVM_TESTNET
972
1125
  }
973
1126
  },
974
1127
  forwarderSupported: {
@@ -1025,6 +1178,9 @@ var EarnChain;
1025
1178
  destination: true
1026
1179
  }
1027
1180
  },
1181
+ cctpx: {
1182
+ serviceAddress: CCTPX_SERVICE_ADDRESS_EVM_MAINNET
1183
+ },
1028
1184
  kitContracts: {
1029
1185
  bridge: BRIDGE_CONTRACT_EVM_MAINNET,
1030
1186
  adapter: ADAPTER_CONTRACT_EVM_MAINNET
@@ -1090,6 +1246,9 @@ var EarnChain;
1090
1246
  destination: true
1091
1247
  }
1092
1248
  },
1249
+ cctpx: {
1250
+ serviceAddress: CCTPX_SERVICE_ADDRESS_EVM_TESTNET
1251
+ },
1093
1252
  kitContracts: {
1094
1253
  bridge: BRIDGE_CONTRACT_EVM_TESTNET,
1095
1254
  adapter: ADAPTER_CONTRACT_EVM_TESTNET
@@ -1281,6 +1440,7 @@ var EarnChain;
1281
1440
  v2: {
1282
1441
  type: 'split',
1283
1442
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
1443
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_MAINNET,
1284
1444
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
1285
1445
  confirmations: 1,
1286
1446
  fastConfirmations: 1
@@ -1326,6 +1486,7 @@ var EarnChain;
1326
1486
  v2: {
1327
1487
  type: 'split',
1328
1488
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
1489
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_TESTNET,
1329
1490
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
1330
1491
  confirmations: 1,
1331
1492
  fastConfirmations: 1
@@ -1371,6 +1532,7 @@ var EarnChain;
1371
1532
  v2: {
1372
1533
  type: 'split',
1373
1534
  tokenMessenger: '0x98706A006bc632Df31CAdFCBD43F38887ce2ca5c',
1535
+ tokenMessengerWithFees: '0x3Ac96675F9a3E6922713e041645D82f3561d3686',
1374
1536
  messageTransmitter: '0x5b61381Fc9e58E70EfC13a4A97516997019198ee',
1375
1537
  confirmations: 65,
1376
1538
  fastConfirmations: 1
@@ -1416,6 +1578,7 @@ var EarnChain;
1416
1578
  v2: {
1417
1579
  type: 'split',
1418
1580
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
1581
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_TESTNET,
1419
1582
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
1420
1583
  confirmations: 65,
1421
1584
  fastConfirmations: 1
@@ -1478,6 +1641,9 @@ var EarnChain;
1478
1641
  destination: true
1479
1642
  }
1480
1643
  },
1644
+ cctpx: {
1645
+ serviceAddress: CCTPX_SERVICE_ADDRESS_EVM_MAINNET
1646
+ },
1481
1647
  kitContracts: {
1482
1648
  bridge: BRIDGE_CONTRACT_EVM_MAINNET,
1483
1649
  adapter: ADAPTER_CONTRACT_EVM_MAINNET
@@ -1543,6 +1709,9 @@ var EarnChain;
1543
1709
  destination: true
1544
1710
  }
1545
1711
  },
1712
+ cctpx: {
1713
+ serviceAddress: CCTPX_SERVICE_ADDRESS_EVM_TESTNET
1714
+ },
1546
1715
  kitContracts: {
1547
1716
  bridge: BRIDGE_CONTRACT_EVM_TESTNET,
1548
1717
  adapter: ADAPTER_CONTRACT_EVM_TESTNET
@@ -1764,6 +1933,7 @@ var EarnChain;
1764
1933
  v2: {
1765
1934
  type: 'split',
1766
1935
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
1936
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_MAINNET,
1767
1937
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
1768
1938
  confirmations: 1,
1769
1939
  fastConfirmations: 1
@@ -1811,6 +1981,7 @@ var EarnChain;
1811
1981
  v2: {
1812
1982
  type: 'split',
1813
1983
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
1984
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_TESTNET,
1814
1985
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
1815
1986
  confirmations: 1,
1816
1987
  fastConfirmations: 1
@@ -2092,6 +2263,7 @@ var EarnChain;
2092
2263
  v2: {
2093
2264
  type: 'split',
2094
2265
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
2266
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_TESTNET,
2095
2267
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
2096
2268
  confirmations: 1,
2097
2269
  fastConfirmations: 1
@@ -2137,6 +2309,7 @@ var EarnChain;
2137
2309
  v2: {
2138
2310
  type: 'split',
2139
2311
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
2312
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_MAINNET,
2140
2313
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
2141
2314
  confirmations: 64,
2142
2315
  fastConfirmations: 1
@@ -2182,6 +2355,7 @@ var EarnChain;
2182
2355
  v2: {
2183
2356
  type: 'split',
2184
2357
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
2358
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_TESTNET,
2185
2359
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
2186
2360
  confirmations: 64,
2187
2361
  fastConfirmations: 1
@@ -2369,6 +2543,9 @@ var EarnChain;
2369
2543
  destination: true
2370
2544
  }
2371
2545
  },
2546
+ cctpx: {
2547
+ serviceAddress: CCTPX_SERVICE_ADDRESS_EVM_MAINNET
2548
+ },
2372
2549
  kitContracts: {
2373
2550
  bridge: BRIDGE_CONTRACT_EVM_MAINNET,
2374
2551
  adapter: ADAPTER_CONTRACT_EVM_MAINNET
@@ -2434,6 +2611,9 @@ var EarnChain;
2434
2611
  destination: true
2435
2612
  }
2436
2613
  },
2614
+ cctpx: {
2615
+ serviceAddress: CCTPX_SERVICE_ADDRESS_EVM_TESTNET
2616
+ },
2437
2617
  kitContracts: {
2438
2618
  bridge: BRIDGE_CONTRACT_EVM_TESTNET
2439
2619
  },
@@ -2483,6 +2663,7 @@ var EarnChain;
2483
2663
  v2: {
2484
2664
  type: 'split',
2485
2665
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
2666
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_MAINNET,
2486
2667
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
2487
2668
  confirmations: 1,
2488
2669
  fastConfirmations: 1
@@ -2529,6 +2710,7 @@ var EarnChain;
2529
2710
  v2: {
2530
2711
  type: 'split',
2531
2712
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
2713
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_TESTNET,
2532
2714
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
2533
2715
  confirmations: 1,
2534
2716
  fastConfirmations: 1
@@ -2827,6 +3009,9 @@ var EarnChain;
2827
3009
  destination: true
2828
3010
  }
2829
3011
  },
3012
+ cctpx: {
3013
+ serviceAddress: CCTPX_SERVICE_ADDRESS_EVM_MAINNET
3014
+ },
2830
3015
  kitContracts: {
2831
3016
  bridge: BRIDGE_CONTRACT_EVM_MAINNET,
2832
3017
  adapter: ADAPTER_CONTRACT_EVM_MAINNET
@@ -2836,7 +3021,9 @@ var EarnChain;
2836
3021
  contracts: {
2837
3022
  v1: {
2838
3023
  wallet: GATEWAY_WALLET_EVM_MAINNET,
2839
- minter: GATEWAY_MINTER_EVM_MAINNET
3024
+ minter: GATEWAY_MINTER_EVM_MAINNET,
3025
+ depositForHandler: DEPOSIT_FOR_HANDLER_EVM_MAINNET,
3026
+ genericExecutor: GENERIC_EXECUTOR_EVM_MAINNET
2840
3027
  }
2841
3028
  },
2842
3029
  forwarderSupported: {
@@ -2893,6 +3080,9 @@ var EarnChain;
2893
3080
  destination: true
2894
3081
  }
2895
3082
  },
3083
+ cctpx: {
3084
+ serviceAddress: CCTPX_SERVICE_ADDRESS_EVM_TESTNET
3085
+ },
2896
3086
  kitContracts: {
2897
3087
  bridge: BRIDGE_CONTRACT_EVM_TESTNET
2898
3088
  },
@@ -2901,7 +3091,9 @@ var EarnChain;
2901
3091
  contracts: {
2902
3092
  v1: {
2903
3093
  wallet: GATEWAY_WALLET_EVM_TESTNET,
2904
- minter: GATEWAY_MINTER_EVM_TESTNET
3094
+ minter: GATEWAY_MINTER_EVM_TESTNET,
3095
+ depositForHandler: DEPOSIT_FOR_HANDLER_EVM_TESTNET,
3096
+ genericExecutor: GENERIC_EXECUTOR_EVM_TESTNET
2905
3097
  }
2906
3098
  },
2907
3099
  forwarderSupported: {
@@ -3891,6 +4083,67 @@ var EarnChain;
3891
4083
  cctp: null
3892
4084
  });
3893
4085
 
4086
+ /**
4087
+ * Chains the Fee Service accepts as a SOURCE for source-paid ("receive-exact")
4088
+ * CCTP v2 fees. An explicit allowlist is required because the
4089
+ * `TokenMessengerWithFees` wrapper address is now shared with the fast-deposit
4090
+ * forwarder path, so wrapper presence no longer implies source-fee support.
4091
+ * Keep in sync with backend coverage.
4092
+ */ new Set([
4093
+ // Mainnet
4094
+ Blockchain.Ethereum,
4095
+ Blockchain.Base,
4096
+ Blockchain.Arbitrum,
4097
+ Blockchain.Unichain,
4098
+ Blockchain.Optimism,
4099
+ Blockchain.Codex,
4100
+ Blockchain.Ink,
4101
+ Blockchain.Plume,
4102
+ Blockchain.Linea,
4103
+ Blockchain.World_Chain,
4104
+ // Testnet counterparts
4105
+ Blockchain.Ethereum_Sepolia,
4106
+ Blockchain.Base_Sepolia,
4107
+ Blockchain.Arbitrum_Sepolia,
4108
+ Blockchain.Unichain_Sepolia,
4109
+ Blockchain.Optimism_Sepolia,
4110
+ Blockchain.Codex_Testnet,
4111
+ Blockchain.Ink_Testnet,
4112
+ Blockchain.Plume_Testnet,
4113
+ Blockchain.Linea_Sepolia,
4114
+ Blockchain.World_Chain_Sepolia
4115
+ ]);
4116
+
4117
+ /**
4118
+ * Temporary allowlist of chains permitted to initiate Gateway fast deposits.
4119
+ * Only chains keyed here are eligible; all others are rejected. Using the
4120
+ * {@link Blockchain} enum keeps entries type-safe and catches typos at compile
4121
+ * time. Remove this allowlist once roll-out is complete.
4122
+ */ new Set([
4123
+ // Mainnet
4124
+ Blockchain.Ethereum,
4125
+ Blockchain.Base,
4126
+ Blockchain.Arbitrum,
4127
+ Blockchain.Unichain,
4128
+ Blockchain.Optimism,
4129
+ Blockchain.Codex,
4130
+ Blockchain.Ink,
4131
+ Blockchain.Plume,
4132
+ Blockchain.Linea,
4133
+ Blockchain.World_Chain,
4134
+ // Testnet counterparts
4135
+ Blockchain.Ethereum_Sepolia,
4136
+ Blockchain.Base_Sepolia,
4137
+ Blockchain.Arbitrum_Sepolia,
4138
+ Blockchain.Unichain_Sepolia,
4139
+ Blockchain.Optimism_Sepolia,
4140
+ Blockchain.Codex_Testnet,
4141
+ Blockchain.Ink_Testnet,
4142
+ Blockchain.Plume_Testnet,
4143
+ Blockchain.Linea_Sepolia,
4144
+ Blockchain.World_Chain_Sepolia
4145
+ ]);
4146
+
3894
4147
  /**
3895
4148
  * Zod schema for validating Gateway v1 contract addresses.
3896
4149
  *
@@ -3912,7 +4165,10 @@ var EarnChain;
3912
4165
  }).min(1, 'Gateway minter address cannot be empty.'),
3913
4166
  depositForHandler: zod.z.string({
3914
4167
  invalid_type_error: 'Gateway depositForHandler address must be a string.'
3915
- }).min(1, 'Gateway depositForHandler address cannot be empty.').optional()
4168
+ }).min(1, 'Gateway depositForHandler address cannot be empty.').optional(),
4169
+ genericExecutor: zod.z.string({
4170
+ invalid_type_error: 'Gateway genericExecutor address must be a string.'
4171
+ }).min(1, 'Gateway genericExecutor address cannot be empty.').optional()
3916
4172
  }).strict() // Reject any additional properties not defined in the schema
3917
4173
  ;
3918
4174
  /**
@@ -3996,6 +4252,7 @@ var EarnChain;
3996
4252
  usdcAddress: zod.z.string().nullable(),
3997
4253
  usdtAddress: zod.z.string().nullable(),
3998
4254
  cctp: zod.z.any().nullable(),
4255
+ cctpx: zod.z.any().optional(),
3999
4256
  kitContracts: zod.z.object({
4000
4257
  bridge: zod.z.string().optional(),
4001
4258
  adapter: zod.z.string().optional()
@@ -4201,14 +4458,15 @@ const EARN_BRIDGE_DESTINATION_CHAIN_VALUES = EARN_BRIDGE_DESTINATION_BLOCKCHAINS
4201
4458
  * Zod schema for validating the source chain of a cross-chain Earn deposit.
4202
4459
  *
4203
4460
  * Accept a supported source Blockchain value, a matching string literal, or a
4204
- * ChainDefinition for a supported source chain. Source chains are Ethereum
4205
- * Sepolia, Arbitrum Sepolia, and Base Sepolia.
4461
+ * ChainDefinition for a supported source chain. Source chains are Ethereum,
4462
+ * Arbitrum, and Base (mainnet and testnet).
4206
4463
  *
4207
4464
  * @example
4208
4465
  * ```typescript
4209
4466
  * import { earnBridgeSourceChainIdentifierSchema } from '@core/chains'
4210
4467
  *
4211
4468
  * // Valid
4469
+ * earnBridgeSourceChainIdentifierSchema.parse('Ethereum')
4212
4470
  * earnBridgeSourceChainIdentifierSchema.parse('Ethereum_Sepolia')
4213
4471
  *
4214
4472
  * // Invalid (throws ZodError)
@@ -4227,14 +4485,15 @@ const EARN_BRIDGE_DESTINATION_CHAIN_VALUES = EARN_BRIDGE_DESTINATION_BLOCKCHAINS
4227
4485
  * deposit.
4228
4486
  *
4229
4487
  * Accept a supported destination Blockchain value, a matching string literal,
4230
- * or a ChainDefinition for a supported destination chain. Currently only Arc
4231
- * Testnet is supported.
4488
+ * or a ChainDefinition for a supported destination chain. Arc (mainnet) and
4489
+ * Arc Testnet are supported.
4232
4490
  *
4233
4491
  * @example
4234
4492
  * ```typescript
4235
4493
  * import { earnBridgeDestinationChainIdentifierSchema } from '@core/chains'
4236
4494
  *
4237
4495
  * // Valid
4496
+ * earnBridgeDestinationChainIdentifierSchema.parse('Arc')
4238
4497
  * earnBridgeDestinationChainIdentifierSchema.parse('Arc_Testnet')
4239
4498
  *
4240
4499
  * // Invalid (throws ZodError)
@@ -4308,6 +4567,7 @@ const swapTokenEnumSchema = zod.z.enum([
4308
4567
 
4309
4568
  exports.Arbitrum = Arbitrum;
4310
4569
  exports.ArbitrumSepolia = ArbitrumSepolia;
4570
+ exports.Arc = Arc;
4311
4571
  exports.ArcTestnet = ArcTestnet;
4312
4572
  exports.Avalanche = Avalanche;
4313
4573
  exports.AvalancheFuji = AvalancheFuji;