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