@zerodev/sdk 4.0.33 → 4.0.34

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.
Files changed (68) hide show
  1. package/dist/cjs/kernel-zerodev/abis/KernelAccountAbi.d.ts +4 -42
  2. package/dist/cjs/kernel-zerodev/abis/KernelAccountAbi.js +4 -53
  3. package/dist/cjs/kernel-zerodev/abis/KernelAccountAbi.js.map +1 -1
  4. package/dist/cjs/kernel-zerodev/account.d.ts +0 -3
  5. package/dist/cjs/kernel-zerodev/account.js +6 -47
  6. package/dist/cjs/kernel-zerodev/account.js.map +1 -1
  7. package/dist/cjs/kernel-zerodev/constants.d.ts +2 -2
  8. package/dist/cjs/kernel-zerodev/constants.js +2 -2
  9. package/dist/cjs/kernel-zerodev/constants.js.map +1 -1
  10. package/dist/cjs/kernel-zerodev/ethers-provider/account-signer.d.ts +1 -1
  11. package/dist/cjs/kernel-zerodev/ethers-provider/account-signer.js.map +1 -1
  12. package/dist/cjs/kernel-zerodev/middleware/paymaster.js +6 -19
  13. package/dist/cjs/kernel-zerodev/middleware/paymaster.js.map +1 -1
  14. package/dist/cjs/kernel-zerodev/paymaster/base.js +33 -36
  15. package/dist/cjs/kernel-zerodev/paymaster/base.js.map +1 -1
  16. package/dist/cjs/kernel-zerodev/paymaster/token-paymaster.d.ts +3 -4
  17. package/dist/cjs/kernel-zerodev/paymaster/token-paymaster.js +39 -48
  18. package/dist/cjs/kernel-zerodev/paymaster/token-paymaster.js.map +1 -1
  19. package/dist/cjs/kernel-zerodev/paymaster/verifying-paymaster.js +15 -7
  20. package/dist/cjs/kernel-zerodev/paymaster/verifying-paymaster.js.map +1 -1
  21. package/dist/cjs/kernel-zerodev/provider.js +2 -1
  22. package/dist/cjs/kernel-zerodev/provider.js.map +1 -1
  23. package/dist/esm/kernel-zerodev/abis/KernelAccountAbi.d.ts +4 -42
  24. package/dist/esm/kernel-zerodev/abis/KernelAccountAbi.js +4 -53
  25. package/dist/esm/kernel-zerodev/abis/KernelAccountAbi.js.map +1 -1
  26. package/dist/esm/kernel-zerodev/account.d.ts +0 -3
  27. package/dist/esm/kernel-zerodev/account.js +6 -47
  28. package/dist/esm/kernel-zerodev/account.js.map +1 -1
  29. package/dist/esm/kernel-zerodev/constants.d.ts +2 -2
  30. package/dist/esm/kernel-zerodev/constants.js +2 -2
  31. package/dist/esm/kernel-zerodev/constants.js.map +1 -1
  32. package/dist/esm/kernel-zerodev/ethers-provider/account-signer.d.ts +1 -1
  33. package/dist/esm/kernel-zerodev/ethers-provider/account-signer.js.map +1 -1
  34. package/dist/esm/kernel-zerodev/middleware/paymaster.js +6 -19
  35. package/dist/esm/kernel-zerodev/middleware/paymaster.js.map +1 -1
  36. package/dist/esm/kernel-zerodev/paymaster/base.js +33 -36
  37. package/dist/esm/kernel-zerodev/paymaster/base.js.map +1 -1
  38. package/dist/esm/kernel-zerodev/paymaster/token-paymaster.d.ts +3 -4
  39. package/dist/esm/kernel-zerodev/paymaster/token-paymaster.js +39 -47
  40. package/dist/esm/kernel-zerodev/paymaster/token-paymaster.js.map +1 -1
  41. package/dist/esm/kernel-zerodev/paymaster/verifying-paymaster.js +15 -7
  42. package/dist/esm/kernel-zerodev/paymaster/verifying-paymaster.js.map +1 -1
  43. package/dist/esm/kernel-zerodev/provider.js +2 -1
  44. package/dist/esm/kernel-zerodev/provider.js.map +1 -1
  45. package/dist/types/kernel-zerodev/abis/KernelAccountAbi.d.ts +4 -42
  46. package/dist/types/kernel-zerodev/abis/KernelAccountAbi.d.ts.map +1 -1
  47. package/dist/types/kernel-zerodev/account.d.ts +0 -3
  48. package/dist/types/kernel-zerodev/account.d.ts.map +1 -1
  49. package/dist/types/kernel-zerodev/constants.d.ts +2 -2
  50. package/dist/types/kernel-zerodev/constants.d.ts.map +1 -1
  51. package/dist/types/kernel-zerodev/ethers-provider/account-signer.d.ts +1 -1
  52. package/dist/types/kernel-zerodev/ethers-provider/account-signer.d.ts.map +1 -1
  53. package/dist/types/kernel-zerodev/middleware/paymaster.d.ts.map +1 -1
  54. package/dist/types/kernel-zerodev/paymaster/base.d.ts.map +1 -1
  55. package/dist/types/kernel-zerodev/paymaster/token-paymaster.d.ts +3 -4
  56. package/dist/types/kernel-zerodev/paymaster/token-paymaster.d.ts.map +1 -1
  57. package/dist/types/kernel-zerodev/paymaster/verifying-paymaster.d.ts.map +1 -1
  58. package/dist/types/kernel-zerodev/provider.d.ts.map +1 -1
  59. package/package.json +1 -1
  60. package/src/kernel-zerodev/abis/KernelAccountAbi.ts +4 -53
  61. package/src/kernel-zerodev/account.ts +10 -57
  62. package/src/kernel-zerodev/constants.ts +2 -3
  63. package/src/kernel-zerodev/ethers-provider/account-signer.ts +1 -1
  64. package/src/kernel-zerodev/middleware/paymaster.ts +9 -20
  65. package/src/kernel-zerodev/paymaster/base.ts +38 -44
  66. package/src/kernel-zerodev/paymaster/token-paymaster.ts +53 -74
  67. package/src/kernel-zerodev/paymaster/verifying-paymaster.ts +14 -7
  68. package/src/kernel-zerodev/provider.ts +2 -1
@@ -3,7 +3,6 @@ import {
3
3
  type BytesLike,
4
4
  type UserOperationCallData,
5
5
  type UserOperationStruct,
6
- type BatchUserOperationCallData,
7
6
  } from "@alchemy/aa-core";
8
7
  import axios from "axios";
9
8
  import {
@@ -15,11 +14,12 @@ import {
15
14
  } from "viem";
16
15
  import { ERC20Abi } from "../abis/ERC20Abi.js";
17
16
  import { KernelAccountAbi } from "../abis/KernelAccountAbi.js";
17
+ import { MultiSendAbi } from "../abis/MultiSendAbi.js";
18
18
  import {
19
19
  PAYMASTER_URL,
20
20
  ENTRYPOINT_ADDRESS,
21
- ERC20_APPROVAL_AMOUNT,
22
21
  MULTISEND_ADDR,
22
+ ERC20_APPROVAL_AMOUNT,
23
23
  } from "../constants.js";
24
24
  import {
25
25
  AccountNotConnected,
@@ -36,13 +36,7 @@ import {
36
36
  type PaymasterConfig,
37
37
  } from "./types.js";
38
38
  import { getChainId } from "../api/index.js";
39
- import { MultiSendAbi } from "../abis/MultiSendAbi.js";
40
39
 
41
- export function isBatchUserOperationCallData(
42
- data: any
43
- ): data is BatchUserOperationCallData {
44
- return data && Array.isArray(data);
45
- }
46
40
  export class TokenPaymaster extends Paymaster {
47
41
  constructor(
48
42
  provider: ZeroDevProvider,
@@ -74,12 +68,7 @@ export class TokenPaymaster extends Paymaster {
74
68
  async decodeMainCallFromCallData(
75
69
  kernelAddress: PromiseOrValue<string>,
76
70
  callData: PromiseOrValue<BytesLike>
77
- ): Promise<
78
- | UserOperationCallData
79
- | BatchUserOperationCallData
80
- | UserOperationCallDataWithDelegate
81
- | undefined
82
- > {
71
+ ): Promise<UserOperationCallDataWithDelegate | undefined> {
83
72
  let data: Hex = "0x";
84
73
  if (callData instanceof Promise) {
85
74
  const _data = await callData;
@@ -124,13 +113,6 @@ export class TokenPaymaster extends Paymaster {
124
113
  };
125
114
  }
126
115
  return mainCall;
127
- } else if (functionName === "executeBatch") {
128
- const [txs] = args;
129
- return txs.map((tx) => ({
130
- target: tx.to,
131
- value: tx.value ?? 0n,
132
- data: tx.data,
133
- }));
134
116
  }
135
117
  } catch (error) {
136
118
  return {
@@ -145,11 +127,9 @@ export class TokenPaymaster extends Paymaster {
145
127
  return;
146
128
  }
147
129
 
148
- async getERC20UserOp<
149
- T extends UserOperationCallData | BatchUserOperationCallData
150
- >(
130
+ async getERC20UserOp(
151
131
  struct: UserOperationStruct,
152
- mainCall: T,
132
+ mainCall: UserOperationCallDataWithDelegate,
153
133
  gasTokenAddress: Hex,
154
134
  paymasterAddress: Hex
155
135
  ): Promise<UserOperationStruct | undefined> {
@@ -166,17 +146,10 @@ export class TokenPaymaster extends Paymaster {
166
146
  if (!this.provider.account) {
167
147
  throw AccountNotConnected;
168
148
  }
169
-
170
- let calls: BatchUserOperationCallData;
171
-
172
- if (isBatchUserOperationCallData(mainCall)) {
173
- calls = [approveData, ...mainCall];
174
- } else {
175
- calls = [approveData, mainCall];
176
- }
177
- const erc20CallData = await this.provider.account.encodeBatchExecute(
178
- calls
179
- );
149
+ const erc20CallData = await this.provider.account.encodeBatchExecute([
150
+ approveData,
151
+ mainCall,
152
+ ]);
180
153
  return {
181
154
  ...struct,
182
155
  callData: erc20CallData,
@@ -203,46 +176,52 @@ export class TokenPaymaster extends Paymaster {
203
176
  paymasterProvider?: PaymasterAndBundlerProviders,
204
177
  shouldOverrideFee?: boolean
205
178
  ): Promise<UserOperationStruct | undefined> {
206
- const mainCall = await this.decodeMainCallFromCallData(
207
- struct.sender,
208
- struct.callData
209
- );
210
- if (!mainCall) {
211
- throw IncorrectCallDataForTokenPaymaster;
212
- }
213
- const chainId = await getChainId(this.provider.getProjectId());
214
- if (!chainId) {
215
- throw new Error("ChainId not found");
216
- }
217
- const gasTokenAddress = getGasTokenAddress(
218
- this.paymasterConfig.gasToken,
219
- chainId
220
- );
221
- let paymasterAddress = await this.getPaymasterAddress(paymasterProvider);
222
- if (
223
- gasTokenAddress !== undefined &&
224
- paymasterAddress !== undefined &&
225
- isAddress(paymasterAddress)
226
- ) {
227
- const erc20UserOp = await this.getERC20UserOp(
228
- struct,
229
- mainCall,
230
- gasTokenAddress,
231
- paymasterAddress
179
+ try {
180
+ const mainCall = await this.decodeMainCallFromCallData(
181
+ struct.sender,
182
+ struct.callData
232
183
  );
233
- if (!erc20UserOp) {
234
- return;
184
+ if (!mainCall) {
185
+ throw IncorrectCallDataForTokenPaymaster;
235
186
  }
236
- const paymasterResp = await this.signUserOp({
237
- userOp: struct,
238
- callData: struct.callData,
239
- gasTokenAddress,
240
- erc20UserOp,
241
- erc20CallData: erc20UserOp.callData,
242
- paymasterProvider,
243
- shouldOverrideFee,
244
- });
245
- return paymasterResp;
187
+ const chainId = await getChainId(this.provider.getProjectId());
188
+ if (!chainId) {
189
+ throw new Error("ChainId not found");
190
+ }
191
+ const gasTokenAddress = getGasTokenAddress(
192
+ this.paymasterConfig.gasToken,
193
+ chainId
194
+ );
195
+ let paymasterAddress = await this.getPaymasterAddress(paymasterProvider);
196
+ if (
197
+ gasTokenAddress !== undefined &&
198
+ paymasterAddress !== undefined &&
199
+ isAddress(paymasterAddress)
200
+ ) {
201
+ const erc20UserOp = await this.getERC20UserOp(
202
+ struct,
203
+ mainCall,
204
+ gasTokenAddress,
205
+ paymasterAddress
206
+ );
207
+ if (!erc20UserOp) {
208
+ return;
209
+ }
210
+ const paymasterResp = await this.signUserOp({
211
+ userOp: struct,
212
+ callData: struct.callData,
213
+ gasTokenAddress,
214
+ erc20UserOp,
215
+ erc20CallData: erc20UserOp.callData,
216
+ paymasterProvider,
217
+ shouldOverrideFee,
218
+ });
219
+ if (paymasterResp) {
220
+ return paymasterResp;
221
+ }
222
+ }
223
+ } catch (error) {
224
+ console.log(error);
246
225
  }
247
226
  return;
248
227
  }
@@ -19,12 +19,19 @@ export class VerifyingPaymaster extends Paymaster {
19
19
  paymasterProvider?: PaymasterAndBundlerProviders,
20
20
  shouldOverrideFee?: boolean
21
21
  ): Promise<UserOperationStruct | undefined> {
22
- const hexifiedUserOp = deepHexlify(await resolveProperties(struct));
23
- const paymasterResp = await this.signUserOp({
24
- userOp: hexifiedUserOp,
25
- paymasterProvider,
26
- shouldOverrideFee,
27
- });
28
- return paymasterResp;
22
+ try {
23
+ const hexifiedUserOp = deepHexlify(await resolveProperties(struct));
24
+ const paymasterResp = await this.signUserOp({
25
+ userOp: hexifiedUserOp,
26
+ paymasterProvider,
27
+ shouldOverrideFee,
28
+ });
29
+ if (paymasterResp) {
30
+ return paymasterResp;
31
+ }
32
+ } catch (error) {
33
+ console.log(error);
34
+ }
35
+ return;
29
36
  }
30
37
  }
@@ -298,7 +298,8 @@ export class ZeroDevProvider extends SmartAccountProvider<HttpTransport> {
298
298
  dummyPaymasterDataMiddleware: AccountMiddlewareFn = async (
299
299
  struct: UserOperationStruct
300
300
  ): Promise<UserOperationStruct> => {
301
- struct.paymasterAndData = "0x";
301
+ struct.paymasterAndData =
302
+ "0xfe7dbcab8aaee4eb67943c1e6be95b1d065985c6000000000000000000000000000000000000000000000000000001869aa31cf400000000000000000000000000000000000000000000000000000000000000007dfe2190f34af27b265bae608717cdc9368b471fc0c097ab7b4088f255b4961e57b039e7e571b15221081c5dce7bcb93459b27a3ab65d2f8a889f4a40b4022801b";
302
303
  return struct;
303
304
  };
304
305