@lit-protocol/vincent-ability-erc20-transfer 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/CONTRIBUTING.md +84 -0
  2. package/README.md +271 -0
  3. package/dist/CONTRIBUTING.md +84 -0
  4. package/dist/README.md +271 -0
  5. package/dist/package.json +31 -0
  6. package/dist/src/generated/lit-action.js +9 -0
  7. package/dist/src/generated/vincent-ability-metadata.json +3 -0
  8. package/dist/src/generated/vincent-bundled-ability.d.ts +1122 -0
  9. package/dist/src/generated/vincent-bundled-ability.d.ts.map +1 -0
  10. package/dist/src/generated/vincent-bundled-ability.js +15 -0
  11. package/dist/src/generated/vincent-bundled-ability.js.map +1 -0
  12. package/dist/src/generated/vincent-bundled-ability.ts +13 -0
  13. package/dist/src/index.d.ts +2 -0
  14. package/dist/src/index.d.ts.map +1 -0
  15. package/dist/src/index.js +6 -0
  16. package/dist/src/index.js.map +1 -0
  17. package/dist/src/lib/helpers/commit-allowed-policies.d.ts +15 -0
  18. package/dist/src/lib/helpers/commit-allowed-policies.d.ts.map +1 -0
  19. package/dist/src/lib/helpers/commit-allowed-policies.js +37 -0
  20. package/dist/src/lib/helpers/commit-allowed-policies.js.map +1 -0
  21. package/dist/src/lib/helpers/execute-operation.d.ts +17 -0
  22. package/dist/src/lib/helpers/execute-operation.d.ts.map +1 -0
  23. package/dist/src/lib/helpers/execute-operation.js +54 -0
  24. package/dist/src/lib/helpers/execute-operation.js.map +1 -0
  25. package/dist/src/lib/helpers/index.d.ts +31 -0
  26. package/dist/src/lib/helpers/index.d.ts.map +1 -0
  27. package/dist/src/lib/helpers/index.js +80 -0
  28. package/dist/src/lib/helpers/index.js.map +1 -0
  29. package/dist/src/lib/lit-action.d.ts +2 -0
  30. package/dist/src/lib/lit-action.d.ts.map +1 -0
  31. package/dist/src/lib/lit-action.js +16 -0
  32. package/dist/src/lib/lit-action.js.map +1 -0
  33. package/dist/src/lib/schemas.d.ts +97 -0
  34. package/dist/src/lib/schemas.d.ts.map +1 -0
  35. package/dist/src/lib/schemas.js +73 -0
  36. package/dist/src/lib/schemas.js.map +1 -0
  37. package/dist/src/lib/vincent-ability.d.ts +1119 -0
  38. package/dist/src/lib/vincent-ability.d.ts.map +1 -0
  39. package/dist/src/lib/vincent-ability.js +163 -0
  40. package/dist/src/lib/vincent-ability.js.map +1 -0
  41. package/package.json +30 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vincent-ability.d.ts","sourceRoot":"","sources":["../../../src/lib/vincent-ability.ts"],"names":[],"mappings":"AA4BA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsPzB,CAAC"}
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.vincentAbility = void 0;
4
+ const vincent_ability_sdk_1 = require("@lit-protocol/vincent-ability-sdk");
5
+ const vincent_policy_send_counter_1 = require("@lit-protocol/vincent-policy-send-counter");
6
+ const ethers_1 = require("ethers");
7
+ const helpers_1 = require("./helpers");
8
+ const commit_allowed_policies_1 = require("./helpers/commit-allowed-policies");
9
+ const execute_operation_1 = require("./helpers/execute-operation");
10
+ const schemas_1 = require("./schemas");
11
+ const SendLimitPolicy = (0, vincent_ability_sdk_1.createVincentAbilityPolicy)({
12
+ abilityParamsSchema: schemas_1.abilityParamsSchema,
13
+ bundledVincentPolicy: vincent_policy_send_counter_1.bundledVincentPolicy,
14
+ abilityParameterMappings: {
15
+ to: 'to',
16
+ amount: 'amount',
17
+ },
18
+ });
19
+ exports.vincentAbility = (0, vincent_ability_sdk_1.createVincentAbility)({
20
+ packageName: '@lit-protocol/vincent-ability-erc20-transfer',
21
+ abilityDescription: 'Ability to transfer ERC20 tokens with a limit on how many transfers are allowed in a time window',
22
+ abilityParamsSchema: schemas_1.abilityParamsSchema,
23
+ supportedPolicies: (0, vincent_ability_sdk_1.supportedPoliciesForAbility)([SendLimitPolicy]),
24
+ precheckSuccessSchema: schemas_1.precheckSuccessSchema,
25
+ precheckFailSchema: schemas_1.precheckFailSchema,
26
+ executeSuccessSchema: schemas_1.executeSuccessSchema,
27
+ executeFailSchema: schemas_1.executeFailSchema,
28
+ precheck: async ({ abilityParams }, { succeed, fail, delegation }) => {
29
+ console.log('[@agentic-ai/vincent-ability-erc20-transfer/precheck] 🔍 Starting validation');
30
+ console.log('[@agentic-ai/vincent-ability-erc20-transfer/precheck] 📋 params:', {
31
+ abilityParams,
32
+ });
33
+ const { to, amount, tokenAddress, rpcUrl, alchemyGasSponsor, alchemyGasSponsorApiKey, alchemyGasSponsorPolicyId, } = abilityParams;
34
+ // Validate EIP-7702 gas sponsorship
35
+ if (alchemyGasSponsor && (!alchemyGasSponsorApiKey || !alchemyGasSponsorPolicyId)) {
36
+ return fail({
37
+ error: '[@lit-protocol/vincent-ability-erc20-transfer/precheck] Alchemy gas sponsor is enabled, but missing Alchemy API key or policy ID',
38
+ });
39
+ }
40
+ // Validate RPC URL
41
+ if (!rpcUrl) {
42
+ return fail({
43
+ error: '[@lit-protocol/vincent-ability-erc20-transfer/precheck] RPC URL is required for precheck',
44
+ });
45
+ }
46
+ // Check if the sender has enough tokens
47
+ const provider = new ethers_1.ethers.providers.JsonRpcProvider(rpcUrl);
48
+ const erc20Contract = (0, helpers_1.getErc20Contract)(provider, tokenAddress);
49
+ const tokenDecimals = await erc20Contract.decimals();
50
+ console.log('[@agentic-ai/vincent-ability-erc20-transfer/precheck] 🔢 Using token decimals:', tokenDecimals);
51
+ const tokenAmountInSmallestUnit = ethers_1.ethers.utils.parseUnits(amount, tokenDecimals);
52
+ console.log('[@agentic-ai/vincent-ability-erc20-transfer/precheck] 💰 Transfer amount in smallest unit:', tokenAmountInSmallestUnit.toString());
53
+ // Check token balance
54
+ const userBalance = await erc20Contract.balanceOf(delegation.delegatorPkpInfo.ethAddress);
55
+ console.log('[@agentic-ai/vincent-ability-erc20-transfer/precheck] 💰 User balance in smallest unit:', ethers_1.ethers.utils.formatUnits(userBalance, tokenDecimals));
56
+ if (userBalance.lt(tokenAmountInSmallestUnit)) {
57
+ return fail({
58
+ error: `[@agentic-ai/vincent-ability-erc20-transfer/precheck] ❌ Insufficient token balance. Need ${ethers_1.ethers.utils.formatUnits(tokenAmountInSmallestUnit, tokenDecimals)} tokens, but only have ${ethers_1.ethers.utils.formatUnits(userBalance, tokenDecimals)} tokens`,
59
+ });
60
+ }
61
+ // Estimate transfer gas and check there is enough
62
+ const estimatedGas = await erc20Contract.estimateGas.transfer(to, tokenAmountInSmallestUnit);
63
+ console.log('[@agentic-ai/vincent-ability-erc20-transfer/precheck] 💰 Estimated gas:', estimatedGas.toString());
64
+ const nativeBalance = await provider.getBalance(delegation.delegatorPkpInfo.ethAddress);
65
+ if (!alchemyGasSponsor && nativeBalance.lt(estimatedGas)) {
66
+ return fail({
67
+ error: `[@agentic-ai/vincent-ability-erc20-transfer/precheck] ❌ Insufficient gas for ERC20 transfer. Need ${estimatedGas.toString()} gas, but only have ${nativeBalance.toString()} gas`,
68
+ });
69
+ }
70
+ // Precheck succeeded
71
+ const successResult = {
72
+ addressValid: true,
73
+ amountValid: true,
74
+ tokenAddressValid: true,
75
+ userBalance: userBalance.toString(),
76
+ estimatedGas: estimatedGas.toString(),
77
+ };
78
+ console.log('[@agentic-ai/vincent-ability-erc20-transfer/precheck] ✅ Success result:', successResult);
79
+ const successResponse = succeed(successResult);
80
+ console.log('[ERC20TransferAbility/precheck] ✅ Success response:', JSON.stringify(successResponse, null, 2));
81
+ return successResponse;
82
+ },
83
+ execute: async ({ abilityParams }, { succeed, fail, delegation, policiesContext }) => {
84
+ try {
85
+ const { to, amount, tokenAddress, chain, alchemyGasSponsor, alchemyGasSponsorApiKey, alchemyGasSponsorPolicyId, } = abilityParams;
86
+ console.log('[@agentic-ai/vincent-ability-erc20-transfer/execute] 🚀 Executing ERC-20 Transfer Ability', {
87
+ to,
88
+ amount,
89
+ tokenAddress,
90
+ chain,
91
+ });
92
+ if (alchemyGasSponsor && (!alchemyGasSponsorApiKey || !alchemyGasSponsorPolicyId)) {
93
+ return fail({
94
+ error: '[@lit-protocol/vincent-ability-erc20-transfer/execute] Alchemy gas sponsor is enabled, but missing Alchemy API key or policy ID',
95
+ });
96
+ }
97
+ let provider;
98
+ try {
99
+ provider = new ethers_1.ethers.providers.JsonRpcProvider(await Lit.Actions.getRpcUrl({ chain }));
100
+ }
101
+ catch (error) {
102
+ console.error('[@agentic-ai/vincent-ability-erc20-transfer/execute] Provider error:', error);
103
+ throw new Error('Unable to obtain blockchain provider for transfer operations');
104
+ }
105
+ const { chainId } = await provider.getNetwork();
106
+ const erc20Contract = (0, helpers_1.getErc20Contract)(provider, tokenAddress);
107
+ console.log('[@agentic-ai/vincent-ability-erc20-transfer/execute] ⛓️ Using Chain:', chain);
108
+ // Get decimals
109
+ const tokenDecimals = await erc20Contract.decimals();
110
+ console.log('[@agentic-ai/vincent-ability-erc20-transfer/execute] 🔢 Using token decimals:', tokenDecimals);
111
+ // Parse amount to token units using decimals
112
+ const tokenAmountInSmallestUnit = ethers_1.ethers.utils.parseUnits(amount, tokenDecimals);
113
+ console.log('[@agentic-ai/vincent-ability-erc20-transfer/execute] 💰 Transfer amount in smallest unit:', tokenAmountInSmallestUnit.toString());
114
+ // Prepare contract call data for ERC-20 transfer
115
+ const contractCallData = {
116
+ provider,
117
+ pkpPublicKey: delegation.delegatorPkpInfo.publicKey,
118
+ callerAddress: delegation.delegatorPkpInfo.ethAddress,
119
+ contractAddress: tokenAddress,
120
+ abi: helpers_1.ERC20_ABI,
121
+ functionName: 'transfer',
122
+ args: [to, tokenAmountInSmallestUnit],
123
+ chainId,
124
+ alchemyGasSponsor,
125
+ alchemyGasSponsorApiKey,
126
+ alchemyGasSponsorPolicyId,
127
+ };
128
+ console.log('[@agentic-ai/vincent-ability-erc20-transfer/execute] 🔧 Full contractCallData:', JSON.stringify(contractCallData, null, 2));
129
+ console.log('[@agentic-ai/vincent-ability-erc20-transfer/execute] 🚀 Attempting contract call...');
130
+ // Commit policy changes to the blockchain. We do this before to prioritize updating the policy over the transfer transaction
131
+ const policyCommitResults = await (0, commit_allowed_policies_1.commitAllowedPolicies)(policiesContext, '[@agentic-ai/vincent-ability-erc20-transfer/execute]');
132
+ console.log('[@agentic-ai/vincent-ability-erc20-transfer/execute] ✅ Policy commit results:', policyCommitResults);
133
+ // Execute the ERC-20 transfer using laUtils
134
+ const txHash = await (0, execute_operation_1.executeOperation)(contractCallData);
135
+ console.log('[@agentic-ai/vincent-ability-erc20-transfer/execute] ✅ Contract call completed, txHash:', txHash);
136
+ console.log('[@agentic-ai/vincent-ability-erc20-transfer/execute] ✅ ERC-20 transfer successful', {
137
+ txHash,
138
+ to,
139
+ amount,
140
+ tokenAddress,
141
+ });
142
+ return succeed({
143
+ txHash,
144
+ to,
145
+ amount,
146
+ tokenAddress,
147
+ timestamp: Date.now(),
148
+ });
149
+ }
150
+ catch (error) {
151
+ console.error('[@agentic-ai/vincent-ability-erc20-transfer/execute] ❌ ERC-20 transfer failed', error);
152
+ // Provide more specific error messages for common ERC-20 failures
153
+ let errorMessage = '[@agentic-ai/vincent-ability-erc20-transfer/execute] ❌ Unknown error occurred';
154
+ if (error instanceof Error) {
155
+ errorMessage = `[@agentic-ai/vincent-ability-erc20-transfer/execute] ❌ ${error.message}`;
156
+ }
157
+ return fail({
158
+ error: errorMessage,
159
+ });
160
+ }
161
+ },
162
+ });
163
+ //# sourceMappingURL=vincent-ability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vincent-ability.js","sourceRoot":"","sources":["../../../src/lib/vincent-ability.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "@lit-protocol/vincent-ability-erc20-transfer",
3
+ "version": "0.0.1",
4
+ "publishConfig": {
5
+ "access": "public"
6
+ },
7
+ "dependencies": {
8
+ "@lit-protocol/vincent-scaffold-sdk": "^1.1.7",
9
+ "ethers": "^5.8.0",
10
+ "tslib": "2.8.1",
11
+ "zod": "^3.25.64",
12
+ "@lit-protocol/vincent-ability-sdk": "2.0.0",
13
+ "@lit-protocol/vincent-policy-send-counter": "0.1.0"
14
+ },
15
+ "peerDependencies": {
16
+ "@lit-protocol/vincent-app-sdk": "^2.0.0"
17
+ },
18
+ "devDependencies": {
19
+ "esbuild": "^0.19.12",
20
+ "esbuild-plugin-polyfill-node": "^0.3.0",
21
+ "ipfs-only-hash": "^4.0.0"
22
+ },
23
+ "main": "./dist/src/index.js",
24
+ "module": "./dist/src/index.js",
25
+ "types": "./dist/src/index.d.ts",
26
+ "files": [
27
+ "dist/**",
28
+ "*.md"
29
+ ]
30
+ }