@web3auth/no-modal 10.16.0 → 11.0.0-beta.1

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 (356) hide show
  1. package/dist/lib.cjs/account-linking/index.js +8 -0
  2. package/dist/lib.cjs/account-linking/react.js +95 -0
  3. package/dist/lib.cjs/account-linking/rest.js +54 -0
  4. package/dist/lib.cjs/account-linking/vue.js +98 -0
  5. package/dist/lib.cjs/base/analytics.js +13 -1
  6. package/dist/lib.cjs/base/connector/baseConnector.js +104 -2
  7. package/dist/lib.cjs/base/connector/connectorStatus.js +2 -0
  8. package/dist/lib.cjs/base/connector/constants.js +6 -2
  9. package/dist/lib.cjs/base/connector/utils.js +0 -21
  10. package/dist/lib.cjs/base/constants.js +4 -0
  11. package/dist/lib.cjs/base/cookie.js +6 -20
  12. package/dist/lib.cjs/base/errors/index.js +84 -12
  13. package/dist/lib.cjs/base/utils.js +22 -11
  14. package/dist/lib.cjs/base/wallet/index.js +7 -0
  15. package/dist/lib.cjs/base/wallet/solana.js +83 -0
  16. package/dist/lib.cjs/connectors/auth-connector/authConnector.js +566 -93
  17. package/dist/lib.cjs/connectors/auth-connector/authSolanaWallet.js +187 -0
  18. package/dist/lib.cjs/connectors/base-evm-connector/baseEvmConnector.js +55 -58
  19. package/dist/lib.cjs/connectors/base-solana-connector/baseSolanaConnector.js +57 -66
  20. package/dist/lib.cjs/connectors/coinbase-connector/coinbaseConnector.js +19 -14
  21. package/dist/lib.cjs/connectors/injected-evm-connector/injectedEvmConnector.js +18 -13
  22. package/dist/lib.cjs/connectors/injected-solana-connector/walletStandardConnector.js +24 -36
  23. package/dist/lib.cjs/connectors/metamask-connector/metamaskConnector.js +350 -131
  24. package/dist/lib.cjs/connectors/utils.js +8 -2
  25. package/dist/lib.cjs/connectors/wallet-connect-v2-connector/WalletConnectV2Provider.js +12 -38
  26. package/dist/lib.cjs/connectors/wallet-connect-v2-connector/config.js +4 -3
  27. package/dist/lib.cjs/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +111 -73
  28. package/dist/lib.cjs/connectors/wallet-connect-v2-connector/walletConnectV2Utils.js +24 -51
  29. package/dist/lib.cjs/connectors/wallet-connect-v2-connector/wcSolanaWallet.js +144 -0
  30. package/dist/lib.cjs/index.js +55 -83
  31. package/dist/lib.cjs/noModal.js +957 -169
  32. package/dist/lib.cjs/plugins/wallet-services-plugin/plugin.js +23 -39
  33. package/dist/lib.cjs/providers/account-abstraction-provider/providers/AccountAbstractionProvider.js +12 -10
  34. package/dist/lib.cjs/providers/account-abstraction-provider/providers/utils.js +8 -6
  35. package/dist/lib.cjs/providers/account-abstraction-provider/rpc/ethRpcMiddlewares.js +47 -44
  36. package/dist/lib.cjs/providers/base-provider/CommonJRPCProvider.js +1 -3
  37. package/dist/lib.cjs/providers/base-provider/baseProvider.js +69 -35
  38. package/dist/lib.cjs/providers/base-provider/commonPrivateKeyProvider.js +8 -11
  39. package/dist/lib.cjs/providers/base-provider/index.js +0 -1
  40. package/dist/lib.cjs/providers/base-provider/jrpcClient.js +18 -19
  41. package/dist/lib.cjs/providers/base-provider/utils.js +0 -3
  42. package/dist/lib.cjs/providers/ethereum-provider/rpc/ethRpcMiddlewares.js +22 -43
  43. package/dist/lib.cjs/providers/ethereum-provider/rpc/jrpcClient.js +18 -19
  44. package/dist/lib.cjs/providers/ethereum-provider/rpc/walletMiddleware.js +200 -0
  45. package/dist/lib.cjs/providers/xrpl-provider/providers/privateKeyProviders/xrplPrivateKeyProvider.js +9 -18
  46. package/dist/lib.cjs/providers/xrpl-provider/providers/privateKeyProviders/xrplWalletUtils.js +2 -1
  47. package/dist/lib.cjs/providers/xrpl-provider/rpc/JrpcClient.js +19 -26
  48. package/dist/lib.cjs/providers/xrpl-provider/rpc/xrplRpcMiddlewares.js +46 -37
  49. package/dist/lib.cjs/react/context/WalletServicesInnerContext.js +2 -69
  50. package/dist/lib.cjs/react/context/Web3AuthInnerContext.js +6 -161
  51. package/dist/lib.cjs/react/context/useWalletServicesContextValue.js +76 -0
  52. package/dist/lib.cjs/react/context/useWeb3AuthInnerContextValue.js +216 -0
  53. package/dist/lib.cjs/react/hooks/{useIdentityToken.js → useAuthTokenInfo.js} +6 -7
  54. package/dist/lib.cjs/react/hooks/useCheckout.js +4 -2
  55. package/dist/lib.cjs/react/hooks/useFunding.js +4 -2
  56. package/dist/lib.cjs/react/hooks/useReceive.js +4 -2
  57. package/dist/lib.cjs/react/hooks/useSwap.js +4 -2
  58. package/dist/lib.cjs/react/hooks/useWalletConnectScanner.js +4 -2
  59. package/dist/lib.cjs/react/hooks/useWalletServicesPlugin.js +3 -10
  60. package/dist/lib.cjs/react/hooks/useWalletUI.js +4 -2
  61. package/dist/lib.cjs/react/hooks/useWallets.js +51 -0
  62. package/dist/lib.cjs/react/hooks/useWeb3Auth.js +1 -22
  63. package/dist/lib.cjs/react/hooks/useWeb3AuthConnect.js +2 -2
  64. package/dist/lib.cjs/react/hooks/useWeb3AuthInner.js +4 -2
  65. package/dist/lib.cjs/react/index.js +12 -2
  66. package/dist/lib.cjs/react/solana/hooks/useSignAndSendTransaction.js +22 -4
  67. package/dist/lib.cjs/react/solana/hooks/useSignMessage.js +20 -2
  68. package/dist/lib.cjs/react/solana/hooks/useSignTransaction.js +22 -3
  69. package/dist/lib.cjs/react/solana/hooks/useSolanaWallet.js +34 -51
  70. package/dist/lib.cjs/react/solana/index.js +2 -0
  71. package/dist/lib.cjs/react/solana/provider.js +169 -0
  72. package/dist/lib.cjs/react/wagmi/provider.js +10 -8
  73. package/dist/lib.cjs/types/account-linking/index.d.ts +2 -0
  74. package/dist/lib.cjs/types/account-linking/interfaces.d.ts +90 -0
  75. package/dist/lib.cjs/types/account-linking/react.d.ts +19 -0
  76. package/dist/lib.cjs/types/account-linking/rest.d.ts +9 -0
  77. package/dist/lib.cjs/types/account-linking/vue.d.ts +20 -0
  78. package/dist/lib.cjs/types/base/analytics.d.ts +9 -0
  79. package/dist/lib.cjs/types/base/connector/baseConnector.d.ts +26 -5
  80. package/dist/lib.cjs/types/base/connector/connectorStatus.d.ts +1 -0
  81. package/dist/lib.cjs/types/base/connector/constants.d.ts +5 -0
  82. package/dist/lib.cjs/types/base/connector/interfaces.d.ts +72 -16
  83. package/dist/lib.cjs/types/base/connector/utils.d.ts +0 -3
  84. package/dist/lib.cjs/types/base/constants.d.ts +1 -0
  85. package/dist/lib.cjs/types/base/cookie.d.ts +0 -7
  86. package/dist/lib.cjs/types/base/core/IWeb3Auth.d.ts +57 -13
  87. package/dist/lib.cjs/types/base/errors/index.d.ts +15 -3
  88. package/dist/lib.cjs/types/base/hooks/index.d.ts +2 -2
  89. package/dist/lib.cjs/types/base/interfaces.d.ts +8 -2
  90. package/dist/lib.cjs/types/base/utils.d.ts +9 -2
  91. package/dist/lib.cjs/types/base/wallet/index.d.ts +3 -0
  92. package/dist/lib.cjs/types/base/wallet/solana.d.ts +19 -0
  93. package/dist/lib.cjs/types/connectors/auth-connector/authConnector.d.ts +37 -8
  94. package/dist/lib.cjs/types/connectors/auth-connector/authSolanaWallet.d.ts +35 -0
  95. package/dist/lib.cjs/types/connectors/auth-connector/interface.d.ts +77 -2
  96. package/dist/lib.cjs/types/connectors/base-evm-connector/baseEvmConnector.d.ts +8 -2
  97. package/dist/lib.cjs/types/connectors/base-solana-connector/baseSolanaConnector.d.ts +8 -2
  98. package/dist/lib.cjs/types/connectors/injected-evm-connector/injectedEvmConnector.d.ts +2 -2
  99. package/dist/lib.cjs/types/connectors/injected-solana-connector/walletStandardConnector.d.ts +10 -7
  100. package/dist/lib.cjs/types/connectors/metamask-connector/metamaskConnector.d.ts +35 -3
  101. package/dist/lib.cjs/types/connectors/utils.d.ts +2 -0
  102. package/dist/lib.cjs/types/connectors/wallet-connect-v2-connector/WalletConnectV2Provider.d.ts +0 -1
  103. package/dist/lib.cjs/types/connectors/wallet-connect-v2-connector/walletConnectV2Utils.d.ts +1 -5
  104. package/dist/lib.cjs/types/connectors/wallet-connect-v2-connector/wcSolanaWallet.d.ts +26 -0
  105. package/dist/lib.cjs/types/index.d.ts +1 -0
  106. package/dist/lib.cjs/types/noModal.d.ts +113 -10
  107. package/dist/lib.cjs/types/plugins/wallet-services-plugin/plugin.d.ts +1 -4
  108. package/dist/lib.cjs/types/providers/account-abstraction-provider/rpc/ethRpcMiddlewares.d.ts +4 -4
  109. package/dist/lib.cjs/types/providers/base-provider/baseProvider.d.ts +7 -0
  110. package/dist/lib.cjs/types/providers/base-provider/jrpcClient.d.ts +2 -5
  111. package/dist/lib.cjs/types/providers/base-provider/utils.d.ts +0 -1
  112. package/dist/lib.cjs/types/providers/ethereum-provider/index.d.ts +0 -1
  113. package/dist/lib.cjs/types/providers/ethereum-provider/rpc/ethRpcMiddlewares.d.ts +4 -4
  114. package/dist/lib.cjs/types/providers/ethereum-provider/rpc/index.d.ts +1 -1
  115. package/dist/lib.cjs/types/providers/ethereum-provider/rpc/jrpcClient.d.ts +2 -5
  116. package/dist/lib.cjs/types/providers/ethereum-provider/rpc/walletMiddleware.d.ts +3 -0
  117. package/dist/lib.cjs/types/providers/index.d.ts +0 -1
  118. package/dist/lib.cjs/types/providers/xrpl-provider/providers/privateKeyProviders/xrplPrivateKeyProvider.d.ts +0 -1
  119. package/dist/lib.cjs/types/providers/xrpl-provider/rpc/JrpcClient.d.ts +3 -7
  120. package/dist/lib.cjs/types/providers/xrpl-provider/rpc/xrplRpcMiddlewares.d.ts +5 -12
  121. package/dist/lib.cjs/types/react/context/index.d.ts +4 -0
  122. package/dist/lib.cjs/types/react/context/useWalletServicesContextValue.d.ts +12 -0
  123. package/dist/lib.cjs/types/react/context/useWeb3AuthInnerContextValue.d.ts +26 -0
  124. package/dist/lib.cjs/types/react/hooks/index.d.ts +2 -1
  125. package/dist/lib.cjs/types/react/hooks/{useIdentityToken.d.ts → useAuthTokenInfo.d.ts} +4 -4
  126. package/dist/lib.cjs/types/react/hooks/useWallets.d.ts +8 -0
  127. package/dist/lib.cjs/types/react/hooks/useWeb3Auth.d.ts +1 -2
  128. package/dist/lib.cjs/types/react/hooks/useWeb3AuthConnect.d.ts +2 -2
  129. package/dist/lib.cjs/types/react/index.d.ts +1 -0
  130. package/dist/lib.cjs/types/react/solana/hooks/useSignAndSendTransaction.d.ts +7 -2
  131. package/dist/lib.cjs/types/react/solana/hooks/useSignTransaction.d.ts +8 -3
  132. package/dist/lib.cjs/types/react/solana/hooks/useSolanaWallet.d.ts +17 -4
  133. package/dist/lib.cjs/types/react/solana/index.d.ts +1 -0
  134. package/dist/lib.cjs/types/react/solana/provider.d.ts +26 -0
  135. package/dist/lib.cjs/types/vue/composables/index.d.ts +3 -1
  136. package/dist/lib.cjs/types/vue/composables/{useIdentityToken.d.ts → useAuthTokenInfo.d.ts} +3 -3
  137. package/dist/lib.cjs/types/vue/composables/useInjectedWeb3AuthInnerContext.d.ts +1 -0
  138. package/dist/lib.cjs/types/vue/composables/useWallets.d.ts +9 -0
  139. package/dist/lib.cjs/types/vue/composables/useWeb3Auth.d.ts +1 -2
  140. package/dist/lib.cjs/types/vue/composables/useWeb3AuthConnect.d.ts +2 -2
  141. package/dist/lib.cjs/types/vue/index.d.ts +2 -0
  142. package/dist/lib.cjs/types/vue/interfaces.d.ts +2 -2
  143. package/dist/lib.cjs/types/vue/solana/composables/index.d.ts +1 -0
  144. package/dist/lib.cjs/types/vue/solana/composables/useSignAndSendTransaction.d.ts +7 -2
  145. package/dist/lib.cjs/types/vue/solana/composables/useSignTransaction.d.ts +8 -3
  146. package/dist/lib.cjs/types/vue/solana/composables/useSolanaClient.d.ts +7 -0
  147. package/dist/lib.cjs/types/vue/solana/composables/useSolanaWallet.d.ts +17 -4
  148. package/dist/lib.cjs/types/vue/solana/constants.d.ts +3 -0
  149. package/dist/lib.cjs/types/vue/solana/index.d.ts +2 -0
  150. package/dist/lib.cjs/types/vue/solana/provider.d.ts +8 -0
  151. package/dist/lib.cjs/types/vue/useWalletServicesInnerContextValue.d.ts +13 -0
  152. package/dist/lib.cjs/types/vue/useWeb3AuthInnerContextValue.d.ts +26 -0
  153. package/dist/lib.cjs/types/x402/index.d.ts +43 -0
  154. package/dist/lib.cjs/types/x402/interfaces.d.ts +11 -0
  155. package/dist/lib.cjs/types/x402/react.d.ts +17 -0
  156. package/dist/lib.cjs/types/x402/vue.d.ts +18 -0
  157. package/dist/lib.cjs/vue/WalletServicesInnerProvider.js +9 -54
  158. package/dist/lib.cjs/vue/Web3AuthProvider.js +16 -177
  159. package/dist/lib.cjs/vue/composables/{useIdentityToken.js → useAuthTokenInfo.js} +10 -8
  160. package/dist/lib.cjs/vue/composables/useCheckout.js +4 -2
  161. package/dist/lib.cjs/vue/composables/useEnableMFA.js +4 -2
  162. package/dist/lib.cjs/vue/composables/useFunding.js +4 -2
  163. package/dist/lib.cjs/vue/composables/useInjectedWeb3AuthInnerContext.js +29 -0
  164. package/dist/lib.cjs/vue/composables/useManageMFA.js +4 -2
  165. package/dist/lib.cjs/vue/composables/useReceive.js +4 -2
  166. package/dist/lib.cjs/vue/composables/useSwap.js +4 -2
  167. package/dist/lib.cjs/vue/composables/useSwitchChain.js +4 -2
  168. package/dist/lib.cjs/vue/composables/useWalletConnectScanner.js +4 -2
  169. package/dist/lib.cjs/vue/composables/useWalletUI.js +4 -2
  170. package/dist/lib.cjs/vue/composables/useWallets.js +52 -0
  171. package/dist/lib.cjs/vue/composables/useWeb3Auth.js +1 -26
  172. package/dist/lib.cjs/vue/composables/useWeb3AuthConnect.js +6 -4
  173. package/dist/lib.cjs/vue/composables/useWeb3AuthDisconnect.js +4 -2
  174. package/dist/lib.cjs/vue/composables/useWeb3AuthInner.js +2 -20
  175. package/dist/lib.cjs/vue/composables/useWeb3AuthUser.js +4 -2
  176. package/dist/lib.cjs/vue/index.js +10 -2
  177. package/dist/lib.cjs/vue/solana/composables/useSignAndSendTransaction.js +6 -3
  178. package/dist/lib.cjs/vue/solana/composables/useSignMessage.js +6 -3
  179. package/dist/lib.cjs/vue/solana/composables/useSignTransaction.js +6 -3
  180. package/dist/lib.cjs/vue/solana/composables/useSolanaClient.js +14 -0
  181. package/dist/lib.cjs/vue/solana/composables/useSolanaWallet.js +60 -41
  182. package/dist/lib.cjs/vue/solana/constants.js +5 -0
  183. package/dist/lib.cjs/vue/solana/index.js +6 -0
  184. package/dist/lib.cjs/vue/solana/provider.js +110 -0
  185. package/dist/lib.cjs/vue/useWalletServicesInnerContextValue.js +75 -0
  186. package/dist/lib.cjs/vue/useWeb3AuthInnerContextValue.js +226 -0
  187. package/dist/lib.cjs/vue/wagmi/provider.js +28 -12
  188. package/dist/lib.cjs/x402/index.js +175 -0
  189. package/dist/lib.cjs/x402/interfaces.js +5 -0
  190. package/dist/lib.cjs/x402/react.js +64 -0
  191. package/dist/lib.cjs/x402/vue.js +58 -0
  192. package/dist/lib.esm/account-linking/index.js +1 -0
  193. package/dist/lib.esm/account-linking/react.js +74 -0
  194. package/dist/lib.esm/account-linking/rest.js +51 -0
  195. package/dist/lib.esm/account-linking/vue.js +78 -0
  196. package/dist/lib.esm/base/analytics.js +13 -1
  197. package/dist/lib.esm/base/connector/baseConnector.js +104 -2
  198. package/dist/lib.esm/base/connector/connectorStatus.js +2 -1
  199. package/dist/lib.esm/base/connector/constants.js +6 -2
  200. package/dist/lib.esm/base/connector/utils.js +1 -19
  201. package/dist/lib.esm/base/constants.js +4 -1
  202. package/dist/lib.esm/base/cookie.js +7 -20
  203. package/dist/lib.esm/base/errors/index.js +84 -13
  204. package/dist/lib.esm/base/utils.js +22 -7
  205. package/dist/lib.esm/base/wallet/index.js +2 -1
  206. package/dist/lib.esm/base/wallet/solana.js +81 -0
  207. package/dist/lib.esm/connectors/auth-connector/authConnector.js +527 -57
  208. package/dist/lib.esm/connectors/auth-connector/authSolanaWallet.js +175 -0
  209. package/dist/lib.esm/connectors/base-evm-connector/baseEvmConnector.js +55 -58
  210. package/dist/lib.esm/connectors/base-solana-connector/baseSolanaConnector.js +57 -66
  211. package/dist/lib.esm/connectors/coinbase-connector/coinbaseConnector.js +16 -13
  212. package/dist/lib.esm/connectors/injected-evm-connector/injectedEvmConnector.js +16 -13
  213. package/dist/lib.esm/connectors/injected-solana-connector/walletStandardConnector.js +22 -34
  214. package/dist/lib.esm/connectors/metamask-connector/metamaskConnector.js +366 -132
  215. package/dist/lib.esm/connectors/utils.js +9 -4
  216. package/dist/lib.esm/connectors/wallet-connect-v2-connector/WalletConnectV2Provider.js +12 -31
  217. package/dist/lib.esm/connectors/wallet-connect-v2-connector/config.js +1 -1
  218. package/dist/lib.esm/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +110 -73
  219. package/dist/lib.esm/connectors/wallet-connect-v2-connector/walletConnectV2Utils.js +21 -49
  220. package/dist/lib.esm/connectors/wallet-connect-v2-connector/wcSolanaWallet.js +130 -0
  221. package/dist/lib.esm/index.js +12 -19
  222. package/dist/lib.esm/noModal.js +975 -177
  223. package/dist/lib.esm/plugins/wallet-services-plugin/plugin.js +20 -39
  224. package/dist/lib.esm/providers/account-abstraction-provider/providers/AccountAbstractionProvider.js +9 -9
  225. package/dist/lib.esm/providers/account-abstraction-provider/providers/utils.js +3 -3
  226. package/dist/lib.esm/providers/account-abstraction-provider/rpc/ethRpcMiddlewares.js +48 -45
  227. package/dist/lib.esm/providers/base-provider/CommonJRPCProvider.js +2 -4
  228. package/dist/lib.esm/providers/base-provider/baseProvider.js +68 -38
  229. package/dist/lib.esm/providers/base-provider/commonPrivateKeyProvider.js +9 -12
  230. package/dist/lib.esm/providers/base-provider/index.js +1 -1
  231. package/dist/lib.esm/providers/base-provider/jrpcClient.js +20 -19
  232. package/dist/lib.esm/providers/base-provider/utils.js +1 -3
  233. package/dist/lib.esm/providers/ethereum-provider/rpc/ethRpcMiddlewares.js +23 -44
  234. package/dist/lib.esm/providers/ethereum-provider/rpc/jrpcClient.js +20 -19
  235. package/dist/lib.esm/providers/ethereum-provider/rpc/walletMiddleware.js +201 -0
  236. package/dist/lib.esm/providers/xrpl-provider/providers/privateKeyProviders/xrplPrivateKeyProvider.js +6 -17
  237. package/dist/lib.esm/providers/xrpl-provider/providers/privateKeyProviders/xrplWalletUtils.js +2 -1
  238. package/dist/lib.esm/providers/xrpl-provider/rpc/JrpcClient.js +21 -25
  239. package/dist/lib.esm/providers/xrpl-provider/rpc/xrplRpcMiddlewares.js +48 -38
  240. package/dist/lib.esm/react/context/WalletServicesInnerContext.js +3 -57
  241. package/dist/lib.esm/react/context/Web3AuthInnerContext.js +7 -152
  242. package/dist/lib.esm/react/context/useWalletServicesContextValue.js +59 -0
  243. package/dist/lib.esm/react/context/useWeb3AuthInnerContextValue.js +203 -0
  244. package/dist/lib.esm/react/hooks/{useIdentityToken.js → useAuthTokenInfo.js} +6 -7
  245. package/dist/lib.esm/react/hooks/useWalletServicesPlugin.js +3 -10
  246. package/dist/lib.esm/react/hooks/useWallets.js +33 -0
  247. package/dist/lib.esm/react/hooks/useWeb3Auth.js +1 -22
  248. package/dist/lib.esm/react/hooks/useWeb3AuthConnect.js +2 -2
  249. package/dist/lib.esm/react/index.js +6 -1
  250. package/dist/lib.esm/react/solana/hooks/useSignAndSendTransaction.js +6 -4
  251. package/dist/lib.esm/react/solana/hooks/useSignMessage.js +4 -2
  252. package/dist/lib.esm/react/solana/hooks/useSignTransaction.js +6 -3
  253. package/dist/lib.esm/react/solana/hooks/useSolanaWallet.js +33 -28
  254. package/dist/lib.esm/react/solana/index.js +1 -0
  255. package/dist/lib.esm/react/solana/provider.js +153 -0
  256. package/dist/lib.esm/react/wagmi/provider.js +8 -8
  257. package/dist/lib.esm/vue/WalletServicesInnerProvider.js +4 -54
  258. package/dist/lib.esm/vue/Web3AuthProvider.js +7 -179
  259. package/dist/lib.esm/vue/composables/{useIdentityToken.js → useAuthTokenInfo.js} +6 -6
  260. package/dist/lib.esm/vue/composables/useCheckout.js +1 -1
  261. package/dist/lib.esm/vue/composables/useFunding.js +1 -1
  262. package/dist/lib.esm/vue/composables/useInjectedWeb3AuthInnerContext.js +11 -0
  263. package/dist/lib.esm/vue/composables/useReceive.js +1 -1
  264. package/dist/lib.esm/vue/composables/useSwap.js +1 -1
  265. package/dist/lib.esm/vue/composables/useWalletConnectScanner.js +1 -1
  266. package/dist/lib.esm/vue/composables/useWalletUI.js +1 -1
  267. package/dist/lib.esm/vue/composables/useWallets.js +35 -0
  268. package/dist/lib.esm/vue/composables/useWeb3Auth.js +1 -26
  269. package/dist/lib.esm/vue/composables/useWeb3AuthConnect.js +2 -2
  270. package/dist/lib.esm/vue/composables/useWeb3AuthInner.js +2 -6
  271. package/dist/lib.esm/vue/index.js +5 -1
  272. package/dist/lib.esm/vue/solana/composables/useSignAndSendTransaction.js +2 -1
  273. package/dist/lib.esm/vue/solana/composables/useSignMessage.js +2 -1
  274. package/dist/lib.esm/vue/solana/composables/useSignTransaction.js +3 -2
  275. package/dist/lib.esm/vue/solana/composables/useSolanaClient.js +12 -0
  276. package/dist/lib.esm/vue/solana/composables/useSolanaWallet.js +53 -35
  277. package/dist/lib.esm/vue/solana/constants.js +3 -0
  278. package/dist/lib.esm/vue/solana/index.js +3 -0
  279. package/dist/lib.esm/vue/solana/provider.js +99 -0
  280. package/dist/lib.esm/vue/useWalletServicesInnerContextValue.js +58 -0
  281. package/dist/lib.esm/vue/useWeb3AuthInnerContextValue.js +213 -0
  282. package/dist/lib.esm/vue/wagmi/provider.js +26 -12
  283. package/dist/lib.esm/x402/index.js +170 -0
  284. package/dist/lib.esm/x402/interfaces.js +3 -0
  285. package/dist/lib.esm/x402/react.js +59 -0
  286. package/dist/lib.esm/x402/vue.js +54 -0
  287. package/package.json +102 -53
  288. package/dist/lib.cjs/providers/ethereum-mpc-provider/index.js +0 -7
  289. package/dist/lib.cjs/providers/ethereum-mpc-provider/providers/signingProviders/EthereumSigningProvider.js +0 -224
  290. package/dist/lib.cjs/providers/ethereum-mpc-provider/providers/signingProviders/signingUtils.js +0 -177
  291. package/dist/lib.cjs/providers/ethereum-mpc-provider/rpc/ethRpcMiddlewares.js +0 -21
  292. package/dist/lib.cjs/providers/ethereum-provider/providers/converter.js +0 -88
  293. package/dist/lib.cjs/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/constants.js +0 -27
  294. package/dist/lib.cjs/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/formatter.js +0 -383
  295. package/dist/lib.cjs/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/interfaces.js +0 -8
  296. package/dist/lib.cjs/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/utils.js +0 -93
  297. package/dist/lib.cjs/providers/ethereum-provider/providers/utils.js +0 -29
  298. package/dist/lib.cjs/providers/ethereum-provider/rpc/walletMidddleware.js +0 -251
  299. package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/base/baseInjectedProvider.js +0 -65
  300. package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/base/providerHandlers.js +0 -45
  301. package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/utils.js +0 -16
  302. package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/walletStandardProvider.js +0 -103
  303. package/dist/lib.cjs/providers/solana-provider/rpc/JrpcClient.js +0 -47
  304. package/dist/lib.cjs/providers/solana-provider/rpc/solanaRpcMiddlewares.js +0 -97
  305. package/dist/lib.cjs/providers/solana-provider/solanaWallet.js +0 -91
  306. package/dist/lib.cjs/types/connectors/injected-solana-connector/utils.d.ts +0 -3
  307. package/dist/lib.cjs/types/providers/ethereum-mpc-provider/index.d.ts +0 -1
  308. package/dist/lib.cjs/types/providers/ethereum-mpc-provider/providers/index.d.ts +0 -1
  309. package/dist/lib.cjs/types/providers/ethereum-mpc-provider/providers/signingProviders/EthereumSigningProvider.d.ts +0 -74
  310. package/dist/lib.cjs/types/providers/ethereum-mpc-provider/providers/signingProviders/index.d.ts +0 -1
  311. package/dist/lib.cjs/types/providers/ethereum-mpc-provider/providers/signingProviders/signingUtils.d.ts +0 -12
  312. package/dist/lib.cjs/types/providers/ethereum-mpc-provider/rpc/ethRpcMiddlewares.d.ts +0 -3
  313. package/dist/lib.cjs/types/providers/ethereum-mpc-provider/rpc/interfaces.d.ts +0 -15
  314. package/dist/lib.cjs/types/providers/ethereum-provider/providers/converter.d.ts +0 -14
  315. package/dist/lib.cjs/types/providers/ethereum-provider/providers/index.d.ts +0 -1
  316. package/dist/lib.cjs/types/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/constants.d.ts +0 -16
  317. package/dist/lib.cjs/types/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/formatter.d.ts +0 -28
  318. package/dist/lib.cjs/types/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/index.d.ts +0 -4
  319. package/dist/lib.cjs/types/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/interfaces.d.ts +0 -46
  320. package/dist/lib.cjs/types/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/utils.d.ts +0 -11
  321. package/dist/lib.cjs/types/providers/ethereum-provider/providers/privateKeyProviders/index.d.ts +0 -1
  322. package/dist/lib.cjs/types/providers/ethereum-provider/providers/utils.d.ts +0 -5
  323. package/dist/lib.cjs/types/providers/ethereum-provider/rpc/walletMidddleware.d.ts +0 -3
  324. package/dist/lib.cjs/types/providers/solana-provider/index.d.ts +0 -4
  325. package/dist/lib.cjs/types/providers/solana-provider/interface.d.ts +0 -22
  326. package/dist/lib.cjs/types/providers/solana-provider/providers/index.d.ts +0 -1
  327. package/dist/lib.cjs/types/providers/solana-provider/providers/injectedProviders/base/baseInjectedProvider.d.ts +0 -16
  328. package/dist/lib.cjs/types/providers/solana-provider/providers/injectedProviders/base/providerHandlers.d.ts +0 -3
  329. package/dist/lib.cjs/types/providers/solana-provider/providers/injectedProviders/index.d.ts +0 -2
  330. package/dist/lib.cjs/types/providers/solana-provider/providers/injectedProviders/utils.d.ts +0 -3
  331. package/dist/lib.cjs/types/providers/solana-provider/providers/injectedProviders/walletStandardProvider.d.ts +0 -9
  332. package/dist/lib.cjs/types/providers/solana-provider/rpc/JrpcClient.d.ts +0 -9
  333. package/dist/lib.cjs/types/providers/solana-provider/rpc/index.d.ts +0 -3
  334. package/dist/lib.cjs/types/providers/solana-provider/rpc/interfaces.d.ts +0 -27
  335. package/dist/lib.cjs/types/providers/solana-provider/rpc/solanaRpcMiddlewares.d.ts +0 -20
  336. package/dist/lib.cjs/types/providers/solana-provider/solanaWallet.d.ts +0 -29
  337. package/dist/lib.esm/providers/ethereum-mpc-provider/index.js +0 -1
  338. package/dist/lib.esm/providers/ethereum-mpc-provider/providers/signingProviders/EthereumSigningProvider.js +0 -206
  339. package/dist/lib.esm/providers/ethereum-mpc-provider/providers/signingProviders/signingUtils.js +0 -163
  340. package/dist/lib.esm/providers/ethereum-mpc-provider/rpc/ethRpcMiddlewares.js +0 -20
  341. package/dist/lib.esm/providers/ethereum-provider/providers/converter.js +0 -85
  342. package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/constants.js +0 -21
  343. package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/formatter.js +0 -378
  344. package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/interfaces.js +0 -8
  345. package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/utils.js +0 -88
  346. package/dist/lib.esm/providers/ethereum-provider/providers/utils.js +0 -24
  347. package/dist/lib.esm/providers/ethereum-provider/rpc/walletMidddleware.js +0 -258
  348. package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/base/baseInjectedProvider.js +0 -47
  349. package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/base/providerHandlers.js +0 -43
  350. package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/utils.js +0 -14
  351. package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/walletStandardProvider.js +0 -91
  352. package/dist/lib.esm/providers/solana-provider/rpc/JrpcClient.js +0 -42
  353. package/dist/lib.esm/providers/solana-provider/rpc/solanaRpcMiddlewares.js +0 -89
  354. package/dist/lib.esm/providers/solana-provider/solanaWallet.js +0 -92
  355. package/dist/noModal.umd.min.js +0 -2
  356. package/dist/noModal.umd.min.js.LICENSE.txt +0 -46
@@ -1,103 +1,223 @@
1
1
  import _objectSpread from '@babel/runtime/helpers/objectSpread2';
2
2
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
3
- import { MetaMaskSDK } from '@metamask/sdk';
4
- import { CHAIN_NAMESPACES, getErrorAnalyticsProperties } from '@toruslabs/base-controllers';
5
- import deepmerge from 'deepmerge';
6
- import { getSiteIcon, getSiteName } from '../utils.js';
7
- import { getCaipChainId } from '../../base/utils.js';
8
- import { ANALYTICS_EVENTS } from '../../base/analytics.js';
9
- import { BaseEvmConnector } from '../base-evm-connector/baseEvmConnector.js';
3
+ import { createEVMClient } from '@metamask/connect-evm';
4
+ import { createMultichainClient, hasExtension } from '@metamask/connect-multichain';
5
+ import { createSolanaClient } from '@metamask/connect-solana';
6
+ import { CHAIN_NAMESPACES, getErrorAnalyticsProperties, signChallenge } from '@toruslabs/base-controllers';
7
+ import { bytesToHexPrefixedString, utf8ToBytes } from '@toruslabs/metadata-helpers';
8
+ import { StandardConnect } from '@wallet-standard/features';
9
+ import { EVM_METHOD_TYPES } from '@web3auth/ws-embed';
10
+ import { generateSiweNonce } from 'viem/siwe';
11
+ import { getSiteName } from '../utils.js';
10
12
  import { CONNECTOR_NAMESPACES } from '../../base/chain/IChainInterface.js';
11
- import { CONNECTOR_CATEGORY, CONNECTOR_STATUS, CONNECTOR_EVENTS } from '../../base/connector/constants.js';
12
13
  import { WALLET_CONNECTORS } from '../../base/wallet/index.js';
14
+ import { getCaipChainId, citadelServerUrl } from '../../base/utils.js';
13
15
  import { WalletLoginError, Web3AuthError } from '../../base/errors/index.js';
16
+ import { ANALYTICS_EVENTS } from '../../base/analytics.js';
17
+ import { BaseConnector } from '../../base/connector/baseConnector.js';
18
+ import { CONNECTOR_CATEGORY, CONNECTOR_STATUS, CONNECTOR_EVENTS } from '../../base/connector/constants.js';
19
+ import { getSolanaChainByChainConfig, walletSignMessage } from '../../base/wallet/solana.js';
20
+
21
+ /**
22
+ * Configuration options for the MetaMask connector using \@metamask/connect-evm
23
+ */
14
24
 
15
- class MetaMaskConnector extends BaseEvmConnector {
25
+ class MetaMaskConnector extends BaseConnector {
16
26
  constructor(connectorOptions) {
17
27
  super(connectorOptions);
18
- _defineProperty(this, "connectorNamespace", CONNECTOR_NAMESPACES.EIP155);
19
- _defineProperty(this, "currentChainNamespace", CHAIN_NAMESPACES.EIP155);
28
+ _defineProperty(this, "connectorNamespace", CONNECTOR_NAMESPACES.MULTICHAIN);
29
+ _defineProperty(this, "currentChainNamespace", CHAIN_NAMESPACES.OTHER);
20
30
  _defineProperty(this, "type", CONNECTOR_CATEGORY.EXTERNAL);
21
31
  _defineProperty(this, "name", WALLET_CONNECTORS.METAMASK);
22
32
  _defineProperty(this, "status", CONNECTOR_STATUS.NOT_READY);
23
- _defineProperty(this, "metamaskProvider", null);
24
- _defineProperty(this, "metamaskSDK", null);
25
- _defineProperty(this, "metamaskOptions", void 0);
33
+ _defineProperty(this, "evmClient", null);
34
+ _defineProperty(this, "evmProvider", null);
35
+ _defineProperty(this, "solanaClient", null);
36
+ _defineProperty(this, "solanaProvider", null);
37
+ _defineProperty(this, "initializationPromise", null);
38
+ _defineProperty(this, "multichainClient", null);
39
+ _defineProperty(this, "connectorSettings", void 0);
26
40
  _defineProperty(this, "analytics", void 0);
27
- this.metamaskOptions = connectorOptions.connectorSettings;
41
+ this.connectorSettings = connectorOptions.connectorSettings;
28
42
  this.analytics = connectorOptions.analytics;
29
43
  }
30
44
  get provider() {
31
- if (this.status !== CONNECTOR_STATUS.NOT_READY && this.metamaskProvider) {
32
- return this.metamaskProvider;
45
+ if (this.status !== CONNECTOR_STATUS.NOT_READY && this.evmProvider) {
46
+ return this.evmProvider;
33
47
  }
34
48
  return null;
35
49
  }
36
- set provider(_) {
37
- throw new Error("Not implemented");
50
+ get solanaWallet() {
51
+ return this.solanaProvider;
38
52
  }
39
53
  async init(options) {
40
- await super.init(options);
54
+ var _this$connectorSettin, _this$connectorSettin2, _this$connectorSettin3, _this$connectorSettin4, _this$connectorSettin5, _this$connectorSettin6, _this$connectorSettin7, _this$connectorSettin8, _this$connectorSettin9;
41
55
  const chainConfig = this.coreOptions.chains.find(x => x.chainId === options.chainId);
42
56
  super.checkInitializationRequirements({
43
57
  chainConfig
44
58
  });
45
59
 
60
+ // Build supported networks in CAIP-2 format for multichain client
61
+ const caipSupportedNetworks = {};
62
+ for (const chain of this.coreOptions.chains) {
63
+ caipSupportedNetworks[getCaipChainId(chain)] = chain.rpcTarget;
64
+ }
65
+
66
+ // Build supported networks in hex format for EVM client
67
+ const hexSupportedNetworks = {};
68
+ for (const chain of this.coreOptions.chains) {
69
+ if (chain.chainNamespace === CHAIN_NAMESPACES.EIP155) {
70
+ hexSupportedNetworks[chain.chainId] = chain.rpcTarget;
71
+ }
72
+ }
73
+
74
+ // Build supported networks for Solana client (MetaMask expects mainnet | testnet | devnet keys)
75
+ const solanaSupportedNetworks = {};
76
+ for (const chain of this.coreOptions.chains) {
77
+ if (chain.chainNamespace !== CHAIN_NAMESPACES.SOLANA) continue;
78
+ const solanaChainId = getSolanaChainByChainConfig(chain);
79
+ if (!solanaChainId) continue;
80
+ const networkName = solanaChainId.split(":")[1];
81
+ if (networkName) solanaSupportedNetworks[networkName] = chain.rpcTarget;
82
+ }
83
+
46
84
  // Detect app metadata
47
- const iconUrl = await getSiteIcon(window);
48
- // TODO: handle ssr
49
- const appMetadata = {
50
- name: getSiteName(window) || "web3auth",
51
- url: window.location.origin || "https://web3auth.io",
52
- iconUrl: iconUrl !== null && iconUrl !== void 0 ? iconUrl : undefined
85
+ const appName = getSiteName(window) || ((_this$connectorSettin = this.connectorSettings) === null || _this$connectorSettin === void 0 || (_this$connectorSettin = _this$connectorSettin.dapp) === null || _this$connectorSettin === void 0 ? void 0 : _this$connectorSettin.name) || "web3auth";
86
+ const appUrl = ((_this$connectorSettin2 = this.connectorSettings) === null || _this$connectorSettin2 === void 0 || (_this$connectorSettin2 = _this$connectorSettin2.dapp) === null || _this$connectorSettin2 === void 0 ? void 0 : _this$connectorSettin2.url) || window.location.origin || "https://web3auth.io";
87
+ const appIconUrl = (_this$connectorSettin3 = this.connectorSettings) === null || _this$connectorSettin3 === void 0 || (_this$connectorSettin3 = _this$connectorSettin3.dapp) === null || _this$connectorSettin3 === void 0 ? void 0 : _this$connectorSettin3.iconUrl;
88
+ const dapp = _objectSpread({
89
+ name: appName,
90
+ url: appUrl
91
+ }, appIconUrl && {
92
+ iconUrl: appIconUrl
93
+ });
94
+ const ui = {
95
+ preferExtension: (_this$connectorSettin4 = (_this$connectorSettin5 = this.connectorSettings) === null || _this$connectorSettin5 === void 0 || (_this$connectorSettin5 = _this$connectorSettin5.ui) === null || _this$connectorSettin5 === void 0 ? void 0 : _this$connectorSettin5.preferExtension) !== null && _this$connectorSettin4 !== void 0 ? _this$connectorSettin4 : true,
96
+ showInstallModal: (_this$connectorSettin6 = (_this$connectorSettin7 = this.connectorSettings) === null || _this$connectorSettin7 === void 0 || (_this$connectorSettin7 = _this$connectorSettin7.ui) === null || _this$connectorSettin7 === void 0 ? void 0 : _this$connectorSettin7.showInstallModal) !== null && _this$connectorSettin6 !== void 0 ? _this$connectorSettin6 : false,
97
+ headless: (_this$connectorSettin8 = (_this$connectorSettin9 = this.connectorSettings) === null || _this$connectorSettin9 === void 0 || (_this$connectorSettin9 = _this$connectorSettin9.ui) === null || _this$connectorSettin9 === void 0 ? void 0 : _this$connectorSettin9.headless) !== null && _this$connectorSettin8 !== void 0 ? _this$connectorSettin8 : true
53
98
  };
54
-
55
- // initialize the MetaMask SDK
56
- const metamaskOptions = deepmerge(this.metamaskOptions || {}, {
57
- dappMetadata: appMetadata
99
+ let initResolve;
100
+ let initReject;
101
+ this.initializationPromise = new Promise((resolve, reject) => {
102
+ initResolve = resolve;
103
+ initReject = reject;
58
104
  });
59
- this.metamaskSDK = new MetaMaskSDK(_objectSpread(_objectSpread({}, metamaskOptions), {}, {
60
- _source: "web3auth",
61
- preferDesktop: true
62
- }));
63
- // Work around: in case there is an existing SDK instance in memory (window.mmsdk exists), it won't initialize the new SDK instance again
64
- // and return the existing instance instead of undefined (this is an assumption, not sure if it's a bug or feature of the MetaMask SDK)
65
- const initResult = await this.metamaskSDK.init();
66
- if (initResult) {
67
- this.metamaskSDK = initResult;
68
- }
69
- this.isInjected = this.metamaskSDK.isExtensionActive();
70
- this.status = CONNECTOR_STATUS.READY;
71
- this.emit(CONNECTOR_EVENTS.READY, WALLET_CONNECTORS.METAMASK);
105
+ const hasEvmChains = Object.keys(hexSupportedNetworks).length > 0;
106
+ const hasSolanaChains = Object.keys(solanaSupportedNetworks).length > 0;
72
107
  try {
108
+ var _this$connectorSettin0;
109
+ // Initialize the multichain client (singleton) first
110
+ this.multichainClient = await createMultichainClient({
111
+ dapp,
112
+ api: {
113
+ supportedNetworks: caipSupportedNetworks
114
+ },
115
+ ui,
116
+ debug: (_this$connectorSettin0 = this.connectorSettings) === null || _this$connectorSettin0 === void 0 ? void 0 : _this$connectorSettin0.debug
117
+ });
118
+
119
+ // Listen for QR code URI from the multichain client (for mobile wallet connection)
120
+ this.multichainClient.on("display_uri", uri => {
121
+ if (uri) {
122
+ this.updateConnectorData({
123
+ uri
124
+ });
125
+ }
126
+ });
127
+
128
+ // Create the EVM client only when EVM chains are configured
129
+ // (createEVMClient requires at least one entry in supportedNetworks)
130
+ if (hasEvmChains) {
131
+ var _this$connectorSettin1;
132
+ this.evmClient = await createEVMClient({
133
+ dapp,
134
+ eventHandlers: {
135
+ accountsChanged: _accounts => {
136
+ if (_accounts.length === 0) {
137
+ this.disconnect();
138
+ }
139
+ },
140
+ chainChanged: _chainId => {},
141
+ connect: _result => {},
142
+ disconnect: () => this.disconnect()
143
+ },
144
+ api: {
145
+ supportedNetworks: hexSupportedNetworks
146
+ },
147
+ ui,
148
+ debug: (_this$connectorSettin1 = this.connectorSettings) === null || _this$connectorSettin1 === void 0 ? void 0 : _this$connectorSettin1.debug
149
+ });
150
+ this.evmProvider = this.evmClient.getProvider();
151
+ }
152
+
153
+ // Create the Solana client only when Solana chains are configured
154
+ if (hasSolanaChains) {
155
+ this.solanaClient = await createSolanaClient({
156
+ dapp,
157
+ api: {
158
+ supportedNetworks: solanaSupportedNetworks
159
+ },
160
+ skipAutoRegister: true
161
+ });
162
+ this.solanaProvider = this.solanaClient.getWallet();
163
+ }
164
+ this.isInjected = await hasExtension();
165
+ initResolve();
166
+ } catch (error) {
167
+ initReject(WalletLoginError.connectionError("Failed to initialize MetaMask Connect SDK", error));
168
+ }
169
+ if (!this.multichainClient) {
170
+ this.status = CONNECTOR_STATUS.ERRORED;
171
+ this.emit(CONNECTOR_EVENTS.ERRORED, new Error("Failed to initialize MetaMask Connect."));
172
+ return;
173
+ }
174
+ const coreStatus = this.multichainClient.status;
175
+ if (coreStatus === "connected") {
176
+ this.status = CONNECTOR_STATUS.CONNECTED;
177
+ this.rehydrated = true;
73
178
  if (options.autoConnect) {
74
- this.rehydrated = true;
75
- const provider = await this.connect({
76
- chainId: options.chainId,
77
- getIdentityToken: options.getIdentityToken
179
+ this.emit(CONNECTOR_EVENTS.CONNECTED, {
180
+ connectorName: WALLET_CONNECTORS.METAMASK,
181
+ reconnected: this.rehydrated,
182
+ ethereumProvider: this.evmProvider,
183
+ solanaWallet: this.solanaProvider
78
184
  });
79
- if (!provider) {
80
- this.rehydrated = false;
81
- throw WalletLoginError.connectionError("Failed to rehydrate.");
185
+ if (options.getAuthTokenInfo) {
186
+ await this.getAuthTokenInfo();
82
187
  }
83
188
  }
84
- } catch (error) {
85
- this.emit(CONNECTOR_EVENTS.REHYDRATION_ERROR, error);
189
+ } else if (coreStatus === "loaded" || coreStatus === "disconnected") {
190
+ this.status = CONNECTOR_STATUS.READY;
191
+ this.emit(CONNECTOR_EVENTS.READY, WALLET_CONNECTORS.METAMASK);
192
+ } else if (coreStatus === "pending") {
193
+ // 'pending' implies that a transport failed to resume the connection
194
+ // if (options.autoConnect) {
195
+ // this.rehydrated = false;
196
+ // this.emit(CONNECTOR_EVENTS.REHYDRATION_ERROR, new Error("Failed to resume existing MetaMask Connect session.") as Web3AuthError);
197
+ // } else {
198
+ this.status = CONNECTOR_STATUS.READY;
199
+ this.emit(CONNECTOR_EVENTS.READY, WALLET_CONNECTORS.METAMASK);
200
+ // }
201
+ } else {
202
+ // Something unexpected happened
203
+ this.status = CONNECTOR_STATUS.ERRORED;
204
+ this.emit(CONNECTOR_EVENTS.ERRORED, new Error("Failed to initialize MetaMask Connect."));
86
205
  }
87
206
  }
88
207
  async connect({
89
208
  chainId,
90
- getIdentityToken
209
+ getAuthTokenInfo,
210
+ caipAccountIds: caipAccountIdsFromParams
91
211
  }) {
92
212
  super.checkConnectionRequirements();
93
- if (!this.metamaskSDK) throw WalletLoginError.notConnectedError("Connector is not initialized");
213
+ await this.ensureInitialized();
94
214
  const chainConfig = this.coreOptions.chains.find(x => x.chainId === chainId);
95
215
  if (!chainConfig) throw WalletLoginError.connectionError("Chain config is not available");
216
+ const scopes = this.coreOptions.chains.map(c => getCaipChainId(c));
217
+ const caipAccountIds = caipAccountIdsFromParams || [];
96
218
 
97
- // Skip tracking for injected MetaMask since it's handled in connectTo
98
219
  // Skip tracking for rehydration since only new connections are tracked
99
- // Only track non-injected MetaMask when connection completes since it auto-initializes to generate QR code
100
- const shouldTrack = !this.isInjected && !this.rehydrated;
220
+ const shouldTrack = !this.rehydrated;
101
221
  const startTime = Date.now();
102
222
  const eventData = {
103
223
  connector: this.name,
@@ -109,43 +229,50 @@ class MetaMaskConnector extends BaseEvmConnector {
109
229
  };
110
230
  try {
111
231
  if (this.status !== CONNECTOR_STATUS.CONNECTING) {
112
- var _this$metamaskOptions;
113
232
  this.status = CONNECTOR_STATUS.CONNECTING;
114
233
  this.emit(CONNECTOR_EVENTS.CONNECTING, {
115
234
  connector: WALLET_CONNECTORS.METAMASK
116
235
  });
117
- if (!this.metamaskSDK.isExtensionActive() && (_this$metamaskOptions = this.metamaskOptions) !== null && _this$metamaskOptions !== void 0 && _this$metamaskOptions.headless) {
118
- // when metamask is not injected and headless is true, broadcast the uri to the login modal
119
- this.metamaskSDK.getProvider().on("display_uri", uri => {
120
- this.updateConnectorData({
121
- uri
122
- });
236
+ const evmConnectedPromise = new Promise(resolve => {
237
+ var _this$evmProvider;
238
+ // Wait for EVM provider to be ready
239
+ (_this$evmProvider = this.evmProvider) === null || _this$evmProvider === void 0 || _this$evmProvider.once("connect", () => {
240
+ resolve();
123
241
  });
242
+ });
243
+
244
+ // Connect using the multichain client
245
+ await this.multichainClient.connect(scopes, caipAccountIds, {
246
+ solana_accountChanged_notifications: true
247
+ });
248
+
249
+ // Solana wallet-standard: `standard:events` change is not emitted from multichain
250
+ // connect alone — MetamaskWallet syncs accounts via `standard:connect` → updateSession.
251
+ if (this.solanaProvider) {
252
+ await this.solanaProvider.features[StandardConnect].connect();
124
253
  }
125
- await this.metamaskSDK.connect();
126
- }
127
- this.metamaskProvider = this.metamaskSDK.getProvider();
128
- if (!this.metamaskProvider) throw WalletLoginError.notConnectedError("Failed to connect with provider");
129
254
 
130
- // switch chain if not connected to the right chain
131
- const currentChainId = await this.metamaskProvider.request({
132
- method: "eth_chainId"
133
- });
134
- if (currentChainId !== chainConfig.chainId) {
135
- await this.switchChain(chainConfig, true);
255
+ // Wait for EVM provider to be ready
256
+ if (this.evmProvider) {
257
+ await evmConnectedPromise;
258
+ }
136
259
  }
137
260
 
138
- // handle disconnect event
139
- const accountDisconnectHandler = accounts => {
140
- if (accounts.length === 0) this.disconnect();
141
- };
142
- this.metamaskProvider.on("accountsChanged", accountDisconnectHandler);
143
- this.metamaskProvider.once("disconnect", () => {
144
- this.disconnect();
145
- });
261
+ // // Switch EVM chain if not connected to the right one (Solana chains are handled by the wallet-standard provider)
262
+ // if (chainConfig.chainNamespace === CHAIN_NAMESPACES.EIP155) {
263
+ // const currentChainId = this.evmClient!.getChainId();
264
+ // if (currentChainId !== chainId) {
265
+ // await this.switchChain(chainConfig, true);
266
+ // }
267
+ // }
268
+
269
+ // check if connected
270
+ if (this.multichainClient.status !== "connected") {
271
+ throw WalletLoginError.notConnectedError("Failed to connect with MetaMask wallet");
272
+ }
146
273
  this.status = CONNECTOR_STATUS.CONNECTED;
147
274
 
148
- // track connection events
275
+ // Track connection events
149
276
  if (shouldTrack) {
150
277
  var _this$analytics, _this$analytics2;
151
278
  (_this$analytics = this.analytics) === null || _this$analytics === void 0 || _this$analytics.track(ANALYTICS_EVENTS.CONNECTION_STARTED, eventData);
@@ -153,24 +280,27 @@ class MetaMaskConnector extends BaseEvmConnector {
153
280
  duration: Date.now() - startTime
154
281
  }));
155
282
  }
156
- let identityTokenInfo;
157
283
  this.emit(CONNECTOR_EVENTS.CONNECTED, {
158
- connector: WALLET_CONNECTORS.METAMASK,
284
+ connectorName: WALLET_CONNECTORS.METAMASK,
159
285
  reconnected: this.rehydrated,
160
- provider: this.metamaskProvider,
161
- identityTokenInfo
286
+ ethereumProvider: this.evmProvider,
287
+ solanaWallet: this.solanaProvider
162
288
  });
163
- if (getIdentityToken) {
164
- identityTokenInfo = await this.getIdentityToken();
289
+ if (getAuthTokenInfo) {
290
+ await this.getAuthTokenInfo();
165
291
  }
166
- return this.metamaskProvider;
292
+ return {
293
+ ethereumProvider: this.evmProvider,
294
+ solanaWallet: this.solanaProvider,
295
+ connectorName: this.name
296
+ };
167
297
  } catch (error) {
168
- // ready again to be connected
298
+ // Ready again to be connected
169
299
  this.status = CONNECTOR_STATUS.READY;
170
300
  if (!this.rehydrated) this.emit(CONNECTOR_EVENTS.ERRORED, error);
171
301
  this.rehydrated = false;
172
302
 
173
- // track connection events
303
+ // Track connection events
174
304
  if (shouldTrack) {
175
305
  var _this$analytics3, _this$analytics4;
176
306
  (_this$analytics3 = this.analytics) === null || _this$analytics3 === void 0 || _this$analytics3.track(ANALYTICS_EVENTS.CONNECTION_STARTED, eventData);
@@ -185,18 +315,63 @@ class MetaMaskConnector extends BaseEvmConnector {
185
315
  async disconnect(options = {
186
316
  cleanup: false
187
317
  }) {
188
- if (!this.metamaskProvider) throw WalletLoginError.connectionError("MetaMask provider is not available");
189
- await super.disconnectSession();
190
- if (typeof this.metamaskProvider.removeAllListeners !== "undefined") this.metamaskProvider.removeAllListeners();
191
- await this.metamaskSDK.terminate();
318
+ if (!this.multichainClient) throw WalletLoginError.connectionError("Multichain client is not available");
319
+ this.checkDisconnectionRequirements();
320
+ await this.clearWalletSession();
321
+
322
+ // Disconnect using the multichain client
323
+ await this.multichainClient.disconnect();
192
324
  if (options.cleanup) {
193
325
  this.status = CONNECTOR_STATUS.NOT_READY;
194
- this.metamaskProvider = null;
326
+ this.initializationPromise = null;
327
+ this.multichainClient = null;
328
+ this.evmClient = null;
329
+ this.evmProvider = null;
330
+ this.solanaClient = null;
331
+ this.solanaProvider = null;
195
332
  } else {
196
- // ready to be connected again
333
+ // Ready to be connected again
197
334
  this.status = CONNECTOR_STATUS.READY;
198
335
  }
199
- await super.disconnect();
336
+ this.rehydrated = false;
337
+ this.emit(CONNECTOR_EVENTS.DISCONNECTED, {
338
+ connector: WALLET_CONNECTORS.METAMASK
339
+ });
340
+ }
341
+ async getAuthTokenInfo() {
342
+ var _this$evmProvider2, _this$coreOptions$cha;
343
+ if (!this.canAuthorize) throw WalletLoginError.notConnectedError();
344
+
345
+ // Determine the active chain: prefer Solana if no EVM provider, otherwise use EVM provider's chain
346
+ const evmChainId = ((_this$evmProvider2 = this.evmProvider) === null || _this$evmProvider2 === void 0 ? void 0 : _this$evmProvider2.chainId) || ((_this$coreOptions$cha = this.coreOptions.chains.find(x => x.chainNamespace === CHAIN_NAMESPACES.EIP155)) === null || _this$coreOptions$cha === void 0 ? void 0 : _this$coreOptions$cha.chainId);
347
+ const isSolanaOnly = !this.evmProvider && !!this.solanaProvider;
348
+ const activeChainConfig = isSolanaOnly ? this.coreOptions.chains.find(x => x.chainNamespace === CHAIN_NAMESPACES.SOLANA) : this.evmProvider ? this.coreOptions.chains.find(x => x.chainId === evmChainId) : undefined;
349
+ if (!activeChainConfig) throw WalletLoginError.connectionError("Chain config is not available");
350
+ const {
351
+ chainNamespace
352
+ } = activeChainConfig;
353
+ const accounts = chainNamespace === CHAIN_NAMESPACES.SOLANA && this.solanaProvider ? this.solanaProvider.accounts.map(a => a.address) : this.evmProvider ? await this.evmProvider.request({
354
+ method: EVM_METHOD_TYPES.GET_ACCOUNTS
355
+ }) : [];
356
+ if (accounts && accounts.length > 0) {
357
+ const cached = await this.getCachedOrNullAuthTokenInfo(accounts[0]);
358
+ if (cached) return cached;
359
+ }
360
+ this.status = CONNECTOR_STATUS.AUTHORIZING;
361
+ this.emit(CONNECTOR_EVENTS.AUTHORIZING, {
362
+ connector: WALLET_CONNECTORS.METAMASK
363
+ });
364
+ const authServer = citadelServerUrl(this.coreOptions.authBuildEnv);
365
+ const {
366
+ challenge,
367
+ signature
368
+ } = await this.generateChallengeAndSign(authServer, accounts);
369
+ return this.verifyAndAuthorize({
370
+ chainNamespace,
371
+ signedMessage: signature,
372
+ challenge,
373
+ authServer
374
+ });
200
375
  }
201
376
  async getUserInfo() {
202
377
  if (!this.canAuthorize) throw WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
@@ -204,24 +379,76 @@ class MetaMaskConnector extends BaseEvmConnector {
204
379
  }
205
380
  async switchChain(params, init = false) {
206
381
  super.checkSwitchChainRequirements(params, init);
207
- const requestSwitchChain = () => this.metamaskProvider.request({
208
- method: "wallet_switchEthereumChain",
209
- params: [{
210
- chainId: params.chainId
211
- }]
382
+ const targetChainConfig = this.coreOptions.chains.find(c => c.chainId === params.chainId);
383
+ if ((targetChainConfig === null || targetChainConfig === void 0 ? void 0 : targetChainConfig.chainNamespace) === CHAIN_NAMESPACES.SOLANA) {
384
+ // no need to switch chain for Solana
385
+ return;
386
+ }
387
+ await this.ensureInitialized();
388
+ if (!this.evmClient) {
389
+ throw WalletLoginError.unsupportedOperation("switchChain requires an EVM client, but no EVM chains are configured.");
390
+ }
391
+ const chainConfig = this.coreOptions.chains.find(x => x.chainId === params.chainId && [CHAIN_NAMESPACES.EIP155].includes(x.chainNamespace));
392
+ const chainConfiguration = chainConfig ? {
393
+ chainId: params.chainId,
394
+ chainName: chainConfig.displayName,
395
+ rpcUrls: [chainConfig.rpcTarget],
396
+ blockExplorerUrls: chainConfig.blockExplorerUrl ? [chainConfig.blockExplorerUrl] : undefined,
397
+ nativeCurrency: {
398
+ name: chainConfig.tickerName,
399
+ symbol: chainConfig.ticker,
400
+ decimals: chainConfig.decimals || 18
401
+ },
402
+ iconUrls: chainConfig.logo ? [chainConfig.logo] : undefined
403
+ } : undefined;
404
+ await this.evmClient.switchChain({
405
+ chainId: params.chainId,
406
+ chainConfiguration
212
407
  });
213
- try {
214
- await requestSwitchChain();
215
- } catch (error) {
216
- // If the error code is 4902, the network needs to be added
217
- if ((error === null || error === void 0 ? void 0 : error.code) === 4902) {
218
- const chainConfig = this.coreOptions.chains.find(x => x.chainId === params.chainId && [CHAIN_NAMESPACES.EIP155].includes(x.chainNamespace));
219
- await this.addChain(chainConfig);
220
- await requestSwitchChain();
221
- } else {
222
- throw error;
223
- }
408
+ }
409
+ async generateChallengeAndSign(authServerUrl, accounts) {
410
+ var _this$evmProvider3, _this$coreOptions$cha2;
411
+ const evmChainId = ((_this$evmProvider3 = this.evmProvider) === null || _this$evmProvider3 === void 0 ? void 0 : _this$evmProvider3.chainId) || ((_this$coreOptions$cha2 = this.coreOptions.chains.find(x => x.chainNamespace === CHAIN_NAMESPACES.EIP155)) === null || _this$coreOptions$cha2 === void 0 ? void 0 : _this$coreOptions$cha2.chainId);
412
+ const isSolanaOnly = !this.evmProvider && !!this.solanaProvider;
413
+ const activeChainConfig = isSolanaOnly ? this.coreOptions.chains.find(x => x.chainNamespace === CHAIN_NAMESPACES.SOLANA) : this.evmProvider ? this.coreOptions.chains.find(x => x.chainId === evmChainId) : undefined;
414
+ if (!activeChainConfig) throw WalletLoginError.connectionError("Chain config is not available");
415
+ const {
416
+ chainNamespace
417
+ } = activeChainConfig;
418
+ const accountsToUse = accounts || (chainNamespace === CHAIN_NAMESPACES.SOLANA && this.solanaProvider ? this.solanaProvider.accounts.map(a => a.address) : this.evmProvider ? await this.evmProvider.request({
419
+ method: EVM_METHOD_TYPES.GET_ACCOUNTS
420
+ }) : []);
421
+ if (!accountsToUse || accountsToUse.length === 0) {
422
+ throw WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
224
423
  }
424
+ const authServer = authServerUrl || citadelServerUrl(this.coreOptions.authBuildEnv);
425
+ const payload = {
426
+ domain: window.location.origin,
427
+ uri: window.location.href,
428
+ address: accountsToUse[0],
429
+ chainId: parseInt(activeChainConfig.chainId, 16),
430
+ version: "1",
431
+ nonce: generateSiweNonce(),
432
+ issuedAt: new Date().toISOString()
433
+ };
434
+ const challenge = await signChallenge(payload, chainNamespace, authServer);
435
+ let signedMessage;
436
+ if (chainNamespace === CHAIN_NAMESPACES.SOLANA && this.solanaProvider) {
437
+ signedMessage = await walletSignMessage(this.solanaProvider, challenge, accountsToUse[0]);
438
+ } else if (this.evmProvider) {
439
+ const hexChallenge = bytesToHexPrefixedString(utf8ToBytes(challenge));
440
+ signedMessage = await this.evmProvider.request({
441
+ method: EVM_METHOD_TYPES.PERSONAL_SIGN,
442
+ params: [hexChallenge, accountsToUse[0]]
443
+ });
444
+ } else {
445
+ throw WalletLoginError.notConnectedError("No provider available for signing");
446
+ }
447
+ return {
448
+ challenge,
449
+ signature: signedMessage,
450
+ chainNamespace
451
+ };
225
452
  }
226
453
  async enableMFA() {
227
454
  throw new Error("Method Not implemented");
@@ -229,25 +456,32 @@ class MetaMaskConnector extends BaseEvmConnector {
229
456
  async manageMFA() {
230
457
  throw new Error("Method Not implemented");
231
458
  }
232
- async addChain(chainConfig) {
233
- if (!this.metamaskProvider) throw WalletLoginError.connectionError("Injected provider is not available");
234
- await this.metamaskProvider.request({
235
- method: "wallet_addEthereumChain",
236
- params: [{
237
- chainId: chainConfig.chainId,
238
- chainName: chainConfig.displayName,
239
- rpcUrls: [chainConfig.rpcTarget],
240
- blockExplorerUrls: [chainConfig.blockExplorerUrl],
241
- nativeCurrency: {
242
- name: chainConfig.tickerName,
243
- symbol: chainConfig.ticker,
244
- decimals: chainConfig.decimals || 18
245
- },
246
- iconUrls: [chainConfig.logo]
247
- }]
248
- });
459
+
460
+ /**
461
+ * Ensures the connector is initialized
462
+ */
463
+ async ensureInitialized() {
464
+ if (!this.initializationPromise) {
465
+ throw WalletLoginError.notConnectedError("Connector is not initialized. Call init() first.");
466
+ }
467
+ await this.initializationPromise;
249
468
  }
250
469
  }
470
+
471
+ /**
472
+ * Factory function to create a MetaMask connector
473
+ *
474
+ * @param params - Configuration options for the MetaMask SDK
475
+ * @returns A connector function that creates a MetaMaskConnector instance
476
+ *
477
+ * @example
478
+ * ```typescript
479
+ * const connector = metaMaskConnector({
480
+ * dapp: { name: 'My DApp', url: 'https://mydapp.com' },
481
+ * debug: true,
482
+ * });
483
+ * ```
484
+ */
251
485
  const metaMaskConnector = params => {
252
486
  return ({
253
487
  coreOptions,
@@ -1,4 +1,6 @@
1
- import { safeatob } from '@web3auth/auth';
1
+ import { generatePrivate } from '@toruslabs/eccrypto';
2
+ import { bytesToHexPrefixedString } from '@toruslabs/metadata-helpers';
3
+ import { base64toJSON } from '@web3auth/auth';
2
4
 
3
5
  /**
4
6
  * Extracts a name for the site from the DOM
@@ -63,9 +65,12 @@ async function getSiteIcon(window) {
63
65
  function parseToken(token) {
64
66
  const [header, payload] = token.split(".");
65
67
  return {
66
- header: JSON.parse(safeatob(header)),
67
- payload: JSON.parse(safeatob(payload))
68
+ header: base64toJSON(header),
69
+ payload: base64toJSON(payload)
68
70
  };
69
71
  }
72
+ const generateNonce = () => {
73
+ return bytesToHexPrefixedString(generatePrivate());
74
+ };
70
75
 
71
- export { getSiteIcon, getSiteName, parseToken };
76
+ export { generateNonce, getSiteIcon, getSiteName, parseToken };