@zerodev/permissions 5.2.7-alpha-2 → 5.2.7-alpha-3

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.
@@ -18,25 +18,46 @@ const serializeMultiChainPermissionAccounts = async (params) => {
18
18
  const pluginEnableTypedDatas = await Promise.all(params.map(async (param) => {
19
19
  return param.account.kernelPluginManager.getPluginsEnableTypedData(param.account.address);
20
20
  }));
21
+ const leaves = pluginEnableTypedDatas.map((typedData) => {
22
+ return (0, viem_1.hashTypedData)(typedData);
23
+ });
24
+ const merkleTree = new merkletreejs_1.default(leaves, viem_1.keccak256, {
25
+ sortPairs: true
26
+ });
27
+ const merkleRoot = merkleTree.getHexRoot();
28
+ const signature = await params[0].account.kernelPluginManager.sudoValidator?.signMessage({
29
+ message: {
30
+ raw: merkleRoot
31
+ }
32
+ });
33
+ if (!signature) {
34
+ throw new Error("No enable signature, check if the sudo validator is multi-chain validator");
35
+ }
21
36
  const enableSignatures = await Promise.all(params.map(async (param, index) => {
22
- const leaves = pluginEnableTypedDatas.map((typedData) => {
23
- return (0, viem_1.hashTypedData)(typedData);
24
- });
25
- const merkleTree = new merkletreejs_1.default(leaves, viem_1.keccak256, {
26
- sortPairs: true
27
- });
28
- const merkleRoot = merkleTree.getHexRoot();
29
- const ecdsaSig = await param.account.kernelPluginManager.sudoValidator?.signMessage({
30
- message: {
31
- raw: merkleRoot
32
- }
33
- });
34
- if (!ecdsaSig) {
35
- throw new Error("No ecdsaSig, check if the sudo validator is multi-chain validator");
37
+ if (!param.account.kernelPluginManager.sudoValidator) {
38
+ throw new Error("No sudo validator found, check if sudo validator is multi-chain validator");
36
39
  }
37
40
  const merkleProof = merkleTree.getHexProof(leaves[index]);
38
41
  const encodedMerkleProof = (0, viem_1.encodeAbiParameters)([{ name: "proof", type: "bytes32[]" }], [merkleProof]);
39
- return (0, viem_1.concatHex)([ecdsaSig, merkleRoot, encodedMerkleProof]);
42
+ if (param.account.kernelPluginManager.sudoValidator.source ===
43
+ "MultiChainECDSAValidator") {
44
+ return (0, viem_1.concatHex)([signature, merkleRoot, encodedMerkleProof]);
45
+ }
46
+ if (param.account.kernelPluginManager.sudoValidator.source ===
47
+ "MultiChainWebAuthnValidator") {
48
+ const merkleData = (0, viem_1.concatHex)([merkleRoot, encodedMerkleProof]);
49
+ return (0, viem_1.encodeAbiParameters)([
50
+ {
51
+ name: "merkleData",
52
+ type: "bytes"
53
+ },
54
+ {
55
+ name: "signature",
56
+ type: "bytes"
57
+ }
58
+ ], [merkleData, signature]);
59
+ }
60
+ throw new Error("Unknown multi-chain validator");
40
61
  }));
41
62
  const accountParamsPerAccounts = await Promise.all(params.map(async (param) => {
42
63
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"serializeMultiChainPermissionAccounts.js","sourceRoot":"","sources":["../serializeMultiChainPermissionAccounts.ts"],"names":[],"mappings":";;;AACA,+CAAqC;AAErC,+BAMa;AAEb,yCAGmB;AAQZ,MAAM,qCAAqC,GAAG,KAAK,EAGtD,MAAwD,EACvC,EAAE;IACnB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAElC,MAAM,2BAA2B,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACrD,IAAI,CAAC,IAAA,sCAA2B,EAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAClE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;QACnE,CAAC;QACD,OACI,KAAK,CAAC,OAAO,CAAC,mBACjB,CAAC,4BAA4B,EAAE,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACjC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE,CAChD,CAAA;IAED,MAAM,uBAAuB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACjD,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,eAAe,EAAE,CACtD,CAAA;IAED,MAAM,sBAAsB,GAAG,MAAM,OAAO,CAAC,GAAG,CAC5C,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACvB,OAAO,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,yBAAyB,CAC9D,KAAK,CAAC,OAAO,CAAC,OAAO,CACxB,CAAA;IACL,CAAC,CAAC,CACL,CAAA;IAGD,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,GAAG,CACtC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QAC9B,MAAM,MAAM,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;YACpD,OAAO,IAAA,oBAAa,EAAC,SAAS,CAAC,CAAA;QACnC,CAAC,CAAC,CAAA;QAEF,MAAM,UAAU,GAAG,IAAI,sBAAU,CAAC,MAAM,EAAE,gBAAS,EAAE;YACjD,SAAS,EAAE,IAAI;SAClB,CAAC,CAAA;QAEF,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,EAAS,CAAA;QAEjD,MAAM,QAAQ,GACV,MAAM,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,aAAa,EAAE,WAAW,CAC9D;YACI,OAAO,EAAE;gBACL,GAAG,EAAE,UAAU;aAClB;SACJ,CACJ,CAAA;QAEL,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACX,mEAAmE,CACtE,CAAA;QACL,CAAC;QAED,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAU,CAAA;QAClE,MAAM,kBAAkB,GAAG,IAAA,0BAAmB,EAC1C,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EACtC,CAAC,WAAW,CAAC,CAChB,CAAA;QACD,OAAO,IAAA,gBAAS,EAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAC,CAAA;IAChE,CAAC,CAAC,CACL,CAAA;IAED,MAAM,wBAAwB,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9C,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACvB,OAAO;YACH,QAAQ,EAAE,MAAM,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE;YAChD,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO;SACxC,CAAA;IACL,CAAC,CAAC,CACL,CAAA;IAED,MAAM,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACrD,OAAO,IAAA,2CAAgC,EAAC;YACpC,gBAAgB,EAAE,2BAA2B,CAAC,KAAK,CAAC;YACpD,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC;YACtB,YAAY,EAAE,uBAAuB,CAAC,KAAK,CAAC;YAC5C,aAAa,EAAE,wBAAwB,CAAC,KAAK,CAAC;YAC9C,eAAe,EAAE,gBAAgB,CAAC,KAAK,CAAC;YACxC,UAAU,EAAE,KAAK,CAAC,UAAU;SAC/B,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,OAAO,oBAAoB,CAAA;AAC/B,CAAC,CAAA;AA1FY,QAAA,qCAAqC,yCA0FjD"}
1
+ {"version":3,"file":"serializeMultiChainPermissionAccounts.js","sourceRoot":"","sources":["../serializeMultiChainPermissionAccounts.ts"],"names":[],"mappings":"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"}
@@ -15,26 +15,48 @@ export const serializeMultiChainPermissionAccounts = async (params) => {
15
15
  const pluginEnableTypedDatas = await Promise.all(params.map(async (param) => {
16
16
  return param.account.kernelPluginManager.getPluginsEnableTypedData(param.account.address);
17
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
+ });
25
+ const merkleRoot = merkleTree.getHexRoot();
26
+ const signature = await params[0].account.kernelPluginManager.sudoValidator?.signMessage({
27
+ message: {
28
+ raw: merkleRoot
29
+ }
30
+ });
31
+ if (!signature) {
32
+ throw new Error("No enable signature, check if the sudo validator is multi-chain validator");
33
+ }
18
34
  // get enable signatures for multi-chain validator
19
35
  const enableSignatures = await Promise.all(params.map(async (param, index) => {
20
- const leaves = pluginEnableTypedDatas.map((typedData) => {
21
- return hashTypedData(typedData);
22
- });
23
- const merkleTree = new MerkleTree(leaves, keccak256, {
24
- sortPairs: true
25
- });
26
- const merkleRoot = merkleTree.getHexRoot();
27
- const ecdsaSig = await param.account.kernelPluginManager.sudoValidator?.signMessage({
28
- message: {
29
- raw: merkleRoot
30
- }
31
- });
32
- if (!ecdsaSig) {
33
- throw new Error("No ecdsaSig, check if the sudo validator is multi-chain validator");
36
+ if (!param.account.kernelPluginManager.sudoValidator) {
37
+ throw new Error("No sudo validator found, check if sudo validator is multi-chain validator");
34
38
  }
35
39
  const merkleProof = merkleTree.getHexProof(leaves[index]);
36
40
  const encodedMerkleProof = encodeAbiParameters([{ name: "proof", type: "bytes32[]" }], [merkleProof]);
37
- return concatHex([ecdsaSig, merkleRoot, encodedMerkleProof]);
41
+ if (param.account.kernelPluginManager.sudoValidator.source ===
42
+ "MultiChainECDSAValidator") {
43
+ return concatHex([signature, merkleRoot, encodedMerkleProof]);
44
+ }
45
+ if (param.account.kernelPluginManager.sudoValidator.source ===
46
+ "MultiChainWebAuthnValidator") {
47
+ const merkleData = concatHex([merkleRoot, encodedMerkleProof]);
48
+ return encodeAbiParameters([
49
+ {
50
+ name: "merkleData",
51
+ type: "bytes"
52
+ },
53
+ {
54
+ name: "signature",
55
+ type: "bytes"
56
+ }
57
+ ], [merkleData, signature]);
58
+ }
59
+ throw new Error("Unknown multi-chain validator");
38
60
  }));
39
61
  const accountParamsPerAccounts = await Promise.all(params.map(async (param) => {
40
62
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"serializeMultiChainPermissionAccounts.js","sourceRoot":"","sources":["../serializeMultiChainPermissionAccounts.ts"],"names":[],"mappings":"AACA,OAAO,UAAU,MAAM,cAAc,CAAA;AAErC,OAAO,EAEH,SAAS,EACT,mBAAmB,EACnB,aAAa,EACb,SAAS,EACZ,MAAM,MAAM,CAAA;AAEb,OAAO,EACH,2BAA2B,EAC3B,gCAAgC,EACnC,MAAM,YAAY,CAAA;AAQnB,MAAM,CAAC,MAAM,qCAAqC,GAAG,KAAK,EAGtD,MAAwD,EACvC,EAAE;IACnB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAElC,MAAM,2BAA2B,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACrD,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAClE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;QACnE,CAAC;QACD,OACI,KAAK,CAAC,OAAO,CAAC,mBACjB,CAAC,4BAA4B,EAAE,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACjC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE,CAChD,CAAA;IAED,MAAM,uBAAuB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACjD,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,eAAe,EAAE,CACtD,CAAA;IAED,MAAM,sBAAsB,GAAG,MAAM,OAAO,CAAC,GAAG,CAC5C,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACvB,OAAO,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,yBAAyB,CAC9D,KAAK,CAAC,OAAO,CAAC,OAAO,CACxB,CAAA;IACL,CAAC,CAAC,CACL,CAAA;IAED,kDAAkD;IAClD,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,GAAG,CACtC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QAC9B,MAAM,MAAM,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;YACpD,OAAO,aAAa,CAAC,SAAS,CAAC,CAAA;QACnC,CAAC,CAAC,CAAA;QAEF,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE;YACjD,SAAS,EAAE,IAAI;SAClB,CAAC,CAAA;QAEF,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,EAAS,CAAA;QAEjD,MAAM,QAAQ,GACV,MAAM,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,aAAa,EAAE,WAAW,CAC9D;YACI,OAAO,EAAE;gBACL,GAAG,EAAE,UAAU;aAClB;SACJ,CACJ,CAAA;QAEL,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACX,mEAAmE,CACtE,CAAA;QACL,CAAC;QAED,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAU,CAAA;QAClE,MAAM,kBAAkB,GAAG,mBAAmB,CAC1C,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EACtC,CAAC,WAAW,CAAC,CAChB,CAAA;QACD,OAAO,SAAS,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAC,CAAA;IAChE,CAAC,CAAC,CACL,CAAA;IAED,MAAM,wBAAwB,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9C,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACvB,OAAO;YACH,QAAQ,EAAE,MAAM,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE;YAChD,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO;SACxC,CAAA;IACL,CAAC,CAAC,CACL,CAAA;IAED,MAAM,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACrD,OAAO,gCAAgC,CAAC;YACpC,gBAAgB,EAAE,2BAA2B,CAAC,KAAK,CAAC;YACpD,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC;YACtB,YAAY,EAAE,uBAAuB,CAAC,KAAK,CAAC;YAC5C,aAAa,EAAE,wBAAwB,CAAC,KAAK,CAAC;YAC9C,eAAe,EAAE,gBAAgB,CAAC,KAAK,CAAC;YACxC,UAAU,EAAE,KAAK,CAAC,UAAU;SAC/B,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,OAAO,oBAAoB,CAAA;AAC/B,CAAC,CAAA"}
1
+ {"version":3,"file":"serializeMultiChainPermissionAccounts.js","sourceRoot":"","sources":["../serializeMultiChainPermissionAccounts.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"serializeMultiChainPermissionAccounts.d.ts","sourceRoot":"","sources":["../serializeMultiChainPermissionAccounts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAEtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EACH,KAAK,GAAG,EAKX,MAAM,MAAM,CAAA;AAOb,MAAM,MAAM,kCAAkC,CAAC,UAAU,SAAS,UAAU,IACxE;IACI,OAAO,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAA;IACvC,UAAU,CAAC,EAAE,GAAG,CAAA;CACnB,CAAA;AAEL,eAAO,MAAM,qCAAqC,+FAI/C,QAAQ,MAAM,EAAE,CAsFlB,CAAA"}
1
+ {"version":3,"file":"serializeMultiChainPermissionAccounts.d.ts","sourceRoot":"","sources":["../serializeMultiChainPermissionAccounts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAEtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EACH,KAAK,GAAG,EAKX,MAAM,MAAM,CAAA;AAOb,MAAM,MAAM,kCAAkC,CAAC,UAAU,SAAS,UAAU,IACxE;IACI,OAAO,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAA;IACvC,UAAU,CAAC,EAAE,GAAG,CAAA;CACnB,CAAA;AAEL,eAAO,MAAM,qCAAqC,+FAI/C,QAAQ,MAAM,EAAE,CAmHlB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zerodev/permissions",
3
- "version": "5.2.7-alpha-2",
3
+ "version": "5.2.7-alpha-3",
4
4
  "author": "ZeroDev",
5
5
  "main": "./_cjs/index.js",
6
6
  "module": "./_esm/index.js",
@@ -52,40 +52,69 @@ export const serializeMultiChainPermissionAccounts = async <
52
52
  })
53
53
  )
54
54
 
55
- // get enable signatures for multi-chain validator
56
- const enableSignatures = await Promise.all(
57
- params.map(async (param, index) => {
58
- const leaves = pluginEnableTypedDatas.map((typedData) => {
59
- return hashTypedData(typedData)
60
- })
55
+ // build merkle tree for enable signatures
56
+ const leaves = pluginEnableTypedDatas.map((typedData) => {
57
+ return hashTypedData(typedData)
58
+ })
61
59
 
62
- const merkleTree = new MerkleTree(leaves, keccak256, {
63
- sortPairs: true
64
- })
60
+ const merkleTree = new MerkleTree(leaves, keccak256, {
61
+ sortPairs: true
62
+ })
65
63
 
66
- const merkleRoot = merkleTree.getHexRoot() as Hex
64
+ const merkleRoot = merkleTree.getHexRoot() as Hex
67
65
 
68
- const ecdsaSig =
69
- await param.account.kernelPluginManager.sudoValidator?.signMessage(
70
- {
71
- message: {
72
- raw: merkleRoot
73
- }
74
- }
75
- )
66
+ const signature =
67
+ await params[0].account.kernelPluginManager.sudoValidator?.signMessage({
68
+ message: {
69
+ raw: merkleRoot
70
+ }
71
+ })
76
72
 
77
- if (!ecdsaSig) {
73
+ if (!signature) {
74
+ throw new Error(
75
+ "No enable signature, check if the sudo validator is multi-chain validator"
76
+ )
77
+ }
78
+
79
+ // get enable signatures for multi-chain validator
80
+ const enableSignatures = await Promise.all(
81
+ params.map(async (param, index) => {
82
+ if (!param.account.kernelPluginManager.sudoValidator) {
78
83
  throw new Error(
79
- "No ecdsaSig, check if the sudo validator is multi-chain validator"
84
+ "No sudo validator found, check if sudo validator is multi-chain validator"
80
85
  )
81
86
  }
82
-
83
87
  const merkleProof = merkleTree.getHexProof(leaves[index]) as Hex[]
84
88
  const encodedMerkleProof = encodeAbiParameters(
85
89
  [{ name: "proof", type: "bytes32[]" }],
86
90
  [merkleProof]
87
91
  )
88
- return concatHex([ecdsaSig, merkleRoot, encodedMerkleProof])
92
+ if (
93
+ param.account.kernelPluginManager.sudoValidator.source ===
94
+ "MultiChainECDSAValidator"
95
+ ) {
96
+ return concatHex([signature, merkleRoot, encodedMerkleProof])
97
+ }
98
+ if (
99
+ param.account.kernelPluginManager.sudoValidator.source ===
100
+ "MultiChainWebAuthnValidator"
101
+ ) {
102
+ const merkleData = concatHex([merkleRoot, encodedMerkleProof])
103
+ return encodeAbiParameters(
104
+ [
105
+ {
106
+ name: "merkleData",
107
+ type: "bytes"
108
+ },
109
+ {
110
+ name: "signature",
111
+ type: "bytes"
112
+ }
113
+ ],
114
+ [merkleData, signature]
115
+ )
116
+ }
117
+ throw new Error("Unknown multi-chain validator")
89
118
  })
90
119
  )
91
120