@lifi/sdk 3.5.1-beta.0 → 3.6.0-beta.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.
Files changed (224) hide show
  1. package/package.json +6 -3
  2. package/src/_cjs/constants.js +4 -2
  3. package/src/_cjs/constants.js.map +1 -1
  4. package/src/_cjs/core/EVM/EVM.js +0 -4
  5. package/src/_cjs/core/EVM/EVM.js.map +1 -1
  6. package/src/_cjs/core/EVM/EVMStepExecutor.js +156 -81
  7. package/src/_cjs/core/EVM/EVMStepExecutor.js.map +1 -1
  8. package/src/_cjs/core/EVM/abi.js +36 -43
  9. package/src/_cjs/core/EVM/abi.js.map +1 -1
  10. package/src/_cjs/core/EVM/checkAllowance.js +36 -30
  11. package/src/_cjs/core/EVM/checkAllowance.js.map +1 -1
  12. package/src/_cjs/core/EVM/getAllowance.js.map +1 -1
  13. package/src/_cjs/core/EVM/getEVMBalance.js.map +1 -1
  14. package/src/_cjs/core/EVM/getNativePermit.js +90 -0
  15. package/src/_cjs/core/EVM/getNativePermit.js.map +1 -0
  16. package/src/_cjs/core/EVM/parseEVMErrors.js +5 -2
  17. package/src/_cjs/core/EVM/parseEVMErrors.js.map +1 -1
  18. package/src/_cjs/core/EVM/permit2/allowanceTransfer.js +100 -0
  19. package/src/_cjs/core/EVM/permit2/allowanceTransfer.js.map +1 -0
  20. package/src/_cjs/core/EVM/permit2/constants.js +12 -0
  21. package/src/_cjs/core/EVM/permit2/constants.js.map +1 -0
  22. package/src/_cjs/core/EVM/permit2/domain.js +12 -0
  23. package/src/_cjs/core/EVM/permit2/domain.js.map +1 -0
  24. package/src/_cjs/core/EVM/permit2/signatureTransfer.js +121 -0
  25. package/src/_cjs/core/EVM/permit2/signatureTransfer.js.map +1 -0
  26. package/src/_cjs/core/EVM/setAllowance.js +3 -4
  27. package/src/_cjs/core/EVM/setAllowance.js.map +1 -1
  28. package/src/_cjs/core/EVM/signPermitMessage.js +169 -0
  29. package/src/_cjs/core/EVM/signPermitMessage.js.map +1 -0
  30. package/src/_cjs/core/EVM/typeguards.js +8 -0
  31. package/src/_cjs/core/EVM/typeguards.js.map +1 -0
  32. package/src/_cjs/core/EVM/types.js.map +1 -1
  33. package/src/_cjs/core/EVM/utils.js +2 -1
  34. package/src/_cjs/core/EVM/utils.js.map +1 -1
  35. package/src/_cjs/core/EVM/waitForBatchTransactionReceipt.js +32 -0
  36. package/src/_cjs/core/EVM/waitForBatchTransactionReceipt.js.map +1 -0
  37. package/src/_cjs/core/EVM/waitForRelayedTransactionReceipt.js +38 -0
  38. package/src/_cjs/core/EVM/waitForRelayedTransactionReceipt.js.map +1 -0
  39. package/src/_cjs/core/checkBalance.js +3 -3
  40. package/src/_cjs/core/checkBalance.js.map +1 -1
  41. package/src/_cjs/core/waitForTransactionStatus.js +4 -2
  42. package/src/_cjs/core/waitForTransactionStatus.js.map +1 -1
  43. package/src/_cjs/createConfig.js +2 -2
  44. package/src/_cjs/createConfig.js.map +1 -1
  45. package/src/_cjs/errors/constants.js +1 -0
  46. package/src/_cjs/errors/constants.js.map +1 -1
  47. package/src/_cjs/index.js +9 -6
  48. package/src/_cjs/index.js.map +1 -1
  49. package/src/_cjs/services/api.js +127 -53
  50. package/src/_cjs/services/api.js.map +1 -1
  51. package/src/_cjs/utils/checkPackageUpdates.js +20 -0
  52. package/src/_cjs/utils/checkPackageUpdates.js.map +1 -0
  53. package/src/_cjs/utils/convertQuoteToRoute.js +33 -0
  54. package/src/_cjs/utils/convertQuoteToRoute.js.map +1 -0
  55. package/src/_cjs/utils/fetchTxErrorDetails.js +13 -0
  56. package/src/_cjs/utils/fetchTxErrorDetails.js.map +1 -0
  57. package/src/_cjs/utils/invariant.js +17 -0
  58. package/src/_cjs/utils/invariant.js.map +1 -0
  59. package/src/_cjs/utils/waitForResult.js +16 -3
  60. package/src/_cjs/utils/waitForResult.js.map +1 -1
  61. package/src/_cjs/version.js +1 -1
  62. package/src/_esm/constants.js +3 -1
  63. package/src/_esm/constants.js.map +1 -1
  64. package/src/_esm/core/EVM/EVM.js +0 -4
  65. package/src/_esm/core/EVM/EVM.js.map +1 -1
  66. package/src/_esm/core/EVM/EVMStepExecutor.js +186 -92
  67. package/src/_esm/core/EVM/EVMStepExecutor.js.map +1 -1
  68. package/src/_esm/core/EVM/abi.js +37 -42
  69. package/src/_esm/core/EVM/abi.js.map +1 -1
  70. package/src/_esm/core/EVM/checkAllowance.js +41 -32
  71. package/src/_esm/core/EVM/checkAllowance.js.map +1 -1
  72. package/src/_esm/core/EVM/getAllowance.js.map +1 -1
  73. package/src/_esm/core/EVM/getEVMBalance.js.map +1 -1
  74. package/src/_esm/core/EVM/getNativePermit.js +95 -0
  75. package/src/_esm/core/EVM/getNativePermit.js.map +1 -0
  76. package/src/_esm/core/EVM/parseEVMErrors.js +9 -1
  77. package/src/_esm/core/EVM/parseEVMErrors.js.map +1 -1
  78. package/src/_esm/core/EVM/permit2/allowanceTransfer.js +93 -0
  79. package/src/_esm/core/EVM/permit2/allowanceTransfer.js.map +1 -0
  80. package/src/_esm/core/EVM/permit2/constants.js +9 -0
  81. package/src/_esm/core/EVM/permit2/constants.js.map +1 -0
  82. package/src/_esm/core/EVM/permit2/domain.js +9 -0
  83. package/src/_esm/core/EVM/permit2/domain.js.map +1 -0
  84. package/src/_esm/core/EVM/permit2/signatureTransfer.js +117 -0
  85. package/src/_esm/core/EVM/permit2/signatureTransfer.js.map +1 -0
  86. package/src/_esm/core/EVM/setAllowance.js +3 -4
  87. package/src/_esm/core/EVM/setAllowance.js.map +1 -1
  88. package/src/_esm/core/EVM/signPermitMessage.js +163 -0
  89. package/src/_esm/core/EVM/signPermitMessage.js.map +1 -0
  90. package/src/_esm/core/EVM/typeguards.js +5 -0
  91. package/src/_esm/core/EVM/typeguards.js.map +1 -0
  92. package/src/_esm/core/EVM/types.js.map +1 -1
  93. package/src/_esm/core/EVM/utils.js +2 -1
  94. package/src/_esm/core/EVM/utils.js.map +1 -1
  95. package/src/_esm/core/EVM/waitForBatchTransactionReceipt.js +28 -0
  96. package/src/_esm/core/EVM/waitForBatchTransactionReceipt.js.map +1 -0
  97. package/src/_esm/core/EVM/waitForRelayedTransactionReceipt.js +34 -0
  98. package/src/_esm/core/EVM/waitForRelayedTransactionReceipt.js.map +1 -0
  99. package/src/_esm/core/checkBalance.js +3 -3
  100. package/src/_esm/core/checkBalance.js.map +1 -1
  101. package/src/_esm/core/waitForTransactionStatus.js +4 -2
  102. package/src/_esm/core/waitForTransactionStatus.js.map +1 -1
  103. package/src/_esm/createConfig.js +1 -1
  104. package/src/_esm/createConfig.js.map +1 -1
  105. package/src/_esm/errors/constants.js +1 -0
  106. package/src/_esm/errors/constants.js.map +1 -1
  107. package/src/_esm/index.js +4 -2
  108. package/src/_esm/index.js.map +1 -1
  109. package/src/_esm/services/api.js +165 -72
  110. package/src/_esm/services/api.js.map +1 -1
  111. package/src/_esm/utils/checkPackageUpdates.js +17 -0
  112. package/src/_esm/utils/checkPackageUpdates.js.map +1 -0
  113. package/src/_esm/utils/convertQuoteToRoute.js +37 -0
  114. package/src/_esm/utils/convertQuoteToRoute.js.map +1 -0
  115. package/src/_esm/utils/fetchTxErrorDetails.js +9 -0
  116. package/src/_esm/utils/fetchTxErrorDetails.js.map +1 -0
  117. package/src/_esm/utils/invariant.js +43 -0
  118. package/src/_esm/utils/invariant.js.map +1 -0
  119. package/src/_esm/utils/waitForResult.js +19 -3
  120. package/src/_esm/utils/waitForResult.js.map +1 -1
  121. package/src/_esm/version.js +1 -1
  122. package/src/_types/constants.d.ts +3 -1
  123. package/src/_types/constants.d.ts.map +1 -1
  124. package/src/_types/core/EVM/EVM.d.ts.map +1 -1
  125. package/src/_types/core/EVM/EVMStepExecutor.d.ts +7 -4
  126. package/src/_types/core/EVM/EVMStepExecutor.d.ts.map +1 -1
  127. package/src/_types/core/EVM/abi.d.ts +202 -5
  128. package/src/_types/core/EVM/abi.d.ts.map +1 -1
  129. package/src/_types/core/EVM/checkAllowance.d.ts +12 -2
  130. package/src/_types/core/EVM/checkAllowance.d.ts.map +1 -1
  131. package/src/_types/core/EVM/getAllowance.d.ts +5 -4
  132. package/src/_types/core/EVM/getAllowance.d.ts.map +1 -1
  133. package/src/_types/core/EVM/getEVMBalance.d.ts +2 -1
  134. package/src/_types/core/EVM/getEVMBalance.d.ts.map +1 -1
  135. package/src/_types/core/EVM/getNativePermit.d.ts +18 -0
  136. package/src/_types/core/EVM/getNativePermit.d.ts.map +1 -0
  137. package/src/_types/core/EVM/permit2/allowanceTransfer.d.ts +41 -0
  138. package/src/_types/core/EVM/permit2/allowanceTransfer.d.ts.map +1 -0
  139. package/src/_types/core/EVM/permit2/constants.d.ts +8 -0
  140. package/src/_types/core/EVM/permit2/constants.d.ts.map +1 -0
  141. package/src/_types/core/EVM/permit2/domain.d.ts +8 -0
  142. package/src/_types/core/EVM/permit2/domain.d.ts.map +1 -0
  143. package/src/_types/core/EVM/permit2/signatureTransfer.d.ts +42 -0
  144. package/src/_types/core/EVM/permit2/signatureTransfer.d.ts.map +1 -0
  145. package/src/_types/core/EVM/setAllowance.d.ts +2 -2
  146. package/src/_types/core/EVM/setAllowance.d.ts.map +1 -1
  147. package/src/_types/core/EVM/signPermitMessage.d.ts +25 -0
  148. package/src/_types/core/EVM/signPermitMessage.d.ts.map +1 -0
  149. package/src/_types/core/EVM/typeguards.d.ts +4 -0
  150. package/src/_types/core/EVM/typeguards.d.ts.map +1 -0
  151. package/src/_types/core/EVM/types.d.ts +8 -18
  152. package/src/_types/core/EVM/types.d.ts.map +1 -1
  153. package/src/_types/core/EVM/utils.d.ts +2 -2
  154. package/src/_types/core/EVM/utils.d.ts.map +1 -1
  155. package/src/_types/core/EVM/waitForBatchTransactionReceipt.d.ts +4 -0
  156. package/src/_types/core/EVM/waitForBatchTransactionReceipt.d.ts.map +1 -0
  157. package/src/_types/core/EVM/waitForRelayedTransactionReceipt.d.ts +4 -0
  158. package/src/_types/core/EVM/waitForRelayedTransactionReceipt.d.ts.map +1 -0
  159. package/src/_types/core/checkBalance.d.ts.map +1 -1
  160. package/src/_types/core/waitForTransactionStatus.d.ts.map +1 -1
  161. package/src/_types/createConfig.d.ts.map +1 -1
  162. package/src/_types/errors/constants.d.ts +2 -1
  163. package/src/_types/errors/constants.d.ts.map +1 -1
  164. package/src/_types/index.d.ts +5 -3
  165. package/src/_types/index.d.ts.map +1 -1
  166. package/src/_types/services/api.d.ts +93 -26
  167. package/src/_types/services/api.d.ts.map +1 -1
  168. package/src/_types/utils/checkPackageUpdates.d.ts +2 -0
  169. package/src/_types/utils/checkPackageUpdates.d.ts.map +1 -0
  170. package/src/_types/utils/convertQuoteToRoute.d.ts +11 -0
  171. package/src/_types/utils/convertQuoteToRoute.d.ts.map +1 -0
  172. package/src/_types/utils/fetchTxErrorDetails.d.ts +2 -0
  173. package/src/_types/utils/fetchTxErrorDetails.d.ts.map +1 -0
  174. package/src/_types/utils/invariant.d.ts +22 -0
  175. package/src/_types/utils/invariant.d.ts.map +1 -0
  176. package/src/_types/utils/waitForResult.d.ts +4 -1
  177. package/src/_types/utils/waitForResult.d.ts.map +1 -1
  178. package/src/_types/version.d.ts +1 -1
  179. package/src/constants.ts +6 -1
  180. package/src/core/EVM/EVM.ts +0 -4
  181. package/src/core/EVM/EVMStepExecutor.ts +242 -146
  182. package/src/core/EVM/abi.ts +40 -43
  183. package/src/core/EVM/checkAllowance.ts +96 -92
  184. package/src/core/EVM/getAllowance.ts +8 -8
  185. package/src/core/EVM/getEVMBalance.ts +2 -2
  186. package/src/core/EVM/getNativePermit.ts +114 -0
  187. package/src/core/EVM/parseEVMErrors.ts +9 -1
  188. package/src/core/EVM/permit2/allowanceTransfer.ts +168 -0
  189. package/src/core/EVM/permit2/constants.ts +11 -0
  190. package/src/core/EVM/permit2/domain.ts +20 -0
  191. package/src/core/EVM/permit2/signatureTransfer.ts +214 -0
  192. package/src/core/EVM/setAllowance.ts +14 -15
  193. package/src/core/EVM/signPermitMessage.ts +280 -0
  194. package/src/core/EVM/typeguards.ts +7 -0
  195. package/src/core/EVM/types.ts +11 -26
  196. package/src/core/EVM/utils.ts +4 -3
  197. package/src/core/EVM/waitForBatchTransactionReceipt.ts +61 -0
  198. package/src/core/EVM/waitForRelayedTransactionReceipt.ts +50 -0
  199. package/src/core/checkBalance.ts +6 -3
  200. package/src/core/waitForTransactionStatus.ts +6 -2
  201. package/src/createConfig.ts +1 -1
  202. package/src/errors/constants.ts +1 -0
  203. package/src/index.ts +4 -8
  204. package/src/services/api.ts +279 -105
  205. package/src/utils/checkPackageUpdates.ts +22 -0
  206. package/src/utils/convertQuoteToRoute.ts +45 -0
  207. package/src/utils/fetchTxErrorDetails.ts +10 -0
  208. package/src/utils/invariant.ts +51 -0
  209. package/src/utils/waitForResult.ts +22 -3
  210. package/src/version.ts +1 -1
  211. package/src/_cjs/core/EVM/multisig.js +0 -29
  212. package/src/_cjs/core/EVM/multisig.js.map +0 -1
  213. package/src/_cjs/helpers.js +0 -55
  214. package/src/_cjs/helpers.js.map +0 -1
  215. package/src/_esm/core/EVM/multisig.js +0 -25
  216. package/src/_esm/core/EVM/multisig.js.map +0 -1
  217. package/src/_esm/helpers.js +0 -58
  218. package/src/_esm/helpers.js.map +0 -1
  219. package/src/_types/core/EVM/multisig.d.ts +0 -6
  220. package/src/_types/core/EVM/multisig.d.ts.map +0 -1
  221. package/src/_types/helpers.d.ts +0 -13
  222. package/src/_types/helpers.d.ts.map +0 -1
  223. package/src/core/EVM/multisig.ts +0 -54
  224. package/src/helpers.ts +0 -75
@@ -1,19 +1,24 @@
1
- import { getAddresses, sendTransaction } from 'viem/actions';
1
+ import { estimateGas, getAddresses, sendTransaction } from 'viem/actions';
2
+ import { getCapabilities, sendCalls } from 'viem/experimental';
2
3
  import { getAction } from 'viem/utils';
3
4
  import { config } from '../../config.js';
4
5
  import { LiFiErrorCode } from '../../errors/constants.js';
5
- import { TransactionError, ValidationError } from '../../errors/errors.js';
6
- import { getStepTransaction } from '../../services/api.js';
6
+ import { TransactionError } from '../../errors/errors.js';
7
+ import { getRelayerQuote, getStepTransaction, relayTransaction, } from '../../services/api.js';
7
8
  import { isZeroAddress } from '../../utils/isZeroAddress.js';
8
9
  import { BaseStepExecutor } from '../BaseStepExecutor.js';
9
10
  import { checkBalance } from '../checkBalance.js';
10
11
  import { stepComparison } from '../stepComparison.js';
11
12
  import { waitForDestinationChainTransaction } from '../waitForDestinationChainTransaction.js';
12
13
  import { checkAllowance } from './checkAllowance.js';
13
- import { updateMultisigRouteProcess } from './multisig.js';
14
+ import { getNativePermit } from './getNativePermit.js';
14
15
  import { parseEVMErrors } from './parseEVMErrors.js';
16
+ import { signPermitMessage } from './signPermitMessage.js';
15
17
  import { switchChain } from './switchChain.js';
18
+ import { isEVMPermitStep } from './typeguards.js';
16
19
  import { getMaxPriorityFeePerGas } from './utils.js';
20
+ import { waitForBatchTransactionReceipt, } from './waitForBatchTransactionReceipt.js';
21
+ import { waitForRelayedTransactionReceipt } from './waitForRelayedTransactionReceipt.js';
17
22
  import { waitForTransactionReceipt } from './waitForTransactionReceipt.js';
18
23
  export class EVMStepExecutor extends BaseStepExecutor {
19
24
  constructor(options) {
@@ -24,12 +29,6 @@ export class EVMStepExecutor extends BaseStepExecutor {
24
29
  writable: true,
25
30
  value: void 0
26
31
  });
27
- Object.defineProperty(this, "multisig", {
28
- enumerable: true,
29
- configurable: true,
30
- writable: true,
31
- value: void 0
32
- });
33
32
  // Ensure that we are using the right chain and wallet when executing transactions.
34
33
  Object.defineProperty(this, "checkClient", {
35
34
  enumerable: true,
@@ -86,29 +85,68 @@ export class EVMStepExecutor extends BaseStepExecutor {
86
85
  return step;
87
86
  }
88
87
  }
89
- const isMultisigClient = !!this.multisig?.isMultisigWalletClient;
90
- const multisigBatchTransactions = [];
91
- const shouldBatchTransactions = this.multisig?.shouldBatchTransactions &&
92
- !!this.multisig.sendBatchTransaction;
93
88
  const fromChain = await config.getChainById(step.action.fromChainId);
94
89
  const toChain = await config.getChainById(step.action.toChainId);
90
+ let atomicBatchSupported = false;
91
+ try {
92
+ const capabilities = (await getAction(this.client, getCapabilities, 'getCapabilities')(undefined));
93
+ atomicBatchSupported = capabilities[fromChain.id]?.atomicBatch?.supported;
94
+ }
95
+ catch {
96
+ // If the wallet does not support getCapabilities, we assume that atomic batch is not supported
97
+ }
98
+ const calls = [];
95
99
  const isBridgeExecution = fromChain.id !== toChain.id;
96
100
  const currentProcessType = isBridgeExecution ? 'CROSS_CHAIN' : 'SWAP';
97
- // Check allowance
101
+ // Find existing swap/bridge process
98
102
  const existingProcess = step.execution.process.find((p) => p.type === currentProcessType);
99
- // Check token approval only if fromToken is not the native token => no approval needed in that case
100
- const checkForAllowance = !existingProcess?.txHash &&
103
+ // Check if step requires permit signature and will be used with relayer service
104
+ const isPermitStep = isEVMPermitStep(step);
105
+ // Check if token requires approval
106
+ // Native tokens (like ETH) don't need approval since they're not ERC20 tokens
107
+ // We should support different permit types:
108
+ // 1. Native permits (EIP-2612)
109
+ // 2. Permit2 - Universal permit implementation by Uniswap (limited to certain chains)
110
+ // 3. Standard ERC20 approval
111
+ const nativePermit = await getNativePermit(this.client, fromChain, step.action.fromToken.address);
112
+ // Check if proxy contract is available and token supports native permits, not available for atomic batch
113
+ const nativePermitSupported = !!fromChain.permit2Proxy &&
114
+ nativePermit.supported &&
115
+ !atomicBatchSupported &&
116
+ !isPermitStep;
117
+ // Check if chain has Permit2 contract deployed. Permit2 should not be available for atomic batch.
118
+ const permit2Supported = !!fromChain.permit2 && !!fromChain.permit2Proxy && !atomicBatchSupported;
119
+ // Token supports either native permits or Permit2
120
+ const permitSupported = permit2Supported || nativePermitSupported;
121
+ const checkForAllowance =
122
+ // No existing swap/bridgetransaction is pending
123
+ !existingProcess?.txHash &&
124
+ // Token is not native (address is not zero)
101
125
  !isZeroAddress(step.action.fromToken.address) &&
102
- (shouldBatchTransactions || !isMultisigClient);
126
+ // Token doesn't support native permits
127
+ !nativePermitSupported;
103
128
  if (checkForAllowance) {
104
- const data = await checkAllowance(this.client, fromChain, step, this.statusManager, this.executionOptions, this.allowUserInteraction, shouldBatchTransactions);
129
+ // Check if token needs approval and get approval transaction or message data when available
130
+ const data = await checkAllowance({
131
+ client: this.client,
132
+ chain: fromChain,
133
+ step,
134
+ statusManager: this.statusManager,
135
+ executionOptions: this.executionOptions,
136
+ allowUserInteraction: this.allowUserInteraction,
137
+ atomicBatchSupported,
138
+ permit2Supported,
139
+ });
105
140
  if (data) {
106
- // allowance doesn't need value
107
- const baseTransaction = {
108
- to: step.action.fromToken.address,
109
- data,
110
- };
111
- multisigBatchTransactions.push(baseTransaction);
141
+ // Create approval transaction call
142
+ // No value needed since we're only approving ERC20 tokens
143
+ if (atomicBatchSupported) {
144
+ calls.push({
145
+ chainId: step.action.fromToken.chainId,
146
+ to: step.action.fromToken.address,
147
+ data,
148
+ });
149
+ }
112
150
  }
113
151
  }
114
152
  let process = this.statusManager.findOrCreateProcess({
@@ -117,15 +155,7 @@ export class EVMStepExecutor extends BaseStepExecutor {
117
155
  chainId: fromChain.id,
118
156
  });
119
157
  if (process.status !== 'DONE') {
120
- const multisigProcess = step.execution.process.find((p) => !!p.multisigTxHash);
121
158
  try {
122
- if (isMultisigClient && multisigProcess) {
123
- const multisigTxHash = multisigProcess.multisigTxHash;
124
- if (!multisigTxHash) {
125
- throw new ValidationError('Multisig internal transaction hash is undefined.');
126
- }
127
- await updateMultisigRouteProcess(multisigTxHash, step, process.type, fromChain, this.statusManager, this.multisig);
128
- }
129
159
  let txHash;
130
160
  if (process.txHash) {
131
161
  // Make sure that the chain is still correct
@@ -140,10 +170,31 @@ export class EVMStepExecutor extends BaseStepExecutor {
140
170
  process = this.statusManager.updateProcess(step, process.type, 'STARTED');
141
171
  // Check balance
142
172
  await checkBalance(this.client.account.address, step);
143
- // Create new transaction
173
+ // Create new transaction request
144
174
  if (!step.transactionRequest) {
145
175
  const { execution, ...stepBase } = step;
146
- const updatedStep = await getStepTransaction(stepBase);
176
+ let updatedStep;
177
+ if (isPermitStep) {
178
+ const updatedRelayedStep = await getRelayerQuote({
179
+ fromChain: stepBase.action.fromChainId,
180
+ fromToken: stepBase.action.fromToken.address,
181
+ fromAddress: stepBase.action.fromAddress,
182
+ fromAmount: stepBase.action.fromAmount,
183
+ toChain: stepBase.action.toChainId,
184
+ toToken: stepBase.action.toToken.address,
185
+ slippage: stepBase.action.slippage,
186
+ toAddress: stepBase.action.toAddress,
187
+ allowBridges: [stepBase.tool],
188
+ });
189
+ updatedStep = {
190
+ ...updatedRelayedStep.data.quote.step,
191
+ ...updatedRelayedStep.data.quote,
192
+ id: stepBase.id,
193
+ };
194
+ }
195
+ else {
196
+ updatedStep = await getStepTransaction(stepBase);
197
+ }
147
198
  const comparedStep = await stepComparison(this.statusManager, step, updatedStep, this.allowUserInteraction, this.executionOptions);
148
199
  Object.assign(step, {
149
200
  ...comparedStep,
@@ -153,15 +204,6 @@ export class EVMStepExecutor extends BaseStepExecutor {
153
204
  if (!step.transactionRequest) {
154
205
  throw new TransactionError(LiFiErrorCode.TransactionUnprepared, 'Unable to prepare transaction.');
155
206
  }
156
- // Make sure that the chain is still correct
157
- const updatedClient = await this.checkClient(step, process);
158
- if (!updatedClient) {
159
- return step;
160
- }
161
- process = this.statusManager.updateProcess(step, process.type, 'ACTION_REQUIRED');
162
- if (!this.allowUserInteraction) {
163
- return step;
164
- }
165
207
  let transactionRequest = {
166
208
  to: step.transactionRequest.to,
167
209
  from: step.transactionRequest.from,
@@ -194,65 +236,118 @@ export class EVMStepExecutor extends BaseStepExecutor {
194
236
  ...customizedTransactionRequest,
195
237
  };
196
238
  }
197
- if (shouldBatchTransactions && this.multisig?.sendBatchTransaction) {
198
- if (transactionRequest.to && transactionRequest.data) {
199
- const populatedTransaction = {
200
- value: transactionRequest.value,
201
- to: transactionRequest.to,
202
- data: transactionRequest.data,
203
- };
204
- multisigBatchTransactions.push(populatedTransaction);
205
- txHash = await this.multisig?.sendBatchTransaction(multisigBatchTransactions);
206
- }
207
- else {
208
- throw new TransactionError(LiFiErrorCode.TransactionUnprepared, 'Unable to prepare transaction.');
209
- }
239
+ // Make sure that the chain is still correct
240
+ const updatedClient = await this.checkClient(step, process);
241
+ if (!updatedClient) {
242
+ return step;
210
243
  }
211
- else {
212
- txHash = await getAction(this.client, sendTransaction, 'sendTransaction')({
213
- to: transactionRequest.to,
214
- account: this.client.account,
244
+ process = this.statusManager.updateProcess(step, process.type, permitSupported ? 'PERMIT_REQUIRED' : 'ACTION_REQUIRED');
245
+ if (!this.allowUserInteraction) {
246
+ return step;
247
+ }
248
+ if (atomicBatchSupported) {
249
+ const transferCall = {
250
+ chainId: fromChain.id,
215
251
  data: transactionRequest.data,
252
+ to: transactionRequest.to,
216
253
  value: transactionRequest.value,
217
- gas: transactionRequest.gas,
218
- gasPrice: transactionRequest.gasPrice,
219
- maxFeePerGas: transactionRequest.maxFeePerGas,
220
- maxPriorityFeePerGas: transactionRequest.maxPriorityFeePerGas,
221
- chain: null,
222
- });
223
- }
224
- if (isMultisigClient) {
225
- process = this.statusManager.updateProcess(step, process.type, 'ACTION_REQUIRED', {
226
- multisigTxHash: txHash,
227
- });
254
+ };
255
+ calls.push(transferCall);
256
+ txHash = (await getAction(this.client, sendCalls, 'sendCalls')({
257
+ account: this.client.account,
258
+ calls,
259
+ }));
228
260
  }
229
261
  else {
230
- process = this.statusManager.updateProcess(step, process.type, 'PENDING', {
262
+ let permitSignature;
263
+ if (permitSupported) {
264
+ permitSignature = await signPermitMessage(this.client, {
265
+ transactionRequest,
266
+ chain: fromChain,
267
+ tokenAddress: step.action.fromToken.address,
268
+ amount: BigInt(step.action.fromAmount),
269
+ nativePermit,
270
+ permitData: isPermitStep ? step.permitData : undefined,
271
+ useWitness: isPermitStep,
272
+ });
273
+ transactionRequest.to = fromChain.permit2Proxy;
274
+ // If it's a permit step, we already have everything encoded in the data field
275
+ transactionRequest.data = isPermitStep
276
+ ? transactionRequest.data
277
+ : permitSignature.data;
278
+ try {
279
+ // Try to re-estimate the gas due to additional Permit data
280
+ transactionRequest.gas = await estimateGas(this.client, {
281
+ account: this.client.account,
282
+ to: transactionRequest.to,
283
+ data: transactionRequest.data,
284
+ value: transactionRequest.value,
285
+ });
286
+ }
287
+ catch {
288
+ // Let the wallet estimate the gas in case of failure
289
+ transactionRequest.gas = undefined;
290
+ }
291
+ process = this.statusManager.updateProcess(step, process.type, 'ACTION_REQUIRED');
292
+ }
293
+ if (isPermitStep && permitSignature) {
294
+ const relayedTransaction = await relayTransaction({
295
+ tokenOwner: this.client.account.address,
296
+ chainId: fromChain.id,
297
+ permit: step.permit,
298
+ witness: step.witness,
299
+ signedPermitData: permitSignature.signature,
300
+ callData: transactionRequest.data,
301
+ });
302
+ txHash = relayedTransaction.data.taskId;
303
+ }
304
+ else {
305
+ txHash = await getAction(this.client, sendTransaction, 'sendTransaction')({
306
+ to: transactionRequest.to,
307
+ account: this.client.account,
308
+ data: transactionRequest.data,
309
+ value: transactionRequest.value,
310
+ gas: transactionRequest.gas,
311
+ gasPrice: transactionRequest.gasPrice,
312
+ maxFeePerGas: transactionRequest.maxFeePerGas,
313
+ maxPriorityFeePerGas: transactionRequest.maxPriorityFeePerGas,
314
+ });
315
+ }
316
+ }
317
+ process = this.statusManager.updateProcess(step, process.type, 'PENDING',
318
+ // When atomic batch is supported, txHash represents the batch hash rather than an individual transaction hash at this point
319
+ atomicBatchSupported
320
+ ? {
321
+ atomicBatchSupported,
322
+ }
323
+ : {
231
324
  txHash: txHash,
232
325
  txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${txHash}`,
233
326
  });
234
- }
235
327
  }
236
- const transactionReceipt = await waitForTransactionReceipt({
237
- client: this.client,
238
- chainId: fromChain.id,
239
- txHash,
240
- onReplaced: (response) => {
241
- this.statusManager.updateProcess(step, process.type, 'PENDING', {
242
- txHash: response.transaction.hash,
243
- txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${response.transaction.hash}`,
244
- });
245
- },
246
- });
247
- // if it's multisig wallet client and the process is in ACTION_REQUIRED
248
- // then signatures are still needed
249
- if (isMultisigClient && process.status === 'ACTION_REQUIRED') {
250
- await updateMultisigRouteProcess(transactionReceipt?.transactionHash || txHash, step, process.type, fromChain, this.statusManager, this.multisig);
328
+ let transactionReceipt;
329
+ if (atomicBatchSupported) {
330
+ transactionReceipt = await waitForBatchTransactionReceipt(this.client, txHash);
331
+ }
332
+ else if (isPermitStep) {
333
+ transactionReceipt = await waitForRelayedTransactionReceipt(txHash);
334
+ }
335
+ else {
336
+ transactionReceipt = await waitForTransactionReceipt({
337
+ client: this.client,
338
+ chainId: fromChain.id,
339
+ txHash,
340
+ onReplaced: (response) => {
341
+ this.statusManager.updateProcess(step, process.type, 'PENDING', {
342
+ txHash: response.transaction.hash,
343
+ txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${response.transaction.hash}`,
344
+ });
345
+ },
346
+ });
251
347
  }
252
348
  // Update pending process if the transaction hash from the receipt is different.
253
349
  // This might happen if the transaction was replaced.
254
- if (!isMultisigClient &&
255
- transactionReceipt?.transactionHash &&
350
+ if (transactionReceipt?.transactionHash &&
256
351
  transactionReceipt.transactionHash !== txHash) {
257
352
  process = this.statusManager.updateProcess(step, process.type, 'PENDING', {
258
353
  txHash: transactionReceipt.transactionHash,
@@ -290,7 +385,6 @@ export class EVMStepExecutor extends BaseStepExecutor {
290
385
  }
291
386
  });
292
387
  this.client = options.client;
293
- this.multisig = options.multisig;
294
388
  }
295
389
  }
296
390
  //# sourceMappingURL=EVMStepExecutor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EVMStepExecutor.js","sourceRoot":"","sources":["../../../core/EVM/EVMStepExecutor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EVMStepExecutor.js","sourceRoot":"","sources":["../../../core/EVM/EVMStepExecutor.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAEzE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAMrD,OAAO,EAAE,kCAAkC,EAAE,MAAM,0CAA0C,CAAA;AAC7F,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAwB,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAEL,8BAA8B,GAC/B,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAA;AACxF,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAa1E,MAAM,OAAO,eAAgB,SAAQ,gBAAgB;IAGnD,YAAY,OAA+B;QACzC,KAAK,CAAC,OAAO,CAAC,CAAA;QAHR;;;;;WAAc;QAOtB,mFAAmF;QACnF;;;;mBAAc,KAAK,EAAE,IAAsB,EAAE,OAAiB,EAAE,EAAE;gBAChE,MAAM,aAAa,GAAG,MAAM,WAAW,CACrC,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,aAAa,EAClB,IAAI,EACJ,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,gBAAgB,EAAE,eAAe,CACvC,CAAA;gBACD,IAAI,aAAa,EAAE,CAAC;oBAClB,IAAI,CAAC,MAAM,GAAG,aAAa,CAAA;gBAC7B,CAAC;gBAED,4FAA4F;gBAC5F,IAAI,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAA;gBACjD,IAAI,CAAC,cAAc,EAAE,CAAC;oBACpB,MAAM,gBAAgB,GAAG,CAAC,MAAM,SAAS,CACvC,IAAI,CAAC,MAAM,EACX,YAAY,EACZ,cAAc,CACf,CAAC,SAAS,CAAC,CAA2B,CAAA;oBACvC,cAAc,GAAG,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAA;gBACxC,CAAC;gBACD,IAAI,cAAc,KAAK,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;oBAC/C,IAAI,eAAe,GAAG,OAAO,CAAA;oBAC7B,IAAI,CAAC,eAAe,EAAE,CAAC;wBACrB,+EAA+E;wBAC/E,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC;4BACvD,IAAI;4BACJ,IAAI,EAAE,aAAa;yBACpB,CAAC,CAAA;oBACJ,CAAC;oBACD,MAAM,YAAY,GAChB,mHAAmH,CAAA;oBACrH,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE;wBACrE,KAAK,EAAE;4BACL,IAAI,EAAE,aAAa,CAAC,4BAA4B;4BAChD,OAAO,EAAE,YAAY;yBACtB;qBACF,CAAC,CAAA;oBACF,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;oBAClD,MAAM,MAAM,cAAc,CACxB,IAAI,gBAAgB,CAClB,aAAa,CAAC,4BAA4B,EAC1C,YAAY,CACb,EACD,IAAI,EACJ,OAAO,CACR,CAAA;gBACH,CAAC;gBACD,OAAO,aAAa,CAAA;YACtB,CAAC;WAAA;QAED;;;;mBAAc,KAAK,EAAE,IAAsB,EAA6B,EAAE;gBACxE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAA;gBAE7D,2FAA2F;gBAC3F,MAAM,uBAAuB,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAC1D,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,iBAAiB,CAChD,CAAA;gBAED,4CAA4C;gBAC5C,gGAAgG;gBAChG,qDAAqD;gBACrD,kBAAkB;gBAClB,IAAI,uBAAuB,EAAE,SAAS,KAAK,8BAA8B,EAAE,CAAC;oBAC1E,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;oBAClD,IAAI,CAAC,aAAa,EAAE,CAAC;wBACnB,OAAO,IAAI,CAAA;oBACb,CAAC;gBACH,CAAC;gBAED,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;gBACpE,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;gBAEhE,IAAI,oBAAoB,GAAG,KAAK,CAAA;gBAChC,IAAI,CAAC;oBACH,MAAM,YAAY,GAAG,CAAC,MAAM,SAAS,CACnC,IAAI,CAAC,MAAM,EACX,eAAe,EACf,iBAAiB,CAClB,CAAC,SAAS,CAAC,CAA8B,CAAA;oBAC1C,oBAAoB,GAAG,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,SAAS,CAAA;gBAC3E,CAAC;gBAAC,MAAM,CAAC;oBACP,+FAA+F;gBACjG,CAAC;gBAED,MAAM,KAAK,GAAW,EAAE,CAAA;gBAExB,MAAM,iBAAiB,GAAG,SAAS,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAA;gBACrD,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAA;gBAErE,oCAAoC;gBACpC,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CACjD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,CACrC,CAAA;gBAED,gFAAgF;gBAChF,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;gBAE1C,mCAAmC;gBACnC,8EAA8E;gBAC9E,4CAA4C;gBAC5C,+BAA+B;gBAC/B,sFAAsF;gBACtF,6BAA6B;gBAC7B,MAAM,YAAY,GAAG,MAAM,eAAe,CACxC,IAAI,CAAC,MAAM,EACX,SAAS,EACT,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAkB,CACzC,CAAA;gBACD,yGAAyG;gBACzG,MAAM,qBAAqB,GACzB,CAAC,CAAC,SAAS,CAAC,YAAY;oBACxB,YAAY,CAAC,SAAS;oBACtB,CAAC,oBAAoB;oBACrB,CAAC,YAAY,CAAA;gBACf,kGAAkG;gBAClG,MAAM,gBAAgB,GACpB,CAAC,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,CAAC,SAAS,CAAC,YAAY,IAAI,CAAC,oBAAoB,CAAA;gBAC1E,kDAAkD;gBAClD,MAAM,eAAe,GAAG,gBAAgB,IAAI,qBAAqB,CAAA;gBAEjE,MAAM,iBAAiB;gBACrB,gDAAgD;gBAChD,CAAC,eAAe,EAAE,MAAM;oBACxB,4CAA4C;oBAC5C,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC;oBAC7C,uCAAuC;oBACvC,CAAC,qBAAqB,CAAA;gBAExB,IAAI,iBAAiB,EAAE,CAAC;oBACtB,4FAA4F;oBAC5F,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC;wBAChC,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,KAAK,EAAE,SAAS;wBAChB,IAAI;wBACJ,aAAa,EAAE,IAAI,CAAC,aAAa;wBACjC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;wBACvC,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;wBAC/C,oBAAoB;wBACpB,gBAAgB;qBACjB,CAAC,CAAA;oBAEF,IAAI,IAAI,EAAE,CAAC;wBACT,mCAAmC;wBACnC,0DAA0D;wBAC1D,IAAI,oBAAoB,EAAE,CAAC;4BACzB,KAAK,CAAC,IAAI,CAAC;gCACT,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO;gCACtC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAkB;gCAC5C,IAAI;6BACL,CAAC,CAAA;wBACJ,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,IAAI,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC;oBACnD,IAAI;oBACJ,IAAI,EAAE,kBAAkB;oBACxB,OAAO,EAAE,SAAS,CAAC,EAAE;iBACtB,CAAC,CAAA;gBAEF,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;oBAC9B,IAAI,CAAC;wBACH,IAAI,MAAY,CAAA;wBAChB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;4BACnB,4CAA4C;4BAC5C,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;4BAC3D,IAAI,CAAC,aAAa,EAAE,CAAC;gCACnB,OAAO,IAAI,CAAA;4BACb,CAAC;4BAED,+BAA+B;4BAC/B,MAAM,GAAG,OAAO,CAAC,MAAc,CAAA;wBACjC,CAAC;6BAAM,CAAC;4BACN,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CACxC,IAAI,EACJ,OAAO,CAAC,IAAI,EACZ,SAAS,CACV,CAAA;4BAED,gBAAgB;4BAChB,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;4BAEtD,iCAAiC;4BACjC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;gCAC7B,MAAM,EAAE,SAAS,EAAE,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAA;gCACvC,IAAI,WAAqB,CAAA;gCACzB,IAAI,YAAY,EAAE,CAAC;oCACjB,MAAM,kBAAkB,GAAG,MAAM,eAAe,CAAC;wCAC/C,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW;wCACtC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO;wCAC5C,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAY;wCACzC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU;wCACtC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS;wCAClC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO;wCACxC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ;wCAClC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS;wCACpC,YAAY,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;qCAC9B,CAAC,CAAA;oCACF,WAAW,GAAG;wCACZ,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI;wCACrC,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK;wCAChC,EAAE,EAAE,QAAQ,CAAC,EAAE;qCAChB,CAAA;gCACH,CAAC;qCAAM,CAAC;oCACN,WAAW,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAA;gCAClD,CAAC;gCACD,MAAM,YAAY,GAAG,MAAM,cAAc,CACvC,IAAI,CAAC,aAAa,EAClB,IAAI,EACJ,WAAW,EACX,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,gBAAgB,CACtB,CAAA;gCACD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;oCAClB,GAAG,YAAY;oCACf,SAAS,EAAE,IAAI,CAAC,SAAS;iCAC1B,CAAC,CAAA;4BACJ,CAAC;4BAED,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;gCAC7B,MAAM,IAAI,gBAAgB,CACxB,aAAa,CAAC,qBAAqB,EACnC,gCAAgC,CACjC,CAAA;4BACH,CAAC;4BAED,IAAI,kBAAkB,GAA0B;gCAC9C,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,EAAE;gCAC9B,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI;gCAClC,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI;gCAClC,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK;oCAClC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;oCACvC,CAAC,CAAC,SAAS;gCACb,GAAG,EAAE,IAAI,CAAC,kBAAkB,CAAC,QAAQ;oCACnC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;oCAC1C,CAAC,CAAC,SAAS;gCACb,6CAA6C;gCAC7C,yDAAyD;gCACzD,iBAAiB;gCACjB,qDAAqD;gCACrD,6DAA6D;gCAC7D,iBAAiB;gCACjB,oBAAoB,EAClB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,KAAK,OAAO;oCACnC,CAAC,CAAC,MAAM,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC;oCAC5C,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,oBAAoB;wCAC5C,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC;wCACtD,CAAC,CAAC,SAAS;6BAClB,CAAA;4BAED,IAAI,IAAI,CAAC,gBAAgB,EAAE,4BAA4B,EAAE,CAAC;gCACxD,MAAM,4BAA4B,GAChC,MAAM,IAAI,CAAC,gBAAgB,CAAC,4BAA4B,CAAC;oCACvD,WAAW,EAAE,aAAa;oCAC1B,GAAG,kBAAkB;iCACtB,CAAC,CAAA;gCAEJ,kBAAkB,GAAG;oCACnB,GAAG,kBAAkB;oCACrB,GAAG,4BAA4B;iCAChC,CAAA;4BACH,CAAC;4BAED,4CAA4C;4BAC5C,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;4BAC3D,IAAI,CAAC,aAAa,EAAE,CAAC;gCACnB,OAAO,IAAI,CAAA;4BACb,CAAC;4BAED,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CACxC,IAAI,EACJ,OAAO,CAAC,IAAI,EACZ,eAAe,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CACxD,CAAA;4BAED,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;gCAC/B,OAAO,IAAI,CAAA;4BACb,CAAC;4BAED,IAAI,oBAAoB,EAAE,CAAC;gCACzB,MAAM,YAAY,GAAS;oCACzB,OAAO,EAAE,SAAS,CAAC,EAAE;oCACrB,IAAI,EAAE,kBAAkB,CAAC,IAAW;oCACpC,EAAE,EAAE,kBAAkB,CAAC,EAAa;oCACpC,KAAK,EAAE,kBAAkB,CAAC,KAAK;iCAChC,CAAA;gCAED,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;gCAExB,MAAM,GAAG,CAAC,MAAM,SAAS,CACvB,IAAI,CAAC,MAAM,EACX,SAAS,EACT,WAAW,CACZ,CAAC;oCACA,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAQ;oCAC7B,KAAK;iCACN,CAAC,CAAY,CAAA;4BAChB,CAAC;iCAAM,CAAC;gCACN,IAAI,eAA4C,CAAA;gCAChD,IAAI,eAAe,EAAE,CAAC;oCACpB,eAAe,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE;wCACrD,kBAAkB;wCAClB,KAAK,EAAE,SAAS;wCAChB,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAkB;wCACtD,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;wCACtC,YAAY;wCACZ,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;wCACtD,UAAU,EAAE,YAAY;qCACzB,CAAC,CAAA;oCAEF,kBAAkB,CAAC,EAAE,GAAG,SAAS,CAAC,YAAY,CAAA;oCAC9C,8EAA8E;oCAC9E,kBAAkB,CAAC,IAAI,GAAG,YAAY;wCACpC,CAAC,CAAC,kBAAkB,CAAC,IAAI;wCACzB,CAAC,CAAC,eAAe,CAAC,IAAI,CAAA;oCAExB,IAAI,CAAC;wCACH,2DAA2D;wCAC3D,kBAAkB,CAAC,GAAG,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE;4CACtD,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAQ;4CAC7B,EAAE,EAAE,kBAAkB,CAAC,EAAa;4CACpC,IAAI,EAAE,kBAAkB,CAAC,IAAW;4CACpC,KAAK,EAAE,kBAAkB,CAAC,KAAK;yCAChC,CAAC,CAAA;oCACJ,CAAC;oCAAC,MAAM,CAAC;wCACP,qDAAqD;wCACrD,kBAAkB,CAAC,GAAG,GAAG,SAAS,CAAA;oCACpC,CAAC;oCAED,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CACxC,IAAI,EACJ,OAAO,CAAC,IAAI,EACZ,iBAAiB,CAClB,CAAA;gCACH,CAAC;gCACD,IAAI,YAAY,IAAI,eAAe,EAAE,CAAC;oCACpC,MAAM,kBAAkB,GAAG,MAAM,gBAAgB,CAAC;wCAChD,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,OAAQ,CAAC,OAAO;wCACxC,OAAO,EAAE,SAAS,CAAC,EAAE;wCACrB,MAAM,EAAE,IAAI,CAAC,MAAM;wCACnB,OAAO,EAAE,IAAI,CAAC,OAAO;wCACrB,gBAAgB,EAAE,eAAe,CAAC,SAAS;wCAC3C,QAAQ,EAAE,kBAAkB,CAAC,IAAK;qCACnC,CAAC,CAAA;oCACF,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAA;gCACzC,CAAC;qCAAM,CAAC;oCACN,MAAM,GAAG,MAAM,SAAS,CACtB,IAAI,CAAC,MAAM,EACX,eAAe,EACf,iBAAiB,CAClB,CAAC;wCACA,EAAE,EAAE,kBAAkB,CAAC,EAAE;wCACzB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAQ;wCAC7B,IAAI,EAAE,kBAAkB,CAAC,IAAI;wCAC7B,KAAK,EAAE,kBAAkB,CAAC,KAAK;wCAC/B,GAAG,EAAE,kBAAkB,CAAC,GAAG;wCAC3B,QAAQ,EAAE,kBAAkB,CAAC,QAAQ;wCACrC,YAAY,EAAE,kBAAkB,CAAC,YAAY;wCAC7C,oBAAoB,EAAE,kBAAkB,CAAC,oBAAoB;qCACjC,CAAC,CAAA;gCACjC,CAAC;4BACH,CAAC;4BAED,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CACxC,IAAI,EACJ,OAAO,CAAC,IAAI,EACZ,SAAS;4BACT,4HAA4H;4BAC5H,oBAAoB;gCAClB,CAAC,CAAC;oCACE,oBAAoB;iCACrB;gCACH,CAAC,CAAC;oCACE,MAAM,EAAE,MAAM;oCACd,MAAM,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,MAAM,EAAE;iCACjE,CACN,CAAA;wBACH,CAAC;wBAED,IAAI,kBAGS,CAAA;wBAEb,IAAI,oBAAoB,EAAE,CAAC;4BACzB,kBAAkB,GAAG,MAAM,8BAA8B,CACvD,IAAI,CAAC,MAAM,EACX,MAAM,CACP,CAAA;wBACH,CAAC;6BAAM,IAAI,YAAY,EAAE,CAAC;4BACxB,kBAAkB,GAAG,MAAM,gCAAgC,CAAC,MAAM,CAAC,CAAA;wBACrE,CAAC;6BAAM,CAAC;4BACN,kBAAkB,GAAG,MAAM,yBAAyB,CAAC;gCACnD,MAAM,EAAE,IAAI,CAAC,MAAM;gCACnB,OAAO,EAAE,SAAS,CAAC,EAAE;gCACrB,MAAM;gCACN,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE;oCACvB,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE;wCAC9D,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI;wCACjC,MAAM,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE;qCACpF,CAAC,CAAA;gCACJ,CAAC;6BACF,CAAC,CAAA;wBACJ,CAAC;wBAED,gFAAgF;wBAChF,qDAAqD;wBACrD,IACE,kBAAkB,EAAE,eAAe;4BACnC,kBAAkB,CAAC,eAAe,KAAK,MAAM,EAC7C,CAAC;4BACD,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CACxC,IAAI,EACJ,OAAO,CAAC,IAAI,EACZ,SAAS,EACT;gCACE,MAAM,EAAE,kBAAkB,CAAC,eAAe;gCAC1C,MAAM,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,kBAAkB,CAAC,eAAe,EAAE;6BAC7F,CACF,CAAA;wBACH,CAAC;wBAED,IAAI,iBAAiB,EAAE,CAAC;4BACtB,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;wBACxE,CAAC;oBACH,CAAC;oBAAC,OAAO,CAAM,EAAE,CAAC;wBAChB,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;wBACpD,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CACxC,IAAI,EACJ,OAAO,CAAC,IAAI,EACZ,QAAQ,EACR;4BACE,KAAK,EAAE;gCACL,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO;gCAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;6BACjB;yBACF,CACF,CAAA;wBACD,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;wBAElD,MAAM,KAAK,CAAA;oBACb,CAAC;gBACH,CAAC;gBAED,2DAA2D;gBAC3D,IAAI,iBAAiB,EAAE,CAAC;oBACtB,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC;wBAC/C,IAAI;wBACJ,IAAI,EAAE,iBAAiB;wBACvB,MAAM,EAAE,SAAS;wBACjB,OAAO,EAAE,OAAO,CAAC,EAAE;qBACpB,CAAC,CAAA;gBACJ,CAAC;gBAED,MAAM,kCAAkC,CACtC,IAAI,EACJ,OAAO,EACP,IAAI,CAAC,aAAa,EAClB,OAAO,CACR,CAAA;gBAED,OAAO;gBACP,OAAO,IAAI,CAAA;YACb,CAAC;WAAA;QArdC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAC9B,CAAC;CAqdF"}
@@ -1,43 +1,38 @@
1
- export const approveAbi = [
2
- {
3
- name: 'approve',
4
- inputs: [
5
- { internalType: 'address', name: 'spender', type: 'address' },
6
- { internalType: 'uint256', name: 'amount', type: 'uint256' },
7
- ],
8
- outputs: [{ internalType: 'bool', name: 'approved', type: 'bool' }],
9
- stateMutability: 'nonpayable',
10
- type: 'function',
11
- },
12
- ];
13
- export const allowanceAbi = [
14
- {
15
- name: 'allowance',
16
- inputs: [
17
- { internalType: 'address', name: 'owner', type: 'address' },
18
- { internalType: 'address', name: 'spender', type: 'address' },
19
- ],
20
- outputs: [{ internalType: 'uint256', name: 'allowance', type: 'uint256' }],
21
- stateMutability: 'view',
22
- type: 'function',
23
- },
24
- ];
25
- export const getEthBalanceAbi = [
26
- {
27
- inputs: [{ name: '_owner', type: 'address' }],
28
- name: 'getEthBalance',
29
- outputs: [{ name: 'balance', type: 'uint256' }],
30
- type: 'function',
31
- stateMutability: 'view',
32
- },
33
- ];
34
- export const balanceOfAbi = [
35
- {
36
- inputs: [{ name: '_owner', type: 'address' }],
37
- name: 'balanceOf',
38
- outputs: [{ name: 'balance', type: 'uint256' }],
39
- type: 'function',
40
- stateMutability: 'view',
41
- },
42
- ];
1
+ import { parseAbi } from 'viem';
2
+ export const permit2ProxyAbi = parseAbi([
3
+ 'function callDiamondWithPermit2(bytes, ((address, uint256), uint256, uint256), bytes) external',
4
+ 'function callDiamondWithEIP2612Signature(address, uint256, uint256, uint8, bytes32, bytes32, bytes) external payable',
5
+ 'function nextNonce(address) external view returns (uint256)',
6
+ 'function callDiamondWithPermit2Witness(bytes, address, ((address, uint256), uint256, uint256), bytes) external payable',
7
+ ]);
8
+ export const eip2612Abi = parseAbi([
9
+ 'function permit(address, address, uint256, uint256, uint8, bytes32, bytes32) external',
10
+ 'function DOMAIN_SEPARATOR() external view returns (bytes32)',
11
+ 'function nonces(address) external view returns (uint256)',
12
+ 'function name() external view returns (string)',
13
+ 'function version() external view returns (string)',
14
+ ]);
15
+ export const approveAbi = parseAbi([
16
+ 'function approve(address, uint256) external returns (bool)',
17
+ ]);
18
+ export const allowanceAbi = parseAbi([
19
+ 'function allowance(address, address) external view returns (uint256)',
20
+ ]);
21
+ export const getEthBalanceAbi = parseAbi([
22
+ 'function getEthBalance(address) external view returns (uint256)',
23
+ ]);
24
+ export const balanceOfAbi = parseAbi([
25
+ 'function balanceOf(address) external view returns (uint256)',
26
+ ]);
27
+ // EIP-2612 types
28
+ // https://eips.ethereum.org/EIPS/eip-2612
29
+ export const eip2612Types = {
30
+ Permit: [
31
+ { name: 'owner', type: 'address' },
32
+ { name: 'spender', type: 'address' },
33
+ { name: 'value', type: 'uint256' },
34
+ { name: 'nonce', type: 'uint256' },
35
+ { name: 'deadline', type: 'uint256' },
36
+ ],
37
+ };
43
38
  //# sourceMappingURL=abi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"abi.js","sourceRoot":"","sources":["../../../core/EVM/abi.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAQ;IAC7B;QACE,IAAI,EAAE,SAAS;QACf,MAAM,EAAE;YACN,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;YAC7D,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;SAC7D;QACD,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACnE,eAAe,EAAE,YAAY;QAC7B,IAAI,EAAE,UAAU;KACjB;CACF,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAQ;IAC/B;QACE,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE;YACN,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;YAC3D,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;SAC9D;QACD,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC1E,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;CACF,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAQ;IACnC;QACE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC7C,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC/C,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE,MAAM;KACxB;CACF,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAQ;IAC/B;QACE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC7C,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC/C,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE,MAAM;KACxB;CACF,CAAA"}
1
+ {"version":3,"file":"abi.js","sourceRoot":"","sources":["../../../core/EVM/abi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AAE/B,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC;IACtC,gGAAgG;IAChG,sHAAsH;IACtH,6DAA6D;IAC7D,wHAAwH;CACzH,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC;IACjC,uFAAuF;IACvF,6DAA6D;IAC7D,0DAA0D;IAC1D,gDAAgD;IAChD,mDAAmD;CACpD,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC;IACjC,4DAA4D;CAC7D,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAC;IACnC,sEAAsE;CACvE,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACvC,iEAAiE;CAClE,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAC;IACnC,6DAA6D;CAC9D,CAAC,CAAA;AAEF,iBAAiB;AACjB,0CAA0C;AAC1C,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,MAAM,EAAE;QACN,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;QAClC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;QACpC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;QAClC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;QAClC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;KACtC;CACO,CAAA"}
@@ -1,43 +1,49 @@
1
+ import { MaxUint256 } from '../../constants.js';
1
2
  import { getAllowance } from './getAllowance.js';
2
3
  import { parseEVMErrors } from './parseEVMErrors.js';
3
4
  import { setAllowance } from './setAllowance.js';
4
5
  import { waitForTransactionReceipt } from './waitForTransactionReceipt.js';
5
- export const checkAllowance = async (client, chain, step, statusManager, settings, allowUserInteraction = false, shouldBatchTransactions = false) => {
6
- // Ask the user to set an allowance
7
- let allowanceProcess = statusManager.findOrCreateProcess({
6
+ export const checkAllowance = async ({ client, chain, step, statusManager, executionOptions, allowUserInteraction = false, atomicBatchSupported = false, permit2Supported = false, }) => {
7
+ // Find existing or create new allowance process
8
+ const allowanceProcess = statusManager.findOrCreateProcess({
8
9
  step,
9
10
  type: 'TOKEN_ALLOWANCE',
10
11
  chainId: step.action.fromChainId,
11
12
  });
12
- // Check allowance
13
13
  try {
14
+ // Handle existing pending transaction
14
15
  if (allowanceProcess.txHash && allowanceProcess.status !== 'DONE') {
15
16
  await waitForApprovalTransaction(client, allowanceProcess.txHash, allowanceProcess.type, step, chain, statusManager);
17
+ return;
16
18
  }
17
- else {
18
- allowanceProcess = statusManager.updateProcess(step, allowanceProcess.type, 'STARTED');
19
- const approved = await getAllowance(chain.id, step.action.fromToken.address, client.account.address, step.estimate.approvalAddress);
20
- const fromAmount = BigInt(step.action.fromAmount);
21
- if (fromAmount > approved) {
22
- if (!allowUserInteraction) {
23
- return;
24
- }
25
- if (shouldBatchTransactions) {
26
- const approveTxHash = await setAllowance(client, step.action.fromToken.address, step.estimate.approvalAddress, fromAmount, settings, true);
27
- allowanceProcess = statusManager.updateProcess(step, allowanceProcess.type, 'DONE');
28
- return approveTxHash;
29
- }
30
- const approveTxHash = await setAllowance(client, step.action.fromToken.address, step.estimate.approvalAddress, fromAmount);
31
- await waitForApprovalTransaction(client, approveTxHash, allowanceProcess.type, step, chain, statusManager);
32
- }
33
- else {
34
- allowanceProcess = statusManager.updateProcess(step, allowanceProcess.type, 'DONE');
35
- }
19
+ // Start new allowance check
20
+ statusManager.updateProcess(step, allowanceProcess.type, 'STARTED');
21
+ const spenderAddress = permit2Supported
22
+ ? chain.permit2
23
+ : step.estimate.approvalAddress;
24
+ const fromAmount = BigInt(step.action.fromAmount);
25
+ const approved = await getAllowance(chain.id, step.action.fromToken.address, client.account.address, spenderAddress);
26
+ // Return early if already approved
27
+ if (fromAmount <= approved) {
28
+ statusManager.updateProcess(step, allowanceProcess.type, 'DONE');
29
+ return;
36
30
  }
31
+ if (!allowUserInteraction) {
32
+ return;
33
+ }
34
+ statusManager.updateProcess(step, allowanceProcess.type, 'ACTION_REQUIRED');
35
+ // Set new allowance
36
+ const approveAmount = permit2Supported ? MaxUint256 : fromAmount;
37
+ const approveTxHash = await setAllowance(client, step.action.fromToken.address, spenderAddress, approveAmount, executionOptions, atomicBatchSupported);
38
+ if (atomicBatchSupported) {
39
+ statusManager.updateProcess(step, allowanceProcess.type, 'DONE');
40
+ return approveTxHash;
41
+ }
42
+ await waitForApprovalTransaction(client, approveTxHash, allowanceProcess.type, step, chain, statusManager);
37
43
  }
38
44
  catch (e) {
39
45
  const error = await parseEVMErrors(e, step, allowanceProcess);
40
- allowanceProcess = statusManager.updateProcess(step, allowanceProcess.type, 'FAILED', {
46
+ statusManager.updateProcess(step, allowanceProcess.type, 'FAILED', {
41
47
  error: {
42
48
  message: error.cause.message,
43
49
  code: error.code,
@@ -48,25 +54,28 @@ export const checkAllowance = async (client, chain, step, statusManager, setting
48
54
  }
49
55
  };
50
56
  const waitForApprovalTransaction = async (client, txHash, processType, step, chain, statusManager) => {
57
+ const baseExplorerUrl = chain.metamask.blockExplorerUrls[0];
58
+ const getTxLink = (hash) => `${baseExplorerUrl}tx/${hash}`;
51
59
  statusManager.updateProcess(step, processType, 'PENDING', {
52
60
  txHash,
53
- txLink: `${chain.metamask.blockExplorerUrls[0]}tx/${txHash}`,
61
+ txLink: getTxLink(txHash),
54
62
  });
55
63
  const transactionReceipt = await waitForTransactionReceipt({
56
- client: client,
64
+ client,
57
65
  chainId: chain.id,
58
- txHash: txHash,
66
+ txHash,
59
67
  onReplaced(response) {
68
+ const newHash = response.transaction.hash;
60
69
  statusManager.updateProcess(step, processType, 'PENDING', {
61
- txHash: response.transaction.hash,
62
- txLink: `${chain.metamask.blockExplorerUrls[0]}tx/${response.transaction.hash}`,
70
+ txHash: newHash,
71
+ txLink: getTxLink(newHash),
63
72
  });
64
73
  },
65
74
  });
66
- const transactionHash = transactionReceipt?.transactionHash || txHash;
75
+ const finalHash = transactionReceipt?.transactionHash || txHash;
67
76
  statusManager.updateProcess(step, processType, 'DONE', {
68
- txHash: transactionHash,
69
- txLink: `${chain.metamask.blockExplorerUrls[0]}tx/${transactionHash}`,
77
+ txHash: finalHash,
78
+ txLink: getTxLink(finalHash),
70
79
  });
71
80
  };
72
81
  //# sourceMappingURL=checkAllowance.js.map