@zerodev/permissions 5.6.2 → 5.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_cjs/constants.js +2 -1
- package/_cjs/constants.js.map +1 -1
- package/_cjs/policies/callPolicyUtils.js +27 -0
- package/_cjs/policies/callPolicyUtils.js.map +1 -1
- package/_cjs/policies/toCallPolicy.js +18 -16
- package/_cjs/policies/toCallPolicy.js.map +1 -1
- package/_cjs/policies/types.js +1 -0
- package/_cjs/policies/types.js.map +1 -1
- package/_cjs/serializeMultiChainPermissionAccounts.js +31 -13
- package/_cjs/serializeMultiChainPermissionAccounts.js.map +1 -1
- package/_cjs/serializePermissionAccount.js +5 -4
- package/_cjs/serializePermissionAccount.js.map +1 -1
- package/_esm/constants.js +5 -0
- package/_esm/constants.js.map +1 -1
- package/_esm/policies/callPolicyUtils.js +29 -1
- package/_esm/policies/callPolicyUtils.js.map +1 -1
- package/_esm/policies/toCallPolicy.js +21 -19
- package/_esm/policies/toCallPolicy.js.map +1 -1
- package/_esm/policies/types.js +1 -0
- package/_esm/policies/types.js.map +1 -1
- package/_esm/serializeMultiChainPermissionAccounts.js +33 -14
- package/_esm/serializeMultiChainPermissionAccounts.js.map +1 -1
- package/_esm/serializePermissionAccount.js +6 -4
- package/_esm/serializePermissionAccount.js.map +1 -1
- package/_types/constants.d.ts +5 -0
- package/_types/constants.d.ts.map +1 -1
- package/_types/policies/callPolicyUtils.d.ts.map +1 -1
- package/_types/policies/toCallPolicy.d.ts +7 -6
- package/_types/policies/toCallPolicy.d.ts.map +1 -1
- package/_types/policies/types.d.ts +21 -2
- package/_types/policies/types.d.ts.map +1 -1
- package/_types/serializeMultiChainPermissionAccounts.d.ts +3 -0
- package/_types/serializeMultiChainPermissionAccounts.d.ts.map +1 -1
- package/_types/serializePermissionAccount.d.ts +1 -1
- package/_types/serializePermissionAccount.d.ts.map +1 -1
- package/_types/types.d.ts +2 -2
- package/_types/types.d.ts.map +1 -1
- package/constants.ts +7 -0
- package/package.json +1 -1
- package/policies/callPolicyUtils.ts +39 -0
- package/policies/toCallPolicy.ts +22 -17
- package/policies/types.ts +51 -2
- package/serializeMultiChainPermissionAccounts.ts +42 -21
- package/serializePermissionAccount.ts +9 -4
- package/types.ts +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializeMultiChainPermissionAccounts.js","sourceRoot":"","sources":["../serializeMultiChainPermissionAccounts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAEH,SAAS,EACT,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,aAAa,EACb,SAAS,EACZ,MAAM,MAAM,CAAA;AAGb,OAAO,EACH,2BAA2B,EAC3B,gCAAgC,EACnC,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"serializeMultiChainPermissionAccounts.js","sourceRoot":"","sources":["../serializeMultiChainPermissionAccounts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
import { isPermissionValidatorPlugin, serializePermissionAccountParams } from "./utils.js";
|
|
2
|
-
export const serializePermissionAccount = async (account, privateKey, enableSignature, eip7702Auth, permissionPlugin) => {
|
|
2
|
+
export const serializePermissionAccount = async (account, privateKey, enableSignature, eip7702Auth, permissionPlugin, isExternalPermissionPlugin) => {
|
|
3
3
|
let permissionParams;
|
|
4
4
|
let isPreInstalled = false;
|
|
5
5
|
const action = account.kernelPluginManager.getAction();
|
|
6
6
|
const validityData = account.kernelPluginManager.getValidityData();
|
|
7
7
|
// Check if permission plugin is in kernelPluginManager
|
|
8
|
-
if (isPermissionValidatorPlugin(account.kernelPluginManager)
|
|
8
|
+
if (isPermissionValidatorPlugin(account.kernelPluginManager) &&
|
|
9
|
+
!isExternalPermissionPlugin) {
|
|
9
10
|
permissionParams =
|
|
10
11
|
account.kernelPluginManager.getPluginSerializationParams();
|
|
11
12
|
}
|
|
12
13
|
else if (permissionPlugin) {
|
|
13
14
|
// Permission plugin provided externally (initConfig case)
|
|
14
15
|
permissionParams = permissionPlugin.getPluginSerializationParams();
|
|
15
|
-
isPreInstalled =
|
|
16
|
+
isPreInstalled = !isExternalPermissionPlugin;
|
|
16
17
|
}
|
|
17
18
|
else {
|
|
18
19
|
throw new Error("No permission validator found in account or provided");
|
|
@@ -20,7 +21,8 @@ export const serializePermissionAccount = async (account, privateKey, enableSign
|
|
|
20
21
|
const _enableSignature = isPreInstalled
|
|
21
22
|
? undefined
|
|
22
23
|
: (enableSignature ??
|
|
23
|
-
(await account.kernelPluginManager.getPluginEnableSignature(account.address
|
|
24
|
+
(await account.kernelPluginManager.getPluginEnableSignature(account.address, isExternalPermissionPlugin ? permissionPlugin : undefined // override permission plugin if externalPlugin
|
|
25
|
+
)));
|
|
24
26
|
const _eip7702Auth = account.authorization
|
|
25
27
|
? (eip7702Auth ?? (await account?.eip7702Authorization?.()))
|
|
26
28
|
: undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializePermissionAccount.js","sourceRoot":"","sources":["../serializePermissionAccount.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,2BAA2B,EAC3B,gCAAgC,EACnC,MAAM,YAAY,CAAA;AAEnB,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,EAC3C,OAAuD,EACvD,UAAgB,EAChB,eAAqB,EACrB,WAAyC,EACzC,gBAAmC,
|
|
1
|
+
{"version":3,"file":"serializePermissionAccount.js","sourceRoot":"","sources":["../serializePermissionAccount.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,2BAA2B,EAC3B,gCAAgC,EACnC,MAAM,YAAY,CAAA;AAEnB,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,EAC3C,OAAuD,EACvD,UAAgB,EAChB,eAAqB,EACrB,WAAyC,EACzC,gBAAmC,EACnC,0BAAoC,EACrB,EAAE;IACjB,IAAI,gBAAgC,CAAA;IACpC,IAAI,cAAc,GAAG,KAAK,CAAA;IAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE,CAAA;IACtD,MAAM,YAAY,GAAG,OAAO,CAAC,mBAAmB,CAAC,eAAe,EAAE,CAAA;IAElE,uDAAuD;IACvD,IACI,2BAA2B,CAAC,OAAO,CAAC,mBAAmB,CAAC;QACxD,CAAC,0BAA0B,EAC7B,CAAC;QACC,gBAAgB;YACZ,OAAO,CAAC,mBAAmB,CAAC,4BAA4B,EAAE,CAAA;IAClE,CAAC;SAAM,IAAI,gBAAgB,EAAE,CAAC;QAC1B,0DAA0D;QAC1D,gBAAgB,GAAG,gBAAgB,CAAC,4BAA4B,EAAE,CAAA;QAClE,cAAc,GAAG,CAAC,0BAA0B,CAAA;IAChD,CAAC;SAAM,CAAC;QACJ,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;IAC3E,CAAC;IAED,MAAM,gBAAgB,GAAG,cAAc;QACnC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,CAAC,eAAe;YAChB,CAAC,MAAM,OAAO,CAAC,mBAAmB,CAAC,wBAAwB,CACvD,OAAO,CAAC,OAAO,EACf,0BAA0B,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,+CAA+C;aAC5G,CAAC,CAAC,CAAA;IACT,MAAM,YAAY,GAAG,OAAO,CAAC,aAAa;QACtC,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,MAAM,OAAO,EAAE,oBAAoB,EAAE,EAAE,CAAC,CAAC;QAC5D,CAAC,CAAC,SAAS,CAAA;IACf,MAAM,aAAa,GAAG;QAClB,QAAQ,EAAE,MAAM,OAAO,CAAC,gBAAgB,EAAE;QAC1C,cAAc,EAAE,OAAO,CAAC,OAAO;KAClC,CAAA;IAED,MAAM,oBAAoB,GAAG;QACzB,gBAAgB;QAChB,MAAM;QACN,YAAY;QACZ,aAAa;QACb,eAAe,EAAE,gBAAgB;QACjC,UAAU;QACV,WAAW,EAAE,YAAY;QACzB,cAAc;KACjB,CAAA;IAED,OAAO,gCAAgC,CAAC,oBAAoB,CAAC,CAAA;AACjE,CAAC,CAAA"}
|
package/_types/constants.d.ts
CHANGED
|
@@ -33,6 +33,11 @@ export declare const CALL_POLICY_CONTRACT_V0_0_3 = "0xB3CB5f502250360335614df142
|
|
|
33
33
|
* - Fixed erc4337 storage violation with custom storage slot (Works with Alchemy now)
|
|
34
34
|
*/
|
|
35
35
|
export declare const CALL_POLICY_CONTRACT_V0_0_4 = "0x9a52283276A0ec8740DF50bF01B28A80D880eaf2";
|
|
36
|
+
/**
|
|
37
|
+
* @dev CALL_POLICY_CONTRACT_V0_0_5 updates
|
|
38
|
+
* - Added SLICE_EQUAL condition
|
|
39
|
+
*/
|
|
40
|
+
export declare const CALL_POLICY_CONTRACT_V0_0_5 = "0x85770b902D1e503D5f5141d9eaC16d0d08eEaDd2";
|
|
36
41
|
export declare const GAS_POLICY_CONTRACT = "0xaeFC5AbC67FfD258abD0A3E54f65E70326F84b23";
|
|
37
42
|
export declare const RATE_LIMIT_POLICY_CONTRACT = "0xf63d4139B25c836334edD76641356c6b74C86873";
|
|
38
43
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,+CACc,CAAA;AAChD,eAAO,MAAM,+BAA+B,+CACI,CAAA;AAChD;;;GAGG;AACH,eAAO,MAAM,+BAA+B,+CACI,CAAA;AAEhD;;;GAGG;AACH,eAAO,MAAM,+BAA+B,+CACI,CAAA;AAEhD;;;GAGG;AACH,eAAO,MAAM,+BAA+B,+CACI,CAAA;AAEhD,eAAO,MAAM,2BAA2B,+CACQ,CAAA;AAChD;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,+CACQ,CAAA;AAEhD;;;GAGG;AACH,eAAO,MAAM,2BAA2B,+CACQ,CAAA;AAEhD;;;GAGG;AACH,eAAO,MAAM,2BAA2B,+CACQ,CAAA;AAEhD,eAAO,MAAM,mBAAmB,+CAA+C,CAAA;AAC/E,eAAO,MAAM,0BAA0B,+CACS,CAAA;AAEhD;;;GAGG;AACH,eAAO,MAAM,qCAAqC,+CACF,CAAA;AAEhD,eAAO,MAAM,yBAAyB,+CACU,CAAA;AAChD,eAAO,MAAM,oBAAoB,+CAA+C,CAAA;AAChF,eAAO,MAAM,yBAAyB,+CACU,CAAA;AAEhD,oBAAY,WAAW;IACnB,kBAAkB,WAAW;IAC7B,uBAAuB,WAAW;IAClC,oBAAoB,WAAW;CAClC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,+CACc,CAAA;AAChD,eAAO,MAAM,+BAA+B,+CACI,CAAA;AAChD;;;GAGG;AACH,eAAO,MAAM,+BAA+B,+CACI,CAAA;AAEhD;;;GAGG;AACH,eAAO,MAAM,+BAA+B,+CACI,CAAA;AAEhD;;;GAGG;AACH,eAAO,MAAM,+BAA+B,+CACI,CAAA;AAEhD,eAAO,MAAM,2BAA2B,+CACQ,CAAA;AAChD;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,+CACQ,CAAA;AAEhD;;;GAGG;AACH,eAAO,MAAM,2BAA2B,+CACQ,CAAA;AAEhD;;;GAGG;AACH,eAAO,MAAM,2BAA2B,+CACQ,CAAA;AAEhD;;;GAGG;AACH,eAAO,MAAM,2BAA2B,+CACQ,CAAA;AAEhD,eAAO,MAAM,mBAAmB,+CAA+C,CAAA;AAC/E,eAAO,MAAM,0BAA0B,+CACS,CAAA;AAEhD;;;GAGG;AACH,eAAO,MAAM,qCAAqC,+CACF,CAAA;AAEhD,eAAO,MAAM,yBAAyB,+CACU,CAAA;AAChD,eAAO,MAAM,oBAAoB,+CAA+C,CAAA;AAChF,eAAO,MAAM,yBAAyB,+CACU,CAAA;AAEhD,oBAAY,WAAW;IACnB,kBAAkB,WAAW;IAC7B,uBAAuB,WAAW;IAClC,oBAAoB,WAAW;CAClC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callPolicyUtils.d.ts","sourceRoot":"","sources":["../../policies/callPolicyUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,GAAG,EAER,KAAK,OAAO,EACZ,KAAK,GAAG,
|
|
1
|
+
{"version":3,"file":"callPolicyUtils.d.ts","sourceRoot":"","sources":["../../policies/callPolicyUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,GAAG,EAER,KAAK,OAAO,EACZ,KAAK,GAAG,EAQX,MAAM,MAAM,CAAA;AAEb,OAAO,EAEH,KAAK,6CAA6C,EAGlD,KAAK,cAAc,EACtB,MAAM,YAAY,CAAA;AAEnB,wBAAgB,oBAAoB,CAChC,IAAI,SAAS,GAAG,GAAG,SAAS,OAAO,EAAE,EACrC,aAAa,SAAS,MAAM,GAAG,SAAS,GAAG,MAAM,EACnD,EACE,GAAG,EACH,IAAI,EACJ,YAAY,EACZ,aAAa,EACb,QAAQ,EACX,EAAE,6CAA6C,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,IAAI,CACxE,cAAc,EACd,UAAU,GAAG,OAAO,CACvB,CAmKA;AAED,eAAO,MAAM,oBAAoB,eACjB,cAAc,GAAG,cAAc,EAAE,iBAC9B,OAAO,KACvB,GAkDF,CAAA"}
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import type { Abi, Address } from "viem";
|
|
1
|
+
import type { Abi, Address, Narrow } from "viem";
|
|
2
2
|
import type { Policy, PolicyParams } from "../types.js";
|
|
3
|
-
import { type Permission } from "./types.js";
|
|
3
|
+
import { type InferPermissions, type Permission } from "./types.js";
|
|
4
4
|
export declare enum CallPolicyVersion {
|
|
5
5
|
V0_0_1 = "0.0.1",
|
|
6
6
|
V0_0_2 = "0.0.2",
|
|
7
7
|
V0_0_3 = "0.0.3",
|
|
8
|
-
V0_0_4 = "0.0.4"
|
|
8
|
+
V0_0_4 = "0.0.4",
|
|
9
|
+
V0_0_5 = "0.0.5"
|
|
9
10
|
}
|
|
10
11
|
export declare const getCallPolicyAddress: (policyVersion: CallPolicyVersion, policyAddress?: Address) => Address;
|
|
11
|
-
export type CallPolicyParams<
|
|
12
|
+
export type CallPolicyParams<permissions extends readonly Permission<Abi, string>[] = readonly Permission<Abi, string>[]> = PolicyParams & {
|
|
12
13
|
policyVersion: CallPolicyVersion;
|
|
13
|
-
permissions?:
|
|
14
|
+
permissions?: InferPermissions<Narrow<permissions>>;
|
|
14
15
|
};
|
|
15
|
-
export declare function toCallPolicy<
|
|
16
|
+
export declare function toCallPolicy<const permissions extends readonly Permission<Abi, string>[]>({ policyAddress, policyFlag, policyVersion, permissions: inputPermissions }: CallPolicyParams<permissions>): Policy;
|
|
16
17
|
//# sourceMappingURL=toCallPolicy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toCallPolicy.d.ts","sourceRoot":"","sources":["../../policies/toCallPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAO,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"toCallPolicy.d.ts","sourceRoot":"","sources":["../../policies/toCallPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAO,MAAM,EAAE,MAAM,MAAM,CAAA;AAUrD,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAKvD,OAAO,EAAY,KAAK,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAA;AAE7E,oBAAY,iBAAiB;IACzB,MAAM,UAAU;IAChB,MAAM,UAAU;IAChB,MAAM,UAAU;IAChB,MAAM,UAAU;IAChB,MAAM,UAAU;CACnB;AAED,eAAO,MAAM,oBAAoB,kBACd,iBAAiB,kBAChB,OAAO,KACxB,OAcF,CAAA;AAED,MAAM,MAAM,gBAAgB,CACxB,WAAW,SAAS,SAAS,UAAU,CACnC,GAAG,EACH,MAAM,CACT,EAAE,GAAG,SAAS,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,IACxC,YAAY,GAAG;IACf,aAAa,EAAE,iBAAiB,CAAA;IAChC,WAAW,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAA;CACtD,CAAA;AAED,wBAAgB,YAAY,CACxB,KAAK,CAAC,WAAW,SAAS,SAAS,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAC9D,EACE,aAAa,EACb,UAA2C,EAC3C,aAAa,EACb,WAAW,EAAE,gBAAgB,EAChC,EAAE,gBAAgB,CAAC,WAAW,CAAC,GAAG,MAAM,CA2DxC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ExtractAbiFunction, ExtractAbiFunctionNames } from "abitype";
|
|
2
|
-
import type { Abi, AbiFunction, AbiParameter, AbiParameterKind, AbiParameterToPrimitiveType, AbiStateMutability, Address, Hex, Narrow } from "viem";
|
|
2
|
+
import type { Abi, AbiFunction, AbiParameter, AbiParameterKind, AbiParameterToPrimitiveType, AbiStateMutability, Address, ContractFunctionName, Hex, Narrow, Prettify } from "viem";
|
|
3
3
|
export declare enum CallType {
|
|
4
4
|
CALL = "0x00",
|
|
5
5
|
BATCH_CALL = "0x01",
|
|
@@ -12,7 +12,8 @@ export declare enum ParamCondition {
|
|
|
12
12
|
GREATER_THAN_OR_EQUAL = 3,
|
|
13
13
|
LESS_THAN_OR_EQUAL = 4,
|
|
14
14
|
NOT_EQUAL = 5,
|
|
15
|
-
ONE_OF = 6
|
|
15
|
+
ONE_OF = 6,
|
|
16
|
+
SLICE_EQUAL = 7
|
|
16
17
|
}
|
|
17
18
|
export interface ParamRule {
|
|
18
19
|
condition: ParamCondition;
|
|
@@ -49,6 +50,11 @@ export type Permission<TAbi extends Abi | readonly unknown[], TFunctionName exte
|
|
|
49
50
|
type ConditionValue<TAbiParameter extends AbiParameter, TAbiParameterKind extends AbiParameterKind> = {
|
|
50
51
|
condition: ParamCondition.ONE_OF;
|
|
51
52
|
value: AbiParameterToPrimitiveType<TAbiParameter, TAbiParameterKind>[];
|
|
53
|
+
} | {
|
|
54
|
+
condition: ParamCondition.SLICE_EQUAL;
|
|
55
|
+
value: AbiParameterToPrimitiveType<TAbiParameter, TAbiParameterKind>;
|
|
56
|
+
start: number;
|
|
57
|
+
length: number;
|
|
52
58
|
} | {
|
|
53
59
|
condition: Exclude<ParamCondition, ParamCondition.ONE_OF>;
|
|
54
60
|
value: AbiParameterToPrimitiveType<TAbiParameter, TAbiParameterKind>;
|
|
@@ -67,5 +73,18 @@ export type GeneratePermissionFromArgsParameters<TAbi extends Abi | readonly unk
|
|
|
67
73
|
} & GetFunctionArgs<TAbi, TFunctionName> : _FunctionName extends string ? {
|
|
68
74
|
abi: [Narrow<TAbi[number]>];
|
|
69
75
|
} & GetFunctionArgs<TAbi, _FunctionName> : never);
|
|
76
|
+
export type GetPermissionParameters<permission> = permission extends {
|
|
77
|
+
abi: infer abi extends Abi;
|
|
78
|
+
} ? permission extends {
|
|
79
|
+
functionName: infer functionName extends ContractFunctionName<abi>;
|
|
80
|
+
} ? PermissionWithABI<abi, functionName> : Abi extends abi ? PermissionWithABI<abi, string> : PermissionWithABI<abi, string> : permission extends {
|
|
81
|
+
target: Address;
|
|
82
|
+
} ? PermissionManual : never;
|
|
83
|
+
export type InferPermissions<permissions extends readonly unknown[], result extends readonly unknown[] = []> = permissions extends readonly [] ? readonly [] : permissions extends readonly [infer permission] ? readonly [...result, Prettify<GetPermissionParameters<permission>>] : permissions extends readonly [infer permission, ...infer rest] ? InferPermissions<[
|
|
84
|
+
...rest
|
|
85
|
+
], [
|
|
86
|
+
...result,
|
|
87
|
+
Prettify<GetPermissionParameters<permission>>
|
|
88
|
+
]> : readonly unknown[] extends permissions ? permissions : permissions extends readonly (infer permission)[] ? readonly Prettify<GetPermissionParameters<permission>>[] : readonly Permission<Abi, string>[];
|
|
70
89
|
export {};
|
|
71
90
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../policies/types.ts"],"names":[],"mappings":"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,
|
|
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,oBAAoB,EACpB,GAAG,EACH,MAAM,EACN,QAAQ,EACX,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;IACV,WAAW,IAAI;CAClB;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,iBAAiB,CACzB,IAAI,SAAS,GAAG,GAAG,SAAS,OAAO,EAAE,EACrC,aAAa,SAAS,MAAM,GAAG,SAAS,GAAG,MAAM,EACjD,aAAa,GAAG,IAAI,SAAS,GAAG,GAC1B,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC,GACtC,KAAK,IACX,cAAc,GAAG;IACjB,GAAG,EAAE,IAAI,SAAS,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAC7D,YAAY,EAAE,aAAa,CAAA;IAC3B,QAAQ,CAAC,EAAE,GAAG,CAAA;IACd,KAAK,CAAC,EAAE,KAAK,CAAA;CAChB,GAAG,CAAC,aAAa,SAAS,MAAM,GACvB,eAAe,CAAC,IAAI,EAAE,aAAa,CAAC,GACpC,aAAa,SAAS,MAAM,GAC1B,eAAe,CAAC,IAAI,EAAE,aAAa,CAAC,GACpC,KAAK,CAAC,CAAA;AAElB,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG;IAC5C,GAAG,CAAC,EAAE,KAAK,CAAA;IACX,YAAY,CAAC,EAAE,KAAK,CAAA;IACpB,IAAI,CAAC,EAAE,KAAK,CAAA;CACf,CAAA;AAED,MAAM,MAAM,UAAU,CAClB,IAAI,SAAS,GAAG,GAAG,SAAS,OAAO,EAAE,EACrC,aAAa,SAAS,MAAM,GAAG,SAAS,GAAG,MAAM,IACjD,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,gBAAgB,CAAA;AAE7D,KAAK,cAAc,CACf,aAAa,SAAS,YAAY,EAClC,iBAAiB,SAAS,gBAAgB,IAExC;IACI,SAAS,EAAE,cAAc,CAAC,MAAM,CAAA;IAChC,KAAK,EAAE,2BAA2B,CAAC,aAAa,EAAE,iBAAiB,CAAC,EAAE,CAAA;CACzE,GACD;IACI,SAAS,EAAE,cAAc,CAAC,WAAW,CAAA;IACrC,KAAK,EAAE,2BAA2B,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAA;IACpE,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACjB,GACD;IACI,SAAS,EAAE,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;IACzD,KAAK,EAAE,2BAA2B,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAA;CACvE,CAAA;AAEP,MAAM,MAAM,YAAY,CACpB,cAAc,SAAS,SAAS,YAAY,EAAE,EAC9C,iBAAiB,SAAS,gBAAgB,GAAG,gBAAgB,IAC7D;KACC,CAAC,IAAI,MAAM,cAAc,GAAG,cAAc,CACvC,cAAc,CAAC,CAAC,CAAC,EACjB,iBAAiB,CACpB,GAAG,IAAI;CACX,CAAA;AAED,MAAM,MAAM,6CAA6C,CACrD,IAAI,SAAS,GAAG,GAAG,SAAS,OAAO,EAAE,EACrC,aAAa,SAAS,MAAM,GAAG,SAAS,GAAG,MAAM,IACjD,oCAAoC,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG;IAC5D,aAAa,EAAE,OAAO,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,oCAAoC,CAC5C,IAAI,SAAS,GAAG,GAAG,SAAS,OAAO,EAAE,EACrC,aAAa,SAAS,MAAM,GAAG,SAAS,GAAG,MAAM,EACjD,aAAa,GAAG,IAAI,SAAS,GAAG,GAC1B,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC,GACtC,KAAK,IACX;IACA,YAAY,CAAC,EAAE,aAAa,CAAA;IAC5B,QAAQ,CAAC,EAAE,GAAG,CAAA;CACjB,GAAG,CAAC,aAAa,SAAS,MAAM,GAC3B;IAAE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;CAAE,GAAG,eAAe,CAAC,IAAI,EAAE,aAAa,CAAC,GAC5D,aAAa,SAAS,MAAM,GAC1B;IAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;CAAE,GAAG,eAAe,CAAC,IAAI,EAAE,aAAa,CAAC,GACtE,KAAK,CAAC,CAAA;AAGd,MAAM,MAAM,uBAAuB,CAAC,UAAU,IAAI,UAAU,SAAS;IACjE,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,CAAA;CAC7B,GAEK,UAAU,SAAS;IACf,YAAY,EAAE,MAAM,YAAY,SAAS,oBAAoB,CAAC,GAAG,CAAC,CAAA;CACrE,GAEG,iBAAiB,CAAC,GAAG,EAAE,YAAY,CAAC,GAEpC,GAAG,SAAS,GAAG,GACb,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,GAE9B,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,GACpC,UAAU,SAAS;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GACpC,gBAAgB,GAChB,KAAK,CAAA;AAGb,MAAM,MAAM,gBAAgB,CACxB,WAAW,SAAS,SAAS,OAAO,EAAE,EACtC,MAAM,SAAS,SAAS,OAAO,EAAE,GAAG,EAAE,IACtC,WAAW,SAAS,SAAS,EAAE,GAC7B,SAAS,EAAE,GACX,WAAW,SAAS,SAAS,CAAC,MAAM,UAAU,CAAC,GAC7C,SAAS,CAAC,GAAG,MAAM,EAAE,QAAQ,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC,CAAC,GACnE,WAAW,SAAS,SAAS,CAAC,MAAM,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,GAC5D,gBAAgB,CACZ;IAAC,GAAG,IAAI;CAAC,EACT;IAAC,GAAG,MAAM;IAAE,QAAQ,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;CAAC,CAC7D,GACD,SAAS,OAAO,EAAE,SAAS,WAAW,GACpC,WAAW,GAEX,WAAW,SAAS,SAAS,CAAC,MAAM,UAAU,CAAC,EAAE,GAC/C,SAAS,QAAQ,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC,EAAE,GAExD,SAAS,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAA"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import type { KernelSmartAccountImplementation } from "@zerodev/sdk";
|
|
2
2
|
import { type Hex } from "viem";
|
|
3
3
|
import type { SmartAccount } from "viem/account-abstraction";
|
|
4
|
+
import type { PermissionPlugin } from "./types.js";
|
|
4
5
|
export type MultiChainPermissionAccountsParams = {
|
|
5
6
|
account: SmartAccount<KernelSmartAccountImplementation>;
|
|
6
7
|
privateKey?: Hex;
|
|
8
|
+
permissionPlugin?: PermissionPlugin;
|
|
9
|
+
isExternalPermissionPlugin?: boolean;
|
|
7
10
|
};
|
|
8
11
|
export declare const serializeMultiChainPermissionAccounts: (params: MultiChainPermissionAccountsParams[]) => Promise<string[]>;
|
|
9
12
|
export declare function decodeSignature(signature: Hex): `0x${string}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializeMultiChainPermissionAccounts.d.ts","sourceRoot":"","sources":["../serializeMultiChainPermissionAccounts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,cAAc,CAAA;AAEpE,OAAO,EACH,KAAK,GAAG,EAOX,MAAM,MAAM,CAAA;AACb,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"serializeMultiChainPermissionAccounts.d.ts","sourceRoot":"","sources":["../serializeMultiChainPermissionAccounts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,cAAc,CAAA;AAEpE,OAAO,EACH,KAAK,GAAG,EAOX,MAAM,MAAM,CAAA;AACb,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAMlD,MAAM,MAAM,kCAAkC,GAAG;IAC7C,OAAO,EAAE,YAAY,CAAC,gCAAgC,CAAC,CAAA;IACvD,UAAU,CAAC,EAAE,GAAG,CAAA;IAChB,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,0BAA0B,CAAC,EAAE,OAAO,CAAA;CACvC,CAAA;AAED,eAAO,MAAM,qCAAqC,WACtC,kCAAkC,EAAE,KAC7C,QAAQ,MAAM,EAAE,CAwJlB,CAAA;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,GAAG,iBAe7C"}
|
|
@@ -3,5 +3,5 @@ import type { Hex } from "viem";
|
|
|
3
3
|
import type { SmartAccount } from "viem/account-abstraction";
|
|
4
4
|
import type { SignAuthorizationReturnType } from "viem/accounts";
|
|
5
5
|
import type { PermissionPlugin } from "./types.js";
|
|
6
|
-
export declare const serializePermissionAccount: (account: SmartAccount<KernelSmartAccountImplementation>, privateKey?: Hex, enableSignature?: Hex, eip7702Auth?: SignAuthorizationReturnType, permissionPlugin?: PermissionPlugin) => Promise<string>;
|
|
6
|
+
export declare const serializePermissionAccount: (account: SmartAccount<KernelSmartAccountImplementation>, privateKey?: Hex, enableSignature?: Hex, eip7702Auth?: SignAuthorizationReturnType, permissionPlugin?: PermissionPlugin, isExternalPermissionPlugin?: boolean) => Promise<string>;
|
|
7
7
|
//# sourceMappingURL=serializePermissionAccount.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializePermissionAccount.d.ts","sourceRoot":"","sources":["../serializePermissionAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,cAAc,CAAA;AACpE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAC/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAA;AAChE,OAAO,KAAK,EAAkB,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAMlE,eAAO,MAAM,0BAA0B,YAC1B,aAAa,gCAAgC,CAAC,eAC1C,GAAG,oBACE,GAAG,gBACP,2BAA2B,qBACtB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"serializePermissionAccount.d.ts","sourceRoot":"","sources":["../serializePermissionAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,cAAc,CAAA;AACpE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAC/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAA;AAChE,OAAO,KAAK,EAAkB,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAMlE,eAAO,MAAM,0BAA0B,YAC1B,aAAa,gCAAgC,CAAC,eAC1C,GAAG,oBACE,GAAG,gBACP,2BAA2B,qBACtB,gBAAgB,+BACN,OAAO,KACrC,QAAQ,MAAM,CAgDhB,CAAA"}
|
package/_types/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { KernelValidator } from "@zerodev/sdk";
|
|
2
2
|
import type { Action, EntryPointType, GetKernelVersion, PluginValidityData } from "@zerodev/sdk/types";
|
|
3
|
-
import type {
|
|
3
|
+
import type { Address, Hex, LocalAccount } from "viem";
|
|
4
4
|
import type { EntryPointVersion } from "viem/account-abstraction";
|
|
5
5
|
import type { SignAuthorizationReturnType } from "viem/accounts";
|
|
6
6
|
import type { PolicyFlags } from "./constants.js";
|
|
@@ -24,7 +24,7 @@ export type ModularSigner = {
|
|
|
24
24
|
export type Policy = {
|
|
25
25
|
getPolicyData: () => Hex;
|
|
26
26
|
getPolicyInfoInBytes: () => Hex;
|
|
27
|
-
policyParams: (CallPolicyParams
|
|
27
|
+
policyParams: (CallPolicyParams & {
|
|
28
28
|
type: "call";
|
|
29
29
|
}) | (GasPolicyParams & {
|
|
30
30
|
type: "gas";
|
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,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"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"}
|
package/constants.ts
CHANGED
|
@@ -48,6 +48,13 @@ export const CALL_POLICY_CONTRACT_V0_0_3 =
|
|
|
48
48
|
export const CALL_POLICY_CONTRACT_V0_0_4 =
|
|
49
49
|
"0x9a52283276A0ec8740DF50bF01B28A80D880eaf2"
|
|
50
50
|
|
|
51
|
+
/**
|
|
52
|
+
* @dev CALL_POLICY_CONTRACT_V0_0_5 updates
|
|
53
|
+
* - Added SLICE_EQUAL condition
|
|
54
|
+
*/
|
|
55
|
+
export const CALL_POLICY_CONTRACT_V0_0_5 =
|
|
56
|
+
"0x85770b902D1e503D5f5141d9eaC16d0d08eEaDd2"
|
|
57
|
+
|
|
51
58
|
export const GAS_POLICY_CONTRACT = "0xaeFC5AbC67FfD258abD0A3E54f65E70326F84b23"
|
|
52
59
|
export const RATE_LIMIT_POLICY_CONTRACT =
|
|
53
60
|
"0xf63d4139B25c836334edD76641356c6b74C86873"
|
package/package.json
CHANGED
|
@@ -5,7 +5,9 @@ import {
|
|
|
5
5
|
type Hex,
|
|
6
6
|
encodeAbiParameters,
|
|
7
7
|
isHex,
|
|
8
|
+
keccak256,
|
|
8
9
|
pad,
|
|
10
|
+
size,
|
|
9
11
|
toFunctionSelector,
|
|
10
12
|
toHex
|
|
11
13
|
} from "viem"
|
|
@@ -99,6 +101,7 @@ export function getPermissionFromABI<
|
|
|
99
101
|
// Generate permission from the target function
|
|
100
102
|
const functionSelector = toFunctionSelector(targetFunction)
|
|
101
103
|
let paramRules: ParamRule[] = []
|
|
104
|
+
|
|
102
105
|
if (args && Array.isArray(args)) {
|
|
103
106
|
paramRules = (args as CombinedArgs<AbiFunction["inputs"]>)
|
|
104
107
|
.map((arg, i) => {
|
|
@@ -132,6 +135,41 @@ export function getPermissionFromABI<
|
|
|
132
135
|
{ size: 32 }
|
|
133
136
|
)
|
|
134
137
|
)
|
|
138
|
+
} else if (arg.condition === ParamCondition.SLICE_EQUAL) {
|
|
139
|
+
if (!("start" in arg) || !("length" in arg)) {
|
|
140
|
+
throw new Error(
|
|
141
|
+
"start and length are required for SLICE_EQUAL condition"
|
|
142
|
+
)
|
|
143
|
+
}
|
|
144
|
+
const functionArgsType = targetFunction.inputs[i].type
|
|
145
|
+
const { start, length, value } = arg
|
|
146
|
+
|
|
147
|
+
let hexValue: Hex
|
|
148
|
+
|
|
149
|
+
// functionArgsType can be "string" or "bytes"
|
|
150
|
+
if (functionArgsType === "string") {
|
|
151
|
+
hexValue = toHex(value as Parameters<typeof toHex>[0])
|
|
152
|
+
} else if (functionArgsType === "bytes") {
|
|
153
|
+
hexValue = isHex(value, { strict: true })
|
|
154
|
+
? value
|
|
155
|
+
: toHex(value as Parameters<typeof toHex>[0])
|
|
156
|
+
} else {
|
|
157
|
+
throw new Error(
|
|
158
|
+
`Unsupported function argument type: ${functionArgsType} could be "string" or "bytes"`
|
|
159
|
+
)
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
if (size(hexValue) !== length) {
|
|
163
|
+
throw new Error(
|
|
164
|
+
"Value length is not equal to the given length"
|
|
165
|
+
)
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
params = [
|
|
169
|
+
toHex(start, { size: 32 }),
|
|
170
|
+
toHex(length, { size: 32 }),
|
|
171
|
+
keccak256(hexValue)
|
|
172
|
+
]
|
|
135
173
|
} else {
|
|
136
174
|
params = [
|
|
137
175
|
pad(
|
|
@@ -144,6 +182,7 @@ export function getPermissionFromABI<
|
|
|
144
182
|
)
|
|
145
183
|
]
|
|
146
184
|
}
|
|
185
|
+
|
|
147
186
|
return {
|
|
148
187
|
params,
|
|
149
188
|
offset: i * 32,
|
package/policies/toCallPolicy.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import type { Abi, Address, Hex } from "viem"
|
|
1
|
+
import type { Abi, Address, Hex, Narrow } from "viem"
|
|
2
2
|
import { concatHex, pad } from "viem"
|
|
3
3
|
import {
|
|
4
4
|
CALL_POLICY_CONTRACT_V0_0_1,
|
|
5
5
|
CALL_POLICY_CONTRACT_V0_0_2,
|
|
6
6
|
CALL_POLICY_CONTRACT_V0_0_3,
|
|
7
7
|
CALL_POLICY_CONTRACT_V0_0_4,
|
|
8
|
+
CALL_POLICY_CONTRACT_V0_0_5,
|
|
8
9
|
PolicyFlags
|
|
9
10
|
} from "../constants.js"
|
|
10
11
|
import type { Policy, PolicyParams } from "../types.js"
|
|
@@ -12,13 +13,14 @@ import {
|
|
|
12
13
|
encodePermissionData,
|
|
13
14
|
getPermissionFromABI
|
|
14
15
|
} from "./callPolicyUtils.js"
|
|
15
|
-
import { CallType, type Permission } from "./types.js"
|
|
16
|
+
import { CallType, type InferPermissions, type Permission } from "./types.js"
|
|
16
17
|
|
|
17
18
|
export enum CallPolicyVersion {
|
|
18
19
|
V0_0_1 = "0.0.1",
|
|
19
20
|
V0_0_2 = "0.0.2",
|
|
20
21
|
V0_0_3 = "0.0.3",
|
|
21
|
-
V0_0_4 = "0.0.4"
|
|
22
|
+
V0_0_4 = "0.0.4",
|
|
23
|
+
V0_0_5 = "0.0.5"
|
|
22
24
|
}
|
|
23
25
|
|
|
24
26
|
export const getCallPolicyAddress = (
|
|
@@ -35,35 +37,38 @@ export const getCallPolicyAddress = (
|
|
|
35
37
|
return CALL_POLICY_CONTRACT_V0_0_3
|
|
36
38
|
case CallPolicyVersion.V0_0_4:
|
|
37
39
|
return CALL_POLICY_CONTRACT_V0_0_4
|
|
40
|
+
case CallPolicyVersion.V0_0_5:
|
|
41
|
+
return CALL_POLICY_CONTRACT_V0_0_5
|
|
38
42
|
}
|
|
39
43
|
}
|
|
40
44
|
|
|
41
45
|
export type CallPolicyParams<
|
|
42
|
-
|
|
43
|
-
|
|
46
|
+
permissions extends readonly Permission<
|
|
47
|
+
Abi,
|
|
48
|
+
string
|
|
49
|
+
>[] = readonly Permission<Abi, string>[]
|
|
44
50
|
> = PolicyParams & {
|
|
45
51
|
policyVersion: CallPolicyVersion
|
|
46
|
-
permissions?:
|
|
52
|
+
permissions?: InferPermissions<Narrow<permissions>>
|
|
47
53
|
}
|
|
48
54
|
|
|
49
55
|
export function toCallPolicy<
|
|
50
|
-
|
|
51
|
-
TFunctionName extends string | undefined = string
|
|
56
|
+
const permissions extends readonly Permission<Abi, string>[]
|
|
52
57
|
>({
|
|
53
58
|
policyAddress,
|
|
54
59
|
policyFlag = PolicyFlags.FOR_ALL_VALIDATION,
|
|
55
60
|
policyVersion,
|
|
56
|
-
permissions
|
|
57
|
-
}: CallPolicyParams<
|
|
61
|
+
permissions: inputPermissions
|
|
62
|
+
}: CallPolicyParams<permissions>): Policy {
|
|
58
63
|
const callPolicyAddress = getCallPolicyAddress(policyVersion, policyAddress)
|
|
59
64
|
|
|
60
|
-
const generatedPermissionParams =
|
|
65
|
+
const generatedPermissionParams = inputPermissions?.map((perm) => {
|
|
61
66
|
// Natural discrimination: if abi and functionName are present, do ABI-based validation
|
|
62
67
|
if (perm.abi && perm.functionName) {
|
|
63
68
|
return getPermissionFromABI({
|
|
64
69
|
abi: perm.abi as Abi,
|
|
65
70
|
functionName: perm.functionName as string,
|
|
66
|
-
args: perm.args
|
|
71
|
+
args: perm.args,
|
|
67
72
|
policyAddress: callPolicyAddress,
|
|
68
73
|
selector: perm.selector
|
|
69
74
|
})
|
|
@@ -76,8 +81,8 @@ export function toCallPolicy<
|
|
|
76
81
|
}
|
|
77
82
|
})
|
|
78
83
|
|
|
79
|
-
|
|
80
|
-
|
|
84
|
+
const processedPermissions =
|
|
85
|
+
inputPermissions?.map((perm, index) => ({
|
|
81
86
|
...perm,
|
|
82
87
|
callType: perm.callType ?? CallType.CALL,
|
|
83
88
|
selector:
|
|
@@ -92,7 +97,7 @@ export function toCallPolicy<
|
|
|
92
97
|
})) ?? []
|
|
93
98
|
|
|
94
99
|
const encodedPermissionData = encodePermissionData(
|
|
95
|
-
|
|
100
|
+
processedPermissions,
|
|
96
101
|
callPolicyAddress
|
|
97
102
|
)
|
|
98
103
|
|
|
@@ -108,8 +113,8 @@ export function toCallPolicy<
|
|
|
108
113
|
policyVersion,
|
|
109
114
|
policyAddress,
|
|
110
115
|
policyFlag,
|
|
111
|
-
permissions
|
|
112
|
-
} as unknown as CallPolicyParams<
|
|
116
|
+
permissions: processedPermissions
|
|
117
|
+
} as unknown as CallPolicyParams<permissions> & {
|
|
113
118
|
type: "call"
|
|
114
119
|
}
|
|
115
120
|
}
|
package/policies/types.ts
CHANGED
|
@@ -7,8 +7,10 @@ import type {
|
|
|
7
7
|
AbiParameterToPrimitiveType,
|
|
8
8
|
AbiStateMutability,
|
|
9
9
|
Address,
|
|
10
|
+
ContractFunctionName,
|
|
10
11
|
Hex,
|
|
11
|
-
Narrow
|
|
12
|
+
Narrow,
|
|
13
|
+
Prettify
|
|
12
14
|
} from "viem"
|
|
13
15
|
|
|
14
16
|
export enum CallType {
|
|
@@ -24,7 +26,8 @@ export enum ParamCondition {
|
|
|
24
26
|
GREATER_THAN_OR_EQUAL = 3,
|
|
25
27
|
LESS_THAN_OR_EQUAL = 4,
|
|
26
28
|
NOT_EQUAL = 5,
|
|
27
|
-
ONE_OF = 6
|
|
29
|
+
ONE_OF = 6,
|
|
30
|
+
SLICE_EQUAL = 7
|
|
28
31
|
}
|
|
29
32
|
|
|
30
33
|
export interface ParamRule {
|
|
@@ -113,6 +116,12 @@ type ConditionValue<
|
|
|
113
116
|
condition: ParamCondition.ONE_OF
|
|
114
117
|
value: AbiParameterToPrimitiveType<TAbiParameter, TAbiParameterKind>[]
|
|
115
118
|
}
|
|
119
|
+
| {
|
|
120
|
+
condition: ParamCondition.SLICE_EQUAL
|
|
121
|
+
value: AbiParameterToPrimitiveType<TAbiParameter, TAbiParameterKind>
|
|
122
|
+
start: number
|
|
123
|
+
length: number
|
|
124
|
+
}
|
|
116
125
|
| {
|
|
117
126
|
condition: Exclude<ParamCondition, ParamCondition.ONE_OF>
|
|
118
127
|
value: AbiParameterToPrimitiveType<TAbiParameter, TAbiParameterKind>
|
|
@@ -149,3 +158,43 @@ export type GeneratePermissionFromArgsParameters<
|
|
|
149
158
|
: _FunctionName extends string
|
|
150
159
|
? { abi: [Narrow<TAbi[number]>] } & GetFunctionArgs<TAbi, _FunctionName>
|
|
151
160
|
: never)
|
|
161
|
+
|
|
162
|
+
// infer permission parameters from `unknown` - similar to GetMulticallContractParameters
|
|
163
|
+
export type GetPermissionParameters<permission> = permission extends {
|
|
164
|
+
abi: infer abi extends Abi
|
|
165
|
+
} // 1. Check if `abi` is const-asserted or defined inline
|
|
166
|
+
? // 1a. Check if `functionName` is valid for `abi`
|
|
167
|
+
permission extends {
|
|
168
|
+
functionName: infer functionName extends ContractFunctionName<abi>
|
|
169
|
+
}
|
|
170
|
+
? // Use PermissionWithABI which supports CombinedArgs
|
|
171
|
+
PermissionWithABI<abi, functionName>
|
|
172
|
+
: // 1b. `functionName` is invalid, check if `abi` is declared as `Abi`
|
|
173
|
+
Abi extends abi
|
|
174
|
+
? PermissionWithABI<abi, string> // `abi` declared as `Abi`, unable to infer types further
|
|
175
|
+
: // `abi` is const-asserted or defined inline, infer types for `functionName` and `args`
|
|
176
|
+
PermissionWithABI<abi, string>
|
|
177
|
+
: permission extends { target: Address } // manual permission
|
|
178
|
+
? PermissionManual
|
|
179
|
+
: never // invalid permission
|
|
180
|
+
|
|
181
|
+
// Process permissions array - similar to MulticallContracts
|
|
182
|
+
export type InferPermissions<
|
|
183
|
+
permissions extends readonly unknown[],
|
|
184
|
+
result extends readonly unknown[] = []
|
|
185
|
+
> = permissions extends readonly [] // no permissions, return empty
|
|
186
|
+
? readonly []
|
|
187
|
+
: permissions extends readonly [infer permission] // one permission left before returning `result`
|
|
188
|
+
? readonly [...result, Prettify<GetPermissionParameters<permission>>]
|
|
189
|
+
: permissions extends readonly [infer permission, ...infer rest] // grab first permission and recurse through `rest`
|
|
190
|
+
? InferPermissions<
|
|
191
|
+
[...rest],
|
|
192
|
+
[...result, Prettify<GetPermissionParameters<permission>>]
|
|
193
|
+
>
|
|
194
|
+
: readonly unknown[] extends permissions
|
|
195
|
+
? permissions
|
|
196
|
+
: // If `permissions` is *some* array but we couldn't assign `unknown[]` to it, then it must hold some known/homogenous type!
|
|
197
|
+
permissions extends readonly (infer permission)[]
|
|
198
|
+
? readonly Prettify<GetPermissionParameters<permission>>[]
|
|
199
|
+
: // Fallback
|
|
200
|
+
readonly Permission<Abi, string>[]
|