@zerodev/permissions 5.6.2 → 5.6.4

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 (52) hide show
  1. package/_cjs/constants.js +2 -1
  2. package/_cjs/constants.js.map +1 -1
  3. package/_cjs/policies/callPolicyUtils.js +27 -0
  4. package/_cjs/policies/callPolicyUtils.js.map +1 -1
  5. package/_cjs/policies/toCallPolicy.js +18 -16
  6. package/_cjs/policies/toCallPolicy.js.map +1 -1
  7. package/_cjs/policies/types.js +1 -0
  8. package/_cjs/policies/types.js.map +1 -1
  9. package/_cjs/serializeMultiChainPermissionAccounts.js +31 -13
  10. package/_cjs/serializeMultiChainPermissionAccounts.js.map +1 -1
  11. package/_cjs/serializePermissionAccount.js +5 -4
  12. package/_cjs/serializePermissionAccount.js.map +1 -1
  13. package/_cjs/toInitConfig.js +3 -3
  14. package/_cjs/toInitConfig.js.map +1 -1
  15. package/_esm/constants.js +5 -0
  16. package/_esm/constants.js.map +1 -1
  17. package/_esm/policies/callPolicyUtils.js +29 -1
  18. package/_esm/policies/callPolicyUtils.js.map +1 -1
  19. package/_esm/policies/toCallPolicy.js +21 -19
  20. package/_esm/policies/toCallPolicy.js.map +1 -1
  21. package/_esm/policies/types.js +1 -0
  22. package/_esm/policies/types.js.map +1 -1
  23. package/_esm/serializeMultiChainPermissionAccounts.js +33 -14
  24. package/_esm/serializeMultiChainPermissionAccounts.js.map +1 -1
  25. package/_esm/serializePermissionAccount.js +6 -4
  26. package/_esm/serializePermissionAccount.js.map +1 -1
  27. package/_esm/toInitConfig.js +3 -3
  28. package/_esm/toInitConfig.js.map +1 -1
  29. package/_types/constants.d.ts +5 -0
  30. package/_types/constants.d.ts.map +1 -1
  31. package/_types/policies/callPolicyUtils.d.ts.map +1 -1
  32. package/_types/policies/toCallPolicy.d.ts +7 -6
  33. package/_types/policies/toCallPolicy.d.ts.map +1 -1
  34. package/_types/policies/types.d.ts +21 -2
  35. package/_types/policies/types.d.ts.map +1 -1
  36. package/_types/serializeMultiChainPermissionAccounts.d.ts +3 -0
  37. package/_types/serializeMultiChainPermissionAccounts.d.ts.map +1 -1
  38. package/_types/serializePermissionAccount.d.ts +1 -1
  39. package/_types/serializePermissionAccount.d.ts.map +1 -1
  40. package/_types/toInitConfig.d.ts +1 -1
  41. package/_types/toInitConfig.d.ts.map +1 -1
  42. package/_types/types.d.ts +2 -2
  43. package/_types/types.d.ts.map +1 -1
  44. package/constants.ts +7 -0
  45. package/package.json +1 -1
  46. package/policies/callPolicyUtils.ts +39 -0
  47. package/policies/toCallPolicy.ts +22 -17
  48. package/policies/types.ts +51 -2
  49. package/serializeMultiChainPermissionAccounts.ts +42 -21
  50. package/serializePermissionAccount.ts +9 -4
  51. package/toInitConfig.ts +5 -3
  52. package/types.ts +2 -2
@@ -4,29 +4,45 @@ import { isPermissionValidatorPlugin, serializePermissionAccountParams } from ".
4
4
  export const serializeMultiChainPermissionAccounts = async (params) => {
5
5
  if (params.length === 0)
6
6
  return [];
7
+ let isPreInstalled = false;
7
8
  const permissionParamsPerAccounts = params.map((param) => {
8
- if (!isPermissionValidatorPlugin(param.account.kernelPluginManager)) {
9
+ if (isPermissionValidatorPlugin(param.account.kernelPluginManager) &&
10
+ !param.isExternalPermissionPlugin) {
11
+ return param.account.kernelPluginManager.getPluginSerializationParams();
12
+ }
13
+ else if (param.permissionPlugin) {
14
+ isPreInstalled = !param.isExternalPermissionPlugin;
15
+ return param.permissionPlugin.getPluginSerializationParams();
16
+ }
17
+ else {
9
18
  throw new Error("Account plugin is not a permission validator");
10
19
  }
11
- return param.account.kernelPluginManager.getPluginSerializationParams();
12
20
  });
13
21
  const actions = params.map((param) => param.account.kernelPluginManager.getAction());
14
22
  const validityDataPerAccounts = params.map((param) => param.account.kernelPluginManager.getValidityData());
15
- const pluginEnableTypedDatas = await Promise.all(params.map(async (param) => {
16
- return param.account.kernelPluginManager.getPluginsEnableTypedData(param.account.address);
17
- }));
18
- // build merkle tree for enable signatures
19
- const leaves = pluginEnableTypedDatas.map((typedData) => {
20
- return hashTypedData(typedData);
21
- });
22
- const merkleTree = new MerkleTree(leaves, keccak256, {
23
- sortPairs: true
24
- });
23
+ let leaves = [];
24
+ let merkleTree = new MerkleTree(leaves);
25
+ if (!isPreInstalled) {
26
+ const pluginEnableTypedDatas = await Promise.all(params.map(async (param) => {
27
+ return param.account.kernelPluginManager.getPluginsEnableTypedData(param.account.address, param.isExternalPermissionPlugin
28
+ ? param.permissionPlugin
29
+ : undefined // override permission plugin if externalPlugin
30
+ );
31
+ }));
32
+ // build merkle tree for enable signatures
33
+ leaves = pluginEnableTypedDatas.map((typedData) => {
34
+ return hashTypedData(typedData);
35
+ });
36
+ merkleTree = new MerkleTree(leaves, keccak256, {
37
+ sortPairs: true
38
+ });
39
+ }
25
40
  const merkleRoot = merkleTree.getHexRoot();
26
41
  const toEthSignedMessageHash = hashMessage({ raw: merkleRoot });
27
42
  let signature = "0x";
28
43
  if (params[0].account.kernelPluginManager.sudoValidator?.source ===
29
- "MultiChainECDSAValidator") {
44
+ "MultiChainECDSAValidator" &&
45
+ !isPreInstalled) {
30
46
  signature =
31
47
  await params[0].account.kernelPluginManager.sudoValidator?.signMessage({
32
48
  message: {
@@ -35,7 +51,8 @@ export const serializeMultiChainPermissionAccounts = async (params) => {
35
51
  });
36
52
  }
37
53
  if (params[0].account.kernelPluginManager.sudoValidator?.source ===
38
- "MultiChainWebAuthnValidator") {
54
+ "MultiChainWebAuthnValidator" &&
55
+ !isPreInstalled) {
39
56
  const encodedSignature = await params[0].account.kernelPluginManager.sudoValidator?.signMessage({
40
57
  message: {
41
58
  raw: toEthSignedMessageHash
@@ -45,6 +62,8 @@ export const serializeMultiChainPermissionAccounts = async (params) => {
45
62
  }
46
63
  // get enable signatures for multi-chain validator
47
64
  const enableSignatures = await Promise.all(params.map(async (param, index) => {
65
+ if (isPreInstalled)
66
+ return undefined;
48
67
  if (!param.account.kernelPluginManager.sudoValidator) {
49
68
  throw new Error("No sudo validator found, check if sudo validator is multi-chain validator");
50
69
  }
@@ -1 +1 @@
1
- {"version":3,"file":"serializeMultiChainPermissionAccounts.js","sourceRoot":"","sources":["../serializeMultiChainPermissionAccounts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serializeMultiChainPermissionAccounts.js","sourceRoot":"","sources":["../serializeMultiChainPermissionAccounts.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,19 @@
1
1
  import { isPermissionValidatorPlugin, serializePermissionAccountParams } from "./utils.js";
2
- export const serializePermissionAccount = async (account, privateKey, enableSignature, eip7702Auth, permissionPlugin) => {
2
+ export const serializePermissionAccount = async (account, privateKey, enableSignature, eip7702Auth, permissionPlugin, isExternalPermissionPlugin) => {
3
3
  let permissionParams;
4
4
  let isPreInstalled = false;
5
5
  const action = account.kernelPluginManager.getAction();
6
6
  const validityData = account.kernelPluginManager.getValidityData();
7
7
  // Check if permission plugin is in kernelPluginManager
8
- if (isPermissionValidatorPlugin(account.kernelPluginManager)) {
8
+ if (isPermissionValidatorPlugin(account.kernelPluginManager) &&
9
+ !isExternalPermissionPlugin) {
9
10
  permissionParams =
10
11
  account.kernelPluginManager.getPluginSerializationParams();
11
12
  }
12
13
  else if (permissionPlugin) {
13
14
  // Permission plugin provided externally (initConfig case)
14
15
  permissionParams = permissionPlugin.getPluginSerializationParams();
15
- isPreInstalled = true;
16
+ isPreInstalled = !isExternalPermissionPlugin;
16
17
  }
17
18
  else {
18
19
  throw new Error("No permission validator found in account or provided");
@@ -20,7 +21,8 @@ export const serializePermissionAccount = async (account, privateKey, enableSign
20
21
  const _enableSignature = isPreInstalled
21
22
  ? undefined
22
23
  : (enableSignature ??
23
- (await account.kernelPluginManager.getPluginEnableSignature(account.address)));
24
+ (await account.kernelPluginManager.getPluginEnableSignature(account.address, isExternalPermissionPlugin ? permissionPlugin : undefined // override permission plugin if externalPlugin
25
+ )));
24
26
  const _eip7702Auth = account.authorization
25
27
  ? (eip7702Auth ?? (await account?.eip7702Authorization?.()))
26
28
  : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"serializePermissionAccount.js","sourceRoot":"","sources":["../serializePermissionAccount.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,2BAA2B,EAC3B,gCAAgC,EACnC,MAAM,YAAY,CAAA;AAEnB,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,EAC3C,OAAuD,EACvD,UAAgB,EAChB,eAAqB,EACrB,WAAyC,EACzC,gBAAmC,EACpB,EAAE;IACjB,IAAI,gBAAgC,CAAA;IACpC,IAAI,cAAc,GAAG,KAAK,CAAA;IAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE,CAAA;IACtD,MAAM,YAAY,GAAG,OAAO,CAAC,mBAAmB,CAAC,eAAe,EAAE,CAAA;IAElE,uDAAuD;IACvD,IAAI,2BAA2B,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC3D,gBAAgB;YACZ,OAAO,CAAC,mBAAmB,CAAC,4BAA4B,EAAE,CAAA;IAClE,CAAC;SAAM,IAAI,gBAAgB,EAAE,CAAC;QAC1B,0DAA0D;QAC1D,gBAAgB,GAAG,gBAAgB,CAAC,4BAA4B,EAAE,CAAA;QAClE,cAAc,GAAG,IAAI,CAAA;IACzB,CAAC;SAAM,CAAC;QACJ,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;IAC3E,CAAC;IAED,MAAM,gBAAgB,GAAG,cAAc;QACnC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,CAAC,eAAe;YAChB,CAAC,MAAM,OAAO,CAAC,mBAAmB,CAAC,wBAAwB,CACvD,OAAO,CAAC,OAAO,CAClB,CAAC,CAAC,CAAA;IACT,MAAM,YAAY,GAAG,OAAO,CAAC,aAAa;QACtC,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,MAAM,OAAO,EAAE,oBAAoB,EAAE,EAAE,CAAC,CAAC;QAC5D,CAAC,CAAC,SAAS,CAAA;IACf,MAAM,aAAa,GAAG;QAClB,QAAQ,EAAE,MAAM,OAAO,CAAC,gBAAgB,EAAE;QAC1C,cAAc,EAAE,OAAO,CAAC,OAAO;KAClC,CAAA;IAED,MAAM,oBAAoB,GAAG;QACzB,gBAAgB;QAChB,MAAM;QACN,YAAY;QACZ,aAAa;QACb,eAAe,EAAE,gBAAgB;QACjC,UAAU;QACV,WAAW,EAAE,YAAY;QACzB,cAAc;KACjB,CAAA;IAED,OAAO,gCAAgC,CAAC,oBAAoB,CAAC,CAAA;AACjE,CAAC,CAAA"}
1
+ {"version":3,"file":"serializePermissionAccount.js","sourceRoot":"","sources":["../serializePermissionAccount.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,2BAA2B,EAC3B,gCAAgC,EACnC,MAAM,YAAY,CAAA;AAEnB,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,EAC3C,OAAuD,EACvD,UAAgB,EAChB,eAAqB,EACrB,WAAyC,EACzC,gBAAmC,EACnC,0BAAoC,EACrB,EAAE;IACjB,IAAI,gBAAgC,CAAA;IACpC,IAAI,cAAc,GAAG,KAAK,CAAA;IAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE,CAAA;IACtD,MAAM,YAAY,GAAG,OAAO,CAAC,mBAAmB,CAAC,eAAe,EAAE,CAAA;IAElE,uDAAuD;IACvD,IACI,2BAA2B,CAAC,OAAO,CAAC,mBAAmB,CAAC;QACxD,CAAC,0BAA0B,EAC7B,CAAC;QACC,gBAAgB;YACZ,OAAO,CAAC,mBAAmB,CAAC,4BAA4B,EAAE,CAAA;IAClE,CAAC;SAAM,IAAI,gBAAgB,EAAE,CAAC;QAC1B,0DAA0D;QAC1D,gBAAgB,GAAG,gBAAgB,CAAC,4BAA4B,EAAE,CAAA;QAClE,cAAc,GAAG,CAAC,0BAA0B,CAAA;IAChD,CAAC;SAAM,CAAC;QACJ,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;IAC3E,CAAC;IAED,MAAM,gBAAgB,GAAG,cAAc;QACnC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,CAAC,eAAe;YAChB,CAAC,MAAM,OAAO,CAAC,mBAAmB,CAAC,wBAAwB,CACvD,OAAO,CAAC,OAAO,EACf,0BAA0B,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,+CAA+C;aAC5G,CAAC,CAAC,CAAA;IACT,MAAM,YAAY,GAAG,OAAO,CAAC,aAAa;QACtC,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,MAAM,OAAO,EAAE,oBAAoB,EAAE,EAAE,CAAC,CAAC;QAC5D,CAAC,CAAC,SAAS,CAAA;IACf,MAAM,aAAa,GAAG;QAClB,QAAQ,EAAE,MAAM,OAAO,CAAC,gBAAgB,EAAE;QAC1C,cAAc,EAAE,OAAO,CAAC,OAAO;KAClC,CAAA;IAED,MAAM,oBAAoB,GAAG;QACzB,gBAAgB;QAChB,MAAM;QACN,YAAY;QACZ,aAAa;QACb,eAAe,EAAE,gBAAgB;QACjC,UAAU;QACV,WAAW,EAAE,YAAY;QACzB,cAAc;KACjB,CAAA;IAED,OAAO,gCAAgC,CAAC,oBAAoB,CAAC,CAAA;AACjE,CAAC,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import { KernelV3_3AccountAbi, encodeCallDataEpV07 } from "@zerodev/sdk";
2
2
  import { KernelVersionToAddressesMap, VALIDATOR_TYPE } from "@zerodev/sdk/constants";
3
3
  import { concat, encodeFunctionData, getAbiItem, pad, toFunctionSelector, zeroAddress } from "viem";
4
- export async function toInitConfig(permissionPlugin) {
4
+ export async function toInitConfig(permissionPlugin, hook = zeroAddress, hookData = "0x") {
5
5
  const permissionInstallFunctionData = encodeFunctionData({
6
6
  abi: KernelV3_3AccountAbi,
7
7
  functionName: "installValidations",
@@ -12,9 +12,9 @@ export async function toInitConfig(permissionPlugin) {
12
12
  permissionPlugin.getIdentifier()
13
13
  ]), { size: 21, dir: "right" })
14
14
  ],
15
- [{ nonce: 1, hook: zeroAddress }],
15
+ [{ nonce: 1, hook }],
16
16
  [await permissionPlugin.getEnableData()],
17
- ["0x"]
17
+ [hookData]
18
18
  ]
19
19
  });
20
20
  const grantAccessFunctionData = encodeFunctionData({
@@ -1 +1 @@
1
- {"version":3,"file":"toInitConfig.js","sourceRoot":"","sources":["../toInitConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AACxE,OAAO,EACH,2BAA2B,EAC3B,cAAc,EACjB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAEH,MAAM,EACN,kBAAkB,EAClB,UAAU,EACV,GAAG,EACH,kBAAkB,EAClB,WAAW,EACd,MAAM,MAAM,CAAA;AAGb,MAAM,CAAC,KAAK,UAAU,YAAY,CAC9B,gBAAkC;IAElC,MAAM,6BAA6B,GAAG,kBAAkB,CAAC;QACrD,GAAG,EAAE,oBAAoB;QACzB,YAAY,EAAE,oBAAoB;QAClC,IAAI,EAAE;YACF;gBACI,GAAG,CACC,MAAM,CAAC;oBACH,cAAc,CAAC,UAAU;oBACzB,gBAAgB,CAAC,aAAa,EAAE;iBACnC,CAAC,EACF,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAC7B;aACJ;YACD,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;YACjC,CAAC,MAAM,gBAAgB,CAAC,aAAa,EAAE,CAAC;YACxC,CAAC,IAAI,CAAC;SACT;KACJ,CAAC,CAAA;IACF,MAAM,uBAAuB,GAAG,kBAAkB,CAAC;QAC/C,GAAG,EAAE,oBAAoB;QACzB,YAAY,EAAE,aAAa;QAC3B,IAAI,EAAE;YACF,GAAG,CACC,MAAM,CAAC;gBACH,cAAc,CAAC,UAAU;gBACzB,gBAAgB,CAAC,aAAa,EAAE;aACnC,CAAC,EACF,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAC7B;YACD,kBAAkB,CACd,UAAU,CAAC,EAAE,GAAG,EAAE,oBAAoB,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAC7D;YACD,IAAI;SACP;KACJ,CAAC,CAAA;IACF,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAC1C;QACI;YACI,EAAE,EAAE,2BAA2B,CAAC,OAAO,CAAC;iBACnC,4BAA4B;YACjC,IAAI,EAAE,uBAAuB;SAChC;KACJ,EACD,cAAc,CACjB,CAAA;IACD,OAAO,CAAC,6BAA6B,EAAE,YAAY,CAAC,CAAA;AACxD,CAAC"}
1
+ {"version":3,"file":"toInitConfig.js","sourceRoot":"","sources":["../toInitConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AACxE,OAAO,EACH,2BAA2B,EAC3B,cAAc,EACjB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAEH,MAAM,EACN,kBAAkB,EAClB,UAAU,EACV,GAAG,EACH,kBAAkB,EAClB,WAAW,EACd,MAAM,MAAM,CAAA;AAGb,MAAM,CAAC,KAAK,UAAU,YAAY,CAC9B,gBAAkC,EAClC,OAAY,WAAW,EACvB,WAAgB,IAAI;IAEpB,MAAM,6BAA6B,GAAG,kBAAkB,CAAC;QACrD,GAAG,EAAE,oBAAoB;QACzB,YAAY,EAAE,oBAAoB;QAClC,IAAI,EAAE;YACF;gBACI,GAAG,CACC,MAAM,CAAC;oBACH,cAAc,CAAC,UAAU;oBACzB,gBAAgB,CAAC,aAAa,EAAE;iBACnC,CAAC,EACF,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAC7B;aACJ;YACD,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;YACpB,CAAC,MAAM,gBAAgB,CAAC,aAAa,EAAE,CAAC;YACxC,CAAC,QAAQ,CAAC;SACb;KACJ,CAAC,CAAA;IACF,MAAM,uBAAuB,GAAG,kBAAkB,CAAC;QAC/C,GAAG,EAAE,oBAAoB;QACzB,YAAY,EAAE,aAAa;QAC3B,IAAI,EAAE;YACF,GAAG,CACC,MAAM,CAAC;gBACH,cAAc,CAAC,UAAU;gBACzB,gBAAgB,CAAC,aAAa,EAAE;aACnC,CAAC,EACF,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAC7B;YACD,kBAAkB,CACd,UAAU,CAAC,EAAE,GAAG,EAAE,oBAAoB,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAC7D;YACD,IAAI;SACP;KACJ,CAAC,CAAA;IACF,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAC1C;QACI;YACI,EAAE,EAAE,2BAA2B,CAAC,OAAO,CAAC;iBACnC,4BAA4B;YACjC,IAAI,EAAE,uBAAuB;SAChC;KACJ,EACD,cAAc,CACjB,CAAA;IACD,OAAO,CAAC,6BAA6B,EAAE,YAAY,CAAC,CAAA;AACxD,CAAC"}
@@ -33,6 +33,11 @@ export declare const CALL_POLICY_CONTRACT_V0_0_3 = "0xB3CB5f502250360335614df142
33
33
  * - Fixed erc4337 storage violation with custom storage slot (Works with Alchemy now)
34
34
  */
35
35
  export declare const CALL_POLICY_CONTRACT_V0_0_4 = "0x9a52283276A0ec8740DF50bF01B28A80D880eaf2";
36
+ /**
37
+ * @dev CALL_POLICY_CONTRACT_V0_0_5 updates
38
+ * - Added SLICE_EQUAL condition
39
+ */
40
+ export declare const CALL_POLICY_CONTRACT_V0_0_5 = "0x85770b902D1e503D5f5141d9eaC16d0d08eEaDd2";
36
41
  export declare const GAS_POLICY_CONTRACT = "0xaeFC5AbC67FfD258abD0A3E54f65E70326F84b23";
37
42
  export declare const RATE_LIMIT_POLICY_CONTRACT = "0xf63d4139B25c836334edD76641356c6b74C86873";
38
43
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,+CACc,CAAA;AAChD,eAAO,MAAM,+BAA+B,+CACI,CAAA;AAChD;;;GAGG;AACH,eAAO,MAAM,+BAA+B,+CACI,CAAA;AAEhD;;;GAGG;AACH,eAAO,MAAM,+BAA+B,+CACI,CAAA;AAEhD;;;GAGG;AACH,eAAO,MAAM,+BAA+B,+CACI,CAAA;AAEhD,eAAO,MAAM,2BAA2B,+CACQ,CAAA;AAChD;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,+CACQ,CAAA;AAEhD;;;GAGG;AACH,eAAO,MAAM,2BAA2B,+CACQ,CAAA;AAEhD;;;GAGG;AACH,eAAO,MAAM,2BAA2B,+CACQ,CAAA;AAEhD,eAAO,MAAM,mBAAmB,+CAA+C,CAAA;AAC/E,eAAO,MAAM,0BAA0B,+CACS,CAAA;AAEhD;;;GAGG;AACH,eAAO,MAAM,qCAAqC,+CACF,CAAA;AAEhD,eAAO,MAAM,yBAAyB,+CACU,CAAA;AAChD,eAAO,MAAM,oBAAoB,+CAA+C,CAAA;AAChF,eAAO,MAAM,yBAAyB,+CACU,CAAA;AAEhD,oBAAY,WAAW;IACnB,kBAAkB,WAAW;IAC7B,uBAAuB,WAAW;IAClC,oBAAoB,WAAW;CAClC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,+CACc,CAAA;AAChD,eAAO,MAAM,+BAA+B,+CACI,CAAA;AAChD;;;GAGG;AACH,eAAO,MAAM,+BAA+B,+CACI,CAAA;AAEhD;;;GAGG;AACH,eAAO,MAAM,+BAA+B,+CACI,CAAA;AAEhD;;;GAGG;AACH,eAAO,MAAM,+BAA+B,+CACI,CAAA;AAEhD,eAAO,MAAM,2BAA2B,+CACQ,CAAA;AAChD;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,+CACQ,CAAA;AAEhD;;;GAGG;AACH,eAAO,MAAM,2BAA2B,+CACQ,CAAA;AAEhD;;;GAGG;AACH,eAAO,MAAM,2BAA2B,+CACQ,CAAA;AAEhD;;;GAGG;AACH,eAAO,MAAM,2BAA2B,+CACQ,CAAA;AAEhD,eAAO,MAAM,mBAAmB,+CAA+C,CAAA;AAC/E,eAAO,MAAM,0BAA0B,+CACS,CAAA;AAEhD;;;GAGG;AACH,eAAO,MAAM,qCAAqC,+CACF,CAAA;AAEhD,eAAO,MAAM,yBAAyB,+CACU,CAAA;AAChD,eAAO,MAAM,oBAAoB,+CAA+C,CAAA;AAChF,eAAO,MAAM,yBAAyB,+CACU,CAAA;AAEhD,oBAAY,WAAW;IACnB,kBAAkB,WAAW;IAC7B,uBAAuB,WAAW;IAClC,oBAAoB,WAAW;CAClC"}
@@ -1 +1 @@
1
- {"version":3,"file":"callPolicyUtils.d.ts","sourceRoot":"","sources":["../../policies/callPolicyUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,GAAG,EAER,KAAK,OAAO,EACZ,KAAK,GAAG,EAMX,MAAM,MAAM,CAAA;AAEb,OAAO,EAEH,KAAK,6CAA6C,EAGlD,KAAK,cAAc,EACtB,MAAM,YAAY,CAAA;AAEnB,wBAAgB,oBAAoB,CAChC,IAAI,SAAS,GAAG,GAAG,SAAS,OAAO,EAAE,EACrC,aAAa,SAAS,MAAM,GAAG,SAAS,GAAG,MAAM,EACnD,EACE,GAAG,EACH,IAAI,EACJ,YAAY,EACZ,aAAa,EACb,QAAQ,EACX,EAAE,6CAA6C,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,IAAI,CACxE,cAAc,EACd,UAAU,GAAG,OAAO,CACvB,CA8HA;AAED,eAAO,MAAM,oBAAoB,eACjB,cAAc,GAAG,cAAc,EAAE,iBAC9B,OAAO,KACvB,GAkDF,CAAA"}
1
+ {"version":3,"file":"callPolicyUtils.d.ts","sourceRoot":"","sources":["../../policies/callPolicyUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,GAAG,EAER,KAAK,OAAO,EACZ,KAAK,GAAG,EAQX,MAAM,MAAM,CAAA;AAEb,OAAO,EAEH,KAAK,6CAA6C,EAGlD,KAAK,cAAc,EACtB,MAAM,YAAY,CAAA;AAEnB,wBAAgB,oBAAoB,CAChC,IAAI,SAAS,GAAG,GAAG,SAAS,OAAO,EAAE,EACrC,aAAa,SAAS,MAAM,GAAG,SAAS,GAAG,MAAM,EACnD,EACE,GAAG,EACH,IAAI,EACJ,YAAY,EACZ,aAAa,EACb,QAAQ,EACX,EAAE,6CAA6C,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,IAAI,CACxE,cAAc,EACd,UAAU,GAAG,OAAO,CACvB,CAmKA;AAED,eAAO,MAAM,oBAAoB,eACjB,cAAc,GAAG,cAAc,EAAE,iBAC9B,OAAO,KACvB,GAkDF,CAAA"}
@@ -1,16 +1,17 @@
1
- import type { Abi, Address } from "viem";
1
+ import type { Abi, Address, Narrow } from "viem";
2
2
  import type { Policy, PolicyParams } from "../types.js";
3
- import { type Permission } from "./types.js";
3
+ import { type InferPermissions, type Permission } from "./types.js";
4
4
  export declare enum CallPolicyVersion {
5
5
  V0_0_1 = "0.0.1",
6
6
  V0_0_2 = "0.0.2",
7
7
  V0_0_3 = "0.0.3",
8
- V0_0_4 = "0.0.4"
8
+ V0_0_4 = "0.0.4",
9
+ V0_0_5 = "0.0.5"
9
10
  }
10
11
  export declare const getCallPolicyAddress: (policyVersion: CallPolicyVersion, policyAddress?: Address) => Address;
11
- export type CallPolicyParams<TAbi extends Abi | readonly unknown[], TFunctionName extends string | undefined = string> = PolicyParams & {
12
+ export type CallPolicyParams<permissions extends readonly Permission<Abi, string>[] = readonly Permission<Abi, string>[]> = PolicyParams & {
12
13
  policyVersion: CallPolicyVersion;
13
- permissions?: Permission<TAbi, TFunctionName>[];
14
+ permissions?: InferPermissions<Narrow<permissions>>;
14
15
  };
15
- export declare function toCallPolicy<TAbi extends Abi | readonly unknown[], TFunctionName extends string | undefined = string>({ policyAddress, policyFlag, policyVersion, permissions }: CallPolicyParams<TAbi, TFunctionName>): Policy;
16
+ export declare function toCallPolicy<const permissions extends readonly Permission<Abi, string>[]>({ policyAddress, policyFlag, policyVersion, permissions: inputPermissions }: CallPolicyParams<permissions>): Policy;
16
17
  //# sourceMappingURL=toCallPolicy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toCallPolicy.d.ts","sourceRoot":"","sources":["../../policies/toCallPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAO,MAAM,MAAM,CAAA;AAS7C,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAKvD,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,YAAY,CAAA;AAEtD,oBAAY,iBAAiB;IACzB,MAAM,UAAU;IAChB,MAAM,UAAU;IAChB,MAAM,UAAU;IAChB,MAAM,UAAU;CACnB;AAED,eAAO,MAAM,oBAAoB,kBACd,iBAAiB,kBAChB,OAAO,KACxB,OAYF,CAAA;AAED,MAAM,MAAM,gBAAgB,CACxB,IAAI,SAAS,GAAG,GAAG,SAAS,OAAO,EAAE,EACrC,aAAa,SAAS,MAAM,GAAG,SAAS,GAAG,MAAM,IACjD,YAAY,GAAG;IACf,aAAa,EAAE,iBAAiB,CAAA;IAChC,WAAW,CAAC,EAAE,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,CAAA;CAClD,CAAA;AAED,wBAAgB,YAAY,CACxB,IAAI,SAAS,GAAG,GAAG,SAAS,OAAO,EAAE,EACrC,aAAa,SAAS,MAAM,GAAG,SAAS,GAAG,MAAM,EACnD,EACE,aAAa,EACb,UAA2C,EAC3C,aAAa,EACb,WAAgB,EACnB,EAAE,gBAAgB,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,MAAM,CA2DhD"}
1
+ {"version":3,"file":"toCallPolicy.d.ts","sourceRoot":"","sources":["../../policies/toCallPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAO,MAAM,EAAE,MAAM,MAAM,CAAA;AAUrD,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAKvD,OAAO,EAAY,KAAK,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAA;AAE7E,oBAAY,iBAAiB;IACzB,MAAM,UAAU;IAChB,MAAM,UAAU;IAChB,MAAM,UAAU;IAChB,MAAM,UAAU;IAChB,MAAM,UAAU;CACnB;AAED,eAAO,MAAM,oBAAoB,kBACd,iBAAiB,kBAChB,OAAO,KACxB,OAcF,CAAA;AAED,MAAM,MAAM,gBAAgB,CACxB,WAAW,SAAS,SAAS,UAAU,CACnC,GAAG,EACH,MAAM,CACT,EAAE,GAAG,SAAS,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,IACxC,YAAY,GAAG;IACf,aAAa,EAAE,iBAAiB,CAAA;IAChC,WAAW,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAA;CACtD,CAAA;AAED,wBAAgB,YAAY,CACxB,KAAK,CAAC,WAAW,SAAS,SAAS,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAC9D,EACE,aAAa,EACb,UAA2C,EAC3C,aAAa,EACb,WAAW,EAAE,gBAAgB,EAChC,EAAE,gBAAgB,CAAC,WAAW,CAAC,GAAG,MAAM,CA2DxC"}
@@ -1,5 +1,5 @@
1
1
  import type { ExtractAbiFunction, ExtractAbiFunctionNames } from "abitype";
2
- import type { Abi, AbiFunction, AbiParameter, AbiParameterKind, AbiParameterToPrimitiveType, AbiStateMutability, Address, Hex, Narrow } from "viem";
2
+ import type { Abi, AbiFunction, AbiParameter, AbiParameterKind, AbiParameterToPrimitiveType, AbiStateMutability, Address, ContractFunctionName, Hex, Narrow, Prettify } from "viem";
3
3
  export declare enum CallType {
4
4
  CALL = "0x00",
5
5
  BATCH_CALL = "0x01",
@@ -12,7 +12,8 @@ export declare enum ParamCondition {
12
12
  GREATER_THAN_OR_EQUAL = 3,
13
13
  LESS_THAN_OR_EQUAL = 4,
14
14
  NOT_EQUAL = 5,
15
- ONE_OF = 6
15
+ ONE_OF = 6,
16
+ SLICE_EQUAL = 7
16
17
  }
17
18
  export interface ParamRule {
18
19
  condition: ParamCondition;
@@ -49,6 +50,11 @@ export type Permission<TAbi extends Abi | readonly unknown[], TFunctionName exte
49
50
  type ConditionValue<TAbiParameter extends AbiParameter, TAbiParameterKind extends AbiParameterKind> = {
50
51
  condition: ParamCondition.ONE_OF;
51
52
  value: AbiParameterToPrimitiveType<TAbiParameter, TAbiParameterKind>[];
53
+ } | {
54
+ condition: ParamCondition.SLICE_EQUAL;
55
+ value: AbiParameterToPrimitiveType<TAbiParameter, TAbiParameterKind>;
56
+ start: number;
57
+ length: number;
52
58
  } | {
53
59
  condition: Exclude<ParamCondition, ParamCondition.ONE_OF>;
54
60
  value: AbiParameterToPrimitiveType<TAbiParameter, TAbiParameterKind>;
@@ -67,5 +73,18 @@ export type GeneratePermissionFromArgsParameters<TAbi extends Abi | readonly unk
67
73
  } & GetFunctionArgs<TAbi, TFunctionName> : _FunctionName extends string ? {
68
74
  abi: [Narrow<TAbi[number]>];
69
75
  } & GetFunctionArgs<TAbi, _FunctionName> : never);
76
+ export type GetPermissionParameters<permission> = permission extends {
77
+ abi: infer abi extends Abi;
78
+ } ? permission extends {
79
+ functionName: infer functionName extends ContractFunctionName<abi>;
80
+ } ? PermissionWithABI<abi, functionName> : Abi extends abi ? PermissionWithABI<abi, string> : PermissionWithABI<abi, string> : permission extends {
81
+ target: Address;
82
+ } ? PermissionManual : never;
83
+ export type InferPermissions<permissions extends readonly unknown[], result extends readonly unknown[] = []> = permissions extends readonly [] ? readonly [] : permissions extends readonly [infer permission] ? readonly [...result, Prettify<GetPermissionParameters<permission>>] : permissions extends readonly [infer permission, ...infer rest] ? InferPermissions<[
84
+ ...rest
85
+ ], [
86
+ ...result,
87
+ Prettify<GetPermissionParameters<permission>>
88
+ ]> : readonly unknown[] extends permissions ? permissions : permissions extends readonly (infer permission)[] ? readonly Prettify<GetPermissionParameters<permission>>[] : readonly Permission<Abi, string>[];
70
89
  export {};
71
90
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../policies/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../policies/types.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,12 @@
1
1
  import type { KernelSmartAccountImplementation } from "@zerodev/sdk";
2
2
  import { type Hex } from "viem";
3
3
  import type { SmartAccount } from "viem/account-abstraction";
4
+ import type { PermissionPlugin } from "./types.js";
4
5
  export type MultiChainPermissionAccountsParams = {
5
6
  account: SmartAccount<KernelSmartAccountImplementation>;
6
7
  privateKey?: Hex;
8
+ permissionPlugin?: PermissionPlugin;
9
+ isExternalPermissionPlugin?: boolean;
7
10
  };
8
11
  export declare const serializeMultiChainPermissionAccounts: (params: MultiChainPermissionAccountsParams[]) => Promise<string[]>;
9
12
  export declare function decodeSignature(signature: Hex): `0x${string}`;
@@ -1 +1 @@
1
- {"version":3,"file":"serializeMultiChainPermissionAccounts.d.ts","sourceRoot":"","sources":["../serializeMultiChainPermissionAccounts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,cAAc,CAAA;AAEpE,OAAO,EACH,KAAK,GAAG,EAOX,MAAM,MAAM,CAAA;AACb,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAO5D,MAAM,MAAM,kCAAkC,GAAG;IAC7C,OAAO,EAAE,YAAY,CAAC,gCAAgC,CAAC,CAAA;IACvD,UAAU,CAAC,EAAE,GAAG,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,qCAAqC,WACtC,kCAAkC,EAAE,KAC7C,QAAQ,MAAM,EAAE,CAqIlB,CAAA;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,GAAG,iBAe7C"}
1
+ {"version":3,"file":"serializeMultiChainPermissionAccounts.d.ts","sourceRoot":"","sources":["../serializeMultiChainPermissionAccounts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,cAAc,CAAA;AAEpE,OAAO,EACH,KAAK,GAAG,EAOX,MAAM,MAAM,CAAA;AACb,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAMlD,MAAM,MAAM,kCAAkC,GAAG;IAC7C,OAAO,EAAE,YAAY,CAAC,gCAAgC,CAAC,CAAA;IACvD,UAAU,CAAC,EAAE,GAAG,CAAA;IAChB,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,0BAA0B,CAAC,EAAE,OAAO,CAAA;CACvC,CAAA;AAED,eAAO,MAAM,qCAAqC,WACtC,kCAAkC,EAAE,KAC7C,QAAQ,MAAM,EAAE,CAwJlB,CAAA;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,GAAG,iBAe7C"}
@@ -3,5 +3,5 @@ import type { Hex } from "viem";
3
3
  import type { SmartAccount } from "viem/account-abstraction";
4
4
  import type { SignAuthorizationReturnType } from "viem/accounts";
5
5
  import type { PermissionPlugin } from "./types.js";
6
- export declare const serializePermissionAccount: (account: SmartAccount<KernelSmartAccountImplementation>, privateKey?: Hex, enableSignature?: Hex, eip7702Auth?: SignAuthorizationReturnType, permissionPlugin?: PermissionPlugin) => Promise<string>;
6
+ export declare const serializePermissionAccount: (account: SmartAccount<KernelSmartAccountImplementation>, privateKey?: Hex, enableSignature?: Hex, eip7702Auth?: SignAuthorizationReturnType, permissionPlugin?: PermissionPlugin, isExternalPermissionPlugin?: boolean) => Promise<string>;
7
7
  //# sourceMappingURL=serializePermissionAccount.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"serializePermissionAccount.d.ts","sourceRoot":"","sources":["../serializePermissionAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,cAAc,CAAA;AACpE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAC/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAA;AAChE,OAAO,KAAK,EAAkB,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAMlE,eAAO,MAAM,0BAA0B,YAC1B,aAAa,gCAAgC,CAAC,eAC1C,GAAG,oBACE,GAAG,gBACP,2BAA2B,qBACtB,gBAAgB,KACpC,QAAQ,MAAM,CA4ChB,CAAA"}
1
+ {"version":3,"file":"serializePermissionAccount.d.ts","sourceRoot":"","sources":["../serializePermissionAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,cAAc,CAAA;AACpE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAC/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAA;AAChE,OAAO,KAAK,EAAkB,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAMlE,eAAO,MAAM,0BAA0B,YAC1B,aAAa,gCAAgC,CAAC,eAC1C,GAAG,oBACE,GAAG,gBACP,2BAA2B,qBACtB,gBAAgB,+BACN,OAAO,KACrC,QAAQ,MAAM,CAgDhB,CAAA"}
@@ -1,4 +1,4 @@
1
1
  import { type Hex } from "viem";
2
2
  import type { PermissionPlugin } from "./types.js";
3
- export declare function toInitConfig(permissionPlugin: PermissionPlugin): Promise<Hex[]>;
3
+ export declare function toInitConfig(permissionPlugin: PermissionPlugin, hook?: Hex, hookData?: Hex): Promise<Hex[]>;
4
4
  //# sourceMappingURL=toInitConfig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toInitConfig.d.ts","sourceRoot":"","sources":["../toInitConfig.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,KAAK,GAAG,EAOX,MAAM,MAAM,CAAA;AACb,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD,wBAAsB,YAAY,CAC9B,gBAAgB,EAAE,gBAAgB,GACnC,OAAO,CAAC,GAAG,EAAE,CAAC,CA+ChB"}
1
+ {"version":3,"file":"toInitConfig.d.ts","sourceRoot":"","sources":["../toInitConfig.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,KAAK,GAAG,EAOX,MAAM,MAAM,CAAA;AACb,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD,wBAAsB,YAAY,CAC9B,gBAAgB,EAAE,gBAAgB,EAClC,IAAI,GAAE,GAAiB,EACvB,QAAQ,GAAE,GAAU,GACrB,OAAO,CAAC,GAAG,EAAE,CAAC,CA+ChB"}
package/_types/types.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import type { KernelValidator } from "@zerodev/sdk";
2
2
  import type { Action, EntryPointType, GetKernelVersion, PluginValidityData } from "@zerodev/sdk/types";
3
- import type { Abi, Address, Hex, LocalAccount } from "viem";
3
+ import type { Address, Hex, LocalAccount } from "viem";
4
4
  import type { EntryPointVersion } from "viem/account-abstraction";
5
5
  import type { SignAuthorizationReturnType } from "viem/accounts";
6
6
  import type { PolicyFlags } from "./constants.js";
@@ -24,7 +24,7 @@ export type ModularSigner = {
24
24
  export type Policy = {
25
25
  getPolicyData: () => Hex;
26
26
  getPolicyInfoInBytes: () => Hex;
27
- policyParams: (CallPolicyParams<Abi | readonly unknown[], string> & {
27
+ policyParams: (CallPolicyParams & {
28
28
  type: "call";
29
29
  }) | (GasPolicyParams & {
30
30
  type: "gas";
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,KAAK,EACR,MAAM,EACN,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EACrB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EACR,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,2BAA2B,EAC3B,gBAAgB,EAChB,qBAAqB,EACxB,MAAM,qBAAqB,CAAA;AAE5B,MAAM,MAAM,gBAAgB,GAAG,eAAe,CAAC,qBAAqB,CAAC,GAAG;IACpE,4BAA4B,EAAE,MAAM,cAAc,CAAA;CACrD,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAC9B,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAClC,CAAA;AACD,MAAM,MAAM,YAAY,GAAG;IACvB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,UAAU,CAAC,EAAE,WAAW,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IACxB,OAAO,EAAE,YAAY,CAAA;IACrB,qBAAqB,EAAE,OAAO,CAAA;IAC9B,aAAa,EAAE,MAAM,GAAG,CAAA;IACxB,iBAAiB,EAAE,MAAM,GAAG,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,MAAM,GAAG;IACjB,aAAa,EAAE,MAAM,GAAG,CAAA;IACxB,oBAAoB,EAAE,MAAM,GAAG,CAAA;IAE/B,YAAY,EACN,CAAC,gBAAgB,GAAG;QAChB,IAAI,EAAE,MAAM,CAAA;KACf,CAAC,GACF,CAAC,eAAe,GAAG;QAAE,IAAI,EAAE,KAAK,CAAA;KAAE,CAAC,GACnC,CAAC,qBAAqB,GAAG;QAAE,IAAI,EAAE,YAAY,CAAA;KAAE,CAAC,GAChD,CAAC,2BAA2B,GAAG;QAAE,IAAI,EAAE,kBAAkB,CAAA;KAAE,CAAC,GAC5D,CAAC,gBAAgB,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,GACrC,CAAC,qBAAqB,GAAG;QAAE,IAAI,EAAE,WAAW,CAAA;KAAE,CAAC,CAAA;CACxD,CAAA;AAED,MAAM,MAAM,sBAAsB,CAC9B,iBAAiB,SAAS,iBAAiB,IAC3C;IACA,MAAM,EAAE,aAAa,CAAA;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,UAAU,EAAE,cAAc,CAAC,iBAAiB,CAAC,CAAA;IAC7C,aAAa,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,CAAA;IAClD,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,YAAY,CAAC,EAAE,GAAG,CAAA;CACrB,CAAA;AAED,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,YAAY,CAAC,EAAE,GAAG,CAAA;CACrB;AAED,MAAM,MAAM,6BAA6B,GAAG;IACxC,QAAQ,EAAE,GAAG,CAAA;IACb,cAAc,EAAE,OAAO,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IAClC,gBAAgB,EAAE,cAAc,CAAA;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,kBAAkB,CAAA;IAChC,aAAa,EAAE,6BAA6B,CAAA;IAC5C,eAAe,CAAC,EAAE,GAAG,CAAA;IACrB,UAAU,CAAC,EAAE,GAAG,CAAA;IAChB,WAAW,CAAC,EAAE,2BAA2B,CAAA;IACzC,cAAc,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA"}
package/constants.ts CHANGED
@@ -48,6 +48,13 @@ export const CALL_POLICY_CONTRACT_V0_0_3 =
48
48
  export const CALL_POLICY_CONTRACT_V0_0_4 =
49
49
  "0x9a52283276A0ec8740DF50bF01B28A80D880eaf2"
50
50
 
51
+ /**
52
+ * @dev CALL_POLICY_CONTRACT_V0_0_5 updates
53
+ * - Added SLICE_EQUAL condition
54
+ */
55
+ export const CALL_POLICY_CONTRACT_V0_0_5 =
56
+ "0x85770b902D1e503D5f5141d9eaC16d0d08eEaDd2"
57
+
51
58
  export const GAS_POLICY_CONTRACT = "0xaeFC5AbC67FfD258abD0A3E54f65E70326F84b23"
52
59
  export const RATE_LIMIT_POLICY_CONTRACT =
53
60
  "0xf63d4139B25c836334edD76641356c6b74C86873"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zerodev/permissions",
3
- "version": "5.6.2",
3
+ "version": "5.6.4",
4
4
  "author": "ZeroDev",
5
5
  "main": "./_cjs/index.js",
6
6
  "module": "./_esm/index.js",
@@ -5,7 +5,9 @@ import {
5
5
  type Hex,
6
6
  encodeAbiParameters,
7
7
  isHex,
8
+ keccak256,
8
9
  pad,
10
+ size,
9
11
  toFunctionSelector,
10
12
  toHex
11
13
  } from "viem"
@@ -99,6 +101,7 @@ export function getPermissionFromABI<
99
101
  // Generate permission from the target function
100
102
  const functionSelector = toFunctionSelector(targetFunction)
101
103
  let paramRules: ParamRule[] = []
104
+
102
105
  if (args && Array.isArray(args)) {
103
106
  paramRules = (args as CombinedArgs<AbiFunction["inputs"]>)
104
107
  .map((arg, i) => {
@@ -132,6 +135,41 @@ export function getPermissionFromABI<
132
135
  { size: 32 }
133
136
  )
134
137
  )
138
+ } else if (arg.condition === ParamCondition.SLICE_EQUAL) {
139
+ if (!("start" in arg) || !("length" in arg)) {
140
+ throw new Error(
141
+ "start and length are required for SLICE_EQUAL condition"
142
+ )
143
+ }
144
+ const functionArgsType = targetFunction.inputs[i].type
145
+ const { start, length, value } = arg
146
+
147
+ let hexValue: Hex
148
+
149
+ // functionArgsType can be "string" or "bytes"
150
+ if (functionArgsType === "string") {
151
+ hexValue = toHex(value as Parameters<typeof toHex>[0])
152
+ } else if (functionArgsType === "bytes") {
153
+ hexValue = isHex(value, { strict: true })
154
+ ? value
155
+ : toHex(value as Parameters<typeof toHex>[0])
156
+ } else {
157
+ throw new Error(
158
+ `Unsupported function argument type: ${functionArgsType} could be "string" or "bytes"`
159
+ )
160
+ }
161
+
162
+ if (size(hexValue) !== length) {
163
+ throw new Error(
164
+ "Value length is not equal to the given length"
165
+ )
166
+ }
167
+
168
+ params = [
169
+ toHex(start, { size: 32 }),
170
+ toHex(length, { size: 32 }),
171
+ keccak256(hexValue)
172
+ ]
135
173
  } else {
136
174
  params = [
137
175
  pad(
@@ -144,6 +182,7 @@ export function getPermissionFromABI<
144
182
  )
145
183
  ]
146
184
  }
185
+
147
186
  return {
148
187
  params,
149
188
  offset: i * 32,
@@ -1,10 +1,11 @@
1
- import type { Abi, Address, Hex } from "viem"
1
+ import type { Abi, Address, Hex, Narrow } from "viem"
2
2
  import { concatHex, pad } from "viem"
3
3
  import {
4
4
  CALL_POLICY_CONTRACT_V0_0_1,
5
5
  CALL_POLICY_CONTRACT_V0_0_2,
6
6
  CALL_POLICY_CONTRACT_V0_0_3,
7
7
  CALL_POLICY_CONTRACT_V0_0_4,
8
+ CALL_POLICY_CONTRACT_V0_0_5,
8
9
  PolicyFlags
9
10
  } from "../constants.js"
10
11
  import type { Policy, PolicyParams } from "../types.js"
@@ -12,13 +13,14 @@ import {
12
13
  encodePermissionData,
13
14
  getPermissionFromABI
14
15
  } from "./callPolicyUtils.js"
15
- import { CallType, type Permission } from "./types.js"
16
+ import { CallType, type InferPermissions, type Permission } from "./types.js"
16
17
 
17
18
  export enum CallPolicyVersion {
18
19
  V0_0_1 = "0.0.1",
19
20
  V0_0_2 = "0.0.2",
20
21
  V0_0_3 = "0.0.3",
21
- V0_0_4 = "0.0.4"
22
+ V0_0_4 = "0.0.4",
23
+ V0_0_5 = "0.0.5"
22
24
  }
23
25
 
24
26
  export const getCallPolicyAddress = (
@@ -35,35 +37,38 @@ export const getCallPolicyAddress = (
35
37
  return CALL_POLICY_CONTRACT_V0_0_3
36
38
  case CallPolicyVersion.V0_0_4:
37
39
  return CALL_POLICY_CONTRACT_V0_0_4
40
+ case CallPolicyVersion.V0_0_5:
41
+ return CALL_POLICY_CONTRACT_V0_0_5
38
42
  }
39
43
  }
40
44
 
41
45
  export type CallPolicyParams<
42
- TAbi extends Abi | readonly unknown[],
43
- TFunctionName extends string | undefined = string
46
+ permissions extends readonly Permission<
47
+ Abi,
48
+ string
49
+ >[] = readonly Permission<Abi, string>[]
44
50
  > = PolicyParams & {
45
51
  policyVersion: CallPolicyVersion
46
- permissions?: Permission<TAbi, TFunctionName>[]
52
+ permissions?: InferPermissions<Narrow<permissions>>
47
53
  }
48
54
 
49
55
  export function toCallPolicy<
50
- TAbi extends Abi | readonly unknown[],
51
- TFunctionName extends string | undefined = string
56
+ const permissions extends readonly Permission<Abi, string>[]
52
57
  >({
53
58
  policyAddress,
54
59
  policyFlag = PolicyFlags.FOR_ALL_VALIDATION,
55
60
  policyVersion,
56
- permissions = []
57
- }: CallPolicyParams<TAbi, TFunctionName>): Policy {
61
+ permissions: inputPermissions
62
+ }: CallPolicyParams<permissions>): Policy {
58
63
  const callPolicyAddress = getCallPolicyAddress(policyVersion, policyAddress)
59
64
 
60
- const generatedPermissionParams = permissions?.map((perm) => {
65
+ const generatedPermissionParams = inputPermissions?.map((perm) => {
61
66
  // Natural discrimination: if abi and functionName are present, do ABI-based validation
62
67
  if (perm.abi && perm.functionName) {
63
68
  return getPermissionFromABI({
64
69
  abi: perm.abi as Abi,
65
70
  functionName: perm.functionName as string,
66
- args: perm.args as [],
71
+ args: perm.args,
67
72
  policyAddress: callPolicyAddress,
68
73
  selector: perm.selector
69
74
  })
@@ -76,8 +81,8 @@ export function toCallPolicy<
76
81
  }
77
82
  })
78
83
 
79
- permissions =
80
- permissions?.map((perm, index) => ({
84
+ const processedPermissions =
85
+ inputPermissions?.map((perm, index) => ({
81
86
  ...perm,
82
87
  callType: perm.callType ?? CallType.CALL,
83
88
  selector:
@@ -92,7 +97,7 @@ export function toCallPolicy<
92
97
  })) ?? []
93
98
 
94
99
  const encodedPermissionData = encodePermissionData(
95
- permissions,
100
+ processedPermissions,
96
101
  callPolicyAddress
97
102
  )
98
103
 
@@ -108,8 +113,8 @@ export function toCallPolicy<
108
113
  policyVersion,
109
114
  policyAddress,
110
115
  policyFlag,
111
- permissions
112
- } as unknown as CallPolicyParams<Abi | readonly unknown[], string> & {
116
+ permissions: processedPermissions
117
+ } as unknown as CallPolicyParams<permissions> & {
113
118
  type: "call"
114
119
  }
115
120
  }