@zerodev/sdk 5.4.41 → 5.4.42

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.
@@ -1,12 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getPluginInstallCallData = exports.getKernelV3Nonce = exports.getPluginsEnableTypedData = exports.getActionSelector = exports.accountMetadata = exports.addressToEmptyAccount = exports.EIP1271Abi = exports.KernelFactoryV2Abi = exports.KernelAccountV2Abi = exports.createKernelAccountV0_2 = exports.createKernelAccountV1 = exports.KERNEL_ADDRESSES = exports.createKernelAccount = void 0;
3
+ exports.getPluginInstallCallData = exports.getKernelV3Nonce = exports.getPluginsEnableTypedData = exports.getActionSelector = exports.accountMetadata = exports.addressToEmptyAccount = exports.EIP1271Abi = exports.KernelFactoryV2Abi = exports.KernelAccountV2Abi = exports.createKernelAccountV0_2 = exports.createKernelMigrationAccount = exports.createKernelAccountV1 = exports.KERNEL_ADDRESSES = exports.createKernelAccount = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  var createKernelAccount_js_1 = require("./kernel/createKernelAccount.js");
6
6
  Object.defineProperty(exports, "createKernelAccount", { enumerable: true, get: function () { return createKernelAccount_js_1.createKernelAccount; } });
7
7
  Object.defineProperty(exports, "KERNEL_ADDRESSES", { enumerable: true, get: function () { return createKernelAccount_js_1.KERNEL_ADDRESSES; } });
8
8
  var createKernelAccountV1_js_1 = require("./kernel/v1/createKernelAccountV1.js");
9
9
  Object.defineProperty(exports, "createKernelAccountV1", { enumerable: true, get: function () { return createKernelAccountV1_js_1.createKernelAccountV1; } });
10
+ var createKernelMigrationAccount_js_1 = require("./kernel/createKernelMigrationAccount.js");
11
+ Object.defineProperty(exports, "createKernelMigrationAccount", { enumerable: true, get: function () { return createKernelMigrationAccount_js_1.createKernelMigrationAccount; } });
10
12
  var createKernelAccountV0_2_js_1 = require("./kernel/v2/createKernelAccountV0_2.js");
11
13
  Object.defineProperty(exports, "createKernelAccountV0_2", { enumerable: true, get: function () { return createKernelAccountV0_2_js_1.createKernelAccountV0_2; } });
12
14
  var KernelAccountV2Abi_js_1 = require("./kernel/v2/abi/KernelAccountV2Abi.js");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../accounts/index.ts"],"names":[],"mappings":";;;;AAAA,0EAMwC;AALpC,6HAAA,mBAAmB,OAAA;AAInB,0HAAA,gBAAgB,OAAA;AAEpB,iFAI6C;AAHzC,iIAAA,qBAAqB,OAAA;AAIzB,qFAAgF;AAAvE,qIAAA,uBAAuB,OAAA;AAChC,+EAA0E;AAAjE,2HAAA,kBAAkB,OAAA;AAC3B,+EAA0E;AAAjE,2HAAA,kBAAkB,OAAA;AAC3B,4DAAuD;AAA9C,2GAAA,UAAU,OAAA;AACnB,uEAAkE;AAAzD,iIAAA,qBAAqB,OAAA;AAC9B,2DAAgC;AAChC,+EAA0E;AAAjE,qHAAA,eAAe,OAAA;AACxB,mFAA8E;AAArE,yHAAA,iBAAiB,OAAA;AAC1B,0GAAqG;AAA5F,yIAAA,yBAAyB,OAAA;AAClC,wFAAmF;AAA1E,uHAAA,gBAAgB,OAAA;AACzB,wGAAmG;AAA1F,uIAAA,wBAAwB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../accounts/index.ts"],"names":[],"mappings":";;;;AAAA,0EAMwC;AALpC,6HAAA,mBAAmB,OAAA;AAInB,0HAAA,gBAAgB,OAAA;AAEpB,iFAI6C;AAHzC,iIAAA,qBAAqB,OAAA;AAIzB,4FAGiD;AAF7C,+IAAA,4BAA4B,OAAA;AAGhC,qFAAgF;AAAvE,qIAAA,uBAAuB,OAAA;AAChC,+EAA0E;AAAjE,2HAAA,kBAAkB,OAAA;AAC3B,+EAA0E;AAAjE,2HAAA,kBAAkB,OAAA;AAC3B,4DAAuD;AAA9C,2GAAA,UAAU,OAAA;AACnB,uEAAkE;AAAzD,iIAAA,qBAAqB,OAAA;AAC9B,2DAAgC;AAChC,+EAA0E;AAAjE,qHAAA,eAAe,OAAA;AACxB,mFAA8E;AAArE,yHAAA,iBAAiB,OAAA;AAC1B,0GAAqG;AAA5F,yIAAA,yBAAyB,OAAA;AAClC,wFAAmF;AAA1E,uHAAA,gBAAgB,OAAA;AACzB,wGAAmG;AAA1F,uIAAA,wBAAwB,OAAA"}
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createKernelMigrationAccount = void 0;
4
+ const viem_1 = require("viem");
5
+ const actions_1 = require("viem/actions");
6
+ const utils_1 = require("viem/utils");
7
+ const constants_js_1 = require("../../constants.js");
8
+ const KernelAccountAbi_js_1 = require("./abi/kernel_v_3_0_0/KernelAccountAbi.js");
9
+ const KernelAccountAbi_js_2 = require("./abi/kernel_v_3_1/KernelAccountAbi.js");
10
+ const createKernelAccount_js_1 = require("./createKernelAccount.js");
11
+ async function createKernelMigrationAccount(client, params) {
12
+ if (params.entryPoint.version !== "0.7") {
13
+ throw new Error("Only EntryPoint 0.7 is supported");
14
+ }
15
+ const { plugins: { sudo: { migrate: { from: fromValidator, to: toValidator } } }, ...rest } = params;
16
+ const account = await (0, createKernelAccount_js_1.createKernelAccount)(client, {
17
+ plugins: {
18
+ sudo: fromValidator
19
+ },
20
+ ...rest
21
+ });
22
+ let isRootValidatorMigrated = false;
23
+ let isAccountDeployed = false;
24
+ const getRootValidatorMigrationStatus = async () => {
25
+ try {
26
+ if (isRootValidatorMigrated)
27
+ return isRootValidatorMigrated;
28
+ const rootValidator = await (0, utils_1.getAction)(client, actions_1.readContract, "readContract")({
29
+ address: account.address,
30
+ abi: KernelAccountAbi_js_1.KernelV3AccountAbi,
31
+ functionName: "rootValidator",
32
+ args: []
33
+ });
34
+ const toRootValidatorId = (0, viem_1.concatHex)([
35
+ constants_js_1.VALIDATOR_TYPE[toValidator.validatorType],
36
+ (0, viem_1.pad)(toValidator.getIdentifier(), {
37
+ size: 20,
38
+ dir: "right"
39
+ })
40
+ ]);
41
+ isRootValidatorMigrated =
42
+ rootValidator.toLowerCase() === toRootValidatorId.toLowerCase();
43
+ return isRootValidatorMigrated;
44
+ }
45
+ catch (error) {
46
+ return false;
47
+ }
48
+ };
49
+ [isAccountDeployed, isRootValidatorMigrated] = await Promise.all([
50
+ account.isDeployed(),
51
+ getRootValidatorMigrationStatus()
52
+ ]);
53
+ if (isAccountDeployed && isRootValidatorMigrated) {
54
+ return (0, createKernelAccount_js_1.createKernelAccount)(client, {
55
+ plugins: {
56
+ sudo: toValidator
57
+ },
58
+ ...rest,
59
+ address: account.address
60
+ });
61
+ }
62
+ const rootValidatorId = (0, viem_1.concatHex)([
63
+ constants_js_1.VALIDATOR_TYPE[toValidator.validatorType],
64
+ (0, viem_1.pad)(toValidator.getIdentifier(), {
65
+ size: 20,
66
+ dir: "right"
67
+ })
68
+ ]);
69
+ const validatorData = await toValidator.getEnableData(account.address);
70
+ const hookId = viem_1.zeroAddress;
71
+ const hookData = "0x";
72
+ const changeRootValidatorCallData = (0, viem_1.encodeFunctionData)({
73
+ abi: KernelAccountAbi_js_2.KernelV3_1AccountAbi,
74
+ functionName: "changeRootValidator",
75
+ args: [rootValidatorId, hookId, validatorData, hookData]
76
+ });
77
+ const installFallbackCallData = (0, viem_1.encodeFunctionData)({
78
+ abi: KernelAccountAbi_js_1.KernelV3AccountAbi,
79
+ functionName: "installModule",
80
+ args: [
81
+ 3n,
82
+ constants_js_1.KernelVersionToAddressesMap[constants_js_1.KERNEL_V3_1]
83
+ .accountImplementationAddress,
84
+ (0, viem_1.concat)([
85
+ (0, viem_1.toFunctionSelector)((0, viem_1.getAbiItem)({
86
+ abi: KernelAccountAbi_js_2.KernelV3_1AccountAbi,
87
+ name: "changeRootValidator"
88
+ })),
89
+ viem_1.zeroAddress,
90
+ (0, viem_1.encodeAbiParameters)((0, viem_1.parseAbiParameters)("bytes selectorInitData, bytes hookInitData"), [constants_js_1.CALL_TYPE.DELEGATE_CALL, "0x0000"])
91
+ ])
92
+ ]
93
+ });
94
+ const installFallbackCall = {
95
+ to: account.address,
96
+ data: installFallbackCallData,
97
+ value: 0n
98
+ };
99
+ const updateValidatorCall = {
100
+ to: account.address,
101
+ data: changeRootValidatorCallData,
102
+ value: 0n
103
+ };
104
+ const updateCalls = rest.kernelVersion === "0.3.0"
105
+ ? [installFallbackCall, updateValidatorCall]
106
+ : [updateValidatorCall];
107
+ return {
108
+ ...account,
109
+ async encodeCalls(calls, callType) {
110
+ const _calls = (await getRootValidatorMigrationStatus())
111
+ ? calls
112
+ : [...updateCalls, ...calls];
113
+ return account.encodeCalls(_calls, callType);
114
+ }
115
+ };
116
+ }
117
+ exports.createKernelMigrationAccount = createKernelMigrationAccount;
118
+ //# sourceMappingURL=createKernelMigrationAccount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createKernelMigrationAccount.js","sourceRoot":"","sources":["../../../accounts/kernel/createKernelMigrationAccount.ts"],"names":[],"mappings":"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"}
package/_cjs/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getValidatorPluginInstallModuleData = exports.encodeDeployCallDataV07 = exports.encodeDeployCallDataV06 = exports.encodeCallDataEpV07 = exports.encodeCallDataEpV06 = exports.eip712WrapHash = exports.getUpgradeKernelCall = exports.isPluginInitialized = exports.getUserOperationGasPrice = exports.setPimlicoAsProvider = exports.isProviderSet = exports.getEncodedPluginsData = exports.KernelEIP1193Provider = exports.getCustomNonceKeyFromString = exports.verifyEIP6492Signature = exports.gasTokenAddresses = exports.constants = exports.TokenActionsAbi = exports.KernelFactoryStakerAbi = exports.KernelV3FactoryAbi = exports.KernelV3_3AccountAbi = exports.KernelV3_1AccountAbi = exports.KernelV3InitAbi = exports.KernelV3ExecuteAbi = exports.KernelV3AccountAbi = exports.KernelFactoryAbi = exports.KernelAccountAbi = exports.createFallbackKernelAccountClient = exports.createKernelAccountClient = exports.createZeroDevPaymasterClient = exports.kernelAccountClientActions = exports.zerodevPaymasterActions = exports.sponsorUserOperation = exports.getPluginsEnableTypedData = exports.getActionSelector = exports.accountMetadata = exports.getKernelV3Nonce = exports.EIP1271Abi = exports.addressToEmptyAccount = exports.KERNEL_ADDRESSES = exports.createKernelAccountV1 = exports.createKernelAccountV0_2 = exports.createKernelAccount = void 0;
3
+ exports.getValidatorPluginInstallModuleData = exports.encodeDeployCallDataV07 = exports.encodeDeployCallDataV06 = exports.encodeCallDataEpV07 = exports.encodeCallDataEpV06 = exports.eip712WrapHash = exports.getUpgradeKernelCall = exports.isPluginInitialized = exports.getUserOperationGasPrice = exports.setPimlicoAsProvider = exports.isProviderSet = exports.getEncodedPluginsData = exports.KernelEIP1193Provider = exports.getCustomNonceKeyFromString = exports.verifyEIP6492Signature = exports.gasTokenAddresses = exports.constants = exports.TokenActionsAbi = exports.KernelFactoryStakerAbi = exports.KernelV3FactoryAbi = exports.KernelV3_3AccountAbi = exports.KernelV3_1AccountAbi = exports.KernelV3InitAbi = exports.KernelV3ExecuteAbi = exports.KernelV3AccountAbi = exports.KernelFactoryAbi = exports.KernelAccountAbi = exports.createFallbackKernelAccountClient = exports.createKernelMigrationAccount = exports.createKernelAccountClient = exports.createZeroDevPaymasterClient = exports.kernelAccountClientActions = exports.zerodevPaymasterActions = exports.sponsorUserOperation = exports.getPluginsEnableTypedData = exports.getActionSelector = exports.accountMetadata = exports.getKernelV3Nonce = exports.EIP1271Abi = exports.addressToEmptyAccount = exports.KERNEL_ADDRESSES = exports.createKernelAccountV1 = exports.createKernelAccountV0_2 = exports.createKernelAccount = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  var index_js_1 = require("./accounts/index.js");
6
6
  Object.defineProperty(exports, "createKernelAccount", { enumerable: true, get: function () { return index_js_1.createKernelAccount; } });
@@ -22,6 +22,8 @@ var paymasterClient_js_1 = require("./clients/paymasterClient.js");
22
22
  Object.defineProperty(exports, "createZeroDevPaymasterClient", { enumerable: true, get: function () { return paymasterClient_js_1.createZeroDevPaymasterClient; } });
23
23
  var kernelAccountClient_js_1 = require("./clients/kernelAccountClient.js");
24
24
  Object.defineProperty(exports, "createKernelAccountClient", { enumerable: true, get: function () { return kernelAccountClient_js_1.createKernelAccountClient; } });
25
+ var createKernelMigrationAccount_js_1 = require("./accounts/kernel/createKernelMigrationAccount.js");
26
+ Object.defineProperty(exports, "createKernelMigrationAccount", { enumerable: true, get: function () { return createKernelMigrationAccount_js_1.createKernelMigrationAccount; } });
25
27
  var fallbackKernelAccountClient_js_1 = require("./clients/fallbackKernelAccountClient.js");
26
28
  Object.defineProperty(exports, "createFallbackKernelAccountClient", { enumerable: true, get: function () { return fallbackKernelAccountClient_js_1.createFallbackKernelAccountClient; } });
27
29
  var KernelAccountAbi_js_1 = require("./accounts/kernel/abi/KernelAccountAbi.js");
package/_cjs/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;AAAA,gDAgB4B;AAfxB,+GAAA,mBAAmB,OAAA;AACnB,mHAAA,uBAAuB,OAAA;AACvB,iHAAA,qBAAqB,OAAA;AAMrB,4GAAA,gBAAgB,OAAA;AAChB,iHAAA,qBAAqB,OAAA;AACrB,sGAAA,UAAU,OAAA;AACV,4GAAA,gBAAgB,OAAA;AAChB,2GAAA,eAAe,OAAA;AACf,6GAAA,iBAAiB,OAAA;AACjB,qHAAA,yBAAyB,OAAA;AAE7B,uFAIoD;AAHhD,+HAAA,oBAAoB,OAAA;AAKxB,4DAKuC;AAJnC,oHAAA,uBAAuB,OAAA;AAEvB,uHAAA,0BAA0B,OAAA;AAG9B,mEAGqC;AAFjC,kIAAA,4BAA4B,OAAA;AAGhC,2EAGyC;AAFrC,mIAAA,yBAAyB,OAAA;AAG7B,2FAA4F;AAAnF,mJAAA,iCAAiC,OAAA;AAQ1C,iFAA4E;AAAnE,uHAAA,gBAAgB,OAAA;AACzB,iFAA4E;AAAnE,uHAAA,gBAAgB,OAAA;AACzB,gGAIiE;AAH7D,yHAAA,kBAAkB,OAAA;AAClB,yHAAA,kBAAkB,OAAA;AAClB,sHAAA,eAAe,OAAA;AAEnB,8FAA6F;AAApF,2HAAA,oBAAoB,OAAA;AAC7B,8FAA6F;AAApF,2HAAA,oBAAoB,OAAA;AAC7B,gGAA6F;AAApF,yHAAA,kBAAkB,OAAA;AAC3B,4GAAuG;AAA9F,mIAAA,sBAAsB,OAAA;AAC/B,+EAA0E;AAAjE,qHAAA,eAAe,OAAA;AACxB,8CAA2C;AAC3C,qDAA0B;AAC1B,+DAAgF;AAAvE,yHAAA,iBAAiB,OAAA;AAC1B,sDAGkC;AAF9B,kHAAA,sBAAsB,OAAA;AACtB,uHAAA,2BAA2B,OAAA;AAE/B,iDAA4D;AAAnD,iHAAA,qBAAqB,OAAA;AAC9B,2GAAsG;AAA7F,iIAAA,qBAAqB,OAAA;AAC9B,+CAAwE;AAA/D,yGAAA,aAAa,OAAA;AAAE,gHAAA,oBAAoB,OAAA;AAC5C,oGAA+F;AAAtF,uIAAA,wBAAwB,OAAA;AACjC,uGAAkG;AAAzF,6HAAA,mBAAmB,OAAA;AAC5B,4DAAiC;AACjC,2DAAgC;AAChC,kGAA6F;AAApF,+HAAA,oBAAoB,OAAA;AAC7B,sFAAiF;AAAxE,mHAAA,cAAc,OAAA;AACvB,6FAA+G;AAAtG,wHAAA,cAAc,OAAuB;AAC9C,6FAA+G;AAAtG,wHAAA,cAAc,OAAuB;AAC9C,yGAA+H;AAAtH,kIAAA,oBAAoB,OAA2B;AACxD,yGAA+H;AAAtH,kIAAA,oBAAoB,OAA2B;AACxD,uIAAkI;AAAzH,6JAAA,mCAAmC,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;AAAA,gDAgB4B;AAfxB,+GAAA,mBAAmB,OAAA;AACnB,mHAAA,uBAAuB,OAAA;AACvB,iHAAA,qBAAqB,OAAA;AAMrB,4GAAA,gBAAgB,OAAA;AAChB,iHAAA,qBAAqB,OAAA;AACrB,sGAAA,UAAU,OAAA;AACV,4GAAA,gBAAgB,OAAA;AAChB,2GAAA,eAAe,OAAA;AACf,6GAAA,iBAAiB,OAAA;AACjB,qHAAA,yBAAyB,OAAA;AAE7B,uFAIoD;AAHhD,+HAAA,oBAAoB,OAAA;AAKxB,4DAKuC;AAJnC,oHAAA,uBAAuB,OAAA;AAEvB,uHAAA,0BAA0B,OAAA;AAG9B,mEAGqC;AAFjC,kIAAA,4BAA4B,OAAA;AAGhC,2EAGyC;AAFrC,mIAAA,yBAAyB,OAAA;AAG7B,qGAG0D;AAFtD,+IAAA,4BAA4B,OAAA;AAGhC,2FAA4F;AAAnF,mJAAA,iCAAiC,OAAA;AAQ1C,iFAA4E;AAAnE,uHAAA,gBAAgB,OAAA;AACzB,iFAA4E;AAAnE,uHAAA,gBAAgB,OAAA;AACzB,gGAIiE;AAH7D,yHAAA,kBAAkB,OAAA;AAClB,yHAAA,kBAAkB,OAAA;AAClB,sHAAA,eAAe,OAAA;AAEnB,8FAA6F;AAApF,2HAAA,oBAAoB,OAAA;AAC7B,8FAA6F;AAApF,2HAAA,oBAAoB,OAAA;AAC7B,gGAA6F;AAApF,yHAAA,kBAAkB,OAAA;AAC3B,4GAAuG;AAA9F,mIAAA,sBAAsB,OAAA;AAC/B,+EAA0E;AAAjE,qHAAA,eAAe,OAAA;AACxB,8CAA2C;AAC3C,qDAA0B;AAC1B,+DAAgF;AAAvE,yHAAA,iBAAiB,OAAA;AAC1B,sDAGkC;AAF9B,kHAAA,sBAAsB,OAAA;AACtB,uHAAA,2BAA2B,OAAA;AAE/B,iDAA4D;AAAnD,iHAAA,qBAAqB,OAAA;AAC9B,2GAAsG;AAA7F,iIAAA,qBAAqB,OAAA;AAC9B,+CAAwE;AAA/D,yGAAA,aAAa,OAAA;AAAE,gHAAA,oBAAoB,OAAA;AAC5C,oGAA+F;AAAtF,uIAAA,wBAAwB,OAAA;AACjC,uGAAkG;AAAzF,6HAAA,mBAAmB,OAAA;AAC5B,4DAAiC;AACjC,2DAAgC;AAChC,kGAA6F;AAApF,+HAAA,oBAAoB,OAAA;AAC7B,sFAAiF;AAAxE,mHAAA,cAAc,OAAA;AACvB,6FAA+G;AAAtG,wHAAA,cAAc,OAAuB;AAC9C,6FAA+G;AAAtG,wHAAA,cAAc,OAAuB;AAC9C,yGAA+H;AAAtH,kIAAA,oBAAoB,OAA2B;AACxD,yGAA+H;AAAtH,kIAAA,oBAAoB,OAA2B;AACxD,uIAAkI;AAAzH,6JAAA,mCAAmC,OAAA"}
@@ -1,5 +1,6 @@
1
1
  export { createKernelAccount, KERNEL_ADDRESSES } from "./kernel/createKernelAccount.js";
2
2
  export { createKernelAccountV1 } from "./kernel/v1/createKernelAccountV1.js";
3
+ export { createKernelMigrationAccount } from "./kernel/createKernelMigrationAccount.js";
3
4
  export { createKernelAccountV0_2 } from "./kernel/v2/createKernelAccountV0_2.js";
4
5
  export { KernelAccountV2Abi } from "./kernel/v2/abi/KernelAccountV2Abi.js";
5
6
  export { KernelFactoryV2Abi } from "./kernel/v2/abi/KernelFactoryV2Abi.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../accounts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mBAAmB,EAInB,gBAAgB,EACnB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACH,qBAAqB,EAGxB,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAA;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,cAAc,kBAAkB,CAAA;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAA;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAA;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,2DAA2D,CAAA;AACrG,OAAO,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAA;AACnF,OAAO,EAAE,wBAAwB,EAAE,MAAM,0DAA0D,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../accounts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mBAAmB,EAInB,gBAAgB,EACnB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACH,qBAAqB,EAGxB,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EACH,4BAA4B,EAE/B,MAAM,0CAA0C,CAAA;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAA;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,cAAc,kBAAkB,CAAA;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAA;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAA;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,2DAA2D,CAAA;AACrG,OAAO,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAA;AACnF,OAAO,EAAE,wBAAwB,EAAE,MAAM,0DAA0D,CAAA"}
@@ -0,0 +1,114 @@
1
+ import { concat, concatHex, encodeAbiParameters, encodeFunctionData, getAbiItem, pad, parseAbiParameters, toFunctionSelector, zeroAddress } from "viem";
2
+ import { readContract } from "viem/actions";
3
+ import { getAction } from "viem/utils";
4
+ import { CALL_TYPE, KERNEL_V3_1, KernelVersionToAddressesMap, VALIDATOR_TYPE } from "../../constants.js";
5
+ import { KernelV3AccountAbi } from "./abi/kernel_v_3_0_0/KernelAccountAbi.js";
6
+ import { KernelV3_1AccountAbi } from "./abi/kernel_v_3_1/KernelAccountAbi.js";
7
+ import { createKernelAccount } from "./createKernelAccount.js";
8
+ export async function createKernelMigrationAccount(client, params) {
9
+ if (params.entryPoint.version !== "0.7") {
10
+ throw new Error("Only EntryPoint 0.7 is supported");
11
+ }
12
+ const { plugins: { sudo: { migrate: { from: fromValidator, to: toValidator } } }, ...rest } = params;
13
+ const account = await createKernelAccount(client, {
14
+ plugins: {
15
+ sudo: fromValidator
16
+ },
17
+ ...rest
18
+ });
19
+ let isRootValidatorMigrated = false;
20
+ let isAccountDeployed = false;
21
+ const getRootValidatorMigrationStatus = async () => {
22
+ try {
23
+ if (isRootValidatorMigrated)
24
+ return isRootValidatorMigrated;
25
+ const rootValidator = await getAction(client, readContract, "readContract")({
26
+ address: account.address,
27
+ abi: KernelV3AccountAbi,
28
+ functionName: "rootValidator",
29
+ args: []
30
+ });
31
+ const toRootValidatorId = concatHex([
32
+ VALIDATOR_TYPE[toValidator.validatorType],
33
+ pad(toValidator.getIdentifier(), {
34
+ size: 20,
35
+ dir: "right"
36
+ })
37
+ ]);
38
+ isRootValidatorMigrated =
39
+ rootValidator.toLowerCase() === toRootValidatorId.toLowerCase();
40
+ return isRootValidatorMigrated;
41
+ }
42
+ catch (error) {
43
+ return false;
44
+ }
45
+ };
46
+ [isAccountDeployed, isRootValidatorMigrated] = await Promise.all([
47
+ account.isDeployed(),
48
+ getRootValidatorMigrationStatus()
49
+ ]);
50
+ if (isAccountDeployed && isRootValidatorMigrated) {
51
+ return createKernelAccount(client, {
52
+ plugins: {
53
+ sudo: toValidator
54
+ },
55
+ ...rest,
56
+ address: account.address
57
+ });
58
+ }
59
+ const rootValidatorId = concatHex([
60
+ VALIDATOR_TYPE[toValidator.validatorType],
61
+ pad(toValidator.getIdentifier(), {
62
+ size: 20,
63
+ dir: "right"
64
+ })
65
+ ]);
66
+ const validatorData = await toValidator.getEnableData(account.address);
67
+ const hookId = zeroAddress;
68
+ const hookData = "0x";
69
+ const changeRootValidatorCallData = encodeFunctionData({
70
+ abi: KernelV3_1AccountAbi,
71
+ functionName: "changeRootValidator",
72
+ args: [rootValidatorId, hookId, validatorData, hookData]
73
+ });
74
+ const installFallbackCallData = encodeFunctionData({
75
+ abi: KernelV3AccountAbi,
76
+ functionName: "installModule",
77
+ args: [
78
+ 3n,
79
+ KernelVersionToAddressesMap[KERNEL_V3_1]
80
+ .accountImplementationAddress,
81
+ concat([
82
+ toFunctionSelector(getAbiItem({
83
+ abi: KernelV3_1AccountAbi,
84
+ name: "changeRootValidator"
85
+ })),
86
+ zeroAddress,
87
+ encodeAbiParameters(parseAbiParameters("bytes selectorInitData, bytes hookInitData"), [CALL_TYPE.DELEGATE_CALL, "0x0000"])
88
+ ])
89
+ ]
90
+ });
91
+ const installFallbackCall = {
92
+ to: account.address,
93
+ data: installFallbackCallData,
94
+ value: 0n
95
+ };
96
+ const updateValidatorCall = {
97
+ to: account.address,
98
+ data: changeRootValidatorCallData,
99
+ value: 0n
100
+ };
101
+ const updateCalls = rest.kernelVersion === "0.3.0"
102
+ ? [installFallbackCall, updateValidatorCall]
103
+ : [updateValidatorCall];
104
+ return {
105
+ ...account,
106
+ async encodeCalls(calls, callType) {
107
+ const _calls = (await getRootValidatorMigrationStatus())
108
+ ? calls
109
+ : [...updateCalls, ...calls];
110
+ return account.encodeCalls(_calls, callType);
111
+ }
112
+ };
113
+ }
114
+ //# sourceMappingURL=createKernelMigrationAccount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createKernelMigrationAccount.js","sourceRoot":"","sources":["../../../accounts/kernel/createKernelMigrationAccount.ts"],"names":[],"mappings":"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"}
package/_esm/index.js CHANGED
@@ -4,6 +4,7 @@ export {} from "./clients/kernelAccountClient.js";
4
4
  export { zerodevPaymasterActions, kernelAccountClientActions } from "./clients/decorators/kernel.js";
5
5
  export { createZeroDevPaymasterClient } from "./clients/paymasterClient.js";
6
6
  export { createKernelAccountClient } from "./clients/kernelAccountClient.js";
7
+ export { createKernelMigrationAccount } from "./accounts/kernel/createKernelMigrationAccount.js";
7
8
  export { createFallbackKernelAccountClient } from "./clients/fallbackKernelAccountClient.js";
8
9
  export {} from "./types/kernel.js";
9
10
  export { KernelAccountAbi } from "./accounts/kernel/abi/KernelAccountAbi.js";
package/_esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EAMrB,gBAAgB,EAChB,qBAAqB,EACrB,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,yBAAyB,EAC5B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACH,oBAAoB,EAGvB,MAAM,6CAA6C,CAAA;AACpD,OAAO,EAAiC,MAAM,kCAAkC,CAAA;AAChF,OAAO,EACH,uBAAuB,EAEvB,0BAA0B,EAE7B,MAAM,gCAAgC,CAAA;AACvC,OAAO,EACH,4BAA4B,EAE/B,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACH,yBAAyB,EAE5B,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,iCAAiC,EAAE,MAAM,0CAA0C,CAAA;AAC5F,OAAO,EAMN,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAC5E,OAAO,EACH,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EAClB,MAAM,0DAA0D,CAAA;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wDAAwD,CAAA;AAC7F,OAAO,EAAE,oBAAoB,EAAE,MAAM,wDAAwD,CAAA;AAC7F,OAAO,EAAE,kBAAkB,EAAE,MAAM,0DAA0D,CAAA;AAC7F,OAAO,EAAE,sBAAsB,EAAE,MAAM,gEAAgE,CAAA;AACvG,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAA;6BAC/C,gBAAgB;wBAA/B,SAAS;AACrB,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,iBAAiB,EAAwB,MAAM,wBAAwB,CAAA;AAChF,OAAO,EACH,sBAAsB,EACtB,2BAA2B,EAC9B,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gEAAgE,CAAA;AACtG,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sDAAsD,CAAA;AAC/F,OAAO,EAAE,mBAAmB,EAAE,MAAM,8DAA8D,CAAA;AAClG,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wDAAwD,CAAA;AAC7F,OAAO,EAAE,cAAc,EAAE,MAAM,kDAAkD,CAAA;AACjF,OAAO,EAAE,cAAc,IAAI,mBAAmB,EAAE,MAAM,yDAAyD,CAAA;AAC/G,OAAO,EAAE,cAAc,IAAI,mBAAmB,EAAE,MAAM,yDAAyD,CAAA;AAC/G,OAAO,EAAE,oBAAoB,IAAI,uBAAuB,EAAE,MAAM,+DAA+D,CAAA;AAC/H,OAAO,EAAE,oBAAoB,IAAI,uBAAuB,EAAE,MAAM,+DAA+D,CAAA;AAC/H,OAAO,EAAE,mCAAmC,EAAE,MAAM,8EAA8E,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EAMrB,gBAAgB,EAChB,qBAAqB,EACrB,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,yBAAyB,EAC5B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACH,oBAAoB,EAGvB,MAAM,6CAA6C,CAAA;AACpD,OAAO,EAAiC,MAAM,kCAAkC,CAAA;AAChF,OAAO,EACH,uBAAuB,EAEvB,0BAA0B,EAE7B,MAAM,gCAAgC,CAAA;AACvC,OAAO,EACH,4BAA4B,EAE/B,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACH,yBAAyB,EAE5B,MAAM,kCAAkC,CAAA;AACzC,OAAO,EACH,4BAA4B,EAE/B,MAAM,mDAAmD,CAAA;AAC1D,OAAO,EAAE,iCAAiC,EAAE,MAAM,0CAA0C,CAAA;AAC5F,OAAO,EAMN,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAC5E,OAAO,EACH,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EAClB,MAAM,0DAA0D,CAAA;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wDAAwD,CAAA;AAC7F,OAAO,EAAE,oBAAoB,EAAE,MAAM,wDAAwD,CAAA;AAC7F,OAAO,EAAE,kBAAkB,EAAE,MAAM,0DAA0D,CAAA;AAC7F,OAAO,EAAE,sBAAsB,EAAE,MAAM,gEAAgE,CAAA;AACvG,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAA;6BAC/C,gBAAgB;wBAA/B,SAAS;AACrB,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,iBAAiB,EAAwB,MAAM,wBAAwB,CAAA;AAChF,OAAO,EACH,sBAAsB,EACtB,2BAA2B,EAC9B,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gEAAgE,CAAA;AACtG,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sDAAsD,CAAA;AAC/F,OAAO,EAAE,mBAAmB,EAAE,MAAM,8DAA8D,CAAA;AAClG,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wDAAwD,CAAA;AAC7F,OAAO,EAAE,cAAc,EAAE,MAAM,kDAAkD,CAAA;AACjF,OAAO,EAAE,cAAc,IAAI,mBAAmB,EAAE,MAAM,yDAAyD,CAAA;AAC/G,OAAO,EAAE,cAAc,IAAI,mBAAmB,EAAE,MAAM,yDAAyD,CAAA;AAC/G,OAAO,EAAE,oBAAoB,IAAI,uBAAuB,EAAE,MAAM,+DAA+D,CAAA;AAC/H,OAAO,EAAE,oBAAoB,IAAI,uBAAuB,EAAE,MAAM,+DAA+D,CAAA;AAC/H,OAAO,EAAE,mCAAmC,EAAE,MAAM,8EAA8E,CAAA"}
@@ -1,5 +1,6 @@
1
1
  export { createKernelAccount, type CreateKernelAccountParameters, type CreateKernelAccountReturnType, type KernelSmartAccountImplementation, KERNEL_ADDRESSES } from "./kernel/createKernelAccount.js";
2
2
  export { createKernelAccountV1, type CreateKernelAccountV1ReturnType, type KernelSmartAccountV1Implementation } from "./kernel/v1/createKernelAccountV1.js";
3
+ export { createKernelMigrationAccount, type CreateKernelMigrationAccountParameters } from "./kernel/createKernelMigrationAccount.js";
3
4
  export { createKernelAccountV0_2 } from "./kernel/v2/createKernelAccountV0_2.js";
4
5
  export { KernelAccountV2Abi } from "./kernel/v2/abi/KernelAccountV2Abi.js";
5
6
  export { KernelFactoryV2Abi } from "./kernel/v2/abi/KernelFactoryV2Abi.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../accounts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mBAAmB,EACnB,KAAK,6BAA6B,EAClC,KAAK,6BAA6B,EAClC,KAAK,gCAAgC,EACrC,gBAAgB,EACnB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACH,qBAAqB,EACrB,KAAK,+BAA+B,EACpC,KAAK,kCAAkC,EAC1C,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAA;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,cAAc,kBAAkB,CAAA;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAA;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAA;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,2DAA2D,CAAA;AACrG,OAAO,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAA;AACnF,OAAO,EAAE,wBAAwB,EAAE,MAAM,0DAA0D,CAAA;AACnG,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../accounts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mBAAmB,EACnB,KAAK,6BAA6B,EAClC,KAAK,6BAA6B,EAClC,KAAK,gCAAgC,EACrC,gBAAgB,EACnB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACH,qBAAqB,EACrB,KAAK,+BAA+B,EACpC,KAAK,kCAAkC,EAC1C,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EACH,4BAA4B,EAC5B,KAAK,sCAAsC,EAC9C,MAAM,0CAA0C,CAAA;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAA;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,cAAc,kBAAkB,CAAA;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAA;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAA;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,2DAA2D,CAAA;AACrG,OAAO,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAA;AACnF,OAAO,EAAE,wBAAwB,EAAE,MAAM,0DAA0D,CAAA;AACnG,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA"}
@@ -0,0 +1,15 @@
1
+ import type { EntryPointVersion } from "viem/account-abstraction";
2
+ import type { GetKernelVersion, KernelValidator } from "../../types/kernel.js";
3
+ import { type CreateKernelAccountParameters, type CreateKernelAccountReturnType, type KernelSmartAccountImplementation } from "./createKernelAccount.js";
4
+ export type CreateKernelMigrationAccountParameters<entryPointVersion extends EntryPointVersion, KernelVerion extends GetKernelVersion<entryPointVersion>> = Omit<CreateKernelAccountParameters<entryPointVersion, KernelVerion>, "plugins"> & {
5
+ plugins: {
6
+ sudo: {
7
+ migrate: {
8
+ from: KernelValidator;
9
+ to: KernelValidator;
10
+ };
11
+ };
12
+ };
13
+ };
14
+ export declare function createKernelMigrationAccount<entryPointVersion extends EntryPointVersion, KernelVersion extends GetKernelVersion<entryPointVersion>>(client: KernelSmartAccountImplementation["client"], params: CreateKernelMigrationAccountParameters<entryPointVersion, KernelVersion>): Promise<CreateKernelAccountReturnType<entryPointVersion>>;
15
+ //# sourceMappingURL=createKernelMigrationAccount.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createKernelMigrationAccount.d.ts","sourceRoot":"","sources":["../../../accounts/kernel/createKernelMigrationAccount.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AASjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAG9E,OAAO,EACH,KAAK,6BAA6B,EAClC,KAAK,6BAA6B,EAClC,KAAK,gCAAgC,EAExC,MAAM,0BAA0B,CAAA;AAEjC,MAAM,MAAM,sCAAsC,CAC9C,iBAAiB,SAAS,iBAAiB,EAC3C,YAAY,SAAS,gBAAgB,CAAC,iBAAiB,CAAC,IACxD,IAAI,CACJ,6BAA6B,CAAC,iBAAiB,EAAE,YAAY,CAAC,EAC9D,SAAS,CACZ,GAAG;IACA,OAAO,EAAE;QACL,IAAI,EAAE;YACF,OAAO,EAAE;gBACL,IAAI,EAAE,eAAe,CAAA;gBACrB,EAAE,EAAE,eAAe,CAAA;aACtB,CAAA;SACJ,CAAA;KACJ,CAAA;CACJ,CAAA;AAED,wBAAsB,4BAA4B,CAC9C,iBAAiB,SAAS,iBAAiB,EAC3C,aAAa,SAAS,gBAAgB,CAAC,iBAAiB,CAAC,EAEzD,MAAM,EAAE,gCAAgC,CAAC,QAAQ,CAAC,EAClD,MAAM,EAAE,sCAAsC,CAC1C,iBAAiB,EACjB,aAAa,CAChB,GACF,OAAO,CAAC,6BAA6B,CAAC,iBAAiB,CAAC,CAAC,CA8H3D"}
package/_types/index.d.ts CHANGED
@@ -4,6 +4,7 @@ export { type SmartAccountClientConfig } from "./clients/kernelAccountClient.js"
4
4
  export { zerodevPaymasterActions, type ZeroDevPaymasterClientActions, kernelAccountClientActions, type KernelAccountClientActions } from "./clients/decorators/kernel.js";
5
5
  export { createZeroDevPaymasterClient, type ZeroDevPaymasterClient } from "./clients/paymasterClient.js";
6
6
  export { createKernelAccountClient, type KernelAccountClient } from "./clients/kernelAccountClient.js";
7
+ export { createKernelMigrationAccount, type CreateKernelMigrationAccountParameters } from "./accounts/kernel/createKernelMigrationAccount.js";
7
8
  export { createFallbackKernelAccountClient } from "./clients/fallbackKernelAccountClient.js";
8
9
  export { type KernelValidator, type KernelValidatorHook, type ZeroDevPaymasterRpcSchema, type KernelPluginManager, type Action } from "./types/kernel.js";
9
10
  export { KernelAccountAbi } from "./accounts/kernel/abi/KernelAccountAbi.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,KAAK,6BAA6B,EAClC,KAAK,6BAA6B,EAClC,KAAK,+BAA+B,EACpC,KAAK,gCAAgC,EACrC,KAAK,kCAAkC,EACvC,gBAAgB,EAChB,qBAAqB,EACrB,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,yBAAyB,EAC5B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACH,oBAAoB,EACpB,KAAK,8BAA8B,EACnC,KAAK,8BAA8B,EACtC,MAAM,6CAA6C,CAAA;AACpD,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,kCAAkC,CAAA;AAChF,OAAO,EACH,uBAAuB,EACvB,KAAK,6BAA6B,EAClC,0BAA0B,EAC1B,KAAK,0BAA0B,EAClC,MAAM,gCAAgC,CAAA;AACvC,OAAO,EACH,4BAA4B,EAC5B,KAAK,sBAAsB,EAC9B,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACH,yBAAyB,EACzB,KAAK,mBAAmB,EAC3B,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,iCAAiC,EAAE,MAAM,0CAA0C,CAAA;AAC5F,OAAO,EACH,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACxB,KAAK,MAAM,EACd,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAC5E,OAAO,EACH,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EAClB,MAAM,0DAA0D,CAAA;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wDAAwD,CAAA;AAC7F,OAAO,EAAE,oBAAoB,EAAE,MAAM,wDAAwD,CAAA;AAC7F,OAAO,EAAE,kBAAkB,EAAE,MAAM,0DAA0D,CAAA;AAC7F,OAAO,EAAE,sBAAsB,EAAE,MAAM,gEAAgE,CAAA;AACvG,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAA;AAC1E,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,iBAAiB,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAChF,OAAO,EACH,sBAAsB,EACtB,2BAA2B,EAC9B,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gEAAgE,CAAA;AACtG,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sDAAsD,CAAA;AAC/F,OAAO,EAAE,mBAAmB,EAAE,MAAM,8DAA8D,CAAA;AAClG,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wDAAwD,CAAA;AAC7F,OAAO,EAAE,cAAc,EAAE,MAAM,kDAAkD,CAAA;AACjF,OAAO,EAAE,cAAc,IAAI,mBAAmB,EAAE,MAAM,yDAAyD,CAAA;AAC/G,OAAO,EAAE,cAAc,IAAI,mBAAmB,EAAE,MAAM,yDAAyD,CAAA;AAC/G,OAAO,EAAE,oBAAoB,IAAI,uBAAuB,EAAE,MAAM,+DAA+D,CAAA;AAC/H,OAAO,EAAE,oBAAoB,IAAI,uBAAuB,EAAE,MAAM,+DAA+D,CAAA;AAC/H,OAAO,EAAE,mCAAmC,EAAE,MAAM,8EAA8E,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
package/accounts/index.ts CHANGED
@@ -10,6 +10,10 @@ export {
10
10
  type CreateKernelAccountV1ReturnType,
11
11
  type KernelSmartAccountV1Implementation
12
12
  } from "./kernel/v1/createKernelAccountV1.js"
13
+ export {
14
+ createKernelMigrationAccount,
15
+ type CreateKernelMigrationAccountParameters
16
+ } from "./kernel/createKernelMigrationAccount.js"
13
17
  export { createKernelAccountV0_2 } from "./kernel/v2/createKernelAccountV0_2.js"
14
18
  export { KernelAccountV2Abi } from "./kernel/v2/abi/KernelAccountV2Abi.js"
15
19
  export { KernelFactoryV2Abi } from "./kernel/v2/abi/KernelFactoryV2Abi.js"
@@ -0,0 +1,183 @@
1
+ import {
2
+ concat,
3
+ concatHex,
4
+ encodeAbiParameters,
5
+ encodeFunctionData,
6
+ getAbiItem,
7
+ pad,
8
+ parseAbiParameters,
9
+ toFunctionSelector,
10
+ zeroAddress
11
+ } from "viem"
12
+ import type { EntryPointVersion } from "viem/account-abstraction"
13
+ import { readContract } from "viem/actions"
14
+ import { getAction } from "viem/utils"
15
+ import {
16
+ CALL_TYPE,
17
+ KERNEL_V3_1,
18
+ KernelVersionToAddressesMap,
19
+ VALIDATOR_TYPE
20
+ } from "../../constants.js"
21
+ import type { GetKernelVersion, KernelValidator } from "../../types/kernel.js"
22
+ import { KernelV3AccountAbi } from "./abi/kernel_v_3_0_0/KernelAccountAbi.js"
23
+ import { KernelV3_1AccountAbi } from "./abi/kernel_v_3_1/KernelAccountAbi.js"
24
+ import {
25
+ type CreateKernelAccountParameters,
26
+ type CreateKernelAccountReturnType,
27
+ type KernelSmartAccountImplementation,
28
+ createKernelAccount
29
+ } from "./createKernelAccount.js"
30
+
31
+ export type CreateKernelMigrationAccountParameters<
32
+ entryPointVersion extends EntryPointVersion,
33
+ KernelVerion extends GetKernelVersion<entryPointVersion>
34
+ > = Omit<
35
+ CreateKernelAccountParameters<entryPointVersion, KernelVerion>,
36
+ "plugins"
37
+ > & {
38
+ plugins: {
39
+ sudo: {
40
+ migrate: {
41
+ from: KernelValidator
42
+ to: KernelValidator
43
+ }
44
+ }
45
+ }
46
+ }
47
+
48
+ export async function createKernelMigrationAccount<
49
+ entryPointVersion extends EntryPointVersion,
50
+ KernelVersion extends GetKernelVersion<entryPointVersion>
51
+ >(
52
+ client: KernelSmartAccountImplementation["client"],
53
+ params: CreateKernelMigrationAccountParameters<
54
+ entryPointVersion,
55
+ KernelVersion
56
+ >
57
+ ): Promise<CreateKernelAccountReturnType<entryPointVersion>> {
58
+ if (params.entryPoint.version !== "0.7") {
59
+ throw new Error("Only EntryPoint 0.7 is supported")
60
+ }
61
+ const {
62
+ plugins: {
63
+ sudo: {
64
+ migrate: { from: fromValidator, to: toValidator }
65
+ }
66
+ },
67
+ ...rest
68
+ } = params
69
+ const account = await createKernelAccount(client, {
70
+ plugins: {
71
+ sudo: fromValidator
72
+ },
73
+ ...rest
74
+ })
75
+
76
+ let isRootValidatorMigrated = false
77
+ let isAccountDeployed = false
78
+ const getRootValidatorMigrationStatus = async () => {
79
+ try {
80
+ if (isRootValidatorMigrated) return isRootValidatorMigrated
81
+ const rootValidator = await getAction(
82
+ client,
83
+ readContract,
84
+ "readContract"
85
+ )({
86
+ address: account.address,
87
+ abi: KernelV3AccountAbi,
88
+ functionName: "rootValidator",
89
+ args: []
90
+ })
91
+
92
+ const toRootValidatorId = concatHex([
93
+ VALIDATOR_TYPE[toValidator.validatorType],
94
+ pad(toValidator.getIdentifier(), {
95
+ size: 20,
96
+ dir: "right"
97
+ })
98
+ ])
99
+ isRootValidatorMigrated =
100
+ rootValidator.toLowerCase() === toRootValidatorId.toLowerCase()
101
+ return isRootValidatorMigrated
102
+ } catch (error) {
103
+ return false
104
+ }
105
+ }
106
+ ;[isAccountDeployed, isRootValidatorMigrated] = await Promise.all([
107
+ account.isDeployed(),
108
+ getRootValidatorMigrationStatus()
109
+ ])
110
+ if (isAccountDeployed && isRootValidatorMigrated) {
111
+ return createKernelAccount(client, {
112
+ plugins: {
113
+ sudo: toValidator
114
+ },
115
+ ...rest,
116
+ address: account.address
117
+ })
118
+ }
119
+ const rootValidatorId = concatHex([
120
+ VALIDATOR_TYPE[toValidator.validatorType],
121
+ pad(toValidator.getIdentifier(), {
122
+ size: 20,
123
+ dir: "right"
124
+ })
125
+ ])
126
+ const validatorData = await toValidator.getEnableData(account.address)
127
+
128
+ const hookId = zeroAddress
129
+
130
+ const hookData = "0x"
131
+ const changeRootValidatorCallData = encodeFunctionData({
132
+ abi: KernelV3_1AccountAbi,
133
+ functionName: "changeRootValidator",
134
+ args: [rootValidatorId, hookId, validatorData, hookData]
135
+ })
136
+ const installFallbackCallData = encodeFunctionData({
137
+ abi: KernelV3AccountAbi,
138
+ functionName: "installModule",
139
+ args: [
140
+ 3n,
141
+ KernelVersionToAddressesMap[KERNEL_V3_1]
142
+ .accountImplementationAddress,
143
+ concat([
144
+ toFunctionSelector(
145
+ getAbiItem({
146
+ abi: KernelV3_1AccountAbi,
147
+ name: "changeRootValidator"
148
+ })
149
+ ),
150
+ zeroAddress,
151
+ encodeAbiParameters(
152
+ parseAbiParameters(
153
+ "bytes selectorInitData, bytes hookInitData"
154
+ ),
155
+ [CALL_TYPE.DELEGATE_CALL, "0x0000"]
156
+ )
157
+ ])
158
+ ]
159
+ })
160
+ const installFallbackCall = {
161
+ to: account.address,
162
+ data: installFallbackCallData,
163
+ value: 0n
164
+ }
165
+ const updateValidatorCall = {
166
+ to: account.address,
167
+ data: changeRootValidatorCallData,
168
+ value: 0n
169
+ }
170
+ const updateCalls =
171
+ rest.kernelVersion === "0.3.0"
172
+ ? [installFallbackCall, updateValidatorCall]
173
+ : [updateValidatorCall]
174
+ return {
175
+ ...account,
176
+ async encodeCalls(calls, callType) {
177
+ const _calls = (await getRootValidatorMigrationStatus())
178
+ ? calls
179
+ : [...updateCalls, ...calls]
180
+ return account.encodeCalls(_calls, callType)
181
+ }
182
+ }
183
+ }
package/index.ts CHANGED
@@ -35,6 +35,10 @@ export {
35
35
  createKernelAccountClient,
36
36
  type KernelAccountClient
37
37
  } from "./clients/kernelAccountClient.js"
38
+ export {
39
+ createKernelMigrationAccount,
40
+ type CreateKernelMigrationAccountParameters
41
+ } from "./accounts/kernel/createKernelMigrationAccount.js"
38
42
  export { createFallbackKernelAccountClient } from "./clients/fallbackKernelAccountClient.js"
39
43
  export {
40
44
  type KernelValidator,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zerodev/sdk",
3
- "version": "5.4.41",
3
+ "version": "5.4.42",
4
4
  "author": "ZeroDev",
5
5
  "main": "./_cjs/index.js",
6
6
  "module": "./_esm/index.js",