permissionless 0.2.10 → 0.2.12

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 (45) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/_cjs/actions/pimlico/getTokenQuotes.js +6 -0
  3. package/_cjs/actions/pimlico/getTokenQuotes.js.map +1 -1
  4. package/_cjs/experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.js +42 -1
  5. package/_cjs/experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.js.map +1 -1
  6. package/_cjs/utils/erc20AllowanceOverride.js +36 -0
  7. package/_cjs/utils/erc20AllowanceOverride.js.map +1 -0
  8. package/_cjs/utils/erc20BalanceOverride.js +26 -0
  9. package/_cjs/utils/erc20BalanceOverride.js.map +1 -0
  10. package/_cjs/utils/index.js +5 -1
  11. package/_cjs/utils/index.js.map +1 -1
  12. package/_esm/actions/pimlico/getTokenQuotes.js +6 -0
  13. package/_esm/actions/pimlico/getTokenQuotes.js.map +1 -1
  14. package/_esm/experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.js +43 -2
  15. package/_esm/experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.js.map +1 -1
  16. package/_esm/utils/erc20AllowanceOverride.js +33 -0
  17. package/_esm/utils/erc20AllowanceOverride.js.map +1 -0
  18. package/_esm/utils/erc20BalanceOverride.js +23 -0
  19. package/_esm/utils/erc20BalanceOverride.js.map +1 -0
  20. package/_esm/utils/index.js +3 -1
  21. package/_esm/utils/index.js.map +1 -1
  22. package/_types/actions/pimlico/getTokenQuotes.d.ts +2 -0
  23. package/_types/actions/pimlico/getTokenQuotes.d.ts.map +1 -1
  24. package/_types/clients/decorators/smartAccount.d.ts +5 -0
  25. package/_types/clients/decorators/smartAccount.d.ts.map +1 -1
  26. package/_types/experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.d.ts +5 -1
  27. package/_types/experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.d.ts.map +1 -1
  28. package/_types/types/pimlico.d.ts +2 -0
  29. package/_types/types/pimlico.d.ts.map +1 -1
  30. package/_types/utils/erc20AllowanceOverride.d.ts +10 -0
  31. package/_types/utils/erc20AllowanceOverride.d.ts.map +1 -0
  32. package/_types/utils/erc20BalanceOverride.d.ts +9 -0
  33. package/_types/utils/erc20BalanceOverride.d.ts.map +1 -0
  34. package/_types/utils/index.d.ts +3 -1
  35. package/_types/utils/index.d.ts.map +1 -1
  36. package/actions/pimlico/getTokenQuotes.ts +8 -0
  37. package/experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.test.ts +88 -0
  38. package/experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.ts +68 -1
  39. package/package.json +2 -2
  40. package/types/pimlico.ts +2 -0
  41. package/utils/erc20AllowanceOverride.test.ts +59 -0
  42. package/utils/erc20AllowanceOverride.ts +66 -0
  43. package/utils/erc20BalanceOverride.test.ts +57 -0
  44. package/utils/erc20BalanceOverride.ts +49 -0
  45. package/utils/index.ts +13 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # permissionless
2
2
 
3
+ ## 0.2.12
4
+
5
+ ### Patch Changes
6
+
7
+ - 6a7b673f66565b5d0d6d2fe1fe17e7758975a624: Fixed when slot overrides returned from pimlico_getTokenQuotes are zero
8
+
9
+ ## 0.2.11
10
+
11
+ ### Patch Changes
12
+
13
+ - bfc278b5cc3d8e6536d84005cc94e55e3c99eb9d: Added utils to create erc20 state overrides
14
+ - bfc278b5cc3d8e6536d84005cc94e55e3c99eb9d: Added balanceOverride to prepareUserOperationForErc20Paymaster
15
+
3
16
  ## 0.2.10
4
17
 
5
18
  ### Patch Changes
@@ -17,6 +17,12 @@ const getTokenQuotes = async (client, args) => {
17
17
  });
18
18
  return res.quotes.map((quote) => ({
19
19
  ...quote,
20
+ balanceSlot: quote.balanceSlot
21
+ ? (0, viem_1.hexToBigInt)(quote.balanceSlot)
22
+ : undefined,
23
+ allowanceSlot: quote.allowanceSlot
24
+ ? (0, viem_1.hexToBigInt)(quote.allowanceSlot)
25
+ : undefined,
20
26
  postOpGas: (0, viem_1.hexToBigInt)(quote.postOpGas),
21
27
  exchangeRate: (0, viem_1.hexToBigInt)(quote.exchangeRate),
22
28
  exchangeRateNativeToUsd: (0, viem_1.hexToBigInt)(quote.exchangeRateNativeToUsd)
@@ -1 +1 @@
1
- {"version":3,"file":"getTokenQuotes.js","sourceRoot":"","sources":["../../../actions/pimlico/getTokenQuotes.ts"],"names":[],"mappings":";;;AAAA,+BAUa;AA6BN,MAAM,cAAc,GAAG,KAAK,EAK/B,MAAyE,EACzE,IAAsD,EACrB,EAAE;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,CAAA;IAElD,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,MAAM,IAAI,yBAAkB,EAAE,CAAA;IAClC,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;QAC7B,MAAM,EAAE,wBAAwB;QAChC,MAAM,EAAE;YACJ,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;YACvB,IAAI,CAAC,iBAAiB;YACtB,IAAA,kBAAW,EAAC,OAAO,CAAC;SACvB;KACJ,CAAC,CAAA;IAEF,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC9B,GAAG,KAAK;QACR,SAAS,EAAE,IAAA,kBAAW,EAAC,KAAK,CAAC,SAAS,CAAC;QACvC,YAAY,EAAE,IAAA,kBAAW,EAAC,KAAK,CAAC,YAAY,CAAC;QAC7C,uBAAuB,EAAE,IAAA,kBAAW,EAAC,KAAK,CAAC,uBAAuB,CAAC;KACtE,CAAC,CAAC,CAAA;AACP,CAAC,CAAA;AA7BY,QAAA,cAAc,kBA6B1B"}
1
+ {"version":3,"file":"getTokenQuotes.js","sourceRoot":"","sources":["../../../actions/pimlico/getTokenQuotes.ts"],"names":[],"mappings":";;;AAAA,+BAUa;AA+BN,MAAM,cAAc,GAAG,KAAK,EAK/B,MAAyE,EACzE,IAAsD,EACrB,EAAE;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,CAAA;IAElD,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,MAAM,IAAI,yBAAkB,EAAE,CAAA;IAClC,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;QAC7B,MAAM,EAAE,wBAAwB;QAChC,MAAM,EAAE;YACJ,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;YACvB,IAAI,CAAC,iBAAiB;YACtB,IAAA,kBAAW,EAAC,OAAO,CAAC;SACvB;KACJ,CAAC,CAAA;IAEF,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC9B,GAAG,KAAK;QACR,WAAW,EAAE,KAAK,CAAC,WAAW;YAC1B,CAAC,CAAC,IAAA,kBAAW,EAAC,KAAK,CAAC,WAAW,CAAC;YAChC,CAAC,CAAC,SAAS;QACf,aAAa,EAAE,KAAK,CAAC,aAAa;YAC9B,CAAC,CAAC,IAAA,kBAAW,EAAC,KAAK,CAAC,aAAa,CAAC;YAClC,CAAC,CAAC,SAAS;QACf,SAAS,EAAE,IAAA,kBAAW,EAAC,KAAK,CAAC,SAAS,CAAC;QACvC,YAAY,EAAE,IAAA,kBAAW,EAAC,KAAK,CAAC,YAAY,CAAC;QAC7C,uBAAuB,EAAE,IAAA,kBAAW,EAAC,KAAK,CAAC,uBAAuB,CAAC;KACtE,CAAC,CAAC,CAAA;AACP,CAAC,CAAA;AAnCY,QAAA,cAAc,kBAmC1B"}
@@ -7,7 +7,8 @@ const actions_1 = require("viem/actions");
7
7
  const actions_2 = require("viem/actions");
8
8
  const utils_1 = require("viem/utils");
9
9
  const pimlico_1 = require("../../../actions/pimlico.js");
10
- const prepareUserOperationForErc20Paymaster = (pimlicoClient) => async (client, parameters_) => {
10
+ const utils_2 = require("../../../utils/index.js");
11
+ const prepareUserOperationForErc20Paymaster = (pimlicoClient, { balanceOverride = false, balanceSlot: _balanceSlot, allowanceSlot: _allowanceSlot } = {}) => async (client, parameters_) => {
11
12
  const parameters = parameters_;
12
13
  const account_ = client.account;
13
14
  if (!account_)
@@ -37,6 +38,11 @@ const prepareUserOperationForErc20Paymaster = (pimlicoClient) => async (client,
37
38
  chain: pimlicoClient.chain ?? client.chain ?? account.client.chain,
38
39
  entryPointAddress: account.entryPoint.address
39
40
  });
41
+ if (quotes.length === 0) {
42
+ throw new viem_1.RpcError(new Error("Quotes not found"), {
43
+ shortMessage: "client didn't return token quotes, check if the token is supported"
44
+ });
45
+ }
40
46
  const { postOpGas, exchangeRate, paymaster: paymasterERC20Address } = quotes[0];
41
47
  const callsWithDummyApproval = [
42
48
  {
@@ -50,6 +56,41 @@ const prepareUserOperationForErc20Paymaster = (pimlicoClient) => async (client,
50
56
  if (parameters.callData) {
51
57
  throw new Error("parameter callData is not supported with prepareUserOperationForErc20Paymaster");
52
58
  }
59
+ const allowanceSlot = _allowanceSlot ?? quotes[0].allowanceSlot;
60
+ const balanceSlot = _balanceSlot ?? quotes[0].balanceSlot;
61
+ const hasSlot = allowanceSlot !== undefined && balanceSlot !== undefined;
62
+ if (!hasSlot && balanceOverride) {
63
+ throw new Error(`balanceOverride is not supported for token ${token}, provide custom slot for balance & allowance overrides`);
64
+ }
65
+ const balanceStateOverride = balanceOverride && balanceSlot
66
+ ? (0, utils_2.erc20BalanceOverride)({
67
+ token,
68
+ owner: account.address,
69
+ slot: balanceSlot
70
+ })[0]
71
+ : undefined;
72
+ const allowanceStateOverride = balanceOverride && allowanceSlot
73
+ ? (0, utils_2.erc20AllowanceOverride)({
74
+ token,
75
+ owner: account.address,
76
+ spender: paymasterERC20Address,
77
+ slot: allowanceSlot
78
+ })[0]
79
+ : undefined;
80
+ parameters.stateOverride =
81
+ balanceOverride &&
82
+ balanceStateOverride &&
83
+ allowanceStateOverride
84
+ ? (parameters.stateOverride ?? []).concat([
85
+ {
86
+ address: token,
87
+ stateDiff: [
88
+ ...(allowanceStateOverride.stateDiff ?? []),
89
+ ...(balanceStateOverride.stateDiff ?? [])
90
+ ]
91
+ }
92
+ ])
93
+ : parameters.stateOverride;
53
94
  const userOperation = await (0, utils_1.getAction)(client, account_abstraction_1.prepareUserOperation, "prepareUserOperation")({
54
95
  ...parameters,
55
96
  calls: callsWithDummyApproval
@@ -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,+BAWa;AACb,kEAUiC;AACjC,0CAAwD;AACxD,0CAA2C;AAC3C,sCAAoD;AACpD,sDAAyD;AACzD,0CAA6E;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,wBAAc,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,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,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;SAChD,CAAA;QAED,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CACX,gFAAgF,CACnF,CAAA;QACL,CAAC;QAOD,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,OAAO,GACT,aAAa,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS,CAAA;QAE5D,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,WAAW;YAC1B,CAAC,CAAC,IAAA,4BAAoB,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,aAAa;YAC5B,CAAC,CAAC,IAAA,8BAAsB,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,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,UAAU,CAAC,KAAK;YAClB,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,UAAU,CAAC,KAAK;aACtB,CAAA;QAEP,aAAa,CAAC,QAAQ,GAAG,MAAM,OAAO,CAAC,WAAW,CAC9C,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACrB,MAAM,IAAI,GAAG,KAKL,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;iBACC,CAAA;YAC1B,OAAO,IAAyB,CAAA;QACpC,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;AAnTQ,QAAA,qCAAqC,yCAmT7C"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.erc20AllowanceOverride = erc20AllowanceOverride;
4
+ const viem_1 = require("viem");
5
+ function erc20AllowanceOverride({ token, owner, spender, slot, amount = BigInt("0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF") }) {
6
+ const smartAccountErc20AllowanceSlot = (0, viem_1.keccak256)((0, viem_1.encodeAbiParameters)([
7
+ {
8
+ type: "address"
9
+ },
10
+ {
11
+ type: "bytes32"
12
+ }
13
+ ], [
14
+ spender,
15
+ (0, viem_1.keccak256)((0, viem_1.encodeAbiParameters)([
16
+ {
17
+ type: "address"
18
+ },
19
+ {
20
+ type: "uint256"
21
+ }
22
+ ], [owner, BigInt(slot)]))
23
+ ]));
24
+ return [
25
+ {
26
+ address: token,
27
+ stateDiff: [
28
+ {
29
+ slot: smartAccountErc20AllowanceSlot,
30
+ value: (0, viem_1.toHex)(amount)
31
+ }
32
+ ]
33
+ }
34
+ ];
35
+ }
36
+ //# sourceMappingURL=erc20AllowanceOverride.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erc20AllowanceOverride.js","sourceRoot":"","sources":["../../utils/erc20AllowanceOverride.ts"],"names":[],"mappings":";;AAgBA,wDAiDC;AAjED,+BAMa;AAUb,SAAgB,sBAAsB,CAAC,EACnC,KAAK,EACL,KAAK,EACL,OAAO,EACP,IAAI,EACJ,MAAM,GAAG,MAAM,CACX,oEAAoE,CACvE,EAC8B;IAC/B,MAAM,8BAA8B,GAAG,IAAA,gBAAS,EAC5C,IAAA,0BAAmB,EACf;QACI;YACI,IAAI,EAAE,SAAS;SAClB;QACD;YACI,IAAI,EAAE,SAAS;SAClB;KACJ,EACD;QACI,OAAO;QACP,IAAA,gBAAS,EACL,IAAA,0BAAmB,EACf;YACI;gBACI,IAAI,EAAE,SAAS;aAClB;YACD;gBACI,IAAI,EAAE,SAAS;aAClB;SACJ,EACD,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CACxB,CACJ;KACJ,CACJ,CACJ,CAAA;IAED,OAAO;QACH;YACI,OAAO,EAAE,KAAK;YACd,SAAS,EAAE;gBACP;oBACI,IAAI,EAAE,8BAA8B;oBACpC,KAAK,EAAE,IAAA,YAAK,EAAC,MAAM,CAAC;iBACvB;aACJ;SACJ;KACJ,CAAA;AACL,CAAC"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.erc20BalanceOverride = erc20BalanceOverride;
4
+ const viem_1 = require("viem");
5
+ function erc20BalanceOverride({ token, owner, slot, balance = BigInt("0x100000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF") }) {
6
+ const smartAccountErc20BalanceSlot = (0, viem_1.keccak256)((0, viem_1.encodeAbiParameters)([
7
+ {
8
+ type: "address"
9
+ },
10
+ {
11
+ type: "uint256"
12
+ }
13
+ ], [owner, slot]));
14
+ return [
15
+ {
16
+ address: token,
17
+ stateDiff: [
18
+ {
19
+ slot: smartAccountErc20BalanceSlot,
20
+ value: (0, viem_1.toHex)(balance)
21
+ }
22
+ ]
23
+ }
24
+ ];
25
+ }
26
+ //# sourceMappingURL=erc20BalanceOverride.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erc20BalanceOverride.js","sourceRoot":"","sources":["../../utils/erc20BalanceOverride.ts"],"names":[],"mappings":";;AAeA,oDAiCC;AAhDD,+BAMa;AASb,SAAgB,oBAAoB,CAAC,EACjC,KAAK,EACL,KAAK,EACL,IAAI,EACJ,OAAO,GAAG,MAAM,CACZ,oEAAoE,CACvE,EAC4B;IAC7B,MAAM,4BAA4B,GAAG,IAAA,gBAAS,EAC1C,IAAA,0BAAmB,EACf;QACI;YACI,IAAI,EAAE,SAAS;SAClB;QACD;YACI,IAAI,EAAE,SAAS;SAClB;KACJ,EACD,CAAC,KAAK,EAAE,IAAI,CAAC,CAChB,CACJ,CAAA;IAED,OAAO;QACH;YACI,OAAO,EAAE,KAAK;YACd,SAAS,EAAE;gBACP;oBACI,IAAI,EAAE,4BAA4B;oBAClC,KAAK,EAAE,IAAA,YAAK,EAAC,OAAO,CAAC;iBACxB;aACJ;SACJ;KACJ,CAAA;AACL,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.encode7579Calls = exports.encodeInstallModule = exports.decodeNonce = exports.encodeNonce = exports.getPackedUserOperation = exports.getAddressFromInitCodeOrPaymasterAndData = exports.isSmartAccountDeployed = exports.toOwner = exports.getRequiredPrefund = exports.deepHexlify = exports.transactionReceiptStatus = void 0;
3
+ exports.erc20BalanceOverride = exports.erc20AllowanceOverride = exports.encode7579Calls = exports.encodeInstallModule = exports.decodeNonce = exports.encodeNonce = exports.getPackedUserOperation = exports.getAddressFromInitCodeOrPaymasterAndData = exports.isSmartAccountDeployed = exports.toOwner = exports.getRequiredPrefund = exports.deepHexlify = exports.transactionReceiptStatus = void 0;
4
4
  const deepHexlify_1 = require("./deepHexlify.js");
5
5
  Object.defineProperty(exports, "deepHexlify", { enumerable: true, get: function () { return deepHexlify_1.deepHexlify; } });
6
6
  Object.defineProperty(exports, "transactionReceiptStatus", { enumerable: true, get: function () { return deepHexlify_1.transactionReceiptStatus; } });
@@ -22,4 +22,8 @@ const getPackedUserOperation_1 = require("./getPackedUserOperation.js");
22
22
  Object.defineProperty(exports, "getPackedUserOperation", { enumerable: true, get: function () { return getPackedUserOperation_1.getPackedUserOperation; } });
23
23
  const encode7579Calls_1 = require("./encode7579Calls.js");
24
24
  Object.defineProperty(exports, "encode7579Calls", { enumerable: true, get: function () { return encode7579Calls_1.encode7579Calls; } });
25
+ const erc20AllowanceOverride_1 = require("./erc20AllowanceOverride.js");
26
+ Object.defineProperty(exports, "erc20AllowanceOverride", { enumerable: true, get: function () { return erc20AllowanceOverride_1.erc20AllowanceOverride; } });
27
+ const erc20BalanceOverride_1 = require("./erc20BalanceOverride.js");
28
+ Object.defineProperty(exports, "erc20BalanceOverride", { enumerable: true, get: function () { return erc20BalanceOverride_1.erc20BalanceOverride; } });
25
29
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../utils/index.ts"],"names":[],"mappings":";;;AAAA,+CAAqE;AAsBjE,4FAtBK,yBAAW,OAsBL;AADX,yGArBkB,sCAAwB,OAqBlB;AApB5B,yGAAqG;AA0BjG,yHA1BK,mFAAwC,OA0BL;AAzB5C,6DAG6B;AAkBzB,mGAnBA,uCAAkB,OAmBA;AAjBtB,qEAAiE;AAoB7D,uGApBK,+CAAsB,OAoBL;AAnB1B,uCAAmC;AAiB/B,wFAjBK,iBAAO,OAiBL;AAfX,+CAA2C;AAqBvC,4FArBK,yBAAW,OAqBL;AApBf,+CAA2C;AAmBvC,4FAnBK,yBAAW,OAmBL;AAjBf,+DAG8B;AAiB1B,oGAlBA,yCAAmB,OAkBA;AAhBvB,qEAAiE;AAY7D,uGAZK,+CAAsB,OAYL;AAV1B,uDAA8E;AAgB1E,gGAhBgC,iCAAe,OAgBhC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../utils/index.ts"],"names":[],"mappings":";;;AAAA,+CAAqE;AA8BjE,4FA9BK,yBAAW,OA8BL;AADX,yGA7BkB,sCAAwB,OA6BlB;AA5B5B,yGAAqG;AAkCjG,yHAlCK,mFAAwC,OAkCL;AAjC5C,6DAG6B;AA0BzB,mGA3BA,uCAAkB,OA2BA;AAzBtB,qEAAiE;AA4B7D,uGA5BK,+CAAsB,OA4BL;AA3B1B,uCAAmC;AAyB/B,wFAzBK,iBAAO,OAyBL;AAvBX,+CAA2C;AA6BvC,4FA7BK,yBAAW,OA6BL;AA5Bf,+CAA2C;AA2BvC,4FA3BK,yBAAW,OA2BL;AAzBf,+DAG8B;AAyB1B,oGA1BA,yCAAmB,OA0BA;AAxBvB,qEAAiE;AAoB7D,uGApBK,+CAAsB,OAoBL;AAlB1B,uDAA8E;AAwB1E,gGAxBgC,iCAAe,OAwBhC;AAvBnB,qEAGiC;AAqB7B,uGAtBA,+CAAsB,OAsBA;AApB1B,iEAG+B;AAkB3B,qGAnBA,2CAAoB,OAmBA"}
@@ -24,6 +24,12 @@ export const getTokenQuotes = async (client, args) => {
24
24
  });
25
25
  return res.quotes.map((quote) => ({
26
26
  ...quote,
27
+ balanceSlot: quote.balanceSlot
28
+ ? hexToBigInt(quote.balanceSlot)
29
+ : undefined,
30
+ allowanceSlot: quote.allowanceSlot
31
+ ? hexToBigInt(quote.allowanceSlot)
32
+ : undefined,
27
33
  postOpGas: hexToBigInt(quote.postOpGas),
28
34
  exchangeRate: hexToBigInt(quote.exchangeRate),
29
35
  exchangeRateNativeToUsd: hexToBigInt(quote.exchangeRateNativeToUsd)
@@ -1 +1 @@
1
- {"version":3,"file":"getTokenQuotes.js","sourceRoot":"","sources":["../../../actions/pimlico/getTokenQuotes.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,kBAAkB,EAIlB,WAAW,EACX,WAAW,EACd,MAAM,MAAM,CAAA;AAmBb;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAK/B,MAAyE,EACzE,IAAsD,EACrB,EAAE;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,CAAA;IAElD,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,MAAM,IAAI,kBAAkB,EAAE,CAAA;IAClC,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;QAC7B,MAAM,EAAE,wBAAwB;QAChC,MAAM,EAAE;YACJ,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;YACvB,IAAI,CAAC,iBAAiB;YACtB,WAAW,CAAC,OAAO,CAAC;SACvB;KACJ,CAAC,CAAA;IAEF,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC9B,GAAG,KAAK;QACR,SAAS,EAAE,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC;QACvC,YAAY,EAAE,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC;QAC7C,uBAAuB,EAAE,WAAW,CAAC,KAAK,CAAC,uBAAuB,CAAC;KACtE,CAAC,CAAC,CAAA;AACP,CAAC,CAAA"}
1
+ {"version":3,"file":"getTokenQuotes.js","sourceRoot":"","sources":["../../../actions/pimlico/getTokenQuotes.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,kBAAkB,EAIlB,WAAW,EACX,WAAW,EACd,MAAM,MAAM,CAAA;AAqBb;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAK/B,MAAyE,EACzE,IAAsD,EACrB,EAAE;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,CAAA;IAElD,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,MAAM,IAAI,kBAAkB,EAAE,CAAA;IAClC,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;QAC7B,MAAM,EAAE,wBAAwB;QAChC,MAAM,EAAE;YACJ,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;YACvB,IAAI,CAAC,iBAAiB;YACtB,WAAW,CAAC,OAAO,CAAC;SACvB;KACJ,CAAC,CAAA;IAEF,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC9B,GAAG,KAAK;QACR,WAAW,EAAE,KAAK,CAAC,WAAW;YAC1B,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC;YAChC,CAAC,CAAC,SAAS;QACf,aAAa,EAAE,KAAK,CAAC,aAAa;YAC9B,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC;YAClC,CAAC,CAAC,SAAS;QACf,SAAS,EAAE,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC;QACvC,YAAY,EAAE,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC;QAC7C,uBAAuB,EAAE,WAAW,CAAC,KAAK,CAAC,uBAAuB,CAAC;KACtE,CAAC,CAAC,CAAA;AACP,CAAC,CAAA"}
@@ -1,10 +1,11 @@
1
- import { encodeFunctionData, erc20Abi, getAddress, maxUint256 } from "viem";
1
+ import { RpcError, encodeFunctionData, erc20Abi, getAddress, maxUint256 } from "viem";
2
2
  import { getPaymasterData as getPaymasterData_, prepareUserOperation } from "viem/account-abstraction";
3
3
  import { getChainId as getChainId_ } from "viem/actions";
4
4
  import { readContract } from "viem/actions";
5
5
  import { getAction, parseAccount } from "viem/utils";
6
6
  import { getTokenQuotes } from "../../../actions/pimlico.js";
7
- export const prepareUserOperationForErc20Paymaster = (pimlicoClient) => async (client, parameters_) => {
7
+ import { erc20AllowanceOverride, erc20BalanceOverride } from "../../../utils/index.js";
8
+ export const prepareUserOperationForErc20Paymaster = (pimlicoClient, { balanceOverride = false, balanceSlot: _balanceSlot, allowanceSlot: _allowanceSlot } = {}) => async (client, parameters_) => {
8
9
  const parameters = parameters_;
9
10
  const account_ = client.account;
10
11
  if (!account_)
@@ -37,6 +38,11 @@ export const prepareUserOperationForErc20Paymaster = (pimlicoClient) => async (c
37
38
  chain: pimlicoClient.chain ?? client.chain ?? account.client.chain,
38
39
  entryPointAddress: account.entryPoint.address
39
40
  });
41
+ if (quotes.length === 0) {
42
+ throw new RpcError(new Error("Quotes not found"), {
43
+ shortMessage: "client didn't return token quotes, check if the token is supported"
44
+ });
45
+ }
40
46
  const { postOpGas, exchangeRate, paymaster: paymasterERC20Address } = quotes[0];
41
47
  const callsWithDummyApproval = [
42
48
  {
@@ -53,6 +59,41 @@ export const prepareUserOperationForErc20Paymaster = (pimlicoClient) => async (c
53
59
  ////////////////////////////////////////////////////////////////////////////////
54
60
  // Call prepareUserOperation
55
61
  ////////////////////////////////////////////////////////////////////////////////
62
+ const allowanceSlot = _allowanceSlot ?? quotes[0].allowanceSlot;
63
+ const balanceSlot = _balanceSlot ?? quotes[0].balanceSlot;
64
+ const hasSlot = allowanceSlot !== undefined && balanceSlot !== undefined;
65
+ if (!hasSlot && balanceOverride) {
66
+ throw new Error(`balanceOverride is not supported for token ${token}, provide custom slot for balance & allowance overrides`);
67
+ }
68
+ const balanceStateOverride = balanceOverride && balanceSlot
69
+ ? erc20BalanceOverride({
70
+ token,
71
+ owner: account.address,
72
+ slot: balanceSlot
73
+ })[0]
74
+ : undefined;
75
+ const allowanceStateOverride = balanceOverride && allowanceSlot
76
+ ? erc20AllowanceOverride({
77
+ token,
78
+ owner: account.address,
79
+ spender: paymasterERC20Address,
80
+ slot: allowanceSlot
81
+ })[0]
82
+ : undefined;
83
+ parameters.stateOverride =
84
+ balanceOverride &&
85
+ balanceStateOverride &&
86
+ allowanceStateOverride // allowanceSlot && balanceSlot is cuz of TypeScript :/
87
+ ? (parameters.stateOverride ?? []).concat([
88
+ {
89
+ address: token,
90
+ stateDiff: [
91
+ ...(allowanceStateOverride.stateDiff ?? []),
92
+ ...(balanceStateOverride.stateDiff ?? [])
93
+ ]
94
+ }
95
+ ])
96
+ : parameters.stateOverride;
56
97
  const userOperation = await getAction(client, prepareUserOperation, "prepareUserOperation")({
57
98
  ...parameters,
58
99
  calls: callsWithDummyApproval
@@ -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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"}
@@ -0,0 +1,33 @@
1
+ import { encodeAbiParameters, keccak256, toHex } from "viem";
2
+ export function erc20AllowanceOverride({ token, owner, spender, slot, amount = BigInt("0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF") }) {
3
+ const smartAccountErc20AllowanceSlot = keccak256(encodeAbiParameters([
4
+ {
5
+ type: "address"
6
+ },
7
+ {
8
+ type: "bytes32"
9
+ }
10
+ ], [
11
+ spender,
12
+ keccak256(encodeAbiParameters([
13
+ {
14
+ type: "address"
15
+ },
16
+ {
17
+ type: "uint256"
18
+ }
19
+ ], [owner, BigInt(slot)]))
20
+ ]));
21
+ return [
22
+ {
23
+ address: token,
24
+ stateDiff: [
25
+ {
26
+ slot: smartAccountErc20AllowanceSlot,
27
+ value: toHex(amount)
28
+ }
29
+ ]
30
+ }
31
+ ];
32
+ }
33
+ //# sourceMappingURL=erc20AllowanceOverride.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erc20AllowanceOverride.js","sourceRoot":"","sources":["../../utils/erc20AllowanceOverride.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,mBAAmB,EACnB,SAAS,EACT,KAAK,EACR,MAAM,MAAM,CAAA;AAUb,MAAM,UAAU,sBAAsB,CAAC,EACnC,KAAK,EACL,KAAK,EACL,OAAO,EACP,IAAI,EACJ,MAAM,GAAG,MAAM,CACX,oEAAoE,CACvE,EAC8B;IAC/B,MAAM,8BAA8B,GAAG,SAAS,CAC5C,mBAAmB,CACf;QACI;YACI,IAAI,EAAE,SAAS;SAClB;QACD;YACI,IAAI,EAAE,SAAS;SAClB;KACJ,EACD;QACI,OAAO;QACP,SAAS,CACL,mBAAmB,CACf;YACI;gBACI,IAAI,EAAE,SAAS;aAClB;YACD;gBACI,IAAI,EAAE,SAAS;aAClB;SACJ,EACD,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CACxB,CACJ;KACJ,CACJ,CACJ,CAAA;IAED,OAAO;QACH;YACI,OAAO,EAAE,KAAK;YACd,SAAS,EAAE;gBACP;oBACI,IAAI,EAAE,8BAA8B;oBACpC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;iBACvB;aACJ;SACJ;KACJ,CAAA;AACL,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { encodeAbiParameters, keccak256, toHex } from "viem";
2
+ export function erc20BalanceOverride({ token, owner, slot, balance = BigInt("0x100000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF") }) {
3
+ const smartAccountErc20BalanceSlot = keccak256(encodeAbiParameters([
4
+ {
5
+ type: "address"
6
+ },
7
+ {
8
+ type: "uint256"
9
+ }
10
+ ], [owner, slot]));
11
+ return [
12
+ {
13
+ address: token,
14
+ stateDiff: [
15
+ {
16
+ slot: smartAccountErc20BalanceSlot,
17
+ value: toHex(balance)
18
+ }
19
+ ]
20
+ }
21
+ ];
22
+ }
23
+ //# sourceMappingURL=erc20BalanceOverride.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erc20BalanceOverride.js","sourceRoot":"","sources":["../../utils/erc20BalanceOverride.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,mBAAmB,EACnB,SAAS,EACT,KAAK,EACR,MAAM,MAAM,CAAA;AASb,MAAM,UAAU,oBAAoB,CAAC,EACjC,KAAK,EACL,KAAK,EACL,IAAI,EACJ,OAAO,GAAG,MAAM,CACZ,oEAAoE,CACvE,EAC4B;IAC7B,MAAM,4BAA4B,GAAG,SAAS,CAC1C,mBAAmB,CACf;QACI;YACI,IAAI,EAAE,SAAS;SAClB;QACD;YACI,IAAI,EAAE,SAAS;SAClB;KACJ,EACD,CAAC,KAAK,EAAE,IAAI,CAAC,CAChB,CACJ,CAAA;IAED,OAAO;QACH;YACI,OAAO,EAAE,KAAK;YACd,SAAS,EAAE;gBACP;oBACI,IAAI,EAAE,4BAA4B;oBAClC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;iBACxB;aACJ;SACJ;KACJ,CAAA;AACL,CAAC"}
@@ -8,5 +8,7 @@ import { encodeNonce } from "./encodeNonce.js";
8
8
  import { encodeInstallModule } from "./encodeInstallModule.js";
9
9
  import { getPackedUserOperation } from "./getPackedUserOperation.js";
10
10
  import { encode7579Calls } from "./encode7579Calls.js";
11
- export { transactionReceiptStatus, deepHexlify, getRequiredPrefund, toOwner, isSmartAccountDeployed, getAddressFromInitCodeOrPaymasterAndData, getPackedUserOperation, encodeNonce, decodeNonce, encodeInstallModule, encode7579Calls };
11
+ import { erc20AllowanceOverride } from "./erc20AllowanceOverride.js";
12
+ import { erc20BalanceOverride } from "./erc20BalanceOverride.js";
13
+ export { transactionReceiptStatus, deepHexlify, getRequiredPrefund, toOwner, isSmartAccountDeployed, getAddressFromInitCodeOrPaymasterAndData, getPackedUserOperation, encodeNonce, decodeNonce, encodeInstallModule, encode7579Calls, erc20AllowanceOverride, erc20BalanceOverride };
12
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAA;AACrE,OAAO,EAAE,wCAAwC,EAAE,MAAM,4CAA4C,CAAA;AACrG,OAAO,EAEH,kBAAkB,EACrB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,OAAO,EAEH,mBAAmB,EACtB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EAA6B,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAE9E,OAAO,EACH,wBAAwB,EACxB,WAAW,EACX,kBAAkB,EAClB,OAAO,EAEP,sBAAsB,EACtB,wCAAwC,EACxC,sBAAsB,EACtB,WAAW,EACX,WAAW,EAEX,mBAAmB,EAEnB,eAAe,EAClB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAA;AACrE,OAAO,EAAE,wCAAwC,EAAE,MAAM,4CAA4C,CAAA;AACrG,OAAO,EAEH,kBAAkB,EACrB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,OAAO,EAEH,mBAAmB,EACtB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EAA6B,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAC9E,OAAO,EAEH,sBAAsB,EACzB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAEH,oBAAoB,EACvB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EACH,wBAAwB,EACxB,WAAW,EACX,kBAAkB,EAClB,OAAO,EAEP,sBAAsB,EACtB,wCAAwC,EACxC,sBAAsB,EACtB,WAAW,EACX,WAAW,EAEX,mBAAmB,EAEnB,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EAGvB,CAAA"}
@@ -10,6 +10,8 @@ export type GetTokenQuotesReturnType = {
10
10
  postOpGas: bigint;
11
11
  exchangeRate: bigint;
12
12
  exchangeRateNativeToUsd: bigint;
13
+ balanceSlot?: bigint;
14
+ allowanceSlot?: bigint;
13
15
  }[];
14
16
  /**
15
17
  * Returns all related fields to calculate the potential cost of a userOperation in ERC-20 tokens.
@@ -1 +1 @@
1
- {"version":3,"file":"getTokenQuotes.d.ts","sourceRoot":"","sources":["../../../actions/pimlico/getTokenQuotes.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,KAAK,EAEV,KAAK,MAAM,EACX,KAAK,iBAAiB,EACtB,KAAK,SAAS,EAGjB,MAAM,MAAM,CAAA;AACb,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAE3D,MAAM,MAAM,wBAAwB,CAChC,MAAM,SAAS,KAAK,GAAG,SAAS,EAChC,cAAc,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,IAC5D;IACA,MAAM,EAAE,OAAO,EAAE,CAAA;IACjB,iBAAiB,EAAE,OAAO,CAAA;CAC7B,GAAG,iBAAiB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;AAE7C,MAAM,MAAM,wBAAwB,GAAG;IACnC,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,OAAO,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,uBAAuB,EAAE,MAAM,CAAA;CAClC,EAAE,CAAA;AAEH;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,GACvB,MAAM,SAAS,KAAK,GAAG,SAAS,EAChC,UAAU,SAAS,SAAS,cAC5B,cAAc,SAAS,KAAK,GAAG,SAAS,8BAEhC,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAG,SAAS,EAAE,gBAAgB,CAAC,QACnE,wBAAwB,CAAC,MAAM,EAAE,cAAc,CAAC,KACvD,OAAO,CAAC,wBAAwB,CAsBlC,CAAA"}
1
+ {"version":3,"file":"getTokenQuotes.d.ts","sourceRoot":"","sources":["../../../actions/pimlico/getTokenQuotes.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,KAAK,EAEV,KAAK,MAAM,EACX,KAAK,iBAAiB,EACtB,KAAK,SAAS,EAGjB,MAAM,MAAM,CAAA;AACb,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAE3D,MAAM,MAAM,wBAAwB,CAChC,MAAM,SAAS,KAAK,GAAG,SAAS,EAChC,cAAc,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,IAC5D;IACA,MAAM,EAAE,OAAO,EAAE,CAAA;IACjB,iBAAiB,EAAE,OAAO,CAAA;CAC7B,GAAG,iBAAiB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;AAE7C,MAAM,MAAM,wBAAwB,GAAG;IACnC,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,OAAO,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,uBAAuB,EAAE,MAAM,CAAA;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;CACzB,EAAE,CAAA;AAEH;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,GACvB,MAAM,SAAS,KAAK,GAAG,SAAS,EAChC,UAAU,SAAS,SAAS,cAC5B,cAAc,SAAS,KAAK,GAAG,SAAS,8BAEhC,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAG,SAAS,EAAE,gBAAgB,CAAC,QACnE,wBAAwB,CAAC,MAAM,EAAE,cAAc,CAAC,KACvD,OAAO,CAAC,wBAAwB,CA4BlC,CAAA"}
@@ -251,6 +251,11 @@ export declare function smartAccountActions(): <TChain extends Chain | undefined
251
251
  };
252
252
  extend?: object | undefined;
253
253
  getAddress: () => Promise<import("viem").Address>;
254
+ decodeCalls?: ((data: import("viem").Hex) => Promise<readonly {
255
+ to: import("viem").Hex;
256
+ data?: import("viem").Hex | undefined;
257
+ value?: bigint | undefined;
258
+ }[]>) | undefined;
254
259
  encodeCalls: (calls: readonly {
255
260
  to: import("viem").Hex;
256
261
  data?: import("viem").Hex | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"smartAccount.d.ts","sourceRoot":"","sources":["../../../clients/decorators/smartAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,GAAG,EACH,KAAK,EACL,MAAM,EACN,oBAAoB,EACpB,oBAAoB,EACpB,IAAI,EAEJ,SAAS,EACT,SAAS,EACT,uBAAuB,EAC1B,MAAM,MAAM,CAAA;AACb,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAA;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAA;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAA;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAA;AAExE,MAAM,MAAM,mBAAmB,CAC3B,MAAM,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,EACpD,aAAa,SAAS,YAAY,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,IACzE;IACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA0CG;IACH,eAAe,EAAE,CACb,cAAc,SAAS,KAAK,GAAG,SAAS,GAAG,SAAS,EACpD,eAAe,SAAS,YAAY,GAAG,SAAS,GAAG,SAAS,EAC5D,KAAK,SAAS,SAAS,OAAO,EAAE,GAAG,SAAS,OAAO,EAAE,EAErD,IAAI,EAAE,UAAU,CACZ,OAAO,eAAe,CAClB,aAAa,EACb,MAAM,EACN,eAAe,EACf,cAAc,EACd,KAAK,CACR,CACJ,CAAC,CAAC,CAAC,KACH,OAAO,CAAC,IAAI,CAAC,CAAA;IAClB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA0CG;IACH,WAAW,EAAE,CACT,IAAI,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KACrD,UAAU,CAAC,OAAO,WAAW,CAAC,aAAa,CAAC,CAAC,CAAA;IAClD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+FG;IACH,aAAa,EAAE,CACX,KAAK,CAAC,UAAU,SAAS,SAAS,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,EAC/D,YAAY,SAAS,MAAM,EAE3B,IAAI,EAAE,UAAU,CACZ,OAAO,aAAa,CAAC,UAAU,EAAE,YAAY,EAAE,aAAa,CAAC,CAChE,CAAC,CAAC,CAAC,KACH,UAAU,CACX,OAAO,aAAa,CAAC,UAAU,EAAE,YAAY,EAAE,aAAa,CAAC,CAChE,CAAA;IACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+CG;IACH,aAAa,EAAE,CACX,KAAK,CAAC,IAAI,SAAS,GAAG,GAAG,SAAS,OAAO,EAAE,EAC3C,aAAa,SAAS,oBAAoB,CACtC,IAAI,EACJ,YAAY,GAAG,SAAS,CAC3B,GAAG,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,CAAC,EACxD,KAAK,SAAS,oBAAoB,CAC9B,IAAI,EACJ,YAAY,GAAG,SAAS,EACxB,aAAa,CAChB,GAAG,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,EAAE,aAAa,CAAC,EACvE,cAAc,SAAS,KAAK,GAAG,SAAS,GAAG,SAAS,EAEpD,IAAI,EAAE,uBAAuB,CACzB,IAAI,EACJ,aAAa,EACb,KAAK,EACL,MAAM,EACN,aAAa,EACb,cAAc,CACjB,KACA,UAAU,CACX,OAAO,aAAa,CAChB,MAAM,EACN,aAAa,EACb,IAAI,EACJ,aAAa,EACb,KAAK,EACL,cAAc,CACjB,CACJ,CAAA;CACJ,CAAA;AAED,wBAAgB,mBAAmB,KAE3B,MAAM,SAAS,KAAK,GAAG,SAAS,sBAChC,aAAa,SAAS,YAAY,GAAG,SAAS;;;;;;;;;;;;;;;eAzP7C,CAAC;mBAA0C,CAAC;;2BAOrC,CAAC;WACD,CAAhB;;;;;;;;;;;;eA6C0B,CAAC;;;mBAOe,CAAA;;;;;;;wBAiM1B,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,KACjD,mBAAmB,CAAC,MAAM,EAAE,aAAa,CAAC,CAMhD"}
1
+ {"version":3,"file":"smartAccount.d.ts","sourceRoot":"","sources":["../../../clients/decorators/smartAccount.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,8 @@
1
1
  import { type Chain, type Client, type Transport } from "viem";
2
2
  import { type PrepareUserOperationParameters, type PrepareUserOperationRequest, type PrepareUserOperationReturnType, type SmartAccount } from "viem/account-abstraction";
3
- export declare const prepareUserOperationForErc20Paymaster: (pimlicoClient: Client) => <account extends SmartAccount | undefined, const calls extends readonly unknown[], const request extends PrepareUserOperationRequest<account, accountOverride, calls>, accountOverride extends SmartAccount | undefined = undefined>(client: Client<Transport, Chain | undefined, account>, parameters_: PrepareUserOperationParameters<account, accountOverride, calls, request>) => Promise<PrepareUserOperationReturnType<account, accountOverride, calls, request>>;
3
+ export declare const prepareUserOperationForErc20Paymaster: (pimlicoClient: Client, { balanceOverride, balanceSlot: _balanceSlot, allowanceSlot: _allowanceSlot }?: {
4
+ balanceOverride?: boolean;
5
+ balanceSlot?: bigint;
6
+ allowanceSlot?: bigint;
7
+ }) => <account extends SmartAccount | undefined, const calls extends readonly unknown[], const request extends PrepareUserOperationRequest<account, accountOverride, calls>, accountOverride extends SmartAccount | undefined = undefined>(client: Client<Transport, Chain | undefined, account>, parameters_: PrepareUserOperationParameters<account, accountOverride, calls, request>) => Promise<PrepareUserOperationReturnType<account, accountOverride, calls, request>>;
4
8
  //# sourceMappingURL=prepareUserOperationForErc20Paymaster.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prepareUserOperationForErc20Paymaster.d.ts","sourceRoot":"","sources":["../../../../experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,KAAK,KAAK,EACV,KAAK,MAAM,EAEX,KAAK,SAAS,EAKjB,MAAM,MAAM,CAAA;AACb,OAAO,EAEH,KAAK,8BAA8B,EACnC,KAAK,2BAA2B,EAChC,KAAK,8BAA8B,EACnC,KAAK,YAAY,EAKpB,MAAM,0BAA0B,CAAA;AAMjC,eAAO,MAAM,qCAAqC,kBAC9B,MAAM,MAElB,OAAO,SAAS,YAAY,GAAG,SAAS,QAClC,KAAK,SAAS,SAAS,OAAO,EAAE,QAChC,OAAO,SAAS,2BAA2B,CAC7C,OAAO,EACP,eAAe,EACf,KAAK,CACR,EACD,eAAe,SAAS,YAAY,GAAG,SAAS,sBAExC,MAAM,CAAC,SAAS,EAAE,KAAK,GAAG,SAAS,EAAE,OAAO,CAAC,eACxC,8BAA8B,CACvC,OAAO,EACP,eAAe,EACf,KAAK,EACL,OAAO,CACV,KACF,OAAO,CACN,8BAA8B,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,CAAC,CA8N3E,CAAA"}
1
+ {"version":3,"file":"prepareUserOperationForErc20Paymaster.d.ts","sourceRoot":"","sources":["../../../../experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,KAAK,KAAK,EACV,KAAK,MAAM,EAGX,KAAK,SAAS,EAKjB,MAAM,MAAM,CAAA;AACb,OAAO,EAEH,KAAK,8BAA8B,EACnC,KAAK,2BAA2B,EAChC,KAAK,8BAA8B,EACnC,KAAK,YAAY,EAKpB,MAAM,0BAA0B,CAAA;AAOjC,eAAO,MAAM,qCAAqC,kBAE3B,MAAM,kFAKlB;IACC,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;CACzB,MAGD,OAAO,SAAS,YAAY,GAAG,SAAS,QAClC,KAAK,SAAS,SAAS,OAAO,EAAE,QAChC,OAAO,SAAS,2BAA2B,CAC7C,OAAO,EACP,eAAe,EACf,KAAK,CACR,EACD,eAAe,SAAS,YAAY,GAAG,SAAS,sBAExC,MAAM,CAAC,SAAS,EAAE,KAAK,GAAG,SAAS,EAAE,OAAO,CAAC,eACxC,8BAA8B,CACvC,OAAO,EACP,eAAe,EACf,KAAK,EACL,OAAO,CACV,KACF,OAAO,CACN,8BAA8B,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,CAAC,CAoR3E,CAAA"}
@@ -25,6 +25,8 @@ type GetTokenQuotesWithBigIntAsHex = {
25
25
  postOpGas: Hex;
26
26
  exchangeRate: Hex;
27
27
  exchangeRateNativeToUsd: Hex;
28
+ balanceSlot?: Hex;
29
+ allowanceSlot?: Hex;
28
30
  }[];
29
31
  };
30
32
  export type PimlicoRpcSchema<entryPointVersion extends "0.6" | "0.7" = "0.6" | "0.7"> = [
@@ -1 +1 @@
1
- {"version":3,"file":"pimlico.d.ts","sourceRoot":"","sources":["../../types/pimlico.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pimlico.d.ts","sourceRoot":"","sources":["../../types/pimlico.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { type Address, type StateOverride } from "viem";
2
+ export type Erc20AllowanceOverrideParameters = {
3
+ token: Address;
4
+ owner: Address;
5
+ spender: Address;
6
+ slot: bigint;
7
+ amount?: bigint;
8
+ };
9
+ export declare function erc20AllowanceOverride({ token, owner, spender, slot, amount }: Erc20AllowanceOverrideParameters): StateOverride;
10
+ //# sourceMappingURL=erc20AllowanceOverride.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erc20AllowanceOverride.d.ts","sourceRoot":"","sources":["../../utils/erc20AllowanceOverride.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,OAAO,EACZ,KAAK,aAAa,EAIrB,MAAM,MAAM,CAAA;AAEb,MAAM,MAAM,gCAAgC,GAAG;IAC3C,KAAK,EAAE,OAAO,CAAA;IACd,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,wBAAgB,sBAAsB,CAAC,EACnC,KAAK,EACL,KAAK,EACL,OAAO,EACP,IAAI,EACJ,MAEC,EACJ,EAAE,gCAAgC,GAAG,aAAa,CAyClD"}
@@ -0,0 +1,9 @@
1
+ import { type Address, type StateOverride } from "viem";
2
+ export type Erc20BalanceOverrideParameters = {
3
+ token: Address;
4
+ owner: Address;
5
+ slot: bigint;
6
+ balance?: bigint;
7
+ };
8
+ export declare function erc20BalanceOverride({ token, owner, slot, balance }: Erc20BalanceOverrideParameters): StateOverride;
9
+ //# sourceMappingURL=erc20BalanceOverride.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erc20BalanceOverride.d.ts","sourceRoot":"","sources":["../../utils/erc20BalanceOverride.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,OAAO,EACZ,KAAK,aAAa,EAIrB,MAAM,MAAM,CAAA;AAEb,MAAM,MAAM,8BAA8B,GAAG;IACzC,KAAK,EAAE,OAAO,CAAA;IACd,KAAK,EAAE,OAAO,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,wBAAgB,oBAAoB,CAAC,EACjC,KAAK,EACL,KAAK,EACL,IAAI,EACJ,OAEC,EACJ,EAAE,8BAA8B,GAAG,aAAa,CA0BhD"}
@@ -8,5 +8,7 @@ import { encodeNonce } from "./encodeNonce";
8
8
  import { type EncodeInstallModuleParameters, encodeInstallModule } from "./encodeInstallModule";
9
9
  import { getPackedUserOperation } from "./getPackedUserOperation";
10
10
  import { type EncodeCallDataParams, encode7579Calls } from "./encode7579Calls";
11
- export { transactionReceiptStatus, deepHexlify, getRequiredPrefund, toOwner, type GetRequiredPrefundReturnType, isSmartAccountDeployed, getAddressFromInitCodeOrPaymasterAndData, getPackedUserOperation, encodeNonce, decodeNonce, type EncodeInstallModuleParameters, encodeInstallModule, type EncodeCallDataParams, encode7579Calls };
11
+ import { type Erc20AllowanceOverrideParameters, erc20AllowanceOverride } from "./erc20AllowanceOverride";
12
+ import { type Erc20BalanceOverrideParameters, erc20BalanceOverride } from "./erc20BalanceOverride";
13
+ export { transactionReceiptStatus, deepHexlify, getRequiredPrefund, toOwner, type GetRequiredPrefundReturnType, isSmartAccountDeployed, getAddressFromInitCodeOrPaymasterAndData, getPackedUserOperation, encodeNonce, decodeNonce, type EncodeInstallModuleParameters, encodeInstallModule, type EncodeCallDataParams, encode7579Calls, erc20AllowanceOverride, erc20BalanceOverride, type Erc20AllowanceOverrideParameters, type Erc20BalanceOverrideParameters };
12
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAA;AACrE,OAAO,EAAE,wCAAwC,EAAE,MAAM,4CAA4C,CAAA;AACrG,OAAO,EACH,KAAK,4BAA4B,EACjC,kBAAkB,EACrB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,OAAO,EACH,KAAK,6BAA6B,EAClC,mBAAmB,EACtB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EAAE,KAAK,oBAAoB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAE9E,OAAO,EACH,wBAAwB,EACxB,WAAW,EACX,kBAAkB,EAClB,OAAO,EACP,KAAK,4BAA4B,EACjC,sBAAsB,EACtB,wCAAwC,EACxC,sBAAsB,EACtB,WAAW,EACX,WAAW,EACX,KAAK,6BAA6B,EAClC,mBAAmB,EACnB,KAAK,oBAAoB,EACzB,eAAe,EAClB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAA;AACrE,OAAO,EAAE,wCAAwC,EAAE,MAAM,4CAA4C,CAAA;AACrG,OAAO,EACH,KAAK,4BAA4B,EACjC,kBAAkB,EACrB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,OAAO,EACH,KAAK,6BAA6B,EAClC,mBAAmB,EACtB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EAAE,KAAK,oBAAoB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAC9E,OAAO,EACH,KAAK,gCAAgC,EACrC,sBAAsB,EACzB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACH,KAAK,8BAA8B,EACnC,oBAAoB,EACvB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EACH,wBAAwB,EACxB,WAAW,EACX,kBAAkB,EAClB,OAAO,EACP,KAAK,4BAA4B,EACjC,sBAAsB,EACtB,wCAAwC,EACxC,sBAAsB,EACtB,WAAW,EACX,WAAW,EACX,KAAK,6BAA6B,EAClC,mBAAmB,EACnB,KAAK,oBAAoB,EACzB,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,KAAK,gCAAgC,EACrC,KAAK,8BAA8B,EACtC,CAAA"}
@@ -25,6 +25,8 @@ export type GetTokenQuotesReturnType = {
25
25
  postOpGas: bigint
26
26
  exchangeRate: bigint
27
27
  exchangeRateNativeToUsd: bigint
28
+ balanceSlot?: bigint
29
+ allowanceSlot?: bigint
28
30
  }[]
29
31
 
30
32
  /**
@@ -62,6 +64,12 @@ export const getTokenQuotes = async <
62
64
 
63
65
  return res.quotes.map((quote) => ({
64
66
  ...quote,
67
+ balanceSlot: quote.balanceSlot
68
+ ? hexToBigInt(quote.balanceSlot)
69
+ : undefined,
70
+ allowanceSlot: quote.allowanceSlot
71
+ ? hexToBigInt(quote.allowanceSlot)
72
+ : undefined,
65
73
  postOpGas: hexToBigInt(quote.postOpGas),
66
74
  exchangeRate: hexToBigInt(quote.exchangeRate),
67
75
  exchangeRateNativeToUsd: hexToBigInt(quote.exchangeRateNativeToUsd)
@@ -191,5 +191,93 @@ describe.each(getCoreSmartAccounts())(
191
191
  expect(FINAL_ETH_BALANCE).toEqual(INTIAL_ETH_BALANCE) // There should be no ETH balance change
192
192
  }
193
193
  )
194
+
195
+ testWithRpc.skipIf(!supportsEntryPointV07)(
196
+ "prepareUserOperationForErc20Paymaster_v07 (balanceOverride enabled)",
197
+ async ({ rpc }) => {
198
+ const { anvilRpc } = rpc
199
+
200
+ const account = (
201
+ await getSmartAccountClient({
202
+ entryPoint: {
203
+ version: "0.7"
204
+ },
205
+ ...rpc
206
+ })
207
+ ).account
208
+
209
+ const publicClient = getPublicClient(anvilRpc)
210
+
211
+ const pimlicoClient = createPimlicoClient({
212
+ transport: http(rpc.paymasterRpc),
213
+ entryPoint: {
214
+ address: entryPoint07Address,
215
+ version: "0.7"
216
+ }
217
+ })
218
+
219
+ const smartAccountClient = createSmartAccountClient({
220
+ // @ts-ignore
221
+ client: getPublicClient(anvilRpc),
222
+ account,
223
+ paymaster: pimlicoClient,
224
+ chain: foundry,
225
+ userOperation: {
226
+ prepareUserOperation:
227
+ prepareUserOperationForErc20Paymaster(
228
+ pimlicoClient,
229
+ {
230
+ balanceOverride: true
231
+ }
232
+ )
233
+ },
234
+ bundlerTransport: http(rpc.altoRpc)
235
+ })
236
+
237
+ const INITIAL_TOKEN_BALANCE = parseEther("100")
238
+ const INTIAL_ETH_BALANCE = await publicClient.getBalance({
239
+ address: smartAccountClient.account.address
240
+ })
241
+
242
+ sudoMintTokens({
243
+ amount: INITIAL_TOKEN_BALANCE,
244
+ to: smartAccountClient.account.address,
245
+ anvilRpc
246
+ })
247
+
248
+ const opHash = await smartAccountClient.sendUserOperation({
249
+ calls: [
250
+ {
251
+ to: zeroAddress,
252
+ data: "0x",
253
+ value: 0n
254
+ }
255
+ ],
256
+ paymasterContext: {
257
+ token: ERC20_ADDRESS
258
+ }
259
+ })
260
+
261
+ const receipt =
262
+ await smartAccountClient.waitForUserOperationReceipt({
263
+ hash: opHash
264
+ })
265
+
266
+ expect(receipt).toBeTruthy()
267
+ expect(receipt).toBeTruthy()
268
+ expect(receipt.success).toBeTruthy()
269
+
270
+ const FINAL_TOKEN_BALANCE = await tokenBalanceOf(
271
+ smartAccountClient.account.address,
272
+ rpc.anvilRpc
273
+ )
274
+ const FINAL_ETH_BALANCE = await publicClient.getBalance({
275
+ address: smartAccountClient.account.address
276
+ })
277
+
278
+ expect(FINAL_TOKEN_BALANCE).toBeLessThan(INITIAL_TOKEN_BALANCE) // Token balance should be deducted
279
+ expect(FINAL_ETH_BALANCE).toEqual(INTIAL_ETH_BALANCE) // There should be no ETH balance change
280
+ }
281
+ )
194
282
  }
195
283
  )
@@ -3,6 +3,7 @@ import {
3
3
  type Chain,
4
4
  type Client,
5
5
  type ContractFunctionParameters,
6
+ RpcError,
6
7
  type Transport,
7
8
  encodeFunctionData,
8
9
  erc20Abi,
@@ -24,9 +25,21 @@ import { getChainId as getChainId_ } from "viem/actions"
24
25
  import { readContract } from "viem/actions"
25
26
  import { getAction, parseAccount } from "viem/utils"
26
27
  import { getTokenQuotes } from "../../../actions/pimlico"
28
+ import { erc20AllowanceOverride, erc20BalanceOverride } from "../../../utils"
27
29
 
28
30
  export const prepareUserOperationForErc20Paymaster =
29
- (pimlicoClient: Client) =>
31
+ (
32
+ pimlicoClient: Client,
33
+ {
34
+ balanceOverride = false,
35
+ balanceSlot: _balanceSlot,
36
+ allowanceSlot: _allowanceSlot
37
+ }: {
38
+ balanceOverride?: boolean
39
+ balanceSlot?: bigint
40
+ allowanceSlot?: bigint
41
+ } = {}
42
+ ) =>
30
43
  async <
31
44
  account extends SmartAccount | undefined,
32
45
  const calls extends readonly unknown[],
@@ -95,6 +108,13 @@ export const prepareUserOperationForErc20Paymaster =
95
108
  entryPointAddress: account.entryPoint.address
96
109
  })
97
110
 
111
+ if (quotes.length === 0) {
112
+ throw new RpcError(new Error("Quotes not found"), {
113
+ shortMessage:
114
+ "client didn't return token quotes, check if the token is supported"
115
+ })
116
+ }
117
+
98
118
  const {
99
119
  postOpGas,
100
120
  exchangeRate,
@@ -118,9 +138,56 @@ export const prepareUserOperationForErc20Paymaster =
118
138
  }
119
139
 
120
140
  ////////////////////////////////////////////////////////////////////////////////
141
+
121
142
  // Call prepareUserOperation
122
143
  ////////////////////////////////////////////////////////////////////////////////
123
144
 
145
+ const allowanceSlot = _allowanceSlot ?? quotes[0].allowanceSlot
146
+ const balanceSlot = _balanceSlot ?? quotes[0].balanceSlot
147
+
148
+ const hasSlot =
149
+ allowanceSlot !== undefined && balanceSlot !== undefined
150
+
151
+ if (!hasSlot && balanceOverride) {
152
+ throw new Error(
153
+ `balanceOverride is not supported for token ${token}, provide custom slot for balance & allowance overrides`
154
+ )
155
+ }
156
+
157
+ const balanceStateOverride =
158
+ balanceOverride && balanceSlot
159
+ ? erc20BalanceOverride({
160
+ token,
161
+ owner: account.address,
162
+ slot: balanceSlot
163
+ })[0]
164
+ : undefined
165
+
166
+ const allowanceStateOverride =
167
+ balanceOverride && allowanceSlot
168
+ ? erc20AllowanceOverride({
169
+ token,
170
+ owner: account.address,
171
+ spender: paymasterERC20Address,
172
+ slot: allowanceSlot
173
+ })[0]
174
+ : undefined
175
+
176
+ parameters.stateOverride =
177
+ balanceOverride &&
178
+ balanceStateOverride &&
179
+ allowanceStateOverride // allowanceSlot && balanceSlot is cuz of TypeScript :/
180
+ ? (parameters.stateOverride ?? []).concat([
181
+ {
182
+ address: token,
183
+ stateDiff: [
184
+ ...(allowanceStateOverride.stateDiff ?? []),
185
+ ...(balanceStateOverride.stateDiff ?? [])
186
+ ]
187
+ }
188
+ ])
189
+ : parameters.stateOverride
190
+
124
191
  const userOperation = await getAction(
125
192
  client,
126
193
  prepareUserOperation,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "permissionless",
3
- "version": "0.2.10",
3
+ "version": "0.2.12",
4
4
  "author": "Pimlico",
5
5
  "homepage": "https://docs.pimlico.io/permissionless",
6
6
  "repository": "github:pimlicolabs/permissionless.js",
@@ -77,6 +77,6 @@
77
77
  }
78
78
  },
79
79
  "peerDependencies": {
80
- "viem": "^2.21.2"
80
+ "viem": "^2.21.22"
81
81
  }
82
82
  }
package/types/pimlico.ts CHANGED
@@ -35,6 +35,8 @@ type GetTokenQuotesWithBigIntAsHex = {
35
35
  postOpGas: Hex
36
36
  exchangeRate: Hex
37
37
  exchangeRateNativeToUsd: Hex
38
+ balanceSlot?: Hex
39
+ allowanceSlot?: Hex
38
40
  }[]
39
41
  }
40
42
 
@@ -0,0 +1,59 @@
1
+ import { toHex } from "viem"
2
+ import { describe, expect, test } from "vitest"
3
+ import {
4
+ type Erc20AllowanceOverrideParameters,
5
+ erc20AllowanceOverride
6
+ } from "./erc20AllowanceOverride"
7
+
8
+ describe("erc20AllowanceOverride", () => {
9
+ test("should return the correct structure for valid inputs", () => {
10
+ const params = {
11
+ token: "0xFFfFfFffFFfffFFfFFfFFFFFffFFFffffFfFFFfF",
12
+ owner: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
13
+ spender: "0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd",
14
+ slot: BigInt(1),
15
+ amount: BigInt(100)
16
+ } as const
17
+
18
+ const result = erc20AllowanceOverride(params)
19
+
20
+ expect(result).toEqual([
21
+ {
22
+ address: params.token,
23
+ stateDiff: [
24
+ {
25
+ slot: expect.any(String), // Slot will be a keccak256 hash
26
+ value: toHex(params.amount)
27
+ }
28
+ ]
29
+ }
30
+ ])
31
+ })
32
+
33
+ test("should use the default amount when none is provided", () => {
34
+ const params: Erc20AllowanceOverrideParameters = {
35
+ token: "0xFFfFfFffFFfffFFfFFfFFFFFffFFFffffFfFFFfF",
36
+ owner: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
37
+ spender: "0xDDdDddDdDdddDDddDDddDDDDdDdDDdDDdDDDDDDd",
38
+ slot: BigInt(1)
39
+ }
40
+
41
+ const result = erc20AllowanceOverride(params)
42
+
43
+ const expectedDefaultAmount = BigInt(
44
+ "0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
45
+ )
46
+
47
+ expect(result).toEqual([
48
+ {
49
+ address: params.token,
50
+ stateDiff: [
51
+ {
52
+ slot: expect.any(String), // Slot will be a keccak256 hash
53
+ value: toHex(expectedDefaultAmount)
54
+ }
55
+ ]
56
+ }
57
+ ])
58
+ })
59
+ })
@@ -0,0 +1,66 @@
1
+ import {
2
+ type Address,
3
+ type StateOverride,
4
+ encodeAbiParameters,
5
+ keccak256,
6
+ toHex
7
+ } from "viem"
8
+
9
+ export type Erc20AllowanceOverrideParameters = {
10
+ token: Address
11
+ owner: Address
12
+ spender: Address
13
+ slot: bigint
14
+ amount?: bigint
15
+ }
16
+
17
+ export function erc20AllowanceOverride({
18
+ token,
19
+ owner,
20
+ spender,
21
+ slot,
22
+ amount = BigInt(
23
+ "0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
24
+ )
25
+ }: Erc20AllowanceOverrideParameters): StateOverride {
26
+ const smartAccountErc20AllowanceSlot = keccak256(
27
+ encodeAbiParameters(
28
+ [
29
+ {
30
+ type: "address"
31
+ },
32
+ {
33
+ type: "bytes32"
34
+ }
35
+ ],
36
+ [
37
+ spender,
38
+ keccak256(
39
+ encodeAbiParameters(
40
+ [
41
+ {
42
+ type: "address"
43
+ },
44
+ {
45
+ type: "uint256"
46
+ }
47
+ ],
48
+ [owner, BigInt(slot)]
49
+ )
50
+ )
51
+ ]
52
+ )
53
+ )
54
+
55
+ return [
56
+ {
57
+ address: token,
58
+ stateDiff: [
59
+ {
60
+ slot: smartAccountErc20AllowanceSlot,
61
+ value: toHex(amount)
62
+ }
63
+ ]
64
+ }
65
+ ]
66
+ }
@@ -0,0 +1,57 @@
1
+ import { toHex } from "viem"
2
+ import { describe, expect, test } from "vitest"
3
+ import {
4
+ type Erc20BalanceOverrideParameters,
5
+ erc20BalanceOverride
6
+ } from "./erc20BalanceOverride"
7
+
8
+ describe("erc20BalanceOverride", () => {
9
+ test("should return the correct structure for valid inputs", () => {
10
+ const params = {
11
+ token: "0xFFfFfFffFFfffFFfFFfFFFFFffFFFffffFfFFFfF",
12
+ owner: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
13
+ slot: BigInt(1),
14
+ balance: BigInt(1000)
15
+ } as const
16
+
17
+ const result = erc20BalanceOverride(params)
18
+
19
+ expect(result).toEqual([
20
+ {
21
+ address: params.token,
22
+ stateDiff: [
23
+ {
24
+ slot: expect.any(String), // Slot will be a keccak256 hash
25
+ value: toHex(params.balance)
26
+ }
27
+ ]
28
+ }
29
+ ])
30
+ })
31
+
32
+ test("should use the default balance when none is provided", () => {
33
+ const params: Erc20BalanceOverrideParameters = {
34
+ token: "0xFFfFfFffFFfffFFfFFfFFFFFffFFFffffFfFFFfF",
35
+ owner: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
36
+ slot: BigInt(1)
37
+ }
38
+
39
+ const result = erc20BalanceOverride(params)
40
+
41
+ const expectedDefaultBalance = BigInt(
42
+ "0x100000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
43
+ )
44
+
45
+ expect(result).toEqual([
46
+ {
47
+ address: params.token,
48
+ stateDiff: [
49
+ {
50
+ slot: expect.any(String), // Slot will be a keccak256 hash
51
+ value: toHex(expectedDefaultBalance)
52
+ }
53
+ ]
54
+ }
55
+ ])
56
+ })
57
+ })
@@ -0,0 +1,49 @@
1
+ import {
2
+ type Address,
3
+ type StateOverride,
4
+ encodeAbiParameters,
5
+ keccak256,
6
+ toHex
7
+ } from "viem"
8
+
9
+ export type Erc20BalanceOverrideParameters = {
10
+ token: Address
11
+ owner: Address
12
+ slot: bigint
13
+ balance?: bigint
14
+ }
15
+
16
+ export function erc20BalanceOverride({
17
+ token,
18
+ owner,
19
+ slot,
20
+ balance = BigInt(
21
+ "0x100000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
22
+ )
23
+ }: Erc20BalanceOverrideParameters): StateOverride {
24
+ const smartAccountErc20BalanceSlot = keccak256(
25
+ encodeAbiParameters(
26
+ [
27
+ {
28
+ type: "address"
29
+ },
30
+ {
31
+ type: "uint256"
32
+ }
33
+ ],
34
+ [owner, slot]
35
+ )
36
+ )
37
+
38
+ return [
39
+ {
40
+ address: token,
41
+ stateDiff: [
42
+ {
43
+ slot: smartAccountErc20BalanceSlot,
44
+ value: toHex(balance)
45
+ }
46
+ ]
47
+ }
48
+ ]
49
+ }
package/utils/index.ts CHANGED
@@ -17,6 +17,14 @@ import {
17
17
  import { getPackedUserOperation } from "./getPackedUserOperation"
18
18
 
19
19
  import { type EncodeCallDataParams, encode7579Calls } from "./encode7579Calls"
20
+ import {
21
+ type Erc20AllowanceOverrideParameters,
22
+ erc20AllowanceOverride
23
+ } from "./erc20AllowanceOverride"
24
+ import {
25
+ type Erc20BalanceOverrideParameters,
26
+ erc20BalanceOverride
27
+ } from "./erc20BalanceOverride"
20
28
 
21
29
  export {
22
30
  transactionReceiptStatus,
@@ -32,5 +40,9 @@ export {
32
40
  type EncodeInstallModuleParameters,
33
41
  encodeInstallModule,
34
42
  type EncodeCallDataParams,
35
- encode7579Calls
43
+ encode7579Calls,
44
+ erc20AllowanceOverride,
45
+ erc20BalanceOverride,
46
+ type Erc20AllowanceOverrideParameters,
47
+ type Erc20BalanceOverrideParameters
36
48
  }