@mysten/dapp-kit 0.0.0-experimental-20230928204256

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 (444) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/LICENSE +201 -0
  3. package/README.md +0 -0
  4. package/dist/cjs/components/AccountDropdownMenu.css +41 -0
  5. package/dist/cjs/components/AccountDropdownMenu.css.css +41 -0
  6. package/dist/cjs/components/AccountDropdownMenu.css.css.map +7 -0
  7. package/dist/cjs/components/AccountDropdownMenu.css.d.ts +5 -0
  8. package/dist/cjs/components/AccountDropdownMenu.css.js +35 -0
  9. package/dist/cjs/components/AccountDropdownMenu.css.js.map +7 -0
  10. package/dist/cjs/components/AccountDropdownMenu.css.map +7 -0
  11. package/dist/cjs/components/AccountDropdownMenu.d.ts +6 -0
  12. package/dist/cjs/components/AccountDropdownMenu.js +216 -0
  13. package/dist/cjs/components/AccountDropdownMenu.js.map +7 -0
  14. package/dist/cjs/components/ConnectButton.css +250 -0
  15. package/dist/cjs/components/ConnectButton.css.map +7 -0
  16. package/dist/cjs/components/ConnectButton.d.ts +6 -0
  17. package/dist/cjs/components/ConnectButton.js +580 -0
  18. package/dist/cjs/components/ConnectButton.js.map +7 -0
  19. package/dist/cjs/components/SuiClientProvider.d.ts +26 -0
  20. package/dist/cjs/components/SuiClientProvider.js +69 -0
  21. package/dist/cjs/components/SuiClientProvider.js.map +7 -0
  22. package/dist/cjs/components/WalletProvider.d.ts +20 -0
  23. package/dist/cjs/components/WalletProvider.js +470 -0
  24. package/dist/cjs/components/WalletProvider.js.map +7 -0
  25. package/dist/cjs/components/connect-modal/ConnectModal.css +209 -0
  26. package/dist/cjs/components/connect-modal/ConnectModal.css.css +109 -0
  27. package/dist/cjs/components/connect-modal/ConnectModal.css.css.map +7 -0
  28. package/dist/cjs/components/connect-modal/ConnectModal.css.d.ts +12 -0
  29. package/dist/cjs/components/connect-modal/ConnectModal.css.js +49 -0
  30. package/dist/cjs/components/connect-modal/ConnectModal.css.js.map +7 -0
  31. package/dist/cjs/components/connect-modal/ConnectModal.css.map +7 -0
  32. package/dist/cjs/components/connect-modal/ConnectModal.d.ts +6 -0
  33. package/dist/cjs/components/connect-modal/ConnectModal.js +421 -0
  34. package/dist/cjs/components/connect-modal/ConnectModal.js.map +7 -0
  35. package/dist/cjs/components/connect-modal/InfoSection.css +7 -0
  36. package/dist/cjs/components/connect-modal/InfoSection.css.css +7 -0
  37. package/dist/cjs/components/connect-modal/InfoSection.css.css.map +7 -0
  38. package/dist/cjs/components/connect-modal/InfoSection.css.d.ts +3 -0
  39. package/dist/cjs/components/connect-modal/InfoSection.css.js +31 -0
  40. package/dist/cjs/components/connect-modal/InfoSection.css.js.map +7 -0
  41. package/dist/cjs/components/connect-modal/InfoSection.css.map +7 -0
  42. package/dist/cjs/components/connect-modal/InfoSection.d.ts +6 -0
  43. package/dist/cjs/components/connect-modal/InfoSection.js +40 -0
  44. package/dist/cjs/components/connect-modal/InfoSection.js.map +7 -0
  45. package/dist/cjs/components/connect-modal/views/ConnectionStatus.css +26 -0
  46. package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.css +26 -0
  47. package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.css.map +7 -0
  48. package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.d.ts +5 -0
  49. package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.js +35 -0
  50. package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.js.map +7 -0
  51. package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.map +7 -0
  52. package/dist/cjs/components/connect-modal/views/ConnectionStatus.d.ts +8 -0
  53. package/dist/cjs/components/connect-modal/views/ConnectionStatus.js +77 -0
  54. package/dist/cjs/components/connect-modal/views/ConnectionStatus.js.map +7 -0
  55. package/dist/cjs/components/connect-modal/views/GettingStarted.css +22 -0
  56. package/dist/cjs/components/connect-modal/views/GettingStarted.css.css +15 -0
  57. package/dist/cjs/components/connect-modal/views/GettingStarted.css.css.map +7 -0
  58. package/dist/cjs/components/connect-modal/views/GettingStarted.css.d.ts +4 -0
  59. package/dist/cjs/components/connect-modal/views/GettingStarted.css.js +33 -0
  60. package/dist/cjs/components/connect-modal/views/GettingStarted.css.js.map +7 -0
  61. package/dist/cjs/components/connect-modal/views/GettingStarted.css.map +7 -0
  62. package/dist/cjs/components/connect-modal/views/GettingStarted.d.ts +1 -0
  63. package/dist/cjs/components/connect-modal/views/GettingStarted.js +69 -0
  64. package/dist/cjs/components/connect-modal/views/GettingStarted.js.map +7 -0
  65. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css +22 -0
  66. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.css +15 -0
  67. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.css.map +7 -0
  68. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.d.ts +3 -0
  69. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.js +31 -0
  70. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.js.map +7 -0
  71. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.map +7 -0
  72. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.d.ts +1 -0
  73. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.js +57 -0
  74. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.js.map +7 -0
  75. package/dist/cjs/components/connect-modal/wallet-list/WalletList.css +37 -0
  76. package/dist/cjs/components/connect-modal/wallet-list/WalletList.css.css +7 -0
  77. package/dist/cjs/components/connect-modal/wallet-list/WalletList.css.css.map +7 -0
  78. package/dist/cjs/components/connect-modal/wallet-list/WalletList.css.d.ts +1 -0
  79. package/dist/cjs/components/connect-modal/wallet-list/WalletList.css.js +27 -0
  80. package/dist/cjs/components/connect-modal/wallet-list/WalletList.css.js.map +7 -0
  81. package/dist/cjs/components/connect-modal/wallet-list/WalletList.css.map +7 -0
  82. package/dist/cjs/components/connect-modal/wallet-list/WalletList.d.ts +8 -0
  83. package/dist/cjs/components/connect-modal/wallet-list/WalletList.js +113 -0
  84. package/dist/cjs/components/connect-modal/wallet-list/WalletList.js.map +7 -0
  85. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css +30 -0
  86. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.css +30 -0
  87. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.css.map +7 -0
  88. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.d.ts +5 -0
  89. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.js +35 -0
  90. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.js.map +7 -0
  91. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.map +7 -0
  92. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.d.ts +9 -0
  93. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.js +43 -0
  94. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.js.map +7 -0
  95. package/dist/cjs/components/icons/BackIcon.d.ts +2 -0
  96. package/dist/cjs/components/icons/BackIcon.js +36 -0
  97. package/dist/cjs/components/icons/BackIcon.js.map +7 -0
  98. package/dist/cjs/components/icons/CheckIcon.d.ts +2 -0
  99. package/dist/cjs/components/icons/CheckIcon.js +36 -0
  100. package/dist/cjs/components/icons/CheckIcon.js.map +7 -0
  101. package/dist/cjs/components/icons/ChevronIcon.d.ts +2 -0
  102. package/dist/cjs/components/icons/ChevronIcon.js +39 -0
  103. package/dist/cjs/components/icons/ChevronIcon.js.map +7 -0
  104. package/dist/cjs/components/icons/CloseIcon.d.ts +2 -0
  105. package/dist/cjs/components/icons/CloseIcon.js +36 -0
  106. package/dist/cjs/components/icons/CloseIcon.js.map +7 -0
  107. package/dist/cjs/components/icons/SuiIcon.d.ts +2 -0
  108. package/dist/cjs/components/icons/SuiIcon.js +41 -0
  109. package/dist/cjs/components/icons/SuiIcon.js.map +7 -0
  110. package/dist/cjs/constants/walletMutationKeys.d.ts +12 -0
  111. package/dist/cjs/constants/walletMutationKeys.js +40 -0
  112. package/dist/cjs/constants/walletMutationKeys.js.map +7 -0
  113. package/dist/cjs/contexts/walletContext.d.ts +12 -0
  114. package/dist/cjs/contexts/walletContext.js +28 -0
  115. package/dist/cjs/contexts/walletContext.js.map +7 -0
  116. package/dist/cjs/errors/walletErrors.d.ts +22 -0
  117. package/dist/cjs/errors/walletErrors.js +37 -0
  118. package/dist/cjs/errors/walletErrors.js.map +7 -0
  119. package/dist/cjs/hooks/useSuiClient.d.ts +2 -0
  120. package/dist/cjs/hooks/useSuiClient.js +51 -0
  121. package/dist/cjs/hooks/useSuiClient.js.map +7 -0
  122. package/dist/cjs/hooks/useSuiClientInfiniteQuery.d.ts +25 -0
  123. package/dist/cjs/hooks/useSuiClientInfiniteQuery.js +66 -0
  124. package/dist/cjs/hooks/useSuiClientInfiniteQuery.js.map +7 -0
  125. package/dist/cjs/hooks/useSuiClientMutation.d.ts +4 -0
  126. package/dist/cjs/hooks/useSuiClientMutation.js +61 -0
  127. package/dist/cjs/hooks/useSuiClientMutation.js.map +7 -0
  128. package/dist/cjs/hooks/useSuiClientQuery.d.ts +18 -0
  129. package/dist/cjs/hooks/useSuiClientQuery.js +64 -0
  130. package/dist/cjs/hooks/useSuiClientQuery.js.map +7 -0
  131. package/dist/cjs/hooks/wallet/useAccounts.d.ts +4 -0
  132. package/dist/cjs/hooks/wallet/useAccounts.js +50 -0
  133. package/dist/cjs/hooks/wallet/useAccounts.js.map +7 -0
  134. package/dist/cjs/hooks/wallet/useAutoConnectWallet.d.ts +1 -0
  135. package/dist/cjs/hooks/wallet/useAutoConnectWallet.js +124 -0
  136. package/dist/cjs/hooks/wallet/useAutoConnectWallet.js.map +7 -0
  137. package/dist/cjs/hooks/wallet/useConnectWallet.d.ts +15 -0
  138. package/dist/cjs/hooks/wallet/useConnectWallet.js +90 -0
  139. package/dist/cjs/hooks/wallet/useConnectWallet.js.map +7 -0
  140. package/dist/cjs/hooks/wallet/useCurrentAccount.d.ts +4 -0
  141. package/dist/cjs/hooks/wallet/useCurrentAccount.js +50 -0
  142. package/dist/cjs/hooks/wallet/useCurrentAccount.js.map +7 -0
  143. package/dist/cjs/hooks/wallet/useCurrentWallet.d.ts +4 -0
  144. package/dist/cjs/hooks/wallet/useCurrentWallet.js +50 -0
  145. package/dist/cjs/hooks/wallet/useCurrentWallet.js.map +7 -0
  146. package/dist/cjs/hooks/wallet/useDisconnectWallet.d.ts +7 -0
  147. package/dist/cjs/hooks/wallet/useDisconnectWallet.js +95 -0
  148. package/dist/cjs/hooks/wallet/useDisconnectWallet.js.map +7 -0
  149. package/dist/cjs/hooks/wallet/useSignAndExecuteTransactionBlock.d.ts +13 -0
  150. package/dist/cjs/hooks/wallet/useSignAndExecuteTransactionBlock.js +114 -0
  151. package/dist/cjs/hooks/wallet/useSignAndExecuteTransactionBlock.js.map +7 -0
  152. package/dist/cjs/hooks/wallet/useSignPersonalMessage.d.ts +13 -0
  153. package/dist/cjs/hooks/wallet/useSignPersonalMessage.js +114 -0
  154. package/dist/cjs/hooks/wallet/useSignPersonalMessage.js.map +7 -0
  155. package/dist/cjs/hooks/wallet/useSignTransactionBlock.d.ts +13 -0
  156. package/dist/cjs/hooks/wallet/useSignTransactionBlock.js +114 -0
  157. package/dist/cjs/hooks/wallet/useSignTransactionBlock.js.map +7 -0
  158. package/dist/cjs/hooks/wallet/useSwitchAccount.d.ts +13 -0
  159. package/dist/cjs/hooks/wallet/useSwitchAccount.js +100 -0
  160. package/dist/cjs/hooks/wallet/useSwitchAccount.js.map +7 -0
  161. package/dist/cjs/hooks/wallet/useUnsafeBurnerWallet.d.ts +1 -0
  162. package/dist/cjs/hooks/wallet/useUnsafeBurnerWallet.js +181 -0
  163. package/dist/cjs/hooks/wallet/useUnsafeBurnerWallet.js.map +7 -0
  164. package/dist/cjs/hooks/wallet/useWalletPropertiesChanged.d.ts +4 -0
  165. package/dist/cjs/hooks/wallet/useWalletPropertiesChanged.js +68 -0
  166. package/dist/cjs/hooks/wallet/useWalletPropertiesChanged.js.map +7 -0
  167. package/dist/cjs/hooks/wallet/useWalletStore.d.ts +2 -0
  168. package/dist/cjs/hooks/wallet/useWalletStore.js +43 -0
  169. package/dist/cjs/hooks/wallet/useWalletStore.js.map +7 -0
  170. package/dist/cjs/hooks/wallet/useWallets.d.ts +4 -0
  171. package/dist/cjs/hooks/wallet/useWallets.js +50 -0
  172. package/dist/cjs/hooks/wallet/useWallets.js.map +7 -0
  173. package/dist/cjs/hooks/wallet/useWalletsChanged.d.ts +5 -0
  174. package/dist/cjs/hooks/wallet/useWalletsChanged.js +85 -0
  175. package/dist/cjs/hooks/wallet/useWalletsChanged.js.map +7 -0
  176. package/dist/cjs/index.css +250 -0
  177. package/dist/cjs/index.css.map +7 -0
  178. package/dist/cjs/index.d.ts +18 -0
  179. package/dist/cjs/index.js +1152 -0
  180. package/dist/cjs/index.js.map +7 -0
  181. package/dist/cjs/package.json +5 -0
  182. package/dist/cjs/types/utilityTypes.d.ts +1 -0
  183. package/dist/cjs/types/utilityTypes.js +19 -0
  184. package/dist/cjs/types/utilityTypes.js.map +7 -0
  185. package/dist/cjs/types.d.ts +1 -0
  186. package/dist/cjs/types.js +19 -0
  187. package/dist/cjs/types.js.map +7 -0
  188. package/dist/cjs/utils/assertUnreachable.d.ts +4 -0
  189. package/dist/cjs/utils/assertUnreachable.js +29 -0
  190. package/dist/cjs/utils/assertUnreachable.js.map +7 -0
  191. package/dist/cjs/utils/walletUtils.d.ts +2 -0
  192. package/dist/cjs/utils/walletUtils.js +40 -0
  193. package/dist/cjs/utils/walletUtils.js.map +7 -0
  194. package/dist/cjs/walletStore.d.ts +35 -0
  195. package/dist/cjs/walletStore.js +100 -0
  196. package/dist/cjs/walletStore.js.map +7 -0
  197. package/dist/esm/components/AccountDropdownMenu.css +41 -0
  198. package/dist/esm/components/AccountDropdownMenu.css.css +41 -0
  199. package/dist/esm/components/AccountDropdownMenu.css.css.map +7 -0
  200. package/dist/esm/components/AccountDropdownMenu.css.d.ts +5 -0
  201. package/dist/esm/components/AccountDropdownMenu.css.js +14 -0
  202. package/dist/esm/components/AccountDropdownMenu.css.js.map +7 -0
  203. package/dist/esm/components/AccountDropdownMenu.css.map +7 -0
  204. package/dist/esm/components/AccountDropdownMenu.d.ts +6 -0
  205. package/dist/esm/components/AccountDropdownMenu.js +185 -0
  206. package/dist/esm/components/AccountDropdownMenu.js.map +7 -0
  207. package/dist/esm/components/ConnectButton.css +250 -0
  208. package/dist/esm/components/ConnectButton.css.map +7 -0
  209. package/dist/esm/components/ConnectButton.d.ts +6 -0
  210. package/dist/esm/components/ConnectButton.js +547 -0
  211. package/dist/esm/components/ConnectButton.js.map +7 -0
  212. package/dist/esm/components/SuiClientProvider.d.ts +26 -0
  213. package/dist/esm/components/SuiClientProvider.js +48 -0
  214. package/dist/esm/components/SuiClientProvider.js.map +7 -0
  215. package/dist/esm/components/WalletProvider.d.ts +20 -0
  216. package/dist/esm/components/WalletProvider.js +450 -0
  217. package/dist/esm/components/WalletProvider.js.map +7 -0
  218. package/dist/esm/components/connect-modal/ConnectModal.css +209 -0
  219. package/dist/esm/components/connect-modal/ConnectModal.css.css +109 -0
  220. package/dist/esm/components/connect-modal/ConnectModal.css.css.map +7 -0
  221. package/dist/esm/components/connect-modal/ConnectModal.css.d.ts +12 -0
  222. package/dist/esm/components/connect-modal/ConnectModal.css.js +28 -0
  223. package/dist/esm/components/connect-modal/ConnectModal.css.js.map +7 -0
  224. package/dist/esm/components/connect-modal/ConnectModal.css.map +7 -0
  225. package/dist/esm/components/connect-modal/ConnectModal.d.ts +6 -0
  226. package/dist/esm/components/connect-modal/ConnectModal.js +390 -0
  227. package/dist/esm/components/connect-modal/ConnectModal.js.map +7 -0
  228. package/dist/esm/components/connect-modal/InfoSection.css +7 -0
  229. package/dist/esm/components/connect-modal/InfoSection.css.css +7 -0
  230. package/dist/esm/components/connect-modal/InfoSection.css.css.map +7 -0
  231. package/dist/esm/components/connect-modal/InfoSection.css.d.ts +3 -0
  232. package/dist/esm/components/connect-modal/InfoSection.css.js +10 -0
  233. package/dist/esm/components/connect-modal/InfoSection.css.js.map +7 -0
  234. package/dist/esm/components/connect-modal/InfoSection.css.map +7 -0
  235. package/dist/esm/components/connect-modal/InfoSection.d.ts +6 -0
  236. package/dist/esm/components/connect-modal/InfoSection.js +17 -0
  237. package/dist/esm/components/connect-modal/InfoSection.js.map +7 -0
  238. package/dist/esm/components/connect-modal/views/ConnectionStatus.css +26 -0
  239. package/dist/esm/components/connect-modal/views/ConnectionStatus.css.css +26 -0
  240. package/dist/esm/components/connect-modal/views/ConnectionStatus.css.css.map +7 -0
  241. package/dist/esm/components/connect-modal/views/ConnectionStatus.css.d.ts +5 -0
  242. package/dist/esm/components/connect-modal/views/ConnectionStatus.css.js +14 -0
  243. package/dist/esm/components/connect-modal/views/ConnectionStatus.css.js.map +7 -0
  244. package/dist/esm/components/connect-modal/views/ConnectionStatus.css.map +7 -0
  245. package/dist/esm/components/connect-modal/views/ConnectionStatus.d.ts +8 -0
  246. package/dist/esm/components/connect-modal/views/ConnectionStatus.js +46 -0
  247. package/dist/esm/components/connect-modal/views/ConnectionStatus.js.map +7 -0
  248. package/dist/esm/components/connect-modal/views/GettingStarted.css +22 -0
  249. package/dist/esm/components/connect-modal/views/GettingStarted.css.css +15 -0
  250. package/dist/esm/components/connect-modal/views/GettingStarted.css.css.map +7 -0
  251. package/dist/esm/components/connect-modal/views/GettingStarted.css.d.ts +4 -0
  252. package/dist/esm/components/connect-modal/views/GettingStarted.css.js +12 -0
  253. package/dist/esm/components/connect-modal/views/GettingStarted.css.js.map +7 -0
  254. package/dist/esm/components/connect-modal/views/GettingStarted.css.map +7 -0
  255. package/dist/esm/components/connect-modal/views/GettingStarted.d.ts +1 -0
  256. package/dist/esm/components/connect-modal/views/GettingStarted.js +46 -0
  257. package/dist/esm/components/connect-modal/views/GettingStarted.js.map +7 -0
  258. package/dist/esm/components/connect-modal/views/WhatIsAWallet.css +22 -0
  259. package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.css +15 -0
  260. package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.css.map +7 -0
  261. package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.d.ts +3 -0
  262. package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.js +10 -0
  263. package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.js.map +7 -0
  264. package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.map +7 -0
  265. package/dist/esm/components/connect-modal/views/WhatIsAWallet.d.ts +1 -0
  266. package/dist/esm/components/connect-modal/views/WhatIsAWallet.js +34 -0
  267. package/dist/esm/components/connect-modal/views/WhatIsAWallet.js.map +7 -0
  268. package/dist/esm/components/connect-modal/wallet-list/WalletList.css +37 -0
  269. package/dist/esm/components/connect-modal/wallet-list/WalletList.css.css +7 -0
  270. package/dist/esm/components/connect-modal/wallet-list/WalletList.css.css.map +7 -0
  271. package/dist/esm/components/connect-modal/wallet-list/WalletList.css.d.ts +1 -0
  272. package/dist/esm/components/connect-modal/wallet-list/WalletList.css.js +6 -0
  273. package/dist/esm/components/connect-modal/wallet-list/WalletList.css.js.map +7 -0
  274. package/dist/esm/components/connect-modal/wallet-list/WalletList.css.map +7 -0
  275. package/dist/esm/components/connect-modal/wallet-list/WalletList.d.ts +8 -0
  276. package/dist/esm/components/connect-modal/wallet-list/WalletList.js +90 -0
  277. package/dist/esm/components/connect-modal/wallet-list/WalletList.js.map +7 -0
  278. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css +30 -0
  279. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.css +30 -0
  280. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.css.map +7 -0
  281. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.d.ts +5 -0
  282. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.js +14 -0
  283. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.js.map +7 -0
  284. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.map +7 -0
  285. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.d.ts +9 -0
  286. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.js +22 -0
  287. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.js.map +7 -0
  288. package/dist/esm/components/icons/BackIcon.d.ts +2 -0
  289. package/dist/esm/components/icons/BackIcon.js +15 -0
  290. package/dist/esm/components/icons/BackIcon.js.map +7 -0
  291. package/dist/esm/components/icons/CheckIcon.d.ts +2 -0
  292. package/dist/esm/components/icons/CheckIcon.js +15 -0
  293. package/dist/esm/components/icons/CheckIcon.js.map +7 -0
  294. package/dist/esm/components/icons/ChevronIcon.d.ts +2 -0
  295. package/dist/esm/components/icons/ChevronIcon.js +18 -0
  296. package/dist/esm/components/icons/ChevronIcon.js.map +7 -0
  297. package/dist/esm/components/icons/CloseIcon.d.ts +2 -0
  298. package/dist/esm/components/icons/CloseIcon.js +15 -0
  299. package/dist/esm/components/icons/CloseIcon.js.map +7 -0
  300. package/dist/esm/components/icons/SuiIcon.d.ts +2 -0
  301. package/dist/esm/components/icons/SuiIcon.js +20 -0
  302. package/dist/esm/components/icons/SuiIcon.js.map +7 -0
  303. package/dist/esm/constants/walletMutationKeys.d.ts +12 -0
  304. package/dist/esm/constants/walletMutationKeys.js +19 -0
  305. package/dist/esm/constants/walletMutationKeys.js.map +7 -0
  306. package/dist/esm/contexts/walletContext.d.ts +12 -0
  307. package/dist/esm/contexts/walletContext.js +7 -0
  308. package/dist/esm/contexts/walletContext.js.map +7 -0
  309. package/dist/esm/errors/walletErrors.d.ts +22 -0
  310. package/dist/esm/errors/walletErrors.js +16 -0
  311. package/dist/esm/errors/walletErrors.js.map +7 -0
  312. package/dist/esm/hooks/useSuiClient.d.ts +2 -0
  313. package/dist/esm/hooks/useSuiClient.js +30 -0
  314. package/dist/esm/hooks/useSuiClient.js.map +7 -0
  315. package/dist/esm/hooks/useSuiClientInfiniteQuery.d.ts +25 -0
  316. package/dist/esm/hooks/useSuiClientInfiniteQuery.js +45 -0
  317. package/dist/esm/hooks/useSuiClientInfiniteQuery.js.map +7 -0
  318. package/dist/esm/hooks/useSuiClientMutation.d.ts +4 -0
  319. package/dist/esm/hooks/useSuiClientMutation.js +40 -0
  320. package/dist/esm/hooks/useSuiClientMutation.js.map +7 -0
  321. package/dist/esm/hooks/useSuiClientQuery.d.ts +18 -0
  322. package/dist/esm/hooks/useSuiClientQuery.js +43 -0
  323. package/dist/esm/hooks/useSuiClientQuery.js.map +7 -0
  324. package/dist/esm/hooks/wallet/useAccounts.d.ts +4 -0
  325. package/dist/esm/hooks/wallet/useAccounts.js +27 -0
  326. package/dist/esm/hooks/wallet/useAccounts.js.map +7 -0
  327. package/dist/esm/hooks/wallet/useAutoConnectWallet.d.ts +1 -0
  328. package/dist/esm/hooks/wallet/useAutoConnectWallet.js +103 -0
  329. package/dist/esm/hooks/wallet/useAutoConnectWallet.js.map +7 -0
  330. package/dist/esm/hooks/wallet/useConnectWallet.d.ts +15 -0
  331. package/dist/esm/hooks/wallet/useConnectWallet.js +69 -0
  332. package/dist/esm/hooks/wallet/useConnectWallet.js.map +7 -0
  333. package/dist/esm/hooks/wallet/useCurrentAccount.d.ts +4 -0
  334. package/dist/esm/hooks/wallet/useCurrentAccount.js +27 -0
  335. package/dist/esm/hooks/wallet/useCurrentAccount.js.map +7 -0
  336. package/dist/esm/hooks/wallet/useCurrentWallet.d.ts +4 -0
  337. package/dist/esm/hooks/wallet/useCurrentWallet.js +27 -0
  338. package/dist/esm/hooks/wallet/useCurrentWallet.js.map +7 -0
  339. package/dist/esm/hooks/wallet/useDisconnectWallet.d.ts +7 -0
  340. package/dist/esm/hooks/wallet/useDisconnectWallet.js +74 -0
  341. package/dist/esm/hooks/wallet/useDisconnectWallet.js.map +7 -0
  342. package/dist/esm/hooks/wallet/useSignAndExecuteTransactionBlock.d.ts +13 -0
  343. package/dist/esm/hooks/wallet/useSignAndExecuteTransactionBlock.js +93 -0
  344. package/dist/esm/hooks/wallet/useSignAndExecuteTransactionBlock.js.map +7 -0
  345. package/dist/esm/hooks/wallet/useSignPersonalMessage.d.ts +13 -0
  346. package/dist/esm/hooks/wallet/useSignPersonalMessage.js +93 -0
  347. package/dist/esm/hooks/wallet/useSignPersonalMessage.js.map +7 -0
  348. package/dist/esm/hooks/wallet/useSignTransactionBlock.d.ts +13 -0
  349. package/dist/esm/hooks/wallet/useSignTransactionBlock.js +93 -0
  350. package/dist/esm/hooks/wallet/useSignTransactionBlock.js.map +7 -0
  351. package/dist/esm/hooks/wallet/useSwitchAccount.d.ts +13 -0
  352. package/dist/esm/hooks/wallet/useSwitchAccount.js +79 -0
  353. package/dist/esm/hooks/wallet/useSwitchAccount.js.map +7 -0
  354. package/dist/esm/hooks/wallet/useUnsafeBurnerWallet.d.ts +1 -0
  355. package/dist/esm/hooks/wallet/useUnsafeBurnerWallet.js +161 -0
  356. package/dist/esm/hooks/wallet/useUnsafeBurnerWallet.js.map +7 -0
  357. package/dist/esm/hooks/wallet/useWalletPropertiesChanged.d.ts +4 -0
  358. package/dist/esm/hooks/wallet/useWalletPropertiesChanged.js +47 -0
  359. package/dist/esm/hooks/wallet/useWalletPropertiesChanged.js.map +7 -0
  360. package/dist/esm/hooks/wallet/useWalletStore.d.ts +2 -0
  361. package/dist/esm/hooks/wallet/useWalletStore.js +22 -0
  362. package/dist/esm/hooks/wallet/useWalletStore.js.map +7 -0
  363. package/dist/esm/hooks/wallet/useWallets.d.ts +4 -0
  364. package/dist/esm/hooks/wallet/useWallets.js +27 -0
  365. package/dist/esm/hooks/wallet/useWallets.js.map +7 -0
  366. package/dist/esm/hooks/wallet/useWalletsChanged.d.ts +5 -0
  367. package/dist/esm/hooks/wallet/useWalletsChanged.js +64 -0
  368. package/dist/esm/hooks/wallet/useWalletsChanged.js.map +7 -0
  369. package/dist/esm/index.css +250 -0
  370. package/dist/esm/index.css.map +7 -0
  371. package/dist/esm/index.d.ts +18 -0
  372. package/dist/esm/index.js +1120 -0
  373. package/dist/esm/index.js.map +7 -0
  374. package/dist/esm/package.json +5 -0
  375. package/dist/esm/types/utilityTypes.d.ts +1 -0
  376. package/dist/esm/types/utilityTypes.js +1 -0
  377. package/dist/esm/types/utilityTypes.js.map +7 -0
  378. package/dist/esm/types.d.ts +1 -0
  379. package/dist/esm/types.js +1 -0
  380. package/dist/esm/types.js.map +7 -0
  381. package/dist/esm/utils/assertUnreachable.d.ts +4 -0
  382. package/dist/esm/utils/assertUnreachable.js +8 -0
  383. package/dist/esm/utils/assertUnreachable.js.map +7 -0
  384. package/dist/esm/utils/walletUtils.d.ts +2 -0
  385. package/dist/esm/utils/walletUtils.js +19 -0
  386. package/dist/esm/utils/walletUtils.js.map +7 -0
  387. package/dist/esm/walletStore.d.ts +35 -0
  388. package/dist/esm/walletStore.js +79 -0
  389. package/dist/esm/walletStore.js.map +7 -0
  390. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  391. package/dist/tsconfig.tsbuildinfo +1 -0
  392. package/package.json +95 -0
  393. package/src/components/AccountDropdownMenu.css.ts +48 -0
  394. package/src/components/AccountDropdownMenu.tsx +58 -0
  395. package/src/components/ConnectButton.tsx +21 -0
  396. package/src/components/SuiClientProvider.tsx +87 -0
  397. package/src/components/WalletProvider.tsx +93 -0
  398. package/src/components/connect-modal/ConnectModal.css.ts +135 -0
  399. package/src/components/connect-modal/ConnectModal.tsx +122 -0
  400. package/src/components/connect-modal/InfoSection.css.ts +14 -0
  401. package/src/components/connect-modal/InfoSection.tsx +18 -0
  402. package/src/components/connect-modal/views/ConnectionStatus.css.ts +32 -0
  403. package/src/components/connect-modal/views/ConnectionStatus.tsx +42 -0
  404. package/src/components/connect-modal/views/GettingStarted.css.ts +23 -0
  405. package/src/components/connect-modal/views/GettingStarted.tsx +33 -0
  406. package/src/components/connect-modal/views/WhatIsAWallet.css.ts +21 -0
  407. package/src/components/connect-modal/views/WhatIsAWallet.tsx +22 -0
  408. package/src/components/connect-modal/wallet-list/WalletList.css.ts +10 -0
  409. package/src/components/connect-modal/wallet-list/WalletList.tsx +41 -0
  410. package/src/components/connect-modal/wallet-list/WalletListItem.css.ts +36 -0
  411. package/src/components/connect-modal/wallet-list/WalletListItem.tsx +29 -0
  412. package/src/components/icons/BackIcon.tsx +15 -0
  413. package/src/components/icons/CheckIcon.tsx +15 -0
  414. package/src/components/icons/ChevronIcon.tsx +18 -0
  415. package/src/components/icons/CloseIcon.tsx +15 -0
  416. package/src/components/icons/SuiIcon.tsx +18 -0
  417. package/src/constants/walletMutationKeys.ts +20 -0
  418. package/src/contexts/walletContext.ts +8 -0
  419. package/src/errors/walletErrors.ts +24 -0
  420. package/src/hooks/useSuiClient.ts +22 -0
  421. package/src/hooks/useSuiClientInfiniteQuery.ts +63 -0
  422. package/src/hooks/useSuiClientMutation.ts +27 -0
  423. package/src/hooks/useSuiClientQuery.ts +58 -0
  424. package/src/hooks/wallet/useAccounts.ts +11 -0
  425. package/src/hooks/wallet/useAutoConnectWallet.ts +34 -0
  426. package/src/hooks/wallet/useConnectWallet.ts +64 -0
  427. package/src/hooks/wallet/useCurrentAccount.ts +11 -0
  428. package/src/hooks/wallet/useCurrentWallet.ts +11 -0
  429. package/src/hooks/wallet/useDisconnectWallet.ts +47 -0
  430. package/src/hooks/wallet/useSignAndExecuteTransactionBlock.ts +82 -0
  431. package/src/hooks/wallet/useSignPersonalMessage.ts +79 -0
  432. package/src/hooks/wallet/useSignTransactionBlock.ts +79 -0
  433. package/src/hooks/wallet/useSwitchAccount.ts +59 -0
  434. package/src/hooks/wallet/useUnsafeBurnerWallet.ts +144 -0
  435. package/src/hooks/wallet/useWalletPropertiesChanged.ts +29 -0
  436. package/src/hooks/wallet/useWalletStore.ts +18 -0
  437. package/src/hooks/wallet/useWallets.ts +11 -0
  438. package/src/hooks/wallet/useWalletsChanged.ts +40 -0
  439. package/src/index.ts +21 -0
  440. package/src/types/utilityTypes.ts +4 -0
  441. package/src/types.ts +4 -0
  442. package/src/utils/assertUnreachable.ts +9 -0
  443. package/src/utils/walletUtils.ts +32 -0
  444. package/src/walletStore.ts +115 -0
@@ -0,0 +1,21 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { style } from '@vanilla-extract/css';
5
+
6
+ export const container = style({
7
+ display: 'flex',
8
+ flexDirection: 'column',
9
+ alignItems: 'center',
10
+ });
11
+
12
+ export const title = style({});
13
+
14
+ export const content = style({
15
+ display: 'flex',
16
+ flexDirection: 'column',
17
+ justifyContent: 'center',
18
+ flexGrow: 1,
19
+ gap: 20,
20
+ padding: 40,
21
+ });
@@ -0,0 +1,22 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { InfoSection } from '../InfoSection.js';
5
+ import * as styles from './WhatIsAWallet.css.js';
6
+
7
+ export function WhatIsAWallet() {
8
+ return (
9
+ <div className={styles.container}>
10
+ <h2 className={styles.title}>What is a Wallet</h2>
11
+ <div className={styles.content}>
12
+ <InfoSection title="Easy Login">
13
+ No need to create new accounts and passwords for every website. Just connect your wallet
14
+ and get going.
15
+ </InfoSection>
16
+ <InfoSection title="Store your Digital Assets">
17
+ Send, receive, store, and display your digital assets like NFTs & coins.
18
+ </InfoSection>
19
+ </div>
20
+ </div>
21
+ );
22
+ }
@@ -0,0 +1,10 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { style } from '@vanilla-extract/css';
5
+
6
+ export const container = style({
7
+ display: 'flex',
8
+ flexDirection: 'column',
9
+ gap: '4px',
10
+ });
@@ -0,0 +1,41 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import type { WalletWithRequiredFeatures } from '@mysten/wallet-standard';
5
+
6
+ import { useWallets } from '../../../hooks/wallet/useWallets.js';
7
+ import { SuiIcon } from '../../icons/SuiIcon.js';
8
+ import * as styles from './WalletList.css.js';
9
+ import { WalletListItem } from './WalletListItem.js';
10
+
11
+ type WalletListProps = {
12
+ selectedWalletName?: string;
13
+ onPlaceholderClick: () => void;
14
+ onSelect: (wallet: WalletWithRequiredFeatures) => void;
15
+ };
16
+
17
+ export function WalletList({ selectedWalletName, onPlaceholderClick, onSelect }: WalletListProps) {
18
+ const wallets = useWallets();
19
+ return (
20
+ <ul className={styles.container}>
21
+ {wallets.length > 0 ? (
22
+ wallets.map((wallet) => (
23
+ <WalletListItem
24
+ key={wallet.name}
25
+ name={wallet.name}
26
+ icon={wallet.icon}
27
+ isSelected={wallet.name === selectedWalletName}
28
+ onClick={() => onSelect(wallet)}
29
+ />
30
+ ))
31
+ ) : (
32
+ <WalletListItem
33
+ name="Sui Wallet"
34
+ icon={<SuiIcon />}
35
+ onClick={onPlaceholderClick}
36
+ isSelected
37
+ />
38
+ )}
39
+ </ul>
40
+ );
41
+ }
@@ -0,0 +1,36 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { style } from '@vanilla-extract/css';
5
+
6
+ export const container = style({
7
+ padding: 8,
8
+ borderRadius: 8,
9
+ });
10
+
11
+ export const selectedContainer = style({
12
+ background: '#FFFFFF',
13
+ boxShadow: '0px 2px 6px rgba(0, 0, 0, 0.05)',
14
+ });
15
+
16
+ export const buttonContainer = style({
17
+ width: '100%',
18
+ display: 'flex',
19
+ alignItems: 'center',
20
+ gap: '8px',
21
+ });
22
+
23
+ export const walletName = style({
24
+ overflow: 'hidden',
25
+ textOverflow: 'ellipsis',
26
+ whiteSpace: 'nowrap',
27
+ });
28
+
29
+ export const walletIcon = style({
30
+ width: 28,
31
+ height: 28,
32
+ borderRadius: 6,
33
+ flexShrink: 0,
34
+ background: 'white',
35
+ objectFit: 'cover',
36
+ });
@@ -0,0 +1,29 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { clsx } from 'clsx';
5
+ import type { ReactNode } from 'react';
6
+
7
+ import * as styles from './WalletListItem.css.js';
8
+
9
+ type WalletListItemProps = {
10
+ name: string;
11
+ icon: ReactNode;
12
+ isSelected?: boolean;
13
+ onClick: () => void;
14
+ };
15
+
16
+ export function WalletListItem({ name, icon, onClick, isSelected = false }: WalletListItemProps) {
17
+ return (
18
+ <li className={clsx(styles.container, { [styles.selectedContainer]: isSelected })}>
19
+ <button className={styles.buttonContainer} type="button" onClick={onClick}>
20
+ {typeof icon === 'string' ? (
21
+ <img className={styles.walletIcon} src={icon} alt={`${name} logo`} />
22
+ ) : (
23
+ icon
24
+ )}
25
+ <div className={styles.walletName}>{name}</div>
26
+ </button>
27
+ </li>
28
+ );
29
+ }
@@ -0,0 +1,15 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import type { ComponentProps } from 'react';
5
+
6
+ export function BackIcon(props: ComponentProps<'svg'>) {
7
+ return (
8
+ <svg width={24} height={24} fill="none" xmlns="http://www.w3.org/2000/svg" {...props}>
9
+ <path
10
+ d="M7.57 12.262c0 .341.13.629.403.895l5.175 5.059c.204.205.45.307.751.307.609 0 1.101-.485 1.101-1.087 0-.293-.123-.574-.349-.8L10.14 12.27l4.511-4.375A1.13 1.13 0 0 0 15 7.087C15 6.485 14.508 6 13.9 6c-.295 0-.54.103-.752.308l-5.175 5.058c-.28.28-.404.56-.404.896Z"
11
+ fill="#383F47"
12
+ />
13
+ </svg>
14
+ );
15
+ }
@@ -0,0 +1,15 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import type { ComponentProps } from 'react';
5
+
6
+ export function CheckIcon(props: ComponentProps<'svg'>) {
7
+ return (
8
+ <svg xmlns="http://www.w3.org/2000/svg" width={16} height={16} fill="none" {...props}>
9
+ <path
10
+ fill="#007195"
11
+ d="m11.726 5.048-4.73 5.156-1.722-1.879a.72.72 0 0 0-.529-.23.722.722 0 0 0-.525.24.858.858 0 0 0-.22.573.86.86 0 0 0 .211.576l2.255 2.458c.14.153.332.24.53.24.2 0 .391-.087.532-.24l5.261-5.735A.86.86 0 0 0 13 5.63a.858.858 0 0 0-.22-.572.722.722 0 0 0-.525-.24.72.72 0 0 0-.529.23Z"
12
+ />
13
+ </svg>
14
+ );
15
+ }
@@ -0,0 +1,18 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import type { ComponentProps } from 'react';
5
+
6
+ export function ChevronIcon(props: ComponentProps<'svg'>) {
7
+ return (
8
+ <svg xmlns="http://www.w3.org/2000/svg" width={16} height={16} fill="none" {...props}>
9
+ <path
10
+ stroke="#A0B6C3"
11
+ strokeLinecap="round"
12
+ strokeLinejoin="round"
13
+ strokeWidth={1.5}
14
+ d="m4 6 4 4 4-4"
15
+ />
16
+ </svg>
17
+ );
18
+ }
@@ -0,0 +1,15 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import type { ComponentProps } from 'react';
5
+
6
+ export function CloseIcon(props: ComponentProps<'svg'>) {
7
+ return (
8
+ <svg width={10} height={10} fill="none" xmlns="http://www.w3.org/2000/svg" {...props}>
9
+ <path
10
+ d="M9.708.292a.999.999 0 0 0-1.413 0l-3.289 3.29L1.717.291A.999.999 0 0 0 .305 1.705l3.289 3.289-3.29 3.289a.999.999 0 1 0 1.413 1.412l3.29-3.289 3.288 3.29a.999.999 0 0 0 1.413-1.413l-3.29-3.29 3.29-3.288a.999.999 0 0 0 0-1.413Z"
11
+ fill="currentColor"
12
+ />
13
+ </svg>
14
+ );
15
+ }
@@ -0,0 +1,18 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import type { ComponentProps } from 'react';
5
+
6
+ export function SuiIcon(props: ComponentProps<'svg'>) {
7
+ return (
8
+ <svg width={28} height={28} fill="none" xmlns="http://www.w3.org/2000/svg" {...props}>
9
+ <rect width={28} height={28} rx={6} fill="#6FBCF0" />
10
+ <path
11
+ fillRule="evenodd"
12
+ clipRule="evenodd"
13
+ d="M7.942 20.527A6.875 6.875 0 0 0 13.957 24c2.51 0 4.759-1.298 6.015-3.473a6.875 6.875 0 0 0 0-6.945l-5.29-9.164a.837.837 0 0 0-1.45 0l-5.29 9.164a6.875 6.875 0 0 0 0 6.945Zm4.524-11.75 1.128-1.953a.418.418 0 0 1 .725 0l4.34 7.516a5.365 5.365 0 0 1 .449 4.442 4.675 4.675 0 0 0-.223-.73c-.599-1.512-1.954-2.68-4.029-3.47-1.426-.54-2.336-1.336-2.706-2.364-.476-1.326.021-2.77.316-3.44Zm-1.923 3.332L9.255 14.34a5.373 5.373 0 0 0 0 5.43 5.373 5.373 0 0 0 4.702 2.714 5.38 5.38 0 0 0 3.472-1.247c.125-.314.51-1.462.034-2.646-.44-1.093-1.5-1.965-3.15-2.594-1.864-.707-3.076-1.811-3.6-3.28a4.601 4.601 0 0 1-.17-.608Z"
14
+ fill="#fff"
15
+ />
16
+ </svg>
17
+ );
18
+ }
@@ -0,0 +1,20 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import type { MutationKey } from '@tanstack/react-query';
5
+
6
+ export const walletMutationKeys = {
7
+ all: { baseScope: 'wallet' },
8
+ connectWallet: formMutationKeyFn('connect-wallet'),
9
+ disconnectWallet: formMutationKeyFn('disconnect-wallet'),
10
+ signPersonalMessage: formMutationKeyFn('sign-personal-message'),
11
+ signTransactionBlock: formMutationKeyFn('sign-transaction-block'),
12
+ signAndExecuteTransactionBlock: formMutationKeyFn('sign-and-execute-transaction-block'),
13
+ switchAccount: formMutationKeyFn('switch-account'),
14
+ };
15
+
16
+ function formMutationKeyFn(baseEntity: string) {
17
+ return function mutationKeyFn(additionalKeys: MutationKey = []) {
18
+ return [{ ...walletMutationKeys.all, baseEntity }, ...additionalKeys];
19
+ };
20
+ }
@@ -0,0 +1,8 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { createContext } from 'react';
5
+
6
+ import type { WalletStore } from '../walletStore.js';
7
+
8
+ export const WalletContext = createContext<WalletStore | null>(null);
@@ -0,0 +1,24 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ /**
5
+ * An error that is instantiated when someone attempts to perform an action that requires an active wallet connection.
6
+ */
7
+ export class WalletNotConnectedError extends Error {}
8
+
9
+ /**
10
+ * An error that is instantiated when someone attempts to perform an action that requires a selected wallet account.
11
+ * This is more of an edge case stemming from the fact that wallets don't technically require you to authorize any
12
+ * accounts when connecting a wallet.
13
+ */
14
+ export class WalletNoAccountSelectedError extends Error {}
15
+
16
+ /**
17
+ * An error that is instantiated when someone attempts to perform an action that isn't supported by a wallet.
18
+ */
19
+ export class WalletFeatureNotSupportedError extends Error {}
20
+
21
+ /**
22
+ * An error that is instantiated when a wallet account can't be found for a specific wallet.
23
+ */
24
+ export class WalletAccountNotFoundError extends Error {}
@@ -0,0 +1,22 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { useContext } from 'react';
5
+
6
+ import { SuiClientContext } from '../components/SuiClientProvider.js';
7
+
8
+ export function useSuiClientContext() {
9
+ const suiClient = useContext(SuiClientContext);
10
+
11
+ if (!suiClient) {
12
+ throw new Error(
13
+ 'Could not find SuiClientContext. Ensure that you have set up the SuiClientProvider',
14
+ );
15
+ }
16
+
17
+ return suiClient;
18
+ }
19
+
20
+ export function useSuiClient() {
21
+ return useSuiClientContext().client;
22
+ }
@@ -0,0 +1,63 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import type { SuiClient } from '@mysten/sui.js/client';
5
+ import type { UseInfiniteQueryOptions } from '@tanstack/react-query';
6
+ import { useInfiniteQuery } from '@tanstack/react-query';
7
+
8
+ import { useSuiClientContext } from './useSuiClient.js';
9
+
10
+ interface PaginatedResult {
11
+ data?: unknown;
12
+ nextCursor?: unknown;
13
+ hasNextPage: boolean;
14
+ }
15
+ export type SuiRpcPaginatedMethodName = {
16
+ [K in keyof SuiClient]: SuiClient[K] extends (input: any) => Promise<PaginatedResult> ? K : never;
17
+ }[keyof SuiClient];
18
+
19
+ export type SuiRpcPaginatedMethods = {
20
+ [K in SuiRpcPaginatedMethodName]: SuiClient[K] extends (input: infer P) => Promise<{
21
+ data?: infer R;
22
+ nextCursor?: infer Cursor | null;
23
+ hasNextPage: boolean;
24
+ }>
25
+ ? {
26
+ name: K;
27
+ result: R;
28
+ params: P;
29
+ cursor: Cursor;
30
+ }
31
+ : never;
32
+ };
33
+
34
+ export type UseSuiClientInfiniteQueryOptions<T extends keyof SuiRpcPaginatedMethods> = Omit<
35
+ UseInfiniteQueryOptions<
36
+ SuiRpcPaginatedMethods[T]['result'],
37
+ Error,
38
+ SuiRpcPaginatedMethods[T]['result'],
39
+ SuiRpcPaginatedMethods[T]['result'],
40
+ unknown[]
41
+ >,
42
+ 'queryFn'
43
+ >;
44
+
45
+ export function useSuiClientInfiniteQuery<T extends keyof SuiRpcPaginatedMethods>(
46
+ method: T,
47
+ params: SuiRpcPaginatedMethods[T]['params'],
48
+ { queryKey = [], enabled = !!params, ...options }: UseSuiClientInfiniteQueryOptions<T> = {},
49
+ ) {
50
+ const suiContext = useSuiClientContext();
51
+
52
+ return useInfiniteQuery({
53
+ ...options,
54
+ queryKey: [suiContext.network, method, params, ...queryKey],
55
+ enabled,
56
+ queryFn: async () => {
57
+ return await suiContext.client[method](params as never);
58
+ },
59
+ getNextPageParam: (lastPage) => {
60
+ return (lastPage as PaginatedResult).nextCursor ?? null;
61
+ },
62
+ });
63
+ }
@@ -0,0 +1,27 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import type { UseMutationOptions } from '@tanstack/react-query';
5
+ import { useMutation } from '@tanstack/react-query';
6
+
7
+ import { useSuiClientContext } from './useSuiClient.js';
8
+ import type { SuiRpcMethods } from './useSuiClientQuery.js';
9
+
10
+ export type UseSuiClientMutationOptions<T extends keyof SuiRpcMethods> = Omit<
11
+ UseMutationOptions<SuiRpcMethods[T]['result'], Error, SuiRpcMethods[T]['params'], unknown[]>,
12
+ 'mutationFn'
13
+ >;
14
+
15
+ export function useSuiClientMutation<T extends keyof SuiRpcMethods>(
16
+ method: T,
17
+ options: UseSuiClientMutationOptions<T> = {},
18
+ ) {
19
+ const suiContext = useSuiClientContext();
20
+
21
+ return useMutation({
22
+ ...options,
23
+ mutationFn: async (params) => {
24
+ return await suiContext.client[method](params as never);
25
+ },
26
+ });
27
+ }
@@ -0,0 +1,58 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import type { SuiClient } from '@mysten/sui.js/client';
5
+ import type { UseQueryOptions } from '@tanstack/react-query';
6
+ import { useQuery } from '@tanstack/react-query';
7
+
8
+ import { useSuiClientContext } from './useSuiClient.js';
9
+
10
+ export type SuiRpcMethodName = {
11
+ [K in keyof SuiClient]: SuiClient[K] extends ((input: any) => Promise<any>) | (() => Promise<any>)
12
+ ? K
13
+ : never;
14
+ }[keyof SuiClient];
15
+
16
+ export type SuiRpcMethods = {
17
+ [K in SuiRpcMethodName]: SuiClient[K] extends (input: infer P) => Promise<infer R>
18
+ ? {
19
+ name: K;
20
+ result: R;
21
+ params: P;
22
+ }
23
+ : SuiClient[K] extends () => Promise<infer R>
24
+ ? {
25
+ name: K;
26
+ result: R;
27
+ params: undefined | object;
28
+ }
29
+ : never;
30
+ };
31
+
32
+ export type UseSuiClientQueryOptions<T extends keyof SuiRpcMethods> = Omit<
33
+ UseQueryOptions<SuiRpcMethods[T]['result'], Error, SuiRpcMethods[T]['result'], unknown[]>,
34
+ 'queryFn'
35
+ >;
36
+
37
+ export function useSuiClientQuery<T extends keyof SuiRpcMethods>(
38
+ ...args: undefined extends SuiRpcMethods[T]['params']
39
+ ? [method: T, params?: SuiRpcMethods[T]['params'], options?: UseSuiClientQueryOptions<T>]
40
+ : [method: T, params: SuiRpcMethods[T]['params'], options?: UseSuiClientQueryOptions<T>]
41
+ ) {
42
+ const [method, params, { queryKey = [], enabled = !!params, ...options } = {}] = args as [
43
+ method: T,
44
+ params?: SuiRpcMethods[T]['params'],
45
+ options?: UseSuiClientQueryOptions<T>,
46
+ ];
47
+
48
+ const suiContext = useSuiClientContext();
49
+
50
+ return useQuery({
51
+ ...options,
52
+ queryKey: [suiContext.network, method, params, ...queryKey],
53
+ enabled,
54
+ queryFn: async () => {
55
+ return await suiContext.client[method](params as never);
56
+ },
57
+ });
58
+ }
@@ -0,0 +1,11 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { useWalletStore } from './useWalletStore.js';
5
+
6
+ /**
7
+ * Retrieves a list of connected accounts authorized by the dApp.
8
+ */
9
+ export function useAccounts() {
10
+ return useWalletStore((state) => state.accounts);
11
+ }
@@ -0,0 +1,34 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { useEffect } from 'react';
5
+
6
+ import { useConnectWallet } from './useConnectWallet.js';
7
+ import { useWallets } from './useWallets.js';
8
+ import { useWalletStore } from './useWalletStore.js';
9
+
10
+ export function useAutoConnectWallet(autoConnectEnabled: boolean) {
11
+ const { mutate: connectWallet } = useConnectWallet();
12
+ const wallets = useWallets();
13
+ const lastConnectedWalletName = useWalletStore((state) => state.lastConnectedWalletName);
14
+ const lastConnectedAccountAddress = useWalletStore((state) => state.lastConnectedAccountAddress);
15
+
16
+ useEffect(() => {
17
+ if (!autoConnectEnabled || !lastConnectedWalletName) return;
18
+
19
+ const wallet = wallets.find((wallet) => wallet.name === lastConnectedWalletName);
20
+ if (wallet) {
21
+ connectWallet({
22
+ wallet,
23
+ accountAddress: lastConnectedAccountAddress || undefined,
24
+ silent: true,
25
+ });
26
+ }
27
+ }, [
28
+ autoConnectEnabled,
29
+ connectWallet,
30
+ lastConnectedAccountAddress,
31
+ lastConnectedWalletName,
32
+ wallets,
33
+ ]);
34
+ }
@@ -0,0 +1,64 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import type {
5
+ StandardConnectInput,
6
+ StandardConnectOutput,
7
+ WalletAccount,
8
+ WalletWithRequiredFeatures,
9
+ } from '@mysten/wallet-standard';
10
+ import type { UseMutationOptions } from '@tanstack/react-query';
11
+ import { useMutation } from '@tanstack/react-query';
12
+
13
+ import { walletMutationKeys } from '../../constants/walletMutationKeys.js';
14
+ import { useWalletStore } from './useWalletStore.js';
15
+
16
+ type ConnectWalletArgs = {
17
+ /** The wallet to connect to. */
18
+ wallet: WalletWithRequiredFeatures;
19
+
20
+ /** An optional account address to connect to. Defaults to the first authorized account. */
21
+ accountAddress?: string;
22
+ } & StandardConnectInput;
23
+
24
+ type ConnectWalletResult = StandardConnectOutput;
25
+
26
+ type UseConnectWalletMutationOptions = Omit<
27
+ UseMutationOptions<ConnectWalletResult, Error, ConnectWalletArgs, unknown>,
28
+ 'mutationFn'
29
+ >;
30
+
31
+ /**
32
+ * Mutation hook for establishing a connection to a specific wallet.
33
+ */
34
+ export function useConnectWallet({
35
+ mutationKey,
36
+ ...mutationOptions
37
+ }: UseConnectWalletMutationOptions = {}) {
38
+ const setWalletConnected = useWalletStore((state) => state.setWalletConnected);
39
+
40
+ return useMutation({
41
+ mutationKey: walletMutationKeys.connectWallet(mutationKey),
42
+ mutationFn: async ({ wallet, accountAddress, ...standardConnectInput }) => {
43
+ const connectResult = await wallet.features['standard:connect'].connect(standardConnectInput);
44
+ const selectedAccount = getSelectedAccount(connectResult.accounts, accountAddress);
45
+
46
+ setWalletConnected(wallet, selectedAccount);
47
+ return connectResult;
48
+ },
49
+ ...mutationOptions,
50
+ });
51
+ }
52
+
53
+ function getSelectedAccount(connectedAccounts: readonly WalletAccount[], accountAddress?: string) {
54
+ if (connectedAccounts.length === 0) {
55
+ return null;
56
+ }
57
+
58
+ if (accountAddress) {
59
+ const selectedAccount = connectedAccounts.find((account) => account.address === accountAddress);
60
+ return selectedAccount ?? connectedAccounts[0];
61
+ }
62
+
63
+ return connectedAccounts[0];
64
+ }
@@ -0,0 +1,11 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { useWalletStore } from './useWalletStore.js';
5
+
6
+ /**
7
+ * Retrieves the wallet account that is currently selected, if one exists.
8
+ */
9
+ export function useCurrentAccount() {
10
+ return useWalletStore((state) => state.currentAccount);
11
+ }
@@ -0,0 +1,11 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { useWalletStore } from './useWalletStore.js';
5
+
6
+ /**
7
+ * Retrieves the wallet that is currently connected to the dApp, if one exists.
8
+ */
9
+ export function useCurrentWallet() {
10
+ return useWalletStore((state) => state.currentWallet);
11
+ }
@@ -0,0 +1,47 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import type { UseMutationOptions } from '@tanstack/react-query';
5
+ import { useMutation } from '@tanstack/react-query';
6
+
7
+ import { walletMutationKeys } from '../../constants/walletMutationKeys.js';
8
+ import { WalletNotConnectedError } from '../../errors/walletErrors.js';
9
+ import { useCurrentWallet } from './useCurrentWallet.js';
10
+ import { useWalletStore } from './useWalletStore.js';
11
+
12
+ type UseDisconnectWalletMutationOptions = Omit<
13
+ UseMutationOptions<void, Error, void, unknown>,
14
+ 'mutationFn'
15
+ >;
16
+
17
+ /**
18
+ * Mutation hook for disconnecting from an active wallet connection, if currently connected.
19
+ */
20
+ export function useDisconnectWallet({
21
+ mutationKey,
22
+ ...mutationOptions
23
+ }: UseDisconnectWalletMutationOptions = {}) {
24
+ const currentWallet = useCurrentWallet();
25
+ const setWalletDisconnected = useWalletStore((state) => state.setWalletDisconnected);
26
+
27
+ return useMutation({
28
+ mutationKey: walletMutationKeys.disconnectWallet(mutationKey),
29
+ mutationFn: async () => {
30
+ if (!currentWallet) {
31
+ throw new WalletNotConnectedError('No wallet is connected.');
32
+ }
33
+
34
+ try {
35
+ // Wallets aren't required to implement the disconnect feature, so we'll
36
+ // optionally call the disconnect feature if it exists and reset the UI
37
+ // state on the frontend at a minimum.
38
+ await currentWallet.features['standard:disconnect']?.disconnect();
39
+ } catch (error) {
40
+ console.error('Failed to disconnect the application from the current wallet.', error);
41
+ }
42
+
43
+ setWalletDisconnected();
44
+ },
45
+ ...mutationOptions,
46
+ });
47
+ }