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

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