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
@@ -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
  }