@zerodev/sdk 5.2.15 → 5.2.17
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/accounts/kernel/createKernelAccount.js +25 -5
- package/_cjs/accounts/kernel/createKernelAccount.js.map +1 -1
- package/_cjs/accounts/kernel/utils/account/ep0_7/encodeCallData.js +4 -4
- package/_cjs/accounts/kernel/utils/account/ep0_7/encodeCallData.js.map +1 -1
- package/_cjs/accounts/kernel/utils/ep0_7/encodeExecuteBatchCall.js +2 -2
- package/_cjs/accounts/kernel/utils/ep0_7/encodeExecuteBatchCall.js.map +1 -1
- package/_cjs/accounts/kernel/utils/ep0_7/encodeExecuteCall.js +12 -1
- package/_cjs/accounts/kernel/utils/ep0_7/encodeExecuteCall.js.map +1 -1
- package/_cjs/accounts/kernel/utils/ep0_7/encodeExecuteDelegateCall.js +2 -2
- package/_cjs/accounts/kernel/utils/ep0_7/encodeExecuteDelegateCall.js.map +1 -1
- package/_cjs/accounts/kernel/utils/ep0_7/encodeExecuteSingleCall.js +2 -2
- package/_cjs/accounts/kernel/utils/ep0_7/encodeExecuteSingleCall.js.map +1 -1
- package/_cjs/accounts/kernel/utils/plugins/ep0_7/getEncodedPluginsData.js +3 -3
- package/_cjs/accounts/kernel/utils/plugins/ep0_7/getEncodedPluginsData.js.map +1 -1
- package/_cjs/accounts/kernel/utils/plugins/ep0_7/getPluginsEnableTypedData.js +3 -3
- package/_cjs/accounts/kernel/utils/plugins/ep0_7/getPluginsEnableTypedData.js.map +1 -1
- package/_cjs/accounts/utils/toKernelPluginManager.js +5 -2
- package/_cjs/accounts/utils/toKernelPluginManager.js.map +1 -1
- package/_cjs/clients/fallbackKernelAccountClient.js +42 -24
- package/_cjs/clients/fallbackKernelAccountClient.js.map +1 -1
- package/_cjs/index.js.map +1 -1
- package/_cjs/types/kernel.js.map +1 -1
- package/_esm/accounts/kernel/createKernelAccount.js +27 -5
- package/_esm/accounts/kernel/createKernelAccount.js.map +1 -1
- package/_esm/accounts/kernel/utils/account/ep0_7/encodeCallData.js +4 -4
- package/_esm/accounts/kernel/utils/account/ep0_7/encodeCallData.js.map +1 -1
- package/_esm/accounts/kernel/utils/ep0_7/encodeExecuteBatchCall.js +2 -2
- package/_esm/accounts/kernel/utils/ep0_7/encodeExecuteBatchCall.js.map +1 -1
- package/_esm/accounts/kernel/utils/ep0_7/encodeExecuteCall.js +17 -2
- package/_esm/accounts/kernel/utils/ep0_7/encodeExecuteCall.js.map +1 -1
- package/_esm/accounts/kernel/utils/ep0_7/encodeExecuteDelegateCall.js +2 -2
- package/_esm/accounts/kernel/utils/ep0_7/encodeExecuteDelegateCall.js.map +1 -1
- package/_esm/accounts/kernel/utils/ep0_7/encodeExecuteSingleCall.js +2 -2
- package/_esm/accounts/kernel/utils/ep0_7/encodeExecuteSingleCall.js.map +1 -1
- package/_esm/accounts/kernel/utils/plugins/ep0_7/getEncodedPluginsData.js +3 -3
- package/_esm/accounts/kernel/utils/plugins/ep0_7/getEncodedPluginsData.js.map +1 -1
- package/_esm/accounts/kernel/utils/plugins/ep0_7/getPluginsEnableTypedData.js +3 -3
- package/_esm/accounts/kernel/utils/plugins/ep0_7/getPluginsEnableTypedData.js.map +1 -1
- package/_esm/accounts/utils/toKernelPluginManager.js +5 -2
- package/_esm/accounts/utils/toKernelPluginManager.js.map +1 -1
- package/_esm/clients/fallbackKernelAccountClient.js +50 -29
- package/_esm/clients/fallbackKernelAccountClient.js.map +1 -1
- package/_esm/index.js.map +1 -1
- package/_esm/types/kernel.js.map +1 -1
- package/_types/accounts/kernel/createKernelAccount.d.ts.map +1 -1
- package/_types/accounts/kernel/utils/account/ep0_7/encodeCallData.d.ts +2 -2
- package/_types/accounts/kernel/utils/account/ep0_7/encodeCallData.d.ts.map +1 -1
- package/_types/accounts/kernel/utils/ep0_7/encodeExecuteBatchCall.d.ts +1 -1
- package/_types/accounts/kernel/utils/ep0_7/encodeExecuteBatchCall.d.ts.map +1 -1
- package/_types/accounts/kernel/utils/ep0_7/encodeExecuteCall.d.ts +1 -1
- package/_types/accounts/kernel/utils/ep0_7/encodeExecuteCall.d.ts.map +1 -1
- package/_types/accounts/kernel/utils/ep0_7/encodeExecuteDelegateCall.d.ts +1 -1
- package/_types/accounts/kernel/utils/ep0_7/encodeExecuteDelegateCall.d.ts.map +1 -1
- package/_types/accounts/kernel/utils/ep0_7/encodeExecuteSingleCall.d.ts +1 -1
- package/_types/accounts/kernel/utils/ep0_7/encodeExecuteSingleCall.d.ts.map +1 -1
- package/_types/accounts/kernel/utils/plugins/ep0_7/getEncodedPluginsData.d.ts +3 -2
- package/_types/accounts/kernel/utils/plugins/ep0_7/getEncodedPluginsData.d.ts.map +1 -1
- package/_types/accounts/kernel/utils/plugins/ep0_7/getPluginsEnableTypedData.d.ts +3 -1
- package/_types/accounts/kernel/utils/plugins/ep0_7/getPluginsEnableTypedData.d.ts.map +1 -1
- package/_types/accounts/utils/toKernelPluginManager.d.ts +1 -1
- package/_types/accounts/utils/toKernelPluginManager.d.ts.map +1 -1
- package/_types/clients/fallbackKernelAccountClient.d.ts +1 -1
- package/_types/clients/fallbackKernelAccountClient.d.ts.map +1 -1
- package/_types/index.d.ts +1 -1
- package/_types/index.d.ts.map +1 -1
- package/_types/types/kernel.d.ts +6 -0
- package/_types/types/kernel.d.ts.map +1 -1
- package/accounts/kernel/createKernelAccount.ts +36 -5
- package/accounts/kernel/utils/account/ep0_7/encodeCallData.ts +19 -9
- package/accounts/kernel/utils/ep0_7/encodeExecuteBatchCall.ts +4 -2
- package/accounts/kernel/utils/ep0_7/encodeExecuteCall.ts +30 -2
- package/accounts/kernel/utils/ep0_7/encodeExecuteDelegateCall.ts +10 -5
- package/accounts/kernel/utils/ep0_7/encodeExecuteSingleCall.ts +10 -5
- package/accounts/kernel/utils/plugins/ep0_7/getEncodedPluginsData.ts +9 -4
- package/accounts/kernel/utils/plugins/ep0_7/getPluginsEnableTypedData.ts +5 -2
- package/accounts/utils/toKernelPluginManager.ts +5 -1
- package/clients/fallbackKernelAccountClient.ts +56 -36
- package/index.ts +1 -0
- package/package.json +1 -1
- package/types/kernel.ts +7 -0
|
@@ -2,5 +2,5 @@ import type { EntryPoint } from "permissionless/types";
|
|
|
2
2
|
import type { Chain, Transport } from "viem";
|
|
3
3
|
import type { KernelSmartAccount } from "../accounts/index.js";
|
|
4
4
|
import type { KernelAccountClient } from "./kernelAccountClient.js";
|
|
5
|
-
export declare const createFallbackKernelAccountClient: <TEntryPoint extends EntryPoint, TTransport extends Transport, TChain extends Chain | undefined, TSmartAccount extends KernelSmartAccount<TEntryPoint> | undefined>(clients: KernelAccountClient<TEntryPoint, TTransport, TChain, TSmartAccount>[]) => KernelAccountClient<TEntryPoint, TTransport, TChain, TSmartAccount>;
|
|
5
|
+
export declare const createFallbackKernelAccountClient: <TEntryPoint extends EntryPoint, TTransport extends Transport, TChain extends Chain | undefined, TSmartAccount extends KernelSmartAccount<TEntryPoint> | undefined>(clients: KernelAccountClient<TEntryPoint, TTransport, TChain, TSmartAccount>[], onError?: ((error: Error, clientUrl: string) => Promise<void>) | undefined) => KernelAccountClient<TEntryPoint, TTransport, TChain, TSmartAccount>;
|
|
6
6
|
//# sourceMappingURL=fallbackKernelAccountClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fallbackKernelAccountClient.d.ts","sourceRoot":"","sources":["../../clients/fallbackKernelAccountClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAC5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAEnE,eAAO,MAAM,iCAAiC,
|
|
1
|
+
{"version":3,"file":"fallbackKernelAccountClient.d.ts","sourceRoot":"","sources":["../../clients/fallbackKernelAccountClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAC5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAEnE,eAAO,MAAM,iCAAiC,yQASxB,KAAK,aAAa,MAAM,KAAK,QAAQ,IAAI,CAAC,qFAmE/D,CAAA"}
|
package/_types/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export { zerodevPaymasterActions, type ZeroDevPaymasterClientActions, kernelAcco
|
|
|
5
5
|
export { createZeroDevPaymasterClient, type ZeroDevPaymasterClient } from "./clients/paymasterClient.js";
|
|
6
6
|
export { createKernelAccountClient, type KernelAccountClient } from "./clients/kernelAccountClient.js";
|
|
7
7
|
export { createFallbackKernelAccountClient } from "./clients/fallbackKernelAccountClient.js";
|
|
8
|
-
export { type KernelValidator, type ZeroDevPaymasterRpcSchema, type KernelPluginManager, type Action } from "./types/kernel.js";
|
|
8
|
+
export { type KernelValidator, type KernelValidatorHook, type ZeroDevPaymasterRpcSchema, type KernelPluginManager, type Action } from "./types/kernel.js";
|
|
9
9
|
export { KernelAccountAbi } from "./accounts/kernel/abi/KernelAccountAbi.js";
|
|
10
10
|
export { KernelFactoryAbi } from "./accounts/kernel/abi/KernelFactoryAbi.js";
|
|
11
11
|
export { KernelV3AccountAbi, KernelV3ExecuteAbi, KernelV3InitAbi } from "./accounts/kernel/abi/kernel_v_3_0_0/KernelAccountAbi.js";
|
package/_types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,UAAU,EACb,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,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,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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,UAAU,EACb,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,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"}
|
package/_types/types/kernel.d.ts
CHANGED
|
@@ -101,6 +101,10 @@ export type KernelValidator<entryPoint extends EntryPoint, Name extends string =
|
|
|
101
101
|
isEnabled(accountAddress: Address, selector: Hex): Promise<boolean>;
|
|
102
102
|
getIdentifier: () => Hex;
|
|
103
103
|
};
|
|
104
|
+
export type KernelValidatorHook = {
|
|
105
|
+
getEnableData(accountAddress?: Address): Promise<Hex>;
|
|
106
|
+
getIdentifier: () => Hex;
|
|
107
|
+
};
|
|
104
108
|
export type ValidatorInitData = {
|
|
105
109
|
validatorAddress: Address;
|
|
106
110
|
enableData: Hex;
|
|
@@ -108,6 +112,7 @@ export type ValidatorInitData = {
|
|
|
108
112
|
};
|
|
109
113
|
export type KernelPluginManager<entryPoint extends EntryPoint> = KernelValidator<entryPoint> & {
|
|
110
114
|
sudoValidator?: KernelValidator<entryPoint>;
|
|
115
|
+
hook?: KernelValidatorHook;
|
|
111
116
|
getPluginEnableSignature(accountAddress: Address): Promise<Hex>;
|
|
112
117
|
getValidatorInitData(): Promise<ValidatorInitData>;
|
|
113
118
|
getAction(): Action;
|
|
@@ -128,6 +133,7 @@ export type PluginInstallData<entryPoint extends EntryPoint> = entryPoint extend
|
|
|
128
133
|
export type KernelPluginManagerParams<entryPoint extends EntryPoint> = {
|
|
129
134
|
sudo?: KernelValidator<entryPoint>;
|
|
130
135
|
regular?: KernelValidator<entryPoint>;
|
|
136
|
+
hook?: KernelValidatorHook;
|
|
131
137
|
pluginEnableSignature?: Hex;
|
|
132
138
|
validatorInitData?: ValidatorInitData;
|
|
133
139
|
action?: Action;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kernel.d.ts","sourceRoot":"","sources":["../../types/kernel.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"kernel.d.ts","sourceRoot":"","sources":["../../types/kernel.ts"],"names":[],"mappings":"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"}
|
|
@@ -129,10 +129,12 @@ export const KERNEL_ADDRESSES: {
|
|
|
129
129
|
|
|
130
130
|
const getKernelInitData = async <entryPoint extends EntryPoint>({
|
|
131
131
|
entryPoint: entryPointAddress,
|
|
132
|
-
kernelPluginManager
|
|
132
|
+
kernelPluginManager,
|
|
133
|
+
initHook
|
|
133
134
|
}: {
|
|
134
135
|
entryPoint: entryPoint
|
|
135
136
|
kernelPluginManager: KernelPluginManager<entryPoint>
|
|
137
|
+
initHook: boolean
|
|
136
138
|
}) => {
|
|
137
139
|
const entryPointVersion = getEntryPointVersion(entryPointAddress)
|
|
138
140
|
const { enableData, identifier, validatorAddress } =
|
|
@@ -149,7 +151,16 @@ const getKernelInitData = async <entryPoint extends EntryPoint>({
|
|
|
149
151
|
return encodeFunctionData({
|
|
150
152
|
abi: KernelV3InitAbi,
|
|
151
153
|
functionName: "initialize",
|
|
152
|
-
args: [
|
|
154
|
+
args: [
|
|
155
|
+
identifier,
|
|
156
|
+
initHook && kernelPluginManager.hook
|
|
157
|
+
? kernelPluginManager.hook?.getIdentifier()
|
|
158
|
+
: zeroAddress,
|
|
159
|
+
enableData,
|
|
160
|
+
initHook && kernelPluginManager.hook
|
|
161
|
+
? await kernelPluginManager.hook?.getEnableData()
|
|
162
|
+
: "0x"
|
|
163
|
+
]
|
|
153
164
|
})
|
|
154
165
|
}
|
|
155
166
|
|
|
@@ -166,7 +177,8 @@ const getAccountInitCode = async <entryPoint extends EntryPoint>({
|
|
|
166
177
|
accountLogicAddress,
|
|
167
178
|
factoryStakerAddress,
|
|
168
179
|
entryPoint: entryPointAddress,
|
|
169
|
-
kernelPluginManager
|
|
180
|
+
kernelPluginManager,
|
|
181
|
+
initHook
|
|
170
182
|
}: {
|
|
171
183
|
index: bigint
|
|
172
184
|
factoryAddress: Address
|
|
@@ -174,11 +186,13 @@ const getAccountInitCode = async <entryPoint extends EntryPoint>({
|
|
|
174
186
|
factoryStakerAddress: Address
|
|
175
187
|
entryPoint: entryPoint
|
|
176
188
|
kernelPluginManager: KernelPluginManager<entryPoint>
|
|
189
|
+
initHook: boolean
|
|
177
190
|
}): Promise<Hex> => {
|
|
178
191
|
// Build the account initialization data
|
|
179
192
|
const initialisationData = await getKernelInitData<entryPoint>({
|
|
180
193
|
entryPoint: entryPointAddress,
|
|
181
|
-
kernelPluginManager
|
|
194
|
+
kernelPluginManager,
|
|
195
|
+
initHook
|
|
182
196
|
})
|
|
183
197
|
const entryPointVersion = getEntryPointVersion(entryPointAddress)
|
|
184
198
|
|
|
@@ -291,10 +305,22 @@ export async function createKernelAccount<
|
|
|
291
305
|
: await toKernelPluginManager<entryPoint>(client, {
|
|
292
306
|
sudo: plugins.sudo,
|
|
293
307
|
regular: plugins.regular,
|
|
308
|
+
hook: plugins.hook,
|
|
294
309
|
action: plugins.action,
|
|
295
310
|
pluginEnableSignature: plugins.pluginEnableSignature,
|
|
296
311
|
entryPoint: entryPointAddress
|
|
297
312
|
})
|
|
313
|
+
|
|
314
|
+
// initHook flag is activated only if both the hook and sudo validator are given
|
|
315
|
+
// if the hook is given with regular plugins, then consider it as a hook for regular plugins
|
|
316
|
+
const initHook = Boolean(
|
|
317
|
+
isKernelPluginManager<entryPoint>(plugins)
|
|
318
|
+
? plugins.hook &&
|
|
319
|
+
plugins.getIdentifier() ===
|
|
320
|
+
plugins.sudoValidator?.getIdentifier()
|
|
321
|
+
: plugins.hook && !plugins.regular
|
|
322
|
+
)
|
|
323
|
+
|
|
298
324
|
// Helper to generate the init code for the smart account
|
|
299
325
|
const generateInitCode = async () => {
|
|
300
326
|
if (!accountLogicAddress || !factoryAddress)
|
|
@@ -305,7 +331,8 @@ export async function createKernelAccount<
|
|
|
305
331
|
accountLogicAddress,
|
|
306
332
|
factoryStakerAddress,
|
|
307
333
|
entryPoint: entryPointAddress,
|
|
308
|
-
kernelPluginManager
|
|
334
|
+
kernelPluginManager,
|
|
335
|
+
initHook
|
|
309
336
|
})
|
|
310
337
|
}
|
|
311
338
|
|
|
@@ -358,6 +385,10 @@ export async function createKernelAccount<
|
|
|
358
385
|
if (entryPointVersion === "v0.6") {
|
|
359
386
|
return encodeCallDataEpV06(tx)
|
|
360
387
|
}
|
|
388
|
+
|
|
389
|
+
if (plugins.hook) {
|
|
390
|
+
return encodeCallDataEpV07(tx, true)
|
|
391
|
+
}
|
|
361
392
|
return encodeCallDataEpV07(tx)
|
|
362
393
|
},
|
|
363
394
|
async getFactory() {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { EntryPoint } from "permissionless/types
|
|
1
|
+
import type { EntryPoint } from "permissionless/types"
|
|
2
2
|
import { EXEC_TYPE } from "../../../../../constants.js"
|
|
3
3
|
import type { KernelSmartAccount } from "../../../createKernelAccount.js"
|
|
4
4
|
import { encodeExecuteBatchCall } from "../../ep0_7/encodeExecuteBatchCall.js"
|
|
@@ -8,23 +8,32 @@ import { encodeExecuteSingleCall } from "../../ep0_7/encodeExecuteSingleCall.js"
|
|
|
8
8
|
export const encodeCallData = async <
|
|
9
9
|
entryPoint extends EntryPoint = EntryPoint
|
|
10
10
|
>(
|
|
11
|
-
tx: Parameters<KernelSmartAccount<entryPoint>["encodeCallData"]>[0]
|
|
11
|
+
tx: Parameters<KernelSmartAccount<entryPoint>["encodeCallData"]>[0],
|
|
12
|
+
includeHooks?: boolean
|
|
12
13
|
) => {
|
|
13
14
|
if (Array.isArray(tx)) {
|
|
14
15
|
if (tx.some((t) => t.callType === "delegatecall")) {
|
|
15
16
|
throw new Error("Cannot batch delegatecall")
|
|
16
17
|
}
|
|
17
18
|
// Encode a batched call
|
|
18
|
-
return encodeExecuteBatchCall(
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
return encodeExecuteBatchCall(
|
|
20
|
+
tx,
|
|
21
|
+
{
|
|
22
|
+
execType: EXEC_TYPE.DEFAULT
|
|
23
|
+
},
|
|
24
|
+
includeHooks
|
|
25
|
+
)
|
|
21
26
|
}
|
|
22
27
|
|
|
23
28
|
// Default to `call`
|
|
24
29
|
if (!tx.callType || tx.callType === "call") {
|
|
25
|
-
return encodeExecuteSingleCall(
|
|
26
|
-
|
|
27
|
-
|
|
30
|
+
return encodeExecuteSingleCall(
|
|
31
|
+
tx,
|
|
32
|
+
{
|
|
33
|
+
execType: EXEC_TYPE.DEFAULT
|
|
34
|
+
},
|
|
35
|
+
includeHooks
|
|
36
|
+
)
|
|
28
37
|
}
|
|
29
38
|
|
|
30
39
|
if (tx.callType === "delegatecall") {
|
|
@@ -32,7 +41,8 @@ export const encodeCallData = async <
|
|
|
32
41
|
{ to: tx.to, data: tx.data },
|
|
33
42
|
{
|
|
34
43
|
execType: EXEC_TYPE.DEFAULT
|
|
35
|
-
}
|
|
44
|
+
},
|
|
45
|
+
includeHooks
|
|
36
46
|
)
|
|
37
47
|
}
|
|
38
48
|
|
|
@@ -8,7 +8,8 @@ import {
|
|
|
8
8
|
|
|
9
9
|
export const encodeExecuteBatchCall = (
|
|
10
10
|
args: CallArgs[],
|
|
11
|
-
options: Omit<EncodeExecuteOptions, "callType"
|
|
11
|
+
options: Omit<EncodeExecuteOptions, "callType">,
|
|
12
|
+
includeHooks?: boolean
|
|
12
13
|
) => {
|
|
13
14
|
const calldata = encodeAbiParameters(
|
|
14
15
|
[
|
|
@@ -46,6 +47,7 @@ export const encodeExecuteBatchCall = (
|
|
|
46
47
|
{
|
|
47
48
|
callType: CALL_TYPE.BATCH,
|
|
48
49
|
execType: options.execType
|
|
49
|
-
}
|
|
50
|
+
},
|
|
51
|
+
includeHooks
|
|
50
52
|
)
|
|
51
53
|
}
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
type Hex,
|
|
3
|
+
concatHex,
|
|
4
|
+
encodeFunctionData,
|
|
5
|
+
getAbiItem,
|
|
6
|
+
toFunctionSelector,
|
|
7
|
+
toHex
|
|
8
|
+
} from "viem"
|
|
2
9
|
import { CALL_TYPE } from "../../../../constants.js"
|
|
3
10
|
import { getExecMode } from "../../../../utils.js"
|
|
4
11
|
import { KernelV3ExecuteAbi } from "../../abi/kernel_v_3_0_0/KernelAccountAbi.js"
|
|
@@ -16,7 +23,8 @@ type EncodeExecuteCallArgs<TOptions> =
|
|
|
16
23
|
|
|
17
24
|
export const encodeExecuteCall = <TOptions extends EncodeExecuteOptions>(
|
|
18
25
|
args: EncodeExecuteCallArgs<TOptions>,
|
|
19
|
-
options: TOptions
|
|
26
|
+
options: TOptions,
|
|
27
|
+
includeHooks = false
|
|
20
28
|
) => {
|
|
21
29
|
let calldata: Hex
|
|
22
30
|
if ("calldata" in args) {
|
|
@@ -30,6 +38,26 @@ export const encodeExecuteCall = <TOptions extends EncodeExecuteOptions>(
|
|
|
30
38
|
args.data
|
|
31
39
|
])
|
|
32
40
|
}
|
|
41
|
+
|
|
42
|
+
const executeUserOpSig = toFunctionSelector(
|
|
43
|
+
getAbiItem({ abi: KernelV3ExecuteAbi, name: "executeUserOp" })
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
// The calldata using hook plugin should be as follows:
|
|
47
|
+
// [0:4] - `executeUserOp` function signature
|
|
48
|
+
// [4:8] - `execute` function signature
|
|
49
|
+
// [8:] - `execute` function arguments
|
|
50
|
+
if (includeHooks) {
|
|
51
|
+
return concatHex([
|
|
52
|
+
executeUserOpSig,
|
|
53
|
+
encodeFunctionData({
|
|
54
|
+
abi: KernelV3ExecuteAbi,
|
|
55
|
+
functionName: "execute",
|
|
56
|
+
args: [getExecMode(options), calldata]
|
|
57
|
+
})
|
|
58
|
+
])
|
|
59
|
+
}
|
|
60
|
+
|
|
33
61
|
return encodeFunctionData({
|
|
34
62
|
abi: KernelV3ExecuteAbi,
|
|
35
63
|
functionName: "execute",
|
|
@@ -7,10 +7,15 @@ import {
|
|
|
7
7
|
|
|
8
8
|
export const encodeExecuteDelegateCall = (
|
|
9
9
|
args: DelegateCallArgs,
|
|
10
|
-
options: Omit<EncodeExecuteOptions, "callType"
|
|
10
|
+
options: Omit<EncodeExecuteOptions, "callType">,
|
|
11
|
+
includeHooks?: boolean
|
|
11
12
|
) => {
|
|
12
|
-
return encodeExecuteCall(
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
return encodeExecuteCall(
|
|
14
|
+
args,
|
|
15
|
+
{
|
|
16
|
+
callType: CALL_TYPE.DELEGATE_CALL,
|
|
17
|
+
execType: options.execType
|
|
18
|
+
},
|
|
19
|
+
includeHooks
|
|
20
|
+
)
|
|
16
21
|
}
|
|
@@ -7,10 +7,15 @@ import {
|
|
|
7
7
|
|
|
8
8
|
export const encodeExecuteSingleCall = (
|
|
9
9
|
args: CallArgs,
|
|
10
|
-
options: Omit<EncodeExecuteOptions, "callType"
|
|
10
|
+
options: Omit<EncodeExecuteOptions, "callType">,
|
|
11
|
+
includeHooks?: boolean
|
|
11
12
|
) => {
|
|
12
|
-
return encodeExecuteCall(
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
return encodeExecuteCall(
|
|
14
|
+
args,
|
|
15
|
+
{
|
|
16
|
+
callType: CALL_TYPE.SINGLE,
|
|
17
|
+
execType: options.execType
|
|
18
|
+
},
|
|
19
|
+
includeHooks
|
|
20
|
+
)
|
|
16
21
|
}
|
|
@@ -6,28 +6,33 @@ import {
|
|
|
6
6
|
zeroAddress
|
|
7
7
|
} from "viem"
|
|
8
8
|
import { CALL_TYPE } from "../../../../../constants.js"
|
|
9
|
-
import type {
|
|
9
|
+
import type {
|
|
10
|
+
Action,
|
|
11
|
+
KernelValidatorHook
|
|
12
|
+
} from "../../../../../types/kernel.js"
|
|
10
13
|
|
|
11
14
|
export const getEncodedPluginsData = async ({
|
|
12
15
|
enableSignature,
|
|
13
16
|
userOpSignature,
|
|
14
17
|
action,
|
|
15
|
-
enableData
|
|
18
|
+
enableData,
|
|
19
|
+
hook
|
|
16
20
|
}: {
|
|
17
21
|
enableSignature: Hex
|
|
18
22
|
userOpSignature: Hex
|
|
19
23
|
action: Action
|
|
20
24
|
enableData: Hex
|
|
25
|
+
hook?: KernelValidatorHook
|
|
21
26
|
}) => {
|
|
22
27
|
return concat([
|
|
23
|
-
zeroAddress, // hook address 20 bytes
|
|
28
|
+
hook?.getIdentifier() ?? zeroAddress, // hook address 20 bytes
|
|
24
29
|
encodeAbiParameters(
|
|
25
30
|
parseAbiParameters(
|
|
26
31
|
"bytes validatorData, bytes hookData, bytes selectorData, bytes enableSig, bytes userOpSig"
|
|
27
32
|
),
|
|
28
33
|
[
|
|
29
34
|
enableData,
|
|
30
|
-
"0x",
|
|
35
|
+
(await hook?.getEnableData()) ?? "0x",
|
|
31
36
|
concat([
|
|
32
37
|
action.selector,
|
|
33
38
|
action.address,
|
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
zeroAddress
|
|
13
13
|
} from "viem"
|
|
14
14
|
import { CALL_TYPE, VALIDATOR_TYPE } from "../../../../../constants.js"
|
|
15
|
+
import type { KernelValidatorHook } from "../../../../../types/kernel.js"
|
|
15
16
|
import type { Kernel2_0_plugins } from "../ep0_6/getPluginsEnableTypedData.js"
|
|
16
17
|
|
|
17
18
|
export const getPluginsEnableTypedData = async <
|
|
@@ -21,6 +22,7 @@ export const getPluginsEnableTypedData = async <
|
|
|
21
22
|
chainId,
|
|
22
23
|
kernelVersion,
|
|
23
24
|
action,
|
|
25
|
+
hook,
|
|
24
26
|
validator,
|
|
25
27
|
validatorNonce
|
|
26
28
|
}: {
|
|
@@ -28,6 +30,7 @@ export const getPluginsEnableTypedData = async <
|
|
|
28
30
|
chainId: number
|
|
29
31
|
kernelVersion: string
|
|
30
32
|
validatorNonce: number
|
|
33
|
+
hook?: KernelValidatorHook
|
|
31
34
|
} & Kernel2_0_plugins<entryPoint>): Promise<
|
|
32
35
|
Parameters<CustomSource["signTypedData"]>[0]
|
|
33
36
|
> => {
|
|
@@ -54,9 +57,9 @@ export const getPluginsEnableTypedData = async <
|
|
|
54
57
|
pad(validator.getIdentifier(), { size: 20, dir: "right" })
|
|
55
58
|
]),
|
|
56
59
|
nonce: validatorNonce,
|
|
57
|
-
hook: zeroAddress,
|
|
60
|
+
hook: hook?.getIdentifier() ?? zeroAddress,
|
|
58
61
|
validatorData: await validator.getEnableData(accountAddress),
|
|
59
|
-
hookData: "0x",
|
|
62
|
+
hookData: (await hook?.getEnableData(accountAddress)) ?? "0x",
|
|
60
63
|
selectorData: concat([
|
|
61
64
|
action.selector,
|
|
62
65
|
action.address,
|
|
@@ -51,6 +51,7 @@ export async function toKernelPluginManager<
|
|
|
51
51
|
{
|
|
52
52
|
sudo,
|
|
53
53
|
regular,
|
|
54
|
+
hook,
|
|
54
55
|
pluginEnableSignature,
|
|
55
56
|
validatorInitData,
|
|
56
57
|
action,
|
|
@@ -130,7 +131,8 @@ export async function toKernelPluginManager<
|
|
|
130
131
|
enableSignature,
|
|
131
132
|
userOpSignature,
|
|
132
133
|
action,
|
|
133
|
-
enableData: await regular.getEnableData(accountAddress)
|
|
134
|
+
enableData: await regular.getEnableData(accountAddress),
|
|
135
|
+
hook
|
|
134
136
|
})
|
|
135
137
|
} else if (sudo) {
|
|
136
138
|
return userOpSignature
|
|
@@ -190,6 +192,7 @@ export async function toKernelPluginManager<
|
|
|
190
192
|
chainId,
|
|
191
193
|
kernelVersion: version,
|
|
192
194
|
action,
|
|
195
|
+
hook,
|
|
193
196
|
validator: regular,
|
|
194
197
|
validatorNonce
|
|
195
198
|
})
|
|
@@ -238,6 +241,7 @@ export async function toKernelPluginManager<
|
|
|
238
241
|
return {
|
|
239
242
|
sudoValidator: sudo,
|
|
240
243
|
...activeValidator,
|
|
244
|
+
hook,
|
|
241
245
|
getIdentifier,
|
|
242
246
|
encodeModuleInstallCallData: async (accountAddress: Address) => {
|
|
243
247
|
if (!action) {
|
|
@@ -11,50 +11,70 @@ export const createFallbackKernelAccountClient = <
|
|
|
11
11
|
>(
|
|
12
12
|
clients: Array<
|
|
13
13
|
KernelAccountClient<TEntryPoint, TTransport, TChain, TSmartAccount>
|
|
14
|
-
|
|
14
|
+
>,
|
|
15
|
+
onError?: (error: Error, clientUrl: string) => Promise<void>
|
|
15
16
|
): KernelAccountClient<TEntryPoint, TTransport, TChain, TSmartAccount> => {
|
|
17
|
+
// Function to create a fallback method for a given property.
|
|
18
|
+
// This method will try each client in sequence until one succeeds or all fail.
|
|
19
|
+
function createFallbackMethod(prop: PropertyKey) {
|
|
20
|
+
// biome-ignore lint/suspicious/noExplicitAny: expected any
|
|
21
|
+
return async (...args: any[]) => {
|
|
22
|
+
for (let i = 0; i < clients.length; i++) {
|
|
23
|
+
try {
|
|
24
|
+
const method = Reflect.get(clients[i], prop)
|
|
25
|
+
if (typeof method === "function") {
|
|
26
|
+
return await method(...args)
|
|
27
|
+
}
|
|
28
|
+
} catch (error) {
|
|
29
|
+
console.error(
|
|
30
|
+
`Action ${String(prop)} failed with client ${
|
|
31
|
+
clients[i].transport.url
|
|
32
|
+
}, trying next if available.`
|
|
33
|
+
)
|
|
34
|
+
// Call the error handler if provided.
|
|
35
|
+
if (onError !== undefined) {
|
|
36
|
+
await onError(error as Error, clients[i].transport.url)
|
|
37
|
+
}
|
|
38
|
+
if (i === clients.length - 1) {
|
|
39
|
+
throw error
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
16
46
|
const proxyClient = new Proxy(clients[0], {
|
|
17
47
|
get(_target, prop, receiver) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
if (typeof method === "function") {
|
|
33
|
-
// Attempt to call the function on the current client
|
|
34
|
-
return await method(...args)
|
|
35
|
-
}
|
|
36
|
-
} catch (error) {
|
|
37
|
-
console.error(
|
|
38
|
-
`Action ${String(
|
|
39
|
-
prop
|
|
40
|
-
)} failed with client ${
|
|
41
|
-
client.transport.url
|
|
42
|
-
}, trying next if available.`,
|
|
43
|
-
error
|
|
44
|
-
)
|
|
45
|
-
if (i === clients.length - 1) {
|
|
46
|
-
throw error
|
|
47
|
-
}
|
|
48
|
-
}
|
|
48
|
+
if (prop === "extend") {
|
|
49
|
+
// biome-ignore lint/suspicious/noExplicitAny: expected any
|
|
50
|
+
return (fn: any) => {
|
|
51
|
+
const modifications = fn(proxyClient)
|
|
52
|
+
for (const [key, modification] of Object.entries(
|
|
53
|
+
modifications
|
|
54
|
+
)) {
|
|
55
|
+
if (typeof modification === "function") {
|
|
56
|
+
// biome-ignore lint/suspicious/noExplicitAny: expected any
|
|
57
|
+
;(proxyClient as any)[key] = async (
|
|
58
|
+
// biome-ignore lint/suspicious/noExplicitAny: expected any
|
|
59
|
+
...args: any[]
|
|
60
|
+
) => {
|
|
61
|
+
return modification(...args)
|
|
49
62
|
}
|
|
63
|
+
} else {
|
|
64
|
+
console.error(
|
|
65
|
+
`Expected a function for modification of ${key}, but received type ${typeof modification}`
|
|
66
|
+
)
|
|
50
67
|
}
|
|
51
68
|
}
|
|
52
|
-
|
|
53
|
-
return value
|
|
69
|
+
return proxyClient
|
|
54
70
|
}
|
|
55
71
|
}
|
|
56
|
-
|
|
57
|
-
|
|
72
|
+
|
|
73
|
+
const value = Reflect.get(_target, prop, receiver)
|
|
74
|
+
if (typeof value === "function") {
|
|
75
|
+
return createFallbackMethod(prop)
|
|
76
|
+
}
|
|
77
|
+
return value
|
|
58
78
|
}
|
|
59
79
|
})
|
|
60
80
|
|
package/index.ts
CHANGED
package/package.json
CHANGED
package/types/kernel.ts
CHANGED
|
@@ -143,6 +143,11 @@ export type KernelValidator<
|
|
|
143
143
|
getIdentifier: () => Hex
|
|
144
144
|
}
|
|
145
145
|
|
|
146
|
+
export type KernelValidatorHook = {
|
|
147
|
+
getEnableData(accountAddress?: Address): Promise<Hex>
|
|
148
|
+
getIdentifier: () => Hex
|
|
149
|
+
}
|
|
150
|
+
|
|
146
151
|
export type ValidatorInitData = {
|
|
147
152
|
validatorAddress: Address
|
|
148
153
|
enableData: Hex
|
|
@@ -152,6 +157,7 @@ export type ValidatorInitData = {
|
|
|
152
157
|
export type KernelPluginManager<entryPoint extends EntryPoint> =
|
|
153
158
|
KernelValidator<entryPoint> & {
|
|
154
159
|
sudoValidator?: KernelValidator<entryPoint>
|
|
160
|
+
hook?: KernelValidatorHook
|
|
155
161
|
getPluginEnableSignature(accountAddress: Address): Promise<Hex>
|
|
156
162
|
getValidatorInitData(): Promise<ValidatorInitData>
|
|
157
163
|
getAction(): Action
|
|
@@ -182,6 +188,7 @@ export type PluginInstallData<entryPoint extends EntryPoint> =
|
|
|
182
188
|
export type KernelPluginManagerParams<entryPoint extends EntryPoint> = {
|
|
183
189
|
sudo?: KernelValidator<entryPoint>
|
|
184
190
|
regular?: KernelValidator<entryPoint>
|
|
191
|
+
hook?: KernelValidatorHook
|
|
185
192
|
pluginEnableSignature?: Hex
|
|
186
193
|
validatorInitData?: ValidatorInitData
|
|
187
194
|
action?: Action
|