@zerodev/permissions 5.6.1 → 5.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/_cjs/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toInitConfig = exports.decodeParamsFromInitCode = exports.deserializePermissionAccount = exports.serializeMultiChainPermissionAccounts = exports.serializePermissionAccount = exports.toPermissionValidator = void 0;
3
+ exports.isPermissionMigrated = exports.migrationSessionKeyAccount = exports.toInitConfig = exports.decodeParamsFromInitCode = exports.deserializePermissionAccount = exports.serializeMultiChainPermissionAccounts = exports.serializePermissionAccount = exports.toPermissionValidator = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  var toPermissionValidator_js_1 = require("./toPermissionValidator.js");
6
6
  Object.defineProperty(exports, "toPermissionValidator", { enumerable: true, get: function () { return toPermissionValidator_js_1.toPermissionValidator; } });
@@ -14,4 +14,8 @@ Object.defineProperty(exports, "decodeParamsFromInitCode", { enumerable: true, g
14
14
  tslib_1.__exportStar(require("./constants.js"), exports);
15
15
  var toInitConfig_js_1 = require("./toInitConfig.js");
16
16
  Object.defineProperty(exports, "toInitConfig", { enumerable: true, get: function () { return toInitConfig_js_1.toInitConfig; } });
17
+ var migrationSessionKeyAccount_js_1 = require("./migration/migrationSessionKeyAccount.js");
18
+ Object.defineProperty(exports, "migrationSessionKeyAccount", { enumerable: true, get: function () { return migrationSessionKeyAccount_js_1.migrationSessionKeyAccount; } });
19
+ var isPermissionMigrated_js_1 = require("./migration/isPermissionMigrated.js");
20
+ Object.defineProperty(exports, "isPermissionMigrated", { enumerable: true, get: function () { return isPermissionMigrated_js_1.isPermissionMigrated; } });
17
21
  //# sourceMappingURL=index.js.map
package/_cjs/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;AACA,uEAAkE;AAAzD,iIAAA,qBAAqB,OAAA;AAC9B,iFAA4E;AAAnE,2IAAA,0BAA0B,OAAA;AACnC,uGAGmD;AAD/C,iKAAA,qCAAqC,OAAA;AAEzC,qFAG0C;AAFtC,+IAAA,4BAA4B,OAAA;AAC5B,2IAAA,wBAAwB,OAAA;AAE5B,yDAA8B;AAC9B,qDAAgD;AAAvC,+GAAA,YAAY,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;AACA,uEAAkE;AAAzD,iIAAA,qBAAqB,OAAA;AAC9B,iFAA4E;AAAnE,2IAAA,0BAA0B,OAAA;AACnC,uGAGmD;AAD/C,iKAAA,qCAAqC,OAAA;AAEzC,qFAG0C;AAFtC,+IAAA,4BAA4B,OAAA;AAC5B,2IAAA,wBAAwB,OAAA;AAE5B,yDAA8B;AAC9B,qDAAgD;AAAvC,+GAAA,YAAY,OAAA;AACrB,2FAAsF;AAA7E,2IAAA,0BAA0B,OAAA;AACnC,+EAA0E;AAAjE,+HAAA,oBAAoB,OAAA"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isPermissionMigrated = void 0;
4
+ const accounts_1 = require("@zerodev/sdk/accounts");
5
+ const actions_1 = require("viem/actions");
6
+ const utils_1 = require("viem/utils");
7
+ const isPermissionMigrated = async (client, params) => {
8
+ try {
9
+ const [, , p] = await (0, utils_1.getAction)(client, actions_1.readContract, "readContract")({
10
+ address: accounts_1.MIGRATION_HELPER_ADDRESS,
11
+ abi: accounts_1.MigrationHelperAbi,
12
+ functionName: "isMigrated",
13
+ args: [params.account, [], [params.permissionId]]
14
+ });
15
+ return p[0];
16
+ }
17
+ catch {
18
+ return false;
19
+ }
20
+ };
21
+ exports.isPermissionMigrated = isPermissionMigrated;
22
+ //# sourceMappingURL=isPermissionMigrated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isPermissionMigrated.js","sourceRoot":"","sources":["../../migration/isPermissionMigrated.ts"],"names":[],"mappings":";;;AAAA,oDAG8B;AAU9B,0CAA2C;AAC3C,sCAAsC;AAE/B,MAAM,oBAAoB,GAAG,KAAK,EACrC,MAIC,EACD,MAA+C,EAC/B,EAAE;IAClB,IAAI,CAAC;QACD,MAAM,CAAC,EAAE,AAAD,EAAG,CAAC,CAAC,GAAG,MAAM,IAAA,iBAAS,EAC3B,MAAM,EACN,sBAAY,EACZ,cAAc,CACjB,CAAC;YACE,OAAO,EAAE,mCAAwB;YACjC,GAAG,EAAE,6BAAkB;YACvB,YAAY,EAAE,YAAY;YAC1B,IAAI,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;SACpD,CAAC,CAAA;QACF,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;IACf,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAA;IAChB,CAAC;AACL,CAAC,CAAA;AAvBY,QAAA,oBAAoB,wBAuBhC"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.migrationSessionKeyAccount = void 0;
4
+ const sdk_1 = require("@zerodev/sdk");
5
+ const accounts_1 = require("@zerodev/sdk/accounts");
6
+ const constants_1 = require("@zerodev/sdk/constants");
7
+ const viem_1 = require("viem");
8
+ const isPermissionMigrated_js_1 = require("./isPermissionMigrated.js");
9
+ const migrationSessionKeyAccount = async (params) => {
10
+ const account = params.account;
11
+ const installFallbackCallData = (0, viem_1.encodeFunctionData)({
12
+ abi: sdk_1.KernelV3AccountAbi,
13
+ functionName: "installModule",
14
+ args: [
15
+ 3n,
16
+ accounts_1.MIGRATION_HELPER_ADDRESS,
17
+ (0, viem_1.concat)([
18
+ (0, viem_1.toFunctionSelector)((0, viem_1.getAbiItem)({
19
+ abi: accounts_1.MigrationHelperAbi,
20
+ name: "migrateWithCall"
21
+ })),
22
+ viem_1.zeroAddress,
23
+ (0, viem_1.encodeAbiParameters)((0, viem_1.parseAbiParameters)("bytes selectorInitData, bytes hookInitData"), [constants_1.CALL_TYPE.DELEGATE_CALL, "0x0000"])
24
+ ])
25
+ ]
26
+ });
27
+ const installFallbackCall = {
28
+ to: account.address,
29
+ data: installFallbackCallData,
30
+ value: 0n
31
+ };
32
+ const uninstallFallbackCallData = (0, viem_1.encodeFunctionData)({
33
+ abi: sdk_1.KernelV3AccountAbi,
34
+ functionName: "uninstallModule",
35
+ args: [
36
+ 3n,
37
+ accounts_1.MIGRATION_HELPER_ADDRESS,
38
+ (0, viem_1.concat)([
39
+ (0, viem_1.toFunctionSelector)((0, viem_1.getAbiItem)({
40
+ abi: accounts_1.MigrationHelperAbi,
41
+ name: "migrateWithCall"
42
+ })),
43
+ "0x"
44
+ ])
45
+ ]
46
+ });
47
+ const uninstallFallbackCall = {
48
+ to: account.address,
49
+ data: uninstallFallbackCallData,
50
+ value: 0n
51
+ };
52
+ return {
53
+ ...params.account,
54
+ async encodeCalls(calls, callType) {
55
+ const isMigrated = await (0, isPermissionMigrated_js_1.isPermissionMigrated)(account.client, {
56
+ account: account.address,
57
+ permissionId: params.permissionId
58
+ });
59
+ const executeCallData = await account.encodeCalls(calls, callType);
60
+ if (isMigrated) {
61
+ return executeCallData;
62
+ }
63
+ const { args: [execMode, executionCalldata] } = (0, viem_1.decodeFunctionData)({
64
+ abi: [(0, viem_1.getAbiItem)({ abi: sdk_1.KernelV3ExecuteAbi, name: "execute" })],
65
+ data: executeCallData
66
+ });
67
+ const migrationCallData = (0, viem_1.encodeFunctionData)({
68
+ abi: accounts_1.MigrationHelperAbi,
69
+ functionName: "migrateWithCall",
70
+ args: [[], [params.permissionId], execMode, executionCalldata]
71
+ });
72
+ const migrationCall = {
73
+ to: accounts_1.MIGRATION_HELPER_ADDRESS,
74
+ data: migrationCallData,
75
+ value: 0n
76
+ };
77
+ if (account.kernelVersion !== "0.3.0") {
78
+ return account.encodeCalls([migrationCall], "delegatecall");
79
+ }
80
+ migrationCall.to = account.address;
81
+ const finalCalls = [
82
+ installFallbackCall,
83
+ migrationCall,
84
+ uninstallFallbackCall
85
+ ];
86
+ return account.encodeCalls(finalCalls, "call");
87
+ }
88
+ };
89
+ };
90
+ exports.migrationSessionKeyAccount = migrationSessionKeyAccount;
91
+ //# sourceMappingURL=migrationSessionKeyAccount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrationSessionKeyAccount.js","sourceRoot":"","sources":["../../migration/migrationSessionKeyAccount.ts"],"names":[],"mappings":"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"}
package/_esm/index.js CHANGED
@@ -4,4 +4,6 @@ export { serializeMultiChainPermissionAccounts } from "./serializeMultiChainPerm
4
4
  export { deserializePermissionAccount, decodeParamsFromInitCode } from "./deserializePermissionAccount.js";
5
5
  export * from "./constants.js";
6
6
  export { toInitConfig } from "./toInitConfig.js";
7
+ export { migrationSessionKeyAccount } from "./migration/migrationSessionKeyAccount.js";
8
+ export { isPermissionMigrated } from "./migration/isPermissionMigrated.js";
7
9
  //# sourceMappingURL=index.js.map
package/_esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAA;AAC5E,OAAO,EAEH,qCAAqC,EACxC,MAAM,4CAA4C,CAAA;AACnD,OAAO,EACH,4BAA4B,EAC5B,wBAAwB,EAC3B,MAAM,mCAAmC,CAAA;AAC1C,cAAc,gBAAgB,CAAA;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAA;AAC5E,OAAO,EAEH,qCAAqC,EACxC,MAAM,4CAA4C,CAAA;AACnD,OAAO,EACH,4BAA4B,EAC5B,wBAAwB,EAC3B,MAAM,mCAAmC,CAAA;AAC1C,cAAc,gBAAgB,CAAA;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAA;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAA"}
@@ -0,0 +1,18 @@
1
+ import { MIGRATION_HELPER_ADDRESS, MigrationHelperAbi } from "@zerodev/sdk/accounts";
2
+ import { readContract } from "viem/actions";
3
+ import { getAction } from "viem/utils";
4
+ export const isPermissionMigrated = async (client, params) => {
5
+ try {
6
+ const [, , p] = await getAction(client, readContract, "readContract")({
7
+ address: MIGRATION_HELPER_ADDRESS,
8
+ abi: MigrationHelperAbi,
9
+ functionName: "isMigrated",
10
+ args: [params.account, [], [params.permissionId]]
11
+ });
12
+ return p[0];
13
+ }
14
+ catch {
15
+ return false;
16
+ }
17
+ };
18
+ //# sourceMappingURL=isPermissionMigrated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isPermissionMigrated.js","sourceRoot":"","sources":["../../migration/isPermissionMigrated.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,wBAAwB,EACxB,kBAAkB,EACrB,MAAM,uBAAuB,CAAA;AAU9B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAEtC,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EACrC,MAIC,EACD,MAA+C,EAC/B,EAAE;IAClB,IAAI,CAAC;QACD,MAAM,CAAC,EAAE,AAAD,EAAG,CAAC,CAAC,GAAG,MAAM,SAAS,CAC3B,MAAM,EACN,YAAY,EACZ,cAAc,CACjB,CAAC;YACE,OAAO,EAAE,wBAAwB;YACjC,GAAG,EAAE,kBAAkB;YACvB,YAAY,EAAE,YAAY;YAC1B,IAAI,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;SACpD,CAAC,CAAA;QACF,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;IACf,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAA;IAChB,CAAC;AACL,CAAC,CAAA"}
@@ -0,0 +1,87 @@
1
+ import { KernelV3AccountAbi, KernelV3ExecuteAbi } from "@zerodev/sdk";
2
+ import { MIGRATION_HELPER_ADDRESS, MigrationHelperAbi } from "@zerodev/sdk/accounts";
3
+ import { CALL_TYPE } from "@zerodev/sdk/constants";
4
+ import { concat, decodeFunctionData, encodeAbiParameters, encodeFunctionData, getAbiItem, parseAbiParameters, toFunctionSelector, zeroAddress } from "viem";
5
+ import { isPermissionMigrated } from "./isPermissionMigrated.js";
6
+ export const migrationSessionKeyAccount = async (params) => {
7
+ const account = params.account;
8
+ const installFallbackCallData = encodeFunctionData({
9
+ abi: KernelV3AccountAbi,
10
+ functionName: "installModule",
11
+ args: [
12
+ 3n,
13
+ MIGRATION_HELPER_ADDRESS,
14
+ concat([
15
+ toFunctionSelector(getAbiItem({
16
+ abi: MigrationHelperAbi,
17
+ name: "migrateWithCall"
18
+ })),
19
+ zeroAddress,
20
+ encodeAbiParameters(parseAbiParameters("bytes selectorInitData, bytes hookInitData"), [CALL_TYPE.DELEGATE_CALL, "0x0000"])
21
+ ])
22
+ ]
23
+ });
24
+ const installFallbackCall = {
25
+ to: account.address,
26
+ data: installFallbackCallData,
27
+ value: 0n
28
+ };
29
+ const uninstallFallbackCallData = encodeFunctionData({
30
+ abi: KernelV3AccountAbi,
31
+ functionName: "uninstallModule",
32
+ args: [
33
+ 3n,
34
+ MIGRATION_HELPER_ADDRESS,
35
+ concat([
36
+ toFunctionSelector(getAbiItem({
37
+ abi: MigrationHelperAbi,
38
+ name: "migrateWithCall"
39
+ })),
40
+ "0x"
41
+ ])
42
+ ]
43
+ });
44
+ const uninstallFallbackCall = {
45
+ to: account.address,
46
+ data: uninstallFallbackCallData,
47
+ value: 0n
48
+ };
49
+ return {
50
+ ...params.account,
51
+ async encodeCalls(calls, callType) {
52
+ const isMigrated = await isPermissionMigrated(account.client, {
53
+ account: account.address,
54
+ permissionId: params.permissionId
55
+ });
56
+ const executeCallData = await account.encodeCalls(calls, callType);
57
+ if (isMigrated) {
58
+ return executeCallData;
59
+ }
60
+ const { args: [execMode, executionCalldata] } = decodeFunctionData({
61
+ abi: [getAbiItem({ abi: KernelV3ExecuteAbi, name: "execute" })],
62
+ data: executeCallData
63
+ });
64
+ const migrationCallData = encodeFunctionData({
65
+ abi: MigrationHelperAbi,
66
+ functionName: "migrateWithCall",
67
+ args: [[], [params.permissionId], execMode, executionCalldata]
68
+ });
69
+ const migrationCall = {
70
+ to: MIGRATION_HELPER_ADDRESS,
71
+ data: migrationCallData,
72
+ value: 0n
73
+ };
74
+ if (account.kernelVersion !== "0.3.0") {
75
+ return account.encodeCalls([migrationCall], "delegatecall");
76
+ }
77
+ migrationCall.to = account.address;
78
+ const finalCalls = [
79
+ installFallbackCall,
80
+ migrationCall,
81
+ uninstallFallbackCall
82
+ ];
83
+ return account.encodeCalls(finalCalls, "call");
84
+ }
85
+ };
86
+ };
87
+ //# sourceMappingURL=migrationSessionKeyAccount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrationSessionKeyAccount.js","sourceRoot":"","sources":["../../migration/migrationSessionKeyAccount.ts"],"names":[],"mappings":"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"}
package/_types/index.d.ts CHANGED
@@ -5,4 +5,6 @@ export { type MultiChainPermissionAccountsParams, serializeMultiChainPermissionA
5
5
  export { deserializePermissionAccount, decodeParamsFromInitCode } from "./deserializePermissionAccount.js";
6
6
  export * from "./constants.js";
7
7
  export { toInitConfig } from "./toInitConfig.js";
8
+ export { migrationSessionKeyAccount } from "./migration/migrationSessionKeyAccount.js";
9
+ export { isPermissionMigrated } from "./migration/isPermissionMigrated.js";
8
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,mBAAmB,YAAY,CAAA;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAA;AAC5E,OAAO,EACH,KAAK,kCAAkC,EACvC,qCAAqC,EACxC,MAAM,4CAA4C,CAAA;AACnD,OAAO,EACH,4BAA4B,EAC5B,wBAAwB,EAC3B,MAAM,mCAAmC,CAAA;AAC1C,cAAc,gBAAgB,CAAA;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,mBAAmB,YAAY,CAAA;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAA;AAC5E,OAAO,EACH,KAAK,kCAAkC,EACvC,qCAAqC,EACxC,MAAM,4CAA4C,CAAA;AACnD,OAAO,EACH,4BAA4B,EAC5B,wBAAwB,EAC3B,MAAM,mCAAmC,CAAA;AAC1C,cAAc,gBAAgB,CAAA;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAA;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type { Address, Chain, Client, Hex, JsonRpcAccount, LocalAccount, Transport } from "viem";
2
+ export declare const isPermissionMigrated: (client: Client<Transport, Chain | undefined, JsonRpcAccount | LocalAccount | undefined>, params: {
3
+ account: Address;
4
+ permissionId: Hex;
5
+ }) => Promise<boolean>;
6
+ //# sourceMappingURL=isPermissionMigrated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isPermissionMigrated.d.ts","sourceRoot":"","sources":["../../migration/isPermissionMigrated.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACR,OAAO,EACP,KAAK,EACL,MAAM,EACN,GAAG,EACH,cAAc,EACd,YAAY,EACZ,SAAS,EACZ,MAAM,MAAM,CAAA;AAIb,eAAO,MAAM,oBAAoB,WACrB,OACJ,SAAS,EACT,KAAK,GAAG,SAAS,EACjB,cAAc,GAAG,YAAY,GAAG,SAAS,CAC5C,UACO;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,GAAG,CAAA;CAAE,KAChD,QAAQ,OAAO,CAgBjB,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { type CreateKernelAccountReturnType } from "@zerodev/sdk/accounts";
2
+ import { type Hex } from "viem";
3
+ export declare const migrationSessionKeyAccount: (params: {
4
+ account: CreateKernelAccountReturnType<"0.7">;
5
+ permissionId: Hex;
6
+ }) => Promise<CreateKernelAccountReturnType<"0.7">>;
7
+ //# sourceMappingURL=migrationSessionKeyAccount.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrationSessionKeyAccount.d.ts","sourceRoot":"","sources":["../../migration/migrationSessionKeyAccount.ts"],"names":[],"mappings":"AACA,OAAO,EACH,KAAK,6BAA6B,EAGrC,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAEH,KAAK,GAAG,EASX,MAAM,MAAM,CAAA;AAGb,eAAO,MAAM,0BAA0B,WAAkB;IACrD,OAAO,EAAE,8BAA8B,KAAK,CAAC,CAAA;IAC7C,YAAY,EAAE,GAAG,CAAA;CACpB,KAAG,QAAQ,8BAA8B,KAAK,CAAC,CA+F/C,CAAA"}
package/index.ts CHANGED
@@ -11,3 +11,5 @@ export {
11
11
  } from "./deserializePermissionAccount.js"
12
12
  export * from "./constants.js"
13
13
  export { toInitConfig } from "./toInitConfig.js"
14
+ export { migrationSessionKeyAccount } from "./migration/migrationSessionKeyAccount.js"
15
+ export { isPermissionMigrated } from "./migration/isPermissionMigrated.js"
@@ -0,0 +1,40 @@
1
+ import {
2
+ MIGRATION_HELPER_ADDRESS,
3
+ MigrationHelperAbi
4
+ } from "@zerodev/sdk/accounts"
5
+ import type {
6
+ Address,
7
+ Chain,
8
+ Client,
9
+ Hex,
10
+ JsonRpcAccount,
11
+ LocalAccount,
12
+ Transport
13
+ } from "viem"
14
+ import { readContract } from "viem/actions"
15
+ import { getAction } from "viem/utils"
16
+
17
+ export const isPermissionMigrated = async (
18
+ client: Client<
19
+ Transport,
20
+ Chain | undefined,
21
+ JsonRpcAccount | LocalAccount | undefined
22
+ >,
23
+ params: { account: Address; permissionId: Hex }
24
+ ): Promise<boolean> => {
25
+ try {
26
+ const [, , p] = await getAction(
27
+ client,
28
+ readContract,
29
+ "readContract"
30
+ )({
31
+ address: MIGRATION_HELPER_ADDRESS,
32
+ abi: MigrationHelperAbi,
33
+ functionName: "isMigrated",
34
+ args: [params.account, [], [params.permissionId]]
35
+ })
36
+ return p[0]
37
+ } catch {
38
+ return false
39
+ }
40
+ }
@@ -0,0 +1,120 @@
1
+ import { KernelV3AccountAbi, KernelV3ExecuteAbi } from "@zerodev/sdk"
2
+ import {
3
+ type CreateKernelAccountReturnType,
4
+ MIGRATION_HELPER_ADDRESS,
5
+ MigrationHelperAbi
6
+ } from "@zerodev/sdk/accounts"
7
+ import { CALL_TYPE } from "@zerodev/sdk/constants"
8
+ import {
9
+ type Call,
10
+ type Hex,
11
+ concat,
12
+ decodeFunctionData,
13
+ encodeAbiParameters,
14
+ encodeFunctionData,
15
+ getAbiItem,
16
+ parseAbiParameters,
17
+ toFunctionSelector,
18
+ zeroAddress
19
+ } from "viem"
20
+ import { isPermissionMigrated } from "./isPermissionMigrated.js"
21
+
22
+ export const migrationSessionKeyAccount = async (params: {
23
+ account: CreateKernelAccountReturnType<"0.7">
24
+ permissionId: Hex
25
+ }): Promise<CreateKernelAccountReturnType<"0.7">> => {
26
+ const account = params.account
27
+ const installFallbackCallData = encodeFunctionData({
28
+ abi: KernelV3AccountAbi,
29
+ functionName: "installModule",
30
+ args: [
31
+ 3n,
32
+ MIGRATION_HELPER_ADDRESS,
33
+ concat([
34
+ toFunctionSelector(
35
+ getAbiItem({
36
+ abi: MigrationHelperAbi,
37
+ name: "migrateWithCall"
38
+ })
39
+ ),
40
+ zeroAddress,
41
+ encodeAbiParameters(
42
+ parseAbiParameters(
43
+ "bytes selectorInitData, bytes hookInitData"
44
+ ),
45
+ [CALL_TYPE.DELEGATE_CALL, "0x0000"]
46
+ )
47
+ ])
48
+ ]
49
+ })
50
+ const installFallbackCall = {
51
+ to: account.address,
52
+ data: installFallbackCallData,
53
+ value: 0n
54
+ }
55
+ const uninstallFallbackCallData = encodeFunctionData({
56
+ abi: KernelV3AccountAbi,
57
+ functionName: "uninstallModule",
58
+ args: [
59
+ 3n,
60
+ MIGRATION_HELPER_ADDRESS,
61
+ concat([
62
+ toFunctionSelector(
63
+ getAbiItem({
64
+ abi: MigrationHelperAbi,
65
+ name: "migrateWithCall"
66
+ })
67
+ ),
68
+ "0x"
69
+ ])
70
+ ]
71
+ })
72
+ const uninstallFallbackCall = {
73
+ to: account.address,
74
+ data: uninstallFallbackCallData,
75
+ value: 0n
76
+ }
77
+ return {
78
+ ...params.account,
79
+ async encodeCalls(calls, callType) {
80
+ const isMigrated = await isPermissionMigrated(account.client, {
81
+ account: account.address,
82
+ permissionId: params.permissionId
83
+ })
84
+ const executeCallData = await account.encodeCalls(calls, callType)
85
+ if (isMigrated) {
86
+ return executeCallData
87
+ }
88
+ const {
89
+ args: [execMode, executionCalldata]
90
+ } = decodeFunctionData({
91
+ abi: [getAbiItem({ abi: KernelV3ExecuteAbi, name: "execute" })],
92
+ data: executeCallData
93
+ })
94
+ const migrationCallData = encodeFunctionData({
95
+ abi: MigrationHelperAbi,
96
+ functionName: "migrateWithCall",
97
+ args: [[], [params.permissionId], execMode, executionCalldata]
98
+ })
99
+
100
+ const migrationCall = {
101
+ to: MIGRATION_HELPER_ADDRESS,
102
+ data: migrationCallData,
103
+ value: 0n
104
+ } as Call
105
+
106
+ if (account.kernelVersion !== "0.3.0") {
107
+ return account.encodeCalls([migrationCall], "delegatecall")
108
+ }
109
+
110
+ migrationCall.to = account.address
111
+ const finalCalls = [
112
+ installFallbackCall,
113
+ migrationCall,
114
+ uninstallFallbackCall
115
+ ]
116
+
117
+ return account.encodeCalls(finalCalls, "call")
118
+ }
119
+ }
120
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zerodev/permissions",
3
- "version": "5.6.1",
3
+ "version": "5.6.2",
4
4
  "author": "ZeroDev",
5
5
  "main": "./_cjs/index.js",
6
6
  "module": "./_esm/index.js",