@zerodev/permissions 5.3.2-alpha-2 → 5.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_cjs/constants.js +3 -2
- package/_cjs/constants.js.map +1 -1
- package/_cjs/policies/callPolicyUtils.js +41 -10
- package/_cjs/policies/callPolicyUtils.js.map +1 -1
- package/_cjs/policies/index.js +2 -1
- package/_cjs/policies/index.js.map +1 -1
- package/_cjs/policies/toCallPolicy.js +24 -6
- package/_cjs/policies/toCallPolicy.js.map +1 -1
- package/_cjs/policies/types.js +1 -0
- package/_cjs/policies/types.js.map +1 -1
- package/_esm/constants.js +8 -1
- package/_esm/constants.js.map +1 -1
- package/_esm/policies/callPolicyUtils.js +41 -10
- package/_esm/policies/callPolicyUtils.js.map +1 -1
- package/_esm/policies/index.js +1 -1
- package/_esm/policies/index.js.map +1 -1
- package/_esm/policies/toCallPolicy.js +23 -6
- package/_esm/policies/toCallPolicy.js.map +1 -1
- package/_esm/policies/types.js +1 -0
- package/_esm/policies/types.js.map +1 -1
- package/_types/constants.d.ts +8 -1
- package/_types/constants.d.ts.map +1 -1
- package/_types/policies/callPolicyUtils.d.ts +4 -4
- package/_types/policies/callPolicyUtils.d.ts.map +1 -1
- package/_types/policies/index.d.ts +1 -1
- package/_types/policies/index.d.ts.map +1 -1
- package/_types/policies/toCallPolicy.d.ts +8 -2
- package/_types/policies/toCallPolicy.d.ts.map +1 -1
- package/_types/policies/types.d.ts +15 -6
- package/_types/policies/types.d.ts.map +1 -1
- package/constants.ts +10 -1
- package/package.json +1 -14
- package/policies/callPolicyUtils.ts +60 -16
- package/policies/index.ts +5 -1
- package/policies/toCallPolicy.ts +37 -7
- package/policies/types.ts +27 -6
package/_cjs/constants.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PolicyFlags = exports.TIMESTAMP_POLICY_CONTRACT = exports.SUDO_POLICY_CONTRACT = exports.SIGNATURE_POLICY_CONTRACT = exports.RATE_LIMIT_POLICY_CONTRACT = exports.GAS_POLICY_CONTRACT = exports.
|
|
3
|
+
exports.PolicyFlags = exports.TIMESTAMP_POLICY_CONTRACT = exports.SUDO_POLICY_CONTRACT = exports.SIGNATURE_POLICY_CONTRACT = exports.RATE_LIMIT_POLICY_CONTRACT = exports.GAS_POLICY_CONTRACT = exports.CALL_POLICY_CONTRACT_V0_0_2 = exports.CALL_POLICY_CONTRACT_V0_0_1 = exports.WEBAUTHN_SIGNER_CONTRACT = exports.ECDSA_SIGNER_CONTRACT = void 0;
|
|
4
4
|
exports.ECDSA_SIGNER_CONTRACT = "0x6A6F069E2a08c2468e7724Ab3250CdBFBA14D4FF";
|
|
5
5
|
exports.WEBAUTHN_SIGNER_CONTRACT = "0x8AA55d4BfAE101609078681A69B5bc3181516612";
|
|
6
|
-
exports.
|
|
6
|
+
exports.CALL_POLICY_CONTRACT_V0_0_1 = "0xe4Fec84B7B002273ecC86baa65a831ddB92d30a8";
|
|
7
|
+
exports.CALL_POLICY_CONTRACT_V0_0_2 = "0x67Fa43ca2D689beA4d10b9F2C96828828A2Ab275";
|
|
7
8
|
exports.GAS_POLICY_CONTRACT = "0xaeFC5AbC67FfD258abD0A3E54f65E70326F84b23";
|
|
8
9
|
exports.RATE_LIMIT_POLICY_CONTRACT = "0xf63d4139B25c836334edD76641356c6b74C86873";
|
|
9
10
|
exports.SIGNATURE_POLICY_CONTRACT = "0xF6A936c88D97E6fad13b98d2FD731Ff17eeD591d";
|
package/_cjs/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAC9B,4CAA4C,CAAA;AACnC,QAAA,wBAAwB,GACjC,4CAA4C,CAAA;AACnC,QAAA,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAC9B,4CAA4C,CAAA;AACnC,QAAA,wBAAwB,GACjC,4CAA4C,CAAA;AACnC,QAAA,2BAA2B,GACpC,4CAA4C,CAAA;AAOnC,QAAA,2BAA2B,GACpC,4CAA4C,CAAA;AACnC,QAAA,mBAAmB,GAAG,4CAA4C,CAAA;AAClE,QAAA,0BAA0B,GACnC,4CAA4C,CAAA;AACnC,QAAA,yBAAyB,GAClC,4CAA4C,CAAA;AACnC,QAAA,oBAAoB,GAAG,4CAA4C,CAAA;AACnE,QAAA,yBAAyB,GAClC,4CAA4C,CAAA;AAEhD,IAAY,WAIX;AAJD,WAAY,WAAW;IACnB,4CAA6B,CAAA;IAC7B,iDAAkC,CAAA;IAClC,8CAA+B,CAAA;AACnC,CAAC,EAJW,WAAW,2BAAX,WAAW,QAItB"}
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.encodePermissionData = exports.getPermissionFromABI = void 0;
|
|
4
4
|
const viem_1 = require("viem");
|
|
5
|
-
|
|
5
|
+
const constants_js_1 = require("../constants.js");
|
|
6
|
+
const types_js_1 = require("./types.js");
|
|
7
|
+
function getPermissionFromABI({ abi, args, functionName, policyAddress }) {
|
|
6
8
|
if (!abi || !functionName) {
|
|
7
9
|
return {
|
|
8
10
|
selector: undefined,
|
|
@@ -21,12 +23,39 @@ function getPermissionFromABI({ abi, args, functionName }) {
|
|
|
21
23
|
let paramRules = [];
|
|
22
24
|
if (args && Array.isArray(args)) {
|
|
23
25
|
paramRules = args
|
|
24
|
-
.map((arg, i) =>
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
.map((arg, i) => {
|
|
27
|
+
if (!arg)
|
|
28
|
+
return null;
|
|
29
|
+
if (policyAddress === constants_js_1.CALL_POLICY_CONTRACT_V0_0_1) {
|
|
30
|
+
if (arg.condition === types_js_1.ParamCondition.ONE_OF) {
|
|
31
|
+
throw Error("The ONE_OF condition is only supported from CALL_POLICY_CONTRACT_V0_0_2 onwards. Please use CALL_POLICY_CONTRACT_V0_0_2 or a later version.");
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
params: (0, viem_1.pad)((0, viem_1.isHex)(arg.value)
|
|
35
|
+
? arg.value
|
|
36
|
+
: (0, viem_1.toHex)(arg.value), { size: 32 }),
|
|
37
|
+
offset: i * 32,
|
|
38
|
+
condition: arg.condition
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
let params;
|
|
42
|
+
if (arg.condition === types_js_1.ParamCondition.ONE_OF) {
|
|
43
|
+
params = arg.value.map((value) => (0, viem_1.pad)((0, viem_1.isHex)(value)
|
|
44
|
+
? value
|
|
45
|
+
: (0, viem_1.toHex)(value), { size: 32 }));
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
params = [
|
|
49
|
+
(0, viem_1.pad)((0, viem_1.isHex)(arg.value)
|
|
50
|
+
? arg.value
|
|
51
|
+
: (0, viem_1.toHex)(arg.value), { size: 32 })
|
|
52
|
+
];
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
params,
|
|
56
|
+
offset: i * 32,
|
|
57
|
+
condition: arg.condition
|
|
58
|
+
};
|
|
30
59
|
})
|
|
31
60
|
.filter((rule) => rule);
|
|
32
61
|
}
|
|
@@ -36,7 +65,7 @@ function getPermissionFromABI({ abi, args, functionName }) {
|
|
|
36
65
|
};
|
|
37
66
|
}
|
|
38
67
|
exports.getPermissionFromABI = getPermissionFromABI;
|
|
39
|
-
const encodePermissionData = (permission) => {
|
|
68
|
+
const encodePermissionData = (permission, policyAddress) => {
|
|
40
69
|
const permissionParam = {
|
|
41
70
|
components: [
|
|
42
71
|
{
|
|
@@ -68,8 +97,10 @@ const encodePermissionData = (permission) => {
|
|
|
68
97
|
type: "uint64"
|
|
69
98
|
},
|
|
70
99
|
{
|
|
71
|
-
name: "
|
|
72
|
-
type:
|
|
100
|
+
name: "params",
|
|
101
|
+
type: policyAddress === constants_js_1.CALL_POLICY_CONTRACT_V0_0_2
|
|
102
|
+
? "bytes32[]"
|
|
103
|
+
: "bytes32"
|
|
73
104
|
}
|
|
74
105
|
],
|
|
75
106
|
name: "rules",
|
|
@@ -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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"}
|
package/_cjs/policies/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.toTimestampPolicy = exports.ParamCondition = exports.CallType = exports.toSudoPolicy = exports.toPolicyId = exports.toCallPolicy = exports.toRateLimitPolicy = exports.toSignatureCallerPolicy = exports.toGasPolicy = void 0;
|
|
3
|
+
exports.toTimestampPolicy = exports.ParamCondition = exports.CallType = exports.toSudoPolicy = exports.toPolicyId = exports.CallPolicyVersion = exports.toCallPolicy = exports.toRateLimitPolicy = exports.toSignatureCallerPolicy = exports.toGasPolicy = void 0;
|
|
4
4
|
var toGasPolicy_js_1 = require("./toGasPolicy.js");
|
|
5
5
|
Object.defineProperty(exports, "toGasPolicy", { enumerable: true, get: function () { return toGasPolicy_js_1.toGasPolicy; } });
|
|
6
6
|
var toSignatureCallerPolicy_js_1 = require("./toSignatureCallerPolicy.js");
|
|
@@ -9,6 +9,7 @@ var toRateLimitPolicy_js_1 = require("./toRateLimitPolicy.js");
|
|
|
9
9
|
Object.defineProperty(exports, "toRateLimitPolicy", { enumerable: true, get: function () { return toRateLimitPolicy_js_1.toRateLimitPolicy; } });
|
|
10
10
|
var toCallPolicy_js_1 = require("./toCallPolicy.js");
|
|
11
11
|
Object.defineProperty(exports, "toCallPolicy", { enumerable: true, get: function () { return toCallPolicy_js_1.toCallPolicy; } });
|
|
12
|
+
Object.defineProperty(exports, "CallPolicyVersion", { enumerable: true, get: function () { return toCallPolicy_js_1.CallPolicyVersion; } });
|
|
12
13
|
var toPolicyId_js_1 = require("./utils/toPolicyId.js");
|
|
13
14
|
Object.defineProperty(exports, "toPolicyId", { enumerable: true, get: function () { return toPolicyId_js_1.toPolicyId; } });
|
|
14
15
|
var toSudoPolicy_js_1 = require("./toSudoPolicy.js");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../policies/index.ts"],"names":[],"mappings":";;;AAAA,mDAAoE;AAA3D,6GAAA,WAAW,OAAA;AACpB,2EAGqC;AAFjC,qIAAA,uBAAuB,OAAA;AAG3B,+DAG+B;AAF3B,yHAAA,iBAAiB,OAAA;AAGrB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../policies/index.ts"],"names":[],"mappings":";;;AAAA,mDAAoE;AAA3D,6GAAA,WAAW,OAAA;AACpB,2EAGqC;AAFjC,qIAAA,uBAAuB,OAAA;AAG3B,+DAG+B;AAF3B,yHAAA,iBAAiB,OAAA;AAGrB,qDAI0B;AAHtB,+GAAA,YAAY,OAAA;AAEZ,oHAAA,iBAAiB,OAAA;AAErB,uDAAkD;AAAzC,2GAAA,UAAU,OAAA;AACnB,qDAAuE;AAA9D,+GAAA,YAAY,OAAA;AACrB,uCAAqD;AAA5C,oGAAA,QAAQ,OAAA;AAAE,0GAAA,cAAc,OAAA;AACjC,+DAG+B;AAF3B,yHAAA,iBAAiB,OAAA"}
|
|
@@ -1,16 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.toCallPolicy = void 0;
|
|
3
|
+
exports.toCallPolicy = exports.getCallPolicyAddress = exports.CallPolicyVersion = void 0;
|
|
4
4
|
const viem_1 = require("viem");
|
|
5
5
|
const constants_js_1 = require("../constants.js");
|
|
6
|
-
const constants_js_2 = require("../constants.js");
|
|
7
6
|
const callPolicyUtils_js_1 = require("./callPolicyUtils.js");
|
|
8
7
|
const types_js_1 = require("./types.js");
|
|
9
|
-
|
|
8
|
+
var CallPolicyVersion;
|
|
9
|
+
(function (CallPolicyVersion) {
|
|
10
|
+
CallPolicyVersion["V0_0_1"] = "0.0.1";
|
|
11
|
+
CallPolicyVersion["V0_0_2"] = "0.0.2";
|
|
12
|
+
})(CallPolicyVersion || (exports.CallPolicyVersion = CallPolicyVersion = {}));
|
|
13
|
+
const getCallPolicyAddress = (policyVersion, policyAddress) => {
|
|
14
|
+
if (policyAddress)
|
|
15
|
+
return policyAddress;
|
|
16
|
+
switch (policyVersion) {
|
|
17
|
+
case CallPolicyVersion.V0_0_1:
|
|
18
|
+
return constants_js_1.CALL_POLICY_CONTRACT_V0_0_1;
|
|
19
|
+
case CallPolicyVersion.V0_0_2:
|
|
20
|
+
return constants_js_1.CALL_POLICY_CONTRACT_V0_0_2;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
exports.getCallPolicyAddress = getCallPolicyAddress;
|
|
24
|
+
function toCallPolicy({ policyAddress, policyFlag = constants_js_1.PolicyFlags.FOR_ALL_VALIDATION, policyVersion, permissions = [] }) {
|
|
25
|
+
const callPolicyAddress = (0, exports.getCallPolicyAddress)(policyVersion, policyAddress);
|
|
10
26
|
const generatedPermissionParams = permissions?.map((perm) => (0, callPolicyUtils_js_1.getPermissionFromABI)({
|
|
11
27
|
abi: perm.abi,
|
|
12
28
|
functionName: perm.functionName,
|
|
13
|
-
args: perm.args
|
|
29
|
+
args: perm.args,
|
|
30
|
+
policyAddress: callPolicyAddress
|
|
14
31
|
}));
|
|
15
32
|
permissions =
|
|
16
33
|
permissions?.map((perm, index) => ({
|
|
@@ -22,16 +39,17 @@ function toCallPolicy({ policyAddress = constants_js_2.CALL_POLICY_CONTRACT, pol
|
|
|
22
39
|
valueLimit: perm.valueLimit ?? 0n,
|
|
23
40
|
rules: perm.rules ?? generatedPermissionParams?.[index]?.rules ?? []
|
|
24
41
|
})) ?? [];
|
|
25
|
-
const encodedPermissionData = (0, callPolicyUtils_js_1.encodePermissionData)(permissions);
|
|
42
|
+
const encodedPermissionData = (0, callPolicyUtils_js_1.encodePermissionData)(permissions, callPolicyAddress);
|
|
26
43
|
return {
|
|
27
44
|
getPolicyData: () => {
|
|
28
45
|
return encodedPermissionData;
|
|
29
46
|
},
|
|
30
47
|
getPolicyInfoInBytes: () => {
|
|
31
|
-
return (0, viem_1.concatHex)([policyFlag,
|
|
48
|
+
return (0, viem_1.concatHex)([policyFlag, callPolicyAddress]);
|
|
32
49
|
},
|
|
33
50
|
policyParams: {
|
|
34
51
|
type: "call",
|
|
52
|
+
policyVersion,
|
|
35
53
|
policyAddress,
|
|
36
54
|
policyFlag,
|
|
37
55
|
permissions
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toCallPolicy.js","sourceRoot":"","sources":["../../policies/toCallPolicy.ts"],"names":[],"mappings":";;;AACA,+BAAqC;AACrC,
|
|
1
|
+
{"version":3,"file":"toCallPolicy.js","sourceRoot":"","sources":["../../policies/toCallPolicy.ts"],"names":[],"mappings":";;;AACA,+BAAqC;AACrC,kDAIwB;AAExB,6DAG6B;AAC7B,yCAAsD;AAEtD,IAAY,iBAGX;AAHD,WAAY,iBAAiB;IACzB,qCAAgB,CAAA;IAChB,qCAAgB,CAAA;AACpB,CAAC,EAHW,iBAAiB,iCAAjB,iBAAiB,QAG5B;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;IAC1C,CAAC;AACL,CAAC,CAAA;AAXY,QAAA,oBAAoB,wBAWhC;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,CACxD,IAAA,yCAAoB,EAAC;QACjB,GAAG,EAAE,IAAI,CAAC,GAAU;QACpB,YAAY,EAAE,IAAI,CAAC,YAAsB;QACzC,IAAI,EAAE,IAAI,CAAC,IAAU;QACrB,aAAa,EAAE,iBAAiB;KACnC,CAAC,CACL,CAAA;IAED,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,mBAAQ,CAAC,IAAI;YACxC,QAAQ,EACJ,IAAI,CAAC,QAAQ;gBACb,yBAAyB,EAAE,CAAC,KAAK,CAAC,EAAE,QAAQ;gBAC5C,IAAA,UAAG,EAAC,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,IAAA,yCAAoB,EAC9C,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,IAAA,gBAAS,EAAC,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;AAtDD,oCAsDC"}
|
package/_cjs/policies/types.js
CHANGED
|
@@ -15,5 +15,6 @@ var ParamCondition;
|
|
|
15
15
|
ParamCondition[ParamCondition["GREATER_THAN_OR_EQUAL"] = 3] = "GREATER_THAN_OR_EQUAL";
|
|
16
16
|
ParamCondition[ParamCondition["LESS_THAN_OR_EQUAL"] = 4] = "LESS_THAN_OR_EQUAL";
|
|
17
17
|
ParamCondition[ParamCondition["NOT_EQUAL"] = 5] = "NOT_EQUAL";
|
|
18
|
+
ParamCondition[ParamCondition["ONE_OF"] = 6] = "ONE_OF";
|
|
18
19
|
})(ParamCondition || (exports.ParamCondition = ParamCondition = {}));
|
|
19
20
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../policies/types.ts"],"names":[],"mappings":";;;AAaA,IAAY,QAIX;AAJD,WAAY,QAAQ;IAChB,yBAAa,CAAA;IACb,+BAAmB,CAAA;IACnB,kCAAsB,CAAA;AAC1B,CAAC,EAJW,QAAQ,wBAAR,QAAQ,QAInB;AAED,IAAY,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../policies/types.ts"],"names":[],"mappings":";;;AAaA,IAAY,QAIX;AAJD,WAAY,QAAQ;IAChB,yBAAa,CAAA;IACb,+BAAmB,CAAA;IACnB,kCAAsB,CAAA;AAC1B,CAAC,EAJW,QAAQ,wBAAR,QAAQ,QAInB;AAED,IAAY,cAQX;AARD,WAAY,cAAc;IACtB,qDAAS,CAAA;IACT,mEAAgB,CAAA;IAChB,6DAAa,CAAA;IACb,qFAAyB,CAAA;IACzB,+EAAsB,CAAA;IACtB,6DAAa,CAAA;IACb,uDAAU,CAAA;AACd,CAAC,EARW,cAAc,8BAAd,cAAc,QAQzB"}
|
package/_esm/constants.js
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
export const ECDSA_SIGNER_CONTRACT = "0x6A6F069E2a08c2468e7724Ab3250CdBFBA14D4FF";
|
|
2
2
|
export const WEBAUTHN_SIGNER_CONTRACT = "0x8AA55d4BfAE101609078681A69B5bc3181516612";
|
|
3
|
-
export const
|
|
3
|
+
export const CALL_POLICY_CONTRACT_V0_0_1 = "0xe4Fec84B7B002273ecC86baa65a831ddB92d30a8";
|
|
4
|
+
/**
|
|
5
|
+
* @dev CALL_POLICY_CONTRACT_V0_0_2 updates
|
|
6
|
+
* - Added ONE_OF condition
|
|
7
|
+
* - Added native ETH transfer support
|
|
8
|
+
* - Added `zeroAddress` target address support, which means you can approve any contracts with specific selector. (e.g. approve any ERC20 transfer)
|
|
9
|
+
*/
|
|
10
|
+
export const CALL_POLICY_CONTRACT_V0_0_2 = "0x67Fa43ca2D689beA4d10b9F2C96828828A2Ab275";
|
|
4
11
|
export const GAS_POLICY_CONTRACT = "0xaeFC5AbC67FfD258abD0A3E54f65E70326F84b23";
|
|
5
12
|
export const RATE_LIMIT_POLICY_CONTRACT = "0xf63d4139B25c836334edD76641356c6b74C86873";
|
|
6
13
|
export const SIGNATURE_POLICY_CONTRACT = "0xF6A936c88D97E6fad13b98d2FD731Ff17eeD591d";
|
package/_esm/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAC9B,4CAA4C,CAAA;AAChD,MAAM,CAAC,MAAM,wBAAwB,GACjC,4CAA4C,CAAA;AAChD,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAC9B,4CAA4C,CAAA;AAChD,MAAM,CAAC,MAAM,wBAAwB,GACjC,4CAA4C,CAAA;AAChD,MAAM,CAAC,MAAM,2BAA2B,GACpC,4CAA4C,CAAA;AAChD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,2BAA2B,GACpC,4CAA4C,CAAA;AAChD,MAAM,CAAC,MAAM,mBAAmB,GAAG,4CAA4C,CAAA;AAC/E,MAAM,CAAC,MAAM,0BAA0B,GACnC,4CAA4C,CAAA;AAChD,MAAM,CAAC,MAAM,yBAAyB,GAClC,4CAA4C,CAAA;AAChD,MAAM,CAAC,MAAM,oBAAoB,GAAG,4CAA4C,CAAA;AAChF,MAAM,CAAC,MAAM,yBAAyB,GAClC,4CAA4C,CAAA;AAEhD,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACnB,4CAA6B,CAAA;IAC7B,iDAAkC,CAAA;IAClC,8CAA+B,CAAA;AACnC,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { encodeAbiParameters, getAbiItem, isHex, pad, toFunctionSelector, toHex } from "viem";
|
|
2
|
-
|
|
2
|
+
import { CALL_POLICY_CONTRACT_V0_0_1, CALL_POLICY_CONTRACT_V0_0_2 } from "../constants.js";
|
|
3
|
+
import { ParamCondition } from "./types.js";
|
|
4
|
+
export function getPermissionFromABI({ abi, args, functionName, policyAddress }) {
|
|
3
5
|
if (!abi || !functionName) {
|
|
4
6
|
return {
|
|
5
7
|
selector: undefined,
|
|
@@ -18,12 +20,39 @@ export function getPermissionFromABI({ abi, args, functionName }) {
|
|
|
18
20
|
let paramRules = [];
|
|
19
21
|
if (args && Array.isArray(args)) {
|
|
20
22
|
paramRules = args
|
|
21
|
-
.map((arg, i) =>
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
.map((arg, i) => {
|
|
24
|
+
if (!arg)
|
|
25
|
+
return null;
|
|
26
|
+
if (policyAddress === CALL_POLICY_CONTRACT_V0_0_1) {
|
|
27
|
+
if (arg.condition === ParamCondition.ONE_OF) {
|
|
28
|
+
throw Error("The ONE_OF condition is only supported from CALL_POLICY_CONTRACT_V0_0_2 onwards. Please use CALL_POLICY_CONTRACT_V0_0_2 or a later version.");
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
params: pad(isHex(arg.value)
|
|
32
|
+
? arg.value
|
|
33
|
+
: toHex(arg.value), { size: 32 }),
|
|
34
|
+
offset: i * 32,
|
|
35
|
+
condition: arg.condition
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
let params;
|
|
39
|
+
if (arg.condition === ParamCondition.ONE_OF) {
|
|
40
|
+
params = arg.value.map((value) => pad(isHex(value)
|
|
41
|
+
? value
|
|
42
|
+
: toHex(value), { size: 32 }));
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
params = [
|
|
46
|
+
pad(isHex(arg.value)
|
|
47
|
+
? arg.value
|
|
48
|
+
: toHex(arg.value), { size: 32 })
|
|
49
|
+
];
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
params,
|
|
53
|
+
offset: i * 32,
|
|
54
|
+
condition: arg.condition
|
|
55
|
+
};
|
|
27
56
|
})
|
|
28
57
|
.filter((rule) => rule);
|
|
29
58
|
}
|
|
@@ -32,7 +61,7 @@ export function getPermissionFromABI({ abi, args, functionName }) {
|
|
|
32
61
|
rules: paramRules
|
|
33
62
|
};
|
|
34
63
|
}
|
|
35
|
-
export const encodePermissionData = (permission) => {
|
|
64
|
+
export const encodePermissionData = (permission, policyAddress) => {
|
|
36
65
|
const permissionParam = {
|
|
37
66
|
components: [
|
|
38
67
|
{
|
|
@@ -64,8 +93,10 @@ export const encodePermissionData = (permission) => {
|
|
|
64
93
|
type: "uint64"
|
|
65
94
|
},
|
|
66
95
|
{
|
|
67
|
-
name: "
|
|
68
|
-
type:
|
|
96
|
+
name: "params",
|
|
97
|
+
type: policyAddress === CALL_POLICY_CONTRACT_V0_0_2
|
|
98
|
+
? "bytes32[]"
|
|
99
|
+
: "bytes32"
|
|
69
100
|
}
|
|
70
101
|
],
|
|
71
102
|
name: "rules",
|
|
@@ -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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"}
|
package/_esm/policies/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { toGasPolicy } from "./toGasPolicy.js";
|
|
2
2
|
export { toSignatureCallerPolicy } from "./toSignatureCallerPolicy.js";
|
|
3
3
|
export { toRateLimitPolicy } from "./toRateLimitPolicy.js";
|
|
4
|
-
export { toCallPolicy } from "./toCallPolicy.js";
|
|
4
|
+
export { toCallPolicy, CallPolicyVersion } from "./toCallPolicy.js";
|
|
5
5
|
export { toPolicyId } from "./utils/toPolicyId.js";
|
|
6
6
|
export { toSudoPolicy } from "./toSudoPolicy.js";
|
|
7
7
|
export { CallType, ParamCondition } from "./types.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../policies/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAwB,MAAM,kBAAkB,CAAA;AACpE,OAAO,EACH,uBAAuB,EAE1B,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACH,iBAAiB,EAEpB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../policies/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAwB,MAAM,kBAAkB,CAAA;AACpE,OAAO,EACH,uBAAuB,EAE1B,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACH,iBAAiB,EAEpB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACH,YAAY,EAEZ,iBAAiB,EACpB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAyB,MAAM,mBAAmB,CAAA;AACvE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,EACH,iBAAiB,EAEpB,MAAM,wBAAwB,CAAA"}
|
|
@@ -1,13 +1,29 @@
|
|
|
1
1
|
import { concatHex, pad } from "viem";
|
|
2
|
-
import { PolicyFlags } from "../constants.js";
|
|
3
|
-
import { CALL_POLICY_CONTRACT } from "../constants.js";
|
|
2
|
+
import { CALL_POLICY_CONTRACT_V0_0_1, CALL_POLICY_CONTRACT_V0_0_2, PolicyFlags } from "../constants.js";
|
|
4
3
|
import { encodePermissionData, getPermissionFromABI } from "./callPolicyUtils.js";
|
|
5
4
|
import { CallType } from "./types.js";
|
|
6
|
-
export
|
|
5
|
+
export var CallPolicyVersion;
|
|
6
|
+
(function (CallPolicyVersion) {
|
|
7
|
+
CallPolicyVersion["V0_0_1"] = "0.0.1";
|
|
8
|
+
CallPolicyVersion["V0_0_2"] = "0.0.2";
|
|
9
|
+
})(CallPolicyVersion || (CallPolicyVersion = {}));
|
|
10
|
+
export const getCallPolicyAddress = (policyVersion, policyAddress) => {
|
|
11
|
+
if (policyAddress)
|
|
12
|
+
return policyAddress;
|
|
13
|
+
switch (policyVersion) {
|
|
14
|
+
case CallPolicyVersion.V0_0_1:
|
|
15
|
+
return CALL_POLICY_CONTRACT_V0_0_1;
|
|
16
|
+
case CallPolicyVersion.V0_0_2:
|
|
17
|
+
return CALL_POLICY_CONTRACT_V0_0_2;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
export function toCallPolicy({ policyAddress, policyFlag = PolicyFlags.FOR_ALL_VALIDATION, policyVersion, permissions = [] }) {
|
|
21
|
+
const callPolicyAddress = getCallPolicyAddress(policyVersion, policyAddress);
|
|
7
22
|
const generatedPermissionParams = permissions?.map((perm) => getPermissionFromABI({
|
|
8
23
|
abi: perm.abi,
|
|
9
24
|
functionName: perm.functionName,
|
|
10
|
-
args: perm.args
|
|
25
|
+
args: perm.args,
|
|
26
|
+
policyAddress: callPolicyAddress
|
|
11
27
|
}));
|
|
12
28
|
permissions =
|
|
13
29
|
permissions?.map((perm, index) => ({
|
|
@@ -19,16 +35,17 @@ export function toCallPolicy({ policyAddress = CALL_POLICY_CONTRACT, policyFlag
|
|
|
19
35
|
valueLimit: perm.valueLimit ?? 0n,
|
|
20
36
|
rules: perm.rules ?? generatedPermissionParams?.[index]?.rules ?? []
|
|
21
37
|
})) ?? [];
|
|
22
|
-
const encodedPermissionData = encodePermissionData(permissions);
|
|
38
|
+
const encodedPermissionData = encodePermissionData(permissions, callPolicyAddress);
|
|
23
39
|
return {
|
|
24
40
|
getPolicyData: () => {
|
|
25
41
|
return encodedPermissionData;
|
|
26
42
|
},
|
|
27
43
|
getPolicyInfoInBytes: () => {
|
|
28
|
-
return concatHex([policyFlag,
|
|
44
|
+
return concatHex([policyFlag, callPolicyAddress]);
|
|
29
45
|
},
|
|
30
46
|
policyParams: {
|
|
31
47
|
type: "call",
|
|
48
|
+
policyVersion,
|
|
32
49
|
policyAddress,
|
|
33
50
|
policyFlag,
|
|
34
51
|
permissions
|
|
@@ -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,
|
|
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,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,iBAGX;AAHD,WAAY,iBAAiB;IACzB,qCAAgB,CAAA;IAChB,qCAAgB,CAAA;AACpB,CAAC,EAHW,iBAAiB,KAAjB,iBAAiB,QAG5B;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;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,CACxD,oBAAoB,CAAC;QACjB,GAAG,EAAE,IAAI,CAAC,GAAU;QACpB,YAAY,EAAE,IAAI,CAAC,YAAsB;QACzC,IAAI,EAAE,IAAI,CAAC,IAAU;QACrB,aAAa,EAAE,iBAAiB;KACnC,CAAC,CACL,CAAA;IAED,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,EACJ,IAAI,CAAC,QAAQ;gBACb,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"}
|
package/_esm/policies/types.js
CHANGED
|
@@ -12,5 +12,6 @@ export var ParamCondition;
|
|
|
12
12
|
ParamCondition[ParamCondition["GREATER_THAN_OR_EQUAL"] = 3] = "GREATER_THAN_OR_EQUAL";
|
|
13
13
|
ParamCondition[ParamCondition["LESS_THAN_OR_EQUAL"] = 4] = "LESS_THAN_OR_EQUAL";
|
|
14
14
|
ParamCondition[ParamCondition["NOT_EQUAL"] = 5] = "NOT_EQUAL";
|
|
15
|
+
ParamCondition[ParamCondition["ONE_OF"] = 6] = "ONE_OF";
|
|
15
16
|
})(ParamCondition || (ParamCondition = {}));
|
|
16
17
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,cAQX;AARD,WAAY,cAAc;IACtB,qDAAS,CAAA;IACT,mEAAgB,CAAA;IAChB,6DAAa,CAAA;IACb,qFAAyB,CAAA;IACzB,+EAAsB,CAAA;IACtB,6DAAa,CAAA;IACb,uDAAU,CAAA;AACd,CAAC,EARW,cAAc,KAAd,cAAc,QAQzB"}
|
package/_types/constants.d.ts
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
export declare const ECDSA_SIGNER_CONTRACT = "0x6A6F069E2a08c2468e7724Ab3250CdBFBA14D4FF";
|
|
2
2
|
export declare const WEBAUTHN_SIGNER_CONTRACT = "0x8AA55d4BfAE101609078681A69B5bc3181516612";
|
|
3
|
-
export declare const
|
|
3
|
+
export declare const CALL_POLICY_CONTRACT_V0_0_1 = "0xe4Fec84B7B002273ecC86baa65a831ddB92d30a8";
|
|
4
|
+
/**
|
|
5
|
+
* @dev CALL_POLICY_CONTRACT_V0_0_2 updates
|
|
6
|
+
* - Added ONE_OF condition
|
|
7
|
+
* - Added native ETH transfer support
|
|
8
|
+
* - Added `zeroAddress` target address support, which means you can approve any contracts with specific selector. (e.g. approve any ERC20 transfer)
|
|
9
|
+
*/
|
|
10
|
+
export declare const CALL_POLICY_CONTRACT_V0_0_2 = "0x67Fa43ca2D689beA4d10b9F2C96828828A2Ab275";
|
|
4
11
|
export declare const GAS_POLICY_CONTRACT = "0xaeFC5AbC67FfD258abD0A3E54f65E70326F84b23";
|
|
5
12
|
export declare const RATE_LIMIT_POLICY_CONTRACT = "0xf63d4139B25c836334edD76641356c6b74C86873";
|
|
6
13
|
export declare const SIGNATURE_POLICY_CONTRACT = "0xF6A936c88D97E6fad13b98d2FD731Ff17eeD591d";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,+CACc,CAAA;AAChD,eAAO,MAAM,wBAAwB,+CACW,CAAA;AAChD,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,+CACc,CAAA;AAChD,eAAO,MAAM,wBAAwB,+CACW,CAAA;AAChD,eAAO,MAAM,2BAA2B,+CACQ,CAAA;AAChD;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,+CACQ,CAAA;AAChD,eAAO,MAAM,mBAAmB,+CAA+C,CAAA;AAC/E,eAAO,MAAM,0BAA0B,+CACS,CAAA;AAChD,eAAO,MAAM,yBAAyB,+CACU,CAAA;AAChD,eAAO,MAAM,oBAAoB,+CAA+C,CAAA;AAChF,eAAO,MAAM,yBAAyB,+CACU,CAAA;AAEhD,oBAAY,WAAW;IACnB,kBAAkB,WAAW;IAC7B,uBAAuB,WAAW;IAClC,oBAAoB,WAAW;CAClC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type Abi, type Hex } from "viem";
|
|
2
|
-
import type
|
|
3
|
-
export declare function getPermissionFromABI<TAbi extends Abi | readonly unknown[], TFunctionName extends string | undefined = string>({ abi, args, functionName }:
|
|
4
|
-
export declare const encodePermissionData: (permission: PermissionCore | PermissionCore[]) => Hex;
|
|
1
|
+
import { type Abi, type Address, type Hex } from "viem";
|
|
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">;
|
|
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,
|
|
1
|
+
{"version":3,"file":"callPolicyUtils.d.ts","sourceRoot":"","sources":["../../policies/callPolicyUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,GAAG,EAER,KAAK,OAAO,EAEZ,KAAK,GAAG,EAOX,MAAM,MAAM,CAAA;AAKb,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,EAChB,EAAE,6CAA6C,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,IAAI,CACxE,cAAc,EACd,UAAU,GAAG,OAAO,CACvB,CA0EA;AAED,eAAO,MAAM,oBAAoB,eACjB,cAAc,GAAG,cAAc,EAAE,iBAC9B,OAAO,KACvB,GAkDF,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { toGasPolicy, type GasPolicyParams } from "./toGasPolicy.js";
|
|
2
2
|
export { toSignatureCallerPolicy, type SignatureCallerPolicyParams } from "./toSignatureCallerPolicy.js";
|
|
3
3
|
export { toRateLimitPolicy, type RateLimitPolicyParams } from "./toRateLimitPolicy.js";
|
|
4
|
-
export { toCallPolicy, type CallPolicyParams } from "./toCallPolicy.js";
|
|
4
|
+
export { toCallPolicy, type CallPolicyParams, CallPolicyVersion } from "./toCallPolicy.js";
|
|
5
5
|
export { toPolicyId } from "./utils/toPolicyId.js";
|
|
6
6
|
export { toSudoPolicy, type SudoPolicyParams } from "./toSudoPolicy.js";
|
|
7
7
|
export { CallType, ParamCondition } from "./types.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../policies/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACpE,OAAO,EACH,uBAAuB,EACvB,KAAK,2BAA2B,EACnC,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACH,iBAAiB,EACjB,KAAK,qBAAqB,EAC7B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../policies/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACpE,OAAO,EACH,uBAAuB,EACvB,KAAK,2BAA2B,EACnC,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACH,iBAAiB,EACjB,KAAK,qBAAqB,EAC7B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACH,YAAY,EACZ,KAAK,gBAAgB,EACrB,iBAAiB,EACpB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACvE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,EACH,iBAAiB,EACjB,KAAK,qBAAqB,EAC7B,MAAM,wBAAwB,CAAA"}
|
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
import type { Abi } from "viem";
|
|
1
|
+
import type { Abi, Address } from "viem";
|
|
2
2
|
import type { Policy, PolicyParams } from "../types.js";
|
|
3
3
|
import { type Permission } from "./types.js";
|
|
4
|
+
export declare enum CallPolicyVersion {
|
|
5
|
+
V0_0_1 = "0.0.1",
|
|
6
|
+
V0_0_2 = "0.0.2"
|
|
7
|
+
}
|
|
8
|
+
export declare const getCallPolicyAddress: (policyVersion: CallPolicyVersion, policyAddress?: Address) => Address;
|
|
4
9
|
export type CallPolicyParams<TAbi extends Abi | readonly unknown[], TFunctionName extends string | undefined = string> = PolicyParams & {
|
|
10
|
+
policyVersion: CallPolicyVersion;
|
|
5
11
|
permissions?: Permission<TAbi, TFunctionName>[];
|
|
6
12
|
};
|
|
7
|
-
export declare function toCallPolicy<TAbi extends Abi | readonly unknown[], TFunctionName extends string | undefined = string>({ policyAddress, policyFlag, permissions }: CallPolicyParams<TAbi, TFunctionName>): Policy;
|
|
13
|
+
export declare function toCallPolicy<TAbi extends Abi | readonly unknown[], TFunctionName extends string | undefined = string>({ policyAddress, policyFlag, policyVersion, permissions }: CallPolicyParams<TAbi, TFunctionName>): Policy;
|
|
8
14
|
//# sourceMappingURL=toCallPolicy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toCallPolicy.d.ts","sourceRoot":"","sources":["../../policies/toCallPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"toCallPolicy.d.ts","sourceRoot":"","sources":["../../policies/toCallPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAOxC,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;CACnB;AAED,eAAO,MAAM,oBAAoB,kBACd,iBAAiB,kBAChB,OAAO,KACxB,OAQF,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,CA8ChD"}
|
|
@@ -11,12 +11,13 @@ export declare enum ParamCondition {
|
|
|
11
11
|
LESS_THAN = 2,
|
|
12
12
|
GREATER_THAN_OR_EQUAL = 3,
|
|
13
13
|
LESS_THAN_OR_EQUAL = 4,
|
|
14
|
-
NOT_EQUAL = 5
|
|
14
|
+
NOT_EQUAL = 5,
|
|
15
|
+
ONE_OF = 6
|
|
15
16
|
}
|
|
16
17
|
export interface ParamRule {
|
|
17
18
|
condition: ParamCondition;
|
|
18
19
|
offset: number;
|
|
19
|
-
|
|
20
|
+
params: Hex | Hex[];
|
|
20
21
|
}
|
|
21
22
|
export type PermissionCore = {
|
|
22
23
|
callType?: CallType;
|
|
@@ -40,11 +41,18 @@ export type Permission<TAbi extends Abi | readonly unknown[], TFunctionName exte
|
|
|
40
41
|
} & GetFunctionArgs<TAbi, TFunctionName> : _FunctionName extends string ? {
|
|
41
42
|
abi?: [Narrow<TAbi[number]>];
|
|
42
43
|
} & GetFunctionArgs<TAbi, _FunctionName> : never);
|
|
44
|
+
type ConditionValue<TAbiParameter extends AbiParameter, TAbiParameterKind extends AbiParameterKind> = {
|
|
45
|
+
condition: ParamCondition.ONE_OF;
|
|
46
|
+
value: AbiParameterToPrimitiveType<TAbiParameter, TAbiParameterKind>[];
|
|
47
|
+
} | {
|
|
48
|
+
condition: Exclude<ParamCondition, ParamCondition.ONE_OF>;
|
|
49
|
+
value: AbiParameterToPrimitiveType<TAbiParameter, TAbiParameterKind>;
|
|
50
|
+
};
|
|
43
51
|
export type CombinedArgs<TAbiParameters extends readonly AbiParameter[], TAbiParameterKind extends AbiParameterKind = AbiParameterKind> = {
|
|
44
|
-
[K in keyof TAbiParameters]:
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
52
|
+
[K in keyof TAbiParameters]: ConditionValue<TAbiParameters[K], TAbiParameterKind> | null;
|
|
53
|
+
};
|
|
54
|
+
export type GeneratePermissionWithPolicyAddressParameters<TAbi extends Abi | readonly unknown[], TFunctionName extends string | undefined = string> = GeneratePermissionFromArgsParameters<TAbi, TFunctionName> & {
|
|
55
|
+
policyAddress: Address;
|
|
48
56
|
};
|
|
49
57
|
export type GeneratePermissionFromArgsParameters<TAbi extends Abi | readonly unknown[], TFunctionName extends string | undefined = string, _FunctionName = TAbi extends Abi ? InferFunctionName<TAbi, TFunctionName> : never> = {
|
|
50
58
|
functionName?: _FunctionName;
|
|
@@ -53,4 +61,5 @@ export type GeneratePermissionFromArgsParameters<TAbi extends Abi | readonly unk
|
|
|
53
61
|
} & GetFunctionArgs<TAbi, TFunctionName> : _FunctionName extends string ? {
|
|
54
62
|
abi: [Narrow<TAbi[number]>];
|
|
55
63
|
} & GetFunctionArgs<TAbi, _FunctionName> : never);
|
|
64
|
+
export {};
|
|
56
65
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../policies/types.ts"],"names":[],"mappings":"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"}
|
package/constants.ts
CHANGED
|
@@ -2,7 +2,16 @@ export const ECDSA_SIGNER_CONTRACT =
|
|
|
2
2
|
"0x6A6F069E2a08c2468e7724Ab3250CdBFBA14D4FF"
|
|
3
3
|
export const WEBAUTHN_SIGNER_CONTRACT =
|
|
4
4
|
"0x8AA55d4BfAE101609078681A69B5bc3181516612"
|
|
5
|
-
export const
|
|
5
|
+
export const CALL_POLICY_CONTRACT_V0_0_1 =
|
|
6
|
+
"0xe4Fec84B7B002273ecC86baa65a831ddB92d30a8"
|
|
7
|
+
/**
|
|
8
|
+
* @dev CALL_POLICY_CONTRACT_V0_0_2 updates
|
|
9
|
+
* - Added ONE_OF condition
|
|
10
|
+
* - Added native ETH transfer support
|
|
11
|
+
* - Added `zeroAddress` target address support, which means you can approve any contracts with specific selector. (e.g. approve any ERC20 transfer)
|
|
12
|
+
*/
|
|
13
|
+
export const CALL_POLICY_CONTRACT_V0_0_2 =
|
|
14
|
+
"0x67Fa43ca2D689beA4d10b9F2C96828828A2Ab275"
|
|
6
15
|
export const GAS_POLICY_CONTRACT = "0xaeFC5AbC67FfD258abD0A3E54f65E70326F84b23"
|
|
7
16
|
export const RATE_LIMIT_POLICY_CONTRACT =
|
|
8
17
|
"0xf63d4139B25c836334edD76641356c6b74C86873"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zerodev/permissions",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.4.0",
|
|
4
4
|
"author": "ZeroDev",
|
|
5
5
|
"main": "./_cjs/index.js",
|
|
6
6
|
"module": "./_esm/index.js",
|
|
@@ -51,19 +51,6 @@
|
|
|
51
51
|
"default": "./_cjs/signers/index.js"
|
|
52
52
|
}
|
|
53
53
|
},
|
|
54
|
-
"typesVersions": {
|
|
55
|
-
"*": {
|
|
56
|
-
"policies": [
|
|
57
|
-
"./_types/policies/index.d.ts"
|
|
58
|
-
],
|
|
59
|
-
"signers": [
|
|
60
|
-
"./_types/signers/index.d.ts"
|
|
61
|
-
],
|
|
62
|
-
"types": [
|
|
63
|
-
"./_types/types/index.d.ts"
|
|
64
|
-
]
|
|
65
|
-
}
|
|
66
|
-
},
|
|
67
54
|
"dependencies": {
|
|
68
55
|
"merkletreejs": "^0.3.11",
|
|
69
56
|
"@simplewebauthn/browser": "^9.0.1"
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
type Abi,
|
|
3
3
|
type AbiFunction,
|
|
4
|
+
type Address,
|
|
4
5
|
type GetAbiItemParameters,
|
|
5
6
|
type Hex,
|
|
6
7
|
encodeAbiParameters,
|
|
@@ -10,11 +11,16 @@ import {
|
|
|
10
11
|
toFunctionSelector,
|
|
11
12
|
toHex
|
|
12
13
|
} from "viem"
|
|
13
|
-
import
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
import {
|
|
15
|
+
CALL_POLICY_CONTRACT_V0_0_1,
|
|
16
|
+
CALL_POLICY_CONTRACT_V0_0_2
|
|
17
|
+
} from "../constants.js"
|
|
18
|
+
import {
|
|
19
|
+
type CombinedArgs,
|
|
20
|
+
type GeneratePermissionWithPolicyAddressParameters,
|
|
21
|
+
ParamCondition,
|
|
22
|
+
type ParamRule,
|
|
23
|
+
type PermissionCore
|
|
18
24
|
} from "./types.js"
|
|
19
25
|
|
|
20
26
|
export function getPermissionFromABI<
|
|
@@ -23,8 +29,9 @@ export function getPermissionFromABI<
|
|
|
23
29
|
>({
|
|
24
30
|
abi,
|
|
25
31
|
args,
|
|
26
|
-
functionName
|
|
27
|
-
|
|
32
|
+
functionName,
|
|
33
|
+
policyAddress
|
|
34
|
+
}: GeneratePermissionWithPolicyAddressParameters<TAbi, TFunctionName>): Pick<
|
|
28
35
|
PermissionCore,
|
|
29
36
|
"selector" | "rules"
|
|
30
37
|
> {
|
|
@@ -46,10 +53,16 @@ export function getPermissionFromABI<
|
|
|
46
53
|
let paramRules: ParamRule[] = []
|
|
47
54
|
if (args && Array.isArray(args)) {
|
|
48
55
|
paramRules = (args as CombinedArgs<AbiFunction["inputs"]>)
|
|
49
|
-
.map(
|
|
50
|
-
(arg
|
|
51
|
-
|
|
52
|
-
|
|
56
|
+
.map((arg, i) => {
|
|
57
|
+
if (!arg) return null
|
|
58
|
+
if (policyAddress === CALL_POLICY_CONTRACT_V0_0_1) {
|
|
59
|
+
if (arg.condition === ParamCondition.ONE_OF) {
|
|
60
|
+
throw Error(
|
|
61
|
+
"The ONE_OF condition is only supported from CALL_POLICY_CONTRACT_V0_0_2 onwards. Please use CALL_POLICY_CONTRACT_V0_0_2 or a later version."
|
|
62
|
+
)
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
params: pad(
|
|
53
66
|
isHex(arg.value)
|
|
54
67
|
? arg.value
|
|
55
68
|
: toHex(
|
|
@@ -60,7 +73,35 @@ export function getPermissionFromABI<
|
|
|
60
73
|
offset: i * 32,
|
|
61
74
|
condition: arg.condition
|
|
62
75
|
}
|
|
63
|
-
|
|
76
|
+
}
|
|
77
|
+
let params: Hex[]
|
|
78
|
+
if (arg.condition === ParamCondition.ONE_OF) {
|
|
79
|
+
params = arg.value.map((value) =>
|
|
80
|
+
pad(
|
|
81
|
+
isHex(value)
|
|
82
|
+
? value
|
|
83
|
+
: toHex(value as Parameters<typeof toHex>[0]),
|
|
84
|
+
{ size: 32 }
|
|
85
|
+
)
|
|
86
|
+
)
|
|
87
|
+
} else {
|
|
88
|
+
params = [
|
|
89
|
+
pad(
|
|
90
|
+
isHex(arg.value)
|
|
91
|
+
? arg.value
|
|
92
|
+
: toHex(
|
|
93
|
+
arg.value as Parameters<typeof toHex>[0]
|
|
94
|
+
),
|
|
95
|
+
{ size: 32 }
|
|
96
|
+
)
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
params,
|
|
101
|
+
offset: i * 32,
|
|
102
|
+
condition: arg.condition
|
|
103
|
+
}
|
|
104
|
+
})
|
|
64
105
|
.filter((rule) => rule) as ParamRule[]
|
|
65
106
|
}
|
|
66
107
|
return {
|
|
@@ -70,7 +111,8 @@ export function getPermissionFromABI<
|
|
|
70
111
|
}
|
|
71
112
|
|
|
72
113
|
export const encodePermissionData = (
|
|
73
|
-
permission: PermissionCore | PermissionCore[]
|
|
114
|
+
permission: PermissionCore | PermissionCore[],
|
|
115
|
+
policyAddress: Address
|
|
74
116
|
): Hex => {
|
|
75
117
|
const permissionParam = {
|
|
76
118
|
components: [
|
|
@@ -102,10 +144,12 @@ export const encodePermissionData = (
|
|
|
102
144
|
name: "offset",
|
|
103
145
|
type: "uint64"
|
|
104
146
|
},
|
|
105
|
-
|
|
106
147
|
{
|
|
107
|
-
name: "
|
|
108
|
-
type:
|
|
148
|
+
name: "params",
|
|
149
|
+
type:
|
|
150
|
+
policyAddress === CALL_POLICY_CONTRACT_V0_0_2
|
|
151
|
+
? "bytes32[]"
|
|
152
|
+
: "bytes32"
|
|
109
153
|
}
|
|
110
154
|
],
|
|
111
155
|
name: "rules",
|
package/policies/index.ts
CHANGED
|
@@ -7,7 +7,11 @@ export {
|
|
|
7
7
|
toRateLimitPolicy,
|
|
8
8
|
type RateLimitPolicyParams
|
|
9
9
|
} from "./toRateLimitPolicy.js"
|
|
10
|
-
export {
|
|
10
|
+
export {
|
|
11
|
+
toCallPolicy,
|
|
12
|
+
type CallPolicyParams,
|
|
13
|
+
CallPolicyVersion
|
|
14
|
+
} from "./toCallPolicy.js"
|
|
11
15
|
export { toPolicyId } from "./utils/toPolicyId.js"
|
|
12
16
|
export { toSudoPolicy, type SudoPolicyParams } from "./toSudoPolicy.js"
|
|
13
17
|
export { CallType, ParamCondition } from "./types.js"
|
package/policies/toCallPolicy.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import type { Abi } from "viem"
|
|
1
|
+
import type { Abi, Address } from "viem"
|
|
2
2
|
import { concatHex, pad } from "viem"
|
|
3
|
-
import {
|
|
4
|
-
|
|
3
|
+
import {
|
|
4
|
+
CALL_POLICY_CONTRACT_V0_0_1,
|
|
5
|
+
CALL_POLICY_CONTRACT_V0_0_2,
|
|
6
|
+
PolicyFlags
|
|
7
|
+
} from "../constants.js"
|
|
5
8
|
import type { Policy, PolicyParams } from "../types.js"
|
|
6
9
|
import {
|
|
7
10
|
encodePermissionData,
|
|
@@ -9,10 +12,29 @@ import {
|
|
|
9
12
|
} from "./callPolicyUtils.js"
|
|
10
13
|
import { CallType, type Permission } from "./types.js"
|
|
11
14
|
|
|
15
|
+
export enum CallPolicyVersion {
|
|
16
|
+
V0_0_1 = "0.0.1",
|
|
17
|
+
V0_0_2 = "0.0.2"
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export const getCallPolicyAddress = (
|
|
21
|
+
policyVersion: CallPolicyVersion,
|
|
22
|
+
policyAddress?: Address
|
|
23
|
+
): Address => {
|
|
24
|
+
if (policyAddress) return policyAddress
|
|
25
|
+
switch (policyVersion) {
|
|
26
|
+
case CallPolicyVersion.V0_0_1:
|
|
27
|
+
return CALL_POLICY_CONTRACT_V0_0_1
|
|
28
|
+
case CallPolicyVersion.V0_0_2:
|
|
29
|
+
return CALL_POLICY_CONTRACT_V0_0_2
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
12
33
|
export type CallPolicyParams<
|
|
13
34
|
TAbi extends Abi | readonly unknown[],
|
|
14
35
|
TFunctionName extends string | undefined = string
|
|
15
36
|
> = PolicyParams & {
|
|
37
|
+
policyVersion: CallPolicyVersion
|
|
16
38
|
permissions?: Permission<TAbi, TFunctionName>[]
|
|
17
39
|
}
|
|
18
40
|
|
|
@@ -20,15 +42,19 @@ export function toCallPolicy<
|
|
|
20
42
|
TAbi extends Abi | readonly unknown[],
|
|
21
43
|
TFunctionName extends string | undefined = string
|
|
22
44
|
>({
|
|
23
|
-
policyAddress
|
|
45
|
+
policyAddress,
|
|
24
46
|
policyFlag = PolicyFlags.FOR_ALL_VALIDATION,
|
|
47
|
+
policyVersion,
|
|
25
48
|
permissions = []
|
|
26
49
|
}: CallPolicyParams<TAbi, TFunctionName>): Policy {
|
|
50
|
+
const callPolicyAddress = getCallPolicyAddress(policyVersion, policyAddress)
|
|
51
|
+
|
|
27
52
|
const generatedPermissionParams = permissions?.map((perm) =>
|
|
28
53
|
getPermissionFromABI({
|
|
29
54
|
abi: perm.abi as Abi,
|
|
30
55
|
functionName: perm.functionName as string,
|
|
31
|
-
args: perm.args as []
|
|
56
|
+
args: perm.args as [],
|
|
57
|
+
policyAddress: callPolicyAddress
|
|
32
58
|
})
|
|
33
59
|
)
|
|
34
60
|
|
|
@@ -44,17 +70,21 @@ export function toCallPolicy<
|
|
|
44
70
|
rules: perm.rules ?? generatedPermissionParams?.[index]?.rules ?? []
|
|
45
71
|
})) ?? []
|
|
46
72
|
|
|
47
|
-
const encodedPermissionData = encodePermissionData(
|
|
73
|
+
const encodedPermissionData = encodePermissionData(
|
|
74
|
+
permissions,
|
|
75
|
+
callPolicyAddress
|
|
76
|
+
)
|
|
48
77
|
|
|
49
78
|
return {
|
|
50
79
|
getPolicyData: () => {
|
|
51
80
|
return encodedPermissionData
|
|
52
81
|
},
|
|
53
82
|
getPolicyInfoInBytes: () => {
|
|
54
|
-
return concatHex([policyFlag,
|
|
83
|
+
return concatHex([policyFlag, callPolicyAddress])
|
|
55
84
|
},
|
|
56
85
|
policyParams: {
|
|
57
86
|
type: "call",
|
|
87
|
+
policyVersion,
|
|
58
88
|
policyAddress,
|
|
59
89
|
policyFlag,
|
|
60
90
|
permissions
|
package/policies/types.ts
CHANGED
|
@@ -23,13 +23,14 @@ export enum ParamCondition {
|
|
|
23
23
|
LESS_THAN = 2,
|
|
24
24
|
GREATER_THAN_OR_EQUAL = 3,
|
|
25
25
|
LESS_THAN_OR_EQUAL = 4,
|
|
26
|
-
NOT_EQUAL = 5
|
|
26
|
+
NOT_EQUAL = 5,
|
|
27
|
+
ONE_OF = 6
|
|
27
28
|
}
|
|
28
29
|
|
|
29
30
|
export interface ParamRule {
|
|
30
31
|
condition: ParamCondition
|
|
31
32
|
offset: number
|
|
32
|
-
|
|
33
|
+
params: Hex | Hex[]
|
|
33
34
|
}
|
|
34
35
|
|
|
35
36
|
export type PermissionCore = {
|
|
@@ -93,14 +94,34 @@ export type Permission<
|
|
|
93
94
|
>
|
|
94
95
|
: never)
|
|
95
96
|
|
|
97
|
+
type ConditionValue<
|
|
98
|
+
TAbiParameter extends AbiParameter,
|
|
99
|
+
TAbiParameterKind extends AbiParameterKind
|
|
100
|
+
> =
|
|
101
|
+
| {
|
|
102
|
+
condition: ParamCondition.ONE_OF
|
|
103
|
+
value: AbiParameterToPrimitiveType<TAbiParameter, TAbiParameterKind>[]
|
|
104
|
+
}
|
|
105
|
+
| {
|
|
106
|
+
condition: Exclude<ParamCondition, ParamCondition.ONE_OF>
|
|
107
|
+
value: AbiParameterToPrimitiveType<TAbiParameter, TAbiParameterKind>
|
|
108
|
+
}
|
|
109
|
+
|
|
96
110
|
export type CombinedArgs<
|
|
97
111
|
TAbiParameters extends readonly AbiParameter[],
|
|
98
112
|
TAbiParameterKind extends AbiParameterKind = AbiParameterKind
|
|
99
113
|
> = {
|
|
100
|
-
[K in keyof TAbiParameters]:
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
114
|
+
[K in keyof TAbiParameters]: ConditionValue<
|
|
115
|
+
TAbiParameters[K],
|
|
116
|
+
TAbiParameterKind
|
|
117
|
+
> | null
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export type GeneratePermissionWithPolicyAddressParameters<
|
|
121
|
+
TAbi extends Abi | readonly unknown[],
|
|
122
|
+
TFunctionName extends string | undefined = string
|
|
123
|
+
> = GeneratePermissionFromArgsParameters<TAbi, TFunctionName> & {
|
|
124
|
+
policyAddress: Address
|
|
104
125
|
}
|
|
105
126
|
|
|
106
127
|
export type GeneratePermissionFromArgsParameters<
|