thirdweb 5.74.0 → 5.75.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 (553) hide show
  1. package/dist/cjs/adapters/ethers5.js +2 -2
  2. package/dist/cjs/adapters/ethers5.js.map +1 -1
  3. package/dist/cjs/adapters/ethers6.js.map +1 -1
  4. package/dist/cjs/auth/verify-hash.js +2 -1
  5. package/dist/cjs/auth/verify-hash.js.map +1 -1
  6. package/dist/cjs/auth/verify-signature.js.map +1 -1
  7. package/dist/cjs/contract/actions/resolve-abi.js +4 -0
  8. package/dist/cjs/contract/actions/resolve-abi.js.map +1 -1
  9. package/dist/cjs/exports/wallets/smart.js +3 -1
  10. package/dist/cjs/exports/wallets/smart.js.map +1 -1
  11. package/dist/cjs/extensions/erc1271/checkContractWalletSignedTypedData.js +6 -2
  12. package/dist/cjs/extensions/erc1271/checkContractWalletSignedTypedData.js.map +1 -1
  13. package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/events/ModuleInstalled.js +27 -0
  14. package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/events/ModuleInstalled.js.map +1 -0
  15. package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/events/ModuleUninstalled.js +27 -0
  16. package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/events/ModuleUninstalled.js.map +1 -0
  17. package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/read/accountId.js +71 -0
  18. package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/read/accountId.js.map +1 -0
  19. package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/read/isModuleInstalled.js +132 -0
  20. package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/read/isModuleInstalled.js.map +1 -0
  21. package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/read/isValidSignature.js +121 -0
  22. package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/read/isValidSignature.js.map +1 -0
  23. package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/read/supportsExecutionMode.js +114 -0
  24. package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/read/supportsExecutionMode.js.map +1 -0
  25. package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/read/supportsModule.js +114 -0
  26. package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/read/supportsModule.js.map +1 -0
  27. package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/write/execute.js +127 -0
  28. package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/write/execute.js.map +1 -0
  29. package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/write/executeFromExecutor.js +132 -0
  30. package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/write/executeFromExecutor.js.map +1 -0
  31. package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/write/installModule.js +139 -0
  32. package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/write/installModule.js.map +1 -0
  33. package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/write/uninstallModule.js +139 -0
  34. package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/write/uninstallModule.js.map +1 -0
  35. package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/events/OwnershipTransferred.js +32 -0
  36. package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/events/OwnershipTransferred.js.map +1 -0
  37. package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/events/Upgraded.js +31 -0
  38. package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/events/Upgraded.js.map +1 -0
  39. package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/read/accountImplementation.js +70 -0
  40. package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/read/accountImplementation.js.map +1 -0
  41. package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/read/entrypoint.js +70 -0
  42. package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/read/entrypoint.js.map +1 -0
  43. package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/read/getAddress.js +122 -0
  44. package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/read/getAddress.js.map +1 -0
  45. package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/read/implementation.js +71 -0
  46. package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/read/implementation.js.map +1 -0
  47. package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/read/owner.js +71 -0
  48. package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/read/owner.js.map +1 -0
  49. package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/write/addStake.js +117 -0
  50. package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/write/addStake.js.map +1 -0
  51. package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/write/createAccountWithModules.js +157 -0
  52. package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/write/createAccountWithModules.js.map +1 -0
  53. package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/write/renounceOwnership.js +51 -0
  54. package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/write/renounceOwnership.js.map +1 -0
  55. package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/write/transferOwnership.js +117 -0
  56. package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/write/transferOwnership.js.map +1 -0
  57. package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/write/unlockStake.js +51 -0
  58. package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/write/unlockStake.js.map +1 -0
  59. package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/write/upgradeTo.js +117 -0
  60. package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/write/upgradeTo.js.map +1 -0
  61. package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/write/withdraw.js +139 -0
  62. package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/write/withdraw.js.map +1 -0
  63. package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/write/withdrawStake.js +117 -0
  64. package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/write/withdrawStake.js.map +1 -0
  65. package/dist/cjs/extensions/marketplace/direct-listings/write/buyFromListing.js +6 -0
  66. package/dist/cjs/extensions/marketplace/direct-listings/write/buyFromListing.js.map +1 -1
  67. package/dist/cjs/extensions/pack/createNewPack.js +1 -0
  68. package/dist/cjs/extensions/pack/createNewPack.js.map +1 -1
  69. package/dist/cjs/react/web/ui/prebuilt/Account/avatar.js +1 -0
  70. package/dist/cjs/react/web/ui/prebuilt/Account/avatar.js.map +1 -1
  71. package/dist/cjs/react/web/ui/prebuilt/Account/balance.js +1 -0
  72. package/dist/cjs/react/web/ui/prebuilt/Account/balance.js.map +1 -1
  73. package/dist/cjs/react/web/ui/prebuilt/Account/name.js +1 -0
  74. package/dist/cjs/react/web/ui/prebuilt/Account/name.js.map +1 -1
  75. package/dist/cjs/react/web/utils/usePreloadWalletProviders.js +1 -1
  76. package/dist/cjs/react/web/utils/usePreloadWalletProviders.js.map +1 -1
  77. package/dist/cjs/transaction/actions/estimate-gas.js.map +1 -1
  78. package/dist/cjs/transaction/actions/gasless/providers/biconomy.js.map +1 -1
  79. package/dist/cjs/transaction/actions/gasless/providers/engine.js.map +1 -1
  80. package/dist/cjs/transaction/actions/gasless/providers/openzeppelin.js.map +1 -1
  81. package/dist/cjs/transaction/actions/sign-transaction.js +4 -7
  82. package/dist/cjs/transaction/actions/sign-transaction.js.map +1 -1
  83. package/dist/cjs/transaction/actions/to-serializable-transaction.js.map +1 -1
  84. package/dist/cjs/transaction/actions/zksync/getEip721Domain.js.map +1 -1
  85. package/dist/cjs/transaction/serialize-transaction.js +76 -9
  86. package/dist/cjs/transaction/serialize-transaction.js.map +1 -1
  87. package/dist/cjs/utils/any-evm/keyless-transaction.js +25 -4
  88. package/dist/cjs/utils/any-evm/keyless-transaction.js.map +1 -1
  89. package/dist/cjs/utils/hashing/hashMessage.js +2 -2
  90. package/dist/cjs/utils/hashing/hashMessage.js.map +1 -1
  91. package/dist/cjs/utils/hashing/hashTypedData.js +8 -6
  92. package/dist/cjs/utils/hashing/hashTypedData.js.map +1 -1
  93. package/dist/cjs/utils/signatures/helpers/{parseTypedData.js → parse-typed-data.js} +4 -4
  94. package/dist/cjs/utils/signatures/helpers/parse-typed-data.js.map +1 -0
  95. package/dist/cjs/utils/signatures/sign-message.js +12 -6
  96. package/dist/cjs/utils/signatures/sign-message.js.map +1 -1
  97. package/dist/cjs/utils/signatures/sign-typed-data.js +11 -8
  98. package/dist/cjs/utils/signatures/sign-typed-data.js.map +1 -1
  99. package/dist/cjs/utils/signatures/sign.js +4 -4
  100. package/dist/cjs/utils/signatures/sign.js.map +1 -1
  101. package/dist/cjs/utils/signatures/signature-to-hex.js +17 -10
  102. package/dist/cjs/utils/signatures/signature-to-hex.js.map +1 -1
  103. package/dist/cjs/utils/types.js +5 -0
  104. package/dist/cjs/utils/types.js.map +1 -1
  105. package/dist/cjs/version.js +1 -1
  106. package/dist/cjs/wallets/coinbase/{coinbaseMobileSDK.js → coinbase-mobile.js} +1 -1
  107. package/dist/cjs/wallets/coinbase/coinbase-mobile.js.map +1 -0
  108. package/dist/cjs/wallets/coinbase/coinbase-wallet.js +2 -2
  109. package/dist/cjs/wallets/coinbase/coinbase-wallet.js.map +1 -1
  110. package/dist/cjs/wallets/coinbase/{coinbaseWebSDK.js → coinbase-web.js} +11 -11
  111. package/dist/cjs/wallets/coinbase/coinbase-web.js.map +1 -0
  112. package/dist/cjs/wallets/create-wallet.js +2 -2
  113. package/dist/cjs/wallets/create-wallet.js.map +1 -1
  114. package/dist/cjs/wallets/eip5792/get-calls-status.js +3 -3
  115. package/dist/cjs/wallets/eip5792/get-calls-status.js.map +1 -1
  116. package/dist/cjs/wallets/eip5792/get-capabilities.js +3 -3
  117. package/dist/cjs/wallets/eip5792/get-capabilities.js.map +1 -1
  118. package/dist/cjs/wallets/eip5792/send-calls.js +3 -3
  119. package/dist/cjs/wallets/eip5792/send-calls.js.map +1 -1
  120. package/dist/cjs/wallets/eip5792/show-calls-status.js +3 -3
  121. package/dist/cjs/wallets/eip5792/show-calls-status.js.map +1 -1
  122. package/dist/cjs/wallets/in-app/core/actions/sign-typed-data.enclave.js.map +1 -1
  123. package/dist/cjs/wallets/in-app/core/wallet/enclave-wallet.js +2 -2
  124. package/dist/cjs/wallets/in-app/core/wallet/enclave-wallet.js.map +1 -1
  125. package/dist/cjs/wallets/in-app/web/lib/iframe-wallet.js +3 -3
  126. package/dist/cjs/wallets/in-app/web/lib/iframe-wallet.js.map +1 -1
  127. package/dist/cjs/wallets/injected/index.js +2 -2
  128. package/dist/cjs/wallets/injected/index.js.map +1 -1
  129. package/dist/cjs/wallets/native/create-wallet.js +2 -2
  130. package/dist/cjs/wallets/native/create-wallet.js.map +1 -1
  131. package/dist/cjs/wallets/private-key.js +2 -5
  132. package/dist/cjs/wallets/private-key.js.map +1 -1
  133. package/dist/cjs/wallets/smart/index.js +26 -160
  134. package/dist/cjs/wallets/smart/index.js.map +1 -1
  135. package/dist/cjs/wallets/smart/lib/bundler.js +1 -1
  136. package/dist/cjs/wallets/smart/lib/bundler.js.map +1 -1
  137. package/dist/cjs/wallets/smart/lib/calls.js +2 -2
  138. package/dist/cjs/wallets/smart/lib/calls.js.map +1 -1
  139. package/dist/cjs/wallets/smart/lib/paymaster.js +7 -6
  140. package/dist/cjs/wallets/smart/lib/paymaster.js.map +1 -1
  141. package/dist/cjs/wallets/smart/lib/signing.js +166 -0
  142. package/dist/cjs/wallets/smart/lib/signing.js.map +1 -0
  143. package/dist/cjs/wallets/smart/lib/userop.js +1 -1
  144. package/dist/cjs/wallets/smart/lib/userop.js.map +1 -1
  145. package/dist/cjs/wallets/smart/presets/7579.js +218 -0
  146. package/dist/cjs/wallets/smart/presets/7579.js.map +1 -0
  147. package/dist/cjs/wallets/smart/presets/index.js +6 -0
  148. package/dist/cjs/wallets/smart/presets/index.js.map +1 -0
  149. package/dist/cjs/wallets/smart/smart-wallet.js.map +1 -1
  150. package/dist/cjs/wallets/smart/types.js.map +1 -1
  151. package/dist/cjs/wallets/wallet-connect/controller.js +2 -2
  152. package/dist/cjs/wallets/wallet-connect/controller.js.map +1 -1
  153. package/dist/esm/adapters/ethers5.js +2 -2
  154. package/dist/esm/adapters/ethers5.js.map +1 -1
  155. package/dist/esm/adapters/ethers6.js.map +1 -1
  156. package/dist/esm/auth/verify-hash.js +2 -1
  157. package/dist/esm/auth/verify-hash.js.map +1 -1
  158. package/dist/esm/auth/verify-signature.js.map +1 -1
  159. package/dist/esm/contract/actions/resolve-abi.js +4 -0
  160. package/dist/esm/contract/actions/resolve-abi.js.map +1 -1
  161. package/dist/esm/exports/wallets/smart.js +2 -0
  162. package/dist/esm/exports/wallets/smart.js.map +1 -1
  163. package/dist/esm/extensions/erc1271/checkContractWalletSignedTypedData.js +6 -2
  164. package/dist/esm/extensions/erc1271/checkContractWalletSignedTypedData.js.map +1 -1
  165. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/events/ModuleInstalled.js +24 -0
  166. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/events/ModuleInstalled.js.map +1 -0
  167. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/events/ModuleUninstalled.js +24 -0
  168. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/events/ModuleUninstalled.js.map +1 -0
  169. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/read/accountId.js +65 -0
  170. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/read/accountId.js.map +1 -0
  171. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/read/isModuleInstalled.js +124 -0
  172. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/read/isModuleInstalled.js.map +1 -0
  173. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/read/isValidSignature.js +113 -0
  174. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/read/isValidSignature.js.map +1 -0
  175. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/read/supportsExecutionMode.js +106 -0
  176. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/read/supportsExecutionMode.js.map +1 -0
  177. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/read/supportsModule.js +106 -0
  178. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/read/supportsModule.js.map +1 -0
  179. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/write/execute.js +120 -0
  180. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/write/execute.js.map +1 -0
  181. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/write/executeFromExecutor.js +125 -0
  182. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/write/executeFromExecutor.js.map +1 -0
  183. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/write/installModule.js +132 -0
  184. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/write/installModule.js.map +1 -0
  185. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/write/uninstallModule.js +132 -0
  186. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/write/uninstallModule.js.map +1 -0
  187. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/events/OwnershipTransferred.js +29 -0
  188. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/events/OwnershipTransferred.js.map +1 -0
  189. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/events/Upgraded.js +28 -0
  190. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/events/Upgraded.js.map +1 -0
  191. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/read/accountImplementation.js +64 -0
  192. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/read/accountImplementation.js.map +1 -0
  193. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/read/entrypoint.js +64 -0
  194. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/read/entrypoint.js.map +1 -0
  195. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/read/getAddress.js +114 -0
  196. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/read/getAddress.js.map +1 -0
  197. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/read/implementation.js +65 -0
  198. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/read/implementation.js.map +1 -0
  199. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/read/owner.js +65 -0
  200. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/read/owner.js.map +1 -0
  201. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/addStake.js +110 -0
  202. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/addStake.js.map +1 -0
  203. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/createAccountWithModules.js +150 -0
  204. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/createAccountWithModules.js.map +1 -0
  205. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/renounceOwnership.js +46 -0
  206. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/renounceOwnership.js.map +1 -0
  207. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/transferOwnership.js +110 -0
  208. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/transferOwnership.js.map +1 -0
  209. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/unlockStake.js +46 -0
  210. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/unlockStake.js.map +1 -0
  211. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/upgradeTo.js +110 -0
  212. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/upgradeTo.js.map +1 -0
  213. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/withdraw.js +132 -0
  214. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/withdraw.js.map +1 -0
  215. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/withdrawStake.js +110 -0
  216. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/withdrawStake.js.map +1 -0
  217. package/dist/esm/extensions/marketplace/direct-listings/write/buyFromListing.js +6 -0
  218. package/dist/esm/extensions/marketplace/direct-listings/write/buyFromListing.js.map +1 -1
  219. package/dist/esm/extensions/pack/createNewPack.js +1 -0
  220. package/dist/esm/extensions/pack/createNewPack.js.map +1 -1
  221. package/dist/esm/react/web/ui/prebuilt/Account/avatar.js +1 -0
  222. package/dist/esm/react/web/ui/prebuilt/Account/avatar.js.map +1 -1
  223. package/dist/esm/react/web/ui/prebuilt/Account/balance.js +1 -0
  224. package/dist/esm/react/web/ui/prebuilt/Account/balance.js.map +1 -1
  225. package/dist/esm/react/web/ui/prebuilt/Account/name.js +1 -0
  226. package/dist/esm/react/web/ui/prebuilt/Account/name.js.map +1 -1
  227. package/dist/esm/react/web/utils/usePreloadWalletProviders.js +1 -1
  228. package/dist/esm/react/web/utils/usePreloadWalletProviders.js.map +1 -1
  229. package/dist/esm/transaction/actions/estimate-gas.js +3 -3
  230. package/dist/esm/transaction/actions/estimate-gas.js.map +1 -1
  231. package/dist/esm/transaction/actions/gasless/providers/biconomy.js.map +1 -1
  232. package/dist/esm/transaction/actions/gasless/providers/engine.js.map +1 -1
  233. package/dist/esm/transaction/actions/gasless/providers/openzeppelin.js.map +1 -1
  234. package/dist/esm/transaction/actions/sign-transaction.js +5 -8
  235. package/dist/esm/transaction/actions/sign-transaction.js.map +1 -1
  236. package/dist/esm/transaction/actions/to-serializable-transaction.js.map +1 -1
  237. package/dist/esm/transaction/actions/zksync/getEip721Domain.js.map +1 -1
  238. package/dist/esm/transaction/serialize-transaction.js +76 -9
  239. package/dist/esm/transaction/serialize-transaction.js.map +1 -1
  240. package/dist/esm/utils/any-evm/keyless-transaction.js +26 -5
  241. package/dist/esm/utils/any-evm/keyless-transaction.js.map +1 -1
  242. package/dist/esm/utils/hashing/hashMessage.js +2 -2
  243. package/dist/esm/utils/hashing/hashMessage.js.map +1 -1
  244. package/dist/esm/utils/hashing/hashTypedData.js +8 -6
  245. package/dist/esm/utils/hashing/hashTypedData.js.map +1 -1
  246. package/dist/esm/utils/signatures/helpers/parse-typed-data.js +15 -0
  247. package/dist/esm/utils/signatures/helpers/parse-typed-data.js.map +1 -0
  248. package/dist/esm/utils/signatures/sign-message.js +12 -6
  249. package/dist/esm/utils/signatures/sign-message.js.map +1 -1
  250. package/dist/esm/utils/signatures/sign-typed-data.js +11 -8
  251. package/dist/esm/utils/signatures/sign-typed-data.js.map +1 -1
  252. package/dist/esm/utils/signatures/sign.js +4 -4
  253. package/dist/esm/utils/signatures/sign.js.map +1 -1
  254. package/dist/esm/utils/signatures/signature-to-hex.js +17 -10
  255. package/dist/esm/utils/signatures/signature-to-hex.js.map +1 -1
  256. package/dist/esm/utils/types.js +4 -1
  257. package/dist/esm/utils/types.js.map +1 -1
  258. package/dist/esm/version.js +1 -1
  259. package/dist/esm/wallets/coinbase/{coinbaseMobileSDK.js → coinbase-mobile.js} +1 -1
  260. package/dist/esm/wallets/coinbase/coinbase-mobile.js.map +1 -0
  261. package/dist/esm/wallets/coinbase/coinbase-wallet.js +2 -2
  262. package/dist/esm/wallets/coinbase/coinbase-wallet.js.map +1 -1
  263. package/dist/esm/wallets/coinbase/{coinbaseWebSDK.js → coinbase-web.js} +11 -11
  264. package/dist/esm/wallets/coinbase/coinbase-web.js.map +1 -0
  265. package/dist/esm/wallets/create-wallet.js +1 -1
  266. package/dist/esm/wallets/create-wallet.js.map +1 -1
  267. package/dist/esm/wallets/eip5792/get-calls-status.js +2 -2
  268. package/dist/esm/wallets/eip5792/get-calls-status.js.map +1 -1
  269. package/dist/esm/wallets/eip5792/get-capabilities.js +2 -2
  270. package/dist/esm/wallets/eip5792/get-capabilities.js.map +1 -1
  271. package/dist/esm/wallets/eip5792/send-calls.js +2 -2
  272. package/dist/esm/wallets/eip5792/send-calls.js.map +1 -1
  273. package/dist/esm/wallets/eip5792/show-calls-status.js +2 -2
  274. package/dist/esm/wallets/eip5792/show-calls-status.js.map +1 -1
  275. package/dist/esm/wallets/in-app/core/actions/sign-typed-data.enclave.js.map +1 -1
  276. package/dist/esm/wallets/in-app/core/wallet/enclave-wallet.js +1 -1
  277. package/dist/esm/wallets/in-app/core/wallet/enclave-wallet.js.map +1 -1
  278. package/dist/esm/wallets/in-app/web/lib/iframe-wallet.js +2 -2
  279. package/dist/esm/wallets/in-app/web/lib/iframe-wallet.js.map +1 -1
  280. package/dist/esm/wallets/injected/index.js +1 -1
  281. package/dist/esm/wallets/injected/index.js.map +1 -1
  282. package/dist/esm/wallets/native/create-wallet.js +1 -1
  283. package/dist/esm/wallets/native/create-wallet.js.map +1 -1
  284. package/dist/esm/wallets/private-key.js +2 -5
  285. package/dist/esm/wallets/private-key.js.map +1 -1
  286. package/dist/esm/wallets/smart/index.js +24 -158
  287. package/dist/esm/wallets/smart/index.js.map +1 -1
  288. package/dist/esm/wallets/smart/lib/bundler.js +1 -1
  289. package/dist/esm/wallets/smart/lib/bundler.js.map +1 -1
  290. package/dist/esm/wallets/smart/lib/calls.js +2 -2
  291. package/dist/esm/wallets/smart/lib/calls.js.map +1 -1
  292. package/dist/esm/wallets/smart/lib/paymaster.js +7 -6
  293. package/dist/esm/wallets/smart/lib/paymaster.js.map +1 -1
  294. package/dist/esm/wallets/smart/lib/signing.js +161 -0
  295. package/dist/esm/wallets/smart/lib/signing.js.map +1 -0
  296. package/dist/esm/wallets/smart/lib/userop.js +1 -1
  297. package/dist/esm/wallets/smart/lib/userop.js.map +1 -1
  298. package/dist/esm/wallets/smart/presets/7579.js +215 -0
  299. package/dist/esm/wallets/smart/presets/7579.js.map +1 -0
  300. package/dist/esm/wallets/smart/presets/index.js +2 -0
  301. package/dist/esm/wallets/smart/presets/index.js.map +1 -0
  302. package/dist/esm/wallets/smart/smart-wallet.js.map +1 -1
  303. package/dist/esm/wallets/smart/types.js.map +1 -1
  304. package/dist/esm/wallets/wallet-connect/controller.js +1 -1
  305. package/dist/esm/wallets/wallet-connect/controller.js.map +1 -1
  306. package/dist/types/adapters/ethers5.d.ts.map +1 -1
  307. package/dist/types/adapters/ethers6.d.ts.map +1 -1
  308. package/dist/types/auth/verify-hash.d.ts.map +1 -1
  309. package/dist/types/auth/verify-signature.d.ts +2 -2
  310. package/dist/types/auth/verify-signature.d.ts.map +1 -1
  311. package/dist/types/contract/actions/resolve-abi.d.ts.map +1 -1
  312. package/dist/types/exports/wallets/smart.d.ts +1 -0
  313. package/dist/types/exports/wallets/smart.d.ts.map +1 -1
  314. package/dist/types/exports/wallets.d.ts +1 -1
  315. package/dist/types/exports/wallets.d.ts.map +1 -1
  316. package/dist/types/exports/wallets.native.d.ts +1 -1
  317. package/dist/types/exports/wallets.native.d.ts.map +1 -1
  318. package/dist/types/extensions/erc1271/checkContractWalletSignedTypedData.d.ts +4 -4
  319. package/dist/types/extensions/erc1271/checkContractWalletSignedTypedData.d.ts.map +1 -1
  320. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/events/ModuleInstalled.d.ts +29 -0
  321. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/events/ModuleInstalled.d.ts.map +1 -0
  322. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/events/ModuleUninstalled.d.ts +29 -0
  323. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/events/ModuleUninstalled.d.ts.map +1 -0
  324. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/read/accountId.d.ts +44 -0
  325. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/read/accountId.d.ts.map +1 -0
  326. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/read/isModuleInstalled.d.ts +97 -0
  327. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/read/isModuleInstalled.d.ts.map +1 -0
  328. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/read/isValidSignature.d.ts +90 -0
  329. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/read/isValidSignature.d.ts.map +1 -0
  330. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/read/supportsExecutionMode.d.ts +83 -0
  331. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/read/supportsExecutionMode.d.ts.map +1 -0
  332. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/read/supportsModule.d.ts +83 -0
  333. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/read/supportsModule.d.ts.map +1 -0
  334. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/write/execute.d.ts +86 -0
  335. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/write/execute.d.ts.map +1 -0
  336. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/write/executeFromExecutor.d.ts +86 -0
  337. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/write/executeFromExecutor.d.ts.map +1 -0
  338. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/write/installModule.d.ts +93 -0
  339. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/write/installModule.d.ts.map +1 -0
  340. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/write/uninstallModule.d.ts +93 -0
  341. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/write/uninstallModule.d.ts.map +1 -0
  342. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/events/OwnershipTransferred.d.ts +51 -0
  343. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/events/OwnershipTransferred.d.ts.map +1 -0
  344. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/events/Upgraded.d.ts +41 -0
  345. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/events/Upgraded.d.ts.map +1 -0
  346. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/accountImplementation.d.ts +44 -0
  347. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/accountImplementation.d.ts.map +1 -0
  348. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/entrypoint.d.ts +44 -0
  349. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/entrypoint.d.ts.map +1 -0
  350. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/getAddress.d.ts +90 -0
  351. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/getAddress.d.ts.map +1 -0
  352. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/implementation.d.ts +44 -0
  353. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/implementation.d.ts.map +1 -0
  354. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/owner.d.ts +44 -0
  355. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/owner.d.ts.map +1 -0
  356. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/addStake.d.ts +79 -0
  357. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/addStake.d.ts.map +1 -0
  358. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/createAccountWithModules.d.ts +107 -0
  359. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/createAccountWithModules.d.ts.map +1 -0
  360. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/renounceOwnership.d.ts +33 -0
  361. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/renounceOwnership.d.ts.map +1 -0
  362. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/transferOwnership.d.ts +79 -0
  363. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/transferOwnership.d.ts.map +1 -0
  364. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/unlockStake.d.ts +33 -0
  365. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/unlockStake.d.ts.map +1 -0
  366. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/upgradeTo.d.ts +79 -0
  367. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/upgradeTo.d.ts.map +1 -0
  368. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/withdraw.d.ts +93 -0
  369. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/withdraw.d.ts.map +1 -0
  370. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/withdrawStake.d.ts +79 -0
  371. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/withdrawStake.d.ts.map +1 -0
  372. package/dist/types/extensions/marketplace/direct-listings/write/buyFromListing.d.ts.map +1 -1
  373. package/dist/types/extensions/pack/createNewPack.d.ts.map +1 -1
  374. package/dist/types/react/web/ui/prebuilt/Account/avatar.d.ts.map +1 -1
  375. package/dist/types/react/web/ui/prebuilt/Account/balance.d.ts.map +1 -1
  376. package/dist/types/react/web/ui/prebuilt/Account/name.d.ts.map +1 -1
  377. package/dist/types/transaction/actions/gasless/providers/biconomy.d.ts +2 -2
  378. package/dist/types/transaction/actions/gasless/providers/biconomy.d.ts.map +1 -1
  379. package/dist/types/transaction/actions/gasless/providers/engine.d.ts +2 -2
  380. package/dist/types/transaction/actions/gasless/providers/engine.d.ts.map +1 -1
  381. package/dist/types/transaction/actions/gasless/providers/openzeppelin.d.ts +2 -2
  382. package/dist/types/transaction/actions/gasless/providers/openzeppelin.d.ts.map +1 -1
  383. package/dist/types/transaction/actions/gasless/send-gasless-transaction.d.ts +2 -2
  384. package/dist/types/transaction/actions/gasless/send-gasless-transaction.d.ts.map +1 -1
  385. package/dist/types/transaction/actions/sign-transaction.d.ts +2 -2
  386. package/dist/types/transaction/actions/sign-transaction.d.ts.map +1 -1
  387. package/dist/types/transaction/actions/to-serializable-transaction.d.ts.map +1 -1
  388. package/dist/types/transaction/actions/zksync/getEip721Domain.d.ts +2 -2
  389. package/dist/types/transaction/actions/zksync/getEip721Domain.d.ts.map +1 -1
  390. package/dist/types/transaction/serialize-transaction.d.ts +24 -4
  391. package/dist/types/transaction/serialize-transaction.d.ts.map +1 -1
  392. package/dist/types/utils/any-evm/keyless-transaction.d.ts +6 -4
  393. package/dist/types/utils/any-evm/keyless-transaction.d.ts.map +1 -1
  394. package/dist/types/utils/hashing/hashMessage.d.ts +3 -2
  395. package/dist/types/utils/hashing/hashMessage.d.ts.map +1 -1
  396. package/dist/types/utils/hashing/hashTypedData.d.ts +3 -3
  397. package/dist/types/utils/hashing/hashTypedData.d.ts.map +1 -1
  398. package/dist/types/utils/signatures/helpers/parse-typed-data.d.ts +6 -0
  399. package/dist/types/utils/signatures/helpers/parse-typed-data.d.ts.map +1 -0
  400. package/dist/types/utils/signatures/sign-message.d.ts.map +1 -1
  401. package/dist/types/utils/signatures/sign-typed-data.d.ts +3 -4
  402. package/dist/types/utils/signatures/sign-typed-data.d.ts.map +1 -1
  403. package/dist/types/utils/signatures/sign.d.ts +6 -2
  404. package/dist/types/utils/signatures/sign.d.ts.map +1 -1
  405. package/dist/types/utils/signatures/signature-to-hex.d.ts +7 -3
  406. package/dist/types/utils/signatures/signature-to-hex.d.ts.map +1 -1
  407. package/dist/types/utils/types.d.ts +13 -0
  408. package/dist/types/utils/types.d.ts.map +1 -1
  409. package/dist/types/version.d.ts +1 -1
  410. package/dist/types/wallets/coinbase/{coinbaseMobileSDK.d.ts → coinbase-mobile.d.ts} +2 -2
  411. package/dist/types/wallets/coinbase/coinbase-mobile.d.ts.map +1 -0
  412. package/dist/types/wallets/coinbase/{coinbaseWebSDK.d.ts → coinbase-web.d.ts} +1 -1
  413. package/dist/types/wallets/coinbase/coinbase-web.d.ts.map +1 -0
  414. package/dist/types/wallets/in-app/core/actions/sign-typed-data.enclave.d.ts +3 -4
  415. package/dist/types/wallets/in-app/core/actions/sign-typed-data.enclave.d.ts.map +1 -1
  416. package/dist/types/wallets/interfaces/wallet.d.ts +6 -4
  417. package/dist/types/wallets/interfaces/wallet.d.ts.map +1 -1
  418. package/dist/types/wallets/private-key.d.ts.map +1 -1
  419. package/dist/types/wallets/smart/index.d.ts +3 -2
  420. package/dist/types/wallets/smart/index.d.ts.map +1 -1
  421. package/dist/types/wallets/smart/lib/bundler.d.ts +3 -3
  422. package/dist/types/wallets/smart/lib/bundler.d.ts.map +1 -1
  423. package/dist/types/wallets/smart/lib/calls.d.ts +2 -2
  424. package/dist/types/wallets/smart/lib/calls.d.ts.map +1 -1
  425. package/dist/types/wallets/smart/lib/paymaster.d.ts.map +1 -1
  426. package/dist/types/wallets/smart/lib/signing.d.ts +20 -0
  427. package/dist/types/wallets/smart/lib/signing.d.ts.map +1 -0
  428. package/dist/types/wallets/smart/lib/userop.d.ts.map +1 -1
  429. package/dist/types/wallets/smart/presets/7579.d.ts +34 -0
  430. package/dist/types/wallets/smart/presets/7579.d.ts.map +1 -0
  431. package/dist/types/wallets/smart/presets/index.d.ts +2 -0
  432. package/dist/types/wallets/smart/presets/index.d.ts.map +1 -0
  433. package/dist/types/wallets/smart/smart-wallet.d.ts +2 -2
  434. package/dist/types/wallets/smart/smart-wallet.d.ts.map +1 -1
  435. package/dist/types/wallets/smart/types.d.ts +23 -9
  436. package/dist/types/wallets/smart/types.d.ts.map +1 -1
  437. package/dist/types/wallets/wallet-types.d.ts +1 -1
  438. package/dist/types/wallets/wallet-types.d.ts.map +1 -1
  439. package/package.json +23 -23
  440. package/src/adapters/ethers5.test.ts +92 -0
  441. package/src/adapters/ethers5.ts +6 -5
  442. package/src/adapters/ethers6.ts +3 -2
  443. package/src/adapters/viem.test.ts +5 -4
  444. package/src/auth/verify-hash.ts +2 -1
  445. package/src/auth/verify-signature.ts +2 -2
  446. package/src/contract/actions/resolve-abi.ts +6 -0
  447. package/src/exports/wallets/smart.ts +3 -0
  448. package/src/exports/wallets.native.ts +1 -1
  449. package/src/exports/wallets.ts +1 -1
  450. package/src/extensions/erc1271/checkContractWalletSignedTypedData.ts +9 -5
  451. package/src/extensions/erc7579/__generated__/IERC7579Account/events/ModuleInstalled.ts +24 -0
  452. package/src/extensions/erc7579/__generated__/IERC7579Account/events/ModuleUninstalled.ts +24 -0
  453. package/src/extensions/erc7579/__generated__/IERC7579Account/read/accountId.ts +71 -0
  454. package/src/extensions/erc7579/__generated__/IERC7579Account/read/isModuleInstalled.ts +153 -0
  455. package/src/extensions/erc7579/__generated__/IERC7579Account/read/isValidSignature.ts +133 -0
  456. package/src/extensions/erc7579/__generated__/IERC7579Account/read/supportsExecutionMode.ts +132 -0
  457. package/src/extensions/erc7579/__generated__/IERC7579Account/read/supportsModule.ts +128 -0
  458. package/src/extensions/erc7579/__generated__/IERC7579Account/write/execute.ts +149 -0
  459. package/src/extensions/erc7579/__generated__/IERC7579Account/write/executeFromExecutor.ts +158 -0
  460. package/src/extensions/erc7579/__generated__/IERC7579Account/write/installModule.ts +164 -0
  461. package/src/extensions/erc7579/__generated__/IERC7579Account/write/uninstallModule.ts +167 -0
  462. package/src/extensions/erc7579/__generated__/ModularAccountFactory/events/OwnershipTransferred.ts +49 -0
  463. package/src/extensions/erc7579/__generated__/ModularAccountFactory/events/Upgraded.ts +40 -0
  464. package/src/extensions/erc7579/__generated__/ModularAccountFactory/read/accountImplementation.ts +70 -0
  465. package/src/extensions/erc7579/__generated__/ModularAccountFactory/read/entrypoint.ts +70 -0
  466. package/src/extensions/erc7579/__generated__/ModularAccountFactory/read/getAddress.ts +134 -0
  467. package/src/extensions/erc7579/__generated__/ModularAccountFactory/read/implementation.ts +71 -0
  468. package/src/extensions/erc7579/__generated__/ModularAccountFactory/read/owner.ts +71 -0
  469. package/src/extensions/erc7579/__generated__/ModularAccountFactory/write/addStake.ts +138 -0
  470. package/src/extensions/erc7579/__generated__/ModularAccountFactory/write/createAccountWithModules.ts +193 -0
  471. package/src/extensions/erc7579/__generated__/ModularAccountFactory/write/renounceOwnership.ts +50 -0
  472. package/src/extensions/erc7579/__generated__/ModularAccountFactory/write/transferOwnership.ts +139 -0
  473. package/src/extensions/erc7579/__generated__/ModularAccountFactory/write/unlockStake.ts +50 -0
  474. package/src/extensions/erc7579/__generated__/ModularAccountFactory/write/upgradeTo.ts +140 -0
  475. package/src/extensions/erc7579/__generated__/ModularAccountFactory/write/withdraw.ts +159 -0
  476. package/src/extensions/erc7579/__generated__/ModularAccountFactory/write/withdrawStake.ts +137 -0
  477. package/src/extensions/marketplace/direct-listings/direct-listings.test.ts +74 -14
  478. package/src/extensions/marketplace/direct-listings/write/buyFromListing.ts +6 -0
  479. package/src/extensions/pack/createNewPack.ts +1 -0
  480. package/src/react/web/ui/prebuilt/Account/avatar.tsx +1 -0
  481. package/src/react/web/ui/prebuilt/Account/balance.tsx +1 -0
  482. package/src/react/web/ui/prebuilt/Account/name.tsx +1 -0
  483. package/src/react/web/utils/usePreloadWalletProviders.ts +1 -1
  484. package/src/transaction/actions/estimate-gas.ts +3 -3
  485. package/src/transaction/actions/gasless/providers/biconomy.ts +3 -2
  486. package/src/transaction/actions/gasless/providers/engine.ts +2 -2
  487. package/src/transaction/actions/gasless/providers/openzeppelin.ts +2 -2
  488. package/src/transaction/actions/gasless/send-gasless-transaction.ts +2 -2
  489. package/src/transaction/actions/sign-transaction.test.ts +8 -15
  490. package/src/transaction/actions/sign-transaction.ts +9 -11
  491. package/src/transaction/actions/to-serializable-transaction.ts +2 -2
  492. package/src/transaction/actions/zksync/getEip721Domain.ts +2 -2
  493. package/src/transaction/serialize-transaction.test.ts +135 -229
  494. package/src/transaction/serialize-transaction.ts +131 -22
  495. package/src/utils/any-evm/keyless-transaction.test.ts +91 -0
  496. package/src/utils/any-evm/keyless-transaction.ts +43 -14
  497. package/src/utils/hashing/hashMessage.ts +4 -3
  498. package/src/utils/hashing/hashTypedData.ts +24 -27
  499. package/src/utils/signatures/helpers/parse-typed-data.test.ts +56 -0
  500. package/src/utils/signatures/helpers/parse-typed-data.ts +29 -0
  501. package/src/utils/signatures/sign-message.ts +15 -6
  502. package/src/utils/signatures/sign-typed-data.ts +18 -12
  503. package/src/utils/signatures/sign.ts +5 -6
  504. package/src/utils/signatures/signature-to-hex.ts +29 -13
  505. package/src/utils/types.ts +17 -0
  506. package/src/version.ts +1 -1
  507. package/src/wallets/coinbase/coinbase-mobile.test.ts +69 -0
  508. package/src/wallets/coinbase/{coinbaseMobileSDK.ts → coinbase-mobile.ts} +1 -1
  509. package/src/wallets/coinbase/coinbase-wallet.ts +2 -2
  510. package/src/wallets/coinbase/coinbase-web.test.ts +176 -0
  511. package/src/wallets/coinbase/{coinbaseWebSDK.ts → coinbase-web.ts} +13 -17
  512. package/src/wallets/create-wallet.ts +1 -1
  513. package/src/wallets/eip5792/get-calls-status.ts +2 -2
  514. package/src/wallets/eip5792/get-capabilities.ts +2 -2
  515. package/src/wallets/eip5792/send-calls.ts +2 -2
  516. package/src/wallets/eip5792/show-calls-status.ts +2 -2
  517. package/src/wallets/in-app/core/actions/sign-typed-data.enclave.ts +3 -4
  518. package/src/wallets/in-app/core/wallet/enclave-wallet.ts +1 -1
  519. package/src/wallets/in-app/web/lib/iframe-wallet.ts +2 -2
  520. package/src/wallets/injected/index.ts +1 -1
  521. package/src/wallets/interfaces/wallet.ts +7 -11
  522. package/src/wallets/native/create-wallet.ts +1 -1
  523. package/src/wallets/private-key.ts +16 -14
  524. package/src/wallets/smart/index.ts +31 -218
  525. package/src/wallets/smart/lib/bundler.ts +5 -4
  526. package/src/wallets/smart/lib/calls.ts +4 -2
  527. package/src/wallets/smart/lib/paymaster.ts +8 -6
  528. package/src/wallets/smart/lib/signing.ts +231 -0
  529. package/src/wallets/smart/lib/userop.ts +3 -2
  530. package/src/wallets/smart/presets/7579.ts +269 -0
  531. package/src/wallets/smart/presets/index.ts +1 -0
  532. package/src/wallets/smart/smart-wallet-dev.test.ts +5 -4
  533. package/src/wallets/smart/smart-wallet-integration-v07.test.ts +299 -0
  534. package/src/wallets/smart/smart-wallet-integration.test.ts +399 -0
  535. package/src/wallets/smart/smart-wallet-modular.test.ts +134 -0
  536. package/src/wallets/smart/smart-wallet.ts +3 -5
  537. package/src/wallets/smart/smart.test.ts +87 -0
  538. package/src/wallets/smart/types.ts +31 -8
  539. package/src/wallets/wallet-connect/controller.ts +1 -1
  540. package/src/wallets/wallet-connect/receiver/session-request.test.ts +5 -5
  541. package/src/wallets/wallet-types.ts +1 -1
  542. package/dist/cjs/utils/signatures/helpers/parseTypedData.js.map +0 -1
  543. package/dist/cjs/wallets/coinbase/coinbaseMobileSDK.js.map +0 -1
  544. package/dist/cjs/wallets/coinbase/coinbaseWebSDK.js.map +0 -1
  545. package/dist/esm/utils/signatures/helpers/parseTypedData.js +0 -15
  546. package/dist/esm/utils/signatures/helpers/parseTypedData.js.map +0 -1
  547. package/dist/esm/wallets/coinbase/coinbaseMobileSDK.js.map +0 -1
  548. package/dist/esm/wallets/coinbase/coinbaseWebSDK.js.map +0 -1
  549. package/dist/types/utils/signatures/helpers/parseTypedData.d.ts +0 -7
  550. package/dist/types/utils/signatures/helpers/parseTypedData.d.ts.map +0 -1
  551. package/dist/types/wallets/coinbase/coinbaseMobileSDK.d.ts.map +0 -1
  552. package/dist/types/wallets/coinbase/coinbaseWebSDK.d.ts.map +0 -1
  553. package/src/utils/signatures/helpers/parseTypedData.ts +0 -25
@@ -2,7 +2,7 @@ import type { Abi } from "abitype";
2
2
  import * as universalethers from "ethers";
3
3
  import type * as ethers5 from "ethers5";
4
4
  import type * as ethers6 from "ethers6";
5
- import type { AccessList, Hex, TransactionSerializable } from "viem";
5
+ import type { AccessList, Hex } from "viem";
6
6
  import type { Chain } from "../chains/types.js";
7
7
  import { getRpcUrlForChain } from "../chains/utils.js";
8
8
  import type { ThirdwebClient } from "../client/client.js";
@@ -10,6 +10,7 @@ import { type ThirdwebContract, getContract } from "../contract/contract.js";
10
10
  import { toSerializableTransaction } from "../transaction/actions/to-serializable-transaction.js";
11
11
  import { waitForReceipt } from "../transaction/actions/wait-for-tx-receipt.js";
12
12
  import type { PreparedTransaction } from "../transaction/prepare-transaction.js";
13
+ import type { SerializableTransaction } from "../transaction/serialize-transaction.js";
13
14
  import { toHex } from "../utils/encoding/hex.js";
14
15
  import type { Account } from "../wallets/interfaces/wallet.js";
15
16
 
@@ -39,7 +40,7 @@ function assertEthers5(
39
40
  ): asserts ethers is typeof ethers5 {
40
41
  if (!isEthers5(ethers)) {
41
42
  throw new Error(
42
- "You seem to be using ethers@6, please use the `ethers6Adapter()",
43
+ "You seem to be using ethers@6, please use the `ethers6Adapter()`",
43
44
  );
44
45
  }
45
46
  }
@@ -279,6 +280,7 @@ export function toEthersProvider(
279
280
  client: ThirdwebClient,
280
281
  chain: Chain,
281
282
  ): ethers5.providers.Provider {
283
+ assertEthers5(ethers);
282
284
  const url = getRpcUrlForChain({ chain, client });
283
285
  const headers: HeadersInit = {
284
286
  "Content-Type": "application/json",
@@ -588,7 +590,7 @@ export async function toEthersSigner(
588
590
  * @internal
589
591
  */
590
592
  function alignTxToEthers(
591
- tx: TransactionSerializable,
593
+ tx: SerializableTransaction,
592
594
  ): ethers5.ethers.utils.Deferrable<ethers5.ethers.providers.TransactionRequest> {
593
595
  const { to: viemTo, type: viemType, gas, ...rest } = tx;
594
596
  // massage "to" to fit ethers
@@ -623,8 +625,7 @@ function alignTxToEthers(
623
625
  gasLimit: gas,
624
626
  to,
625
627
  type,
626
- accessList: tx.accessList as ethers5.utils.AccessListish | undefined,
627
- };
628
+ } as ethers5.ethers.utils.Deferrable<ethers5.ethers.providers.TransactionRequest>;
628
629
  }
629
630
 
630
631
  async function alignTxFromEthers(
@@ -2,13 +2,14 @@ import type { Abi } from "abitype";
2
2
  import * as universalethers from "ethers";
3
3
  import type * as ethers5 from "ethers5";
4
4
  import type * as ethers6 from "ethers6";
5
- import type { AccessList, Hex, TransactionSerializable } from "viem";
5
+ import type { AccessList, Hex } from "viem";
6
6
  import type { Chain } from "../chains/types.js";
7
7
  import { getRpcUrlForChain } from "../chains/utils.js";
8
8
  import type { ThirdwebClient } from "../client/client.js";
9
9
  import { type ThirdwebContract, getContract } from "../contract/contract.js";
10
10
  import { toSerializableTransaction } from "../transaction/actions/to-serializable-transaction.js";
11
11
  import type { PreparedTransaction } from "../transaction/prepare-transaction.js";
12
+ import type { SerializableTransaction } from "../transaction/serialize-transaction.js";
12
13
  import { toHex } from "../utils/encoding/hex.js";
13
14
  import { resolvePromisedValue } from "../utils/promise/resolve-promised-value.js";
14
15
  import type { Account } from "../wallets/interfaces/wallet.js";
@@ -493,7 +494,7 @@ export function toEthersSigner(
493
494
  * @returns The aligned transaction object.
494
495
  * @internal
495
496
  */
496
- function alignTxToEthers(tx: TransactionSerializable) {
497
+ function alignTxToEthers(tx: SerializableTransaction) {
497
498
  const { type: viemType, ...rest } = tx;
498
499
 
499
500
  // massage "type" to fit ethers
@@ -1,4 +1,4 @@
1
- import { type Account as ViemAccount, zeroAddress } from "viem";
1
+ import type { Account as ViemAccount } from "viem";
2
2
  import { privateKeyToAccount as viemPrivateKeyToAccount } from "viem/accounts";
3
3
  import { beforeAll, describe, expect, test } from "vitest";
4
4
  import { USDT_ABI } from "~test/abis/usdt.js";
@@ -6,7 +6,7 @@ import {
6
6
  USDT_CONTRACT_ADDRESS,
7
7
  USDT_CONTRACT_WITH_ABI,
8
8
  } from "~test/test-contracts.js";
9
- import { ANVIL_PKEY_A } from "~test/test-wallets.js";
9
+ import { ANVIL_PKEY_A, TEST_ACCOUNT_B } from "~test/test-wallets.js";
10
10
  import { typedData } from "~test/typed-data.js";
11
11
 
12
12
  import { ANVIL_CHAIN, FORKED_ETHEREUM_CHAIN } from "../../test/src/chains.js";
@@ -87,6 +87,7 @@ describe("walletClient.toViem", () => {
87
87
  if (!walletClient.account) {
88
88
  throw new Error("Account not found");
89
89
  }
90
+
90
91
  const txHash = await walletClient.sendTransaction({
91
92
  account: walletClient.account,
92
93
  chain: {
@@ -101,8 +102,8 @@ describe("walletClient.toViem", () => {
101
102
  decimals: ANVIL_CHAIN.nativeCurrency?.decimals || 18,
102
103
  },
103
104
  },
104
- to: zeroAddress,
105
- value: 0n,
105
+ to: TEST_ACCOUNT_B.address,
106
+ value: 10n,
106
107
  });
107
108
  expect(txHash).toBeDefined();
108
109
  expect(txHash.slice(0, 2)).toBe("0x");
@@ -129,7 +129,8 @@ export async function verifyHash({
129
129
  try {
130
130
  const result = await eth_call(rpcRequest, verificationData);
131
131
  return hexToBool(result);
132
- } catch {
132
+ } catch (err) {
133
+ console.error("Error verifying ERC-6492 signature", err);
133
134
  // Some chains do not support the eth_call simulation and will fail, so we fall back to regular EIP1271 validation
134
135
  const validEip1271 = await verifyEip1271Signature({
135
136
  hash,
@@ -1,4 +1,4 @@
1
- import { type Signature, recoverAddress } from "viem";
1
+ import { type SignableMessage, type Signature, recoverAddress } from "viem";
2
2
  import type { Chain } from "../chains/types.js";
3
3
  import type { ThirdwebClient } from "../client/client.js";
4
4
  import { type Hex, isHex } from "../utils/encoding/hex.js";
@@ -10,7 +10,7 @@ import { verifyHash } from "./verify-hash.js";
10
10
  * @auth
11
11
  */
12
12
  export type VerifyEOASignatureParams = {
13
- message: string;
13
+ message: string | SignableMessage;
14
14
  signature: string | Uint8Array | Signature;
15
15
  address: string;
16
16
  };
@@ -41,6 +41,12 @@ export function resolveContractAbi<abi extends Abi>(
41
41
  if (contract.abi) {
42
42
  return contract.abi as abi;
43
43
  }
44
+
45
+ // for local chains, we need to resolve the composite abi from bytecode
46
+ if (contract.chain.id === 31337 || contract.chain.id === 1337) {
47
+ return await resolveCompositeAbi(contract as ThirdwebContract);
48
+ }
49
+
44
50
  // try to get it from the api
45
51
  try {
46
52
  return await resolveAbiFromContractApi(contract, contractApiBaseUrl);
@@ -30,6 +30,9 @@ export type {
30
30
  PaymasterResult,
31
31
  } from "../../wallets/smart/types.js";
32
32
 
33
+ // all preset configs
34
+ export * as Config from "../../wallets/smart/presets/index.js";
35
+
33
36
  export {
34
37
  ENTRYPOINT_ADDRESS_v0_6,
35
38
  ENTRYPOINT_ADDRESS_v0_7,
@@ -107,7 +107,7 @@ export const authenticateWithRedirect = () => {
107
107
  export type {
108
108
  CoinbaseWalletCreationOptions,
109
109
  CoinbaseSDKWalletConnectionOptions,
110
- } from "../wallets/coinbase/coinbaseWebSDK.js";
110
+ } from "../wallets/coinbase/coinbase-web.js";
111
111
 
112
112
  export type {
113
113
  WalletEmitter,
@@ -117,7 +117,7 @@ export {
117
117
  export type {
118
118
  CoinbaseWalletCreationOptions,
119
119
  CoinbaseSDKWalletConnectionOptions,
120
- } from "../wallets/coinbase/coinbaseWebSDK.js";
120
+ } from "../wallets/coinbase/coinbase-web.js";
121
121
 
122
122
  export type {
123
123
  WalletEmitter,
@@ -1,4 +1,4 @@
1
- import { type TypedData, type TypedDataDefinition, hashTypedData } from "viem";
1
+ import * as ox__TypedData from "ox/TypedData";
2
2
  import type { ThirdwebContract } from "../../contract/contract.js";
3
3
  import { isHex } from "../../utils/encoding/hex.js";
4
4
  import { isValidSignature } from "./__generated__/isValidSignature/read/isValidSignature.js";
@@ -7,11 +7,11 @@ import { isValidSignature } from "./__generated__/isValidSignature/read/isValidS
7
7
  * @extension ERC1271
8
8
  */
9
9
  export type CheckContractWalletSignTypedDataOptions<
10
- typedData extends TypedData | Record<string, unknown>,
10
+ typedData extends ox__TypedData.TypedData | Record<string, unknown>,
11
11
  primaryType extends keyof typedData | "EIP712Domain" = keyof typedData,
12
12
  > = {
13
13
  contract: ThirdwebContract;
14
- data: TypedDataDefinition<typedData, primaryType>;
14
+ data: ox__TypedData.Definition<typedData, primaryType>;
15
15
  signature: string;
16
16
  };
17
17
  const MAGIC_VALUE = "0x1626ba7e";
@@ -42,7 +42,7 @@ const MAGIC_VALUE = "0x1626ba7e";
42
42
  * @returns A promise that resolves with a boolean indicating if the signature is valid.
43
43
  */
44
44
  export async function checkContractWalletSignedTypedData<
45
- typedData extends TypedData | Record<string, unknown>,
45
+ typedData extends ox__TypedData.TypedData | Record<string, unknown>,
46
46
  primaryType extends keyof typedData | "EIP712Domain" = keyof typedData,
47
47
  >(options: CheckContractWalletSignTypedDataOptions<typedData, primaryType>) {
48
48
  if (!isHex(options.signature)) {
@@ -50,7 +50,11 @@ export async function checkContractWalletSignedTypedData<
50
50
  }
51
51
  const result = await isValidSignature({
52
52
  contract: options.contract,
53
- hash: hashTypedData(options.data),
53
+ hash: ox__TypedData.hashStruct({
54
+ primaryType: options.data.primaryType,
55
+ data: options.data.message as Record<string, unknown>,
56
+ types: options.data.types as ox__TypedData.Definition["types"],
57
+ }),
54
58
  signature: options.signature,
55
59
  });
56
60
  return result === MAGIC_VALUE;
@@ -0,0 +1,24 @@
1
+ import { prepareEvent } from "../../../../../event/prepare-event.js";
2
+
3
+ /**
4
+ * Creates an event object for the ModuleInstalled event.
5
+ * @returns The prepared event object.
6
+ * @extension ERC7579
7
+ * @example
8
+ * ```ts
9
+ * import { getContractEvents } from "thirdweb";
10
+ * import { moduleInstalledEvent } from "thirdweb/extensions/erc7579";
11
+ *
12
+ * const events = await getContractEvents({
13
+ * contract,
14
+ * events: [
15
+ * moduleInstalledEvent()
16
+ * ],
17
+ * });
18
+ * ```
19
+ */
20
+ export function moduleInstalledEvent() {
21
+ return prepareEvent({
22
+ signature: "event ModuleInstalled(uint256 moduleTypeId, address module)",
23
+ });
24
+ }
@@ -0,0 +1,24 @@
1
+ import { prepareEvent } from "../../../../../event/prepare-event.js";
2
+
3
+ /**
4
+ * Creates an event object for the ModuleUninstalled event.
5
+ * @returns The prepared event object.
6
+ * @extension ERC7579
7
+ * @example
8
+ * ```ts
9
+ * import { getContractEvents } from "thirdweb";
10
+ * import { moduleUninstalledEvent } from "thirdweb/extensions/erc7579";
11
+ *
12
+ * const events = await getContractEvents({
13
+ * contract,
14
+ * events: [
15
+ * moduleUninstalledEvent()
16
+ * ],
17
+ * });
18
+ * ```
19
+ */
20
+ export function moduleUninstalledEvent() {
21
+ return prepareEvent({
22
+ signature: "event ModuleUninstalled(uint256 moduleTypeId, address module)",
23
+ });
24
+ }
@@ -0,0 +1,71 @@
1
+ import { readContract } from "../../../../../transaction/read-contract.js";
2
+ import type { BaseTransactionOptions } from "../../../../../transaction/types.js";
3
+
4
+ import { decodeAbiParameters } from "viem";
5
+ import type { Hex } from "../../../../../utils/encoding/hex.js";
6
+ import { detectMethod } from "../../../../../utils/bytecode/detectExtension.js";
7
+
8
+ export const FN_SELECTOR = "0x9cfd7cff" as const;
9
+ const FN_INPUTS = [] as const;
10
+ const FN_OUTPUTS = [
11
+ {
12
+ type: "string",
13
+ name: "accountImplementationId",
14
+ },
15
+ ] as const;
16
+
17
+ /**
18
+ * Checks if the `accountId` method is supported by the given contract.
19
+ * @param availableSelectors An array of 4byte function selectors of the contract. You can get this in various ways, such as using "whatsabi" or if you have the ABI of the contract available you can use it to generate the selectors.
20
+ * @returns A boolean indicating if the `accountId` method is supported.
21
+ * @extension ERC7579
22
+ * @example
23
+ * ```ts
24
+ * import { isAccountIdSupported } from "thirdweb/extensions/erc7579";
25
+ * const supported = isAccountIdSupported(["0x..."]);
26
+ * ```
27
+ */
28
+ export function isAccountIdSupported(availableSelectors: string[]) {
29
+ return detectMethod({
30
+ availableSelectors,
31
+ method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS] as const,
32
+ });
33
+ }
34
+
35
+ /**
36
+ * Decodes the result of the accountId function call.
37
+ * @param result - The hexadecimal result to decode.
38
+ * @returns The decoded result as per the FN_OUTPUTS definition.
39
+ * @extension ERC7579
40
+ * @example
41
+ * ```ts
42
+ * import { decodeAccountIdResult } from "thirdweb/extensions/erc7579";
43
+ * const result = decodeAccountIdResultResult("...");
44
+ * ```
45
+ */
46
+ export function decodeAccountIdResult(result: Hex) {
47
+ return decodeAbiParameters(FN_OUTPUTS, result)[0];
48
+ }
49
+
50
+ /**
51
+ * Calls the "accountId" function on the contract.
52
+ * @param options - The options for the accountId function.
53
+ * @returns The parsed result of the function call.
54
+ * @extension ERC7579
55
+ * @example
56
+ * ```ts
57
+ * import { accountId } from "thirdweb/extensions/erc7579";
58
+ *
59
+ * const result = await accountId({
60
+ * contract,
61
+ * });
62
+ *
63
+ * ```
64
+ */
65
+ export async function accountId(options: BaseTransactionOptions) {
66
+ return readContract({
67
+ contract: options.contract,
68
+ method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS] as const,
69
+ params: [],
70
+ });
71
+ }
@@ -0,0 +1,153 @@
1
+ import type { AbiParameterToPrimitiveType } from "abitype";
2
+ import { readContract } from "../../../../../transaction/read-contract.js";
3
+ import type { BaseTransactionOptions } from "../../../../../transaction/types.js";
4
+ import { encodeAbiParameters } from "../../../../../utils/abi/encodeAbiParameters.js";
5
+ import { decodeAbiParameters } from "viem";
6
+ import type { Hex } from "../../../../../utils/encoding/hex.js";
7
+ import { detectMethod } from "../../../../../utils/bytecode/detectExtension.js";
8
+
9
+ /**
10
+ * Represents the parameters for the "isModuleInstalled" function.
11
+ */
12
+ export type IsModuleInstalledParams = {
13
+ moduleTypeId: AbiParameterToPrimitiveType<{
14
+ type: "uint256";
15
+ name: "moduleTypeId";
16
+ }>;
17
+ module: AbiParameterToPrimitiveType<{ type: "address"; name: "module" }>;
18
+ additionalContext: AbiParameterToPrimitiveType<{
19
+ type: "bytes";
20
+ name: "additionalContext";
21
+ }>;
22
+ };
23
+
24
+ export const FN_SELECTOR = "0x112d3a7d" as const;
25
+ const FN_INPUTS = [
26
+ {
27
+ type: "uint256",
28
+ name: "moduleTypeId",
29
+ },
30
+ {
31
+ type: "address",
32
+ name: "module",
33
+ },
34
+ {
35
+ type: "bytes",
36
+ name: "additionalContext",
37
+ },
38
+ ] as const;
39
+ const FN_OUTPUTS = [
40
+ {
41
+ type: "bool",
42
+ },
43
+ ] as const;
44
+
45
+ /**
46
+ * Checks if the `isModuleInstalled` method is supported by the given contract.
47
+ * @param availableSelectors An array of 4byte function selectors of the contract. You can get this in various ways, such as using "whatsabi" or if you have the ABI of the contract available you can use it to generate the selectors.
48
+ * @returns A boolean indicating if the `isModuleInstalled` method is supported.
49
+ * @extension ERC7579
50
+ * @example
51
+ * ```ts
52
+ * import { isIsModuleInstalledSupported } from "thirdweb/extensions/erc7579";
53
+ * const supported = isIsModuleInstalledSupported(["0x..."]);
54
+ * ```
55
+ */
56
+ export function isIsModuleInstalledSupported(availableSelectors: string[]) {
57
+ return detectMethod({
58
+ availableSelectors,
59
+ method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS] as const,
60
+ });
61
+ }
62
+
63
+ /**
64
+ * Encodes the parameters for the "isModuleInstalled" function.
65
+ * @param options - The options for the isModuleInstalled function.
66
+ * @returns The encoded ABI parameters.
67
+ * @extension ERC7579
68
+ * @example
69
+ * ```ts
70
+ * import { encodeIsModuleInstalledParams } from "thirdweb/extensions/erc7579";
71
+ * const result = encodeIsModuleInstalledParams({
72
+ * moduleTypeId: ...,
73
+ * module: ...,
74
+ * additionalContext: ...,
75
+ * });
76
+ * ```
77
+ */
78
+ export function encodeIsModuleInstalledParams(
79
+ options: IsModuleInstalledParams,
80
+ ) {
81
+ return encodeAbiParameters(FN_INPUTS, [
82
+ options.moduleTypeId,
83
+ options.module,
84
+ options.additionalContext,
85
+ ]);
86
+ }
87
+
88
+ /**
89
+ * Encodes the "isModuleInstalled" function into a Hex string with its parameters.
90
+ * @param options - The options for the isModuleInstalled function.
91
+ * @returns The encoded hexadecimal string.
92
+ * @extension ERC7579
93
+ * @example
94
+ * ```ts
95
+ * import { encodeIsModuleInstalled } from "thirdweb/extensions/erc7579";
96
+ * const result = encodeIsModuleInstalled({
97
+ * moduleTypeId: ...,
98
+ * module: ...,
99
+ * additionalContext: ...,
100
+ * });
101
+ * ```
102
+ */
103
+ export function encodeIsModuleInstalled(options: IsModuleInstalledParams) {
104
+ // we do a "manual" concat here to avoid the overhead of the "concatHex" function
105
+ // we can do this because we know the specific formats of the values
106
+ return (FN_SELECTOR +
107
+ encodeIsModuleInstalledParams(options).slice(
108
+ 2,
109
+ )) as `${typeof FN_SELECTOR}${string}`;
110
+ }
111
+
112
+ /**
113
+ * Decodes the result of the isModuleInstalled function call.
114
+ * @param result - The hexadecimal result to decode.
115
+ * @returns The decoded result as per the FN_OUTPUTS definition.
116
+ * @extension ERC7579
117
+ * @example
118
+ * ```ts
119
+ * import { decodeIsModuleInstalledResult } from "thirdweb/extensions/erc7579";
120
+ * const result = decodeIsModuleInstalledResultResult("...");
121
+ * ```
122
+ */
123
+ export function decodeIsModuleInstalledResult(result: Hex) {
124
+ return decodeAbiParameters(FN_OUTPUTS, result)[0];
125
+ }
126
+
127
+ /**
128
+ * Calls the "isModuleInstalled" function on the contract.
129
+ * @param options - The options for the isModuleInstalled function.
130
+ * @returns The parsed result of the function call.
131
+ * @extension ERC7579
132
+ * @example
133
+ * ```ts
134
+ * import { isModuleInstalled } from "thirdweb/extensions/erc7579";
135
+ *
136
+ * const result = await isModuleInstalled({
137
+ * contract,
138
+ * moduleTypeId: ...,
139
+ * module: ...,
140
+ * additionalContext: ...,
141
+ * });
142
+ *
143
+ * ```
144
+ */
145
+ export async function isModuleInstalled(
146
+ options: BaseTransactionOptions<IsModuleInstalledParams>,
147
+ ) {
148
+ return readContract({
149
+ contract: options.contract,
150
+ method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS] as const,
151
+ params: [options.moduleTypeId, options.module, options.additionalContext],
152
+ });
153
+ }
@@ -0,0 +1,133 @@
1
+ import type { AbiParameterToPrimitiveType } from "abitype";
2
+ import { readContract } from "../../../../../transaction/read-contract.js";
3
+ import type { BaseTransactionOptions } from "../../../../../transaction/types.js";
4
+ import { encodeAbiParameters } from "../../../../../utils/abi/encodeAbiParameters.js";
5
+ import { decodeAbiParameters } from "viem";
6
+ import type { Hex } from "../../../../../utils/encoding/hex.js";
7
+ import { detectMethod } from "../../../../../utils/bytecode/detectExtension.js";
8
+
9
+ /**
10
+ * Represents the parameters for the "isValidSignature" function.
11
+ */
12
+ export type IsValidSignatureParams = {
13
+ hash: AbiParameterToPrimitiveType<{ type: "bytes32"; name: "hash" }>;
14
+ data: AbiParameterToPrimitiveType<{ type: "bytes"; name: "data" }>;
15
+ };
16
+
17
+ export const FN_SELECTOR = "0x1626ba7e" as const;
18
+ const FN_INPUTS = [
19
+ {
20
+ type: "bytes32",
21
+ name: "hash",
22
+ },
23
+ {
24
+ type: "bytes",
25
+ name: "data",
26
+ },
27
+ ] as const;
28
+ const FN_OUTPUTS = [
29
+ {
30
+ type: "bytes4",
31
+ },
32
+ ] as const;
33
+
34
+ /**
35
+ * Checks if the `isValidSignature` method is supported by the given contract.
36
+ * @param availableSelectors An array of 4byte function selectors of the contract. You can get this in various ways, such as using "whatsabi" or if you have the ABI of the contract available you can use it to generate the selectors.
37
+ * @returns A boolean indicating if the `isValidSignature` method is supported.
38
+ * @extension ERC7579
39
+ * @example
40
+ * ```ts
41
+ * import { isIsValidSignatureSupported } from "thirdweb/extensions/erc7579";
42
+ * const supported = isIsValidSignatureSupported(["0x..."]);
43
+ * ```
44
+ */
45
+ export function isIsValidSignatureSupported(availableSelectors: string[]) {
46
+ return detectMethod({
47
+ availableSelectors,
48
+ method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS] as const,
49
+ });
50
+ }
51
+
52
+ /**
53
+ * Encodes the parameters for the "isValidSignature" function.
54
+ * @param options - The options for the isValidSignature function.
55
+ * @returns The encoded ABI parameters.
56
+ * @extension ERC7579
57
+ * @example
58
+ * ```ts
59
+ * import { encodeIsValidSignatureParams } from "thirdweb/extensions/erc7579";
60
+ * const result = encodeIsValidSignatureParams({
61
+ * hash: ...,
62
+ * data: ...,
63
+ * });
64
+ * ```
65
+ */
66
+ export function encodeIsValidSignatureParams(options: IsValidSignatureParams) {
67
+ return encodeAbiParameters(FN_INPUTS, [options.hash, options.data]);
68
+ }
69
+
70
+ /**
71
+ * Encodes the "isValidSignature" function into a Hex string with its parameters.
72
+ * @param options - The options for the isValidSignature function.
73
+ * @returns The encoded hexadecimal string.
74
+ * @extension ERC7579
75
+ * @example
76
+ * ```ts
77
+ * import { encodeIsValidSignature } from "thirdweb/extensions/erc7579";
78
+ * const result = encodeIsValidSignature({
79
+ * hash: ...,
80
+ * data: ...,
81
+ * });
82
+ * ```
83
+ */
84
+ export function encodeIsValidSignature(options: IsValidSignatureParams) {
85
+ // we do a "manual" concat here to avoid the overhead of the "concatHex" function
86
+ // we can do this because we know the specific formats of the values
87
+ return (FN_SELECTOR +
88
+ encodeIsValidSignatureParams(options).slice(
89
+ 2,
90
+ )) as `${typeof FN_SELECTOR}${string}`;
91
+ }
92
+
93
+ /**
94
+ * Decodes the result of the isValidSignature function call.
95
+ * @param result - The hexadecimal result to decode.
96
+ * @returns The decoded result as per the FN_OUTPUTS definition.
97
+ * @extension ERC7579
98
+ * @example
99
+ * ```ts
100
+ * import { decodeIsValidSignatureResult } from "thirdweb/extensions/erc7579";
101
+ * const result = decodeIsValidSignatureResultResult("...");
102
+ * ```
103
+ */
104
+ export function decodeIsValidSignatureResult(result: Hex) {
105
+ return decodeAbiParameters(FN_OUTPUTS, result)[0];
106
+ }
107
+
108
+ /**
109
+ * Calls the "isValidSignature" function on the contract.
110
+ * @param options - The options for the isValidSignature function.
111
+ * @returns The parsed result of the function call.
112
+ * @extension ERC7579
113
+ * @example
114
+ * ```ts
115
+ * import { isValidSignature } from "thirdweb/extensions/erc7579";
116
+ *
117
+ * const result = await isValidSignature({
118
+ * contract,
119
+ * hash: ...,
120
+ * data: ...,
121
+ * });
122
+ *
123
+ * ```
124
+ */
125
+ export async function isValidSignature(
126
+ options: BaseTransactionOptions<IsValidSignatureParams>,
127
+ ) {
128
+ return readContract({
129
+ contract: options.contract,
130
+ method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS] as const,
131
+ params: [options.hash, options.data],
132
+ });
133
+ }