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