permissionless 0.2.32 → 0.2.33

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # permissionless
2
2
 
3
+ ## 0.2.33
4
+
5
+ ### Patch Changes
6
+
7
+ - cdf7b2ba79f9ff50192a2084140dd13ff5118774: Added support for decode calls in prepareUserOperationForErc20Paymaster
8
+
3
9
  ## 0.2.32
4
10
 
5
11
  ### Patch Changes
@@ -45,6 +45,10 @@ const prepareUserOperationForErc20Paymaster = (pimlicoClient, { balanceOverride
45
45
  });
46
46
  }
47
47
  const { postOpGas, exchangeRate, paymaster: paymasterERC20Address } = quotes[0];
48
+ let calls = parameters.calls;
49
+ if (parameters.callData && account.decodeCalls) {
50
+ calls = await account.decodeCalls(parameters.callData);
51
+ }
48
52
  const callsWithDummyApproval = [
49
53
  {
50
54
  abi: viem_1.erc20Abi,
@@ -52,11 +56,8 @@ const prepareUserOperationForErc20Paymaster = (pimlicoClient, { balanceOverride
52
56
  args: [paymasterERC20Address, viem_1.maxUint256],
53
57
  to: paymasterContext.token
54
58
  },
55
- ...(parameters.calls ? parameters.calls : [])
59
+ ...(calls ? calls : [])
56
60
  ];
57
- if (parameters.callData) {
58
- throw new Error("parameter callData is not supported with prepareUserOperationForErc20Paymaster");
59
- }
60
61
  const allowanceSlot = _allowanceSlot ?? quotes[0].allowanceSlot;
61
62
  const balanceSlot = _balanceSlot ?? quotes[0].balanceSlot;
62
63
  const hasAllowanceSlot = allowanceSlot !== undefined;
@@ -129,7 +130,7 @@ const prepareUserOperationForErc20Paymaster = (pimlicoClient, { balanceOverride
129
130
  });
130
131
  const hasSufficientApproval = allowance >= maxCostInToken;
131
132
  const finalCalls = hasSufficientApproval
132
- ? parameters.calls
133
+ ? (calls ?? [])
133
134
  : [
134
135
  {
135
136
  abi: viem_1.erc20Abi,
@@ -137,7 +138,7 @@ const prepareUserOperationForErc20Paymaster = (pimlicoClient, { balanceOverride
137
138
  args: [paymasterERC20Address, maxCostInToken],
138
139
  to: paymasterContext.token
139
140
  },
140
- ...parameters.calls
141
+ ...(calls ?? [])
141
142
  ];
142
143
  userOperation.callData = await account.encodeCalls(finalCalls.map((call_) => {
143
144
  const call = call_;
@@ -1 +1 @@
1
- {"version":3,"file":"prepareUserOperationForErc20Paymaster.js","sourceRoot":"","sources":["../../../../experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prepareUserOperationForErc20Paymaster.js","sourceRoot":"","sources":["../../../../experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.ts"],"names":[],"mappings":";;;AAAA,+BAYa;AACb,kEAWiC;AACjC,0CAAwD;AACxD,0CAA2C;AAC3C,sCAAoD;AACpD,4DAA4D;AAC5D,wFAAiF;AACjF,oFAA6E;AAEtE,MAAM,qCAAqC,GAC9C,CACI,aAAqB,EACrB,EACI,eAAe,GAAG,KAAK,EACvB,WAAW,EAAE,YAAY,EACzB,aAAa,EAAE,cAAc,KAK7B,EAAE,EACR,EAAE,CACJ,KAAK,EAUD,MAAqD,EACrD,WAKC,EAGH,EAAE;IACA,MAAM,UAAU,GAAG,WAA6C,CAAA;IAChE,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAA;IAE/B,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;IACnD,MAAM,OAAO,GAAG,IAAA,oBAAY,EAAC,QAAQ,CAAC,CAAA;IAEtC,MAAM,aAAa,GAAG,MAAkC,CAAA;IAExD,MAAM,gBAAgB,GAAG,UAAU,CAAC,gBAAgB;QAChD,CAAC,CAAC,UAAU,CAAC,gBAAgB;QAC7B,CAAC,CAAC,aAAa,EAAE,gBAAgB,CAAA;IAErC,IACI,OAAO,gBAAgB,KAAK,QAAQ;QACpC,gBAAgB,KAAK,IAAI;QACzB,OAAO,IAAI,gBAAgB;QAC3B,OAAO,gBAAgB,CAAC,KAAK,KAAK,QAAQ,EAC5C,CAAC;QAKC,MAAM,KAAK,GAAG,IAAA,iBAAU,EAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;QAEhD,IAAI,OAA2B,CAAA;QAC/B,KAAK,UAAU,UAAU;YACrB,IAAI,OAAO;gBAAE,OAAO,OAAO,CAAA;YAC3B,IAAI,MAAM,CAAC,KAAK;gBAAE,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;YACxC,MAAM,QAAQ,GAAG,MAAM,IAAA,iBAAS,EAC5B,MAAM,EACN,oBAAW,EACX,YAAY,CACf,CAAC,EAAE,CAAC,CAAA;YACL,OAAO,GAAG,QAAQ,CAAA;YAClB,OAAO,OAAO,CAAA;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAA,iBAAS,EAC1B,aAAa,EACb,2BAAc,EACd,gBAAgB,CACnB,CAAC;YACE,MAAM,EAAE,CAAC,KAAK,CAAC;YACf,KAAK,EACD,aAAa,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK;YAC/D,iBAAiB,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO;SAChD,CAAC,CAAA;QAEF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,eAAQ,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,EAAE;gBAC9C,YAAY,EACR,oEAAoE;aAC3E,CAAC,CAAA;QACN,CAAC;QAED,MAAM,EACF,SAAS,EACT,YAAY,EACZ,SAAS,EAAE,qBAAqB,EACnC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QAEb,IAAI,KAAK,GAAG,UAAU,CAAC,KAAK,CAAA;QAE5B,IAAI,UAAU,CAAC,QAAQ,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YAC7C,KAAK,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;QAC1D,CAAC;QAED,MAAM,sBAAsB,GAAG;YAC3B;gBACI,GAAG,EAAE,eAAQ;gBACb,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,CAAC,qBAAqB,EAAE,iBAAU,CAAC;gBACzC,EAAE,EAAE,gBAAgB,CAAC,KAAK;aAC7B;YACD,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1B,CAAA;QAMD,MAAM,aAAa,GAAG,cAAc,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAA;QAC/D,MAAM,WAAW,GAAG,YAAY,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAA;QAEzD,MAAM,gBAAgB,GAAG,aAAa,KAAK,SAAS,CAAA;QACpD,MAAM,cAAc,GAAG,WAAW,KAAK,SAAS,CAAA;QAEhD,MAAM,OAAO,GAAG,gBAAgB,IAAI,cAAc,CAAA;QAElD,IAAI,CAAC,OAAO,IAAI,eAAe,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CACX,8CAA8C,KAAK,yDAAyD,CAC/G,CAAA;QACL,CAAC;QAED,MAAM,oBAAoB,GACtB,eAAe,IAAI,cAAc;YAC7B,CAAC,CAAC,IAAA,8CAAoB,EAAC;gBACjB,KAAK;gBACL,KAAK,EAAE,OAAO,CAAC,OAAO;gBACtB,IAAI,EAAE,WAAW;aACpB,CAAC,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,SAAS,CAAA;QAEnB,MAAM,sBAAsB,GACxB,eAAe,IAAI,gBAAgB;YAC/B,CAAC,CAAC,IAAA,kDAAsB,EAAC;gBACnB,KAAK;gBACL,KAAK,EAAE,OAAO,CAAC,OAAO;gBACtB,OAAO,EAAE,qBAAqB;gBAC9B,IAAI,EAAE,aAAa;aACtB,CAAC,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,SAAS,CAAA;QAEnB,UAAU,CAAC,aAAa;YACpB,eAAe;gBACf,oBAAoB;gBACpB,sBAAsB;gBAClB,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;oBACpC;wBACI,OAAO,EAAE,KAAK;wBACd,SAAS,EAAE;4BACP,GAAG,CAAC,sBAAsB,CAAC,SAAS,IAAI,EAAE,CAAC;4BAC3C,GAAG,CAAC,oBAAoB,CAAC,SAAS,IAAI,EAAE,CAAC;yBAC5C;qBACJ;iBACJ,CAAC;gBACJ,CAAC,CAAC,UAAU,CAAC,aAAa,CAAA;QAElC,MAAM,aAAa,GAAG,MAAM,IAAA,iBAAS,EACjC,MAAM,EACN,0CAAoB,EACpB,sBAAsB,CACzB,CAAC;YACE,GAAG,UAAU;YACb,SAAS,EAAE;gBACP,gBAAgB,EAAE,CACd,IAAgC,EACG,EAAE;oBACrC,MAAM,SAAS,GACX,UAAU,CAAC,SAAS,IAAI,aAAa,EAAE,SAAS,CAAA;oBAEpD,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;wBAChC,MAAM,EAAE,oBAAoB,EAAE,GAAG,SAAS,CAAA;wBAE1C,IAAI,oBAAoB,EAAE,CAAC;4BACvB,OAAO,oBAAoB,CAAC,IAAI,CAAC,CAAA;wBACrC,CAAC;oBACL,CAAC;oBAED,OAAO,IAAA,iBAAS,EACZ,aAAa,EACb,sCAAiB,EACjB,kBAAkB,CACrB,CAAC,IAAI,CAAC,CAAA;gBACX,CAAC;aACJ;YACD,KAAK,EAAE,sBAAsB;SACa,CAAC,CAAA;QAM/C,MAAM,YAAY,GAAG,aAAa,CAAC,YAAY,CAAA;QAE/C,MAAM,mBAAmB,GACrB,aAAa,CAAC,kBAAkB;YAChC,aAAa,CAAC,YAAY;YAC1B,aAAa,CAAC,oBAAoB;YAClC,CAAC,aAAa,CAAC,uBAAuB,IAAI,EAAE,CAAC;YAC7C,CAAC,aAAa,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAA;QAEvD,MAAM,oBAAoB,GAAG,mBAAmB,GAAG,YAAY,CAAA;QAG/D,MAAM,cAAc,GAChB,CAAC,CAAC,oBAAoB,GAAG,SAAS,GAAG,YAAY,CAAC;YAC9C,YAAY,CAAC;YACjB,MAAM,CAAC,IAAI,CAAC,CAAA;QAOhB,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAA;QAEnC,MAAM,SAAS,GAAG,MAAM,IAAA,iBAAS,EAC7B,YAAY,EACZ,sBAAY,EACZ,cAAc,CACjB,CAAC;YACE,GAAG,EAAE,eAAQ;YACb,YAAY,EAAE,WAAW;YACzB,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,qBAAqB,CAAC;YAC9C,OAAO,EAAE,KAAK;SACjB,CAAC,CAAA;QAEF,MAAM,qBAAqB,GAAG,SAAS,IAAI,cAAc,CAAA;QAEzD,MAAM,UAAU,GAAG,qBAAqB;YACpC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACf,CAAC,CAAC;gBACI;oBACI,GAAG,EAAE,eAAQ;oBACb,YAAY,EAAE,SAAS;oBACvB,IAAI,EAAE,CAAC,qBAAqB,EAAE,cAAc,CAAC;oBAC7C,EAAE,EAAE,gBAAgB,CAAC,KAAK;iBAC7B;gBACD,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;aACnB,CAAA;QAEP,aAAa,CAAC,QAAQ,GAAG,MAAM,OAAO,CAAC,WAAW,CAC9C,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACrB,MAAM,IAAI,GAAG,KASL,CAAA;YACR,IAAI,KAAK,IAAI,IAAI;gBACb,OAAO;oBACH,IAAI,EAAE,IAAA,yBAAkB,EAAC,IAAI,CAAC;oBAC9B,EAAE,EAAE,IAAI,CAAC,EAAE;oBACX,KAAK,EAAE,IAAI,CAAC,KAAK;iBACpB,CAAA;YACL,OAAO,IAAI,CAAA;QACf,CAAC,CAAC,CACL,CAAA;QACD,UAAU,CAAC,KAAK,GAAG,UAAU,CAAA;QAM7B,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,IAAI,aAAa,EAAE,SAAS,CAAA;QAClE,MAAM,EAAE,gBAAgB,EAAE,GAAG,CAAC,GAAG,EAAE;YAE/B,IAAI,SAAS,KAAK,IAAI;gBAClB,OAAO;oBACH,gBAAgB,EAAE,CAAC,UAAe,EAAE,EAAE,CAClC,IAAA,iBAAS,EACL,aAAa,EACb,sCAAiB,EACjB,kBAAkB,CACrB,CAAC,UAAU,CAAC;iBACpB,CAAA;YAGL,IACI,OAAO,SAAS,KAAK,QAAQ;gBAC7B,SAAS,CAAC,gBAAgB,EAC5B,CAAC;gBACC,MAAM,EAAE,gBAAgB,EAAE,GAAG,SAAS,CAAA;gBACtC,OAAO;oBACH,gBAAgB;iBACnB,CAAA;YACL,CAAC;YAED,MAAM,IAAI,KAAK,CACX,6DAA6D,CAChE,CAAA;QACL,CAAC,CAAC,EAAE,CAAA;QAMJ,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC;YACzC,OAAO,EAAE,MAAM,UAAU,EAAE;YAC3B,iBAAiB,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO;YAC7C,OAAO,EAAE,gBAAgB;YACzB,GAAI,aAA+B;SACtC,CAAC,CAAA;QAEF,OAAO;YACH,GAAG,aAAa;YAChB,GAAG,aAAa;SAMnB,CAAA;IACL,CAAC;IAED,OAAO,CAAC,MAAM,IAAA,iBAAS,EACnB,MAAM,EACN,0CAAoB,EACpB,sBAAsB,CACzB,CAAC,UAAU,CAAC,CAKZ,CAAA;AACL,CAAC,CAAA;AA9UQ,QAAA,qCAAqC,yCA8U7C"}
@@ -45,6 +45,10 @@ export const prepareUserOperationForErc20Paymaster = (pimlicoClient, { balanceOv
45
45
  });
46
46
  }
47
47
  const { postOpGas, exchangeRate, paymaster: paymasterERC20Address } = quotes[0];
48
+ let calls = parameters.calls;
49
+ if (parameters.callData && account.decodeCalls) {
50
+ calls = await account.decodeCalls(parameters.callData);
51
+ }
48
52
  const callsWithDummyApproval = [
49
53
  {
50
54
  abi: erc20Abi,
@@ -52,11 +56,8 @@ export const prepareUserOperationForErc20Paymaster = (pimlicoClient, { balanceOv
52
56
  args: [paymasterERC20Address, maxUint256], // dummy approval to ensure simulation passes
53
57
  to: paymasterContext.token
54
58
  },
55
- ...(parameters.calls ? parameters.calls : [])
59
+ ...(calls ? calls : [])
56
60
  ];
57
- if (parameters.callData) {
58
- throw new Error("parameter callData is not supported with prepareUserOperationForErc20Paymaster");
59
- }
60
61
  ////////////////////////////////////////////////////////////////////////////////
61
62
  // Call prepareUserOperation
62
63
  ////////////////////////////////////////////////////////////////////////////////
@@ -140,7 +141,7 @@ export const prepareUserOperationForErc20Paymaster = (pimlicoClient, { balanceOv
140
141
  });
141
142
  const hasSufficientApproval = allowance >= maxCostInToken;
142
143
  const finalCalls = hasSufficientApproval
143
- ? parameters.calls
144
+ ? (calls ?? [])
144
145
  : [
145
146
  {
146
147
  abi: erc20Abi,
@@ -148,7 +149,7 @@ export const prepareUserOperationForErc20Paymaster = (pimlicoClient, { balanceOv
148
149
  args: [paymasterERC20Address, maxCostInToken],
149
150
  to: paymasterContext.token
150
151
  },
151
- ...parameters.calls
152
+ ...(calls ?? [])
152
153
  ];
153
154
  userOperation.callData = await account.encodeCalls(finalCalls.map((call_) => {
154
155
  const call = call_;
@@ -1 +1 @@
1
- {"version":3,"file":"prepareUserOperationForErc20Paymaster.js","sourceRoot":"","sources":["../../../../experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prepareUserOperationForErc20Paymaster.js","sourceRoot":"","sources":["../../../../experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.ts"],"names":[],"mappings":"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"}
@@ -284,5 +284,263 @@ describe.each(getCoreSmartAccounts())(
284
284
  expect(FINAL_ETH_BALANCE).toEqual(INTIAL_ETH_BALANCE) // There should be no ETH balance change
285
285
  }
286
286
  )
287
+
288
+ testWithRpc.skipIf(!supportsEntryPointV06)(
289
+ "prepareUserOperationForErc20Paymaster_v06",
290
+ async ({ rpc }) => {
291
+ const { anvilRpc } = rpc
292
+
293
+ const account = (
294
+ await getSmartAccountClient({
295
+ entryPoint: {
296
+ version: "0.6"
297
+ },
298
+ ...rpc
299
+ })
300
+ ).account
301
+
302
+ const pimlicoClient = createPimlicoClient({
303
+ transport: http(rpc.paymasterRpc),
304
+ entryPoint: {
305
+ address: entryPoint06Address,
306
+ version: "0.6"
307
+ }
308
+ })
309
+
310
+ const publicClient = getPublicClient(anvilRpc)
311
+
312
+ const smartAccountClient = createSmartAccountClient({
313
+ // @ts-ignore
314
+ client: getPublicClient(anvilRpc),
315
+ account,
316
+ paymaster: pimlicoClient,
317
+ chain: foundry,
318
+ userOperation: {
319
+ prepareUserOperation:
320
+ prepareUserOperationForErc20Paymaster(pimlicoClient)
321
+ },
322
+ bundlerTransport: http(rpc.altoRpc)
323
+ })
324
+
325
+ const INITIAL_TOKEN_BALANCE = parseEther("100")
326
+ const INTIAL_ETH_BALANCE = await publicClient.getBalance({
327
+ address: smartAccountClient.account.address
328
+ })
329
+
330
+ sudoMintTokens({
331
+ amount: INITIAL_TOKEN_BALANCE,
332
+ to: smartAccountClient.account.address,
333
+ anvilRpc
334
+ })
335
+
336
+ const opHash = await smartAccountClient.sendUserOperation({
337
+ callData: await smartAccountClient.account.encodeCalls([
338
+ {
339
+ to: zeroAddress,
340
+ data: "0x",
341
+ value: 0n
342
+ }
343
+ ]),
344
+ paymasterContext: {
345
+ token: ERC20_ADDRESS
346
+ }
347
+ })
348
+
349
+ const receipt =
350
+ await smartAccountClient.waitForUserOperationReceipt({
351
+ hash: opHash
352
+ })
353
+
354
+ expect(receipt).toBeTruthy()
355
+ expect(receipt).toBeTruthy()
356
+
357
+ if (name !== "Kernel 0.2.1") {
358
+ expect(receipt.success).toBeTruthy()
359
+ const FINAL_TOKEN_BALANCE = await tokenBalanceOf(
360
+ smartAccountClient.account.address,
361
+ rpc.anvilRpc
362
+ )
363
+ const FINAL_ETH_BALANCE = await publicClient.getBalance({
364
+ address: smartAccountClient.account.address
365
+ })
366
+
367
+ expect(FINAL_TOKEN_BALANCE).toBeLessThan(
368
+ INITIAL_TOKEN_BALANCE
369
+ ) // Token balance should be deducted
370
+ expect(FINAL_ETH_BALANCE).toEqual(INTIAL_ETH_BALANCE) // There should be no ETH balance change
371
+ }
372
+ }
373
+ )
374
+
375
+ testWithRpc.skipIf(!supportsEntryPointV07)(
376
+ "prepareUserOperationForErc20Paymaster_v07",
377
+ async ({ rpc }) => {
378
+ const { anvilRpc } = rpc
379
+
380
+ const account = (
381
+ await getSmartAccountClient({
382
+ entryPoint: {
383
+ version: "0.7"
384
+ },
385
+ ...rpc
386
+ })
387
+ ).account
388
+
389
+ const publicClient = getPublicClient(anvilRpc)
390
+
391
+ const pimlicoClient = createPimlicoClient({
392
+ transport: http(rpc.paymasterRpc),
393
+ entryPoint: {
394
+ address: entryPoint07Address,
395
+ version: "0.7"
396
+ }
397
+ })
398
+
399
+ const smartAccountClient = createSmartAccountClient({
400
+ // @ts-ignore
401
+ client: getPublicClient(anvilRpc),
402
+ account,
403
+ paymaster: pimlicoClient,
404
+ chain: foundry,
405
+ userOperation: {
406
+ prepareUserOperation:
407
+ prepareUserOperationForErc20Paymaster(pimlicoClient)
408
+ },
409
+ bundlerTransport: http(rpc.altoRpc)
410
+ })
411
+
412
+ const INITIAL_TOKEN_BALANCE = parseEther("100")
413
+ const INTIAL_ETH_BALANCE = await publicClient.getBalance({
414
+ address: smartAccountClient.account.address
415
+ })
416
+
417
+ sudoMintTokens({
418
+ amount: INITIAL_TOKEN_BALANCE,
419
+ to: smartAccountClient.account.address,
420
+ anvilRpc
421
+ })
422
+
423
+ const opHash = await smartAccountClient.sendUserOperation({
424
+ callData: await smartAccountClient.account.encodeCalls([
425
+ {
426
+ to: zeroAddress,
427
+ data: "0x",
428
+ value: 0n
429
+ }
430
+ ]),
431
+ paymasterContext: {
432
+ token: ERC20_ADDRESS
433
+ }
434
+ })
435
+
436
+ const receipt =
437
+ await smartAccountClient.waitForUserOperationReceipt({
438
+ hash: opHash
439
+ })
440
+
441
+ expect(receipt).toBeTruthy()
442
+ expect(receipt).toBeTruthy()
443
+ expect(receipt.success).toBeTruthy()
444
+
445
+ const FINAL_TOKEN_BALANCE = await tokenBalanceOf(
446
+ smartAccountClient.account.address,
447
+ rpc.anvilRpc
448
+ )
449
+ const FINAL_ETH_BALANCE = await publicClient.getBalance({
450
+ address: smartAccountClient.account.address
451
+ })
452
+
453
+ expect(FINAL_TOKEN_BALANCE).toBeLessThan(INITIAL_TOKEN_BALANCE) // Token balance should be deducted
454
+ expect(FINAL_ETH_BALANCE).toEqual(INTIAL_ETH_BALANCE) // There should be no ETH balance change
455
+ }
456
+ )
457
+
458
+ testWithRpc.skipIf(!supportsEntryPointV07)(
459
+ "prepareUserOperationForErc20Paymaster_v07 (balanceOverride enabled)",
460
+ async ({ rpc }) => {
461
+ const { anvilRpc } = rpc
462
+
463
+ const account = (
464
+ await getSmartAccountClient({
465
+ entryPoint: {
466
+ version: "0.7"
467
+ },
468
+ ...rpc
469
+ })
470
+ ).account
471
+
472
+ const publicClient = getPublicClient(anvilRpc)
473
+
474
+ const pimlicoClient = createPimlicoClient({
475
+ transport: http(rpc.paymasterRpc),
476
+ entryPoint: {
477
+ address: entryPoint07Address,
478
+ version: "0.7"
479
+ }
480
+ })
481
+
482
+ const smartAccountClient = createSmartAccountClient({
483
+ // @ts-ignore
484
+ client: getPublicClient(anvilRpc),
485
+ account,
486
+ paymaster: pimlicoClient,
487
+ chain: foundry,
488
+ userOperation: {
489
+ prepareUserOperation:
490
+ prepareUserOperationForErc20Paymaster(
491
+ pimlicoClient,
492
+ {
493
+ balanceOverride: true
494
+ }
495
+ )
496
+ },
497
+ bundlerTransport: http(rpc.altoRpc)
498
+ })
499
+
500
+ const INITIAL_TOKEN_BALANCE = parseEther("100")
501
+ const INTIAL_ETH_BALANCE = await publicClient.getBalance({
502
+ address: smartAccountClient.account.address
503
+ })
504
+
505
+ sudoMintTokens({
506
+ amount: INITIAL_TOKEN_BALANCE,
507
+ to: smartAccountClient.account.address,
508
+ anvilRpc
509
+ })
510
+
511
+ const opHash = await smartAccountClient.sendUserOperation({
512
+ callData: await smartAccountClient.account.encodeCalls([
513
+ {
514
+ to: zeroAddress,
515
+ data: "0x",
516
+ value: 0n
517
+ }
518
+ ]),
519
+ paymasterContext: {
520
+ token: ERC20_ADDRESS
521
+ }
522
+ })
523
+
524
+ const receipt =
525
+ await smartAccountClient.waitForUserOperationReceipt({
526
+ hash: opHash
527
+ })
528
+
529
+ expect(receipt).toBeTruthy()
530
+ expect(receipt).toBeTruthy()
531
+ expect(receipt.success).toBeTruthy()
532
+
533
+ const FINAL_TOKEN_BALANCE = await tokenBalanceOf(
534
+ smartAccountClient.account.address,
535
+ rpc.anvilRpc
536
+ )
537
+ const FINAL_ETH_BALANCE = await publicClient.getBalance({
538
+ address: smartAccountClient.account.address
539
+ })
540
+
541
+ expect(FINAL_TOKEN_BALANCE).toBeLessThan(INITIAL_TOKEN_BALANCE) // Token balance should be deducted
542
+ expect(FINAL_ETH_BALANCE).toEqual(INTIAL_ETH_BALANCE) // There should be no ETH balance change
543
+ }
544
+ )
287
545
  }
288
546
  )
@@ -124,6 +124,12 @@ export const prepareUserOperationForErc20Paymaster =
124
124
  paymaster: paymasterERC20Address
125
125
  } = quotes[0]
126
126
 
127
+ let calls = parameters.calls
128
+
129
+ if (parameters.callData && account.decodeCalls) {
130
+ calls = await account.decodeCalls(parameters.callData)
131
+ }
132
+
127
133
  const callsWithDummyApproval = [
128
134
  {
129
135
  abi: erc20Abi,
@@ -131,15 +137,9 @@ export const prepareUserOperationForErc20Paymaster =
131
137
  args: [paymasterERC20Address, maxUint256], // dummy approval to ensure simulation passes
132
138
  to: paymasterContext.token
133
139
  },
134
- ...(parameters.calls ? parameters.calls : [])
140
+ ...(calls ? calls : [])
135
141
  ]
136
142
 
137
- if (parameters.callData) {
138
- throw new Error(
139
- "parameter callData is not supported with prepareUserOperationForErc20Paymaster"
140
- )
141
- }
142
-
143
143
  ////////////////////////////////////////////////////////////////////////////////
144
144
  // Call prepareUserOperation
145
145
  ////////////////////////////////////////////////////////////////////////////////
@@ -265,7 +265,7 @@ export const prepareUserOperationForErc20Paymaster =
265
265
  const hasSufficientApproval = allowance >= maxCostInToken
266
266
 
267
267
  const finalCalls = hasSufficientApproval
268
- ? parameters.calls
268
+ ? (calls ?? [])
269
269
  : [
270
270
  {
271
271
  abi: erc20Abi,
@@ -273,7 +273,7 @@ export const prepareUserOperationForErc20Paymaster =
273
273
  args: [paymasterERC20Address, maxCostInToken],
274
274
  to: paymasterContext.token
275
275
  },
276
- ...parameters.calls
276
+ ...(calls ?? [])
277
277
  ]
278
278
 
279
279
  userOperation.callData = await account.encodeCalls(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "permissionless",
3
- "version": "0.2.32",
3
+ "version": "0.2.33",
4
4
  "author": "Pimlico",
5
5
  "homepage": "https://docs.pimlico.io/permissionless",
6
6
  "repository": "github:pimlicolabs/permissionless.js",