@paraswap/dex-lib 5.0.11-force-rfq-revert.0 → 5.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/build/config.js +14 -15
  2. package/build/config.js.map +1 -1
  3. package/build/dex/balancer-v1/balancer-v1.d.ts +1 -1
  4. package/build/dex/balancer-v1/balancer-v1.js +1 -14
  5. package/build/dex/balancer-v1/balancer-v1.js.map +1 -1
  6. package/build/dex/bebop/bebop.d.ts +2 -2
  7. package/build/dex/bebop/bebop.js +2 -15
  8. package/build/dex/bebop/bebop.js.map +1 -1
  9. package/build/dex/cables/cables.d.ts +2 -2
  10. package/build/dex/cables/cables.js +2 -6
  11. package/build/dex/cables/cables.js.map +1 -1
  12. package/build/dex/dexalot/dexalot.d.ts +2 -2
  13. package/build/dex/dexalot/dexalot.js +2 -6
  14. package/build/dex/dexalot/dexalot.js.map +1 -1
  15. package/build/dex/generic-rfq/generic-rfq.d.ts +2 -2
  16. package/build/dex/generic-rfq/generic-rfq.js +2 -11
  17. package/build/dex/generic-rfq/generic-rfq.js.map +1 -1
  18. package/build/dex/hashflow/hashflow.d.ts +2 -2
  19. package/build/dex/hashflow/hashflow.js +2 -6
  20. package/build/dex/hashflow/hashflow.js.map +1 -1
  21. package/build/dex/index.js +0 -8
  22. package/build/dex/index.js.map +1 -1
  23. package/build/dex/metric/metric.js +1 -5
  24. package/build/dex/metric/metric.js.map +1 -1
  25. package/build/dex/native/native.d.ts +2 -2
  26. package/build/dex/native/native.js +2 -8
  27. package/build/dex/native/native.js.map +1 -1
  28. package/build/dex/paraswap-limit-orders/config.js +0 -6
  29. package/build/dex/paraswap-limit-orders/config.js.map +1 -1
  30. package/build/dex/paraswap-limit-orders/paraswap-limit-orders.d.ts +2 -2
  31. package/build/dex/paraswap-limit-orders/paraswap-limit-orders.js +2 -11
  32. package/build/dex/paraswap-limit-orders/paraswap-limit-orders.js.map +1 -1
  33. package/build/dex/swaap-v2/swaap-v2.d.ts +2 -2
  34. package/build/dex/swaap-v2/swaap-v2.js +2 -10
  35. package/build/dex/swaap-v2/swaap-v2.js.map +1 -1
  36. package/build/dex/uniswap-v3/config.js +0 -28
  37. package/build/dex/uniswap-v3/config.js.map +1 -1
  38. package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream.js +0 -1
  39. package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream.js.map +1 -1
  40. package/build/executor/Executor01BytecodeBuilder.d.ts +0 -8
  41. package/build/executor/Executor01BytecodeBuilder.js +12 -124
  42. package/build/executor/Executor01BytecodeBuilder.js.map +1 -1
  43. package/build/executor/Executor02BytecodeBuilder.d.ts +0 -22
  44. package/build/executor/Executor02BytecodeBuilder.js +1 -208
  45. package/build/executor/Executor02BytecodeBuilder.js.map +1 -1
  46. package/build/executor/ExecutorDetector.d.ts +0 -1
  47. package/build/executor/ExecutorDetector.js +0 -14
  48. package/build/executor/ExecutorDetector.js.map +1 -1
  49. package/build/executor/types.d.ts +1 -2
  50. package/build/executor/types.js +0 -4
  51. package/build/executor/types.js.map +1 -1
  52. package/build/generic-swap-transaction-builder.d.ts +1 -5
  53. package/build/generic-swap-transaction-builder.js +51 -142
  54. package/build/generic-swap-transaction-builder.js.map +1 -1
  55. package/build/implementations/local-paraswap-sdk.d.ts +0 -1
  56. package/build/implementations/local-paraswap-sdk.js +1 -7
  57. package/build/implementations/local-paraswap-sdk.js.map +1 -1
  58. package/build/types.d.ts +0 -3
  59. package/build/utils.d.ts +0 -1
  60. package/build/utils.js +1 -15
  61. package/build/utils.js.map +1 -1
  62. package/package.json +2 -2
@@ -30,7 +30,7 @@ class Executor01BytecodeBuilder extends ExecutorBytecodeBuilder_1.ExecutorByteco
30
30
  const isEthSrc = (0, utils_1.isETHAddress)(srcToken);
31
31
  const isEthDest = (0, utils_1.isETHAddress)(destToken);
32
32
  const exchangeParam = exchangeParams[exchangeParamIndex];
33
- const { dexFuncHasRecipient, needWrapNative, needUnwrapNative, specialDexFlag, specialDexSupportsInsertFromAmount, swappedAmountNotPresentInExchangeData, sendEthButSupportsInsertFromAmount, deliversToExecutor, } = exchangeParam;
33
+ const { dexFuncHasRecipient, needWrapNative, needUnwrapNative, specialDexFlag, specialDexSupportsInsertFromAmount, swappedAmountNotPresentInExchangeData, sendEthButSupportsInsertFromAmount, } = exchangeParam;
34
34
  const isWETHSrc = !!needUnwrapNative && this.dexHelper.config.isWETH(srcToken);
35
35
  const isWETHDest = !!needUnwrapNative && this.dexHelper.config.isWETH(destToken);
36
36
  const needWrap = needWrapNative && isEthSrc && maybeWethCallData?.deposit;
@@ -56,11 +56,7 @@ class Executor01BytecodeBuilder extends ExecutorBytecodeBuilder_1.ExecutorByteco
56
56
  ? types_1.Flag.DONT_INSERT_FROM_AMOUNT_CHECK_ETH_BALANCE_AFTER_SWAP
57
57
  : types_1.Flag.INSERT_FROM_AMOUNT_CHECK_ETH_BALANCE_AFTER_SWAP; // 4 or 7
58
58
  }
59
- else if (!dexFuncHasRecipient ||
60
- // group fallback redirected to the executor — capture its real output
61
- // so the group threads it to the route-level forward
62
- deliversToExecutor ||
63
- (isEthDest && needUnwrap)) {
59
+ else if (!dexFuncHasRecipient || (isEthDest && needUnwrap)) {
64
60
  dexFlag = forcePreventInsertFromAmount
65
61
  ? types_1.Flag.DONT_INSERT_FROM_AMOUNT_CHECK_SRC_TOKEN_BALANCE_AFTER_SWAP
66
62
  : types_1.Flag.INSERT_FROM_AMOUNT_CHECK_SRC_TOKEN_BALANCE_AFTER_SWAP; // 8 or 11
@@ -109,7 +105,7 @@ class Executor01BytecodeBuilder extends ExecutorBytecodeBuilder_1.ExecutorByteco
109
105
  const swap = priceRoute.bestRoute[routeIndex].swaps[swapIndex];
110
106
  const { srcToken, destToken } = swap;
111
107
  const exchangeParam = exchangeParams[exchangeParamIndex];
112
- const { dexFuncHasRecipient, needWrapNative, needUnwrapNative, specialDexFlag, specialDexSupportsInsertFromAmount, swappedAmountNotPresentInExchangeData, sendEthButSupportsInsertFromAmount, deliversToExecutor, } = exchangeParam;
108
+ const { dexFuncHasRecipient, needWrapNative, needUnwrapNative, specialDexFlag, specialDexSupportsInsertFromAmount, swappedAmountNotPresentInExchangeData, sendEthButSupportsInsertFromAmount, } = exchangeParam;
113
109
  const isLastSwap = swapIndex === priceRoute.bestRoute[routeIndex].swaps.length - 1;
114
110
  const isEthSrc = (0, utils_1.isETHAddress)(srcToken);
115
111
  const isEthDest = (0, utils_1.isETHAddress)(destToken);
@@ -120,7 +116,7 @@ class Executor01BytecodeBuilder extends ExecutorBytecodeBuilder_1.ExecutorByteco
120
116
  (isSpecialDex && !specialDexSupportsInsertFromAmount);
121
117
  const needUnwrap = needWrapNative && isEthDest && maybeWethCallData?.withdraw;
122
118
  const forceBalanceOfCheck = isLastSwap
123
- ? !dexFuncHasRecipient || needUnwrap || !!deliversToExecutor
119
+ ? !dexFuncHasRecipient || needUnwrap
124
120
  : true;
125
121
  const needSendEth = isEthSrc && !needWrapNative;
126
122
  const needCheckEthBalance = isEthDest && !needWrapNative;
@@ -261,101 +257,6 @@ class Executor01BytecodeBuilder extends ExecutorBytecodeBuilder_1.ExecutorByteco
261
257
  }
262
258
  return swapCallData;
263
259
  }
264
- /**
265
- * Build a revertable fallback group (Style 2): a special-dex step (0xFF) whose calldata payload is
266
- * [tryLen(4)][fallbackLen(4)][try-block][fallback-block]. The try-block is the primary exchange's
267
- * per-swap calldata; the fallback-block is the alternative's, built by substituting the fallback
268
- * param at this hop and recomputing its flags. Executor01 runs the try-block in a self-call and,
269
- * on revert, runs the fallback-block from the original pre-group input.
270
- */
271
- buildRevertableGroup(params) {
272
- const { priceRoute, index, exchangeParams, maybeWethCallData } = params;
273
- const fallbackParam = exchangeParams[index].fallbackParam;
274
- // Defensive: only reachable when a fallback is present.
275
- if (!fallbackParam) {
276
- return this.buildSingleSwapCallData(params);
277
- }
278
- // Mixed wrap-ness on an ETH-dest hop (raw-native primary vs WETH-based
279
- // fallback or the reverse): final hops are normalized below via the
280
- // fallback unit's unwrap / appended native send, mid-route hops further down.
281
- const groupSwap = priceRoute.bestRoute[0].swaps[index];
282
- const isLastSwapHop = index === priceRoute.bestRoute[0].swaps.length - 1;
283
- const mixedEthDestWethFallback = (0, utils_1.isETHAddress)(groupSwap.destToken) &&
284
- !exchangeParams[index].needWrapNative &&
285
- Boolean(fallbackParam.needWrapNative);
286
- // try-block: the primary's normal per-swap calldata (approve/wrap/swap, contiguous).
287
- const tryBlock = this.buildSingleSwapCallData(params);
288
- // fallback-block: substitute the fallback param at this hop and recompute flags for it.
289
- const fallbackExchangeParams = exchangeParams.slice();
290
- fallbackExchangeParams[index] = fallbackParam;
291
- const fallbackFlags = this.buildFlags(priceRoute, fallbackExchangeParams, maybeWethCallData);
292
- let fallbackBlock = this.buildSingleSwapCallData({
293
- ...params,
294
- exchangeParams: fallbackExchangeParams,
295
- flags: fallbackFlags,
296
- });
297
- // Recipient-capable primary (buildByteCode appends no route-level
298
- // forward) with a fallback whose output stays on the executor: append
299
- // the executor->Augustus forward inside the fallback block, amount
300
- // inserted from the threaded fromAmount.
301
- if (isLastSwapHop &&
302
- !(0, utils_1.isETHAddress)(priceRoute.destToken) &&
303
- exchangeParams[index].dexFuncHasRecipient &&
304
- !fallbackParam.dexFuncHasRecipient) {
305
- const transferCallData = this.buildTransferCallData(this.erc20Interface.encodeFunctionData('transfer', [
306
- this.dexHelper.config.data.augustusV6Address,
307
- priceRoute.destAmount,
308
- ]), priceRoute.destToken);
309
- fallbackBlock = hexConcat([fallbackBlock, transferCallData]);
310
- }
311
- // Final-hop ETH-dest mixed wrap-ness: the raw-native primary delivers to
312
- // Augustus itself while the WETH-based fallback unwraps onto the executor.
313
- // Append the native send inside the fallback block (amount = threaded
314
- // fromAmount); buildByteCode suppresses its route-level send for this shape.
315
- if (mixedEthDestWethFallback &&
316
- isLastSwapHop &&
317
- exchangeParams[index].dexFuncHasRecipient) {
318
- fallbackBlock = hexConcat([
319
- fallbackBlock,
320
- this.buildFinalSpecialFlagCalldata(),
321
- ]);
322
- }
323
- // Mid-route ETH-dest mixed wrap-ness: make the fallback block end in the
324
- // token form the primary threads to the next hop (WETH only when a
325
- // needWrapNative primary precedes a needWrapNative hop) — unwrap a
326
- // WETH-holding fallback, wrap a raw-native one.
327
- if (!isLastSwapHop && (0, utils_1.isETHAddress)(groupSwap.destToken)) {
328
- const nextParam = exchangeParams[index + 1];
329
- const unitEndsInWeth = (param) => Boolean(param.needWrapNative) &&
330
- !(Boolean(param.needWrapNative) &&
331
- !!maybeWethCallData?.withdraw &&
332
- (!nextParam || !nextParam.needWrapNative));
333
- const tryEndsInWeth = unitEndsInWeth(exchangeParams[index]);
334
- const fallbackEndsInWeth = unitEndsInWeth(fallbackParam);
335
- if (tryEndsInWeth !== fallbackEndsInWeth) {
336
- fallbackBlock = hexConcat([
337
- fallbackBlock,
338
- fallbackEndsInWeth
339
- ? this.buildUnwrapEthCallData(this.getWETHAddress(fallbackParam), this.erc20Interface.encodeFunctionData('withdraw', [
340
- groupSwap.swapExchanges[0].destAmount,
341
- ]))
342
- : this.buildWrapEthCallData(this.getWETHAddress(fallbackParam), this.erc20Interface.encodeFunctionData('deposit'), types_1.Flag.SEND_ETH_EQUAL_TO_FROM_AMOUNT_DONT_CHECK_BALANCE_AFTER_SWAP),
343
- ]);
344
- }
345
- }
346
- // payload = [tryLen(4)][fallbackLen(4)][try-block][fallback-block]
347
- const payload = hexConcat([
348
- hexZeroPad(hexlify(hexDataLength(tryBlock)), 4),
349
- hexZeroPad(hexlify(hexDataLength(fallbackBlock)), 4),
350
- tryBlock,
351
- fallbackBlock,
352
- ]);
353
- // Standard metadata packing; specialDexFlag = 0xFF marks the group. target/flag unused.
354
- return this.buildCallData(constants_1.ZEROS_20_BYTES, payload, 0, // fromAmountPos
355
- 0, // destTokenPos
356
- types_1.SpecialDex.REVERTABLE_FALLBACK_GROUP, types_1.Flag.DONT_INSERT_FROM_AMOUNT_DONT_CHECK_BALANCE_AFTER_SWAP, 0, // toAmountPos
357
- 0);
358
- }
359
260
  buildDexCallData(params) {
360
261
  const { priceRoute, exchangeParamIndex, exchangeParams, routeIndex, swapIndex, flag, swapExchangeIndex, } = params;
361
262
  const dontCheckBalanceAfterSwap = flag % 3 === 0;
@@ -395,20 +296,17 @@ class Executor01BytecodeBuilder extends ExecutorBytecodeBuilder_1.ExecutorByteco
395
296
  }
396
297
  buildByteCode(priceRoute, exchangeParams, sender, maybeWethCallData) {
397
298
  const flags = this.buildFlags(priceRoute, exchangeParams, maybeWethCallData);
398
- let swapsCalldata = exchangeParams.reduce((acc, ep, index) => {
399
- const callDataParams = {
299
+ let swapsCalldata = exchangeParams.reduce((acc, ep, index) => hexConcat([
300
+ acc,
301
+ this.buildSingleSwapCallData({
400
302
  priceRoute,
401
303
  exchangeParams,
402
304
  index,
403
305
  flags,
404
306
  sender,
405
307
  maybeWethCallData,
406
- };
407
- const stepCallData = ep.fallbackParam
408
- ? this.buildRevertableGroup(callDataParams)
409
- : this.buildSingleSwapCallData(callDataParams);
410
- return hexConcat([acc, stepCallData]);
411
- }, '0x');
308
+ }),
309
+ ]), '0x');
412
310
  if (!exchangeParams[exchangeParams.length - 1].dexFuncHasRecipient &&
413
311
  !(0, utils_1.isETHAddress)(priceRoute.destToken)) {
414
312
  const transferCallData = this.buildTransferCallData(this.erc20Interface.encodeFunctionData('transfer', [
@@ -417,19 +315,9 @@ class Executor01BytecodeBuilder extends ExecutorBytecodeBuilder_1.ExecutorByteco
417
315
  ]), priceRoute.destToken);
418
316
  swapsCalldata = hexConcat([swapsCalldata, transferCallData]);
419
317
  }
420
- // The group already sends the fallback's native output inside its block
421
- // (see buildRevertableGroup); a route-level send here would also run
422
- // after the try branch, with an unthreaded fromAmount.
423
- const lastParam = exchangeParams[exchangeParams.length - 1];
424
- const groupHandlesNativeSend = (0, utils_1.isETHAddress)(priceRoute.destToken) &&
425
- !!lastParam.fallbackParam &&
426
- Boolean(lastParam.fallbackParam.needWrapNative) &&
427
- !lastParam.needWrapNative &&
428
- lastParam.dexFuncHasRecipient;
429
- if (!groupHandlesNativeSend &&
430
- ((maybeWethCallData?.withdraw && (0, utils_1.isETHAddress)(priceRoute.destToken)) ||
431
- (!exchangeParams[exchangeParams.length - 1].dexFuncHasRecipient &&
432
- (0, utils_1.isETHAddress)(priceRoute.destToken)))) {
318
+ if ((maybeWethCallData?.withdraw && (0, utils_1.isETHAddress)(priceRoute.destToken)) ||
319
+ (!exchangeParams[exchangeParams.length - 1].dexFuncHasRecipient &&
320
+ (0, utils_1.isETHAddress)(priceRoute.destToken))) {
433
321
  const finalSpecialFlagCalldata = this.buildFinalSpecialFlagCalldata();
434
322
  swapsCalldata = hexConcat([swapsCalldata, finalSpecialFlagCalldata]);
435
323
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Executor01BytecodeBuilder.js","sourceRoot":"","sources":["../../src/executor/Executor01BytecodeBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Executor01BytecodeBuilder.js","sourceRoot":"","sources":["../../src/executor/Executor01BytecodeBuilder.ts"],"names":[],"mappings":"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"}
@@ -64,28 +64,6 @@ export declare class Executor02BytecodeBuilder extends ExecutorBytecodeBuilder<E
64
64
  private packVerticalBranchingData;
65
65
  private packVerticalBranchingCallData;
66
66
  private buildVerticalBranchingCallData;
67
- /**
68
- * Where an ETH-dest final-hop branch leaves its output. Everything outside a
69
- * revertable group (root unwrap/send, threading flags, sibling accounting)
70
- * is computed from the primary's params, so the fallback block must end in
71
- * the same place the try block would.
72
- */
73
- private ethDestOutcome;
74
- /**
75
- * Wrap an already-assembled per-exchange unit in a revertable fallback group
76
- * (specialDex 0xFF). The step's calldata payload is [28-byte padding]
77
- * [tryLen(4)][fallbackLen(4)][try-block][fallback-block]; the try-block is the
78
- * unit as it would have run inline, the fallback-block is the alternative's
79
- * unit. On-chain, Executor02 runs the try-block in a self-call and, on revert,
80
- * runs the fallback-block from the same input.
81
- *
82
- * Threading: when the group sits directly in a horizontal sequence
83
- * (insidePath = false) it must thread the running amount to the next step, so
84
- * it uses the vertical-branching wrapper's flag/destTokenPos semantics. When
85
- * it is a member of a split (insidePath = true), the vertical-branching
86
- * wrapper above it does the threading, so the group skips the balance check.
87
- */
88
- private wrapInRevertableGroup;
89
67
  private buildSingleSwapExchangeCallData;
90
68
  private appendWrapEthCallData;
91
69
  private eachDexOnSwapNeedsWrapNative;
@@ -352,196 +352,12 @@ class Executor02BytecodeBuilder extends ExecutorBytecodeBuilder_1.ExecutorByteco
352
352
  const fromAmountPos = hexDataLength(data) - 64 - 28; // 64 (position), 28 (selector padding);
353
353
  return this.packVerticalBranchingCallData(data, fromAmountPos, destTokenPos < 0 ? 0 : destTokenPos, flag);
354
354
  }
355
- /**
356
- * Where an ETH-dest final-hop branch leaves its output. Everything outside a
357
- * revertable group (root unwrap/send, threading flags, sibling accounting)
358
- * is computed from the primary's params, so the fallback block must end in
359
- * the same place the try block would.
360
- */
361
- ethDestOutcome(param, endState,
362
- // Primary raw-ETH last-hop params are built with recipient = Augustus, so
363
- // a recipient-capable dex delivers itself. Fallback params are always
364
- // built with recipient = executor (see getDexCallsParams) — their output
365
- // stays on the executor no matter what the dex supports.
366
- deliversViaRecipient) {
367
- if (endState.sentNative)
368
- return 'sent';
369
- if (param.needWrapNative)
370
- return endState.unwrapped ? 'eth' : 'weth';
371
- return deliversViaRecipient && param.dexFuncHasRecipient ? 'sent' : 'eth';
372
- }
373
- /**
374
- * Wrap an already-assembled per-exchange unit in a revertable fallback group
375
- * (specialDex 0xFF). The step's calldata payload is [28-byte padding]
376
- * [tryLen(4)][fallbackLen(4)][try-block][fallback-block]; the try-block is the
377
- * unit as it would have run inline, the fallback-block is the alternative's
378
- * unit. On-chain, Executor02 runs the try-block in a self-call and, on revert,
379
- * runs the fallback-block from the same input.
380
- *
381
- * Threading: when the group sits directly in a horizontal sequence
382
- * (insidePath = false) it must thread the running amount to the next step, so
383
- * it uses the vertical-branching wrapper's flag/destTokenPos semantics. When
384
- * it is a member of a split (insidePath = true), the vertical-branching
385
- * wrapper above it does the threading, so the group skips the balance check.
386
- */
387
- wrapInRevertableGroup(priceRoute, routeIndex, swapIndex, swapExchangeIndex, exchangeParams, exchangeParamIndex, tryBlock, allowToAddWrap, prevBranchWasWrapped, insidePath, wrapAddedInsideTry, tryEndState, maybeWethCallData, applyVerticalBranching) {
388
- const swap = priceRoute.bestRoute[routeIndex].swaps[swapIndex];
389
- const swapExchange = swap.swapExchanges[swapExchangeIndex];
390
- const fallbackParam = exchangeParams[exchangeParamIndex].fallbackParam;
391
- // fallback-block: substitute the fallback param at this hop and recompute
392
- // flags for it. Fresh wrap maps: the fallback is an independent alternative
393
- // whose own wrap/approve must be encoded inside its block.
394
- const fallbackExchangeParams = exchangeParams.slice();
395
- fallbackExchangeParams[exchangeParamIndex] = fallbackParam;
396
- const fallbackFlags = this.buildFlags(priceRoute, fallbackExchangeParams, maybeWethCallData);
397
- const fallbackEndState = {
398
- unwrapped: false,
399
- sentNative: false,
400
- };
401
- const fallbackWrapMap = {};
402
- let fallbackBlock = this.buildSingleSwapExchangeCallData(priceRoute, routeIndex, swapIndex, swapExchangeIndex, fallbackExchangeParams, fallbackFlags, fallbackWrapMap, allowToAddWrap, prevBranchWasWrapped, {}, maybeWethCallData, false, // addMultiSwapMetadata — the path metadata wraps the group, not the block
403
- applyVerticalBranching, true, // disableRevertableGroup — never nest
404
- fallbackEndState);
405
- // Normalize the fallback block's INPUT. When the primary's wrap lives outside
406
- // the try block (root/shared wrap), it persists after a try revert, so the
407
- // branch holds its slice as WETH — unlike a try-internal wrap, which rolls
408
- // back leaving raw ETH (that case the fallback unit already handles by
409
- // adding its own approve+deposit).
410
- if ((0, utils_1.isETHAddress)(swap.srcToken) &&
411
- Boolean(exchangeParams[exchangeParamIndex].needWrapNative) &&
412
- !wrapAddedInsideTry) {
413
- if (!fallbackParam.needWrapNative) {
414
- // WETH in hand, fallback consumes raw ETH: unwrap the slice first (the
415
- // running amount is inserted at runtime; rolls back with the block).
416
- fallbackBlock = hexConcat([
417
- this.buildUnwrapEthCallData(this.getWETHAddress(fallbackParam), this.erc20Interface.encodeFunctionData('withdraw', [
418
- swapExchange.srcAmount,
419
- ])),
420
- fallbackBlock,
421
- ]);
422
- }
423
- else if (fallbackParam.approveData && !fallbackParam.skipApproval) {
424
- // WETH in hand, fallback also consumes WETH: no deposit needed, but the
425
- // unit skipped its approve (it only rides with the deposit branch,
426
- // which the external wrap suppresses) — prepend it.
427
- fallbackBlock = hexConcat([
428
- this.buildApproveCallData(fallbackParam.approveData.target, fallbackParam.approveData.token, fallbackFlags.approves[exchangeParamIndex], fallbackParam.permit2Approval),
429
- fallbackBlock,
430
- ]);
431
- }
432
- }
433
- // Raw-native primary + wrap-needing fallback on a native-src hop: no wrap
434
- // exists on the primary path, and the fallback unit can wrongly skip its
435
- // own deposit — root-wrap detection runs on the SUBSTITUTED params
436
- // (doesRouteNeedsRootWrapEth), not the real route. If the unit didn't
437
- // wrap, prepend the approve+deposit.
438
- if ((0, utils_1.isETHAddress)(swap.srcToken) &&
439
- !exchangeParams[exchangeParamIndex].needWrapNative &&
440
- Boolean(fallbackParam.needWrapNative) &&
441
- !!maybeWethCallData?.deposit &&
442
- !fallbackWrapMap[`${routeIndex}_${swapIndex}_${swapExchangeIndex}`]) {
443
- const approveCallData = fallbackParam.approveData && !fallbackParam.skipApproval
444
- ? this.buildApproveCallData(fallbackParam.approveData.target, fallbackParam.approveData.token, fallbackFlags.approves[exchangeParamIndex], fallbackParam.permit2Approval)
445
- : '0x';
446
- fallbackBlock = hexConcat([
447
- approveCallData,
448
- this.buildWrapEthCallData(this.getWETHAddress(fallbackParam), this.erc20Interface.encodeFunctionData('deposit'), types_1.Flag.SEND_ETH_EQUAL_TO_FROM_AMOUNT_DONT_CHECK_BALANCE_AFTER_SWAP),
449
- fallbackBlock,
450
- ]);
451
- }
452
- // Normalize the fallback block's OUTPUT on an ETH-dest final hop: the
453
- // post-group machinery was shaped by the primary, so the fallback must
454
- // end where the try block would — wrap raw ETH when the try ends in WETH,
455
- // unwrap a WETH-holding fallback (and send if the try would have)
456
- // otherwise; already-delivered ('sent') is terminal.
457
- const isLastSwap = swapIndex === priceRoute.bestRoute[routeIndex].swaps.length - 1;
458
- if ((0, utils_1.isETHAddress)(swap.destToken) && isLastSwap) {
459
- const tryOutcome = this.ethDestOutcome(exchangeParams[exchangeParamIndex], tryEndState, true);
460
- const fallbackOutcome = this.ethDestOutcome(fallbackParam, fallbackEndState, false);
461
- if (fallbackOutcome !== tryOutcome && fallbackOutcome !== 'sent') {
462
- if (tryOutcome === 'weth') {
463
- fallbackBlock = hexConcat([
464
- fallbackBlock,
465
- this.buildWrapEthCallData(this.getWETHAddress(fallbackParam), this.erc20Interface.encodeFunctionData('deposit'), types_1.Flag.SEND_ETH_EQUAL_TO_FROM_AMOUNT_DONT_CHECK_BALANCE_AFTER_SWAP),
466
- ]);
467
- }
468
- else {
469
- if (fallbackOutcome === 'weth') {
470
- fallbackBlock = hexConcat([
471
- fallbackBlock,
472
- this.buildUnwrapEthCallData(this.getWETHAddress(fallbackParam), this.erc20Interface.encodeFunctionData('withdraw', [
473
- swapExchange.destAmount,
474
- ])),
475
- ]);
476
- }
477
- if (tryOutcome === 'sent') {
478
- fallbackBlock = hexConcat([
479
- fallbackBlock,
480
- this.buildFinalSpecialFlagCalldata(),
481
- ]);
482
- }
483
- }
484
- }
485
- }
486
- // payload = [padding(28)][tryLen(4)][fallbackLen(4)][try][fallback]
487
- let payload = hexConcat([
488
- constants_1.ZEROS_28_BYTES,
489
- hexZeroPad(hexlify(hexDataLength(tryBlock)), 4),
490
- hexZeroPad(hexlify(hexDataLength(fallbackBlock)), 4),
491
- tryBlock,
492
- fallbackBlock,
493
- ]);
494
- const flag = insidePath
495
- ? types_1.Flag.DONT_INSERT_FROM_AMOUNT_DONT_CHECK_BALANCE_AFTER_SWAP // 0
496
- : this.buildVerticalBranchingFlag(priceRoute, swap, exchangeParams, routeIndex, swapIndex);
497
- // Locate the dest token in the payload for the post-group balance check
498
- // (append it if absent — trailing bytes after the blocks are ignored on-chain).
499
- let destTokenPos = 0;
500
- if (flag % 3 === 2) {
501
- const destTokenAddr = (0, utils_1.isETHAddress)(swap.destToken)
502
- ? this.dexHelper.config.data.wrappedNativeTokenAddress.toLowerCase()
503
- : swap.destToken.toLowerCase();
504
- payload = this.addTokenAddressToCallData(payload, destTokenAddr);
505
- const destTokenAddrIndex = payload
506
- .replace('0x', '')
507
- .indexOf(destTokenAddr.replace('0x', ''));
508
- destTokenPos = destTokenAddrIndex / 2 - 40;
509
- if (destTokenPos < 0)
510
- destTokenPos = 0;
511
- }
512
- return solidityPack([
513
- 'bytes20',
514
- 'bytes4',
515
- 'bytes2',
516
- 'bytes2',
517
- 'bytes1',
518
- 'bytes1',
519
- 'bytes2',
520
- 'bytes',
521
- ], [
522
- constants_1.ZEROS_20_BYTES, // no call target for a group
523
- hexZeroPad(hexlify(hexDataLength(payload)), 4), // payload length (incl. padding)
524
- hexZeroPad(hexlify(0), 2), // fromAmountPos (unused by the group branch)
525
- hexZeroPad(hexlify(destTokenPos), 2), // destTokenPos
526
- hexZeroPad(hexlify(0), 1), // returnAmountPos (contract forces 0xFF)
527
- hexZeroPad(hexlify(types_1.SpecialDex.REVERTABLE_FALLBACK_GROUP), 1), // 0xFF
528
- hexZeroPad(hexlify(flag), 2), // flag (balance-check threading)
529
- payload,
530
- ]);
531
- }
532
- buildSingleSwapExchangeCallData(priceRoute, routeIndex, swapIndex, swapExchangeIndex, exchangeParams, flags, addedWrapToSwapExchangeMap, allowToAddWrap = true, prevBranchWasWrapped = false, unwrapToSwapMap, maybeWethCallData, addMultiSwapMetadata, applyVerticalBranching, disableRevertableGroup = false, endStateOut) {
355
+ buildSingleSwapExchangeCallData(priceRoute, routeIndex, swapIndex, swapExchangeIndex, exchangeParams, flags, addedWrapToSwapExchangeMap, allowToAddWrap = true, prevBranchWasWrapped = false, unwrapToSwapMap, maybeWethCallData, addMultiSwapMetadata, applyVerticalBranching) {
533
356
  const isSimpleSwap = priceRoute.bestRoute.length === 1 &&
534
357
  priceRoute.bestRoute[0].swaps.length === 1;
535
358
  let swapExchangeCallData = '';
536
359
  const swap = priceRoute.bestRoute[routeIndex].swaps[swapIndex];
537
360
  const swapExchange = swap.swapExchanges[swapExchangeIndex];
538
- // What this unit appends for ETH-dest endings — a revertable group's
539
- // fallback block must end in the same state as its try block, so both
540
- // sides report what they did (see wrapInRevertableGroup).
541
- const endState = {
542
- unwrapped: false,
543
- sentNative: false,
544
- };
545
361
  let exchangeParamIndex = 0;
546
362
  let tempExchangeParamIndex = 0;
547
363
  priceRoute.bestRoute.map(route => route.swaps.map(curSwap => {
@@ -652,7 +468,6 @@ class Executor02BytecodeBuilder extends ExecutorBytecodeBuilder_1.ExecutorByteco
652
468
  this.isLastExchangeWithNeedWrapNative(priceRoute, swap, exchangeParams, exchangeParamIndex);
653
469
  if (customWethAddress || needUnwrap) {
654
470
  unwrapToSwapMap[swapIndex] = true;
655
- endState.unwrapped = true;
656
471
  withdrawCallData = this.buildUnwrapEthCallData(this.getWETHAddress(curExchangeParam), maybeWethCallData.withdraw.calldata);
657
472
  }
658
473
  swapExchangeCallData = hexConcat([
@@ -660,7 +475,6 @@ class Executor02BytecodeBuilder extends ExecutorBytecodeBuilder_1.ExecutorByteco
660
475
  withdrawCallData,
661
476
  ]);
662
477
  if (isSimpleSwap && (needUnwrap || customWethAddress)) {
663
- endState.sentNative = true;
664
478
  const finalSpecialFlagCalldata = this.buildFinalSpecialFlagCalldata();
665
479
  swapExchangeCallData = hexConcat([
666
480
  swapExchangeCallData,
@@ -707,33 +521,12 @@ class Executor02BytecodeBuilder extends ExecutorBytecodeBuilder_1.ExecutorByteco
707
521
  isLastSwap &&
708
522
  // don't need to send eth without unwrapping, handling unwrap and sendEth in the end of root branch
709
523
  !this.doesRouteNeedsRootUnwrapEth(priceRoute, exchangeParams)) {
710
- endState.sentNative = true;
711
524
  const finalSpecialFlagCalldata = this.buildFinalSpecialFlagCalldata();
712
525
  swapExchangeCallData = hexConcat([
713
526
  swapExchangeCallData,
714
527
  finalSpecialFlagCalldata,
715
528
  ]);
716
529
  }
717
- if (endStateOut) {
718
- endStateOut.unwrapped = endState.unwrapped;
719
- endStateOut.sentNative = endState.sentNative;
720
- }
721
- const fallbackParam = curExchangeParam.fallbackParam;
722
- if (!disableRevertableGroup &&
723
- fallbackParam &&
724
- // Mixed wrap-ness on a MID-ROUTE ETH-dest hop is not normalized (raw ETH
725
- // as an intermediate threading token is flag-7 territory the group's
726
- // balance check doesn't model) — run plain. Final-hop mismatches are
727
- // normalized inside wrapInRevertableGroup (input and output side).
728
- !((0, utils_1.isETHAddress)(swap.destToken) &&
729
- !isLastSwap &&
730
- Boolean(curExchangeParam.needWrapNative) !==
731
- Boolean(fallbackParam.needWrapNative))) {
732
- swapExchangeCallData = this.wrapInRevertableGroup(priceRoute, routeIndex, swapIndex, swapExchangeIndex, exchangeParams, exchangeParamIndex, swapExchangeCallData, allowToAddWrap, prevBranchWasWrapped, !!addMultiSwapMetadata,
733
- // Whether the primary's wrap sits INSIDE the try block (rolls back with
734
- // it) or outside (root/shared — persists after a try revert).
735
- !!addedWrapToSwapExchangeMap[`${routeIndex}_${swapIndex}_${swapExchangeIndex}`], endState, maybeWethCallData, applyVerticalBranching);
736
- }
737
530
  if (addMultiSwapMetadata) {
738
531
  return this.addMultiSwapMetadata(priceRoute, exchangeParams, swapExchangeCallData, swapExchange.percent, swap, exchangeParamIndex, addedWrapToSwapExchangeMap[`${routeIndex}_${swapIndex}_${swapExchangeIndex}`], addedUnwrapForDexWithNoNeedWrapNative);
739
532
  }