@multiplatform.one/web3 7.23.2 → 7.24.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 (818) hide show
  1. package/README.md +150 -11
  2. package/dist/cjs/bridge/BridgeClient.native.js.map +1 -1
  3. package/dist/cjs/bridge/BridgeHost.native.js.map +1 -1
  4. package/dist/cjs/bridge/SolanaBridge.native.js.map +1 -1
  5. package/dist/cjs/bridge/base64.native.js.map +1 -1
  6. package/dist/cjs/bridge/bridgeConnector.native.js.map +1 -1
  7. package/dist/cjs/bridge/eip1193.native.js.map +1 -1
  8. package/dist/cjs/bridge/index.native.js.map +1 -1
  9. package/dist/cjs/bridge/postMessageTransport.native.js.map +1 -1
  10. package/dist/cjs/bridge/protocol.native.js.map +1 -1
  11. package/dist/cjs/bridge/transport.native.js.map +1 -1
  12. package/dist/cjs/bundler/metaMaskConnectTimeouts.native.js.map +1 -1
  13. package/dist/cjs/clients/adapter.native.js.map +1 -1
  14. package/dist/cjs/clients/bitcoin.native.js.map +1 -1
  15. package/dist/cjs/clients/connector.native.js.map +1 -1
  16. package/dist/cjs/clients/evm.cjs +299 -11
  17. package/dist/cjs/clients/evm.native.js +500 -12
  18. package/dist/cjs/clients/evm.native.js.map +1 -1
  19. package/dist/cjs/clients/gpg.native.js.map +1 -1
  20. package/dist/cjs/clients/hooks.native.js.map +1 -1
  21. package/dist/cjs/clients/index.cjs +5 -0
  22. package/dist/cjs/clients/index.native.js +5 -0
  23. package/dist/cjs/clients/index.native.js.map +1 -1
  24. package/dist/cjs/clients/solana.cjs +39 -21
  25. package/dist/cjs/clients/solana.native.js +48 -23
  26. package/dist/cjs/clients/solana.native.js.map +1 -1
  27. package/dist/cjs/clients/solanaMessage.native.js.map +1 -1
  28. package/dist/cjs/clients/sui.native.js.map +1 -1
  29. package/dist/cjs/clients/types.native.js.map +1 -1
  30. package/dist/cjs/clients/useSolanaClient.native.js.map +1 -1
  31. package/dist/cjs/clients/walletStandard.native.js.map +1 -1
  32. package/dist/cjs/components/NetworkSwitcher.native.js.map +1 -1
  33. package/dist/cjs/components/TransactionStatus.native.js.map +1 -1
  34. package/dist/cjs/components/index.native.js.map +1 -1
  35. package/dist/cjs/connectkit/GpgProvider.cjs +44 -0
  36. package/dist/cjs/connectkit/GpgProvider.native.js +51 -0
  37. package/dist/cjs/connectkit/GpgProvider.native.js.map +1 -0
  38. package/dist/cjs/connectkit/adapters/BitcoinAdapter.cjs +5 -14
  39. package/dist/cjs/connectkit/adapters/BitcoinAdapter.native.js +5 -15
  40. package/dist/cjs/connectkit/adapters/BitcoinAdapter.native.js.map +1 -1
  41. package/dist/cjs/connectkit/adapters/EthereumAdapter.cjs +6 -15
  42. package/dist/cjs/connectkit/adapters/EthereumAdapter.native.js +7 -16
  43. package/dist/cjs/connectkit/adapters/EthereumAdapter.native.js.map +1 -1
  44. package/dist/cjs/connectkit/adapters/SolanaAdapter.cjs +5 -14
  45. package/dist/cjs/connectkit/adapters/SolanaAdapter.native.js +5 -15
  46. package/dist/cjs/connectkit/adapters/SolanaAdapter.native.js.map +1 -1
  47. package/dist/cjs/connectkit/adapters/SuiAdapter.cjs +5 -14
  48. package/dist/cjs/connectkit/adapters/SuiAdapter.native.js +5 -15
  49. package/dist/cjs/connectkit/adapters/SuiAdapter.native.js.map +1 -1
  50. package/dist/cjs/connectkit/adapters/discover.native.js.map +1 -1
  51. package/dist/cjs/connectkit/adapters/index.native.js.map +1 -1
  52. package/dist/cjs/connectkit/adapters/types.native.js.map +1 -1
  53. package/dist/cjs/connectkit/assets/chains.native.js.map +1 -1
  54. package/dist/cjs/connectkit/components/BalanceButton/index.native.js +1 -1
  55. package/dist/cjs/connectkit/components/BalanceButton/index.native.js.map +1 -1
  56. package/dist/cjs/connectkit/components/Common/Avatar/index.native.js.map +1 -1
  57. package/dist/cjs/connectkit/components/Common/Avatar/styles.native.js.map +1 -1
  58. package/dist/cjs/connectkit/components/Common/Chain/index.native.js.map +1 -1
  59. package/dist/cjs/connectkit/components/Common/Chain/styles.native.js.map +1 -1
  60. package/dist/cjs/connectkit/components/Common/ChainSelect/index.native.js +2 -2
  61. package/dist/cjs/connectkit/components/Common/ChainSelect/index.native.js.map +1 -1
  62. package/dist/cjs/connectkit/components/Common/ChainSelectDropdown/index.native.js +1 -1
  63. package/dist/cjs/connectkit/components/Common/ChainSelectDropdown/index.native.js.map +1 -1
  64. package/dist/cjs/connectkit/components/Common/ChainSelectDropdown/styles.native.js.map +1 -1
  65. package/dist/cjs/connectkit/components/Common/ChainSelectList/index.native.js.map +1 -1
  66. package/dist/cjs/connectkit/components/Common/ChainSelectList/styles.native.js.map +1 -1
  67. package/dist/cjs/connectkit/components/Common/ConnectorList/index.native.js.map +1 -1
  68. package/dist/cjs/connectkit/components/Common/ConnectorList/styles.native.js.map +1 -1
  69. package/dist/cjs/connectkit/components/ConnectButton/index.native.js +4 -4
  70. package/dist/cjs/connectkit/components/ConnectButton/index.native.js.map +1 -1
  71. package/dist/cjs/connectkit/components/ConnectButton/styles.native.js.map +1 -1
  72. package/dist/cjs/connectkit/components/ConnectModal/ConnectUsing.native.js +1 -1
  73. package/dist/cjs/connectkit/components/ConnectModal/ConnectUsing.native.js.map +1 -1
  74. package/dist/cjs/connectkit/components/ConnectModal/ConnectWithInjector/CircleSpinner/index.native.js.map +1 -1
  75. package/dist/cjs/connectkit/components/ConnectModal/ConnectWithInjector/CircleSpinner/styles.native.js.map +1 -1
  76. package/dist/cjs/connectkit/components/ConnectModal/ConnectWithInjector/SquircleSpinner/index.native.js.map +1 -1
  77. package/dist/cjs/connectkit/components/ConnectModal/ConnectWithInjector/SquircleSpinner/styles.native.js.map +1 -1
  78. package/dist/cjs/connectkit/components/ConnectModal/ConnectWithInjector/index.native.js +3 -3
  79. package/dist/cjs/connectkit/components/ConnectModal/ConnectWithInjector/index.native.js.map +1 -1
  80. package/dist/cjs/connectkit/components/ConnectModal/ConnectWithInjector/styles.native.js.map +1 -1
  81. package/dist/cjs/connectkit/components/ConnectModal/demo.native.js +9 -9
  82. package/dist/cjs/connectkit/components/ConnectModal/demo.native.js.map +1 -1
  83. package/dist/cjs/connectkit/components/NetworkButton/index.native.js +2 -2
  84. package/dist/cjs/connectkit/components/NetworkButton/index.native.js.map +1 -1
  85. package/dist/cjs/connectkit/components/Pages/About/graphics.native.js.map +1 -1
  86. package/dist/cjs/connectkit/components/Pages/About/index.native.js.map +1 -1
  87. package/dist/cjs/connectkit/components/Pages/About/styles.native.js.map +1 -1
  88. package/dist/cjs/connectkit/components/Pages/Connectors/index.native.js +1 -1
  89. package/dist/cjs/connectkit/components/Pages/Connectors/index.native.js.map +1 -1
  90. package/dist/cjs/connectkit/components/Pages/Connectors/styles.native.js.map +1 -1
  91. package/dist/cjs/connectkit/components/Pages/DownloadApp/index.native.js.map +1 -1
  92. package/dist/cjs/connectkit/components/Pages/Onboarding/index.native.js.map +1 -1
  93. package/dist/cjs/connectkit/components/Pages/Onboarding/styles.native.js.map +1 -1
  94. package/dist/cjs/connectkit/components/Pages/Profile/index.native.js +2 -2
  95. package/dist/cjs/connectkit/components/Pages/Profile/index.native.js.map +1 -1
  96. package/dist/cjs/connectkit/components/Pages/Profile/styles.native.js.map +1 -1
  97. package/dist/cjs/connectkit/components/Pages/SignInWithEthereum/index.native.js +3 -3
  98. package/dist/cjs/connectkit/components/Pages/SignInWithEthereum/index.native.js.map +1 -1
  99. package/dist/cjs/connectkit/components/Pages/SignInWithEthereum/styles.native.js.map +1 -1
  100. package/dist/cjs/connectkit/components/Pages/SwitchNetworks/index.native.js +1 -1
  101. package/dist/cjs/connectkit/components/Pages/SwitchNetworks/index.native.js.map +1 -1
  102. package/dist/cjs/connectkit/components/Standard/SIWE/index.native.js +1 -1
  103. package/dist/cjs/connectkit/components/Standard/SIWE/index.native.js.map +1 -1
  104. package/dist/cjs/connectkit/components/Standard/SIWE/styles.native.js.map +1 -1
  105. package/dist/cjs/connectkit/components/contexts/web3/index.native.js.map +1 -1
  106. package/dist/cjs/connectkit/connectors/aaveAccountConnector.native.js.map +1 -1
  107. package/dist/cjs/connectkit/connectors/createWalletMessage.cjs +2 -2
  108. package/dist/cjs/connectkit/connectors/createWalletMessage.native.js +2 -2
  109. package/dist/cjs/connectkit/connectors/createWalletMessage.native.js.map +1 -1
  110. package/dist/cjs/connectkit/connectors/embeddedDesktop.native.js.map +1 -1
  111. package/dist/cjs/connectkit/connectors/ensureWalletConnectors.native.js.map +1 -1
  112. package/dist/cjs/connectkit/connectors/getWalletConnectors.native.js.map +1 -1
  113. package/dist/cjs/connectkit/connectors/metaMaskConnectConnector.native.js.map +1 -1
  114. package/dist/cjs/connectkit/connectors/syntheticChains.native.js.map +1 -1
  115. package/dist/cjs/connectkit/connectors/walletAdapterConnector.native.js.map +1 -1
  116. package/dist/cjs/connectkit/constants/chainConfigs.native.js.map +1 -1
  117. package/dist/cjs/connectkit/defaultConfig.native.js.map +1 -1
  118. package/dist/cjs/connectkit/defaultConnectors.native.js.map +1 -1
  119. package/dist/cjs/connectkit/defaultTransports.native.js.map +1 -1
  120. package/dist/cjs/connectkit/hooks/useChainIsSupported.native.js.map +1 -1
  121. package/dist/cjs/connectkit/hooks/useChains.native.js.map +1 -1
  122. package/dist/cjs/connectkit/hooks/useConnect.native.js.map +1 -1
  123. package/dist/cjs/connectkit/hooks/useConnectCallback.native.js.map +1 -1
  124. package/dist/cjs/connectkit/hooks/useConnectors.native.js.map +1 -1
  125. package/dist/cjs/connectkit/hooks/useEnsFallbackConfig.native.js.map +1 -1
  126. package/dist/cjs/connectkit/hooks/useLastConnector.native.js.map +1 -1
  127. package/dist/cjs/connectkit/index.cjs +4 -3
  128. package/dist/cjs/connectkit/index.native.js +12 -11
  129. package/dist/cjs/connectkit/index.native.js.map +1 -1
  130. package/dist/cjs/connectkit/openConnector/context.native.js.map +1 -1
  131. package/dist/cjs/connectkit/openConnector/device.native.js.map +1 -1
  132. package/dist/cjs/connectkit/openConnector/index.native.js.map +1 -1
  133. package/dist/cjs/connectkit/openConnector/launcher.native.js.map +1 -1
  134. package/dist/cjs/connectkit/profileHeaderAction.native.js +1 -1
  135. package/dist/cjs/connectkit/profileHeaderAction.native.js.map +1 -1
  136. package/dist/cjs/connectkit/screens.native.js +7 -7
  137. package/dist/cjs/connectkit/screens.native.js.map +1 -1
  138. package/dist/cjs/connectkit/siwe/SIWEContext.native.js.map +1 -1
  139. package/dist/cjs/connectkit/siwe/SIWEProvider.cjs +18 -3
  140. package/dist/cjs/connectkit/siwe/SIWEProvider.native.js +18 -3
  141. package/dist/cjs/connectkit/siwe/SIWEProvider.native.js.map +1 -1
  142. package/dist/cjs/connectkit/siwe/connectIntent.native.js.map +1 -1
  143. package/dist/cjs/connectkit/siwe/index.native.js.map +1 -1
  144. package/dist/cjs/connectkit/siwe/useSIWE.native.js.map +1 -1
  145. package/dist/cjs/connectkit/useWeb3Modal.native.js +2 -2
  146. package/dist/cjs/connectkit/useWeb3Modal.native.js.map +1 -1
  147. package/dist/cjs/connectkit/wallets/index.native.js.map +1 -1
  148. package/dist/cjs/connectkit/wallets/useWallets.native.js.map +1 -1
  149. package/dist/cjs/connectkit/wallets/walletConfigs.native.js.map +1 -1
  150. package/dist/cjs/connectkit/web3Bridge.native.js +2 -2
  151. package/dist/cjs/connectkit/web3Bridge.native.js.map +1 -1
  152. package/dist/cjs/connectkit/web3Provider.native.js.map +1 -1
  153. package/dist/cjs/esbuild.native.js.map +1 -1
  154. package/dist/cjs/examples/LockContract.native.js.map +1 -1
  155. package/dist/cjs/examples/index.native.js.map +1 -1
  156. package/dist/cjs/hooks/index.native.js.map +1 -1
  157. package/dist/cjs/hooks/useContractRead.native.js.map +1 -1
  158. package/dist/cjs/hooks/useContractWrite.native.js.map +1 -1
  159. package/dist/cjs/hooks/useWallet.native.js.map +1 -1
  160. package/dist/cjs/index.cjs +1 -0
  161. package/dist/cjs/index.native.js +7 -6
  162. package/dist/cjs/index.native.js.map +1 -1
  163. package/dist/cjs/keycloak/KeycloakWalletLogin.cjs +255 -0
  164. package/dist/cjs/keycloak/KeycloakWalletLogin.native.js +33 -0
  165. package/dist/cjs/keycloak/KeycloakWalletLogin.native.js.map +1 -0
  166. package/dist/cjs/keycloak/browserFlow.cjs +83 -0
  167. package/dist/cjs/keycloak/browserFlow.native.js +90 -0
  168. package/dist/cjs/keycloak/browserFlow.native.js.map +1 -0
  169. package/dist/cjs/keycloak/device.cjs +36 -0
  170. package/dist/cjs/keycloak/device.native.js +45 -0
  171. package/dist/cjs/keycloak/device.native.js.map +1 -0
  172. package/dist/cjs/keycloak/directGrant.cjs +189 -0
  173. package/dist/cjs/keycloak/directGrant.native.js +233 -0
  174. package/dist/cjs/keycloak/directGrant.native.js.map +1 -0
  175. package/dist/cjs/keycloak/iife.cjs +4 -0
  176. package/dist/cjs/keycloak/iife.native.js +7 -0
  177. package/dist/cjs/keycloak/iife.native.js.map +1 -0
  178. package/dist/cjs/keycloak/index.cjs +53 -0
  179. package/dist/cjs/keycloak/index.native.js +56 -0
  180. package/dist/cjs/keycloak/index.native.js.map +1 -0
  181. package/dist/cjs/keycloak/keycloakWallet.cjs +214 -0
  182. package/dist/cjs/keycloak/keycloakWallet.native.js +285 -0
  183. package/dist/cjs/keycloak/keycloakWallet.native.js.map +1 -0
  184. package/dist/cjs/keycloak/mount.cjs +53 -0
  185. package/dist/cjs/keycloak/mount.native.js +33 -0
  186. package/dist/cjs/keycloak/mount.native.js.map +1 -0
  187. package/dist/cjs/keycloak/registerWallet.cjs +74 -0
  188. package/dist/cjs/keycloak/registerWallet.native.js +81 -0
  189. package/dist/cjs/keycloak/registerWallet.native.js.map +1 -0
  190. package/dist/cjs/keycloak/types.cjs +46 -0
  191. package/dist/cjs/keycloak/types.native.js +179 -0
  192. package/dist/cjs/keycloak/types.native.js.map +1 -0
  193. package/dist/cjs/keycloak/useDirectLogin.cjs +57 -0
  194. package/dist/cjs/keycloak/useDirectLogin.native.js +77 -0
  195. package/dist/cjs/keycloak/useDirectLogin.native.js.map +1 -0
  196. package/dist/cjs/keycloak/useWalletLogin.cjs +97 -0
  197. package/dist/cjs/keycloak/useWalletLogin.native.js +33 -0
  198. package/dist/cjs/keycloak/useWalletLogin.native.js.map +1 -0
  199. package/dist/cjs/message/buildWalletMessage.cjs +113 -0
  200. package/dist/cjs/message/buildWalletMessage.native.js +121 -0
  201. package/dist/cjs/message/buildWalletMessage.native.js.map +1 -0
  202. package/dist/cjs/message/index.cjs +29 -0
  203. package/dist/cjs/message/index.native.js +32 -0
  204. package/dist/cjs/message/index.native.js.map +1 -0
  205. package/dist/cjs/providers/WalletProvider.cjs +8 -2
  206. package/dist/cjs/providers/index.native.js.map +1 -1
  207. package/dist/cjs/providers/mockConnector.native.js.map +1 -1
  208. package/dist/cjs/providers/native/deepLink.native.js.map +1 -1
  209. package/dist/cjs/providers/native/inject.native.js.map +1 -1
  210. package/dist/cjs/providers/native/visibility.native.js.map +1 -1
  211. package/dist/cjs/providers/walletConfig.native.js.map +1 -1
  212. package/dist/cjs/siws/index.native.js.map +1 -1
  213. package/dist/cjs/siws/message.cjs +5 -16
  214. package/dist/cjs/siws/message.native.js +6 -16
  215. package/dist/cjs/siws/message.native.js.map +1 -1
  216. package/dist/cjs/siws/signWithBridge.native.js.map +1 -1
  217. package/dist/cjs/siws/verify.native.js.map +1 -1
  218. package/dist/cjs/solana.native.js.map +1 -1
  219. package/dist/cjs/vite.native.js.map +1 -1
  220. package/dist/esm/bridge/BridgeClient.native.js.map +1 -1
  221. package/dist/esm/bridge/BridgeHost.native.js.map +1 -1
  222. package/dist/esm/bridge/SolanaBridge.native.js.map +1 -1
  223. package/dist/esm/bridge/base64.native.js.map +1 -1
  224. package/dist/esm/bridge/bridgeConnector.native.js.map +1 -1
  225. package/dist/esm/bridge/eip1193.native.js.map +1 -1
  226. package/dist/esm/bridge/index.native.js.map +1 -1
  227. package/dist/esm/bridge/postMessageTransport.native.js.map +1 -1
  228. package/dist/esm/bridge/protocol.native.js.map +1 -1
  229. package/dist/esm/bridge/transport.native.js.map +1 -1
  230. package/dist/esm/bundler/metaMaskConnectTimeouts.native.js.map +1 -1
  231. package/dist/esm/clients/adapter.native.js.map +1 -1
  232. package/dist/esm/clients/bitcoin.native.js.map +1 -1
  233. package/dist/esm/clients/connector.native.js.map +1 -1
  234. package/dist/esm/clients/evm.mjs +295 -12
  235. package/dist/esm/clients/evm.mjs.map +1 -1
  236. package/dist/esm/clients/evm.native.js +496 -13
  237. package/dist/esm/clients/evm.native.js.map +1 -1
  238. package/dist/esm/clients/gpg.native.js.map +1 -1
  239. package/dist/esm/clients/hooks.native.js.map +1 -1
  240. package/dist/esm/clients/index.mjs +2 -2
  241. package/dist/esm/clients/index.mjs.map +1 -1
  242. package/dist/esm/clients/index.native.js +2 -2
  243. package/dist/esm/clients/index.native.js.map +1 -1
  244. package/dist/esm/clients/solana.mjs +39 -21
  245. package/dist/esm/clients/solana.mjs.map +1 -1
  246. package/dist/esm/clients/solana.native.js +48 -23
  247. package/dist/esm/clients/solana.native.js.map +1 -1
  248. package/dist/esm/clients/solanaMessage.native.js.map +1 -1
  249. package/dist/esm/clients/sui.native.js.map +1 -1
  250. package/dist/esm/clients/types.native.js.map +1 -1
  251. package/dist/esm/clients/useSolanaClient.native.js.map +1 -1
  252. package/dist/esm/clients/walletStandard.native.js.map +1 -1
  253. package/dist/esm/components/NetworkSwitcher.native.js.map +1 -1
  254. package/dist/esm/components/TransactionStatus.native.js.map +1 -1
  255. package/dist/esm/components/index.native.js.map +1 -1
  256. package/dist/esm/connectkit/GpgProvider.mjs +19 -0
  257. package/dist/esm/connectkit/GpgProvider.mjs.map +1 -0
  258. package/dist/esm/connectkit/GpgProvider.native.js +23 -0
  259. package/dist/esm/connectkit/GpgProvider.native.js.map +1 -0
  260. package/dist/esm/connectkit/adapters/BitcoinAdapter.mjs +5 -14
  261. package/dist/esm/connectkit/adapters/BitcoinAdapter.mjs.map +1 -1
  262. package/dist/esm/connectkit/adapters/BitcoinAdapter.native.js +5 -15
  263. package/dist/esm/connectkit/adapters/BitcoinAdapter.native.js.map +1 -1
  264. package/dist/esm/connectkit/adapters/EthereumAdapter.mjs +6 -15
  265. package/dist/esm/connectkit/adapters/EthereumAdapter.mjs.map +1 -1
  266. package/dist/esm/connectkit/adapters/EthereumAdapter.native.js +7 -16
  267. package/dist/esm/connectkit/adapters/EthereumAdapter.native.js.map +1 -1
  268. package/dist/esm/connectkit/adapters/SolanaAdapter.mjs +5 -14
  269. package/dist/esm/connectkit/adapters/SolanaAdapter.mjs.map +1 -1
  270. package/dist/esm/connectkit/adapters/SolanaAdapter.native.js +5 -15
  271. package/dist/esm/connectkit/adapters/SolanaAdapter.native.js.map +1 -1
  272. package/dist/esm/connectkit/adapters/SuiAdapter.mjs +5 -14
  273. package/dist/esm/connectkit/adapters/SuiAdapter.mjs.map +1 -1
  274. package/dist/esm/connectkit/adapters/SuiAdapter.native.js +5 -15
  275. package/dist/esm/connectkit/adapters/SuiAdapter.native.js.map +1 -1
  276. package/dist/esm/connectkit/adapters/discover.native.js.map +1 -1
  277. package/dist/esm/connectkit/adapters/index.native.js.map +1 -1
  278. package/dist/esm/connectkit/adapters/types.native.js.map +1 -1
  279. package/dist/esm/connectkit/assets/chains.native.js.map +1 -1
  280. package/dist/esm/connectkit/components/BalanceButton/index.native.js.map +1 -1
  281. package/dist/esm/connectkit/components/Common/Avatar/index.native.js.map +1 -1
  282. package/dist/esm/connectkit/components/Common/Avatar/styles.native.js.map +1 -1
  283. package/dist/esm/connectkit/components/Common/Chain/index.native.js.map +1 -1
  284. package/dist/esm/connectkit/components/Common/Chain/styles.native.js.map +1 -1
  285. package/dist/esm/connectkit/components/Common/ChainSelect/index.native.js.map +1 -1
  286. package/dist/esm/connectkit/components/Common/ChainSelectDropdown/index.native.js.map +1 -1
  287. package/dist/esm/connectkit/components/Common/ChainSelectDropdown/styles.native.js.map +1 -1
  288. package/dist/esm/connectkit/components/Common/ChainSelectList/index.native.js.map +1 -1
  289. package/dist/esm/connectkit/components/Common/ChainSelectList/styles.native.js.map +1 -1
  290. package/dist/esm/connectkit/components/Common/ConnectorList/index.native.js.map +1 -1
  291. package/dist/esm/connectkit/components/Common/ConnectorList/styles.native.js.map +1 -1
  292. package/dist/esm/connectkit/components/ConnectButton/index.native.js.map +1 -1
  293. package/dist/esm/connectkit/components/ConnectButton/styles.native.js.map +1 -1
  294. package/dist/esm/connectkit/components/ConnectModal/ConnectUsing.native.js.map +1 -1
  295. package/dist/esm/connectkit/components/ConnectModal/ConnectWithInjector/CircleSpinner/index.native.js.map +1 -1
  296. package/dist/esm/connectkit/components/ConnectModal/ConnectWithInjector/CircleSpinner/styles.native.js.map +1 -1
  297. package/dist/esm/connectkit/components/ConnectModal/ConnectWithInjector/SquircleSpinner/index.native.js.map +1 -1
  298. package/dist/esm/connectkit/components/ConnectModal/ConnectWithInjector/SquircleSpinner/styles.native.js.map +1 -1
  299. package/dist/esm/connectkit/components/ConnectModal/ConnectWithInjector/index.native.js.map +1 -1
  300. package/dist/esm/connectkit/components/ConnectModal/ConnectWithInjector/styles.native.js.map +1 -1
  301. package/dist/esm/connectkit/components/ConnectModal/demo.native.js.map +1 -1
  302. package/dist/esm/connectkit/components/NetworkButton/index.native.js.map +1 -1
  303. package/dist/esm/connectkit/components/Pages/About/graphics.native.js.map +1 -1
  304. package/dist/esm/connectkit/components/Pages/About/index.native.js.map +1 -1
  305. package/dist/esm/connectkit/components/Pages/About/styles.native.js.map +1 -1
  306. package/dist/esm/connectkit/components/Pages/Connectors/index.native.js.map +1 -1
  307. package/dist/esm/connectkit/components/Pages/Connectors/styles.native.js.map +1 -1
  308. package/dist/esm/connectkit/components/Pages/DownloadApp/index.native.js.map +1 -1
  309. package/dist/esm/connectkit/components/Pages/Onboarding/index.native.js.map +1 -1
  310. package/dist/esm/connectkit/components/Pages/Onboarding/styles.native.js.map +1 -1
  311. package/dist/esm/connectkit/components/Pages/Profile/index.native.js.map +1 -1
  312. package/dist/esm/connectkit/components/Pages/Profile/styles.native.js.map +1 -1
  313. package/dist/esm/connectkit/components/Pages/SignInWithEthereum/index.native.js.map +1 -1
  314. package/dist/esm/connectkit/components/Pages/SignInWithEthereum/styles.native.js.map +1 -1
  315. package/dist/esm/connectkit/components/Pages/SwitchNetworks/index.native.js.map +1 -1
  316. package/dist/esm/connectkit/components/Standard/SIWE/index.native.js.map +1 -1
  317. package/dist/esm/connectkit/components/Standard/SIWE/styles.native.js.map +1 -1
  318. package/dist/esm/connectkit/components/contexts/web3/index.native.js.map +1 -1
  319. package/dist/esm/connectkit/connectors/aaveAccountConnector.native.js.map +1 -1
  320. package/dist/esm/connectkit/connectors/createWalletMessage.mjs +1 -1
  321. package/dist/esm/connectkit/connectors/createWalletMessage.native.js +1 -1
  322. package/dist/esm/connectkit/connectors/createWalletMessage.native.js.map +1 -1
  323. package/dist/esm/connectkit/connectors/embeddedDesktop.native.js.map +1 -1
  324. package/dist/esm/connectkit/connectors/ensureWalletConnectors.native.js.map +1 -1
  325. package/dist/esm/connectkit/connectors/getWalletConnectors.native.js.map +1 -1
  326. package/dist/esm/connectkit/connectors/metaMaskConnectConnector.native.js.map +1 -1
  327. package/dist/esm/connectkit/connectors/syntheticChains.native.js.map +1 -1
  328. package/dist/esm/connectkit/connectors/walletAdapterConnector.native.js.map +1 -1
  329. package/dist/esm/connectkit/constants/chainConfigs.native.js.map +1 -1
  330. package/dist/esm/connectkit/defaultConfig.native.js.map +1 -1
  331. package/dist/esm/connectkit/defaultConnectors.native.js.map +1 -1
  332. package/dist/esm/connectkit/defaultTransports.native.js.map +1 -1
  333. package/dist/esm/connectkit/hooks/useChainIsSupported.native.js.map +1 -1
  334. package/dist/esm/connectkit/hooks/useChains.native.js.map +1 -1
  335. package/dist/esm/connectkit/hooks/useConnect.native.js.map +1 -1
  336. package/dist/esm/connectkit/hooks/useConnectCallback.native.js.map +1 -1
  337. package/dist/esm/connectkit/hooks/useConnectors.native.js.map +1 -1
  338. package/dist/esm/connectkit/hooks/useEnsFallbackConfig.native.js.map +1 -1
  339. package/dist/esm/connectkit/hooks/useLastConnector.native.js.map +1 -1
  340. package/dist/esm/connectkit/index.mjs +3 -2
  341. package/dist/esm/connectkit/index.mjs.map +1 -1
  342. package/dist/esm/connectkit/index.native.js +3 -2
  343. package/dist/esm/connectkit/index.native.js.map +1 -1
  344. package/dist/esm/connectkit/openConnector/context.native.js.map +1 -1
  345. package/dist/esm/connectkit/openConnector/device.native.js.map +1 -1
  346. package/dist/esm/connectkit/openConnector/index.native.js.map +1 -1
  347. package/dist/esm/connectkit/openConnector/launcher.native.js.map +1 -1
  348. package/dist/esm/connectkit/profileHeaderAction.native.js.map +1 -1
  349. package/dist/esm/connectkit/screens.native.js.map +1 -1
  350. package/dist/esm/connectkit/siwe/SIWEContext.mjs.map +1 -1
  351. package/dist/esm/connectkit/siwe/SIWEContext.native.js.map +1 -1
  352. package/dist/esm/connectkit/siwe/SIWEProvider.mjs +19 -4
  353. package/dist/esm/connectkit/siwe/SIWEProvider.mjs.map +1 -1
  354. package/dist/esm/connectkit/siwe/SIWEProvider.native.js +19 -4
  355. package/dist/esm/connectkit/siwe/SIWEProvider.native.js.map +1 -1
  356. package/dist/esm/connectkit/siwe/connectIntent.native.js.map +1 -1
  357. package/dist/esm/connectkit/siwe/index.native.js.map +1 -1
  358. package/dist/esm/connectkit/siwe/useSIWE.native.js.map +1 -1
  359. package/dist/esm/connectkit/useWeb3Modal.native.js.map +1 -1
  360. package/dist/esm/connectkit/wallets/index.native.js.map +1 -1
  361. package/dist/esm/connectkit/wallets/useWallets.native.js.map +1 -1
  362. package/dist/esm/connectkit/wallets/walletConfigs.native.js.map +1 -1
  363. package/dist/esm/connectkit/web3Bridge.native.js.map +1 -1
  364. package/dist/esm/connectkit/web3Provider.native.js.map +1 -1
  365. package/dist/esm/esbuild.native.js.map +1 -1
  366. package/dist/esm/examples/LockContract.native.js.map +1 -1
  367. package/dist/esm/examples/index.native.js.map +1 -1
  368. package/dist/esm/hooks/index.native.js.map +1 -1
  369. package/dist/esm/hooks/useContractRead.native.js.map +1 -1
  370. package/dist/esm/hooks/useContractWrite.native.js.map +1 -1
  371. package/dist/esm/hooks/useWallet.native.js.map +1 -1
  372. package/dist/esm/index.mjs +1 -0
  373. package/dist/esm/index.mjs.map +1 -1
  374. package/dist/esm/index.native.js +1 -0
  375. package/dist/esm/index.native.js.map +1 -1
  376. package/dist/esm/keycloak/KeycloakWalletLogin.mjs +218 -0
  377. package/dist/esm/keycloak/KeycloakWalletLogin.mjs.map +1 -0
  378. package/dist/esm/keycloak/KeycloakWalletLogin.native.js +5 -0
  379. package/dist/esm/keycloak/KeycloakWalletLogin.native.js.map +1 -0
  380. package/dist/esm/keycloak/browserFlow.mjs +58 -0
  381. package/dist/esm/keycloak/browserFlow.mjs.map +1 -0
  382. package/dist/esm/keycloak/browserFlow.native.js +62 -0
  383. package/dist/esm/keycloak/browserFlow.native.js.map +1 -0
  384. package/dist/esm/keycloak/device.mjs +10 -0
  385. package/dist/esm/keycloak/device.mjs.map +1 -0
  386. package/dist/esm/keycloak/device.native.js +16 -0
  387. package/dist/esm/keycloak/device.native.js.map +1 -0
  388. package/dist/esm/keycloak/directGrant.mjs +164 -0
  389. package/dist/esm/keycloak/directGrant.mjs.map +1 -0
  390. package/dist/esm/keycloak/directGrant.native.js +205 -0
  391. package/dist/esm/keycloak/directGrant.native.js.map +1 -0
  392. package/dist/esm/keycloak/iife.mjs +5 -0
  393. package/dist/esm/keycloak/iife.mjs.map +1 -0
  394. package/dist/esm/keycloak/iife.native.js +5 -0
  395. package/dist/esm/keycloak/iife.native.js.map +1 -0
  396. package/dist/esm/keycloak/index.mjs +13 -0
  397. package/dist/esm/keycloak/index.mjs.map +1 -0
  398. package/dist/esm/keycloak/index.native.js +13 -0
  399. package/dist/esm/keycloak/index.native.js.map +1 -0
  400. package/dist/esm/keycloak/keycloakWallet.mjs +186 -0
  401. package/dist/esm/keycloak/keycloakWallet.mjs.map +1 -0
  402. package/dist/esm/keycloak/keycloakWallet.native.js +254 -0
  403. package/dist/esm/keycloak/keycloakWallet.native.js.map +1 -0
  404. package/dist/esm/keycloak/mount.mjs +28 -0
  405. package/dist/esm/keycloak/mount.mjs.map +1 -0
  406. package/dist/esm/keycloak/mount.native.js +5 -0
  407. package/dist/esm/keycloak/mount.native.js.map +1 -0
  408. package/dist/esm/keycloak/registerWallet.mjs +49 -0
  409. package/dist/esm/keycloak/registerWallet.mjs.map +1 -0
  410. package/dist/esm/keycloak/registerWallet.native.js +53 -0
  411. package/dist/esm/keycloak/registerWallet.native.js.map +1 -0
  412. package/dist/esm/keycloak/types.mjs +20 -0
  413. package/dist/esm/keycloak/types.mjs.map +1 -0
  414. package/dist/esm/keycloak/types.native.js +150 -0
  415. package/dist/esm/keycloak/types.native.js.map +1 -0
  416. package/dist/esm/keycloak/useDirectLogin.mjs +32 -0
  417. package/dist/esm/keycloak/useDirectLogin.mjs.map +1 -0
  418. package/dist/esm/keycloak/useDirectLogin.native.js +49 -0
  419. package/dist/esm/keycloak/useDirectLogin.native.js.map +1 -0
  420. package/dist/esm/keycloak/useWalletLogin.mjs +72 -0
  421. package/dist/esm/keycloak/useWalletLogin.mjs.map +1 -0
  422. package/dist/esm/keycloak/useWalletLogin.native.js +5 -0
  423. package/dist/esm/keycloak/useWalletLogin.native.js.map +1 -0
  424. package/dist/esm/message/buildWalletMessage.mjs +87 -0
  425. package/dist/esm/message/buildWalletMessage.mjs.map +1 -0
  426. package/dist/esm/message/buildWalletMessage.native.js +92 -0
  427. package/dist/esm/message/buildWalletMessage.native.js.map +1 -0
  428. package/dist/esm/message/index.mjs +3 -0
  429. package/dist/esm/message/index.mjs.map +1 -0
  430. package/dist/esm/message/index.native.js +3 -0
  431. package/dist/esm/message/index.native.js.map +1 -0
  432. package/dist/esm/providers/WalletProvider.mjs +9 -3
  433. package/dist/esm/providers/WalletProvider.mjs.map +1 -1
  434. package/dist/esm/providers/index.native.js.map +1 -1
  435. package/dist/esm/providers/mockConnector.native.js.map +1 -1
  436. package/dist/esm/providers/native/deepLink.native.js.map +1 -1
  437. package/dist/esm/providers/native/inject.native.js.map +1 -1
  438. package/dist/esm/providers/native/visibility.native.js.map +1 -1
  439. package/dist/esm/providers/walletConfig.native.js.map +1 -1
  440. package/dist/esm/siws/index.native.js.map +1 -1
  441. package/dist/esm/siws/message.mjs +5 -16
  442. package/dist/esm/siws/message.mjs.map +1 -1
  443. package/dist/esm/siws/message.native.js +6 -16
  444. package/dist/esm/siws/message.native.js.map +1 -1
  445. package/dist/esm/siws/signWithBridge.native.js.map +1 -1
  446. package/dist/esm/siws/verify.native.js.map +1 -1
  447. package/dist/esm/solana.mjs.map +1 -1
  448. package/dist/esm/solana.native.js.map +1 -1
  449. package/dist/esm/vite.native.js.map +1 -1
  450. package/dist/jsx/bridge/BridgeClient.native.js.map +1 -1
  451. package/dist/jsx/bridge/BridgeHost.native.js.map +1 -1
  452. package/dist/jsx/bridge/SolanaBridge.native.js.map +1 -1
  453. package/dist/jsx/bridge/base64.native.js.map +1 -1
  454. package/dist/jsx/bridge/bridgeConnector.native.js.map +1 -1
  455. package/dist/jsx/bridge/eip1193.native.js.map +1 -1
  456. package/dist/jsx/bridge/index.native.js.map +1 -1
  457. package/dist/jsx/bridge/postMessageTransport.native.js.map +1 -1
  458. package/dist/jsx/bridge/protocol.native.js.map +1 -1
  459. package/dist/jsx/bridge/transport.native.js.map +1 -1
  460. package/dist/jsx/bundler/metaMaskConnectTimeouts.native.js.map +1 -1
  461. package/dist/jsx/clients/adapter.native.js.map +1 -1
  462. package/dist/jsx/clients/bitcoin.native.js.map +1 -1
  463. package/dist/jsx/clients/connector.native.js.map +1 -1
  464. package/dist/jsx/clients/evm.mjs +295 -12
  465. package/dist/jsx/clients/evm.mjs.map +1 -1
  466. package/dist/jsx/clients/evm.native.js +500 -12
  467. package/dist/jsx/clients/evm.native.js.map +1 -1
  468. package/dist/jsx/clients/gpg.native.js.map +1 -1
  469. package/dist/jsx/clients/hooks.native.js.map +1 -1
  470. package/dist/jsx/clients/index.mjs +2 -2
  471. package/dist/jsx/clients/index.mjs.map +1 -1
  472. package/dist/jsx/clients/index.native.js +5 -0
  473. package/dist/jsx/clients/index.native.js.map +1 -1
  474. package/dist/jsx/clients/solana.mjs +39 -21
  475. package/dist/jsx/clients/solana.mjs.map +1 -1
  476. package/dist/jsx/clients/solana.native.js +48 -23
  477. package/dist/jsx/clients/solana.native.js.map +1 -1
  478. package/dist/jsx/clients/solanaMessage.native.js.map +1 -1
  479. package/dist/jsx/clients/sui.native.js.map +1 -1
  480. package/dist/jsx/clients/types.native.js.map +1 -1
  481. package/dist/jsx/clients/useSolanaClient.native.js.map +1 -1
  482. package/dist/jsx/clients/walletStandard.native.js.map +1 -1
  483. package/dist/jsx/components/NetworkSwitcher.native.js.map +1 -1
  484. package/dist/jsx/components/TransactionStatus.native.js.map +1 -1
  485. package/dist/jsx/components/index.native.js.map +1 -1
  486. package/dist/jsx/connectkit/GpgProvider.mjs +19 -0
  487. package/dist/jsx/connectkit/GpgProvider.mjs.map +1 -0
  488. package/dist/jsx/connectkit/GpgProvider.native.js +51 -0
  489. package/dist/jsx/connectkit/GpgProvider.native.js.map +1 -0
  490. package/dist/jsx/connectkit/adapters/BitcoinAdapter.mjs +5 -14
  491. package/dist/jsx/connectkit/adapters/BitcoinAdapter.mjs.map +1 -1
  492. package/dist/jsx/connectkit/adapters/BitcoinAdapter.native.js +5 -15
  493. package/dist/jsx/connectkit/adapters/BitcoinAdapter.native.js.map +1 -1
  494. package/dist/jsx/connectkit/adapters/EthereumAdapter.mjs +6 -15
  495. package/dist/jsx/connectkit/adapters/EthereumAdapter.mjs.map +1 -1
  496. package/dist/jsx/connectkit/adapters/EthereumAdapter.native.js +7 -16
  497. package/dist/jsx/connectkit/adapters/EthereumAdapter.native.js.map +1 -1
  498. package/dist/jsx/connectkit/adapters/SolanaAdapter.mjs +5 -14
  499. package/dist/jsx/connectkit/adapters/SolanaAdapter.mjs.map +1 -1
  500. package/dist/jsx/connectkit/adapters/SolanaAdapter.native.js +5 -15
  501. package/dist/jsx/connectkit/adapters/SolanaAdapter.native.js.map +1 -1
  502. package/dist/jsx/connectkit/adapters/SuiAdapter.mjs +5 -14
  503. package/dist/jsx/connectkit/adapters/SuiAdapter.mjs.map +1 -1
  504. package/dist/jsx/connectkit/adapters/SuiAdapter.native.js +5 -15
  505. package/dist/jsx/connectkit/adapters/SuiAdapter.native.js.map +1 -1
  506. package/dist/jsx/connectkit/adapters/discover.native.js.map +1 -1
  507. package/dist/jsx/connectkit/adapters/index.native.js.map +1 -1
  508. package/dist/jsx/connectkit/adapters/types.native.js.map +1 -1
  509. package/dist/jsx/connectkit/assets/chains.native.js.map +1 -1
  510. package/dist/jsx/connectkit/components/BalanceButton/index.native.js +1 -1
  511. package/dist/jsx/connectkit/components/BalanceButton/index.native.js.map +1 -1
  512. package/dist/jsx/connectkit/components/Common/Avatar/index.native.js.map +1 -1
  513. package/dist/jsx/connectkit/components/Common/Avatar/styles.native.js.map +1 -1
  514. package/dist/jsx/connectkit/components/Common/Chain/index.native.js.map +1 -1
  515. package/dist/jsx/connectkit/components/Common/Chain/styles.native.js.map +1 -1
  516. package/dist/jsx/connectkit/components/Common/ChainSelect/index.native.js +2 -2
  517. package/dist/jsx/connectkit/components/Common/ChainSelect/index.native.js.map +1 -1
  518. package/dist/jsx/connectkit/components/Common/ChainSelectDropdown/index.native.js +1 -1
  519. package/dist/jsx/connectkit/components/Common/ChainSelectDropdown/index.native.js.map +1 -1
  520. package/dist/jsx/connectkit/components/Common/ChainSelectDropdown/styles.native.js.map +1 -1
  521. package/dist/jsx/connectkit/components/Common/ChainSelectList/index.native.js.map +1 -1
  522. package/dist/jsx/connectkit/components/Common/ChainSelectList/styles.native.js.map +1 -1
  523. package/dist/jsx/connectkit/components/Common/ConnectorList/index.native.js.map +1 -1
  524. package/dist/jsx/connectkit/components/Common/ConnectorList/styles.native.js.map +1 -1
  525. package/dist/jsx/connectkit/components/ConnectButton/index.native.js +4 -4
  526. package/dist/jsx/connectkit/components/ConnectButton/index.native.js.map +1 -1
  527. package/dist/jsx/connectkit/components/ConnectButton/styles.native.js.map +1 -1
  528. package/dist/jsx/connectkit/components/ConnectModal/ConnectUsing.native.js +1 -1
  529. package/dist/jsx/connectkit/components/ConnectModal/ConnectUsing.native.js.map +1 -1
  530. package/dist/jsx/connectkit/components/ConnectModal/ConnectWithInjector/CircleSpinner/index.native.js.map +1 -1
  531. package/dist/jsx/connectkit/components/ConnectModal/ConnectWithInjector/CircleSpinner/styles.native.js.map +1 -1
  532. package/dist/jsx/connectkit/components/ConnectModal/ConnectWithInjector/SquircleSpinner/index.native.js.map +1 -1
  533. package/dist/jsx/connectkit/components/ConnectModal/ConnectWithInjector/SquircleSpinner/styles.native.js.map +1 -1
  534. package/dist/jsx/connectkit/components/ConnectModal/ConnectWithInjector/index.native.js +3 -3
  535. package/dist/jsx/connectkit/components/ConnectModal/ConnectWithInjector/index.native.js.map +1 -1
  536. package/dist/jsx/connectkit/components/ConnectModal/ConnectWithInjector/styles.native.js.map +1 -1
  537. package/dist/jsx/connectkit/components/ConnectModal/demo.native.js +9 -9
  538. package/dist/jsx/connectkit/components/ConnectModal/demo.native.js.map +1 -1
  539. package/dist/jsx/connectkit/components/NetworkButton/index.native.js +2 -2
  540. package/dist/jsx/connectkit/components/NetworkButton/index.native.js.map +1 -1
  541. package/dist/jsx/connectkit/components/Pages/About/graphics.native.js.map +1 -1
  542. package/dist/jsx/connectkit/components/Pages/About/index.native.js.map +1 -1
  543. package/dist/jsx/connectkit/components/Pages/About/styles.native.js.map +1 -1
  544. package/dist/jsx/connectkit/components/Pages/Connectors/index.native.js +1 -1
  545. package/dist/jsx/connectkit/components/Pages/Connectors/index.native.js.map +1 -1
  546. package/dist/jsx/connectkit/components/Pages/Connectors/styles.native.js.map +1 -1
  547. package/dist/jsx/connectkit/components/Pages/DownloadApp/index.native.js.map +1 -1
  548. package/dist/jsx/connectkit/components/Pages/Onboarding/index.native.js.map +1 -1
  549. package/dist/jsx/connectkit/components/Pages/Onboarding/styles.native.js.map +1 -1
  550. package/dist/jsx/connectkit/components/Pages/Profile/index.native.js +2 -2
  551. package/dist/jsx/connectkit/components/Pages/Profile/index.native.js.map +1 -1
  552. package/dist/jsx/connectkit/components/Pages/Profile/styles.native.js.map +1 -1
  553. package/dist/jsx/connectkit/components/Pages/SignInWithEthereum/index.native.js +3 -3
  554. package/dist/jsx/connectkit/components/Pages/SignInWithEthereum/index.native.js.map +1 -1
  555. package/dist/jsx/connectkit/components/Pages/SignInWithEthereum/styles.native.js.map +1 -1
  556. package/dist/jsx/connectkit/components/Pages/SwitchNetworks/index.native.js +1 -1
  557. package/dist/jsx/connectkit/components/Pages/SwitchNetworks/index.native.js.map +1 -1
  558. package/dist/jsx/connectkit/components/Standard/SIWE/index.native.js +1 -1
  559. package/dist/jsx/connectkit/components/Standard/SIWE/index.native.js.map +1 -1
  560. package/dist/jsx/connectkit/components/Standard/SIWE/styles.native.js.map +1 -1
  561. package/dist/jsx/connectkit/components/contexts/web3/index.native.js.map +1 -1
  562. package/dist/jsx/connectkit/connectors/aaveAccountConnector.native.js.map +1 -1
  563. package/dist/jsx/connectkit/connectors/createWalletMessage.mjs +1 -1
  564. package/dist/jsx/connectkit/connectors/createWalletMessage.native.js +2 -2
  565. package/dist/jsx/connectkit/connectors/createWalletMessage.native.js.map +1 -1
  566. package/dist/jsx/connectkit/connectors/embeddedDesktop.native.js.map +1 -1
  567. package/dist/jsx/connectkit/connectors/ensureWalletConnectors.native.js.map +1 -1
  568. package/dist/jsx/connectkit/connectors/getWalletConnectors.native.js.map +1 -1
  569. package/dist/jsx/connectkit/connectors/metaMaskConnectConnector.native.js.map +1 -1
  570. package/dist/jsx/connectkit/connectors/syntheticChains.native.js.map +1 -1
  571. package/dist/jsx/connectkit/connectors/walletAdapterConnector.native.js.map +1 -1
  572. package/dist/jsx/connectkit/constants/chainConfigs.native.js.map +1 -1
  573. package/dist/jsx/connectkit/defaultConfig.native.js.map +1 -1
  574. package/dist/jsx/connectkit/defaultConnectors.native.js.map +1 -1
  575. package/dist/jsx/connectkit/defaultTransports.native.js.map +1 -1
  576. package/dist/jsx/connectkit/hooks/useChainIsSupported.native.js.map +1 -1
  577. package/dist/jsx/connectkit/hooks/useChains.native.js.map +1 -1
  578. package/dist/jsx/connectkit/hooks/useConnect.native.js.map +1 -1
  579. package/dist/jsx/connectkit/hooks/useConnectCallback.native.js.map +1 -1
  580. package/dist/jsx/connectkit/hooks/useConnectors.native.js.map +1 -1
  581. package/dist/jsx/connectkit/hooks/useEnsFallbackConfig.native.js.map +1 -1
  582. package/dist/jsx/connectkit/hooks/useLastConnector.native.js.map +1 -1
  583. package/dist/jsx/connectkit/index.mjs +3 -2
  584. package/dist/jsx/connectkit/index.mjs.map +1 -1
  585. package/dist/jsx/connectkit/index.native.js +12 -11
  586. package/dist/jsx/connectkit/index.native.js.map +1 -1
  587. package/dist/jsx/connectkit/openConnector/context.native.js.map +1 -1
  588. package/dist/jsx/connectkit/openConnector/device.native.js.map +1 -1
  589. package/dist/jsx/connectkit/openConnector/index.native.js.map +1 -1
  590. package/dist/jsx/connectkit/openConnector/launcher.native.js.map +1 -1
  591. package/dist/jsx/connectkit/profileHeaderAction.native.js +1 -1
  592. package/dist/jsx/connectkit/profileHeaderAction.native.js.map +1 -1
  593. package/dist/jsx/connectkit/screens.native.js +7 -7
  594. package/dist/jsx/connectkit/screens.native.js.map +1 -1
  595. package/dist/jsx/connectkit/siwe/SIWEContext.mjs.map +1 -1
  596. package/dist/jsx/connectkit/siwe/SIWEContext.native.js.map +1 -1
  597. package/dist/jsx/connectkit/siwe/SIWEProvider.mjs +19 -4
  598. package/dist/jsx/connectkit/siwe/SIWEProvider.mjs.map +1 -1
  599. package/dist/jsx/connectkit/siwe/SIWEProvider.native.js +18 -3
  600. package/dist/jsx/connectkit/siwe/SIWEProvider.native.js.map +1 -1
  601. package/dist/jsx/connectkit/siwe/connectIntent.native.js.map +1 -1
  602. package/dist/jsx/connectkit/siwe/index.native.js.map +1 -1
  603. package/dist/jsx/connectkit/siwe/useSIWE.native.js.map +1 -1
  604. package/dist/jsx/connectkit/useWeb3Modal.native.js +2 -2
  605. package/dist/jsx/connectkit/useWeb3Modal.native.js.map +1 -1
  606. package/dist/jsx/connectkit/wallets/index.native.js.map +1 -1
  607. package/dist/jsx/connectkit/wallets/useWallets.native.js.map +1 -1
  608. package/dist/jsx/connectkit/wallets/walletConfigs.native.js.map +1 -1
  609. package/dist/jsx/connectkit/web3Bridge.native.js +2 -2
  610. package/dist/jsx/connectkit/web3Bridge.native.js.map +1 -1
  611. package/dist/jsx/connectkit/web3Provider.native.js.map +1 -1
  612. package/dist/jsx/esbuild.native.js.map +1 -1
  613. package/dist/jsx/examples/LockContract.native.js.map +1 -1
  614. package/dist/jsx/examples/index.native.js.map +1 -1
  615. package/dist/jsx/hooks/index.native.js.map +1 -1
  616. package/dist/jsx/hooks/useContractRead.native.js.map +1 -1
  617. package/dist/jsx/hooks/useContractWrite.native.js.map +1 -1
  618. package/dist/jsx/hooks/useWallet.native.js.map +1 -1
  619. package/dist/jsx/index.js +1 -0
  620. package/dist/jsx/index.js.map +1 -1
  621. package/dist/jsx/index.mjs +1 -0
  622. package/dist/jsx/index.mjs.map +1 -1
  623. package/dist/jsx/index.native.js +7 -6
  624. package/dist/jsx/index.native.js.map +1 -1
  625. package/dist/jsx/keycloak/KeycloakWalletLogin.mjs +218 -0
  626. package/dist/jsx/keycloak/KeycloakWalletLogin.mjs.map +1 -0
  627. package/dist/jsx/keycloak/KeycloakWalletLogin.native.js +33 -0
  628. package/dist/jsx/keycloak/KeycloakWalletLogin.native.js.map +1 -0
  629. package/dist/jsx/keycloak/browserFlow.mjs +58 -0
  630. package/dist/jsx/keycloak/browserFlow.mjs.map +1 -0
  631. package/dist/jsx/keycloak/browserFlow.native.js +90 -0
  632. package/dist/jsx/keycloak/browserFlow.native.js.map +1 -0
  633. package/dist/jsx/keycloak/device.mjs +10 -0
  634. package/dist/jsx/keycloak/device.mjs.map +1 -0
  635. package/dist/jsx/keycloak/device.native.js +45 -0
  636. package/dist/jsx/keycloak/device.native.js.map +1 -0
  637. package/dist/jsx/keycloak/directGrant.mjs +164 -0
  638. package/dist/jsx/keycloak/directGrant.mjs.map +1 -0
  639. package/dist/jsx/keycloak/directGrant.native.js +233 -0
  640. package/dist/jsx/keycloak/directGrant.native.js.map +1 -0
  641. package/dist/jsx/keycloak/iife.mjs +5 -0
  642. package/dist/jsx/keycloak/iife.mjs.map +1 -0
  643. package/dist/jsx/keycloak/iife.native.js +7 -0
  644. package/dist/jsx/keycloak/iife.native.js.map +1 -0
  645. package/dist/jsx/keycloak/index.mjs +13 -0
  646. package/dist/jsx/keycloak/index.mjs.map +1 -0
  647. package/dist/jsx/keycloak/index.native.js +56 -0
  648. package/dist/jsx/keycloak/index.native.js.map +1 -0
  649. package/dist/jsx/keycloak/keycloakWallet.mjs +186 -0
  650. package/dist/jsx/keycloak/keycloakWallet.mjs.map +1 -0
  651. package/dist/jsx/keycloak/keycloakWallet.native.js +285 -0
  652. package/dist/jsx/keycloak/keycloakWallet.native.js.map +1 -0
  653. package/dist/jsx/keycloak/mount.mjs +28 -0
  654. package/dist/jsx/keycloak/mount.mjs.map +1 -0
  655. package/dist/jsx/keycloak/mount.native.js +33 -0
  656. package/dist/jsx/keycloak/mount.native.js.map +1 -0
  657. package/dist/jsx/keycloak/registerWallet.mjs +49 -0
  658. package/dist/jsx/keycloak/registerWallet.mjs.map +1 -0
  659. package/dist/jsx/keycloak/registerWallet.native.js +81 -0
  660. package/dist/jsx/keycloak/registerWallet.native.js.map +1 -0
  661. package/dist/jsx/keycloak/types.mjs +20 -0
  662. package/dist/jsx/keycloak/types.mjs.map +1 -0
  663. package/dist/jsx/keycloak/types.native.js +179 -0
  664. package/dist/jsx/keycloak/types.native.js.map +1 -0
  665. package/dist/jsx/keycloak/useDirectLogin.mjs +32 -0
  666. package/dist/jsx/keycloak/useDirectLogin.mjs.map +1 -0
  667. package/dist/jsx/keycloak/useDirectLogin.native.js +77 -0
  668. package/dist/jsx/keycloak/useDirectLogin.native.js.map +1 -0
  669. package/dist/jsx/keycloak/useWalletLogin.mjs +72 -0
  670. package/dist/jsx/keycloak/useWalletLogin.mjs.map +1 -0
  671. package/dist/jsx/keycloak/useWalletLogin.native.js +33 -0
  672. package/dist/jsx/keycloak/useWalletLogin.native.js.map +1 -0
  673. package/dist/jsx/message/buildWalletMessage.mjs +87 -0
  674. package/dist/jsx/message/buildWalletMessage.mjs.map +1 -0
  675. package/dist/jsx/message/buildWalletMessage.native.js +121 -0
  676. package/dist/jsx/message/buildWalletMessage.native.js.map +1 -0
  677. package/dist/jsx/message/index.mjs +3 -0
  678. package/dist/jsx/message/index.mjs.map +1 -0
  679. package/dist/jsx/message/index.native.js +32 -0
  680. package/dist/jsx/message/index.native.js.map +1 -0
  681. package/dist/jsx/providers/WalletProvider.mjs +9 -3
  682. package/dist/jsx/providers/WalletProvider.mjs.map +1 -1
  683. package/dist/jsx/providers/index.native.js.map +1 -1
  684. package/dist/jsx/providers/mockConnector.native.js.map +1 -1
  685. package/dist/jsx/providers/native/deepLink.native.js.map +1 -1
  686. package/dist/jsx/providers/native/inject.native.js.map +1 -1
  687. package/dist/jsx/providers/native/visibility.native.js.map +1 -1
  688. package/dist/jsx/providers/walletConfig.native.js.map +1 -1
  689. package/dist/jsx/siws/index.native.js.map +1 -1
  690. package/dist/jsx/siws/message.mjs +5 -16
  691. package/dist/jsx/siws/message.mjs.map +1 -1
  692. package/dist/jsx/siws/message.native.js +6 -16
  693. package/dist/jsx/siws/message.native.js.map +1 -1
  694. package/dist/jsx/siws/signWithBridge.native.js.map +1 -1
  695. package/dist/jsx/siws/verify.native.js.map +1 -1
  696. package/dist/jsx/solana.mjs.map +1 -1
  697. package/dist/jsx/solana.native.js.map +1 -1
  698. package/dist/jsx/vite.native.js.map +1 -1
  699. package/dist/keycloak/login.iife.js +3604 -0
  700. package/package.json +27 -8
  701. package/src/clients/evm.spec.ts +644 -10
  702. package/src/clients/evm.ts +498 -10
  703. package/src/clients/index.ts +8 -0
  704. package/src/clients/solana.spec.ts +116 -0
  705. package/src/clients/solana.ts +51 -31
  706. package/src/connectkit/GpgProvider.tsx +16 -0
  707. package/src/connectkit/adapters/BitcoinAdapter.ts +5 -16
  708. package/src/connectkit/adapters/EthereumAdapter.ts +6 -17
  709. package/src/connectkit/adapters/SolanaAdapter.ts +5 -16
  710. package/src/connectkit/adapters/SuiAdapter.ts +5 -16
  711. package/src/connectkit/connectors/createWalletMessage.ts +1 -1
  712. package/src/connectkit/index.ts +2 -6
  713. package/src/connectkit/openConnector/modal.spec.tsx +1 -1
  714. package/src/connectkit/siwe/SIWEContext.tsx +6 -2
  715. package/src/connectkit/siwe/SIWEProvider.tsx +22 -5
  716. package/src/index.ts +3 -0
  717. package/src/keycloak/KeycloakWalletLogin.native.tsx +7 -0
  718. package/src/keycloak/KeycloakWalletLogin.spec.tsx +168 -0
  719. package/src/keycloak/KeycloakWalletLogin.tsx +251 -0
  720. package/src/keycloak/browserFlow.spec.ts +108 -0
  721. package/src/keycloak/browserFlow.ts +84 -0
  722. package/src/keycloak/device.ts +17 -0
  723. package/src/keycloak/directGrant.spec.ts +331 -0
  724. package/src/keycloak/directGrant.ts +214 -0
  725. package/src/keycloak/iife.ts +3 -0
  726. package/src/keycloak/index.ts +44 -0
  727. package/src/keycloak/keycloakWallet.spec.ts +216 -0
  728. package/src/keycloak/keycloakWallet.ts +275 -0
  729. package/src/keycloak/mount.native.ts +11 -0
  730. package/src/keycloak/mount.tsx +45 -0
  731. package/src/keycloak/nonceReset.spec.tsx +205 -0
  732. package/src/keycloak/registerWallet.spec.ts +88 -0
  733. package/src/keycloak/registerWallet.ts +59 -0
  734. package/src/keycloak/types.ts +66 -0
  735. package/src/keycloak/useDirectLogin.spec.tsx +112 -0
  736. package/src/keycloak/useDirectLogin.ts +74 -0
  737. package/src/keycloak/useWalletLogin.native.ts +7 -0
  738. package/src/keycloak/useWalletLogin.ts +99 -0
  739. package/src/message/buildWalletMessage.spec.ts +291 -0
  740. package/src/message/buildWalletMessage.ts +150 -0
  741. package/src/message/index.ts +8 -0
  742. package/src/providers/WalletProvider.tsx +15 -2
  743. package/src/siws/message.ts +3 -22
  744. package/src/solana.ts +1 -0
  745. package/types/clients/evm.d.ts +144 -2
  746. package/types/clients/evm.d.ts.map +1 -1
  747. package/types/clients/index.d.ts +1 -1
  748. package/types/clients/index.d.ts.map +1 -1
  749. package/types/clients/solana.d.ts +14 -5
  750. package/types/clients/solana.d.ts.map +1 -1
  751. package/types/connectkit/GpgProvider.d.ts +10 -0
  752. package/types/connectkit/GpgProvider.d.ts.map +1 -0
  753. package/types/connectkit/adapters/BitcoinAdapter.d.ts.map +1 -1
  754. package/types/connectkit/adapters/EthereumAdapter.d.ts.map +1 -1
  755. package/types/connectkit/adapters/SolanaAdapter.d.ts.map +1 -1
  756. package/types/connectkit/adapters/SuiAdapter.d.ts.map +1 -1
  757. package/types/connectkit/connectors/createWalletMessage.d.ts +1 -1
  758. package/types/connectkit/connectors/createWalletMessage.d.ts.map +1 -1
  759. package/types/connectkit/index.d.ts +3 -2
  760. package/types/connectkit/index.d.ts.map +1 -1
  761. package/types/connectkit/siwe/SIWEContext.d.ts +2 -1
  762. package/types/connectkit/siwe/SIWEContext.d.ts.map +1 -1
  763. package/types/connectkit/siwe/SIWEProvider.d.ts.map +1 -1
  764. package/types/index.d.ts +1 -0
  765. package/types/index.d.ts.map +1 -1
  766. package/types/keycloak/KeycloakWalletLogin.d.ts +45 -0
  767. package/types/keycloak/KeycloakWalletLogin.d.ts.map +1 -0
  768. package/types/keycloak/KeycloakWalletLogin.native.d.ts +4 -0
  769. package/types/keycloak/KeycloakWalletLogin.native.d.ts.map +1 -0
  770. package/types/keycloak/browserFlow.d.ts +27 -0
  771. package/types/keycloak/browserFlow.d.ts.map +1 -0
  772. package/types/keycloak/device.d.ts +14 -0
  773. package/types/keycloak/device.d.ts.map +1 -0
  774. package/types/keycloak/directGrant.d.ts +43 -0
  775. package/types/keycloak/directGrant.d.ts.map +1 -0
  776. package/types/keycloak/iife.d.ts +2 -0
  777. package/types/keycloak/iife.d.ts.map +1 -0
  778. package/types/keycloak/index.d.ts +12 -0
  779. package/types/keycloak/index.d.ts.map +1 -0
  780. package/types/keycloak/keycloakWallet.d.ts +120 -0
  781. package/types/keycloak/keycloakWallet.d.ts.map +1 -0
  782. package/types/keycloak/mount.d.ts +16 -0
  783. package/types/keycloak/mount.d.ts.map +1 -0
  784. package/types/keycloak/mount.native.d.ts +5 -0
  785. package/types/keycloak/mount.native.d.ts.map +1 -0
  786. package/types/keycloak/registerWallet.d.ts +22 -0
  787. package/types/keycloak/registerWallet.d.ts.map +1 -0
  788. package/types/keycloak/types.d.ts +50 -0
  789. package/types/keycloak/types.d.ts.map +1 -0
  790. package/types/keycloak/useDirectLogin.d.ts +29 -0
  791. package/types/keycloak/useDirectLogin.d.ts.map +1 -0
  792. package/types/keycloak/useWalletLogin.d.ts +26 -0
  793. package/types/keycloak/useWalletLogin.d.ts.map +1 -0
  794. package/types/keycloak/useWalletLogin.native.d.ts +4 -0
  795. package/types/keycloak/useWalletLogin.native.d.ts.map +1 -0
  796. package/types/message/buildWalletMessage.d.ts +46 -0
  797. package/types/message/buildWalletMessage.d.ts.map +1 -0
  798. package/types/message/index.d.ts +2 -0
  799. package/types/message/index.d.ts.map +1 -0
  800. package/types/providers/WalletProvider.d.ts +8 -1
  801. package/types/providers/WalletProvider.d.ts.map +1 -1
  802. package/types/siws/message.d.ts.map +1 -1
  803. package/types/solana.d.ts +1 -1
  804. package/types/solana.d.ts.map +1 -1
  805. package/dist/cjs/connectkit/adapters/messages.cjs +0 -73
  806. package/dist/cjs/connectkit/adapters/messages.native.js +0 -79
  807. package/dist/cjs/connectkit/adapters/messages.native.js.map +0 -1
  808. package/dist/esm/connectkit/adapters/messages.mjs +0 -48
  809. package/dist/esm/connectkit/adapters/messages.mjs.map +0 -1
  810. package/dist/esm/connectkit/adapters/messages.native.js +0 -51
  811. package/dist/esm/connectkit/adapters/messages.native.js.map +0 -1
  812. package/dist/jsx/connectkit/adapters/messages.mjs +0 -48
  813. package/dist/jsx/connectkit/adapters/messages.mjs.map +0 -1
  814. package/dist/jsx/connectkit/adapters/messages.native.js +0 -79
  815. package/dist/jsx/connectkit/adapters/messages.native.js.map +0 -1
  816. package/src/connectkit/adapters/messages.ts +0 -84
  817. package/types/connectkit/adapters/messages.d.ts +0 -16
  818. package/types/connectkit/adapters/messages.d.ts.map +0 -1
@@ -0,0 +1,99 @@
1
+ import { useModal } from "@multiplatform.one/connectkit";
2
+ import { useCallback, useContext, useEffect, useRef } from "react";
3
+ import { useAccount } from "wagmi";
4
+ import { useConnectorLauncher } from "../connectkit/openConnector";
5
+ import { SIWEContext, StatusState } from "../connectkit/siwe/SIWEContext";
6
+ import { hasUserActivation, isMobileBrowser } from "./device";
7
+
8
+ export interface UseWalletLoginOptions {
9
+ /** sessionStorage key of the pending-login mark. One per button on a page. */
10
+ intentKey?: string;
11
+ /** How long a connect started by `login()` may still drive the signature. Default 90 s. */
12
+ intentTtlMs?: number;
13
+ }
14
+
15
+ export interface UseWalletLoginResult {
16
+ /** Connect if needed, then sign through SIWEProvider. One press, no Continue step. */
17
+ login(): Promise<void>;
18
+ status: StatusState;
19
+ isConnected: boolean;
20
+ address?: string;
21
+ }
22
+
23
+ function readIntent(key: string, ttl: number): boolean {
24
+ try {
25
+ const raw = globalThis.sessionStorage?.getItem(key);
26
+ if (raw === null || raw === undefined) return false;
27
+ globalThis.sessionStorage.removeItem(key);
28
+ const at = Number(raw);
29
+ return Number.isFinite(at) && Date.now() - at < ttl;
30
+ } catch {
31
+ return false;
32
+ }
33
+ }
34
+
35
+ function writeIntent(key: string, value: string | null) {
36
+ try {
37
+ if (value === null) globalThis.sessionStorage?.removeItem(key);
38
+ else globalThis.sessionStorage?.setItem(key, value);
39
+ } catch {
40
+ // Storage off (private mode): the login falls back to a second press.
41
+ }
42
+ }
43
+
44
+ /**
45
+ * A wallet login button's behaviour. Pressing it while disconnected opens the
46
+ * connect modal, or on a phone with ConnectKit's `mobile.preferredConnector`
47
+ * that wallet straight away, so call `login()` synchronously in the click
48
+ * handler. The press is marked in sessionStorage (the wallet bounce can reload
49
+ * the page); once the wallet connects the signature starts by itself.
50
+ * Only a fresh mark drives it, so a wallet that reconnects on a later visit
51
+ * never signs unasked. A phone browser opens the wallet for a signature only
52
+ * from a tap, so without one the user presses again.
53
+ */
54
+ export function useWalletLogin(opts: UseWalletLoginOptions = {}): UseWalletLoginResult {
55
+ const { intentKey = "mpo:wallet-login-intent", intentTtlMs = 90_000 } = opts;
56
+ const siwe = useContext(SIWEContext);
57
+ const { setOpen } = useModal();
58
+ const launcher = useConnectorLauncher();
59
+ const { address, isConnected } = useAccount();
60
+ const signingRef = useRef(false);
61
+
62
+ const sign = useCallback(async () => {
63
+ if (!siwe) throw new Error("useWalletLogin must be used inside a SIWEProvider");
64
+ if (signingRef.current) return;
65
+ signingRef.current = true;
66
+ try {
67
+ await siwe.signIn();
68
+ } finally {
69
+ signingRef.current = false;
70
+ }
71
+ }, [siwe]);
72
+
73
+ const login = useCallback(async () => {
74
+ if (isConnected) {
75
+ await sign();
76
+ return;
77
+ }
78
+ writeIntent(intentKey, String(Date.now()));
79
+ // No await above: a phone's preferred wallet opens from inside the tap.
80
+ if (launcher?.openPreferredConnector()) return;
81
+ setOpen(true);
82
+ }, [isConnected, sign, intentKey, setOpen, launcher]);
83
+
84
+ useEffect(() => {
85
+ if (!isConnected || !readIntent(intentKey, intentTtlMs)) return;
86
+ if (isMobileBrowser() && !hasUserActivation()) return;
87
+ setOpen(false);
88
+ void sign();
89
+ }, [isConnected, intentKey, intentTtlMs, setOpen, sign]);
90
+
91
+ useEffect(() => () => writeIntent(intentKey, null), [intentKey]);
92
+
93
+ return {
94
+ login,
95
+ status: siwe?.status ?? StatusState.ERROR,
96
+ isConnected,
97
+ address,
98
+ };
99
+ }
@@ -0,0 +1,291 @@
1
+ import { afterEach, describe, expect, it, vi } from "vitest";
2
+ import { createWalletMessage } from "../connectkit/connectors/createWalletMessage";
3
+ import { SOLANA_CHAIN_ID } from "../connectkit/connectors/syntheticChains";
4
+ import { createSiwsMessage } from "../siws/message";
5
+ import { buildWalletMessage } from "./buildWalletMessage";
6
+
7
+ const common = {
8
+ domain: "app.multiplatform.one",
9
+ uri: "https://app.multiplatform.one",
10
+ nonce: "ohY7vD2Kq9",
11
+ issuedAt: "2026-09-26T20:48:18.648Z",
12
+ };
13
+
14
+ describe("buildWalletMessage", () => {
15
+ it("eth: EIP-4361 with the EIP-55 address and no optional fields", () => {
16
+ expect(
17
+ buildWalletMessage("eth", {
18
+ ...common,
19
+ address: "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
20
+ chainId: 137,
21
+ }),
22
+ ).toBe(
23
+ "app.multiplatform.one wants you to sign in with your Ethereum account:\n" +
24
+ "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045\n" +
25
+ "\n" +
26
+ "Sign in With Ethereum.\n" +
27
+ "\n" +
28
+ "URI: https://app.multiplatform.one\n" +
29
+ "Version: 1\n" +
30
+ "Chain ID: 137\n" +
31
+ "Nonce: ohY7vD2Kq9\n" +
32
+ "Issued At: 2026-09-26T20:48:18.648Z",
33
+ );
34
+ });
35
+
36
+ it("eth: chain id defaults to 1 and the evm alias builds the same bytes", () => {
37
+ const opts = { ...common, address: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045" };
38
+ const message = buildWalletMessage("eth", opts);
39
+ expect(message).toContain("\nChain ID: 1\n");
40
+ expect(buildWalletMessage("evm", opts)).toBe(message);
41
+ });
42
+
43
+ it("sol: SIWS", () => {
44
+ expect(
45
+ buildWalletMessage("sol", {
46
+ ...common,
47
+ address: "Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS",
48
+ }),
49
+ ).toBe(
50
+ "app.multiplatform.one wants you to sign in with your Solana account:\n" +
51
+ "Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS\n" +
52
+ "\n" +
53
+ "Sign in With Solana.\n" +
54
+ "\n" +
55
+ "URI: https://app.multiplatform.one\n" +
56
+ "Version: 1\n" +
57
+ "Chain ID: solana:mainnet\n" +
58
+ "Nonce: ohY7vD2Kq9\n" +
59
+ "Issued At: 2026-09-26T20:48:18.648Z",
60
+ );
61
+ });
62
+
63
+ it("sui", () => {
64
+ expect(
65
+ buildWalletMessage("sui", {
66
+ ...common,
67
+ address: "0x7a1e0b5c2d3f4e5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a",
68
+ }),
69
+ ).toBe(
70
+ "app.multiplatform.one wants you to sign in with your Sui account:\n" +
71
+ "0x7a1e0b5c2d3f4e5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a\n" +
72
+ "\n" +
73
+ "Sign in With Sui.\n" +
74
+ "\n" +
75
+ "URI: https://app.multiplatform.one\n" +
76
+ "Version: 1\n" +
77
+ "Chain ID: sui:mainnet\n" +
78
+ "Nonce: ohY7vD2Kq9\n" +
79
+ "Issued At: 2026-09-26T20:48:18.648Z",
80
+ );
81
+ });
82
+
83
+ it("btc", () => {
84
+ expect(
85
+ buildWalletMessage("btc", {
86
+ ...common,
87
+ address: "bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq",
88
+ }),
89
+ ).toBe(
90
+ "app.multiplatform.one wants you to sign in with your Bitcoin account:\n" +
91
+ "bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq\n" +
92
+ "\n" +
93
+ "Sign in With Bitcoin.\n" +
94
+ "\n" +
95
+ "URI: https://app.multiplatform.one\n" +
96
+ "Version: 1\n" +
97
+ "Chain ID: bitcoin\n" +
98
+ "Nonce: ohY7vD2Kq9\n" +
99
+ "Issued At: 2026-09-26T20:48:18.648Z",
100
+ );
101
+ });
102
+
103
+ it("gpg: no address or chain line, the GpgProvider default envelope", () => {
104
+ expect(buildWalletMessage("gpg", common)).toBe(
105
+ "app.multiplatform.one wants you to sign in with your GPG key.\n" +
106
+ "\n" +
107
+ "URI: https://app.multiplatform.one\n" +
108
+ "Version: 1\n" +
109
+ "Nonce: ohY7vD2Kq9\n" +
110
+ "Issued At: 2026-09-26T20:48:18.648Z",
111
+ );
112
+ });
113
+
114
+ it("gpg: a statement sits between the header and the fields", () => {
115
+ expect(buildWalletMessage("gpg", { ...common, statement: "Hello." })).toBe(
116
+ "app.multiplatform.one wants you to sign in with your GPG key.\n" +
117
+ "\n" +
118
+ "Hello.\n" +
119
+ "\n" +
120
+ "URI: https://app.multiplatform.one\n" +
121
+ "Version: 1\n" +
122
+ "Nonce: ohY7vD2Kq9\n" +
123
+ "Issued At: 2026-09-26T20:48:18.648Z",
124
+ );
125
+ });
126
+
127
+ it("a null statement drops the statement lines", () => {
128
+ expect(
129
+ buildWalletMessage("sol", {
130
+ ...common,
131
+ address: "Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS",
132
+ statement: null,
133
+ }),
134
+ ).toBe(
135
+ "app.multiplatform.one wants you to sign in with your Solana account:\n" +
136
+ "Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS\n" +
137
+ "\n" +
138
+ "URI: https://app.multiplatform.one\n" +
139
+ "Version: 1\n" +
140
+ "Chain ID: solana:mainnet\n" +
141
+ "Nonce: ohY7vD2Kq9\n" +
142
+ "Issued At: 2026-09-26T20:48:18.648Z",
143
+ );
144
+ });
145
+
146
+ it.each([null, ""])("eth: a %j statement keeps EIP-4361's empty statement line", (statement) => {
147
+ expect(
148
+ buildWalletMessage("eth", {
149
+ ...common,
150
+ address: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
151
+ statement,
152
+ }),
153
+ ).toBe(
154
+ "app.multiplatform.one wants you to sign in with your Ethereum account:\n" +
155
+ "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045\n" +
156
+ "\n" +
157
+ "\n" +
158
+ "URI: https://app.multiplatform.one\n" +
159
+ "Version: 1\n" +
160
+ "Chain ID: 1\n" +
161
+ "Nonce: ohY7vD2Kq9\n" +
162
+ "Issued At: 2026-09-26T20:48:18.648Z",
163
+ );
164
+ });
165
+
166
+ it.each([
167
+ ["statement", { statement: "Sign in.\nURI: https://evil.example" }],
168
+ ["statement", { statement: "Sign in.\r" }],
169
+ ["uri", { uri: "https://app.multiplatform.one\nNonce: forged" }],
170
+ ["domain", { domain: "app.multiplatform.one\nevil.example" }],
171
+ ])("refuses a %s with a line break", (field, override) => {
172
+ for (const family of ["eth", "sol", "gpg"] as const) {
173
+ expect(() =>
174
+ buildWalletMessage(family, {
175
+ ...common,
176
+ address: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
177
+ ...override,
178
+ }),
179
+ ).toThrow(`${field} must be a single line`);
180
+ }
181
+ });
182
+
183
+ it("a numeric chain id on a non-EVM family is a connector's synthetic id and is ignored", () => {
184
+ const message = buildWalletMessage("sol", {
185
+ ...common,
186
+ address: "Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS",
187
+ chainId: SOLANA_CHAIN_ID,
188
+ });
189
+ expect(message).toContain("\nChain ID: solana:mainnet\n");
190
+ expect(
191
+ buildWalletMessage("sol", {
192
+ ...common,
193
+ address: "Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS",
194
+ chainId: "solana:devnet",
195
+ }),
196
+ ).toContain("\nChain ID: solana:devnet\n");
197
+ });
198
+
199
+ describe("page defaults", () => {
200
+ afterEach(() => {
201
+ vi.unstubAllGlobals();
202
+ vi.useRealTimers();
203
+ });
204
+
205
+ it("takes domain and uri from the page", () => {
206
+ vi.stubGlobal("location", { host: "login.example.com", origin: "https://login.example.com" });
207
+ const message = buildWalletMessage("gpg", { nonce: "n", issuedAt: common.issuedAt });
208
+ expect(message.split("\n")[0]).toBe(
209
+ "login.example.com wants you to sign in with your GPG key.",
210
+ );
211
+ expect(message).toContain("\nURI: https://login.example.com\n");
212
+ });
213
+
214
+ it("an explicit domain wins, and a page with no origin (file://) falls back to https://<domain>", () => {
215
+ vi.stubGlobal("location", { host: "", origin: "null" });
216
+ const message = buildWalletMessage("gpg", {
217
+ nonce: "n",
218
+ domain: "wallet.example.com",
219
+ issuedAt: common.issuedAt,
220
+ });
221
+ expect(message.split("\n")[0]).toBe(
222
+ "wallet.example.com wants you to sign in with your GPG key.",
223
+ );
224
+ expect(message).toContain("\nURI: https://wallet.example.com\n");
225
+ });
226
+
227
+ it("refuses to build without a domain", () => {
228
+ vi.stubGlobal("location", { host: "", origin: "null" });
229
+ expect(() => buildWalletMessage("gpg", { nonce: "n" })).toThrow(/no domain/);
230
+ });
231
+
232
+ it("issuedAt defaults to now", () => {
233
+ vi.useFakeTimers();
234
+ vi.setSystemTime(new Date("2026-01-02T03:04:05.006Z"));
235
+ expect(buildWalletMessage("gpg", { ...common, issuedAt: undefined })).toMatch(
236
+ /\nIssued At: 2026-01-02T03:04:05\.006Z$/,
237
+ );
238
+ });
239
+ });
240
+
241
+ it("requires an address for wallet families", () => {
242
+ expect(() => buildWalletMessage("eth", common)).toThrow(/needs an address/);
243
+ });
244
+ });
245
+
246
+ describe("builders that delegate to buildWalletMessage", () => {
247
+ it("createWalletMessage picks the family from the connector's chain id", () => {
248
+ vi.useFakeTimers();
249
+ vi.setSystemTime(new Date(common.issuedAt));
250
+ const sol = createWalletMessage({
251
+ ...common,
252
+ address: "Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS",
253
+ chainId: SOLANA_CHAIN_ID,
254
+ });
255
+ expect(sol).toBe(
256
+ buildWalletMessage("sol", {
257
+ ...common,
258
+ address: "Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS",
259
+ }),
260
+ );
261
+ const eth = createWalletMessage({
262
+ ...common,
263
+ address: "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
264
+ chainId: 10,
265
+ });
266
+ expect(eth).toBe(
267
+ buildWalletMessage("eth", {
268
+ ...common,
269
+ address: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
270
+ chainId: 10,
271
+ }),
272
+ );
273
+ vi.useRealTimers();
274
+ });
275
+
276
+ it("createSiwsMessage keeps its output (statement optional)", () => {
277
+ const params = {
278
+ domain: common.domain,
279
+ uri: common.uri,
280
+ nonce: common.nonce,
281
+ issuedAt: common.issuedAt,
282
+ address: "Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS",
283
+ };
284
+ expect(createSiwsMessage({ ...params, statement: "Sign in With Solana." })).toBe(
285
+ buildWalletMessage("sol", params),
286
+ );
287
+ expect(createSiwsMessage(params)).toBe(
288
+ buildWalletMessage("sol", { ...params, statement: null }),
289
+ );
290
+ });
291
+ });
@@ -0,0 +1,150 @@
1
+ import { getAddress } from "viem";
2
+
3
+ /**
4
+ * The signer families a wallet sign-in message can be built for. The Keycloak
5
+ * SPIs (SHC `siww`, mpo `wallet`) content-sniff exactly these headers.
6
+ */
7
+ export type WalletMessageFamily = "eth" | "sol" | "sui" | "btc" | "gpg";
8
+
9
+ /** Ecosystem names the connectors use; accepted as aliases of the short family. */
10
+ export type WalletMessageEcosystem = "evm" | "solana" | "sui" | "bitcoin";
11
+
12
+ export type SignerFamily = WalletMessageFamily | WalletMessageEcosystem;
13
+
14
+ export interface WalletMessageOptions {
15
+ nonce: string;
16
+ /** Signer address. Required for every family except `gpg`, whose identity comes from the key. */
17
+ address?: string;
18
+ /**
19
+ * Host the user signs in to, checked against the realm's frontend host and
20
+ * `siww.allowedDomains` / `wallet.allowedDomains`. Defaults to
21
+ * `window.location.host`; pass it explicitly from a WebView or native page,
22
+ * where that host is empty or not the one the realm allows.
23
+ */
24
+ domain?: string;
25
+ /** Defaults to `window.location.origin`, or `https://<domain>` when the page has no origin. */
26
+ uri?: string;
27
+ /**
28
+ * Defaults to the family's statement; `null` or `""` omits it. `eth` then
29
+ * keeps the empty line EIP-4361 puts in its place.
30
+ */
31
+ statement?: string | null;
32
+ /** Defaults to now. */
33
+ issuedAt?: string;
34
+ /**
35
+ * `eth`: the chain id (default 1). Other families keep their fixed `Chain ID:`
36
+ * value (`solana:mainnet`, ...) unless given a string; a number there is a
37
+ * connector's synthetic chain id and is ignored.
38
+ */
39
+ chainId?: number | string;
40
+ version?: string;
41
+ }
42
+
43
+ interface FamilySpec {
44
+ header: string;
45
+ statement: string | null;
46
+ chainId: string | null;
47
+ normalize?: (address: string) => string;
48
+ }
49
+
50
+ const specs: Record<WalletMessageFamily, FamilySpec> = {
51
+ eth: {
52
+ header: "wants you to sign in with your Ethereum account:",
53
+ statement: "Sign in With Ethereum.",
54
+ chainId: "1",
55
+ normalize: (address) => getAddress(address),
56
+ },
57
+ sol: {
58
+ header: "wants you to sign in with your Solana account:",
59
+ statement: "Sign in With Solana.",
60
+ chainId: "solana:mainnet",
61
+ },
62
+ sui: {
63
+ header: "wants you to sign in with your Sui account:",
64
+ statement: "Sign in With Sui.",
65
+ chainId: "sui:mainnet",
66
+ },
67
+ btc: {
68
+ header: "wants you to sign in with your Bitcoin account:",
69
+ statement: "Sign in With Bitcoin.",
70
+ chainId: "bitcoin",
71
+ },
72
+ gpg: {
73
+ header: "wants you to sign in with your GPG key.",
74
+ statement: null,
75
+ chainId: null,
76
+ },
77
+ };
78
+
79
+ const aliases: Record<SignerFamily, WalletMessageFamily> = {
80
+ eth: "eth",
81
+ sol: "sol",
82
+ sui: "sui",
83
+ btc: "btc",
84
+ gpg: "gpg",
85
+ evm: "eth",
86
+ solana: "sol",
87
+ bitcoin: "btc",
88
+ };
89
+
90
+ /** Map an ecosystem name (`evm`, `solana`, `bitcoin`) or a short family to the short family. */
91
+ export function toWalletMessageFamily(family: SignerFamily): WalletMessageFamily {
92
+ const resolved = aliases[family];
93
+ if (!resolved) throw new Error(`unknown wallet message family: ${String(family)}`);
94
+ return resolved;
95
+ }
96
+
97
+ function singleLine(field: string, value: string | null | undefined) {
98
+ if (value && /[\r\n]/.test(value)) {
99
+ throw new Error(`buildWalletMessage: ${field} must be a single line`);
100
+ }
101
+ }
102
+
103
+ function pageLocation(): { host: string; origin: string } {
104
+ const location = (globalThis as { location?: { host?: string; origin?: string } }).location;
105
+ return { host: location?.host ?? "", origin: location?.origin ?? "" };
106
+ }
107
+
108
+ /**
109
+ * Build the sign-in message for one signer family. This is the only builder in
110
+ * mpo web3: EIP-4361 for `eth` (EIP-55 address, no optional fields), SIWS for
111
+ * `sol`, and the same envelope for `sui`, `btc` and `gpg`, in the exact bytes
112
+ * the Keycloak verifiers parse.
113
+ */
114
+ export function buildWalletMessage(family: SignerFamily, opts: WalletMessageOptions): string {
115
+ const key = toWalletMessageFamily(family);
116
+ const spec = specs[key];
117
+ const page = pageLocation();
118
+ const domain = opts.domain ?? page.host;
119
+ if (!domain) {
120
+ throw new Error(
121
+ "buildWalletMessage: no domain. Pass opts.domain; a file:// or native page has no host.",
122
+ );
123
+ }
124
+ const pageOrigin = page.origin && page.origin !== "null" ? page.origin : "";
125
+ const uri = opts.uri ?? (pageOrigin || `https://${domain}`);
126
+ const statement = opts.statement === undefined ? spec.statement : opts.statement;
127
+ singleLine("domain", domain);
128
+ singleLine("uri", uri);
129
+ singleLine("statement", statement);
130
+ const lines = [`${domain} ${spec.header}`];
131
+ if (key !== "gpg") {
132
+ if (!opts.address) throw new Error(`buildWalletMessage: ${key} needs an address`);
133
+ lines.push(spec.normalize ? spec.normalize(opts.address) : opts.address);
134
+ }
135
+ lines.push("");
136
+ if (statement) lines.push(statement, "");
137
+ else if (key === "eth") lines.push("");
138
+ lines.push(`URI: ${uri}`, `Version: ${opts.version ?? "1"}`);
139
+ if (spec.chainId !== null) {
140
+ const chainId =
141
+ key === "eth"
142
+ ? (opts.chainId ?? spec.chainId)
143
+ : typeof opts.chainId === "string"
144
+ ? opts.chainId
145
+ : spec.chainId;
146
+ lines.push(`Chain ID: ${chainId}`);
147
+ }
148
+ lines.push(`Nonce: ${opts.nonce}`, `Issued At: ${opts.issuedAt ?? new Date().toISOString()}`);
149
+ return lines.join("\n");
150
+ }
@@ -0,0 +1,8 @@
1
+ export {
2
+ buildWalletMessage,
3
+ toWalletMessageFamily,
4
+ type SignerFamily,
5
+ type WalletMessageEcosystem,
6
+ type WalletMessageFamily,
7
+ type WalletMessageOptions,
8
+ } from "./buildWalletMessage";
@@ -1,5 +1,5 @@
1
1
  import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
2
- import { ConnectKitProvider, getDefaultConfig } from "../connectkit";
2
+ import { ConnectKitProvider, SIWEProvider, type SIWEConfig, getDefaultConfig } from "../connectkit";
3
3
  import { isWeb } from "@multiplatform.one/platform";
4
4
  import type { PropsWithChildren } from "react";
5
5
  import { useMemo } from "react";
@@ -11,6 +11,12 @@ import { type Web3Config, Web3ConfigContext, resolveChains } from "./walletConfi
11
11
  export interface WalletProviderProps extends PropsWithChildren {
12
12
  config: Web3Config;
13
13
  queryClient?: QueryClient;
14
+ /**
15
+ * Mounts a SIWEProvider around the ConnectKit modal, e.g.
16
+ * `kc.siweConfig(grant.onSign)` for `useDirectLogin`. It has to sit outside
17
+ * ConnectKitProvider, so a child cannot add its own.
18
+ */
19
+ siwe?: SIWEConfig;
14
20
  }
15
21
 
16
22
  const defaultQueryClient = new QueryClient();
@@ -26,6 +32,7 @@ export function WalletProvider({
26
32
  children,
27
33
  config: web3Config,
28
34
  queryClient = defaultQueryClient,
35
+ siwe,
29
36
  }: WalletProviderProps) {
30
37
  const {
31
38
  walletConnectProjectId,
@@ -88,7 +95,13 @@ export function WalletProvider({
88
95
  <Web3ConfigContext.Provider value={web3Config}>
89
96
  <WagmiProvider config={wagmiConfig}>
90
97
  <QueryClientProvider client={queryClient}>
91
- <ConnectKitProvider>{children}</ConnectKitProvider>
98
+ {siwe ? (
99
+ <SIWEProvider {...siwe}>
100
+ <ConnectKitProvider>{children}</ConnectKitProvider>
101
+ </SIWEProvider>
102
+ ) : (
103
+ <ConnectKitProvider>{children}</ConnectKitProvider>
104
+ )}
92
105
  </QueryClientProvider>
93
106
  </WagmiProvider>
94
107
  </Web3ConfigContext.Provider>
@@ -1,3 +1,5 @@
1
+ import { buildWalletMessage } from "../message";
2
+
1
3
  export interface SiwsMessageParams {
2
4
  /** Authority requesting the sign-in, e.g. `app.example.com`. */
3
5
  domain: string;
@@ -21,26 +23,5 @@ export interface SiwsMessageParams {
21
23
  * signature against, so the server must rebuild this from the same params.
22
24
  */
23
25
  export function createSiwsMessage(params: SiwsMessageParams): string {
24
- const {
25
- domain,
26
- address,
27
- statement,
28
- uri,
29
- version = "1",
30
- chainId = "solana:mainnet",
31
- nonce,
32
- issuedAt,
33
- } = params;
34
- const lines = [`${domain} wants you to sign in with your Solana account:`, address, ""];
35
- if (statement) {
36
- lines.push(statement, "");
37
- }
38
- lines.push(
39
- `URI: ${uri}`,
40
- `Version: ${version}`,
41
- `Chain ID: ${chainId}`,
42
- `Nonce: ${nonce}`,
43
- `Issued At: ${issuedAt}`,
44
- );
45
- return lines.join("\n");
26
+ return buildWalletMessage("sol", { ...params, statement: params.statement ?? null });
46
27
  }
package/src/solana.ts CHANGED
@@ -16,6 +16,7 @@ export {
16
16
  type SolanaClient,
17
17
  type SolanaClientConfig,
18
18
  type SolanaCluster,
19
+ type SolanaCommitmentStatus,
19
20
  type SolanaConfirmationFailure,
20
21
  type SolanaConfirmOptions,
21
22
  type SolanaSigner,