@lifi/sdk 3.4.1 → 3.5.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.
- package/package.json +7 -7
- package/src/_cjs/constants.js +4 -2
- package/src/_cjs/constants.js.map +1 -1
- package/src/_cjs/core/EVM/EVM.js +0 -4
- package/src/_cjs/core/EVM/EVM.js.map +1 -1
- package/src/_cjs/core/EVM/EVMStepExecutor.js +96 -74
- package/src/_cjs/core/EVM/EVMStepExecutor.js.map +1 -1
- package/src/_cjs/core/EVM/abi.js +36 -43
- package/src/_cjs/core/EVM/abi.js.map +1 -1
- package/src/_cjs/core/EVM/checkAllowance.js +36 -30
- package/src/_cjs/core/EVM/checkAllowance.js.map +1 -1
- package/src/_cjs/core/EVM/getAllowance.js.map +1 -1
- package/src/_cjs/core/EVM/getEVMBalance.js.map +1 -1
- package/src/_cjs/core/EVM/getNativePermit.js +90 -0
- package/src/_cjs/core/EVM/getNativePermit.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/allowanceTransfer.js +100 -0
- package/src/_cjs/core/EVM/permit2/allowanceTransfer.js.map +1 -0
- package/src/_cjs/core/EVM/permit2/constants.js +12 -0
- package/src/_cjs/core/EVM/permit2/constants.js.map +1 -0
- package/src/_cjs/core/EVM/permit2/domain.js +12 -0
- package/src/_cjs/core/EVM/permit2/domain.js.map +1 -0
- package/src/_cjs/core/EVM/permit2/signatureTransfer.js +121 -0
- package/src/_cjs/core/EVM/permit2/signatureTransfer.js.map +1 -0
- package/src/_cjs/core/EVM/setAllowance.js +3 -4
- package/src/_cjs/core/EVM/setAllowance.js.map +1 -1
- package/src/_cjs/core/EVM/signPermitMessage.js +168 -0
- package/src/_cjs/core/EVM/signPermitMessage.js.map +1 -0
- package/src/_cjs/core/EVM/types.js.map +1 -1
- package/src/_cjs/core/EVM/utils.js +2 -1
- package/src/_cjs/core/EVM/utils.js.map +1 -1
- package/src/_cjs/core/EVM/waitForBatchTransactionReceipt.js +29 -0
- package/src/_cjs/core/EVM/waitForBatchTransactionReceipt.js.map +1 -0
- package/src/_cjs/core/checkBalance.js +3 -3
- package/src/_cjs/core/checkBalance.js.map +1 -1
- package/src/_cjs/index.js.map +1 -1
- package/src/_cjs/utils/invariant.js +17 -0
- package/src/_cjs/utils/invariant.js.map +1 -0
- package/src/_cjs/version.js +1 -1
- package/src/_cjs/version.js.map +1 -1
- package/src/_esm/constants.js +3 -1
- package/src/_esm/constants.js.map +1 -1
- package/src/_esm/core/EVM/EVM.js +0 -4
- package/src/_esm/core/EVM/EVM.js.map +1 -1
- package/src/_esm/core/EVM/EVMStepExecutor.js +124 -84
- package/src/_esm/core/EVM/EVMStepExecutor.js.map +1 -1
- package/src/_esm/core/EVM/abi.js +37 -42
- package/src/_esm/core/EVM/abi.js.map +1 -1
- package/src/_esm/core/EVM/checkAllowance.js +41 -32
- package/src/_esm/core/EVM/checkAllowance.js.map +1 -1
- package/src/_esm/core/EVM/getAllowance.js.map +1 -1
- package/src/_esm/core/EVM/getEVMBalance.js.map +1 -1
- package/src/_esm/core/EVM/getNativePermit.js +95 -0
- package/src/_esm/core/EVM/getNativePermit.js.map +1 -0
- package/src/_esm/core/EVM/parseEVMErrors.js +8 -0
- package/src/_esm/core/EVM/parseEVMErrors.js.map +1 -1
- package/src/_esm/core/EVM/permit2/allowanceTransfer.js +93 -0
- package/src/_esm/core/EVM/permit2/allowanceTransfer.js.map +1 -0
- package/src/_esm/core/EVM/permit2/constants.js +9 -0
- package/src/_esm/core/EVM/permit2/constants.js.map +1 -0
- package/src/_esm/core/EVM/permit2/domain.js +9 -0
- package/src/_esm/core/EVM/permit2/domain.js.map +1 -0
- package/src/_esm/core/EVM/permit2/signatureTransfer.js +117 -0
- package/src/_esm/core/EVM/permit2/signatureTransfer.js.map +1 -0
- package/src/_esm/core/EVM/setAllowance.js +3 -4
- package/src/_esm/core/EVM/setAllowance.js.map +1 -1
- package/src/_esm/core/EVM/signPermitMessage.js +162 -0
- package/src/_esm/core/EVM/signPermitMessage.js.map +1 -0
- package/src/_esm/core/EVM/types.js.map +1 -1
- package/src/_esm/core/EVM/utils.js +2 -1
- package/src/_esm/core/EVM/utils.js.map +1 -1
- package/src/_esm/core/EVM/waitForBatchTransactionReceipt.js +25 -0
- package/src/_esm/core/EVM/waitForBatchTransactionReceipt.js.map +1 -0
- package/src/_esm/core/checkBalance.js +3 -3
- package/src/_esm/core/checkBalance.js.map +1 -1
- package/src/_esm/index.js.map +1 -1
- package/src/_esm/utils/invariant.js +43 -0
- package/src/_esm/utils/invariant.js.map +1 -0
- package/src/_esm/version.js +1 -1
- package/src/_esm/version.js.map +1 -1
- package/src/_types/config.d.ts.map +1 -1
- package/src/_types/constants.d.ts +3 -1
- package/src/_types/constants.d.ts.map +1 -1
- package/src/_types/core/EVM/EVM.d.ts.map +1 -1
- package/src/_types/core/EVM/EVMStepExecutor.d.ts +7 -4
- package/src/_types/core/EVM/EVMStepExecutor.d.ts.map +1 -1
- package/src/_types/core/EVM/abi.d.ts +202 -5
- package/src/_types/core/EVM/abi.d.ts.map +1 -1
- package/src/_types/core/EVM/checkAllowance.d.ts +12 -2
- package/src/_types/core/EVM/checkAllowance.d.ts.map +1 -1
- package/src/_types/core/EVM/getAllowance.d.ts +5 -4
- package/src/_types/core/EVM/getAllowance.d.ts.map +1 -1
- package/src/_types/core/EVM/getEVMBalance.d.ts +2 -1
- package/src/_types/core/EVM/getEVMBalance.d.ts.map +1 -1
- package/src/_types/core/EVM/getNativePermit.d.ts +18 -0
- package/src/_types/core/EVM/getNativePermit.d.ts.map +1 -0
- package/src/_types/core/EVM/permit2/allowanceTransfer.d.ts +41 -0
- package/src/_types/core/EVM/permit2/allowanceTransfer.d.ts.map +1 -0
- package/src/_types/core/EVM/permit2/constants.d.ts +8 -0
- package/src/_types/core/EVM/permit2/constants.d.ts.map +1 -0
- package/src/_types/core/EVM/permit2/domain.d.ts +8 -0
- package/src/_types/core/EVM/permit2/domain.d.ts.map +1 -0
- package/src/_types/core/EVM/permit2/signatureTransfer.d.ts +42 -0
- package/src/_types/core/EVM/permit2/signatureTransfer.d.ts.map +1 -0
- package/src/_types/core/EVM/setAllowance.d.ts +2 -2
- package/src/_types/core/EVM/setAllowance.d.ts.map +1 -1
- package/src/_types/core/EVM/signPermitMessage.d.ts +22 -0
- package/src/_types/core/EVM/signPermitMessage.d.ts.map +1 -0
- package/src/_types/core/EVM/types.d.ts +1 -18
- package/src/_types/core/EVM/types.d.ts.map +1 -1
- package/src/_types/core/EVM/utils.d.ts +2 -2
- package/src/_types/core/EVM/utils.d.ts.map +1 -1
- package/src/_types/core/EVM/waitForBatchTransactionReceipt.d.ts +4 -0
- package/src/_types/core/EVM/waitForBatchTransactionReceipt.d.ts.map +1 -0
- package/src/_types/core/checkBalance.d.ts.map +1 -1
- package/src/_types/index.d.ts +1 -1
- package/src/_types/index.d.ts.map +1 -1
- package/src/_types/utils/base64ToUint8Array.d.ts +1 -1
- package/src/_types/utils/base64ToUint8Array.d.ts.map +1 -1
- package/src/_types/utils/invariant.d.ts +22 -0
- package/src/_types/utils/invariant.d.ts.map +1 -0
- package/src/_types/version.d.ts +1 -1
- package/src/_types/version.d.ts.map +1 -1
- package/src/constants.ts +6 -1
- package/src/core/EVM/EVM.ts +0 -4
- package/src/core/EVM/EVMStepExecutor.ts +177 -134
- package/src/core/EVM/abi.ts +40 -43
- package/src/core/EVM/checkAllowance.ts +96 -92
- package/src/core/EVM/getAllowance.ts +8 -8
- package/src/core/EVM/getEVMBalance.ts +2 -2
- package/src/core/EVM/getNativePermit.ts +113 -0
- package/src/core/EVM/parseEVMErrors.ts +8 -0
- package/src/core/EVM/permit2/allowanceTransfer.ts +168 -0
- package/src/core/EVM/permit2/constants.ts +11 -0
- package/src/core/EVM/permit2/domain.ts +20 -0
- package/src/core/EVM/permit2/signatureTransfer.ts +214 -0
- package/src/core/EVM/setAllowance.ts +14 -15
- package/src/core/EVM/signPermitMessage.ts +248 -0
- package/src/core/EVM/types.ts +1 -27
- package/src/core/EVM/utils.ts +4 -3
- package/src/core/EVM/waitForBatchTransactionReceipt.ts +49 -0
- package/src/core/checkBalance.ts +6 -3
- package/src/index.ts +0 -3
- package/src/utils/invariant.ts +51 -0
- package/src/version.ts +1 -1
- package/src/_cjs/core/EVM/multisig.js +0 -29
- package/src/_cjs/core/EVM/multisig.js.map +0 -1
- package/src/_esm/core/EVM/multisig.js +0 -25
- package/src/_esm/core/EVM/multisig.js.map +0 -1
- package/src/_types/core/EVM/multisig.d.ts +0 -6
- package/src/_types/core/EVM/multisig.d.ts.map +0 -1
- package/src/core/EVM/multisig.ts +0 -54
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { hashTypedData } from 'viem';
|
|
2
|
+
import { invariant } from '../../../utils/invariant.js';
|
|
3
|
+
import { MaxSigDeadline, MaxSignatureTransferAmount, MaxUnorderedNonce, } from './constants.js';
|
|
4
|
+
import { permit2Domain } from './domain.js';
|
|
5
|
+
const TOKEN_PERMISSIONS = [
|
|
6
|
+
{ name: 'token', type: 'address' },
|
|
7
|
+
{ name: 'amount', type: 'uint256' },
|
|
8
|
+
];
|
|
9
|
+
const PERMIT_TRANSFER_FROM_TYPES = {
|
|
10
|
+
TokenPermissions: TOKEN_PERMISSIONS,
|
|
11
|
+
PermitTransferFrom: [
|
|
12
|
+
{ name: 'permitted', type: 'TokenPermissions' },
|
|
13
|
+
{ name: 'spender', type: 'address' },
|
|
14
|
+
{ name: 'nonce', type: 'uint256' },
|
|
15
|
+
{ name: 'deadline', type: 'uint256' },
|
|
16
|
+
],
|
|
17
|
+
};
|
|
18
|
+
const PERMIT_BATCH_TRANSFER_FROM_TYPES = {
|
|
19
|
+
TokenPermissions: TOKEN_PERMISSIONS,
|
|
20
|
+
PermitBatchTransferFrom: [
|
|
21
|
+
{ name: 'permitted', type: 'TokenPermissions[]' },
|
|
22
|
+
{ name: 'spender', type: 'address' },
|
|
23
|
+
{ name: 'nonce', type: 'uint256' },
|
|
24
|
+
{ name: 'deadline', type: 'uint256' },
|
|
25
|
+
],
|
|
26
|
+
};
|
|
27
|
+
function isPermitTransferFrom(permit) {
|
|
28
|
+
return !Array.isArray(permit.permitted);
|
|
29
|
+
}
|
|
30
|
+
export function getPermitTransferData(permit, permit2Address, chainId, witness) {
|
|
31
|
+
invariant(MaxSigDeadline >= permit.deadline, 'SIG_DEADLINE_OUT_OF_RANGE');
|
|
32
|
+
invariant(MaxUnorderedNonce >= permit.nonce, 'NONCE_OUT_OF_RANGE');
|
|
33
|
+
const domain = permit2Domain(permit2Address, chainId);
|
|
34
|
+
validateTokenPermissions(permit.permitted);
|
|
35
|
+
const types = witness
|
|
36
|
+
? {
|
|
37
|
+
TokenPermissions: TOKEN_PERMISSIONS,
|
|
38
|
+
...witness.witnessType,
|
|
39
|
+
PermitWitnessTransferFrom: [
|
|
40
|
+
{ name: 'permitted', type: 'TokenPermissions' },
|
|
41
|
+
{ name: 'spender', type: 'address' },
|
|
42
|
+
{ name: 'nonce', type: 'uint256' },
|
|
43
|
+
{ name: 'deadline', type: 'uint256' },
|
|
44
|
+
{ name: 'witness', type: witness.witnessTypeName },
|
|
45
|
+
],
|
|
46
|
+
}
|
|
47
|
+
: PERMIT_TRANSFER_FROM_TYPES;
|
|
48
|
+
const values = witness
|
|
49
|
+
? Object.assign(permit, { witness: witness.witness })
|
|
50
|
+
: permit;
|
|
51
|
+
return {
|
|
52
|
+
domain,
|
|
53
|
+
types,
|
|
54
|
+
values,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
export function getPermitBatchTransferData(permit, permit2Address, chainId, witness) {
|
|
58
|
+
invariant(MaxSigDeadline >= permit.deadline, 'SIG_DEADLINE_OUT_OF_RANGE');
|
|
59
|
+
invariant(MaxUnorderedNonce >= permit.nonce, 'NONCE_OUT_OF_RANGE');
|
|
60
|
+
const domain = permit2Domain(permit2Address, chainId);
|
|
61
|
+
permit.permitted.forEach(validateTokenPermissions);
|
|
62
|
+
const types = witness
|
|
63
|
+
? {
|
|
64
|
+
...witness.witnessType,
|
|
65
|
+
TokenPermissions: TOKEN_PERMISSIONS,
|
|
66
|
+
PermitBatchWitnessTransferFrom: [
|
|
67
|
+
{ name: 'permitted', type: 'TokenPermissions[]' },
|
|
68
|
+
{ name: 'spender', type: 'address' },
|
|
69
|
+
{ name: 'nonce', type: 'uint256' },
|
|
70
|
+
{ name: 'deadline', type: 'uint256' },
|
|
71
|
+
{ name: 'witness', type: witness.witnessTypeName },
|
|
72
|
+
],
|
|
73
|
+
}
|
|
74
|
+
: PERMIT_BATCH_TRANSFER_FROM_TYPES;
|
|
75
|
+
const values = witness
|
|
76
|
+
? Object.assign(permit, { witness: witness.witness })
|
|
77
|
+
: permit;
|
|
78
|
+
return {
|
|
79
|
+
domain,
|
|
80
|
+
types,
|
|
81
|
+
values,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
// return the data to be sent in a eth_signTypedData RPC call
|
|
85
|
+
// for signing the given permit data
|
|
86
|
+
export function getPermitData(permit, permit2Address, chainId, witness) {
|
|
87
|
+
if (isPermitTransferFrom(permit)) {
|
|
88
|
+
return getPermitTransferData(permit, permit2Address, chainId, witness);
|
|
89
|
+
}
|
|
90
|
+
return getPermitBatchTransferData(permit, permit2Address, chainId, witness);
|
|
91
|
+
}
|
|
92
|
+
export function hash(permit, permit2Address, chainId, witness) {
|
|
93
|
+
if (isPermitTransferFrom(permit)) {
|
|
94
|
+
const { domain, types, values } = getPermitTransferData(permit, permit2Address, chainId, witness);
|
|
95
|
+
return hashTypedData({
|
|
96
|
+
domain,
|
|
97
|
+
types,
|
|
98
|
+
primaryType: witness ? 'PermitWitnessTransferFrom' : 'PermitTransferFrom',
|
|
99
|
+
message: {
|
|
100
|
+
...values,
|
|
101
|
+
},
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
const { domain, types, values } = getPermitBatchTransferData(permit, permit2Address, chainId, witness);
|
|
105
|
+
return hashTypedData({
|
|
106
|
+
domain,
|
|
107
|
+
types,
|
|
108
|
+
primaryType: witness
|
|
109
|
+
? 'PermitBatchWitnessTransferFrom'
|
|
110
|
+
: 'PermitBatchTransferFrom',
|
|
111
|
+
message: { ...values },
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
function validateTokenPermissions(permissions) {
|
|
115
|
+
invariant(MaxSignatureTransferAmount >= permissions.amount, 'AMOUNT_OUT_OF_RANGE');
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=signatureTransfer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signatureTransfer.js","sourceRoot":"","sources":["../../../../core/EVM/permit2/signatureTransfer.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { isNativeTokenAddress } from '../../utils/isZeroAddress.js';
|
|
|
4
4
|
import { approveAbi } from './abi.js';
|
|
5
5
|
import { getAllowance } from './getAllowance.js';
|
|
6
6
|
import { getMaxPriorityFeePerGas } from './utils.js';
|
|
7
|
-
export const setAllowance = async (client, tokenAddress, contractAddress, amount,
|
|
7
|
+
export const setAllowance = async (client, tokenAddress, contractAddress, amount, executionOptions, returnPopulatedTransaction) => {
|
|
8
8
|
const data = encodeFunctionData({
|
|
9
9
|
abi: approveAbi,
|
|
10
10
|
functionName: 'approve',
|
|
@@ -20,8 +20,8 @@ export const setAllowance = async (client, tokenAddress, contractAddress, amount
|
|
|
20
20
|
? await getMaxPriorityFeePerGas(client)
|
|
21
21
|
: undefined,
|
|
22
22
|
};
|
|
23
|
-
if (
|
|
24
|
-
const customizedTransactionRequest = await
|
|
23
|
+
if (executionOptions?.updateTransactionRequestHook) {
|
|
24
|
+
const customizedTransactionRequest = await executionOptions.updateTransactionRequestHook({
|
|
25
25
|
requestType: 'approve',
|
|
26
26
|
...transactionRequest,
|
|
27
27
|
});
|
|
@@ -38,7 +38,6 @@ export const setAllowance = async (client, tokenAddress, contractAddress, amount
|
|
|
38
38
|
gasPrice: transactionRequest.gasPrice,
|
|
39
39
|
maxFeePerGas: transactionRequest.maxFeePerGas,
|
|
40
40
|
maxPriorityFeePerGas: transactionRequest.maxPriorityFeePerGas,
|
|
41
|
-
chain: null,
|
|
42
41
|
});
|
|
43
42
|
};
|
|
44
43
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setAllowance.js","sourceRoot":"","sources":["../../../core/EVM/setAllowance.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAEnE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAEpD,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAC/B,MAAc,EACd,
|
|
1
|
+
{"version":3,"file":"setAllowance.js","sourceRoot":"","sources":["../../../core/EVM/setAllowance.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAEnE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAEpD,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAC/B,MAAc,EACd,YAAqB,EACrB,eAAwB,EACxB,MAAc,EACd,gBAAmC,EACnC,0BAAoC,EACrB,EAAE;IACjB,MAAM,IAAI,GAAG,kBAAkB,CAAC;QAC9B,GAAG,EAAE,UAAU;QACf,YAAY,EAAE,SAAS;QACvB,IAAI,EAAE,CAAC,eAAe,EAAE,MAAM,CAAC;KAChC,CAAC,CAAA;IAEF,IAAI,0BAA0B,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,kBAAkB,GAA0B;QAC9C,EAAE,EAAE,YAAY;QAChB,IAAI;QACJ,oBAAoB,EAClB,MAAM,CAAC,OAAO,EAAE,IAAI,KAAK,OAAO;YAC9B,CAAC,CAAC,MAAM,uBAAuB,CAAC,MAAM,CAAC;YACvC,CAAC,CAAC,SAAS;KAChB,CAAA;IAED,IAAI,gBAAgB,EAAE,4BAA4B,EAAE,CAAC;QACnD,MAAM,4BAA4B,GAChC,MAAM,gBAAgB,CAAC,4BAA4B,CAAC;YAClD,WAAW,EAAE,SAAS;YACtB,GAAG,kBAAkB;SACtB,CAAC,CAAA;QAEJ,kBAAkB,GAAG;YACnB,GAAG,kBAAkB;YACrB,GAAG,4BAA4B;SAChC,CAAA;IACH,CAAC;IAED,OAAO,eAAe,CAAC,MAAM,EAAE;QAC7B,EAAE,EAAE,kBAAkB,CAAC,EAAE;QACzB,OAAO,EAAE,MAAM,CAAC,OAAQ;QACxB,IAAI,EAAE,kBAAkB,CAAC,IAAI;QAC7B,GAAG,EAAE,kBAAkB,CAAC,GAAG;QAC3B,QAAQ,EAAE,kBAAkB,CAAC,QAAQ;QACrC,YAAY,EAAE,kBAAkB,CAAC,YAAY;QAC7C,oBAAoB,EAAE,kBAAkB,CAAC,oBAAoB;KACjC,CAAC,CAAA;AACjC,CAAC,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,EACtC,YAAY,EACZ,KAAK,EACL,cAAc,EACd,MAAM,GACc,EAAwB,EAAE;IAC9C,mCAAmC;IACnC,IAAI,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,OAAM;IACR,CAAC;IACD,MAAM,cAAc,GAAG,MAAM,YAAY,CACvC,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,OAAkB,EACxB,YAAY,CAAC,OAAQ,CAAC,OAAO,EAC7B,cAAyB,CAC1B,CAAA;IAED,IAAI,MAAM,GAAG,cAAc,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,MAAM,YAAY,CAClC,YAAY,EACZ,KAAK,CAAC,OAAkB,EACxB,cAAyB,EACzB,MAAM,CACP,CAAA;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,EACxC,YAAY,EACZ,KAAK,EACL,cAAc,GACQ,EAAwB,EAAE;IAChD,mCAAmC;IACnC,IAAI,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,OAAM;IACR,CAAC;IACD,MAAM,cAAc,GAAG,MAAM,YAAY,CACvC,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,OAAkB,EACxB,YAAY,CAAC,OAAQ,CAAC,OAAO,EAC7B,cAAyB,CAC1B,CAAA;IACD,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,MAAM,YAAY,CAClC,YAAY,EACZ,KAAK,CAAC,OAAkB,EACxB,cAAyB,EACzB,EAAE,CACH,CAAA;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { encodeFunctionData } from 'viem';
|
|
2
|
+
import { parseSignature } from 'viem';
|
|
3
|
+
import { keccak256 } from 'viem';
|
|
4
|
+
import { readContract, signTypedData } from 'viem/actions';
|
|
5
|
+
import { eip2612Types, permit2ProxyAbi } from './abi.js';
|
|
6
|
+
import { getNativePermit } from './getNativePermit.js';
|
|
7
|
+
import { getPermitData, } from './permit2/signatureTransfer.js';
|
|
8
|
+
export const signNativePermitMessage = async (client, transactionRequest, chain, tokenAddress, amount, nativePermit) => {
|
|
9
|
+
const deadline = BigInt(Math.floor(Date.now() / 1000) + 30 * 60); // 30 minutes
|
|
10
|
+
const domain = {
|
|
11
|
+
name: nativePermit.name,
|
|
12
|
+
version: nativePermit.version,
|
|
13
|
+
chainId: chain.id,
|
|
14
|
+
verifyingContract: tokenAddress,
|
|
15
|
+
};
|
|
16
|
+
const message = {
|
|
17
|
+
owner: client.account.address,
|
|
18
|
+
spender: chain.permit2Proxy,
|
|
19
|
+
value: amount,
|
|
20
|
+
nonce: nativePermit.nonce,
|
|
21
|
+
deadline,
|
|
22
|
+
};
|
|
23
|
+
const signature = await signTypedData(client, {
|
|
24
|
+
account: client.account,
|
|
25
|
+
domain,
|
|
26
|
+
types: eip2612Types,
|
|
27
|
+
primaryType: 'Permit',
|
|
28
|
+
message,
|
|
29
|
+
});
|
|
30
|
+
const { v, r, s } = parseSignature(signature);
|
|
31
|
+
const data = encodeFunctionData({
|
|
32
|
+
abi: permit2ProxyAbi,
|
|
33
|
+
functionName: 'callDiamondWithEIP2612Signature',
|
|
34
|
+
args: [
|
|
35
|
+
tokenAddress,
|
|
36
|
+
amount,
|
|
37
|
+
deadline,
|
|
38
|
+
Number(v),
|
|
39
|
+
r,
|
|
40
|
+
s,
|
|
41
|
+
transactionRequest.data,
|
|
42
|
+
],
|
|
43
|
+
});
|
|
44
|
+
return {
|
|
45
|
+
signature,
|
|
46
|
+
data,
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
export const signPermit2Message = async (client, transactionRequest, chain, tokenAddress, amount) => {
|
|
50
|
+
const nonce = await readContract(client, {
|
|
51
|
+
address: chain.permit2Proxy,
|
|
52
|
+
abi: permit2ProxyAbi,
|
|
53
|
+
functionName: 'nextNonce',
|
|
54
|
+
args: [client.account.address],
|
|
55
|
+
});
|
|
56
|
+
const permitTransferFrom = {
|
|
57
|
+
permitted: {
|
|
58
|
+
token: tokenAddress,
|
|
59
|
+
amount: amount,
|
|
60
|
+
},
|
|
61
|
+
spender: chain.permit2Proxy,
|
|
62
|
+
nonce: nonce,
|
|
63
|
+
deadline: BigInt(Math.floor(Date.now() / 1000) + 30 * 60), // 30 minutes
|
|
64
|
+
};
|
|
65
|
+
const { domain, types, values } = getPermitData(permitTransferFrom, chain.permit2, chain.id);
|
|
66
|
+
const signature = await signTypedData(client, {
|
|
67
|
+
account: client.account,
|
|
68
|
+
primaryType: 'PermitTransferFrom',
|
|
69
|
+
domain,
|
|
70
|
+
types,
|
|
71
|
+
message: { ...values },
|
|
72
|
+
});
|
|
73
|
+
const data = encodeFunctionData({
|
|
74
|
+
abi: permit2ProxyAbi,
|
|
75
|
+
functionName: 'callDiamondWithPermit2',
|
|
76
|
+
args: [
|
|
77
|
+
transactionRequest.data,
|
|
78
|
+
[
|
|
79
|
+
[tokenAddress, amount],
|
|
80
|
+
permitTransferFrom.nonce,
|
|
81
|
+
permitTransferFrom.deadline,
|
|
82
|
+
],
|
|
83
|
+
signature,
|
|
84
|
+
],
|
|
85
|
+
});
|
|
86
|
+
return {
|
|
87
|
+
signature,
|
|
88
|
+
data,
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
export const signPermit2WitnessMessage = async (client, transactionRequest, chain, tokenAddress, amount) => {
|
|
92
|
+
const nonce = await readContract(client, {
|
|
93
|
+
address: chain.permit2Proxy,
|
|
94
|
+
abi: permit2ProxyAbi,
|
|
95
|
+
functionName: 'nextNonce',
|
|
96
|
+
args: [client.account.address],
|
|
97
|
+
});
|
|
98
|
+
const permitTransferFrom = {
|
|
99
|
+
permitted: {
|
|
100
|
+
token: tokenAddress,
|
|
101
|
+
amount: amount,
|
|
102
|
+
},
|
|
103
|
+
spender: chain.permit2Proxy,
|
|
104
|
+
nonce: nonce,
|
|
105
|
+
deadline: BigInt(Math.floor(Date.now() / 1000) + 30 * 60), // 30 minutes
|
|
106
|
+
};
|
|
107
|
+
// Create witness data for the LI.FI call
|
|
108
|
+
const witness = {
|
|
109
|
+
witness: {
|
|
110
|
+
tokenReceiver: chain.permit2Proxy,
|
|
111
|
+
diamondAddress: chain.diamondAddress,
|
|
112
|
+
diamondCalldataHash: keccak256(transactionRequest.data),
|
|
113
|
+
},
|
|
114
|
+
witnessTypeName: 'LiFiCall',
|
|
115
|
+
witnessType: {
|
|
116
|
+
LiFiCall: [
|
|
117
|
+
{ name: 'diamondAddress', type: 'address' },
|
|
118
|
+
{ name: 'diamondCalldataHash', type: 'bytes32' },
|
|
119
|
+
],
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
const { domain, types, values } = getPermitData(permitTransferFrom, chain.permit2, chain.id, witness);
|
|
123
|
+
const signature = await signTypedData(client, {
|
|
124
|
+
account: client.account,
|
|
125
|
+
primaryType: 'PermitWitnessTransferFrom',
|
|
126
|
+
domain,
|
|
127
|
+
types,
|
|
128
|
+
message: { ...values },
|
|
129
|
+
});
|
|
130
|
+
const data = encodeFunctionData({
|
|
131
|
+
abi: permit2ProxyAbi,
|
|
132
|
+
functionName: 'callDiamondWithPermit2Witness',
|
|
133
|
+
args: [
|
|
134
|
+
transactionRequest.data,
|
|
135
|
+
client.account.address,
|
|
136
|
+
[
|
|
137
|
+
[tokenAddress, amount],
|
|
138
|
+
permitTransferFrom.nonce,
|
|
139
|
+
permitTransferFrom.deadline,
|
|
140
|
+
],
|
|
141
|
+
signature,
|
|
142
|
+
],
|
|
143
|
+
});
|
|
144
|
+
return {
|
|
145
|
+
signature,
|
|
146
|
+
data,
|
|
147
|
+
};
|
|
148
|
+
};
|
|
149
|
+
export const signPermitMessage = async (client, transactionRequest, chain, tokenAddress, amount, nativePermit, useWitness = false) => {
|
|
150
|
+
let _nativePermit = nativePermit;
|
|
151
|
+
if (!_nativePermit) {
|
|
152
|
+
_nativePermit = await getNativePermit(client, chain, tokenAddress);
|
|
153
|
+
}
|
|
154
|
+
if (_nativePermit.supported) {
|
|
155
|
+
return signNativePermitMessage(client, transactionRequest, chain, tokenAddress, amount, _nativePermit);
|
|
156
|
+
}
|
|
157
|
+
if (useWitness) {
|
|
158
|
+
return signPermit2WitnessMessage(client, transactionRequest, chain, tokenAddress, amount);
|
|
159
|
+
}
|
|
160
|
+
return signPermit2Message(client, transactionRequest, chain, tokenAddress, amount);
|
|
161
|
+
};
|
|
162
|
+
//# sourceMappingURL=signPermitMessage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signPermitMessage.js","sourceRoot":"","sources":["../../../core/EVM/signPermitMessage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../core/EVM/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,SAAS,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../core/EVM/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,SAAS,EAAE,MAAM,aAAa,CAAA;AAcvD,MAAM,UAAU,KAAK,CAAC,QAAqB;IACzC,OAAO,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG,CAAA;AACxC,CAAC"}
|
|
@@ -24,7 +24,8 @@ export const getMaxPriorityFeePerGas = async (client) => {
|
|
|
24
24
|
// Multicall
|
|
25
25
|
export const getMulticallAddress = async (chainId) => {
|
|
26
26
|
const chains = await config.getChains();
|
|
27
|
-
return chains.find((chain) => chain.id === chainId)
|
|
27
|
+
return chains.find((chain) => chain.id === chainId)
|
|
28
|
+
?.multicallAddress;
|
|
28
29
|
};
|
|
29
30
|
// Modified viem retryDelay exponential backoff function.
|
|
30
31
|
export const retryDelay = ({ count }) => Math.min(~~(1 << count) * 200, 3000);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../core/EVM/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAE9C,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,EAC1C,MAAc,EACe,EAAE;IAC/B,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE;QACnC,mBAAmB,EAAE,IAAI;KAC1B,CAAC,CAAA;IAEF,MAAM,wBAAwB,GAAI,KAAK,CAAC,YAA8B;SACnE,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,oBAAoB,CAAC;SACvC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,oBAAoB,CAAa,CAAA;IAEnD,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC;QACrC,OAAM;IACR,CAAC;IAED,IAAI,uBAAuB,GAAG,EAAE,CAAA;IAChC,KAAK,MAAM,KAAK,IAAI,wBAAwB,EAAE,CAAC;QAC7C,uBAAuB,IAAI,KAAK,CAAA;IAClC,CAAC;IAED,MAAM,0BAA0B,GAAG,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAA;IAEzE,MAAM,uBAAuB,GAC3B,uBAAuB,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAA;IAEnE,OAAO,0BAA0B,GAAG,uBAAuB;QACzD,CAAC,CAAC,uBAAuB;QACzB,CAAC,CAAC,0BAA0B,CAAA;AAChC,CAAC,CAAA;AAED,YAAY;AACZ,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACtC,OAAgB,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../core/EVM/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAE9C,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,EAC1C,MAAc,EACe,EAAE;IAC/B,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE;QACnC,mBAAmB,EAAE,IAAI;KAC1B,CAAC,CAAA;IAEF,MAAM,wBAAwB,GAAI,KAAK,CAAC,YAA8B;SACnE,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,oBAAoB,CAAC;SACvC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,oBAAoB,CAAa,CAAA;IAEnD,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC;QACrC,OAAM;IACR,CAAC;IAED,IAAI,uBAAuB,GAAG,EAAE,CAAA;IAChC,KAAK,MAAM,KAAK,IAAI,wBAAwB,EAAE,CAAC;QAC7C,uBAAuB,IAAI,KAAK,CAAA;IAClC,CAAC;IAED,MAAM,0BAA0B,GAAG,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAA;IAEzE,MAAM,uBAAuB,GAC3B,uBAAuB,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAA;IAEnE,OAAO,0BAA0B,GAAG,uBAAuB;QACzD,CAAC,CAAC,uBAAuB;QACzB,CAAC,CAAC,0BAA0B,CAAA;AAChC,CAAC,CAAA;AAED,YAAY;AACZ,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACtC,OAAgB,EACc,EAAE;IAChC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAA;IACvC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC;QACjD,EAAE,gBAA2B,CAAA;AACjC,CAAC,CAAA;AAED,yDAAyD;AACzD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EAAE,KAAK,EAAmC,EAAE,EAAE,CACvE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAA;AAEtC,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,CAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { getCallsStatus } from 'viem/experimental';
|
|
2
|
+
import { LiFiErrorCode } from '../../errors/constants.js';
|
|
3
|
+
import { TransactionError } from '../../errors/errors.js';
|
|
4
|
+
import { waitForResult } from '../../utils/waitForResult.js';
|
|
5
|
+
export const waitForBatchTransactionReceipt = async (client, batchHash) => {
|
|
6
|
+
return waitForResult(async () => {
|
|
7
|
+
const callsDetails = await getCallsStatus(client, {
|
|
8
|
+
id: batchHash,
|
|
9
|
+
});
|
|
10
|
+
if (callsDetails.status === 'PENDING') {
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
if (callsDetails.status === 'CONFIRMED') {
|
|
14
|
+
if (!callsDetails.receipts?.length ||
|
|
15
|
+
!callsDetails.receipts.every((receipt) => receipt.transactionHash) ||
|
|
16
|
+
callsDetails.receipts.some((receipt) => receipt.status === 'reverted')) {
|
|
17
|
+
throw new TransactionError(LiFiErrorCode.TransactionFailed, 'Transaction was reverted.');
|
|
18
|
+
}
|
|
19
|
+
const transactionReceipt = callsDetails.receipts.at(-1);
|
|
20
|
+
return transactionReceipt;
|
|
21
|
+
}
|
|
22
|
+
throw new TransactionError(LiFiErrorCode.TransactionFailed, 'Transaction not found.');
|
|
23
|
+
}, 3000);
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=waitForBatchTransactionReceipt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waitForBatchTransactionReceipt.js","sourceRoot":"","sources":["../../../core/EVM/waitForBatchTransactionReceipt.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAO5D,MAAM,CAAC,MAAM,8BAA8B,GAAG,KAAK,EACjD,MAAc,EACd,SAAe,EACa,EAAE;IAC9B,OAAO,aAAa,CAAC,KAAK,IAAI,EAAE;QAC9B,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE;YAChD,EAAE,EAAE,SAAS;SACd,CAAC,CAAA;QAEF,IAAI,YAAY,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACxC,IACE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM;gBAC9B,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC;gBAClE,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,UAAU,CAAC,EACtE,CAAC;gBACD,MAAM,IAAI,gBAAgB,CACxB,aAAa,CAAC,iBAAiB,EAC/B,2BAA2B,CAC5B,CAAA;YACH,CAAC;YACD,MAAM,kBAAkB,GAAG,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAA;YACxD,OAAO,kBAAkB,CAAA;QAC3B,CAAC;QAED,MAAM,IAAI,gBAAgB,CACxB,aAAa,CAAC,iBAAiB,EAC/B,wBAAwB,CACzB,CAAA;IACH,CAAC,EAAE,IAAI,CAAC,CAAA;AACV,CAAC,CAAA"}
|
|
@@ -21,11 +21,11 @@ export const checkBalance = async (walletAddress, step, depth = 0) => {
|
|
|
21
21
|
else {
|
|
22
22
|
const neeeded = formatUnits(neededBalance, token.decimals);
|
|
23
23
|
const current = formatUnits(currentBalance, token.decimals);
|
|
24
|
-
let
|
|
24
|
+
let errorMessage = `Your ${token.symbol} balance is too low, you try to transfer ${neeeded} ${token.symbol}, but your wallet only holds ${current} ${token.symbol}. No funds have been sent.`;
|
|
25
25
|
if (currentBalance !== 0n) {
|
|
26
|
-
|
|
26
|
+
errorMessage += `If the problem consists, please delete this transfer and start a new one with a maximum of ${current} ${token.symbol}.`;
|
|
27
27
|
}
|
|
28
|
-
throw new BalanceError('The balance is too low.');
|
|
28
|
+
throw new BalanceError('The balance is too low.', new Error(errorMessage));
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkBalance.js","sourceRoot":"","sources":["../../core/checkBalance.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAEzC,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAC/B,aAAqB,EACrB,IAAc,EACd,KAAK,GAAG,CAAC,EACM,EAAE;IACjB,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IACzE,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,CAAA;QACzC,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAEpD,IAAI,cAAc,GAAG,aAAa,EAAE,CAAC;YACnC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBACf,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;gBAChB,MAAM,YAAY,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;YACpD,CAAC;iBAAM,IACL,CAAC,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,CAAC;gBAClE,WAAc;gBAChB,cAAc,EACd,CAAC;gBACD,mCAAmC;gBACnC,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAA;YACpD,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,WAAW,CAAC,aAAa,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;gBAC1D,MAAM,OAAO,GAAG,WAAW,CAAC,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;gBAC3D,IAAI,
|
|
1
|
+
{"version":3,"file":"checkBalance.js","sourceRoot":"","sources":["../../core/checkBalance.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAEzC,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAC/B,aAAqB,EACrB,IAAc,EACd,KAAK,GAAG,CAAC,EACM,EAAE;IACjB,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IACzE,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,CAAA;QACzC,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAEpD,IAAI,cAAc,GAAG,aAAa,EAAE,CAAC;YACnC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBACf,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;gBAChB,MAAM,YAAY,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;YACpD,CAAC;iBAAM,IACL,CAAC,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,CAAC;gBAClE,WAAc;gBAChB,cAAc,EACd,CAAC;gBACD,mCAAmC;gBACnC,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAA;YACpD,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,WAAW,CAAC,aAAa,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;gBAC1D,MAAM,OAAO,GAAG,WAAW,CAAC,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;gBAC3D,IAAI,YAAY,GAAG,QAAQ,KAAK,CAAC,MAAM,4CAA4C,OAAO,IAAI,KAAK,CAAC,MAAM,gCAAgC,OAAO,IAAI,KAAK,CAAC,MAAM,4BAA4B,CAAA;gBAE7L,IAAI,cAAc,KAAK,EAAE,EAAE,CAAC;oBAC1B,YAAY,IAAI,8FAA8F,OAAO,IAAI,KAAK,CAAC,MAAM,GAAG,CAAA;gBAC1I,CAAC;gBAED,MAAM,IAAI,YAAY,CACpB,yBAAyB,EACzB,IAAI,KAAK,CAAC,YAAY,CAAC,CACxB,CAAA;YACH,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC,CAAA"}
|
package/src/_esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,qDAAqD;AACrD,cAAc,aAAa,CAAA;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AACvC,OAAO,EACL,iBAAiB,EACjB,0BAA0B,GAC3B,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,qDAAqD;AACrD,cAAc,aAAa,CAAA;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AACvC,OAAO,EACL,iBAAiB,EACjB,0BAA0B,GAC3B,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAK3C,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EACL,YAAY,EACZ,cAAc,EACd,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,qBAAqB,CAAA;AAuB5B,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAC5D,OAAO,EACL,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAKjD,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,SAAS,EACT,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,QAAQ,EACR,SAAS,EACT,SAAS,EACT,kBAAkB,EAClB,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,qBAAqB,GACtB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAA;AAE3E,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjD,OAAO,EACL,YAAY,EACZ,SAAS,EACT,aAAa,GACd,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACL,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,eAAe,GAChB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// https://github.com/alexreardon/tiny-invariant
|
|
2
|
+
const isProduction = process.env.NODE_ENV === 'production';
|
|
3
|
+
const prefix = 'Invariant failed';
|
|
4
|
+
/**
|
|
5
|
+
* `invariant` is used to [assert](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#assertion-functions) that the `condition` is [truthy](https://github.com/getify/You-Dont-Know-JS/blob/bdbe570600d4e1107d0b131787903ca1c9ec8140/up%20%26%20going/ch2.md#truthy--falsy).
|
|
6
|
+
*
|
|
7
|
+
* 💥 `invariant` will `throw` an `Error` if the `condition` is [falsey](https://github.com/getify/You-Dont-Know-JS/blob/bdbe570600d4e1107d0b131787903ca1c9ec8140/up%20%26%20going/ch2.md#truthy--falsy)
|
|
8
|
+
*
|
|
9
|
+
* 🤏 `message`s are not displayed in production environments to help keep bundles small
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
*
|
|
13
|
+
* ```ts
|
|
14
|
+
* const value: Person | null = { name: 'Alex' };
|
|
15
|
+
* invariant(value, 'Expected value to be a person');
|
|
16
|
+
* // type of `value`` has been narrowed to `Person`
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export function invariant(condition,
|
|
20
|
+
// Not providing an inline default argument for message as the result is smaller
|
|
21
|
+
/**
|
|
22
|
+
* Can provide a string, or a function that returns a string for cases where
|
|
23
|
+
* the message takes a fair amount of effort to compute
|
|
24
|
+
*/
|
|
25
|
+
message) {
|
|
26
|
+
if (condition) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
// Condition not passed
|
|
30
|
+
// In production we strip the message but still throw
|
|
31
|
+
if (isProduction) {
|
|
32
|
+
throw new Error(prefix);
|
|
33
|
+
}
|
|
34
|
+
// When not in production we allow the message to pass through
|
|
35
|
+
// *This block will be removed in production builds*
|
|
36
|
+
const provided = typeof message === 'function' ? message() : message;
|
|
37
|
+
// Options:
|
|
38
|
+
// 1. message provided: `${prefix}: ${provided}`
|
|
39
|
+
// 2. message not provided: prefix
|
|
40
|
+
const value = provided ? `${prefix}: ${provided}` : prefix;
|
|
41
|
+
throw new Error(value);
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=invariant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invariant.js","sourceRoot":"","sources":["../../utils/invariant.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAEhD,MAAM,YAAY,GAAY,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAA;AACnE,MAAM,MAAM,GAAW,kBAAkB,CAAA;AAEzC;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,SAAS,CACvB,SAAc;AACd,gFAAgF;AAChF;;;GAGG;AACH,OAAiC;IAEjC,IAAI,SAAS,EAAE,CAAC;QACd,OAAM;IACR,CAAC;IACD,uBAAuB;IAEvB,qDAAqD;IACrD,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAA;IACzB,CAAC;IAED,8DAA8D;IAC9D,oDAAoD;IAEpD,MAAM,QAAQ,GACZ,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAA;IAErD,WAAW;IACX,gDAAgD;IAChD,kCAAkC;IAClC,MAAM,KAAK,GAAW,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,KAAK,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAA;IAClE,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAA;AACxB,CAAC"}
|
package/src/_esm/version.js
CHANGED
package/src/_esm/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,IAAI,GAAG,WAAW,CAAA;AAC/B,MAAM,CAAC,MAAM,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,IAAI,GAAG,WAAW,CAAA;AAC/B,MAAM,CAAC,MAAM,OAAO,GAAG,cAAc,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE5E,eAAO,MAAM,MAAM
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE5E,eAAO,MAAM,MAAM;aAYM,OAAO,CAAC,IAAI,CAAC;;iBAMrB,SAAS;4BAcE,WAAW,EAAE;sBASnB,aAAa,EAAE;;0BAiBL,OAAO;wBAUf,OAAO,eAAe,OAAO,EAAE;;CAwBnD,CAAA"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export declare const AddressZero = "0x0000000000000000000000000000000000000000";
|
|
2
2
|
export declare const AlternativeAddressZero = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
|
|
3
|
-
export declare const wrappedSolAddress = "So11111111111111111111111111111111111111112";
|
|
4
3
|
export declare const SolSystemProgram = "11111111111111111111111111111111";
|
|
4
|
+
export declare const MaxUint48: bigint;
|
|
5
|
+
export declare const MaxUint160: bigint;
|
|
6
|
+
export declare const MaxUint256: bigint;
|
|
5
7
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,+CAA+C,CAAA;AACvE,eAAO,MAAM,sBAAsB,+CACW,CAAA;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,+CAA+C,CAAA;AACvE,eAAO,MAAM,sBAAsB,+CACW,CAAA;AAE9C,eAAO,MAAM,gBAAgB,qCAAqC,CAAA;AAElE,eAAO,MAAM,SAAS,QAA2B,CAAA;AACjD,eAAO,MAAM,UAAU,QAAuD,CAAA;AAC9E,eAAO,MAAM,UAAU,QACsD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EVM.d.ts","sourceRoot":"","sources":["../../../core/EVM/EVM.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEjE,wBAAgB,GAAG,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"EVM.d.ts","sourceRoot":"","sources":["../../../core/EVM/EVM.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEjE,wBAAgB,GAAG,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,WAAW,CAkC7D"}
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import type { Process } from '@lifi/types';
|
|
2
|
-
import type { Client } from 'viem';
|
|
2
|
+
import type { Address, Client, Hex } from 'viem';
|
|
3
3
|
import { BaseStepExecutor } from '../BaseStepExecutor.js';
|
|
4
4
|
import type { LiFiStepExtended, StepExecutorOptions } from '../types.js';
|
|
5
|
-
|
|
5
|
+
export type Call = {
|
|
6
|
+
data?: Hex;
|
|
7
|
+
to?: Address;
|
|
8
|
+
value?: bigint;
|
|
9
|
+
chainId?: number;
|
|
10
|
+
};
|
|
6
11
|
export interface EVMStepExecutorOptions extends StepExecutorOptions {
|
|
7
12
|
client: Client;
|
|
8
|
-
multisig?: MultisigConfig;
|
|
9
13
|
}
|
|
10
14
|
export declare class EVMStepExecutor extends BaseStepExecutor {
|
|
11
15
|
private client;
|
|
12
|
-
private multisig?;
|
|
13
16
|
constructor(options: EVMStepExecutorOptions);
|
|
14
17
|
checkClient: (step: LiFiStepExtended, process?: Process) => Promise<Client | undefined>;
|
|
15
18
|
executeStep: (step: LiFiStepExtended) => Promise<LiFiStepExtended>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EVMStepExecutor.d.ts","sourceRoot":"","sources":["../../../core/EVM/EVMStepExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,OAAO,EACR,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"EVMStepExecutor.d.ts","sourceRoot":"","sources":["../../../core/EVM/EVMStepExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,OAAO,EACR,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EACV,OAAO,EACP,MAAM,EAEN,GAAG,EAGJ,MAAM,MAAM,CAAA;AASb,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAIzD,OAAO,KAAK,EACV,gBAAgB,EAChB,mBAAmB,EAEpB,MAAM,aAAa,CAAA;AAcpB,MAAM,MAAM,IAAI,GAAG;IACjB,IAAI,CAAC,EAAE,GAAG,CAAA;IACV,EAAE,CAAC,EAAE,OAAO,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,WAAW,sBAAuB,SAAQ,mBAAmB;IACjE,MAAM,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,eAAgB,SAAQ,gBAAgB;IACnD,OAAO,CAAC,MAAM,CAAQ;gBAEV,OAAO,EAAE,sBAAsB;IAM3C,WAAW,SAAgB,gBAAgB,YAAY,OAAO,iCA8C7D;IAED,WAAW,SAAgB,gBAAgB,KAAG,OAAO,CAAC,gBAAgB,CAAC,CA6ZtE;CACF"}
|