@lit-protocol/vincent-ability-uniswap-swap 5.0.0 → 7.0.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/CHANGELOG.md +30 -0
- package/dist/CHANGELOG.md +45 -0
- package/dist/package.json +1 -1
- package/dist/src/generated/lit-action.js +2 -2
- package/dist/src/generated/vincent-ability-metadata.json +1 -1
- package/dist/src/generated/vincent-bundled-ability.d.ts +67 -10
- package/dist/src/generated/vincent-bundled-ability.d.ts.map +1 -1
- package/dist/src/generated/vincent-prepare-metadata.json +3 -3
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/lib/ability-checks/check-erc20-allowance.d.ts +4 -3
- package/dist/src/lib/ability-checks/check-erc20-allowance.d.ts.map +1 -1
- package/dist/src/lib/ability-checks/check-erc20-allowance.js +24 -10
- package/dist/src/lib/ability-checks/check-erc20-allowance.js.map +1 -1
- package/dist/src/lib/ability-checks/check-erc20-balance.d.ts +9 -0
- package/dist/src/lib/ability-checks/check-erc20-balance.d.ts.map +1 -0
- package/dist/src/lib/ability-checks/check-erc20-balance.js +25 -0
- package/dist/src/lib/ability-checks/check-erc20-balance.js.map +1 -0
- package/dist/src/lib/ability-checks/check-native-token-balance.d.ts +2 -1
- package/dist/src/lib/ability-checks/check-native-token-balance.d.ts.map +1 -1
- package/dist/src/lib/ability-checks/check-native-token-balance.js +8 -2
- package/dist/src/lib/ability-checks/check-native-token-balance.js.map +1 -1
- package/dist/src/lib/ability-checks/index.d.ts +1 -1
- package/dist/src/lib/ability-checks/index.d.ts.map +1 -1
- package/dist/src/lib/ability-checks/index.js +1 -1
- package/dist/src/lib/ability-checks/index.js.map +1 -1
- package/dist/src/lib/ability-helpers/get-erc20-allowance.d.ts +8 -0
- package/dist/src/lib/ability-helpers/get-erc20-allowance.d.ts.map +1 -0
- package/dist/src/lib/ability-helpers/get-erc20-allowance.js +10 -0
- package/dist/src/lib/ability-helpers/get-erc20-allowance.js.map +1 -0
- package/dist/src/lib/{ability-checks/getErc20Contract.d.ts → ability-helpers/get-erc20-contract.d.ts} +2 -2
- package/dist/src/lib/ability-helpers/get-erc20-contract.d.ts.map +1 -0
- package/dist/src/lib/{ability-checks/getErc20Contract.js → ability-helpers/get-erc20-contract.js} +1 -1
- package/dist/src/lib/ability-helpers/get-erc20-contract.js.map +1 -0
- package/dist/src/lib/ability-helpers/index.d.ts +2 -0
- package/dist/src/lib/ability-helpers/index.d.ts.map +1 -1
- package/dist/src/lib/ability-helpers/index.js +2 -0
- package/dist/src/lib/ability-helpers/index.js.map +1 -1
- package/dist/src/lib/ability-helpers/send-erc20-approval-tx.d.ts +15 -0
- package/dist/src/lib/ability-helpers/send-erc20-approval-tx.d.ts.map +1 -0
- package/dist/src/lib/ability-helpers/send-erc20-approval-tx.js +86 -0
- package/dist/src/lib/ability-helpers/send-erc20-approval-tx.js.map +1 -0
- package/dist/src/lib/ability-helpers/send-uniswap-tx.d.ts +4 -1
- package/dist/src/lib/ability-helpers/send-uniswap-tx.d.ts.map +1 -1
- package/dist/src/lib/ability-helpers/send-uniswap-tx.js +16 -1
- package/dist/src/lib/ability-helpers/send-uniswap-tx.js.map +1 -1
- package/dist/src/lib/schemas.d.ts +67 -9
- package/dist/src/lib/schemas.d.ts.map +1 -1
- package/dist/src/lib/schemas.js +70 -12
- package/dist/src/lib/schemas.js.map +1 -1
- package/dist/src/lib/types.d.ts +44 -0
- package/dist/src/lib/types.d.ts.map +1 -0
- package/dist/src/lib/types.js +10 -0
- package/dist/src/lib/types.js.map +1 -0
- package/dist/src/lib/vincent-ability.d.ts +67 -10
- package/dist/src/lib/vincent-ability.d.ts.map +1 -1
- package/dist/src/lib/vincent-ability.js +178 -46
- package/dist/src/lib/vincent-ability.js.map +1 -1
- package/package.json +4 -4
- package/dist/src/lib/ability-checks/check-token-in-balance.d.ts +0 -8
- package/dist/src/lib/ability-checks/check-token-in-balance.d.ts.map +0 -1
- package/dist/src/lib/ability-checks/check-token-in-balance.js +0 -17
- package/dist/src/lib/ability-checks/check-token-in-balance.js.map +0 -1
- package/dist/src/lib/ability-checks/getErc20Contract.d.ts.map +0 -1
- package/dist/src/lib/ability-checks/getErc20Contract.js.map +0 -1
|
@@ -7,9 +7,10 @@ const ethers_1 = require("ethers");
|
|
|
7
7
|
const ability_helpers_1 = require("./ability-helpers");
|
|
8
8
|
const ability_checks_1 = require("./ability-checks");
|
|
9
9
|
const schemas_1 = require("./schemas");
|
|
10
|
-
const check_erc20_allowance_1 = require("./ability-checks/check-erc20-allowance");
|
|
11
10
|
const validate_signed_uniswap_quote_1 = require("./prepare/validate-signed-uniswap-quote");
|
|
12
11
|
const vincent_prepare_metadata_json_1 = tslib_1.__importDefault(require("../generated/vincent-prepare-metadata.json"));
|
|
12
|
+
const types_1 = require("./types");
|
|
13
|
+
const send_erc20_approval_tx_1 = require("./ability-helpers/send-erc20-approval-tx");
|
|
13
14
|
const bigintReplacer = (key, value) => {
|
|
14
15
|
return typeof value === 'bigint' ? value.toString() : value;
|
|
15
16
|
};
|
|
@@ -21,12 +22,23 @@ exports.vincentAbility = (0, vincent_ability_sdk_1.createVincentAbility)({
|
|
|
21
22
|
supportedPolicies: (0, vincent_ability_sdk_1.supportedPoliciesForAbility)([]),
|
|
22
23
|
executeSuccessSchema: schemas_1.executeSuccessSchema,
|
|
23
24
|
executeFailSchema: schemas_1.executeFailSchema,
|
|
25
|
+
precheckSuccessSchema: schemas_1.precheckSuccessSchema,
|
|
24
26
|
precheckFailSchema: schemas_1.precheckFailSchema,
|
|
25
27
|
precheck: async ({ abilityParams }, { succeed, fail, delegation: { delegatorPkpInfo } }) => {
|
|
26
28
|
console.log('Prechecking UniswapSwapAbility', JSON.stringify(abilityParams, exports.bigintReplacer, 2));
|
|
27
29
|
// TODO: Rewrite checks to use `createAllowResult` and `createDenyResult` so we always know when we get a runtime err
|
|
28
|
-
const { rpcUrlForUniswap, signedUniswapQuote } = abilityParams;
|
|
30
|
+
const { action, alchemyGasSponsor, rpcUrlForUniswap, signedUniswapQuote } = abilityParams;
|
|
29
31
|
const { quote } = signedUniswapQuote;
|
|
32
|
+
if (!action) {
|
|
33
|
+
return fail({
|
|
34
|
+
reason: `The action parameter is required. Please use one of the following: ${Object.values(types_1.AbilityAction).join(', ')}`,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
if (!Object.values(types_1.AbilityAction).includes(action)) {
|
|
38
|
+
return fail({
|
|
39
|
+
reason: `The provided action: ${action} is not supported. Please use one of the following: ${Object.values(types_1.AbilityAction).join(', ')}`,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
30
42
|
try {
|
|
31
43
|
(0, validate_signed_uniswap_quote_1.validateSignedUniswapQuote)({
|
|
32
44
|
prepareSuccessResult: signedUniswapQuote,
|
|
@@ -41,55 +53,95 @@ exports.vincentAbility = (0, vincent_ability_sdk_1.createVincentAbility)({
|
|
|
41
53
|
}
|
|
42
54
|
const delegatorPkpAddress = delegatorPkpInfo.ethAddress;
|
|
43
55
|
const provider = new ethers_1.ethers.providers.StaticJsonRpcProvider(rpcUrlForUniswap);
|
|
44
|
-
|
|
45
|
-
|
|
56
|
+
// 1. If alchemyGasSponsor is not enabled, we need to check if the delegator has enough native token balance to pay for gas fees
|
|
57
|
+
let checkNativeTokenBalanceResultSuccess;
|
|
58
|
+
if (!alchemyGasSponsor) {
|
|
59
|
+
const checkNativeTokenBalanceResult = await (0, ability_checks_1.checkNativeTokenBalance)({
|
|
46
60
|
provider,
|
|
47
61
|
pkpEthAddress: delegatorPkpAddress,
|
|
48
62
|
});
|
|
63
|
+
if (!checkNativeTokenBalanceResult.success) {
|
|
64
|
+
return fail({
|
|
65
|
+
reason: checkNativeTokenBalanceResult.reason,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
checkNativeTokenBalanceResultSuccess = checkNativeTokenBalanceResult;
|
|
49
69
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
70
|
+
const requiredTokenInAmount = ethers_1.ethers.utils.parseUnits(quote.amountIn, quote.tokenInDecimals);
|
|
71
|
+
// 2. We retrieve the current allowance of the input token for the spender from the delegator
|
|
72
|
+
const checkErc20AllowanceResult = await (0, ability_checks_1.checkErc20Allowance)({
|
|
73
|
+
provider,
|
|
74
|
+
tokenAddress: quote.tokenIn,
|
|
75
|
+
owner: delegatorPkpInfo.ethAddress,
|
|
76
|
+
spender: quote.to,
|
|
77
|
+
requiredAllowance: requiredTokenInAmount,
|
|
78
|
+
});
|
|
79
|
+
// 3. If the ability action is approve, we return the current allowance since all
|
|
80
|
+
// precheck is concerned with is whether the delegatee can call approve which just needs to know if
|
|
81
|
+
// the gas for the approval transaction can be paid for (whether by gas sponsorship, or by the delegator).
|
|
82
|
+
// We return the current allowance out of convenience, so the delegatee can know if
|
|
83
|
+
// the current allowance is sufficient without having to call execute.
|
|
84
|
+
if (action === types_1.AbilityAction.Approve) {
|
|
85
|
+
return succeed({
|
|
86
|
+
nativeTokenBalance: checkNativeTokenBalanceResultSuccess?.ethBalance.toString(),
|
|
87
|
+
currentTokenInAllowanceForSpender: checkErc20AllowanceResult.currentAllowance.toString(),
|
|
88
|
+
spenderAddress: checkErc20AllowanceResult.spenderAddress,
|
|
64
89
|
});
|
|
65
90
|
}
|
|
66
|
-
|
|
91
|
+
// 4. If the ability action is swap, and the current allowance is insufficient, we return a failure
|
|
92
|
+
// because the swap cannot currently be performed.
|
|
93
|
+
if (action === types_1.AbilityAction.Swap && !checkErc20AllowanceResult.success) {
|
|
67
94
|
return fail({
|
|
68
|
-
reason:
|
|
95
|
+
reason: checkErc20AllowanceResult.reason,
|
|
96
|
+
spenderAddress: checkErc20AllowanceResult.spenderAddress,
|
|
97
|
+
tokenAddress: checkErc20AllowanceResult.tokenAddress,
|
|
98
|
+
requiredAllowance: checkErc20AllowanceResult.requiredAllowance.toString(),
|
|
99
|
+
currentAllowance: checkErc20AllowanceResult.currentAllowance.toString(),
|
|
69
100
|
});
|
|
70
101
|
}
|
|
71
|
-
//
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
}
|
|
81
|
-
|
|
102
|
+
// 5. At this point, the ability action is either:
|
|
103
|
+
// - Swap and the current allowance is sufficient
|
|
104
|
+
// - ApproveAndSwap and the gas for the approval transaction can be paid for if the current allowance is insufficient.
|
|
105
|
+
// We now need to check if the current delegator balance of tokenIn is sufficient to perform the swap.
|
|
106
|
+
const checkErc20BalanceResult = await (0, ability_checks_1.checkErc20Balance)({
|
|
107
|
+
provider,
|
|
108
|
+
pkpEthAddress: delegatorPkpAddress,
|
|
109
|
+
tokenAddress: quote.tokenIn,
|
|
110
|
+
requiredTokenAmount: requiredTokenInAmount,
|
|
111
|
+
});
|
|
112
|
+
if (!checkErc20BalanceResult.success) {
|
|
82
113
|
return fail({
|
|
83
|
-
reason:
|
|
84
|
-
|
|
114
|
+
reason: checkErc20BalanceResult.reason,
|
|
115
|
+
tokenAddress: checkErc20BalanceResult.tokenAddress,
|
|
116
|
+
requiredTokenAmount: checkErc20BalanceResult.requiredTokenAmount.toString(),
|
|
117
|
+
tokenBalance: checkErc20BalanceResult.tokenBalance.toString(),
|
|
85
118
|
});
|
|
86
119
|
}
|
|
87
|
-
|
|
120
|
+
// 6. At this point, we know that:
|
|
121
|
+
// - The current allowance is either sufficient, or the gas for a new approval transaction can be paid for
|
|
122
|
+
// - The current delegator balance of tokenIn is sufficient to perform the swap
|
|
123
|
+
return succeed({
|
|
124
|
+
nativeTokenBalance: checkNativeTokenBalanceResultSuccess?.ethBalance.toString(),
|
|
125
|
+
tokenInAddress: checkErc20BalanceResult.tokenAddress,
|
|
126
|
+
tokenInBalance: checkErc20BalanceResult.tokenBalance.toString(),
|
|
127
|
+
currentTokenInAllowanceForSpender: checkErc20AllowanceResult.currentAllowance.toString(),
|
|
128
|
+
spenderAddress: checkErc20AllowanceResult.spenderAddress,
|
|
129
|
+
});
|
|
88
130
|
},
|
|
89
131
|
execute: async ({ abilityParams }, { succeed, fail, delegation: { delegatorPkpInfo } }) => {
|
|
90
132
|
console.log('Executing UniswapSwapAbility', JSON.stringify(abilityParams, exports.bigintReplacer, 2));
|
|
91
|
-
const { rpcUrlForUniswap, signedUniswapQuote, gasBufferPercentage, baseFeePerGasBufferPercentage, } = abilityParams;
|
|
133
|
+
const { action, rpcUrlForUniswap, signedUniswapQuote, gasBufferPercentage, baseFeePerGasBufferPercentage, alchemyGasSponsor, alchemyGasSponsorApiKey, alchemyGasSponsorPolicyId, } = abilityParams;
|
|
92
134
|
const { quote } = signedUniswapQuote;
|
|
135
|
+
if (!action) {
|
|
136
|
+
return fail({
|
|
137
|
+
reason: `The action parameter is required. Please use one of the following: ${Object.values(types_1.AbilityAction).join(', ')}`,
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
if (!Object.values(types_1.AbilityAction).includes(action)) {
|
|
141
|
+
return fail({
|
|
142
|
+
reason: `The provided action: ${action} is not supported. Please use one of the following: ${Object.values(types_1.AbilityAction).join(', ')}`,
|
|
143
|
+
});
|
|
144
|
+
}
|
|
93
145
|
try {
|
|
94
146
|
(0, validate_signed_uniswap_quote_1.validateSignedUniswapQuote)({
|
|
95
147
|
prepareSuccessResult: signedUniswapQuote,
|
|
@@ -102,18 +154,98 @@ exports.vincentAbility = (0, vincent_ability_sdk_1.createVincentAbility)({
|
|
|
102
154
|
reason: `Uniswap quote validation failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
103
155
|
});
|
|
104
156
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
157
|
+
// 1. If the ability action is approve or approveAndSwap, we need to check if the current allowance is sufficient.
|
|
158
|
+
// If the ability action is:
|
|
159
|
+
// - Approve, we return success if allowance is sufficient, otherwise we send a new approval transaction
|
|
160
|
+
// - ApproveAndSwap, and the current allowance is sufficient, we continue to create the swap transaction. Otherwise,
|
|
161
|
+
// we send a new approval transaction and then continue to create the swap transaction
|
|
162
|
+
let approvalTxHash;
|
|
163
|
+
let approvalTxUserOperationHash;
|
|
164
|
+
if (action === types_1.AbilityAction.Approve || action === types_1.AbilityAction.ApproveAndSwap) {
|
|
165
|
+
const provider = new ethers_1.ethers.providers.StaticJsonRpcProvider(rpcUrlForUniswap);
|
|
166
|
+
const requiredTokenInAmount = ethers_1.ethers.utils.parseUnits(quote.amountIn, quote.tokenInDecimals);
|
|
167
|
+
const checkErc20AllowanceResult = await (0, ability_checks_1.checkErc20Allowance)({
|
|
168
|
+
provider,
|
|
169
|
+
tokenAddress: quote.tokenIn,
|
|
170
|
+
owner: delegatorPkpInfo.ethAddress,
|
|
171
|
+
spender: quote.to,
|
|
172
|
+
requiredAllowance: requiredTokenInAmount,
|
|
173
|
+
});
|
|
174
|
+
if (checkErc20AllowanceResult.success) {
|
|
175
|
+
console.log(`Sufficient allowance already exists for spender ${quote.to}, skipping approval transaction. Current allowance: ${checkErc20AllowanceResult.currentAllowance.toString()}`);
|
|
176
|
+
if (action === types_1.AbilityAction.Approve) {
|
|
177
|
+
// 1.1 If the ability action is approve, we return success since the current allowance is sufficient,
|
|
178
|
+
// and a new approval transaction is not needed.
|
|
179
|
+
return succeed({
|
|
180
|
+
currentAllowance: checkErc20AllowanceResult.currentAllowance.toString(),
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
if (checkErc20AllowanceResult.reason.includes('insufficient ERC20 allowance for spender')) {
|
|
186
|
+
// 1.2 The current allowance is insufficient, so we need to send a new approval transaction
|
|
187
|
+
const txHash = await (0, send_erc20_approval_tx_1.sendErc20ApprovalTx)({
|
|
188
|
+
rpcUrl: rpcUrlForUniswap,
|
|
189
|
+
chainId: quote.chainId,
|
|
190
|
+
pkpEthAddress: delegatorPkpInfo.ethAddress,
|
|
191
|
+
pkpPublicKey: delegatorPkpInfo.publicKey,
|
|
192
|
+
spenderAddress: quote.to,
|
|
193
|
+
allowanceAmount: requiredTokenInAmount.toString(),
|
|
194
|
+
erc20TokenAddress: quote.tokenIn,
|
|
195
|
+
alchemyGasSponsor,
|
|
196
|
+
alchemyGasSponsorApiKey,
|
|
197
|
+
alchemyGasSponsorPolicyId,
|
|
198
|
+
});
|
|
199
|
+
if (alchemyGasSponsor) {
|
|
200
|
+
approvalTxUserOperationHash = txHash;
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
approvalTxHash = txHash;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
// 1.3 Some error other than insufficient allowance occurred, bail out
|
|
208
|
+
return fail({
|
|
209
|
+
reason: checkErc20AllowanceResult.reason,
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
let swapTxHash;
|
|
215
|
+
let swapTxUserOperationHash;
|
|
216
|
+
if (action === types_1.AbilityAction.Swap || action === types_1.AbilityAction.ApproveAndSwap) {
|
|
217
|
+
// 2. The ability action is swap or approveAndSwap, so we send the swap transaction
|
|
218
|
+
const txHash = await (0, ability_helpers_1.sendUniswapTx)({
|
|
219
|
+
rpcUrl: rpcUrlForUniswap,
|
|
220
|
+
chainId: quote.chainId,
|
|
221
|
+
pkpEthAddress: delegatorPkpInfo.ethAddress,
|
|
222
|
+
pkpPublicKey: delegatorPkpInfo.publicKey,
|
|
223
|
+
to: quote.to,
|
|
224
|
+
value: quote.value,
|
|
225
|
+
calldata: quote.calldata,
|
|
226
|
+
gasBufferPercentage,
|
|
227
|
+
baseFeePerGasBufferPercentage,
|
|
228
|
+
alchemyGasSponsor,
|
|
229
|
+
alchemyGasSponsorApiKey,
|
|
230
|
+
alchemyGasSponsorPolicyId,
|
|
231
|
+
});
|
|
232
|
+
if (alchemyGasSponsor) {
|
|
233
|
+
swapTxUserOperationHash = txHash;
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
swapTxHash = txHash;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
// 3. If the ability action is:
|
|
240
|
+
// - Approve, we return the approval transaction hash.
|
|
241
|
+
// - Swap, we return the swap transaction hash.
|
|
242
|
+
// - ApproveAndSwap, we return the approval and swap transaction hashes.
|
|
243
|
+
return succeed({
|
|
244
|
+
approvalTxHash,
|
|
245
|
+
approvalTxUserOperationHash,
|
|
246
|
+
swapTxHash,
|
|
247
|
+
swapTxUserOperationHash,
|
|
115
248
|
});
|
|
116
|
-
return succeed({ swapTxHash });
|
|
117
249
|
},
|
|
118
250
|
});
|
|
119
251
|
//# sourceMappingURL=vincent-ability.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vincent-ability.js","sourceRoot":"","sources":["../../../src/lib/vincent-ability.ts"],"names":[],"mappings":";;;;AAAA,2EAG2C;AAC3C,mCAAgC;AAEhC,uDAAkD;AAClD,
|
|
1
|
+
{"version":3,"file":"vincent-ability.js","sourceRoot":"","sources":["../../../src/lib/vincent-ability.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lit-protocol/vincent-ability-uniswap-swap",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "7.0.0",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -12,11 +12,11 @@
|
|
|
12
12
|
"json-stable-stringify": "^1.3.0",
|
|
13
13
|
"tslib": "2.8.1",
|
|
14
14
|
"zod": "^3.25.64",
|
|
15
|
-
"@lit-protocol/vincent-ability-sdk": "2.
|
|
16
|
-
"@lit-protocol/vincent-app-sdk": "2.2.
|
|
15
|
+
"@lit-protocol/vincent-ability-sdk": "2.3.1",
|
|
16
|
+
"@lit-protocol/vincent-app-sdk": "2.2.3"
|
|
17
17
|
},
|
|
18
18
|
"peerDependencies": {
|
|
19
|
-
"@lit-protocol/vincent-app-sdk": "^2.2.
|
|
19
|
+
"@lit-protocol/vincent-app-sdk": "^2.2.3"
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
22
|
"@dotenvx/dotenvx": "^1.44.2",
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { ethers } from 'ethers';
|
|
2
|
-
export declare const checkTokenInBalance: ({ provider, pkpEthAddress, tokenInAddress, tokenInAmount, }: {
|
|
3
|
-
provider: ethers.providers.StaticJsonRpcProvider;
|
|
4
|
-
pkpEthAddress: string;
|
|
5
|
-
tokenInAddress: string;
|
|
6
|
-
tokenInAmount: bigint;
|
|
7
|
-
}) => Promise<ethers.BigNumber>;
|
|
8
|
-
//# sourceMappingURL=check-token-in-balance.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"check-token-in-balance.d.ts","sourceRoot":"","sources":["../../../../src/lib/ability-checks/check-token-in-balance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,eAAO,MAAM,mBAAmB,GAAU,6DAKvC;IACD,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC;IACjD,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB,8BAeA,CAAC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.checkTokenInBalance = void 0;
|
|
4
|
-
const ethers_1 = require("ethers");
|
|
5
|
-
const getErc20Contract_1 = require("./getErc20Contract");
|
|
6
|
-
const checkTokenInBalance = async ({ provider, pkpEthAddress, tokenInAddress, tokenInAmount, }) => {
|
|
7
|
-
const contract = (0, getErc20Contract_1.getErc20Contract)(tokenInAddress, provider);
|
|
8
|
-
const tokenInBalance = await contract.balanceOf(pkpEthAddress);
|
|
9
|
-
// Convert bigint to BigNumber for comparison
|
|
10
|
-
const tokenInAmountBN = ethers_1.ethers.BigNumber.from(tokenInAmount.toString());
|
|
11
|
-
if (tokenInBalance.lt(tokenInAmountBN)) {
|
|
12
|
-
throw new Error(`pkpEthAddress (${pkpEthAddress}) has insufficient balance of tokenIn (${tokenInAddress}). Wanted ${tokenInAmount}, but only have ${tokenInBalance} (checkTokenInBalance)`);
|
|
13
|
-
}
|
|
14
|
-
return tokenInBalance;
|
|
15
|
-
};
|
|
16
|
-
exports.checkTokenInBalance = checkTokenInBalance;
|
|
17
|
-
//# sourceMappingURL=check-token-in-balance.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"check-token-in-balance.js","sourceRoot":"","sources":["../../../../src/lib/ability-checks/check-token-in-balance.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAChC,yDAAsD;AAE/C,MAAM,mBAAmB,GAAG,KAAK,EAAE,EACxC,QAAQ,EACR,aAAa,EACb,cAAc,EACd,aAAa,GAMd,EAAE,EAAE;IACH,MAAM,QAAQ,GAAG,IAAA,mCAAgB,EAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAE5D,MAAM,cAAc,GAAqB,MAAM,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAEjF,6CAA6C;IAC7C,MAAM,eAAe,GAAG,eAAM,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;IAExE,IAAI,cAAc,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,kBAAkB,aAAa,0CAA0C,cAAc,aAAa,aAAa,mBAAmB,cAAc,wBAAwB,CAC3K,CAAC;IACJ,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;AAzBW,QAAA,mBAAmB,uBAyB9B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getErc20Contract.d.ts","sourceRoot":"","sources":["../../../../src/lib/ability-checks/getErc20Contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,eAAO,MAAM,SAAS,UAUrB,CAAC;AAEF,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,qBAAqB,mBAGjD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getErc20Contract.js","sourceRoot":"","sources":["../../../../src/lib/ability-checks/getErc20Contract.ts"],"names":[],"mappings":";;;AAcA,4CAKC;AAnBD,mCAAgC;AAEnB,QAAA,SAAS,GAAG;IACvB,mEAAmE;IACnE,2EAA2E;IAC3E,oFAAoF;IACpF,0CAA0C;IAC1C,wDAAwD;IACxD,uEAAuE;IACvE,yFAAyF;IACzF,gDAAgD;IAChD,kDAAkD;CACnD,CAAC;AAEF,SAAgB,gBAAgB,CAC9B,YAAoB,EACpB,QAAgD;IAEhD,OAAO,IAAI,eAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,iBAAS,EAAE,QAAQ,CAAC,CAAC;AAChE,CAAC"}
|