@wormhole-foundation/sdk-evm-ntt 5.0.2 → 6.0.0-beta.1

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.
@@ -4,6 +4,7 @@ import { Ntt, NttWithExecutor } from "@wormhole-foundation/sdk-definitions-ntt";
4
4
  import { type EvmPlatformType, type EvmChains } from "@wormhole-foundation/sdk-evm";
5
5
  import { Provider } from "ethers";
6
6
  import { EvmNtt } from "./ntt.js";
7
+ export declare const nttWithExecutorAbi: string[];
7
8
  export declare class EvmNttWithExecutor<N extends Network, C extends EvmChains> implements NttWithExecutor<N, C> {
8
9
  readonly network: N;
9
10
  readonly chain: C;
@@ -13,22 +14,19 @@ export declare class EvmNttWithExecutor<N extends Network, C extends EvmChains>
13
14
  };
14
15
  readonly chainId: bigint;
15
16
  readonly executorAddress: string;
16
- readonly supportsTransferETH: boolean;
17
17
  constructor(network: N, chain: C, provider: Provider, contracts: Contracts & {
18
18
  ntt?: Ntt.Contracts;
19
19
  });
20
20
  static fromRpc<N extends Network>(provider: Provider, config: ChainsConfig<N, EvmPlatformType>): Promise<EvmNttWithExecutor<N, EvmChains>>;
21
21
  transfer(sender: AccountAddress<C>, destination: ChainAddress, amount: bigint, quote: NttWithExecutor.Quote, ntt: EvmNtt<N, C>, wrapNative?: boolean): AsyncGenerator<UnsignedTransaction<N, C>>;
22
+ private approveIfNeeded;
22
23
  estimateMsgValueAndGasLimit(recipient: ChainAddress | undefined): Promise<{
23
24
  msgValue: bigint;
24
25
  gasLimit: bigint;
25
26
  }>;
26
27
  }
27
28
  /**
28
- * Check if an executor (NttWithExecutor) is deployed for a given network and chain combination
29
- * @param network - The network (e.g., 'Mainnet', 'Testnet')
30
- * @param chain - The EVM chain (e.g., 'Arbitrum', 'ArbitrumSepolia')
31
- * @returns true if an executor address exists for this network/chain combination
29
+ * Check if an executor (NttWithExecutor) is deployed for a given network and chain combination.
32
30
  */
33
31
  export declare function hasExecutorDeployed(network: Network, chain: EvmChains): boolean;
34
32
  //# sourceMappingURL=nttWithExecutor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"nttWithExecutor.d.ts","sourceRoot":"","sources":["../../src/nttWithExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,OAAO,EACb,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,SAAS,EACT,mBAAmB,EACpB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,SAAS,EAEf,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAa,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAqFlC,qBAAa,kBAAkB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,SAAS,CACpE,YAAW,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;IAO9B,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG;QAAE,GAAG,CAAC,EAAE,GAAG,CAAC,SAAS,CAAA;KAAE;IARzD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;gBAG3B,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,GAAG;QAAE,GAAG,CAAC,EAAE,GAAG,CAAC,SAAS,CAAA;KAAE;WAgB5C,OAAO,CAAC,CAAC,SAAS,OAAO,EACpC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,eAAe,CAAC,GACvC,OAAO,CAAC,kBAAkB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAcrC,QAAQ,CACb,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,WAAW,EAAE,YAAY,EACzB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,eAAe,CAAC,KAAK,EAC5B,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EACjB,UAAU,GAAE,OAAe,GAC1B,cAAc,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IA8GtC,2BAA2B,CAC/B,SAAS,EAAE,YAAY,GAAG,SAAS,GAClC,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAInD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,SAAS,GACf,OAAO,CAET"}
1
+ {"version":3,"file":"nttWithExecutor.d.ts","sourceRoot":"","sources":["../../src/nttWithExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,OAAO,EACb,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,SAAS,EACT,mBAAmB,EACpB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,SAAS,EAEf,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAa,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAsElC,eAAO,MAAM,kBAAkB,UAG9B,CAAC;AAEF,qBAAa,kBAAkB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,SAAS,CACpE,YAAW,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;IAM9B,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG;QAAE,GAAG,CAAC,EAAE,GAAG,CAAC,SAAS,CAAA;KAAE;IAPzD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;gBAGtB,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,GAAG;QAAE,GAAG,CAAC,EAAE,GAAG,CAAC,SAAS,CAAA;KAAE;WAc5C,OAAO,CAAC,CAAC,SAAS,OAAO,EACpC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,eAAe,CAAC,GACvC,OAAO,CAAC,kBAAkB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAcrC,QAAQ,CACb,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,WAAW,EAAE,YAAY,EACzB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,eAAe,CAAC,KAAK,EAC5B,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EACjB,UAAU,GAAE,OAAe,GAC1B,cAAc,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YA+D7B,eAAe;IAyBxB,2BAA2B,CAC/B,SAAS,EAAE,YAAY,GAAG,SAAS,GAClC,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAInD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,SAAS,GACf,OAAO,CAET"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EvmNttWithExecutor = void 0;
3
+ exports.EvmNttWithExecutor = exports.nttWithExecutorAbi = void 0;
4
4
  exports.hasExecutorDeployed = hasExecutorDeployed;
5
5
  const sdk_base_1 = require("@wormhole-foundation/sdk-base");
6
6
  const sdk_definitions_ntt_1 = require("@wormhole-foundation/sdk-definitions-ntt");
@@ -8,54 +8,48 @@ const sdk_evm_1 = require("@wormhole-foundation/sdk-evm");
8
8
  const ethers_1 = require("ethers");
9
9
  const nttManagerWithExecutorAddresses = {
10
10
  Mainnet: {
11
- Arbitrum: "0x0Af42A597b0C201D4dcf450DcD0c06d55ddC1C77",
12
- Avalanche: "0x4e9Af03fbf1aa2b79A2D4babD3e22e09f18Bb8EE",
13
- Base: "0x83216747fC21b86173D800E2960c0D5395de0F30",
14
- Berachain: "0x0a2AF374Cc9CCCbB0Acc4E34B20b9d02a0f08c30",
15
- Bsc: "0x39B57Dd9908F8be02CfeE283b67eA1303Bc29fe1",
16
- Celo: "0x3d69869fcB9e1CD1F4020b637fb8256030BAc8fC",
17
- Ethereum: "0xD2D9c936165a85F27a5a7e07aFb974D022B89463",
18
- HyperEVM: "0x431017B1718b86898C7590fFcCC380DEf0456393",
19
- Ink: "0x420370DC2ECC4D44b47514B7859fd11809BbeFF5",
20
- Linea: "0xEAa5AddB5b8939Eb73F7faF46e193EefECaF13E9",
21
- Mezo: "0x484b5593BbB90383f94FB299470F09427cf6cfE2",
22
- Moonbeam: "0x1365593C8bae71a55e48E105a2Bb76d5928c7DE3",
23
- Optimism: "0x85C0129bE5226C9F0Cf4e419D2fefc1c3FCa25cF",
24
- Plume: "0x6Eb53371f646788De6B4D0225a4Ed1d9267188AD",
25
- Polygon: "0x6762157b73941e36cEd0AEf54614DdE545d0F990",
26
- Scroll: "0x055625d48968f99409244E8c3e03FbE73B235a62",
27
- Sonic: "0xaCa00703bb87F31D6F9fCcc963548b48FA46DfeB",
28
- Unichain: "0x607723D6353Dae3ef62B7B277Cfabd0F4bc6CB4C",
29
- Worldchain: "0x66b1644400D51e104272337226De3EF1A820eC79",
30
- XRPLEVM: "0x6bBd1ff3bB303F88835A714EE3241bF45DE26d29",
31
- Seievm: "0x3F2D6441C7a59Dfe80f8e14142F9E28F6D440445",
32
- CreditCoin: "0x5454b995719626256C96fb57454b044ffb3Da2F9",
33
- Monad: "0xc3F3dDa544815a440633176c7598f5B97500793e",
34
- Moca: "0xE612837749a0690BA2BCe490D6eFb5F8Fc347df3",
35
- MegaETH: "0x3EFEc0c7Ee79135330DD03e995872f84b1AD49b6",
36
- ZeroGravity: "0xe175A8b838f3CdB2e1AAf4Ff74c05cF2F3AEA9a8",
11
+ Arbitrum: "0x5029a23E0EE11f6c9120EAb7eB48a94a49907EC4",
12
+ Avalanche: "0xf1Aa9693265E0Ba892C4a7AE77591424eEEd5cE9",
13
+ Base: "0x27db1967D469D89318B7119Ced5609f327095de4",
14
+ Berachain: "0x7424E82D27dD80ca47eab5e739C4D5A2D220f64f",
15
+ Bsc: "0x83f5c7b03BBbE20FE2e39312b957D86dc7C3Dee2",
16
+ Celo: "0xb466bA8798a5B516b43cbE6AA7bBb9532bB1708D",
17
+ CreditCoin: "0xcA43AE520E308C6Fb444EB723406febF7c310Da3",
18
+ Ethereum: "0xC079bFA54F348199bA51B2717595fE24e96f1542",
19
+ HyperEVM: "0xBc275e094e031e990b060134AbbDa00132f9A163",
20
+ Ink: "0x9e9980848FcbC11F9e84b5b6f5b88887966F5DAe",
21
+ Linea: "0x6FE9625F59107a4D49a9b5bC10a701dD0Bb396C0",
22
+ MegaETH: "0x7215f45Ea622E0350DF410D2e780BfD03bDc8a4D",
23
+ Mezo: "0x50F11Fe8B0D2B6f18a12291FeD345914D7Ec69d3",
24
+ Moca: "0x494726C75053F63CA906Aee00d6f910afE761B35",
25
+ Monad: "0xcc9FE3526F527bB0A14242A92818e132f3c12059",
26
+ Moonbeam: "0x40bBdD737f2Ca6316777F0B24ac94aaDE1ad1e4b",
27
+ Optimism: "0xC25396Ce2F6FBE6996374a5527c636C71AD5a757",
28
+ Plume: "0x00F39D8897e32B129435499F406b2fD76e37B51E",
29
+ Polygon: "0x9d165221c3c68868D15B154c5Aa66C32e044Eb4b",
30
+ Seievm: "0x70b85A416146A2dc3c760Ad30102F4280471C2b1",
31
+ Sonic: "0x98D1A98Cc398Ef6F5F84D134C1370480AaabA546",
32
+ Unichain: "0x2ceB44DE347641804856E2c468E703e06C5A8A33",
33
+ Worldchain: "0xDdBBa9509B9587516a0736D218B193a0DCf2B3e4",
34
+ XRPLEVM: "0xeddc0228C8719E7220eF4D8D95503258285BD482",
35
+ ZeroGravity: "0x4E62C24F9c18D3053B8E84A73a2ec7A40b74AF8a",
37
36
  },
38
37
  Testnet: {
39
- ArbitrumSepolia: "0xd048170F1ECB8D47E499D3459aC379DA023E2C1B",
40
- Avalanche: "0x4e9Af03fbf1aa2b79A2D4babD3e22e09f18Bb8EE",
41
- BaseSepolia: "0x5845E08d890E21687F7Ebf7CbAbD360cD91c6245",
42
- Bsc: "0x39B57Dd9908F8be02CfeE283b67eA1303Bc29fe1",
43
- OptimismSepolia: "0xaDB1C56D363FF5A75260c3bd27dd7C1fC8421EF5",
44
- Sepolia: "0x54DD7080aE169DD923fE56d0C4f814a0a17B8f41",
45
- Ink: "0xF420BFFf922D11c2bBF587C9dF71b83651fAf8Bc",
46
- Seievm: "0x3F2D6441C7a59Dfe80f8e14142F9E28F6D440445",
47
- Converge: "0x3d8c26b67BDf630FBB44F09266aFA735F1129197",
48
- Plume: "0x6Eb53371f646788De6B4D0225a4Ed1d9267188AD",
49
- PolygonSepolia: "0x2982B9566E912458fE711FB1Fd78158264596937",
50
- Monad: "0x93FE94Ad887a1B04DBFf1f736bfcD1698D4cfF66",
51
- Linea: "0xaA469cb84C91D5a63bf4B370dE35f0831F2CE4FF",
52
- Celo: "0x3d69869fcB9e1CD1F4020b637fb8256030BAc8fC",
53
- Unichain: "0x607723D6353Dae3ef62B7B277Cfabd0F4bc6CB4C",
54
- XRPLEVM: "0xcDD9d7C759b29680f7a516d0058de8293b2AC7b1",
55
- Mezo: "0x484b5593BbB90383f94FB299470F09427cf6cfE2",
56
- Moca: "0x47f26bF9253Eb398fBAf825D7565FE975D839a71",
57
- ZeroGravity: "0xA8CA118f4C8d44Ab651Dad52B5E1a212e5d5c55b",
58
- Nexus: "0x5C2768b4aF4483ffeB2B8de8D8b14829C0F19c9E",
38
+ ArbitrumSepolia: "0xD69CF144C31aE8C12b5C7c3D52411F32C824C9a3",
39
+ Avalanche: "0x8196EBa42b2947f519002B8aDa53b1880F580c69",
40
+ BaseSepolia: "0x9fBC8aA6B2f626D13005De92B3f0e4541919f721",
41
+ Bsc: "0x2c9F87bE2eb0caEB8AfFE6F7ae1f046E5D40Ff2a",
42
+ Ink: "0x86B93560FeAbc95a0067a498d8afe1219f3ED0D7",
43
+ Linea: "0x5d98Ded0E46d0aEAB37EA4fEe45A38dc5ccee673",
44
+ Mezo: "0x117F5F5E8d29ED6254c6098457Cea28E3Ee7cDdA",
45
+ Monad: "0x8BcA0315627DA3D2e5FA349a6A1ad2FAde36BCe5",
46
+ OptimismSepolia: "0xA8b1d0520D556b4Ea115562D35077cAA2f13C6D6",
47
+ Plume: "0x6D87C7d416dFf428117b560A981d788E39707195",
48
+ Seievm: "0xdb66Dc163A03220661ca33B492c72a6a15B3a8cf",
49
+ Sepolia: "0xc2386453598811D88613331D52e2Ca4B2AEe16E4",
50
+ Unichain: "0xc41853C70bf70a2FFeE3ddd8f38D2b774Fe3E264",
51
+ XRPLEVM: "0x0fbDaE31440f5549e2F08193b5B034F2F9768304",
52
+ ZeroGravity: "0x69BeC29e71711B30F58585C0bb1622e7b47e3707",
59
53
  },
60
54
  };
61
55
  // Gas limits must be high enough to cover the worst-case scenario for each chain
@@ -67,19 +61,17 @@ const gasLimitOverrides = {
67
61
  CreditCoin: 1500000n,
68
62
  Monad: 1000000n,
69
63
  MegaETH: 1000000n,
64
+ Seievm: 1000000n,
70
65
  },
71
66
  Testnet: {
72
67
  ArbitrumSepolia: 800000n,
68
+ Seievm: 1000000n,
73
69
  },
74
70
  };
75
- // Tracks which executor contracts support the transferETH method.
76
- // Currently only Monad Mainnet supports this, but all executor contracts should eventually
77
- // be upgraded to support transferETH.
78
- const supportsTransferETH = {
79
- Mainnet: {
80
- Monad: true,
81
- },
82
- };
71
+ exports.nttWithExecutorAbi = [
72
+ "function transfer(address nttManager, uint256 amount, uint16 recipientChain, bytes32 recipientAddress, bytes32 refundAddress, bytes encodedInstructions, (uint256 value, address refundAddress, bytes signedQuote, bytes instructions) executorArgs, (uint256 transferTokenFee, uint256 nativeTokenFee, address payee) feeArgs) external payable returns (uint64 msgId)",
73
+ "function transferETH(address nttManager, uint256 amount, uint16 recipientChain, bytes32 recipientAddress, bytes32 refundAddress, bytes encodedInstructions, (uint256 value, address refundAddress, bytes signedQuote, bytes instructions) executorArgs, (uint256 transferTokenFee, uint256 nativeTokenFee, address payee) feeArgs) external payable returns (uint64 msgId)",
74
+ ];
83
75
  class EvmNttWithExecutor {
84
76
  network;
85
77
  chain;
@@ -87,7 +79,6 @@ class EvmNttWithExecutor {
87
79
  contracts;
88
80
  chainId;
89
81
  executorAddress;
90
- supportsTransferETH;
91
82
  constructor(network, chain, provider, contracts) {
92
83
  this.network = network;
93
84
  this.chain = chain;
@@ -98,8 +89,6 @@ class EvmNttWithExecutor {
98
89
  if (!executorAddress)
99
90
  throw new Error(`Executor address not found for chain ${this.chain}`);
100
91
  this.executorAddress = executorAddress;
101
- this.supportsTransferETH =
102
- supportsTransferETH[this.network]?.[this.chain] ?? false;
103
92
  }
104
93
  static async fromRpc(provider, config) {
105
94
  const [network, chain] = await sdk_evm_1.EvmPlatform.chainFromRpc(provider);
@@ -110,81 +99,57 @@ class EvmNttWithExecutor {
110
99
  }
111
100
  async *transfer(sender, destination, amount, quote, ntt, wrapNative = false) {
112
101
  const senderAddress = new sdk_evm_1.EvmAddress(sender).toString();
113
- const options = { queue: false, automatic: false };
114
- // This will include any transceiver fees
115
- const deliveryPrice = await ntt.quoteDeliveryPrice(destination.chain, options);
116
- // Use transferETH if wrapNative is requested and the contract supports it
117
- const useTransferETH = wrapNative && this.supportsTransferETH;
118
- if (wrapNative && !this.supportsTransferETH) {
119
- yield ntt.wrapNative(sender, amount);
120
- }
121
- // ABI for the INttManagerWithExecutor transfer functions
122
- // TODO: type safety. typechain brings in so much boilerplate code and is soft deprecated. Use Viem instead?
123
- const abi = [
124
- "function transfer(address nttManager, uint256 amount, uint16 recipientChain, bytes32 recipientAddress, bytes32 refundAddress, bytes encodedInstructions, (uint256 value, address refundAddress, bytes signedQuote, bytes instructions) executorArgs, (uint16 dbps, address payee) feeArgs) external payable returns (uint64 msgId)",
125
- "function transferETH(address nttManager, uint256 amount, uint16 recipientChain, bytes32 recipientAddress, bytes32 refundAddress, bytes encodedInstructions, (uint256 value, address refundAddress, bytes signedQuote, bytes instructions) executorArgs, (uint16 dbps, address payee) feeArgs) external payable returns (uint64 msgId)",
102
+ const deliveryPrice = await ntt.quoteDeliveryPrice(destination.chain, {
103
+ queue: false,
104
+ automatic: false,
105
+ });
106
+ // Fee is deducted from the transfer amount.
107
+ // Approval covers remainingAmount + transferTokenFee = the full user amount.
108
+ const totalAmount = quote.remainingAmount + quote.transferTokenFee;
109
+ const iface = new ethers_1.Interface(exports.nttWithExecutorAbi);
110
+ const commonArgs = [
111
+ ntt.managerAddress,
112
+ quote.remainingAmount,
113
+ (0, sdk_base_1.toChainId)(destination.chain),
114
+ destination.address.toUniversalAddress().toUint8Array(),
115
+ sender.toUniversalAddress().toUint8Array(),
116
+ sdk_definitions_ntt_1.Ntt.encodeTransceiverInstructions(ntt.encodeOptions({ queue: false, automatic: false })),
117
+ {
118
+ value: quote.estimatedCost,
119
+ refundAddress: senderAddress,
120
+ signedQuote: quote.signedQuote,
121
+ instructions: quote.relayInstructions,
122
+ },
126
123
  ];
127
- const iface = new ethers_1.Interface(abi);
128
- const nttManager = ntt.managerAddress;
129
- const recipientChain = (0, sdk_base_1.toChainId)(destination.chain);
130
- const recipientAddress = destination.address
131
- .toUniversalAddress()
132
- .toUint8Array();
133
- const refundAddress = sender.toUniversalAddress().toUint8Array();
134
- const encodedInstructions = sdk_definitions_ntt_1.Ntt.encodeTransceiverInstructions(ntt.encodeOptions({ queue: false, automatic: false }));
135
- const executorArgs = {
136
- value: quote.estimatedCost,
137
- refundAddress: senderAddress,
138
- signedQuote: quote.signedQuote,
139
- instructions: quote.relayInstructions,
140
- };
141
124
  const feeArgs = {
142
- dbps: quote.referrerFeeDbps,
125
+ transferTokenFee: quote.transferTokenFee,
126
+ nativeTokenFee: quote.nativeTokenFee,
143
127
  payee: quote.referrer.address.toString(),
144
128
  };
145
129
  let data;
146
130
  let msgValue;
147
- if (useTransferETH) {
148
- data = iface.encodeFunctionData("transferETH", [
149
- nttManager,
150
- amount,
151
- recipientChain,
152
- recipientAddress,
153
- refundAddress,
154
- encodedInstructions,
155
- executorArgs,
156
- feeArgs,
157
- ]);
158
- msgValue = quote.estimatedCost + deliveryPrice + amount;
131
+ if (wrapNative) {
132
+ data = iface.encodeFunctionData("transferETH", [...commonArgs, feeArgs]);
133
+ msgValue =
134
+ quote.estimatedCost +
135
+ deliveryPrice +
136
+ quote.nativeTokenFee +
137
+ totalAmount;
159
138
  }
160
139
  else {
161
- // Standard ERC20 transfer flow with approval
162
- const tokenContract = sdk_evm_1.EvmPlatform.getTokenImplementation(this.provider, ntt.tokenAddress);
163
- const allowance = await tokenContract.allowance(senderAddress, this.executorAddress);
164
- if (allowance < amount) {
165
- const txReq = await tokenContract.approve.populateTransaction(this.executorAddress, amount);
166
- yield ntt.createUnsignedTx(txReq, "Ntt.Approve");
167
- }
168
- data = iface.encodeFunctionData("transfer", [
169
- nttManager,
170
- amount,
171
- recipientChain,
172
- recipientAddress,
173
- refundAddress,
174
- encodedInstructions,
175
- executorArgs,
176
- feeArgs,
177
- ]);
178
- msgValue = quote.estimatedCost + deliveryPrice;
140
+ yield* this.approveIfNeeded(senderAddress, this.executorAddress, totalAmount, ntt);
141
+ data = iface.encodeFunctionData("transfer", [...commonArgs, feeArgs]);
142
+ msgValue = quote.estimatedCost + deliveryPrice + quote.nativeTokenFee;
143
+ }
144
+ yield ntt.createUnsignedTx({ to: this.executorAddress, data, value: msgValue }, wrapNative ? "NttWithExecutor.transferETH" : "NttWithExecutor.transfer");
145
+ }
146
+ async *approveIfNeeded(senderAddress, contractAddress, requiredAmount, ntt) {
147
+ const tokenContract = sdk_evm_1.EvmPlatform.getTokenImplementation(this.provider, ntt.tokenAddress);
148
+ const allowance = await tokenContract.allowance(senderAddress, contractAddress);
149
+ if (allowance < requiredAmount) {
150
+ const txReq = await tokenContract.approve.populateTransaction(contractAddress, requiredAmount);
151
+ yield ntt.createUnsignedTx(txReq, "Ntt.Approve");
179
152
  }
180
- const txReq = {
181
- to: this.executorAddress,
182
- data,
183
- value: msgValue,
184
- };
185
- yield ntt.createUnsignedTx(txReq, useTransferETH
186
- ? "NttWithExecutor.transferETH"
187
- : "NttWithExecutor.transfer");
188
153
  }
189
154
  async estimateMsgValueAndGasLimit(recipient) {
190
155
  const gasLimit = gasLimitOverrides[this.network]?.[this.chain] ?? 500000n;
@@ -193,10 +158,7 @@ class EvmNttWithExecutor {
193
158
  }
194
159
  exports.EvmNttWithExecutor = EvmNttWithExecutor;
195
160
  /**
196
- * Check if an executor (NttWithExecutor) is deployed for a given network and chain combination
197
- * @param network - The network (e.g., 'Mainnet', 'Testnet')
198
- * @param chain - The EVM chain (e.g., 'Arbitrum', 'ArbitrumSepolia')
199
- * @returns true if an executor address exists for this network/chain combination
161
+ * Check if an executor (NttWithExecutor) is deployed for a given network and chain combination.
200
162
  */
201
163
  function hasExecutorDeployed(network, chain) {
202
164
  return nttManagerWithExecutorAddresses[network]?.[chain] !== undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"nttWithExecutor.js","sourceRoot":"","sources":["../../src/nttWithExecutor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nttWithExecutor.js","sourceRoot":"","sources":["../../src/nttWithExecutor.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { Ntt, NttWithExecutor } from "@wormhole-foundation/sdk-definitions-ntt";
4
4
  import { type EvmPlatformType, type EvmChains } from "@wormhole-foundation/sdk-evm";
5
5
  import { Provider } from "ethers";
6
6
  import { EvmNtt } from "./ntt.js";
7
+ export declare const nttWithExecutorAbi: string[];
7
8
  export declare class EvmNttWithExecutor<N extends Network, C extends EvmChains> implements NttWithExecutor<N, C> {
8
9
  readonly network: N;
9
10
  readonly chain: C;
@@ -13,22 +14,19 @@ export declare class EvmNttWithExecutor<N extends Network, C extends EvmChains>
13
14
  };
14
15
  readonly chainId: bigint;
15
16
  readonly executorAddress: string;
16
- readonly supportsTransferETH: boolean;
17
17
  constructor(network: N, chain: C, provider: Provider, contracts: Contracts & {
18
18
  ntt?: Ntt.Contracts;
19
19
  });
20
20
  static fromRpc<N extends Network>(provider: Provider, config: ChainsConfig<N, EvmPlatformType>): Promise<EvmNttWithExecutor<N, EvmChains>>;
21
21
  transfer(sender: AccountAddress<C>, destination: ChainAddress, amount: bigint, quote: NttWithExecutor.Quote, ntt: EvmNtt<N, C>, wrapNative?: boolean): AsyncGenerator<UnsignedTransaction<N, C>>;
22
+ private approveIfNeeded;
22
23
  estimateMsgValueAndGasLimit(recipient: ChainAddress | undefined): Promise<{
23
24
  msgValue: bigint;
24
25
  gasLimit: bigint;
25
26
  }>;
26
27
  }
27
28
  /**
28
- * Check if an executor (NttWithExecutor) is deployed for a given network and chain combination
29
- * @param network - The network (e.g., 'Mainnet', 'Testnet')
30
- * @param chain - The EVM chain (e.g., 'Arbitrum', 'ArbitrumSepolia')
31
- * @returns true if an executor address exists for this network/chain combination
29
+ * Check if an executor (NttWithExecutor) is deployed for a given network and chain combination.
32
30
  */
33
31
  export declare function hasExecutorDeployed(network: Network, chain: EvmChains): boolean;
34
32
  //# sourceMappingURL=nttWithExecutor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"nttWithExecutor.d.ts","sourceRoot":"","sources":["../../src/nttWithExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,OAAO,EACb,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,SAAS,EACT,mBAAmB,EACpB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,SAAS,EAEf,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAa,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAqFlC,qBAAa,kBAAkB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,SAAS,CACpE,YAAW,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;IAO9B,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG;QAAE,GAAG,CAAC,EAAE,GAAG,CAAC,SAAS,CAAA;KAAE;IARzD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;gBAG3B,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,GAAG;QAAE,GAAG,CAAC,EAAE,GAAG,CAAC,SAAS,CAAA;KAAE;WAgB5C,OAAO,CAAC,CAAC,SAAS,OAAO,EACpC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,eAAe,CAAC,GACvC,OAAO,CAAC,kBAAkB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAcrC,QAAQ,CACb,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,WAAW,EAAE,YAAY,EACzB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,eAAe,CAAC,KAAK,EAC5B,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EACjB,UAAU,GAAE,OAAe,GAC1B,cAAc,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IA8GtC,2BAA2B,CAC/B,SAAS,EAAE,YAAY,GAAG,SAAS,GAClC,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAInD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,SAAS,GACf,OAAO,CAET"}
1
+ {"version":3,"file":"nttWithExecutor.d.ts","sourceRoot":"","sources":["../../src/nttWithExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,OAAO,EACb,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,SAAS,EACT,mBAAmB,EACpB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,SAAS,EAEf,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAa,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAsElC,eAAO,MAAM,kBAAkB,UAG9B,CAAC;AAEF,qBAAa,kBAAkB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,SAAS,CACpE,YAAW,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;IAM9B,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG;QAAE,GAAG,CAAC,EAAE,GAAG,CAAC,SAAS,CAAA;KAAE;IAPzD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;gBAGtB,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,GAAG;QAAE,GAAG,CAAC,EAAE,GAAG,CAAC,SAAS,CAAA;KAAE;WAc5C,OAAO,CAAC,CAAC,SAAS,OAAO,EACpC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,eAAe,CAAC,GACvC,OAAO,CAAC,kBAAkB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAcrC,QAAQ,CACb,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,WAAW,EAAE,YAAY,EACzB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,eAAe,CAAC,KAAK,EAC5B,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EACjB,UAAU,GAAE,OAAe,GAC1B,cAAc,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YA+D7B,eAAe;IAyBxB,2BAA2B,CAC/B,SAAS,EAAE,YAAY,GAAG,SAAS,GAClC,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAInD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,SAAS,GACf,OAAO,CAET"}
@@ -4,54 +4,48 @@ import { EvmPlatform, EvmAddress, } from "@wormhole-foundation/sdk-evm";
4
4
  import { Interface } from "ethers";
5
5
  const nttManagerWithExecutorAddresses = {
6
6
  Mainnet: {
7
- Arbitrum: "0x0Af42A597b0C201D4dcf450DcD0c06d55ddC1C77",
8
- Avalanche: "0x4e9Af03fbf1aa2b79A2D4babD3e22e09f18Bb8EE",
9
- Base: "0x83216747fC21b86173D800E2960c0D5395de0F30",
10
- Berachain: "0x0a2AF374Cc9CCCbB0Acc4E34B20b9d02a0f08c30",
11
- Bsc: "0x39B57Dd9908F8be02CfeE283b67eA1303Bc29fe1",
12
- Celo: "0x3d69869fcB9e1CD1F4020b637fb8256030BAc8fC",
13
- Ethereum: "0xD2D9c936165a85F27a5a7e07aFb974D022B89463",
14
- HyperEVM: "0x431017B1718b86898C7590fFcCC380DEf0456393",
15
- Ink: "0x420370DC2ECC4D44b47514B7859fd11809BbeFF5",
16
- Linea: "0xEAa5AddB5b8939Eb73F7faF46e193EefECaF13E9",
17
- Mezo: "0x484b5593BbB90383f94FB299470F09427cf6cfE2",
18
- Moonbeam: "0x1365593C8bae71a55e48E105a2Bb76d5928c7DE3",
19
- Optimism: "0x85C0129bE5226C9F0Cf4e419D2fefc1c3FCa25cF",
20
- Plume: "0x6Eb53371f646788De6B4D0225a4Ed1d9267188AD",
21
- Polygon: "0x6762157b73941e36cEd0AEf54614DdE545d0F990",
22
- Scroll: "0x055625d48968f99409244E8c3e03FbE73B235a62",
23
- Sonic: "0xaCa00703bb87F31D6F9fCcc963548b48FA46DfeB",
24
- Unichain: "0x607723D6353Dae3ef62B7B277Cfabd0F4bc6CB4C",
25
- Worldchain: "0x66b1644400D51e104272337226De3EF1A820eC79",
26
- XRPLEVM: "0x6bBd1ff3bB303F88835A714EE3241bF45DE26d29",
27
- Seievm: "0x3F2D6441C7a59Dfe80f8e14142F9E28F6D440445",
28
- CreditCoin: "0x5454b995719626256C96fb57454b044ffb3Da2F9",
29
- Monad: "0xc3F3dDa544815a440633176c7598f5B97500793e",
30
- Moca: "0xE612837749a0690BA2BCe490D6eFb5F8Fc347df3",
31
- MegaETH: "0x3EFEc0c7Ee79135330DD03e995872f84b1AD49b6",
32
- ZeroGravity: "0xe175A8b838f3CdB2e1AAf4Ff74c05cF2F3AEA9a8",
7
+ Arbitrum: "0x5029a23E0EE11f6c9120EAb7eB48a94a49907EC4",
8
+ Avalanche: "0xf1Aa9693265E0Ba892C4a7AE77591424eEEd5cE9",
9
+ Base: "0x27db1967D469D89318B7119Ced5609f327095de4",
10
+ Berachain: "0x7424E82D27dD80ca47eab5e739C4D5A2D220f64f",
11
+ Bsc: "0x83f5c7b03BBbE20FE2e39312b957D86dc7C3Dee2",
12
+ Celo: "0xb466bA8798a5B516b43cbE6AA7bBb9532bB1708D",
13
+ CreditCoin: "0xcA43AE520E308C6Fb444EB723406febF7c310Da3",
14
+ Ethereum: "0xC079bFA54F348199bA51B2717595fE24e96f1542",
15
+ HyperEVM: "0xBc275e094e031e990b060134AbbDa00132f9A163",
16
+ Ink: "0x9e9980848FcbC11F9e84b5b6f5b88887966F5DAe",
17
+ Linea: "0x6FE9625F59107a4D49a9b5bC10a701dD0Bb396C0",
18
+ MegaETH: "0x7215f45Ea622E0350DF410D2e780BfD03bDc8a4D",
19
+ Mezo: "0x50F11Fe8B0D2B6f18a12291FeD345914D7Ec69d3",
20
+ Moca: "0x494726C75053F63CA906Aee00d6f910afE761B35",
21
+ Monad: "0xcc9FE3526F527bB0A14242A92818e132f3c12059",
22
+ Moonbeam: "0x40bBdD737f2Ca6316777F0B24ac94aaDE1ad1e4b",
23
+ Optimism: "0xC25396Ce2F6FBE6996374a5527c636C71AD5a757",
24
+ Plume: "0x00F39D8897e32B129435499F406b2fD76e37B51E",
25
+ Polygon: "0x9d165221c3c68868D15B154c5Aa66C32e044Eb4b",
26
+ Seievm: "0x70b85A416146A2dc3c760Ad30102F4280471C2b1",
27
+ Sonic: "0x98D1A98Cc398Ef6F5F84D134C1370480AaabA546",
28
+ Unichain: "0x2ceB44DE347641804856E2c468E703e06C5A8A33",
29
+ Worldchain: "0xDdBBa9509B9587516a0736D218B193a0DCf2B3e4",
30
+ XRPLEVM: "0xeddc0228C8719E7220eF4D8D95503258285BD482",
31
+ ZeroGravity: "0x4E62C24F9c18D3053B8E84A73a2ec7A40b74AF8a",
33
32
  },
34
33
  Testnet: {
35
- ArbitrumSepolia: "0xd048170F1ECB8D47E499D3459aC379DA023E2C1B",
36
- Avalanche: "0x4e9Af03fbf1aa2b79A2D4babD3e22e09f18Bb8EE",
37
- BaseSepolia: "0x5845E08d890E21687F7Ebf7CbAbD360cD91c6245",
38
- Bsc: "0x39B57Dd9908F8be02CfeE283b67eA1303Bc29fe1",
39
- OptimismSepolia: "0xaDB1C56D363FF5A75260c3bd27dd7C1fC8421EF5",
40
- Sepolia: "0x54DD7080aE169DD923fE56d0C4f814a0a17B8f41",
41
- Ink: "0xF420BFFf922D11c2bBF587C9dF71b83651fAf8Bc",
42
- Seievm: "0x3F2D6441C7a59Dfe80f8e14142F9E28F6D440445",
43
- Converge: "0x3d8c26b67BDf630FBB44F09266aFA735F1129197",
44
- Plume: "0x6Eb53371f646788De6B4D0225a4Ed1d9267188AD",
45
- PolygonSepolia: "0x2982B9566E912458fE711FB1Fd78158264596937",
46
- Monad: "0x93FE94Ad887a1B04DBFf1f736bfcD1698D4cfF66",
47
- Linea: "0xaA469cb84C91D5a63bf4B370dE35f0831F2CE4FF",
48
- Celo: "0x3d69869fcB9e1CD1F4020b637fb8256030BAc8fC",
49
- Unichain: "0x607723D6353Dae3ef62B7B277Cfabd0F4bc6CB4C",
50
- XRPLEVM: "0xcDD9d7C759b29680f7a516d0058de8293b2AC7b1",
51
- Mezo: "0x484b5593BbB90383f94FB299470F09427cf6cfE2",
52
- Moca: "0x47f26bF9253Eb398fBAf825D7565FE975D839a71",
53
- ZeroGravity: "0xA8CA118f4C8d44Ab651Dad52B5E1a212e5d5c55b",
54
- Nexus: "0x5C2768b4aF4483ffeB2B8de8D8b14829C0F19c9E",
34
+ ArbitrumSepolia: "0xD69CF144C31aE8C12b5C7c3D52411F32C824C9a3",
35
+ Avalanche: "0x8196EBa42b2947f519002B8aDa53b1880F580c69",
36
+ BaseSepolia: "0x9fBC8aA6B2f626D13005De92B3f0e4541919f721",
37
+ Bsc: "0x2c9F87bE2eb0caEB8AfFE6F7ae1f046E5D40Ff2a",
38
+ Ink: "0x86B93560FeAbc95a0067a498d8afe1219f3ED0D7",
39
+ Linea: "0x5d98Ded0E46d0aEAB37EA4fEe45A38dc5ccee673",
40
+ Mezo: "0x117F5F5E8d29ED6254c6098457Cea28E3Ee7cDdA",
41
+ Monad: "0x8BcA0315627DA3D2e5FA349a6A1ad2FAde36BCe5",
42
+ OptimismSepolia: "0xA8b1d0520D556b4Ea115562D35077cAA2f13C6D6",
43
+ Plume: "0x6D87C7d416dFf428117b560A981d788E39707195",
44
+ Seievm: "0xdb66Dc163A03220661ca33B492c72a6a15B3a8cf",
45
+ Sepolia: "0xc2386453598811D88613331D52e2Ca4B2AEe16E4",
46
+ Unichain: "0xc41853C70bf70a2FFeE3ddd8f38D2b774Fe3E264",
47
+ XRPLEVM: "0x0fbDaE31440f5549e2F08193b5B034F2F9768304",
48
+ ZeroGravity: "0x69BeC29e71711B30F58585C0bb1622e7b47e3707",
55
49
  },
56
50
  };
57
51
  // Gas limits must be high enough to cover the worst-case scenario for each chain
@@ -63,19 +57,17 @@ const gasLimitOverrides = {
63
57
  CreditCoin: 1500000n,
64
58
  Monad: 1000000n,
65
59
  MegaETH: 1000000n,
60
+ Seievm: 1000000n,
66
61
  },
67
62
  Testnet: {
68
63
  ArbitrumSepolia: 800000n,
64
+ Seievm: 1000000n,
69
65
  },
70
66
  };
71
- // Tracks which executor contracts support the transferETH method.
72
- // Currently only Monad Mainnet supports this, but all executor contracts should eventually
73
- // be upgraded to support transferETH.
74
- const supportsTransferETH = {
75
- Mainnet: {
76
- Monad: true,
77
- },
78
- };
67
+ export const nttWithExecutorAbi = [
68
+ "function transfer(address nttManager, uint256 amount, uint16 recipientChain, bytes32 recipientAddress, bytes32 refundAddress, bytes encodedInstructions, (uint256 value, address refundAddress, bytes signedQuote, bytes instructions) executorArgs, (uint256 transferTokenFee, uint256 nativeTokenFee, address payee) feeArgs) external payable returns (uint64 msgId)",
69
+ "function transferETH(address nttManager, uint256 amount, uint16 recipientChain, bytes32 recipientAddress, bytes32 refundAddress, bytes encodedInstructions, (uint256 value, address refundAddress, bytes signedQuote, bytes instructions) executorArgs, (uint256 transferTokenFee, uint256 nativeTokenFee, address payee) feeArgs) external payable returns (uint64 msgId)",
70
+ ];
79
71
  export class EvmNttWithExecutor {
80
72
  network;
81
73
  chain;
@@ -83,7 +75,6 @@ export class EvmNttWithExecutor {
83
75
  contracts;
84
76
  chainId;
85
77
  executorAddress;
86
- supportsTransferETH;
87
78
  constructor(network, chain, provider, contracts) {
88
79
  this.network = network;
89
80
  this.chain = chain;
@@ -94,8 +85,6 @@ export class EvmNttWithExecutor {
94
85
  if (!executorAddress)
95
86
  throw new Error(`Executor address not found for chain ${this.chain}`);
96
87
  this.executorAddress = executorAddress;
97
- this.supportsTransferETH =
98
- supportsTransferETH[this.network]?.[this.chain] ?? false;
99
88
  }
100
89
  static async fromRpc(provider, config) {
101
90
  const [network, chain] = await EvmPlatform.chainFromRpc(provider);
@@ -106,81 +95,57 @@ export class EvmNttWithExecutor {
106
95
  }
107
96
  async *transfer(sender, destination, amount, quote, ntt, wrapNative = false) {
108
97
  const senderAddress = new EvmAddress(sender).toString();
109
- const options = { queue: false, automatic: false };
110
- // This will include any transceiver fees
111
- const deliveryPrice = await ntt.quoteDeliveryPrice(destination.chain, options);
112
- // Use transferETH if wrapNative is requested and the contract supports it
113
- const useTransferETH = wrapNative && this.supportsTransferETH;
114
- if (wrapNative && !this.supportsTransferETH) {
115
- yield ntt.wrapNative(sender, amount);
116
- }
117
- // ABI for the INttManagerWithExecutor transfer functions
118
- // TODO: type safety. typechain brings in so much boilerplate code and is soft deprecated. Use Viem instead?
119
- const abi = [
120
- "function transfer(address nttManager, uint256 amount, uint16 recipientChain, bytes32 recipientAddress, bytes32 refundAddress, bytes encodedInstructions, (uint256 value, address refundAddress, bytes signedQuote, bytes instructions) executorArgs, (uint16 dbps, address payee) feeArgs) external payable returns (uint64 msgId)",
121
- "function transferETH(address nttManager, uint256 amount, uint16 recipientChain, bytes32 recipientAddress, bytes32 refundAddress, bytes encodedInstructions, (uint256 value, address refundAddress, bytes signedQuote, bytes instructions) executorArgs, (uint16 dbps, address payee) feeArgs) external payable returns (uint64 msgId)",
98
+ const deliveryPrice = await ntt.quoteDeliveryPrice(destination.chain, {
99
+ queue: false,
100
+ automatic: false,
101
+ });
102
+ // Fee is deducted from the transfer amount.
103
+ // Approval covers remainingAmount + transferTokenFee = the full user amount.
104
+ const totalAmount = quote.remainingAmount + quote.transferTokenFee;
105
+ const iface = new Interface(nttWithExecutorAbi);
106
+ const commonArgs = [
107
+ ntt.managerAddress,
108
+ quote.remainingAmount,
109
+ toChainId(destination.chain),
110
+ destination.address.toUniversalAddress().toUint8Array(),
111
+ sender.toUniversalAddress().toUint8Array(),
112
+ Ntt.encodeTransceiverInstructions(ntt.encodeOptions({ queue: false, automatic: false })),
113
+ {
114
+ value: quote.estimatedCost,
115
+ refundAddress: senderAddress,
116
+ signedQuote: quote.signedQuote,
117
+ instructions: quote.relayInstructions,
118
+ },
122
119
  ];
123
- const iface = new Interface(abi);
124
- const nttManager = ntt.managerAddress;
125
- const recipientChain = toChainId(destination.chain);
126
- const recipientAddress = destination.address
127
- .toUniversalAddress()
128
- .toUint8Array();
129
- const refundAddress = sender.toUniversalAddress().toUint8Array();
130
- const encodedInstructions = Ntt.encodeTransceiverInstructions(ntt.encodeOptions({ queue: false, automatic: false }));
131
- const executorArgs = {
132
- value: quote.estimatedCost,
133
- refundAddress: senderAddress,
134
- signedQuote: quote.signedQuote,
135
- instructions: quote.relayInstructions,
136
- };
137
120
  const feeArgs = {
138
- dbps: quote.referrerFeeDbps,
121
+ transferTokenFee: quote.transferTokenFee,
122
+ nativeTokenFee: quote.nativeTokenFee,
139
123
  payee: quote.referrer.address.toString(),
140
124
  };
141
125
  let data;
142
126
  let msgValue;
143
- if (useTransferETH) {
144
- data = iface.encodeFunctionData("transferETH", [
145
- nttManager,
146
- amount,
147
- recipientChain,
148
- recipientAddress,
149
- refundAddress,
150
- encodedInstructions,
151
- executorArgs,
152
- feeArgs,
153
- ]);
154
- msgValue = quote.estimatedCost + deliveryPrice + amount;
127
+ if (wrapNative) {
128
+ data = iface.encodeFunctionData("transferETH", [...commonArgs, feeArgs]);
129
+ msgValue =
130
+ quote.estimatedCost +
131
+ deliveryPrice +
132
+ quote.nativeTokenFee +
133
+ totalAmount;
155
134
  }
156
135
  else {
157
- // Standard ERC20 transfer flow with approval
158
- const tokenContract = EvmPlatform.getTokenImplementation(this.provider, ntt.tokenAddress);
159
- const allowance = await tokenContract.allowance(senderAddress, this.executorAddress);
160
- if (allowance < amount) {
161
- const txReq = await tokenContract.approve.populateTransaction(this.executorAddress, amount);
162
- yield ntt.createUnsignedTx(txReq, "Ntt.Approve");
163
- }
164
- data = iface.encodeFunctionData("transfer", [
165
- nttManager,
166
- amount,
167
- recipientChain,
168
- recipientAddress,
169
- refundAddress,
170
- encodedInstructions,
171
- executorArgs,
172
- feeArgs,
173
- ]);
174
- msgValue = quote.estimatedCost + deliveryPrice;
136
+ yield* this.approveIfNeeded(senderAddress, this.executorAddress, totalAmount, ntt);
137
+ data = iface.encodeFunctionData("transfer", [...commonArgs, feeArgs]);
138
+ msgValue = quote.estimatedCost + deliveryPrice + quote.nativeTokenFee;
139
+ }
140
+ yield ntt.createUnsignedTx({ to: this.executorAddress, data, value: msgValue }, wrapNative ? "NttWithExecutor.transferETH" : "NttWithExecutor.transfer");
141
+ }
142
+ async *approveIfNeeded(senderAddress, contractAddress, requiredAmount, ntt) {
143
+ const tokenContract = EvmPlatform.getTokenImplementation(this.provider, ntt.tokenAddress);
144
+ const allowance = await tokenContract.allowance(senderAddress, contractAddress);
145
+ if (allowance < requiredAmount) {
146
+ const txReq = await tokenContract.approve.populateTransaction(contractAddress, requiredAmount);
147
+ yield ntt.createUnsignedTx(txReq, "Ntt.Approve");
175
148
  }
176
- const txReq = {
177
- to: this.executorAddress,
178
- data,
179
- value: msgValue,
180
- };
181
- yield ntt.createUnsignedTx(txReq, useTransferETH
182
- ? "NttWithExecutor.transferETH"
183
- : "NttWithExecutor.transfer");
184
149
  }
185
150
  async estimateMsgValueAndGasLimit(recipient) {
186
151
  const gasLimit = gasLimitOverrides[this.network]?.[this.chain] ?? 500000n;
@@ -188,10 +153,7 @@ export class EvmNttWithExecutor {
188
153
  }
189
154
  }
190
155
  /**
191
- * Check if an executor (NttWithExecutor) is deployed for a given network and chain combination
192
- * @param network - The network (e.g., 'Mainnet', 'Testnet')
193
- * @param chain - The EVM chain (e.g., 'Arbitrum', 'ArbitrumSepolia')
194
- * @returns true if an executor address exists for this network/chain combination
156
+ * Check if an executor (NttWithExecutor) is deployed for a given network and chain combination.
195
157
  */
196
158
  export function hasExecutorDeployed(network, chain) {
197
159
  return nttManagerWithExecutorAddresses[network]?.[chain] !== undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"nttWithExecutor.js","sourceRoot":"","sources":["../../src/nttWithExecutor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nttWithExecutor.js","sourceRoot":"","sources":["../../src/nttWithExecutor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wormhole-foundation/sdk-evm-ntt",
3
- "version": "5.0.2",
3
+ "version": "6.0.0-beta.1",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/wormhole-foundation/native-token-transfers.git"
@@ -46,7 +46,7 @@
46
46
  "prettier": "prettier --write ./src ./__tests__"
47
47
  },
48
48
  "dependencies": {
49
- "@wormhole-foundation/sdk-definitions-ntt": "5.0.2",
49
+ "@wormhole-foundation/sdk-definitions-ntt": "6.0.0-beta.1",
50
50
  "ethers": "^6.5.1"
51
51
  },
52
52
  "devDependencies": {
@@ -68,9 +68,9 @@
68
68
  }
69
69
  },
70
70
  "peerDependencies": {
71
- "@wormhole-foundation/sdk-base": "^4.18.0",
72
- "@wormhole-foundation/sdk-definitions": "^4.18.0",
73
- "@wormhole-foundation/sdk-evm": "^4.18.0",
74
- "@wormhole-foundation/sdk-evm-core": "^4.18.0"
71
+ "@wormhole-foundation/sdk-base": "^4.20.0",
72
+ "@wormhole-foundation/sdk-definitions": "^4.20.0",
73
+ "@wormhole-foundation/sdk-evm": "^4.20.0",
74
+ "@wormhole-foundation/sdk-evm-core": "^4.20.0"
75
75
  }
76
76
  }