@zerodev/sdk 5.2.16 → 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/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/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/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/index.ts +1 -0
- package/package.json +32 -10
- package/types/kernel.ts +7 -0
|
@@ -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) {
|
package/index.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zerodev/sdk",
|
|
3
|
-
"version": "5.2.
|
|
3
|
+
"version": "5.2.17",
|
|
4
4
|
"author": "ZeroDev",
|
|
5
5
|
"main": "./_cjs/index.js",
|
|
6
6
|
"module": "./_esm/index.js",
|
|
@@ -9,7 +9,13 @@
|
|
|
9
9
|
"type": "module",
|
|
10
10
|
"sideEffects": false,
|
|
11
11
|
"description": "A utility library for working with ERC-4337",
|
|
12
|
-
"keywords": [
|
|
12
|
+
"keywords": [
|
|
13
|
+
"ethereum",
|
|
14
|
+
"erc-4337",
|
|
15
|
+
"eip-4337",
|
|
16
|
+
"paymaster",
|
|
17
|
+
"bundler"
|
|
18
|
+
],
|
|
13
19
|
"license": "MIT",
|
|
14
20
|
"files": [
|
|
15
21
|
"_esm",
|
|
@@ -85,14 +91,30 @@
|
|
|
85
91
|
},
|
|
86
92
|
"typesVersions": {
|
|
87
93
|
"*": {
|
|
88
|
-
"accounts": [
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
"
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
"
|
|
95
|
-
|
|
94
|
+
"accounts": [
|
|
95
|
+
"./_types/accounts/index.d.ts"
|
|
96
|
+
],
|
|
97
|
+
"plugins": [
|
|
98
|
+
"./_types/plugins/index.d.ts"
|
|
99
|
+
],
|
|
100
|
+
"actions": [
|
|
101
|
+
"./_types/actions/index.d.ts"
|
|
102
|
+
],
|
|
103
|
+
"types": [
|
|
104
|
+
"./_types/types/index.d.ts"
|
|
105
|
+
],
|
|
106
|
+
"actions/kernel": [
|
|
107
|
+
"./_types/actions/kernel/index.d.ts"
|
|
108
|
+
],
|
|
109
|
+
"clients": [
|
|
110
|
+
"./_types/clients/index.d.ts"
|
|
111
|
+
],
|
|
112
|
+
"clients/kernel": [
|
|
113
|
+
"./_types/clients/kernel/index.d.ts"
|
|
114
|
+
],
|
|
115
|
+
"providers": [
|
|
116
|
+
"./_types/providers/index.d.ts"
|
|
117
|
+
]
|
|
96
118
|
}
|
|
97
119
|
},
|
|
98
120
|
"peerDependencies": {
|
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
|