@zerodev/permissions 5.2.6 → 5.2.7-alpha-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.
- package/_cjs/index.js +3 -1
- package/_cjs/index.js.map +1 -1
- package/_cjs/serializeMultiChainPermissionAccounts.js +60 -0
- package/_cjs/serializeMultiChainPermissionAccounts.js.map +1 -0
- package/_esm/deserializePermissionAccount.js +0 -1
- package/_esm/deserializePermissionAccount.js.map +1 -1
- package/_esm/index.js +1 -0
- package/_esm/index.js.map +1 -1
- package/_esm/policies/types.js +0 -1
- package/_esm/policies/types.js.map +1 -1
- package/_esm/serializeMultiChainPermissionAccounts.js +57 -0
- package/_esm/serializeMultiChainPermissionAccounts.js.map +1 -0
- package/_esm/signers/toECDSASigner.js +0 -1
- package/_esm/signers/toECDSASigner.js.map +1 -1
- package/_esm/signers/toEmptyECDSASigner.js +0 -1
- package/_esm/signers/toEmptyECDSASigner.js.map +1 -1
- package/_esm/signers/toWebAuthnPubKey.js +0 -1
- package/_esm/signers/toWebAuthnPubKey.js.map +1 -1
- package/_esm/types.js +1 -2
- package/_esm/types.js.map +1 -1
- package/_types/deserializePermissionAccount.d.ts +1 -1
- package/_types/deserializePermissionAccount.d.ts.map +1 -1
- package/_types/index.d.ts +1 -0
- package/_types/index.d.ts.map +1 -1
- package/_types/policies/types.d.ts +1 -1
- package/_types/policies/types.d.ts.map +1 -1
- package/_types/serializeMultiChainPermissionAccounts.d.ts +9 -0
- package/_types/serializeMultiChainPermissionAccounts.d.ts.map +1 -0
- package/_types/signers/toECDSASigner.d.ts +1 -1
- package/_types/signers/toECDSASigner.d.ts.map +1 -1
- package/_types/signers/toEmptyECDSASigner.d.ts +1 -1
- package/_types/signers/toEmptyECDSASigner.d.ts.map +1 -1
- package/_types/signers/toWebAuthnPubKey.d.ts +1 -1
- package/_types/signers/toWebAuthnPubKey.d.ts.map +1 -1
- package/_types/types.d.ts +2 -2
- package/_types/types.d.ts.map +1 -1
- package/deserializePermissionAccount.ts +1 -1
- package/index.ts +4 -0
- package/package.json +1 -1
- package/policies/types.ts +6 -6
- package/serializeMultiChainPermissionAccounts.ts +113 -0
- package/signers/toECDSASigner.ts +1 -1
- package/signers/toEmptyECDSASigner.ts +1 -1
- package/signers/toWebAuthnPubKey.ts +1 -1
- package/types.ts +2 -2
package/_cjs/index.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.deserializePermissionAccount = exports.serializePermissionAccount = exports.toPermissionValidator = void 0;
|
|
3
|
+
exports.deserializePermissionAccount = exports.serializeMultiChainPermissionAccounts = exports.serializePermissionAccount = exports.toPermissionValidator = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
var toPermissionValidator_js_1 = require("./toPermissionValidator.js");
|
|
6
6
|
Object.defineProperty(exports, "toPermissionValidator", { enumerable: true, get: function () { return toPermissionValidator_js_1.toPermissionValidator; } });
|
|
7
7
|
var serializePermissionAccount_js_1 = require("./serializePermissionAccount.js");
|
|
8
8
|
Object.defineProperty(exports, "serializePermissionAccount", { enumerable: true, get: function () { return serializePermissionAccount_js_1.serializePermissionAccount; } });
|
|
9
|
+
var serializeMultiChainPermissionAccounts_js_1 = require("./serializeMultiChainPermissionAccounts.js");
|
|
10
|
+
Object.defineProperty(exports, "serializeMultiChainPermissionAccounts", { enumerable: true, get: function () { return serializeMultiChainPermissionAccounts_js_1.serializeMultiChainPermissionAccounts; } });
|
|
9
11
|
var deserializePermissionAccount_js_1 = require("./deserializePermissionAccount.js");
|
|
10
12
|
Object.defineProperty(exports, "deserializePermissionAccount", { enumerable: true, get: function () { return deserializePermissionAccount_js_1.deserializePermissionAccount; } });
|
|
11
13
|
tslib_1.__exportStar(require("./constants.js"), exports);
|
package/_cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;AACA,uEAAkE;AAAzD,iIAAA,qBAAqB,OAAA;AAC9B,iFAA4E;AAAnE,2IAAA,0BAA0B,OAAA;AACnC,qFAAgF;AAAvE,+IAAA,4BAA4B,OAAA;AACrC,yDAA8B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;AACA,uEAAkE;AAAzD,iIAAA,qBAAqB,OAAA;AAC9B,iFAA4E;AAAnE,2IAAA,0BAA0B,OAAA;AACnC,uGAGmD;AAD/C,iKAAA,qCAAqC,OAAA;AAEzC,qFAAgF;AAAvE,+IAAA,4BAA4B,OAAA;AACrC,yDAA8B"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.serializeMultiChainPermissionAccounts = void 0;
|
|
4
|
+
const merkletreejs_1 = require("merkletreejs");
|
|
5
|
+
const viem_1 = require("viem");
|
|
6
|
+
const utils_js_1 = require("./utils.js");
|
|
7
|
+
const serializeMultiChainPermissionAccounts = async (params) => {
|
|
8
|
+
if (params.length === 0)
|
|
9
|
+
return [];
|
|
10
|
+
const permissionParamsPerAccounts = params.map((param) => {
|
|
11
|
+
if (!(0, utils_js_1.isPermissionValidatorPlugin)(param.account.kernelPluginManager)) {
|
|
12
|
+
throw new Error("Account plugin is not a permission validator");
|
|
13
|
+
}
|
|
14
|
+
return param.account.kernelPluginManager.getPluginSerializationParams();
|
|
15
|
+
});
|
|
16
|
+
const actions = params.map((param) => param.account.kernelPluginManager.getAction());
|
|
17
|
+
const validityDataPerAccounts = params.map((param) => param.account.kernelPluginManager.getValidityData());
|
|
18
|
+
const pluginEnableTypedDatas = await Promise.all(params.map(async (param) => {
|
|
19
|
+
return param.account.kernelPluginManager.getPluginsEnableTypedData(param.account.address);
|
|
20
|
+
}));
|
|
21
|
+
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");
|
|
36
|
+
}
|
|
37
|
+
const merkleProof = merkleTree.getHexProof(leaves[index]);
|
|
38
|
+
const encodedMerkleProof = (0, viem_1.encodeAbiParameters)([{ name: "proof", type: "bytes32[]" }], [merkleProof]);
|
|
39
|
+
return (0, viem_1.concatHex)([ecdsaSig, merkleRoot, encodedMerkleProof]);
|
|
40
|
+
}));
|
|
41
|
+
const accountParamsPerAccounts = await Promise.all(params.map(async (param) => {
|
|
42
|
+
return {
|
|
43
|
+
initCode: await param.account.generateInitCode(),
|
|
44
|
+
accountAddress: param.account.address
|
|
45
|
+
};
|
|
46
|
+
}));
|
|
47
|
+
const paramsToBeSerialized = params.map((param, index) => {
|
|
48
|
+
return (0, utils_js_1.serializePermissionAccountParams)({
|
|
49
|
+
permissionParams: permissionParamsPerAccounts[index],
|
|
50
|
+
action: actions[index],
|
|
51
|
+
validityData: validityDataPerAccounts[index],
|
|
52
|
+
accountParams: accountParamsPerAccounts[index],
|
|
53
|
+
enableSignature: enableSignatures[index],
|
|
54
|
+
privateKey: param.privateKey
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
return paramsToBeSerialized;
|
|
58
|
+
};
|
|
59
|
+
exports.serializeMultiChainPermissionAccounts = serializeMultiChainPermissionAccounts;
|
|
60
|
+
//# sourceMappingURL=serializeMultiChainPermissionAccounts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializeMultiChainPermissionAccounts.js","sourceRoot":"","sources":["../serializeMultiChainPermissionAccounts.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,6 @@ import { privateKeyToAccount } from "viem/accounts";
|
|
|
6
6
|
import { toCallPolicy, toGasPolicy, toRateLimitPolicy, toSignatureCallerPolicy, toSudoPolicy, toTimestampPolicy } from "./policies/index.js";
|
|
7
7
|
import { toECDSASigner } from "./signers/toECDSASigner.js";
|
|
8
8
|
import { toPermissionValidator } from "./toPermissionValidator.js";
|
|
9
|
-
import {} from "./types.js";
|
|
10
9
|
import { deserializePermissionAccountParams } from "./utils.js";
|
|
11
10
|
export const deserializePermissionAccount = async (client, entryPointAddress, modularPermissionAccountParams, modularSigner) => {
|
|
12
11
|
const entryPointVersion = getEntryPointVersion(entryPointAddress);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deserializePermissionAccount.js","sourceRoot":"","sources":["../deserializePermissionAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,EACtB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAGrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAA;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EACH,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,uBAAuB,EACvB,YAAY,EACZ,iBAAiB,EACpB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"deserializePermissionAccount.js","sourceRoot":"","sources":["../deserializePermissionAccount.ts"],"names":[],"mappings":"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"}
|
package/_esm/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { toPermissionValidator } from "./toPermissionValidator.js";
|
|
2
2
|
export { serializePermissionAccount } from "./serializePermissionAccount.js";
|
|
3
|
+
export { serializeMultiChainPermissionAccounts } from "./serializeMultiChainPermissionAccounts.js";
|
|
3
4
|
export { deserializePermissionAccount } from "./deserializePermissionAccount.js";
|
|
4
5
|
export * from "./constants.js";
|
|
5
6
|
//# sourceMappingURL=index.js.map
|
package/_esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAA;AAC5E,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAA;AAChF,cAAc,gBAAgB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAA;AAC5E,OAAO,EAEH,qCAAqC,EACxC,MAAM,4CAA4C,CAAA;AACnD,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAA;AAChF,cAAc,gBAAgB,CAAA"}
|
package/_esm/policies/types.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../policies/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../policies/types.ts"],"names":[],"mappings":"AAaA,MAAM,CAAN,IAAY,QAIX;AAJD,WAAY,QAAQ;IAChB,yBAAa,CAAA;IACb,+BAAmB,CAAA;IACnB,kCAAsB,CAAA;AAC1B,CAAC,EAJW,QAAQ,KAAR,QAAQ,QAInB;AAED,MAAM,CAAN,IAAY,cAOX;AAPD,WAAY,cAAc;IACtB,qDAAS,CAAA;IACT,mEAAgB,CAAA;IAChB,6DAAa,CAAA;IACb,qFAAyB,CAAA;IACzB,+EAAsB,CAAA;IACtB,6DAAa,CAAA;AACjB,CAAC,EAPW,cAAc,KAAd,cAAc,QAOzB"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import MerkleTree from "merkletreejs";
|
|
2
|
+
import { concatHex, encodeAbiParameters, hashTypedData, keccak256 } from "viem";
|
|
3
|
+
import { isPermissionValidatorPlugin, serializePermissionAccountParams } from "./utils.js";
|
|
4
|
+
export const serializeMultiChainPermissionAccounts = async (params) => {
|
|
5
|
+
if (params.length === 0)
|
|
6
|
+
return [];
|
|
7
|
+
const permissionParamsPerAccounts = params.map((param) => {
|
|
8
|
+
if (!isPermissionValidatorPlugin(param.account.kernelPluginManager)) {
|
|
9
|
+
throw new Error("Account plugin is not a permission validator");
|
|
10
|
+
}
|
|
11
|
+
return param.account.kernelPluginManager.getPluginSerializationParams();
|
|
12
|
+
});
|
|
13
|
+
const actions = params.map((param) => param.account.kernelPluginManager.getAction());
|
|
14
|
+
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
|
+
// get enable signatures for multi-chain validator
|
|
19
|
+
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");
|
|
34
|
+
}
|
|
35
|
+
const merkleProof = merkleTree.getHexProof(leaves[index]);
|
|
36
|
+
const encodedMerkleProof = encodeAbiParameters([{ name: "proof", type: "bytes32[]" }], [merkleProof]);
|
|
37
|
+
return concatHex([ecdsaSig, merkleRoot, encodedMerkleProof]);
|
|
38
|
+
}));
|
|
39
|
+
const accountParamsPerAccounts = await Promise.all(params.map(async (param) => {
|
|
40
|
+
return {
|
|
41
|
+
initCode: await param.account.generateInitCode(),
|
|
42
|
+
accountAddress: param.account.address
|
|
43
|
+
};
|
|
44
|
+
}));
|
|
45
|
+
const paramsToBeSerialized = params.map((param, index) => {
|
|
46
|
+
return serializePermissionAccountParams({
|
|
47
|
+
permissionParams: permissionParamsPerAccounts[index],
|
|
48
|
+
action: actions[index],
|
|
49
|
+
validityData: validityDataPerAccounts[index],
|
|
50
|
+
accountParams: accountParamsPerAccounts[index],
|
|
51
|
+
enableSignature: enableSignatures[index],
|
|
52
|
+
privateKey: param.privateKey
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
return paramsToBeSerialized;
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=serializeMultiChainPermissionAccounts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializeMultiChainPermissionAccounts.js","sourceRoot":"","sources":["../serializeMultiChainPermissionAccounts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { constants, fixSignedData } from "@zerodev/sdk";
|
|
2
2
|
import { SignTransactionNotSupportedBySmartAccount } from "permissionless/accounts";
|
|
3
|
-
import {} from "viem";
|
|
4
3
|
import { toAccount } from "viem/accounts";
|
|
5
4
|
import { ECDSA_SIGNER_CONTRACT } from "../constants.js";
|
|
6
5
|
export function toECDSASigner({ signer, signerContractAddress = ECDSA_SIGNER_CONTRACT }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toECDSASigner.js","sourceRoot":"","sources":["../../signers/toECDSASigner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAEvD,OAAO,EACH,yCAAyC,EAE5C,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"toECDSASigner.js","sourceRoot":"","sources":["../../signers/toECDSASigner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAEvD,OAAO,EACH,yCAAyC,EAE5C,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAUvD,MAAM,UAAU,aAAa,CAG3B,EACE,MAAM,EACN,qBAAqB,GAAG,qBAAqB,EACH;IAC1C,MAAM,UAAU,GAAiB;QAC7B,GAAG,MAAM;QACT,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;YACvB,MAAM,IAAI,yCAAyC,EAAE,CAAA;QACzD,CAAC;KACY,CAAA;IACjB,MAAM,OAAO,GAAG,SAAS,CAAC;QACtB,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,KAAK,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE;YACzB,OAAO,aAAa,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;QACnE,CAAC;QACD,KAAK,CAAC,eAAe,CAAC,CAAC,EAAE,EAAE;YACvB,MAAM,IAAI,yCAAyC,EAAE,CAAA;QACzD,CAAC;QACD,KAAK,CAAC,aAAa,CAKjB,SAAwD;YACtD,OAAO,aAAa,CAChB,MAAM,UAAU,CAAC,aAAa,CAA2B;gBACrD,GAAG,SAAS;aACf,CAAC,CACL,CAAA;QACL,CAAC;KACJ,CAAC,CAAA;IACF,OAAO;QACH,OAAO;QACP,qBAAqB;QACrB,aAAa,EAAE,GAAG,EAAE;YAChB,OAAO,UAAU,CAAC,OAAO,CAAA;QAC7B,CAAC;QACD,iBAAiB,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,eAAe;KACrD,CAAA;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toEmptyECDSASigner.js","sourceRoot":"","sources":["../../signers/toEmptyECDSASigner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"toEmptyECDSASigner.js","sourceRoot":"","sources":["../../signers/toEmptyECDSASigner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAGxC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAGvD,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IAC/C,MAAM,OAAO,GAAG,SAAS,CAAC;QACtB,OAAO;QACP,KAAK,CAAC,WAAW;YACb,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;QAC3C,CAAC;QACD,KAAK,CAAC,eAAe,CAAC,CAAC,EAAE,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;QAC3C,CAAC;QACD,KAAK,CAAC,aAAa,CAKjB,UAAyD;YACvD,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;QAC3C,CAAC;KACJ,CAAC,CAAA;IACF,OAAO;QACH,OAAO;QACP,qBAAqB,EAAE,qBAAqB;QAC5C,aAAa,EAAE,GAAG,EAAE;YAChB,OAAO,OAAO,CAAA;QAClB,CAAC;QACD,iBAAiB,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,eAAe;KACrD,CAAA;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toWebAuthnPubKey.js","sourceRoot":"","sources":["../../signers/toWebAuthnPubKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAY,SAAS,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"toWebAuthnPubKey.js","sourceRoot":"","sources":["../../signers/toWebAuthnPubKey.ts"],"names":[],"mappings":"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"}
|
package/_esm/types.js
CHANGED
package/_esm/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":""}
|
|
@@ -2,7 +2,7 @@ import { createKernelAccount } from "@zerodev/sdk";
|
|
|
2
2
|
import type { ValidatorInitData } from "@zerodev/sdk/types";
|
|
3
3
|
import type { EntryPoint } from "permissionless/types";
|
|
4
4
|
import type { Hex } from "viem";
|
|
5
|
-
import {
|
|
5
|
+
import type { Policy } from "./types.js";
|
|
6
6
|
import type { ModularSigner } from "./types.js";
|
|
7
7
|
export declare const deserializePermissionAccount: <entryPoint extends EntryPoint>(client: Parameters<typeof createKernelAccount>[0], entryPointAddress: entryPoint, modularPermissionAccountParams: string, modularSigner?: ModularSigner) => Promise<import("@zerodev/sdk").KernelSmartAccount<entryPoint, import("viem").Transport, import("viem").Chain | undefined>>;
|
|
8
8
|
export declare const createPolicyFromParams: (policy: Policy) => Promise<Policy>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deserializePermissionAccount.d.ts","sourceRoot":"","sources":["../deserializePermissionAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,mBAAmB,EACtB,MAAM,cAAc,CAAA;AAErB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAE3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAa/B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"deserializePermissionAccount.d.ts","sourceRoot":"","sources":["../deserializePermissionAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,mBAAmB,EACtB,MAAM,cAAc,CAAA;AAErB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAE3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAa/B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAG/C,eAAO,MAAM,4BAA4B,0CAG7B,WAAW,0BAA0B,CAAC,CAAC,CAAC,CAAC,iEAEjB,MAAM,kBACtB,aAAa,+HAkDhC,CAAA;AAED,eAAO,MAAM,sBAAsB,WAAkB,MAAM,oBAiB1D,CAAA;AAED,eAAO,MAAM,wBAAwB,aAAc,GAAG;;;CA0BrD,CAAA"}
|
package/_types/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export type * from "./types.js";
|
|
2
2
|
export { toPermissionValidator } from "./toPermissionValidator.js";
|
|
3
3
|
export { serializePermissionAccount } from "./serializePermissionAccount.js";
|
|
4
|
+
export { type MultiChainPermissionAccountsParams, serializeMultiChainPermissionAccounts } from "./serializeMultiChainPermissionAccounts.js";
|
|
4
5
|
export { deserializePermissionAccount } from "./deserializePermissionAccount.js";
|
|
5
6
|
export * from "./constants.js";
|
|
6
7
|
//# sourceMappingURL=index.d.ts.map
|
package/_types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,mBAAmB,YAAY,CAAA;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAA;AAC5E,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAA;AAChF,cAAc,gBAAgB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,mBAAmB,YAAY,CAAA;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAA;AAC5E,OAAO,EACH,KAAK,kCAAkC,EACvC,qCAAqC,EACxC,MAAM,4CAA4C,CAAA;AACnD,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAA;AAChF,cAAc,gBAAgB,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { ExtractAbiFunction, ExtractAbiFunctionNames } from "abitype";
|
|
2
2
|
import type { Abi, AbiFunction, AbiParameter, AbiParameterKind, AbiParameterToPrimitiveType, AbiStateMutability, Address, Hex, Narrow } from "viem";
|
|
3
3
|
export declare enum CallType {
|
|
4
4
|
CALL = "0x00",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../policies/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../policies/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { KernelSmartAccount } from "@zerodev/sdk";
|
|
2
|
+
import type { EntryPoint } from "permissionless/types";
|
|
3
|
+
import { type Hex } from "viem";
|
|
4
|
+
export type MultiChainPermissionAccountsParams<entryPoint extends EntryPoint> = {
|
|
5
|
+
account: KernelSmartAccount<entryPoint>;
|
|
6
|
+
privateKey?: Hex;
|
|
7
|
+
};
|
|
8
|
+
export declare const serializeMultiChainPermissionAccounts: <entryPoint extends EntryPoint>(params: MultiChainPermissionAccountsParams<entryPoint>[]) => Promise<string[]>;
|
|
9
|
+
//# sourceMappingURL=serializeMultiChainPermissionAccounts.d.ts.map
|
|
@@ -0,0 +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,5 +1,5 @@
|
|
|
1
1
|
import { type SmartAccountSigner } from "permissionless/accounts";
|
|
2
|
-
import {
|
|
2
|
+
import type { Address } from "viem";
|
|
3
3
|
import type { ModularSigner, ModularSignerParams } from "../types.js";
|
|
4
4
|
export type ECDSAModularSignerParams<TSource extends string = "custom", TAddress extends Address = Address> = ModularSignerParams & {
|
|
5
5
|
signer: SmartAccountSigner<TSource, TAddress>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toECDSASigner.d.ts","sourceRoot":"","sources":["../../signers/toECDSASigner.ts"],"names":[],"mappings":"AAEA,OAAO,EAEH,KAAK,kBAAkB,EAC1B,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"toECDSASigner.d.ts","sourceRoot":"","sources":["../../signers/toECDSASigner.ts"],"names":[],"mappings":"AAEA,OAAO,EAEH,KAAK,kBAAkB,EAC1B,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EAAE,OAAO,EAAqC,MAAM,MAAM,CAAA;AAGtE,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAErE,MAAM,MAAM,wBAAwB,CAChC,OAAO,SAAS,MAAM,GAAG,QAAQ,EACjC,QAAQ,SAAS,OAAO,GAAG,OAAO,IAClC,mBAAmB,GAAG;IACtB,MAAM,EAAE,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;CAChD,CAAA;AAED,wBAAgB,aAAa,CACzB,OAAO,SAAS,MAAM,GAAG,QAAQ,EACjC,QAAQ,SAAS,OAAO,GAAG,OAAO,EACpC,EACE,MAAM,EACN,qBAA6C,EAChD,EAAE,wBAAwB,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,aAAa,CAoC7D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toEmptyECDSASigner.d.ts","sourceRoot":"","sources":["../../signers/toEmptyECDSASigner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"toEmptyECDSASigner.d.ts","sourceRoot":"","sources":["../../signers/toEmptyECDSASigner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAuB,MAAM,MAAM,CAAA;AAGxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,CA0BlE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toWebAuthnPubKey.d.ts","sourceRoot":"","sources":["../../signers/toWebAuthnPubKey.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"toWebAuthnPubKey.d.ts","sourceRoot":"","sources":["../../signers/toWebAuthnPubKey.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAGxD,oBAAY,YAAY;IACpB,QAAQ,aAAa;IACrB,KAAK,UAAU;CAClB;AAED,eAAO,MAAM,gBAAgB;iBAKZ,MAAM;sBACD,MAAM;UAClB,YAAY;MAClB,QAAQ,WAAW,CAsItB,CAAA"}
|
package/_types/types.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { KernelValidator } from "@zerodev/sdk";
|
|
2
2
|
import type { Action, PluginValidityData } from "@zerodev/sdk/types";
|
|
3
3
|
import type { EntryPoint } from "permissionless/types/entrypoint";
|
|
4
4
|
import type { Abi, Address, Hex, LocalAccount } from "viem";
|
|
5
|
-
import { PolicyFlags } from "./constants.js";
|
|
5
|
+
import type { PolicyFlags } from "./constants.js";
|
|
6
6
|
import type { CallPolicyParams, GasPolicyParams, RateLimitPolicyParams, SignatureCallerPolicyParams, SudoPolicyParams, TimestampPolicyParams } from "./policies/index.js";
|
|
7
7
|
export type PermissionPlugin<entryPoint extends EntryPoint> = KernelValidator<entryPoint, "PermissionValidator"> & {
|
|
8
8
|
getPluginSerializationParams: () => PermissionData;
|
package/_types/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
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,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAC3D,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,CAAC,UAAU,SAAS,UAAU,IAAI,eAAe,CACzE,UAAU,EACV,qBAAqB,CACxB,GAAG;IACA,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,CAAC,GAAG,GAAG,SAAS,OAAO,EAAE,EAAE,MAAM,CAAC,GAAG;QAClD,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,GAAG;IACjC,MAAM,EAAE,aAAa,CAAA;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,UAAU,EAAE,UAAU,CAAA;IACtB,IAAI,CAAC,EAAE,WAAW,CAAA;CACrB,CAAA;AAED,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CACtB;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;CACnB,CAAA"}
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
} from "./policies/index.js"
|
|
21
21
|
import { toECDSASigner } from "./signers/toECDSASigner.js"
|
|
22
22
|
import { toPermissionValidator } from "./toPermissionValidator.js"
|
|
23
|
-
import {
|
|
23
|
+
import type { Policy } from "./types.js"
|
|
24
24
|
import type { ModularSigner } from "./types.js"
|
|
25
25
|
import { deserializePermissionAccountParams } from "./utils.js"
|
|
26
26
|
|
package/index.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
export type * from "./types.js"
|
|
2
2
|
export { toPermissionValidator } from "./toPermissionValidator.js"
|
|
3
3
|
export { serializePermissionAccount } from "./serializePermissionAccount.js"
|
|
4
|
+
export {
|
|
5
|
+
type MultiChainPermissionAccountsParams,
|
|
6
|
+
serializeMultiChainPermissionAccounts
|
|
7
|
+
} from "./serializeMultiChainPermissionAccounts.js"
|
|
4
8
|
export { deserializePermissionAccount } from "./deserializePermissionAccount.js"
|
|
5
9
|
export * from "./constants.js"
|
package/package.json
CHANGED
package/policies/types.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { ExtractAbiFunction, ExtractAbiFunctionNames } from "abitype"
|
|
2
2
|
import type {
|
|
3
3
|
Abi,
|
|
4
4
|
AbiFunction,
|
|
@@ -73,8 +73,8 @@ export type GetFunctionArgs<
|
|
|
73
73
|
: TArgs extends readonly []
|
|
74
74
|
? { args?: never }
|
|
75
75
|
: {
|
|
76
|
-
|
|
77
|
-
|
|
76
|
+
args?: TArgs
|
|
77
|
+
}
|
|
78
78
|
|
|
79
79
|
export type Permission<
|
|
80
80
|
TAbi extends Abi | readonly unknown[],
|
|
@@ -88,9 +88,9 @@ export type Permission<
|
|
|
88
88
|
? { abi?: Narrow<TAbi> } & GetFunctionArgs<TAbi, TFunctionName>
|
|
89
89
|
: _FunctionName extends string
|
|
90
90
|
? { abi?: [Narrow<TAbi[number]>] } & GetFunctionArgs<
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
91
|
+
TAbi,
|
|
92
|
+
_FunctionName
|
|
93
|
+
>
|
|
94
94
|
: never)
|
|
95
95
|
|
|
96
96
|
export type CombinedArgs<
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import type { KernelSmartAccount } from "@zerodev/sdk"
|
|
2
|
+
import MerkleTree from "merkletreejs"
|
|
3
|
+
import type { EntryPoint } from "permissionless/types"
|
|
4
|
+
import {
|
|
5
|
+
type Hex,
|
|
6
|
+
concatHex,
|
|
7
|
+
encodeAbiParameters,
|
|
8
|
+
hashTypedData,
|
|
9
|
+
keccak256
|
|
10
|
+
} from "viem"
|
|
11
|
+
import type { PermissionPlugin } from "./types.js"
|
|
12
|
+
import {
|
|
13
|
+
isPermissionValidatorPlugin,
|
|
14
|
+
serializePermissionAccountParams
|
|
15
|
+
} from "./utils.js"
|
|
16
|
+
|
|
17
|
+
export type MultiChainPermissionAccountsParams<entryPoint extends EntryPoint> =
|
|
18
|
+
{
|
|
19
|
+
account: KernelSmartAccount<entryPoint>
|
|
20
|
+
privateKey?: Hex
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export const serializeMultiChainPermissionAccounts = async <
|
|
24
|
+
entryPoint extends EntryPoint
|
|
25
|
+
>(
|
|
26
|
+
params: MultiChainPermissionAccountsParams<entryPoint>[]
|
|
27
|
+
): Promise<string[]> => {
|
|
28
|
+
if (params.length === 0) return []
|
|
29
|
+
|
|
30
|
+
const permissionParamsPerAccounts = params.map((param) => {
|
|
31
|
+
if (!isPermissionValidatorPlugin(param.account.kernelPluginManager)) {
|
|
32
|
+
throw new Error("Account plugin is not a permission validator")
|
|
33
|
+
}
|
|
34
|
+
return (
|
|
35
|
+
param.account.kernelPluginManager as PermissionPlugin<entryPoint>
|
|
36
|
+
).getPluginSerializationParams()
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
const actions = params.map((param) =>
|
|
40
|
+
param.account.kernelPluginManager.getAction()
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
const validityDataPerAccounts = params.map((param) =>
|
|
44
|
+
param.account.kernelPluginManager.getValidityData()
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
const pluginEnableTypedDatas = await Promise.all(
|
|
48
|
+
params.map(async (param) => {
|
|
49
|
+
return param.account.kernelPluginManager.getPluginsEnableTypedData(
|
|
50
|
+
param.account.address
|
|
51
|
+
)
|
|
52
|
+
})
|
|
53
|
+
)
|
|
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
|
+
})
|
|
61
|
+
|
|
62
|
+
const merkleTree = new MerkleTree(leaves, keccak256, {
|
|
63
|
+
sortPairs: true
|
|
64
|
+
})
|
|
65
|
+
|
|
66
|
+
const merkleRoot = merkleTree.getHexRoot() as Hex
|
|
67
|
+
|
|
68
|
+
const ecdsaSig =
|
|
69
|
+
await param.account.kernelPluginManager.sudoValidator?.signMessage(
|
|
70
|
+
{
|
|
71
|
+
message: {
|
|
72
|
+
raw: merkleRoot
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
if (!ecdsaSig) {
|
|
78
|
+
throw new Error(
|
|
79
|
+
"No ecdsaSig, check if the sudo validator is multi-chain validator"
|
|
80
|
+
)
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const merkleProof = merkleTree.getHexProof(leaves[index]) as Hex[]
|
|
84
|
+
const encodedMerkleProof = encodeAbiParameters(
|
|
85
|
+
[{ name: "proof", type: "bytes32[]" }],
|
|
86
|
+
[merkleProof]
|
|
87
|
+
)
|
|
88
|
+
return concatHex([ecdsaSig, merkleRoot, encodedMerkleProof])
|
|
89
|
+
})
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
const accountParamsPerAccounts = await Promise.all(
|
|
93
|
+
params.map(async (param) => {
|
|
94
|
+
return {
|
|
95
|
+
initCode: await param.account.generateInitCode(),
|
|
96
|
+
accountAddress: param.account.address
|
|
97
|
+
}
|
|
98
|
+
})
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
const paramsToBeSerialized = params.map((param, index) => {
|
|
102
|
+
return serializePermissionAccountParams({
|
|
103
|
+
permissionParams: permissionParamsPerAccounts[index],
|
|
104
|
+
action: actions[index],
|
|
105
|
+
validityData: validityDataPerAccounts[index],
|
|
106
|
+
accountParams: accountParamsPerAccounts[index],
|
|
107
|
+
enableSignature: enableSignatures[index],
|
|
108
|
+
privateKey: param.privateKey
|
|
109
|
+
})
|
|
110
|
+
})
|
|
111
|
+
|
|
112
|
+
return paramsToBeSerialized
|
|
113
|
+
}
|
package/signers/toECDSASigner.ts
CHANGED
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
SignTransactionNotSupportedBySmartAccount,
|
|
5
5
|
type SmartAccountSigner
|
|
6
6
|
} from "permissionless/accounts"
|
|
7
|
-
import {
|
|
7
|
+
import type { Address, LocalAccount, TypedDataDefinition } from "viem"
|
|
8
8
|
import { toAccount } from "viem/accounts"
|
|
9
9
|
import { ECDSA_SIGNER_CONTRACT } from "../constants.js"
|
|
10
10
|
import type { ModularSigner, ModularSignerParams } from "../types.js"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { constants } from "@zerodev/sdk"
|
|
2
2
|
import type { TypedData } from "abitype"
|
|
3
|
-
import {
|
|
3
|
+
import type { Address, TypedDataDefinition } from "viem"
|
|
4
4
|
import { toAccount } from "viem/accounts"
|
|
5
5
|
import { ECDSA_SIGNER_CONTRACT } from "../constants.js"
|
|
6
6
|
import type { ModularSigner } from "../types.js"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Buffer } from "buffer"
|
|
2
2
|
import { type Hex, keccak256 } from "viem"
|
|
3
|
-
import {
|
|
3
|
+
import type { WebAuthnKey } from "./toWebAuthnSigner.js"
|
|
4
4
|
import { b64ToBytes, uint8ArrayToHexString } from "./webAuthnUtils.js"
|
|
5
5
|
|
|
6
6
|
export enum WebAuthnMode {
|
package/types.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { KernelValidator } from "@zerodev/sdk"
|
|
2
2
|
import type { Action, PluginValidityData } from "@zerodev/sdk/types"
|
|
3
3
|
import type { EntryPoint } from "permissionless/types/entrypoint"
|
|
4
4
|
import type { Abi, Address, Hex, LocalAccount } from "viem"
|
|
5
|
-
import { PolicyFlags } from "./constants.js"
|
|
5
|
+
import type { PolicyFlags } from "./constants.js"
|
|
6
6
|
import type {
|
|
7
7
|
CallPolicyParams,
|
|
8
8
|
GasPolicyParams,
|