@lit-protocol/vincent-ability-aave 0.2.8 → 1.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.
Files changed (51) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +51 -86
  3. package/dist/CHANGELOG.md +7 -0
  4. package/dist/README.md +51 -86
  5. package/dist/package.json +5 -5
  6. package/dist/src/generated/lit-action.js +2 -2
  7. package/dist/src/generated/vincent-ability-metadata.json +1 -1
  8. package/dist/src/generated/vincent-bundled-ability.d.ts +1417 -66
  9. package/dist/src/generated/vincent-bundled-ability.d.ts.map +1 -1
  10. package/dist/src/index.d.ts +2 -0
  11. package/dist/src/index.d.ts.map +1 -1
  12. package/dist/src/index.js +17 -1
  13. package/dist/src/index.js.map +1 -1
  14. package/dist/src/lib/decodeTransaction.d.ts +3 -0
  15. package/dist/src/lib/decodeTransaction.d.ts.map +1 -0
  16. package/dist/src/lib/decodeTransaction.js +49 -0
  17. package/dist/src/lib/decodeTransaction.js.map +1 -0
  18. package/dist/src/lib/helpers/aave.d.ts +86 -0
  19. package/dist/src/lib/helpers/aave.d.ts.map +1 -0
  20. package/dist/src/lib/helpers/aave.js +312 -0
  21. package/dist/src/lib/helpers/aave.js.map +1 -0
  22. package/dist/src/lib/helpers/erc20.d.ts +6 -0
  23. package/dist/src/lib/helpers/erc20.d.ts.map +1 -0
  24. package/dist/src/lib/helpers/erc20.js +53 -0
  25. package/dist/src/lib/helpers/erc20.js.map +1 -0
  26. package/dist/src/lib/helpers/transactionKind.d.ts +6 -0
  27. package/dist/src/lib/helpers/transactionKind.d.ts.map +1 -0
  28. package/dist/src/lib/helpers/transactionKind.js +10 -0
  29. package/dist/src/lib/helpers/transactionKind.js.map +1 -0
  30. package/dist/src/lib/lit-action.js.map +1 -1
  31. package/dist/src/lib/validateSimulation.d.ts +3 -0
  32. package/dist/src/lib/validateSimulation.d.ts.map +1 -0
  33. package/dist/src/lib/validateSimulation.js +56 -0
  34. package/dist/src/lib/validateSimulation.js.map +1 -0
  35. package/dist/src/lib/validateTransaction.d.ts +3 -0
  36. package/dist/src/lib/validateTransaction.d.ts.map +1 -0
  37. package/dist/src/lib/validateTransaction.js +77 -0
  38. package/dist/src/lib/validateTransaction.js.map +1 -0
  39. package/dist/src/lib/vincent-ability.d.ts +1417 -67
  40. package/dist/src/lib/vincent-ability.d.ts.map +1 -1
  41. package/dist/src/lib/vincent-ability.js +9 -345
  42. package/dist/src/lib/vincent-ability.js.map +1 -1
  43. package/package.json +8 -8
  44. package/dist/src/lib/helpers/index.d.ts +0 -71
  45. package/dist/src/lib/helpers/index.d.ts.map +0 -1
  46. package/dist/src/lib/helpers/index.js +0 -345
  47. package/dist/src/lib/helpers/index.js.map +0 -1
  48. package/dist/src/lib/schemas.d.ts +0 -115
  49. package/dist/src/lib/schemas.d.ts.map +0 -1
  50. package/dist/src/lib/schemas.js +0 -110
  51. package/dist/src/lib/schemas.js.map +0 -1
@@ -0,0 +1,3 @@
1
+ import type { ValidateSimulationParams } from '@lit-protocol/vincent-ability-sdk/gatedSigner';
2
+ export declare const validateSimulation: (params: ValidateSimulationParams) => void;
3
+ //# sourceMappingURL=validateSimulation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateSimulation.d.ts","sourceRoot":"","sources":["../../../src/lib/validateSimulation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAC;AAM9F,eAAO,MAAM,kBAAkB,GAAI,QAAQ,wBAAwB,SA6DlE,CAAC"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateSimulation = void 0;
4
+ const viem_1 = require("viem");
5
+ const aave_1 = require("./helpers/aave");
6
+ const validateSimulation = (params) => {
7
+ const { chainId, sender: _sender, simulation } = params;
8
+ if (simulation.error) {
9
+ const { message, revertReason } = simulation.error;
10
+ throw new Error(`Simulation failed - Reason: ${revertReason} - Message: ${message}`);
11
+ }
12
+ const _feeContract = (0, aave_1.getFeeContractAddress)(chainId) || viem_1.zeroAddress; // Default to zeroAddress for code simplicity
13
+ const feeContract = (0, viem_1.getAddress)(_feeContract, chainId);
14
+ const { POOL: aavePoolAddress } = (0, aave_1.getAaveAddresses)(chainId);
15
+ const aaveATokens = (0, aave_1.getATokens)(chainId);
16
+ const sender = (0, viem_1.getAddress)(_sender, chainId);
17
+ const pool = (0, viem_1.getAddress)(aavePoolAddress, chainId);
18
+ const aTokens = Object.values(aaveATokens).map((a) => (0, viem_1.getAddress)(a, chainId));
19
+ const allowed = new Set([viem_1.zeroAddress, sender, pool, feeContract, ...aTokens]);
20
+ simulation.changes.forEach((c, idx) => {
21
+ const assetType = c.assetType;
22
+ const changeType = c.changeType;
23
+ const from = (0, viem_1.getAddress)(c.from, chainId);
24
+ const to = (0, viem_1.getAddress)(c.to, chainId);
25
+ // Helper for throwing with context
26
+ const fail = (reason) => {
27
+ throw new Error(`Invalid simulation change at index ${idx}: ${reason} [assetType=${assetType}, changeType=${changeType}, from=${from}, to=${to}]`);
28
+ };
29
+ if (assetType === 'NATIVE') {
30
+ if (changeType !== 'TRANSFER') {
31
+ fail('Only TRANSFER is allowed for NATIVE');
32
+ }
33
+ return;
34
+ }
35
+ if (assetType === 'ERC20') {
36
+ if (changeType === 'APPROVE') {
37
+ if (![sender, feeContract].includes(from) || ![pool, feeContract].includes(to)) {
38
+ fail('ERC20 APPROVE must be from userOp.sender to aave pool or fee contract');
39
+ }
40
+ return;
41
+ }
42
+ if (changeType === 'TRANSFER') {
43
+ if (!allowed.has(from) || !allowed.has(to)) {
44
+ fail('ERC20 TRANSFER endpoints must be within {zero address, sender, fee contract or Aave addresses}');
45
+ }
46
+ return;
47
+ }
48
+ // Unknown change type for ERC20
49
+ fail('Unsupported ERC20 change type');
50
+ }
51
+ // Any other asset types are not permitted
52
+ fail('Unsupported asset type');
53
+ });
54
+ };
55
+ exports.validateSimulation = validateSimulation;
56
+ //# sourceMappingURL=validateSimulation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateSimulation.js","sourceRoot":"","sources":["../../../src/lib/validateSimulation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ValidateTransactionParams } from '@lit-protocol/vincent-ability-sdk/gatedSigner';
2
+ export declare const validateTransaction: (params: ValidateTransactionParams) => void;
3
+ //# sourceMappingURL=validateTransaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateTransaction.d.ts","sourceRoot":"","sources":["../../../src/lib/validateTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,yBAAyB,EAC1B,MAAM,+CAA+C,CAAC;AAQvD,eAAO,MAAM,mBAAmB,GAAI,QAAQ,yBAAyB,SAsEpE,CAAC"}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateTransaction = void 0;
4
+ const viem_1 = require("viem");
5
+ const aave_1 = require("./helpers/aave");
6
+ const transactionKind_1 = require("./helpers/transactionKind");
7
+ const validateTransaction = (params) => {
8
+ const { chainId, decodedTransaction, sender } = params;
9
+ if (decodedTransaction.kind === 'error') {
10
+ const decodedTransactionError = decodedTransaction;
11
+ throw new Error(`Transaction failed to decode: ${decodedTransactionError.message}`);
12
+ }
13
+ const decodedTransactionSuccess = decodedTransaction;
14
+ const { POOL: aavePoolAddress } = (0, aave_1.getAaveAddresses)(chainId);
15
+ const feeContractAddress = (0, aave_1.getFeeContractAddress)(chainId);
16
+ if (!feeContractAddress) {
17
+ throw new Error(`Fee contract address not found for chainId ${chainId}`);
18
+ }
19
+ if (decodedTransaction.kind === transactionKind_1.TransactionKind.ERC20) {
20
+ if (['approve', 'increaseAllowance'].includes(decodedTransactionSuccess.fn)) {
21
+ const [spender, amount] = decodedTransactionSuccess.args;
22
+ if (!(0, viem_1.isAddressEqual)(spender, feeContractAddress) &&
23
+ !(0, viem_1.isAddressEqual)(spender, aavePoolAddress)) {
24
+ throw new Error(`ERC20 approval to forbidden spender ${spender}`);
25
+ }
26
+ if (amount === 2n ** 256n - 1n)
27
+ throw new Error('Infinite approval not allowed');
28
+ }
29
+ else {
30
+ throw new Error('ERC20 function not allowed');
31
+ }
32
+ return;
33
+ }
34
+ if (decodedTransaction.kind === transactionKind_1.TransactionKind.FEE) {
35
+ if (['depositToAave', 'withdrawFromAave'].includes(decodedTransactionSuccess.fn)) {
36
+ // const [appId, assetAddress, amount] =
37
+ // decodedTransactionSuccess.args as [number, Address, bigint];
38
+ // There is nothing to block here
39
+ // A wrong appId and the delegatee will produce an invalid signature
40
+ // A wrong assetAddress or amount and the deposit/withdrawal will fail
41
+ }
42
+ else {
43
+ throw new Error('Fee function not allowed');
44
+ }
45
+ return;
46
+ }
47
+ if (decodedTransaction.kind === transactionKind_1.TransactionKind.AAVE) {
48
+ const fn = decodedTransactionSuccess.fn;
49
+ const args = decodedTransactionSuccess.args; // Args depend on the function being called
50
+ if (fn === 'supply') {
51
+ if (!(0, viem_1.isAddressEqual)(args[2], sender))
52
+ throw new Error('supply.onBehalfOf != sender');
53
+ }
54
+ else if (fn === 'withdraw') {
55
+ if (!(0, viem_1.isAddressEqual)(args[2], sender))
56
+ throw new Error('withdraw.to != sender');
57
+ }
58
+ else if (fn === 'borrow') {
59
+ if (!(0, viem_1.isAddressEqual)(args[4], sender))
60
+ throw new Error('borrow.onBehalfOf != sender');
61
+ }
62
+ else if (fn === 'repay') {
63
+ if (!(0, viem_1.isAddressEqual)(args[3], sender))
64
+ throw new Error('repay.onBehalfOf != sender');
65
+ }
66
+ else if (fn === 'setUserUseReserveAsCollateral') {
67
+ // ok; self-scoped setting
68
+ }
69
+ else {
70
+ throw new Error(`Aave Pool function not allowed: ${fn}`);
71
+ }
72
+ return;
73
+ }
74
+ throw new Error('Unknown decoded transaction kind. Could not validate transaction.');
75
+ };
76
+ exports.validateTransaction = validateTransaction;
77
+ //# sourceMappingURL=validateTransaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateTransaction.js","sourceRoot":"","sources":["../../../src/lib/validateTransaction.ts"],"names":[],"mappings":";;;AAOA,+BAAsC;AAEtC,yCAAyE;AACzE,+DAA4D;AAErD,MAAM,mBAAmB,GAAG,CAAC,MAAiC,EAAE,EAAE;IACvE,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAEvD,IAAI,kBAAkB,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACxC,MAAM,uBAAuB,GAAG,kBAA6C,CAAC;QAC9E,MAAM,IAAI,KAAK,CAAC,iCAAiC,uBAAuB,CAAC,OAAO,EAAE,CAAC,CAAC;IACtF,CAAC;IAED,MAAM,yBAAyB,GAAG,kBAA+C,CAAC;IAElF,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,IAAA,uBAAgB,EAAC,OAAO,CAAC,CAAC;IAC5D,MAAM,kBAAkB,GAAG,IAAA,4BAAqB,EAAC,OAAO,CAAC,CAAC;IAC1D,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,8CAA8C,OAAO,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,IAAI,kBAAkB,CAAC,IAAI,KAAK,iCAAe,CAAC,KAAK,EAAE,CAAC;QACtD,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC;YAC5E,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,yBAAyB,CAAC,IAAyB,CAAC;YAC9E,IACE,CAAC,IAAA,qBAAc,EAAC,OAAO,EAAE,kBAAkB,CAAC;gBAC5C,CAAC,IAAA,qBAAc,EAAC,OAAO,EAAE,eAAe,CAAC,EACzC,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,uCAAuC,OAAO,EAAE,CAAC,CAAC;YACpE,CAAC;YAED,IAAI,MAAM,KAAK,EAAE,IAAI,IAAI,GAAG,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnF,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QAED,OAAO;IACT,CAAC;IAED,IAAI,kBAAkB,CAAC,IAAI,KAAK,iCAAe,CAAC,GAAG,EAAE,CAAC;QACpD,IAAI,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC;YACjF,wCAAwC;YACxC,iEAAiE;YACjE,iCAAiC;YACjC,oEAAoE;YACpE,sEAAsE;QACxE,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QAED,OAAO;IACT,CAAC;IAED,IAAI,kBAAkB,CAAC,IAAI,KAAK,iCAAe,CAAC,IAAI,EAAE,CAAC;QACrD,MAAM,EAAE,GAAG,yBAAyB,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,yBAAyB,CAAC,IAAa,CAAC,CAAC,2CAA2C;QAEjG,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;YACpB,IAAI,CAAC,IAAA,qBAAc,EAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACvF,CAAC;aAAM,IAAI,EAAE,KAAK,UAAU,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAA,qBAAc,EAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACjF,CAAC;aAAM,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAA,qBAAc,EAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACvF,CAAC;aAAM,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAA,qBAAc,EAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QACtF,CAAC;aAAM,IAAI,EAAE,KAAK,+BAA+B,EAAE,CAAC;YAClD,0BAA0B;QAC5B,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,mCAAmC,EAAE,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO;IACT,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;AACvF,CAAC,CAAC;AAtEW,QAAA,mBAAmB,uBAsE9B"}