@multiplatform.one/web3 7.18.0 → 7.20.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 (777) hide show
  1. package/README.md +109 -4
  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.cjs +92 -0
  13. package/dist/cjs/bundler/metaMaskConnectTimeouts.native.js +123 -0
  14. package/dist/cjs/bundler/metaMaskConnectTimeouts.native.js.map +1 -0
  15. package/dist/cjs/clients/adapter.cjs +33 -0
  16. package/dist/cjs/clients/adapter.native.js +36 -0
  17. package/dist/cjs/clients/adapter.native.js.map +1 -0
  18. package/dist/cjs/clients/bitcoin.cjs +46 -0
  19. package/dist/cjs/clients/bitcoin.native.js +51 -0
  20. package/dist/cjs/clients/bitcoin.native.js.map +1 -0
  21. package/dist/cjs/clients/connector.cjs +45 -0
  22. package/dist/cjs/clients/connector.native.js +49 -0
  23. package/dist/cjs/clients/connector.native.js.map +1 -0
  24. package/dist/cjs/clients/evm.cjs +171 -0
  25. package/dist/cjs/clients/evm.native.js +198 -0
  26. package/dist/cjs/clients/evm.native.js.map +1 -0
  27. package/dist/cjs/clients/gpg.cjs +31 -0
  28. package/dist/cjs/clients/gpg.native.js +34 -0
  29. package/dist/cjs/clients/gpg.native.js.map +1 -0
  30. package/dist/cjs/clients/hooks.cjs +78 -0
  31. package/dist/cjs/clients/hooks.native.js +85 -0
  32. package/dist/cjs/clients/hooks.native.js.map +1 -0
  33. package/dist/cjs/clients/index.cjs +49 -0
  34. package/dist/cjs/clients/index.native.js +52 -0
  35. package/dist/cjs/clients/index.native.js.map +1 -0
  36. package/dist/cjs/clients/solana.cjs +322 -0
  37. package/dist/cjs/clients/solana.native.js +511 -0
  38. package/dist/cjs/clients/solana.native.js.map +1 -0
  39. package/dist/cjs/clients/solanaMessage.cjs +38 -0
  40. package/dist/cjs/clients/solanaMessage.native.js +44 -0
  41. package/dist/cjs/clients/solanaMessage.native.js.map +1 -0
  42. package/dist/cjs/clients/sui.cjs +46 -0
  43. package/dist/cjs/clients/sui.native.js +51 -0
  44. package/dist/cjs/clients/sui.native.js.map +1 -0
  45. package/dist/cjs/clients/types.cjs +37 -0
  46. package/dist/cjs/clients/types.native.js +160 -0
  47. package/dist/cjs/clients/types.native.js.map +1 -0
  48. package/dist/cjs/clients/useSolanaClient.cjs +50 -0
  49. package/dist/cjs/clients/useSolanaClient.native.js +57 -0
  50. package/dist/cjs/clients/useSolanaClient.native.js.map +1 -0
  51. package/dist/cjs/clients/walletStandard.cjs +63 -0
  52. package/dist/cjs/clients/walletStandard.native.js +71 -0
  53. package/dist/cjs/clients/walletStandard.native.js.map +1 -0
  54. package/dist/cjs/components/NetworkSwitcher.native.js.map +1 -1
  55. package/dist/cjs/components/TransactionStatus.native.js.map +1 -1
  56. package/dist/cjs/components/index.native.js.map +1 -1
  57. package/dist/cjs/connectkit/adapters/BitcoinAdapter.native.js.map +1 -1
  58. package/dist/cjs/connectkit/adapters/EthereumAdapter.native.js.map +1 -1
  59. package/dist/cjs/connectkit/adapters/SolanaAdapter.native.js.map +1 -1
  60. package/dist/cjs/connectkit/adapters/SuiAdapter.native.js.map +1 -1
  61. package/dist/cjs/connectkit/adapters/discover.native.js.map +1 -1
  62. package/dist/cjs/connectkit/adapters/index.native.js.map +1 -1
  63. package/dist/cjs/connectkit/adapters/messages.native.js.map +1 -1
  64. package/dist/cjs/connectkit/adapters/types.native.js.map +1 -1
  65. package/dist/cjs/connectkit/assets/chains.native.js.map +1 -1
  66. package/dist/cjs/connectkit/components/BalanceButton/index.native.js +1 -1
  67. package/dist/cjs/connectkit/components/BalanceButton/index.native.js.map +1 -1
  68. package/dist/cjs/connectkit/components/Common/Avatar/index.native.js.map +1 -1
  69. package/dist/cjs/connectkit/components/Common/Avatar/styles.native.js.map +1 -1
  70. package/dist/cjs/connectkit/components/Common/Chain/index.native.js.map +1 -1
  71. package/dist/cjs/connectkit/components/Common/Chain/styles.native.js.map +1 -1
  72. package/dist/cjs/connectkit/components/Common/ChainSelect/index.native.js +2 -2
  73. package/dist/cjs/connectkit/components/Common/ChainSelect/index.native.js.map +1 -1
  74. package/dist/cjs/connectkit/components/Common/ChainSelectDropdown/index.native.js +1 -1
  75. package/dist/cjs/connectkit/components/Common/ChainSelectDropdown/index.native.js.map +1 -1
  76. package/dist/cjs/connectkit/components/Common/ChainSelectDropdown/styles.native.js.map +1 -1
  77. package/dist/cjs/connectkit/components/Common/ChainSelectList/index.native.js.map +1 -1
  78. package/dist/cjs/connectkit/components/Common/ChainSelectList/styles.native.js.map +1 -1
  79. package/dist/cjs/connectkit/components/Common/ConnectorList/index.cjs +10 -29
  80. package/dist/cjs/connectkit/components/Common/ConnectorList/index.native.js +11 -32
  81. package/dist/cjs/connectkit/components/Common/ConnectorList/index.native.js.map +1 -1
  82. package/dist/cjs/connectkit/components/Common/ConnectorList/styles.native.js.map +1 -1
  83. package/dist/cjs/connectkit/components/ConnectButton/index.native.js +4 -4
  84. package/dist/cjs/connectkit/components/ConnectButton/index.native.js.map +1 -1
  85. package/dist/cjs/connectkit/components/ConnectButton/styles.native.js.map +1 -1
  86. package/dist/cjs/connectkit/components/ConnectModal/ConnectUsing.cjs +4 -38
  87. package/dist/cjs/connectkit/components/ConnectModal/ConnectUsing.native.js +5 -43
  88. package/dist/cjs/connectkit/components/ConnectModal/ConnectUsing.native.js.map +1 -1
  89. package/dist/cjs/connectkit/components/ConnectModal/ConnectWithInjector/CircleSpinner/index.native.js.map +1 -1
  90. package/dist/cjs/connectkit/components/ConnectModal/ConnectWithInjector/CircleSpinner/styles.native.js.map +1 -1
  91. package/dist/cjs/connectkit/components/ConnectModal/ConnectWithInjector/SquircleSpinner/index.native.js.map +1 -1
  92. package/dist/cjs/connectkit/components/ConnectModal/ConnectWithInjector/SquircleSpinner/styles.native.js.map +1 -1
  93. package/dist/cjs/connectkit/components/ConnectModal/ConnectWithInjector/index.cjs +0 -14
  94. package/dist/cjs/connectkit/components/ConnectModal/ConnectWithInjector/index.native.js +10 -65
  95. package/dist/cjs/connectkit/components/ConnectModal/ConnectWithInjector/index.native.js.map +1 -1
  96. package/dist/cjs/connectkit/components/ConnectModal/ConnectWithInjector/styles.native.js.map +1 -1
  97. package/dist/cjs/connectkit/components/ConnectModal/demo.cjs +0 -15
  98. package/dist/cjs/connectkit/components/ConnectModal/demo.native.js +9 -24
  99. package/dist/cjs/connectkit/components/ConnectModal/demo.native.js.map +1 -1
  100. package/dist/cjs/connectkit/components/NetworkButton/index.native.js +2 -2
  101. package/dist/cjs/connectkit/components/NetworkButton/index.native.js.map +1 -1
  102. package/dist/cjs/connectkit/components/Pages/About/graphics.native.js.map +1 -1
  103. package/dist/cjs/connectkit/components/Pages/About/index.native.js.map +1 -1
  104. package/dist/cjs/connectkit/components/Pages/About/styles.native.js.map +1 -1
  105. package/dist/cjs/connectkit/components/Pages/Connectors/index.native.js +1 -1
  106. package/dist/cjs/connectkit/components/Pages/Connectors/index.native.js.map +1 -1
  107. package/dist/cjs/connectkit/components/Pages/Connectors/styles.native.js.map +1 -1
  108. package/dist/cjs/connectkit/components/Pages/DownloadApp/index.native.js.map +1 -1
  109. package/dist/cjs/connectkit/components/Pages/Onboarding/index.native.js.map +1 -1
  110. package/dist/cjs/connectkit/components/Pages/Onboarding/styles.native.js.map +1 -1
  111. package/dist/cjs/connectkit/components/Pages/Profile/index.native.js +2 -2
  112. package/dist/cjs/connectkit/components/Pages/Profile/index.native.js.map +1 -1
  113. package/dist/cjs/connectkit/components/Pages/Profile/styles.native.js.map +1 -1
  114. package/dist/cjs/connectkit/components/Pages/SignInWithEthereum/index.native.js +3 -3
  115. package/dist/cjs/connectkit/components/Pages/SignInWithEthereum/index.native.js.map +1 -1
  116. package/dist/cjs/connectkit/components/Pages/SignInWithEthereum/styles.native.js.map +1 -1
  117. package/dist/cjs/connectkit/components/Pages/SwitchNetworks/index.native.js +1 -1
  118. package/dist/cjs/connectkit/components/Pages/SwitchNetworks/index.native.js.map +1 -1
  119. package/dist/cjs/connectkit/components/Standard/SIWE/index.native.js +1 -1
  120. package/dist/cjs/connectkit/components/Standard/SIWE/index.native.js.map +1 -1
  121. package/dist/cjs/connectkit/components/Standard/SIWE/styles.native.js.map +1 -1
  122. package/dist/cjs/connectkit/components/contexts/web3/index.cjs +0 -15
  123. package/dist/cjs/connectkit/components/contexts/web3/index.native.js +0 -17
  124. package/dist/cjs/connectkit/components/contexts/web3/index.native.js.map +1 -1
  125. package/dist/cjs/connectkit/connectors/aaveAccountConnector.cjs +57 -0
  126. package/dist/cjs/connectkit/connectors/aaveAccountConnector.native.js +67 -0
  127. package/dist/cjs/connectkit/connectors/aaveAccountConnector.native.js.map +1 -0
  128. package/dist/cjs/connectkit/connectors/createWalletMessage.native.js.map +1 -1
  129. package/dist/cjs/connectkit/connectors/embeddedDesktop.cjs +1 -1
  130. package/dist/cjs/connectkit/connectors/embeddedDesktop.native.js +1 -1
  131. package/dist/cjs/connectkit/connectors/embeddedDesktop.native.js.map +1 -1
  132. package/dist/cjs/connectkit/connectors/ensureWalletConnectors.native.js.map +1 -1
  133. package/dist/cjs/connectkit/connectors/getWalletConnectors.native.js.map +1 -1
  134. package/dist/cjs/connectkit/connectors/metaMaskConnectConnector.cjs +255 -0
  135. package/dist/cjs/connectkit/connectors/metaMaskConnectConnector.native.js +315 -0
  136. package/dist/cjs/connectkit/connectors/metaMaskConnectConnector.native.js.map +1 -0
  137. package/dist/cjs/connectkit/connectors/syntheticChains.native.js.map +1 -1
  138. package/dist/cjs/connectkit/connectors/walletAdapterConnector.cjs +2 -0
  139. package/dist/cjs/connectkit/connectors/walletAdapterConnector.native.js +2 -0
  140. package/dist/cjs/connectkit/connectors/walletAdapterConnector.native.js.map +1 -1
  141. package/dist/cjs/connectkit/constants/chainConfigs.native.js.map +1 -1
  142. package/dist/cjs/connectkit/defaultConfig.cjs +8 -2
  143. package/dist/cjs/connectkit/defaultConfig.native.js +8 -2
  144. package/dist/cjs/connectkit/defaultConfig.native.js.map +1 -1
  145. package/dist/cjs/connectkit/defaultConnectors.cjs +19 -37
  146. package/dist/cjs/connectkit/defaultConnectors.native.js +19 -37
  147. package/dist/cjs/connectkit/defaultConnectors.native.js.map +1 -1
  148. package/dist/cjs/connectkit/defaultTransports.native.js.map +1 -1
  149. package/dist/cjs/connectkit/hooks/useChainIsSupported.native.js.map +1 -1
  150. package/dist/cjs/connectkit/hooks/useChains.native.js.map +1 -1
  151. package/dist/cjs/connectkit/hooks/useConnect.native.js.map +1 -1
  152. package/dist/cjs/connectkit/hooks/useConnectCallback.native.js.map +1 -1
  153. package/dist/cjs/connectkit/hooks/useConnectors.cjs +1 -5
  154. package/dist/cjs/connectkit/hooks/useConnectors.native.js +1 -5
  155. package/dist/cjs/connectkit/hooks/useConnectors.native.js.map +1 -1
  156. package/dist/cjs/connectkit/hooks/useEnsFallbackConfig.native.js.map +1 -1
  157. package/dist/cjs/connectkit/hooks/useLastConnector.native.js.map +1 -1
  158. package/dist/cjs/connectkit/index.cjs +2 -0
  159. package/dist/cjs/connectkit/index.native.js +10 -8
  160. package/dist/cjs/connectkit/index.native.js.map +1 -1
  161. package/dist/cjs/connectkit/openConnector/context.native.js.map +1 -1
  162. package/dist/cjs/connectkit/openConnector/device.native.js.map +1 -1
  163. package/dist/cjs/connectkit/openConnector/index.native.js.map +1 -1
  164. package/dist/cjs/connectkit/openConnector/launcher.native.js.map +1 -1
  165. package/dist/cjs/connectkit/profileHeaderAction.native.js +1 -1
  166. package/dist/cjs/connectkit/profileHeaderAction.native.js.map +1 -1
  167. package/dist/cjs/connectkit/screens.cjs +1 -14
  168. package/dist/cjs/connectkit/screens.native.js +23 -40
  169. package/dist/cjs/connectkit/screens.native.js.map +1 -1
  170. package/dist/cjs/connectkit/siwe/SIWEContext.native.js.map +1 -1
  171. package/dist/cjs/connectkit/siwe/SIWEProvider.cjs +7 -7
  172. package/dist/cjs/connectkit/siwe/SIWEProvider.native.js +10 -9
  173. package/dist/cjs/connectkit/siwe/SIWEProvider.native.js.map +1 -1
  174. package/dist/cjs/connectkit/siwe/connectIntent.native.js.map +1 -1
  175. package/dist/cjs/connectkit/siwe/index.native.js.map +1 -1
  176. package/dist/cjs/connectkit/siwe/useSIWE.native.js.map +1 -1
  177. package/dist/cjs/connectkit/useWeb3Modal.native.js +2 -2
  178. package/dist/cjs/connectkit/useWeb3Modal.native.js.map +1 -1
  179. package/dist/cjs/connectkit/wallets/index.cjs +4 -3
  180. package/dist/cjs/connectkit/wallets/index.native.js +4 -3
  181. package/dist/cjs/connectkit/wallets/index.native.js.map +1 -1
  182. package/dist/cjs/connectkit/wallets/useWallets.cjs +7 -22
  183. package/dist/cjs/connectkit/wallets/useWallets.native.js +6 -22
  184. package/dist/cjs/connectkit/wallets/useWallets.native.js.map +1 -1
  185. package/dist/cjs/connectkit/wallets/walletConfigs.cjs +3 -62
  186. package/dist/cjs/connectkit/wallets/walletConfigs.native.js +2 -65
  187. package/dist/cjs/connectkit/wallets/walletConfigs.native.js.map +1 -1
  188. package/dist/cjs/connectkit/web3Bridge.cjs +2 -6
  189. package/dist/cjs/connectkit/web3Bridge.native.js +4 -9
  190. package/dist/cjs/connectkit/web3Bridge.native.js.map +1 -1
  191. package/dist/cjs/connectkit/web3Provider.native.js.map +1 -1
  192. package/dist/cjs/esbuild.cjs +54 -0
  193. package/dist/cjs/esbuild.native.js +57 -0
  194. package/dist/cjs/esbuild.native.js.map +1 -0
  195. package/dist/cjs/examples/LockContract.native.js.map +1 -1
  196. package/dist/cjs/examples/index.native.js.map +1 -1
  197. package/dist/cjs/hooks/index.native.js.map +1 -1
  198. package/dist/cjs/hooks/useContractRead.native.js.map +1 -1
  199. package/dist/cjs/hooks/useContractWrite.native.js.map +1 -1
  200. package/dist/cjs/hooks/useWallet.cjs +1 -2
  201. package/dist/cjs/hooks/useWallet.native.js +1 -4
  202. package/dist/cjs/hooks/useWallet.native.js.map +1 -1
  203. package/dist/cjs/index.cjs +2 -1
  204. package/dist/cjs/index.native.js +6 -5
  205. package/dist/cjs/index.native.js.map +1 -1
  206. package/dist/cjs/providers/WalletProvider.cjs +1 -2
  207. package/dist/cjs/providers/index.native.js.map +1 -1
  208. package/dist/cjs/providers/mockConnector.native.js.map +1 -1
  209. package/dist/cjs/providers/native/deepLink.cjs +1 -1
  210. package/dist/cjs/providers/native/deepLink.native.js +1 -1
  211. package/dist/cjs/providers/native/deepLink.native.js.map +1 -1
  212. package/dist/cjs/providers/native/inject.native.js.map +1 -1
  213. package/dist/cjs/providers/native/visibility.native.js.map +1 -1
  214. package/dist/cjs/providers/walletConfig.native.js.map +1 -1
  215. package/dist/cjs/siws/index.native.js.map +1 -1
  216. package/dist/cjs/siws/message.native.js.map +1 -1
  217. package/dist/cjs/siws/signWithBridge.native.js.map +1 -1
  218. package/dist/cjs/siws/verify.native.js.map +1 -1
  219. package/dist/cjs/solana.cjs +41 -0
  220. package/dist/cjs/solana.native.js +44 -0
  221. package/dist/cjs/solana.native.js.map +1 -0
  222. package/dist/cjs/vite.cjs +76 -0
  223. package/dist/cjs/vite.native.js +79 -0
  224. package/dist/cjs/vite.native.js.map +1 -0
  225. package/dist/esm/bundler/metaMaskConnectTimeouts.mjs +64 -0
  226. package/dist/esm/bundler/metaMaskConnectTimeouts.mjs.map +1 -0
  227. package/dist/esm/bundler/metaMaskConnectTimeouts.native.js +92 -0
  228. package/dist/esm/bundler/metaMaskConnectTimeouts.native.js.map +1 -0
  229. package/dist/esm/clients/adapter.mjs +8 -0
  230. package/dist/esm/clients/adapter.mjs.map +1 -0
  231. package/dist/esm/clients/adapter.native.js +8 -0
  232. package/dist/esm/clients/adapter.native.js.map +1 -0
  233. package/dist/esm/clients/bitcoin.mjs +21 -0
  234. package/dist/esm/clients/bitcoin.mjs.map +1 -0
  235. package/dist/esm/clients/bitcoin.native.js +23 -0
  236. package/dist/esm/clients/bitcoin.native.js.map +1 -0
  237. package/dist/esm/clients/connector.mjs +20 -0
  238. package/dist/esm/clients/connector.mjs.map +1 -0
  239. package/dist/esm/clients/connector.native.js +21 -0
  240. package/dist/esm/clients/connector.native.js.map +1 -0
  241. package/dist/esm/clients/evm.mjs +146 -0
  242. package/dist/esm/clients/evm.mjs.map +1 -0
  243. package/dist/esm/clients/evm.native.js +170 -0
  244. package/dist/esm/clients/evm.native.js.map +1 -0
  245. package/dist/esm/clients/gpg.mjs +3 -0
  246. package/dist/esm/clients/gpg.mjs.map +1 -0
  247. package/dist/esm/clients/gpg.native.js +3 -0
  248. package/dist/esm/clients/gpg.native.js.map +1 -0
  249. package/dist/esm/clients/hooks.mjs +51 -0
  250. package/dist/esm/clients/hooks.mjs.map +1 -0
  251. package/dist/esm/clients/hooks.native.js +55 -0
  252. package/dist/esm/clients/hooks.native.js.map +1 -0
  253. package/dist/esm/clients/index.mjs +11 -0
  254. package/dist/esm/clients/index.mjs.map +1 -0
  255. package/dist/esm/clients/index.native.js +11 -0
  256. package/dist/esm/clients/index.native.js.map +1 -0
  257. package/dist/esm/clients/solana.mjs +289 -0
  258. package/dist/esm/clients/solana.mjs.map +1 -0
  259. package/dist/esm/clients/solana.native.js +475 -0
  260. package/dist/esm/clients/solana.native.js.map +1 -0
  261. package/dist/esm/clients/solanaMessage.mjs +13 -0
  262. package/dist/esm/clients/solanaMessage.mjs.map +1 -0
  263. package/dist/esm/clients/solanaMessage.native.js +16 -0
  264. package/dist/esm/clients/solanaMessage.native.js.map +1 -0
  265. package/dist/esm/clients/sui.mjs +21 -0
  266. package/dist/esm/clients/sui.mjs.map +1 -0
  267. package/dist/esm/clients/sui.native.js +23 -0
  268. package/dist/esm/clients/sui.native.js.map +1 -0
  269. package/dist/esm/clients/types.mjs +12 -0
  270. package/dist/esm/clients/types.mjs.map +1 -0
  271. package/dist/esm/clients/types.native.js +132 -0
  272. package/dist/esm/clients/types.native.js.map +1 -0
  273. package/dist/esm/clients/useSolanaClient.mjs +25 -0
  274. package/dist/esm/clients/useSolanaClient.mjs.map +1 -0
  275. package/dist/esm/clients/useSolanaClient.native.js +29 -0
  276. package/dist/esm/clients/useSolanaClient.native.js.map +1 -0
  277. package/dist/esm/clients/walletStandard.mjs +33 -0
  278. package/dist/esm/clients/walletStandard.mjs.map +1 -0
  279. package/dist/esm/clients/walletStandard.native.js +38 -0
  280. package/dist/esm/clients/walletStandard.native.js.map +1 -0
  281. package/dist/esm/connectkit/components/Common/ConnectorList/index.mjs +11 -30
  282. package/dist/esm/connectkit/components/Common/ConnectorList/index.mjs.map +1 -1
  283. package/dist/esm/connectkit/components/Common/ConnectorList/index.native.js +12 -33
  284. package/dist/esm/connectkit/components/Common/ConnectorList/index.native.js.map +1 -1
  285. package/dist/esm/connectkit/components/ConnectModal/ConnectUsing.mjs +4 -38
  286. package/dist/esm/connectkit/components/ConnectModal/ConnectUsing.mjs.map +1 -1
  287. package/dist/esm/connectkit/components/ConnectModal/ConnectUsing.native.js +4 -42
  288. package/dist/esm/connectkit/components/ConnectModal/ConnectUsing.native.js.map +1 -1
  289. package/dist/esm/connectkit/components/ConnectModal/ConnectWithInjector/index.mjs +1 -15
  290. package/dist/esm/connectkit/components/ConnectModal/ConnectWithInjector/index.mjs.map +1 -1
  291. package/dist/esm/connectkit/components/ConnectModal/ConnectWithInjector/index.native.js +8 -63
  292. package/dist/esm/connectkit/components/ConnectModal/ConnectWithInjector/index.native.js.map +1 -1
  293. package/dist/esm/connectkit/components/ConnectModal/demo.mjs +0 -15
  294. package/dist/esm/connectkit/components/ConnectModal/demo.mjs.map +1 -1
  295. package/dist/esm/connectkit/components/ConnectModal/demo.native.js +0 -15
  296. package/dist/esm/connectkit/components/ConnectModal/demo.native.js.map +1 -1
  297. package/dist/esm/connectkit/components/contexts/web3/index.mjs +0 -15
  298. package/dist/esm/connectkit/components/contexts/web3/index.mjs.map +1 -1
  299. package/dist/esm/connectkit/components/contexts/web3/index.native.js +0 -17
  300. package/dist/esm/connectkit/components/contexts/web3/index.native.js.map +1 -1
  301. package/dist/esm/connectkit/connectors/aaveAccountConnector.mjs +31 -0
  302. package/dist/esm/connectkit/connectors/aaveAccountConnector.mjs.map +1 -0
  303. package/dist/esm/connectkit/connectors/aaveAccountConnector.native.js +38 -0
  304. package/dist/esm/connectkit/connectors/aaveAccountConnector.native.js.map +1 -0
  305. package/dist/esm/connectkit/connectors/embeddedDesktop.mjs +1 -1
  306. package/dist/esm/connectkit/connectors/embeddedDesktop.mjs.map +1 -1
  307. package/dist/esm/connectkit/connectors/embeddedDesktop.native.js +1 -1
  308. package/dist/esm/connectkit/connectors/embeddedDesktop.native.js.map +1 -1
  309. package/dist/esm/connectkit/connectors/metaMaskConnectConnector.mjs +216 -0
  310. package/dist/esm/connectkit/connectors/metaMaskConnectConnector.mjs.map +1 -0
  311. package/dist/esm/connectkit/connectors/metaMaskConnectConnector.native.js +273 -0
  312. package/dist/esm/connectkit/connectors/metaMaskConnectConnector.native.js.map +1 -0
  313. package/dist/esm/connectkit/connectors/walletAdapterConnector.mjs +2 -0
  314. package/dist/esm/connectkit/connectors/walletAdapterConnector.mjs.map +1 -1
  315. package/dist/esm/connectkit/connectors/walletAdapterConnector.native.js +2 -0
  316. package/dist/esm/connectkit/connectors/walletAdapterConnector.native.js.map +1 -1
  317. package/dist/esm/connectkit/defaultConfig.mjs +8 -2
  318. package/dist/esm/connectkit/defaultConfig.mjs.map +1 -1
  319. package/dist/esm/connectkit/defaultConfig.native.js +8 -2
  320. package/dist/esm/connectkit/defaultConfig.native.js.map +1 -1
  321. package/dist/esm/connectkit/defaultConnectors.mjs +16 -34
  322. package/dist/esm/connectkit/defaultConnectors.mjs.map +1 -1
  323. package/dist/esm/connectkit/defaultConnectors.native.js +16 -34
  324. package/dist/esm/connectkit/defaultConnectors.native.js.map +1 -1
  325. package/dist/esm/connectkit/hooks/useConnectors.mjs +1 -4
  326. package/dist/esm/connectkit/hooks/useConnectors.mjs.map +1 -1
  327. package/dist/esm/connectkit/hooks/useConnectors.native.js +1 -4
  328. package/dist/esm/connectkit/hooks/useConnectors.native.js.map +1 -1
  329. package/dist/esm/connectkit/index.mjs +2 -1
  330. package/dist/esm/connectkit/index.mjs.map +1 -1
  331. package/dist/esm/connectkit/index.native.js +2 -1
  332. package/dist/esm/connectkit/index.native.js.map +1 -1
  333. package/dist/esm/connectkit/screens.mjs +1 -14
  334. package/dist/esm/connectkit/screens.mjs.map +1 -1
  335. package/dist/esm/connectkit/screens.native.js +16 -33
  336. package/dist/esm/connectkit/screens.native.js.map +1 -1
  337. package/dist/esm/connectkit/siwe/SIWEProvider.mjs +7 -7
  338. package/dist/esm/connectkit/siwe/SIWEProvider.mjs.map +1 -1
  339. package/dist/esm/connectkit/siwe/SIWEProvider.native.js +10 -9
  340. package/dist/esm/connectkit/siwe/SIWEProvider.native.js.map +1 -1
  341. package/dist/esm/connectkit/wallets/index.mjs +3 -2
  342. package/dist/esm/connectkit/wallets/index.mjs.map +1 -1
  343. package/dist/esm/connectkit/wallets/index.native.js +3 -2
  344. package/dist/esm/connectkit/wallets/index.native.js.map +1 -1
  345. package/dist/esm/connectkit/wallets/useWallets.mjs +2 -17
  346. package/dist/esm/connectkit/wallets/useWallets.mjs.map +1 -1
  347. package/dist/esm/connectkit/wallets/useWallets.native.js +1 -17
  348. package/dist/esm/connectkit/wallets/useWallets.native.js.map +1 -1
  349. package/dist/esm/connectkit/wallets/walletConfigs.mjs +4 -63
  350. package/dist/esm/connectkit/wallets/walletConfigs.mjs.map +1 -1
  351. package/dist/esm/connectkit/wallets/walletConfigs.native.js +3 -66
  352. package/dist/esm/connectkit/wallets/walletConfigs.native.js.map +1 -1
  353. package/dist/esm/connectkit/web3Bridge.mjs +3 -7
  354. package/dist/esm/connectkit/web3Bridge.mjs.map +1 -1
  355. package/dist/esm/connectkit/web3Bridge.native.js +3 -8
  356. package/dist/esm/connectkit/web3Bridge.native.js.map +1 -1
  357. package/dist/esm/esbuild.mjs +29 -0
  358. package/dist/esm/esbuild.mjs.map +1 -0
  359. package/dist/esm/esbuild.native.js +29 -0
  360. package/dist/esm/esbuild.native.js.map +1 -0
  361. package/dist/esm/hooks/useWallet.mjs +1 -2
  362. package/dist/esm/hooks/useWallet.mjs.map +1 -1
  363. package/dist/esm/hooks/useWallet.native.js +1 -4
  364. package/dist/esm/hooks/useWallet.native.js.map +1 -1
  365. package/dist/esm/index.mjs +1 -0
  366. package/dist/esm/index.mjs.map +1 -1
  367. package/dist/esm/index.native.js +1 -0
  368. package/dist/esm/index.native.js.map +1 -1
  369. package/dist/esm/providers/WalletProvider.mjs +1 -2
  370. package/dist/esm/providers/WalletProvider.mjs.map +1 -1
  371. package/dist/esm/providers/native/deepLink.mjs +1 -1
  372. package/dist/esm/providers/native/deepLink.mjs.map +1 -1
  373. package/dist/esm/providers/native/deepLink.native.js +1 -1
  374. package/dist/esm/providers/native/deepLink.native.js.map +1 -1
  375. package/dist/esm/providers/walletConfig.mjs.map +1 -1
  376. package/dist/esm/providers/walletConfig.native.js.map +1 -1
  377. package/dist/esm/solana.mjs +5 -0
  378. package/dist/esm/solana.mjs.map +1 -0
  379. package/dist/esm/solana.native.js +5 -0
  380. package/dist/esm/solana.native.js.map +1 -0
  381. package/dist/esm/vite.mjs +51 -0
  382. package/dist/esm/vite.mjs.map +1 -0
  383. package/dist/esm/vite.native.js +51 -0
  384. package/dist/esm/vite.native.js.map +1 -0
  385. package/dist/jsx/bundler/metaMaskConnectTimeouts.mjs +64 -0
  386. package/dist/jsx/bundler/metaMaskConnectTimeouts.mjs.map +1 -0
  387. package/dist/jsx/bundler/metaMaskConnectTimeouts.native.js +123 -0
  388. package/dist/jsx/bundler/metaMaskConnectTimeouts.native.js.map +1 -0
  389. package/dist/jsx/clients/adapter.mjs +8 -0
  390. package/dist/jsx/clients/adapter.mjs.map +1 -0
  391. package/dist/jsx/clients/adapter.native.js +36 -0
  392. package/dist/jsx/clients/adapter.native.js.map +1 -0
  393. package/dist/jsx/clients/bitcoin.mjs +21 -0
  394. package/dist/jsx/clients/bitcoin.mjs.map +1 -0
  395. package/dist/jsx/clients/bitcoin.native.js +51 -0
  396. package/dist/jsx/clients/bitcoin.native.js.map +1 -0
  397. package/dist/jsx/clients/connector.mjs +20 -0
  398. package/dist/jsx/clients/connector.mjs.map +1 -0
  399. package/dist/jsx/clients/connector.native.js +49 -0
  400. package/dist/jsx/clients/connector.native.js.map +1 -0
  401. package/dist/jsx/clients/evm.mjs +146 -0
  402. package/dist/jsx/clients/evm.mjs.map +1 -0
  403. package/dist/jsx/clients/evm.native.js +198 -0
  404. package/dist/jsx/clients/evm.native.js.map +1 -0
  405. package/dist/jsx/clients/gpg.mjs +3 -0
  406. package/dist/jsx/clients/gpg.mjs.map +1 -0
  407. package/dist/jsx/clients/gpg.native.js +34 -0
  408. package/dist/jsx/clients/gpg.native.js.map +1 -0
  409. package/dist/jsx/clients/hooks.mjs +51 -0
  410. package/dist/jsx/clients/hooks.mjs.map +1 -0
  411. package/dist/jsx/clients/hooks.native.js +85 -0
  412. package/dist/jsx/clients/hooks.native.js.map +1 -0
  413. package/dist/jsx/clients/index.mjs +11 -0
  414. package/dist/jsx/clients/index.mjs.map +1 -0
  415. package/dist/jsx/clients/index.native.js +52 -0
  416. package/dist/jsx/clients/index.native.js.map +1 -0
  417. package/dist/jsx/clients/solana.mjs +289 -0
  418. package/dist/jsx/clients/solana.mjs.map +1 -0
  419. package/dist/jsx/clients/solana.native.js +511 -0
  420. package/dist/jsx/clients/solana.native.js.map +1 -0
  421. package/dist/jsx/clients/solanaMessage.mjs +13 -0
  422. package/dist/jsx/clients/solanaMessage.mjs.map +1 -0
  423. package/dist/jsx/clients/solanaMessage.native.js +44 -0
  424. package/dist/jsx/clients/solanaMessage.native.js.map +1 -0
  425. package/dist/jsx/clients/sui.mjs +21 -0
  426. package/dist/jsx/clients/sui.mjs.map +1 -0
  427. package/dist/jsx/clients/sui.native.js +51 -0
  428. package/dist/jsx/clients/sui.native.js.map +1 -0
  429. package/dist/jsx/clients/types.mjs +12 -0
  430. package/dist/jsx/clients/types.mjs.map +1 -0
  431. package/dist/jsx/clients/types.native.js +160 -0
  432. package/dist/jsx/clients/types.native.js.map +1 -0
  433. package/dist/jsx/clients/useSolanaClient.mjs +25 -0
  434. package/dist/jsx/clients/useSolanaClient.mjs.map +1 -0
  435. package/dist/jsx/clients/useSolanaClient.native.js +57 -0
  436. package/dist/jsx/clients/useSolanaClient.native.js.map +1 -0
  437. package/dist/jsx/clients/walletStandard.mjs +33 -0
  438. package/dist/jsx/clients/walletStandard.mjs.map +1 -0
  439. package/dist/jsx/clients/walletStandard.native.js +71 -0
  440. package/dist/jsx/clients/walletStandard.native.js.map +1 -0
  441. package/dist/jsx/connectkit/components/Common/ConnectorList/index.mjs +11 -30
  442. package/dist/jsx/connectkit/components/Common/ConnectorList/index.mjs.map +1 -1
  443. package/dist/jsx/connectkit/components/Common/ConnectorList/index.native.js +11 -32
  444. package/dist/jsx/connectkit/components/Common/ConnectorList/index.native.js.map +1 -1
  445. package/dist/jsx/connectkit/components/ConnectModal/ConnectUsing.mjs +4 -38
  446. package/dist/jsx/connectkit/components/ConnectModal/ConnectUsing.mjs.map +1 -1
  447. package/dist/jsx/connectkit/components/ConnectModal/ConnectUsing.native.js +4 -42
  448. package/dist/jsx/connectkit/components/ConnectModal/ConnectUsing.native.js.map +1 -1
  449. package/dist/jsx/connectkit/components/ConnectModal/ConnectWithInjector/index.mjs +1 -15
  450. package/dist/jsx/connectkit/components/ConnectModal/ConnectWithInjector/index.mjs.map +1 -1
  451. package/dist/jsx/connectkit/components/ConnectModal/ConnectWithInjector/index.native.js +7 -62
  452. package/dist/jsx/connectkit/components/ConnectModal/ConnectWithInjector/index.native.js.map +1 -1
  453. package/dist/jsx/connectkit/components/ConnectModal/demo.mjs +0 -15
  454. package/dist/jsx/connectkit/components/ConnectModal/demo.mjs.map +1 -1
  455. package/dist/jsx/connectkit/components/ConnectModal/demo.native.js +0 -15
  456. package/dist/jsx/connectkit/components/ConnectModal/demo.native.js.map +1 -1
  457. package/dist/jsx/connectkit/components/contexts/web3/index.mjs +0 -15
  458. package/dist/jsx/connectkit/components/contexts/web3/index.mjs.map +1 -1
  459. package/dist/jsx/connectkit/components/contexts/web3/index.native.js +0 -17
  460. package/dist/jsx/connectkit/components/contexts/web3/index.native.js.map +1 -1
  461. package/dist/jsx/connectkit/connectors/aaveAccountConnector.mjs +31 -0
  462. package/dist/jsx/connectkit/connectors/aaveAccountConnector.mjs.map +1 -0
  463. package/dist/jsx/connectkit/connectors/aaveAccountConnector.native.js +67 -0
  464. package/dist/jsx/connectkit/connectors/aaveAccountConnector.native.js.map +1 -0
  465. package/dist/jsx/connectkit/connectors/embeddedDesktop.mjs +1 -1
  466. package/dist/jsx/connectkit/connectors/embeddedDesktop.mjs.map +1 -1
  467. package/dist/jsx/connectkit/connectors/embeddedDesktop.native.js +1 -1
  468. package/dist/jsx/connectkit/connectors/metaMaskConnectConnector.mjs +216 -0
  469. package/dist/jsx/connectkit/connectors/metaMaskConnectConnector.mjs.map +1 -0
  470. package/dist/jsx/connectkit/connectors/metaMaskConnectConnector.native.js +315 -0
  471. package/dist/jsx/connectkit/connectors/metaMaskConnectConnector.native.js.map +1 -0
  472. package/dist/jsx/connectkit/connectors/walletAdapterConnector.mjs +2 -0
  473. package/dist/jsx/connectkit/connectors/walletAdapterConnector.mjs.map +1 -1
  474. package/dist/jsx/connectkit/connectors/walletAdapterConnector.native.js +2 -0
  475. package/dist/jsx/connectkit/connectors/walletAdapterConnector.native.js.map +1 -1
  476. package/dist/jsx/connectkit/defaultConfig.mjs +8 -2
  477. package/dist/jsx/connectkit/defaultConfig.mjs.map +1 -1
  478. package/dist/jsx/connectkit/defaultConfig.native.js +8 -2
  479. package/dist/jsx/connectkit/defaultConfig.native.js.map +1 -1
  480. package/dist/jsx/connectkit/defaultConnectors.mjs +16 -34
  481. package/dist/jsx/connectkit/defaultConnectors.mjs.map +1 -1
  482. package/dist/jsx/connectkit/defaultConnectors.native.js +19 -37
  483. package/dist/jsx/connectkit/defaultConnectors.native.js.map +1 -1
  484. package/dist/jsx/connectkit/hooks/useConnectors.mjs +1 -4
  485. package/dist/jsx/connectkit/hooks/useConnectors.mjs.map +1 -1
  486. package/dist/jsx/connectkit/hooks/useConnectors.native.js +1 -5
  487. package/dist/jsx/connectkit/hooks/useConnectors.native.js.map +1 -1
  488. package/dist/jsx/connectkit/index.mjs +2 -1
  489. package/dist/jsx/connectkit/index.mjs.map +1 -1
  490. package/dist/jsx/connectkit/index.native.js +2 -0
  491. package/dist/jsx/connectkit/index.native.js.map +1 -1
  492. package/dist/jsx/connectkit/screens.mjs +1 -14
  493. package/dist/jsx/connectkit/screens.mjs.map +1 -1
  494. package/dist/jsx/connectkit/screens.native.js +16 -33
  495. package/dist/jsx/connectkit/screens.native.js.map +1 -1
  496. package/dist/jsx/connectkit/siwe/SIWEProvider.mjs +7 -7
  497. package/dist/jsx/connectkit/siwe/SIWEProvider.mjs.map +1 -1
  498. package/dist/jsx/connectkit/siwe/SIWEProvider.native.js +10 -9
  499. package/dist/jsx/connectkit/siwe/SIWEProvider.native.js.map +1 -1
  500. package/dist/jsx/connectkit/wallets/index.mjs +3 -2
  501. package/dist/jsx/connectkit/wallets/index.mjs.map +1 -1
  502. package/dist/jsx/connectkit/wallets/index.native.js +4 -3
  503. package/dist/jsx/connectkit/wallets/index.native.js.map +1 -1
  504. package/dist/jsx/connectkit/wallets/useWallets.mjs +2 -17
  505. package/dist/jsx/connectkit/wallets/useWallets.mjs.map +1 -1
  506. package/dist/jsx/connectkit/wallets/useWallets.native.js +6 -22
  507. package/dist/jsx/connectkit/wallets/useWallets.native.js.map +1 -1
  508. package/dist/jsx/connectkit/wallets/walletConfigs.mjs +4 -63
  509. package/dist/jsx/connectkit/wallets/walletConfigs.mjs.map +1 -1
  510. package/dist/jsx/connectkit/wallets/walletConfigs.native.js +2 -65
  511. package/dist/jsx/connectkit/wallets/walletConfigs.native.js.map +1 -1
  512. package/dist/jsx/connectkit/web3Bridge.mjs +3 -7
  513. package/dist/jsx/connectkit/web3Bridge.mjs.map +1 -1
  514. package/dist/jsx/connectkit/web3Bridge.native.js +2 -7
  515. package/dist/jsx/connectkit/web3Bridge.native.js.map +1 -1
  516. package/dist/jsx/esbuild.mjs +29 -0
  517. package/dist/jsx/esbuild.mjs.map +1 -0
  518. package/dist/jsx/esbuild.native.js +57 -0
  519. package/dist/jsx/esbuild.native.js.map +1 -0
  520. package/dist/jsx/hooks/useWallet.mjs +1 -2
  521. package/dist/jsx/hooks/useWallet.mjs.map +1 -1
  522. package/dist/jsx/hooks/useWallet.native.js +1 -4
  523. package/dist/jsx/hooks/useWallet.native.js.map +1 -1
  524. package/dist/jsx/index.js +1 -0
  525. package/dist/jsx/index.js.map +1 -1
  526. package/dist/jsx/index.mjs +1 -0
  527. package/dist/jsx/index.mjs.map +1 -1
  528. package/dist/jsx/index.native.js +1 -0
  529. package/dist/jsx/index.native.js.map +1 -1
  530. package/dist/jsx/providers/WalletProvider.mjs +1 -2
  531. package/dist/jsx/providers/WalletProvider.mjs.map +1 -1
  532. package/dist/jsx/providers/native/deepLink.mjs +1 -1
  533. package/dist/jsx/providers/native/deepLink.mjs.map +1 -1
  534. package/dist/jsx/providers/native/deepLink.native.js +1 -1
  535. package/dist/jsx/providers/native/deepLink.native.js.map +1 -1
  536. package/dist/jsx/providers/walletConfig.mjs.map +1 -1
  537. package/dist/jsx/providers/walletConfig.native.js.map +1 -1
  538. package/dist/jsx/solana.mjs +5 -0
  539. package/dist/jsx/solana.mjs.map +1 -0
  540. package/dist/jsx/solana.native.js +44 -0
  541. package/dist/jsx/solana.native.js.map +1 -0
  542. package/dist/jsx/vite.mjs +51 -0
  543. package/dist/jsx/vite.mjs.map +1 -0
  544. package/dist/jsx/vite.native.js +79 -0
  545. package/dist/jsx/vite.native.js.map +1 -0
  546. package/package.json +29 -10
  547. package/src/bundler/metaMaskConnectTimeouts.spec.ts +390 -0
  548. package/src/bundler/metaMaskConnectTimeouts.ts +126 -0
  549. package/src/clients/adapter.ts +13 -0
  550. package/src/clients/bitcoin.ts +42 -0
  551. package/src/clients/connector.spec.ts +78 -0
  552. package/src/clients/connector.ts +36 -0
  553. package/src/clients/evm.spec.ts +265 -0
  554. package/src/clients/evm.ts +223 -0
  555. package/src/clients/gpg.spec.ts +169 -0
  556. package/src/clients/gpg.ts +8 -0
  557. package/src/clients/hooks.spec.tsx +113 -0
  558. package/src/clients/hooks.ts +51 -0
  559. package/src/clients/index.ts +40 -0
  560. package/src/clients/solana.spec.ts +444 -0
  561. package/src/clients/solana.ts +465 -0
  562. package/src/clients/solanaMessage.ts +34 -0
  563. package/src/clients/sui.ts +42 -0
  564. package/src/clients/types.ts +40 -0
  565. package/src/clients/useSolanaClient.ts +31 -0
  566. package/src/clients/walletStandard.ts +87 -0
  567. package/src/connectkit/adapters/SolanaAdapter.ts +1 -1
  568. package/src/connectkit/adapters/discover.ts +1 -1
  569. package/src/connectkit/components/Common/ConnectorList/index.tsx +20 -50
  570. package/src/connectkit/components/ConnectModal/ConnectUsing.tsx +11 -62
  571. package/src/connectkit/components/ConnectModal/ConnectWithInjector/index.tsx +10 -70
  572. package/src/connectkit/components/ConnectModal/demo.tsx +1 -19
  573. package/src/connectkit/components/contexts/web3/index.tsx +1 -23
  574. package/src/connectkit/connectors/aaveAccountConnector.spec.ts +87 -0
  575. package/src/connectkit/connectors/aaveAccountConnector.ts +43 -0
  576. package/src/connectkit/connectors/embeddedDesktop.spec.ts +5 -5
  577. package/src/connectkit/connectors/embeddedDesktop.ts +5 -5
  578. package/src/connectkit/connectors/metaMaskConnectConnector.spec.ts +230 -0
  579. package/src/connectkit/connectors/metaMaskConnectConnector.ts +272 -0
  580. package/src/connectkit/connectors/walletAdapterConnector.ts +2 -0
  581. package/src/connectkit/defaultConfig.ts +16 -7
  582. package/src/connectkit/defaultConnectors.ts +19 -40
  583. package/src/connectkit/hooks/useConnectors.ts +0 -10
  584. package/src/connectkit/index.ts +4 -0
  585. package/src/connectkit/screens.tsx +1 -21
  586. package/src/connectkit/siwe/SIWEProvider.spec.tsx +180 -0
  587. package/src/connectkit/siwe/SIWEProvider.tsx +11 -13
  588. package/src/connectkit/wallets/index.ts +5 -2
  589. package/src/connectkit/wallets/useWallets.tsx +1 -20
  590. package/src/connectkit/wallets/walletConfigs.tsx +2 -64
  591. package/src/connectkit/web3Bridge.tsx +4 -21
  592. package/src/esbuild.ts +42 -0
  593. package/src/hooks/useWallet.spec.ts +6 -15
  594. package/src/hooks/useWallet.ts +1 -2
  595. package/src/index.ts +4 -0
  596. package/src/providers/WalletProvider.native.tsx +1 -1
  597. package/src/providers/WalletProvider.tsx +5 -7
  598. package/src/providers/mockConnector.ts +2 -2
  599. package/src/providers/native/deepLink.spec.ts +3 -4
  600. package/src/providers/native/deepLink.ts +1 -2
  601. package/src/providers/native/inject.spec.ts +1 -1
  602. package/src/providers/walletConfig.spec.ts +1 -1
  603. package/src/providers/walletConfig.ts +2 -1
  604. package/src/solana.ts +30 -0
  605. package/src/vite.ts +60 -0
  606. package/types/bundler/metaMaskConnectTimeouts.d.ts +36 -0
  607. package/types/bundler/metaMaskConnectTimeouts.d.ts.map +1 -0
  608. package/types/clients/adapter.d.ts +5 -0
  609. package/types/clients/adapter.d.ts.map +1 -0
  610. package/types/clients/bitcoin.d.ts +21 -0
  611. package/types/clients/bitcoin.d.ts.map +1 -0
  612. package/types/clients/connector.d.ts +14 -0
  613. package/types/clients/connector.d.ts.map +1 -0
  614. package/types/clients/evm.d.ts +68 -0
  615. package/types/clients/evm.d.ts.map +1 -0
  616. package/types/clients/gpg.d.ts +2 -0
  617. package/types/clients/gpg.d.ts.map +1 -0
  618. package/types/clients/hooks.d.ts +16 -0
  619. package/types/clients/hooks.d.ts.map +1 -0
  620. package/types/clients/index.d.ts +10 -0
  621. package/types/clients/index.d.ts.map +1 -0
  622. package/types/clients/solana.d.ts +111 -0
  623. package/types/clients/solana.d.ts.map +1 -0
  624. package/types/clients/solanaMessage.d.ts +18 -0
  625. package/types/clients/solanaMessage.d.ts.map +1 -0
  626. package/types/clients/sui.d.ts +21 -0
  627. package/types/clients/sui.d.ts.map +1 -0
  628. package/types/clients/types.d.ts +27 -0
  629. package/types/clients/types.d.ts.map +1 -0
  630. package/types/clients/useSolanaClient.d.ts +11 -0
  631. package/types/clients/useSolanaClient.d.ts.map +1 -0
  632. package/types/clients/walletStandard.d.ts +63 -0
  633. package/types/clients/walletStandard.d.ts.map +1 -0
  634. package/types/connectkit/adapters/discover.d.ts +1 -1
  635. package/types/connectkit/components/Common/ConnectorList/index.d.ts.map +1 -1
  636. package/types/connectkit/components/ConnectModal/ConnectUsing.d.ts.map +1 -1
  637. package/types/connectkit/components/ConnectModal/ConnectWithInjector/index.d.ts +0 -1
  638. package/types/connectkit/components/ConnectModal/ConnectWithInjector/index.d.ts.map +1 -1
  639. package/types/connectkit/components/ConnectModal/demo.d.ts.map +1 -1
  640. package/types/connectkit/components/contexts/web3/index.d.ts +1 -5
  641. package/types/connectkit/components/contexts/web3/index.d.ts.map +1 -1
  642. package/types/connectkit/connectors/aaveAccountConnector.d.ts +5 -0
  643. package/types/connectkit/connectors/aaveAccountConnector.d.ts.map +1 -0
  644. package/types/connectkit/connectors/embeddedDesktop.d.ts +4 -4
  645. package/types/connectkit/connectors/embeddedDesktop.d.ts.map +1 -1
  646. package/types/connectkit/connectors/metaMaskConnectConnector.d.ts +35 -0
  647. package/types/connectkit/connectors/metaMaskConnectConnector.d.ts.map +1 -0
  648. package/types/connectkit/connectors/walletAdapterConnector.d.ts.map +1 -1
  649. package/types/connectkit/defaultConfig.d.ts +3 -2
  650. package/types/connectkit/defaultConfig.d.ts.map +1 -1
  651. package/types/connectkit/defaultConnectors.d.ts +3 -4
  652. package/types/connectkit/defaultConnectors.d.ts.map +1 -1
  653. package/types/connectkit/hooks/useConnectors.d.ts +0 -1
  654. package/types/connectkit/hooks/useConnectors.d.ts.map +1 -1
  655. package/types/connectkit/index.d.ts +1 -0
  656. package/types/connectkit/index.d.ts.map +1 -1
  657. package/types/connectkit/screens.d.ts +0 -4
  658. package/types/connectkit/screens.d.ts.map +1 -1
  659. package/types/connectkit/siwe/SIWEProvider.d.ts.map +1 -1
  660. package/types/connectkit/wallets/index.d.ts.map +1 -1
  661. package/types/connectkit/wallets/useWallets.d.ts.map +1 -1
  662. package/types/connectkit/wallets/walletConfigs.d.ts +0 -2
  663. package/types/connectkit/wallets/walletConfigs.d.ts.map +1 -1
  664. package/types/connectkit/web3Bridge.d.ts.map +1 -1
  665. package/types/esbuild.d.ts +31 -0
  666. package/types/esbuild.d.ts.map +1 -0
  667. package/types/hooks/useWallet.d.ts.map +1 -1
  668. package/types/index.d.ts +1 -0
  669. package/types/index.d.ts.map +1 -1
  670. package/types/providers/WalletProvider.d.ts.map +1 -1
  671. package/types/providers/mockConnector.d.ts +2 -2
  672. package/types/providers/native/deepLink.d.ts +1 -1
  673. package/types/providers/native/deepLink.d.ts.map +1 -1
  674. package/types/providers/walletConfig.d.ts +2 -1
  675. package/types/providers/walletConfig.d.ts.map +1 -1
  676. package/types/solana.d.ts +4 -0
  677. package/types/solana.d.ts.map +1 -0
  678. package/types/vite.d.ts +12 -0
  679. package/types/vite.d.ts.map +1 -0
  680. package/dist/cjs/connectkit/components/ConnectModal/ConnectWithQRCode.cjs +0 -133
  681. package/dist/cjs/connectkit/components/ConnectModal/ConnectWithQRCode.native.js +0 -179
  682. package/dist/cjs/connectkit/components/ConnectModal/ConnectWithQRCode.native.js.map +0 -1
  683. package/dist/cjs/connectkit/components/Pages/MobileConnectors/index.cjs +0 -158
  684. package/dist/cjs/connectkit/components/Pages/MobileConnectors/index.native.js +0 -183
  685. package/dist/cjs/connectkit/components/Pages/MobileConnectors/index.native.js.map +0 -1
  686. package/dist/cjs/connectkit/components/Pages/MobileConnectors/styles.cjs +0 -90
  687. package/dist/cjs/connectkit/components/Pages/MobileConnectors/styles.native.js +0 -99
  688. package/dist/cjs/connectkit/components/Pages/MobileConnectors/styles.native.js.map +0 -1
  689. package/dist/cjs/connectkit/connectors/metaMaskSdkConnector.cjs +0 -398
  690. package/dist/cjs/connectkit/connectors/metaMaskSdkConnector.native.js +0 -453
  691. package/dist/cjs/connectkit/connectors/metaMaskSdkConnector.native.js.map +0 -1
  692. package/dist/cjs/connectkit/hooks/connectors/useCoinbaseWalletUri.cjs +0 -0
  693. package/dist/cjs/connectkit/hooks/connectors/useCoinbaseWalletUri.native.js +0 -2
  694. package/dist/cjs/connectkit/hooks/connectors/useCoinbaseWalletUri.native.js.map +0 -1
  695. package/dist/cjs/connectkit/hooks/connectors/useWalletConnectUri.cjs +0 -113
  696. package/dist/cjs/connectkit/hooks/connectors/useWalletConnectUri.native.js +0 -117
  697. package/dist/cjs/connectkit/hooks/connectors/useWalletConnectUri.native.js.map +0 -1
  698. package/dist/cjs/connectkit/hooks/useWalletConnectModal.cjs +0 -74
  699. package/dist/cjs/connectkit/hooks/useWalletConnectModal.native.js +0 -79
  700. package/dist/cjs/connectkit/hooks/useWalletConnectModal.native.js.map +0 -1
  701. package/dist/esm/connectkit/components/ConnectModal/ConnectWithQRCode.mjs +0 -108
  702. package/dist/esm/connectkit/components/ConnectModal/ConnectWithQRCode.mjs.map +0 -1
  703. package/dist/esm/connectkit/components/ConnectModal/ConnectWithQRCode.native.js +0 -140
  704. package/dist/esm/connectkit/components/ConnectModal/ConnectWithQRCode.native.js.map +0 -1
  705. package/dist/esm/connectkit/components/Pages/MobileConnectors/index.mjs +0 -133
  706. package/dist/esm/connectkit/components/Pages/MobileConnectors/index.mjs.map +0 -1
  707. package/dist/esm/connectkit/components/Pages/MobileConnectors/index.native.js +0 -144
  708. package/dist/esm/connectkit/components/Pages/MobileConnectors/index.native.js.map +0 -1
  709. package/dist/esm/connectkit/components/Pages/MobileConnectors/styles.mjs +0 -61
  710. package/dist/esm/connectkit/components/Pages/MobileConnectors/styles.mjs.map +0 -1
  711. package/dist/esm/connectkit/components/Pages/MobileConnectors/styles.native.js +0 -67
  712. package/dist/esm/connectkit/components/Pages/MobileConnectors/styles.native.js.map +0 -1
  713. package/dist/esm/connectkit/connectors/metaMaskSdkConnector.mjs +0 -362
  714. package/dist/esm/connectkit/connectors/metaMaskSdkConnector.mjs.map +0 -1
  715. package/dist/esm/connectkit/connectors/metaMaskSdkConnector.native.js +0 -414
  716. package/dist/esm/connectkit/connectors/metaMaskSdkConnector.native.js.map +0 -1
  717. package/dist/esm/connectkit/hooks/connectors/useCoinbaseWalletUri.mjs +0 -2
  718. package/dist/esm/connectkit/hooks/connectors/useCoinbaseWalletUri.mjs.map +0 -1
  719. package/dist/esm/connectkit/hooks/connectors/useCoinbaseWalletUri.native.js +0 -2
  720. package/dist/esm/connectkit/hooks/connectors/useCoinbaseWalletUri.native.js.map +0 -1
  721. package/dist/esm/connectkit/hooks/connectors/useWalletConnectUri.mjs +0 -88
  722. package/dist/esm/connectkit/hooks/connectors/useWalletConnectUri.mjs.map +0 -1
  723. package/dist/esm/connectkit/hooks/connectors/useWalletConnectUri.native.js +0 -89
  724. package/dist/esm/connectkit/hooks/connectors/useWalletConnectUri.native.js.map +0 -1
  725. package/dist/esm/connectkit/hooks/useWalletConnectModal.mjs +0 -49
  726. package/dist/esm/connectkit/hooks/useWalletConnectModal.mjs.map +0 -1
  727. package/dist/esm/connectkit/hooks/useWalletConnectModal.native.js +0 -51
  728. package/dist/esm/connectkit/hooks/useWalletConnectModal.native.js.map +0 -1
  729. package/dist/jsx/connectkit/components/ConnectModal/ConnectWithQRCode.mjs +0 -108
  730. package/dist/jsx/connectkit/components/ConnectModal/ConnectWithQRCode.mjs.map +0 -1
  731. package/dist/jsx/connectkit/components/ConnectModal/ConnectWithQRCode.native.js +0 -179
  732. package/dist/jsx/connectkit/components/ConnectModal/ConnectWithQRCode.native.js.map +0 -1
  733. package/dist/jsx/connectkit/components/Pages/MobileConnectors/index.mjs +0 -133
  734. package/dist/jsx/connectkit/components/Pages/MobileConnectors/index.mjs.map +0 -1
  735. package/dist/jsx/connectkit/components/Pages/MobileConnectors/index.native.js +0 -183
  736. package/dist/jsx/connectkit/components/Pages/MobileConnectors/index.native.js.map +0 -1
  737. package/dist/jsx/connectkit/components/Pages/MobileConnectors/styles.mjs +0 -61
  738. package/dist/jsx/connectkit/components/Pages/MobileConnectors/styles.mjs.map +0 -1
  739. package/dist/jsx/connectkit/components/Pages/MobileConnectors/styles.native.js +0 -99
  740. package/dist/jsx/connectkit/components/Pages/MobileConnectors/styles.native.js.map +0 -1
  741. package/dist/jsx/connectkit/connectors/metaMaskSdkConnector.mjs +0 -362
  742. package/dist/jsx/connectkit/connectors/metaMaskSdkConnector.mjs.map +0 -1
  743. package/dist/jsx/connectkit/connectors/metaMaskSdkConnector.native.js +0 -453
  744. package/dist/jsx/connectkit/connectors/metaMaskSdkConnector.native.js.map +0 -1
  745. package/dist/jsx/connectkit/hooks/connectors/useCoinbaseWalletUri.mjs +0 -2
  746. package/dist/jsx/connectkit/hooks/connectors/useCoinbaseWalletUri.mjs.map +0 -1
  747. package/dist/jsx/connectkit/hooks/connectors/useCoinbaseWalletUri.native.js +0 -2
  748. package/dist/jsx/connectkit/hooks/connectors/useCoinbaseWalletUri.native.js.map +0 -1
  749. package/dist/jsx/connectkit/hooks/connectors/useWalletConnectUri.mjs +0 -88
  750. package/dist/jsx/connectkit/hooks/connectors/useWalletConnectUri.mjs.map +0 -1
  751. package/dist/jsx/connectkit/hooks/connectors/useWalletConnectUri.native.js +0 -117
  752. package/dist/jsx/connectkit/hooks/connectors/useWalletConnectUri.native.js.map +0 -1
  753. package/dist/jsx/connectkit/hooks/useWalletConnectModal.mjs +0 -49
  754. package/dist/jsx/connectkit/hooks/useWalletConnectModal.mjs.map +0 -1
  755. package/dist/jsx/connectkit/hooks/useWalletConnectModal.native.js +0 -79
  756. package/dist/jsx/connectkit/hooks/useWalletConnectModal.native.js.map +0 -1
  757. package/src/connectkit/components/ConnectModal/ConnectWithQRCode.tsx +0 -188
  758. package/src/connectkit/components/Pages/MobileConnectors/index.tsx +0 -142
  759. package/src/connectkit/components/Pages/MobileConnectors/styles.ts +0 -66
  760. package/src/connectkit/connectors/metaMaskSdkConnector.ts +0 -505
  761. package/src/connectkit/hooks/connectors/useCoinbaseWalletUri.tsx +0 -101
  762. package/src/connectkit/hooks/connectors/useWalletConnectUri.ts +0 -99
  763. package/src/connectkit/hooks/useWalletConnectModal.tsx +0 -52
  764. package/types/connectkit/components/ConnectModal/ConnectWithQRCode.d.ts +0 -6
  765. package/types/connectkit/components/ConnectModal/ConnectWithQRCode.d.ts.map +0 -1
  766. package/types/connectkit/components/Pages/MobileConnectors/index.d.ts +0 -4
  767. package/types/connectkit/components/Pages/MobileConnectors/index.d.ts.map +0 -1
  768. package/types/connectkit/components/Pages/MobileConnectors/styles.d.ts +0 -6
  769. package/types/connectkit/components/Pages/MobileConnectors/styles.d.ts.map +0 -1
  770. package/types/connectkit/connectors/metaMaskSdkConnector.d.ts +0 -30
  771. package/types/connectkit/connectors/metaMaskSdkConnector.d.ts.map +0 -1
  772. package/types/connectkit/hooks/connectors/useCoinbaseWalletUri.d.ts +0 -1
  773. package/types/connectkit/hooks/connectors/useCoinbaseWalletUri.d.ts.map +0 -1
  774. package/types/connectkit/hooks/connectors/useWalletConnectUri.d.ts +0 -8
  775. package/types/connectkit/hooks/connectors/useWalletConnectUri.d.ts.map +0 -1
  776. package/types/connectkit/hooks/useWalletConnectModal.d.ts +0 -5
  777. package/types/connectkit/hooks/useWalletConnectModal.d.ts.map +0 -1
@@ -0,0 +1,265 @@
1
+ import { beforeEach, describe, expect, it } from "vitest";
2
+ import {
3
+ createPublicClient,
4
+ custom,
5
+ decodeFunctionData,
6
+ encodeAbiParameters,
7
+ erc20Abi,
8
+ toHex,
9
+ type Address,
10
+ type Hex,
11
+ } from "viem";
12
+ import { mainnet } from "viem/chains";
13
+ import { evmClient } from "./evm";
14
+
15
+ const account = "0x1111111111111111111111111111111111111111" as Address;
16
+ const token = "0x2222222222222222222222222222222222222222" as Address;
17
+ const spender = "0x3333333333333333333333333333333333333333" as Address;
18
+ const txHash = `0x${"ab".repeat(32)}` as Hex;
19
+ const hashFor = (n: number) => `0x${n.toString(16).padStart(64, "0")}` as Hex;
20
+
21
+ interface Call {
22
+ method: string;
23
+ params?: unknown;
24
+ }
25
+
26
+ interface ChainState {
27
+ allowance: bigint;
28
+ balance: bigint;
29
+ /** USDT: transfer/approve return no data, and approve reverts non-zero to non-zero. */
30
+ usdt?: boolean;
31
+ /** Hashes whose receipt comes back reverted. */
32
+ reverted?: Set<Hex>;
33
+ }
34
+
35
+ const revert = () => Object.assign(new Error("execution reverted"), { code: 3, data: "0x" as Hex });
36
+
37
+ function mockProvider(state: ChainState) {
38
+ const calls: Call[] = [];
39
+ const sent: Hex[] = [];
40
+ const provider = {
41
+ async request({ method, params }: Call) {
42
+ calls.push({ method, params });
43
+ switch (method) {
44
+ case "eth_chainId":
45
+ return toHex(mainnet.id);
46
+ case "personal_sign":
47
+ return "0xsigned";
48
+ case "eth_sendTransaction": {
49
+ const [{ data }] = params as [{ data?: Hex }];
50
+ const hash = sent.length === 0 ? txHash : hashFor(sent.length + 1);
51
+ sent.push(hash);
52
+ if (data) {
53
+ const { functionName, args } = decodeFunctionData({ abi: erc20Abi, data });
54
+ if (functionName === "approve" && !state.reverted?.has(hash)) {
55
+ state.allowance = (args as [Address, bigint])[1];
56
+ }
57
+ }
58
+ return hash;
59
+ }
60
+ case "eth_getTransactionReceipt": {
61
+ const [hash] = params as [Hex];
62
+ if (!sent.includes(hash)) return null;
63
+ return {
64
+ transactionHash: hash,
65
+ transactionIndex: "0x0",
66
+ blockHash: `0x${"cd".repeat(32)}`,
67
+ blockNumber: "0x10",
68
+ from: account,
69
+ to: token,
70
+ cumulativeGasUsed: "0x5208",
71
+ gasUsed: "0x5208",
72
+ effectiveGasPrice: "0x1",
73
+ contractAddress: null,
74
+ logs: [],
75
+ logsBloom: `0x${"00".repeat(256)}`,
76
+ status: state.reverted?.has(hash) ? "0x0" : "0x1",
77
+ type: "0x2",
78
+ };
79
+ }
80
+ case "eth_estimateGas":
81
+ return "0x5208";
82
+ case "eth_blockNumber":
83
+ return "0x10";
84
+ case "eth_call": {
85
+ const [{ data }] = params as [{ data: Hex }];
86
+ const { functionName, args } = decodeFunctionData({ abi: erc20Abi, data });
87
+ if (functionName === "allowance")
88
+ return encodeAbiParameters([{ type: "uint256" }], [state.allowance]);
89
+ if (functionName === "balanceOf")
90
+ return encodeAbiParameters([{ type: "uint256" }], [state.balance]);
91
+ if (functionName === "decimals") return encodeAbiParameters([{ type: "uint8" }], [18]);
92
+ if (!state.usdt) return encodeAbiParameters([{ type: "bool" }], [true]);
93
+ if (
94
+ functionName === "approve" &&
95
+ state.allowance > 0n &&
96
+ (args as [Address, bigint])[1] > 0n
97
+ ) {
98
+ throw revert();
99
+ }
100
+ return "0x";
101
+ }
102
+ default:
103
+ throw new Error(`unmocked ${method}`);
104
+ }
105
+ },
106
+ };
107
+ const sentTransaction = <T>() => {
108
+ const call = calls.find((c) => c.method === "eth_sendTransaction");
109
+ if (!call) throw new Error("no eth_sendTransaction");
110
+ return (call.params as [T])[0];
111
+ };
112
+ /** Each ERC-20 approve amount sent, in order. */
113
+ const approvals = () =>
114
+ calls
115
+ .filter((c) => c.method === "eth_sendTransaction")
116
+ .map((c) =>
117
+ decodeFunctionData({ abi: erc20Abi, data: (c.params as [{ data: Hex }])[0].data }),
118
+ )
119
+ .filter((d) => d.functionName === "approve")
120
+ .map((d) => (d.args as [Address, bigint])[1]);
121
+ return { provider, calls, sent, sentTransaction, approvals };
122
+ }
123
+
124
+ describe("evmClient", () => {
125
+ let state: ChainState;
126
+ let mock: ReturnType<typeof mockProvider>;
127
+ let client: ReturnType<typeof evmClient>;
128
+
129
+ beforeEach(() => {
130
+ state = { allowance: 0n, balance: 5n * 10n ** 18n };
131
+ mock = mockProvider(state);
132
+ client = evmClient({
133
+ provider: mock.provider as never,
134
+ account,
135
+ chain: mainnet,
136
+ publicClient: createPublicClient({
137
+ chain: mainnet,
138
+ pollingInterval: 1,
139
+ transport: custom(mock.provider),
140
+ }),
141
+ });
142
+ });
143
+
144
+ it("shares the common client shape", () => {
145
+ expect(client.family).toBe("evm");
146
+ expect(client.address).toBe(account);
147
+ expect(client.chainId).toBe(1);
148
+ expect(client.capabilities).toEqual(["signMessage", "sendTransaction", "writeContract"]);
149
+ });
150
+
151
+ it("signs with personal_sign on the connected account", async () => {
152
+ await expect(client.signMessage("hello")).resolves.toBe("0xsigned");
153
+ const call = mock.calls.find((c) => c.method === "personal_sign");
154
+ expect(call?.params).toEqual([toHex("hello"), account]);
155
+ });
156
+
157
+ it("sends a transaction from the connected account", async () => {
158
+ await expect(client.sendTransaction({ to: spender, value: 1n })).resolves.toBe(txHash);
159
+ const tx = mock.sentTransaction<{ from: Address; to: Address; value: Hex }>();
160
+ expect(tx.from.toLowerCase()).toBe(account.toLowerCase());
161
+ expect(tx.to).toBe(spender);
162
+ expect(tx.value).toBe("0x1");
163
+ });
164
+
165
+ it("writes a contract call", async () => {
166
+ await client.writeContract({
167
+ address: token,
168
+ abi: erc20Abi,
169
+ functionName: "transfer",
170
+ args: [spender, 7n],
171
+ });
172
+ const tx = mock.sentTransaction<{ to: Address; data: Hex }>();
173
+ expect(tx.to).toBe(token);
174
+ expect(decodeFunctionData({ abi: erc20Abi, data: tx.data })).toEqual({
175
+ functionName: "transfer",
176
+ args: [spender, 7n],
177
+ });
178
+ });
179
+
180
+ it("simulates an ERC-20 transfer before sending it", async () => {
181
+ await expect(client.erc20.transfer({ token, to: spender, amount: 3n })).resolves.toBe(txHash);
182
+ const methods = mock.calls.map((c) => c.method);
183
+ expect(methods.indexOf("eth_call")).toBeLessThan(methods.indexOf("eth_sendTransaction"));
184
+ const tx = mock.sentTransaction<{ data: Hex }>();
185
+ expect(decodeFunctionData({ abi: erc20Abi, data: tx.data })).toEqual({
186
+ functionName: "transfer",
187
+ args: [spender, 3n],
188
+ });
189
+ });
190
+
191
+ it("approves a spender", async () => {
192
+ await client.erc20.approve({ token, spender, amount: 9n });
193
+ const tx = mock.sentTransaction<{ data: Hex }>();
194
+ expect(decodeFunctionData({ abi: erc20Abi, data: tx.data })).toEqual({
195
+ functionName: "approve",
196
+ args: [spender, 9n],
197
+ });
198
+ });
199
+
200
+ it("reads balance, allowance and decimals", async () => {
201
+ state.allowance = 4n;
202
+ await expect(client.erc20.balanceOf(token)).resolves.toBe(5n * 10n ** 18n);
203
+ await expect(client.erc20.allowance(token, spender)).resolves.toBe(4n);
204
+ await expect(client.erc20.decimals(token)).resolves.toBe(18);
205
+ });
206
+
207
+ it("skips the approval when the allowance already covers the amount", async () => {
208
+ state.allowance = 100n;
209
+ await expect(client.erc20.ensureAllowance({ token, spender, amount: 50n })).resolves.toBeNull();
210
+ expect(mock.calls.some((c) => c.method === "eth_sendTransaction")).toBe(false);
211
+ });
212
+
213
+ it("sends transfer and approve to a token that returns nothing, as USDT does", async () => {
214
+ state.usdt = true;
215
+ await expect(client.erc20.transfer({ token, to: spender, amount: 3n })).resolves.toBe(txHash);
216
+ await expect(client.erc20.approve({ token, spender, amount: 9n })).resolves.toBe(hashFor(2));
217
+ });
218
+
219
+ it("approves from a zero allowance and waits for the approval to be mined", async () => {
220
+ await expect(client.erc20.ensureAllowance({ token, spender, amount: 50n })).resolves.toBe(
221
+ txHash,
222
+ );
223
+ expect(mock.approvals()).toEqual([50n]);
224
+ const methods = mock.calls.map((c) => c.method);
225
+ expect(methods.indexOf("eth_getTransactionReceipt")).toBeGreaterThan(
226
+ methods.indexOf("eth_sendTransaction"),
227
+ );
228
+ });
229
+
230
+ it("resets a non-zero allowance to 0 before raising it, which USDT requires", async () => {
231
+ state.usdt = true;
232
+ state.allowance = 5n;
233
+ await expect(client.erc20.ensureAllowance({ token, spender, amount: 50n })).resolves.toBe(
234
+ hashFor(2),
235
+ );
236
+ expect(mock.approvals()).toEqual([0n, 50n]);
237
+ expect(state.allowance).toBe(50n);
238
+ const receipts = mock.calls.filter((c) => c.method === "eth_getTransactionReceipt");
239
+ expect(receipts.map((c) => (c.params as [Hex])[0])).toContain(txHash);
240
+ });
241
+
242
+ it("throws when the approval reverts", async () => {
243
+ state.reverted = new Set([txHash]);
244
+ await expect(client.erc20.ensureAllowance({ token, spender, amount: 50n })).rejects.toThrow(
245
+ `approve ${txHash} reverted`,
246
+ );
247
+ expect(state.allowance).toBe(0n);
248
+ });
249
+
250
+ it("stops at a reverted reset and never sends the second approval", async () => {
251
+ state.usdt = true;
252
+ state.allowance = 5n;
253
+ state.reverted = new Set([txHash]);
254
+ await expect(client.erc20.ensureAllowance({ token, spender, amount: 50n })).rejects.toThrow(
255
+ /reverted/,
256
+ );
257
+ expect(mock.approvals()).toEqual([0n]);
258
+ });
259
+
260
+ it("wraps an existing viem wallet client", () => {
261
+ const wrapped = evmClient({ walletClient: client.walletClient });
262
+ expect(wrapped.address).toBe(account);
263
+ expect(wrapped.chain.id).toBe(1);
264
+ });
265
+ });
@@ -0,0 +1,223 @@
1
+ import {
2
+ createPublicClient,
3
+ createWalletClient,
4
+ custom,
5
+ erc20Abi,
6
+ http,
7
+ type Abi,
8
+ type Account,
9
+ type Address,
10
+ type Chain,
11
+ type ContractFunctionArgs,
12
+ type ContractFunctionName,
13
+ type EIP1193Provider,
14
+ type Hash,
15
+ type Hex,
16
+ type PublicClient,
17
+ type SendTransactionParameters,
18
+ type TransactionReceipt,
19
+ type Transport,
20
+ type WalletClient,
21
+ type WriteContractParameters,
22
+ } from "viem";
23
+ import type { ChainClient, ClientCapability } from "./types";
24
+
25
+ /** A viem wallet client with its account and chain hoisted, the shape wagmi's getWalletClient returns. */
26
+ export type EvmWalletClient = WalletClient<Transport, Chain, Account>;
27
+
28
+ type WritableFunctionName<abi extends Abi | readonly unknown[]> = ContractFunctionName<
29
+ abi,
30
+ "nonpayable" | "payable"
31
+ >;
32
+
33
+ export type EvmWriteContractParameters<
34
+ abi extends Abi | readonly unknown[] = Abi,
35
+ functionName extends WritableFunctionName<abi> = WritableFunctionName<abi>,
36
+ args extends ContractFunctionArgs<abi, "nonpayable" | "payable", functionName> =
37
+ ContractFunctionArgs<abi, "nonpayable" | "payable", functionName>,
38
+ > = WriteContractParameters<abi, functionName, args, Chain, Account>;
39
+
40
+ export type EvmSendTransactionParameters = SendTransactionParameters<Chain, Account>;
41
+
42
+ export interface Erc20Actions {
43
+ balanceOf(token: Address, owner?: Address): Promise<bigint>;
44
+ allowance(token: Address, spender: Address, owner?: Address): Promise<bigint>;
45
+ decimals(token: Address): Promise<number>;
46
+ /** Simulates, then sends `transfer(to, amount)`. `amount` is in the token's base units. */
47
+ transfer(args: { token: Address; to: Address; amount: bigint }): Promise<Hash>;
48
+ /** Simulates, then sends `approve(spender, amount)`. */
49
+ approve(args: { token: Address; spender: Address; amount: bigint }): Promise<Hash>;
50
+ /**
51
+ * Approves `amount` only when the allowance is below it, and waits for that
52
+ * approval to be mined so a purchase call right after it sees the allowance.
53
+ * A non-zero allowance is reset to 0 first, since USDT refuses to move one
54
+ * non-zero allowance to another. Returns the final approval hash, or null
55
+ * when the allowance already covered it. Throws if an approval reverts.
56
+ */
57
+ ensureAllowance(args: { token: Address; spender: Address; amount: bigint }): Promise<Hash | null>;
58
+ }
59
+
60
+ export interface EvmClient extends ChainClient<"evm"> {
61
+ readonly address: Address;
62
+ readonly chainId: number;
63
+ readonly chain: Chain;
64
+ /** The wallet side: anything viem's wallet actions can do. */
65
+ readonly walletClient: EvmWalletClient;
66
+ /** Reads, simulation and receipts. */
67
+ readonly publicClient: PublicClient;
68
+ /** personal_sign; returns the 0x signature. */
69
+ signMessage(message: string): Promise<Hex>;
70
+ sendTransaction(parameters: EvmSendTransactionParameters): Promise<Hash>;
71
+ writeContract<
72
+ const abi extends Abi | readonly unknown[],
73
+ functionName extends WritableFunctionName<abi>,
74
+ args extends ContractFunctionArgs<abi, "nonpayable" | "payable", functionName>,
75
+ >(
76
+ parameters: EvmWriteContractParameters<abi, functionName, args>,
77
+ ): Promise<Hash>;
78
+ waitForTransactionReceipt(hash: Hash): Promise<TransactionReceipt>;
79
+ readonly erc20: Erc20Actions;
80
+ }
81
+
82
+ export type EvmClientConfig = (
83
+ | {
84
+ /** A viem wallet client, e.g. wagmi's `getWalletClient(config)`. */
85
+ walletClient: EvmWalletClient;
86
+ }
87
+ | {
88
+ /** An EIP-1193 provider: injected, MetaMask Connect, or the native WebView bridge. */
89
+ provider: EIP1193Provider;
90
+ account: Address;
91
+ chain: Chain;
92
+ }
93
+ ) & {
94
+ /** Reads go here. Defaults to an http client on `rpcUrl`, else the chain's default RPC. */
95
+ publicClient?: PublicClient;
96
+ rpcUrl?: string;
97
+ };
98
+
99
+ /**
100
+ * transfer and approve with no outputs. USDT and other pre-standard tokens
101
+ * return nothing, and simulating them against erc20Abi's `returns (bool)`
102
+ * fails to decode the empty result, so the helpers simulate against this.
103
+ */
104
+ const erc20WriteAbi = [
105
+ {
106
+ type: "function",
107
+ name: "transfer",
108
+ stateMutability: "nonpayable",
109
+ inputs: [
110
+ { name: "to", type: "address" },
111
+ { name: "amount", type: "uint256" },
112
+ ],
113
+ outputs: [],
114
+ },
115
+ {
116
+ type: "function",
117
+ name: "approve",
118
+ stateMutability: "nonpayable",
119
+ inputs: [
120
+ { name: "spender", type: "address" },
121
+ { name: "amount", type: "uint256" },
122
+ ],
123
+ outputs: [],
124
+ },
125
+ ] as const;
126
+
127
+ const capabilities: readonly ClientCapability[] = [
128
+ "signMessage",
129
+ "sendTransaction",
130
+ "writeContract",
131
+ ];
132
+
133
+ /** Bind a viem WalletClient and PublicClient into the mpo EVM client. */
134
+ export function evmClient(config: EvmClientConfig): EvmClient {
135
+ const walletClient: EvmWalletClient =
136
+ "walletClient" in config
137
+ ? config.walletClient
138
+ : createWalletClient({
139
+ account: config.account,
140
+ chain: config.chain,
141
+ transport: custom(config.provider),
142
+ });
143
+ const chain = walletClient.chain;
144
+ if (!chain) throw new Error("evmClient: the wallet client has no chain");
145
+ const publicClient =
146
+ config.publicClient ??
147
+ (createPublicClient({ chain, transport: http(config.rpcUrl) }) as PublicClient);
148
+ const account = walletClient.account;
149
+
150
+ const writeContract = (parameters: EvmWriteContractParameters) =>
151
+ walletClient.writeContract({ account, chain, ...parameters } as EvmWriteContractParameters);
152
+
153
+ const simulateAndWrite = async (parameters: {
154
+ address: Address;
155
+ functionName: "transfer" | "approve";
156
+ args: readonly [Address, bigint];
157
+ }): Promise<Hash> => {
158
+ const { request } = await publicClient.simulateContract({
159
+ account,
160
+ address: parameters.address,
161
+ abi: erc20WriteAbi,
162
+ functionName: parameters.functionName,
163
+ args: parameters.args,
164
+ });
165
+ return walletClient.writeContract({ ...request, account, chain } as EvmWriteContractParameters);
166
+ };
167
+
168
+ const approveAndWait = async (token: Address, spender: Address, amount: bigint) => {
169
+ 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`);
172
+ return hash;
173
+ };
174
+
175
+ const erc20: Erc20Actions = {
176
+ balanceOf: (token, owner = account.address) =>
177
+ publicClient.readContract({
178
+ address: token,
179
+ abi: erc20Abi,
180
+ functionName: "balanceOf",
181
+ args: [owner],
182
+ }),
183
+ allowance: (token, spender, owner = account.address) =>
184
+ publicClient.readContract({
185
+ address: token,
186
+ abi: erc20Abi,
187
+ functionName: "allowance",
188
+ args: [owner, spender],
189
+ }),
190
+ decimals: (token) =>
191
+ publicClient.readContract({ address: token, abi: erc20Abi, functionName: "decimals" }),
192
+ transfer: ({ token, to, amount }) =>
193
+ simulateAndWrite({ address: token, functionName: "transfer", args: [to, amount] }),
194
+ approve: ({ token, spender, amount }) =>
195
+ simulateAndWrite({ address: token, functionName: "approve", args: [spender, amount] }),
196
+ async ensureAllowance({ token, spender, amount }) {
197
+ const current = await erc20.allowance(token, spender);
198
+ if (current >= amount) return null;
199
+ if (current > 0n) await approveAndWait(token, spender, 0n);
200
+ return approveAndWait(token, spender, amount);
201
+ },
202
+ };
203
+
204
+ return {
205
+ family: "evm",
206
+ address: account.address,
207
+ chainId: chain.id,
208
+ chain,
209
+ capabilities,
210
+ walletClient,
211
+ publicClient,
212
+ signMessage: (message) => walletClient.signMessage({ account, message }),
213
+ sendTransaction: (parameters) =>
214
+ walletClient.sendTransaction({
215
+ account,
216
+ chain,
217
+ ...parameters,
218
+ } as EvmSendTransactionParameters),
219
+ writeContract: writeContract as EvmClient["writeContract"],
220
+ waitForTransactionReceipt: (hash) => publicClient.waitForTransactionReceipt({ hash }),
221
+ erc20,
222
+ };
223
+ }
@@ -0,0 +1,169 @@
1
+ // @vitest-environment happy-dom
2
+ import { act, renderHook } from "@testing-library/react";
3
+ import { describe, expect, it } from "vitest";
4
+ import { gpgSignatureCovers } from "@multiplatform.one/gpg/signer";
5
+ import {
6
+ assertGpgSignature,
7
+ createGpgSigner,
8
+ gpgSignCommand,
9
+ useGpgSigner,
10
+ type GpgSignRequest,
11
+ } from "./gpg";
12
+
13
+ // Real `gpg --detach-sign --armor` output from a throwaway key (GnuPG 2.2.40):
14
+ // ed25519 over "sign me" with SHA-256 and SHA-512, ed25519 --textmode over
15
+ // "line one\nline two", RSA-2048 over "sign me".
16
+ const signature = [
17
+ "-----BEGIN PGP SIGNATURE-----",
18
+ "",
19
+ "iHUEABYIAB0WIQSTkGTQEc3oIZuZ2HdhXGslcfiVLQUCarhXCwAKCRBhXGslcfiV",
20
+ "LQ0LAQCXGCKwc0BQsbKZLC3dGO8G+JcugVvc8pXoLwVEhzHg5gEA9ymdo09WgZpg",
21
+ "ucbH3UOfZUAeoo8/udpgkA8x6FJQPQQ=",
22
+ "=ORhi",
23
+ "-----END PGP SIGNATURE-----",
24
+ ].join("\n");
25
+ const signatureSha512 = [
26
+ "-----BEGIN PGP SIGNATURE-----",
27
+ "",
28
+ "iHUEABYKAB0WIQSTkGTQEc3oIZuZ2HdhXGslcfiVLQUCarhXCwAKCRBhXGslcfiV",
29
+ "LRKTAQD9KN/ePxTrwxYDVP1Vtv+xWw/ADZTMOBIfM5mG662+UwEAjqKNIAR77Qtd",
30
+ "Yz5lxQdmvudeeATH/0mGrq7h+JHSxwA=",
31
+ "=lq5g",
32
+ "-----END PGP SIGNATURE-----",
33
+ ].join("\n");
34
+ const textSignature = [
35
+ "-----BEGIN PGP SIGNATURE-----",
36
+ "",
37
+ "iHUEARYIAB0WIQSTkGTQEc3oIZuZ2HdhXGslcfiVLQUCarhXCwAKCRBhXGslcfiV",
38
+ "LV9cAPwML2fE5cLHDhKjgnHpGjyBJqluiVRkkKwdA8UT64knWgEA9yLAavBGXwOR",
39
+ "VJ6lQNJ4dEUzc4PcrhSY/XoXchB2/wI=",
40
+ "=3t6i",
41
+ "-----END PGP SIGNATURE-----",
42
+ ].join("\n");
43
+ const rsaSignature = [
44
+ "-----BEGIN PGP SIGNATURE-----",
45
+ "",
46
+ "iQFIBAABCgAyFiEE5BSx1a7VdcvuJBKxk/hBDWJyGKcFAmq4VwsUHHJzYUBleGFt",
47
+ "cGxlLmludmFsaWQACgkQk/hBDWJyGKfxuAf/RpMSEstfkVr+LSVbqdqvUwb+eFvS",
48
+ "g257dJ/p75cyySijNHMJiKz/Eg++CxGslryotHAse8cDhhaVNdvhsyWdXgeZAlMw",
49
+ "Yb+PN/Hyr185HXMzVGEm5mbyHOZoh1e68K+BZRRW7g8mu32GxuMPlCfSEJ8Ca+cH",
50
+ "JRRm3gdIXejJzYL8+ECHB1ZA/5rrjMRoluCpzIaO/JuOrUka488bEpZa0SM5R/E0",
51
+ "oxgNj/5h9WV99mIBTKP6uPhsduwLOmETKSzJ53wMqND7DUyVhehMcFh0jR39QQWj",
52
+ "/pFp7YB8/krLA03SRbLuuwSJ0tX9Pjb8pXxTUUnnht9+WuxQSIMYFCvtEg==",
53
+ "=TLuY",
54
+ "-----END PGP SIGNATURE-----",
55
+ ].join("\n");
56
+ const publicKey = [
57
+ "-----BEGIN PGP PUBLIC KEY BLOCK-----",
58
+ "",
59
+ "mDMEarhXCxYJKwYBBAHaRw8BAQdAMFGusqeWs1dEHGDmMnoDwOBl5noKtQUIGORr",
60
+ "ONGF5GC0JW1wbyBmaXh0dXJlIDxmaXh0dXJlQGV4YW1wbGUuaW52YWxpZD6IkAQT",
61
+ "FggAOBYhBJOQZNARzeghm5nYd2FcayVx+JUtBQJquFcLAhsDBQsJCAcCBhUKCQgL",
62
+ "AgQWAgMBAh4BAheAAAoJEGFcayVx+JUt4OoA/1D+/ZAGt3HeS8d7oLydIaRK2s8h",
63
+ "Ew8OhTBk7hzPJKHAAQD7T5AOlLH3r+MzFkqawLdlWy1FnUiVrwyqIrLDvmniCA==",
64
+ "=yro2",
65
+ "-----END PGP PUBLIC KEY BLOCK-----",
66
+ ].join("\n");
67
+ const blob = `${signature}\n${publicKey}`;
68
+
69
+ const pendingOf = (signer: ReturnType<typeof createGpgSigner>) => signer.pending as GpgSignRequest;
70
+
71
+ describe("GPG signer", () => {
72
+ it("parks a request with the terminal command and resolves with the pasted blob", async () => {
73
+ const signer = createGpgSigner();
74
+ expect(signer.family).toBe("gpg");
75
+ expect(signer.address).toBeNull();
76
+ const signed = signer.signMessage("sign me");
77
+ expect(signer.pending).toEqual({ message: "sign me", command: gpgSignCommand("sign me") });
78
+ signer.submit(`\n ${blob}\n`, pendingOf(signer));
79
+ await expect(signed).resolves.toBe(blob);
80
+ expect(signer.pending).toBeNull();
81
+ });
82
+
83
+ it("keeps the request pending when the paste is missing a block", async () => {
84
+ const signer = createGpgSigner();
85
+ const signed = signer.signMessage("sign me");
86
+ expect(() => signer.submit(signature, pendingOf(signer))).toThrow(/PUBLIC KEY/);
87
+ expect(signer.pending?.message).toBe("sign me");
88
+ signer.submit(blob, pendingOf(signer));
89
+ await expect(signed).resolves.toBe(blob);
90
+ });
91
+
92
+ it("refuses a paste for a superseded request, even one for the same message", async () => {
93
+ const signer = createGpgSigner();
94
+ const first = signer.signMessage("sign me");
95
+ const stale = pendingOf(signer);
96
+ const second = signer.signMessage("sign me");
97
+ await expect(first).rejects.toThrow(/superseded/);
98
+ expect(() => signer.submit(blob, stale)).toThrow(/superseded/);
99
+ expect(signer.pending).not.toBe(stale);
100
+ signer.submit(blob, pendingOf(signer));
101
+ await expect(second).resolves.toBe(blob);
102
+ });
103
+
104
+ it("refuses a signature over a different message and keeps the request", async () => {
105
+ const signer = createGpgSigner();
106
+ const signed = signer.signMessage("sign me, nonce 2");
107
+ const request = pendingOf(signer);
108
+ expect(() => signer.submit(blob, request)).toThrow(/different message/);
109
+ expect(signer.pending).toBe(request);
110
+ signer.cancel();
111
+ await expect(signed).rejects.toThrow(/cancelled/);
112
+ });
113
+
114
+ it("rejects on cancel and when a newer request replaces it", async () => {
115
+ const signer = createGpgSigner();
116
+ const first = signer.signMessage("one");
117
+ const second = signer.signMessage("two");
118
+ await expect(first).rejects.toThrow(/superseded/);
119
+ expect(signer.pending?.message).toBe("two");
120
+ const request = pendingOf(signer);
121
+ signer.cancel();
122
+ await expect(second).rejects.toThrow(/cancelled/);
123
+ expect(() => signer.submit(blob, request)).toThrow(/No GPG signature was requested/);
124
+ });
125
+
126
+ it("escapes single quotes so a message cannot break out of the command", () => {
127
+ expect(gpgSignCommand("it's")).toBe(
128
+ `{ printf %s 'it'\\''s' | gpg --detach-sign --armor; gpg --armor --export; }`,
129
+ );
130
+ });
131
+
132
+ it("tells which message a real gpg signature covers", () => {
133
+ expect(gpgSignatureCovers(blob, "sign me")).toBe(true);
134
+ expect(gpgSignatureCovers(blob, "sign me!")).toBe(false);
135
+ expect(gpgSignatureCovers(signatureSha512, "sign me")).toBe(true);
136
+ expect(gpgSignatureCovers(rsaSignature, "sign me")).toBe(true);
137
+ expect(gpgSignatureCovers(rsaSignature, "sign you")).toBe(false);
138
+ // --textmode hashes CRLF line endings, so both spellings of the message match.
139
+ expect(gpgSignatureCovers(textSignature, "line one\nline two")).toBe(true);
140
+ expect(gpgSignatureCovers(textSignature, "line one\r\nline two")).toBe(true);
141
+ expect(gpgSignatureCovers(textSignature, "line one\nline 2")).toBe(false);
142
+ expect(() => gpgSignatureCovers(publicKey, "sign me")).toThrow(/No PGP SIGNATURE/);
143
+ });
144
+
145
+ it("trims a complete paste and rejects an incomplete one", () => {
146
+ expect(assertGpgSignature(` ${blob} `)).toBe(blob);
147
+ expect(() => assertGpgSignature("nope")).toThrow(/FULL output/);
148
+ });
149
+
150
+ it("re-renders a subscribed component as requests come and go", async () => {
151
+ const signer = createGpgSigner();
152
+ const { result } = renderHook(() => useGpgSigner(signer).pending);
153
+ expect(result.current).toBeNull();
154
+ let signed!: Promise<string>;
155
+ act(() => {
156
+ signed = signer.signMessage("sign me");
157
+ });
158
+ expect(result.current?.message).toBe("sign me");
159
+ act(() => signer.submit(blob, pendingOf(signer)));
160
+ expect(result.current).toBeNull();
161
+ await expect(signed).resolves.toBe(blob);
162
+ });
163
+
164
+ it("shares one app-wide signer when none is passed", () => {
165
+ const a = renderHook(() => useGpgSigner());
166
+ const b = renderHook(() => useGpgSigner());
167
+ expect(a.result.current).toBe(b.result.current);
168
+ });
169
+ });
@@ -0,0 +1,8 @@
1
+ export {
2
+ assertGpgSignature,
3
+ createGpgSigner,
4
+ gpgSignCommand,
5
+ useGpgSigner,
6
+ type GpgSigner,
7
+ type GpgSignRequest,
8
+ } from "@multiplatform.one/gpg/signer";