@lifi/sdk 3.6.0-beta.4 → 3.6.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.
- package/package.json +4 -4
- package/src/_cjs/config.js +3 -0
- package/src/_cjs/config.js.map +1 -1
- package/src/_cjs/core/EVM/EVM.js +4 -0
- package/src/_cjs/core/EVM/EVM.js.map +1 -1
- package/src/_cjs/core/EVM/EVMStepExecutor.js +137 -112
- package/src/_cjs/core/EVM/EVMStepExecutor.js.map +1 -1
- package/src/_cjs/core/EVM/checkAllowance.js +34 -5
- package/src/_cjs/core/EVM/checkAllowance.js.map +1 -1
- package/src/_cjs/core/EVM/checkPermitSupport.js +33 -0
- package/src/_cjs/core/EVM/checkPermitSupport.js.map +1 -0
- package/src/_cjs/core/EVM/parseEVMErrors.js +3 -0
- package/src/_cjs/core/EVM/parseEVMErrors.js.map +1 -1
- package/src/_cjs/core/EVM/{permit2 → permits}/allowanceTransfer.js.map +1 -1
- package/src/_cjs/core/EVM/{permit2 → permits}/constants.js.map +1 -1
- package/src/_cjs/core/EVM/{permit2 → permits}/domain.js.map +1 -1
- package/src/_cjs/core/EVM/permits/encodeNativePermitData.js +16 -0
- package/src/_cjs/core/EVM/permits/encodeNativePermitData.js.map +1 -0
- package/src/_cjs/core/EVM/permits/encodePermit2Data.js +32 -0
- package/src/_cjs/core/EVM/permits/encodePermit2Data.js.map +1 -0
- package/src/_cjs/core/EVM/{getNativePermit.js → permits/getNativePermit.js} +30 -21
- package/src/_cjs/core/EVM/permits/getNativePermit.js.map +1 -0
- package/src/_cjs/core/EVM/permits/getPermitTransferFromValues.js +24 -0
- package/src/_cjs/core/EVM/permits/getPermitTransferFromValues.js.map +1 -0
- package/src/_cjs/core/EVM/permits/signNativePermitMessage.js +20 -0
- package/src/_cjs/core/EVM/permits/signNativePermitMessage.js.map +1 -0
- package/src/_cjs/core/EVM/permits/signPermit2Message.js +43 -0
- package/src/_cjs/core/EVM/permits/signPermit2Message.js.map +1 -0
- package/src/_cjs/core/EVM/permits/signatureTransfer.js.map +1 -0
- package/src/_cjs/core/EVM/permits/types.js +3 -0
- package/src/_cjs/core/EVM/permits/types.js.map +1 -0
- package/src/_cjs/core/EVM/permits/utils.js +31 -0
- package/src/_cjs/core/EVM/permits/utils.js.map +1 -0
- package/src/_cjs/core/EVM/publicClient.js +32 -33
- package/src/_cjs/core/EVM/publicClient.js.map +1 -1
- package/src/_cjs/core/EVM/typeguards.js +1 -1
- package/src/_cjs/core/EVM/typeguards.js.map +1 -1
- package/src/_cjs/core/EVM/types.js.map +1 -1
- package/src/_cjs/core/EVM/utils.js +37 -1
- package/src/_cjs/core/EVM/utils.js.map +1 -1
- package/src/_cjs/core/EVM/waitForBatchTransactionReceipt.js +3 -2
- package/src/_cjs/core/EVM/waitForBatchTransactionReceipt.js.map +1 -1
- package/src/_cjs/core/EVM/waitForRelayedTransactionReceipt.js +4 -4
- package/src/_cjs/core/EVM/waitForRelayedTransactionReceipt.js.map +1 -1
- package/src/_cjs/core/checkBalance.js +2 -1
- package/src/_cjs/core/checkBalance.js.map +1 -1
- package/src/_cjs/core/utils.js +1 -1
- package/src/_cjs/core/utils.js.map +1 -1
- package/src/_cjs/errors/constants.js +1 -0
- package/src/_cjs/errors/constants.js.map +1 -1
- package/src/_cjs/index.js +5 -2
- package/src/_cjs/index.js.map +1 -1
- package/src/_cjs/services/api.js +18 -6
- package/src/_cjs/services/api.js.map +1 -1
- package/src/_cjs/version.js +1 -1
- package/src/_esm/config.js +3 -0
- package/src/_esm/config.js.map +1 -1
- package/src/_esm/core/EVM/EVM.js +4 -0
- package/src/_esm/core/EVM/EVM.js.map +1 -1
- package/src/_esm/core/EVM/EVMStepExecutor.js +142 -125
- package/src/_esm/core/EVM/EVMStepExecutor.js.map +1 -1
- package/src/_esm/core/EVM/checkAllowance.js +35 -5
- package/src/_esm/core/EVM/checkAllowance.js.map +1 -1
- package/src/_esm/core/EVM/checkPermitSupport.js +43 -0
- package/src/_esm/core/EVM/checkPermitSupport.js.map +1 -0
- package/src/_esm/core/EVM/parseEVMErrors.js +9 -0
- package/src/_esm/core/EVM/parseEVMErrors.js.map +1 -1
- package/src/_esm/core/EVM/{permit2 → permits}/allowanceTransfer.js.map +1 -1
- package/src/_esm/core/EVM/{permit2 → permits}/constants.js.map +1 -1
- package/src/_esm/core/EVM/{permit2 → permits}/domain.js.map +1 -1
- package/src/_esm/core/EVM/permits/encodeNativePermitData.js +12 -0
- package/src/_esm/core/EVM/permits/encodeNativePermitData.js.map +1 -0
- package/src/_esm/core/EVM/permits/encodePermit2Data.js +28 -0
- package/src/_esm/core/EVM/permits/encodePermit2Data.js.map +1 -0
- package/src/_esm/core/EVM/{getNativePermit.js → permits/getNativePermit.js} +30 -21
- package/src/_esm/core/EVM/permits/getNativePermit.js.map +1 -0
- package/src/_esm/core/EVM/permits/getPermitTransferFromValues.js +20 -0
- package/src/_esm/core/EVM/permits/getPermitTransferFromValues.js.map +1 -0
- package/src/_esm/core/EVM/permits/signNativePermitMessage.js +16 -0
- package/src/_esm/core/EVM/permits/signNativePermitMessage.js.map +1 -0
- package/src/_esm/core/EVM/permits/signPermit2Message.js +41 -0
- package/src/_esm/core/EVM/permits/signPermit2Message.js.map +1 -0
- package/src/_esm/core/EVM/{permit2 → permits}/signatureTransfer.js +0 -2
- package/src/_esm/core/EVM/{permit2 → permits}/signatureTransfer.js.map +1 -1
- package/src/_esm/core/EVM/permits/types.js +2 -0
- package/src/_esm/core/EVM/permits/types.js.map +1 -0
- package/src/_esm/core/EVM/permits/utils.js +26 -0
- package/src/_esm/core/EVM/permits/utils.js.map +1 -0
- package/src/_esm/core/EVM/publicClient.js +34 -35
- package/src/_esm/core/EVM/publicClient.js.map +1 -1
- package/src/_esm/core/EVM/typeguards.js +1 -1
- package/src/_esm/core/EVM/typeguards.js.map +1 -1
- package/src/_esm/core/EVM/types.js.map +1 -1
- package/src/_esm/core/EVM/utils.js +34 -0
- package/src/_esm/core/EVM/utils.js.map +1 -1
- package/src/_esm/core/EVM/waitForBatchTransactionReceipt.js +5 -2
- package/src/_esm/core/EVM/waitForBatchTransactionReceipt.js.map +1 -1
- package/src/_esm/core/EVM/waitForRelayedTransactionReceipt.js +4 -4
- package/src/_esm/core/EVM/waitForRelayedTransactionReceipt.js.map +1 -1
- package/src/_esm/core/checkBalance.js +2 -1
- package/src/_esm/core/checkBalance.js.map +1 -1
- package/src/_esm/core/utils.js +1 -1
- package/src/_esm/core/utils.js.map +1 -1
- package/src/_esm/errors/constants.js +1 -0
- package/src/_esm/errors/constants.js.map +1 -1
- package/src/_esm/index.js +1 -0
- package/src/_esm/index.js.map +1 -1
- package/src/_esm/services/api.js +18 -6
- package/src/_esm/services/api.js.map +1 -1
- package/src/_esm/version.js +1 -1
- package/src/_types/config.d.ts +2 -1
- package/src/_types/config.d.ts.map +1 -1
- package/src/_types/core/BaseStepExecutor.d.ts.map +1 -1
- package/src/_types/core/EVM/EVM.d.ts.map +1 -1
- package/src/_types/core/EVM/EVMStepExecutor.d.ts +4 -10
- package/src/_types/core/EVM/EVMStepExecutor.d.ts.map +1 -1
- package/src/_types/core/EVM/checkAllowance.d.ts +13 -2
- package/src/_types/core/EVM/checkAllowance.d.ts.map +1 -1
- package/src/_types/core/EVM/checkPermitSupport.d.ts +27 -0
- package/src/_types/core/EVM/checkPermitSupport.d.ts.map +1 -0
- package/src/_types/core/EVM/getAllowance.d.ts.map +1 -1
- package/src/_types/core/EVM/getENSAddress.d.ts.map +1 -1
- package/src/_types/core/EVM/getEVMBalance.d.ts.map +1 -1
- package/src/_types/core/EVM/parseEVMErrors.d.ts.map +1 -1
- package/src/_types/core/EVM/{permit2 → permits}/allowanceTransfer.d.ts.map +1 -1
- package/src/_types/core/EVM/{permit2 → permits}/constants.d.ts.map +1 -1
- package/src/_types/core/EVM/permits/domain.d.ts +3 -0
- package/src/_types/core/EVM/permits/domain.d.ts.map +1 -0
- package/src/_types/core/EVM/permits/encodeNativePermitData.d.ts +3 -0
- package/src/_types/core/EVM/permits/encodeNativePermitData.d.ts.map +1 -0
- package/src/_types/core/EVM/permits/encodePermit2Data.d.ts +4 -0
- package/src/_types/core/EVM/permits/encodePermit2Data.d.ts.map +1 -0
- package/src/_types/core/EVM/{getNativePermit.d.ts → permits/getNativePermit.d.ts} +2 -9
- package/src/_types/core/EVM/permits/getNativePermit.d.ts.map +1 -0
- package/src/_types/core/EVM/permits/getPermitTransferFromValues.d.ts +5 -0
- package/src/_types/core/EVM/permits/getPermitTransferFromValues.d.ts.map +1 -0
- package/src/_types/core/EVM/permits/signNativePermitMessage.d.ts +4 -0
- package/src/_types/core/EVM/permits/signNativePermitMessage.d.ts.map +1 -0
- package/src/_types/core/EVM/permits/signPermit2Message.d.ts +21 -0
- package/src/_types/core/EVM/permits/signPermit2Message.d.ts.map +1 -0
- package/src/_types/core/EVM/{permit2 → permits}/signatureTransfer.d.ts +15 -16
- package/src/_types/core/EVM/permits/signatureTransfer.d.ts.map +1 -0
- package/src/_types/core/EVM/permits/types.d.ts +24 -0
- package/src/_types/core/EVM/permits/types.d.ts.map +1 -0
- package/src/_types/core/EVM/permits/utils.d.ts +6 -0
- package/src/_types/core/EVM/permits/utils.d.ts.map +1 -0
- package/src/_types/core/EVM/publicClient.d.ts.map +1 -1
- package/src/_types/core/EVM/setAllowance.d.ts.map +1 -1
- package/src/_types/core/EVM/switchChain.d.ts.map +1 -1
- package/src/_types/core/EVM/typeguards.d.ts +2 -1
- package/src/_types/core/EVM/typeguards.d.ts.map +1 -1
- package/src/_types/core/EVM/types.d.ts +13 -7
- package/src/_types/core/EVM/types.d.ts.map +1 -1
- package/src/_types/core/EVM/utils.d.ts +4 -2
- package/src/_types/core/EVM/utils.d.ts.map +1 -1
- package/src/_types/core/EVM/waitForBatchTransactionReceipt.d.ts.map +1 -1
- package/src/_types/core/EVM/waitForRelayedTransactionReceipt.d.ts.map +1 -1
- package/src/_types/core/Solana/SolanaStepExecutor.d.ts.map +1 -1
- package/src/_types/core/Solana/getSNSAddress.d.ts.map +1 -1
- package/src/_types/core/Solana/getSolanaBalance.d.ts.map +1 -1
- package/src/_types/core/Solana/parseSolanaErrors.d.ts.map +1 -1
- package/src/_types/core/StatusManager.d.ts.map +1 -1
- package/src/_types/core/UTXO/UTXOStepExecutor.d.ts.map +1 -1
- package/src/_types/core/UTXO/getUTXOAPIPublicClient.d.ts.map +1 -1
- package/src/_types/core/UTXO/getUTXOBalance.d.ts.map +1 -1
- package/src/_types/core/UTXO/getUTXOPublicClient.d.ts.map +1 -1
- package/src/_types/core/UTXO/parseUTXOErrors.d.ts.map +1 -1
- package/src/_types/core/checkBalance.d.ts.map +1 -1
- package/src/_types/core/execution.d.ts.map +1 -1
- package/src/_types/core/prepareRestart.d.ts.map +1 -1
- package/src/_types/core/provider.d.ts.map +1 -1
- package/src/_types/core/rpc.d.ts.map +1 -1
- package/src/_types/core/stepComparison.d.ts.map +1 -1
- package/src/_types/errors/constants.d.ts +2 -1
- package/src/_types/errors/constants.d.ts.map +1 -1
- package/src/_types/errors/utils/baseErrorRootCause.d.ts.map +1 -1
- package/src/_types/errors/utils/rootCause.d.ts.map +1 -1
- package/src/_types/index.d.ts +1 -0
- package/src/_types/index.d.ts.map +1 -1
- package/src/_types/request.d.ts.map +1 -1
- package/src/_types/services/api.d.ts +4 -47
- package/src/_types/services/api.d.ts.map +1 -1
- package/src/_types/services/balance.d.ts.map +1 -1
- package/src/_types/services/getNameServiceAddress.d.ts.map +1 -1
- package/src/_types/typeguards.d.ts.map +1 -1
- package/src/_types/utils/checkPackageUpdates.d.ts.map +1 -1
- package/src/_types/utils/convertQuoteToRoute.d.ts.map +1 -1
- package/src/_types/utils/fetchTxErrorDetails.d.ts.map +1 -1
- package/src/_types/utils/getTransactionMessage.d.ts.map +1 -1
- package/src/_types/utils/isZeroAddress.d.ts.map +1 -1
- package/src/_types/utils/median.d.ts.map +1 -1
- package/src/_types/utils/waitForResult.d.ts.map +1 -1
- package/src/_types/version.d.ts +1 -1
- package/src/config.ts +4 -1
- package/src/core/EVM/EVM.ts +4 -0
- package/src/core/EVM/EVMStepExecutor.ts +190 -150
- package/src/core/EVM/checkAllowance.ts +69 -6
- package/src/core/EVM/checkPermitSupport.ts +74 -0
- package/src/core/EVM/parseEVMErrors.ts +9 -0
- package/src/core/EVM/{permit2 → permits}/domain.ts +1 -7
- package/src/core/EVM/permits/encodeNativePermitData.ts +19 -0
- package/src/core/EVM/permits/encodePermit2Data.ts +41 -0
- package/src/core/EVM/{getNativePermit.ts → permits/getNativePermit.ts} +37 -31
- package/src/core/EVM/permits/getPermitTransferFromValues.ts +29 -0
- package/src/core/EVM/permits/signNativePermitMessage.ts +27 -0
- package/src/core/EVM/permits/signPermit2Message.ts +95 -0
- package/src/core/EVM/{permit2 → permits}/signatureTransfer.ts +19 -7
- package/src/core/EVM/permits/types.ts +33 -0
- package/src/core/EVM/permits/utils.ts +40 -0
- package/src/core/EVM/publicClient.ts +41 -38
- package/src/core/EVM/typeguards.ts +5 -2
- package/src/core/EVM/types.ts +15 -10
- package/src/core/EVM/utils.ts +53 -2
- package/src/core/EVM/waitForBatchTransactionReceipt.ts +7 -2
- package/src/core/EVM/waitForRelayedTransactionReceipt.ts +4 -4
- package/src/core/checkBalance.ts +2 -1
- package/src/core/utils.ts +1 -1
- package/src/errors/constants.ts +1 -0
- package/src/index.ts +1 -0
- package/src/services/api.ts +62 -66
- package/src/version.ts +1 -1
- package/src/_cjs/core/EVM/getNativePermit.js.map +0 -1
- package/src/_cjs/core/EVM/permit2/signatureTransfer.js.map +0 -1
- package/src/_cjs/core/EVM/signPermitMessage.js +0 -163
- package/src/_cjs/core/EVM/signPermitMessage.js.map +0 -1
- package/src/_esm/core/EVM/getNativePermit.js.map +0 -1
- package/src/_esm/core/EVM/signPermitMessage.js +0 -157
- package/src/_esm/core/EVM/signPermitMessage.js.map +0 -1
- package/src/_types/core/EVM/getNativePermit.d.ts.map +0 -1
- package/src/_types/core/EVM/permit2/domain.d.ts +0 -8
- package/src/_types/core/EVM/permit2/domain.d.ts.map +0 -1
- package/src/_types/core/EVM/permit2/signatureTransfer.d.ts.map +0 -1
- package/src/_types/core/EVM/signPermitMessage.d.ts +0 -25
- package/src/_types/core/EVM/signPermitMessage.d.ts.map +0 -1
- package/src/core/EVM/signPermitMessage.ts +0 -273
- /package/src/_cjs/core/EVM/{permit2 → permits}/allowanceTransfer.js +0 -0
- /package/src/_cjs/core/EVM/{permit2 → permits}/constants.js +0 -0
- /package/src/_cjs/core/EVM/{permit2 → permits}/domain.js +0 -0
- /package/src/_cjs/core/EVM/{permit2 → permits}/signatureTransfer.js +0 -0
- /package/src/_esm/core/EVM/{permit2 → permits}/allowanceTransfer.js +0 -0
- /package/src/_esm/core/EVM/{permit2 → permits}/constants.js +0 -0
- /package/src/_esm/core/EVM/{permit2 → permits}/domain.js +0 -0
- /package/src/_types/core/EVM/{permit2 → permits}/allowanceTransfer.d.ts +0 -0
- /package/src/_types/core/EVM/{permit2 → permits}/constants.d.ts +0 -0
- /package/src/core/EVM/{permit2 → permits}/allowanceTransfer.ts +0 -0
- /package/src/core/EVM/{permit2 → permits}/constants.ts +0 -0
|
@@ -10,12 +10,14 @@ import { checkBalance } from '../checkBalance.js';
|
|
|
10
10
|
import { stepComparison } from '../stepComparison.js';
|
|
11
11
|
import { waitForDestinationChainTransaction } from '../waitForDestinationChainTransaction.js';
|
|
12
12
|
import { checkAllowance } from './checkAllowance.js';
|
|
13
|
-
import { getNativePermit } from './getNativePermit.js';
|
|
14
13
|
import { parseEVMErrors } from './parseEVMErrors.js';
|
|
15
|
-
import {
|
|
14
|
+
import { encodeNativePermitData } from './permits/encodeNativePermitData.js';
|
|
15
|
+
import { encodePermit2Data } from './permits/encodePermit2Data.js';
|
|
16
|
+
import { signPermit2Message } from './permits/signPermit2Message.js';
|
|
17
|
+
import { prettifyPermit2Data } from './permits/utils.js';
|
|
16
18
|
import { switchChain } from './switchChain.js';
|
|
17
19
|
import { isRelayerStep } from './typeguards.js';
|
|
18
|
-
import { getMaxPriorityFeePerGas } from './utils.js';
|
|
20
|
+
import { convertExtendedChain, getMaxPriorityFeePerGas } from './utils.js';
|
|
19
21
|
import { waitForBatchTransactionReceipt, } from './waitForBatchTransactionReceipt.js';
|
|
20
22
|
import { waitForRelayedTransactionReceipt } from './waitForRelayedTransactionReceipt.js';
|
|
21
23
|
import { waitForTransactionReceipt } from './waitForTransactionReceipt.js';
|
|
@@ -44,7 +46,7 @@ export class EVMStepExecutor extends BaseStepExecutor {
|
|
|
44
46
|
const accountAddresses = (await getAction(this.client, getAddresses, 'getAddresses')(undefined));
|
|
45
47
|
accountAddress = accountAddresses?.[0];
|
|
46
48
|
}
|
|
47
|
-
if (accountAddress !== step.action.fromAddress) {
|
|
49
|
+
if (accountAddress?.toLowerCase() !== step.action.fromAddress?.toLowerCase()) {
|
|
48
50
|
let processToUpdate = process;
|
|
49
51
|
if (!processToUpdate) {
|
|
50
52
|
// We need to create some process if we don't have one so we can show the error
|
|
@@ -70,26 +72,27 @@ export class EVMStepExecutor extends BaseStepExecutor {
|
|
|
70
72
|
enumerable: true,
|
|
71
73
|
configurable: true,
|
|
72
74
|
writable: true,
|
|
73
|
-
value: async ({ step, process, fromChain, toChain,
|
|
75
|
+
value: async ({ step, process, fromChain, toChain, txType, txHash, isBridgeExecution, }) => {
|
|
74
76
|
let transactionReceipt;
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
77
|
+
switch (txType) {
|
|
78
|
+
case 'batched':
|
|
79
|
+
transactionReceipt = await waitForBatchTransactionReceipt(this.client, txHash);
|
|
80
|
+
break;
|
|
81
|
+
case 'relayed':
|
|
82
|
+
transactionReceipt = await waitForRelayedTransactionReceipt(txHash);
|
|
83
|
+
break;
|
|
84
|
+
default:
|
|
85
|
+
transactionReceipt = await waitForTransactionReceipt({
|
|
86
|
+
client: this.client,
|
|
87
|
+
chainId: fromChain.id,
|
|
88
|
+
txHash,
|
|
89
|
+
onReplaced: (response) => {
|
|
90
|
+
this.statusManager.updateProcess(step, process.type, 'PENDING', {
|
|
91
|
+
txHash: response.transaction.hash,
|
|
92
|
+
txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${response.transaction.hash}`,
|
|
93
|
+
});
|
|
94
|
+
},
|
|
95
|
+
});
|
|
93
96
|
}
|
|
94
97
|
// Update pending process if the transaction hash from the receipt is different.
|
|
95
98
|
// This might happen if the transaction was replaced.
|
|
@@ -144,36 +147,20 @@ export class EVMStepExecutor extends BaseStepExecutor {
|
|
|
144
147
|
const isFromNativeToken = fromChain.nativeToken.address === step.action.fromToken.address;
|
|
145
148
|
// Check if step requires permit signature and will be used with relayer service
|
|
146
149
|
const isRelayerTransaction = isRelayerStep(step);
|
|
147
|
-
// Check if token requires approval
|
|
148
|
-
// Native tokens (like ETH) don't need approval since they're not ERC20 tokens
|
|
149
|
-
// We should support different permit types:
|
|
150
|
-
// 1. Native permits (EIP-2612)
|
|
151
|
-
// 2. Permit2 - Universal permit implementation by Uniswap (limited to certain chains)
|
|
152
|
-
// 3. Standard ERC20 approval
|
|
153
|
-
const nativePermit = await getNativePermit(this.client, fromChain, step.action.fromToken.address);
|
|
154
|
-
// Check if proxy contract is available and token supports native permits, not available for atomic batch
|
|
155
|
-
const nativePermitSupported = nativePermit.supported &&
|
|
156
|
-
!!fromChain.permit2Proxy &&
|
|
157
|
-
!atomicBatchSupported &&
|
|
158
|
-
!isRelayerTransaction && // TODO: remove once we support ERC-2771
|
|
159
|
-
!isFromNativeToken;
|
|
160
150
|
// Check if chain has Permit2 contract deployed. Permit2 should not be available for atomic batch.
|
|
161
151
|
const permit2Supported = !!fromChain.permit2 &&
|
|
162
152
|
!!fromChain.permit2Proxy &&
|
|
163
153
|
!atomicBatchSupported &&
|
|
164
154
|
!isFromNativeToken;
|
|
165
|
-
// Token supports either native permits or Permit2
|
|
166
|
-
const permitSupported = permit2Supported || nativePermitSupported;
|
|
167
155
|
const checkForAllowance =
|
|
168
|
-
// No existing swap/
|
|
156
|
+
// No existing swap/bridge transaction is pending
|
|
169
157
|
!existingProcess?.txHash &&
|
|
170
158
|
// Token is not native (address is not zero)
|
|
171
|
-
!isFromNativeToken
|
|
172
|
-
|
|
173
|
-
!nativePermitSupported;
|
|
159
|
+
!isFromNativeToken;
|
|
160
|
+
let nativePermitSignature;
|
|
174
161
|
if (checkForAllowance) {
|
|
175
162
|
// Check if token needs approval and get approval transaction or message data when available
|
|
176
|
-
const
|
|
163
|
+
const allowanceResult = await checkAllowance({
|
|
177
164
|
client: this.client,
|
|
178
165
|
chain: fromChain,
|
|
179
166
|
step,
|
|
@@ -183,17 +170,20 @@ export class EVMStepExecutor extends BaseStepExecutor {
|
|
|
183
170
|
atomicBatchSupported,
|
|
184
171
|
permit2Supported,
|
|
185
172
|
});
|
|
186
|
-
if (
|
|
173
|
+
if (allowanceResult.status === 'BATCH_APPROVAL') {
|
|
187
174
|
// Create approval transaction call
|
|
188
175
|
// No value needed since we're only approving ERC20 tokens
|
|
189
176
|
if (atomicBatchSupported) {
|
|
190
|
-
calls.push(
|
|
191
|
-
chainId: step.action.fromToken.chainId,
|
|
192
|
-
to: step.action.fromToken.address,
|
|
193
|
-
data,
|
|
194
|
-
});
|
|
177
|
+
calls.push(allowanceResult.data);
|
|
195
178
|
}
|
|
196
179
|
}
|
|
180
|
+
if (allowanceResult.status === 'NATIVE_PERMIT') {
|
|
181
|
+
nativePermitSignature = allowanceResult.data;
|
|
182
|
+
}
|
|
183
|
+
if (allowanceResult.status === 'ACTION_REQUIRED' &&
|
|
184
|
+
!this.allowUserInteraction) {
|
|
185
|
+
return step;
|
|
186
|
+
}
|
|
197
187
|
}
|
|
198
188
|
let process = this.statusManager.findProcess(step, currentProcessType);
|
|
199
189
|
if (process?.status === 'DONE') {
|
|
@@ -209,21 +199,22 @@ export class EVMStepExecutor extends BaseStepExecutor {
|
|
|
209
199
|
}
|
|
210
200
|
// Wait for exiting transaction
|
|
211
201
|
const txHash = process.txHash;
|
|
202
|
+
const txType = process.txType;
|
|
212
203
|
await this.waitForTransaction({
|
|
213
204
|
step,
|
|
214
205
|
process,
|
|
215
206
|
fromChain,
|
|
216
207
|
toChain,
|
|
217
|
-
|
|
218
|
-
isRelayerTransaction,
|
|
208
|
+
txType,
|
|
219
209
|
txHash,
|
|
220
210
|
isBridgeExecution,
|
|
221
211
|
});
|
|
222
212
|
return step;
|
|
223
213
|
}
|
|
214
|
+
const permitRequired = !atomicBatchSupported && !nativePermitSignature && permit2Supported;
|
|
224
215
|
process = this.statusManager.findOrCreateProcess({
|
|
225
216
|
step,
|
|
226
|
-
type:
|
|
217
|
+
type: permitRequired ? 'PERMIT' : currentProcessType,
|
|
227
218
|
status: 'STARTED',
|
|
228
219
|
});
|
|
229
220
|
// Check balance
|
|
@@ -245,8 +236,8 @@ export class EVMStepExecutor extends BaseStepExecutor {
|
|
|
245
236
|
allowBridges: [stepBase.tool],
|
|
246
237
|
});
|
|
247
238
|
updatedStep = {
|
|
248
|
-
...updatedRelayedStep.
|
|
249
|
-
|
|
239
|
+
...updatedRelayedStep.quote,
|
|
240
|
+
permits: updatedRelayedStep.permits,
|
|
250
241
|
id: stepBase.id,
|
|
251
242
|
};
|
|
252
243
|
}
|
|
@@ -304,7 +295,7 @@ export class EVMStepExecutor extends BaseStepExecutor {
|
|
|
304
295
|
return step;
|
|
305
296
|
}
|
|
306
297
|
let txHash;
|
|
307
|
-
let
|
|
298
|
+
let txType = 'standard';
|
|
308
299
|
if (atomicBatchSupported) {
|
|
309
300
|
const transferCall = {
|
|
310
301
|
chainId: fromChain.id,
|
|
@@ -317,99 +308,125 @@ export class EVMStepExecutor extends BaseStepExecutor {
|
|
|
317
308
|
account: this.client.account,
|
|
318
309
|
calls,
|
|
319
310
|
}));
|
|
311
|
+
txType = 'batched';
|
|
312
|
+
}
|
|
313
|
+
else if (isRelayerTransaction) {
|
|
314
|
+
const permitWitnessTransferFromData = step.permits.find((p) => p.permitType === 'PermitWitnessTransferFrom');
|
|
315
|
+
if (!permitWitnessTransferFromData) {
|
|
316
|
+
throw new TransactionError(LiFiErrorCode.TransactionUnprepared, 'Unable to prepare transaction. Permit data for transfer is not found.');
|
|
317
|
+
}
|
|
318
|
+
const permit2Signature = await signPermit2Message({
|
|
319
|
+
client: this.client,
|
|
320
|
+
chain: fromChain,
|
|
321
|
+
tokenAddress: step.action.fromToken.address,
|
|
322
|
+
amount: BigInt(step.action.fromAmount),
|
|
323
|
+
data: transactionRequest.data,
|
|
324
|
+
permitData: prettifyPermit2Data(permitWitnessTransferFromData.permitData),
|
|
325
|
+
witness: true,
|
|
326
|
+
});
|
|
327
|
+
this.statusManager.updateProcess(step, process.type, 'DONE');
|
|
328
|
+
process = this.statusManager.findOrCreateProcess({
|
|
329
|
+
step,
|
|
330
|
+
type: currentProcessType,
|
|
331
|
+
status: 'PENDING',
|
|
332
|
+
});
|
|
333
|
+
const signedPermits = [
|
|
334
|
+
{
|
|
335
|
+
permitType: 'PermitWitnessTransferFrom',
|
|
336
|
+
permit: permit2Signature.values,
|
|
337
|
+
signature: permit2Signature.signature,
|
|
338
|
+
},
|
|
339
|
+
];
|
|
340
|
+
// Add native permit if available as first element, order is important
|
|
341
|
+
if (nativePermitSignature) {
|
|
342
|
+
signedPermits.unshift({
|
|
343
|
+
permitType: 'Permit',
|
|
344
|
+
permit: nativePermitSignature.values,
|
|
345
|
+
signature: nativePermitSignature.signature,
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
const relayedTransaction = await relayTransaction({
|
|
349
|
+
tokenOwner: this.client.account.address,
|
|
350
|
+
chainId: fromChain.id,
|
|
351
|
+
permits: signedPermits,
|
|
352
|
+
callData: transactionRequest.data,
|
|
353
|
+
});
|
|
354
|
+
txHash = relayedTransaction.taskId;
|
|
355
|
+
txType = 'relayed';
|
|
320
356
|
}
|
|
321
357
|
else {
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
358
|
+
if (nativePermitSignature) {
|
|
359
|
+
transactionRequest.data = encodeNativePermitData(step.action.fromToken.address, BigInt(step.action.fromAmount), nativePermitSignature.values.deadline, nativePermitSignature.signature, transactionRequest.data);
|
|
360
|
+
}
|
|
361
|
+
else if (permit2Supported) {
|
|
362
|
+
const permit2Signature = await signPermit2Message({
|
|
363
|
+
client: this.client,
|
|
326
364
|
chain: fromChain,
|
|
327
365
|
tokenAddress: step.action.fromToken.address,
|
|
328
366
|
amount: BigInt(step.action.fromAmount),
|
|
329
|
-
|
|
330
|
-
permitData: isRelayerTransaction ? step.permitData : undefined,
|
|
331
|
-
useWitness: isRelayerTransaction,
|
|
367
|
+
data: transactionRequest.data,
|
|
332
368
|
});
|
|
333
|
-
transactionRequest.to = fromChain.permit2Proxy;
|
|
334
369
|
this.statusManager.updateProcess(step, process.type, 'DONE');
|
|
335
|
-
}
|
|
336
|
-
if (isRelayerTransaction && permitSignature) {
|
|
337
370
|
process = this.statusManager.findOrCreateProcess({
|
|
338
371
|
step,
|
|
339
372
|
type: currentProcessType,
|
|
340
373
|
status: 'PENDING',
|
|
341
374
|
});
|
|
342
|
-
|
|
343
|
-
tokenOwner: this.client.account.address,
|
|
344
|
-
chainId: fromChain.id,
|
|
345
|
-
permit: step.permit,
|
|
346
|
-
witness: step.witness,
|
|
347
|
-
signedPermitData: permitSignature.signature,
|
|
348
|
-
callData: transactionRequest.data,
|
|
349
|
-
});
|
|
350
|
-
txHash = relayedTransaction.data.taskId;
|
|
351
|
-
isTransactionRelayed = true;
|
|
375
|
+
transactionRequest.data = encodePermit2Data(step.action.fromToken.address, BigInt(step.action.fromAmount), permit2Signature.values.nonce, permit2Signature.values.deadline, transactionRequest.data, permit2Signature.signature);
|
|
352
376
|
}
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
catch {
|
|
376
|
-
// Let the wallet estimate the gas in case of failure
|
|
377
|
-
transactionRequest.gas = undefined;
|
|
378
|
-
}
|
|
377
|
+
if (nativePermitSignature || permit2Supported) {
|
|
378
|
+
try {
|
|
379
|
+
// Target address should be the Permit2 proxy contract in case of native permit or Permit2
|
|
380
|
+
transactionRequest.to = fromChain.permit2Proxy;
|
|
381
|
+
// Try to re-estimate the gas due to additional Permit data
|
|
382
|
+
const estimatedGas = await estimateGas(this.client, {
|
|
383
|
+
account: this.client.account,
|
|
384
|
+
to: transactionRequest.to,
|
|
385
|
+
data: transactionRequest.data,
|
|
386
|
+
value: transactionRequest.value,
|
|
387
|
+
});
|
|
388
|
+
transactionRequest.gas =
|
|
389
|
+
transactionRequest.gas && transactionRequest.gas > estimatedGas
|
|
390
|
+
? transactionRequest.gas
|
|
391
|
+
: estimatedGas;
|
|
392
|
+
}
|
|
393
|
+
catch {
|
|
394
|
+
// Let the wallet estimate the gas in case of failure
|
|
395
|
+
transactionRequest.gas = undefined;
|
|
396
|
+
}
|
|
397
|
+
finally {
|
|
398
|
+
this.statusManager.updateProcess(step, process.type, 'DONE');
|
|
379
399
|
}
|
|
380
|
-
process = this.statusManager.updateProcess(step, process.type, 'ACTION_REQUIRED');
|
|
381
|
-
txHash = await getAction(this.client, sendTransaction, 'sendTransaction')({
|
|
382
|
-
to: transactionRequest.to,
|
|
383
|
-
account: this.client.account,
|
|
384
|
-
data: transactionRequest.data,
|
|
385
|
-
value: transactionRequest.value,
|
|
386
|
-
gas: transactionRequest.gas,
|
|
387
|
-
gasPrice: transactionRequest.gasPrice,
|
|
388
|
-
maxFeePerGas: transactionRequest.maxFeePerGas,
|
|
389
|
-
maxPriorityFeePerGas: transactionRequest.maxPriorityFeePerGas,
|
|
390
|
-
});
|
|
391
400
|
}
|
|
401
|
+
process = this.statusManager.updateProcess(step, process.type, 'ACTION_REQUIRED');
|
|
402
|
+
txHash = await getAction(this.client, sendTransaction, 'sendTransaction')({
|
|
403
|
+
to: transactionRequest.to,
|
|
404
|
+
account: this.client.account,
|
|
405
|
+
data: transactionRequest.data,
|
|
406
|
+
value: transactionRequest.value,
|
|
407
|
+
gas: transactionRequest.gas,
|
|
408
|
+
gasPrice: transactionRequest.gasPrice,
|
|
409
|
+
maxFeePerGas: transactionRequest.maxFeePerGas,
|
|
410
|
+
maxPriorityFeePerGas: transactionRequest.maxPriorityFeePerGas,
|
|
411
|
+
chain: convertExtendedChain(fromChain),
|
|
412
|
+
});
|
|
392
413
|
}
|
|
393
414
|
process = this.statusManager.updateProcess(step, process.type, 'PENDING',
|
|
394
|
-
// When atomic batch
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
txHash: txHash,
|
|
403
|
-
txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${txHash}`,
|
|
404
|
-
});
|
|
415
|
+
// When atomic batch or relayer are supported, txHash represents the batch hash or taskId rather than an individual transaction hash
|
|
416
|
+
{
|
|
417
|
+
txHash,
|
|
418
|
+
txType,
|
|
419
|
+
txLink: txType === 'standard'
|
|
420
|
+
? `${fromChain.metamask.blockExplorerUrls[0]}tx/${txHash}`
|
|
421
|
+
: undefined,
|
|
422
|
+
});
|
|
405
423
|
await this.waitForTransaction({
|
|
406
424
|
step,
|
|
407
425
|
process,
|
|
408
426
|
fromChain,
|
|
409
427
|
toChain,
|
|
410
|
-
atomicBatchSupported,
|
|
411
|
-
isRelayerTransaction,
|
|
412
428
|
txHash,
|
|
429
|
+
txType,
|
|
413
430
|
isBridgeExecution,
|
|
414
431
|
});
|
|
415
432
|
// DONE
|
|
@@ -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":"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"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { MaxUint256 } from '../../constants.js';
|
|
2
2
|
import { getAllowance } from './getAllowance.js';
|
|
3
3
|
import { parseEVMErrors } from './parseEVMErrors.js';
|
|
4
|
+
import { getNativePermit } from './permits/getNativePermit.js';
|
|
5
|
+
import { signNativePermitMessage } from './permits/signNativePermitMessage.js';
|
|
6
|
+
import { prettifyNativePermitData } from './permits/utils.js';
|
|
4
7
|
import { setAllowance } from './setAllowance.js';
|
|
8
|
+
import { isRelayerStep } from './typeguards.js';
|
|
5
9
|
import { waitForTransactionReceipt } from './waitForTransactionReceipt.js';
|
|
6
10
|
export const checkAllowance = async ({ client, chain, step, statusManager, executionOptions, allowUserInteraction = false, atomicBatchSupported = false, permit2Supported = false, }) => {
|
|
7
11
|
// Find existing or create new allowance process
|
|
@@ -14,7 +18,7 @@ export const checkAllowance = async ({ client, chain, step, statusManager, execu
|
|
|
14
18
|
// Handle existing pending transaction
|
|
15
19
|
if (allowanceProcess.txHash && allowanceProcess.status !== 'DONE') {
|
|
16
20
|
await waitForApprovalTransaction(client, allowanceProcess.txHash, allowanceProcess.type, step, chain, statusManager);
|
|
17
|
-
return;
|
|
21
|
+
return { status: 'DONE' };
|
|
18
22
|
}
|
|
19
23
|
// Start new allowance check
|
|
20
24
|
statusManager.updateProcess(step, allowanceProcess.type, 'STARTED');
|
|
@@ -26,20 +30,46 @@ export const checkAllowance = async ({ client, chain, step, statusManager, execu
|
|
|
26
30
|
// Return early if already approved
|
|
27
31
|
if (fromAmount <= approved) {
|
|
28
32
|
statusManager.updateProcess(step, allowanceProcess.type, 'DONE');
|
|
29
|
-
return;
|
|
33
|
+
return { status: 'DONE' };
|
|
30
34
|
}
|
|
31
|
-
|
|
32
|
-
|
|
35
|
+
const isRelayerTransaction = isRelayerStep(step);
|
|
36
|
+
let nativePermitData;
|
|
37
|
+
if (isRelayerTransaction) {
|
|
38
|
+
const permitData = step.permits.find((p) => p.permitType === 'Permit')?.permitData;
|
|
39
|
+
if (permitData) {
|
|
40
|
+
nativePermitData = prettifyNativePermitData(permitData);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
nativePermitData = await getNativePermit(client, chain, step.action.fromToken.address, fromAmount);
|
|
33
45
|
}
|
|
34
46
|
statusManager.updateProcess(step, allowanceProcess.type, 'ACTION_REQUIRED');
|
|
47
|
+
if (!allowUserInteraction) {
|
|
48
|
+
return { status: 'ACTION_REQUIRED' };
|
|
49
|
+
}
|
|
50
|
+
// Check if proxy contract is available and token supports native permits, not available for atomic batch
|
|
51
|
+
const nativePermitSupported = !!nativePermitData && !!chain.permit2Proxy && !atomicBatchSupported;
|
|
52
|
+
if (nativePermitSupported && nativePermitData) {
|
|
53
|
+
const nativePermitSignature = await signNativePermitMessage(client, nativePermitData);
|
|
54
|
+
statusManager.updateProcess(step, allowanceProcess.type, 'DONE');
|
|
55
|
+
return { status: 'NATIVE_PERMIT', data: nativePermitSignature };
|
|
56
|
+
}
|
|
35
57
|
// Set new allowance
|
|
36
58
|
const approveAmount = permit2Supported ? MaxUint256 : fromAmount;
|
|
37
59
|
const approveTxHash = await setAllowance(client, step.action.fromToken.address, spenderAddress, approveAmount, executionOptions, atomicBatchSupported);
|
|
38
60
|
if (atomicBatchSupported) {
|
|
39
61
|
statusManager.updateProcess(step, allowanceProcess.type, 'DONE');
|
|
40
|
-
return
|
|
62
|
+
return {
|
|
63
|
+
status: 'BATCH_APPROVAL',
|
|
64
|
+
data: {
|
|
65
|
+
to: step.action.fromToken.address,
|
|
66
|
+
data: approveTxHash,
|
|
67
|
+
chainId: step.action.fromToken.chainId,
|
|
68
|
+
},
|
|
69
|
+
};
|
|
41
70
|
}
|
|
42
71
|
await waitForApprovalTransaction(client, approveTxHash, allowanceProcess.type, step, chain, statusManager);
|
|
72
|
+
return { status: 'DONE' };
|
|
43
73
|
}
|
|
44
74
|
catch (e) {
|
|
45
75
|
const error = await parseEVMErrors(e, step, allowanceProcess);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkAllowance.js","sourceRoot":"","sources":["../../../core/EVM/checkAllowance.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAG/C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;
|
|
1
|
+
{"version":3,"file":"checkAllowance.js","sourceRoot":"","sources":["../../../core/EVM/checkAllowance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { ChainType } from '@lifi/types';
|
|
2
|
+
import { config } from '../../config.js';
|
|
3
|
+
import { getAllowance } from './getAllowance.js';
|
|
4
|
+
import { getNativePermit } from './permits/getNativePermit.js';
|
|
5
|
+
import { getPublicClient } from './publicClient.js';
|
|
6
|
+
/**
|
|
7
|
+
* Checks what permit types are supported for a token on a specific chain.
|
|
8
|
+
* Checks in order:
|
|
9
|
+
* 1. Native permit (EIP-2612) support
|
|
10
|
+
* 2. Permit2 availability and allowance
|
|
11
|
+
*
|
|
12
|
+
* @param chain - The chain to check permit support on
|
|
13
|
+
* @param tokenAddress - The token address to check
|
|
14
|
+
* @param ownerAddress - The address that would sign the permit
|
|
15
|
+
* @param amount - The amount to check allowance against for Permit2
|
|
16
|
+
* @returns Object indicating which permit types are supported
|
|
17
|
+
*/
|
|
18
|
+
export const checkPermitSupport = async ({ chain, tokenAddress, ownerAddress, amount, }) => {
|
|
19
|
+
const provider = config.getProvider(ChainType.EVM);
|
|
20
|
+
let client = await provider?.getWalletClient?.();
|
|
21
|
+
if (!client) {
|
|
22
|
+
client = await getPublicClient(chain.id);
|
|
23
|
+
}
|
|
24
|
+
let nativePermit;
|
|
25
|
+
// Try with wallet client first, fallback to public client
|
|
26
|
+
try {
|
|
27
|
+
nativePermit = await getNativePermit(client, chain, tokenAddress, amount);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
client = await getPublicClient(chain.id);
|
|
31
|
+
nativePermit = await getNativePermit(client, chain, tokenAddress, amount);
|
|
32
|
+
}
|
|
33
|
+
let permit2Allowance;
|
|
34
|
+
// Check Permit2 allowance if available on chain
|
|
35
|
+
if (chain.permit2) {
|
|
36
|
+
permit2Allowance = await getAllowance(chain.id, tokenAddress, ownerAddress, chain.permit2);
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
nativePermitSupported: !!nativePermit,
|
|
40
|
+
permit2AllowanceSufficient: !!permit2Allowance && permit2Allowance >= amount,
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=checkPermitSupport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkPermitSupport.js","sourceRoot":"","sources":["../../../core/EVM/checkPermitSupport.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAE9D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAUnD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EAAE,EACvC,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,MAAM,GAMP,EAA0B,EAAE;IAC3B,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAA4B,CAAA;IAE7E,IAAI,MAAM,GAAG,MAAM,QAAQ,EAAE,eAAe,EAAE,EAAE,CAAA;IAEhD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC1C,CAAC;IAED,IAAI,YAA0C,CAAA;IAC9C,0DAA0D;IAC1D,IAAI,CAAC;QACH,YAAY,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,CAAA;IAC3E,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACxC,YAAY,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,CAAA;IAC3E,CAAC;IAED,IAAI,gBAAoC,CAAA;IACxC,gDAAgD;IAChD,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,gBAAgB,GAAG,MAAM,YAAY,CACnC,KAAK,CAAC,EAAE,EACR,YAAY,EACZ,YAAY,EACZ,KAAK,CAAC,OAAkB,CACzB,CAAA;IACH,CAAC;IAED,OAAO;QACL,qBAAqB,EAAE,CAAC,CAAC,YAAY;QACrC,0BAA0B,EACxB,CAAC,CAAC,gBAAgB,IAAI,gBAAgB,IAAI,MAAM;KACnD,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -25,6 +25,15 @@ const handleSpecificErrors = async (e, step, process) => {
|
|
|
25
25
|
if (e.cause?.code === -32000) {
|
|
26
26
|
return new TransactionError(LiFiErrorCode.SignatureRejected, e.message, e);
|
|
27
27
|
}
|
|
28
|
+
// Some wallets reject transactions sometimes with this code because of internal and JSON-RPC errors, e.g.:
|
|
29
|
+
// {
|
|
30
|
+
// "code": -32603,
|
|
31
|
+
// "message": "Pop up window failed to open",
|
|
32
|
+
// "docUrl": "https://docs.cloud.coinbase.com/wallet-sdk/docs/errors"
|
|
33
|
+
// }
|
|
34
|
+
if (e.cause?.code === -32603) {
|
|
35
|
+
return new TransactionError(LiFiErrorCode.TransactionRejected, e.message, e);
|
|
36
|
+
}
|
|
28
37
|
if (step &&
|
|
29
38
|
process?.txHash &&
|
|
30
39
|
e.code === LiFiErrorCode.TransactionFailed &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseEVMErrors.js","sourceRoot":"","sources":["../../../core/EVM/parseEVMErrors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACvE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AAGxE,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EACjC,CAAQ,EACR,IAAe,EACf,OAAiB,EACE,EAAE;IACrB,IAAI,CAAC,YAAY,QAAQ,EAAE,CAAC;QAC1B,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAA;QACvB,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,OAAO,CAAA;QAChC,OAAO,CAAC,CAAA;IACV,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IAE9D,OAAO,IAAI,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;AAC/C,CAAC,CAAA;AAED,MAAM,oBAAoB,GAAG,KAAK,EAChC,CAAM,EACN,IAAe,EACf,OAAiB,EACjB,EAAE;IACF,IACE,CAAC,CAAC,IAAI,KAAK,0BAA0B;QACrC,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,0BAA0B,EAC5C,CAAC;QACD,OAAO,IAAI,gBAAgB,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;IAC5E,CAAC;IACD,oFAAoF;IACpF,IAAI;IACJ,kBAAkB;IAClB,0CAA0C;IAC1C,IAAI;IACJ,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC7B,OAAO,IAAI,gBAAgB,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;IAC5E,CAAC;IAED,IACE,IAAI;QACJ,OAAO,EAAE,MAAM;QACf,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,iBAAiB;QAC1C,CAAC,CAAC,OAAO,KAAK,YAAY,CAAC,mBAAmB,EAC9C,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CACxC,OAAO,CAAC,MAAM,EACd,IAAI,CAAC,MAAM,CAAC,WAAW,CACxB,CAAA;QAED,MAAM,YAAY,GAAG,QAAQ,EAAE,aAAa,CAAA;QAE5C,IAAI,YAAY,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACvD,OAAO,IAAI,gBAAgB,CACzB,aAAa,CAAC,aAAa,EAC3B,YAAY,CAAC,WAAW,EACxB,CAAC,CACF,CAAA;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,YAAY,SAAS,EAAE,CAAC;QAC3B,OAAO,CAAC,CAAA;IACV,CAAC;IAED,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,OAAO,IAAI,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,CAAA;AACpE,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"parseEVMErrors.js","sourceRoot":"","sources":["../../../core/EVM/parseEVMErrors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACvE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AAGxE,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EACjC,CAAQ,EACR,IAAe,EACf,OAAiB,EACE,EAAE;IACrB,IAAI,CAAC,YAAY,QAAQ,EAAE,CAAC;QAC1B,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAA;QACvB,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,OAAO,CAAA;QAChC,OAAO,CAAC,CAAA;IACV,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IAE9D,OAAO,IAAI,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;AAC/C,CAAC,CAAA;AAED,MAAM,oBAAoB,GAAG,KAAK,EAChC,CAAM,EACN,IAAe,EACf,OAAiB,EACjB,EAAE;IACF,IACE,CAAC,CAAC,IAAI,KAAK,0BAA0B;QACrC,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,0BAA0B,EAC5C,CAAC;QACD,OAAO,IAAI,gBAAgB,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;IAC5E,CAAC;IACD,oFAAoF;IACpF,IAAI;IACJ,kBAAkB;IAClB,0CAA0C;IAC1C,IAAI;IACJ,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC7B,OAAO,IAAI,gBAAgB,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;IAC5E,CAAC;IACD,2GAA2G;IAC3G,IAAI;IACJ,sBAAsB;IACtB,iDAAiD;IACjD,yEAAyE;IACzE,IAAI;IACJ,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC7B,OAAO,IAAI,gBAAgB,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;IAC9E,CAAC;IAED,IACE,IAAI;QACJ,OAAO,EAAE,MAAM;QACf,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,iBAAiB;QAC1C,CAAC,CAAC,OAAO,KAAK,YAAY,CAAC,mBAAmB,EAC9C,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CACxC,OAAO,CAAC,MAAM,EACd,IAAI,CAAC,MAAM,CAAC,WAAW,CACxB,CAAA;QAED,MAAM,YAAY,GAAG,QAAQ,EAAE,aAAa,CAAA;QAE5C,IAAI,YAAY,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACvD,OAAO,IAAI,gBAAgB,CACzB,aAAa,CAAC,aAAa,EAC3B,YAAY,CAAC,WAAW,EACxB,CAAC,CACF,CAAA;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,YAAY,SAAS,EAAE,CAAC;QAC3B,OAAO,CAAC,CAAA;IACV,CAAC;IAED,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,OAAO,IAAI,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,CAAA;AACpE,CAAC,CAAA"}
|