@iota/dapp-kit 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +14 -12
  3. package/dist/cjs/components/AccountDropdownMenu.css +26 -54
  4. package/dist/cjs/components/AccountDropdownMenu.css.css +18 -27
  5. package/dist/cjs/components/AccountDropdownMenu.css.css.map +3 -3
  6. package/dist/cjs/components/AccountDropdownMenu.css.d.ts +0 -1
  7. package/dist/cjs/components/AccountDropdownMenu.css.js +4 -6
  8. package/dist/cjs/components/AccountDropdownMenu.css.js.map +2 -2
  9. package/dist/cjs/components/AccountDropdownMenu.css.map +3 -3
  10. package/dist/cjs/components/AccountDropdownMenu.d.ts +3 -1
  11. package/dist/cjs/components/AccountDropdownMenu.js +25 -21
  12. package/dist/cjs/components/AccountDropdownMenu.js.map +3 -3
  13. package/dist/cjs/components/ConnectButton.css +181 -190
  14. package/dist/cjs/components/ConnectButton.css.map +3 -3
  15. package/dist/cjs/components/ConnectButton.d.ts +5 -3
  16. package/dist/cjs/components/ConnectButton.js +345 -664
  17. package/dist/cjs/components/ConnectButton.js.map +4 -4
  18. package/dist/cjs/components/IotaClientProvider.d.ts +0 -1
  19. package/dist/cjs/components/IotaClientProvider.js +1 -1
  20. package/dist/cjs/components/IotaClientProvider.js.map +2 -2
  21. package/dist/cjs/components/WalletProvider.d.ts +3 -3
  22. package/dist/cjs/components/WalletProvider.js +108 -153
  23. package/dist/cjs/components/WalletProvider.js.map +3 -3
  24. package/dist/cjs/components/connect-modal/ConnectModal.css +214 -172
  25. package/dist/cjs/components/connect-modal/ConnectModal.css.css +69 -32
  26. package/dist/cjs/components/connect-modal/ConnectModal.css.css.map +3 -3
  27. package/dist/cjs/components/connect-modal/ConnectModal.css.d.ts +5 -1
  28. package/dist/cjs/components/connect-modal/ConnectModal.css.js +15 -7
  29. package/dist/cjs/components/connect-modal/ConnectModal.css.js.map +2 -2
  30. package/dist/cjs/components/connect-modal/ConnectModal.css.map +3 -3
  31. package/dist/cjs/components/connect-modal/ConnectModal.js +412 -702
  32. package/dist/cjs/components/connect-modal/ConnectModal.js.map +4 -4
  33. package/dist/cjs/components/connect-modal/InfoSection.css +7 -11
  34. package/dist/cjs/components/connect-modal/InfoSection.css.css.map +1 -1
  35. package/dist/cjs/components/connect-modal/InfoSection.css.map +3 -3
  36. package/dist/cjs/components/connect-modal/InfoSection.js +1 -1
  37. package/dist/cjs/components/connect-modal/InfoSection.js.map +2 -2
  38. package/dist/cjs/components/connect-modal/views/ConnectionStatus.css +145 -0
  39. package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.css +32 -0
  40. package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.css.map +7 -0
  41. package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.d.ts +5 -0
  42. package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.js +35 -0
  43. package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.js.map +7 -0
  44. package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.map +7 -0
  45. package/dist/cjs/components/connect-modal/views/ConnectionStatus.d.ts +8 -0
  46. package/dist/cjs/components/connect-modal/views/ConnectionStatus.js +173 -0
  47. package/dist/cjs/components/connect-modal/views/ConnectionStatus.js.map +7 -0
  48. package/dist/cjs/components/connect-modal/views/GetTheWallet.css.css.map +1 -1
  49. package/dist/cjs/components/connect-modal/views/GetTheWallet.css.map +1 -1
  50. package/dist/cjs/components/connect-modal/views/GetTheWallet.js +11 -384
  51. package/dist/cjs/components/connect-modal/views/GetTheWallet.js.map +2 -2
  52. package/dist/cjs/components/connect-modal/views/GettingStarted.css +144 -0
  53. package/dist/cjs/components/connect-modal/views/GettingStarted.css.css +23 -0
  54. package/dist/cjs/components/connect-modal/views/GettingStarted.css.css.map +7 -0
  55. package/dist/cjs/components/connect-modal/views/GettingStarted.css.d.ts +3 -0
  56. package/dist/cjs/components/connect-modal/views/GettingStarted.css.js +31 -0
  57. package/dist/cjs/components/connect-modal/views/GettingStarted.css.js.map +7 -0
  58. package/dist/cjs/components/connect-modal/views/GettingStarted.css.map +7 -0
  59. package/dist/cjs/components/connect-modal/views/GettingStarted.d.ts +1 -0
  60. package/dist/cjs/components/connect-modal/views/GettingStarted.js +172 -0
  61. package/dist/cjs/components/connect-modal/views/GettingStarted.js.map +7 -0
  62. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css +95 -0
  63. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.css +17 -0
  64. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.css.map +7 -0
  65. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.d.ts +2 -0
  66. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.js +29 -0
  67. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.js.map +7 -0
  68. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.map +7 -0
  69. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.d.ts +1 -0
  70. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.js +135 -0
  71. package/dist/cjs/components/connect-modal/views/WhatIsAWallet.js.map +7 -0
  72. package/dist/cjs/components/connect-modal/views/index.css +115 -124
  73. package/dist/cjs/components/connect-modal/views/index.css.map +3 -3
  74. package/dist/cjs/components/connect-modal/views/index.d.ts +2 -1
  75. package/dist/cjs/components/connect-modal/views/index.js +135 -633
  76. package/dist/cjs/components/connect-modal/views/index.js.map +4 -4
  77. package/dist/cjs/components/connect-modal/wallet-list/WalletList.css +10 -22
  78. package/dist/cjs/components/connect-modal/wallet-list/WalletList.css.css +2 -5
  79. package/dist/cjs/components/connect-modal/wallet-list/WalletList.css.css.map +3 -3
  80. package/dist/cjs/components/connect-modal/wallet-list/WalletList.css.js.map +1 -1
  81. package/dist/cjs/components/connect-modal/wallet-list/WalletList.css.map +3 -3
  82. package/dist/cjs/components/connect-modal/wallet-list/WalletList.d.ts +4 -4
  83. package/dist/cjs/components/connect-modal/wallet-list/WalletList.js +67 -38
  84. package/dist/cjs/components/connect-modal/wallet-list/WalletList.js.map +4 -4
  85. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css +8 -17
  86. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.css +8 -17
  87. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.css.map +3 -3
  88. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.d.ts +0 -1
  89. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.js +2 -4
  90. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.js.map +2 -2
  91. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.map +3 -3
  92. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.js +5 -32
  93. package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.js.map +4 -4
  94. package/dist/cjs/components/icons/BackIcon.d.ts +2 -0
  95. package/dist/cjs/components/icons/BackIcon.js +36 -0
  96. package/dist/cjs/components/icons/BackIcon.js.map +7 -0
  97. package/dist/cjs/components/icons/IotaIcon.js +11 -384
  98. package/dist/cjs/components/icons/IotaIcon.js.map +2 -2
  99. package/dist/cjs/components/styling/InjectedThemeStyles.js +2 -0
  100. package/dist/cjs/components/styling/InjectedThemeStyles.js.map +2 -2
  101. package/dist/cjs/components/styling/StyleMarker.css +1 -16
  102. package/dist/cjs/components/styling/StyleMarker.css.css +1 -16
  103. package/dist/cjs/components/styling/StyleMarker.css.css.map +3 -3
  104. package/dist/cjs/components/styling/StyleMarker.css.map +3 -3
  105. package/dist/cjs/components/styling/StyleMarker.d.ts +0 -1
  106. package/dist/cjs/components/styling/StyleMarker.js +4 -4
  107. package/dist/cjs/components/styling/StyleMarker.js.map +3 -3
  108. package/dist/cjs/components/ui/Button.css.css.map +1 -1
  109. package/dist/cjs/components/ui/Button.css.map +1 -1
  110. package/dist/cjs/components/ui/Button.d.ts +1 -1
  111. package/dist/cjs/components/ui/Heading.css.css.map +1 -1
  112. package/dist/cjs/components/ui/Heading.css.map +1 -1
  113. package/dist/cjs/components/ui/Heading.d.ts +0 -1
  114. package/dist/cjs/components/ui/IconButton.css.css.map +1 -1
  115. package/dist/cjs/components/ui/IconButton.css.map +1 -1
  116. package/dist/cjs/components/ui/IconButton.d.ts +1 -1
  117. package/dist/cjs/components/ui/Text.css +7 -11
  118. package/dist/cjs/components/ui/Text.css.css +7 -11
  119. package/dist/cjs/components/ui/Text.css.css.map +3 -3
  120. package/dist/cjs/components/ui/Text.css.d.ts +0 -3
  121. package/dist/cjs/components/ui/Text.css.js +1 -1
  122. package/dist/cjs/components/ui/Text.css.js.map +2 -2
  123. package/dist/cjs/components/ui/Text.css.map +3 -3
  124. package/dist/cjs/components/ui/Text.d.ts +0 -1
  125. package/dist/cjs/components/ui/Text.js +1 -1
  126. package/dist/cjs/components/ui/Text.js.map +2 -2
  127. package/dist/cjs/constants/styleDataAttribute.js.map +1 -1
  128. package/dist/cjs/constants/walletDefaults.d.ts +2 -2
  129. package/dist/cjs/constants/walletDefaults.js +4 -5
  130. package/dist/cjs/constants/walletDefaults.js.map +2 -2
  131. package/dist/cjs/constants/walletMutationKeys.d.ts +3 -2
  132. package/dist/cjs/constants/walletMutationKeys.js +4 -3
  133. package/dist/cjs/constants/walletMutationKeys.js.map +2 -2
  134. package/dist/cjs/contexts/walletContext.d.ts +1 -2
  135. package/dist/cjs/hooks/networkConfig.js +1 -1
  136. package/dist/cjs/hooks/networkConfig.js.map +2 -2
  137. package/dist/cjs/hooks/useIotaClient.js +1 -1
  138. package/dist/cjs/hooks/useIotaClient.js.map +2 -2
  139. package/dist/cjs/hooks/useIotaClientInfiniteQuery.js +1 -1
  140. package/dist/cjs/hooks/useIotaClientInfiniteQuery.js.map +2 -2
  141. package/dist/cjs/hooks/useIotaClientMutation.js +1 -1
  142. package/dist/cjs/hooks/useIotaClientMutation.js.map +2 -2
  143. package/dist/cjs/hooks/useIotaClientQueries.js +1 -1
  144. package/dist/cjs/hooks/useIotaClientQueries.js.map +2 -2
  145. package/dist/cjs/hooks/useIotaClientQuery.js +4 -2
  146. package/dist/cjs/hooks/useIotaClientQuery.js.map +2 -2
  147. package/dist/cjs/hooks/wallet/useAutoConnectWallet.js +17 -7
  148. package/dist/cjs/hooks/wallet/useAutoConnectWallet.js.map +2 -2
  149. package/dist/cjs/hooks/wallet/useConnectWallet.js +10 -4
  150. package/dist/cjs/hooks/wallet/useConnectWallet.js.map +2 -2
  151. package/dist/cjs/hooks/wallet/useCurrentWallet.d.ts +3 -0
  152. package/dist/cjs/hooks/wallet/useCurrentWallet.js +7 -3
  153. package/dist/cjs/hooks/wallet/useCurrentWallet.js.map +2 -2
  154. package/dist/cjs/hooks/wallet/useDisconnectWallet.js +11 -6
  155. package/dist/cjs/hooks/wallet/useDisconnectWallet.js.map +2 -2
  156. package/dist/cjs/hooks/wallet/useReportTransactionEffects.d.ts +15 -0
  157. package/dist/cjs/hooks/wallet/{useSignTransactionBlock.js → useReportTransactionEffects.js} +41 -37
  158. package/dist/cjs/hooks/wallet/useReportTransactionEffects.js.map +7 -0
  159. package/dist/cjs/hooks/wallet/useSignAndExecuteTransaction.d.ts +29 -0
  160. package/dist/cjs/hooks/wallet/useSignAndExecuteTransaction.js +252 -0
  161. package/dist/cjs/hooks/wallet/useSignAndExecuteTransaction.js.map +7 -0
  162. package/dist/cjs/hooks/wallet/useSignPersonalMessage.js +21 -27
  163. package/dist/cjs/hooks/wallet/useSignPersonalMessage.js.map +2 -2
  164. package/dist/cjs/hooks/wallet/useSignTransaction.d.ts +18 -0
  165. package/dist/cjs/hooks/wallet/{useSignAndExecuteTransactionBlock.js → useSignTransaction.js} +87 -47
  166. package/dist/cjs/hooks/wallet/useSignTransaction.js.map +7 -0
  167. package/dist/cjs/hooks/wallet/useSwitchAccount.js +11 -6
  168. package/dist/cjs/hooks/wallet/useSwitchAccount.js.map +2 -2
  169. package/dist/cjs/hooks/wallet/useUnsafeBurnerWallet.js +46 -34
  170. package/dist/cjs/hooks/wallet/useUnsafeBurnerWallet.js.map +2 -2
  171. package/dist/cjs/hooks/wallet/useWalletPropertiesChanged.js +7 -3
  172. package/dist/cjs/hooks/wallet/useWalletPropertiesChanged.js.map +2 -2
  173. package/dist/cjs/hooks/wallet/useWalletsChanged.d.ts +1 -1
  174. package/dist/cjs/hooks/wallet/useWalletsChanged.js +7 -6
  175. package/dist/cjs/hooks/wallet/useWalletsChanged.js.map +2 -2
  176. package/dist/cjs/index.css +232 -241
  177. package/dist/cjs/index.css.map +3 -3
  178. package/dist/cjs/index.d.ts +4 -3
  179. package/dist/cjs/index.js +818 -1038
  180. package/dist/cjs/index.js.map +4 -4
  181. package/dist/cjs/themes/lightTheme.js +19 -19
  182. package/dist/cjs/themes/lightTheme.js.map +1 -1
  183. package/dist/cjs/themes/themeContract.js.map +1 -1
  184. package/dist/cjs/types.d.ts +1 -1
  185. package/dist/cjs/types.js.map +1 -1
  186. package/dist/cjs/utils/assertUnreachable.js.map +1 -1
  187. package/dist/cjs/utils/walletUtils.d.ts +2 -2
  188. package/dist/cjs/utils/walletUtils.js +2 -2
  189. package/dist/cjs/utils/walletUtils.js.map +2 -2
  190. package/dist/cjs/walletStore.d.ts +3 -2
  191. package/dist/cjs/walletStore.js +8 -4
  192. package/dist/cjs/walletStore.js.map +2 -2
  193. package/dist/esm/components/AccountDropdownMenu.css +26 -54
  194. package/dist/esm/components/AccountDropdownMenu.css.css +18 -27
  195. package/dist/esm/components/AccountDropdownMenu.css.css.map +3 -3
  196. package/dist/esm/components/AccountDropdownMenu.css.d.ts +0 -1
  197. package/dist/esm/components/AccountDropdownMenu.css.js +4 -6
  198. package/dist/esm/components/AccountDropdownMenu.css.js.map +2 -2
  199. package/dist/esm/components/AccountDropdownMenu.css.map +3 -3
  200. package/dist/esm/components/AccountDropdownMenu.d.ts +3 -1
  201. package/dist/esm/components/AccountDropdownMenu.js +25 -21
  202. package/dist/esm/components/AccountDropdownMenu.js.map +3 -3
  203. package/dist/esm/components/ConnectButton.css +181 -190
  204. package/dist/esm/components/ConnectButton.css.map +3 -3
  205. package/dist/esm/components/ConnectButton.d.ts +5 -3
  206. package/dist/esm/components/ConnectButton.js +346 -665
  207. package/dist/esm/components/ConnectButton.js.map +4 -4
  208. package/dist/esm/components/IotaClientProvider.d.ts +0 -1
  209. package/dist/esm/components/IotaClientProvider.js +1 -1
  210. package/dist/esm/components/IotaClientProvider.js.map +2 -2
  211. package/dist/esm/components/WalletProvider.d.ts +3 -3
  212. package/dist/esm/components/WalletProvider.js +107 -152
  213. package/dist/esm/components/WalletProvider.js.map +3 -3
  214. package/dist/esm/components/connect-modal/ConnectModal.css +214 -172
  215. package/dist/esm/components/connect-modal/ConnectModal.css.css +69 -32
  216. package/dist/esm/components/connect-modal/ConnectModal.css.css.map +3 -3
  217. package/dist/esm/components/connect-modal/ConnectModal.css.d.ts +5 -1
  218. package/dist/esm/components/connect-modal/ConnectModal.css.js +15 -7
  219. package/dist/esm/components/connect-modal/ConnectModal.css.js.map +2 -2
  220. package/dist/esm/components/connect-modal/ConnectModal.css.map +3 -3
  221. package/dist/esm/components/connect-modal/ConnectModal.js +408 -698
  222. package/dist/esm/components/connect-modal/ConnectModal.js.map +4 -4
  223. package/dist/esm/components/connect-modal/InfoSection.css +7 -11
  224. package/dist/esm/components/connect-modal/InfoSection.css.css.map +1 -1
  225. package/dist/esm/components/connect-modal/InfoSection.css.map +3 -3
  226. package/dist/esm/components/connect-modal/InfoSection.js +1 -1
  227. package/dist/esm/components/connect-modal/InfoSection.js.map +2 -2
  228. package/dist/esm/components/connect-modal/views/ConnectionStatus.css +145 -0
  229. package/dist/esm/components/connect-modal/views/ConnectionStatus.css.css +32 -0
  230. package/dist/esm/components/connect-modal/views/ConnectionStatus.css.css.map +7 -0
  231. package/dist/esm/components/connect-modal/views/ConnectionStatus.css.d.ts +5 -0
  232. package/dist/esm/components/connect-modal/views/ConnectionStatus.css.js +14 -0
  233. package/dist/esm/components/connect-modal/views/ConnectionStatus.css.js.map +7 -0
  234. package/dist/esm/components/connect-modal/views/ConnectionStatus.css.map +7 -0
  235. package/dist/esm/components/connect-modal/views/ConnectionStatus.d.ts +8 -0
  236. package/dist/esm/components/connect-modal/views/ConnectionStatus.js +140 -0
  237. package/dist/esm/components/connect-modal/views/ConnectionStatus.js.map +7 -0
  238. package/dist/esm/components/connect-modal/views/GetTheWallet.css.css.map +1 -1
  239. package/dist/esm/components/connect-modal/views/GetTheWallet.css.map +1 -1
  240. package/dist/esm/components/connect-modal/views/GetTheWallet.js +16 -389
  241. package/dist/esm/components/connect-modal/views/GetTheWallet.js.map +3 -3
  242. package/dist/esm/components/connect-modal/views/GettingStarted.css +144 -0
  243. package/dist/esm/components/connect-modal/views/GettingStarted.css.css +23 -0
  244. package/dist/esm/components/connect-modal/views/GettingStarted.css.css.map +7 -0
  245. package/dist/esm/components/connect-modal/views/GettingStarted.css.d.ts +3 -0
  246. package/dist/esm/components/connect-modal/views/GettingStarted.css.js +10 -0
  247. package/dist/esm/components/connect-modal/views/GettingStarted.css.js.map +7 -0
  248. package/dist/esm/components/connect-modal/views/GettingStarted.css.map +7 -0
  249. package/dist/esm/components/connect-modal/views/GettingStarted.d.ts +1 -0
  250. package/dist/esm/components/connect-modal/views/GettingStarted.js +139 -0
  251. package/dist/esm/components/connect-modal/views/GettingStarted.js.map +7 -0
  252. package/dist/esm/components/connect-modal/views/WhatIsAWallet.css +95 -0
  253. package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.css +17 -0
  254. package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.css.map +7 -0
  255. package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.d.ts +2 -0
  256. package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.js +8 -0
  257. package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.js.map +7 -0
  258. package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.map +7 -0
  259. package/dist/esm/components/connect-modal/views/WhatIsAWallet.d.ts +1 -0
  260. package/dist/esm/components/connect-modal/views/WhatIsAWallet.js +102 -0
  261. package/dist/esm/components/connect-modal/views/WhatIsAWallet.js.map +7 -0
  262. package/dist/esm/components/connect-modal/views/index.css +115 -124
  263. package/dist/esm/components/connect-modal/views/index.css.map +3 -3
  264. package/dist/esm/components/connect-modal/views/index.d.ts +2 -1
  265. package/dist/esm/components/connect-modal/views/index.js +137 -635
  266. package/dist/esm/components/connect-modal/views/index.js.map +4 -4
  267. package/dist/esm/components/connect-modal/wallet-list/WalletList.css +10 -22
  268. package/dist/esm/components/connect-modal/wallet-list/WalletList.css.css +2 -5
  269. package/dist/esm/components/connect-modal/wallet-list/WalletList.css.css.map +3 -3
  270. package/dist/esm/components/connect-modal/wallet-list/WalletList.css.js.map +1 -1
  271. package/dist/esm/components/connect-modal/wallet-list/WalletList.css.map +3 -3
  272. package/dist/esm/components/connect-modal/wallet-list/WalletList.d.ts +4 -4
  273. package/dist/esm/components/connect-modal/wallet-list/WalletList.js +65 -36
  274. package/dist/esm/components/connect-modal/wallet-list/WalletList.js.map +4 -4
  275. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css +8 -17
  276. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.css +8 -17
  277. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.css.map +3 -3
  278. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.d.ts +0 -1
  279. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.js +2 -4
  280. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.js.map +2 -2
  281. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.map +3 -3
  282. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.js +5 -32
  283. package/dist/esm/components/connect-modal/wallet-list/WalletListItem.js.map +4 -4
  284. package/dist/esm/components/icons/BackIcon.d.ts +2 -0
  285. package/dist/esm/components/icons/BackIcon.js +15 -0
  286. package/dist/esm/components/icons/BackIcon.js.map +7 -0
  287. package/dist/esm/components/icons/IotaIcon.js +12 -385
  288. package/dist/esm/components/icons/IotaIcon.js.map +2 -2
  289. package/dist/esm/components/styling/InjectedThemeStyles.js +2 -0
  290. package/dist/esm/components/styling/InjectedThemeStyles.js.map +2 -2
  291. package/dist/esm/components/styling/StyleMarker.css +1 -16
  292. package/dist/esm/components/styling/StyleMarker.css.css +1 -16
  293. package/dist/esm/components/styling/StyleMarker.css.css.map +3 -3
  294. package/dist/esm/components/styling/StyleMarker.css.js +4 -4
  295. package/dist/esm/components/styling/StyleMarker.css.js.map +3 -3
  296. package/dist/esm/components/styling/StyleMarker.css.map +3 -3
  297. package/dist/esm/components/styling/StyleMarker.d.ts +0 -1
  298. package/dist/esm/components/styling/StyleMarker.js +4 -4
  299. package/dist/esm/components/styling/StyleMarker.js.map +3 -3
  300. package/dist/esm/components/ui/Button.css.css.map +1 -1
  301. package/dist/esm/components/ui/Button.css.map +1 -1
  302. package/dist/esm/components/ui/Button.d.ts +1 -1
  303. package/dist/esm/components/ui/Heading.css.css.map +1 -1
  304. package/dist/esm/components/ui/Heading.css.map +1 -1
  305. package/dist/esm/components/ui/Heading.d.ts +0 -1
  306. package/dist/esm/components/ui/IconButton.css.css.map +1 -1
  307. package/dist/esm/components/ui/IconButton.css.map +1 -1
  308. package/dist/esm/components/ui/IconButton.d.ts +1 -1
  309. package/dist/esm/components/ui/Text.css +7 -11
  310. package/dist/esm/components/ui/Text.css.css +7 -11
  311. package/dist/esm/components/ui/Text.css.css.map +3 -3
  312. package/dist/esm/components/ui/Text.css.d.ts +0 -3
  313. package/dist/esm/components/ui/Text.css.js +1 -1
  314. package/dist/esm/components/ui/Text.css.js.map +2 -2
  315. package/dist/esm/components/ui/Text.css.map +3 -3
  316. package/dist/esm/components/ui/Text.d.ts +0 -1
  317. package/dist/esm/components/ui/Text.js +1 -1
  318. package/dist/esm/components/ui/Text.js.map +2 -2
  319. package/dist/esm/constants/styleDataAttribute.js.map +1 -1
  320. package/dist/esm/constants/walletDefaults.d.ts +2 -2
  321. package/dist/esm/constants/walletDefaults.js +4 -5
  322. package/dist/esm/constants/walletDefaults.js.map +2 -2
  323. package/dist/esm/constants/walletMutationKeys.d.ts +3 -2
  324. package/dist/esm/constants/walletMutationKeys.js +4 -3
  325. package/dist/esm/constants/walletMutationKeys.js.map +2 -2
  326. package/dist/esm/contexts/walletContext.d.ts +1 -2
  327. package/dist/esm/hooks/networkConfig.js +1 -1
  328. package/dist/esm/hooks/networkConfig.js.map +2 -2
  329. package/dist/esm/hooks/useIotaClient.js +1 -1
  330. package/dist/esm/hooks/useIotaClient.js.map +2 -2
  331. package/dist/esm/hooks/useIotaClientInfiniteQuery.js +1 -1
  332. package/dist/esm/hooks/useIotaClientInfiniteQuery.js.map +2 -2
  333. package/dist/esm/hooks/useIotaClientMutation.js +1 -1
  334. package/dist/esm/hooks/useIotaClientMutation.js.map +2 -2
  335. package/dist/esm/hooks/useIotaClientQueries.js +1 -1
  336. package/dist/esm/hooks/useIotaClientQueries.js.map +2 -2
  337. package/dist/esm/hooks/useIotaClientQuery.js +4 -2
  338. package/dist/esm/hooks/useIotaClientQuery.js.map +2 -2
  339. package/dist/esm/hooks/wallet/useAutoConnectWallet.js +17 -7
  340. package/dist/esm/hooks/wallet/useAutoConnectWallet.js.map +2 -2
  341. package/dist/esm/hooks/wallet/useConnectWallet.js +10 -4
  342. package/dist/esm/hooks/wallet/useConnectWallet.js.map +2 -2
  343. package/dist/esm/hooks/wallet/useCurrentWallet.d.ts +3 -0
  344. package/dist/esm/hooks/wallet/useCurrentWallet.js +7 -3
  345. package/dist/esm/hooks/wallet/useCurrentWallet.js.map +2 -2
  346. package/dist/esm/hooks/wallet/useDisconnectWallet.js +11 -6
  347. package/dist/esm/hooks/wallet/useDisconnectWallet.js.map +2 -2
  348. package/dist/esm/hooks/wallet/useReportTransactionEffects.d.ts +15 -0
  349. package/dist/esm/hooks/wallet/{useSignTransactionBlock.js → useReportTransactionEffects.js} +38 -34
  350. package/dist/esm/hooks/wallet/useReportTransactionEffects.js.map +7 -0
  351. package/dist/esm/hooks/wallet/useSignAndExecuteTransaction.d.ts +29 -0
  352. package/dist/esm/hooks/wallet/useSignAndExecuteTransaction.js +231 -0
  353. package/dist/esm/hooks/wallet/useSignAndExecuteTransaction.js.map +7 -0
  354. package/dist/esm/hooks/wallet/useSignPersonalMessage.js +21 -27
  355. package/dist/esm/hooks/wallet/useSignPersonalMessage.js.map +2 -2
  356. package/dist/esm/hooks/wallet/useSignTransaction.d.ts +18 -0
  357. package/dist/esm/hooks/wallet/{useSignAndExecuteTransactionBlock.js → useSignTransaction.js} +84 -44
  358. package/dist/esm/hooks/wallet/useSignTransaction.js.map +7 -0
  359. package/dist/esm/hooks/wallet/useSwitchAccount.js +11 -6
  360. package/dist/esm/hooks/wallet/useSwitchAccount.js.map +2 -2
  361. package/dist/esm/hooks/wallet/useUnsafeBurnerWallet.js +45 -33
  362. package/dist/esm/hooks/wallet/useUnsafeBurnerWallet.js.map +2 -2
  363. package/dist/esm/hooks/wallet/useWalletPropertiesChanged.js +7 -3
  364. package/dist/esm/hooks/wallet/useWalletPropertiesChanged.js.map +2 -2
  365. package/dist/esm/hooks/wallet/useWalletsChanged.d.ts +1 -1
  366. package/dist/esm/hooks/wallet/useWalletsChanged.js +7 -6
  367. package/dist/esm/hooks/wallet/useWalletsChanged.js.map +2 -2
  368. package/dist/esm/index.css +232 -241
  369. package/dist/esm/index.css.map +3 -3
  370. package/dist/esm/index.d.ts +4 -3
  371. package/dist/esm/index.js +821 -1041
  372. package/dist/esm/index.js.map +4 -4
  373. package/dist/esm/themes/lightTheme.js +19 -19
  374. package/dist/esm/themes/lightTheme.js.map +1 -1
  375. package/dist/esm/themes/themeContract.js.map +1 -1
  376. package/dist/esm/types.d.ts +1 -1
  377. package/dist/esm/utils/assertUnreachable.js.map +1 -1
  378. package/dist/esm/utils/walletUtils.d.ts +2 -2
  379. package/dist/esm/utils/walletUtils.js +2 -2
  380. package/dist/esm/utils/walletUtils.js.map +2 -2
  381. package/dist/esm/walletStore.d.ts +3 -2
  382. package/dist/esm/walletStore.js +8 -4
  383. package/dist/esm/walletStore.js.map +2 -2
  384. package/dist/index.css/package.json +5 -0
  385. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  386. package/dist/tsconfig.tsbuildinfo +1 -1
  387. package/package.json +28 -28
  388. package/src/components/AccountDropdownMenu.css.ts +11 -17
  389. package/src/components/AccountDropdownMenu.tsx +10 -5
  390. package/src/components/ConnectButton.tsx +12 -5
  391. package/src/components/IotaClientProvider.tsx +1 -1
  392. package/src/components/WalletProvider.tsx +11 -22
  393. package/src/components/connect-modal/ConnectModal.css.ts +58 -17
  394. package/src/components/connect-modal/ConnectModal.tsx +101 -16
  395. package/src/components/connect-modal/views/ConnectionStatus.css.ts +36 -0
  396. package/src/components/connect-modal/views/ConnectionStatus.tsx +55 -0
  397. package/src/components/connect-modal/views/GettingStarted.css.ts +26 -0
  398. package/src/components/connect-modal/views/GettingStarted.tsx +40 -0
  399. package/src/components/connect-modal/views/WhatIsAWallet.css.ts +20 -0
  400. package/src/components/connect-modal/views/WhatIsAWallet.tsx +24 -0
  401. package/src/components/connect-modal/views/index.ts +2 -1
  402. package/src/components/connect-modal/wallet-list/WalletList.css.ts +1 -5
  403. package/src/components/connect-modal/wallet-list/WalletList.tsx +25 -11
  404. package/src/components/connect-modal/wallet-list/WalletListItem.css.ts +6 -14
  405. package/src/components/connect-modal/wallet-list/WalletListItem.tsx +9 -12
  406. package/src/components/icons/BackIcon.tsx +18 -0
  407. package/src/components/icons/IotaIcon.tsx +5 -217
  408. package/src/components/styling/InjectedThemeStyles.tsx +4 -0
  409. package/src/components/styling/StyleMarker.css.ts +0 -15
  410. package/src/components/ui/Text.css.ts +1 -1
  411. package/src/constants/walletDefaults.ts +6 -5
  412. package/src/constants/walletMutationKeys.ts +3 -2
  413. package/src/hooks/useIotaClientInfiniteQuery.ts +2 -1
  414. package/src/hooks/useIotaClientQuery.ts +3 -1
  415. package/src/hooks/wallet/useAutoConnectWallet.ts +1 -1
  416. package/src/hooks/wallet/useConnectWallet.ts +6 -1
  417. package/src/hooks/wallet/useCurrentWallet.ts +4 -0
  418. package/src/hooks/wallet/useReportTransactionEffects.ts +87 -0
  419. package/src/hooks/wallet/useSignAndExecuteTransaction.ts +165 -0
  420. package/src/hooks/wallet/useSignPersonalMessage.ts +11 -25
  421. package/src/hooks/wallet/useSignTransaction.ts +117 -0
  422. package/src/hooks/wallet/useUnsafeBurnerWallet.ts +41 -18
  423. package/src/hooks/wallet/useWalletsChanged.ts +5 -4
  424. package/src/index.ts +4 -3
  425. package/src/themes/lightTheme.ts +19 -19
  426. package/src/types.ts +1 -1
  427. package/src/utils/walletUtils.ts +8 -3
  428. package/src/walletStore.ts +12 -1
  429. package/dist/cjs/components/connect-modal/views/WalletConnect.css +0 -179
  430. package/dist/cjs/components/connect-modal/views/WalletConnect.css.css +0 -51
  431. package/dist/cjs/components/connect-modal/views/WalletConnect.css.css.map +0 -7
  432. package/dist/cjs/components/connect-modal/views/WalletConnect.css.d.ts +0 -8
  433. package/dist/cjs/components/connect-modal/views/WalletConnect.css.js +0 -41
  434. package/dist/cjs/components/connect-modal/views/WalletConnect.css.js.map +0 -7
  435. package/dist/cjs/components/connect-modal/views/WalletConnect.css.map +0 -7
  436. package/dist/cjs/components/connect-modal/views/WalletConnect.d.ts +0 -7
  437. package/dist/cjs/components/connect-modal/views/WalletConnect.js +0 -325
  438. package/dist/cjs/components/connect-modal/views/WalletConnect.js.map +0 -7
  439. package/dist/cjs/hooks/wallet/useSignAndExecuteTransactionBlock.d.ts +0 -15
  440. package/dist/cjs/hooks/wallet/useSignAndExecuteTransactionBlock.js.map +0 -7
  441. package/dist/cjs/hooks/wallet/useSignTransactionBlock.d.ts +0 -13
  442. package/dist/cjs/hooks/wallet/useSignTransactionBlock.js.map +0 -7
  443. package/dist/esm/components/connect-modal/views/WalletConnect.css +0 -179
  444. package/dist/esm/components/connect-modal/views/WalletConnect.css.css +0 -51
  445. package/dist/esm/components/connect-modal/views/WalletConnect.css.css.map +0 -7
  446. package/dist/esm/components/connect-modal/views/WalletConnect.css.d.ts +0 -8
  447. package/dist/esm/components/connect-modal/views/WalletConnect.css.js +0 -20
  448. package/dist/esm/components/connect-modal/views/WalletConnect.css.js.map +0 -7
  449. package/dist/esm/components/connect-modal/views/WalletConnect.css.map +0 -7
  450. package/dist/esm/components/connect-modal/views/WalletConnect.d.ts +0 -7
  451. package/dist/esm/components/connect-modal/views/WalletConnect.js +0 -294
  452. package/dist/esm/components/connect-modal/views/WalletConnect.js.map +0 -7
  453. package/dist/esm/hooks/wallet/useSignAndExecuteTransactionBlock.d.ts +0 -15
  454. package/dist/esm/hooks/wallet/useSignAndExecuteTransactionBlock.js.map +0 -7
  455. package/dist/esm/hooks/wallet/useSignTransactionBlock.d.ts +0 -13
  456. package/dist/esm/hooks/wallet/useSignTransactionBlock.js.map +0 -7
  457. package/src/components/connect-modal/views/WalletConnect.css.ts +0 -55
  458. package/src/components/connect-modal/views/WalletConnect.tsx +0 -79
  459. package/src/hooks/wallet/useSignAndExecuteTransactionBlock.ts +0 -117
  460. package/src/hooks/wallet/useSignTransactionBlock.ts +0 -85
@@ -7,7 +7,7 @@ import { createContext, useMemo, useState } from "react";
7
7
  import { jsx } from "react/jsx-runtime";
8
8
  var IotaClientContext = createContext(null);
9
9
  var DEFAULT_NETWORKS = {
10
- localnet: { url: getNetwork(Network.Local).url }
10
+ localnet: { url: getNetwork(Network.Localnet).url }
11
11
  };
12
12
 
13
13
  // src/hooks/useIotaClient.ts
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/hooks/useIotaClient.ts", "../../../src/components/IotaClientProvider.tsx", "../../../src/hooks/networkConfig.ts"],
4
- "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport { useContext } from 'react';\n\nimport { IotaClientContext } from '../components/IotaClientProvider.js';\n\nexport function useIotaClientContext() {\n const iotaClient = useContext(IotaClientContext);\n\n if (!iotaClient) {\n throw new Error(\n 'Could not find IotaClientContext. Ensure that you have set up the IotaClientProvider',\n );\n }\n\n return iotaClient;\n}\n\nexport function useIotaClient(): IotaClient {\n return useIotaClientContext().client;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getNetwork, isIotaClient, Network, IotaClient } from '@iota/iota-sdk/client';\nimport type { IotaClientOptions } from '@iota/iota-sdk/client';\nimport { createContext, useMemo, useState } from 'react';\n\nimport type { NetworkConfig } from '../hooks/networkConfig.js';\n\ntype NetworkConfigs<T extends NetworkConfig | IotaClient = NetworkConfig | IotaClient> = Record<\n string,\n T\n>;\n\nexport interface IotaClientProviderContext {\n client: IotaClient;\n networks: NetworkConfigs;\n network: string;\n config: NetworkConfig | null;\n selectNetwork: (network: string) => void;\n}\n\nexport const IotaClientContext = createContext<IotaClientProviderContext | null>(null);\n\nexport type IotaClientProviderProps<T extends NetworkConfigs> = {\n createClient?: (name: keyof T, config: T[keyof T]) => IotaClient;\n children: React.ReactNode;\n networks?: T;\n onNetworkChange?: (network: keyof T & string) => void;\n} & (\n | {\n defaultNetwork?: keyof T & string;\n network?: never;\n }\n | {\n defaultNetwork?: never;\n network?: keyof T & string;\n }\n);\n\nconst DEFAULT_NETWORKS = {\n localnet: { url: getNetwork(Network.Local).url },\n};\n\nconst DEFAULT_CREATE_CLIENT = function createClient(\n _name: string,\n config: NetworkConfig | IotaClient,\n) {\n if (isIotaClient(config)) {\n return config;\n }\n\n return new IotaClient(config);\n};\n\nexport function IotaClientProvider<T extends NetworkConfigs>(props: IotaClientProviderProps<T>) {\n const { onNetworkChange, network, children } = props;\n const networks = (props.networks ?? DEFAULT_NETWORKS) as T;\n const createClient =\n (props.createClient as typeof DEFAULT_CREATE_CLIENT) ?? DEFAULT_CREATE_CLIENT;\n\n const [selectedNetwork, setSelectedNetwork] = useState<keyof T & string>(\n props.network ?? props.defaultNetwork ?? (Object.keys(networks)[0] as keyof T & string),\n );\n\n const currentNetwork = props.network ?? selectedNetwork;\n\n const client = useMemo(() => {\n return createClient(currentNetwork, networks[currentNetwork]);\n }, [createClient, currentNetwork, networks]);\n\n const ctx = useMemo((): IotaClientProviderContext => {\n return {\n client,\n networks,\n network: currentNetwork,\n config:\n networks[currentNetwork] instanceof IotaClient\n ? null\n : (networks[currentNetwork] as IotaClientOptions),\n selectNetwork: (newNetwork) => {\n if (currentNetwork === newNetwork) {\n return;\n }\n\n if (!network && newNetwork !== selectedNetwork) {\n setSelectedNetwork(newNetwork);\n }\n\n onNetworkChange?.(newNetwork);\n },\n };\n }, [client, networks, selectedNetwork, currentNetwork, network, onNetworkChange]);\n\n return <IotaClientContext.Provider value={ctx}>{children}</IotaClientContext.Provider>;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClientOptions } from '@iota/iota-sdk/client';\n\nimport { useIotaClientContext } from './useIotaClient.js';\n\nexport type NetworkConfig<T extends object = object> = IotaClientOptions & {\n variables?: T;\n};\n\nexport function createNetworkConfig<\n const T extends Record<string, Config>,\n Config extends NetworkConfig<Variables> = T[keyof T],\n Variables extends object = NonNullable<Config['variables']>,\n>(networkConfig: T) {\n function useNetworkConfig(): Config {\n const { config } = useIotaClientContext();\n\n if (!config) {\n throw new Error('No network config found');\n }\n\n return config as T[keyof T];\n }\n\n function useNetworkVariables(): Variables {\n const { variables } = useNetworkConfig();\n\n return (variables ?? {}) as Variables;\n }\n\n function useNetworkVariable<K extends keyof Variables>(name: K): Variables[K] {\n const variables = useNetworkVariables();\n\n return variables[name];\n }\n\n return {\n networkConfig,\n useNetworkConfig,\n useNetworkVariables,\n useNetworkVariable,\n };\n}\n"],
5
- "mappings": ";AAKA,SAAS,kBAAkB;;;ACD3B,SAAS,YAAY,cAAc,SAAS,kBAAkB;AAE9D,SAAS,eAAe,SAAS,gBAAgB;AAyFtC;AAxEJ,IAAM,oBAAoB,cAAgD,IAAI;AAkBrF,IAAM,mBAAmB;AAAA,EACrB,UAAU,EAAE,KAAK,WAAW,QAAQ,KAAK,EAAE,IAAI;AACnD;;;ADlCO,SAAS,uBAAuB;AACnC,QAAM,aAAa,WAAW,iBAAiB;AAE/C,MAAI,CAAC,YAAY;AACb,UAAM,IAAI;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AACX;;;AEPO,SAAS,oBAId,eAAkB;AAChB,WAAS,mBAA2B;AAChC,UAAM,EAAE,OAAO,IAAI,qBAAqB;AAExC,QAAI,CAAC,QAAQ;AACT,YAAM,IAAI,MAAM,yBAAyB;AAAA,IAC7C;AAEA,WAAO;AAAA,EACX;AAEA,WAAS,sBAAiC;AACtC,UAAM,EAAE,UAAU,IAAI,iBAAiB;AAEvC,WAAQ,aAAa,CAAC;AAAA,EAC1B;AAEA,WAAS,mBAA8C,MAAuB;AAC1E,UAAM,YAAY,oBAAoB;AAEtC,WAAO,UAAU,IAAI;AAAA,EACzB;AAEA,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACJ;",
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport { useContext } from 'react';\n\nimport { IotaClientContext } from '../components/IotaClientProvider.js';\n\nexport function useIotaClientContext() {\n const iotaClient = useContext(IotaClientContext);\n\n if (!iotaClient) {\n throw new Error(\n 'Could not find IotaClientContext. Ensure that you have set up the IotaClientProvider',\n );\n }\n\n return iotaClient;\n}\n\nexport function useIotaClient(): IotaClient {\n return useIotaClientContext().client;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getNetwork, isIotaClient, Network, IotaClient } from '@iota/iota-sdk/client';\nimport type { IotaClientOptions } from '@iota/iota-sdk/client';\nimport { createContext, useMemo, useState } from 'react';\n\nimport type { NetworkConfig } from '../hooks/networkConfig.js';\n\ntype NetworkConfigs<T extends NetworkConfig | IotaClient = NetworkConfig | IotaClient> = Record<\n string,\n T\n>;\n\nexport interface IotaClientProviderContext {\n client: IotaClient;\n networks: NetworkConfigs;\n network: string;\n config: NetworkConfig | null;\n selectNetwork: (network: string) => void;\n}\n\nexport const IotaClientContext = createContext<IotaClientProviderContext | null>(null);\n\nexport type IotaClientProviderProps<T extends NetworkConfigs> = {\n createClient?: (name: keyof T, config: T[keyof T]) => IotaClient;\n children: React.ReactNode;\n networks?: T;\n onNetworkChange?: (network: keyof T & string) => void;\n} & (\n | {\n defaultNetwork?: keyof T & string;\n network?: never;\n }\n | {\n defaultNetwork?: never;\n network?: keyof T & string;\n }\n);\n\nconst DEFAULT_NETWORKS = {\n localnet: { url: getNetwork(Network.Localnet).url },\n};\n\nconst DEFAULT_CREATE_CLIENT = function createClient(\n _name: string,\n config: NetworkConfig | IotaClient,\n) {\n if (isIotaClient(config)) {\n return config;\n }\n\n return new IotaClient(config);\n};\n\nexport function IotaClientProvider<T extends NetworkConfigs>(props: IotaClientProviderProps<T>) {\n const { onNetworkChange, network, children } = props;\n const networks = (props.networks ?? DEFAULT_NETWORKS) as T;\n const createClient =\n (props.createClient as typeof DEFAULT_CREATE_CLIENT) ?? DEFAULT_CREATE_CLIENT;\n\n const [selectedNetwork, setSelectedNetwork] = useState<keyof T & string>(\n props.network ?? props.defaultNetwork ?? (Object.keys(networks)[0] as keyof T & string),\n );\n\n const currentNetwork = props.network ?? selectedNetwork;\n\n const client = useMemo(() => {\n return createClient(currentNetwork, networks[currentNetwork]);\n }, [createClient, currentNetwork, networks]);\n\n const ctx = useMemo((): IotaClientProviderContext => {\n return {\n client,\n networks,\n network: currentNetwork,\n config:\n networks[currentNetwork] instanceof IotaClient\n ? null\n : (networks[currentNetwork] as IotaClientOptions),\n selectNetwork: (newNetwork) => {\n if (currentNetwork === newNetwork) {\n return;\n }\n\n if (!network && newNetwork !== selectedNetwork) {\n setSelectedNetwork(newNetwork);\n }\n\n onNetworkChange?.(newNetwork);\n },\n };\n }, [client, networks, selectedNetwork, currentNetwork, network, onNetworkChange]);\n\n return <IotaClientContext.Provider value={ctx}>{children}</IotaClientContext.Provider>;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClientOptions } from '@iota/iota-sdk/client';\n\nimport { useIotaClientContext } from './useIotaClient.js';\n\nexport type NetworkConfig<T extends object = object> = IotaClientOptions & {\n variables?: T;\n};\n\nexport function createNetworkConfig<\n const T extends Record<string, Config>,\n Config extends NetworkConfig<Variables> = T[keyof T],\n Variables extends object = NonNullable<Config['variables']>,\n>(networkConfig: T) {\n function useNetworkConfig(): Config {\n const { config } = useIotaClientContext();\n\n if (!config) {\n throw new Error('No network config found');\n }\n\n return config as T[keyof T];\n }\n\n function useNetworkVariables(): Variables {\n const { variables } = useNetworkConfig();\n\n return (variables ?? {}) as Variables;\n }\n\n function useNetworkVariable<K extends keyof Variables>(name: K): Variables[K] {\n const variables = useNetworkVariables();\n\n return variables[name];\n }\n\n return {\n networkConfig,\n useNetworkConfig,\n useNetworkVariables,\n useNetworkVariable,\n };\n}\n"],
5
+ "mappings": ";AAKA,SAAS,kBAAkB;;;ACD3B,SAAS,YAAY,cAAc,SAAS,kBAAkB;AAE9D,SAAS,eAAe,SAAS,gBAAgB;AAyFtC;AAxEJ,IAAM,oBAAoB,cAAgD,IAAI;AAkBrF,IAAM,mBAAmB;AAAA,EACrB,UAAU,EAAE,KAAK,WAAW,QAAQ,QAAQ,EAAE,IAAI;AACtD;;;ADlCO,SAAS,uBAAuB;AACnC,QAAM,aAAa,WAAW,iBAAiB;AAE/C,MAAI,CAAC,YAAY;AACb,UAAM,IAAI;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AACX;;;AEPO,SAAS,oBAId,eAAkB;AAChB,WAAS,mBAA2B;AAChC,UAAM,EAAE,OAAO,IAAI,qBAAqB;AAExC,QAAI,CAAC,QAAQ;AACT,YAAM,IAAI,MAAM,yBAAyB;AAAA,IAC7C;AAEA,WAAO;AAAA,EACX;AAEA,WAAS,sBAAiC;AACtC,UAAM,EAAE,UAAU,IAAI,iBAAiB;AAEvC,WAAQ,aAAa,CAAC;AAAA,EAC1B;AAEA,WAAS,mBAA8C,MAAuB;AAC1E,UAAM,YAAY,oBAAoB;AAEtC,WAAO,UAAU,IAAI;AAAA,EACzB;AAEA,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACJ;",
6
6
  "names": []
7
7
  }
@@ -7,7 +7,7 @@ import { createContext, useMemo, useState } from "react";
7
7
  import { jsx } from "react/jsx-runtime";
8
8
  var IotaClientContext = createContext(null);
9
9
  var DEFAULT_NETWORKS = {
10
- localnet: { url: getNetwork(Network.Local).url }
10
+ localnet: { url: getNetwork(Network.Localnet).url }
11
11
  };
12
12
 
13
13
  // src/hooks/useIotaClient.ts
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/hooks/useIotaClient.ts", "../../../src/components/IotaClientProvider.tsx"],
4
- "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport { useContext } from 'react';\n\nimport { IotaClientContext } from '../components/IotaClientProvider.js';\n\nexport function useIotaClientContext() {\n const iotaClient = useContext(IotaClientContext);\n\n if (!iotaClient) {\n throw new Error(\n 'Could not find IotaClientContext. Ensure that you have set up the IotaClientProvider',\n );\n }\n\n return iotaClient;\n}\n\nexport function useIotaClient(): IotaClient {\n return useIotaClientContext().client;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getNetwork, isIotaClient, Network, IotaClient } from '@iota/iota-sdk/client';\nimport type { IotaClientOptions } from '@iota/iota-sdk/client';\nimport { createContext, useMemo, useState } from 'react';\n\nimport type { NetworkConfig } from '../hooks/networkConfig.js';\n\ntype NetworkConfigs<T extends NetworkConfig | IotaClient = NetworkConfig | IotaClient> = Record<\n string,\n T\n>;\n\nexport interface IotaClientProviderContext {\n client: IotaClient;\n networks: NetworkConfigs;\n network: string;\n config: NetworkConfig | null;\n selectNetwork: (network: string) => void;\n}\n\nexport const IotaClientContext = createContext<IotaClientProviderContext | null>(null);\n\nexport type IotaClientProviderProps<T extends NetworkConfigs> = {\n createClient?: (name: keyof T, config: T[keyof T]) => IotaClient;\n children: React.ReactNode;\n networks?: T;\n onNetworkChange?: (network: keyof T & string) => void;\n} & (\n | {\n defaultNetwork?: keyof T & string;\n network?: never;\n }\n | {\n defaultNetwork?: never;\n network?: keyof T & string;\n }\n);\n\nconst DEFAULT_NETWORKS = {\n localnet: { url: getNetwork(Network.Local).url },\n};\n\nconst DEFAULT_CREATE_CLIENT = function createClient(\n _name: string,\n config: NetworkConfig | IotaClient,\n) {\n if (isIotaClient(config)) {\n return config;\n }\n\n return new IotaClient(config);\n};\n\nexport function IotaClientProvider<T extends NetworkConfigs>(props: IotaClientProviderProps<T>) {\n const { onNetworkChange, network, children } = props;\n const networks = (props.networks ?? DEFAULT_NETWORKS) as T;\n const createClient =\n (props.createClient as typeof DEFAULT_CREATE_CLIENT) ?? DEFAULT_CREATE_CLIENT;\n\n const [selectedNetwork, setSelectedNetwork] = useState<keyof T & string>(\n props.network ?? props.defaultNetwork ?? (Object.keys(networks)[0] as keyof T & string),\n );\n\n const currentNetwork = props.network ?? selectedNetwork;\n\n const client = useMemo(() => {\n return createClient(currentNetwork, networks[currentNetwork]);\n }, [createClient, currentNetwork, networks]);\n\n const ctx = useMemo((): IotaClientProviderContext => {\n return {\n client,\n networks,\n network: currentNetwork,\n config:\n networks[currentNetwork] instanceof IotaClient\n ? null\n : (networks[currentNetwork] as IotaClientOptions),\n selectNetwork: (newNetwork) => {\n if (currentNetwork === newNetwork) {\n return;\n }\n\n if (!network && newNetwork !== selectedNetwork) {\n setSelectedNetwork(newNetwork);\n }\n\n onNetworkChange?.(newNetwork);\n },\n };\n }, [client, networks, selectedNetwork, currentNetwork, network, onNetworkChange]);\n\n return <IotaClientContext.Provider value={ctx}>{children}</IotaClientContext.Provider>;\n}\n"],
5
- "mappings": ";AAKA,SAAS,kBAAkB;;;ACD3B,SAAS,YAAY,cAAc,SAAS,kBAAkB;AAE9D,SAAS,eAAe,SAAS,gBAAgB;AAyFtC;AAxEJ,IAAM,oBAAoB,cAAgD,IAAI;AAkBrF,IAAM,mBAAmB;AAAA,EACrB,UAAU,EAAE,KAAK,WAAW,QAAQ,KAAK,EAAE,IAAI;AACnD;;;ADlCO,SAAS,uBAAuB;AACnC,QAAM,aAAa,WAAW,iBAAiB;AAE/C,MAAI,CAAC,YAAY;AACb,UAAM,IAAI;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AACX;AAEO,SAAS,gBAA4B;AACxC,SAAO,qBAAqB,EAAE;AAClC;",
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport { useContext } from 'react';\n\nimport { IotaClientContext } from '../components/IotaClientProvider.js';\n\nexport function useIotaClientContext() {\n const iotaClient = useContext(IotaClientContext);\n\n if (!iotaClient) {\n throw new Error(\n 'Could not find IotaClientContext. Ensure that you have set up the IotaClientProvider',\n );\n }\n\n return iotaClient;\n}\n\nexport function useIotaClient(): IotaClient {\n return useIotaClientContext().client;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getNetwork, isIotaClient, Network, IotaClient } from '@iota/iota-sdk/client';\nimport type { IotaClientOptions } from '@iota/iota-sdk/client';\nimport { createContext, useMemo, useState } from 'react';\n\nimport type { NetworkConfig } from '../hooks/networkConfig.js';\n\ntype NetworkConfigs<T extends NetworkConfig | IotaClient = NetworkConfig | IotaClient> = Record<\n string,\n T\n>;\n\nexport interface IotaClientProviderContext {\n client: IotaClient;\n networks: NetworkConfigs;\n network: string;\n config: NetworkConfig | null;\n selectNetwork: (network: string) => void;\n}\n\nexport const IotaClientContext = createContext<IotaClientProviderContext | null>(null);\n\nexport type IotaClientProviderProps<T extends NetworkConfigs> = {\n createClient?: (name: keyof T, config: T[keyof T]) => IotaClient;\n children: React.ReactNode;\n networks?: T;\n onNetworkChange?: (network: keyof T & string) => void;\n} & (\n | {\n defaultNetwork?: keyof T & string;\n network?: never;\n }\n | {\n defaultNetwork?: never;\n network?: keyof T & string;\n }\n);\n\nconst DEFAULT_NETWORKS = {\n localnet: { url: getNetwork(Network.Localnet).url },\n};\n\nconst DEFAULT_CREATE_CLIENT = function createClient(\n _name: string,\n config: NetworkConfig | IotaClient,\n) {\n if (isIotaClient(config)) {\n return config;\n }\n\n return new IotaClient(config);\n};\n\nexport function IotaClientProvider<T extends NetworkConfigs>(props: IotaClientProviderProps<T>) {\n const { onNetworkChange, network, children } = props;\n const networks = (props.networks ?? DEFAULT_NETWORKS) as T;\n const createClient =\n (props.createClient as typeof DEFAULT_CREATE_CLIENT) ?? DEFAULT_CREATE_CLIENT;\n\n const [selectedNetwork, setSelectedNetwork] = useState<keyof T & string>(\n props.network ?? props.defaultNetwork ?? (Object.keys(networks)[0] as keyof T & string),\n );\n\n const currentNetwork = props.network ?? selectedNetwork;\n\n const client = useMemo(() => {\n return createClient(currentNetwork, networks[currentNetwork]);\n }, [createClient, currentNetwork, networks]);\n\n const ctx = useMemo((): IotaClientProviderContext => {\n return {\n client,\n networks,\n network: currentNetwork,\n config:\n networks[currentNetwork] instanceof IotaClient\n ? null\n : (networks[currentNetwork] as IotaClientOptions),\n selectNetwork: (newNetwork) => {\n if (currentNetwork === newNetwork) {\n return;\n }\n\n if (!network && newNetwork !== selectedNetwork) {\n setSelectedNetwork(newNetwork);\n }\n\n onNetworkChange?.(newNetwork);\n },\n };\n }, [client, networks, selectedNetwork, currentNetwork, network, onNetworkChange]);\n\n return <IotaClientContext.Provider value={ctx}>{children}</IotaClientContext.Provider>;\n}\n"],
5
+ "mappings": ";AAKA,SAAS,kBAAkB;;;ACD3B,SAAS,YAAY,cAAc,SAAS,kBAAkB;AAE9D,SAAS,eAAe,SAAS,gBAAgB;AAyFtC;AAxEJ,IAAM,oBAAoB,cAAgD,IAAI;AAkBrF,IAAM,mBAAmB;AAAA,EACrB,UAAU,EAAE,KAAK,WAAW,QAAQ,QAAQ,EAAE,IAAI;AACtD;;;ADlCO,SAAS,uBAAuB;AACnC,QAAM,aAAa,WAAW,iBAAiB;AAE/C,MAAI,CAAC,YAAY;AACb,UAAM,IAAI;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AACX;AAEO,SAAS,gBAA4B;AACxC,SAAO,qBAAqB,EAAE;AAClC;",
6
6
  "names": []
7
7
  }
@@ -10,7 +10,7 @@ import { createContext, useMemo, useState } from "react";
10
10
  import { jsx } from "react/jsx-runtime";
11
11
  var IotaClientContext = createContext(null);
12
12
  var DEFAULT_NETWORKS = {
13
- localnet: { url: getNetwork(Network.Local).url }
13
+ localnet: { url: getNetwork(Network.Localnet).url }
14
14
  };
15
15
 
16
16
  // src/hooks/useIotaClient.ts
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/hooks/useIotaClientInfiniteQuery.ts", "../../../src/hooks/useIotaClient.ts", "../../../src/components/IotaClientProvider.tsx"],
4
- "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport type {\n InfiniteData,\n UseInfiniteQueryOptions,\n UseInfiniteQueryResult,\n} from '@tanstack/react-query';\nimport { useInfiniteQuery } from '@tanstack/react-query';\n\nimport type { PartialBy } from '../types/utilityTypes.js';\nimport { useIotaClientContext } from './useIotaClient.js';\n\ninterface PaginatedResult {\n data?: unknown;\n nextCursor?: unknown;\n hasNextPage: boolean;\n}\n\nexport type IotaRpcPaginatedMethodName = {\n [K in keyof IotaClient]: IotaClient[K] extends (input: any) => Promise<PaginatedResult>\n ? K\n : never;\n}[keyof IotaClient];\n\nexport type IotaRpcPaginatedMethods = {\n [K in IotaRpcPaginatedMethodName]: IotaClient[K] extends (\n input: infer Params,\n ) => Promise<\n infer Result extends { hasNextPage?: boolean | null; nextCursor?: infer Cursor | null }\n >\n ? {\n name: K;\n result: Result;\n params: Params;\n cursor: Cursor;\n }\n : never;\n};\n\nexport type UseIotaClientInfiniteQueryOptions<\n T extends keyof IotaRpcPaginatedMethods,\n TData,\n> = PartialBy<\n Omit<\n UseInfiniteQueryOptions<\n IotaRpcPaginatedMethods[T]['result'],\n Error,\n TData,\n IotaRpcPaginatedMethods[T]['result'],\n unknown[]\n >,\n 'queryFn' | 'initialPageParam' | 'getNextPageParam'\n >,\n 'queryKey'\n>;\n\nexport function useIotaClientInfiniteQuery<\n T extends keyof IotaRpcPaginatedMethods,\n TData = InfiniteData<IotaRpcPaginatedMethods[T]['result']>,\n>(\n method: T,\n params: IotaRpcPaginatedMethods[T]['params'],\n {\n queryKey = [],\n enabled = !!params,\n ...options\n }: UseIotaClientInfiniteQueryOptions<T, TData> = {},\n): UseInfiniteQueryResult<TData, Error> {\n const iotaContext = useIotaClientContext();\n\n return useInfiniteQuery({\n ...options,\n initialPageParam: null,\n queryKey: [iotaContext.network, method, params, ...queryKey],\n enabled,\n queryFn: ({ pageParam }) =>\n iotaContext.client[method]({\n ...(params ?? {}),\n cursor: pageParam,\n } as never),\n getNextPageParam: (lastPage) => (lastPage.hasNextPage ? lastPage.nextCursor ?? null : null),\n });\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport { useContext } from 'react';\n\nimport { IotaClientContext } from '../components/IotaClientProvider.js';\n\nexport function useIotaClientContext() {\n const iotaClient = useContext(IotaClientContext);\n\n if (!iotaClient) {\n throw new Error(\n 'Could not find IotaClientContext. Ensure that you have set up the IotaClientProvider',\n );\n }\n\n return iotaClient;\n}\n\nexport function useIotaClient(): IotaClient {\n return useIotaClientContext().client;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getNetwork, isIotaClient, Network, IotaClient } from '@iota/iota-sdk/client';\nimport type { IotaClientOptions } from '@iota/iota-sdk/client';\nimport { createContext, useMemo, useState } from 'react';\n\nimport type { NetworkConfig } from '../hooks/networkConfig.js';\n\ntype NetworkConfigs<T extends NetworkConfig | IotaClient = NetworkConfig | IotaClient> = Record<\n string,\n T\n>;\n\nexport interface IotaClientProviderContext {\n client: IotaClient;\n networks: NetworkConfigs;\n network: string;\n config: NetworkConfig | null;\n selectNetwork: (network: string) => void;\n}\n\nexport const IotaClientContext = createContext<IotaClientProviderContext | null>(null);\n\nexport type IotaClientProviderProps<T extends NetworkConfigs> = {\n createClient?: (name: keyof T, config: T[keyof T]) => IotaClient;\n children: React.ReactNode;\n networks?: T;\n onNetworkChange?: (network: keyof T & string) => void;\n} & (\n | {\n defaultNetwork?: keyof T & string;\n network?: never;\n }\n | {\n defaultNetwork?: never;\n network?: keyof T & string;\n }\n);\n\nconst DEFAULT_NETWORKS = {\n localnet: { url: getNetwork(Network.Local).url },\n};\n\nconst DEFAULT_CREATE_CLIENT = function createClient(\n _name: string,\n config: NetworkConfig | IotaClient,\n) {\n if (isIotaClient(config)) {\n return config;\n }\n\n return new IotaClient(config);\n};\n\nexport function IotaClientProvider<T extends NetworkConfigs>(props: IotaClientProviderProps<T>) {\n const { onNetworkChange, network, children } = props;\n const networks = (props.networks ?? DEFAULT_NETWORKS) as T;\n const createClient =\n (props.createClient as typeof DEFAULT_CREATE_CLIENT) ?? DEFAULT_CREATE_CLIENT;\n\n const [selectedNetwork, setSelectedNetwork] = useState<keyof T & string>(\n props.network ?? props.defaultNetwork ?? (Object.keys(networks)[0] as keyof T & string),\n );\n\n const currentNetwork = props.network ?? selectedNetwork;\n\n const client = useMemo(() => {\n return createClient(currentNetwork, networks[currentNetwork]);\n }, [createClient, currentNetwork, networks]);\n\n const ctx = useMemo((): IotaClientProviderContext => {\n return {\n client,\n networks,\n network: currentNetwork,\n config:\n networks[currentNetwork] instanceof IotaClient\n ? null\n : (networks[currentNetwork] as IotaClientOptions),\n selectNetwork: (newNetwork) => {\n if (currentNetwork === newNetwork) {\n return;\n }\n\n if (!network && newNetwork !== selectedNetwork) {\n setSelectedNetwork(newNetwork);\n }\n\n onNetworkChange?.(newNetwork);\n },\n };\n }, [client, networks, selectedNetwork, currentNetwork, network, onNetworkChange]);\n\n return <IotaClientContext.Provider value={ctx}>{children}</IotaClientContext.Provider>;\n}\n"],
5
- "mappings": ";AAUA,SAAS,wBAAwB;;;ACLjC,SAAS,kBAAkB;;;ACD3B,SAAS,YAAY,cAAc,SAAS,kBAAkB;AAE9D,SAAS,eAAe,SAAS,gBAAgB;AAyFtC;AAxEJ,IAAM,oBAAoB,cAAgD,IAAI;AAkBrF,IAAM,mBAAmB;AAAA,EACrB,UAAU,EAAE,KAAK,WAAW,QAAQ,KAAK,EAAE,IAAI;AACnD;;;ADlCO,SAAS,uBAAuB;AACnC,QAAM,aAAa,WAAW,iBAAiB;AAE/C,MAAI,CAAC,YAAY;AACb,UAAM,IAAI;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AACX;;;ADwCO,SAAS,2BAIZ,QACA,QACA;AAAA,EACI,WAAW,CAAC;AAAA,EACZ,UAAU,CAAC,CAAC;AAAA,EACZ,GAAG;AACP,IAAiD,CAAC,GACd;AACpC,QAAM,cAAc,qBAAqB;AAEzC,SAAO,iBAAiB;AAAA,IACpB,GAAG;AAAA,IACH,kBAAkB;AAAA,IAClB,UAAU,CAAC,YAAY,SAAS,QAAQ,QAAQ,GAAG,QAAQ;AAAA,IAC3D;AAAA,IACA,SAAS,CAAC,EAAE,UAAU,MAClB,YAAY,OAAO,MAAM,EAAE;AAAA,MACvB,GAAI,UAAU,CAAC;AAAA,MACf,QAAQ;AAAA,IACZ,CAAU;AAAA,IACd,kBAAkB,CAAC,aAAc,SAAS,cAAc,SAAS,cAAc,OAAO;AAAA,EAC1F,CAAC;AACL;",
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport type {\n InfiniteData,\n UseInfiniteQueryOptions,\n UseInfiniteQueryResult,\n} from '@tanstack/react-query';\nimport { useInfiniteQuery } from '@tanstack/react-query';\n\nimport type { PartialBy } from '../types/utilityTypes.js';\nimport { useIotaClientContext } from './useIotaClient.js';\n\ninterface PaginatedResult {\n data?: unknown;\n nextCursor?: unknown;\n hasNextPage: boolean;\n}\n\nexport type IotaRpcPaginatedMethodName = {\n [K in keyof IotaClient]: IotaClient[K] extends (input: any) => Promise<PaginatedResult>\n ? K\n : never;\n}[keyof IotaClient];\n\nexport type IotaRpcPaginatedMethods = {\n [K in IotaRpcPaginatedMethodName]: IotaClient[K] extends (\n input: infer Params,\n ) => Promise<\n infer Result extends { hasNextPage?: boolean | null; nextCursor?: infer Cursor | null }\n >\n ? {\n name: K;\n result: Result;\n params: Params;\n cursor: Cursor;\n }\n : never;\n};\n\nexport type UseIotaClientInfiniteQueryOptions<\n T extends keyof IotaRpcPaginatedMethods,\n TData,\n> = PartialBy<\n Omit<\n UseInfiniteQueryOptions<\n IotaRpcPaginatedMethods[T]['result'],\n Error,\n TData,\n IotaRpcPaginatedMethods[T]['result'],\n unknown[]\n >,\n 'queryFn' | 'initialPageParam' | 'getNextPageParam'\n >,\n 'queryKey'\n>;\n\nexport function useIotaClientInfiniteQuery<\n T extends keyof IotaRpcPaginatedMethods,\n TData = InfiniteData<IotaRpcPaginatedMethods[T]['result']>,\n>(\n method: T,\n params: IotaRpcPaginatedMethods[T]['params'],\n {\n queryKey = [],\n enabled = !!params,\n ...options\n }: UseIotaClientInfiniteQueryOptions<T, TData> = {},\n): UseInfiniteQueryResult<TData, Error> {\n const iotaContext = useIotaClientContext();\n\n return useInfiniteQuery({\n ...options,\n initialPageParam: null,\n queryKey: [iotaContext.network, method, params, ...queryKey],\n enabled,\n queryFn: ({ pageParam }) =>\n iotaContext.client[method]({\n ...(params ?? {}),\n cursor: pageParam,\n } as never),\n getNextPageParam: (lastPage) =>\n lastPage.hasNextPage ? (lastPage.nextCursor ?? null) : null,\n });\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport { useContext } from 'react';\n\nimport { IotaClientContext } from '../components/IotaClientProvider.js';\n\nexport function useIotaClientContext() {\n const iotaClient = useContext(IotaClientContext);\n\n if (!iotaClient) {\n throw new Error(\n 'Could not find IotaClientContext. Ensure that you have set up the IotaClientProvider',\n );\n }\n\n return iotaClient;\n}\n\nexport function useIotaClient(): IotaClient {\n return useIotaClientContext().client;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getNetwork, isIotaClient, Network, IotaClient } from '@iota/iota-sdk/client';\nimport type { IotaClientOptions } from '@iota/iota-sdk/client';\nimport { createContext, useMemo, useState } from 'react';\n\nimport type { NetworkConfig } from '../hooks/networkConfig.js';\n\ntype NetworkConfigs<T extends NetworkConfig | IotaClient = NetworkConfig | IotaClient> = Record<\n string,\n T\n>;\n\nexport interface IotaClientProviderContext {\n client: IotaClient;\n networks: NetworkConfigs;\n network: string;\n config: NetworkConfig | null;\n selectNetwork: (network: string) => void;\n}\n\nexport const IotaClientContext = createContext<IotaClientProviderContext | null>(null);\n\nexport type IotaClientProviderProps<T extends NetworkConfigs> = {\n createClient?: (name: keyof T, config: T[keyof T]) => IotaClient;\n children: React.ReactNode;\n networks?: T;\n onNetworkChange?: (network: keyof T & string) => void;\n} & (\n | {\n defaultNetwork?: keyof T & string;\n network?: never;\n }\n | {\n defaultNetwork?: never;\n network?: keyof T & string;\n }\n);\n\nconst DEFAULT_NETWORKS = {\n localnet: { url: getNetwork(Network.Localnet).url },\n};\n\nconst DEFAULT_CREATE_CLIENT = function createClient(\n _name: string,\n config: NetworkConfig | IotaClient,\n) {\n if (isIotaClient(config)) {\n return config;\n }\n\n return new IotaClient(config);\n};\n\nexport function IotaClientProvider<T extends NetworkConfigs>(props: IotaClientProviderProps<T>) {\n const { onNetworkChange, network, children } = props;\n const networks = (props.networks ?? DEFAULT_NETWORKS) as T;\n const createClient =\n (props.createClient as typeof DEFAULT_CREATE_CLIENT) ?? DEFAULT_CREATE_CLIENT;\n\n const [selectedNetwork, setSelectedNetwork] = useState<keyof T & string>(\n props.network ?? props.defaultNetwork ?? (Object.keys(networks)[0] as keyof T & string),\n );\n\n const currentNetwork = props.network ?? selectedNetwork;\n\n const client = useMemo(() => {\n return createClient(currentNetwork, networks[currentNetwork]);\n }, [createClient, currentNetwork, networks]);\n\n const ctx = useMemo((): IotaClientProviderContext => {\n return {\n client,\n networks,\n network: currentNetwork,\n config:\n networks[currentNetwork] instanceof IotaClient\n ? null\n : (networks[currentNetwork] as IotaClientOptions),\n selectNetwork: (newNetwork) => {\n if (currentNetwork === newNetwork) {\n return;\n }\n\n if (!network && newNetwork !== selectedNetwork) {\n setSelectedNetwork(newNetwork);\n }\n\n onNetworkChange?.(newNetwork);\n },\n };\n }, [client, networks, selectedNetwork, currentNetwork, network, onNetworkChange]);\n\n return <IotaClientContext.Provider value={ctx}>{children}</IotaClientContext.Provider>;\n}\n"],
5
+ "mappings": ";AAUA,SAAS,wBAAwB;;;ACLjC,SAAS,kBAAkB;;;ACD3B,SAAS,YAAY,cAAc,SAAS,kBAAkB;AAE9D,SAAS,eAAe,SAAS,gBAAgB;AAyFtC;AAxEJ,IAAM,oBAAoB,cAAgD,IAAI;AAkBrF,IAAM,mBAAmB;AAAA,EACrB,UAAU,EAAE,KAAK,WAAW,QAAQ,QAAQ,EAAE,IAAI;AACtD;;;ADlCO,SAAS,uBAAuB;AACnC,QAAM,aAAa,WAAW,iBAAiB;AAE/C,MAAI,CAAC,YAAY;AACb,UAAM,IAAI;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AACX;;;ADwCO,SAAS,2BAIZ,QACA,QACA;AAAA,EACI,WAAW,CAAC;AAAA,EACZ,UAAU,CAAC,CAAC;AAAA,EACZ,GAAG;AACP,IAAiD,CAAC,GACd;AACpC,QAAM,cAAc,qBAAqB;AAEzC,SAAO,iBAAiB;AAAA,IACpB,GAAG;AAAA,IACH,kBAAkB;AAAA,IAClB,UAAU,CAAC,YAAY,SAAS,QAAQ,QAAQ,GAAG,QAAQ;AAAA,IAC3D;AAAA,IACA,SAAS,CAAC,EAAE,UAAU,MAClB,YAAY,OAAO,MAAM,EAAE;AAAA,MACvB,GAAI,UAAU,CAAC;AAAA,MACf,QAAQ;AAAA,IACZ,CAAU;AAAA,IACd,kBAAkB,CAAC,aACf,SAAS,cAAe,SAAS,cAAc,OAAQ;AAAA,EAC/D,CAAC;AACL;",
6
6
  "names": []
7
7
  }
@@ -10,7 +10,7 @@ import { createContext, useMemo, useState } from "react";
10
10
  import { jsx } from "react/jsx-runtime";
11
11
  var IotaClientContext = createContext(null);
12
12
  var DEFAULT_NETWORKS = {
13
- localnet: { url: getNetwork(Network.Local).url }
13
+ localnet: { url: getNetwork(Network.Localnet).url }
14
14
  };
15
15
 
16
16
  // src/hooks/useIotaClient.ts
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/hooks/useIotaClientMutation.ts", "../../../src/hooks/useIotaClient.ts", "../../../src/components/IotaClientProvider.tsx"],
4
- "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { useIotaClientContext } from './useIotaClient.js';\nimport type { IotaRpcMethods } from './useIotaClientQuery.js';\n\nexport type UseIotaClientMutationOptions<T extends keyof IotaRpcMethods> = Omit<\n UseMutationOptions<IotaRpcMethods[T]['result'], Error, IotaRpcMethods[T]['params'], unknown[]>,\n 'mutationFn'\n>;\n\nexport function useIotaClientMutation<T extends keyof IotaRpcMethods>(\n method: T,\n options: UseIotaClientMutationOptions<T> = {},\n): UseMutationResult<IotaRpcMethods[T]['result'], Error, IotaRpcMethods[T]['params'], unknown[]> {\n const iotaContext = useIotaClientContext();\n\n return useMutation({\n ...options,\n mutationFn: async (params) => {\n return await iotaContext.client[method](params as never);\n },\n });\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport { useContext } from 'react';\n\nimport { IotaClientContext } from '../components/IotaClientProvider.js';\n\nexport function useIotaClientContext() {\n const iotaClient = useContext(IotaClientContext);\n\n if (!iotaClient) {\n throw new Error(\n 'Could not find IotaClientContext. Ensure that you have set up the IotaClientProvider',\n );\n }\n\n return iotaClient;\n}\n\nexport function useIotaClient(): IotaClient {\n return useIotaClientContext().client;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getNetwork, isIotaClient, Network, IotaClient } from '@iota/iota-sdk/client';\nimport type { IotaClientOptions } from '@iota/iota-sdk/client';\nimport { createContext, useMemo, useState } from 'react';\n\nimport type { NetworkConfig } from '../hooks/networkConfig.js';\n\ntype NetworkConfigs<T extends NetworkConfig | IotaClient = NetworkConfig | IotaClient> = Record<\n string,\n T\n>;\n\nexport interface IotaClientProviderContext {\n client: IotaClient;\n networks: NetworkConfigs;\n network: string;\n config: NetworkConfig | null;\n selectNetwork: (network: string) => void;\n}\n\nexport const IotaClientContext = createContext<IotaClientProviderContext | null>(null);\n\nexport type IotaClientProviderProps<T extends NetworkConfigs> = {\n createClient?: (name: keyof T, config: T[keyof T]) => IotaClient;\n children: React.ReactNode;\n networks?: T;\n onNetworkChange?: (network: keyof T & string) => void;\n} & (\n | {\n defaultNetwork?: keyof T & string;\n network?: never;\n }\n | {\n defaultNetwork?: never;\n network?: keyof T & string;\n }\n);\n\nconst DEFAULT_NETWORKS = {\n localnet: { url: getNetwork(Network.Local).url },\n};\n\nconst DEFAULT_CREATE_CLIENT = function createClient(\n _name: string,\n config: NetworkConfig | IotaClient,\n) {\n if (isIotaClient(config)) {\n return config;\n }\n\n return new IotaClient(config);\n};\n\nexport function IotaClientProvider<T extends NetworkConfigs>(props: IotaClientProviderProps<T>) {\n const { onNetworkChange, network, children } = props;\n const networks = (props.networks ?? DEFAULT_NETWORKS) as T;\n const createClient =\n (props.createClient as typeof DEFAULT_CREATE_CLIENT) ?? DEFAULT_CREATE_CLIENT;\n\n const [selectedNetwork, setSelectedNetwork] = useState<keyof T & string>(\n props.network ?? props.defaultNetwork ?? (Object.keys(networks)[0] as keyof T & string),\n );\n\n const currentNetwork = props.network ?? selectedNetwork;\n\n const client = useMemo(() => {\n return createClient(currentNetwork, networks[currentNetwork]);\n }, [createClient, currentNetwork, networks]);\n\n const ctx = useMemo((): IotaClientProviderContext => {\n return {\n client,\n networks,\n network: currentNetwork,\n config:\n networks[currentNetwork] instanceof IotaClient\n ? null\n : (networks[currentNetwork] as IotaClientOptions),\n selectNetwork: (newNetwork) => {\n if (currentNetwork === newNetwork) {\n return;\n }\n\n if (!network && newNetwork !== selectedNetwork) {\n setSelectedNetwork(newNetwork);\n }\n\n onNetworkChange?.(newNetwork);\n },\n };\n }, [client, networks, selectedNetwork, currentNetwork, network, onNetworkChange]);\n\n return <IotaClientContext.Provider value={ctx}>{children}</IotaClientContext.Provider>;\n}\n"],
5
- "mappings": ";AAKA,SAAS,mBAAmB;;;ACA5B,SAAS,kBAAkB;;;ACD3B,SAAS,YAAY,cAAc,SAAS,kBAAkB;AAE9D,SAAS,eAAe,SAAS,gBAAgB;AAyFtC;AAxEJ,IAAM,oBAAoB,cAAgD,IAAI;AAkBrF,IAAM,mBAAmB;AAAA,EACrB,UAAU,EAAE,KAAK,WAAW,QAAQ,KAAK,EAAE,IAAI;AACnD;;;ADlCO,SAAS,uBAAuB;AACnC,QAAM,aAAa,WAAW,iBAAiB;AAE/C,MAAI,CAAC,YAAY;AACb,UAAM,IAAI;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AACX;;;ADJO,SAAS,sBACZ,QACA,UAA2C,CAAC,GACiD;AAC7F,QAAM,cAAc,qBAAqB;AAEzC,SAAO,YAAY;AAAA,IACf,GAAG;AAAA,IACH,YAAY,OAAO,WAAW;AAC1B,aAAO,MAAM,YAAY,OAAO,MAAM,EAAE,MAAe;AAAA,IAC3D;AAAA,EACJ,CAAC;AACL;",
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { useIotaClientContext } from './useIotaClient.js';\nimport type { IotaRpcMethods } from './useIotaClientQuery.js';\n\nexport type UseIotaClientMutationOptions<T extends keyof IotaRpcMethods> = Omit<\n UseMutationOptions<IotaRpcMethods[T]['result'], Error, IotaRpcMethods[T]['params'], unknown[]>,\n 'mutationFn'\n>;\n\nexport function useIotaClientMutation<T extends keyof IotaRpcMethods>(\n method: T,\n options: UseIotaClientMutationOptions<T> = {},\n): UseMutationResult<IotaRpcMethods[T]['result'], Error, IotaRpcMethods[T]['params'], unknown[]> {\n const iotaContext = useIotaClientContext();\n\n return useMutation({\n ...options,\n mutationFn: async (params) => {\n return await iotaContext.client[method](params as never);\n },\n });\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport { useContext } from 'react';\n\nimport { IotaClientContext } from '../components/IotaClientProvider.js';\n\nexport function useIotaClientContext() {\n const iotaClient = useContext(IotaClientContext);\n\n if (!iotaClient) {\n throw new Error(\n 'Could not find IotaClientContext. Ensure that you have set up the IotaClientProvider',\n );\n }\n\n return iotaClient;\n}\n\nexport function useIotaClient(): IotaClient {\n return useIotaClientContext().client;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getNetwork, isIotaClient, Network, IotaClient } from '@iota/iota-sdk/client';\nimport type { IotaClientOptions } from '@iota/iota-sdk/client';\nimport { createContext, useMemo, useState } from 'react';\n\nimport type { NetworkConfig } from '../hooks/networkConfig.js';\n\ntype NetworkConfigs<T extends NetworkConfig | IotaClient = NetworkConfig | IotaClient> = Record<\n string,\n T\n>;\n\nexport interface IotaClientProviderContext {\n client: IotaClient;\n networks: NetworkConfigs;\n network: string;\n config: NetworkConfig | null;\n selectNetwork: (network: string) => void;\n}\n\nexport const IotaClientContext = createContext<IotaClientProviderContext | null>(null);\n\nexport type IotaClientProviderProps<T extends NetworkConfigs> = {\n createClient?: (name: keyof T, config: T[keyof T]) => IotaClient;\n children: React.ReactNode;\n networks?: T;\n onNetworkChange?: (network: keyof T & string) => void;\n} & (\n | {\n defaultNetwork?: keyof T & string;\n network?: never;\n }\n | {\n defaultNetwork?: never;\n network?: keyof T & string;\n }\n);\n\nconst DEFAULT_NETWORKS = {\n localnet: { url: getNetwork(Network.Localnet).url },\n};\n\nconst DEFAULT_CREATE_CLIENT = function createClient(\n _name: string,\n config: NetworkConfig | IotaClient,\n) {\n if (isIotaClient(config)) {\n return config;\n }\n\n return new IotaClient(config);\n};\n\nexport function IotaClientProvider<T extends NetworkConfigs>(props: IotaClientProviderProps<T>) {\n const { onNetworkChange, network, children } = props;\n const networks = (props.networks ?? DEFAULT_NETWORKS) as T;\n const createClient =\n (props.createClient as typeof DEFAULT_CREATE_CLIENT) ?? DEFAULT_CREATE_CLIENT;\n\n const [selectedNetwork, setSelectedNetwork] = useState<keyof T & string>(\n props.network ?? props.defaultNetwork ?? (Object.keys(networks)[0] as keyof T & string),\n );\n\n const currentNetwork = props.network ?? selectedNetwork;\n\n const client = useMemo(() => {\n return createClient(currentNetwork, networks[currentNetwork]);\n }, [createClient, currentNetwork, networks]);\n\n const ctx = useMemo((): IotaClientProviderContext => {\n return {\n client,\n networks,\n network: currentNetwork,\n config:\n networks[currentNetwork] instanceof IotaClient\n ? null\n : (networks[currentNetwork] as IotaClientOptions),\n selectNetwork: (newNetwork) => {\n if (currentNetwork === newNetwork) {\n return;\n }\n\n if (!network && newNetwork !== selectedNetwork) {\n setSelectedNetwork(newNetwork);\n }\n\n onNetworkChange?.(newNetwork);\n },\n };\n }, [client, networks, selectedNetwork, currentNetwork, network, onNetworkChange]);\n\n return <IotaClientContext.Provider value={ctx}>{children}</IotaClientContext.Provider>;\n}\n"],
5
+ "mappings": ";AAKA,SAAS,mBAAmB;;;ACA5B,SAAS,kBAAkB;;;ACD3B,SAAS,YAAY,cAAc,SAAS,kBAAkB;AAE9D,SAAS,eAAe,SAAS,gBAAgB;AAyFtC;AAxEJ,IAAM,oBAAoB,cAAgD,IAAI;AAkBrF,IAAM,mBAAmB;AAAA,EACrB,UAAU,EAAE,KAAK,WAAW,QAAQ,QAAQ,EAAE,IAAI;AACtD;;;ADlCO,SAAS,uBAAuB;AACnC,QAAM,aAAa,WAAW,iBAAiB;AAE/C,MAAI,CAAC,YAAY;AACb,UAAM,IAAI;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AACX;;;ADJO,SAAS,sBACZ,QACA,UAA2C,CAAC,GACiD;AAC7F,QAAM,cAAc,qBAAqB;AAEzC,SAAO,YAAY;AAAA,IACf,GAAG;AAAA,IACH,YAAY,OAAO,WAAW;AAC1B,aAAO,MAAM,YAAY,OAAO,MAAM,EAAE,MAAe;AAAA,IAC3D;AAAA,EACJ,CAAC;AACL;",
6
6
  "names": []
7
7
  }
@@ -10,7 +10,7 @@ import { createContext, useMemo, useState } from "react";
10
10
  import { jsx } from "react/jsx-runtime";
11
11
  var IotaClientContext = createContext(null);
12
12
  var DEFAULT_NETWORKS = {
13
- localnet: { url: getNetwork(Network.Local).url }
13
+ localnet: { url: getNetwork(Network.Localnet).url }
14
14
  };
15
15
 
16
16
  // src/hooks/useIotaClient.ts
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/hooks/useIotaClientQueries.ts", "../../../src/hooks/useIotaClient.ts", "../../../src/components/IotaClientProvider.tsx"],
4
- "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { UseQueryResult } from '@tanstack/react-query';\nimport { useQueries } from '@tanstack/react-query';\n\nimport { useIotaClientContext } from './useIotaClient.js';\nimport type { IotaRpcMethods, UseIotaClientQueryOptions } from './useIotaClientQuery.js';\n\ntype IotaClientQueryOptions = IotaRpcMethods[keyof IotaRpcMethods] extends infer Method\n ? Method extends {\n name: infer M extends keyof IotaRpcMethods;\n params?: infer P;\n }\n ? undefined extends P\n ? {\n method: M;\n params?: P;\n options?: UseIotaClientQueryOptions<M, unknown>;\n }\n : {\n method: M;\n params: P;\n options?: UseIotaClientQueryOptions<M, unknown>;\n }\n : never\n : never;\n\nexport type UseIotaClientQueriesResults<Args extends readonly IotaClientQueryOptions[]> = {\n -readonly [K in keyof Args]: Args[K] extends {\n method: infer M extends keyof IotaRpcMethods;\n readonly options?:\n | {\n select?: (...args: any[]) => infer R;\n }\n | object;\n }\n ? UseQueryResult<unknown extends R ? IotaRpcMethods[M]['result'] : R>\n : never;\n};\n\nexport function useIotaClientQueries<\n const Queries extends readonly IotaClientQueryOptions[],\n Results = UseIotaClientQueriesResults<Queries>,\n>({\n queries,\n combine,\n}: {\n queries: Queries;\n combine?: (results: UseIotaClientQueriesResults<Queries>) => Results;\n}): Results {\n const iotaContext = useIotaClientContext();\n\n return useQueries({\n combine: combine as never,\n queries: queries.map((query) => {\n const { method, params, options: { queryKey = [], ...restOptions } = {} } = query;\n\n return {\n ...restOptions,\n queryKey: [iotaContext.network, method, params, ...queryKey],\n queryFn: async () => {\n return await iotaContext.client[method](params as never);\n },\n };\n }) as [],\n });\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport { useContext } from 'react';\n\nimport { IotaClientContext } from '../components/IotaClientProvider.js';\n\nexport function useIotaClientContext() {\n const iotaClient = useContext(IotaClientContext);\n\n if (!iotaClient) {\n throw new Error(\n 'Could not find IotaClientContext. Ensure that you have set up the IotaClientProvider',\n );\n }\n\n return iotaClient;\n}\n\nexport function useIotaClient(): IotaClient {\n return useIotaClientContext().client;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getNetwork, isIotaClient, Network, IotaClient } from '@iota/iota-sdk/client';\nimport type { IotaClientOptions } from '@iota/iota-sdk/client';\nimport { createContext, useMemo, useState } from 'react';\n\nimport type { NetworkConfig } from '../hooks/networkConfig.js';\n\ntype NetworkConfigs<T extends NetworkConfig | IotaClient = NetworkConfig | IotaClient> = Record<\n string,\n T\n>;\n\nexport interface IotaClientProviderContext {\n client: IotaClient;\n networks: NetworkConfigs;\n network: string;\n config: NetworkConfig | null;\n selectNetwork: (network: string) => void;\n}\n\nexport const IotaClientContext = createContext<IotaClientProviderContext | null>(null);\n\nexport type IotaClientProviderProps<T extends NetworkConfigs> = {\n createClient?: (name: keyof T, config: T[keyof T]) => IotaClient;\n children: React.ReactNode;\n networks?: T;\n onNetworkChange?: (network: keyof T & string) => void;\n} & (\n | {\n defaultNetwork?: keyof T & string;\n network?: never;\n }\n | {\n defaultNetwork?: never;\n network?: keyof T & string;\n }\n);\n\nconst DEFAULT_NETWORKS = {\n localnet: { url: getNetwork(Network.Local).url },\n};\n\nconst DEFAULT_CREATE_CLIENT = function createClient(\n _name: string,\n config: NetworkConfig | IotaClient,\n) {\n if (isIotaClient(config)) {\n return config;\n }\n\n return new IotaClient(config);\n};\n\nexport function IotaClientProvider<T extends NetworkConfigs>(props: IotaClientProviderProps<T>) {\n const { onNetworkChange, network, children } = props;\n const networks = (props.networks ?? DEFAULT_NETWORKS) as T;\n const createClient =\n (props.createClient as typeof DEFAULT_CREATE_CLIENT) ?? DEFAULT_CREATE_CLIENT;\n\n const [selectedNetwork, setSelectedNetwork] = useState<keyof T & string>(\n props.network ?? props.defaultNetwork ?? (Object.keys(networks)[0] as keyof T & string),\n );\n\n const currentNetwork = props.network ?? selectedNetwork;\n\n const client = useMemo(() => {\n return createClient(currentNetwork, networks[currentNetwork]);\n }, [createClient, currentNetwork, networks]);\n\n const ctx = useMemo((): IotaClientProviderContext => {\n return {\n client,\n networks,\n network: currentNetwork,\n config:\n networks[currentNetwork] instanceof IotaClient\n ? null\n : (networks[currentNetwork] as IotaClientOptions),\n selectNetwork: (newNetwork) => {\n if (currentNetwork === newNetwork) {\n return;\n }\n\n if (!network && newNetwork !== selectedNetwork) {\n setSelectedNetwork(newNetwork);\n }\n\n onNetworkChange?.(newNetwork);\n },\n };\n }, [client, networks, selectedNetwork, currentNetwork, network, onNetworkChange]);\n\n return <IotaClientContext.Provider value={ctx}>{children}</IotaClientContext.Provider>;\n}\n"],
5
- "mappings": ";AAKA,SAAS,kBAAkB;;;ACA3B,SAAS,kBAAkB;;;ACD3B,SAAS,YAAY,cAAc,SAAS,kBAAkB;AAE9D,SAAS,eAAe,SAAS,gBAAgB;AAyFtC;AAxEJ,IAAM,oBAAoB,cAAgD,IAAI;AAkBrF,IAAM,mBAAmB;AAAA,EACrB,UAAU,EAAE,KAAK,WAAW,QAAQ,KAAK,EAAE,IAAI;AACnD;;;ADlCO,SAAS,uBAAuB;AACnC,QAAM,aAAa,WAAW,iBAAiB;AAE/C,MAAI,CAAC,YAAY;AACb,UAAM,IAAI;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AACX;;;ADuBO,SAAS,qBAGd;AAAA,EACE;AAAA,EACA;AACJ,GAGY;AACR,QAAM,cAAc,qBAAqB;AAEzC,SAAO,WAAW;AAAA,IACd;AAAA,IACA,SAAS,QAAQ,IAAI,CAAC,UAAU;AAC5B,YAAM,EAAE,QAAQ,QAAQ,SAAS,EAAE,WAAW,CAAC,GAAG,GAAG,YAAY,IAAI,CAAC,EAAE,IAAI;AAE5E,aAAO;AAAA,QACH,GAAG;AAAA,QACH,UAAU,CAAC,YAAY,SAAS,QAAQ,QAAQ,GAAG,QAAQ;AAAA,QAC3D,SAAS,YAAY;AACjB,iBAAO,MAAM,YAAY,OAAO,MAAM,EAAE,MAAe;AAAA,QAC3D;AAAA,MACJ;AAAA,IACJ,CAAC;AAAA,EACL,CAAC;AACL;",
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { UseQueryResult } from '@tanstack/react-query';\nimport { useQueries } from '@tanstack/react-query';\n\nimport { useIotaClientContext } from './useIotaClient.js';\nimport type { IotaRpcMethods, UseIotaClientQueryOptions } from './useIotaClientQuery.js';\n\ntype IotaClientQueryOptions = IotaRpcMethods[keyof IotaRpcMethods] extends infer Method\n ? Method extends {\n name: infer M extends keyof IotaRpcMethods;\n params?: infer P;\n }\n ? undefined extends P\n ? {\n method: M;\n params?: P;\n options?: UseIotaClientQueryOptions<M, unknown>;\n }\n : {\n method: M;\n params: P;\n options?: UseIotaClientQueryOptions<M, unknown>;\n }\n : never\n : never;\n\nexport type UseIotaClientQueriesResults<Args extends readonly IotaClientQueryOptions[]> = {\n -readonly [K in keyof Args]: Args[K] extends {\n method: infer M extends keyof IotaRpcMethods;\n readonly options?:\n | {\n select?: (...args: any[]) => infer R;\n }\n | object;\n }\n ? UseQueryResult<unknown extends R ? IotaRpcMethods[M]['result'] : R>\n : never;\n};\n\nexport function useIotaClientQueries<\n const Queries extends readonly IotaClientQueryOptions[],\n Results = UseIotaClientQueriesResults<Queries>,\n>({\n queries,\n combine,\n}: {\n queries: Queries;\n combine?: (results: UseIotaClientQueriesResults<Queries>) => Results;\n}): Results {\n const iotaContext = useIotaClientContext();\n\n return useQueries({\n combine: combine as never,\n queries: queries.map((query) => {\n const { method, params, options: { queryKey = [], ...restOptions } = {} } = query;\n\n return {\n ...restOptions,\n queryKey: [iotaContext.network, method, params, ...queryKey],\n queryFn: async () => {\n return await iotaContext.client[method](params as never);\n },\n };\n }) as [],\n });\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport { useContext } from 'react';\n\nimport { IotaClientContext } from '../components/IotaClientProvider.js';\n\nexport function useIotaClientContext() {\n const iotaClient = useContext(IotaClientContext);\n\n if (!iotaClient) {\n throw new Error(\n 'Could not find IotaClientContext. Ensure that you have set up the IotaClientProvider',\n );\n }\n\n return iotaClient;\n}\n\nexport function useIotaClient(): IotaClient {\n return useIotaClientContext().client;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getNetwork, isIotaClient, Network, IotaClient } from '@iota/iota-sdk/client';\nimport type { IotaClientOptions } from '@iota/iota-sdk/client';\nimport { createContext, useMemo, useState } from 'react';\n\nimport type { NetworkConfig } from '../hooks/networkConfig.js';\n\ntype NetworkConfigs<T extends NetworkConfig | IotaClient = NetworkConfig | IotaClient> = Record<\n string,\n T\n>;\n\nexport interface IotaClientProviderContext {\n client: IotaClient;\n networks: NetworkConfigs;\n network: string;\n config: NetworkConfig | null;\n selectNetwork: (network: string) => void;\n}\n\nexport const IotaClientContext = createContext<IotaClientProviderContext | null>(null);\n\nexport type IotaClientProviderProps<T extends NetworkConfigs> = {\n createClient?: (name: keyof T, config: T[keyof T]) => IotaClient;\n children: React.ReactNode;\n networks?: T;\n onNetworkChange?: (network: keyof T & string) => void;\n} & (\n | {\n defaultNetwork?: keyof T & string;\n network?: never;\n }\n | {\n defaultNetwork?: never;\n network?: keyof T & string;\n }\n);\n\nconst DEFAULT_NETWORKS = {\n localnet: { url: getNetwork(Network.Localnet).url },\n};\n\nconst DEFAULT_CREATE_CLIENT = function createClient(\n _name: string,\n config: NetworkConfig | IotaClient,\n) {\n if (isIotaClient(config)) {\n return config;\n }\n\n return new IotaClient(config);\n};\n\nexport function IotaClientProvider<T extends NetworkConfigs>(props: IotaClientProviderProps<T>) {\n const { onNetworkChange, network, children } = props;\n const networks = (props.networks ?? DEFAULT_NETWORKS) as T;\n const createClient =\n (props.createClient as typeof DEFAULT_CREATE_CLIENT) ?? DEFAULT_CREATE_CLIENT;\n\n const [selectedNetwork, setSelectedNetwork] = useState<keyof T & string>(\n props.network ?? props.defaultNetwork ?? (Object.keys(networks)[0] as keyof T & string),\n );\n\n const currentNetwork = props.network ?? selectedNetwork;\n\n const client = useMemo(() => {\n return createClient(currentNetwork, networks[currentNetwork]);\n }, [createClient, currentNetwork, networks]);\n\n const ctx = useMemo((): IotaClientProviderContext => {\n return {\n client,\n networks,\n network: currentNetwork,\n config:\n networks[currentNetwork] instanceof IotaClient\n ? null\n : (networks[currentNetwork] as IotaClientOptions),\n selectNetwork: (newNetwork) => {\n if (currentNetwork === newNetwork) {\n return;\n }\n\n if (!network && newNetwork !== selectedNetwork) {\n setSelectedNetwork(newNetwork);\n }\n\n onNetworkChange?.(newNetwork);\n },\n };\n }, [client, networks, selectedNetwork, currentNetwork, network, onNetworkChange]);\n\n return <IotaClientContext.Provider value={ctx}>{children}</IotaClientContext.Provider>;\n}\n"],
5
+ "mappings": ";AAKA,SAAS,kBAAkB;;;ACA3B,SAAS,kBAAkB;;;ACD3B,SAAS,YAAY,cAAc,SAAS,kBAAkB;AAE9D,SAAS,eAAe,SAAS,gBAAgB;AAyFtC;AAxEJ,IAAM,oBAAoB,cAAgD,IAAI;AAkBrF,IAAM,mBAAmB;AAAA,EACrB,UAAU,EAAE,KAAK,WAAW,QAAQ,QAAQ,EAAE,IAAI;AACtD;;;ADlCO,SAAS,uBAAuB;AACnC,QAAM,aAAa,WAAW,iBAAiB;AAE/C,MAAI,CAAC,YAAY;AACb,UAAM,IAAI;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AACX;;;ADuBO,SAAS,qBAGd;AAAA,EACE;AAAA,EACA;AACJ,GAGY;AACR,QAAM,cAAc,qBAAqB;AAEzC,SAAO,WAAW;AAAA,IACd;AAAA,IACA,SAAS,QAAQ,IAAI,CAAC,UAAU;AAC5B,YAAM,EAAE,QAAQ,QAAQ,SAAS,EAAE,WAAW,CAAC,GAAG,GAAG,YAAY,IAAI,CAAC,EAAE,IAAI;AAE5E,aAAO;AAAA,QACH,GAAG;AAAA,QACH,UAAU,CAAC,YAAY,SAAS,QAAQ,QAAQ,GAAG,QAAQ;AAAA,QAC3D,SAAS,YAAY;AACjB,iBAAO,MAAM,YAAY,OAAO,MAAM,EAAE,MAAe;AAAA,QAC3D;AAAA,MACJ;AAAA,IACJ,CAAC;AAAA,EACL,CAAC;AACL;",
6
6
  "names": []
7
7
  }
@@ -10,7 +10,7 @@ import { createContext, useMemo, useState } from "react";
10
10
  import { jsx } from "react/jsx-runtime";
11
11
  var IotaClientContext = createContext(null);
12
12
  var DEFAULT_NETWORKS = {
13
- localnet: { url: getNetwork(Network.Local).url }
13
+ localnet: { url: getNetwork(Network.Localnet).url }
14
14
  };
15
15
 
16
16
  // src/hooks/useIotaClient.ts
@@ -32,7 +32,9 @@ function useIotaClientQuery(...args) {
32
32
  ...options,
33
33
  queryKey: [iotaContext.network, method, params, ...queryKey],
34
34
  queryFn: async () => {
35
- return await iotaContext.client[method](params);
35
+ return await iotaContext.client[method](
36
+ params
37
+ );
36
38
  }
37
39
  });
38
40
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/hooks/useIotaClientQuery.ts", "../../../src/hooks/useIotaClient.ts", "../../../src/components/IotaClientProvider.tsx"],
4
- "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport type { UseQueryOptions, UseQueryResult } from '@tanstack/react-query';\nimport { useQuery } from '@tanstack/react-query';\n\nimport type { PartialBy } from '../types/utilityTypes.js';\nimport { useIotaClientContext } from './useIotaClient.js';\n\nexport type IotaRpcMethodName = {\n [K in keyof IotaClient]: IotaClient[K] extends\n | ((input: any) => Promise<any>)\n | (() => Promise<any>)\n ? K\n : never;\n}[keyof IotaClient];\n\nexport type IotaRpcMethods = {\n [K in IotaRpcMethodName]: IotaClient[K] extends (input: infer P) => Promise<infer R>\n ? {\n name: K;\n result: R;\n params: P;\n }\n : IotaClient[K] extends () => Promise<infer R>\n ? {\n name: K;\n result: R;\n params: undefined | object;\n }\n : never;\n};\n\nexport type UseIotaClientQueryOptions<T extends keyof IotaRpcMethods, TData> = PartialBy<\n Omit<UseQueryOptions<IotaRpcMethods[T]['result'], Error, TData, unknown[]>, 'queryFn'>,\n 'queryKey'\n>;\n\nexport function useIotaClientQuery<\n T extends keyof IotaRpcMethods,\n TData = IotaRpcMethods[T]['result'],\n>(\n ...args: undefined extends IotaRpcMethods[T]['params']\n ? [\n method: T,\n params?: IotaRpcMethods[T]['params'],\n options?: UseIotaClientQueryOptions<T, TData>,\n ]\n : [\n method: T,\n params: IotaRpcMethods[T]['params'],\n options?: UseIotaClientQueryOptions<T, TData>,\n ]\n): UseQueryResult<TData, Error> {\n const [method, params, { queryKey = [], ...options } = {}] = args as [\n method: T,\n params?: IotaRpcMethods[T]['params'],\n options?: UseIotaClientQueryOptions<T, TData>,\n ];\n\n const iotaContext = useIotaClientContext();\n\n return useQuery({\n ...options,\n queryKey: [iotaContext.network, method, params, ...queryKey],\n queryFn: async () => {\n return await iotaContext.client[method](params as never);\n },\n });\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport { useContext } from 'react';\n\nimport { IotaClientContext } from '../components/IotaClientProvider.js';\n\nexport function useIotaClientContext() {\n const iotaClient = useContext(IotaClientContext);\n\n if (!iotaClient) {\n throw new Error(\n 'Could not find IotaClientContext. Ensure that you have set up the IotaClientProvider',\n );\n }\n\n return iotaClient;\n}\n\nexport function useIotaClient(): IotaClient {\n return useIotaClientContext().client;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getNetwork, isIotaClient, Network, IotaClient } from '@iota/iota-sdk/client';\nimport type { IotaClientOptions } from '@iota/iota-sdk/client';\nimport { createContext, useMemo, useState } from 'react';\n\nimport type { NetworkConfig } from '../hooks/networkConfig.js';\n\ntype NetworkConfigs<T extends NetworkConfig | IotaClient = NetworkConfig | IotaClient> = Record<\n string,\n T\n>;\n\nexport interface IotaClientProviderContext {\n client: IotaClient;\n networks: NetworkConfigs;\n network: string;\n config: NetworkConfig | null;\n selectNetwork: (network: string) => void;\n}\n\nexport const IotaClientContext = createContext<IotaClientProviderContext | null>(null);\n\nexport type IotaClientProviderProps<T extends NetworkConfigs> = {\n createClient?: (name: keyof T, config: T[keyof T]) => IotaClient;\n children: React.ReactNode;\n networks?: T;\n onNetworkChange?: (network: keyof T & string) => void;\n} & (\n | {\n defaultNetwork?: keyof T & string;\n network?: never;\n }\n | {\n defaultNetwork?: never;\n network?: keyof T & string;\n }\n);\n\nconst DEFAULT_NETWORKS = {\n localnet: { url: getNetwork(Network.Local).url },\n};\n\nconst DEFAULT_CREATE_CLIENT = function createClient(\n _name: string,\n config: NetworkConfig | IotaClient,\n) {\n if (isIotaClient(config)) {\n return config;\n }\n\n return new IotaClient(config);\n};\n\nexport function IotaClientProvider<T extends NetworkConfigs>(props: IotaClientProviderProps<T>) {\n const { onNetworkChange, network, children } = props;\n const networks = (props.networks ?? DEFAULT_NETWORKS) as T;\n const createClient =\n (props.createClient as typeof DEFAULT_CREATE_CLIENT) ?? DEFAULT_CREATE_CLIENT;\n\n const [selectedNetwork, setSelectedNetwork] = useState<keyof T & string>(\n props.network ?? props.defaultNetwork ?? (Object.keys(networks)[0] as keyof T & string),\n );\n\n const currentNetwork = props.network ?? selectedNetwork;\n\n const client = useMemo(() => {\n return createClient(currentNetwork, networks[currentNetwork]);\n }, [createClient, currentNetwork, networks]);\n\n const ctx = useMemo((): IotaClientProviderContext => {\n return {\n client,\n networks,\n network: currentNetwork,\n config:\n networks[currentNetwork] instanceof IotaClient\n ? null\n : (networks[currentNetwork] as IotaClientOptions),\n selectNetwork: (newNetwork) => {\n if (currentNetwork === newNetwork) {\n return;\n }\n\n if (!network && newNetwork !== selectedNetwork) {\n setSelectedNetwork(newNetwork);\n }\n\n onNetworkChange?.(newNetwork);\n },\n };\n }, [client, networks, selectedNetwork, currentNetwork, network, onNetworkChange]);\n\n return <IotaClientContext.Provider value={ctx}>{children}</IotaClientContext.Provider>;\n}\n"],
5
- "mappings": ";AAMA,SAAS,gBAAgB;;;ACDzB,SAAS,kBAAkB;;;ACD3B,SAAS,YAAY,cAAc,SAAS,kBAAkB;AAE9D,SAAS,eAAe,SAAS,gBAAgB;AAyFtC;AAxEJ,IAAM,oBAAoB,cAAgD,IAAI;AAkBrF,IAAM,mBAAmB;AAAA,EACrB,UAAU,EAAE,KAAK,WAAW,QAAQ,KAAK,EAAE,IAAI;AACnD;;;ADlCO,SAAS,uBAAuB;AACnC,QAAM,aAAa,WAAW,iBAAiB;AAE/C,MAAI,CAAC,YAAY;AACb,UAAM,IAAI;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AACX;;;ADqBO,SAAS,sBAIT,MAWyB;AAC5B,QAAM,CAAC,QAAQ,QAAQ,EAAE,WAAW,CAAC,GAAG,GAAG,QAAQ,IAAI,CAAC,CAAC,IAAI;AAM7D,QAAM,cAAc,qBAAqB;AAEzC,SAAO,SAAS;AAAA,IACZ,GAAG;AAAA,IACH,UAAU,CAAC,YAAY,SAAS,QAAQ,QAAQ,GAAG,QAAQ;AAAA,IAC3D,SAAS,YAAY;AACjB,aAAO,MAAM,YAAY,OAAO,MAAM,EAAE,MAAe;AAAA,IAC3D;AAAA,EACJ,CAAC;AACL;",
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport type { UseQueryOptions, UseQueryResult } from '@tanstack/react-query';\nimport { useQuery } from '@tanstack/react-query';\n\nimport type { PartialBy } from '../types/utilityTypes.js';\nimport { useIotaClientContext } from './useIotaClient.js';\n\nexport type IotaRpcMethodName = {\n [K in keyof IotaClient]: IotaClient[K] extends\n | ((input: any) => Promise<any>)\n | (() => Promise<any>)\n ? K\n : never;\n}[keyof IotaClient];\n\nexport type IotaRpcMethods = {\n [K in IotaRpcMethodName]: IotaClient[K] extends (input: infer P) => Promise<infer R>\n ? {\n name: K;\n result: R;\n params: P;\n }\n : IotaClient[K] extends () => Promise<infer R>\n ? {\n name: K;\n result: R;\n params: undefined | object;\n }\n : never;\n};\n\nexport type UseIotaClientQueryOptions<T extends keyof IotaRpcMethods, TData> = PartialBy<\n Omit<UseQueryOptions<IotaRpcMethods[T]['result'], Error, TData, unknown[]>, 'queryFn'>,\n 'queryKey'\n>;\n\nexport function useIotaClientQuery<\n T extends keyof IotaRpcMethods,\n TData = IotaRpcMethods[T]['result'],\n>(\n ...args: undefined extends IotaRpcMethods[T]['params']\n ? [\n method: T,\n params?: IotaRpcMethods[T]['params'],\n options?: UseIotaClientQueryOptions<T, TData>,\n ]\n : [\n method: T,\n params: IotaRpcMethods[T]['params'],\n options?: UseIotaClientQueryOptions<T, TData>,\n ]\n): UseQueryResult<TData, Error> {\n const [method, params, { queryKey = [], ...options } = {}] = args as [\n method: T,\n params?: IotaRpcMethods[T]['params'],\n options?: UseIotaClientQueryOptions<T, TData>,\n ];\n\n const iotaContext = useIotaClientContext();\n\n return useQuery({\n ...options,\n queryKey: [iotaContext.network, method, params, ...queryKey],\n queryFn: async () => {\n return (await iotaContext.client[method](\n params as never,\n )) as IotaRpcMethods[T]['result'];\n },\n });\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport { useContext } from 'react';\n\nimport { IotaClientContext } from '../components/IotaClientProvider.js';\n\nexport function useIotaClientContext() {\n const iotaClient = useContext(IotaClientContext);\n\n if (!iotaClient) {\n throw new Error(\n 'Could not find IotaClientContext. Ensure that you have set up the IotaClientProvider',\n );\n }\n\n return iotaClient;\n}\n\nexport function useIotaClient(): IotaClient {\n return useIotaClientContext().client;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getNetwork, isIotaClient, Network, IotaClient } from '@iota/iota-sdk/client';\nimport type { IotaClientOptions } from '@iota/iota-sdk/client';\nimport { createContext, useMemo, useState } from 'react';\n\nimport type { NetworkConfig } from '../hooks/networkConfig.js';\n\ntype NetworkConfigs<T extends NetworkConfig | IotaClient = NetworkConfig | IotaClient> = Record<\n string,\n T\n>;\n\nexport interface IotaClientProviderContext {\n client: IotaClient;\n networks: NetworkConfigs;\n network: string;\n config: NetworkConfig | null;\n selectNetwork: (network: string) => void;\n}\n\nexport const IotaClientContext = createContext<IotaClientProviderContext | null>(null);\n\nexport type IotaClientProviderProps<T extends NetworkConfigs> = {\n createClient?: (name: keyof T, config: T[keyof T]) => IotaClient;\n children: React.ReactNode;\n networks?: T;\n onNetworkChange?: (network: keyof T & string) => void;\n} & (\n | {\n defaultNetwork?: keyof T & string;\n network?: never;\n }\n | {\n defaultNetwork?: never;\n network?: keyof T & string;\n }\n);\n\nconst DEFAULT_NETWORKS = {\n localnet: { url: getNetwork(Network.Localnet).url },\n};\n\nconst DEFAULT_CREATE_CLIENT = function createClient(\n _name: string,\n config: NetworkConfig | IotaClient,\n) {\n if (isIotaClient(config)) {\n return config;\n }\n\n return new IotaClient(config);\n};\n\nexport function IotaClientProvider<T extends NetworkConfigs>(props: IotaClientProviderProps<T>) {\n const { onNetworkChange, network, children } = props;\n const networks = (props.networks ?? DEFAULT_NETWORKS) as T;\n const createClient =\n (props.createClient as typeof DEFAULT_CREATE_CLIENT) ?? DEFAULT_CREATE_CLIENT;\n\n const [selectedNetwork, setSelectedNetwork] = useState<keyof T & string>(\n props.network ?? props.defaultNetwork ?? (Object.keys(networks)[0] as keyof T & string),\n );\n\n const currentNetwork = props.network ?? selectedNetwork;\n\n const client = useMemo(() => {\n return createClient(currentNetwork, networks[currentNetwork]);\n }, [createClient, currentNetwork, networks]);\n\n const ctx = useMemo((): IotaClientProviderContext => {\n return {\n client,\n networks,\n network: currentNetwork,\n config:\n networks[currentNetwork] instanceof IotaClient\n ? null\n : (networks[currentNetwork] as IotaClientOptions),\n selectNetwork: (newNetwork) => {\n if (currentNetwork === newNetwork) {\n return;\n }\n\n if (!network && newNetwork !== selectedNetwork) {\n setSelectedNetwork(newNetwork);\n }\n\n onNetworkChange?.(newNetwork);\n },\n };\n }, [client, networks, selectedNetwork, currentNetwork, network, onNetworkChange]);\n\n return <IotaClientContext.Provider value={ctx}>{children}</IotaClientContext.Provider>;\n}\n"],
5
+ "mappings": ";AAMA,SAAS,gBAAgB;;;ACDzB,SAAS,kBAAkB;;;ACD3B,SAAS,YAAY,cAAc,SAAS,kBAAkB;AAE9D,SAAS,eAAe,SAAS,gBAAgB;AAyFtC;AAxEJ,IAAM,oBAAoB,cAAgD,IAAI;AAkBrF,IAAM,mBAAmB;AAAA,EACrB,UAAU,EAAE,KAAK,WAAW,QAAQ,QAAQ,EAAE,IAAI;AACtD;;;ADlCO,SAAS,uBAAuB;AACnC,QAAM,aAAa,WAAW,iBAAiB;AAE/C,MAAI,CAAC,YAAY;AACb,UAAM,IAAI;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AACX;;;ADqBO,SAAS,sBAIT,MAWyB;AAC5B,QAAM,CAAC,QAAQ,QAAQ,EAAE,WAAW,CAAC,GAAG,GAAG,QAAQ,IAAI,CAAC,CAAC,IAAI;AAM7D,QAAM,cAAc,qBAAqB;AAEzC,SAAO,SAAS;AAAA,IACZ,GAAG;AAAA,IACH,UAAU,CAAC,YAAY,SAAS,QAAQ,QAAQ,GAAG,QAAQ;AAAA,IAC3D,SAAS,YAAY;AACjB,aAAQ,MAAM,YAAY,OAAO,MAAM;AAAA,QACnC;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ,CAAC;AACL;",
6
6
  "names": []
7
7
  }
@@ -19,9 +19,10 @@ var walletMutationKeys = {
19
19
  autoconnectWallet: formMutationKeyFn("autoconnect-wallet"),
20
20
  disconnectWallet: formMutationKeyFn("disconnect-wallet"),
21
21
  signPersonalMessage: formMutationKeyFn("sign-personal-message"),
22
- signTransactionBlock: formMutationKeyFn("sign-transaction-block"),
23
- signAndExecuteTransactionBlock: formMutationKeyFn("sign-and-execute-transaction-block"),
24
- switchAccount: formMutationKeyFn("switch-account")
22
+ signTransaction: formMutationKeyFn("sign-transaction"),
23
+ signAndExecuteTransaction: formMutationKeyFn("sign-and-execute-transaction"),
24
+ switchAccount: formMutationKeyFn("switch-account"),
25
+ reportTransactionEffects: formMutationKeyFn("report-transaction-effects")
25
26
  };
26
27
  function formMutationKeyFn(baseEntity) {
27
28
  return function mutationKeyFn(additionalKeys = []) {
@@ -65,7 +66,12 @@ function useConnectWallet({
65
66
  (account) => account.chains.some(isSupportedChain)
66
67
  );
67
68
  const selectedAccount = getSelectedAccount(connectedIotaAccounts, accountAddress);
68
- setWalletConnected(wallet, connectedIotaAccounts, selectedAccount);
69
+ setWalletConnected(
70
+ wallet,
71
+ connectedIotaAccounts,
72
+ selectedAccount,
73
+ connectResult.supportedIntents
74
+ );
69
75
  return { accounts: connectedIotaAccounts };
70
76
  } catch (error) {
71
77
  setConnectionStatus("disconnected");
@@ -92,6 +98,7 @@ function getSelectedAccount(connectedAccounts, accountAddress) {
92
98
  function useCurrentWallet() {
93
99
  const currentWallet = useWalletStore((state) => state.currentWallet);
94
100
  const connectionStatus = useWalletStore((state) => state.connectionStatus);
101
+ const supportedIntents = useWalletStore((state) => state.supportedIntents);
95
102
  switch (connectionStatus) {
96
103
  case "connecting":
97
104
  return {
@@ -99,7 +106,8 @@ function useCurrentWallet() {
99
106
  currentWallet: null,
100
107
  isDisconnected: false,
101
108
  isConnecting: true,
102
- isConnected: false
109
+ isConnected: false,
110
+ supportedIntents: []
103
111
  };
104
112
  case "disconnected":
105
113
  return {
@@ -107,7 +115,8 @@ function useCurrentWallet() {
107
115
  currentWallet: null,
108
116
  isDisconnected: true,
109
117
  isConnecting: false,
110
- isConnected: false
118
+ isConnected: false,
119
+ supportedIntents: []
111
120
  };
112
121
  case "connected": {
113
122
  return {
@@ -115,7 +124,8 @@ function useCurrentWallet() {
115
124
  currentWallet,
116
125
  isDisconnected: false,
117
126
  isConnecting: false,
118
- isConnected: true
127
+ isConnected: true,
128
+ supportedIntents
119
129
  };
120
130
  }
121
131
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/hooks/wallet/useAutoConnectWallet.ts", "../../../../src/utils/walletUtils.ts", "../../../../src/hooks/wallet/useConnectWallet.ts", "../../../../src/constants/walletMutationKeys.ts", "../../../../src/hooks/wallet/useWalletStore.ts", "../../../../src/contexts/walletContext.ts", "../../../../src/hooks/wallet/useCurrentWallet.ts", "../../../../src/hooks/wallet/useWallets.ts"],
4
- "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useQuery } from '@tanstack/react-query';\nimport { useLayoutEffect, useState } from 'react';\n\nimport { getWalletUniqueIdentifier } from '../../utils/walletUtils.js';\nimport { useConnectWallet } from './useConnectWallet.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\nimport { useWallets } from './useWallets.js';\nimport { useWalletStore } from './useWalletStore.js';\n\nexport function useAutoConnectWallet(): 'disabled' | 'idle' | 'attempted' {\n const { mutateAsync: connectWallet } = useConnectWallet();\n const autoConnectEnabled = useWalletStore((state) => state.autoConnectEnabled);\n const lastConnectedWalletName = useWalletStore((state) => state.lastConnectedWalletName);\n const lastConnectedAccountAddress = useWalletStore(\n (state) => state.lastConnectedAccountAddress,\n );\n const wallets = useWallets();\n const { isConnected } = useCurrentWallet();\n\n const [clientOnly, setClientOnly] = useState(false);\n useLayoutEffect(() => {\n setClientOnly(true);\n }, []);\n\n const { data, isError } = useQuery({\n queryKey: [\n '@iota/dapp-kit',\n 'autoconnect',\n {\n isConnected,\n autoConnectEnabled,\n lastConnectedWalletName,\n lastConnectedAccountAddress,\n walletCount: wallets.length,\n },\n ],\n queryFn: async () => {\n if (!autoConnectEnabled) {\n return 'disabled';\n }\n\n if (!lastConnectedWalletName || !lastConnectedAccountAddress || isConnected) {\n return 'attempted';\n }\n\n const wallet = wallets.find(\n (wallet) => getWalletUniqueIdentifier(wallet) === lastConnectedWalletName,\n );\n if (wallet) {\n await connectWallet({\n wallet,\n accountAddress: lastConnectedAccountAddress,\n silent: true,\n });\n }\n\n return 'attempted';\n },\n enabled: autoConnectEnabled,\n persister: undefined,\n gcTime: 0,\n staleTime: 0,\n networkMode: 'always',\n retry: false,\n retryOnMount: false,\n refetchInterval: false,\n refetchIntervalInBackground: false,\n refetchOnMount: false,\n refetchOnReconnect: false,\n refetchOnWindowFocus: false,\n });\n\n if (!autoConnectEnabled) {\n return 'disabled';\n }\n\n // We always initialize with \"idle\" so that in SSR environments, we guarantee that the initial render states always agree:\n if (!clientOnly) {\n return 'idle';\n }\n\n if (isConnected) {\n return 'attempted';\n }\n\n if (!lastConnectedWalletName) {\n return 'attempted';\n }\n\n return isError ? 'attempted' : data ?? 'idle';\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { MinimallyRequiredFeatures, Wallet, WalletWithFeatures } from '@iota/wallet-standard';\nimport { getWallets, isWalletWithRequiredFeatureSet } from '@iota/wallet-standard';\n\nexport function getRegisteredWallets<AdditionalFeatures extends Wallet['features']>(\n preferredWallets: string[],\n requiredFeatures?: (keyof AdditionalFeatures)[],\n) {\n const walletsApi = getWallets();\n const wallets = walletsApi.get();\n\n const iotaWallets = wallets.filter(\n (wallet): wallet is WalletWithFeatures<MinimallyRequiredFeatures & AdditionalFeatures> =>\n isWalletWithRequiredFeatureSet(wallet, requiredFeatures),\n );\n\n return [\n // Preferred wallets, in order:\n ...(preferredWallets\n .map((name) => iotaWallets.find((wallet) => wallet.name === name))\n .filter(Boolean) as WalletWithFeatures<\n MinimallyRequiredFeatures & AdditionalFeatures\n >[]),\n\n // Wallets in default order:\n ...iotaWallets.filter((wallet) => !preferredWallets.includes(wallet.name)),\n ];\n}\n\nexport function getWalletUniqueIdentifier(wallet?: Wallet) {\n return wallet?.id ?? wallet?.name;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { isSupportedChain } from '@iota/wallet-standard';\nimport type {\n StandardConnectInput,\n StandardConnectOutput,\n WalletAccount,\n WalletWithRequiredFeatures,\n} from '@iota/wallet-standard';\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport { useWalletStore } from './useWalletStore.js';\n\ntype ConnectWalletArgs = {\n /** The wallet to connect to. */\n wallet: WalletWithRequiredFeatures;\n\n /** An optional account address to connect to. Defaults to the first authorized account. */\n accountAddress?: string;\n} & StandardConnectInput;\n\ntype ConnectWalletResult = StandardConnectOutput;\n\ntype UseConnectWalletMutationOptions = Omit<\n UseMutationOptions<ConnectWalletResult, Error, ConnectWalletArgs, unknown>,\n 'mutationFn'\n>;\n\n/**\n * Mutation hook for establishing a connection to a specific wallet.\n */\nexport function useConnectWallet({\n mutationKey,\n ...mutationOptions\n}: UseConnectWalletMutationOptions = {}): UseMutationResult<\n ConnectWalletResult,\n Error,\n ConnectWalletArgs,\n unknown\n> {\n const setWalletConnected = useWalletStore((state) => state.setWalletConnected);\n const setConnectionStatus = useWalletStore((state) => state.setConnectionStatus);\n\n return useMutation({\n mutationKey: walletMutationKeys.connectWallet(mutationKey),\n mutationFn: async ({ wallet, accountAddress, ...connectArgs }) => {\n try {\n setConnectionStatus('connecting');\n\n const connectResult =\n await wallet.features['standard:connect'].connect(connectArgs);\n const connectedIotaAccounts = connectResult.accounts.filter((account) =>\n account.chains.some(isSupportedChain),\n );\n const selectedAccount = getSelectedAccount(connectedIotaAccounts, accountAddress);\n\n setWalletConnected(wallet, connectedIotaAccounts, selectedAccount);\n\n return { accounts: connectedIotaAccounts };\n } catch (error) {\n setConnectionStatus('disconnected');\n throw error;\n }\n },\n ...mutationOptions,\n });\n}\n\nfunction getSelectedAccount(connectedAccounts: readonly WalletAccount[], accountAddress?: string) {\n if (connectedAccounts.length === 0) {\n return null;\n }\n\n if (accountAddress) {\n const selectedAccount = connectedAccounts.find(\n (account) => account.address === accountAddress,\n );\n return selectedAccount ?? connectedAccounts[0];\n }\n\n return connectedAccounts[0];\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { MutationKey } from '@tanstack/react-query';\n\nexport const walletMutationKeys = {\n all: { baseScope: 'wallet' },\n connectWallet: formMutationKeyFn('connect-wallet'),\n autoconnectWallet: formMutationKeyFn('autoconnect-wallet'),\n disconnectWallet: formMutationKeyFn('disconnect-wallet'),\n signPersonalMessage: formMutationKeyFn('sign-personal-message'),\n signTransactionBlock: formMutationKeyFn('sign-transaction-block'),\n signAndExecuteTransactionBlock: formMutationKeyFn('sign-and-execute-transaction-block'),\n switchAccount: formMutationKeyFn('switch-account'),\n};\n\nfunction formMutationKeyFn(baseEntity: string) {\n return function mutationKeyFn(additionalKeys: MutationKey = []) {\n return [{ ...walletMutationKeys.all, baseEntity }, ...additionalKeys];\n };\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useContext } from 'react';\nimport { useStore } from 'zustand';\n\nimport { WalletContext } from '../../contexts/walletContext.js';\nimport type { StoreState } from '../../walletStore.js';\n\nexport function useWalletStore<T>(selector: (state: StoreState) => T): T {\n const store = useContext(WalletContext);\n if (!store) {\n throw new Error(\n 'Could not find WalletContext. Ensure that you have set up the WalletProvider.',\n );\n }\n return useStore(store, selector);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { createContext } from 'react';\n\nimport type { WalletStore } from '../walletStore.js';\n\nexport const WalletContext = createContext<WalletStore | null>(null);\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useWalletStore } from './useWalletStore.js';\n\n/**\n * Retrieves the wallet that is currently connected to the dApp, if one exists.\n */\nexport function useCurrentWallet() {\n const currentWallet = useWalletStore((state) => state.currentWallet);\n const connectionStatus = useWalletStore((state) => state.connectionStatus);\n\n switch (connectionStatus) {\n case 'connecting':\n return {\n connectionStatus,\n currentWallet: null,\n isDisconnected: false,\n isConnecting: true,\n isConnected: false,\n } as const;\n case 'disconnected':\n return {\n connectionStatus,\n currentWallet: null,\n isDisconnected: true,\n isConnecting: false,\n isConnected: false,\n } as const;\n case 'connected': {\n return {\n connectionStatus,\n currentWallet: currentWallet!,\n isDisconnected: false,\n isConnecting: false,\n isConnected: true,\n } as const;\n }\n }\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useWalletStore } from './useWalletStore.js';\n\n/**\n * Retrieves a list of registered wallets available to the dApp sorted by preference.\n */\nexport function useWallets() {\n return useWalletStore((state) => state.wallets);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useQuery } from '@tanstack/react-query';\nimport { useLayoutEffect, useState } from 'react';\n\nimport { getWalletUniqueIdentifier } from '../../utils/walletUtils.js';\nimport { useConnectWallet } from './useConnectWallet.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\nimport { useWallets } from './useWallets.js';\nimport { useWalletStore } from './useWalletStore.js';\n\nexport function useAutoConnectWallet(): 'disabled' | 'idle' | 'attempted' {\n const { mutateAsync: connectWallet } = useConnectWallet();\n const autoConnectEnabled = useWalletStore((state) => state.autoConnectEnabled);\n const lastConnectedWalletName = useWalletStore((state) => state.lastConnectedWalletName);\n const lastConnectedAccountAddress = useWalletStore(\n (state) => state.lastConnectedAccountAddress,\n );\n const wallets = useWallets();\n const { isConnected } = useCurrentWallet();\n\n const [clientOnly, setClientOnly] = useState(false);\n useLayoutEffect(() => {\n setClientOnly(true);\n }, []);\n\n const { data, isError } = useQuery({\n queryKey: [\n '@iota/dapp-kit',\n 'autoconnect',\n {\n isConnected,\n autoConnectEnabled,\n lastConnectedWalletName,\n lastConnectedAccountAddress,\n walletCount: wallets.length,\n },\n ],\n queryFn: async () => {\n if (!autoConnectEnabled) {\n return 'disabled';\n }\n\n if (!lastConnectedWalletName || !lastConnectedAccountAddress || isConnected) {\n return 'attempted';\n }\n\n const wallet = wallets.find(\n (wallet) => getWalletUniqueIdentifier(wallet) === lastConnectedWalletName,\n );\n if (wallet) {\n await connectWallet({\n wallet,\n accountAddress: lastConnectedAccountAddress,\n silent: true,\n });\n }\n\n return 'attempted';\n },\n enabled: autoConnectEnabled,\n persister: undefined,\n gcTime: 0,\n staleTime: 0,\n networkMode: 'always',\n retry: false,\n retryOnMount: false,\n refetchInterval: false,\n refetchIntervalInBackground: false,\n refetchOnMount: false,\n refetchOnReconnect: false,\n refetchOnWindowFocus: false,\n });\n\n if (!autoConnectEnabled) {\n return 'disabled';\n }\n\n // We always initialize with \"idle\" so that in SSR environments, we guarantee that the initial render states always agree:\n if (!clientOnly) {\n return 'idle';\n }\n\n if (isConnected) {\n return 'attempted';\n }\n\n if (!lastConnectedWalletName) {\n return 'attempted';\n }\n\n return isError ? 'attempted' : (data ?? 'idle');\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {\n MinimallyRequiredFeatures,\n Wallet,\n WalletWithFeatures,\n WalletWithRequiredFeatures,\n} from '@iota/wallet-standard';\nimport { getWallets, isWalletWithRequiredFeatureSet } from '@iota/wallet-standard';\n\nexport function getRegisteredWallets<AdditionalFeatures extends Wallet['features']>(\n preferredWallets: string[],\n walletFilter?: (wallet: WalletWithRequiredFeatures) => boolean,\n) {\n const walletsApi = getWallets();\n const wallets = walletsApi.get();\n\n const iotaWallets = wallets.filter(\n (wallet): wallet is WalletWithFeatures<MinimallyRequiredFeatures & AdditionalFeatures> =>\n isWalletWithRequiredFeatureSet(wallet) && (!walletFilter || walletFilter(wallet)),\n );\n\n return [\n // Preferred wallets, in order:\n ...(preferredWallets\n .map((name) => iotaWallets.find((wallet) => wallet.name === name))\n .filter(Boolean) as WalletWithFeatures<\n MinimallyRequiredFeatures & AdditionalFeatures\n >[]),\n\n // Wallets in default order:\n ...iotaWallets.filter((wallet) => !preferredWallets.includes(wallet.name)),\n ];\n}\n\nexport function getWalletUniqueIdentifier(wallet?: Wallet) {\n return wallet?.id ?? wallet?.name;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { isSupportedChain } from '@iota/wallet-standard';\nimport type {\n StandardConnectInput,\n StandardConnectOutput,\n WalletAccount,\n WalletWithRequiredFeatures,\n} from '@iota/wallet-standard';\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport { useWalletStore } from './useWalletStore.js';\n\ntype ConnectWalletArgs = {\n /** The wallet to connect to. */\n wallet: WalletWithRequiredFeatures;\n\n /** An optional account address to connect to. Defaults to the first authorized account. */\n accountAddress?: string;\n} & StandardConnectInput;\n\ntype ConnectWalletResult = StandardConnectOutput;\n\ntype UseConnectWalletMutationOptions = Omit<\n UseMutationOptions<ConnectWalletResult, Error, ConnectWalletArgs, unknown>,\n 'mutationFn'\n>;\n\n/**\n * Mutation hook for establishing a connection to a specific wallet.\n */\nexport function useConnectWallet({\n mutationKey,\n ...mutationOptions\n}: UseConnectWalletMutationOptions = {}): UseMutationResult<\n ConnectWalletResult,\n Error,\n ConnectWalletArgs,\n unknown\n> {\n const setWalletConnected = useWalletStore((state) => state.setWalletConnected);\n const setConnectionStatus = useWalletStore((state) => state.setConnectionStatus);\n\n return useMutation({\n mutationKey: walletMutationKeys.connectWallet(mutationKey),\n mutationFn: async ({ wallet, accountAddress, ...connectArgs }) => {\n try {\n setConnectionStatus('connecting');\n\n const connectResult =\n await wallet.features['standard:connect'].connect(connectArgs);\n const connectedIotaAccounts = connectResult.accounts.filter((account) =>\n account.chains.some(isSupportedChain),\n );\n const selectedAccount = getSelectedAccount(connectedIotaAccounts, accountAddress);\n\n setWalletConnected(\n wallet,\n connectedIotaAccounts,\n selectedAccount,\n connectResult.supportedIntents,\n );\n\n return { accounts: connectedIotaAccounts };\n } catch (error) {\n setConnectionStatus('disconnected');\n throw error;\n }\n },\n ...mutationOptions,\n });\n}\n\nfunction getSelectedAccount(connectedAccounts: readonly WalletAccount[], accountAddress?: string) {\n if (connectedAccounts.length === 0) {\n return null;\n }\n\n if (accountAddress) {\n const selectedAccount = connectedAccounts.find(\n (account) => account.address === accountAddress,\n );\n return selectedAccount ?? connectedAccounts[0];\n }\n\n return connectedAccounts[0];\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { MutationKey } from '@tanstack/react-query';\n\nexport const walletMutationKeys = {\n all: { baseScope: 'wallet' },\n connectWallet: formMutationKeyFn('connect-wallet'),\n autoconnectWallet: formMutationKeyFn('autoconnect-wallet'),\n disconnectWallet: formMutationKeyFn('disconnect-wallet'),\n signPersonalMessage: formMutationKeyFn('sign-personal-message'),\n signTransaction: formMutationKeyFn('sign-transaction'),\n signAndExecuteTransaction: formMutationKeyFn('sign-and-execute-transaction'),\n switchAccount: formMutationKeyFn('switch-account'),\n reportTransactionEffects: formMutationKeyFn('report-transaction-effects'),\n};\n\nfunction formMutationKeyFn(baseEntity: string) {\n return function mutationKeyFn(additionalKeys: MutationKey = []) {\n return [{ ...walletMutationKeys.all, baseEntity }, ...additionalKeys];\n };\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useContext } from 'react';\nimport { useStore } from 'zustand';\n\nimport { WalletContext } from '../../contexts/walletContext.js';\nimport type { StoreState } from '../../walletStore.js';\n\nexport function useWalletStore<T>(selector: (state: StoreState) => T): T {\n const store = useContext(WalletContext);\n if (!store) {\n throw new Error(\n 'Could not find WalletContext. Ensure that you have set up the WalletProvider.',\n );\n }\n return useStore(store, selector);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { createContext } from 'react';\n\nimport type { WalletStore } from '../walletStore.js';\n\nexport const WalletContext = createContext<WalletStore | null>(null);\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useWalletStore } from './useWalletStore.js';\n\n/**\n * Retrieves the wallet that is currently connected to the dApp, if one exists.\n */\nexport function useCurrentWallet() {\n const currentWallet = useWalletStore((state) => state.currentWallet);\n const connectionStatus = useWalletStore((state) => state.connectionStatus);\n const supportedIntents = useWalletStore((state) => state.supportedIntents);\n\n switch (connectionStatus) {\n case 'connecting':\n return {\n connectionStatus,\n currentWallet: null,\n isDisconnected: false,\n isConnecting: true,\n isConnected: false,\n supportedIntents: [],\n } as const;\n case 'disconnected':\n return {\n connectionStatus,\n currentWallet: null,\n isDisconnected: true,\n isConnecting: false,\n isConnected: false,\n supportedIntents: [],\n } as const;\n case 'connected': {\n return {\n connectionStatus,\n currentWallet: currentWallet!,\n isDisconnected: false,\n isConnecting: false,\n isConnected: true,\n supportedIntents,\n } as const;\n }\n }\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useWalletStore } from './useWalletStore.js';\n\n/**\n * Retrieves a list of registered wallets available to the dApp sorted by preference.\n */\nexport function useWallets() {\n return useWalletStore((state) => state.wallets);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["wallet"]
7
7
  }
@@ -9,9 +9,10 @@ var walletMutationKeys = {
9
9
  autoconnectWallet: formMutationKeyFn("autoconnect-wallet"),
10
10
  disconnectWallet: formMutationKeyFn("disconnect-wallet"),
11
11
  signPersonalMessage: formMutationKeyFn("sign-personal-message"),
12
- signTransactionBlock: formMutationKeyFn("sign-transaction-block"),
13
- signAndExecuteTransactionBlock: formMutationKeyFn("sign-and-execute-transaction-block"),
14
- switchAccount: formMutationKeyFn("switch-account")
12
+ signTransaction: formMutationKeyFn("sign-transaction"),
13
+ signAndExecuteTransaction: formMutationKeyFn("sign-and-execute-transaction"),
14
+ switchAccount: formMutationKeyFn("switch-account"),
15
+ reportTransactionEffects: formMutationKeyFn("report-transaction-effects")
15
16
  };
16
17
  function formMutationKeyFn(baseEntity) {
17
18
  return function mutationKeyFn(additionalKeys = []) {
@@ -55,7 +56,12 @@ function useConnectWallet({
55
56
  (account) => account.chains.some(isSupportedChain)
56
57
  );
57
58
  const selectedAccount = getSelectedAccount(connectedIotaAccounts, accountAddress);
58
- setWalletConnected(wallet, connectedIotaAccounts, selectedAccount);
59
+ setWalletConnected(
60
+ wallet,
61
+ connectedIotaAccounts,
62
+ selectedAccount,
63
+ connectResult.supportedIntents
64
+ );
59
65
  return { accounts: connectedIotaAccounts };
60
66
  } catch (error) {
61
67
  setConnectionStatus("disconnected");
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/hooks/wallet/useConnectWallet.ts", "../../../../src/constants/walletMutationKeys.ts", "../../../../src/hooks/wallet/useWalletStore.ts", "../../../../src/contexts/walletContext.ts"],
4
- "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { isSupportedChain } from '@iota/wallet-standard';\nimport type {\n StandardConnectInput,\n StandardConnectOutput,\n WalletAccount,\n WalletWithRequiredFeatures,\n} from '@iota/wallet-standard';\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport { useWalletStore } from './useWalletStore.js';\n\ntype ConnectWalletArgs = {\n /** The wallet to connect to. */\n wallet: WalletWithRequiredFeatures;\n\n /** An optional account address to connect to. Defaults to the first authorized account. */\n accountAddress?: string;\n} & StandardConnectInput;\n\ntype ConnectWalletResult = StandardConnectOutput;\n\ntype UseConnectWalletMutationOptions = Omit<\n UseMutationOptions<ConnectWalletResult, Error, ConnectWalletArgs, unknown>,\n 'mutationFn'\n>;\n\n/**\n * Mutation hook for establishing a connection to a specific wallet.\n */\nexport function useConnectWallet({\n mutationKey,\n ...mutationOptions\n}: UseConnectWalletMutationOptions = {}): UseMutationResult<\n ConnectWalletResult,\n Error,\n ConnectWalletArgs,\n unknown\n> {\n const setWalletConnected = useWalletStore((state) => state.setWalletConnected);\n const setConnectionStatus = useWalletStore((state) => state.setConnectionStatus);\n\n return useMutation({\n mutationKey: walletMutationKeys.connectWallet(mutationKey),\n mutationFn: async ({ wallet, accountAddress, ...connectArgs }) => {\n try {\n setConnectionStatus('connecting');\n\n const connectResult =\n await wallet.features['standard:connect'].connect(connectArgs);\n const connectedIotaAccounts = connectResult.accounts.filter((account) =>\n account.chains.some(isSupportedChain),\n );\n const selectedAccount = getSelectedAccount(connectedIotaAccounts, accountAddress);\n\n setWalletConnected(wallet, connectedIotaAccounts, selectedAccount);\n\n return { accounts: connectedIotaAccounts };\n } catch (error) {\n setConnectionStatus('disconnected');\n throw error;\n }\n },\n ...mutationOptions,\n });\n}\n\nfunction getSelectedAccount(connectedAccounts: readonly WalletAccount[], accountAddress?: string) {\n if (connectedAccounts.length === 0) {\n return null;\n }\n\n if (accountAddress) {\n const selectedAccount = connectedAccounts.find(\n (account) => account.address === accountAddress,\n );\n return selectedAccount ?? connectedAccounts[0];\n }\n\n return connectedAccounts[0];\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { MutationKey } from '@tanstack/react-query';\n\nexport const walletMutationKeys = {\n all: { baseScope: 'wallet' },\n connectWallet: formMutationKeyFn('connect-wallet'),\n autoconnectWallet: formMutationKeyFn('autoconnect-wallet'),\n disconnectWallet: formMutationKeyFn('disconnect-wallet'),\n signPersonalMessage: formMutationKeyFn('sign-personal-message'),\n signTransactionBlock: formMutationKeyFn('sign-transaction-block'),\n signAndExecuteTransactionBlock: formMutationKeyFn('sign-and-execute-transaction-block'),\n switchAccount: formMutationKeyFn('switch-account'),\n};\n\nfunction formMutationKeyFn(baseEntity: string) {\n return function mutationKeyFn(additionalKeys: MutationKey = []) {\n return [{ ...walletMutationKeys.all, baseEntity }, ...additionalKeys];\n };\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useContext } from 'react';\nimport { useStore } from 'zustand';\n\nimport { WalletContext } from '../../contexts/walletContext.js';\nimport type { StoreState } from '../../walletStore.js';\n\nexport function useWalletStore<T>(selector: (state: StoreState) => T): T {\n const store = useContext(WalletContext);\n if (!store) {\n throw new Error(\n 'Could not find WalletContext. Ensure that you have set up the WalletProvider.',\n );\n }\n return useStore(store, selector);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { createContext } from 'react';\n\nimport type { WalletStore } from '../walletStore.js';\n\nexport const WalletContext = createContext<WalletStore | null>(null);\n"],
5
- "mappings": ";AAIA,SAAS,wBAAwB;AAQjC,SAAS,mBAAmB;;;ACNrB,IAAM,qBAAqB;AAAA,EAC9B,KAAK,EAAE,WAAW,SAAS;AAAA,EAC3B,eAAe,kBAAkB,gBAAgB;AAAA,EACjD,mBAAmB,kBAAkB,oBAAoB;AAAA,EACzD,kBAAkB,kBAAkB,mBAAmB;AAAA,EACvD,qBAAqB,kBAAkB,uBAAuB;AAAA,EAC9D,sBAAsB,kBAAkB,wBAAwB;AAAA,EAChE,gCAAgC,kBAAkB,oCAAoC;AAAA,EACtF,eAAe,kBAAkB,gBAAgB;AACrD;AAEA,SAAS,kBAAkB,YAAoB;AAC3C,SAAO,SAAS,cAAc,iBAA8B,CAAC,GAAG;AAC5D,WAAO,CAAC,EAAE,GAAG,mBAAmB,KAAK,WAAW,GAAG,GAAG,cAAc;AAAA,EACxE;AACJ;;;ACjBA,SAAS,kBAAkB;AAC3B,SAAS,gBAAgB;;;ACDzB,SAAS,qBAAqB;AAIvB,IAAM,gBAAgB,cAAkC,IAAI;;;ADE5D,SAAS,eAAkB,UAAuC;AACrE,QAAM,QAAQ,WAAW,aAAa;AACtC,MAAI,CAAC,OAAO;AACR,UAAM,IAAI;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AACA,SAAO,SAAS,OAAO,QAAQ;AACnC;;;AFiBO,SAAS,iBAAiB;AAAA,EAC7B;AAAA,EACA,GAAG;AACP,IAAqC,CAAC,GAKpC;AACE,QAAM,qBAAqB,eAAe,CAAC,UAAU,MAAM,kBAAkB;AAC7E,QAAM,sBAAsB,eAAe,CAAC,UAAU,MAAM,mBAAmB;AAE/E,SAAO,YAAY;AAAA,IACf,aAAa,mBAAmB,cAAc,WAAW;AAAA,IACzD,YAAY,OAAO,EAAE,QAAQ,gBAAgB,GAAG,YAAY,MAAM;AAC9D,UAAI;AACA,4BAAoB,YAAY;AAEhC,cAAM,gBACF,MAAM,OAAO,SAAS,kBAAkB,EAAE,QAAQ,WAAW;AACjE,cAAM,wBAAwB,cAAc,SAAS;AAAA,UAAO,CAAC,YACzD,QAAQ,OAAO,KAAK,gBAAgB;AAAA,QACxC;AACA,cAAM,kBAAkB,mBAAmB,uBAAuB,cAAc;AAEhF,2BAAmB,QAAQ,uBAAuB,eAAe;AAEjE,eAAO,EAAE,UAAU,sBAAsB;AAAA,MAC7C,SAAS,OAAP;AACE,4BAAoB,cAAc;AAClC,cAAM;AAAA,MACV;AAAA,IACJ;AAAA,IACA,GAAG;AAAA,EACP,CAAC;AACL;AAEA,SAAS,mBAAmB,mBAA6C,gBAAyB;AAC9F,MAAI,kBAAkB,WAAW,GAAG;AAChC,WAAO;AAAA,EACX;AAEA,MAAI,gBAAgB;AAChB,UAAM,kBAAkB,kBAAkB;AAAA,MACtC,CAAC,YAAY,QAAQ,YAAY;AAAA,IACrC;AACA,WAAO,mBAAmB,kBAAkB,CAAC;AAAA,EACjD;AAEA,SAAO,kBAAkB,CAAC;AAC9B;",
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { isSupportedChain } from '@iota/wallet-standard';\nimport type {\n StandardConnectInput,\n StandardConnectOutput,\n WalletAccount,\n WalletWithRequiredFeatures,\n} from '@iota/wallet-standard';\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport { useWalletStore } from './useWalletStore.js';\n\ntype ConnectWalletArgs = {\n /** The wallet to connect to. */\n wallet: WalletWithRequiredFeatures;\n\n /** An optional account address to connect to. Defaults to the first authorized account. */\n accountAddress?: string;\n} & StandardConnectInput;\n\ntype ConnectWalletResult = StandardConnectOutput;\n\ntype UseConnectWalletMutationOptions = Omit<\n UseMutationOptions<ConnectWalletResult, Error, ConnectWalletArgs, unknown>,\n 'mutationFn'\n>;\n\n/**\n * Mutation hook for establishing a connection to a specific wallet.\n */\nexport function useConnectWallet({\n mutationKey,\n ...mutationOptions\n}: UseConnectWalletMutationOptions = {}): UseMutationResult<\n ConnectWalletResult,\n Error,\n ConnectWalletArgs,\n unknown\n> {\n const setWalletConnected = useWalletStore((state) => state.setWalletConnected);\n const setConnectionStatus = useWalletStore((state) => state.setConnectionStatus);\n\n return useMutation({\n mutationKey: walletMutationKeys.connectWallet(mutationKey),\n mutationFn: async ({ wallet, accountAddress, ...connectArgs }) => {\n try {\n setConnectionStatus('connecting');\n\n const connectResult =\n await wallet.features['standard:connect'].connect(connectArgs);\n const connectedIotaAccounts = connectResult.accounts.filter((account) =>\n account.chains.some(isSupportedChain),\n );\n const selectedAccount = getSelectedAccount(connectedIotaAccounts, accountAddress);\n\n setWalletConnected(\n wallet,\n connectedIotaAccounts,\n selectedAccount,\n connectResult.supportedIntents,\n );\n\n return { accounts: connectedIotaAccounts };\n } catch (error) {\n setConnectionStatus('disconnected');\n throw error;\n }\n },\n ...mutationOptions,\n });\n}\n\nfunction getSelectedAccount(connectedAccounts: readonly WalletAccount[], accountAddress?: string) {\n if (connectedAccounts.length === 0) {\n return null;\n }\n\n if (accountAddress) {\n const selectedAccount = connectedAccounts.find(\n (account) => account.address === accountAddress,\n );\n return selectedAccount ?? connectedAccounts[0];\n }\n\n return connectedAccounts[0];\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { MutationKey } from '@tanstack/react-query';\n\nexport const walletMutationKeys = {\n all: { baseScope: 'wallet' },\n connectWallet: formMutationKeyFn('connect-wallet'),\n autoconnectWallet: formMutationKeyFn('autoconnect-wallet'),\n disconnectWallet: formMutationKeyFn('disconnect-wallet'),\n signPersonalMessage: formMutationKeyFn('sign-personal-message'),\n signTransaction: formMutationKeyFn('sign-transaction'),\n signAndExecuteTransaction: formMutationKeyFn('sign-and-execute-transaction'),\n switchAccount: formMutationKeyFn('switch-account'),\n reportTransactionEffects: formMutationKeyFn('report-transaction-effects'),\n};\n\nfunction formMutationKeyFn(baseEntity: string) {\n return function mutationKeyFn(additionalKeys: MutationKey = []) {\n return [{ ...walletMutationKeys.all, baseEntity }, ...additionalKeys];\n };\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useContext } from 'react';\nimport { useStore } from 'zustand';\n\nimport { WalletContext } from '../../contexts/walletContext.js';\nimport type { StoreState } from '../../walletStore.js';\n\nexport function useWalletStore<T>(selector: (state: StoreState) => T): T {\n const store = useContext(WalletContext);\n if (!store) {\n throw new Error(\n 'Could not find WalletContext. Ensure that you have set up the WalletProvider.',\n );\n }\n return useStore(store, selector);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { createContext } from 'react';\n\nimport type { WalletStore } from '../walletStore.js';\n\nexport const WalletContext = createContext<WalletStore | null>(null);\n"],
5
+ "mappings": ";AAIA,SAAS,wBAAwB;AAQjC,SAAS,mBAAmB;;;ACNrB,IAAM,qBAAqB;AAAA,EAC9B,KAAK,EAAE,WAAW,SAAS;AAAA,EAC3B,eAAe,kBAAkB,gBAAgB;AAAA,EACjD,mBAAmB,kBAAkB,oBAAoB;AAAA,EACzD,kBAAkB,kBAAkB,mBAAmB;AAAA,EACvD,qBAAqB,kBAAkB,uBAAuB;AAAA,EAC9D,iBAAiB,kBAAkB,kBAAkB;AAAA,EACrD,2BAA2B,kBAAkB,8BAA8B;AAAA,EAC3E,eAAe,kBAAkB,gBAAgB;AAAA,EACjD,0BAA0B,kBAAkB,4BAA4B;AAC5E;AAEA,SAAS,kBAAkB,YAAoB;AAC3C,SAAO,SAAS,cAAc,iBAA8B,CAAC,GAAG;AAC5D,WAAO,CAAC,EAAE,GAAG,mBAAmB,KAAK,WAAW,GAAG,GAAG,cAAc;AAAA,EACxE;AACJ;;;AClBA,SAAS,kBAAkB;AAC3B,SAAS,gBAAgB;;;ACDzB,SAAS,qBAAqB;AAIvB,IAAM,gBAAgB,cAAkC,IAAI;;;ADE5D,SAAS,eAAkB,UAAuC;AACrE,QAAM,QAAQ,WAAW,aAAa;AACtC,MAAI,CAAC,OAAO;AACR,UAAM,IAAI;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AACA,SAAO,SAAS,OAAO,QAAQ;AACnC;;;AFiBO,SAAS,iBAAiB;AAAA,EAC7B;AAAA,EACA,GAAG;AACP,IAAqC,CAAC,GAKpC;AACE,QAAM,qBAAqB,eAAe,CAAC,UAAU,MAAM,kBAAkB;AAC7E,QAAM,sBAAsB,eAAe,CAAC,UAAU,MAAM,mBAAmB;AAE/E,SAAO,YAAY;AAAA,IACf,aAAa,mBAAmB,cAAc,WAAW;AAAA,IACzD,YAAY,OAAO,EAAE,QAAQ,gBAAgB,GAAG,YAAY,MAAM;AAC9D,UAAI;AACA,4BAAoB,YAAY;AAEhC,cAAM,gBACF,MAAM,OAAO,SAAS,kBAAkB,EAAE,QAAQ,WAAW;AACjE,cAAM,wBAAwB,cAAc,SAAS;AAAA,UAAO,CAAC,YACzD,QAAQ,OAAO,KAAK,gBAAgB;AAAA,QACxC;AACA,cAAM,kBAAkB,mBAAmB,uBAAuB,cAAc;AAEhF;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA,cAAc;AAAA,QAClB;AAEA,eAAO,EAAE,UAAU,sBAAsB;AAAA,MAC7C,SAAS,OAAO;AACZ,4BAAoB,cAAc;AAClC,cAAM;AAAA,MACV;AAAA,IACJ;AAAA,IACA,GAAG;AAAA,EACP,CAAC;AACL;AAEA,SAAS,mBAAmB,mBAA6C,gBAAyB;AAC9F,MAAI,kBAAkB,WAAW,GAAG;AAChC,WAAO;AAAA,EACX;AAEA,MAAI,gBAAgB;AAChB,UAAM,kBAAkB,kBAAkB;AAAA,MACtC,CAAC,YAAY,QAAQ,YAAY;AAAA,IACrC;AACA,WAAO,mBAAmB,kBAAkB,CAAC;AAAA,EACjD;AAEA,SAAO,kBAAkB,CAAC;AAC9B;",
6
6
  "names": []
7
7
  }
@@ -7,16 +7,19 @@ export declare function useCurrentWallet(): {
7
7
  readonly isDisconnected: false;
8
8
  readonly isConnecting: true;
9
9
  readonly isConnected: false;
10
+ readonly supportedIntents: readonly [];
10
11
  } | {
11
12
  readonly connectionStatus: "disconnected";
12
13
  readonly currentWallet: null;
13
14
  readonly isDisconnected: true;
14
15
  readonly isConnecting: false;
15
16
  readonly isConnected: false;
17
+ readonly supportedIntents: readonly [];
16
18
  } | {
17
19
  readonly connectionStatus: "connected";
18
20
  readonly currentWallet: import("@iota/wallet-standard").WalletWithRequiredFeatures;
19
21
  readonly isDisconnected: false;
20
22
  readonly isConnecting: false;
21
23
  readonly isConnected: true;
24
+ readonly supportedIntents: string[];
22
25
  };
@@ -21,6 +21,7 @@ function useWalletStore(selector) {
21
21
  function useCurrentWallet() {
22
22
  const currentWallet = useWalletStore((state) => state.currentWallet);
23
23
  const connectionStatus = useWalletStore((state) => state.connectionStatus);
24
+ const supportedIntents = useWalletStore((state) => state.supportedIntents);
24
25
  switch (connectionStatus) {
25
26
  case "connecting":
26
27
  return {
@@ -28,7 +29,8 @@ function useCurrentWallet() {
28
29
  currentWallet: null,
29
30
  isDisconnected: false,
30
31
  isConnecting: true,
31
- isConnected: false
32
+ isConnected: false,
33
+ supportedIntents: []
32
34
  };
33
35
  case "disconnected":
34
36
  return {
@@ -36,7 +38,8 @@ function useCurrentWallet() {
36
38
  currentWallet: null,
37
39
  isDisconnected: true,
38
40
  isConnecting: false,
39
- isConnected: false
41
+ isConnected: false,
42
+ supportedIntents: []
40
43
  };
41
44
  case "connected": {
42
45
  return {
@@ -44,7 +47,8 @@ function useCurrentWallet() {
44
47
  currentWallet,
45
48
  isDisconnected: false,
46
49
  isConnecting: false,
47
- isConnected: true
50
+ isConnected: true,
51
+ supportedIntents
48
52
  };
49
53
  }
50
54
  }