@wormhole-foundation/sdk-evm-ntt 6.0.0-beta.3 → 6.1.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.
@@ -0,0 +1,5 @@
1
+ import type { Network } from "@wormhole-foundation/sdk-base";
2
+ import type { EvmChains } from "@wormhole-foundation/sdk-evm";
3
+ export declare const executorGasLimitOverrides: Partial<Record<Network, Partial<Record<EvmChains, bigint>>>>;
4
+ export declare const DEFAULT_EXECUTOR_GAS_LIMIT = 500000n;
5
+ //# sourceMappingURL=executorGasLimits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executorGasLimits.d.ts","sourceRoot":"","sources":["../../src/executorGasLimits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAK9D,eAAO,MAAM,yBAAyB,EAAE,OAAO,CAC7C,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAcpD,CAAC;AAEF,eAAO,MAAM,0BAA0B,UAAW,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_EXECUTOR_GAS_LIMIT = exports.executorGasLimitOverrides = void 0;
4
+ // Must be high enough to cover the destination chain's worst case (otherwise
5
+ // the executor's relay simulation reverts), but not so high that it inflates
6
+ // the `estimatedCost` returned by /v0/quote.
7
+ exports.executorGasLimitOverrides = {
8
+ Mainnet: {
9
+ Arbitrum: 800000n,
10
+ CreditCoin: 1500000n,
11
+ Monad: 1000000n,
12
+ MegaETH: 1000000n,
13
+ Seievm: 1000000n,
14
+ },
15
+ Testnet: {
16
+ ArbitrumSepolia: 800000n,
17
+ Seievm: 1000000n,
18
+ Tempo: 1500000n,
19
+ },
20
+ };
21
+ exports.DEFAULT_EXECUTOR_GAS_LIMIT = 500000n;
22
+ //# sourceMappingURL=executorGasLimits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executorGasLimits.js","sourceRoot":"","sources":["../../src/executorGasLimits.ts"],"names":[],"mappings":";;;AAGA,6EAA6E;AAC7E,6EAA6E;AAC7E,6CAA6C;AAChC,QAAA,yBAAyB,GAElC;IACF,OAAO,EAAE;QACP,QAAQ,EAAE,OAAQ;QAClB,UAAU,EAAE,QAAU;QACtB,KAAK,EAAE,QAAU;QACjB,OAAO,EAAE,QAAU;QACnB,MAAM,EAAE,QAAU;KACnB;IACD,OAAO,EAAE;QACP,eAAe,EAAE,OAAQ;QACzB,MAAM,EAAE,QAAU;QAClB,KAAK,EAAE,QAAU;KAClB;CACF,CAAC;AAEW,QAAA,0BAA0B,GAAG,OAAQ,CAAC"}
@@ -5,6 +5,7 @@ import { type EvmPlatformType, type EvmChains } from "@wormhole-foundation/sdk-e
5
5
  import { Provider } from "ethers";
6
6
  import { EvmNtt } from "./ntt.js";
7
7
  export declare const nttWithExecutorAbi: string[];
8
+ export declare const nttWithExecutorWithTokenAbi: string[];
8
9
  export declare class EvmNttWithExecutor<N extends Network, C extends EvmChains> implements NttWithExecutor<N, C> {
9
10
  readonly network: N;
10
11
  readonly chain: C;
@@ -13,12 +14,15 @@ export declare class EvmNttWithExecutor<N extends Network, C extends EvmChains>
13
14
  ntt?: Ntt.Contracts;
14
15
  };
15
16
  readonly chainId: bigint;
16
- readonly executorAddress: string;
17
+ readonly executorAddress: string | undefined;
18
+ readonly executorWithTokenAddress: string | undefined;
17
19
  constructor(network: N, chain: C, provider: Provider, contracts: Contracts & {
18
20
  ntt?: Ntt.Contracts;
19
21
  });
20
22
  static fromRpc<N extends Network>(provider: Provider, config: ChainsConfig<N, EvmPlatformType>): Promise<EvmNttWithExecutor<N, EvmChains>>;
23
+ private requireShimAddress;
21
24
  transfer(sender: AccountAddress<C>, destination: ChainAddress, amount: bigint, quote: NttWithExecutor.Quote, ntt: EvmNtt<N, C>, wrapNative?: boolean): AsyncGenerator<UnsignedTransaction<N, C>>;
25
+ private txDescription;
22
26
  private approveIfNeeded;
23
27
  estimateMsgValueAndGasLimit(recipient: ChainAddress | undefined): Promise<{
24
28
  msgValue: bigint;
@@ -29,4 +33,5 @@ export declare class EvmNttWithExecutor<N extends Network, C extends EvmChains>
29
33
  * Check if an executor (NttWithExecutor) is deployed for a given network and chain combination.
30
34
  */
31
35
  export declare function hasExecutorDeployed(network: Network, chain: EvmChains): boolean;
36
+ export declare function hasExecutorWithTokenDeployed(network: Network, chain: EvmChains): boolean;
32
37
  //# 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;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;YAwE7B,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
+ {"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;AAkElC,eAAO,MAAM,kBAAkB,UAG9B,CAAC;AAEF,eAAO,MAAM,2BAA2B,UAGvC,CAAC;AAEF,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,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,wBAAwB,EAAE,MAAM,GAAG,SAAS,CAAC;gBAG3C,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;WAa5C,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;IAc5C,OAAO,CAAC,kBAAkB;IAenB,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;IAyG5C,OAAO,CAAC,aAAa;YAWN,eAAe;IAuBxB,2BAA2B,CAC/B,SAAS,EAAE,YAAY,GAAG,SAAS,GAClC,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAMnD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,SAAS,GACf,OAAO,CAET;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,SAAS,GACf,OAAO,CAIT"}
@@ -1,11 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EvmNttWithExecutor = exports.nttWithExecutorAbi = void 0;
3
+ exports.EvmNttWithExecutor = exports.nttWithExecutorWithTokenAbi = exports.nttWithExecutorAbi = void 0;
4
4
  exports.hasExecutorDeployed = hasExecutorDeployed;
5
+ exports.hasExecutorWithTokenDeployed = hasExecutorWithTokenDeployed;
5
6
  const sdk_base_1 = require("@wormhole-foundation/sdk-base");
6
7
  const sdk_definitions_ntt_1 = require("@wormhole-foundation/sdk-definitions-ntt");
7
8
  const sdk_evm_1 = require("@wormhole-foundation/sdk-evm");
8
9
  const ethers_1 = require("ethers");
10
+ const executorGasLimits_js_1 = require("./executorGasLimits.js");
9
11
  const nttManagerWithExecutorAddresses = {
10
12
  Mainnet: {
11
13
  Arbitrum: "0x5029a23E0EE11f6c9120EAb7eB48a94a49907EC4",
@@ -52,26 +54,22 @@ const nttManagerWithExecutorAddresses = {
52
54
  ZeroGravity: "0x69BeC29e71711B30F58585C0bb1622e7b47e3707",
53
55
  },
54
56
  };
55
- // Gas limits must be high enough to cover the worst-case scenario for each chain
56
- // to avoid relay failures. However, they should not be too high to reduce the
57
- // `estimatedCost` returned by the quote endpoint.
58
- const gasLimitOverrides = {
57
+ const nttManagerWithExecutorWithTokenAddresses = {
59
58
  Mainnet: {
60
- Arbitrum: 800000n,
61
- CreditCoin: 1500000n,
62
- Monad: 1000000n,
63
- MegaETH: 1000000n,
64
- Seievm: 1000000n,
59
+ Tempo: "0x46d59af07A35751Deb45EC778150C7f0dFbb3d3a",
65
60
  },
66
61
  Testnet: {
67
- ArbitrumSepolia: 800000n,
68
- Seievm: 1000000n,
62
+ Tempo: "0x3A91179E506A15ff91467e42f5B4bD4239c6eC68",
69
63
  },
70
64
  };
71
65
  exports.nttWithExecutorAbi = [
72
66
  "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
67
  "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
68
  ];
69
+ exports.nttWithExecutorWithTokenAbi = [
70
+ "function transfer(address nttManager, uint256 amount, uint16 recipientChain, bytes32 recipientAddress, bytes32 refundAddress, bytes encodedInstructions, (uint256 value, uint256 amount, address srcToken, address refundAddress, bytes signedQuote, bytes instructions) executorArgs, (uint256 transferTokenFee, uint256 nativeTokenFee, address payee) feeArgs) external payable returns (uint64 msgId)",
71
+ "function transferETH(address nttManager, uint256 amount, uint16 recipientChain, bytes32 recipientAddress, bytes32 refundAddress, bytes encodedInstructions, (uint256 value, uint256 amount, address srcToken, address refundAddress, bytes signedQuote, bytes instructions) executorArgs, (uint256 transferTokenFee, uint256 nativeTokenFee, address payee) feeArgs) external payable returns (uint64 msgId)",
72
+ ];
75
73
  class EvmNttWithExecutor {
76
74
  network;
77
75
  chain;
@@ -79,16 +77,17 @@ class EvmNttWithExecutor {
79
77
  contracts;
80
78
  chainId;
81
79
  executorAddress;
80
+ executorWithTokenAddress;
82
81
  constructor(network, chain, provider, contracts) {
83
82
  this.network = network;
84
83
  this.chain = chain;
85
84
  this.provider = provider;
86
85
  this.contracts = contracts;
87
86
  this.chainId = sdk_base_1.nativeChainIds.networkChainToNativeChainId.get(network, chain);
88
- const executorAddress = nttManagerWithExecutorAddresses[this.network]?.[this.chain];
89
- if (!executorAddress)
90
- throw new Error(`Executor address not found for chain ${this.chain}`);
91
- this.executorAddress = executorAddress;
87
+ this.executorAddress =
88
+ nttManagerWithExecutorAddresses[this.network]?.[this.chain];
89
+ this.executorWithTokenAddress =
90
+ nttManagerWithExecutorWithTokenAddresses[this.network]?.[this.chain];
92
91
  }
93
92
  static async fromRpc(provider, config) {
94
93
  const [network, chain] = await sdk_evm_1.EvmPlatform.chainFromRpc(provider);
@@ -97,16 +96,44 @@ class EvmNttWithExecutor {
97
96
  throw new Error(`Network mismatch: ${conf.network} != ${network}`);
98
97
  return new EvmNttWithExecutor(network, chain, provider, conf.contracts);
99
98
  }
99
+ requireShimAddress(quote) {
100
+ if (quote.feeToken) {
101
+ if (!this.executorWithTokenAddress) {
102
+ throw new Error(`NttManagerWithExecutorWithToken address not found for chain ${this.chain}`);
103
+ }
104
+ return this.executorWithTokenAddress;
105
+ }
106
+ if (!this.executorAddress) {
107
+ throw new Error(`Executor address not found for chain ${this.chain}`);
108
+ }
109
+ return this.executorAddress;
110
+ }
100
111
  async *transfer(sender, destination, amount, quote, ntt, wrapNative = false) {
112
+ const shimAddress = this.requireShimAddress(quote);
101
113
  const senderAddress = new sdk_evm_1.EvmAddress(sender).toString();
102
114
  const deliveryPrice = await ntt.quoteDeliveryPrice(destination.chain, {
103
115
  queue: false,
104
116
  automatic: false,
105
117
  });
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);
118
+ const isTokenFee = quote.feeToken !== undefined;
119
+ const iface = new ethers_1.Interface(isTokenFee ? exports.nttWithExecutorWithTokenAbi : exports.nttWithExecutorAbi);
120
+ // executorArgs.value = native forwarded to the Executor: estimatedCost on
121
+ // the native-fee path, 0 on the token-fee path (the fee is pulled as ERC20).
122
+ const executorArgs = isTokenFee
123
+ ? {
124
+ value: 0n,
125
+ amount: quote.estimatedCost,
126
+ srcToken: quote.feeToken,
127
+ refundAddress: senderAddress,
128
+ signedQuote: quote.signedQuote,
129
+ instructions: quote.relayInstructions,
130
+ }
131
+ : {
132
+ value: quote.estimatedCost,
133
+ refundAddress: senderAddress,
134
+ signedQuote: quote.signedQuote,
135
+ instructions: quote.relayInstructions,
136
+ };
110
137
  const commonArgs = [
111
138
  ntt.managerAddress,
112
139
  quote.remainingAmount,
@@ -114,20 +141,21 @@ class EvmNttWithExecutor {
114
141
  destination.address.toUniversalAddress().toUint8Array(),
115
142
  sender.toUniversalAddress().toUint8Array(),
116
143
  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
- },
144
+ executorArgs,
123
145
  ];
146
+ // Merge into one approval when feeToken == bridged token (non-wrap only).
147
+ const sameTokenAsFee = isTokenFee &&
148
+ quote.feeToken.toLowerCase() === ntt.tokenAddress.toLowerCase();
149
+ const mergeFeeIntoBridgedApproval = sameTokenAsFee && !wrapNative;
150
+ if (isTokenFee && !mergeFeeIntoBridgedApproval) {
151
+ yield* this.approveIfNeeded(senderAddress, shimAddress, quote.feeToken, quote.estimatedCost, ntt);
152
+ }
124
153
  let data;
125
154
  let msgValue;
126
155
  if (wrapNative) {
127
- // The source token is native gas, so the contract can't pull
128
- // transferTokenFee as ERC20 from msg.sender (no WETH approval exists).
129
- // Fold it into nativeTokenFee denominated in the same units so the
130
- // referrer is paid out of msg.value directly.
156
+ // The source token is native gas, deposited into WETH by the shim, so
157
+ // transferTokenFee can't be pulled as ERC20. Fold it into nativeTokenFee
158
+ // (same units)the referrer is paid out of msg.value directly.
131
159
  const combinedNativeFee = quote.nativeTokenFee + quote.transferTokenFee;
132
160
  const feeArgs = {
133
161
  transferTokenFee: 0n,
@@ -136,8 +164,8 @@ class EvmNttWithExecutor {
136
164
  };
137
165
  data = iface.encodeFunctionData("transferETH", [...commonArgs, feeArgs]);
138
166
  msgValue =
139
- quote.estimatedCost +
140
- deliveryPrice +
167
+ deliveryPrice +
168
+ executorArgs.value +
141
169
  combinedNativeFee +
142
170
  quote.remainingAmount;
143
171
  }
@@ -147,22 +175,36 @@ class EvmNttWithExecutor {
147
175
  nativeTokenFee: quote.nativeTokenFee,
148
176
  payee: quote.referrer.address.toString(),
149
177
  };
150
- yield* this.approveIfNeeded(senderAddress, this.executorAddress, totalAmount, ntt);
178
+ const bridgedApprovalAmount = quote.remainingAmount +
179
+ quote.transferTokenFee +
180
+ (mergeFeeIntoBridgedApproval ? quote.estimatedCost : 0n);
181
+ yield* this.approveIfNeeded(senderAddress, shimAddress, ntt.tokenAddress, bridgedApprovalAmount, ntt);
151
182
  data = iface.encodeFunctionData("transfer", [...commonArgs, feeArgs]);
152
- msgValue = quote.estimatedCost + deliveryPrice + quote.nativeTokenFee;
183
+ msgValue = deliveryPrice + executorArgs.value + quote.nativeTokenFee;
153
184
  }
154
- yield ntt.createUnsignedTx({ to: this.executorAddress, data, value: msgValue }, wrapNative ? "NttWithExecutor.transferETH" : "NttWithExecutor.transfer");
185
+ yield ntt.createUnsignedTx({ to: shimAddress, data, value: msgValue }, this.txDescription(isTokenFee, wrapNative));
155
186
  }
156
- async *approveIfNeeded(senderAddress, contractAddress, requiredAmount, ntt) {
157
- const tokenContract = sdk_evm_1.EvmPlatform.getTokenImplementation(this.provider, ntt.tokenAddress);
158
- const allowance = await tokenContract.allowance(senderAddress, contractAddress);
187
+ txDescription(isTokenFee, wrapNative) {
188
+ if (isTokenFee) {
189
+ return wrapNative
190
+ ? "NttWithExecutorWithToken.transferETH"
191
+ : "NttWithExecutorWithToken.transfer";
192
+ }
193
+ return wrapNative
194
+ ? "NttWithExecutor.transferETH"
195
+ : "NttWithExecutor.transfer";
196
+ }
197
+ async *approveIfNeeded(senderAddress, spender, tokenAddress, requiredAmount, ntt) {
198
+ const tokenContract = sdk_evm_1.EvmPlatform.getTokenImplementation(this.provider, tokenAddress);
199
+ const allowance = await tokenContract.allowance(senderAddress, spender);
159
200
  if (allowance < requiredAmount) {
160
- const txReq = await tokenContract.approve.populateTransaction(contractAddress, requiredAmount);
201
+ const txReq = await tokenContract.approve.populateTransaction(spender, requiredAmount);
161
202
  yield ntt.createUnsignedTx(txReq, "Ntt.Approve");
162
203
  }
163
204
  }
164
205
  async estimateMsgValueAndGasLimit(recipient) {
165
- const gasLimit = gasLimitOverrides[this.network]?.[this.chain] ?? 500000n;
206
+ const gasLimit = executorGasLimits_js_1.executorGasLimitOverrides[this.network]?.[this.chain] ??
207
+ executorGasLimits_js_1.DEFAULT_EXECUTOR_GAS_LIMIT;
166
208
  return { msgValue: 0n, gasLimit };
167
209
  }
168
210
  }
@@ -173,4 +215,7 @@ exports.EvmNttWithExecutor = EvmNttWithExecutor;
173
215
  function hasExecutorDeployed(network, chain) {
174
216
  return nttManagerWithExecutorAddresses[network]?.[chain] !== undefined;
175
217
  }
218
+ function hasExecutorWithTokenDeployed(network, chain) {
219
+ return (nttManagerWithExecutorWithTokenAddresses[network]?.[chain] !== undefined);
220
+ }
176
221
  //# sourceMappingURL=nttWithExecutor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nttWithExecutor.js","sourceRoot":"","sources":["../../src/nttWithExecutor.ts"],"names":[],"mappings":";;;AA2PA,kDAKC;AAhQD,4DAIuC;AAQvC,kFAAgF;AAChF,0DAKsC;AACtC,mCAA6C;AAG7C,MAAM,+BAA+B,GAEjC;IACF,OAAO,EAAE;QACP,QAAQ,EAAE,4CAA4C;QACtD,SAAS,EAAE,4CAA4C;QACvD,IAAI,EAAE,4CAA4C;QAClD,SAAS,EAAE,4CAA4C;QACvD,GAAG,EAAE,4CAA4C;QACjD,IAAI,EAAE,4CAA4C;QAClD,UAAU,EAAE,4CAA4C;QACxD,QAAQ,EAAE,4CAA4C;QACtD,QAAQ,EAAE,4CAA4C;QACtD,GAAG,EAAE,4CAA4C;QACjD,KAAK,EAAE,4CAA4C;QACnD,OAAO,EAAE,4CAA4C;QACrD,IAAI,EAAE,4CAA4C;QAClD,IAAI,EAAE,4CAA4C;QAClD,KAAK,EAAE,4CAA4C;QACnD,QAAQ,EAAE,4CAA4C;QACtD,QAAQ,EAAE,4CAA4C;QACtD,KAAK,EAAE,4CAA4C;QACnD,OAAO,EAAE,4CAA4C;QACrD,MAAM,EAAE,4CAA4C;QACpD,KAAK,EAAE,4CAA4C;QACnD,QAAQ,EAAE,4CAA4C;QACtD,UAAU,EAAE,4CAA4C;QACxD,OAAO,EAAE,4CAA4C;QACrD,WAAW,EAAE,4CAA4C;KAC1D;IACD,OAAO,EAAE;QACP,eAAe,EAAE,4CAA4C;QAC7D,SAAS,EAAE,4CAA4C;QACvD,WAAW,EAAE,4CAA4C;QACzD,GAAG,EAAE,4CAA4C;QACjD,GAAG,EAAE,4CAA4C;QACjD,KAAK,EAAE,4CAA4C;QACnD,IAAI,EAAE,4CAA4C;QAClD,KAAK,EAAE,4CAA4C;QACnD,eAAe,EAAE,4CAA4C;QAC7D,KAAK,EAAE,4CAA4C;QACnD,MAAM,EAAE,4CAA4C;QACpD,OAAO,EAAE,4CAA4C;QACrD,QAAQ,EAAE,4CAA4C;QACtD,OAAO,EAAE,4CAA4C;QACrD,WAAW,EAAE,4CAA4C;KAC1D;CACF,CAAC;AAEF,iFAAiF;AACjF,8EAA8E;AAC9E,kDAAkD;AAClD,MAAM,iBAAiB,GAEnB;IACF,OAAO,EAAE;QACP,QAAQ,EAAE,OAAQ;QAClB,UAAU,EAAE,QAAU;QACtB,KAAK,EAAE,QAAU;QACjB,OAAO,EAAE,QAAU;QACnB,MAAM,EAAE,QAAU;KACnB;IACD,OAAO,EAAE;QACP,eAAe,EAAE,OAAQ;QACzB,MAAM,EAAE,QAAU;KACnB;CACF,CAAC;AAEW,QAAA,kBAAkB,GAAG;IAChC,yWAAyW;IACzW,4WAA4W;CAC7W,CAAC;AAEF,MAAa,kBAAkB;IAOlB;IACA;IACA;IACA;IAPF,OAAO,CAAS;IAChB,eAAe,CAAS;IAEjC,YACW,OAAU,EACV,KAAQ,EACR,QAAkB,EAClB,SAA8C;QAH9C,YAAO,GAAP,OAAO,CAAG;QACV,UAAK,GAAL,KAAK,CAAG;QACR,aAAQ,GAAR,QAAQ,CAAU;QAClB,cAAS,GAAT,SAAS,CAAqC;QAEvD,IAAI,CAAC,OAAO,GAAG,yBAAc,CAAC,2BAA2B,CAAC,GAAG,CAC3D,OAAO,EACP,KAAK,CACI,CAAC;QAEZ,MAAM,eAAe,GACnB,+BAA+B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9D,IAAI,CAAC,eAAe;YAClB,MAAM,IAAI,KAAK,CAAC,wCAAwC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAClB,QAAkB,EAClB,MAAwC;QAExC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,MAAM,qBAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO;YAC1B,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAC,OAAO,OAAO,OAAO,EAAE,CAAC,CAAC;QAErE,OAAO,IAAI,kBAAkB,CAC3B,OAAY,EACZ,KAAK,EACL,QAAQ,EACR,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,CAAC,QAAQ,CACb,MAAyB,EACzB,WAAyB,EACzB,MAAc,EACd,KAA4B,EAC5B,GAAiB,EACjB,aAAsB,KAAK;QAE3B,MAAM,aAAa,GAAG,IAAI,oBAAU,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QACxD,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,WAAW,CAAC,KAAK,EAAE;YACpE,KAAK,EAAE,KAAK;YACZ,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;QAEH,4CAA4C;QAC5C,6EAA6E;QAC7E,MAAM,WAAW,GAAG,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC,gBAAgB,CAAC;QAEnE,MAAM,KAAK,GAAG,IAAI,kBAAS,CAAC,0BAAkB,CAAC,CAAC;QAEhD,MAAM,UAAU,GAAG;YACjB,GAAG,CAAC,cAAc;YAClB,KAAK,CAAC,eAAe;YACrB,IAAA,oBAAS,EAAC,WAAW,CAAC,KAAK,CAAC;YAC5B,WAAW,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,YAAY,EAAE;YACvD,MAAM,CAAC,kBAAkB,EAAE,CAAC,YAAY,EAAE;YAC1C,yBAAG,CAAC,6BAA6B,CAC/B,GAAG,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CACtD;YACD;gBACE,KAAK,EAAE,KAAK,CAAC,aAAa;gBAC1B,aAAa,EAAE,aAAa;gBAC5B,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,YAAY,EAAE,KAAK,CAAC,iBAAiB;aACtC;SACO,CAAC;QAEX,IAAI,IAAY,CAAC;QACjB,IAAI,QAAgB,CAAC;QAErB,IAAI,UAAU,EAAE,CAAC;YACf,6DAA6D;YAC7D,uEAAuE;YACvE,uEAAuE;YACvE,8CAA8C;YAC9C,MAAM,iBAAiB,GAAG,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,gBAAgB,CAAC;YACxE,MAAM,OAAO,GAAG;gBACd,gBAAgB,EAAE,EAAE;gBACpB,cAAc,EAAE,iBAAiB;gBACjC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE;aACzC,CAAC;YACF,IAAI,GAAG,KAAK,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC,GAAG,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;YACzE,QAAQ;gBACN,KAAK,CAAC,aAAa;oBACnB,aAAa;oBACb,iBAAiB;oBACjB,KAAK,CAAC,eAAe,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG;gBACd,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;gBACxC,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE;aACzC,CAAC;YACF,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,CACzB,aAAa,EACb,IAAI,CAAC,eAAe,EACpB,WAAW,EACX,GAAG,CACJ,CAAC;YACF,IAAI,GAAG,KAAK,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC,GAAG,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;YACtE,QAAQ,GAAG,KAAK,CAAC,aAAa,GAAG,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC;QACxE,CAAC;QAED,MAAM,GAAG,CAAC,gBAAgB,CACxB,EAAE,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EACnD,UAAU,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,0BAA0B,CACxE,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,CAAC,eAAe,CAC5B,aAAqB,EACrB,eAAuB,EACvB,cAAsB,EACtB,GAAiB;QAEjB,MAAM,aAAa,GAAG,qBAAW,CAAC,sBAAsB,CACtD,IAAI,CAAC,QAAQ,EACb,GAAG,CAAC,YAAY,CACjB,CAAC;QAEF,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,SAAS,CAC7C,aAAa,EACb,eAAe,CAChB,CAAC;QAEF,IAAI,SAAS,GAAG,cAAc,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,mBAAmB,CAC3D,eAAe,EACf,cAAc,CACf,CAAC;YACF,MAAM,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,2BAA2B,CAC/B,SAAmC;QAEnC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,OAAQ,CAAC;QAC3E,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;IACpC,CAAC;CACF;AAvJD,gDAuJC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CACjC,OAAgB,EAChB,KAAgB;IAEhB,OAAO,+BAA+B,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC;AACzE,CAAC"}
1
+ {"version":3,"file":"nttWithExecutor.js","sourceRoot":"","sources":["../../src/nttWithExecutor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { Network } from "@wormhole-foundation/sdk-base";
2
+ import type { EvmChains } from "@wormhole-foundation/sdk-evm";
3
+ export declare const executorGasLimitOverrides: Partial<Record<Network, Partial<Record<EvmChains, bigint>>>>;
4
+ export declare const DEFAULT_EXECUTOR_GAS_LIMIT = 500000n;
5
+ //# sourceMappingURL=executorGasLimits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executorGasLimits.d.ts","sourceRoot":"","sources":["../../src/executorGasLimits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAK9D,eAAO,MAAM,yBAAyB,EAAE,OAAO,CAC7C,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAcpD,CAAC;AAEF,eAAO,MAAM,0BAA0B,UAAW,CAAC"}
@@ -0,0 +1,19 @@
1
+ // Must be high enough to cover the destination chain's worst case (otherwise
2
+ // the executor's relay simulation reverts), but not so high that it inflates
3
+ // the `estimatedCost` returned by /v0/quote.
4
+ export const executorGasLimitOverrides = {
5
+ Mainnet: {
6
+ Arbitrum: 800000n,
7
+ CreditCoin: 1500000n,
8
+ Monad: 1000000n,
9
+ MegaETH: 1000000n,
10
+ Seievm: 1000000n,
11
+ },
12
+ Testnet: {
13
+ ArbitrumSepolia: 800000n,
14
+ Seievm: 1000000n,
15
+ Tempo: 1500000n,
16
+ },
17
+ };
18
+ export const DEFAULT_EXECUTOR_GAS_LIMIT = 500000n;
19
+ //# sourceMappingURL=executorGasLimits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executorGasLimits.js","sourceRoot":"","sources":["../../src/executorGasLimits.ts"],"names":[],"mappings":"AAGA,6EAA6E;AAC7E,6EAA6E;AAC7E,6CAA6C;AAC7C,MAAM,CAAC,MAAM,yBAAyB,GAElC;IACF,OAAO,EAAE;QACP,QAAQ,EAAE,OAAQ;QAClB,UAAU,EAAE,QAAU;QACtB,KAAK,EAAE,QAAU;QACjB,OAAO,EAAE,QAAU;QACnB,MAAM,EAAE,QAAU;KACnB;IACD,OAAO,EAAE;QACP,eAAe,EAAE,OAAQ;QACzB,MAAM,EAAE,QAAU;QAClB,KAAK,EAAE,QAAU;KAClB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,OAAQ,CAAC"}
@@ -5,6 +5,7 @@ import { type EvmPlatformType, type EvmChains } from "@wormhole-foundation/sdk-e
5
5
  import { Provider } from "ethers";
6
6
  import { EvmNtt } from "./ntt.js";
7
7
  export declare const nttWithExecutorAbi: string[];
8
+ export declare const nttWithExecutorWithTokenAbi: string[];
8
9
  export declare class EvmNttWithExecutor<N extends Network, C extends EvmChains> implements NttWithExecutor<N, C> {
9
10
  readonly network: N;
10
11
  readonly chain: C;
@@ -13,12 +14,15 @@ export declare class EvmNttWithExecutor<N extends Network, C extends EvmChains>
13
14
  ntt?: Ntt.Contracts;
14
15
  };
15
16
  readonly chainId: bigint;
16
- readonly executorAddress: string;
17
+ readonly executorAddress: string | undefined;
18
+ readonly executorWithTokenAddress: string | undefined;
17
19
  constructor(network: N, chain: C, provider: Provider, contracts: Contracts & {
18
20
  ntt?: Ntt.Contracts;
19
21
  });
20
22
  static fromRpc<N extends Network>(provider: Provider, config: ChainsConfig<N, EvmPlatformType>): Promise<EvmNttWithExecutor<N, EvmChains>>;
23
+ private requireShimAddress;
21
24
  transfer(sender: AccountAddress<C>, destination: ChainAddress, amount: bigint, quote: NttWithExecutor.Quote, ntt: EvmNtt<N, C>, wrapNative?: boolean): AsyncGenerator<UnsignedTransaction<N, C>>;
25
+ private txDescription;
22
26
  private approveIfNeeded;
23
27
  estimateMsgValueAndGasLimit(recipient: ChainAddress | undefined): Promise<{
24
28
  msgValue: bigint;
@@ -29,4 +33,5 @@ export declare class EvmNttWithExecutor<N extends Network, C extends EvmChains>
29
33
  * Check if an executor (NttWithExecutor) is deployed for a given network and chain combination.
30
34
  */
31
35
  export declare function hasExecutorDeployed(network: Network, chain: EvmChains): boolean;
36
+ export declare function hasExecutorWithTokenDeployed(network: Network, chain: EvmChains): boolean;
32
37
  //# 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;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;YAwE7B,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
+ {"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;AAkElC,eAAO,MAAM,kBAAkB,UAG9B,CAAC;AAEF,eAAO,MAAM,2BAA2B,UAGvC,CAAC;AAEF,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,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,wBAAwB,EAAE,MAAM,GAAG,SAAS,CAAC;gBAG3C,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;WAa5C,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;IAc5C,OAAO,CAAC,kBAAkB;IAenB,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;IAyG5C,OAAO,CAAC,aAAa;YAWN,eAAe;IAuBxB,2BAA2B,CAC/B,SAAS,EAAE,YAAY,GAAG,SAAS,GAClC,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAMnD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,SAAS,GACf,OAAO,CAET;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,SAAS,GACf,OAAO,CAIT"}
@@ -2,6 +2,7 @@ import { nativeChainIds, toChainId, } from "@wormhole-foundation/sdk-base";
2
2
  import { Ntt } from "@wormhole-foundation/sdk-definitions-ntt";
3
3
  import { EvmPlatform, EvmAddress, } from "@wormhole-foundation/sdk-evm";
4
4
  import { Interface } from "ethers";
5
+ import { DEFAULT_EXECUTOR_GAS_LIMIT, executorGasLimitOverrides, } from "./executorGasLimits.js";
5
6
  const nttManagerWithExecutorAddresses = {
6
7
  Mainnet: {
7
8
  Arbitrum: "0x5029a23E0EE11f6c9120EAb7eB48a94a49907EC4",
@@ -48,26 +49,22 @@ const nttManagerWithExecutorAddresses = {
48
49
  ZeroGravity: "0x69BeC29e71711B30F58585C0bb1622e7b47e3707",
49
50
  },
50
51
  };
51
- // Gas limits must be high enough to cover the worst-case scenario for each chain
52
- // to avoid relay failures. However, they should not be too high to reduce the
53
- // `estimatedCost` returned by the quote endpoint.
54
- const gasLimitOverrides = {
52
+ const nttManagerWithExecutorWithTokenAddresses = {
55
53
  Mainnet: {
56
- Arbitrum: 800000n,
57
- CreditCoin: 1500000n,
58
- Monad: 1000000n,
59
- MegaETH: 1000000n,
60
- Seievm: 1000000n,
54
+ Tempo: "0x46d59af07A35751Deb45EC778150C7f0dFbb3d3a",
61
55
  },
62
56
  Testnet: {
63
- ArbitrumSepolia: 800000n,
64
- Seievm: 1000000n,
57
+ Tempo: "0x3A91179E506A15ff91467e42f5B4bD4239c6eC68",
65
58
  },
66
59
  };
67
60
  export const nttWithExecutorAbi = [
68
61
  "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
62
  "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
63
  ];
64
+ export const nttWithExecutorWithTokenAbi = [
65
+ "function transfer(address nttManager, uint256 amount, uint16 recipientChain, bytes32 recipientAddress, bytes32 refundAddress, bytes encodedInstructions, (uint256 value, uint256 amount, address srcToken, address refundAddress, bytes signedQuote, bytes instructions) executorArgs, (uint256 transferTokenFee, uint256 nativeTokenFee, address payee) feeArgs) external payable returns (uint64 msgId)",
66
+ "function transferETH(address nttManager, uint256 amount, uint16 recipientChain, bytes32 recipientAddress, bytes32 refundAddress, bytes encodedInstructions, (uint256 value, uint256 amount, address srcToken, address refundAddress, bytes signedQuote, bytes instructions) executorArgs, (uint256 transferTokenFee, uint256 nativeTokenFee, address payee) feeArgs) external payable returns (uint64 msgId)",
67
+ ];
71
68
  export class EvmNttWithExecutor {
72
69
  network;
73
70
  chain;
@@ -75,16 +72,17 @@ export class EvmNttWithExecutor {
75
72
  contracts;
76
73
  chainId;
77
74
  executorAddress;
75
+ executorWithTokenAddress;
78
76
  constructor(network, chain, provider, contracts) {
79
77
  this.network = network;
80
78
  this.chain = chain;
81
79
  this.provider = provider;
82
80
  this.contracts = contracts;
83
81
  this.chainId = nativeChainIds.networkChainToNativeChainId.get(network, chain);
84
- const executorAddress = nttManagerWithExecutorAddresses[this.network]?.[this.chain];
85
- if (!executorAddress)
86
- throw new Error(`Executor address not found for chain ${this.chain}`);
87
- this.executorAddress = executorAddress;
82
+ this.executorAddress =
83
+ nttManagerWithExecutorAddresses[this.network]?.[this.chain];
84
+ this.executorWithTokenAddress =
85
+ nttManagerWithExecutorWithTokenAddresses[this.network]?.[this.chain];
88
86
  }
89
87
  static async fromRpc(provider, config) {
90
88
  const [network, chain] = await EvmPlatform.chainFromRpc(provider);
@@ -93,16 +91,44 @@ export class EvmNttWithExecutor {
93
91
  throw new Error(`Network mismatch: ${conf.network} != ${network}`);
94
92
  return new EvmNttWithExecutor(network, chain, provider, conf.contracts);
95
93
  }
94
+ requireShimAddress(quote) {
95
+ if (quote.feeToken) {
96
+ if (!this.executorWithTokenAddress) {
97
+ throw new Error(`NttManagerWithExecutorWithToken address not found for chain ${this.chain}`);
98
+ }
99
+ return this.executorWithTokenAddress;
100
+ }
101
+ if (!this.executorAddress) {
102
+ throw new Error(`Executor address not found for chain ${this.chain}`);
103
+ }
104
+ return this.executorAddress;
105
+ }
96
106
  async *transfer(sender, destination, amount, quote, ntt, wrapNative = false) {
107
+ const shimAddress = this.requireShimAddress(quote);
97
108
  const senderAddress = new EvmAddress(sender).toString();
98
109
  const deliveryPrice = await ntt.quoteDeliveryPrice(destination.chain, {
99
110
  queue: false,
100
111
  automatic: false,
101
112
  });
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);
113
+ const isTokenFee = quote.feeToken !== undefined;
114
+ const iface = new Interface(isTokenFee ? nttWithExecutorWithTokenAbi : nttWithExecutorAbi);
115
+ // executorArgs.value = native forwarded to the Executor: estimatedCost on
116
+ // the native-fee path, 0 on the token-fee path (the fee is pulled as ERC20).
117
+ const executorArgs = isTokenFee
118
+ ? {
119
+ value: 0n,
120
+ amount: quote.estimatedCost,
121
+ srcToken: quote.feeToken,
122
+ refundAddress: senderAddress,
123
+ signedQuote: quote.signedQuote,
124
+ instructions: quote.relayInstructions,
125
+ }
126
+ : {
127
+ value: quote.estimatedCost,
128
+ refundAddress: senderAddress,
129
+ signedQuote: quote.signedQuote,
130
+ instructions: quote.relayInstructions,
131
+ };
106
132
  const commonArgs = [
107
133
  ntt.managerAddress,
108
134
  quote.remainingAmount,
@@ -110,20 +136,21 @@ export class EvmNttWithExecutor {
110
136
  destination.address.toUniversalAddress().toUint8Array(),
111
137
  sender.toUniversalAddress().toUint8Array(),
112
138
  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
- },
139
+ executorArgs,
119
140
  ];
141
+ // Merge into one approval when feeToken == bridged token (non-wrap only).
142
+ const sameTokenAsFee = isTokenFee &&
143
+ quote.feeToken.toLowerCase() === ntt.tokenAddress.toLowerCase();
144
+ const mergeFeeIntoBridgedApproval = sameTokenAsFee && !wrapNative;
145
+ if (isTokenFee && !mergeFeeIntoBridgedApproval) {
146
+ yield* this.approveIfNeeded(senderAddress, shimAddress, quote.feeToken, quote.estimatedCost, ntt);
147
+ }
120
148
  let data;
121
149
  let msgValue;
122
150
  if (wrapNative) {
123
- // The source token is native gas, so the contract can't pull
124
- // transferTokenFee as ERC20 from msg.sender (no WETH approval exists).
125
- // Fold it into nativeTokenFee denominated in the same units so the
126
- // referrer is paid out of msg.value directly.
151
+ // The source token is native gas, deposited into WETH by the shim, so
152
+ // transferTokenFee can't be pulled as ERC20. Fold it into nativeTokenFee
153
+ // (same units)the referrer is paid out of msg.value directly.
127
154
  const combinedNativeFee = quote.nativeTokenFee + quote.transferTokenFee;
128
155
  const feeArgs = {
129
156
  transferTokenFee: 0n,
@@ -132,8 +159,8 @@ export class EvmNttWithExecutor {
132
159
  };
133
160
  data = iface.encodeFunctionData("transferETH", [...commonArgs, feeArgs]);
134
161
  msgValue =
135
- quote.estimatedCost +
136
- deliveryPrice +
162
+ deliveryPrice +
163
+ executorArgs.value +
137
164
  combinedNativeFee +
138
165
  quote.remainingAmount;
139
166
  }
@@ -143,22 +170,36 @@ export class EvmNttWithExecutor {
143
170
  nativeTokenFee: quote.nativeTokenFee,
144
171
  payee: quote.referrer.address.toString(),
145
172
  };
146
- yield* this.approveIfNeeded(senderAddress, this.executorAddress, totalAmount, ntt);
173
+ const bridgedApprovalAmount = quote.remainingAmount +
174
+ quote.transferTokenFee +
175
+ (mergeFeeIntoBridgedApproval ? quote.estimatedCost : 0n);
176
+ yield* this.approveIfNeeded(senderAddress, shimAddress, ntt.tokenAddress, bridgedApprovalAmount, ntt);
147
177
  data = iface.encodeFunctionData("transfer", [...commonArgs, feeArgs]);
148
- msgValue = quote.estimatedCost + deliveryPrice + quote.nativeTokenFee;
178
+ msgValue = deliveryPrice + executorArgs.value + quote.nativeTokenFee;
149
179
  }
150
- yield ntt.createUnsignedTx({ to: this.executorAddress, data, value: msgValue }, wrapNative ? "NttWithExecutor.transferETH" : "NttWithExecutor.transfer");
180
+ yield ntt.createUnsignedTx({ to: shimAddress, data, value: msgValue }, this.txDescription(isTokenFee, wrapNative));
151
181
  }
152
- async *approveIfNeeded(senderAddress, contractAddress, requiredAmount, ntt) {
153
- const tokenContract = EvmPlatform.getTokenImplementation(this.provider, ntt.tokenAddress);
154
- const allowance = await tokenContract.allowance(senderAddress, contractAddress);
182
+ txDescription(isTokenFee, wrapNative) {
183
+ if (isTokenFee) {
184
+ return wrapNative
185
+ ? "NttWithExecutorWithToken.transferETH"
186
+ : "NttWithExecutorWithToken.transfer";
187
+ }
188
+ return wrapNative
189
+ ? "NttWithExecutor.transferETH"
190
+ : "NttWithExecutor.transfer";
191
+ }
192
+ async *approveIfNeeded(senderAddress, spender, tokenAddress, requiredAmount, ntt) {
193
+ const tokenContract = EvmPlatform.getTokenImplementation(this.provider, tokenAddress);
194
+ const allowance = await tokenContract.allowance(senderAddress, spender);
155
195
  if (allowance < requiredAmount) {
156
- const txReq = await tokenContract.approve.populateTransaction(contractAddress, requiredAmount);
196
+ const txReq = await tokenContract.approve.populateTransaction(spender, requiredAmount);
157
197
  yield ntt.createUnsignedTx(txReq, "Ntt.Approve");
158
198
  }
159
199
  }
160
200
  async estimateMsgValueAndGasLimit(recipient) {
161
- const gasLimit = gasLimitOverrides[this.network]?.[this.chain] ?? 500000n;
201
+ const gasLimit = executorGasLimitOverrides[this.network]?.[this.chain] ??
202
+ DEFAULT_EXECUTOR_GAS_LIMIT;
162
203
  return { msgValue: 0n, gasLimit };
163
204
  }
164
205
  }
@@ -168,4 +209,7 @@ export class EvmNttWithExecutor {
168
209
  export function hasExecutorDeployed(network, chain) {
169
210
  return nttManagerWithExecutorAddresses[network]?.[chain] !== undefined;
170
211
  }
212
+ export function hasExecutorWithTokenDeployed(network, chain) {
213
+ return (nttManagerWithExecutorWithTokenAddresses[network]?.[chain] !== undefined);
214
+ }
171
215
  //# sourceMappingURL=nttWithExecutor.js.map
@@ -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": "6.0.0-beta.3",
3
+ "version": "6.1.0",
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": "6.0.0-beta.3",
49
+ "@wormhole-foundation/sdk-definitions-ntt": "6.1.0",
50
50
  "ethers": "^6.5.1"
51
51
  },
52
52
  "devDependencies": {