thirdweb 5.73.1-nightly-33c23e789e577bd6463e135cec4e25cfcfc9964a-20241205000340 → 5.75.0-nightly-ec84ed37d6db8281d3afb12bc47a20ccc5fe9713-20241207000341

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 (597) 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 +4 -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/ConnectWallet/screens/SignatureScreen.js +12 -10
  70. package/dist/cjs/react/web/ui/ConnectWallet/screens/SignatureScreen.js.map +1 -1
  71. package/dist/cjs/react/web/ui/prebuilt/Account/avatar.js +1 -0
  72. package/dist/cjs/react/web/ui/prebuilt/Account/avatar.js.map +1 -1
  73. package/dist/cjs/react/web/ui/prebuilt/Account/balance.js +1 -0
  74. package/dist/cjs/react/web/ui/prebuilt/Account/balance.js.map +1 -1
  75. package/dist/cjs/react/web/ui/prebuilt/Account/name.js +1 -0
  76. package/dist/cjs/react/web/ui/prebuilt/Account/name.js.map +1 -1
  77. package/dist/cjs/react/web/utils/usePreloadWalletProviders.js +1 -1
  78. package/dist/cjs/react/web/utils/usePreloadWalletProviders.js.map +1 -1
  79. package/dist/cjs/react/web/wallets/shared/ConnectWalletSocialOptions.js +1 -1
  80. package/dist/cjs/react/web/wallets/shared/ConnectWalletSocialOptions.js.map +1 -1
  81. package/dist/cjs/transaction/actions/estimate-gas.js.map +1 -1
  82. package/dist/cjs/transaction/actions/gasless/providers/biconomy.js.map +1 -1
  83. package/dist/cjs/transaction/actions/gasless/providers/engine.js.map +1 -1
  84. package/dist/cjs/transaction/actions/gasless/providers/openzeppelin.js.map +1 -1
  85. package/dist/cjs/transaction/actions/sign-transaction.js +4 -7
  86. package/dist/cjs/transaction/actions/sign-transaction.js.map +1 -1
  87. package/dist/cjs/transaction/actions/to-serializable-transaction.js.map +1 -1
  88. package/dist/cjs/transaction/actions/zksync/getEip721Domain.js.map +1 -1
  89. package/dist/cjs/transaction/serialize-transaction.js +76 -9
  90. package/dist/cjs/transaction/serialize-transaction.js.map +1 -1
  91. package/dist/cjs/utils/any-evm/keyless-transaction.js +25 -4
  92. package/dist/cjs/utils/any-evm/keyless-transaction.js.map +1 -1
  93. package/dist/cjs/utils/hashing/hashMessage.js +2 -2
  94. package/dist/cjs/utils/hashing/hashMessage.js.map +1 -1
  95. package/dist/cjs/utils/hashing/hashTypedData.js +8 -6
  96. package/dist/cjs/utils/hashing/hashTypedData.js.map +1 -1
  97. package/dist/cjs/utils/signatures/helpers/{parseTypedData.js → parse-typed-data.js} +4 -4
  98. package/dist/cjs/utils/signatures/helpers/parse-typed-data.js.map +1 -0
  99. package/dist/cjs/utils/signatures/sign-message.js +12 -6
  100. package/dist/cjs/utils/signatures/sign-message.js.map +1 -1
  101. package/dist/cjs/utils/signatures/sign-typed-data.js +11 -8
  102. package/dist/cjs/utils/signatures/sign-typed-data.js.map +1 -1
  103. package/dist/cjs/utils/signatures/sign.js +4 -4
  104. package/dist/cjs/utils/signatures/sign.js.map +1 -1
  105. package/dist/cjs/utils/signatures/signature-to-hex.js +17 -10
  106. package/dist/cjs/utils/signatures/signature-to-hex.js.map +1 -1
  107. package/dist/cjs/utils/types.js +5 -0
  108. package/dist/cjs/utils/types.js.map +1 -1
  109. package/dist/cjs/version.js +1 -1
  110. package/dist/cjs/wallets/coinbase/{coinbaseMobileSDK.js → coinbase-mobile.js} +1 -1
  111. package/dist/cjs/wallets/coinbase/coinbase-mobile.js.map +1 -0
  112. package/dist/cjs/wallets/coinbase/coinbase-wallet.js +2 -2
  113. package/dist/cjs/wallets/coinbase/coinbase-wallet.js.map +1 -1
  114. package/dist/cjs/wallets/coinbase/{coinbaseWebSDK.js → coinbase-web.js} +11 -11
  115. package/dist/cjs/wallets/coinbase/coinbase-web.js.map +1 -0
  116. package/dist/cjs/wallets/create-wallet.js +2 -2
  117. package/dist/cjs/wallets/create-wallet.js.map +1 -1
  118. package/dist/cjs/wallets/ecosystem/is-ecosystem-wallet.js +1 -1
  119. package/dist/cjs/wallets/eip5792/get-calls-status.js +3 -3
  120. package/dist/cjs/wallets/eip5792/get-calls-status.js.map +1 -1
  121. package/dist/cjs/wallets/eip5792/get-capabilities.js +3 -3
  122. package/dist/cjs/wallets/eip5792/get-capabilities.js.map +1 -1
  123. package/dist/cjs/wallets/eip5792/send-calls.js +3 -3
  124. package/dist/cjs/wallets/eip5792/send-calls.js.map +1 -1
  125. package/dist/cjs/wallets/eip5792/show-calls-status.js +3 -3
  126. package/dist/cjs/wallets/eip5792/show-calls-status.js.map +1 -1
  127. package/dist/cjs/wallets/in-app/core/actions/sign-typed-data.enclave.js.map +1 -1
  128. package/dist/cjs/wallets/in-app/core/wallet/enclave-wallet.js +2 -2
  129. package/dist/cjs/wallets/in-app/core/wallet/enclave-wallet.js.map +1 -1
  130. package/dist/cjs/wallets/in-app/core/wallet/in-app-core.js +8 -4
  131. package/dist/cjs/wallets/in-app/core/wallet/in-app-core.js.map +1 -1
  132. package/dist/cjs/wallets/in-app/web/ecosystem.js +1 -1
  133. package/dist/cjs/wallets/in-app/web/in-app.js +2 -2
  134. package/dist/cjs/wallets/in-app/web/lib/iframe-wallet.js +3 -3
  135. package/dist/cjs/wallets/in-app/web/lib/iframe-wallet.js.map +1 -1
  136. package/dist/cjs/wallets/injected/index.js +2 -2
  137. package/dist/cjs/wallets/injected/index.js.map +1 -1
  138. package/dist/cjs/wallets/native/create-wallet.js +2 -2
  139. package/dist/cjs/wallets/native/create-wallet.js.map +1 -1
  140. package/dist/cjs/wallets/private-key.js +2 -5
  141. package/dist/cjs/wallets/private-key.js.map +1 -1
  142. package/dist/cjs/wallets/smart/index.js +45 -172
  143. package/dist/cjs/wallets/smart/index.js.map +1 -1
  144. package/dist/cjs/wallets/smart/lib/bundler.js +2 -1
  145. package/dist/cjs/wallets/smart/lib/bundler.js.map +1 -1
  146. package/dist/cjs/wallets/smart/lib/calls.js +2 -2
  147. package/dist/cjs/wallets/smart/lib/calls.js.map +1 -1
  148. package/dist/cjs/wallets/smart/lib/constants.js +21 -1
  149. package/dist/cjs/wallets/smart/lib/constants.js.map +1 -1
  150. package/dist/cjs/wallets/smart/lib/paymaster.js +7 -6
  151. package/dist/cjs/wallets/smart/lib/paymaster.js.map +1 -1
  152. package/dist/cjs/wallets/smart/lib/signing.js +166 -0
  153. package/dist/cjs/wallets/smart/lib/signing.js.map +1 -0
  154. package/dist/cjs/wallets/smart/lib/userop.js +20 -5
  155. package/dist/cjs/wallets/smart/lib/userop.js.map +1 -1
  156. package/dist/cjs/wallets/smart/presets/7579.js +218 -0
  157. package/dist/cjs/wallets/smart/presets/7579.js.map +1 -0
  158. package/dist/cjs/wallets/smart/presets/index.js +6 -0
  159. package/dist/cjs/wallets/smart/presets/index.js.map +1 -0
  160. package/dist/cjs/wallets/smart/smart-wallet.js +1 -1
  161. package/dist/cjs/wallets/smart/smart-wallet.js.map +1 -1
  162. package/dist/cjs/wallets/smart/types.js.map +1 -1
  163. package/dist/cjs/wallets/wallet-connect/controller.js +2 -2
  164. package/dist/cjs/wallets/wallet-connect/controller.js.map +1 -1
  165. package/dist/esm/adapters/ethers5.js +2 -2
  166. package/dist/esm/adapters/ethers5.js.map +1 -1
  167. package/dist/esm/adapters/ethers6.js.map +1 -1
  168. package/dist/esm/auth/verify-hash.js +2 -1
  169. package/dist/esm/auth/verify-hash.js.map +1 -1
  170. package/dist/esm/auth/verify-signature.js.map +1 -1
  171. package/dist/esm/contract/actions/resolve-abi.js +4 -0
  172. package/dist/esm/contract/actions/resolve-abi.js.map +1 -1
  173. package/dist/esm/exports/wallets/smart.js +3 -1
  174. package/dist/esm/exports/wallets/smart.js.map +1 -1
  175. package/dist/esm/extensions/erc1271/checkContractWalletSignedTypedData.js +6 -2
  176. package/dist/esm/extensions/erc1271/checkContractWalletSignedTypedData.js.map +1 -1
  177. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/events/ModuleInstalled.js +24 -0
  178. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/events/ModuleInstalled.js.map +1 -0
  179. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/events/ModuleUninstalled.js +24 -0
  180. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/events/ModuleUninstalled.js.map +1 -0
  181. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/read/accountId.js +65 -0
  182. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/read/accountId.js.map +1 -0
  183. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/read/isModuleInstalled.js +124 -0
  184. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/read/isModuleInstalled.js.map +1 -0
  185. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/read/isValidSignature.js +113 -0
  186. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/read/isValidSignature.js.map +1 -0
  187. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/read/supportsExecutionMode.js +106 -0
  188. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/read/supportsExecutionMode.js.map +1 -0
  189. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/read/supportsModule.js +106 -0
  190. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/read/supportsModule.js.map +1 -0
  191. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/write/execute.js +120 -0
  192. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/write/execute.js.map +1 -0
  193. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/write/executeFromExecutor.js +125 -0
  194. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/write/executeFromExecutor.js.map +1 -0
  195. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/write/installModule.js +132 -0
  196. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/write/installModule.js.map +1 -0
  197. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/write/uninstallModule.js +132 -0
  198. package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/write/uninstallModule.js.map +1 -0
  199. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/events/OwnershipTransferred.js +29 -0
  200. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/events/OwnershipTransferred.js.map +1 -0
  201. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/events/Upgraded.js +28 -0
  202. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/events/Upgraded.js.map +1 -0
  203. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/read/accountImplementation.js +64 -0
  204. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/read/accountImplementation.js.map +1 -0
  205. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/read/entrypoint.js +64 -0
  206. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/read/entrypoint.js.map +1 -0
  207. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/read/getAddress.js +114 -0
  208. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/read/getAddress.js.map +1 -0
  209. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/read/implementation.js +65 -0
  210. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/read/implementation.js.map +1 -0
  211. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/read/owner.js +65 -0
  212. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/read/owner.js.map +1 -0
  213. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/addStake.js +110 -0
  214. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/addStake.js.map +1 -0
  215. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/createAccountWithModules.js +150 -0
  216. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/createAccountWithModules.js.map +1 -0
  217. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/renounceOwnership.js +46 -0
  218. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/renounceOwnership.js.map +1 -0
  219. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/transferOwnership.js +110 -0
  220. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/transferOwnership.js.map +1 -0
  221. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/unlockStake.js +46 -0
  222. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/unlockStake.js.map +1 -0
  223. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/upgradeTo.js +110 -0
  224. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/upgradeTo.js.map +1 -0
  225. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/withdraw.js +132 -0
  226. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/withdraw.js.map +1 -0
  227. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/withdrawStake.js +110 -0
  228. package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/withdrawStake.js.map +1 -0
  229. package/dist/esm/extensions/marketplace/direct-listings/write/buyFromListing.js +6 -0
  230. package/dist/esm/extensions/marketplace/direct-listings/write/buyFromListing.js.map +1 -1
  231. package/dist/esm/extensions/pack/createNewPack.js +1 -0
  232. package/dist/esm/extensions/pack/createNewPack.js.map +1 -1
  233. package/dist/esm/react/web/ui/ConnectWallet/screens/SignatureScreen.js +12 -10
  234. package/dist/esm/react/web/ui/ConnectWallet/screens/SignatureScreen.js.map +1 -1
  235. package/dist/esm/react/web/ui/prebuilt/Account/avatar.js +1 -0
  236. package/dist/esm/react/web/ui/prebuilt/Account/avatar.js.map +1 -1
  237. package/dist/esm/react/web/ui/prebuilt/Account/balance.js +1 -0
  238. package/dist/esm/react/web/ui/prebuilt/Account/balance.js.map +1 -1
  239. package/dist/esm/react/web/ui/prebuilt/Account/name.js +1 -0
  240. package/dist/esm/react/web/ui/prebuilt/Account/name.js.map +1 -1
  241. package/dist/esm/react/web/utils/usePreloadWalletProviders.js +1 -1
  242. package/dist/esm/react/web/utils/usePreloadWalletProviders.js.map +1 -1
  243. package/dist/esm/react/web/wallets/shared/ConnectWalletSocialOptions.js +1 -1
  244. package/dist/esm/react/web/wallets/shared/ConnectWalletSocialOptions.js.map +1 -1
  245. package/dist/esm/transaction/actions/estimate-gas.js +3 -3
  246. package/dist/esm/transaction/actions/estimate-gas.js.map +1 -1
  247. package/dist/esm/transaction/actions/gasless/providers/biconomy.js.map +1 -1
  248. package/dist/esm/transaction/actions/gasless/providers/engine.js.map +1 -1
  249. package/dist/esm/transaction/actions/gasless/providers/openzeppelin.js.map +1 -1
  250. package/dist/esm/transaction/actions/sign-transaction.js +5 -8
  251. package/dist/esm/transaction/actions/sign-transaction.js.map +1 -1
  252. package/dist/esm/transaction/actions/to-serializable-transaction.js.map +1 -1
  253. package/dist/esm/transaction/actions/zksync/getEip721Domain.js.map +1 -1
  254. package/dist/esm/transaction/serialize-transaction.js +76 -9
  255. package/dist/esm/transaction/serialize-transaction.js.map +1 -1
  256. package/dist/esm/utils/any-evm/keyless-transaction.js +26 -5
  257. package/dist/esm/utils/any-evm/keyless-transaction.js.map +1 -1
  258. package/dist/esm/utils/hashing/hashMessage.js +2 -2
  259. package/dist/esm/utils/hashing/hashMessage.js.map +1 -1
  260. package/dist/esm/utils/hashing/hashTypedData.js +8 -6
  261. package/dist/esm/utils/hashing/hashTypedData.js.map +1 -1
  262. package/dist/esm/utils/signatures/helpers/parse-typed-data.js +15 -0
  263. package/dist/esm/utils/signatures/helpers/parse-typed-data.js.map +1 -0
  264. package/dist/esm/utils/signatures/sign-message.js +12 -6
  265. package/dist/esm/utils/signatures/sign-message.js.map +1 -1
  266. package/dist/esm/utils/signatures/sign-typed-data.js +11 -8
  267. package/dist/esm/utils/signatures/sign-typed-data.js.map +1 -1
  268. package/dist/esm/utils/signatures/sign.js +4 -4
  269. package/dist/esm/utils/signatures/sign.js.map +1 -1
  270. package/dist/esm/utils/signatures/signature-to-hex.js +17 -10
  271. package/dist/esm/utils/signatures/signature-to-hex.js.map +1 -1
  272. package/dist/esm/utils/types.js +4 -1
  273. package/dist/esm/utils/types.js.map +1 -1
  274. package/dist/esm/version.js +1 -1
  275. package/dist/esm/wallets/coinbase/{coinbaseMobileSDK.js → coinbase-mobile.js} +1 -1
  276. package/dist/esm/wallets/coinbase/coinbase-mobile.js.map +1 -0
  277. package/dist/esm/wallets/coinbase/coinbase-wallet.js +2 -2
  278. package/dist/esm/wallets/coinbase/coinbase-wallet.js.map +1 -1
  279. package/dist/esm/wallets/coinbase/{coinbaseWebSDK.js → coinbase-web.js} +11 -11
  280. package/dist/esm/wallets/coinbase/coinbase-web.js.map +1 -0
  281. package/dist/esm/wallets/create-wallet.js +1 -1
  282. package/dist/esm/wallets/create-wallet.js.map +1 -1
  283. package/dist/esm/wallets/ecosystem/is-ecosystem-wallet.js +1 -1
  284. package/dist/esm/wallets/eip5792/get-calls-status.js +2 -2
  285. package/dist/esm/wallets/eip5792/get-calls-status.js.map +1 -1
  286. package/dist/esm/wallets/eip5792/get-capabilities.js +2 -2
  287. package/dist/esm/wallets/eip5792/get-capabilities.js.map +1 -1
  288. package/dist/esm/wallets/eip5792/send-calls.js +2 -2
  289. package/dist/esm/wallets/eip5792/send-calls.js.map +1 -1
  290. package/dist/esm/wallets/eip5792/show-calls-status.js +2 -2
  291. package/dist/esm/wallets/eip5792/show-calls-status.js.map +1 -1
  292. package/dist/esm/wallets/in-app/core/actions/sign-typed-data.enclave.js.map +1 -1
  293. package/dist/esm/wallets/in-app/core/wallet/enclave-wallet.js +1 -1
  294. package/dist/esm/wallets/in-app/core/wallet/enclave-wallet.js.map +1 -1
  295. package/dist/esm/wallets/in-app/core/wallet/in-app-core.js +9 -5
  296. package/dist/esm/wallets/in-app/core/wallet/in-app-core.js.map +1 -1
  297. package/dist/esm/wallets/in-app/web/ecosystem.js +1 -1
  298. package/dist/esm/wallets/in-app/web/in-app.js +2 -2
  299. package/dist/esm/wallets/in-app/web/lib/iframe-wallet.js +2 -2
  300. package/dist/esm/wallets/in-app/web/lib/iframe-wallet.js.map +1 -1
  301. package/dist/esm/wallets/injected/index.js +1 -1
  302. package/dist/esm/wallets/injected/index.js.map +1 -1
  303. package/dist/esm/wallets/native/create-wallet.js +1 -1
  304. package/dist/esm/wallets/native/create-wallet.js.map +1 -1
  305. package/dist/esm/wallets/private-key.js +2 -5
  306. package/dist/esm/wallets/private-key.js.map +1 -1
  307. package/dist/esm/wallets/smart/index.js +44 -171
  308. package/dist/esm/wallets/smart/index.js.map +1 -1
  309. package/dist/esm/wallets/smart/lib/bundler.js +2 -1
  310. package/dist/esm/wallets/smart/lib/bundler.js.map +1 -1
  311. package/dist/esm/wallets/smart/lib/calls.js +2 -2
  312. package/dist/esm/wallets/smart/lib/calls.js.map +1 -1
  313. package/dist/esm/wallets/smart/lib/constants.js +20 -0
  314. package/dist/esm/wallets/smart/lib/constants.js.map +1 -1
  315. package/dist/esm/wallets/smart/lib/paymaster.js +7 -6
  316. package/dist/esm/wallets/smart/lib/paymaster.js.map +1 -1
  317. package/dist/esm/wallets/smart/lib/signing.js +161 -0
  318. package/dist/esm/wallets/smart/lib/signing.js.map +1 -0
  319. package/dist/esm/wallets/smart/lib/userop.js +21 -6
  320. package/dist/esm/wallets/smart/lib/userop.js.map +1 -1
  321. package/dist/esm/wallets/smart/presets/7579.js +215 -0
  322. package/dist/esm/wallets/smart/presets/7579.js.map +1 -0
  323. package/dist/esm/wallets/smart/presets/index.js +2 -0
  324. package/dist/esm/wallets/smart/presets/index.js.map +1 -0
  325. package/dist/esm/wallets/smart/smart-wallet.js +1 -1
  326. package/dist/esm/wallets/smart/smart-wallet.js.map +1 -1
  327. package/dist/esm/wallets/smart/types.js.map +1 -1
  328. package/dist/esm/wallets/wallet-connect/controller.js +1 -1
  329. package/dist/esm/wallets/wallet-connect/controller.js.map +1 -1
  330. package/dist/types/adapters/ethers5.d.ts.map +1 -1
  331. package/dist/types/adapters/ethers6.d.ts.map +1 -1
  332. package/dist/types/auth/verify-hash.d.ts.map +1 -1
  333. package/dist/types/auth/verify-signature.d.ts +2 -2
  334. package/dist/types/auth/verify-signature.d.ts.map +1 -1
  335. package/dist/types/contract/actions/resolve-abi.d.ts.map +1 -1
  336. package/dist/types/exports/wallets/smart.d.ts +2 -1
  337. package/dist/types/exports/wallets/smart.d.ts.map +1 -1
  338. package/dist/types/exports/wallets.d.ts +1 -1
  339. package/dist/types/exports/wallets.d.ts.map +1 -1
  340. package/dist/types/exports/wallets.native.d.ts +1 -1
  341. package/dist/types/exports/wallets.native.d.ts.map +1 -1
  342. package/dist/types/extensions/erc1271/checkContractWalletSignedTypedData.d.ts +4 -4
  343. package/dist/types/extensions/erc1271/checkContractWalletSignedTypedData.d.ts.map +1 -1
  344. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/events/ModuleInstalled.d.ts +29 -0
  345. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/events/ModuleInstalled.d.ts.map +1 -0
  346. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/events/ModuleUninstalled.d.ts +29 -0
  347. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/events/ModuleUninstalled.d.ts.map +1 -0
  348. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/read/accountId.d.ts +44 -0
  349. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/read/accountId.d.ts.map +1 -0
  350. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/read/isModuleInstalled.d.ts +97 -0
  351. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/read/isModuleInstalled.d.ts.map +1 -0
  352. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/read/isValidSignature.d.ts +90 -0
  353. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/read/isValidSignature.d.ts.map +1 -0
  354. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/read/supportsExecutionMode.d.ts +83 -0
  355. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/read/supportsExecutionMode.d.ts.map +1 -0
  356. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/read/supportsModule.d.ts +83 -0
  357. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/read/supportsModule.d.ts.map +1 -0
  358. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/write/execute.d.ts +86 -0
  359. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/write/execute.d.ts.map +1 -0
  360. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/write/executeFromExecutor.d.ts +86 -0
  361. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/write/executeFromExecutor.d.ts.map +1 -0
  362. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/write/installModule.d.ts +93 -0
  363. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/write/installModule.d.ts.map +1 -0
  364. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/write/uninstallModule.d.ts +93 -0
  365. package/dist/types/extensions/erc7579/__generated__/IERC7579Account/write/uninstallModule.d.ts.map +1 -0
  366. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/events/OwnershipTransferred.d.ts +51 -0
  367. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/events/OwnershipTransferred.d.ts.map +1 -0
  368. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/events/Upgraded.d.ts +41 -0
  369. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/events/Upgraded.d.ts.map +1 -0
  370. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/accountImplementation.d.ts +44 -0
  371. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/accountImplementation.d.ts.map +1 -0
  372. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/entrypoint.d.ts +44 -0
  373. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/entrypoint.d.ts.map +1 -0
  374. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/getAddress.d.ts +90 -0
  375. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/getAddress.d.ts.map +1 -0
  376. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/implementation.d.ts +44 -0
  377. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/implementation.d.ts.map +1 -0
  378. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/owner.d.ts +44 -0
  379. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/owner.d.ts.map +1 -0
  380. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/addStake.d.ts +79 -0
  381. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/addStake.d.ts.map +1 -0
  382. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/createAccountWithModules.d.ts +107 -0
  383. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/createAccountWithModules.d.ts.map +1 -0
  384. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/renounceOwnership.d.ts +33 -0
  385. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/renounceOwnership.d.ts.map +1 -0
  386. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/transferOwnership.d.ts +79 -0
  387. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/transferOwnership.d.ts.map +1 -0
  388. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/unlockStake.d.ts +33 -0
  389. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/unlockStake.d.ts.map +1 -0
  390. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/upgradeTo.d.ts +79 -0
  391. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/upgradeTo.d.ts.map +1 -0
  392. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/withdraw.d.ts +93 -0
  393. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/withdraw.d.ts.map +1 -0
  394. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/withdrawStake.d.ts +79 -0
  395. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/withdrawStake.d.ts.map +1 -0
  396. package/dist/types/extensions/marketplace/direct-listings/write/buyFromListing.d.ts.map +1 -1
  397. package/dist/types/extensions/pack/createNewPack.d.ts.map +1 -1
  398. package/dist/types/react/web/ui/ConnectWallet/screens/SignatureScreen.d.ts.map +1 -1
  399. package/dist/types/react/web/ui/prebuilt/Account/avatar.d.ts.map +1 -1
  400. package/dist/types/react/web/ui/prebuilt/Account/balance.d.ts.map +1 -1
  401. package/dist/types/react/web/ui/prebuilt/Account/name.d.ts.map +1 -1
  402. package/dist/types/transaction/actions/gasless/providers/biconomy.d.ts +2 -2
  403. package/dist/types/transaction/actions/gasless/providers/biconomy.d.ts.map +1 -1
  404. package/dist/types/transaction/actions/gasless/providers/engine.d.ts +2 -2
  405. package/dist/types/transaction/actions/gasless/providers/engine.d.ts.map +1 -1
  406. package/dist/types/transaction/actions/gasless/providers/openzeppelin.d.ts +2 -2
  407. package/dist/types/transaction/actions/gasless/providers/openzeppelin.d.ts.map +1 -1
  408. package/dist/types/transaction/actions/gasless/send-gasless-transaction.d.ts +2 -2
  409. package/dist/types/transaction/actions/gasless/send-gasless-transaction.d.ts.map +1 -1
  410. package/dist/types/transaction/actions/sign-transaction.d.ts +2 -2
  411. package/dist/types/transaction/actions/sign-transaction.d.ts.map +1 -1
  412. package/dist/types/transaction/actions/to-serializable-transaction.d.ts.map +1 -1
  413. package/dist/types/transaction/actions/zksync/getEip721Domain.d.ts +2 -2
  414. package/dist/types/transaction/actions/zksync/getEip721Domain.d.ts.map +1 -1
  415. package/dist/types/transaction/serialize-transaction.d.ts +24 -4
  416. package/dist/types/transaction/serialize-transaction.d.ts.map +1 -1
  417. package/dist/types/utils/any-evm/keyless-transaction.d.ts +6 -4
  418. package/dist/types/utils/any-evm/keyless-transaction.d.ts.map +1 -1
  419. package/dist/types/utils/hashing/hashMessage.d.ts +3 -2
  420. package/dist/types/utils/hashing/hashMessage.d.ts.map +1 -1
  421. package/dist/types/utils/hashing/hashTypedData.d.ts +3 -3
  422. package/dist/types/utils/hashing/hashTypedData.d.ts.map +1 -1
  423. package/dist/types/utils/signatures/helpers/parse-typed-data.d.ts +6 -0
  424. package/dist/types/utils/signatures/helpers/parse-typed-data.d.ts.map +1 -0
  425. package/dist/types/utils/signatures/sign-message.d.ts.map +1 -1
  426. package/dist/types/utils/signatures/sign-typed-data.d.ts +3 -4
  427. package/dist/types/utils/signatures/sign-typed-data.d.ts.map +1 -1
  428. package/dist/types/utils/signatures/sign.d.ts +6 -2
  429. package/dist/types/utils/signatures/sign.d.ts.map +1 -1
  430. package/dist/types/utils/signatures/signature-to-hex.d.ts +7 -3
  431. package/dist/types/utils/signatures/signature-to-hex.d.ts.map +1 -1
  432. package/dist/types/utils/types.d.ts +13 -0
  433. package/dist/types/utils/types.d.ts.map +1 -1
  434. package/dist/types/version.d.ts +1 -1
  435. package/dist/types/wallets/coinbase/{coinbaseMobileSDK.d.ts → coinbase-mobile.d.ts} +2 -2
  436. package/dist/types/wallets/coinbase/coinbase-mobile.d.ts.map +1 -0
  437. package/dist/types/wallets/coinbase/{coinbaseWebSDK.d.ts → coinbase-web.d.ts} +1 -1
  438. package/dist/types/wallets/coinbase/coinbase-web.d.ts.map +1 -0
  439. package/dist/types/wallets/ecosystem/get-ecosystem-wallet-auth-options.d.ts +1 -1
  440. package/dist/types/wallets/ecosystem/get-ecosystem-wallet-auth-options.d.ts.map +1 -1
  441. package/dist/types/wallets/in-app/core/actions/sign-typed-data.enclave.d.ts +3 -4
  442. package/dist/types/wallets/in-app/core/actions/sign-typed-data.enclave.d.ts.map +1 -1
  443. package/dist/types/wallets/in-app/core/wallet/in-app-core.d.ts.map +1 -1
  444. package/dist/types/wallets/in-app/web/ecosystem.d.ts +1 -1
  445. package/dist/types/wallets/in-app/web/in-app.d.ts +2 -2
  446. package/dist/types/wallets/interfaces/wallet.d.ts +6 -4
  447. package/dist/types/wallets/interfaces/wallet.d.ts.map +1 -1
  448. package/dist/types/wallets/private-key.d.ts.map +1 -1
  449. package/dist/types/wallets/smart/index.d.ts +3 -2
  450. package/dist/types/wallets/smart/index.d.ts.map +1 -1
  451. package/dist/types/wallets/smart/lib/bundler.d.ts +9 -3
  452. package/dist/types/wallets/smart/lib/bundler.d.ts.map +1 -1
  453. package/dist/types/wallets/smart/lib/calls.d.ts +2 -2
  454. package/dist/types/wallets/smart/lib/calls.d.ts.map +1 -1
  455. package/dist/types/wallets/smart/lib/constants.d.ts +4 -0
  456. package/dist/types/wallets/smart/lib/constants.d.ts.map +1 -1
  457. package/dist/types/wallets/smart/lib/paymaster.d.ts.map +1 -1
  458. package/dist/types/wallets/smart/lib/signing.d.ts +20 -0
  459. package/dist/types/wallets/smart/lib/signing.d.ts.map +1 -0
  460. package/dist/types/wallets/smart/lib/userop.d.ts.map +1 -1
  461. package/dist/types/wallets/smart/presets/7579.d.ts +34 -0
  462. package/dist/types/wallets/smart/presets/7579.d.ts.map +1 -0
  463. package/dist/types/wallets/smart/presets/index.d.ts +2 -0
  464. package/dist/types/wallets/smart/presets/index.d.ts.map +1 -0
  465. package/dist/types/wallets/smart/smart-wallet.d.ts +3 -3
  466. package/dist/types/wallets/smart/smart-wallet.d.ts.map +1 -1
  467. package/dist/types/wallets/smart/types.d.ts +30 -13
  468. package/dist/types/wallets/smart/types.d.ts.map +1 -1
  469. package/dist/types/wallets/wallet-types.d.ts +1 -1
  470. package/dist/types/wallets/wallet-types.d.ts.map +1 -1
  471. package/package.json +23 -23
  472. package/src/adapters/ethers5.test.ts +92 -0
  473. package/src/adapters/ethers5.ts +6 -5
  474. package/src/adapters/ethers6.ts +3 -2
  475. package/src/adapters/viem.test.ts +5 -4
  476. package/src/auth/verify-hash.ts +2 -1
  477. package/src/auth/verify-signature.ts +2 -2
  478. package/src/contract/actions/resolve-abi.ts +6 -0
  479. package/src/exports/wallets/smart.ts +4 -0
  480. package/src/exports/wallets.native.ts +1 -1
  481. package/src/exports/wallets.ts +1 -1
  482. package/src/extensions/erc1271/checkContractWalletSignedTypedData.ts +9 -5
  483. package/src/extensions/erc7579/__generated__/IERC7579Account/events/ModuleInstalled.ts +24 -0
  484. package/src/extensions/erc7579/__generated__/IERC7579Account/events/ModuleUninstalled.ts +24 -0
  485. package/src/extensions/erc7579/__generated__/IERC7579Account/read/accountId.ts +71 -0
  486. package/src/extensions/erc7579/__generated__/IERC7579Account/read/isModuleInstalled.ts +153 -0
  487. package/src/extensions/erc7579/__generated__/IERC7579Account/read/isValidSignature.ts +133 -0
  488. package/src/extensions/erc7579/__generated__/IERC7579Account/read/supportsExecutionMode.ts +132 -0
  489. package/src/extensions/erc7579/__generated__/IERC7579Account/read/supportsModule.ts +128 -0
  490. package/src/extensions/erc7579/__generated__/IERC7579Account/write/execute.ts +149 -0
  491. package/src/extensions/erc7579/__generated__/IERC7579Account/write/executeFromExecutor.ts +158 -0
  492. package/src/extensions/erc7579/__generated__/IERC7579Account/write/installModule.ts +164 -0
  493. package/src/extensions/erc7579/__generated__/IERC7579Account/write/uninstallModule.ts +167 -0
  494. package/src/extensions/erc7579/__generated__/ModularAccountFactory/events/OwnershipTransferred.ts +49 -0
  495. package/src/extensions/erc7579/__generated__/ModularAccountFactory/events/Upgraded.ts +40 -0
  496. package/src/extensions/erc7579/__generated__/ModularAccountFactory/read/accountImplementation.ts +70 -0
  497. package/src/extensions/erc7579/__generated__/ModularAccountFactory/read/entrypoint.ts +70 -0
  498. package/src/extensions/erc7579/__generated__/ModularAccountFactory/read/getAddress.ts +134 -0
  499. package/src/extensions/erc7579/__generated__/ModularAccountFactory/read/implementation.ts +71 -0
  500. package/src/extensions/erc7579/__generated__/ModularAccountFactory/read/owner.ts +71 -0
  501. package/src/extensions/erc7579/__generated__/ModularAccountFactory/write/addStake.ts +138 -0
  502. package/src/extensions/erc7579/__generated__/ModularAccountFactory/write/createAccountWithModules.ts +193 -0
  503. package/src/extensions/erc7579/__generated__/ModularAccountFactory/write/renounceOwnership.ts +50 -0
  504. package/src/extensions/erc7579/__generated__/ModularAccountFactory/write/transferOwnership.ts +139 -0
  505. package/src/extensions/erc7579/__generated__/ModularAccountFactory/write/unlockStake.ts +50 -0
  506. package/src/extensions/erc7579/__generated__/ModularAccountFactory/write/upgradeTo.ts +140 -0
  507. package/src/extensions/erc7579/__generated__/ModularAccountFactory/write/withdraw.ts +159 -0
  508. package/src/extensions/erc7579/__generated__/ModularAccountFactory/write/withdrawStake.ts +137 -0
  509. package/src/extensions/marketplace/direct-listings/direct-listings.test.ts +74 -14
  510. package/src/extensions/marketplace/direct-listings/write/buyFromListing.ts +6 -0
  511. package/src/extensions/pack/createNewPack.ts +1 -0
  512. package/src/react/web/ui/ConnectWallet/screens/SignatureScreen.test.tsx +287 -0
  513. package/src/react/web/ui/ConnectWallet/screens/SignatureScreen.tsx +13 -5
  514. package/src/react/web/ui/prebuilt/Account/avatar.tsx +1 -0
  515. package/src/react/web/ui/prebuilt/Account/balance.tsx +1 -0
  516. package/src/react/web/ui/prebuilt/Account/name.tsx +1 -0
  517. package/src/react/web/utils/usePreloadWalletProviders.ts +1 -1
  518. package/src/react/web/wallets/shared/ConnectWalletSocialOptions.test.tsx +87 -0
  519. package/src/react/web/wallets/shared/ConnectWalletSocialOptions.tsx +1 -1
  520. package/src/transaction/actions/estimate-gas.ts +3 -3
  521. package/src/transaction/actions/gasless/providers/biconomy.ts +3 -2
  522. package/src/transaction/actions/gasless/providers/engine.ts +2 -2
  523. package/src/transaction/actions/gasless/providers/openzeppelin.ts +2 -2
  524. package/src/transaction/actions/gasless/send-gasless-transaction.ts +2 -2
  525. package/src/transaction/actions/sign-transaction.test.ts +8 -15
  526. package/src/transaction/actions/sign-transaction.ts +9 -11
  527. package/src/transaction/actions/to-serializable-transaction.ts +2 -2
  528. package/src/transaction/actions/zksync/getEip721Domain.ts +2 -2
  529. package/src/transaction/serialize-transaction.test.ts +135 -229
  530. package/src/transaction/serialize-transaction.ts +131 -22
  531. package/src/utils/any-evm/keyless-transaction.test.ts +91 -0
  532. package/src/utils/any-evm/keyless-transaction.ts +43 -14
  533. package/src/utils/hashing/hashMessage.ts +4 -3
  534. package/src/utils/hashing/hashTypedData.ts +24 -27
  535. package/src/utils/signatures/helpers/parse-typed-data.test.ts +56 -0
  536. package/src/utils/signatures/helpers/parse-typed-data.ts +29 -0
  537. package/src/utils/signatures/sign-message.ts +15 -6
  538. package/src/utils/signatures/sign-typed-data.ts +18 -12
  539. package/src/utils/signatures/sign.ts +5 -6
  540. package/src/utils/signatures/signature-to-hex.ts +29 -13
  541. package/src/utils/types.ts +17 -0
  542. package/src/version.ts +1 -1
  543. package/src/wallets/coinbase/coinbase-mobile.test.ts +69 -0
  544. package/src/wallets/coinbase/{coinbaseMobileSDK.ts → coinbase-mobile.ts} +1 -1
  545. package/src/wallets/coinbase/coinbase-wallet.ts +2 -2
  546. package/src/wallets/coinbase/coinbase-web.test.ts +176 -0
  547. package/src/wallets/coinbase/{coinbaseWebSDK.ts → coinbase-web.ts} +13 -17
  548. package/src/wallets/create-wallet.ts +1 -1
  549. package/src/wallets/ecosystem/get-ecosystem-wallet-auth-options.ts +1 -1
  550. package/src/wallets/ecosystem/is-ecosystem-wallet.ts +1 -1
  551. package/src/wallets/eip5792/get-calls-status.ts +2 -2
  552. package/src/wallets/eip5792/get-capabilities.ts +2 -2
  553. package/src/wallets/eip5792/send-calls.ts +2 -2
  554. package/src/wallets/eip5792/show-calls-status.ts +2 -2
  555. package/src/wallets/in-app/core/actions/sign-typed-data.enclave.ts +3 -4
  556. package/src/wallets/in-app/core/wallet/enclave-wallet.ts +1 -1
  557. package/src/wallets/in-app/core/wallet/in-app-core.test.ts +270 -0
  558. package/src/wallets/in-app/core/wallet/in-app-core.ts +16 -5
  559. package/src/wallets/in-app/web/ecosystem.ts +1 -1
  560. package/src/wallets/in-app/web/in-app.ts +2 -2
  561. package/src/wallets/in-app/web/lib/iframe-wallet.ts +2 -2
  562. package/src/wallets/injected/index.ts +1 -1
  563. package/src/wallets/interfaces/wallet.ts +7 -11
  564. package/src/wallets/native/create-wallet.ts +1 -1
  565. package/src/wallets/private-key.ts +16 -14
  566. package/src/wallets/smart/index.ts +68 -235
  567. package/src/wallets/smart/lib/bundler.ts +18 -7
  568. package/src/wallets/smart/lib/calls.ts +4 -2
  569. package/src/wallets/smart/lib/constants.ts +23 -0
  570. package/src/wallets/smart/lib/paymaster.ts +8 -6
  571. package/src/wallets/smart/lib/signing.ts +231 -0
  572. package/src/wallets/smart/lib/userop.ts +34 -10
  573. package/src/wallets/smart/presets/7579.ts +269 -0
  574. package/src/wallets/smart/presets/index.ts +1 -0
  575. package/src/wallets/smart/smart-wallet-dev.test.ts +5 -4
  576. package/src/wallets/smart/smart-wallet-integration-v07.test.ts +299 -0
  577. package/src/wallets/smart/smart-wallet-integration.test.ts +399 -0
  578. package/src/wallets/smart/smart-wallet-modular.test.ts +134 -0
  579. package/src/wallets/smart/smart-wallet-tokenpaymaster.test.ts +117 -0
  580. package/src/wallets/smart/smart-wallet.ts +4 -6
  581. package/src/wallets/smart/smart.test.ts +87 -0
  582. package/src/wallets/smart/types.ts +39 -12
  583. package/src/wallets/wallet-connect/controller.ts +1 -1
  584. package/src/wallets/wallet-connect/receiver/session-request.test.ts +5 -5
  585. package/src/wallets/wallet-types.ts +1 -1
  586. package/dist/cjs/utils/signatures/helpers/parseTypedData.js.map +0 -1
  587. package/dist/cjs/wallets/coinbase/coinbaseMobileSDK.js.map +0 -1
  588. package/dist/cjs/wallets/coinbase/coinbaseWebSDK.js.map +0 -1
  589. package/dist/esm/utils/signatures/helpers/parseTypedData.js +0 -15
  590. package/dist/esm/utils/signatures/helpers/parseTypedData.js.map +0 -1
  591. package/dist/esm/wallets/coinbase/coinbaseMobileSDK.js.map +0 -1
  592. package/dist/esm/wallets/coinbase/coinbaseWebSDK.js.map +0 -1
  593. package/dist/types/utils/signatures/helpers/parseTypedData.d.ts +0 -7
  594. package/dist/types/utils/signatures/helpers/parseTypedData.d.ts.map +0 -1
  595. package/dist/types/wallets/coinbase/coinbaseMobileSDK.d.ts.map +0 -1
  596. package/dist/types/wallets/coinbase/coinbaseWebSDK.d.ts.map +0 -1
  597. package/src/utils/signatures/helpers/parseTypedData.ts +0 -25
@@ -1,15 +1,37 @@
1
- import {
2
- type GetTransactionType,
3
- type SerializedTransactionReturnType,
4
- type Signature,
5
- type TransactionSerializable,
6
- type TransactionType,
7
- serializeTransaction as _serializeTransaction,
8
- } from "viem";
1
+ import * as ox__Hex from "ox/Hex";
2
+ import * as ox__Signature from "ox/Signature";
3
+ import * as ox__TransactionEnvelopeEip1559 from "ox/TransactionEnvelopeEip1559";
4
+ import * as ox__TransactionEnvelopeEip2930 from "ox/TransactionEnvelopeEip2930";
5
+ import * as ox__TransactionEnvelopeLegacy from "ox/TransactionEnvelopeLegacy";
6
+ import type { Hex } from "../utils/encoding/hex.js";
7
+
8
+ export type SerializableTransaction = {
9
+ type?: string | undefined;
10
+ r?: Hex | bigint;
11
+ s?: Hex | bigint;
12
+ v?: bigint | number;
13
+ yParity?: bigint | number;
14
+ accessList?:
15
+ | ox__TransactionEnvelopeEip2930.TransactionEnvelopeEip2930["accessList"]
16
+ | undefined;
17
+ chainId?: number | undefined;
18
+ gasPrice?: bigint | undefined;
19
+ maxFeePerGas?: bigint | undefined;
20
+ maxPriorityFeePerGas?: bigint | undefined;
21
+ data?: Hex | undefined;
22
+ to?: string | null | undefined; // Must allow null for backwards compatibility
23
+ nonce?: number | bigint | undefined;
24
+ value?: bigint | undefined;
25
+ gas?: bigint | undefined;
26
+ gasLimit?: bigint | undefined;
27
+ };
9
28
 
10
29
  export type SerializeTransactionOptions = {
11
- transaction: TransactionSerializable;
12
- signature?: Signature | undefined;
30
+ transaction: SerializableTransaction;
31
+ signature?:
32
+ | ox__Signature.Signature<true, Hex>
33
+ | ox__Signature.Legacy<Hex, bigint>
34
+ | undefined;
13
35
  };
14
36
 
15
37
  /**
@@ -32,18 +54,39 @@ export type SerializeTransactionOptions = {
32
54
  * });
33
55
  * ```
34
56
  */
35
- export function serializeTransaction<
36
- const transaction extends TransactionSerializable,
37
- _transactionType extends TransactionType = GetTransactionType<transaction>,
38
- >(
57
+ export function serializeTransaction(
39
58
  options: SerializeTransactionOptions,
40
- ): SerializedTransactionReturnType<transaction, _transactionType> {
59
+ ): Hex {
41
60
  const { transaction } = options;
42
61
 
62
+ const type = getTransactionEnvelopeType(transaction);
63
+
43
64
  // This is to maintain compatibility with our old interface (including the signature in the transaction object)
44
65
  const signature = (() => {
45
- if (options.signature) return options.signature;
46
- if (transaction.v === undefined && transaction.yParity === undefined) {
66
+ if (options.signature) {
67
+ if (
68
+ "v" in options.signature &&
69
+ typeof options.signature.v !== "undefined"
70
+ ) {
71
+ return ox__Signature.fromLegacy({
72
+ r: ox__Hex.toBigInt(options.signature.r),
73
+ s: ox__Hex.toBigInt(options.signature.s),
74
+ v: Number(options.signature.v),
75
+ });
76
+ }
77
+
78
+ return {
79
+ r: ox__Hex.toBigInt(options.signature.r),
80
+ s: ox__Hex.toBigInt(options.signature.s),
81
+ // We force the Signature type here because we filter for legacy type above
82
+ yParity: (options.signature as unknown as ox__Signature.Signature)
83
+ .yParity,
84
+ };
85
+ }
86
+ if (
87
+ typeof transaction.v === "undefined" &&
88
+ typeof transaction.yParity === "undefined"
89
+ ) {
47
90
  return undefined;
48
91
  }
49
92
 
@@ -52,12 +95,78 @@ export function serializeTransaction<
52
95
  }
53
96
 
54
97
  return {
55
- v: transaction.v,
56
- r: transaction.r,
57
- s: transaction.s,
58
- yParity: transaction.yParity,
98
+ r:
99
+ typeof transaction.r === "bigint"
100
+ ? transaction.r
101
+ : ox__Hex.toBigInt(transaction.r),
102
+ s:
103
+ typeof transaction.s === "bigint"
104
+ ? transaction.s
105
+ : ox__Hex.toBigInt(transaction.s),
106
+ yParity:
107
+ typeof transaction.v !== "undefined" &&
108
+ typeof transaction.yParity === "undefined"
109
+ ? ox__Signature.vToYParity(Number(transaction.v))
110
+ : Number(transaction.yParity),
59
111
  };
60
112
  })();
61
113
 
62
- return _serializeTransaction(transaction, signature as Signature | undefined); // Trust the options type-checking did its job and that the converted signature mirrors that type
114
+ if (type === "eip1559") {
115
+ const typedTransaction =
116
+ transaction as ox__TransactionEnvelopeEip1559.TransactionEnvelopeEip1559;
117
+ ox__TransactionEnvelopeEip1559.assert(typedTransaction);
118
+
119
+ return ox__TransactionEnvelopeEip1559.serialize(typedTransaction, {
120
+ signature,
121
+ });
122
+ }
123
+
124
+ if (type === "legacy") {
125
+ const typedTransaction =
126
+ transaction as ox__TransactionEnvelopeLegacy.TransactionEnvelopeLegacy;
127
+ ox__TransactionEnvelopeLegacy.assert(typedTransaction);
128
+
129
+ return ox__TransactionEnvelopeLegacy.serialize(typedTransaction, {
130
+ signature,
131
+ });
132
+ }
133
+
134
+ if (type === "eip2930") {
135
+ const typedTransaction =
136
+ transaction as ox__TransactionEnvelopeEip2930.TransactionEnvelopeEip2930;
137
+ ox__TransactionEnvelopeEip2930.assert(typedTransaction);
138
+
139
+ return ox__TransactionEnvelopeEip2930.serialize(typedTransaction, {
140
+ signature,
141
+ });
142
+ }
143
+
144
+ throw new Error("Invalid transaction type");
145
+ }
146
+
147
+ /**
148
+ * @internal
149
+ */
150
+ function getTransactionEnvelopeType(
151
+ transactionEnvelope: SerializableTransaction,
152
+ ) {
153
+ if (typeof transactionEnvelope.type !== "undefined") {
154
+ return transactionEnvelope.type;
155
+ }
156
+
157
+ if (
158
+ typeof transactionEnvelope.maxFeePerGas !== "undefined" ||
159
+ typeof transactionEnvelope.maxPriorityFeePerGas !== "undefined"
160
+ ) {
161
+ return "eip1559";
162
+ }
163
+
164
+ if (typeof transactionEnvelope.gasPrice !== "undefined") {
165
+ if (typeof transactionEnvelope.accessList !== "undefined") {
166
+ return "eip2930";
167
+ }
168
+ return "legacy";
169
+ }
170
+
171
+ throw new Error("Invalid transaction type");
63
172
  }
@@ -0,0 +1,91 @@
1
+ import * as ox__Hash from "ox/Hash";
2
+ import * as ox__Hex from "ox/Hex";
3
+ import * as ox__Signature from "ox/Signature";
4
+ import { recoverAddress } from "viem";
5
+ import { describe, expect, it } from "vitest";
6
+ import { serializeTransaction } from "../../transaction/serialize-transaction.js";
7
+ import { getKeylessTransaction } from "./keyless-transaction.js";
8
+
9
+ describe("getKeylessTransaction", () => {
10
+ const mockTransaction = {
11
+ to: "0x1234567890123456789012345678901234567890",
12
+ value: 1000n,
13
+ chainId: 1,
14
+ gasPrice: 10n,
15
+ };
16
+
17
+ const mockSignature = {
18
+ r: "0x60fdd29ff912ce880cd3edaf9f932dc61d3dae823ea77e0323f94adb9f6a72fe",
19
+ s: "0x60fdd29ff912ce880cd3edaf9f932dc61d3dae823ea77e0323f94adb9f6a72fe",
20
+ v: 27n,
21
+ } as const;
22
+
23
+ it("should return the correct signer address and serialized transaction", async () => {
24
+ const serializedTransaction = serializeTransaction({
25
+ transaction: mockTransaction,
26
+ });
27
+
28
+ const hash = ox__Hash.keccak256(serializedTransaction);
29
+ const expectedAddress = await recoverAddress({
30
+ hash,
31
+ signature: ox__Signature.toHex({
32
+ r: ox__Hex.toBigInt(mockSignature.r),
33
+ s: ox__Hex.toBigInt(mockSignature.s),
34
+ yParity: ox__Signature.vToYParity(Number(mockSignature.v)),
35
+ }),
36
+ });
37
+
38
+ const result = await getKeylessTransaction({
39
+ transaction: mockTransaction,
40
+ signature: mockSignature,
41
+ });
42
+
43
+ expect(result.signerAddress).toBe(expectedAddress);
44
+ expect(result.transaction).toBe(
45
+ serializeTransaction({
46
+ transaction: mockTransaction,
47
+ signature: mockSignature,
48
+ }),
49
+ );
50
+ });
51
+
52
+ it("should throw if yParity is explicitly undefined", async () => {
53
+ const invalidSignature = {
54
+ r: mockSignature.r,
55
+ s: mockSignature.s,
56
+ yParity: undefined,
57
+ };
58
+
59
+ await expect(
60
+ getKeylessTransaction({
61
+ transaction: mockTransaction,
62
+ // biome-ignore lint/suspicious/noExplicitAny: Testing invalid data
63
+ signature: invalidSignature as any,
64
+ }),
65
+ ).rejects.toThrow();
66
+ });
67
+
68
+ it("should throw if a signature is not recoverable", async () => {
69
+ const invalidSignature = { ...mockSignature, v: undefined };
70
+
71
+ await expect(
72
+ getKeylessTransaction({
73
+ transaction: mockTransaction,
74
+ // biome-ignore lint/suspicious/noExplicitAny: Testing invalid data
75
+ signature: invalidSignature as any,
76
+ }),
77
+ ).rejects.toThrow();
78
+ });
79
+
80
+ it("should throw an error if the transaction is invalid", async () => {
81
+ const invalidTransaction = { ...mockTransaction, value: "invalid" };
82
+
83
+ await expect(
84
+ getKeylessTransaction({
85
+ // biome-ignore lint/suspicious/noExplicitAny: Testing invalid data
86
+ transaction: invalidTransaction as any,
87
+ signature: mockSignature,
88
+ }),
89
+ ).rejects.toThrow();
90
+ });
91
+ });
@@ -1,15 +1,18 @@
1
+ import * as ox__Hash from "ox/Hash";
2
+ import * as ox__Hex from "ox/Hex";
3
+ import * as ox__Signature from "ox/Signature";
4
+ import { recoverAddress } from "viem";
1
5
  import {
2
- type Signature,
3
- type TransactionSerializable,
4
- recoverAddress,
6
+ type SerializableTransaction,
5
7
  serializeTransaction,
6
- signatureToHex,
7
- } from "viem";
8
- import { keccak256 } from "../hashing/keccak256.js";
8
+ } from "../../transaction/serialize-transaction.js";
9
+ import type { Hex } from "../encoding/hex.js";
9
10
 
10
11
  type GetKeylessTransactionOptions = {
11
- transaction: TransactionSerializable;
12
- signature: Signature;
12
+ transaction: SerializableTransaction;
13
+ signature:
14
+ | ox__Signature.Signature<true, Hex>
15
+ | ox__Signature.Legacy<Hex, bigint>;
13
16
  };
14
17
 
15
18
  /**
@@ -23,20 +26,46 @@ export async function getKeylessTransaction(
23
26
  options: GetKeylessTransactionOptions,
24
27
  ) {
25
28
  // 1. Create serialized txn string
26
- const hash = keccak256(serializeTransaction(options.transaction));
29
+ const hash = ox__Hash.keccak256(
30
+ serializeTransaction({ transaction: options.transaction }),
31
+ );
32
+
33
+ const yParity = (() => {
34
+ if (
35
+ "yParity" in options.signature &&
36
+ typeof options.signature.yParity !== "undefined"
37
+ ) {
38
+ return options.signature.yParity;
39
+ }
40
+
41
+ if (
42
+ "v" in options.signature &&
43
+ typeof options.signature.v !== "undefined"
44
+ ) {
45
+ return ox__Signature.vToYParity(Number(options.signature.v));
46
+ }
47
+
48
+ throw new Error(
49
+ "Invalid recovered signature provided with transaction, missing v or yParity",
50
+ );
51
+ })();
27
52
 
28
53
  // 2. Determine signer address from custom signature + txn
29
54
  const address = await recoverAddress({
30
55
  hash,
31
- signature: signatureToHex(options.signature),
56
+ signature: ox__Signature.toHex({
57
+ r: ox__Hex.toBigInt(options.signature.r),
58
+ s: ox__Hex.toBigInt(options.signature.s),
59
+ yParity,
60
+ }),
32
61
  });
33
62
 
34
63
  // 3. Create the signed serialized txn string.
35
64
  // To be sent directly to the chain using a provider.
36
- const transaction = serializeTransaction(
37
- options.transaction,
38
- options.signature,
39
- );
65
+ const transaction = serializeTransaction({
66
+ transaction: options.transaction,
67
+ signature: options.signature,
68
+ });
40
69
 
41
70
  return {
42
71
  signerAddress: address,
@@ -1,13 +1,14 @@
1
- import { type ByteArray, type SignableMessage, concat } from "viem";
1
+ import { Bytes as ox__Bytes } from "ox";
2
2
  import type { Hex } from "../encoding/hex.js";
3
3
  import { stringToBytes, toBytes } from "../encoding/to-bytes.js";
4
+ import type { SignableMessage } from "../types.js";
4
5
  import { keccak256 } from "./keccak256.js";
5
6
 
6
7
  const presignMessagePrefix = "\x19Ethereum Signed Message:\n";
7
8
  type To = "hex" | "bytes";
8
9
 
9
10
  type HashMessage<TTo extends To> =
10
- | (TTo extends "bytes" ? ByteArray : never)
11
+ | (TTo extends "bytes" ? ox__Bytes.Bytes : never)
11
12
  | (TTo extends "hex" ? Hex : never);
12
13
 
13
14
  /**
@@ -38,5 +39,5 @@ export function hashMessage<TTo extends To = "hex">(
38
39
  const prefixBytes = stringToBytes(
39
40
  `${presignMessagePrefix}${messageBytes.length}`,
40
41
  );
41
- return keccak256(concat([prefixBytes, messageBytes]), to_);
42
+ return keccak256(ox__Bytes.concat(prefixBytes, messageBytes), to_);
42
43
  }
@@ -1,12 +1,6 @@
1
- import {
2
- type AbiParameter,
3
- type TypedData,
4
- type TypedDataDefinition,
5
- concat,
6
- getTypesForEIP712Domain,
7
- hashDomain,
8
- validateTypedData,
9
- } from "viem";
1
+ import type * as ox__AbiParameters from "ox/AbiParameters";
2
+ import * as ox__Bytes from "ox/Bytes";
3
+ import * as ox__TypedData from "ox/TypedData";
10
4
  import { encodeAbiParameters } from "../abi/encodeAbiParameters.js";
11
5
  import { type Hex, toHex } from "../encoding/hex.js";
12
6
  import { keccak256 } from "./keccak256.js";
@@ -17,15 +11,17 @@ type MessageTypeProperty = {
17
11
  };
18
12
 
19
13
  export type HashTypedDataParams<
20
- typedData extends TypedData | Record<string, unknown> = TypedData,
14
+ typedData extends
15
+ | ox__TypedData.TypedData
16
+ | Record<string, unknown> = ox__TypedData.TypedData,
21
17
  primaryType extends keyof typedData | "EIP712Domain" = keyof typedData,
22
- > = TypedDataDefinition<typedData, primaryType>;
18
+ > = ox__TypedData.Definition<typedData, primaryType>;
23
19
 
24
20
  /**
25
21
  * @internal
26
22
  */
27
23
  export function hashTypedData<
28
- const typedData extends TypedData | Record<string, unknown>,
24
+ const typedData extends ox__TypedData.TypedData | Record<string, unknown>,
29
25
  primaryType extends keyof typedData | "EIP712Domain",
30
26
  >(parameters: HashTypedDataParams<typedData, primaryType>): Hex {
31
27
  const {
@@ -34,13 +30,13 @@ export function hashTypedData<
34
30
  primaryType,
35
31
  } = parameters as HashTypedDataParams;
36
32
  const types = {
37
- EIP712Domain: getTypesForEIP712Domain({ domain }),
33
+ EIP712Domain: ox__TypedData.extractEip712DomainTypes(domain),
38
34
  ...parameters.types,
39
35
  };
40
36
 
41
37
  // Need to do a runtime validation check on addresses, byte ranges, integer ranges, etc
42
38
  // as we can't statically check this with TypeScript.
43
- validateTypedData({
39
+ ox__TypedData.validate({
44
40
  domain,
45
41
  message,
46
42
  primaryType,
@@ -50,7 +46,7 @@ export function hashTypedData<
50
46
  const parts: Hex[] = ["0x1901"];
51
47
  if (domain)
52
48
  parts.push(
53
- hashDomain({
49
+ ox__TypedData.hashDomain({
54
50
  domain,
55
51
  types: types as Record<string, MessageTypeProperty[]>,
56
52
  }),
@@ -69,7 +65,7 @@ export function hashTypedData<
69
65
  parts.push(hashedStruct);
70
66
  }
71
67
 
72
- return keccak256(concat(parts));
68
+ return keccak256(ox__Bytes.concat(...parts.map((p) => ox__Bytes.fromHex(p))));
73
69
  }
74
70
 
75
71
  function encodeData({
@@ -81,7 +77,7 @@ function encodeData({
81
77
  primaryType: string;
82
78
  types: Record<string, MessageTypeProperty[]>;
83
79
  }) {
84
- const encodedTypes: AbiParameter[] = [{ type: "bytes32" }];
80
+ const encodedTypes: ox__AbiParameters.Parameter[] = [{ type: "bytes32" }];
85
81
  const encodedValues: unknown[] = [hashType({ primaryType, types })];
86
82
 
87
83
  if (!types[primaryType]) throw new Error("Invalid types");
@@ -168,7 +164,7 @@ function encodeField({
168
164
  // biome-ignore lint/suspicious/noExplicitAny: Can't anticipate types of nested values
169
165
  value: any;
170
166
  // biome-ignore lint/suspicious/noExplicitAny: Can't anticipate types of nested values
171
- }): [type: AbiParameter, value: any] {
167
+ }): [type: ox__AbiParameters.Parameter, value: any] {
172
168
  if (types[type] !== undefined) {
173
169
  return [
174
170
  { type: "bytes32" },
@@ -186,15 +182,16 @@ function encodeField({
186
182
 
187
183
  if (type.lastIndexOf("]") === type.length - 1) {
188
184
  const parsedType = type.slice(0, type.lastIndexOf("["));
189
- // biome-ignore lint/suspicious/noExplicitAny: Can't anticipate types of nested values
190
- const typeValuePairs = (value as [AbiParameter, any][]).map((item) =>
191
- encodeField({
192
- name,
193
- type: parsedType,
194
- types,
195
- value: item,
196
- }),
197
- );
185
+ const typeValuePairs =
186
+ // biome-ignore lint/suspicious/noExplicitAny: Can't anticipate types of nested values
187
+ (value as [ox__AbiParameters.Parameter, any][]).map((item) =>
188
+ encodeField({
189
+ name,
190
+ type: parsedType,
191
+ types,
192
+ value: item,
193
+ }),
194
+ );
198
195
  return [
199
196
  { type: "bytes32" },
200
197
  keccak256(
@@ -0,0 +1,56 @@
1
+ import { describe, expect, test } from "vitest";
2
+ import { parseTypedData } from "./parse-typed-data.js";
3
+
4
+ describe("parseTypedData", () => {
5
+ test("parses typed data with hex chainId", () => {
6
+ const typedData = {
7
+ domain: {
8
+ chainId: "0x1" as unknown as number,
9
+ },
10
+ types: {},
11
+ primaryType: "EIP712Domain" as const,
12
+ };
13
+
14
+ const result = parseTypedData(typedData);
15
+ expect(result.domain.chainId).toBe(1);
16
+ });
17
+
18
+ test("returns typed data unchanged if chainId is not hex", () => {
19
+ const typedData = {
20
+ domain: {
21
+ chainId: 1,
22
+ },
23
+ types: {},
24
+ primaryType: "EIP712Domain" as const,
25
+ };
26
+
27
+ const result = parseTypedData(typedData);
28
+ expect(result.domain.chainId).toBe(1);
29
+ });
30
+
31
+ test("returns typed data unchanged if chainId is undefined", () => {
32
+ const typedData = {
33
+ domain: {},
34
+ types: {},
35
+ primaryType: "EIP712Domain" as const,
36
+ };
37
+
38
+ const result = parseTypedData(typedData);
39
+ expect(result.domain.chainId).toBeUndefined();
40
+ });
41
+
42
+ test("handles unknown domain properties", () => {
43
+ const typedData = {
44
+ domain: {
45
+ chainId: "0x1" as unknown as number,
46
+ name: "Test",
47
+ },
48
+ types: {},
49
+ primaryType: "EIP712Domain" as const,
50
+ };
51
+
52
+ const result = parseTypedData(typedData);
53
+ expect(result.domain.chainId).toBe(1);
54
+ expect(result.domain.name).toBe("Test");
55
+ });
56
+ });
@@ -0,0 +1,29 @@
1
+ import * as ox__Hex from "ox/Hex";
2
+ import type * as ox__TypedData from "ox/TypedData";
3
+ import type { Hex } from "../../encoding/hex.js";
4
+
5
+ type UnknownDomain = unknown & { chainId?: unknown };
6
+ type HexDomain = unknown & { chainId: Hex };
7
+
8
+ /**
9
+ * @internal
10
+ */
11
+ export function parseTypedData<
12
+ typedData extends
13
+ | ox__TypedData.TypedData
14
+ | Record<string, unknown> = ox__TypedData.TypedData,
15
+ primaryType extends keyof typedData | "EIP712Domain" = keyof typedData,
16
+ >(
17
+ typedData: ox__TypedData.Definition<typedData, primaryType>,
18
+ ): ox__TypedData.Definition<typedData, primaryType> {
19
+ const domain = typedData.domain as UnknownDomain;
20
+ if (domain?.chainId !== undefined && ox__Hex.validate(domain.chainId)) {
21
+ typedData.domain = {
22
+ ...(typedData.domain as HexDomain),
23
+ chainId: ox__Hex.toNumber(
24
+ (typedData.domain as unknown as HexDomain).chainId,
25
+ ),
26
+ } as unknown as ox__TypedData.Definition<typedData, primaryType>["domain"];
27
+ }
28
+ return typedData;
29
+ }
@@ -1,9 +1,10 @@
1
+ import * as ox__Hex from "ox/Hex";
2
+ import * as ox__PersonalMessage from "ox/PersonalMessage";
3
+ import * as ox__Secp256k1 from "ox/Secp256k1";
4
+ import * as ox__Signature from "ox/Signature";
1
5
  import type { Account } from "../../wallets/interfaces/wallet.js";
2
6
  import type { Hex } from "../encoding/hex.js";
3
- import { hashMessage } from "../hashing/hashMessage.js";
4
7
  import type { Prettify } from "../type-utils.js";
5
- import { sign } from "./sign.js";
6
- import { signatureToHex } from "./signature-to-hex.js";
7
8
 
8
9
  type Message = Prettify<
9
10
  | string
@@ -59,9 +60,17 @@ export function signMessage(
59
60
  options: SignMessageOptions | { message: Message; account: Account },
60
61
  ): Hex | Promise<Hex> {
61
62
  if ("privateKey" in options) {
62
- const { message, privateKey } = options;
63
- const signature = sign({ hash: hashMessage(message), privateKey });
64
- return signatureToHex(signature);
63
+ const payload = ox__PersonalMessage.getSignPayload(
64
+ typeof options.message === "object"
65
+ ? options.message.raw
66
+ : ox__Hex.fromString(options.message),
67
+ );
68
+
69
+ const signature = ox__Secp256k1.sign({
70
+ payload,
71
+ privateKey: options.privateKey,
72
+ });
73
+ return ox__Signature.toHex(signature);
65
74
  }
66
75
  if ("account" in options) {
67
76
  const { message, account } = options;
@@ -1,14 +1,15 @@
1
- import type { TypedData } from "abitype";
2
- import { type TypedDataDefinition, hashTypedData } from "viem";
1
+ import * as ox__Hex from "ox/Hex";
2
+ import * as ox__Secp256k1 from "ox/Secp256k1";
3
+ import * as ox__Signature from "ox/Signature";
4
+ import * as ox__TypedData from "ox/TypedData";
3
5
  import type { Hex } from "../encoding/hex.js";
4
- import { parseTypedData } from "./helpers/parseTypedData.js";
5
- import { sign } from "./sign.js";
6
- import { signatureToHex } from "./signature-to-hex.js";
7
6
 
8
7
  export type SignTypedDataOptions<
9
- typedData extends TypedData | Record<string, unknown> = TypedData,
8
+ typedData extends
9
+ | ox__TypedData.TypedData
10
+ | Record<string, unknown> = ox__TypedData.TypedData,
10
11
  primaryType extends keyof typedData | "EIP712Domain" = keyof typedData,
11
- > = TypedDataDefinition<typedData, primaryType> & {
12
+ > = ox__TypedData.Definition<typedData, primaryType> & {
12
13
  privateKey: Hex;
13
14
  };
14
15
 
@@ -28,17 +29,22 @@ export type SignTypedDataOptions<
28
29
  * @utils
29
30
  */
30
31
  export function signTypedData<
31
- const typedData extends TypedData | Record<string, unknown>,
32
+ const typedData extends ox__TypedData.TypedData | Record<string, unknown>,
32
33
  primaryType extends keyof typedData | "EIP712Domain",
33
34
  >(options: SignTypedDataOptions<typedData, primaryType>): Hex {
34
35
  const { privateKey, ...typedData } =
35
36
  options as unknown as SignTypedDataOptions;
36
37
 
37
- const parsedTypeData = parseTypedData(typedData);
38
+ if (typeof typedData.domain?.chainId === "string") {
39
+ typedData.domain.chainId = ox__Hex.toNumber(typedData.domain.chainId);
40
+ }
38
41
 
39
- const signature = sign({
40
- hash: hashTypedData(parsedTypeData), // TODO: Implement native hashTypedData
42
+ const payload = ox__TypedData.getSignPayload(typedData);
43
+
44
+ const signature = ox__Secp256k1.sign({
45
+ payload,
41
46
  privateKey,
42
47
  });
43
- return signatureToHex(signature);
48
+
49
+ return ox__Signature.toHex(signature);
44
50
  }
@@ -1,5 +1,4 @@
1
- import { secp256k1 } from "@noble/curves/secp256k1";
2
- import type { Signature } from "viem";
1
+ import * as ox__Secp256k1 from "ox/Secp256k1";
3
2
 
4
3
  import { type Hex, toHex } from "../encoding/hex.js";
5
4
 
@@ -28,12 +27,12 @@ export type SignOptions = {
28
27
  * ```
29
28
  * @utils
30
29
  */
31
- export function sign({ hash, privateKey }: SignOptions): Signature {
32
- const { r, s, recovery } = secp256k1.sign(hash.slice(2), privateKey.slice(2));
30
+ export function sign({ hash, privateKey }: SignOptions) {
31
+ const { r, s, yParity } = ox__Secp256k1.sign({ payload: hash, privateKey });
33
32
  return {
34
33
  r: toHex(r, { size: 32 }),
35
34
  s: toHex(s, { size: 32 }),
36
- v: recovery ? 28n : 27n,
37
- yParity: recovery,
35
+ v: yParity === 1 ? 28n : 27n,
36
+ yParity,
38
37
  };
39
38
  }