@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
@@ -15,6 +15,7 @@ import {
15
15
  type Hex,
16
16
  type PublicClient,
17
17
  type SendTransactionParameters,
18
+ type Transaction,
18
19
  type TransactionReceipt,
19
20
  type Transport,
20
21
  type WalletClient,
@@ -39,6 +40,213 @@ export type EvmWriteContractParameters<
39
40
 
40
41
  export type EvmSendTransactionParameters = SendTransactionParameters<Chain, Account>;
41
42
 
43
+ export interface EvmWaitOptions {
44
+ /**
45
+ * Milliseconds before giving up with ReceiptPendingError, even with an RPC
46
+ * call still unanswered. None by default, or when it is not a positive
47
+ * finite number: the wait lasts until the transaction is mined or its
48
+ * nonce goes to another transaction, because one still in the mempool can
49
+ * land any time. RPC errors alone never end a wait without one; it backs
50
+ * off and retries.
51
+ */
52
+ timeout?: number;
53
+ /**
54
+ * Stops the wait: it rejects with ReceiptWaitAbortedError, which
55
+ * classifyTxError calls `aborted`. A wait with no timeout polls until the
56
+ * transaction settles, forever for one that was dropped, so a component
57
+ * must abort its wait when it unmounts.
58
+ */
59
+ signal?: AbortSignal;
60
+ /** Blocks on top of the one that mined it, 1 by default. */
61
+ confirmations?: number;
62
+ /**
63
+ * The transaction's nonce, as `onTrack` gave it. A wait resumed after a
64
+ * reload needs it to see that another transaction took the nonce once the
65
+ * node has forgotten the original.
66
+ */
67
+ nonce?: number;
68
+ /**
69
+ * Called with what to persist and resume on: once the nonce is known, and
70
+ * with the new hash when a speed-up replaces the one being waited on.
71
+ * Errors it throws are ignored.
72
+ */
73
+ onTrack?: (tracked: { hash: Hash; nonce: number }) => void;
74
+ }
75
+
76
+ /**
77
+ * The receipt never arrived before the wait's timeout, whether the chain was
78
+ * slow or the RPC was failing (`cause` holds its last error). The transaction
79
+ * was sent and may still land, so resending it can pay twice. Show it as
80
+ * pending (`explorerUrl` when the chain has an explorer) and keep waiting on
81
+ * `hash` instead of offering a retry.
82
+ */
83
+ export class ReceiptPendingError extends Error {
84
+ readonly mayStillLand = true as const;
85
+ readonly explorerUrl: string | undefined;
86
+ /** Known once the node has seen the transaction. Keep it with the hash to resume the wait. */
87
+ readonly nonce: number | undefined;
88
+ constructor(
89
+ readonly hash: Hash,
90
+ readonly chainId: number,
91
+ options: {
92
+ detail: string;
93
+ explorerUrl?: string;
94
+ nonce?: number;
95
+ cause?: unknown;
96
+ label?: string;
97
+ },
98
+ ) {
99
+ super(
100
+ `${options.label ?? "transaction"} ${hash} on chain ${chainId} ${options.detail}; it may still land, so do not resend it`,
101
+ { cause: options.cause },
102
+ );
103
+ this.name = "ReceiptPendingError";
104
+ this.explorerUrl = options.explorerUrl;
105
+ this.nonce = options.nonce;
106
+ }
107
+ }
108
+
109
+ /**
110
+ * The wait's signal aborted. Named AbortError like fetch's. The transaction
111
+ * is as pending as it was, so keep `hash` and `nonce` to resume the wait.
112
+ */
113
+ export class ReceiptWaitAbortedError extends Error {
114
+ readonly mayStillLand = true as const;
115
+ constructor(
116
+ readonly hash: Hash,
117
+ readonly chainId: number,
118
+ readonly nonce: number | undefined,
119
+ cause: unknown,
120
+ ) {
121
+ super(`stopped waiting for transaction ${hash} on chain ${chainId}`, { cause });
122
+ this.name = "AbortError";
123
+ }
124
+ }
125
+
126
+ /** Mined and reverted: it spent gas and moved nothing. A retry is a new transaction. */
127
+ export class TransactionRevertedError extends Error {
128
+ readonly mayStillLand = false as const;
129
+ readonly hash: Hash;
130
+ constructor(
131
+ readonly receipt: TransactionReceipt,
132
+ readonly chainId: number,
133
+ label = "transaction",
134
+ ) {
135
+ super(`${label} ${receipt.transactionHash} reverted in block ${receipt.blockNumber}`);
136
+ this.name = "TransactionRevertedError";
137
+ this.hash = receipt.transactionHash;
138
+ }
139
+ }
140
+
141
+ /**
142
+ * Sorted as viem's waitForTransactionReceipt sorts a replacement, except
143
+ * that a repriced copy (same `to`, `value` and `input`) is a speed-up and
144
+ * resolves the wait instead:
145
+ * - `cancelled`: a wallet's cancel, a 0-value send to self. Nothing was paid.
146
+ * - `replaced`: a different transaction. This one was not paid.
147
+ * - `unmatched`: the original was never seen, so the transaction that took
148
+ * its nonce could not be compared with it. It may be the same payment sped
149
+ * up, so this classifies as pending.
150
+ */
151
+ export type EvmReplacementReason = "cancelled" | "replaced" | "unmatched";
152
+
153
+ /**
154
+ * Another transaction took this one's nonce, so this one can never land. A
155
+ * speed-up is not this: the wait resolves with the faster copy's receipt.
156
+ */
157
+ export class TransactionReplacedError extends Error {
158
+ readonly mayStillLand = false as const;
159
+ constructor(
160
+ readonly hash: Hash,
161
+ readonly chainId: number,
162
+ readonly reason: EvmReplacementReason,
163
+ /** The transaction that took the nonce, when it was found. */
164
+ readonly replacement: TransactionReceipt | undefined,
165
+ ) {
166
+ super(
167
+ `transaction ${hash} was ${reason === "unmatched" ? "superseded" : reason}${
168
+ replacement ? ` by ${replacement.transactionHash}` : ""
169
+ }: another transaction took its nonce`,
170
+ );
171
+ this.name = "TransactionReplacedError";
172
+ }
173
+ }
174
+
175
+ /**
176
+ * What an app shows for a failed send or confirmation:
177
+ * - `user-rejected`: declined or cancelled in the wallet. Nothing was paid.
178
+ * - `reverted`: the contract refused it, in simulation (nothing sent) or on
179
+ * chain (gas spent). Nothing was bought.
180
+ * - `pending`: sent, with no receipt yet, or superseded by a transaction
181
+ * that may be the same payment sped up. Show it as pending and never
182
+ * resend it.
183
+ * - `aborted`: the app stopped waiting through the wait's `signal`. The
184
+ * transaction is as pending as it was; nothing to show on an unmounted
185
+ * screen.
186
+ * - `failed`: anything else. No hash came back and nothing says the wallet
187
+ * sent it, or a different transaction took its nonce.
188
+ */
189
+ export type TxErrorKind = "user-rejected" | "reverted" | "pending" | "aborted" | "failed";
190
+
191
+ interface ErrorLike {
192
+ name?: unknown;
193
+ code?: unknown;
194
+ cause?: unknown;
195
+ mayStillLand?: unknown;
196
+ reason?: unknown;
197
+ receipt?: { status?: unknown };
198
+ }
199
+
200
+ /** The error and its `cause` chain. Matches by name, so a second copy of viem still classifies. */
201
+ function causes(error: unknown): ErrorLike[] {
202
+ const chain: ErrorLike[] = [];
203
+ for (let e = error; e && typeof e === "object" && chain.length < 16; e = (e as ErrorLike).cause) {
204
+ if (chain.includes(e as ErrorLike)) break;
205
+ chain.push(e as ErrorLike);
206
+ }
207
+ return chain;
208
+ }
209
+
210
+ /** Sorts any error from sending or confirming an EVM transaction into a TxErrorKind. */
211
+ export function classifyTxError(error: unknown): TxErrorKind {
212
+ const chain = causes(error);
213
+ const pendingAt = chain.findIndex(
214
+ (e) =>
215
+ e.mayStillLand === true ||
216
+ e.name === "WaitForTransactionReceiptTimeoutError" ||
217
+ (e.name === "TransactionReplacedError" && e.reason === "unmatched"),
218
+ );
219
+ // Only this module's aborts, which carry mayStillLand, count. A wallet
220
+ // SDK's own AbortError is a failed send, and one under a pending error,
221
+ // such as a fetch timeout in a ReceiptPendingError's cause, is pending.
222
+ const abortedAt = chain.findIndex(
223
+ (e) => e.name === "AbortError" && typeof e.mayStillLand === "boolean",
224
+ );
225
+ if (abortedAt >= 0 && (pendingAt < 0 || abortedAt <= pendingAt)) return "aborted";
226
+ if (pendingAt >= 0) return "pending";
227
+ if (
228
+ chain.some(
229
+ (e) =>
230
+ e.name === "UserRejectedRequestError" ||
231
+ e.code === 4001 ||
232
+ (e.name === "TransactionReplacedError" && e.reason === "cancelled"),
233
+ )
234
+ ) {
235
+ return "user-rejected";
236
+ }
237
+ if (
238
+ chain.some(
239
+ (e) =>
240
+ e.name === "ContractFunctionRevertedError" ||
241
+ e.name === "ExecutionRevertedError" ||
242
+ e.receipt?.status === "reverted",
243
+ )
244
+ ) {
245
+ return "reverted";
246
+ }
247
+ return "failed";
248
+ }
249
+
42
250
  export interface Erc20Actions {
43
251
  balanceOf(token: Address, owner?: Address): Promise<bigint>;
44
252
  allowance(token: Address, spender: Address, owner?: Address): Promise<bigint>;
@@ -52,9 +260,20 @@ export interface Erc20Actions {
52
260
  * approval to be mined so a purchase call right after it sees the allowance.
53
261
  * A non-zero allowance is reset to 0 first, since USDT refuses to move one
54
262
  * non-zero allowance to another. Returns the final approval hash, or null
55
- * when the allowance already covered it. Throws if an approval reverts.
263
+ * when the allowance already covered it. Each approval is confirmed like
264
+ * confirmTransaction: no timeout unless `timeout` is set, stopped by
265
+ * `signal`, and a TransactionRevertedError, ReceiptPendingError,
266
+ * TransactionReplacedError or ReceiptWaitAbortedError when it does not
267
+ * succeed. A signal aborted before an approval is sent rejects with an
268
+ * AbortError carrying `mayStillLand: false`, and nothing is sent.
56
269
  */
57
- ensureAllowance(args: { token: Address; spender: Address; amount: bigint }): Promise<Hash | null>;
270
+ ensureAllowance(args: {
271
+ token: Address;
272
+ spender: Address;
273
+ amount: bigint;
274
+ timeout?: number;
275
+ signal?: AbortSignal;
276
+ }): Promise<Hash | null>;
58
277
  }
59
278
 
60
279
  export interface EvmClient extends ChainClient<"evm"> {
@@ -75,7 +294,23 @@ export interface EvmClient extends ChainClient<"evm"> {
75
294
  >(
76
295
  parameters: EvmWriteContractParameters<abi, functionName, args>,
77
296
  ): Promise<Hash>;
78
- waitForTransactionReceipt(hash: Hash): Promise<TransactionReceipt>;
297
+ /**
298
+ * Resolves with the receipt, reverted or not, or a speed-up's receipt.
299
+ * Waits with no timeout unless `timeout` is set, backing off while the RPC
300
+ * fails. Rejects with ReceiptPendingError when the timeout runs out, since
301
+ * the transaction may still land, with TransactionReplacedError when
302
+ * another transaction took its nonce, and with ReceiptWaitAbortedError when
303
+ * `signal` aborts.
304
+ */
305
+ waitForTransactionReceipt(hash: Hash, options?: EvmWaitOptions): Promise<TransactionReceipt>;
306
+ /**
307
+ * waitForTransactionReceipt that also rejects a reverted receipt with
308
+ * TransactionRevertedError, so one catch and classifyTxError cover every
309
+ * outcome.
310
+ */
311
+ confirmTransaction(hash: Hash, options?: EvmWaitOptions): Promise<TransactionReceipt>;
312
+ /** The chain explorer's page for `hash`, when the chain names an explorer. */
313
+ explorerTxUrl(hash: Hash): string | undefined;
79
314
  readonly erc20: Erc20Actions;
80
315
  }
81
316
 
@@ -165,10 +400,261 @@ export function evmClient(config: EvmClientConfig): EvmClient {
165
400
  return walletClient.writeContract({ ...request, account, chain } as EvmWriteContractParameters);
166
401
  };
167
402
 
168
- const approveAndWait = async (token: Address, spender: Address, amount: bigint) => {
403
+ const explorer = chain.blockExplorers?.default.url.replace(/\/+$/, "");
404
+ const explorerTxUrl = (hash: Hash) => (explorer ? `${explorer}/tx/${hash}` : undefined);
405
+
406
+ const missing = (name: string) => (error: unknown) => {
407
+ if ((error as { name?: string } | undefined)?.name === name) return undefined;
408
+ throw error;
409
+ };
410
+ const getReceipt = (hash: Hash) =>
411
+ publicClient.getTransactionReceipt({ hash }).catch(missing("TransactionReceiptNotFoundError"));
412
+ const getTransaction = (hash: Hash) =>
413
+ publicClient.getTransaction({ hash }).catch(missing("TransactionNotFoundError"));
414
+ const sameAddress = (a?: string | null, b?: string | null) =>
415
+ !!a && !!b && a.toLowerCase() === b.toLowerCase();
416
+
417
+ /**
418
+ * The block that mined a nonce: the first whose `count` of sent
419
+ * transactions is past it. `taken` is a block where the nonce is gone,
420
+ * `free` one where it was not (none after a reload, so it gallops back from
421
+ * `taken` to find one). A binary search between them costs a few dozen
422
+ * calls however far back the nonce went, and needs the RPC to serve state
423
+ * that old.
424
+ */
425
+ const nonceBlock = async (
426
+ count: (blockNumber: bigint) => Promise<number>,
427
+ nonce: number,
428
+ taken: bigint,
429
+ free?: bigint,
430
+ ) => {
431
+ let hi = taken;
432
+ let lo = -1n;
433
+ if (free !== undefined && free < hi) lo = free;
434
+ else {
435
+ for (let step = 1n; hi - step >= 0n; step *= 2n) {
436
+ const probe = hi - step;
437
+ if ((await count(probe)) <= nonce) {
438
+ lo = probe;
439
+ break;
440
+ }
441
+ hi = probe;
442
+ }
443
+ }
444
+ while (hi - lo > 1n) {
445
+ const mid = (lo + hi) / 2n;
446
+ if ((await count(mid)) > nonce) hi = mid;
447
+ else lo = mid;
448
+ }
449
+ return { block: hi, free: lo >= 0n ? lo : undefined };
450
+ };
451
+
452
+ const replacementReason = (taker: Transaction, original?: Transaction) => {
453
+ if (
454
+ original &&
455
+ sameAddress(taker.to, original.to) &&
456
+ taker.value === original.value &&
457
+ taker.input === original.input
458
+ ) {
459
+ return "repriced" as const;
460
+ }
461
+ if (sameAddress(taker.to, taker.from) && taker.value === 0n) return "cancelled" as const;
462
+ return original ? ("replaced" as const) : ("unmatched" as const);
463
+ };
464
+
465
+ /**
466
+ * setTimeout for any delay, returning its cancel. Browsers and Node fire a
467
+ * delay past 2^31 - 1 ms at once, so a long one is re-armed in steps.
468
+ */
469
+ const after = (ms: number, fire: () => void) => {
470
+ const step = 2 ** 31 - 1;
471
+ let cancel = () => {};
472
+ const arm = (left: number) => {
473
+ const id = setTimeout(() => (left > step ? arm(left - step) : fire()), Math.min(left, step));
474
+ cancel = () => clearTimeout(id);
475
+ };
476
+ arm(Math.max(0, ms));
477
+ return () => cancel();
478
+ };
479
+
480
+ /** Up to 30 s from the polling interval, doubling per failure, jittered down to half. */
481
+ const backoff = (failures: number) => {
482
+ const ceiling = Math.min(
483
+ 30_000,
484
+ Math.max(1, publicClient.pollingInterval) * 2 ** Math.min(failures - 1, 16),
485
+ );
486
+ return ceiling / 2 + (Math.random() * ceiling) / 2;
487
+ };
488
+
489
+ // A poll loop of our own rather than viem's waitForTransactionReceipt: viem
490
+ // shares one poller per client and hash, and a waiter with no timeout can be
491
+ // left listening to a poller another waiter stopped. It also only notices a
492
+ // replacement it saw happen, so a wait resumed after a reload never ends.
493
+ const waitForReceipt = async (hash: Hash, options: EvmWaitOptions = {}, label?: string) => {
494
+ const { signal } = options;
495
+ const confirmations = BigInt(Math.max(1, options.confirmations ?? 1));
496
+ const { timeout } = options;
497
+ const deadline =
498
+ timeout !== undefined && Number.isFinite(timeout) && timeout > 0
499
+ ? Date.now() + timeout
500
+ : undefined;
501
+ let target = hash;
502
+ let original: Transaction | undefined;
503
+ let nonce = options.nonce;
504
+ let freeBlock: bigint | undefined;
505
+ let failures = 0;
506
+ let lastError: unknown;
507
+
508
+ const aborted = () => new ReceiptWaitAbortedError(hash, chain.id, nonce, signal?.reason);
509
+ const timedOut = () =>
510
+ new ReceiptPendingError(hash, chain.id, {
511
+ detail: `has no receipt after ${timeout} ms`,
512
+ explorerUrl: explorerTxUrl(hash),
513
+ nonce,
514
+ cause: lastError,
515
+ label,
516
+ });
517
+ let ended = false;
518
+ // A poll left running after an abort or the deadline must not hand the
519
+ // app a hash it has since replaced with a new purchase's.
520
+ const track = () => {
521
+ if (ended || signal?.aborted || nonce === undefined) return;
522
+ try {
523
+ options.onTrack?.({ hash: target, nonce });
524
+ } catch {
525
+ // the app's bookkeeping, not the wait's
526
+ }
527
+ };
528
+ if (signal?.aborted) throw aborted();
529
+ /**
530
+ * Settles with `promise`, or rejects at the abort or the deadline without
531
+ * waiting for it, calling `onStop` then. The listener and the timer go
532
+ * whichever way it settles, so a wait that polls for days holds nothing
533
+ * per poll.
534
+ */
535
+ const guard = <T>(promise: Promise<T>, onStop = () => {}) =>
536
+ new Promise<T>((resolve, reject) => {
537
+ let cancelTimer = () => {};
538
+ const cleanup = () => {
539
+ cancelTimer();
540
+ signal?.removeEventListener("abort", stop);
541
+ };
542
+ const give = (error: Error) => {
543
+ cleanup();
544
+ onStop();
545
+ reject(error);
546
+ };
547
+ const stop = () => give(aborted());
548
+ promise.then(resolve, reject).finally(cleanup);
549
+ if (signal?.aborted) return stop();
550
+ signal?.addEventListener("abort", stop, { once: true });
551
+ if (deadline !== undefined)
552
+ cancelTimer = after(deadline - Date.now(), () => give(timedOut()));
553
+ });
554
+ /** Every RPC call goes through here, so a poll left in flight starts no more. */
555
+ const rpc = <T>(call: () => Promise<T>) => {
556
+ if (ended || signal?.aborted) throw aborted();
557
+ return call();
558
+ };
559
+ const countAt = (address: Address, blockNumber: bigint) =>
560
+ rpc(() => publicClient.getTransactionCount({ address, blockNumber }));
561
+
562
+ /** One look at the chain: the receipt once it has its confirmations, else undefined. */
563
+ const poll = async (): Promise<TransactionReceipt | undefined> => {
564
+ const head = await rpc(() => publicClient.getBlockNumber({ cacheTime: 0 }));
565
+ const receipt = await rpc(() => getReceipt(target));
566
+ if (receipt) return head - receipt.blockNumber + 1n >= confirmations ? receipt : undefined;
567
+ if (!original) {
568
+ original = await rpc(() => getTransaction(target));
569
+ if (original && original.nonce !== nonce) {
570
+ nonce = original.nonce;
571
+ track();
572
+ }
573
+ }
574
+ if (nonce === undefined) return undefined;
575
+ const from = original?.from ?? account.address;
576
+ if ((await countAt(from, head)) <= nonce) {
577
+ freeBlock = head;
578
+ return undefined;
579
+ }
580
+ const found = await nonceBlock((n) => countAt(from, n), nonce, head, freeBlock);
581
+ freeBlock = found.free;
582
+ const block = await rpc(() =>
583
+ publicClient.getBlock({ blockNumber: found.block, includeTransactions: true }),
584
+ );
585
+ const taker = block.transactions.find(
586
+ (tx) => sameAddress(tx.from, from) && tx.nonce === nonce,
587
+ );
588
+ // Not there after a reorg, or it is this transaction, mined since the
589
+ // receipt lookup: either way the next poll sees the truth.
590
+ if (!taker || taker.hash === target) {
591
+ if (!taker) freeBlock = undefined;
592
+ return undefined;
593
+ }
594
+ const reason = replacementReason(taker, original);
595
+ if (reason === "repriced") {
596
+ target = taker.hash;
597
+ original = taker;
598
+ track();
599
+ return undefined;
600
+ }
601
+ if (head - found.block + 1n < confirmations) return undefined;
602
+ const replacement = await rpc(() => getReceipt(taker.hash));
603
+ throw new TransactionReplacedError(hash, chain.id, reason, replacement);
604
+ };
605
+
606
+ try {
607
+ for (;;) {
608
+ try {
609
+ const receipt = await guard(poll());
610
+ if (receipt) return receipt;
611
+ failures = 0;
612
+ } catch (error) {
613
+ if (
614
+ error instanceof TransactionReplacedError ||
615
+ error instanceof ReceiptWaitAbortedError ||
616
+ error instanceof ReceiptPendingError
617
+ ) {
618
+ throw error;
619
+ }
620
+ lastError = error;
621
+ failures++;
622
+ }
623
+ if (deadline !== undefined && Date.now() >= deadline) throw timedOut();
624
+ const pause = failures ? backoff(failures) : publicClient.pollingInterval;
625
+ let wake = () => {};
626
+ await guard(
627
+ new Promise((resolve) => {
628
+ wake = after(pause, () => resolve(undefined));
629
+ }),
630
+ () => wake(),
631
+ );
632
+ }
633
+ } finally {
634
+ ended = true;
635
+ }
636
+ };
637
+
638
+ const confirmTransaction = async (hash: Hash, options?: EvmWaitOptions, label?: string) => {
639
+ const receipt = await waitForReceipt(hash, options, label);
640
+ if (receipt.status !== "success") throw new TransactionRevertedError(receipt, chain.id, label);
641
+ return receipt;
642
+ };
643
+
644
+ const approveAndWait = async (
645
+ token: Address,
646
+ spender: Address,
647
+ amount: bigint,
648
+ options: Pick<EvmWaitOptions, "timeout" | "signal">,
649
+ ) => {
650
+ if (options.signal?.aborted) {
651
+ throw Object.assign(
652
+ new Error("stopped before sending the approval", { cause: options.signal.reason }),
653
+ { name: "AbortError", mayStillLand: false },
654
+ );
655
+ }
169
656
  const hash = await erc20.approve({ token, spender, amount });
170
- const receipt = await publicClient.waitForTransactionReceipt({ hash });
171
- if (receipt.status !== "success") throw new Error(`approve ${hash} reverted`);
657
+ await confirmTransaction(hash, options, "approve");
172
658
  return hash;
173
659
  };
174
660
 
@@ -193,11 +679,11 @@ export function evmClient(config: EvmClientConfig): EvmClient {
193
679
  simulateAndWrite({ address: token, functionName: "transfer", args: [to, amount] }),
194
680
  approve: ({ token, spender, amount }) =>
195
681
  simulateAndWrite({ address: token, functionName: "approve", args: [spender, amount] }),
196
- async ensureAllowance({ token, spender, amount }) {
682
+ async ensureAllowance({ token, spender, amount, timeout, signal }) {
197
683
  const current = await erc20.allowance(token, spender);
198
684
  if (current >= amount) return null;
199
- if (current > 0n) await approveAndWait(token, spender, 0n);
200
- return approveAndWait(token, spender, amount);
685
+ if (current > 0n) await approveAndWait(token, spender, 0n, { timeout, signal });
686
+ return approveAndWait(token, spender, amount, { timeout, signal });
201
687
  },
202
688
  };
203
689
 
@@ -217,7 +703,9 @@ export function evmClient(config: EvmClientConfig): EvmClient {
217
703
  ...parameters,
218
704
  } as EvmSendTransactionParameters),
219
705
  writeContract: writeContract as EvmClient["writeContract"],
220
- waitForTransactionReceipt: (hash) => publicClient.waitForTransactionReceipt({ hash }),
706
+ waitForTransactionReceipt: (hash, options) => waitForReceipt(hash, options),
707
+ confirmTransaction: (hash, options) => confirmTransaction(hash, options),
708
+ explorerTxUrl,
221
709
  erc20,
222
710
  };
223
711
  }
@@ -11,13 +11,21 @@ export {
11
11
  type ClientFamily,
12
12
  } from "./types";
13
13
  export {
14
+ classifyTxError,
14
15
  evmClient,
16
+ ReceiptPendingError,
17
+ ReceiptWaitAbortedError,
18
+ TransactionReplacedError,
19
+ TransactionRevertedError,
15
20
  type Erc20Actions,
16
21
  type EvmClient,
17
22
  type EvmClientConfig,
23
+ type EvmReplacementReason,
18
24
  type EvmSendTransactionParameters,
25
+ type EvmWaitOptions,
19
26
  type EvmWalletClient,
20
27
  type EvmWriteContractParameters,
28
+ type TxErrorKind,
21
29
  } from "./evm";
22
30
  export { suiClient, type SuiClient } from "./sui";
23
31
  export { bitcoinClient, type BitcoinClient } from "./bitcoin";