permissionless 0.3.6 → 0.4.0

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 (229) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/_cjs/accounts/biconomy/toBiconomySmartAccount.js +9 -5
  3. package/_cjs/accounts/biconomy/toBiconomySmartAccount.js.map +1 -1
  4. package/_cjs/accounts/kernel/toKernelSmartAccount.js +4 -0
  5. package/_cjs/accounts/kernel/toKernelSmartAccount.js.map +1 -1
  6. package/_cjs/accounts/light/toLightSmartAccount.js +9 -5
  7. package/_cjs/accounts/light/toLightSmartAccount.js.map +1 -1
  8. package/_cjs/accounts/nexus/toNexusSmartAccount.js +3 -2
  9. package/_cjs/accounts/nexus/toNexusSmartAccount.js.map +1 -1
  10. package/_cjs/accounts/safe/signUserOperation.js +14 -1
  11. package/_cjs/accounts/safe/signUserOperation.js.map +1 -1
  12. package/_cjs/accounts/safe/toSafeSmartAccount.js +6 -4
  13. package/_cjs/accounts/safe/toSafeSmartAccount.js.map +1 -1
  14. package/_cjs/accounts/simple/toSimpleSmartAccount.js +15 -10
  15. package/_cjs/accounts/simple/toSimpleSmartAccount.js.map +1 -1
  16. package/_cjs/accounts/thirdweb/utils/decodeCallData.js +7 -5
  17. package/_cjs/accounts/thirdweb/utils/decodeCallData.js.map +1 -1
  18. package/_cjs/accounts/trust/utils/decodeCallData.js +7 -5
  19. package/_cjs/accounts/trust/utils/decodeCallData.js.map +1 -1
  20. package/_cjs/actions/{erc7579.js → erc7579/index.js} +9 -9
  21. package/_cjs/actions/erc7579/index.js.map +1 -0
  22. package/_cjs/actions/{etherspot.js → etherspot/index.js} +2 -2
  23. package/_cjs/actions/etherspot/index.js.map +1 -0
  24. package/_cjs/actions/{passkeyServer.js → passkeyServer/index.js} +4 -4
  25. package/_cjs/actions/passkeyServer/index.js.map +1 -0
  26. package/_cjs/actions/pimlico/estimateErc20PaymasterCost.js +7 -3
  27. package/_cjs/actions/pimlico/estimateErc20PaymasterCost.js.map +1 -1
  28. package/_cjs/actions/{pimlico.js → pimlico/index.js} +8 -8
  29. package/_cjs/actions/pimlico/index.js.map +1 -0
  30. package/_cjs/actions/{smartAccount.js → smartAccount/index.js} +5 -5
  31. package/_cjs/actions/smartAccount/index.js.map +1 -0
  32. package/_cjs/clients/createSmartAccountClient.js.map +1 -1
  33. package/_cjs/clients/decorators/pimlico.js +4 -4
  34. package/_cjs/clients/decorators/pimlico.js.map +1 -1
  35. package/_cjs/clients/{passkeyServer.js → passkeyServer/index.js} +2 -2
  36. package/_cjs/clients/passkeyServer/index.js.map +1 -0
  37. package/_cjs/clients/{pimlico.js → pimlico/index.js} +2 -2
  38. package/_cjs/clients/pimlico/index.js.map +1 -0
  39. package/_cjs/experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.js +6 -5
  40. package/_cjs/experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.js.map +1 -1
  41. package/_cjs/utils/index.js +3 -1
  42. package/_cjs/utils/index.js.map +1 -1
  43. package/_cjs/utils/sortAddresses.js +16 -0
  44. package/_cjs/utils/sortAddresses.js.map +1 -0
  45. package/_esm/accounts/biconomy/toBiconomySmartAccount.js +9 -5
  46. package/_esm/accounts/biconomy/toBiconomySmartAccount.js.map +1 -1
  47. package/_esm/accounts/kernel/toKernelSmartAccount.js +4 -0
  48. package/_esm/accounts/kernel/toKernelSmartAccount.js.map +1 -1
  49. package/_esm/accounts/light/toLightSmartAccount.js +9 -5
  50. package/_esm/accounts/light/toLightSmartAccount.js.map +1 -1
  51. package/_esm/accounts/nexus/toNexusSmartAccount.js +3 -2
  52. package/_esm/accounts/nexus/toNexusSmartAccount.js.map +1 -1
  53. package/_esm/accounts/safe/signUserOperation.js +14 -1
  54. package/_esm/accounts/safe/signUserOperation.js.map +1 -1
  55. package/_esm/accounts/safe/toSafeSmartAccount.js +6 -4
  56. package/_esm/accounts/safe/toSafeSmartAccount.js.map +1 -1
  57. package/_esm/accounts/simple/toSimpleSmartAccount.js +15 -10
  58. package/_esm/accounts/simple/toSimpleSmartAccount.js.map +1 -1
  59. package/_esm/accounts/thirdweb/utils/decodeCallData.js +7 -5
  60. package/_esm/accounts/thirdweb/utils/decodeCallData.js.map +1 -1
  61. package/_esm/accounts/trust/utils/decodeCallData.js +7 -5
  62. package/_esm/accounts/trust/utils/decodeCallData.js.map +1 -1
  63. package/_esm/actions/{erc7579.js → erc7579/index.js} +9 -9
  64. package/_esm/actions/erc7579/index.js.map +1 -0
  65. package/_esm/actions/etherspot/index.js +2 -0
  66. package/_esm/actions/etherspot/index.js.map +1 -0
  67. package/_esm/actions/passkeyServer/index.js +4 -0
  68. package/_esm/actions/passkeyServer/index.js.map +1 -0
  69. package/_esm/actions/pimlico/estimateErc20PaymasterCost.js +7 -3
  70. package/_esm/actions/pimlico/estimateErc20PaymasterCost.js.map +1 -1
  71. package/_esm/actions/pimlico/index.js +8 -0
  72. package/_esm/actions/pimlico/index.js.map +1 -0
  73. package/_esm/actions/smartAccount/index.js +5 -0
  74. package/_esm/actions/smartAccount/index.js.map +1 -0
  75. package/_esm/clients/createSmartAccountClient.js.map +1 -1
  76. package/_esm/clients/decorators/pimlico.js +1 -1
  77. package/_esm/clients/decorators/pimlico.js.map +1 -1
  78. package/_esm/clients/{passkeyServer.js → passkeyServer/index.js} +2 -2
  79. package/_esm/clients/passkeyServer/index.js.map +1 -0
  80. package/_esm/clients/{pimlico.js → pimlico/index.js} +2 -2
  81. package/_esm/clients/pimlico/index.js.map +1 -0
  82. package/_esm/experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.js +5 -4
  83. package/_esm/experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.js.map +1 -1
  84. package/_esm/utils/index.js +1 -0
  85. package/_esm/utils/index.js.map +1 -1
  86. package/_esm/utils/sortAddresses.js +19 -0
  87. package/_esm/utils/sortAddresses.js.map +1 -0
  88. package/_types/accounts/biconomy/toBiconomySmartAccount.d.ts.map +1 -1
  89. package/_types/accounts/kernel/toKernelSmartAccount.d.ts.map +1 -1
  90. package/_types/accounts/light/toLightSmartAccount.d.ts.map +1 -1
  91. package/_types/accounts/nexus/toNexusSmartAccount.d.ts.map +1 -1
  92. package/_types/accounts/safe/signUserOperation.d.ts.map +1 -1
  93. package/_types/accounts/safe/toSafeSmartAccount.d.ts.map +1 -1
  94. package/_types/accounts/simple/toSimpleSmartAccount.d.ts.map +1 -1
  95. package/_types/accounts/thirdweb/utils/decodeCallData.d.ts.map +1 -1
  96. package/_types/accounts/trust/utils/decodeCallData.d.ts.map +1 -1
  97. package/_types/actions/{erc7579.d.ts → erc7579/index.d.ts} +11 -11
  98. package/_types/actions/erc7579/index.d.ts.map +1 -0
  99. package/_types/actions/etherspot/index.d.ts +2 -0
  100. package/_types/actions/etherspot/index.d.ts.map +1 -0
  101. package/_types/actions/passkeyServer/index.d.ts +4 -0
  102. package/_types/actions/passkeyServer/index.d.ts.map +1 -0
  103. package/_types/actions/pimlico/estimateErc20PaymasterCost.d.ts.map +1 -1
  104. package/_types/actions/pimlico/index.d.ts +8 -0
  105. package/_types/actions/pimlico/index.d.ts.map +1 -0
  106. package/_types/actions/smartAccount/index.d.ts +5 -0
  107. package/_types/actions/smartAccount/index.d.ts.map +1 -0
  108. package/_types/clients/createSmartAccountClient.d.ts +9 -1
  109. package/_types/clients/createSmartAccountClient.d.ts.map +1 -1
  110. package/_types/clients/decorators/pimlico.d.ts +1 -1
  111. package/_types/clients/decorators/pimlico.d.ts.map +1 -1
  112. package/_types/clients/{passkeyServer.d.ts → passkeyServer/index.d.ts} +8 -4
  113. package/_types/clients/passkeyServer/index.d.ts.map +1 -0
  114. package/_types/clients/pimlico/index.d.ts +21 -0
  115. package/_types/clients/pimlico/index.d.ts.map +1 -0
  116. package/_types/experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.d.ts.map +1 -1
  117. package/_types/utils/index.d.ts +1 -0
  118. package/_types/utils/index.d.ts.map +1 -1
  119. package/_types/utils/sortAddresses.d.ts +9 -0
  120. package/_types/utils/sortAddresses.d.ts.map +1 -0
  121. package/accounts/biconomy/package.json +6 -0
  122. package/accounts/biconomy/toBiconomySmartAccount.ts +13 -5
  123. package/accounts/etherspot/package.json +6 -0
  124. package/accounts/kernel/package.json +6 -0
  125. package/accounts/kernel/toKernelSmartAccount.ts +7 -0
  126. package/accounts/light/package.json +6 -0
  127. package/accounts/light/toLightSmartAccount.ts +13 -5
  128. package/accounts/nexus/package.json +6 -0
  129. package/accounts/nexus/toNexusSmartAccount.ts +3 -6
  130. package/accounts/package.json +6 -0
  131. package/accounts/safe/package.json +6 -0
  132. package/accounts/safe/signUserOperation.ts +15 -3
  133. package/accounts/safe/toSafeSmartAccount.ts +7 -6
  134. package/accounts/simple/package.json +6 -0
  135. package/accounts/simple/toSimpleSmartAccount.ts +21 -10
  136. package/accounts/thirdweb/package.json +6 -0
  137. package/accounts/thirdweb/utils/decodeCallData.ts +9 -5
  138. package/accounts/trust/package.json +6 -0
  139. package/accounts/trust/utils/decodeCallData.ts +9 -5
  140. package/actions/{erc7579.ts → erc7579/index.ts} +10 -16
  141. package/actions/erc7579/package.json +6 -0
  142. package/actions/{etherspot.ts → etherspot/index.ts} +1 -1
  143. package/actions/etherspot/package.json +6 -0
  144. package/actions/{passkeyServer.ts → passkeyServer/index.ts} +3 -3
  145. package/actions/passkeyServer/package.json +6 -0
  146. package/actions/pimlico/estimateErc20PaymasterCost.ts +9 -3
  147. package/actions/{pimlico.ts → pimlico/index.ts} +7 -7
  148. package/actions/pimlico/package.json +6 -0
  149. package/actions/smartAccount/index.ts +7 -0
  150. package/actions/smartAccount/package.json +6 -0
  151. package/clients/createSmartAccountClient.ts +45 -20
  152. package/clients/decorators/pimlico.ts +10 -10
  153. package/clients/package.json +6 -0
  154. package/clients/{passkeyServer.ts → passkeyServer/index.ts} +15 -13
  155. package/clients/passkeyServer/package.json +6 -0
  156. package/clients/{pimlico.ts → pimlico/index.ts} +50 -23
  157. package/clients/pimlico/package.json +6 -0
  158. package/errors/package.json +6 -0
  159. package/experimental/pimlico/package.json +6 -0
  160. package/experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.ts +6 -4
  161. package/package.json +34 -29
  162. package/utils/index.ts +1 -0
  163. package/utils/package.json +6 -0
  164. package/utils/sortAddresses.ts +21 -0
  165. package/_cjs/actions/erc7579.js.map +0 -1
  166. package/_cjs/actions/etherspot.js.map +0 -1
  167. package/_cjs/actions/passkeyServer.js.map +0 -1
  168. package/_cjs/actions/pimlico.js.map +0 -1
  169. package/_cjs/actions/smartAccount.js.map +0 -1
  170. package/_cjs/clients/passkeyServer.js.map +0 -1
  171. package/_cjs/clients/pimlico.js.map +0 -1
  172. package/_esm/actions/erc7579.js.map +0 -1
  173. package/_esm/actions/etherspot.js +0 -2
  174. package/_esm/actions/etherspot.js.map +0 -1
  175. package/_esm/actions/passkeyServer.js +0 -4
  176. package/_esm/actions/passkeyServer.js.map +0 -1
  177. package/_esm/actions/pimlico.js +0 -8
  178. package/_esm/actions/pimlico.js.map +0 -1
  179. package/_esm/actions/smartAccount.js +0 -5
  180. package/_esm/actions/smartAccount.js.map +0 -1
  181. package/_esm/clients/passkeyServer.js.map +0 -1
  182. package/_esm/clients/pimlico.js.map +0 -1
  183. package/_types/actions/erc7579.d.ts.map +0 -1
  184. package/_types/actions/etherspot.d.ts +0 -2
  185. package/_types/actions/etherspot.d.ts.map +0 -1
  186. package/_types/actions/passkeyServer.d.ts +0 -4
  187. package/_types/actions/passkeyServer.d.ts.map +0 -1
  188. package/_types/actions/pimlico.d.ts +0 -8
  189. package/_types/actions/pimlico.d.ts.map +0 -1
  190. package/_types/actions/smartAccount.d.ts +0 -5
  191. package/_types/actions/smartAccount.d.ts.map +0 -1
  192. package/_types/clients/passkeyServer.d.ts.map +0 -1
  193. package/_types/clients/pimlico.d.ts +0 -13
  194. package/_types/clients/pimlico.d.ts.map +0 -1
  195. package/accounts/decodeCalls.test.ts +0 -505
  196. package/accounts/safe/signUserOperation.test.ts +0 -275
  197. package/actions/erc7579/accountId.test.ts +0 -39
  198. package/actions/erc7579/installModule.test.ts +0 -214
  199. package/actions/erc7579/installModules.test.ts +0 -235
  200. package/actions/erc7579/isModuleInstalled.test.ts +0 -72
  201. package/actions/erc7579/supportsExecutionMode.test.ts +0 -108
  202. package/actions/erc7579/supportsModule.test.ts +0 -35
  203. package/actions/erc7579/uninstallModule.test.ts +0 -128
  204. package/actions/erc7579/uninstallModules.test.ts +0 -117
  205. package/actions/pimlico/getTokenQuotes.test.ts +0 -90
  206. package/actions/pimlico/getUserOperationGasPrice.test.ts +0 -82
  207. package/actions/pimlico/getUserOperationStatus.test.ts +0 -223
  208. package/actions/pimlico/sponsorUserOperation.test.ts +0 -236
  209. package/actions/pimlico/validateSponsorshipPolicies.test.ts +0 -153
  210. package/actions/public/getAccountNonce.test.ts +0 -96
  211. package/actions/public/getSenderAddress.test.ts +0 -154
  212. package/actions/smartAccount/getCallsStatus.test.ts +0 -253
  213. package/actions/smartAccount/sendCalls.test.ts +0 -569
  214. package/actions/smartAccount/sendTransaction.test.ts +0 -414
  215. package/actions/smartAccount/signMessage.test.ts +0 -217
  216. package/actions/smartAccount/signTypedData.test.ts +0 -226
  217. package/actions/smartAccount.ts +0 -7
  218. package/experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.test.ts +0 -574
  219. package/types/package.json +0 -6
  220. package/utils/decodeNonce.test.ts +0 -40
  221. package/utils/deepHexlify.test.ts +0 -57
  222. package/utils/encode7579Calls.test.ts +0 -69
  223. package/utils/encodeNonce.test.ts +0 -38
  224. package/utils/erc20AllowanceOverride.test.ts +0 -59
  225. package/utils/erc20BalanceOverride.test.ts +0 -57
  226. package/utils/getAddressFromInitCodeOrPaymasterAndData.test.ts +0 -31
  227. package/utils/getPackedUserOperation.test.ts +0 -204
  228. package/utils/getRequiredPrefund.test.ts +0 -90
  229. package/vitest.config.ts +0 -41
@@ -1,13 +0,0 @@
1
- import type { Address, BundlerRpcSchema, Chain, Client, ClientConfig, Prettify, RpcSchema, Transport } from "viem";
2
- import { type BundlerActions, type EntryPointVersion, type PaymasterActions, type SmartAccount } from "viem/account-abstraction";
3
- import type { PimlicoRpcSchema } from "../types/pimlico.js";
4
- import { type PimlicoActions } from "./decorators/pimlico.js";
5
- export type PimlicoClient<entryPointVersion extends EntryPointVersion = EntryPointVersion, transport extends Transport = Transport, chain extends Chain | undefined = Chain | undefined, account extends SmartAccount | undefined = SmartAccount | undefined, client extends Client | undefined = Client | undefined, rpcSchema extends RpcSchema | undefined = undefined> = Prettify<Client<transport, chain extends Chain ? chain : client extends Client<any, infer chain> ? chain : undefined, account, rpcSchema extends RpcSchema ? [...BundlerRpcSchema, ...PimlicoRpcSchema, ...rpcSchema] : [...BundlerRpcSchema, ...PimlicoRpcSchema], BundlerActions<account> & PaymasterActions & PimlicoActions<chain, entryPointVersion>>>;
6
- export type PimlicoClientConfig<entryPointVersion extends EntryPointVersion = EntryPointVersion, transport extends Transport = Transport, chain extends Chain | undefined = Chain | undefined, account extends SmartAccount | undefined = SmartAccount | undefined, rpcSchema extends RpcSchema | undefined = undefined> = Prettify<Pick<ClientConfig<transport, chain, account, rpcSchema>, "account" | "cacheTime" | "chain" | "key" | "name" | "pollingInterval" | "rpcSchema" | "transport">> & {
7
- entryPoint?: {
8
- address: Address;
9
- version: entryPointVersion;
10
- };
11
- };
12
- export declare function createPimlicoClient<entryPointVersion extends EntryPointVersion = "0.7", transport extends Transport = Transport, chain extends Chain | undefined = undefined, account extends SmartAccount | undefined = SmartAccount | undefined, client extends Client | undefined = undefined, rpcSchema extends RpcSchema | undefined = undefined>(parameters: PimlicoClientConfig<entryPointVersion, transport, chain, account, rpcSchema>): PimlicoClient<entryPointVersion, transport, chain, account, client, rpcSchema>;
13
- //# sourceMappingURL=pimlico.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pimlico.d.ts","sourceRoot":"","sources":["../../clients/pimlico.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,OAAO,EACP,gBAAgB,EAChB,KAAK,EACL,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,SAAS,EACZ,MAAM,MAAM,CAAA;AAEb,OAAO,EACH,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAIpB,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,KAAK,cAAc,EAAkB,MAAM,yBAAyB,CAAA;AAE7E,MAAM,MAAM,aAAa,CACrB,iBAAiB,SAAS,iBAAiB,GAAG,iBAAiB,EAC/D,SAAS,SAAS,SAAS,GAAG,SAAS,EACvC,KAAK,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,EACnD,OAAO,SAAS,YAAY,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,EACnE,MAAM,SAAS,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,EACtD,SAAS,SAAS,SAAS,GAAG,SAAS,GAAG,SAAS,IACnD,QAAQ,CACR,MAAM,CACF,SAAS,EACT,KAAK,SAAS,KAAK,GACb,KAAK,GAEL,MAAM,SAAS,MAAM,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,GACrC,KAAK,GACL,SAAS,EACjB,OAAO,EACP,SAAS,SAAS,SAAS,GACrB,CAAC,GAAG,gBAAgB,EAAE,GAAG,gBAAgB,EAAE,GAAG,SAAS,CAAC,GACxD,CAAC,GAAG,gBAAgB,EAAE,GAAG,gBAAgB,CAAC,EAChD,cAAc,CAAC,OAAO,CAAC,GACnB,gBAAgB,GAChB,cAAc,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAC/C,CACJ,CAAA;AAED,MAAM,MAAM,mBAAmB,CAC3B,iBAAiB,SAAS,iBAAiB,GAAG,iBAAiB,EAC/D,SAAS,SAAS,SAAS,GAAG,SAAS,EACvC,KAAK,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,EACnD,OAAO,SAAS,YAAY,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,EACnE,SAAS,SAAS,SAAS,GAAG,SAAS,GAAG,SAAS,IACnD,QAAQ,CACR,IAAI,CACA,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,EAChD,SAAS,GACT,WAAW,GACX,OAAO,GACP,KAAK,GACL,MAAM,GACN,iBAAiB,GACjB,WAAW,GACX,WAAW,CAChB,CACJ,GAAG;IACA,UAAU,CAAC,EAAE;QACT,OAAO,EAAE,OAAO,CAAA;QAChB,OAAO,EAAE,iBAAiB,CAAA;KAC7B,CAAA;CACJ,CAAA;AAED,wBAAgB,mBAAmB,CAC/B,iBAAiB,SAAS,iBAAiB,GAAG,KAAK,EACnD,SAAS,SAAS,SAAS,GAAG,SAAS,EACvC,KAAK,SAAS,KAAK,GAAG,SAAS,GAAG,SAAS,EAC3C,OAAO,SAAS,YAAY,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,EACnE,MAAM,SAAS,MAAM,GAAG,SAAS,GAAG,SAAS,EAC7C,SAAS,SAAS,SAAS,GAAG,SAAS,GAAG,SAAS,EAEnD,UAAU,EAAE,mBAAmB,CAC3B,iBAAiB,EACjB,SAAS,EACT,KAAK,EACL,OAAO,EACP,SAAS,CACZ,GACF,aAAa,CACZ,iBAAiB,EACjB,SAAS,EACT,KAAK,EACL,OAAO,EACP,MAAM,EACN,SAAS,CACZ,CAAA"}
@@ -1,505 +0,0 @@
1
- import {
2
- decodeFunctionData,
3
- encodeFunctionData,
4
- erc20Abi,
5
- zeroAddress
6
- } from "viem"
7
- import { describe, expect } from "vitest"
8
- import { testWithRpc } from "../../permissionless-test/src/testWithRpc"
9
- import { getCoreSmartAccounts } from "../../permissionless-test/src/utils"
10
-
11
- describe.each(getCoreSmartAccounts())(
12
- "decodeCalls $name",
13
- ({ getSmartAccountClient, name, supportsEntryPointV06 }) => {
14
- testWithRpc.skipIf(!supportsEntryPointV06)(
15
- "decodeCalls v0.6 single call with no data",
16
- async ({ rpc }) => {
17
- try {
18
- const smartClient = await getSmartAccountClient({
19
- entryPoint: {
20
- version: "0.6"
21
- },
22
- ...rpc
23
- })
24
-
25
- const callData = await smartClient.account.encodeCalls([
26
- {
27
- to: zeroAddress,
28
- data: "0x",
29
- value: 0n
30
- }
31
- ])
32
-
33
- if (!smartClient.account.decodeCalls) {
34
- throw new Error("decodeCalls is not supported")
35
- }
36
-
37
- const decoded =
38
- await smartClient.account.decodeCalls(callData)
39
-
40
- expect(decoded).toEqual([
41
- { to: zeroAddress, data: "0x", value: 0n }
42
- ])
43
- } catch (e) {
44
- if (
45
- e instanceof Error &&
46
- e.message === "Kernel ERC7579 is not supported for V06"
47
- ) {
48
- return // Expected error for ERC7579 accounts with v0.6
49
- }
50
- throw e
51
- }
52
- }
53
- )
54
-
55
- testWithRpc.skipIf(!supportsEntryPointV06)(
56
- "decodeCalls v0.6 single call with data",
57
- async ({ rpc }) => {
58
- try {
59
- const smartClient = await getSmartAccountClient({
60
- entryPoint: {
61
- version: "0.6"
62
- },
63
- ...rpc
64
- })
65
-
66
- const erc20TransactionData = encodeFunctionData({
67
- abi: erc20Abi,
68
- functionName: "transfer",
69
- args: [zeroAddress, 1000000000000000000n]
70
- })
71
-
72
- const callData = await smartClient.account.encodeCalls([
73
- {
74
- to: zeroAddress,
75
- data: erc20TransactionData,
76
- value: 0n
77
- }
78
- ])
79
-
80
- if (!smartClient.account.decodeCalls) {
81
- throw new Error("decodeCalls is not supported")
82
- }
83
-
84
- const decoded =
85
- await smartClient.account.decodeCalls(callData)
86
-
87
- expect(decoded).toEqual([
88
- {
89
- to: zeroAddress,
90
- data: erc20TransactionData,
91
- value: 0n
92
- }
93
- ])
94
-
95
- const decodeErc20TransactionData = decodeFunctionData({
96
- abi: erc20Abi,
97
- data: erc20TransactionData
98
- })
99
-
100
- expect(decodeErc20TransactionData.args).toEqual([
101
- zeroAddress,
102
- 1000000000000000000n
103
- ])
104
- } catch (e) {
105
- if (
106
- e instanceof Error &&
107
- e.message === "Kernel ERC7579 is not supported for V06"
108
- ) {
109
- return // Expected error for ERC7579 accounts with v0.6
110
- }
111
- throw e
112
- }
113
- }
114
- )
115
-
116
- testWithRpc.skipIf(!supportsEntryPointV06)(
117
- "decodeCalls v0.6 multiple calls",
118
- async ({ rpc }) => {
119
- try {
120
- const smartClient = await getSmartAccountClient({
121
- entryPoint: {
122
- version: "0.6"
123
- },
124
- ...rpc
125
- })
126
-
127
- const erc20TransactionData = encodeFunctionData({
128
- abi: erc20Abi,
129
- functionName: "transfer",
130
- args: [zeroAddress, 1000000000000000000n]
131
- })
132
-
133
- const callData = await smartClient.account.encodeCalls([
134
- {
135
- to: zeroAddress,
136
- data: "0x",
137
- value: 0n
138
- },
139
- {
140
- to: zeroAddress,
141
- data: erc20TransactionData,
142
- value: 10n
143
- }
144
- ])
145
-
146
- if (!smartClient.account.decodeCalls) {
147
- throw new Error("decodeCalls is not supported")
148
- }
149
-
150
- const decoded =
151
- await smartClient.account.decodeCalls(callData)
152
-
153
- expect(decoded).toEqual([
154
- { to: zeroAddress, data: "0x", value: 0n },
155
- {
156
- to: zeroAddress,
157
- data: erc20TransactionData,
158
- value: name === "Simple" ? 0n : 10n
159
- }
160
- ])
161
-
162
- const decodeErc20TransactionData = decodeFunctionData({
163
- abi: erc20Abi,
164
- data: erc20TransactionData
165
- })
166
-
167
- expect(decodeErc20TransactionData.args).toEqual([
168
- zeroAddress,
169
- 1000000000000000000n
170
- ])
171
- } catch (e) {
172
- if (
173
- e instanceof Error &&
174
- e.message === "Kernel ERC7579 is not supported for V06"
175
- ) {
176
- return // Expected error for ERC7579 accounts with v0.6
177
- }
178
- throw e
179
- }
180
- }
181
- )
182
-
183
- testWithRpc(
184
- "decodeCalls v0.7 single call with no data",
185
- async ({ rpc }) => {
186
- try {
187
- const smartClient = await getSmartAccountClient({
188
- entryPoint: {
189
- version: "0.7"
190
- },
191
- ...rpc
192
- })
193
-
194
- const callData = await smartClient.account.encodeCalls([
195
- {
196
- to: zeroAddress,
197
- data: "0x",
198
- value: 0n
199
- }
200
- ])
201
-
202
- if (!smartClient.account.decodeCalls) {
203
- throw new Error("decodeCalls is not supported")
204
- }
205
-
206
- const decoded =
207
- await smartClient.account.decodeCalls(callData)
208
-
209
- expect(decoded).toEqual([
210
- { to: zeroAddress, data: "0x", value: 0n }
211
- ])
212
- } catch (e) {
213
- if (
214
- e instanceof Error &&
215
- e.message === "Kernel ERC7579 is not supported for V06"
216
- ) {
217
- return // Expected error for ERC7579 accounts with v0.6
218
- }
219
- throw e
220
- }
221
- }
222
- )
223
-
224
- testWithRpc(
225
- "decodeCalls v0.7 single call with data",
226
- async ({ rpc }) => {
227
- try {
228
- const smartClient = await getSmartAccountClient({
229
- entryPoint: {
230
- version: "0.7"
231
- },
232
- ...rpc
233
- })
234
-
235
- const erc20TransactionData = encodeFunctionData({
236
- abi: erc20Abi,
237
- functionName: "transfer",
238
- args: [zeroAddress, 1000000000000000000n]
239
- })
240
-
241
- const callData = await smartClient.account.encodeCalls([
242
- {
243
- to: zeroAddress,
244
- data: erc20TransactionData,
245
- value: 0n
246
- }
247
- ])
248
-
249
- if (!smartClient.account.decodeCalls) {
250
- throw new Error("decodeCalls is not supported")
251
- }
252
-
253
- const decoded =
254
- await smartClient.account.decodeCalls(callData)
255
-
256
- expect(decoded).toEqual([
257
- {
258
- to: zeroAddress,
259
- data: erc20TransactionData,
260
- value: 0n
261
- }
262
- ])
263
-
264
- const decodeErc20TransactionData = decodeFunctionData({
265
- abi: erc20Abi,
266
- data: erc20TransactionData
267
- })
268
-
269
- expect(decodeErc20TransactionData.args).toEqual([
270
- zeroAddress,
271
- 1000000000000000000n
272
- ])
273
- } catch (e) {
274
- if (
275
- e instanceof Error &&
276
- e.message === "Kernel ERC7579 is not supported for V06"
277
- ) {
278
- return // Expected error for ERC7579 accounts with v0.6
279
- }
280
- throw e
281
- }
282
- }
283
- )
284
-
285
- testWithRpc("decodeCalls v0.7 multiple calls", async ({ rpc }) => {
286
- try {
287
- const smartClient = await getSmartAccountClient({
288
- entryPoint: {
289
- version: "0.7"
290
- },
291
- ...rpc
292
- })
293
-
294
- const erc20TransactionData = encodeFunctionData({
295
- abi: erc20Abi,
296
- functionName: "transfer",
297
- args: [zeroAddress, 1000000000000000000n]
298
- })
299
-
300
- const callData = await smartClient.account.encodeCalls([
301
- {
302
- to: zeroAddress,
303
- data: "0x",
304
- value: 0n
305
- },
306
- {
307
- to: zeroAddress,
308
- data: erc20TransactionData,
309
- value: 10n
310
- }
311
- ])
312
-
313
- if (!smartClient.account.decodeCalls) {
314
- throw new Error("decodeCalls is not supported")
315
- }
316
-
317
- const decoded = await smartClient.account.decodeCalls(callData)
318
-
319
- expect(decoded).toEqual([
320
- { to: zeroAddress, data: "0x", value: 0n },
321
- { to: zeroAddress, data: erc20TransactionData, value: 10n }
322
- ])
323
-
324
- const decodeErc20TransactionData = decodeFunctionData({
325
- abi: erc20Abi,
326
- data: erc20TransactionData
327
- })
328
-
329
- expect(decodeErc20TransactionData.args).toEqual([
330
- zeroAddress,
331
- 1000000000000000000n
332
- ])
333
- } catch (e) {
334
- if (
335
- e instanceof Error &&
336
- e.message === "Kernel ERC7579 is not supported for V06"
337
- ) {
338
- return // Expected error for ERC7579 accounts with v0.6
339
- }
340
- throw e
341
- }
342
- })
343
-
344
- testWithRpc(
345
- "decodeCalls v0.8 single call with no data",
346
- async ({ rpc }) => {
347
- try {
348
- const smartClient = await getSmartAccountClient({
349
- entryPoint: {
350
- version: "0.8"
351
- },
352
- ...rpc
353
- })
354
-
355
- const callData = await smartClient.account.encodeCalls([
356
- {
357
- to: zeroAddress,
358
- data: "0x",
359
- value: 0n
360
- }
361
- ])
362
-
363
- if (!smartClient.account.decodeCalls) {
364
- throw new Error("decodeCalls is not supported")
365
- }
366
-
367
- const decoded =
368
- await smartClient.account.decodeCalls(callData)
369
-
370
- expect(decoded).toEqual([
371
- { to: zeroAddress, data: "0x", value: 0n }
372
- ])
373
- } catch (e) {
374
- if (
375
- e instanceof Error &&
376
- e.message === "Kernel ERC7579 is not supported for V06"
377
- ) {
378
- return // Expected error for ERC7579 accounts with v0.6
379
- }
380
- throw e
381
- }
382
- }
383
- )
384
-
385
- testWithRpc(
386
- "decodeCalls v0.8 single call with data",
387
- async ({ rpc }) => {
388
- try {
389
- const smartClient = await getSmartAccountClient({
390
- entryPoint: {
391
- version: "0.8"
392
- },
393
- ...rpc
394
- })
395
-
396
- const erc20TransactionData = encodeFunctionData({
397
- abi: erc20Abi,
398
- functionName: "transfer",
399
- args: [zeroAddress, 1000000000000000000n]
400
- })
401
-
402
- const callData = await smartClient.account.encodeCalls([
403
- {
404
- to: zeroAddress,
405
- data: erc20TransactionData,
406
- value: 0n
407
- }
408
- ])
409
-
410
- if (!smartClient.account.decodeCalls) {
411
- throw new Error("decodeCalls is not supported")
412
- }
413
-
414
- const decoded =
415
- await smartClient.account.decodeCalls(callData)
416
-
417
- expect(decoded).toEqual([
418
- {
419
- to: zeroAddress,
420
- data: erc20TransactionData,
421
- value: 0n
422
- }
423
- ])
424
-
425
- const decodeErc20TransactionData = decodeFunctionData({
426
- abi: erc20Abi,
427
- data: erc20TransactionData
428
- })
429
-
430
- expect(decodeErc20TransactionData.args).toEqual([
431
- zeroAddress,
432
- 1000000000000000000n
433
- ])
434
- } catch (e) {
435
- if (
436
- e instanceof Error &&
437
- e.message === "Kernel ERC7579 is not supported for V06"
438
- ) {
439
- return // Expected error for ERC7579 accounts with v0.6
440
- }
441
- throw e
442
- }
443
- }
444
- )
445
-
446
- testWithRpc("decodeCalls v0.8 multiple calls", async ({ rpc }) => {
447
- try {
448
- const smartClient = await getSmartAccountClient({
449
- entryPoint: {
450
- version: "0.8"
451
- },
452
- ...rpc
453
- })
454
-
455
- const erc20TransactionData = encodeFunctionData({
456
- abi: erc20Abi,
457
- functionName: "transfer",
458
- args: [zeroAddress, 1000000000000000000n]
459
- })
460
-
461
- const callData = await smartClient.account.encodeCalls([
462
- {
463
- to: zeroAddress,
464
- data: "0x",
465
- value: 0n
466
- },
467
- {
468
- to: zeroAddress,
469
- data: erc20TransactionData,
470
- value: 10n
471
- }
472
- ])
473
-
474
- if (!smartClient.account.decodeCalls) {
475
- throw new Error("decodeCalls is not supported")
476
- }
477
-
478
- const decoded = await smartClient.account.decodeCalls(callData)
479
-
480
- expect(decoded).toEqual([
481
- { to: zeroAddress, data: "0x", value: 0n },
482
- { to: zeroAddress, data: erc20TransactionData, value: 10n }
483
- ])
484
-
485
- const decodeErc20TransactionData = decodeFunctionData({
486
- abi: erc20Abi,
487
- data: erc20TransactionData
488
- })
489
-
490
- expect(decodeErc20TransactionData.args).toEqual([
491
- zeroAddress,
492
- 1000000000000000000n
493
- ])
494
- } catch (e) {
495
- if (
496
- e instanceof Error &&
497
- e.message === "Kernel ERC7579 is not supported for V06"
498
- ) {
499
- return // Expected error for ERC7579 accounts with v0.6
500
- }
501
- throw e
502
- }
503
- })
504
- }
505
- )