@wormhole-labs/cctp-executor-route 0.26.0-beta.5 → 0.26.0-beta.6

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.
@@ -1 +1 @@
1
- {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/evm/executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,OAAO,EACP,QAAQ,EACT,MAAM,kCAAkC,CAAC;AAO1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAGL,sBAAsB,EAGvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,QAAQ,EAAsB,MAAM,QAAQ,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,qBAAa,eAAe,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,SAAS,CACjE,YAAW,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;IAM3B,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS;IAP/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;gBAGnB,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS;WAelB,OAAO,CAAC,CAAC,SAAS,OAAO,EACpC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,GAChC,OAAO,CAAC,eAAe,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAQlC,QAAQ,CACb,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,YAAY,GACpB,cAAc,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAgE/C,OAAO,CAAC,gBAAgB;CAazB"}
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/evm/executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,OAAO,EACP,QAAQ,EACT,MAAM,kCAAkC,CAAC;AAO1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAGL,sBAAsB,EAGvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,QAAQ,EAAsB,MAAM,QAAQ,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,qBAAa,eAAe,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,SAAS,CACjE,YAAW,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;IAM3B,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS;IAP/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;gBAGnB,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS;WAelB,OAAO,CAAC,CAAC,SAAS,OAAO,EACpC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,GAChC,OAAO,CAAC,eAAe,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAQlC,QAAQ,CACb,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,YAAY,GACpB,cAAc,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAsE/C,OAAO,CAAC,gBAAgB;CAazB"}
@@ -37,12 +37,16 @@ class EvmCCTPExecutor {
37
37
  const recipientAddress = recipient.address
38
38
  .toUniversalAddress()
39
39
  .toUint8Array();
40
- const amount = details.remainingAmount + details.transferTokenFee;
40
+ // The shim contract pulls tokens in two separate transferFrom calls:
41
+ // 1. custodyTokens: transfers `amount` (the burn amount)
42
+ // 2. payFee: transfers `transferTokenFee` (the referrer fee)
43
+ // So the total allowance needed is remainingAmount + transferTokenFee.
44
+ const totalAmount = details.remainingAmount + details.transferTokenFee;
41
45
  const tokenAddr = sdk_connect_1.circle.usdcContract.get(this.network, this.chain);
42
46
  const tokenContract = sdk_evm_1.EvmPlatform.getTokenImplementation(this.provider, tokenAddr);
43
47
  const allowance = await tokenContract.allowance(senderAddress, this.shimContract);
44
- if (allowance < amount) {
45
- const txReq = await tokenContract.approve.populateTransaction(this.shimContract, amount);
48
+ if (allowance < totalAmount) {
49
+ const txReq = await tokenContract.approve.populateTransaction(this.shimContract, totalAmount);
46
50
  yield this.createUnsignedTx((0, sdk_evm_1.addFrom)(txReq, senderAddress), "ERC20.approve of EvmCCTPExecutor", false);
47
51
  }
48
52
  // TODO: type safety. typechain brings in so much boilerplate code and is soft deprecated. use viem?
@@ -50,7 +54,9 @@ class EvmCCTPExecutor {
50
54
  "function depositForBurn(uint256 amount, uint16 destinationChain, uint32 destinationDomain, bytes32 mintRecipient, address burnToken, (address refundAddress, bytes signedQuote, bytes instructions) executorArgs, (uint256 transferTokenFee, uint256 nativeTokenFee, address payee) feeArgs) external payable returns (uint64 nonce)",
51
55
  ];
52
56
  const shim = new ethers_1.Contract(this.shimContract, shimAbi, this.provider);
53
- const txReq = await shim.getFunction("depositForBurn").populateTransaction(amount, (0, sdk_connect_1.toChainId)(recipient.chain), sdk_connect_1.circle.circleChainId.get(this.network, recipient.chain), recipientAddress, tokenAddr, {
57
+ // Pass remainingAmount as the contract's `amount` parameter (the burn amount).
58
+ // The fee is collected separately by the contract via feeArgs.transferTokenFee.
59
+ const txReq = await shim.getFunction("depositForBurn").populateTransaction(details.remainingAmount, (0, sdk_connect_1.toChainId)(recipient.chain), sdk_connect_1.circle.circleChainId.get(this.network, recipient.chain), recipientAddress, tokenAddr, {
54
60
  refundAddress: senderAddress,
55
61
  signedQuote: details.signedQuote,
56
62
  instructions: details.relayInstructions,
@@ -1 +1 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/evm/executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/evm/executor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"executorV2.d.ts","sourceRoot":"","sources":["../../../src/evm/executorV2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,OAAO,EACP,QAAQ,EACT,MAAM,kCAAkC,CAAC;AAQ1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAGL,sBAAsB,EAGvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,QAAQ,EAAsB,MAAM,QAAQ,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAM1C,OAAO,EAAE,eAAe,EAA4B,MAAM,YAAY,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,qBAAa,iBAAiB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,SAAS,CACnE,YAAW,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;IAQ7B,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS;IAT/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;gBAGnB,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS;WAyBlB,OAAO,CAAC,CAAC,SAAS,OAAO,EACpC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,GAChC,OAAO,CAAC,iBAAiB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAQpC,QAAQ,CACb,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,kBAAkB,GAC1B,cAAc,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAyEzC,mBAAmB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAc9D,MAAM,CACX,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,OAAO,EAAE,eAAe,EACxB,WAAW,EAAE,MAAM,GAClB,cAAc,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAsBzC,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAIxC,OAAO,CAAC,gBAAgB;CAazB"}
1
+ {"version":3,"file":"executorV2.d.ts","sourceRoot":"","sources":["../../../src/evm/executorV2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,OAAO,EACP,QAAQ,EACT,MAAM,kCAAkC,CAAC;AAQ1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAGL,sBAAsB,EAGvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,QAAQ,EAAsB,MAAM,QAAQ,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAM1C,OAAO,EAAE,eAAe,EAA4B,MAAM,YAAY,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,qBAAa,iBAAiB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,SAAS,CACnE,YAAW,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;IAQ7B,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS;IAT/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;gBAGnB,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS;WAyBlB,OAAO,CAAC,CAAC,SAAS,OAAO,EACpC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,GAChC,OAAO,CAAC,iBAAiB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAQpC,QAAQ,CACb,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,kBAAkB,GAC1B,cAAc,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IA+EzC,mBAAmB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAc9D,MAAM,CACX,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,OAAO,EAAE,eAAe,EACxB,WAAW,EAAE,MAAM,GAClB,cAAc,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAsBzC,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAIxC,OAAO,CAAC,gBAAgB;CAazB"}
@@ -48,11 +48,15 @@ class EvmCCTPv2Executor {
48
48
  const recipientAddress = recipient.address
49
49
  .toUniversalAddress()
50
50
  .toUint8Array();
51
- const amount = details.remainingAmount + details.transferTokenFee;
51
+ // The shim contract pulls tokens in two separate transferFrom calls:
52
+ // 1. custodyTokens: transfers `amount` (the burn amount)
53
+ // 2. payFee: transfers `transferTokenFee` (the referrer fee)
54
+ // So the total allowance needed is remainingAmount + transferTokenFee.
55
+ const totalAmount = details.remainingAmount + details.transferTokenFee;
52
56
  const tokenContract = sdk_evm_1.EvmPlatform.getTokenImplementation(this.provider, this.usdcContract);
53
57
  const allowance = await tokenContract.allowance(senderAddress, this.shimContract);
54
- if (allowance < amount) {
55
- const txReq = await tokenContract.approve.populateTransaction(this.shimContract, amount);
58
+ if (allowance < totalAmount) {
59
+ const txReq = await tokenContract.approve.populateTransaction(this.shimContract, totalAmount);
56
60
  yield this.createUnsignedTx((0, sdk_evm_1.addFrom)(txReq, senderAddress), "ERC20.approve of EvmCCTPv2Executor", false);
57
61
  }
58
62
  // TODO: type safety. typechain brings in so much boilerplate code and is soft deprecated. use viem?
@@ -63,7 +67,9 @@ class EvmCCTPv2Executor {
63
67
  const destinationCaller = new Uint8Array(32);
64
68
  const shim = new ethers_1.Contract(this.shimContract, shimAbi, this.provider);
65
69
  const destinationCircleDomain = (0, consts_1.getCircleV2Domain)(this.network, recipient.chain);
66
- const txReq = await shim.getFunction("depositForBurn").populateTransaction(amount, (0, sdk_connect_1.toChainId)(recipient.chain), destinationCircleDomain, recipientAddress, this.usdcContract, destinationCaller, details.fastTransferMaxFee, details.minFinalityThreshold, {
70
+ // Pass remainingAmount as the contract's `amount` parameter (the burn amount).
71
+ // The fee is collected separately by the contract via feeArgs.transferTokenFee.
72
+ const txReq = await shim.getFunction("depositForBurn").populateTransaction(details.remainingAmount, (0, sdk_connect_1.toChainId)(recipient.chain), destinationCircleDomain, recipientAddress, this.usdcContract, destinationCaller, details.fastTransferMaxFee, details.minFinalityThreshold, {
67
73
  refundAddress: senderAddress,
68
74
  signedQuote: details.signedQuote,
69
75
  instructions: details.relayInstructions,
@@ -1 +1 @@
1
- {"version":3,"file":"executorV2.js","sourceRoot":"","sources":["../../../src/evm/executorV2.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executorV2.js","sourceRoot":"","sources":["../../../src/evm/executorV2.ts"],"names":[],"mappings":";;;AAQA,kEAK0C;AAG1C,0DAMsC;AAEtC,mCAAkC;AAElC,sCAImB;AACnB,wCAAuE;AAGvE,MAAa,iBAAiB;IASjB;IACA;IACA;IACA;IATF,OAAO,CAAS;IAChB,YAAY,CAAS;IACrB,kBAAkB,CAAS;IAC3B,YAAY,CAAS;IAE9B,YACW,OAAU,EACV,KAAQ,EACR,QAAkB,EAClB,SAAoB;QAHpB,YAAO,GAAP,OAAO,CAAG;QACV,UAAK,GAAL,KAAK,CAAG;QACR,aAAQ,GAAR,QAAQ,CAAU;QAClB,cAAS,GAAT,SAAS,CAAW;QAE7B,IAAI,OAAO,KAAK,QAAQ;YACtB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAE5D,IAAI,CAAC,OAAO,GAAG,4BAAc,CAAC,2BAA2B,CAAC,GAAG,CAC3D,OAAO,EACP,KAAK,CACI,CAAC;QAEZ,MAAM,YAAY,GAAG,wBAAe,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACvD,IAAI,CAAC,YAAY;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,KAAK,YAAY,CAAC,CAAC;QAC3E,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QAEjC,MAAM,kBAAkB,GACtB,0BAAiB,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,oBAAoB,CAAC;QAC5D,IAAI,CAAC,kBAAkB;YACrB,MAAM,IAAI,KAAK,CAAC,mCAAmC,KAAK,YAAY,CAAC,CAAC;QACxE,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAE7C,MAAM,YAAY,GAAG,oBAAM,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC7D,IAAI,CAAC,YAAY;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,KAAK,YAAY,CAAC,CAAC;QAC3E,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAClB,QAAkB,EAClB,MAAiC;QAEjC,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;QACrE,OAAO,IAAI,iBAAiB,CAAC,OAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,CAAC,QAAQ,CACb,MAAyB,EACzB,SAAuB,EACvB,OAA2B;QAE3B,MAAM,aAAa,GAAG,IAAI,oBAAU,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QACxD,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAO;aACvC,kBAAkB,EAAE;aACpB,YAAY,EAAE,CAAC;QAElB,qEAAqE;QACrE,yDAAyD;QACzD,6DAA6D;QAC7D,uEAAuE;QACvE,MAAM,WAAW,GAAG,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;QAEvE,MAAM,aAAa,GAAG,qBAAW,CAAC,sBAAsB,CACtD,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,YAAY,CAClB,CAAC;QAEF,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,SAAS,CAC7C,aAAa,EACb,IAAI,CAAC,YAAY,CAClB,CAAC;QAEF,IAAI,SAAS,GAAG,WAAW,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,mBAAmB,CAC3D,IAAI,CAAC,YAAY,EACjB,WAAW,CACZ,CAAC;YACF,MAAM,IAAI,CAAC,gBAAgB,CACzB,IAAA,iBAAO,EAAC,KAAK,EAAE,aAAa,CAAC,EAC7B,oCAAoC,EACpC,KAAK,CACN,CAAC;QACJ,CAAC;QAED,oGAAoG;QACpG,MAAM,OAAO,GAAG;YACd,8YAA8Y;SAC/Y,CAAC;QAEF,uFAAuF;QACvF,MAAM,iBAAiB,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;QAE7C,MAAM,IAAI,GAAG,IAAI,iBAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAErE,MAAM,uBAAuB,GAAG,IAAA,0BAAiB,EAC/C,IAAI,CAAC,OAAO,EACZ,SAAS,CAAC,KAAK,CAChB,CAAC;QAEF,+EAA+E;QAC/E,gFAAgF;QAChF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,mBAAmB,CACxE,OAAO,CAAC,eAAe,EACvB,IAAA,uBAAS,EAAC,SAAS,CAAC,KAAK,CAAC,EAC1B,uBAAuB,EACvB,gBAAgB,EAChB,IAAI,CAAC,YAAY,EACjB,iBAAiB,EACjB,OAAO,CAAC,kBAAkB,EAC1B,OAAO,CAAC,oBAAoB,EAC5B;YACE,aAAa,EAAE,aAAa;YAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,YAAY,EAAE,OAAO,CAAC,iBAAiB;SACxC,EACD;YACE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;YAC1C,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,aAAa;SAC9D,CACF,CAAC;QACF,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;QAE7D,MAAM,IAAI,CAAC,gBAAgB,CACzB,IAAA,iBAAO,EAAC,KAAK,EAAE,aAAa,CAAC,EAC7B,kCAAkC,CACnC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,OAAwB;QAChD,MAAM,QAAQ,GAAG,IAAI,iBAAQ,CAC3B,IAAI,CAAC,kBAAkB,EACvB,CAAC,4DAA4D,CAAC,EAC9D,IAAI,CAAC,QAAQ,CACd,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,QAAQ;aAC1B,WAAW,CAAC,YAAY,CAAC;aACzB,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAE7B,OAAO,MAAM,KAAK,EAAE,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CACX,MAAyB,EACzB,OAAwB,EACxB,WAAmB;QAEnB,MAAM,UAAU,GAAG,IAAI,oBAAU,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAErD,MAAM,QAAQ,GAAG,IAAI,iBAAQ,CAC3B,IAAI,CAAC,kBAAkB,EACvB,CAAC,2DAA2D,CAAC,EAC7D,IAAI,CAAC,QAAQ,CACd,CAAC;QAEF,MAAM,KAAK,GAAG,MAAM,QAAQ;aACzB,WAAW,CAAC,gBAAgB,CAAC;aAC7B,mBAAmB,CAClB,IAAA,kCAAwB,EAAC,OAAO,CAAC,EACjC,sBAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CACjC,CAAC;QAEJ,MAAM,IAAI,CAAC,gBAAgB,CACzB,IAAA,iBAAO,EAAC,KAAK,EAAE,UAAU,CAAC,EAC1B,qCAAqC,CACtC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC;IACtD,CAAC;IAEO,gBAAgB,CACtB,KAAyB,EACzB,WAAmB,EACnB,iBAA0B,KAAK;QAE/B,OAAO,IAAI,gCAAsB,CAC/B,IAAA,oBAAU,EAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,EAC/B,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,KAAK,EACV,WAAW,EACX,cAAc,CACf,CAAC;IACJ,CAAC;CACF;AA5LD,8CA4LC"}
@@ -1 +1 @@
1
- {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/evm/executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,OAAO,EACP,QAAQ,EACT,MAAM,kCAAkC,CAAC;AAO1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAGL,sBAAsB,EAGvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,QAAQ,EAAsB,MAAM,QAAQ,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,qBAAa,eAAe,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,SAAS,CACjE,YAAW,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;IAM3B,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS;IAP/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;gBAGnB,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS;WAelB,OAAO,CAAC,CAAC,SAAS,OAAO,EACpC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,GAChC,OAAO,CAAC,eAAe,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAQlC,QAAQ,CACb,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,YAAY,GACpB,cAAc,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAgE/C,OAAO,CAAC,gBAAgB;CAazB"}
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/evm/executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,OAAO,EACP,QAAQ,EACT,MAAM,kCAAkC,CAAC;AAO1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAGL,sBAAsB,EAGvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,QAAQ,EAAsB,MAAM,QAAQ,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,qBAAa,eAAe,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,SAAS,CACjE,YAAW,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;IAM3B,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS;IAP/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;gBAGnB,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS;WAelB,OAAO,CAAC,CAAC,SAAS,OAAO,EACpC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,GAChC,OAAO,CAAC,eAAe,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAQlC,QAAQ,CACb,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,YAAY,GACpB,cAAc,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAsE/C,OAAO,CAAC,gBAAgB;CAazB"}
@@ -34,12 +34,16 @@ export class EvmCCTPExecutor {
34
34
  const recipientAddress = recipient.address
35
35
  .toUniversalAddress()
36
36
  .toUint8Array();
37
- const amount = details.remainingAmount + details.transferTokenFee;
37
+ // The shim contract pulls tokens in two separate transferFrom calls:
38
+ // 1. custodyTokens: transfers `amount` (the burn amount)
39
+ // 2. payFee: transfers `transferTokenFee` (the referrer fee)
40
+ // So the total allowance needed is remainingAmount + transferTokenFee.
41
+ const totalAmount = details.remainingAmount + details.transferTokenFee;
38
42
  const tokenAddr = circle.usdcContract.get(this.network, this.chain);
39
43
  const tokenContract = EvmPlatform.getTokenImplementation(this.provider, tokenAddr);
40
44
  const allowance = await tokenContract.allowance(senderAddress, this.shimContract);
41
- if (allowance < amount) {
42
- const txReq = await tokenContract.approve.populateTransaction(this.shimContract, amount);
45
+ if (allowance < totalAmount) {
46
+ const txReq = await tokenContract.approve.populateTransaction(this.shimContract, totalAmount);
43
47
  yield this.createUnsignedTx(addFrom(txReq, senderAddress), "ERC20.approve of EvmCCTPExecutor", false);
44
48
  }
45
49
  // TODO: type safety. typechain brings in so much boilerplate code and is soft deprecated. use viem?
@@ -47,7 +51,9 @@ export class EvmCCTPExecutor {
47
51
  "function depositForBurn(uint256 amount, uint16 destinationChain, uint32 destinationDomain, bytes32 mintRecipient, address burnToken, (address refundAddress, bytes signedQuote, bytes instructions) executorArgs, (uint256 transferTokenFee, uint256 nativeTokenFee, address payee) feeArgs) external payable returns (uint64 nonce)",
48
52
  ];
49
53
  const shim = new Contract(this.shimContract, shimAbi, this.provider);
50
- const txReq = await shim.getFunction("depositForBurn").populateTransaction(amount, toChainId(recipient.chain), circle.circleChainId.get(this.network, recipient.chain), recipientAddress, tokenAddr, {
54
+ // Pass remainingAmount as the contract's `amount` parameter (the burn amount).
55
+ // The fee is collected separately by the contract via feeArgs.transferTokenFee.
56
+ const txReq = await shim.getFunction("depositForBurn").populateTransaction(details.remainingAmount, toChainId(recipient.chain), circle.circleChainId.get(this.network, recipient.chain), recipientAddress, tokenAddr, {
51
57
  refundAddress: senderAddress,
52
58
  signedQuote: details.signedQuote,
53
59
  instructions: details.relayInstructions,
@@ -1 +1 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/evm/executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/evm/executor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"executorV2.d.ts","sourceRoot":"","sources":["../../../src/evm/executorV2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,OAAO,EACP,QAAQ,EACT,MAAM,kCAAkC,CAAC;AAQ1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAGL,sBAAsB,EAGvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,QAAQ,EAAsB,MAAM,QAAQ,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAM1C,OAAO,EAAE,eAAe,EAA4B,MAAM,YAAY,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,qBAAa,iBAAiB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,SAAS,CACnE,YAAW,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;IAQ7B,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS;IAT/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;gBAGnB,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS;WAyBlB,OAAO,CAAC,CAAC,SAAS,OAAO,EACpC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,GAChC,OAAO,CAAC,iBAAiB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAQpC,QAAQ,CACb,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,kBAAkB,GAC1B,cAAc,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAyEzC,mBAAmB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAc9D,MAAM,CACX,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,OAAO,EAAE,eAAe,EACxB,WAAW,EAAE,MAAM,GAClB,cAAc,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAsBzC,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAIxC,OAAO,CAAC,gBAAgB;CAazB"}
1
+ {"version":3,"file":"executorV2.d.ts","sourceRoot":"","sources":["../../../src/evm/executorV2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,OAAO,EACP,QAAQ,EACT,MAAM,kCAAkC,CAAC;AAQ1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAGL,sBAAsB,EAGvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,QAAQ,EAAsB,MAAM,QAAQ,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAM1C,OAAO,EAAE,eAAe,EAA4B,MAAM,YAAY,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,qBAAa,iBAAiB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,SAAS,CACnE,YAAW,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;IAQ7B,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS;IAT/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;gBAGnB,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS;WAyBlB,OAAO,CAAC,CAAC,SAAS,OAAO,EACpC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,GAChC,OAAO,CAAC,iBAAiB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAQpC,QAAQ,CACb,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,kBAAkB,GAC1B,cAAc,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IA+EzC,mBAAmB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAc9D,MAAM,CACX,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,OAAO,EAAE,eAAe,EACxB,WAAW,EAAE,MAAM,GAClB,cAAc,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAsBzC,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAIxC,OAAO,CAAC,gBAAgB;CAazB"}
@@ -45,11 +45,15 @@ export class EvmCCTPv2Executor {
45
45
  const recipientAddress = recipient.address
46
46
  .toUniversalAddress()
47
47
  .toUint8Array();
48
- const amount = details.remainingAmount + details.transferTokenFee;
48
+ // The shim contract pulls tokens in two separate transferFrom calls:
49
+ // 1. custodyTokens: transfers `amount` (the burn amount)
50
+ // 2. payFee: transfers `transferTokenFee` (the referrer fee)
51
+ // So the total allowance needed is remainingAmount + transferTokenFee.
52
+ const totalAmount = details.remainingAmount + details.transferTokenFee;
49
53
  const tokenContract = EvmPlatform.getTokenImplementation(this.provider, this.usdcContract);
50
54
  const allowance = await tokenContract.allowance(senderAddress, this.shimContract);
51
- if (allowance < amount) {
52
- const txReq = await tokenContract.approve.populateTransaction(this.shimContract, amount);
55
+ if (allowance < totalAmount) {
56
+ const txReq = await tokenContract.approve.populateTransaction(this.shimContract, totalAmount);
53
57
  yield this.createUnsignedTx(addFrom(txReq, senderAddress), "ERC20.approve of EvmCCTPv2Executor", false);
54
58
  }
55
59
  // TODO: type safety. typechain brings in so much boilerplate code and is soft deprecated. use viem?
@@ -60,7 +64,9 @@ export class EvmCCTPv2Executor {
60
64
  const destinationCaller = new Uint8Array(32);
61
65
  const shim = new Contract(this.shimContract, shimAbi, this.provider);
62
66
  const destinationCircleDomain = getCircleV2Domain(this.network, recipient.chain);
63
- const txReq = await shim.getFunction("depositForBurn").populateTransaction(amount, toChainId(recipient.chain), destinationCircleDomain, recipientAddress, this.usdcContract, destinationCaller, details.fastTransferMaxFee, details.minFinalityThreshold, {
67
+ // Pass remainingAmount as the contract's `amount` parameter (the burn amount).
68
+ // The fee is collected separately by the contract via feeArgs.transferTokenFee.
69
+ const txReq = await shim.getFunction("depositForBurn").populateTransaction(details.remainingAmount, toChainId(recipient.chain), destinationCircleDomain, recipientAddress, this.usdcContract, destinationCaller, details.fastTransferMaxFee, details.minFinalityThreshold, {
64
70
  refundAddress: senderAddress,
65
71
  signedQuote: details.signedQuote,
66
72
  instructions: details.relayInstructions,
@@ -1 +1 @@
1
- {"version":3,"file":"executorV2.js","sourceRoot":"","sources":["../../../src/evm/executorV2.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executorV2.js","sourceRoot":"","sources":["../../../src/evm/executorV2.ts"],"names":[],"mappings":"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"}