@circle-fin/app-kit 1.13.0 → 1.14.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.
package/chains.cjs CHANGED
@@ -647,8 +647,45 @@ var EarnChain;
647
647
  * This program handles minting operations for Gateway transactions
648
648
  * on Solana devnet.
649
649
  */ 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';
650
+ /**
651
+ * The `TokenMessengerWithFees` proxy contract address for EVM mainnet networks
652
+ * (all chains except Edge).
653
+ *
654
+ * Deployed at a CREATE3-derived address; identical across all mainnet EVM
655
+ * source chains. Present on any chain that supports the prepaid FORWARD path
656
+ * via `depositForBurnWithHookAndFees`.
657
+ */ const TOKEN_MESSENGER_WITH_FEES_EVM_MAINNET = '0x71f54F818671cD0D7ea140Da213e5C8b5C92a408';
658
+ /**
659
+ * The `TokenMessengerWithFees` proxy contract address for EVM testnet networks.
660
+ *
661
+ * Identical across all testnet EVM source chains. Present on any testnet chain
662
+ * that supports the prepaid FORWARD path via `depositForBurnWithHookAndFees`.
663
+ */ const TOKEN_MESSENGER_WITH_FEES_EVM_TESTNET = '0x8745D906D67C346E5eb1aEEED38Eb87F34DF0C0A';
664
+ /**
665
+ * The `DepositForHandler` proxy contract address for EVM mainnet networks.
666
+ *
667
+ * The handler the GenericExecutor calls on a fast-deposit destination chain to
668
+ * run a cross-chain deposit into the GatewayWallet. Deployed at the same
669
+ * address across all mainnet EVM destination chains.
670
+ */ const DEPOSIT_FOR_HANDLER_EVM_MAINNET = '0x16529813203f77E036576666336554a1210dce4D';
671
+ /**
672
+ * The `DepositForHandler` proxy contract address for EVM testnet networks.
673
+ *
674
+ * Identical across all testnet EVM destination chains.
675
+ */ const DEPOSIT_FOR_HANDLER_EVM_TESTNET = '0xD05E7D2E7d30b92c5F17d7d0fC575fce231F1A48';
676
+ /**
677
+ * The `GenericExecutor` proxy contract address for EVM mainnet networks.
678
+ *
679
+ * The GenericExecutor is the `mintRecipient` and `destinationCaller` on the
680
+ * destination chain for the CCTP v2 prepaid FORWARD path. It receives the CCTP
681
+ * mint and calls the `DepositForHandler` to complete the fast deposit.
682
+ * Deployed at the same address across all mainnet EVM destination chains.
683
+ */ const GENERIC_EXECUTOR_EVM_MAINNET = '0xFa7be2f04F3Ad4ca969260729c6d45B5625984A7';
684
+ /**
685
+ * The `GenericExecutor` proxy contract address for EVM testnet networks.
686
+ *
687
+ * Identical across all testnet EVM destination chains.
688
+ */ const GENERIC_EXECUTOR_EVM_TESTNET = '0xEdC81040756AcCfF070c21D37b265b9D0b5Ba45e';
652
689
 
653
690
  /**
654
691
  * Arc Testnet chain definition
@@ -707,9 +744,8 @@ var EarnChain;
707
744
  v1: {
708
745
  wallet: GATEWAY_WALLET_EVM_TESTNET,
709
746
  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'
747
+ depositForHandler: DEPOSIT_FOR_HANDLER_EVM_TESTNET,
748
+ genericExecutor: GENERIC_EXECUTOR_EVM_TESTNET
713
749
  }
714
750
  },
715
751
  forwarderSupported: {
@@ -904,7 +940,9 @@ var EarnChain;
904
940
  contracts: {
905
941
  v1: {
906
942
  wallet: GATEWAY_WALLET_EVM_MAINNET,
907
- minter: GATEWAY_MINTER_EVM_MAINNET
943
+ minter: GATEWAY_MINTER_EVM_MAINNET,
944
+ depositForHandler: DEPOSIT_FOR_HANDLER_EVM_MAINNET,
945
+ genericExecutor: GENERIC_EXECUTOR_EVM_MAINNET
908
946
  }
909
947
  },
910
948
  forwarderSupported: {
@@ -968,7 +1006,9 @@ var EarnChain;
968
1006
  contracts: {
969
1007
  v1: {
970
1008
  wallet: GATEWAY_WALLET_EVM_TESTNET,
971
- minter: GATEWAY_MINTER_EVM_TESTNET
1009
+ minter: GATEWAY_MINTER_EVM_TESTNET,
1010
+ depositForHandler: DEPOSIT_FOR_HANDLER_EVM_TESTNET,
1011
+ genericExecutor: GENERIC_EXECUTOR_EVM_TESTNET
972
1012
  }
973
1013
  },
974
1014
  forwarderSupported: {
@@ -1281,6 +1321,7 @@ var EarnChain;
1281
1321
  v2: {
1282
1322
  type: 'split',
1283
1323
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
1324
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_MAINNET,
1284
1325
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
1285
1326
  confirmations: 1,
1286
1327
  fastConfirmations: 1
@@ -1326,6 +1367,7 @@ var EarnChain;
1326
1367
  v2: {
1327
1368
  type: 'split',
1328
1369
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
1370
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_TESTNET,
1329
1371
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
1330
1372
  confirmations: 1,
1331
1373
  fastConfirmations: 1
@@ -1371,6 +1413,7 @@ var EarnChain;
1371
1413
  v2: {
1372
1414
  type: 'split',
1373
1415
  tokenMessenger: '0x98706A006bc632Df31CAdFCBD43F38887ce2ca5c',
1416
+ tokenMessengerWithFees: '0x3Ac96675F9a3E6922713e041645D82f3561d3686',
1374
1417
  messageTransmitter: '0x5b61381Fc9e58E70EfC13a4A97516997019198ee',
1375
1418
  confirmations: 65,
1376
1419
  fastConfirmations: 1
@@ -1416,6 +1459,7 @@ var EarnChain;
1416
1459
  v2: {
1417
1460
  type: 'split',
1418
1461
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
1462
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_TESTNET,
1419
1463
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
1420
1464
  confirmations: 65,
1421
1465
  fastConfirmations: 1
@@ -1764,6 +1808,7 @@ var EarnChain;
1764
1808
  v2: {
1765
1809
  type: 'split',
1766
1810
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
1811
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_MAINNET,
1767
1812
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
1768
1813
  confirmations: 1,
1769
1814
  fastConfirmations: 1
@@ -1811,6 +1856,7 @@ var EarnChain;
1811
1856
  v2: {
1812
1857
  type: 'split',
1813
1858
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
1859
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_TESTNET,
1814
1860
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
1815
1861
  confirmations: 1,
1816
1862
  fastConfirmations: 1
@@ -2092,6 +2138,7 @@ var EarnChain;
2092
2138
  v2: {
2093
2139
  type: 'split',
2094
2140
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
2141
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_TESTNET,
2095
2142
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
2096
2143
  confirmations: 1,
2097
2144
  fastConfirmations: 1
@@ -2137,6 +2184,7 @@ var EarnChain;
2137
2184
  v2: {
2138
2185
  type: 'split',
2139
2186
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
2187
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_MAINNET,
2140
2188
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
2141
2189
  confirmations: 64,
2142
2190
  fastConfirmations: 1
@@ -2182,6 +2230,7 @@ var EarnChain;
2182
2230
  v2: {
2183
2231
  type: 'split',
2184
2232
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
2233
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_TESTNET,
2185
2234
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
2186
2235
  confirmations: 64,
2187
2236
  fastConfirmations: 1
@@ -2483,6 +2532,7 @@ var EarnChain;
2483
2532
  v2: {
2484
2533
  type: 'split',
2485
2534
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
2535
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_MAINNET,
2486
2536
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
2487
2537
  confirmations: 1,
2488
2538
  fastConfirmations: 1
@@ -2529,6 +2579,7 @@ var EarnChain;
2529
2579
  v2: {
2530
2580
  type: 'split',
2531
2581
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
2582
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_TESTNET,
2532
2583
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
2533
2584
  confirmations: 1,
2534
2585
  fastConfirmations: 1
@@ -2836,7 +2887,9 @@ var EarnChain;
2836
2887
  contracts: {
2837
2888
  v1: {
2838
2889
  wallet: GATEWAY_WALLET_EVM_MAINNET,
2839
- minter: GATEWAY_MINTER_EVM_MAINNET
2890
+ minter: GATEWAY_MINTER_EVM_MAINNET,
2891
+ depositForHandler: DEPOSIT_FOR_HANDLER_EVM_MAINNET,
2892
+ genericExecutor: GENERIC_EXECUTOR_EVM_MAINNET
2840
2893
  }
2841
2894
  },
2842
2895
  forwarderSupported: {
@@ -2901,7 +2954,9 @@ var EarnChain;
2901
2954
  contracts: {
2902
2955
  v1: {
2903
2956
  wallet: GATEWAY_WALLET_EVM_TESTNET,
2904
- minter: GATEWAY_MINTER_EVM_TESTNET
2957
+ minter: GATEWAY_MINTER_EVM_TESTNET,
2958
+ depositForHandler: DEPOSIT_FOR_HANDLER_EVM_TESTNET,
2959
+ genericExecutor: GENERIC_EXECUTOR_EVM_TESTNET
2905
2960
  }
2906
2961
  },
2907
2962
  forwarderSupported: {
@@ -3891,6 +3946,67 @@ var EarnChain;
3891
3946
  cctp: null
3892
3947
  });
3893
3948
 
3949
+ /**
3950
+ * Chains the Fee Service accepts as a SOURCE for source-paid ("receive-exact")
3951
+ * CCTP v2 fees. An explicit allowlist is required because the
3952
+ * `TokenMessengerWithFees` wrapper address is now shared with the fast-deposit
3953
+ * forwarder path, so wrapper presence no longer implies source-fee support.
3954
+ * Keep in sync with backend coverage.
3955
+ */ new Set([
3956
+ // Mainnet
3957
+ Blockchain.Ethereum,
3958
+ Blockchain.Base,
3959
+ Blockchain.Arbitrum,
3960
+ Blockchain.Unichain,
3961
+ Blockchain.Optimism,
3962
+ Blockchain.Codex,
3963
+ Blockchain.Ink,
3964
+ Blockchain.Plume,
3965
+ Blockchain.Linea,
3966
+ Blockchain.World_Chain,
3967
+ // Testnet counterparts
3968
+ Blockchain.Ethereum_Sepolia,
3969
+ Blockchain.Base_Sepolia,
3970
+ Blockchain.Arbitrum_Sepolia,
3971
+ Blockchain.Unichain_Sepolia,
3972
+ Blockchain.Optimism_Sepolia,
3973
+ Blockchain.Codex_Testnet,
3974
+ Blockchain.Ink_Testnet,
3975
+ Blockchain.Plume_Testnet,
3976
+ Blockchain.Linea_Sepolia,
3977
+ Blockchain.World_Chain_Sepolia
3978
+ ]);
3979
+
3980
+ /**
3981
+ * Temporary allowlist of chains permitted to initiate Gateway fast deposits.
3982
+ * Only chains keyed here are eligible; all others are rejected. Using the
3983
+ * {@link Blockchain} enum keeps entries type-safe and catches typos at compile
3984
+ * time. Remove this allowlist once roll-out is complete.
3985
+ */ new Set([
3986
+ // Mainnet
3987
+ Blockchain.Ethereum,
3988
+ Blockchain.Base,
3989
+ Blockchain.Arbitrum,
3990
+ Blockchain.Unichain,
3991
+ Blockchain.Optimism,
3992
+ Blockchain.Codex,
3993
+ Blockchain.Ink,
3994
+ Blockchain.Plume,
3995
+ Blockchain.Linea,
3996
+ Blockchain.World_Chain,
3997
+ // Testnet counterparts
3998
+ Blockchain.Ethereum_Sepolia,
3999
+ Blockchain.Base_Sepolia,
4000
+ Blockchain.Arbitrum_Sepolia,
4001
+ Blockchain.Unichain_Sepolia,
4002
+ Blockchain.Optimism_Sepolia,
4003
+ Blockchain.Codex_Testnet,
4004
+ Blockchain.Ink_Testnet,
4005
+ Blockchain.Plume_Testnet,
4006
+ Blockchain.Linea_Sepolia,
4007
+ Blockchain.World_Chain_Sepolia
4008
+ ]);
4009
+
3894
4010
  /**
3895
4011
  * Zod schema for validating Gateway v1 contract addresses.
3896
4012
  *
@@ -3912,7 +4028,10 @@ var EarnChain;
3912
4028
  }).min(1, 'Gateway minter address cannot be empty.'),
3913
4029
  depositForHandler: zod.z.string({
3914
4030
  invalid_type_error: 'Gateway depositForHandler address must be a string.'
3915
- }).min(1, 'Gateway depositForHandler address cannot be empty.').optional()
4031
+ }).min(1, 'Gateway depositForHandler address cannot be empty.').optional(),
4032
+ genericExecutor: zod.z.string({
4033
+ invalid_type_error: 'Gateway genericExecutor address must be a string.'
4034
+ }).min(1, 'Gateway genericExecutor address cannot be empty.').optional()
3916
4035
  }).strict() // Reject any additional properties not defined in the schema
3917
4036
  ;
3918
4037
  /**
package/chains.d.cts CHANGED
@@ -156,6 +156,7 @@ declare const ArcTestnet: {
156
156
  readonly wallet: "0x0077777d7EBA4688BDeF3E311b846F25870A19B9";
157
157
  readonly minter: "0x0022222ABE238Cc2C7Bb1f21003F0a260052475B";
158
158
  readonly depositForHandler: "0xD05E7D2E7d30b92c5F17d7d0fC575fce231F1A48";
159
+ readonly genericExecutor: "0xEdC81040756AcCfF070c21D37b265b9D0b5Ba45e";
159
160
  };
160
161
  };
161
162
  readonly forwarderSupported: {
@@ -348,6 +349,8 @@ declare const Avalanche: {
348
349
  readonly v1: {
349
350
  readonly wallet: "0x77777777Dcc4d5A8B6E418Fd04D8997ef11000eE";
350
351
  readonly minter: "0x2222222d7164433c4C09B0b0D809a9b52C04C205";
352
+ readonly depositForHandler: "0x16529813203f77E036576666336554a1210dce4D";
353
+ readonly genericExecutor: "0xFa7be2f04F3Ad4ca969260729c6d45B5625984A7";
351
354
  };
352
355
  };
353
356
  readonly forwarderSupported: {
@@ -411,6 +414,8 @@ declare const AvalancheFuji: {
411
414
  readonly v1: {
412
415
  readonly wallet: "0x0077777d7EBA4688BDeF3E311b846F25870A19B9";
413
416
  readonly minter: "0x0022222ABE238Cc2C7Bb1f21003F0a260052475B";
417
+ readonly depositForHandler: "0xD05E7D2E7d30b92c5F17d7d0fC575fce231F1A48";
418
+ readonly genericExecutor: "0xEdC81040756AcCfF070c21D37b265b9D0b5Ba45e";
414
419
  };
415
420
  };
416
421
  readonly forwarderSupported: {
@@ -1427,6 +1432,8 @@ declare const Polygon: {
1427
1432
  readonly v1: {
1428
1433
  readonly wallet: "0x77777777Dcc4d5A8B6E418Fd04D8997ef11000eE";
1429
1434
  readonly minter: "0x2222222d7164433c4C09B0b0D809a9b52C04C205";
1435
+ readonly depositForHandler: "0x16529813203f77E036576666336554a1210dce4D";
1436
+ readonly genericExecutor: "0xFa7be2f04F3Ad4ca969260729c6d45B5625984A7";
1430
1437
  };
1431
1438
  };
1432
1439
  readonly forwarderSupported: {
@@ -1490,6 +1497,8 @@ declare const PolygonAmoy: {
1490
1497
  readonly v1: {
1491
1498
  readonly wallet: "0x0077777d7EBA4688BDeF3E311b846F25870A19B9";
1492
1499
  readonly minter: "0x0022222ABE238Cc2C7Bb1f21003F0a260052475B";
1500
+ readonly depositForHandler: "0xD05E7D2E7d30b92c5F17d7d0fC575fce231F1A48";
1501
+ readonly genericExecutor: "0xEdC81040756AcCfF070c21D37b265b9D0b5Ba45e";
1493
1502
  };
1494
1503
  };
1495
1504
  readonly forwarderSupported: {
package/chains.d.mts CHANGED
@@ -156,6 +156,7 @@ declare const ArcTestnet: {
156
156
  readonly wallet: "0x0077777d7EBA4688BDeF3E311b846F25870A19B9";
157
157
  readonly minter: "0x0022222ABE238Cc2C7Bb1f21003F0a260052475B";
158
158
  readonly depositForHandler: "0xD05E7D2E7d30b92c5F17d7d0fC575fce231F1A48";
159
+ readonly genericExecutor: "0xEdC81040756AcCfF070c21D37b265b9D0b5Ba45e";
159
160
  };
160
161
  };
161
162
  readonly forwarderSupported: {
@@ -348,6 +349,8 @@ declare const Avalanche: {
348
349
  readonly v1: {
349
350
  readonly wallet: "0x77777777Dcc4d5A8B6E418Fd04D8997ef11000eE";
350
351
  readonly minter: "0x2222222d7164433c4C09B0b0D809a9b52C04C205";
352
+ readonly depositForHandler: "0x16529813203f77E036576666336554a1210dce4D";
353
+ readonly genericExecutor: "0xFa7be2f04F3Ad4ca969260729c6d45B5625984A7";
351
354
  };
352
355
  };
353
356
  readonly forwarderSupported: {
@@ -411,6 +414,8 @@ declare const AvalancheFuji: {
411
414
  readonly v1: {
412
415
  readonly wallet: "0x0077777d7EBA4688BDeF3E311b846F25870A19B9";
413
416
  readonly minter: "0x0022222ABE238Cc2C7Bb1f21003F0a260052475B";
417
+ readonly depositForHandler: "0xD05E7D2E7d30b92c5F17d7d0fC575fce231F1A48";
418
+ readonly genericExecutor: "0xEdC81040756AcCfF070c21D37b265b9D0b5Ba45e";
414
419
  };
415
420
  };
416
421
  readonly forwarderSupported: {
@@ -1427,6 +1432,8 @@ declare const Polygon: {
1427
1432
  readonly v1: {
1428
1433
  readonly wallet: "0x77777777Dcc4d5A8B6E418Fd04D8997ef11000eE";
1429
1434
  readonly minter: "0x2222222d7164433c4C09B0b0D809a9b52C04C205";
1435
+ readonly depositForHandler: "0x16529813203f77E036576666336554a1210dce4D";
1436
+ readonly genericExecutor: "0xFa7be2f04F3Ad4ca969260729c6d45B5625984A7";
1430
1437
  };
1431
1438
  };
1432
1439
  readonly forwarderSupported: {
@@ -1490,6 +1497,8 @@ declare const PolygonAmoy: {
1490
1497
  readonly v1: {
1491
1498
  readonly wallet: "0x0077777d7EBA4688BDeF3E311b846F25870A19B9";
1492
1499
  readonly minter: "0x0022222ABE238Cc2C7Bb1f21003F0a260052475B";
1500
+ readonly depositForHandler: "0xD05E7D2E7d30b92c5F17d7d0fC575fce231F1A48";
1501
+ readonly genericExecutor: "0xEdC81040756AcCfF070c21D37b265b9D0b5Ba45e";
1493
1502
  };
1494
1503
  };
1495
1504
  readonly forwarderSupported: {
package/chains.d.ts CHANGED
@@ -156,6 +156,7 @@ declare const ArcTestnet: {
156
156
  readonly wallet: "0x0077777d7EBA4688BDeF3E311b846F25870A19B9";
157
157
  readonly minter: "0x0022222ABE238Cc2C7Bb1f21003F0a260052475B";
158
158
  readonly depositForHandler: "0xD05E7D2E7d30b92c5F17d7d0fC575fce231F1A48";
159
+ readonly genericExecutor: "0xEdC81040756AcCfF070c21D37b265b9D0b5Ba45e";
159
160
  };
160
161
  };
161
162
  readonly forwarderSupported: {
@@ -348,6 +349,8 @@ declare const Avalanche: {
348
349
  readonly v1: {
349
350
  readonly wallet: "0x77777777Dcc4d5A8B6E418Fd04D8997ef11000eE";
350
351
  readonly minter: "0x2222222d7164433c4C09B0b0D809a9b52C04C205";
352
+ readonly depositForHandler: "0x16529813203f77E036576666336554a1210dce4D";
353
+ readonly genericExecutor: "0xFa7be2f04F3Ad4ca969260729c6d45B5625984A7";
351
354
  };
352
355
  };
353
356
  readonly forwarderSupported: {
@@ -411,6 +414,8 @@ declare const AvalancheFuji: {
411
414
  readonly v1: {
412
415
  readonly wallet: "0x0077777d7EBA4688BDeF3E311b846F25870A19B9";
413
416
  readonly minter: "0x0022222ABE238Cc2C7Bb1f21003F0a260052475B";
417
+ readonly depositForHandler: "0xD05E7D2E7d30b92c5F17d7d0fC575fce231F1A48";
418
+ readonly genericExecutor: "0xEdC81040756AcCfF070c21D37b265b9D0b5Ba45e";
414
419
  };
415
420
  };
416
421
  readonly forwarderSupported: {
@@ -1427,6 +1432,8 @@ declare const Polygon: {
1427
1432
  readonly v1: {
1428
1433
  readonly wallet: "0x77777777Dcc4d5A8B6E418Fd04D8997ef11000eE";
1429
1434
  readonly minter: "0x2222222d7164433c4C09B0b0D809a9b52C04C205";
1435
+ readonly depositForHandler: "0x16529813203f77E036576666336554a1210dce4D";
1436
+ readonly genericExecutor: "0xFa7be2f04F3Ad4ca969260729c6d45B5625984A7";
1430
1437
  };
1431
1438
  };
1432
1439
  readonly forwarderSupported: {
@@ -1490,6 +1497,8 @@ declare const PolygonAmoy: {
1490
1497
  readonly v1: {
1491
1498
  readonly wallet: "0x0077777d7EBA4688BDeF3E311b846F25870A19B9";
1492
1499
  readonly minter: "0x0022222ABE238Cc2C7Bb1f21003F0a260052475B";
1500
+ readonly depositForHandler: "0xD05E7D2E7d30b92c5F17d7d0fC575fce231F1A48";
1501
+ readonly genericExecutor: "0xEdC81040756AcCfF070c21D37b265b9D0b5Ba45e";
1493
1502
  };
1494
1503
  };
1495
1504
  readonly forwarderSupported: {
package/chains.mjs CHANGED
@@ -645,8 +645,45 @@ var EarnChain;
645
645
  * This program handles minting operations for Gateway transactions
646
646
  * on Solana devnet.
647
647
  */ 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';
648
+ /**
649
+ * The `TokenMessengerWithFees` proxy contract address for EVM mainnet networks
650
+ * (all chains except Edge).
651
+ *
652
+ * Deployed at a CREATE3-derived address; identical across all mainnet EVM
653
+ * source chains. Present on any chain that supports the prepaid FORWARD path
654
+ * via `depositForBurnWithHookAndFees`.
655
+ */ const TOKEN_MESSENGER_WITH_FEES_EVM_MAINNET = '0x71f54F818671cD0D7ea140Da213e5C8b5C92a408';
656
+ /**
657
+ * The `TokenMessengerWithFees` proxy contract address for EVM testnet networks.
658
+ *
659
+ * Identical across all testnet EVM source chains. Present on any testnet chain
660
+ * that supports the prepaid FORWARD path via `depositForBurnWithHookAndFees`.
661
+ */ const TOKEN_MESSENGER_WITH_FEES_EVM_TESTNET = '0x8745D906D67C346E5eb1aEEED38Eb87F34DF0C0A';
662
+ /**
663
+ * The `DepositForHandler` proxy contract address for EVM mainnet networks.
664
+ *
665
+ * The handler the GenericExecutor calls on a fast-deposit destination chain to
666
+ * run a cross-chain deposit into the GatewayWallet. Deployed at the same
667
+ * address across all mainnet EVM destination chains.
668
+ */ const DEPOSIT_FOR_HANDLER_EVM_MAINNET = '0x16529813203f77E036576666336554a1210dce4D';
669
+ /**
670
+ * The `DepositForHandler` proxy contract address for EVM testnet networks.
671
+ *
672
+ * Identical across all testnet EVM destination chains.
673
+ */ const DEPOSIT_FOR_HANDLER_EVM_TESTNET = '0xD05E7D2E7d30b92c5F17d7d0fC575fce231F1A48';
674
+ /**
675
+ * The `GenericExecutor` proxy contract address for EVM mainnet networks.
676
+ *
677
+ * The GenericExecutor is the `mintRecipient` and `destinationCaller` on the
678
+ * destination chain for the CCTP v2 prepaid FORWARD path. It receives the CCTP
679
+ * mint and calls the `DepositForHandler` to complete the fast deposit.
680
+ * Deployed at the same address across all mainnet EVM destination chains.
681
+ */ const GENERIC_EXECUTOR_EVM_MAINNET = '0xFa7be2f04F3Ad4ca969260729c6d45B5625984A7';
682
+ /**
683
+ * The `GenericExecutor` proxy contract address for EVM testnet networks.
684
+ *
685
+ * Identical across all testnet EVM destination chains.
686
+ */ const GENERIC_EXECUTOR_EVM_TESTNET = '0xEdC81040756AcCfF070c21D37b265b9D0b5Ba45e';
650
687
 
651
688
  /**
652
689
  * Arc Testnet chain definition
@@ -705,9 +742,8 @@ var EarnChain;
705
742
  v1: {
706
743
  wallet: GATEWAY_WALLET_EVM_TESTNET,
707
744
  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'
745
+ depositForHandler: DEPOSIT_FOR_HANDLER_EVM_TESTNET,
746
+ genericExecutor: GENERIC_EXECUTOR_EVM_TESTNET
711
747
  }
712
748
  },
713
749
  forwarderSupported: {
@@ -902,7 +938,9 @@ var EarnChain;
902
938
  contracts: {
903
939
  v1: {
904
940
  wallet: GATEWAY_WALLET_EVM_MAINNET,
905
- minter: GATEWAY_MINTER_EVM_MAINNET
941
+ minter: GATEWAY_MINTER_EVM_MAINNET,
942
+ depositForHandler: DEPOSIT_FOR_HANDLER_EVM_MAINNET,
943
+ genericExecutor: GENERIC_EXECUTOR_EVM_MAINNET
906
944
  }
907
945
  },
908
946
  forwarderSupported: {
@@ -966,7 +1004,9 @@ var EarnChain;
966
1004
  contracts: {
967
1005
  v1: {
968
1006
  wallet: GATEWAY_WALLET_EVM_TESTNET,
969
- minter: GATEWAY_MINTER_EVM_TESTNET
1007
+ minter: GATEWAY_MINTER_EVM_TESTNET,
1008
+ depositForHandler: DEPOSIT_FOR_HANDLER_EVM_TESTNET,
1009
+ genericExecutor: GENERIC_EXECUTOR_EVM_TESTNET
970
1010
  }
971
1011
  },
972
1012
  forwarderSupported: {
@@ -1279,6 +1319,7 @@ var EarnChain;
1279
1319
  v2: {
1280
1320
  type: 'split',
1281
1321
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
1322
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_MAINNET,
1282
1323
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
1283
1324
  confirmations: 1,
1284
1325
  fastConfirmations: 1
@@ -1324,6 +1365,7 @@ var EarnChain;
1324
1365
  v2: {
1325
1366
  type: 'split',
1326
1367
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
1368
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_TESTNET,
1327
1369
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
1328
1370
  confirmations: 1,
1329
1371
  fastConfirmations: 1
@@ -1369,6 +1411,7 @@ var EarnChain;
1369
1411
  v2: {
1370
1412
  type: 'split',
1371
1413
  tokenMessenger: '0x98706A006bc632Df31CAdFCBD43F38887ce2ca5c',
1414
+ tokenMessengerWithFees: '0x3Ac96675F9a3E6922713e041645D82f3561d3686',
1372
1415
  messageTransmitter: '0x5b61381Fc9e58E70EfC13a4A97516997019198ee',
1373
1416
  confirmations: 65,
1374
1417
  fastConfirmations: 1
@@ -1414,6 +1457,7 @@ var EarnChain;
1414
1457
  v2: {
1415
1458
  type: 'split',
1416
1459
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
1460
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_TESTNET,
1417
1461
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
1418
1462
  confirmations: 65,
1419
1463
  fastConfirmations: 1
@@ -1762,6 +1806,7 @@ var EarnChain;
1762
1806
  v2: {
1763
1807
  type: 'split',
1764
1808
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
1809
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_MAINNET,
1765
1810
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
1766
1811
  confirmations: 1,
1767
1812
  fastConfirmations: 1
@@ -1809,6 +1854,7 @@ var EarnChain;
1809
1854
  v2: {
1810
1855
  type: 'split',
1811
1856
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
1857
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_TESTNET,
1812
1858
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
1813
1859
  confirmations: 1,
1814
1860
  fastConfirmations: 1
@@ -2090,6 +2136,7 @@ var EarnChain;
2090
2136
  v2: {
2091
2137
  type: 'split',
2092
2138
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
2139
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_TESTNET,
2093
2140
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
2094
2141
  confirmations: 1,
2095
2142
  fastConfirmations: 1
@@ -2135,6 +2182,7 @@ var EarnChain;
2135
2182
  v2: {
2136
2183
  type: 'split',
2137
2184
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
2185
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_MAINNET,
2138
2186
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
2139
2187
  confirmations: 64,
2140
2188
  fastConfirmations: 1
@@ -2180,6 +2228,7 @@ var EarnChain;
2180
2228
  v2: {
2181
2229
  type: 'split',
2182
2230
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
2231
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_TESTNET,
2183
2232
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
2184
2233
  confirmations: 64,
2185
2234
  fastConfirmations: 1
@@ -2481,6 +2530,7 @@ var EarnChain;
2481
2530
  v2: {
2482
2531
  type: 'split',
2483
2532
  tokenMessenger: '0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d',
2533
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_MAINNET,
2484
2534
  messageTransmitter: '0x81D40F21F12A8F0E3252Bccb954D722d4c464B64',
2485
2535
  confirmations: 1,
2486
2536
  fastConfirmations: 1
@@ -2527,6 +2577,7 @@ var EarnChain;
2527
2577
  v2: {
2528
2578
  type: 'split',
2529
2579
  tokenMessenger: '0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA',
2580
+ tokenMessengerWithFees: TOKEN_MESSENGER_WITH_FEES_EVM_TESTNET,
2530
2581
  messageTransmitter: '0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275',
2531
2582
  confirmations: 1,
2532
2583
  fastConfirmations: 1
@@ -2834,7 +2885,9 @@ var EarnChain;
2834
2885
  contracts: {
2835
2886
  v1: {
2836
2887
  wallet: GATEWAY_WALLET_EVM_MAINNET,
2837
- minter: GATEWAY_MINTER_EVM_MAINNET
2888
+ minter: GATEWAY_MINTER_EVM_MAINNET,
2889
+ depositForHandler: DEPOSIT_FOR_HANDLER_EVM_MAINNET,
2890
+ genericExecutor: GENERIC_EXECUTOR_EVM_MAINNET
2838
2891
  }
2839
2892
  },
2840
2893
  forwarderSupported: {
@@ -2899,7 +2952,9 @@ var EarnChain;
2899
2952
  contracts: {
2900
2953
  v1: {
2901
2954
  wallet: GATEWAY_WALLET_EVM_TESTNET,
2902
- minter: GATEWAY_MINTER_EVM_TESTNET
2955
+ minter: GATEWAY_MINTER_EVM_TESTNET,
2956
+ depositForHandler: DEPOSIT_FOR_HANDLER_EVM_TESTNET,
2957
+ genericExecutor: GENERIC_EXECUTOR_EVM_TESTNET
2903
2958
  }
2904
2959
  },
2905
2960
  forwarderSupported: {
@@ -3889,6 +3944,67 @@ var EarnChain;
3889
3944
  cctp: null
3890
3945
  });
3891
3946
 
3947
+ /**
3948
+ * Chains the Fee Service accepts as a SOURCE for source-paid ("receive-exact")
3949
+ * CCTP v2 fees. An explicit allowlist is required because the
3950
+ * `TokenMessengerWithFees` wrapper address is now shared with the fast-deposit
3951
+ * forwarder path, so wrapper presence no longer implies source-fee support.
3952
+ * Keep in sync with backend coverage.
3953
+ */ new Set([
3954
+ // Mainnet
3955
+ Blockchain.Ethereum,
3956
+ Blockchain.Base,
3957
+ Blockchain.Arbitrum,
3958
+ Blockchain.Unichain,
3959
+ Blockchain.Optimism,
3960
+ Blockchain.Codex,
3961
+ Blockchain.Ink,
3962
+ Blockchain.Plume,
3963
+ Blockchain.Linea,
3964
+ Blockchain.World_Chain,
3965
+ // Testnet counterparts
3966
+ Blockchain.Ethereum_Sepolia,
3967
+ Blockchain.Base_Sepolia,
3968
+ Blockchain.Arbitrum_Sepolia,
3969
+ Blockchain.Unichain_Sepolia,
3970
+ Blockchain.Optimism_Sepolia,
3971
+ Blockchain.Codex_Testnet,
3972
+ Blockchain.Ink_Testnet,
3973
+ Blockchain.Plume_Testnet,
3974
+ Blockchain.Linea_Sepolia,
3975
+ Blockchain.World_Chain_Sepolia
3976
+ ]);
3977
+
3978
+ /**
3979
+ * Temporary allowlist of chains permitted to initiate Gateway fast deposits.
3980
+ * Only chains keyed here are eligible; all others are rejected. Using the
3981
+ * {@link Blockchain} enum keeps entries type-safe and catches typos at compile
3982
+ * time. Remove this allowlist once roll-out is complete.
3983
+ */ new Set([
3984
+ // Mainnet
3985
+ Blockchain.Ethereum,
3986
+ Blockchain.Base,
3987
+ Blockchain.Arbitrum,
3988
+ Blockchain.Unichain,
3989
+ Blockchain.Optimism,
3990
+ Blockchain.Codex,
3991
+ Blockchain.Ink,
3992
+ Blockchain.Plume,
3993
+ Blockchain.Linea,
3994
+ Blockchain.World_Chain,
3995
+ // Testnet counterparts
3996
+ Blockchain.Ethereum_Sepolia,
3997
+ Blockchain.Base_Sepolia,
3998
+ Blockchain.Arbitrum_Sepolia,
3999
+ Blockchain.Unichain_Sepolia,
4000
+ Blockchain.Optimism_Sepolia,
4001
+ Blockchain.Codex_Testnet,
4002
+ Blockchain.Ink_Testnet,
4003
+ Blockchain.Plume_Testnet,
4004
+ Blockchain.Linea_Sepolia,
4005
+ Blockchain.World_Chain_Sepolia
4006
+ ]);
4007
+
3892
4008
  /**
3893
4009
  * Zod schema for validating Gateway v1 contract addresses.
3894
4010
  *
@@ -3910,7 +4026,10 @@ var EarnChain;
3910
4026
  }).min(1, 'Gateway minter address cannot be empty.'),
3911
4027
  depositForHandler: z.string({
3912
4028
  invalid_type_error: 'Gateway depositForHandler address must be a string.'
3913
- }).min(1, 'Gateway depositForHandler address cannot be empty.').optional()
4029
+ }).min(1, 'Gateway depositForHandler address cannot be empty.').optional(),
4030
+ genericExecutor: z.string({
4031
+ invalid_type_error: 'Gateway genericExecutor address must be a string.'
4032
+ }).min(1, 'Gateway genericExecutor address cannot be empty.').optional()
3914
4033
  }).strict() // Reject any additional properties not defined in the schema
3915
4034
  ;
3916
4035
  /**