@zerodev/permissions 5.5.10 → 5.5.12
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/deserializePermissionAccount.js +4 -1
- package/_cjs/deserializePermissionAccount.js.map +1 -1
- package/_cjs/policies/callPolicyUtils.js +40 -9
- package/_cjs/policies/callPolicyUtils.js.map +1 -1
- package/_cjs/policies/toCallPolicy.js +18 -7
- package/_cjs/policies/toCallPolicy.js.map +1 -1
- package/_cjs/serializePermissionAccount.js +20 -7
- package/_cjs/serializePermissionAccount.js.map +1 -1
- package/_esm/deserializePermissionAccount.js +4 -1
- package/_esm/deserializePermissionAccount.js.map +1 -1
- package/_esm/policies/callPolicyUtils.js +48 -10
- package/_esm/policies/callPolicyUtils.js.map +1 -1
- package/_esm/policies/toCallPolicy.js +22 -7
- package/_esm/policies/toCallPolicy.js.map +1 -1
- package/_esm/serializePermissionAccount.js +22 -7
- package/_esm/serializePermissionAccount.js.map +1 -1
- package/_types/deserializePermissionAccount.d.ts.map +1 -1
- package/_types/policies/callPolicyUtils.d.ts +1 -1
- package/_types/policies/callPolicyUtils.d.ts.map +1 -1
- package/_types/policies/toCallPolicy.d.ts.map +1 -1
- package/_types/policies/types.d.ts +13 -7
- package/_types/policies/types.d.ts.map +1 -1
- package/_types/serializePermissionAccount.d.ts +2 -1
- package/_types/serializePermissionAccount.d.ts.map +1 -1
- package/_types/types.d.ts +1 -0
- package/_types/types.d.ts.map +1 -1
- package/deserializePermissionAccount.ts +4 -1
- package/package.json +1 -1
- package/policies/callPolicyUtils.ts +62 -11
- package/policies/toCallPolicy.ts +23 -10
- package/policies/types.ts +19 -7
- package/serializePermissionAccount.ts +26 -11
- package/types.ts +1 -0
|
@@ -33,11 +33,14 @@ const deserializePermissionAccount = async (client, entryPoint, kernelVersion, m
|
|
|
33
33
|
const { index, validatorInitData, useMetaFactory } = (0, exports.decodeParamsFromInitCode)(params.accountParams.initCode, kernelVersion);
|
|
34
34
|
const kernelPluginManager = await (0, accounts_1.toKernelPluginManager)(client, {
|
|
35
35
|
regular: modularPermissionPlugin,
|
|
36
|
-
pluginEnableSignature: params.
|
|
36
|
+
pluginEnableSignature: params.isPreInstalled
|
|
37
|
+
? undefined
|
|
38
|
+
: params.enableSignature,
|
|
37
39
|
validatorInitData,
|
|
38
40
|
action: params.action,
|
|
39
41
|
entryPoint,
|
|
40
42
|
kernelVersion,
|
|
43
|
+
isPreInstalled: params.isPreInstalled,
|
|
41
44
|
...params.validityData
|
|
42
45
|
});
|
|
43
46
|
return (0, sdk_1.createKernelAccount)(client, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deserializePermissionAccount.js","sourceRoot":"","sources":["../deserializePermissionAccount.ts"],"names":[],"mappings":";;;AAAA,sCAMqB;AACrB,oDAG8B;AAQ9B,+BAAyC;AAEzC,4CAAmD;AAEnD,kDAO4B;AAC5B,iEAA0D;AAC1D,yEAAkE;AAGlE,yCAA+D;AAC/D,yCAAiD;AAE1C,MAAM,4BAA4B,GAAG,KAAK,EAG7C,MAAkD,EAClD,UAA6C,EAC7C,aAAkD,EAClD,8BAAsC,EACtC,aAA6B,EAC/B,EAAE;IACA,IAAI,UAAU,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;IACvD,CAAC;IACD,MAAM,MAAM,GAAG,IAAA,6CAAkC,EAC7C,8BAA8B,CACjC,CAAA;IACD,IAAI,MAAqB,CAAA;IACzB,IAAI,MAAM,CAAC,UAAU;QACjB,MAAM,GAAG,MAAM,IAAA,gCAAa,EAAC;YACzB,MAAM,EAAE,IAAA,8BAAmB,EAAC,MAAM,CAAC,UAAU,CAAC;SACjD,CAAC,CAAA;SACD,IAAI,aAAa;QAAE,MAAM,GAAG,aAAa,CAAA;;QACzC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IAEnE,MAAM,uBAAuB,GAAG,MAAM,IAAA,gDAAqB,EAAC,MAAM,EAAE;QAChE,MAAM;QACN,QAAQ,EAAE,MAAM,OAAO,CAAC,GAAG,CACvB,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAC7C,IAAA,8BAAsB,EAAC,MAAM,CAAC,CACjC,IAAI,EAAE,CACV;QACD,UAAU;QACV,aAAa;KAChB,CAAC,CAAA;IAEF,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,GAC9C,IAAA,gCAAwB,EAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;IAE1E,MAAM,mBAAmB,GAAG,MAAM,IAAA,gCAAqB,EAAC,MAAM,EAAE;QAC5D,OAAO,EAAE,uBAAuB;QAChC,qBAAqB,EAAE,MAAM,CAAC,eAAe;
|
|
1
|
+
{"version":3,"file":"deserializePermissionAccount.js","sourceRoot":"","sources":["../deserializePermissionAccount.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,22 +4,53 @@ exports.encodePermissionData = exports.getPermissionFromABI = void 0;
|
|
|
4
4
|
const viem_1 = require("viem");
|
|
5
5
|
const constants_js_1 = require("../constants.js");
|
|
6
6
|
const types_js_1 = require("./types.js");
|
|
7
|
-
function getPermissionFromABI({ abi, args, functionName, policyAddress }) {
|
|
7
|
+
function getPermissionFromABI({ abi, args, functionName, policyAddress, selector }) {
|
|
8
8
|
if (!abi || !functionName) {
|
|
9
9
|
return {
|
|
10
10
|
selector: undefined,
|
|
11
11
|
rules: undefined
|
|
12
12
|
};
|
|
13
13
|
}
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
const matchingFunctions = abi.filter((item) => item.type === "function" && item.name === functionName);
|
|
15
|
+
let targetFunction;
|
|
16
|
+
if (matchingFunctions.length > 1) {
|
|
17
|
+
if (selector) {
|
|
18
|
+
const normalizedSelector = selector.toLowerCase();
|
|
19
|
+
const foundFunction = matchingFunctions.find((fn) => {
|
|
20
|
+
const functionSelector = (0, viem_1.toFunctionSelector)(fn);
|
|
21
|
+
return functionSelector === normalizedSelector;
|
|
22
|
+
});
|
|
23
|
+
if (!foundFunction) {
|
|
24
|
+
throw new Error(`No function found with selector "${selector}" for function "${functionName}".`);
|
|
25
|
+
}
|
|
26
|
+
targetFunction = foundFunction;
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
const functionSignatures = matchingFunctions
|
|
30
|
+
.map((fn, index) => {
|
|
31
|
+
const inputs = fn.inputs
|
|
32
|
+
?.map((input) => input.name
|
|
33
|
+
? `${input.type} ${input.name}`
|
|
34
|
+
: input.type)
|
|
35
|
+
.join(", ") || "";
|
|
36
|
+
return ` ${index + 1}. ${functionName}(${inputs})`;
|
|
37
|
+
})
|
|
38
|
+
.join("\n");
|
|
39
|
+
throw new Error(`Multiple function overloads found for "${functionName}". Found ${matchingFunctions.length} functions with the same name but different signatures. To avoid ambiguity and potential security issues, please provide a "selector" field to specify which overload you want to use, or filter your ABI to include only the specific function overload you intend to use.
|
|
40
|
+
|
|
41
|
+
Matching functions:
|
|
42
|
+
${functionSignatures}
|
|
43
|
+
|
|
44
|
+
Solution: Either add a "selector" field with the specific function selector, or filter your ABI to include only the specific function signature you want to use.`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else if (matchingFunctions.length === 1) {
|
|
48
|
+
targetFunction = matchingFunctions[0];
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
throw new Error(`Function "${functionName}" not found in ABI`);
|
|
21
52
|
}
|
|
22
|
-
const functionSelector = (0, viem_1.toFunctionSelector)(
|
|
53
|
+
const functionSelector = (0, viem_1.toFunctionSelector)(targetFunction);
|
|
23
54
|
let paramRules = [];
|
|
24
55
|
if (args && Array.isArray(args)) {
|
|
25
56
|
paramRules = args
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callPolicyUtils.js","sourceRoot":"","sources":["../../policies/callPolicyUtils.ts"],"names":[],"mappings":";;;AAAA,+
|
|
1
|
+
{"version":3,"file":"callPolicyUtils.js","sourceRoot":"","sources":["../../policies/callPolicyUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,17 +29,28 @@ const getCallPolicyAddress = (policyVersion, policyAddress) => {
|
|
|
29
29
|
exports.getCallPolicyAddress = getCallPolicyAddress;
|
|
30
30
|
function toCallPolicy({ policyAddress, policyFlag = constants_js_1.PolicyFlags.FOR_ALL_VALIDATION, policyVersion, permissions = [] }) {
|
|
31
31
|
const callPolicyAddress = (0, exports.getCallPolicyAddress)(policyVersion, policyAddress);
|
|
32
|
-
const generatedPermissionParams = permissions?.map((perm) =>
|
|
33
|
-
abi
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
32
|
+
const generatedPermissionParams = permissions?.map((perm) => {
|
|
33
|
+
if (perm.abi && perm.functionName) {
|
|
34
|
+
return (0, callPolicyUtils_js_1.getPermissionFromABI)({
|
|
35
|
+
abi: perm.abi,
|
|
36
|
+
functionName: perm.functionName,
|
|
37
|
+
args: perm.args,
|
|
38
|
+
policyAddress: callPolicyAddress,
|
|
39
|
+
selector: perm.selector
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
selector: undefined,
|
|
44
|
+
rules: undefined
|
|
45
|
+
};
|
|
46
|
+
});
|
|
38
47
|
permissions =
|
|
39
48
|
permissions?.map((perm, index) => ({
|
|
40
49
|
...perm,
|
|
41
50
|
callType: perm.callType ?? types_js_1.CallType.CALL,
|
|
42
|
-
selector: perm.selector
|
|
51
|
+
selector: (perm.selector
|
|
52
|
+
? perm.selector.toLowerCase()
|
|
53
|
+
: perm.selector) ??
|
|
43
54
|
generatedPermissionParams?.[index]?.selector ??
|
|
44
55
|
(0, viem_1.pad)("0x", { size: 4 }),
|
|
45
56
|
valueLimit: perm.valueLimit ?? 0n,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toCallPolicy.js","sourceRoot":"","sources":["../../policies/toCallPolicy.ts"],"names":[],"mappings":";;;AACA,+BAAqC;AACrC,kDAMwB;AAExB,6DAG6B;AAC7B,yCAAsD;AAEtD,IAAY,iBAKX;AALD,WAAY,iBAAiB;IACzB,qCAAgB,CAAA;IAChB,qCAAgB,CAAA;IAChB,qCAAgB,CAAA;IAChB,qCAAgB,CAAA;AACpB,CAAC,EALW,iBAAiB,iCAAjB,iBAAiB,QAK5B;AAEM,MAAM,oBAAoB,GAAG,CAChC,aAAgC,EAChC,aAAuB,EAChB,EAAE;IACT,IAAI,aAAa;QAAE,OAAO,aAAa,CAAA;IACvC,QAAQ,aAAa,EAAE,CAAC;QACpB,KAAK,iBAAiB,CAAC,MAAM;YACzB,OAAO,0CAA2B,CAAA;QACtC,KAAK,iBAAiB,CAAC,MAAM;YACzB,OAAO,0CAA2B,CAAA;QACtC,KAAK,iBAAiB,CAAC,MAAM;YACzB,OAAO,0CAA2B,CAAA;QACtC,KAAK,iBAAiB,CAAC,MAAM;YACzB,OAAO,0CAA2B,CAAA;IAC1C,CAAC;AACL,CAAC,CAAA;AAfY,QAAA,oBAAoB,wBAehC;AAUD,SAAgB,YAAY,CAG1B,EACE,aAAa,EACb,UAAU,GAAG,0BAAW,CAAC,kBAAkB,EAC3C,aAAa,EACb,WAAW,GAAG,EAAE,EACoB;IACpC,MAAM,iBAAiB,GAAG,IAAA,4BAAoB,EAAC,aAAa,EAAE,aAAa,CAAC,CAAA;IAE5E,MAAM,yBAAyB,GAAG,WAAW,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"toCallPolicy.js","sourceRoot":"","sources":["../../policies/toCallPolicy.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,14 +2,26 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.serializePermissionAccount = void 0;
|
|
4
4
|
const utils_js_1 = require("./utils.js");
|
|
5
|
-
const serializePermissionAccount = async (account, privateKey, enableSignature, eip7702Auth) => {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const permissionParams = account.kernelPluginManager.getPluginSerializationParams();
|
|
5
|
+
const serializePermissionAccount = async (account, privateKey, enableSignature, eip7702Auth, permissionPlugin) => {
|
|
6
|
+
let permissionParams;
|
|
7
|
+
let isPreInstalled = false;
|
|
9
8
|
const action = account.kernelPluginManager.getAction();
|
|
10
9
|
const validityData = account.kernelPluginManager.getValidityData();
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
if ((0, utils_js_1.isPermissionValidatorPlugin)(account.kernelPluginManager)) {
|
|
11
|
+
permissionParams =
|
|
12
|
+
account.kernelPluginManager.getPluginSerializationParams();
|
|
13
|
+
}
|
|
14
|
+
else if (permissionPlugin) {
|
|
15
|
+
permissionParams = permissionPlugin.getPluginSerializationParams();
|
|
16
|
+
isPreInstalled = true;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
throw new Error("No permission validator found in account or provided");
|
|
20
|
+
}
|
|
21
|
+
const _enableSignature = isPreInstalled
|
|
22
|
+
? undefined
|
|
23
|
+
: (enableSignature ??
|
|
24
|
+
(await account.kernelPluginManager.getPluginEnableSignature(account.address)));
|
|
13
25
|
const _eip7702Auth = account.authorization
|
|
14
26
|
? (eip7702Auth ?? (await account?.eip7702Authorization?.()))
|
|
15
27
|
: undefined;
|
|
@@ -24,7 +36,8 @@ const serializePermissionAccount = async (account, privateKey, enableSignature,
|
|
|
24
36
|
accountParams,
|
|
25
37
|
enableSignature: _enableSignature,
|
|
26
38
|
privateKey,
|
|
27
|
-
eip7702Auth: _eip7702Auth
|
|
39
|
+
eip7702Auth: _eip7702Auth,
|
|
40
|
+
isPreInstalled
|
|
28
41
|
};
|
|
29
42
|
return (0, utils_js_1.serializePermissionAccountParams)(paramsToBeSerialized);
|
|
30
43
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializePermissionAccount.js","sourceRoot":"","sources":["../serializePermissionAccount.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"serializePermissionAccount.js","sourceRoot":"","sources":["../serializePermissionAccount.ts"],"names":[],"mappings":";;;AAKA,yCAGmB;AAEZ,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;IAGlE,IAAI,IAAA,sCAA2B,EAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC3D,gBAAgB;YACZ,OAAO,CAAC,mBAAmB,CAAC,4BAA4B,EAAE,CAAA;IAClE,CAAC;SAAM,IAAI,gBAAgB,EAAE,CAAC;QAE1B,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,IAAA,2CAAgC,EAAC,oBAAoB,CAAC,CAAA;AACjE,CAAC,CAAA;AAlDY,QAAA,0BAA0B,8BAkDtC"}
|
|
@@ -30,11 +30,14 @@ export const deserializePermissionAccount = async (client, entryPoint, kernelVer
|
|
|
30
30
|
const { index, validatorInitData, useMetaFactory } = decodeParamsFromInitCode(params.accountParams.initCode, kernelVersion);
|
|
31
31
|
const kernelPluginManager = await toKernelPluginManager(client, {
|
|
32
32
|
regular: modularPermissionPlugin,
|
|
33
|
-
pluginEnableSignature: params.
|
|
33
|
+
pluginEnableSignature: params.isPreInstalled
|
|
34
|
+
? undefined
|
|
35
|
+
: params.enableSignature,
|
|
34
36
|
validatorInitData,
|
|
35
37
|
action: params.action,
|
|
36
38
|
entryPoint,
|
|
37
39
|
kernelVersion,
|
|
40
|
+
isPreInstalled: params.isPreInstalled,
|
|
38
41
|
...params.validityData
|
|
39
42
|
});
|
|
40
43
|
return createKernelAccount(client, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deserializePermissionAccount.js","sourceRoot":"","sources":["../deserializePermissionAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACtB,MAAM,cAAc,CAAA;AACrB,OAAO,EAEH,qBAAqB,EACxB,MAAM,uBAAuB,CAAA;AAQ9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAA;AAEzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAEnD,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;AAGlE,OAAO,EAAE,kCAAkC,EAAE,MAAM,YAAY,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEjD,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,EAG7C,MAAkD,EAClD,UAA6C,EAC7C,aAAkD,EAClD,8BAAsC,EACtC,aAA6B,EAC/B,EAAE;IACA,IAAI,UAAU,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;IACvD,CAAC;IACD,MAAM,MAAM,GAAG,kCAAkC,CAC7C,8BAA8B,CACjC,CAAA;IACD,IAAI,MAAqB,CAAA;IACzB,IAAI,MAAM,CAAC,UAAU;QACjB,MAAM,GAAG,MAAM,aAAa,CAAC;YACzB,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC,UAAU,CAAC;SACjD,CAAC,CAAA;SACD,IAAI,aAAa;QAAE,MAAM,GAAG,aAAa,CAAA;;QACzC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IAEnE,MAAM,uBAAuB,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE;QAChE,MAAM;QACN,QAAQ,EAAE,MAAM,OAAO,CAAC,GAAG,CACvB,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAC7C,sBAAsB,CAAC,MAAM,CAAC,CACjC,IAAI,EAAE,CACV;QACD,UAAU;QACV,aAAa;KAChB,CAAC,CAAA;IAEF,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,GAC9C,wBAAwB,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;IAE1E,MAAM,mBAAmB,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE;QAC5D,OAAO,EAAE,uBAAuB;QAChC,qBAAqB,EAAE,MAAM,CAAC,eAAe;
|
|
1
|
+
{"version":3,"file":"deserializePermissionAccount.js","sourceRoot":"","sources":["../deserializePermissionAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACtB,MAAM,cAAc,CAAA;AACrB,OAAO,EAEH,qBAAqB,EACxB,MAAM,uBAAuB,CAAA;AAQ9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAA;AAEzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAEnD,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;AAGlE,OAAO,EAAE,kCAAkC,EAAE,MAAM,YAAY,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEjD,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,EAG7C,MAAkD,EAClD,UAA6C,EAC7C,aAAkD,EAClD,8BAAsC,EACtC,aAA6B,EAC/B,EAAE;IACA,IAAI,UAAU,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;IACvD,CAAC;IACD,MAAM,MAAM,GAAG,kCAAkC,CAC7C,8BAA8B,CACjC,CAAA;IACD,IAAI,MAAqB,CAAA;IACzB,IAAI,MAAM,CAAC,UAAU;QACjB,MAAM,GAAG,MAAM,aAAa,CAAC;YACzB,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC,UAAU,CAAC;SACjD,CAAC,CAAA;SACD,IAAI,aAAa;QAAE,MAAM,GAAG,aAAa,CAAA;;QACzC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IAEnE,MAAM,uBAAuB,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE;QAChE,MAAM;QACN,QAAQ,EAAE,MAAM,OAAO,CAAC,GAAG,CACvB,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAC7C,sBAAsB,CAAC,MAAM,CAAC,CACjC,IAAI,EAAE,CACV;QACD,UAAU;QACV,aAAa;KAChB,CAAC,CAAA;IAEF,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,GAC9C,wBAAwB,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;IAE1E,MAAM,mBAAmB,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE;QAC5D,OAAO,EAAE,uBAAuB;QAChC,qBAAqB,EAAE,MAAM,CAAC,cAAc;YACxC,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,MAAM,CAAC,eAAe;QAC5B,iBAAiB;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,UAAU;QACV,aAAa;QACb,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,GAAG,MAAM,CAAC,YAAY;KACzB,CAAC,CAAA;IAEF,OAAO,mBAAmB,CAAC,MAAM,EAAE;QAC/B,UAAU;QACV,aAAa;QACb,OAAO,EAAE,mBAAmB;QAC5B,KAAK;QACL,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC,cAAc;QAC5C,cAAc;QACd,WAAW,EAAE,MAAM,CAAC,WAAW;KAClC,CAAC,CAAA;AACN,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EAAE,MAAc,EAAE,EAAE;IAC3D,QAAQ,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QAC/B,KAAK,MAAM;YACP,OAAO,MAAM,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;QAClD,KAAK,KAAK;YACN,OAAO,MAAM,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;QACjD,KAAK,YAAY;YACb,OAAO,MAAM,iBAAiB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;QACvD,KAAK,kBAAkB;YACnB,OAAO,MAAM,uBAAuB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;QAC7D,KAAK,MAAM;YACP,OAAO,MAAM,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;QAClD,KAAK,WAAW;YACZ,OAAO,MAAM,iBAAiB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;QACvD;YACI,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAClD,CAAC;AACL,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACpC,QAAa,EACb,aAAkC,EACpC,EAAE;IACA,IAAI,KAAyB,CAAA;IAC7B,IAAI,iBAAgD,CAAA;IACpD,IAAI,6BAEyD,CAAA;IAC7D,IAAI,cAAc,GAAG,IAAI,CAAA;IACzB,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO;YACH,KAAK,EAAE,SAAS;YAChB,iBAAiB,EAAE,SAAS;YAC5B,cAAc,EAAE,IAAI;SACvB,CAAA;IACL,CAAC;IACD,IAAI,CAAC;QACD,6BAA6B,GAAG,kBAAkB,CAAC;YAC/C,GAAG,EAAE,sBAAsB;YAC3B,IAAI,EAAE,QAAQ;SACjB,CAAC,CAAA;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,6BAA6B,GAAG,kBAAkB,CAAC;YAC/C,GAAG,EAAE,kBAAkB;YACvB,IAAI,EAAE,QAAQ;SACjB,CAAC,CAAA;QACF,cAAc,GAAG,KAAK,CAAA;IAC1B,CAAC;IACD,IAAI,CAAC,6BAA6B;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;IACvE,IAAI,6BAA6B,CAAC,YAAY,KAAK,mBAAmB,EAAE,CAAC;QACrE,KAAK,GAAG,MAAM,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QACrD,IAAI,sBAE2D,CAAA;QAC/D,IAAI,aAAa,KAAK,OAAO,EAAE,CAAC;YAC5B,sBAAsB,GAAG,kBAAkB,CAAC;gBACxC,GAAG,EAAE,kBAAkB;gBACvB,IAAI,EAAE,6BAA6B,CAAC,IAAI,CAAC,CAAC,CAAC;aAC9C,CAAC,CAAA;QACN,CAAC;aAAM,CAAC;YACJ,sBAAsB,GAAG,kBAAkB,CAAC;gBACxC,GAAG,EAAE,oBAAoB;gBACzB,IAAI,EAAE,6BAA6B,CAAC,IAAI,CAAC,CAAC,CAAC;aAC9C,CAAC,CAAA;QACN,CAAC;QACD,IAAI,CAAC,sBAAsB;YAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;QAChE,IAAI,sBAAsB,CAAC,YAAY,KAAK,YAAY,EAAE,CAAC;YACvD,iBAAiB,GAAG;gBAChB,gBAAgB,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;gBAChD,UAAU,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC1C,UAAU,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC1C,UAAU,EACN,oBAAoB,CAAC,aAAa,EAAE,OAAO,CAAC;oBAC5C,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACzC,CAAC,CAAC,CAAC,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACrC,CAAC,CAAC,SAAS;aACtB,CAAA;QACL,CAAC;IACL,CAAC;SAAM,IAAI,6BAA6B,CAAC,YAAY,KAAK,eAAe,EAAE,CAAC;QACxE,KAAK,GAAG,MAAM,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QACrD,IAAI,sBAE2D,CAAA;QAC/D,IAAI,aAAa,KAAK,OAAO,EAAE,CAAC;YAC5B,sBAAsB,GAAG,kBAAkB,CAAC;gBACxC,GAAG,EAAE,kBAAkB;gBACvB,IAAI,EAAE,6BAA6B,CAAC,IAAI,CAAC,CAAC,CAAC;aAC9C,CAAC,CAAA;QACN,CAAC;aAAM,CAAC;YACJ,sBAAsB,GAAG,kBAAkB,CAAC;gBACxC,GAAG,EAAE,oBAAoB;gBACzB,IAAI,EAAE,6BAA6B,CAAC,IAAI,CAAC,CAAC,CAAC;aAC9C,CAAC,CAAA;QACN,CAAC;QACD,IAAI,CAAC,sBAAsB;YAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;QAChE,IAAI,sBAAsB,CAAC,YAAY,KAAK,YAAY,EAAE,CAAC;YACvD,iBAAiB,GAAG;gBAChB,gBAAgB,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;gBAChD,UAAU,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC1C,UAAU,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC1C,UAAU,EACN,oBAAoB,CAAC,aAAa,EAAE,OAAO,CAAC;oBAC5C,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACzC,CAAC,CAAC,CAAC,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACrC,CAAC,CAAC,SAAS;aACtB,CAAA;QACL,CAAC;IACL,CAAC;IACD,IAAI,KAAK,KAAK,SAAS,IAAI,iBAAiB,KAAK,SAAS;QACtD,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;IACvC,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,CAAA;AACvD,CAAC,CAAA"}
|
|
@@ -1,22 +1,60 @@
|
|
|
1
|
-
import { encodeAbiParameters,
|
|
1
|
+
import { encodeAbiParameters, isHex, pad, toFunctionSelector, toHex } from "viem";
|
|
2
2
|
import { CALL_POLICY_CONTRACT_V0_0_1 } from "../constants.js";
|
|
3
3
|
import { ParamCondition } from "./types.js";
|
|
4
|
-
export function getPermissionFromABI({ abi, args, functionName, policyAddress }) {
|
|
4
|
+
export function getPermissionFromABI({ abi, args, functionName, policyAddress, selector }) {
|
|
5
5
|
if (!abi || !functionName) {
|
|
6
6
|
return {
|
|
7
7
|
selector: undefined,
|
|
8
8
|
rules: undefined
|
|
9
9
|
};
|
|
10
10
|
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
11
|
+
// Check for function overloads
|
|
12
|
+
const matchingFunctions = abi.filter((item) => item.type === "function" && item.name === functionName);
|
|
13
|
+
let targetFunction;
|
|
14
|
+
if (matchingFunctions.length > 1) {
|
|
15
|
+
if (selector) {
|
|
16
|
+
// Normalize selector to lowercase for comparison (selectors are hex values)
|
|
17
|
+
const normalizedSelector = selector.toLowerCase();
|
|
18
|
+
// If selector is provided, find the specific function overload
|
|
19
|
+
const foundFunction = matchingFunctions.find((fn) => {
|
|
20
|
+
const functionSelector = toFunctionSelector(fn);
|
|
21
|
+
return functionSelector === normalizedSelector;
|
|
22
|
+
});
|
|
23
|
+
if (!foundFunction) {
|
|
24
|
+
throw new Error(`No function found with selector "${selector}" for function "${functionName}".`);
|
|
25
|
+
}
|
|
26
|
+
targetFunction = foundFunction;
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
// No selector provided for overloaded functions
|
|
30
|
+
const functionSignatures = matchingFunctions
|
|
31
|
+
.map((fn, index) => {
|
|
32
|
+
const inputs = fn.inputs
|
|
33
|
+
?.map((input) => input.name
|
|
34
|
+
? `${input.type} ${input.name}`
|
|
35
|
+
: input.type)
|
|
36
|
+
.join(", ") || "";
|
|
37
|
+
return ` ${index + 1}. ${functionName}(${inputs})`;
|
|
38
|
+
})
|
|
39
|
+
.join("\n");
|
|
40
|
+
throw new Error(`Multiple function overloads found for "${functionName}". Found ${matchingFunctions.length} functions with the same name but different signatures. To avoid ambiguity and potential security issues, please provide a "selector" field to specify which overload you want to use, or filter your ABI to include only the specific function overload you intend to use.
|
|
41
|
+
|
|
42
|
+
Matching functions:
|
|
43
|
+
${functionSignatures}
|
|
44
|
+
|
|
45
|
+
Solution: Either add a "selector" field with the specific function selector, or filter your ABI to include only the specific function signature you want to use.`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
else if (matchingFunctions.length === 1) {
|
|
49
|
+
// Single function found, use it directly
|
|
50
|
+
targetFunction = matchingFunctions[0];
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
// No functions found with the given name
|
|
54
|
+
throw new Error(`Function "${functionName}" not found in ABI`);
|
|
18
55
|
}
|
|
19
|
-
|
|
56
|
+
// Generate permission from the target function
|
|
57
|
+
const functionSelector = toFunctionSelector(targetFunction);
|
|
20
58
|
let paramRules = [];
|
|
21
59
|
if (args && Array.isArray(args)) {
|
|
22
60
|
paramRules = args
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callPolicyUtils.js","sourceRoot":"","sources":["../../policies/callPolicyUtils.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"callPolicyUtils.js","sourceRoot":"","sources":["../../policies/callPolicyUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,17 +25,32 @@ export const getCallPolicyAddress = (policyVersion, policyAddress) => {
|
|
|
25
25
|
};
|
|
26
26
|
export function toCallPolicy({ policyAddress, policyFlag = PolicyFlags.FOR_ALL_VALIDATION, policyVersion, permissions = [] }) {
|
|
27
27
|
const callPolicyAddress = getCallPolicyAddress(policyVersion, policyAddress);
|
|
28
|
-
const generatedPermissionParams = permissions?.map((perm) =>
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
28
|
+
const generatedPermissionParams = permissions?.map((perm) => {
|
|
29
|
+
// Natural discrimination: if abi and functionName are present, do ABI-based validation
|
|
30
|
+
if (perm.abi && perm.functionName) {
|
|
31
|
+
return getPermissionFromABI({
|
|
32
|
+
abi: perm.abi,
|
|
33
|
+
functionName: perm.functionName,
|
|
34
|
+
args: perm.args,
|
|
35
|
+
policyAddress: callPolicyAddress,
|
|
36
|
+
selector: perm.selector
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
// Otherwise, this is a manual permission - return empty to use manual selector/rules
|
|
40
|
+
return {
|
|
41
|
+
selector: undefined,
|
|
42
|
+
rules: undefined
|
|
43
|
+
};
|
|
44
|
+
});
|
|
34
45
|
permissions =
|
|
35
46
|
permissions?.map((perm, index) => ({
|
|
36
47
|
...perm,
|
|
37
48
|
callType: perm.callType ?? CallType.CALL,
|
|
38
|
-
selector:
|
|
49
|
+
selector:
|
|
50
|
+
// Normalize selector to lowercase if it exists (hex values should be lowercase)
|
|
51
|
+
(perm.selector
|
|
52
|
+
? perm.selector.toLowerCase()
|
|
53
|
+
: perm.selector) ??
|
|
39
54
|
generatedPermissionParams?.[index]?.selector ??
|
|
40
55
|
pad("0x", { size: 4 }),
|
|
41
56
|
valueLimit: perm.valueLimit ?? 0n,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toCallPolicy.js","sourceRoot":"","sources":["../../policies/toCallPolicy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AACrC,OAAO,EACH,2BAA2B,EAC3B,2BAA2B,EAC3B,2BAA2B,EAC3B,2BAA2B,EAC3B,WAAW,EACd,MAAM,iBAAiB,CAAA;AAExB,OAAO,EACH,oBAAoB,EACpB,oBAAoB,EACvB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,QAAQ,EAAmB,MAAM,YAAY,CAAA;AAEtD,MAAM,CAAN,IAAY,iBAKX;AALD,WAAY,iBAAiB;IACzB,qCAAgB,CAAA;IAChB,qCAAgB,CAAA;IAChB,qCAAgB,CAAA;IAChB,qCAAgB,CAAA;AACpB,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,QAK5B;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAChC,aAAgC,EAChC,aAAuB,EAChB,EAAE;IACT,IAAI,aAAa;QAAE,OAAO,aAAa,CAAA;IACvC,QAAQ,aAAa,EAAE,CAAC;QACpB,KAAK,iBAAiB,CAAC,MAAM;YACzB,OAAO,2BAA2B,CAAA;QACtC,KAAK,iBAAiB,CAAC,MAAM;YACzB,OAAO,2BAA2B,CAAA;QACtC,KAAK,iBAAiB,CAAC,MAAM;YACzB,OAAO,2BAA2B,CAAA;QACtC,KAAK,iBAAiB,CAAC,MAAM;YACzB,OAAO,2BAA2B,CAAA;IAC1C,CAAC;AACL,CAAC,CAAA;AAUD,MAAM,UAAU,YAAY,CAG1B,EACE,aAAa,EACb,UAAU,GAAG,WAAW,CAAC,kBAAkB,EAC3C,aAAa,EACb,WAAW,GAAG,EAAE,EACoB;IACpC,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAA;IAE5E,MAAM,yBAAyB,GAAG,WAAW,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"toCallPolicy.js","sourceRoot":"","sources":["../../policies/toCallPolicy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AACrC,OAAO,EACH,2BAA2B,EAC3B,2BAA2B,EAC3B,2BAA2B,EAC3B,2BAA2B,EAC3B,WAAW,EACd,MAAM,iBAAiB,CAAA;AAExB,OAAO,EACH,oBAAoB,EACpB,oBAAoB,EACvB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,QAAQ,EAAmB,MAAM,YAAY,CAAA;AAEtD,MAAM,CAAN,IAAY,iBAKX;AALD,WAAY,iBAAiB;IACzB,qCAAgB,CAAA;IAChB,qCAAgB,CAAA;IAChB,qCAAgB,CAAA;IAChB,qCAAgB,CAAA;AACpB,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,QAK5B;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAChC,aAAgC,EAChC,aAAuB,EAChB,EAAE;IACT,IAAI,aAAa;QAAE,OAAO,aAAa,CAAA;IACvC,QAAQ,aAAa,EAAE,CAAC;QACpB,KAAK,iBAAiB,CAAC,MAAM;YACzB,OAAO,2BAA2B,CAAA;QACtC,KAAK,iBAAiB,CAAC,MAAM;YACzB,OAAO,2BAA2B,CAAA;QACtC,KAAK,iBAAiB,CAAC,MAAM;YACzB,OAAO,2BAA2B,CAAA;QACtC,KAAK,iBAAiB,CAAC,MAAM;YACzB,OAAO,2BAA2B,CAAA;IAC1C,CAAC;AACL,CAAC,CAAA;AAUD,MAAM,UAAU,YAAY,CAG1B,EACE,aAAa,EACb,UAAU,GAAG,WAAW,CAAC,kBAAkB,EAC3C,aAAa,EACb,WAAW,GAAG,EAAE,EACoB;IACpC,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAA;IAE5E,MAAM,yBAAyB,GAAG,WAAW,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxD,uFAAuF;QACvF,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAChC,OAAO,oBAAoB,CAAC;gBACxB,GAAG,EAAE,IAAI,CAAC,GAAU;gBACpB,YAAY,EAAE,IAAI,CAAC,YAAsB;gBACzC,IAAI,EAAE,IAAI,CAAC,IAAU;gBACrB,aAAa,EAAE,iBAAiB;gBAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ;aAC1B,CAAC,CAAA;QACN,CAAC;QAED,qFAAqF;QACrF,OAAO;YACH,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE,SAAS;SACnB,CAAA;IACL,CAAC,CAAC,CAAA;IAEF,WAAW;QACP,WAAW,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAC/B,GAAG,IAAI;YACP,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI;YACxC,QAAQ;YACJ,gFAAgF;YAChF,CAAC,IAAI,CAAC,QAAQ;gBACV,CAAC,CAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAU;gBACtC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACpB,yBAAyB,EAAE,CAAC,KAAK,CAAC,EAAE,QAAQ;gBAC5C,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YAC1B,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,EAAE;YACjC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,yBAAyB,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,EAAE;SACvE,CAAC,CAAC,IAAI,EAAE,CAAA;IAEb,MAAM,qBAAqB,GAAG,oBAAoB,CAC9C,WAAW,EACX,iBAAiB,CACpB,CAAA;IAED,OAAO;QACH,aAAa,EAAE,GAAG,EAAE;YAChB,OAAO,qBAAqB,CAAA;QAChC,CAAC;QACD,oBAAoB,EAAE,GAAG,EAAE;YACvB,OAAO,SAAS,CAAC,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAA;QACrD,CAAC;QACD,YAAY,EAAE;YACV,IAAI,EAAE,MAAM;YACZ,aAAa;YACb,aAAa;YACb,UAAU;YACV,WAAW;SAGd;KACJ,CAAA;AACL,CAAC"}
|
|
@@ -1,12 +1,26 @@
|
|
|
1
1
|
import { isPermissionValidatorPlugin, serializePermissionAccountParams } from "./utils.js";
|
|
2
|
-
export const serializePermissionAccount = async (account, privateKey, enableSignature, eip7702Auth) => {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const permissionParams = account.kernelPluginManager.getPluginSerializationParams();
|
|
2
|
+
export const serializePermissionAccount = async (account, privateKey, enableSignature, eip7702Auth, permissionPlugin) => {
|
|
3
|
+
let permissionParams;
|
|
4
|
+
let isPreInstalled = false;
|
|
6
5
|
const action = account.kernelPluginManager.getAction();
|
|
7
6
|
const validityData = account.kernelPluginManager.getValidityData();
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
// Check if permission plugin is in kernelPluginManager
|
|
8
|
+
if (isPermissionValidatorPlugin(account.kernelPluginManager)) {
|
|
9
|
+
permissionParams =
|
|
10
|
+
account.kernelPluginManager.getPluginSerializationParams();
|
|
11
|
+
}
|
|
12
|
+
else if (permissionPlugin) {
|
|
13
|
+
// Permission plugin provided externally (initConfig case)
|
|
14
|
+
permissionParams = permissionPlugin.getPluginSerializationParams();
|
|
15
|
+
isPreInstalled = true;
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
throw new Error("No permission validator found in account or provided");
|
|
19
|
+
}
|
|
20
|
+
const _enableSignature = isPreInstalled
|
|
21
|
+
? undefined
|
|
22
|
+
: (enableSignature ??
|
|
23
|
+
(await account.kernelPluginManager.getPluginEnableSignature(account.address)));
|
|
10
24
|
const _eip7702Auth = account.authorization
|
|
11
25
|
? (eip7702Auth ?? (await account?.eip7702Authorization?.()))
|
|
12
26
|
: undefined;
|
|
@@ -21,7 +35,8 @@ export const serializePermissionAccount = async (account, privateKey, enableSign
|
|
|
21
35
|
accountParams,
|
|
22
36
|
enableSignature: _enableSignature,
|
|
23
37
|
privateKey,
|
|
24
|
-
eip7702Auth: _eip7702Auth
|
|
38
|
+
eip7702Auth: _eip7702Auth,
|
|
39
|
+
isPreInstalled
|
|
25
40
|
};
|
|
26
41
|
return serializePermissionAccountParams(paramsToBeSerialized);
|
|
27
42
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializePermissionAccount.js","sourceRoot":"","sources":["../serializePermissionAccount.ts"],"names":[],"mappings":"
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deserializePermissionAccount.d.ts","sourceRoot":"","sources":["../deserializePermissionAccount.ts"],"names":[],"mappings":"AAOA,OAAO,EACH,KAAK,gCAAgC,EAExC,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EACR,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACpB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAE/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAajE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAI/C,eAAO,MAAM,4BAA4B,wDAG7B,gCAAgC,CAAC,QAAQ,CAAC,qIAGlB,MAAM,kBACtB,aAAa,
|
|
1
|
+
{"version":3,"file":"deserializePermissionAccount.d.ts","sourceRoot":"","sources":["../deserializePermissionAccount.ts"],"names":[],"mappings":"AAOA,OAAO,EACH,KAAK,gCAAgC,EAExC,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EACR,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACpB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAE/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAajE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAI/C,eAAO,MAAM,4BAA4B,wDAG7B,gCAAgC,CAAC,QAAQ,CAAC,qIAGlB,MAAM,kBACtB,aAAa,qFAoDhC,CAAA;AAED,eAAO,MAAM,sBAAsB,WAAkB,MAAM,oBAiB1D,CAAA;AAED,eAAO,MAAM,wBAAwB,aACvB,GAAG,iBACE,mBAAmB;;;;;;;;CA0FrC,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Abi, type Address, type Hex } from "viem";
|
|
2
2
|
import { type GeneratePermissionWithPolicyAddressParameters, type PermissionCore } from "./types.js";
|
|
3
|
-
export declare function getPermissionFromABI<TAbi extends Abi | readonly unknown[], TFunctionName extends string | undefined = string>({ abi, args, functionName, policyAddress }: GeneratePermissionWithPolicyAddressParameters<TAbi, TFunctionName>): Pick<PermissionCore, "selector" | "rules">;
|
|
3
|
+
export declare function getPermissionFromABI<TAbi extends Abi | readonly unknown[], TFunctionName extends string | undefined = string>({ abi, args, functionName, policyAddress, selector }: GeneratePermissionWithPolicyAddressParameters<TAbi, TFunctionName>): Pick<PermissionCore, "selector" | "rules">;
|
|
4
4
|
export declare const encodePermissionData: (permission: PermissionCore | PermissionCore[], policyAddress: Address) => Hex;
|
|
5
5
|
//# sourceMappingURL=callPolicyUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callPolicyUtils.d.ts","sourceRoot":"","sources":["../../policies/callPolicyUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,GAAG,EAER,KAAK,OAAO,
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toCallPolicy.d.ts","sourceRoot":"","sources":["../../policies/toCallPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,
|
|
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"}
|
|
@@ -34,13 +34,18 @@ export type GetFunctionArgs<TAbi extends Abi | readonly unknown[], TFunctionName
|
|
|
34
34
|
} : {
|
|
35
35
|
args?: TArgs;
|
|
36
36
|
};
|
|
37
|
-
export type
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
37
|
+
export type PermissionWithABI<TAbi extends Abi | readonly unknown[], TFunctionName extends string | undefined = string, _FunctionName = TAbi extends Abi ? InferFunctionName<TAbi, TFunctionName> : never> = PermissionCore & {
|
|
38
|
+
abi: TAbi extends Abi ? Narrow<TAbi> : [Narrow<TAbi[number]>];
|
|
39
|
+
functionName: _FunctionName;
|
|
40
|
+
selector?: Hex;
|
|
41
|
+
rules?: never;
|
|
42
|
+
} & (TFunctionName extends string ? GetFunctionArgs<TAbi, TFunctionName> : _FunctionName extends string ? GetFunctionArgs<TAbi, _FunctionName> : never);
|
|
43
|
+
export type PermissionManual = PermissionCore & {
|
|
44
|
+
abi?: never;
|
|
45
|
+
functionName?: never;
|
|
46
|
+
args?: never;
|
|
47
|
+
};
|
|
48
|
+
export type Permission<TAbi extends Abi | readonly unknown[], TFunctionName extends string | undefined = string> = PermissionWithABI<TAbi, TFunctionName> | PermissionManual;
|
|
44
49
|
type ConditionValue<TAbiParameter extends AbiParameter, TAbiParameterKind extends AbiParameterKind> = {
|
|
45
50
|
condition: ParamCondition.ONE_OF;
|
|
46
51
|
value: AbiParameterToPrimitiveType<TAbiParameter, TAbiParameterKind>[];
|
|
@@ -56,6 +61,7 @@ export type GeneratePermissionWithPolicyAddressParameters<TAbi extends Abi | rea
|
|
|
56
61
|
};
|
|
57
62
|
export type GeneratePermissionFromArgsParameters<TAbi extends Abi | readonly unknown[], TFunctionName extends string | undefined = string, _FunctionName = TAbi extends Abi ? InferFunctionName<TAbi, TFunctionName> : never> = {
|
|
58
63
|
functionName?: _FunctionName;
|
|
64
|
+
selector?: Hex;
|
|
59
65
|
} & (TFunctionName extends string ? {
|
|
60
66
|
abi: Narrow<TAbi>;
|
|
61
67
|
} & GetFunctionArgs<TAbi, TFunctionName> : _FunctionName extends string ? {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../policies/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAC1E,OAAO,KAAK,EACR,GAAG,EACH,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,2BAA2B,EAC3B,kBAAkB,EAClB,OAAO,EACP,GAAG,EACH,MAAM,EACT,MAAM,MAAM,CAAA;AAEb,oBAAY,QAAQ;IAChB,IAAI,SAAS;IACb,UAAU,SAAS;IACnB,aAAa,SAAS;CACzB;AAED,oBAAY,cAAc;IACtB,KAAK,IAAI;IACT,YAAY,IAAI;IAChB,SAAS,IAAI;IACb,qBAAqB,IAAI;IACzB,kBAAkB,IAAI;IACtB,SAAS,IAAI;IACb,MAAM,IAAI;CACb;AAED,MAAM,WAAW,SAAS;IACtB,SAAS,EAAE,cAAc,CAAA;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,GAAG,GAAG,GAAG,EAAE,CAAA;CACtB;AAED,MAAM,MAAM,cAAc,GAAG;IACzB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,CAAC,EAAE,GAAG,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,SAAS,EAAE,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,iBAAiB,CACzB,IAAI,SAAS,GAAG,GAAG,SAAS,OAAO,EAAE,GAAG,GAAG,EAC3C,aAAa,SAAS,MAAM,GAAG,SAAS,GAAG,MAAM,EACjD,mBAAmB,SAAS,kBAAkB,GAAG,kBAAkB,IACnE,IAAI,SAAS,GAAG,GACd,uBAAuB,CACnB,IAAI,EACJ,mBAAmB,CACtB,SAAS,MAAM,gBAAgB,GAEtB,gBAAgB,GAChB,CAAC,aAAa,SAAS,gBAAgB,GAAG,aAAa,GAAG,KAAK,CAAC,GAChE,CAAC,GAAG,SAAS,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,GACzC,KAAK,GACT,aAAa,CAAA;AAEnB,MAAM,MAAM,eAAe,CACvB,IAAI,SAAS,GAAG,GAAG,SAAS,OAAO,EAAE,EACrC,aAAa,SAAS,MAAM,EAC5B,YAAY,SAAS,WAAW,GAAG,IAAI,SAAS,GAAG,GAC7C,kBAAkB,CAAC,IAAI,EAAE,aAAa,CAAC,GACvC,WAAW,EACjB,KAAK,GAAG,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,EAC5C,iBAAiB,GACX,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,GACxC,CAAC,SAAS,OAAO,EAAE,SAAS,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC,IACvD,IAAI,SAAS,iBAAiB,GAC5B;IACI,IAAI,CAAC,EAAE,SAAS,OAAO,EAAE,CAAA;CAC5B,GACD,KAAK,SAAS,SAAS,EAAE,GACvB;IAAE,IAAI,CAAC,EAAE,KAAK,CAAA;CAAE,GAChB;IACI,IAAI,CAAC,EAAE,KAAK,CAAA;CACf,CAAA;AAET,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../policies/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,5 +2,6 @@ import type { KernelSmartAccountImplementation } from "@zerodev/sdk";
|
|
|
2
2
|
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
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;
|
|
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"}
|
package/_types/types.d.ts
CHANGED
package/_types/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAC3D,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,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,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;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;IAChB,WAAW,CAAC,EAAE,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"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"}
|
|
@@ -74,11 +74,14 @@ export const deserializePermissionAccount = async <
|
|
|
74
74
|
|
|
75
75
|
const kernelPluginManager = await toKernelPluginManager(client, {
|
|
76
76
|
regular: modularPermissionPlugin,
|
|
77
|
-
pluginEnableSignature: params.
|
|
77
|
+
pluginEnableSignature: params.isPreInstalled
|
|
78
|
+
? undefined
|
|
79
|
+
: params.enableSignature,
|
|
78
80
|
validatorInitData,
|
|
79
81
|
action: params.action,
|
|
80
82
|
entryPoint,
|
|
81
83
|
kernelVersion,
|
|
84
|
+
isPreInstalled: params.isPreInstalled,
|
|
82
85
|
...params.validityData
|
|
83
86
|
})
|
|
84
87
|
|
package/package.json
CHANGED
|
@@ -2,10 +2,8 @@ import {
|
|
|
2
2
|
type Abi,
|
|
3
3
|
type AbiFunction,
|
|
4
4
|
type Address,
|
|
5
|
-
type GetAbiItemParameters,
|
|
6
5
|
type Hex,
|
|
7
6
|
encodeAbiParameters,
|
|
8
|
-
getAbiItem,
|
|
9
7
|
isHex,
|
|
10
8
|
pad,
|
|
11
9
|
toFunctionSelector,
|
|
@@ -27,7 +25,8 @@ export function getPermissionFromABI<
|
|
|
27
25
|
abi,
|
|
28
26
|
args,
|
|
29
27
|
functionName,
|
|
30
|
-
policyAddress
|
|
28
|
+
policyAddress,
|
|
29
|
+
selector
|
|
31
30
|
}: GeneratePermissionWithPolicyAddressParameters<TAbi, TFunctionName>): Pick<
|
|
32
31
|
PermissionCore,
|
|
33
32
|
"selector" | "rules"
|
|
@@ -38,15 +37,67 @@ export function getPermissionFromABI<
|
|
|
38
37
|
rules: undefined
|
|
39
38
|
}
|
|
40
39
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
name
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
40
|
+
|
|
41
|
+
// Check for function overloads
|
|
42
|
+
const matchingFunctions = (abi as Abi).filter(
|
|
43
|
+
(item) => item.type === "function" && item.name === functionName
|
|
44
|
+
) as AbiFunction[]
|
|
45
|
+
|
|
46
|
+
let targetFunction: AbiFunction
|
|
47
|
+
|
|
48
|
+
if (matchingFunctions.length > 1) {
|
|
49
|
+
if (selector) {
|
|
50
|
+
// Normalize selector to lowercase for comparison (selectors are hex values)
|
|
51
|
+
const normalizedSelector = selector.toLowerCase()
|
|
52
|
+
|
|
53
|
+
// If selector is provided, find the specific function overload
|
|
54
|
+
const foundFunction = matchingFunctions.find((fn) => {
|
|
55
|
+
const functionSelector = toFunctionSelector(fn)
|
|
56
|
+
return functionSelector === normalizedSelector
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
if (!foundFunction) {
|
|
60
|
+
throw new Error(
|
|
61
|
+
`No function found with selector "${selector}" for function "${functionName}".`
|
|
62
|
+
)
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
targetFunction = foundFunction
|
|
66
|
+
} else {
|
|
67
|
+
// No selector provided for overloaded functions
|
|
68
|
+
const functionSignatures = matchingFunctions
|
|
69
|
+
.map((fn, index) => {
|
|
70
|
+
const inputs =
|
|
71
|
+
fn.inputs
|
|
72
|
+
?.map((input) =>
|
|
73
|
+
input.name
|
|
74
|
+
? `${input.type} ${input.name}`
|
|
75
|
+
: input.type
|
|
76
|
+
)
|
|
77
|
+
.join(", ") || ""
|
|
78
|
+
return ` ${index + 1}. ${functionName}(${inputs})`
|
|
79
|
+
})
|
|
80
|
+
.join("\n")
|
|
81
|
+
|
|
82
|
+
throw new Error(
|
|
83
|
+
`Multiple function overloads found for "${functionName}". Found ${matchingFunctions.length} functions with the same name but different signatures. To avoid ambiguity and potential security issues, please provide a "selector" field to specify which overload you want to use, or filter your ABI to include only the specific function overload you intend to use.
|
|
84
|
+
|
|
85
|
+
Matching functions:
|
|
86
|
+
${functionSignatures}
|
|
87
|
+
|
|
88
|
+
Solution: Either add a "selector" field with the specific function selector, or filter your ABI to include only the specific function signature you want to use.`
|
|
89
|
+
)
|
|
90
|
+
}
|
|
91
|
+
} else if (matchingFunctions.length === 1) {
|
|
92
|
+
// Single function found, use it directly
|
|
93
|
+
targetFunction = matchingFunctions[0]
|
|
94
|
+
} else {
|
|
95
|
+
// No functions found with the given name
|
|
96
|
+
throw new Error(`Function "${functionName}" not found in ABI`)
|
|
48
97
|
}
|
|
49
|
-
|
|
98
|
+
|
|
99
|
+
// Generate permission from the target function
|
|
100
|
+
const functionSelector = toFunctionSelector(targetFunction)
|
|
50
101
|
let paramRules: ParamRule[] = []
|
|
51
102
|
if (args && Array.isArray(args)) {
|
|
52
103
|
paramRules = (args as CombinedArgs<AbiFunction["inputs"]>)
|
package/policies/toCallPolicy.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Abi, Address } from "viem"
|
|
1
|
+
import type { Abi, Address, Hex } from "viem"
|
|
2
2
|
import { concatHex, pad } from "viem"
|
|
3
3
|
import {
|
|
4
4
|
CALL_POLICY_CONTRACT_V0_0_1,
|
|
@@ -57,21 +57,34 @@ export function toCallPolicy<
|
|
|
57
57
|
}: CallPolicyParams<TAbi, TFunctionName>): Policy {
|
|
58
58
|
const callPolicyAddress = getCallPolicyAddress(policyVersion, policyAddress)
|
|
59
59
|
|
|
60
|
-
const generatedPermissionParams = permissions?.map((perm) =>
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
60
|
+
const generatedPermissionParams = permissions?.map((perm) => {
|
|
61
|
+
// Natural discrimination: if abi and functionName are present, do ABI-based validation
|
|
62
|
+
if (perm.abi && perm.functionName) {
|
|
63
|
+
return getPermissionFromABI({
|
|
64
|
+
abi: perm.abi as Abi,
|
|
65
|
+
functionName: perm.functionName as string,
|
|
66
|
+
args: perm.args as [],
|
|
67
|
+
policyAddress: callPolicyAddress,
|
|
68
|
+
selector: perm.selector
|
|
69
|
+
})
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Otherwise, this is a manual permission - return empty to use manual selector/rules
|
|
73
|
+
return {
|
|
74
|
+
selector: undefined,
|
|
75
|
+
rules: undefined
|
|
76
|
+
}
|
|
77
|
+
})
|
|
68
78
|
|
|
69
79
|
permissions =
|
|
70
80
|
permissions?.map((perm, index) => ({
|
|
71
81
|
...perm,
|
|
72
82
|
callType: perm.callType ?? CallType.CALL,
|
|
73
83
|
selector:
|
|
74
|
-
|
|
84
|
+
// Normalize selector to lowercase if it exists (hex values should be lowercase)
|
|
85
|
+
(perm.selector
|
|
86
|
+
? (perm.selector.toLowerCase() as Hex)
|
|
87
|
+
: perm.selector) ??
|
|
75
88
|
generatedPermissionParams?.[index]?.selector ??
|
|
76
89
|
pad("0x", { size: 4 }),
|
|
77
90
|
valueLimit: perm.valueLimit ?? 0n,
|
package/policies/types.ts
CHANGED
|
@@ -77,23 +77,34 @@ export type GetFunctionArgs<
|
|
|
77
77
|
args?: TArgs
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
-
export type
|
|
80
|
+
export type PermissionWithABI<
|
|
81
81
|
TAbi extends Abi | readonly unknown[],
|
|
82
82
|
TFunctionName extends string | undefined = string,
|
|
83
83
|
_FunctionName = TAbi extends Abi
|
|
84
84
|
? InferFunctionName<TAbi, TFunctionName>
|
|
85
85
|
: never
|
|
86
86
|
> = PermissionCore & {
|
|
87
|
-
|
|
87
|
+
abi: TAbi extends Abi ? Narrow<TAbi> : [Narrow<TAbi[number]>]
|
|
88
|
+
functionName: _FunctionName
|
|
89
|
+
selector?: Hex
|
|
90
|
+
rules?: never
|
|
88
91
|
} & (TFunctionName extends string
|
|
89
|
-
?
|
|
92
|
+
? GetFunctionArgs<TAbi, TFunctionName>
|
|
90
93
|
: _FunctionName extends string
|
|
91
|
-
?
|
|
92
|
-
TAbi,
|
|
93
|
-
_FunctionName
|
|
94
|
-
>
|
|
94
|
+
? GetFunctionArgs<TAbi, _FunctionName>
|
|
95
95
|
: never)
|
|
96
96
|
|
|
97
|
+
export type PermissionManual = PermissionCore & {
|
|
98
|
+
abi?: never
|
|
99
|
+
functionName?: never
|
|
100
|
+
args?: never
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export type Permission<
|
|
104
|
+
TAbi extends Abi | readonly unknown[],
|
|
105
|
+
TFunctionName extends string | undefined = string
|
|
106
|
+
> = PermissionWithABI<TAbi, TFunctionName> | PermissionManual
|
|
107
|
+
|
|
97
108
|
type ConditionValue<
|
|
98
109
|
TAbiParameter extends AbiParameter,
|
|
99
110
|
TAbiParameterKind extends AbiParameterKind
|
|
@@ -132,6 +143,7 @@ export type GeneratePermissionFromArgsParameters<
|
|
|
132
143
|
: never
|
|
133
144
|
> = {
|
|
134
145
|
functionName?: _FunctionName
|
|
146
|
+
selector?: Hex
|
|
135
147
|
} & (TFunctionName extends string
|
|
136
148
|
? { abi: Narrow<TAbi> } & GetFunctionArgs<TAbi, TFunctionName>
|
|
137
149
|
: _FunctionName extends string
|
|
@@ -2,6 +2,7 @@ import type { KernelSmartAccountImplementation } from "@zerodev/sdk"
|
|
|
2
2
|
import type { Hex } from "viem"
|
|
3
3
|
import type { SmartAccount } from "viem/account-abstraction"
|
|
4
4
|
import type { SignAuthorizationReturnType } from "viem/accounts"
|
|
5
|
+
import type { PermissionData, PermissionPlugin } from "./types.js"
|
|
5
6
|
import {
|
|
6
7
|
isPermissionValidatorPlugin,
|
|
7
8
|
serializePermissionAccountParams
|
|
@@ -11,19 +12,32 @@ export const serializePermissionAccount = async (
|
|
|
11
12
|
account: SmartAccount<KernelSmartAccountImplementation>,
|
|
12
13
|
privateKey?: Hex,
|
|
13
14
|
enableSignature?: Hex,
|
|
14
|
-
eip7702Auth?: SignAuthorizationReturnType
|
|
15
|
+
eip7702Auth?: SignAuthorizationReturnType,
|
|
16
|
+
permissionPlugin?: PermissionPlugin
|
|
15
17
|
): Promise<string> => {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const permissionParams =
|
|
19
|
-
account.kernelPluginManager.getPluginSerializationParams()
|
|
18
|
+
let permissionParams: PermissionData
|
|
19
|
+
let isPreInstalled = false
|
|
20
20
|
const action = account.kernelPluginManager.getAction()
|
|
21
21
|
const validityData = account.kernelPluginManager.getValidityData()
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
|
|
23
|
+
// Check if permission plugin is in kernelPluginManager
|
|
24
|
+
if (isPermissionValidatorPlugin(account.kernelPluginManager)) {
|
|
25
|
+
permissionParams =
|
|
26
|
+
account.kernelPluginManager.getPluginSerializationParams()
|
|
27
|
+
} else if (permissionPlugin) {
|
|
28
|
+
// Permission plugin provided externally (initConfig case)
|
|
29
|
+
permissionParams = permissionPlugin.getPluginSerializationParams()
|
|
30
|
+
isPreInstalled = true
|
|
31
|
+
} else {
|
|
32
|
+
throw new Error("No permission validator found in account or provided")
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const _enableSignature = isPreInstalled
|
|
36
|
+
? undefined
|
|
37
|
+
: (enableSignature ??
|
|
38
|
+
(await account.kernelPluginManager.getPluginEnableSignature(
|
|
39
|
+
account.address
|
|
40
|
+
)))
|
|
27
41
|
const _eip7702Auth = account.authorization
|
|
28
42
|
? (eip7702Auth ?? (await account?.eip7702Authorization?.()))
|
|
29
43
|
: undefined
|
|
@@ -39,7 +53,8 @@ export const serializePermissionAccount = async (
|
|
|
39
53
|
accountParams,
|
|
40
54
|
enableSignature: _enableSignature,
|
|
41
55
|
privateKey,
|
|
42
|
-
eip7702Auth: _eip7702Auth
|
|
56
|
+
eip7702Auth: _eip7702Auth,
|
|
57
|
+
isPreInstalled
|
|
43
58
|
}
|
|
44
59
|
|
|
45
60
|
return serializePermissionAccountParams(paramsToBeSerialized)
|