@mysten/dapp-kit 0.13.2 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +5 -4
  3. package/dist/cjs/components/AccountDropdownMenu.js +13 -8
  4. package/dist/cjs/components/AccountDropdownMenu.js.map +2 -2
  5. package/dist/cjs/components/ConnectButton.js +19 -9
  6. package/dist/cjs/components/ConnectButton.js.map +2 -2
  7. package/dist/cjs/components/SuiClientProvider.d.ts +1 -1
  8. package/dist/cjs/components/SuiClientProvider.js +1 -1
  9. package/dist/cjs/components/SuiClientProvider.js.map +1 -1
  10. package/dist/cjs/components/WalletProvider.d.ts +3 -3
  11. package/dist/cjs/components/WalletProvider.js +104 -33
  12. package/dist/cjs/components/WalletProvider.js.map +2 -2
  13. package/dist/cjs/components/connect-modal/ConnectModal.js +10 -4
  14. package/dist/cjs/components/connect-modal/ConnectModal.js.map +2 -2
  15. package/dist/cjs/components/connect-modal/wallet-list/WalletList.js.map +2 -2
  16. package/dist/cjs/constants/walletDefaults.d.ts +1 -1
  17. package/dist/cjs/constants/walletDefaults.js +4 -2
  18. package/dist/cjs/constants/walletDefaults.js.map +2 -2
  19. package/dist/cjs/constants/walletMutationKeys.d.ts +3 -2
  20. package/dist/cjs/constants/walletMutationKeys.js +4 -3
  21. package/dist/cjs/constants/walletMutationKeys.js.map +2 -2
  22. package/dist/cjs/hooks/networkConfig.d.ts +1 -1
  23. package/dist/cjs/hooks/networkConfig.js +1 -1
  24. package/dist/cjs/hooks/networkConfig.js.map +1 -1
  25. package/dist/cjs/hooks/useResolveSuiNSNames.d.ts +1 -1
  26. package/dist/cjs/hooks/useResolveSuiNSNames.js +1 -1
  27. package/dist/cjs/hooks/useResolveSuiNSNames.js.map +1 -1
  28. package/dist/cjs/hooks/useSuiClient.d.ts +1 -1
  29. package/dist/cjs/hooks/useSuiClient.js +1 -1
  30. package/dist/cjs/hooks/useSuiClient.js.map +1 -1
  31. package/dist/cjs/hooks/useSuiClientInfiniteQuery.d.ts +1 -1
  32. package/dist/cjs/hooks/useSuiClientInfiniteQuery.js +1 -1
  33. package/dist/cjs/hooks/useSuiClientInfiniteQuery.js.map +1 -1
  34. package/dist/cjs/hooks/useSuiClientMutation.js +1 -1
  35. package/dist/cjs/hooks/useSuiClientMutation.js.map +1 -1
  36. package/dist/cjs/hooks/useSuiClientQueries.js +1 -1
  37. package/dist/cjs/hooks/useSuiClientQueries.js.map +1 -1
  38. package/dist/cjs/hooks/useSuiClientQuery.d.ts +1 -1
  39. package/dist/cjs/hooks/useSuiClientQuery.js +1 -1
  40. package/dist/cjs/hooks/useSuiClientQuery.js.map +1 -1
  41. package/dist/cjs/hooks/wallet/useAutoConnectWallet.js +17 -7
  42. package/dist/cjs/hooks/wallet/useAutoConnectWallet.js.map +2 -2
  43. package/dist/cjs/hooks/wallet/useConnectWallet.js +10 -4
  44. package/dist/cjs/hooks/wallet/useConnectWallet.js.map +2 -2
  45. package/dist/cjs/hooks/wallet/useCurrentWallet.d.ts +3 -0
  46. package/dist/cjs/hooks/wallet/useCurrentWallet.js +7 -3
  47. package/dist/cjs/hooks/wallet/useCurrentWallet.js.map +2 -2
  48. package/dist/cjs/hooks/wallet/useDisconnectWallet.js +11 -6
  49. package/dist/cjs/hooks/wallet/useDisconnectWallet.js.map +2 -2
  50. package/dist/cjs/hooks/wallet/useReportTransactionEffects.d.ts +15 -0
  51. package/dist/cjs/hooks/wallet/{useSignTransactionBlock.js → useReportTransactionEffects.js} +37 -37
  52. package/dist/cjs/hooks/wallet/useReportTransactionEffects.js.map +7 -0
  53. package/dist/cjs/hooks/wallet/useSignAndExecuteTransaction.d.ts +29 -0
  54. package/dist/cjs/hooks/wallet/useSignAndExecuteTransaction.js +248 -0
  55. package/dist/cjs/hooks/wallet/useSignAndExecuteTransaction.js.map +7 -0
  56. package/dist/cjs/hooks/wallet/useSignPersonalMessage.js +11 -6
  57. package/dist/cjs/hooks/wallet/useSignPersonalMessage.js.map +2 -2
  58. package/dist/cjs/hooks/wallet/useSignTransaction.d.ts +18 -0
  59. package/dist/cjs/hooks/wallet/{useSignAndExecuteTransactionBlock.js → useSignTransaction.js} +83 -47
  60. package/dist/cjs/hooks/wallet/useSignTransaction.js.map +7 -0
  61. package/dist/cjs/hooks/wallet/useStashedWallet.js +17 -7
  62. package/dist/cjs/hooks/wallet/useStashedWallet.js.map +2 -2
  63. package/dist/cjs/hooks/wallet/useSwitchAccount.js +11 -6
  64. package/dist/cjs/hooks/wallet/useSwitchAccount.js.map +2 -2
  65. package/dist/cjs/hooks/wallet/useUnsafeBurnerWallet.js +64 -9
  66. package/dist/cjs/hooks/wallet/useUnsafeBurnerWallet.js.map +2 -2
  67. package/dist/cjs/hooks/wallet/useWalletPropertiesChanged.js +7 -3
  68. package/dist/cjs/hooks/wallet/useWalletPropertiesChanged.js.map +2 -2
  69. package/dist/cjs/hooks/wallet/useWalletsChanged.d.ts +1 -1
  70. package/dist/cjs/hooks/wallet/useWalletsChanged.js +7 -7
  71. package/dist/cjs/hooks/wallet/useWalletsChanged.js.map +2 -2
  72. package/dist/cjs/index.d.ts +3 -2
  73. package/dist/cjs/index.js +231 -86
  74. package/dist/cjs/index.js.map +4 -4
  75. package/dist/cjs/types.d.ts +1 -1
  76. package/dist/cjs/types.js.map +1 -1
  77. package/dist/cjs/utils/walletUtils.d.ts +2 -2
  78. package/dist/cjs/utils/walletUtils.js +2 -2
  79. package/dist/cjs/utils/walletUtils.js.map +2 -2
  80. package/dist/cjs/walletStore.d.ts +2 -1
  81. package/dist/cjs/walletStore.js +8 -4
  82. package/dist/cjs/walletStore.js.map +2 -2
  83. package/dist/esm/components/AccountDropdownMenu.js +13 -8
  84. package/dist/esm/components/AccountDropdownMenu.js.map +2 -2
  85. package/dist/esm/components/ConnectButton.js +19 -9
  86. package/dist/esm/components/ConnectButton.js.map +2 -2
  87. package/dist/esm/components/SuiClientProvider.d.ts +1 -1
  88. package/dist/esm/components/SuiClientProvider.js +1 -1
  89. package/dist/esm/components/SuiClientProvider.js.map +1 -1
  90. package/dist/esm/components/WalletProvider.d.ts +3 -3
  91. package/dist/esm/components/WalletProvider.js +104 -33
  92. package/dist/esm/components/WalletProvider.js.map +2 -2
  93. package/dist/esm/components/connect-modal/ConnectModal.js +10 -4
  94. package/dist/esm/components/connect-modal/ConnectModal.js.map +2 -2
  95. package/dist/esm/components/connect-modal/wallet-list/WalletList.js.map +2 -2
  96. package/dist/esm/constants/walletDefaults.d.ts +1 -1
  97. package/dist/esm/constants/walletDefaults.js +4 -2
  98. package/dist/esm/constants/walletDefaults.js.map +2 -2
  99. package/dist/esm/constants/walletMutationKeys.d.ts +3 -2
  100. package/dist/esm/constants/walletMutationKeys.js +4 -3
  101. package/dist/esm/constants/walletMutationKeys.js.map +2 -2
  102. package/dist/esm/hooks/networkConfig.d.ts +1 -1
  103. package/dist/esm/hooks/networkConfig.js +1 -1
  104. package/dist/esm/hooks/networkConfig.js.map +1 -1
  105. package/dist/esm/hooks/useResolveSuiNSNames.d.ts +1 -1
  106. package/dist/esm/hooks/useResolveSuiNSNames.js +1 -1
  107. package/dist/esm/hooks/useResolveSuiNSNames.js.map +1 -1
  108. package/dist/esm/hooks/useSuiClient.d.ts +1 -1
  109. package/dist/esm/hooks/useSuiClient.js +1 -1
  110. package/dist/esm/hooks/useSuiClient.js.map +1 -1
  111. package/dist/esm/hooks/useSuiClientInfiniteQuery.d.ts +1 -1
  112. package/dist/esm/hooks/useSuiClientInfiniteQuery.js +1 -1
  113. package/dist/esm/hooks/useSuiClientInfiniteQuery.js.map +1 -1
  114. package/dist/esm/hooks/useSuiClientMutation.js +1 -1
  115. package/dist/esm/hooks/useSuiClientMutation.js.map +1 -1
  116. package/dist/esm/hooks/useSuiClientQueries.js +1 -1
  117. package/dist/esm/hooks/useSuiClientQueries.js.map +1 -1
  118. package/dist/esm/hooks/useSuiClientQuery.d.ts +1 -1
  119. package/dist/esm/hooks/useSuiClientQuery.js +1 -1
  120. package/dist/esm/hooks/useSuiClientQuery.js.map +1 -1
  121. package/dist/esm/hooks/wallet/useAutoConnectWallet.js +17 -7
  122. package/dist/esm/hooks/wallet/useAutoConnectWallet.js.map +2 -2
  123. package/dist/esm/hooks/wallet/useConnectWallet.js +10 -4
  124. package/dist/esm/hooks/wallet/useConnectWallet.js.map +2 -2
  125. package/dist/esm/hooks/wallet/useCurrentWallet.d.ts +3 -0
  126. package/dist/esm/hooks/wallet/useCurrentWallet.js +7 -3
  127. package/dist/esm/hooks/wallet/useCurrentWallet.js.map +2 -2
  128. package/dist/esm/hooks/wallet/useDisconnectWallet.js +11 -6
  129. package/dist/esm/hooks/wallet/useDisconnectWallet.js.map +2 -2
  130. package/dist/esm/hooks/wallet/useReportTransactionEffects.d.ts +15 -0
  131. package/dist/esm/hooks/wallet/{useSignTransactionBlock.js → useReportTransactionEffects.js} +34 -34
  132. package/dist/esm/hooks/wallet/useReportTransactionEffects.js.map +7 -0
  133. package/dist/esm/hooks/wallet/useSignAndExecuteTransaction.d.ts +29 -0
  134. package/dist/esm/hooks/wallet/useSignAndExecuteTransaction.js +227 -0
  135. package/dist/esm/hooks/wallet/useSignAndExecuteTransaction.js.map +7 -0
  136. package/dist/esm/hooks/wallet/useSignPersonalMessage.js +11 -6
  137. package/dist/esm/hooks/wallet/useSignPersonalMessage.js.map +2 -2
  138. package/dist/esm/hooks/wallet/useSignTransaction.d.ts +18 -0
  139. package/dist/esm/hooks/wallet/{useSignAndExecuteTransactionBlock.js → useSignTransaction.js} +80 -44
  140. package/dist/esm/hooks/wallet/useSignTransaction.js.map +7 -0
  141. package/dist/esm/hooks/wallet/useStashedWallet.js +17 -7
  142. package/dist/esm/hooks/wallet/useStashedWallet.js.map +2 -2
  143. package/dist/esm/hooks/wallet/useSwitchAccount.js +11 -6
  144. package/dist/esm/hooks/wallet/useSwitchAccount.js.map +2 -2
  145. package/dist/esm/hooks/wallet/useUnsafeBurnerWallet.js +64 -9
  146. package/dist/esm/hooks/wallet/useUnsafeBurnerWallet.js.map +2 -2
  147. package/dist/esm/hooks/wallet/useWalletPropertiesChanged.js +7 -3
  148. package/dist/esm/hooks/wallet/useWalletPropertiesChanged.js.map +2 -2
  149. package/dist/esm/hooks/wallet/useWalletsChanged.d.ts +1 -1
  150. package/dist/esm/hooks/wallet/useWalletsChanged.js +7 -7
  151. package/dist/esm/hooks/wallet/useWalletsChanged.js.map +2 -2
  152. package/dist/esm/index.d.ts +3 -2
  153. package/dist/esm/index.js +231 -86
  154. package/dist/esm/index.js.map +4 -4
  155. package/dist/esm/types.d.ts +1 -1
  156. package/dist/esm/utils/walletUtils.d.ts +2 -2
  157. package/dist/esm/utils/walletUtils.js +2 -2
  158. package/dist/esm/utils/walletUtils.js.map +2 -2
  159. package/dist/esm/walletStore.d.ts +2 -1
  160. package/dist/esm/walletStore.js +8 -4
  161. package/dist/esm/walletStore.js.map +2 -2
  162. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  163. package/dist/tsconfig.tsbuildinfo +1 -1
  164. package/package.json +6 -6
  165. package/src/components/AccountDropdownMenu.tsx +1 -1
  166. package/src/components/SuiClientProvider.tsx +2 -2
  167. package/src/components/WalletProvider.tsx +9 -9
  168. package/src/constants/walletDefaults.ts +7 -3
  169. package/src/constants/walletMutationKeys.ts +3 -2
  170. package/src/hooks/networkConfig.ts +1 -1
  171. package/src/hooks/useResolveSuiNSNames.ts +1 -1
  172. package/src/hooks/useSuiClient.ts +1 -1
  173. package/src/hooks/useSuiClientInfiniteQuery.ts +1 -1
  174. package/src/hooks/useSuiClientQuery.ts +1 -1
  175. package/src/hooks/wallet/useConnectWallet.ts +6 -1
  176. package/src/hooks/wallet/useCurrentWallet.ts +4 -0
  177. package/src/hooks/wallet/useReportTransactionEffects.ts +82 -0
  178. package/src/hooks/wallet/useSignAndExecuteTransaction.ts +167 -0
  179. package/src/hooks/wallet/useSignTransaction.ts +119 -0
  180. package/src/hooks/wallet/useUnsafeBurnerWallet.ts +69 -6
  181. package/src/hooks/wallet/useWalletsChanged.ts +5 -5
  182. package/src/index.ts +3 -2
  183. package/src/types.ts +1 -1
  184. package/src/utils/walletUtils.ts +3 -2
  185. package/src/walletStore.ts +7 -1
  186. package/dist/cjs/hooks/wallet/useSignAndExecuteTransactionBlock.d.ts +0 -15
  187. package/dist/cjs/hooks/wallet/useSignAndExecuteTransactionBlock.js.map +0 -7
  188. package/dist/cjs/hooks/wallet/useSignTransactionBlock.d.ts +0 -13
  189. package/dist/cjs/hooks/wallet/useSignTransactionBlock.js.map +0 -7
  190. package/dist/esm/hooks/wallet/useSignAndExecuteTransactionBlock.d.ts +0 -15
  191. package/dist/esm/hooks/wallet/useSignAndExecuteTransactionBlock.js.map +0 -7
  192. package/dist/esm/hooks/wallet/useSignTransactionBlock.d.ts +0 -13
  193. package/dist/esm/hooks/wallet/useSignTransactionBlock.js.map +0 -7
  194. package/src/hooks/wallet/useSignAndExecuteTransactionBlock.ts +0 -116
  195. package/src/hooks/wallet/useSignTransactionBlock.ts +0 -84
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/hooks/wallet/useSignPersonalMessage.ts", "../../../../src/errors/walletErrors.ts", "../../../../src/constants/walletMutationKeys.ts", "../../../../src/hooks/wallet/useWalletStore.ts", "../../../../src/contexts/walletContext.ts", "../../../../src/hooks/wallet/useCurrentAccount.ts", "../../../../src/hooks/wallet/useCurrentWallet.ts"],
4
- "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {\n\tSuiSignPersonalMessageInput,\n\tSuiSignPersonalMessageOutput,\n} from '@mysten/wallet-standard';\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport {\n\tWalletFeatureNotSupportedError,\n\tWalletNoAccountSelectedError,\n\tWalletNotConnectedError,\n} from '../..//errors/walletErrors.js';\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport type { PartialBy } from '../../types/utilityTypes.js';\nimport { useCurrentAccount } from './useCurrentAccount.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\n\ntype UseSignPersonalMessageArgs = PartialBy<SuiSignPersonalMessageInput, 'account'>;\n\ntype UseSignPersonalMessageResult = SuiSignPersonalMessageOutput;\n\ntype UseSignPersonalMessageError =\n\t| WalletFeatureNotSupportedError\n\t| WalletNoAccountSelectedError\n\t| WalletNotConnectedError\n\t| Error;\n\ntype UseSignPersonalMessageMutationOptions = Omit<\n\tUseMutationOptions<\n\t\tUseSignPersonalMessageResult,\n\t\tUseSignPersonalMessageError,\n\t\tUseSignPersonalMessageArgs,\n\t\tunknown\n\t>,\n\t'mutationFn'\n>;\n\n/**\n * Mutation hook for prompting the user to sign a message.\n */\nexport function useSignPersonalMessage({\n\tmutationKey,\n\t...mutationOptions\n}: UseSignPersonalMessageMutationOptions = {}): UseMutationResult<\n\tUseSignPersonalMessageResult,\n\tUseSignPersonalMessageError,\n\tUseSignPersonalMessageArgs\n> {\n\tconst { currentWallet } = useCurrentWallet();\n\tconst currentAccount = useCurrentAccount();\n\n\treturn useMutation({\n\t\tmutationKey: walletMutationKeys.signPersonalMessage(mutationKey),\n\t\tmutationFn: async (signPersonalMessageArgs) => {\n\t\t\tif (!currentWallet) {\n\t\t\t\tthrow new WalletNotConnectedError('No wallet is connected.');\n\t\t\t}\n\n\t\t\tconst signerAccount = signPersonalMessageArgs.account ?? currentAccount;\n\t\t\tif (!signerAccount) {\n\t\t\t\tthrow new WalletNoAccountSelectedError(\n\t\t\t\t\t'No wallet account is selected to sign the personal message with.',\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst signPersonalMessageFeature = currentWallet.features['sui:signPersonalMessage'];\n\t\t\tif (signPersonalMessageFeature) {\n\t\t\t\treturn await signPersonalMessageFeature.signPersonalMessage({\n\t\t\t\t\t...signPersonalMessageArgs,\n\t\t\t\t\taccount: signerAccount,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// TODO: Remove this once we officially discontinue sui:signMessage in the wallet standard\n\t\t\tconst signMessageFeature = currentWallet.features['sui:signMessage'];\n\t\t\tif (signMessageFeature) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t\"This wallet doesn't support the `signPersonalMessage` feature... falling back to `signMessage`.\",\n\t\t\t\t);\n\n\t\t\t\tconst { messageBytes, signature } = await signMessageFeature.signMessage({\n\t\t\t\t\t...signPersonalMessageArgs,\n\t\t\t\t\taccount: signerAccount,\n\t\t\t\t});\n\t\t\t\treturn { bytes: messageBytes, signature };\n\t\t\t}\n\n\t\t\tthrow new WalletFeatureNotSupportedError(\n\t\t\t\t\"This wallet doesn't support the `signPersonalMessage` feature.\",\n\t\t\t);\n\t\t},\n\t\t...mutationOptions,\n\t});\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * An error that is instantiated when someone attempts to perform an action that requires an active wallet connection.\n */\nexport class WalletNotConnectedError extends Error {}\n\n/**\n * An error that is instantiated when someone attempts to perform an action that requires a selected wallet account.\n * This is more of an edge case stemming from the fact that wallets don't technically require you to authorize any\n * accounts when connecting a wallet.\n */\nexport class WalletNoAccountSelectedError extends Error {}\n\n/**\n * An error that is instantiated when someone attempts to perform an action that isn't supported by a wallet.\n */\nexport class WalletFeatureNotSupportedError extends Error {}\n\n/**\n * An error that is instantiated when a wallet account can't be found for a specific wallet.\n */\nexport class WalletAccountNotFoundError extends Error {}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { MutationKey } from '@tanstack/react-query';\n\nexport const walletMutationKeys = {\n\tall: { baseScope: 'wallet' },\n\tconnectWallet: formMutationKeyFn('connect-wallet'),\n\tautoconnectWallet: formMutationKeyFn('autoconnect-wallet'),\n\tdisconnectWallet: formMutationKeyFn('disconnect-wallet'),\n\tsignPersonalMessage: formMutationKeyFn('sign-personal-message'),\n\tsignTransactionBlock: formMutationKeyFn('sign-transaction-block'),\n\tsignAndExecuteTransactionBlock: formMutationKeyFn('sign-and-execute-transaction-block'),\n\tswitchAccount: formMutationKeyFn('switch-account'),\n};\n\nfunction formMutationKeyFn(baseEntity: string) {\n\treturn function mutationKeyFn(additionalKeys: MutationKey = []) {\n\t\treturn [{ ...walletMutationKeys.all, baseEntity }, ...additionalKeys];\n\t};\n}\n", "// Copyright (c) Mysten Labs, Inc.\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\tconst store = useContext(WalletContext);\n\tif (!store) {\n\t\tthrow new Error(\n\t\t\t'Could not find WalletContext. Ensure that you have set up the WalletProvider.',\n\t\t);\n\t}\n\treturn useStore(store, selector);\n}\n", "// Copyright (c) Mysten Labs, Inc.\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// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletAccount } from '@mysten/wallet-standard';\n\nimport { useWalletStore } from './useWalletStore.js';\n\n/**\n * Retrieves the wallet account that is currently selected, if one exists.\n */\nexport function useCurrentAccount(): WalletAccount | null {\n\treturn useWalletStore((state) => state.currentAccount);\n}\n", "// Copyright (c) Mysten Labs, Inc.\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\tconst currentWallet = useWalletStore((state) => state.currentWallet);\n\tconst connectionStatus = useWalletStore((state) => state.connectionStatus);\n\n\tswitch (connectionStatus) {\n\t\tcase 'connecting':\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: null,\n\t\t\t\tisDisconnected: false,\n\t\t\t\tisConnecting: true,\n\t\t\t\tisConnected: false,\n\t\t\t} as const;\n\t\tcase 'disconnected':\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: null,\n\t\t\t\tisDisconnected: true,\n\t\t\t\tisConnecting: false,\n\t\t\t\tisConnected: false,\n\t\t\t} as const;\n\t\tcase 'connected': {\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: currentWallet!,\n\t\t\t\tisDisconnected: false,\n\t\t\t\tisConnecting: false,\n\t\t\t\tisConnected: true,\n\t\t\t} as const;\n\t\t}\n\t}\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {\n\tSuiSignPersonalMessageInput,\n\tSuiSignPersonalMessageOutput,\n} from '@mysten/wallet-standard';\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport {\n\tWalletFeatureNotSupportedError,\n\tWalletNoAccountSelectedError,\n\tWalletNotConnectedError,\n} from '../..//errors/walletErrors.js';\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport type { PartialBy } from '../../types/utilityTypes.js';\nimport { useCurrentAccount } from './useCurrentAccount.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\n\ntype UseSignPersonalMessageArgs = PartialBy<SuiSignPersonalMessageInput, 'account'>;\n\ntype UseSignPersonalMessageResult = SuiSignPersonalMessageOutput;\n\ntype UseSignPersonalMessageError =\n\t| WalletFeatureNotSupportedError\n\t| WalletNoAccountSelectedError\n\t| WalletNotConnectedError\n\t| Error;\n\ntype UseSignPersonalMessageMutationOptions = Omit<\n\tUseMutationOptions<\n\t\tUseSignPersonalMessageResult,\n\t\tUseSignPersonalMessageError,\n\t\tUseSignPersonalMessageArgs,\n\t\tunknown\n\t>,\n\t'mutationFn'\n>;\n\n/**\n * Mutation hook for prompting the user to sign a message.\n */\nexport function useSignPersonalMessage({\n\tmutationKey,\n\t...mutationOptions\n}: UseSignPersonalMessageMutationOptions = {}): UseMutationResult<\n\tUseSignPersonalMessageResult,\n\tUseSignPersonalMessageError,\n\tUseSignPersonalMessageArgs\n> {\n\tconst { currentWallet } = useCurrentWallet();\n\tconst currentAccount = useCurrentAccount();\n\n\treturn useMutation({\n\t\tmutationKey: walletMutationKeys.signPersonalMessage(mutationKey),\n\t\tmutationFn: async (signPersonalMessageArgs) => {\n\t\t\tif (!currentWallet) {\n\t\t\t\tthrow new WalletNotConnectedError('No wallet is connected.');\n\t\t\t}\n\n\t\t\tconst signerAccount = signPersonalMessageArgs.account ?? currentAccount;\n\t\t\tif (!signerAccount) {\n\t\t\t\tthrow new WalletNoAccountSelectedError(\n\t\t\t\t\t'No wallet account is selected to sign the personal message with.',\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst signPersonalMessageFeature = currentWallet.features['sui:signPersonalMessage'];\n\t\t\tif (signPersonalMessageFeature) {\n\t\t\t\treturn await signPersonalMessageFeature.signPersonalMessage({\n\t\t\t\t\t...signPersonalMessageArgs,\n\t\t\t\t\taccount: signerAccount,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// TODO: Remove this once we officially discontinue sui:signMessage in the wallet standard\n\t\t\tconst signMessageFeature = currentWallet.features['sui:signMessage'];\n\t\t\tif (signMessageFeature) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t\"This wallet doesn't support the `signPersonalMessage` feature... falling back to `signMessage`.\",\n\t\t\t\t);\n\n\t\t\t\tconst { messageBytes, signature } = await signMessageFeature.signMessage({\n\t\t\t\t\t...signPersonalMessageArgs,\n\t\t\t\t\taccount: signerAccount,\n\t\t\t\t});\n\t\t\t\treturn { bytes: messageBytes, signature };\n\t\t\t}\n\n\t\t\tthrow new WalletFeatureNotSupportedError(\n\t\t\t\t\"This wallet doesn't support the `signPersonalMessage` feature.\",\n\t\t\t);\n\t\t},\n\t\t...mutationOptions,\n\t});\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * An error that is instantiated when someone attempts to perform an action that requires an active wallet connection.\n */\nexport class WalletNotConnectedError extends Error {}\n\n/**\n * An error that is instantiated when someone attempts to perform an action that requires a selected wallet account.\n * This is more of an edge case stemming from the fact that wallets don't technically require you to authorize any\n * accounts when connecting a wallet.\n */\nexport class WalletNoAccountSelectedError extends Error {}\n\n/**\n * An error that is instantiated when someone attempts to perform an action that isn't supported by a wallet.\n */\nexport class WalletFeatureNotSupportedError extends Error {}\n\n/**\n * An error that is instantiated when a wallet account can't be found for a specific wallet.\n */\nexport class WalletAccountNotFoundError extends Error {}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { MutationKey } from '@tanstack/react-query';\n\nexport const walletMutationKeys = {\n\tall: { baseScope: 'wallet' },\n\tconnectWallet: formMutationKeyFn('connect-wallet'),\n\tautoconnectWallet: formMutationKeyFn('autoconnect-wallet'),\n\tdisconnectWallet: formMutationKeyFn('disconnect-wallet'),\n\tsignPersonalMessage: formMutationKeyFn('sign-personal-message'),\n\tsignTransaction: formMutationKeyFn('sign-transaction'),\n\tsignAndExecuteTransaction: formMutationKeyFn('sign-and-execute-transaction'),\n\tswitchAccount: formMutationKeyFn('switch-account'),\n\treportTransactionEffects: formMutationKeyFn('report-transaction-effects'),\n};\n\nfunction formMutationKeyFn(baseEntity: string) {\n\treturn function mutationKeyFn(additionalKeys: MutationKey = []) {\n\t\treturn [{ ...walletMutationKeys.all, baseEntity }, ...additionalKeys];\n\t};\n}\n", "// Copyright (c) Mysten Labs, Inc.\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\tconst store = useContext(WalletContext);\n\tif (!store) {\n\t\tthrow new Error(\n\t\t\t'Could not find WalletContext. Ensure that you have set up the WalletProvider.',\n\t\t);\n\t}\n\treturn useStore(store, selector);\n}\n", "// Copyright (c) Mysten Labs, Inc.\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// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletAccount } from '@mysten/wallet-standard';\n\nimport { useWalletStore } from './useWalletStore.js';\n\n/**\n * Retrieves the wallet account that is currently selected, if one exists.\n */\nexport function useCurrentAccount(): WalletAccount | null {\n\treturn useWalletStore((state) => state.currentAccount);\n}\n", "// Copyright (c) Mysten Labs, Inc.\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\tconst currentWallet = useWalletStore((state) => state.currentWallet);\n\tconst connectionStatus = useWalletStore((state) => state.connectionStatus);\n\tconst supportedIntents = useWalletStore((state) => state.supportedIntents);\n\n\tswitch (connectionStatus) {\n\t\tcase 'connecting':\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: null,\n\t\t\t\tisDisconnected: false,\n\t\t\t\tisConnecting: true,\n\t\t\t\tisConnected: false,\n\t\t\t\tsupportedIntents: [],\n\t\t\t} as const;\n\t\tcase 'disconnected':\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: null,\n\t\t\t\tisDisconnected: true,\n\t\t\t\tisConnecting: false,\n\t\t\t\tisConnected: false,\n\t\t\t\tsupportedIntents: [],\n\t\t\t} as const;\n\t\tcase 'connected': {\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: currentWallet!,\n\t\t\t\tisDisconnected: false,\n\t\t\t\tisConnecting: false,\n\t\t\t\tisConnected: true,\n\t\t\t\tsupportedIntents,\n\t\t\t} as const;\n\t\t}\n\t}\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,18 @@
1
+ import type { Transaction } from '@mysten/sui/transactions';
2
+ import type { SignedTransaction, SuiSignTransactionInput } from '@mysten/wallet-standard';
3
+ import type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';
4
+ import { WalletFeatureNotSupportedError, WalletNoAccountSelectedError, WalletNotConnectedError } from '../../errors/walletErrors.js';
5
+ import type { PartialBy } from '../../types/utilityTypes.js';
6
+ type UseSignTransactionArgs = PartialBy<Omit<SuiSignTransactionInput, 'transaction'>, 'account' | 'chain'> & {
7
+ transaction: Transaction | string;
8
+ };
9
+ interface UseSignTransactionResult extends SignedTransaction {
10
+ reportTransactionEffects: (effects: string) => void;
11
+ }
12
+ type UseSignTransactionError = WalletFeatureNotSupportedError | WalletNoAccountSelectedError | WalletNotConnectedError | Error;
13
+ type UseSignTransactionMutationOptions = Omit<UseMutationOptions<UseSignTransactionResult, UseSignTransactionError, UseSignTransactionArgs, unknown>, 'mutationFn'>;
14
+ /**
15
+ * Mutation hook for prompting the user to sign a transaction.
16
+ */
17
+ export declare function useSignTransaction({ mutationKey, ...mutationOptions }?: UseSignTransactionMutationOptions): UseMutationResult<UseSignTransactionResult, UseSignTransactionError, UseSignTransactionArgs>;
18
+ export {};
@@ -1,5 +1,6 @@
1
- // src/hooks/wallet/useSignAndExecuteTransactionBlock.ts
2
- import { useMutation } from "@tanstack/react-query";
1
+ // src/hooks/wallet/useSignTransaction.ts
2
+ import { signTransaction } from "@mysten/wallet-standard";
3
+ import { useMutation as useMutation2 } from "@tanstack/react-query";
3
4
 
4
5
  // src/constants/walletMutationKeys.ts
5
6
  var walletMutationKeys = {
@@ -8,9 +9,10 @@ var walletMutationKeys = {
8
9
  autoconnectWallet: formMutationKeyFn("autoconnect-wallet"),
9
10
  disconnectWallet: formMutationKeyFn("disconnect-wallet"),
10
11
  signPersonalMessage: formMutationKeyFn("sign-personal-message"),
11
- signTransactionBlock: formMutationKeyFn("sign-transaction-block"),
12
- signAndExecuteTransactionBlock: formMutationKeyFn("sign-and-execute-transaction-block"),
13
- 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")
14
16
  };
15
17
  function formMutationKeyFn(baseEntity) {
16
18
  return function mutationKeyFn(additionalKeys = []) {
@@ -30,7 +32,7 @@ var WalletFeatureNotSupportedError = class extends Error {
30
32
  import { useContext } from "react";
31
33
 
32
34
  // src/components/SuiClientProvider.tsx
33
- import { getFullnodeUrl, isSuiClient, SuiClient } from "@mysten/sui.js/client";
35
+ import { getFullnodeUrl, isSuiClient, SuiClient } from "@mysten/sui/client";
34
36
  import { createContext, useMemo, useState } from "react";
35
37
  import { jsx } from "react/jsx-runtime";
36
38
  var SuiClientContext = createContext(null);
@@ -80,6 +82,7 @@ function useCurrentAccount() {
80
82
  function useCurrentWallet() {
81
83
  const currentWallet = useWalletStore((state) => state.currentWallet);
82
84
  const connectionStatus = useWalletStore((state) => state.connectionStatus);
85
+ const supportedIntents = useWalletStore((state) => state.supportedIntents);
83
86
  switch (connectionStatus) {
84
87
  case "connecting":
85
88
  return {
@@ -87,7 +90,8 @@ function useCurrentWallet() {
87
90
  currentWallet: null,
88
91
  isDisconnected: false,
89
92
  isConnecting: true,
90
- isConnected: false
93
+ isConnected: false,
94
+ supportedIntents: []
91
95
  };
92
96
  case "disconnected":
93
97
  return {
@@ -95,7 +99,8 @@ function useCurrentWallet() {
95
99
  currentWallet: null,
96
100
  isDisconnected: true,
97
101
  isConnecting: false,
98
- isConnected: false
102
+ isConnected: false,
103
+ supportedIntents: []
99
104
  };
100
105
  case "connected": {
101
106
  return {
@@ -103,70 +108,101 @@ function useCurrentWallet() {
103
108
  currentWallet,
104
109
  isDisconnected: false,
105
110
  isConnecting: false,
106
- isConnected: true
111
+ isConnected: true,
112
+ supportedIntents
107
113
  };
108
114
  }
109
115
  }
110
116
  }
111
117
 
112
- // src/hooks/wallet/useSignAndExecuteTransactionBlock.ts
113
- function useSignAndExecuteTransactionBlock({
118
+ // src/hooks/wallet/useReportTransactionEffects.ts
119
+ import { toB64 } from "@mysten/sui/utils";
120
+ import { useMutation } from "@tanstack/react-query";
121
+ function useReportTransactionEffects({
114
122
  mutationKey,
115
- executeFromWallet,
116
123
  ...mutationOptions
117
124
  } = {}) {
118
125
  const { currentWallet } = useCurrentWallet();
119
126
  const currentAccount = useCurrentAccount();
120
- const client = useSuiClient();
121
127
  return useMutation({
122
- mutationKey: walletMutationKeys.signAndExecuteTransactionBlock(mutationKey),
123
- mutationFn: async ({ requestType, options, ...signTransactionBlockArgs }) => {
128
+ mutationKey: walletMutationKeys.reportTransactionEffects(mutationKey),
129
+ mutationFn: async ({ effects, chain = currentWallet?.chains[0], account = currentAccount }) => {
124
130
  if (!currentWallet) {
125
131
  throw new WalletNotConnectedError("No wallet is connected.");
126
132
  }
127
- const signerAccount = signTransactionBlockArgs.account ?? currentAccount;
128
- if (!signerAccount) {
133
+ if (!account) {
129
134
  throw new WalletNoAccountSelectedError(
130
- "No wallet account is selected to sign and execute the transaction block with."
135
+ "No wallet account is selected to report transaction effects for"
131
136
  );
132
137
  }
133
- if (executeFromWallet) {
134
- const walletFeature2 = currentWallet.features["sui:signAndExecuteTransactionBlock"];
135
- if (!walletFeature2) {
136
- throw new WalletFeatureNotSupportedError(
137
- "This wallet doesn't support the `signAndExecuteTransactionBlock` feature."
138
- );
139
- }
140
- return walletFeature2.signAndExecuteTransactionBlock({
141
- ...signTransactionBlockArgs,
142
- account: signerAccount,
143
- chain: signTransactionBlockArgs.chain ?? signerAccount.chains[0],
144
- requestType,
145
- options
138
+ const reportTransactionEffectsFeature = currentWallet.features["sui:reportTransactionEffects"];
139
+ if (reportTransactionEffectsFeature) {
140
+ return await reportTransactionEffectsFeature.reportTransactionEffects({
141
+ effects: Array.isArray(effects) ? toB64(new Uint8Array(effects)) : effects,
142
+ account,
143
+ chain: chain ?? currentWallet?.chains[0]
146
144
  });
147
145
  }
148
- const walletFeature = currentWallet.features["sui:signTransactionBlock"];
149
- if (!walletFeature) {
146
+ },
147
+ ...mutationOptions
148
+ });
149
+ }
150
+
151
+ // src/hooks/wallet/useSignTransaction.ts
152
+ function useSignTransaction({
153
+ mutationKey,
154
+ ...mutationOptions
155
+ } = {}) {
156
+ const { currentWallet } = useCurrentWallet();
157
+ const currentAccount = useCurrentAccount();
158
+ const client = useSuiClient();
159
+ const { mutate: reportTransactionEffects } = useReportTransactionEffects();
160
+ return useMutation2({
161
+ mutationKey: walletMutationKeys.signTransaction(mutationKey),
162
+ mutationFn: async ({ transaction, ...signTransactionArgs }) => {
163
+ if (!currentWallet) {
164
+ throw new WalletNotConnectedError("No wallet is connected.");
165
+ }
166
+ const signerAccount = signTransactionArgs.account ?? currentAccount;
167
+ if (!signerAccount) {
168
+ throw new WalletNoAccountSelectedError(
169
+ "No wallet account is selected to sign the transaction with."
170
+ );
171
+ }
172
+ if (!currentWallet.features["sui:signTransaction"] && !currentWallet.features["sui:signTransactionBlock"]) {
150
173
  throw new WalletFeatureNotSupportedError(
151
- "This wallet doesn't support the `signTransactionBlock` feature."
174
+ "This wallet doesn't support the `signTransaction` feature."
152
175
  );
153
176
  }
154
- const { signature, transactionBlockBytes } = await walletFeature.signTransactionBlock({
155
- ...signTransactionBlockArgs,
177
+ const { bytes, signature } = await signTransaction(currentWallet, {
178
+ ...signTransactionArgs,
179
+ transaction: {
180
+ toJSON: async () => {
181
+ return typeof transaction === "string" ? transaction : await transaction.toJSON({
182
+ supportedIntents: [],
183
+ client
184
+ });
185
+ }
186
+ },
156
187
  account: signerAccount,
157
- chain: signTransactionBlockArgs.chain ?? signerAccount.chains[0]
188
+ chain: signTransactionArgs.chain ?? signerAccount.chains[0]
158
189
  });
159
- return client.executeTransactionBlock({
160
- transactionBlock: transactionBlockBytes,
190
+ return {
191
+ bytes,
161
192
  signature,
162
- requestType,
163
- options
164
- });
193
+ reportTransactionEffects: (effects) => {
194
+ reportTransactionEffects({
195
+ effects,
196
+ account: signerAccount,
197
+ chain: signTransactionArgs.chain ?? signerAccount.chains[0]
198
+ });
199
+ }
200
+ };
165
201
  },
166
202
  ...mutationOptions
167
203
  });
168
204
  }
169
205
  export {
170
- useSignAndExecuteTransactionBlock
206
+ useSignTransaction
171
207
  };
172
- //# sourceMappingURL=useSignAndExecuteTransactionBlock.js.map
208
+ //# sourceMappingURL=useSignTransaction.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/hooks/wallet/useSignTransaction.ts", "../../../../src/constants/walletMutationKeys.ts", "../../../../src/errors/walletErrors.ts", "../../../../src/hooks/useSuiClient.ts", "../../../../src/components/SuiClientProvider.tsx", "../../../../src/hooks/wallet/useWalletStore.ts", "../../../../src/contexts/walletContext.ts", "../../../../src/hooks/wallet/useCurrentAccount.ts", "../../../../src/hooks/wallet/useCurrentWallet.ts", "../../../../src/hooks/wallet/useReportTransactionEffects.ts"],
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Transaction } from '@mysten/sui/transactions';\nimport { signTransaction } from '@mysten/wallet-standard';\nimport type { SignedTransaction, SuiSignTransactionInput } from '@mysten/wallet-standard';\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport {\n\tWalletFeatureNotSupportedError,\n\tWalletNoAccountSelectedError,\n\tWalletNotConnectedError,\n} from '../../errors/walletErrors.js';\nimport type { PartialBy } from '../../types/utilityTypes.js';\nimport { useSuiClient } from '../useSuiClient.js';\nimport { useCurrentAccount } from './useCurrentAccount.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\nimport { useReportTransactionEffects } from './useReportTransactionEffects.js';\n\ntype UseSignTransactionArgs = PartialBy<\n\tOmit<SuiSignTransactionInput, 'transaction'>,\n\t'account' | 'chain'\n> & {\n\ttransaction: Transaction | string;\n};\n\ninterface UseSignTransactionResult extends SignedTransaction {\n\treportTransactionEffects: (effects: string) => void;\n}\n\ntype UseSignTransactionError =\n\t| WalletFeatureNotSupportedError\n\t| WalletNoAccountSelectedError\n\t| WalletNotConnectedError\n\t| Error;\n\ntype UseSignTransactionMutationOptions = Omit<\n\tUseMutationOptions<\n\t\tUseSignTransactionResult,\n\t\tUseSignTransactionError,\n\t\tUseSignTransactionArgs,\n\t\tunknown\n\t>,\n\t'mutationFn'\n>;\n\n/**\n * Mutation hook for prompting the user to sign a transaction.\n */\nexport function useSignTransaction({\n\tmutationKey,\n\t...mutationOptions\n}: UseSignTransactionMutationOptions = {}): UseMutationResult<\n\tUseSignTransactionResult,\n\tUseSignTransactionError,\n\tUseSignTransactionArgs\n> {\n\tconst { currentWallet } = useCurrentWallet();\n\tconst currentAccount = useCurrentAccount();\n\tconst client = useSuiClient();\n\n\tconst { mutate: reportTransactionEffects } = useReportTransactionEffects();\n\n\treturn useMutation({\n\t\tmutationKey: walletMutationKeys.signTransaction(mutationKey),\n\t\tmutationFn: async ({ transaction, ...signTransactionArgs }) => {\n\t\t\tif (!currentWallet) {\n\t\t\t\tthrow new WalletNotConnectedError('No wallet is connected.');\n\t\t\t}\n\n\t\t\tconst signerAccount = signTransactionArgs.account ?? currentAccount;\n\t\t\tif (!signerAccount) {\n\t\t\t\tthrow new WalletNoAccountSelectedError(\n\t\t\t\t\t'No wallet account is selected to sign the transaction with.',\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!currentWallet.features['sui:signTransaction'] &&\n\t\t\t\t!currentWallet.features['sui:signTransactionBlock']\n\t\t\t) {\n\t\t\t\tthrow new WalletFeatureNotSupportedError(\n\t\t\t\t\t\"This wallet doesn't support the `signTransaction` feature.\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst { bytes, signature } = await signTransaction(currentWallet, {\n\t\t\t\t...signTransactionArgs,\n\t\t\t\ttransaction: {\n\t\t\t\t\ttoJSON: async () => {\n\t\t\t\t\t\treturn typeof transaction === 'string'\n\t\t\t\t\t\t\t? transaction\n\t\t\t\t\t\t\t: await transaction.toJSON({\n\t\t\t\t\t\t\t\t\tsupportedIntents: [],\n\t\t\t\t\t\t\t\t\tclient,\n\t\t\t\t\t\t\t });\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\taccount: signerAccount,\n\t\t\t\tchain: signTransactionArgs.chain ?? signerAccount.chains[0],\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tbytes,\n\t\t\t\tsignature,\n\t\t\t\treportTransactionEffects: (effects) => {\n\t\t\t\t\treportTransactionEffects({\n\t\t\t\t\t\teffects,\n\t\t\t\t\t\taccount: signerAccount,\n\t\t\t\t\t\tchain: signTransactionArgs.chain ?? signerAccount.chains[0],\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\t...mutationOptions,\n\t});\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { MutationKey } from '@tanstack/react-query';\n\nexport const walletMutationKeys = {\n\tall: { baseScope: 'wallet' },\n\tconnectWallet: formMutationKeyFn('connect-wallet'),\n\tautoconnectWallet: formMutationKeyFn('autoconnect-wallet'),\n\tdisconnectWallet: formMutationKeyFn('disconnect-wallet'),\n\tsignPersonalMessage: formMutationKeyFn('sign-personal-message'),\n\tsignTransaction: formMutationKeyFn('sign-transaction'),\n\tsignAndExecuteTransaction: formMutationKeyFn('sign-and-execute-transaction'),\n\tswitchAccount: formMutationKeyFn('switch-account'),\n\treportTransactionEffects: formMutationKeyFn('report-transaction-effects'),\n};\n\nfunction formMutationKeyFn(baseEntity: string) {\n\treturn function mutationKeyFn(additionalKeys: MutationKey = []) {\n\t\treturn [{ ...walletMutationKeys.all, baseEntity }, ...additionalKeys];\n\t};\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * An error that is instantiated when someone attempts to perform an action that requires an active wallet connection.\n */\nexport class WalletNotConnectedError extends Error {}\n\n/**\n * An error that is instantiated when someone attempts to perform an action that requires a selected wallet account.\n * This is more of an edge case stemming from the fact that wallets don't technically require you to authorize any\n * accounts when connecting a wallet.\n */\nexport class WalletNoAccountSelectedError extends Error {}\n\n/**\n * An error that is instantiated when someone attempts to perform an action that isn't supported by a wallet.\n */\nexport class WalletFeatureNotSupportedError extends Error {}\n\n/**\n * An error that is instantiated when a wallet account can't be found for a specific wallet.\n */\nexport class WalletAccountNotFoundError extends Error {}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { SuiClient } from '@mysten/sui/client';\nimport { useContext } from 'react';\n\nimport { SuiClientContext } from '../components/SuiClientProvider.js';\n\nexport function useSuiClientContext() {\n\tconst suiClient = useContext(SuiClientContext);\n\n\tif (!suiClient) {\n\t\tthrow new Error(\n\t\t\t'Could not find SuiClientContext. Ensure that you have set up the SuiClientProvider',\n\t\t);\n\t}\n\n\treturn suiClient;\n}\n\nexport function useSuiClient(): SuiClient {\n\treturn useSuiClientContext().client;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getFullnodeUrl, isSuiClient, SuiClient } from '@mysten/sui/client';\nimport type { SuiClientOptions } from '@mysten/sui/client';\nimport { createContext, useMemo, useState } from 'react';\n\nimport type { NetworkConfig } from '../hooks/networkConfig.js';\n\ntype NetworkConfigs<T extends NetworkConfig | SuiClient = NetworkConfig | SuiClient> = Record<\n\tstring,\n\tT\n>;\n\nexport interface SuiClientProviderContext {\n\tclient: SuiClient;\n\tnetworks: NetworkConfigs;\n\tnetwork: string;\n\tconfig: NetworkConfig | null;\n\tselectNetwork: (network: string) => void;\n}\n\nexport const SuiClientContext = createContext<SuiClientProviderContext | null>(null);\n\nexport type SuiClientProviderProps<T extends NetworkConfigs> = {\n\tcreateClient?: (name: keyof T, config: T[keyof T]) => SuiClient;\n\tchildren: React.ReactNode;\n\tnetworks?: T;\n\tonNetworkChange?: (network: keyof T & string) => void;\n} & (\n\t| {\n\t\t\tdefaultNetwork?: keyof T & string;\n\t\t\tnetwork?: never;\n\t }\n\t| {\n\t\t\tdefaultNetwork?: never;\n\t\t\tnetwork?: keyof T & string;\n\t }\n);\n\nconst DEFAULT_NETWORKS = {\n\tlocalnet: { url: getFullnodeUrl('localnet') },\n};\n\nconst DEFAULT_CREATE_CLIENT = function createClient(\n\t_name: string,\n\tconfig: NetworkConfig | SuiClient,\n) {\n\tif (isSuiClient(config)) {\n\t\treturn config;\n\t}\n\n\treturn new SuiClient(config);\n};\n\nexport function SuiClientProvider<T extends NetworkConfigs>(props: SuiClientProviderProps<T>) {\n\tconst { onNetworkChange, network, children } = props;\n\tconst networks = (props.networks ?? DEFAULT_NETWORKS) as T;\n\tconst createClient =\n\t\t(props.createClient as typeof DEFAULT_CREATE_CLIENT) ?? DEFAULT_CREATE_CLIENT;\n\n\tconst [selectedNetwork, setSelectedNetwork] = useState<keyof T & string>(\n\t\tprops.network ?? props.defaultNetwork ?? (Object.keys(networks)[0] as keyof T & string),\n\t);\n\n\tconst currentNetwork = props.network ?? selectedNetwork;\n\n\tconst client = useMemo(() => {\n\t\treturn createClient(currentNetwork, networks[currentNetwork]);\n\t}, [createClient, currentNetwork, networks]);\n\n\tconst ctx = useMemo((): SuiClientProviderContext => {\n\t\treturn {\n\t\t\tclient,\n\t\t\tnetworks,\n\t\t\tnetwork: currentNetwork,\n\t\t\tconfig:\n\t\t\t\tnetworks[currentNetwork] instanceof SuiClient\n\t\t\t\t\t? null\n\t\t\t\t\t: (networks[currentNetwork] as SuiClientOptions),\n\t\t\tselectNetwork: (newNetwork) => {\n\t\t\t\tif (currentNetwork === newNetwork) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!network && newNetwork !== selectedNetwork) {\n\t\t\t\t\tsetSelectedNetwork(newNetwork);\n\t\t\t\t}\n\n\t\t\t\tonNetworkChange?.(newNetwork);\n\t\t\t},\n\t\t};\n\t}, [client, networks, selectedNetwork, currentNetwork, network, onNetworkChange]);\n\n\treturn <SuiClientContext.Provider value={ctx}>{children}</SuiClientContext.Provider>;\n}\n", "// Copyright (c) Mysten Labs, Inc.\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\tconst store = useContext(WalletContext);\n\tif (!store) {\n\t\tthrow new Error(\n\t\t\t'Could not find WalletContext. Ensure that you have set up the WalletProvider.',\n\t\t);\n\t}\n\treturn useStore(store, selector);\n}\n", "// Copyright (c) Mysten Labs, Inc.\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// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletAccount } from '@mysten/wallet-standard';\n\nimport { useWalletStore } from './useWalletStore.js';\n\n/**\n * Retrieves the wallet account that is currently selected, if one exists.\n */\nexport function useCurrentAccount(): WalletAccount | null {\n\treturn useWalletStore((state) => state.currentAccount);\n}\n", "// Copyright (c) Mysten Labs, Inc.\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\tconst currentWallet = useWalletStore((state) => state.currentWallet);\n\tconst connectionStatus = useWalletStore((state) => state.connectionStatus);\n\tconst supportedIntents = useWalletStore((state) => state.supportedIntents);\n\n\tswitch (connectionStatus) {\n\t\tcase 'connecting':\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: null,\n\t\t\t\tisDisconnected: false,\n\t\t\t\tisConnecting: true,\n\t\t\t\tisConnected: false,\n\t\t\t\tsupportedIntents: [],\n\t\t\t} as const;\n\t\tcase 'disconnected':\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: null,\n\t\t\t\tisDisconnected: true,\n\t\t\t\tisConnecting: false,\n\t\t\t\tisConnected: false,\n\t\t\t\tsupportedIntents: [],\n\t\t\t} as const;\n\t\tcase 'connected': {\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: currentWallet!,\n\t\t\t\tisDisconnected: false,\n\t\t\t\tisConnecting: false,\n\t\t\t\tisConnected: true,\n\t\t\t\tsupportedIntents,\n\t\t\t} as const;\n\t\t}\n\t}\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { toB64 } from '@mysten/sui/utils';\nimport type { SuiReportTransactionEffectsInput } from '@mysten/wallet-standard';\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport type { WalletFeatureNotSupportedError } from '../../errors/walletErrors.js';\nimport {\n\tWalletNoAccountSelectedError,\n\tWalletNotConnectedError,\n} from '../../errors/walletErrors.js';\nimport type { PartialBy } from '../../types/utilityTypes.js';\nimport { useCurrentAccount } from './useCurrentAccount.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\n\ntype UseReportTransactionEffectsArgs = Omit<\n\tPartialBy<SuiReportTransactionEffectsInput, 'account' | 'chain'>,\n\t'effects'\n> & {\n\teffects: string | number[];\n};\n\ntype UseReportTransactionEffectsError =\n\t| WalletFeatureNotSupportedError\n\t| WalletNoAccountSelectedError\n\t| WalletNotConnectedError\n\t| Error;\n\ntype UseReportTransactionEffectsMutationOptions = Omit<\n\tUseMutationOptions<\n\t\tvoid,\n\t\tUseReportTransactionEffectsError,\n\t\tUseReportTransactionEffectsArgs,\n\t\tunknown\n\t>,\n\t'mutationFn'\n>;\n\n/**\n * Mutation hook for prompting the user to sign a message.\n */\nexport function useReportTransactionEffects({\n\tmutationKey,\n\t...mutationOptions\n}: UseReportTransactionEffectsMutationOptions = {}): UseMutationResult<\n\tvoid,\n\tUseReportTransactionEffectsError,\n\tUseReportTransactionEffectsArgs\n> {\n\tconst { currentWallet } = useCurrentWallet();\n\tconst currentAccount = useCurrentAccount();\n\n\treturn useMutation({\n\t\tmutationKey: walletMutationKeys.reportTransactionEffects(mutationKey),\n\t\tmutationFn: async ({ effects, chain = currentWallet?.chains[0], account = currentAccount }) => {\n\t\t\tif (!currentWallet) {\n\t\t\t\tthrow new WalletNotConnectedError('No wallet is connected.');\n\t\t\t}\n\n\t\t\tif (!account) {\n\t\t\t\tthrow new WalletNoAccountSelectedError(\n\t\t\t\t\t'No wallet account is selected to report transaction effects for',\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst reportTransactionEffectsFeature =\n\t\t\t\tcurrentWallet.features['sui:reportTransactionEffects'];\n\n\t\t\tif (reportTransactionEffectsFeature) {\n\t\t\t\treturn await reportTransactionEffectsFeature.reportTransactionEffects({\n\t\t\t\t\teffects: Array.isArray(effects) ? toB64(new Uint8Array(effects)) : effects,\n\t\t\t\t\taccount,\n\t\t\t\t\tchain: chain ?? currentWallet?.chains[0],\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t...mutationOptions,\n\t});\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["useMutation", "useContext", "createContext", "useContext", "useMutation"]
7
+ }
@@ -22,9 +22,10 @@ var walletMutationKeys = {
22
22
  autoconnectWallet: formMutationKeyFn("autoconnect-wallet"),
23
23
  disconnectWallet: formMutationKeyFn("disconnect-wallet"),
24
24
  signPersonalMessage: formMutationKeyFn("sign-personal-message"),
25
- signTransactionBlock: formMutationKeyFn("sign-transaction-block"),
26
- signAndExecuteTransactionBlock: formMutationKeyFn("sign-and-execute-transaction-block"),
27
- switchAccount: formMutationKeyFn("switch-account")
25
+ signTransaction: formMutationKeyFn("sign-transaction"),
26
+ signAndExecuteTransaction: formMutationKeyFn("sign-and-execute-transaction"),
27
+ switchAccount: formMutationKeyFn("switch-account"),
28
+ reportTransactionEffects: formMutationKeyFn("report-transaction-effects")
28
29
  };
29
30
  function formMutationKeyFn(baseEntity) {
30
31
  return function mutationKeyFn(additionalKeys = []) {
@@ -68,7 +69,12 @@ function useConnectWallet({
68
69
  (account) => account.chains.some((chain) => chain.split(":")[0] === "sui")
69
70
  );
70
71
  const selectedAccount = getSelectedAccount(connectedSuiAccounts, accountAddress);
71
- setWalletConnected(wallet, connectedSuiAccounts, selectedAccount);
72
+ setWalletConnected(
73
+ wallet,
74
+ connectedSuiAccounts,
75
+ selectedAccount,
76
+ connectResult.supportedIntents
77
+ );
72
78
  return { accounts: connectedSuiAccounts };
73
79
  } catch (error) {
74
80
  setConnectionStatus("disconnected");
@@ -93,6 +99,7 @@ function getSelectedAccount(connectedAccounts, accountAddress) {
93
99
  function useCurrentWallet() {
94
100
  const currentWallet = useWalletStore((state) => state.currentWallet);
95
101
  const connectionStatus = useWalletStore((state) => state.connectionStatus);
102
+ const supportedIntents = useWalletStore((state) => state.supportedIntents);
96
103
  switch (connectionStatus) {
97
104
  case "connecting":
98
105
  return {
@@ -100,7 +107,8 @@ function useCurrentWallet() {
100
107
  currentWallet: null,
101
108
  isDisconnected: false,
102
109
  isConnecting: true,
103
- isConnected: false
110
+ isConnected: false,
111
+ supportedIntents: []
104
112
  };
105
113
  case "disconnected":
106
114
  return {
@@ -108,7 +116,8 @@ function useCurrentWallet() {
108
116
  currentWallet: null,
109
117
  isDisconnected: true,
110
118
  isConnecting: false,
111
- isConnected: false
119
+ isConnected: false,
120
+ supportedIntents: []
112
121
  };
113
122
  case "connected": {
114
123
  return {
@@ -116,7 +125,8 @@ function useCurrentWallet() {
116
125
  currentWallet,
117
126
  isDisconnected: false,
118
127
  isConnecting: false,
119
- isConnected: true
128
+ isConnected: true,
129
+ supportedIntents
120
130
  };
121
131
  }
122
132
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/hooks/wallet/useStashedWallet.ts", "../../../../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// SPDX-License-Identifier: Apache-2.0\n\nimport type { StashedWallet } from '@mysten/zksend';\nimport { registerStashedWallet } from '@mysten/zksend';\nimport { useEffect, useLayoutEffect, useState } from 'react';\n\nimport { useAutoConnectWallet } from './useAutoConnectWallet.js';\nimport { useConnectWallet } from './useConnectWallet.js';\n\nexport interface StashedWalletConfig {\n\tname: string;\n\torigin?: string;\n}\n\nexport function useStashedWallet(config?: StashedWalletConfig) {\n\tconst status = useAutoConnectWallet();\n\tconst [address, setAddress] = useState<string | null>(null);\n\tconst [wallet, setWallet] = useState<StashedWallet | null>(null);\n\tconst { mutate: connect } = useConnectWallet();\n\n\tuseEffect(() => {\n\t\t// This handles an edge case where the user has already connected a wallet, but is coming from\n\t\t// a zkSend redirect, and we want to force the zkSend wallet to connect. We need to wait for the\n\t\t// autoconnection to attempt to connect, then force the zkSend wallet to connect.\n\t\tif (!address || !wallet || status !== 'attempted') return;\n\n\t\tconnect({ wallet, silent: true });\n\t\t// Reset the address since we only want to do this once:\n\t\tsetAddress(null);\n\t}, [address, status, connect, wallet]);\n\n\tuseLayoutEffect(() => {\n\t\tif (!config?.name) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { wallet, unregister, addressFromRedirect } = registerStashedWallet(config.name, {\n\t\t\torigin: config.origin,\n\t\t});\n\n\t\tif (addressFromRedirect) {\n\t\t\tsetWallet(wallet);\n\t\t\tsetAddress(addressFromRedirect);\n\t\t}\n\n\t\treturn unregister;\n\t}, [config?.name, config?.origin]);\n}\n", "// Copyright (c) Mysten Labs, Inc.\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\tconst { mutateAsync: connectWallet } = useConnectWallet();\n\tconst autoConnectEnabled = useWalletStore((state) => state.autoConnectEnabled);\n\tconst lastConnectedWalletName = useWalletStore((state) => state.lastConnectedWalletName);\n\tconst lastConnectedAccountAddress = useWalletStore((state) => state.lastConnectedAccountAddress);\n\tconst wallets = useWallets();\n\tconst { isConnected } = useCurrentWallet();\n\n\tconst [clientOnly, setClientOnly] = useState(false);\n\tuseLayoutEffect(() => {\n\t\tsetClientOnly(true);\n\t}, []);\n\n\tconst { data, isError } = useQuery({\n\t\tqueryKey: [\n\t\t\t'@mysten/dapp-kit',\n\t\t\t'autoconnect',\n\t\t\t{\n\t\t\t\tisConnected,\n\t\t\t\tautoConnectEnabled,\n\t\t\t\tlastConnectedWalletName,\n\t\t\t\tlastConnectedAccountAddress,\n\t\t\t\twalletCount: wallets.length,\n\t\t\t},\n\t\t],\n\t\tqueryFn: async () => {\n\t\t\tif (!autoConnectEnabled) {\n\t\t\t\treturn 'disabled';\n\t\t\t}\n\n\t\t\tif (!lastConnectedWalletName || !lastConnectedAccountAddress || isConnected) {\n\t\t\t\treturn 'attempted';\n\t\t\t}\n\n\t\t\tconst wallet = wallets.find(\n\t\t\t\t(wallet) => getWalletUniqueIdentifier(wallet) === lastConnectedWalletName,\n\t\t\t);\n\t\t\tif (wallet) {\n\t\t\t\tawait connectWallet({\n\t\t\t\t\twallet,\n\t\t\t\t\taccountAddress: lastConnectedAccountAddress,\n\t\t\t\t\tsilent: true,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn 'attempted';\n\t\t},\n\t\tenabled: autoConnectEnabled,\n\t\tpersister: undefined,\n\t\tgcTime: 0,\n\t\tstaleTime: 0,\n\t\tnetworkMode: 'always',\n\t\tretry: false,\n\t\tretryOnMount: false,\n\t\trefetchInterval: false,\n\t\trefetchIntervalInBackground: false,\n\t\trefetchOnMount: false,\n\t\trefetchOnReconnect: false,\n\t\trefetchOnWindowFocus: false,\n\t});\n\n\tif (!autoConnectEnabled) {\n\t\treturn 'disabled';\n\t}\n\n\t// We always initialize with \"idle\" so that in SSR environments, we guarantee that the initial render states always agree:\n\tif (!clientOnly) {\n\t\treturn 'idle';\n\t}\n\n\tif (isConnected) {\n\t\treturn 'attempted';\n\t}\n\n\tif (!lastConnectedWalletName) {\n\t\treturn 'attempted';\n\t}\n\n\treturn isError ? 'attempted' : data ?? 'idle';\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {\n\tMinimallyRequiredFeatures,\n\tWallet,\n\tWalletWithFeatures,\n} from '@mysten/wallet-standard';\nimport { getWallets, isWalletWithRequiredFeatureSet } from '@mysten/wallet-standard';\n\nexport function getRegisteredWallets<AdditionalFeatures extends Wallet['features']>(\n\tpreferredWallets: string[],\n\trequiredFeatures?: (keyof AdditionalFeatures)[],\n) {\n\tconst walletsApi = getWallets();\n\tconst wallets = walletsApi.get();\n\n\tconst suiWallets = wallets.filter(\n\t\t(wallet): wallet is WalletWithFeatures<MinimallyRequiredFeatures & AdditionalFeatures> =>\n\t\t\tisWalletWithRequiredFeatureSet(wallet, requiredFeatures),\n\t);\n\n\treturn [\n\t\t// Preferred wallets, in order:\n\t\t...(preferredWallets\n\t\t\t.map((name) => suiWallets.find((wallet) => wallet.name === name))\n\t\t\t.filter(Boolean) as WalletWithFeatures<MinimallyRequiredFeatures & AdditionalFeatures>[]),\n\n\t\t// Wallets in default order:\n\t\t...suiWallets.filter((wallet) => !preferredWallets.includes(wallet.name)),\n\t];\n}\n\nexport function getWalletUniqueIdentifier(wallet?: Wallet) {\n\treturn wallet?.id ?? wallet?.name;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {\n\tStandardConnectInput,\n\tStandardConnectOutput,\n\tWalletAccount,\n\tWalletWithRequiredFeatures,\n} from '@mysten/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\t/** The wallet to connect to. */\n\twallet: WalletWithRequiredFeatures;\n\n\t/** An optional account address to connect to. Defaults to the first authorized account. */\n\taccountAddress?: string;\n} & StandardConnectInput;\n\ntype ConnectWalletResult = StandardConnectOutput;\n\ntype UseConnectWalletMutationOptions = Omit<\n\tUseMutationOptions<ConnectWalletResult, Error, ConnectWalletArgs, unknown>,\n\t'mutationFn'\n>;\n\n/**\n * Mutation hook for establishing a connection to a specific wallet.\n */\nexport function useConnectWallet({\n\tmutationKey,\n\t...mutationOptions\n}: UseConnectWalletMutationOptions = {}): UseMutationResult<\n\tConnectWalletResult,\n\tError,\n\tConnectWalletArgs,\n\tunknown\n> {\n\tconst setWalletConnected = useWalletStore((state) => state.setWalletConnected);\n\tconst setConnectionStatus = useWalletStore((state) => state.setConnectionStatus);\n\n\treturn useMutation({\n\t\tmutationKey: walletMutationKeys.connectWallet(mutationKey),\n\t\tmutationFn: async ({ wallet, accountAddress, ...connectArgs }) => {\n\t\t\ttry {\n\t\t\t\tsetConnectionStatus('connecting');\n\n\t\t\t\tconst connectResult = await wallet.features['standard:connect'].connect(connectArgs);\n\t\t\t\tconst connectedSuiAccounts = connectResult.accounts.filter((account) =>\n\t\t\t\t\taccount.chains.some((chain) => chain.split(':')[0] === 'sui'),\n\t\t\t\t);\n\t\t\t\tconst selectedAccount = getSelectedAccount(connectedSuiAccounts, accountAddress);\n\n\t\t\t\tsetWalletConnected(wallet, connectedSuiAccounts, selectedAccount);\n\n\t\t\t\treturn { accounts: connectedSuiAccounts };\n\t\t\t} catch (error) {\n\t\t\t\tsetConnectionStatus('disconnected');\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t\t...mutationOptions,\n\t});\n}\n\nfunction getSelectedAccount(connectedAccounts: readonly WalletAccount[], accountAddress?: string) {\n\tif (connectedAccounts.length === 0) {\n\t\treturn null;\n\t}\n\n\tif (accountAddress) {\n\t\tconst selectedAccount = connectedAccounts.find((account) => account.address === accountAddress);\n\t\treturn selectedAccount ?? connectedAccounts[0];\n\t}\n\n\treturn connectedAccounts[0];\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { MutationKey } from '@tanstack/react-query';\n\nexport const walletMutationKeys = {\n\tall: { baseScope: 'wallet' },\n\tconnectWallet: formMutationKeyFn('connect-wallet'),\n\tautoconnectWallet: formMutationKeyFn('autoconnect-wallet'),\n\tdisconnectWallet: formMutationKeyFn('disconnect-wallet'),\n\tsignPersonalMessage: formMutationKeyFn('sign-personal-message'),\n\tsignTransactionBlock: formMutationKeyFn('sign-transaction-block'),\n\tsignAndExecuteTransactionBlock: formMutationKeyFn('sign-and-execute-transaction-block'),\n\tswitchAccount: formMutationKeyFn('switch-account'),\n};\n\nfunction formMutationKeyFn(baseEntity: string) {\n\treturn function mutationKeyFn(additionalKeys: MutationKey = []) {\n\t\treturn [{ ...walletMutationKeys.all, baseEntity }, ...additionalKeys];\n\t};\n}\n", "// Copyright (c) Mysten Labs, Inc.\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\tconst store = useContext(WalletContext);\n\tif (!store) {\n\t\tthrow new Error(\n\t\t\t'Could not find WalletContext. Ensure that you have set up the WalletProvider.',\n\t\t);\n\t}\n\treturn useStore(store, selector);\n}\n", "// Copyright (c) Mysten Labs, Inc.\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// 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\tconst currentWallet = useWalletStore((state) => state.currentWallet);\n\tconst connectionStatus = useWalletStore((state) => state.connectionStatus);\n\n\tswitch (connectionStatus) {\n\t\tcase 'connecting':\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: null,\n\t\t\t\tisDisconnected: false,\n\t\t\t\tisConnecting: true,\n\t\t\t\tisConnected: false,\n\t\t\t} as const;\n\t\tcase 'disconnected':\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: null,\n\t\t\t\tisDisconnected: true,\n\t\t\t\tisConnecting: false,\n\t\t\t\tisConnected: false,\n\t\t\t} as const;\n\t\tcase 'connected': {\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: currentWallet!,\n\t\t\t\tisDisconnected: false,\n\t\t\t\tisConnecting: false,\n\t\t\t\tisConnected: true,\n\t\t\t} as const;\n\t\t}\n\t}\n}\n", "// Copyright (c) Mysten Labs, Inc.\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\treturn useWalletStore((state) => state.wallets);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { StashedWallet } from '@mysten/zksend';\nimport { registerStashedWallet } from '@mysten/zksend';\nimport { useEffect, useLayoutEffect, useState } from 'react';\n\nimport { useAutoConnectWallet } from './useAutoConnectWallet.js';\nimport { useConnectWallet } from './useConnectWallet.js';\n\nexport interface StashedWalletConfig {\n\tname: string;\n\torigin?: string;\n}\n\nexport function useStashedWallet(config?: StashedWalletConfig) {\n\tconst status = useAutoConnectWallet();\n\tconst [address, setAddress] = useState<string | null>(null);\n\tconst [wallet, setWallet] = useState<StashedWallet | null>(null);\n\tconst { mutate: connect } = useConnectWallet();\n\n\tuseEffect(() => {\n\t\t// This handles an edge case where the user has already connected a wallet, but is coming from\n\t\t// a zkSend redirect, and we want to force the zkSend wallet to connect. We need to wait for the\n\t\t// autoconnection to attempt to connect, then force the zkSend wallet to connect.\n\t\tif (!address || !wallet || status !== 'attempted') return;\n\n\t\tconnect({ wallet, silent: true });\n\t\t// Reset the address since we only want to do this once:\n\t\tsetAddress(null);\n\t}, [address, status, connect, wallet]);\n\n\tuseLayoutEffect(() => {\n\t\tif (!config?.name) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { wallet, unregister, addressFromRedirect } = registerStashedWallet(config.name, {\n\t\t\torigin: config.origin,\n\t\t});\n\n\t\tif (addressFromRedirect) {\n\t\t\tsetWallet(wallet);\n\t\t\tsetAddress(addressFromRedirect);\n\t\t}\n\n\t\treturn unregister;\n\t}, [config?.name, config?.origin]);\n}\n", "// Copyright (c) Mysten Labs, Inc.\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\tconst { mutateAsync: connectWallet } = useConnectWallet();\n\tconst autoConnectEnabled = useWalletStore((state) => state.autoConnectEnabled);\n\tconst lastConnectedWalletName = useWalletStore((state) => state.lastConnectedWalletName);\n\tconst lastConnectedAccountAddress = useWalletStore((state) => state.lastConnectedAccountAddress);\n\tconst wallets = useWallets();\n\tconst { isConnected } = useCurrentWallet();\n\n\tconst [clientOnly, setClientOnly] = useState(false);\n\tuseLayoutEffect(() => {\n\t\tsetClientOnly(true);\n\t}, []);\n\n\tconst { data, isError } = useQuery({\n\t\tqueryKey: [\n\t\t\t'@mysten/dapp-kit',\n\t\t\t'autoconnect',\n\t\t\t{\n\t\t\t\tisConnected,\n\t\t\t\tautoConnectEnabled,\n\t\t\t\tlastConnectedWalletName,\n\t\t\t\tlastConnectedAccountAddress,\n\t\t\t\twalletCount: wallets.length,\n\t\t\t},\n\t\t],\n\t\tqueryFn: async () => {\n\t\t\tif (!autoConnectEnabled) {\n\t\t\t\treturn 'disabled';\n\t\t\t}\n\n\t\t\tif (!lastConnectedWalletName || !lastConnectedAccountAddress || isConnected) {\n\t\t\t\treturn 'attempted';\n\t\t\t}\n\n\t\t\tconst wallet = wallets.find(\n\t\t\t\t(wallet) => getWalletUniqueIdentifier(wallet) === lastConnectedWalletName,\n\t\t\t);\n\t\t\tif (wallet) {\n\t\t\t\tawait connectWallet({\n\t\t\t\t\twallet,\n\t\t\t\t\taccountAddress: lastConnectedAccountAddress,\n\t\t\t\t\tsilent: true,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn 'attempted';\n\t\t},\n\t\tenabled: autoConnectEnabled,\n\t\tpersister: undefined,\n\t\tgcTime: 0,\n\t\tstaleTime: 0,\n\t\tnetworkMode: 'always',\n\t\tretry: false,\n\t\tretryOnMount: false,\n\t\trefetchInterval: false,\n\t\trefetchIntervalInBackground: false,\n\t\trefetchOnMount: false,\n\t\trefetchOnReconnect: false,\n\t\trefetchOnWindowFocus: false,\n\t});\n\n\tif (!autoConnectEnabled) {\n\t\treturn 'disabled';\n\t}\n\n\t// We always initialize with \"idle\" so that in SSR environments, we guarantee that the initial render states always agree:\n\tif (!clientOnly) {\n\t\treturn 'idle';\n\t}\n\n\tif (isConnected) {\n\t\treturn 'attempted';\n\t}\n\n\tif (!lastConnectedWalletName) {\n\t\treturn 'attempted';\n\t}\n\n\treturn isError ? 'attempted' : data ?? 'idle';\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {\n\tMinimallyRequiredFeatures,\n\tWallet,\n\tWalletWithFeatures,\n\tWalletWithRequiredFeatures,\n} from '@mysten/wallet-standard';\nimport { getWallets, isWalletWithRequiredFeatureSet } from '@mysten/wallet-standard';\n\nexport function getRegisteredWallets<AdditionalFeatures extends Wallet['features']>(\n\tpreferredWallets: string[],\n\twalletFilter?: (wallet: WalletWithRequiredFeatures) => boolean,\n) {\n\tconst walletsApi = getWallets();\n\tconst wallets = walletsApi.get();\n\n\tconst suiWallets = wallets.filter(\n\t\t(wallet): wallet is WalletWithFeatures<MinimallyRequiredFeatures & AdditionalFeatures> =>\n\t\t\tisWalletWithRequiredFeatureSet(wallet) && (!walletFilter || walletFilter(wallet)),\n\t);\n\n\treturn [\n\t\t// Preferred wallets, in order:\n\t\t...(preferredWallets\n\t\t\t.map((name) => suiWallets.find((wallet) => wallet.name === name))\n\t\t\t.filter(Boolean) as WalletWithFeatures<MinimallyRequiredFeatures & AdditionalFeatures>[]),\n\n\t\t// Wallets in default order:\n\t\t...suiWallets.filter((wallet) => !preferredWallets.includes(wallet.name)),\n\t];\n}\n\nexport function getWalletUniqueIdentifier(wallet?: Wallet) {\n\treturn wallet?.id ?? wallet?.name;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {\n\tStandardConnectInput,\n\tStandardConnectOutput,\n\tWalletAccount,\n\tWalletWithRequiredFeatures,\n} from '@mysten/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\t/** The wallet to connect to. */\n\twallet: WalletWithRequiredFeatures;\n\n\t/** An optional account address to connect to. Defaults to the first authorized account. */\n\taccountAddress?: string;\n} & StandardConnectInput;\n\ntype ConnectWalletResult = StandardConnectOutput;\n\ntype UseConnectWalletMutationOptions = Omit<\n\tUseMutationOptions<ConnectWalletResult, Error, ConnectWalletArgs, unknown>,\n\t'mutationFn'\n>;\n\n/**\n * Mutation hook for establishing a connection to a specific wallet.\n */\nexport function useConnectWallet({\n\tmutationKey,\n\t...mutationOptions\n}: UseConnectWalletMutationOptions = {}): UseMutationResult<\n\tConnectWalletResult,\n\tError,\n\tConnectWalletArgs,\n\tunknown\n> {\n\tconst setWalletConnected = useWalletStore((state) => state.setWalletConnected);\n\tconst setConnectionStatus = useWalletStore((state) => state.setConnectionStatus);\n\n\treturn useMutation({\n\t\tmutationKey: walletMutationKeys.connectWallet(mutationKey),\n\t\tmutationFn: async ({ wallet, accountAddress, ...connectArgs }) => {\n\t\t\ttry {\n\t\t\t\tsetConnectionStatus('connecting');\n\n\t\t\t\tconst connectResult = await wallet.features['standard:connect'].connect(connectArgs);\n\t\t\t\tconst connectedSuiAccounts = connectResult.accounts.filter((account) =>\n\t\t\t\t\taccount.chains.some((chain) => chain.split(':')[0] === 'sui'),\n\t\t\t\t);\n\t\t\t\tconst selectedAccount = getSelectedAccount(connectedSuiAccounts, accountAddress);\n\n\t\t\t\tsetWalletConnected(\n\t\t\t\t\twallet,\n\t\t\t\t\tconnectedSuiAccounts,\n\t\t\t\t\tselectedAccount,\n\t\t\t\t\tconnectResult.supportedIntents,\n\t\t\t\t);\n\n\t\t\t\treturn { accounts: connectedSuiAccounts };\n\t\t\t} catch (error) {\n\t\t\t\tsetConnectionStatus('disconnected');\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t\t...mutationOptions,\n\t});\n}\n\nfunction getSelectedAccount(connectedAccounts: readonly WalletAccount[], accountAddress?: string) {\n\tif (connectedAccounts.length === 0) {\n\t\treturn null;\n\t}\n\n\tif (accountAddress) {\n\t\tconst selectedAccount = connectedAccounts.find((account) => account.address === accountAddress);\n\t\treturn selectedAccount ?? connectedAccounts[0];\n\t}\n\n\treturn connectedAccounts[0];\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { MutationKey } from '@tanstack/react-query';\n\nexport const walletMutationKeys = {\n\tall: { baseScope: 'wallet' },\n\tconnectWallet: formMutationKeyFn('connect-wallet'),\n\tautoconnectWallet: formMutationKeyFn('autoconnect-wallet'),\n\tdisconnectWallet: formMutationKeyFn('disconnect-wallet'),\n\tsignPersonalMessage: formMutationKeyFn('sign-personal-message'),\n\tsignTransaction: formMutationKeyFn('sign-transaction'),\n\tsignAndExecuteTransaction: formMutationKeyFn('sign-and-execute-transaction'),\n\tswitchAccount: formMutationKeyFn('switch-account'),\n\treportTransactionEffects: formMutationKeyFn('report-transaction-effects'),\n};\n\nfunction formMutationKeyFn(baseEntity: string) {\n\treturn function mutationKeyFn(additionalKeys: MutationKey = []) {\n\t\treturn [{ ...walletMutationKeys.all, baseEntity }, ...additionalKeys];\n\t};\n}\n", "// Copyright (c) Mysten Labs, Inc.\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\tconst store = useContext(WalletContext);\n\tif (!store) {\n\t\tthrow new Error(\n\t\t\t'Could not find WalletContext. Ensure that you have set up the WalletProvider.',\n\t\t);\n\t}\n\treturn useStore(store, selector);\n}\n", "// Copyright (c) Mysten Labs, Inc.\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// 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\tconst currentWallet = useWalletStore((state) => state.currentWallet);\n\tconst connectionStatus = useWalletStore((state) => state.connectionStatus);\n\tconst supportedIntents = useWalletStore((state) => state.supportedIntents);\n\n\tswitch (connectionStatus) {\n\t\tcase 'connecting':\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: null,\n\t\t\t\tisDisconnected: false,\n\t\t\t\tisConnecting: true,\n\t\t\t\tisConnected: false,\n\t\t\t\tsupportedIntents: [],\n\t\t\t} as const;\n\t\tcase 'disconnected':\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: null,\n\t\t\t\tisDisconnected: true,\n\t\t\t\tisConnecting: false,\n\t\t\t\tisConnected: false,\n\t\t\t\tsupportedIntents: [],\n\t\t\t} as const;\n\t\tcase 'connected': {\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: currentWallet!,\n\t\t\t\tisDisconnected: false,\n\t\t\t\tisConnecting: false,\n\t\t\t\tisConnected: true,\n\t\t\t\tsupportedIntents,\n\t\t\t} as const;\n\t\t}\n\t}\n}\n", "// Copyright (c) Mysten Labs, Inc.\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\treturn useWalletStore((state) => state.wallets);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["useLayoutEffect", "useState", "wallet", "useState", "useLayoutEffect", "wallet"]
7
7
  }
@@ -8,9 +8,10 @@ var walletMutationKeys = {
8
8
  autoconnectWallet: formMutationKeyFn("autoconnect-wallet"),
9
9
  disconnectWallet: formMutationKeyFn("disconnect-wallet"),
10
10
  signPersonalMessage: formMutationKeyFn("sign-personal-message"),
11
- signTransactionBlock: formMutationKeyFn("sign-transaction-block"),
12
- signAndExecuteTransactionBlock: formMutationKeyFn("sign-and-execute-transaction-block"),
13
- switchAccount: formMutationKeyFn("switch-account")
11
+ signTransaction: formMutationKeyFn("sign-transaction"),
12
+ signAndExecuteTransaction: formMutationKeyFn("sign-and-execute-transaction"),
13
+ switchAccount: formMutationKeyFn("switch-account"),
14
+ reportTransactionEffects: formMutationKeyFn("report-transaction-effects")
14
15
  };
15
16
  function formMutationKeyFn(baseEntity) {
16
17
  return function mutationKeyFn(additionalKeys = []) {
@@ -47,6 +48,7 @@ function useWalletStore(selector) {
47
48
  function useCurrentWallet() {
48
49
  const currentWallet = useWalletStore((state) => state.currentWallet);
49
50
  const connectionStatus = useWalletStore((state) => state.connectionStatus);
51
+ const supportedIntents = useWalletStore((state) => state.supportedIntents);
50
52
  switch (connectionStatus) {
51
53
  case "connecting":
52
54
  return {
@@ -54,7 +56,8 @@ function useCurrentWallet() {
54
56
  currentWallet: null,
55
57
  isDisconnected: false,
56
58
  isConnecting: true,
57
- isConnected: false
59
+ isConnected: false,
60
+ supportedIntents: []
58
61
  };
59
62
  case "disconnected":
60
63
  return {
@@ -62,7 +65,8 @@ function useCurrentWallet() {
62
65
  currentWallet: null,
63
66
  isDisconnected: true,
64
67
  isConnecting: false,
65
- isConnected: false
68
+ isConnected: false,
69
+ supportedIntents: []
66
70
  };
67
71
  case "connected": {
68
72
  return {
@@ -70,7 +74,8 @@ function useCurrentWallet() {
70
74
  currentWallet,
71
75
  isDisconnected: false,
72
76
  isConnecting: false,
73
- isConnected: true
77
+ isConnected: true,
78
+ supportedIntents
74
79
  };
75
80
  }
76
81
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/hooks/wallet/useSwitchAccount.ts", "../../../../src/constants/walletMutationKeys.ts", "../../../../src/errors/walletErrors.ts", "../../../../src/hooks/wallet/useWalletStore.ts", "../../../../src/contexts/walletContext.ts", "../../../../src/hooks/wallet/useCurrentWallet.ts"],
4
- "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletAccount } from '@mysten/wallet-standard';\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport { WalletAccountNotFoundError, WalletNotConnectedError } from '../../errors/walletErrors.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\nimport { useWalletStore } from './useWalletStore.js';\n\ntype SwitchAccountArgs = {\n\taccount: WalletAccount;\n};\n\ntype SwitchAccountResult = void;\n\ntype UseSwitchAccountError = WalletNotConnectedError | WalletAccountNotFoundError | Error;\n\ntype UseSwitchAccountMutationOptions = Omit<\n\tUseMutationOptions<SwitchAccountResult, UseSwitchAccountError, SwitchAccountArgs, unknown>,\n\t'mutationFn'\n>;\n\n/**\n * Mutation hook for switching to a specific wallet account.\n */\nexport function useSwitchAccount({\n\tmutationKey,\n\t...mutationOptions\n}: UseSwitchAccountMutationOptions = {}): UseMutationResult<\n\tSwitchAccountResult,\n\tUseSwitchAccountError,\n\tSwitchAccountArgs\n> {\n\tconst { currentWallet } = useCurrentWallet();\n\tconst setAccountSwitched = useWalletStore((state) => state.setAccountSwitched);\n\n\treturn useMutation({\n\t\tmutationKey: walletMutationKeys.switchAccount(mutationKey),\n\t\tmutationFn: async ({ account }) => {\n\t\t\tif (!currentWallet) {\n\t\t\t\tthrow new WalletNotConnectedError('No wallet is connected.');\n\t\t\t}\n\n\t\t\tconst accountToSelect = currentWallet.accounts.find(\n\t\t\t\t(walletAccount) => walletAccount.address === account.address,\n\t\t\t);\n\t\t\tif (!accountToSelect) {\n\t\t\t\tthrow new WalletAccountNotFoundError(\n\t\t\t\t\t`No account with address ${account.address} is connected to ${currentWallet.name}.`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tsetAccountSwitched(accountToSelect);\n\t\t},\n\t\t...mutationOptions,\n\t});\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { MutationKey } from '@tanstack/react-query';\n\nexport const walletMutationKeys = {\n\tall: { baseScope: 'wallet' },\n\tconnectWallet: formMutationKeyFn('connect-wallet'),\n\tautoconnectWallet: formMutationKeyFn('autoconnect-wallet'),\n\tdisconnectWallet: formMutationKeyFn('disconnect-wallet'),\n\tsignPersonalMessage: formMutationKeyFn('sign-personal-message'),\n\tsignTransactionBlock: formMutationKeyFn('sign-transaction-block'),\n\tsignAndExecuteTransactionBlock: formMutationKeyFn('sign-and-execute-transaction-block'),\n\tswitchAccount: formMutationKeyFn('switch-account'),\n};\n\nfunction formMutationKeyFn(baseEntity: string) {\n\treturn function mutationKeyFn(additionalKeys: MutationKey = []) {\n\t\treturn [{ ...walletMutationKeys.all, baseEntity }, ...additionalKeys];\n\t};\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * An error that is instantiated when someone attempts to perform an action that requires an active wallet connection.\n */\nexport class WalletNotConnectedError extends Error {}\n\n/**\n * An error that is instantiated when someone attempts to perform an action that requires a selected wallet account.\n * This is more of an edge case stemming from the fact that wallets don't technically require you to authorize any\n * accounts when connecting a wallet.\n */\nexport class WalletNoAccountSelectedError extends Error {}\n\n/**\n * An error that is instantiated when someone attempts to perform an action that isn't supported by a wallet.\n */\nexport class WalletFeatureNotSupportedError extends Error {}\n\n/**\n * An error that is instantiated when a wallet account can't be found for a specific wallet.\n */\nexport class WalletAccountNotFoundError extends Error {}\n", "// Copyright (c) Mysten Labs, Inc.\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\tconst store = useContext(WalletContext);\n\tif (!store) {\n\t\tthrow new Error(\n\t\t\t'Could not find WalletContext. Ensure that you have set up the WalletProvider.',\n\t\t);\n\t}\n\treturn useStore(store, selector);\n}\n", "// Copyright (c) Mysten Labs, Inc.\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// 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\tconst currentWallet = useWalletStore((state) => state.currentWallet);\n\tconst connectionStatus = useWalletStore((state) => state.connectionStatus);\n\n\tswitch (connectionStatus) {\n\t\tcase 'connecting':\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: null,\n\t\t\t\tisDisconnected: false,\n\t\t\t\tisConnecting: true,\n\t\t\t\tisConnected: false,\n\t\t\t} as const;\n\t\tcase 'disconnected':\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: null,\n\t\t\t\tisDisconnected: true,\n\t\t\t\tisConnecting: false,\n\t\t\t\tisConnected: false,\n\t\t\t} as const;\n\t\tcase 'connected': {\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: currentWallet!,\n\t\t\t\tisDisconnected: false,\n\t\t\t\tisConnecting: false,\n\t\t\t\tisConnected: true,\n\t\t\t} as const;\n\t\t}\n\t}\n}\n"],
5
- "mappings": ";AAKA,SAAS,mBAAmB;;;ACArB,IAAM,qBAAqB;AAAA,EACjC,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;AAClD;AAEA,SAAS,kBAAkB,YAAoB;AAC9C,SAAO,SAAS,cAAc,iBAA8B,CAAC,GAAG;AAC/D,WAAO,CAAC,EAAE,GAAG,mBAAmB,KAAK,WAAW,GAAG,GAAG,cAAc;AAAA,EACrE;AACD;;;ACdO,IAAM,0BAAN,cAAsC,MAAM;AAAC;AAiB7C,IAAM,6BAAN,cAAyC,MAAM;AAAC;;;ACpBvD,SAAS,kBAAkB;AAC3B,SAAS,gBAAgB;;;ACDzB,SAAS,qBAAqB;AAIvB,IAAM,gBAAgB,cAAkC,IAAI;;;ADE5D,SAAS,eAAkB,UAAuC;AACxE,QAAM,QAAQ,WAAW,aAAa;AACtC,MAAI,CAAC,OAAO;AACX,UAAM,IAAI;AAAA,MACT;AAAA,IACD;AAAA,EACD;AACA,SAAO,SAAS,OAAO,QAAQ;AAChC;;;AETO,SAAS,mBAAmB;AAClC,QAAM,gBAAgB,eAAe,CAAC,UAAU,MAAM,aAAa;AACnE,QAAM,mBAAmB,eAAe,CAAC,UAAU,MAAM,gBAAgB;AAEzE,UAAQ,kBAAkB;AAAA,IACzB,KAAK;AACJ,aAAO;AAAA,QACN;AAAA,QACA,eAAe;AAAA,QACf,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,aAAa;AAAA,MACd;AAAA,IACD,KAAK;AACJ,aAAO;AAAA,QACN;AAAA,QACA,eAAe;AAAA,QACf,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,aAAa;AAAA,MACd;AAAA,IACD,KAAK,aAAa;AACjB,aAAO;AAAA,QACN;AAAA,QACA;AAAA,QACA,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,aAAa;AAAA,MACd;AAAA,IACD;AAAA,EACD;AACD;;;ALXO,SAAS,iBAAiB;AAAA,EAChC;AAAA,EACA,GAAG;AACJ,IAAqC,CAAC,GAIpC;AACD,QAAM,EAAE,cAAc,IAAI,iBAAiB;AAC3C,QAAM,qBAAqB,eAAe,CAAC,UAAU,MAAM,kBAAkB;AAE7E,SAAO,YAAY;AAAA,IAClB,aAAa,mBAAmB,cAAc,WAAW;AAAA,IACzD,YAAY,OAAO,EAAE,QAAQ,MAAM;AAClC,UAAI,CAAC,eAAe;AACnB,cAAM,IAAI,wBAAwB,yBAAyB;AAAA,MAC5D;AAEA,YAAM,kBAAkB,cAAc,SAAS;AAAA,QAC9C,CAAC,kBAAkB,cAAc,YAAY,QAAQ;AAAA,MACtD;AACA,UAAI,CAAC,iBAAiB;AACrB,cAAM,IAAI;AAAA,UACT,2BAA2B,QAAQ,2BAA2B,cAAc;AAAA,QAC7E;AAAA,MACD;AAEA,yBAAmB,eAAe;AAAA,IACnC;AAAA,IACA,GAAG;AAAA,EACJ,CAAC;AACF;",
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletAccount } from '@mysten/wallet-standard';\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport { WalletAccountNotFoundError, WalletNotConnectedError } from '../../errors/walletErrors.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\nimport { useWalletStore } from './useWalletStore.js';\n\ntype SwitchAccountArgs = {\n\taccount: WalletAccount;\n};\n\ntype SwitchAccountResult = void;\n\ntype UseSwitchAccountError = WalletNotConnectedError | WalletAccountNotFoundError | Error;\n\ntype UseSwitchAccountMutationOptions = Omit<\n\tUseMutationOptions<SwitchAccountResult, UseSwitchAccountError, SwitchAccountArgs, unknown>,\n\t'mutationFn'\n>;\n\n/**\n * Mutation hook for switching to a specific wallet account.\n */\nexport function useSwitchAccount({\n\tmutationKey,\n\t...mutationOptions\n}: UseSwitchAccountMutationOptions = {}): UseMutationResult<\n\tSwitchAccountResult,\n\tUseSwitchAccountError,\n\tSwitchAccountArgs\n> {\n\tconst { currentWallet } = useCurrentWallet();\n\tconst setAccountSwitched = useWalletStore((state) => state.setAccountSwitched);\n\n\treturn useMutation({\n\t\tmutationKey: walletMutationKeys.switchAccount(mutationKey),\n\t\tmutationFn: async ({ account }) => {\n\t\t\tif (!currentWallet) {\n\t\t\t\tthrow new WalletNotConnectedError('No wallet is connected.');\n\t\t\t}\n\n\t\t\tconst accountToSelect = currentWallet.accounts.find(\n\t\t\t\t(walletAccount) => walletAccount.address === account.address,\n\t\t\t);\n\t\t\tif (!accountToSelect) {\n\t\t\t\tthrow new WalletAccountNotFoundError(\n\t\t\t\t\t`No account with address ${account.address} is connected to ${currentWallet.name}.`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tsetAccountSwitched(accountToSelect);\n\t\t},\n\t\t...mutationOptions,\n\t});\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { MutationKey } from '@tanstack/react-query';\n\nexport const walletMutationKeys = {\n\tall: { baseScope: 'wallet' },\n\tconnectWallet: formMutationKeyFn('connect-wallet'),\n\tautoconnectWallet: formMutationKeyFn('autoconnect-wallet'),\n\tdisconnectWallet: formMutationKeyFn('disconnect-wallet'),\n\tsignPersonalMessage: formMutationKeyFn('sign-personal-message'),\n\tsignTransaction: formMutationKeyFn('sign-transaction'),\n\tsignAndExecuteTransaction: formMutationKeyFn('sign-and-execute-transaction'),\n\tswitchAccount: formMutationKeyFn('switch-account'),\n\treportTransactionEffects: formMutationKeyFn('report-transaction-effects'),\n};\n\nfunction formMutationKeyFn(baseEntity: string) {\n\treturn function mutationKeyFn(additionalKeys: MutationKey = []) {\n\t\treturn [{ ...walletMutationKeys.all, baseEntity }, ...additionalKeys];\n\t};\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * An error that is instantiated when someone attempts to perform an action that requires an active wallet connection.\n */\nexport class WalletNotConnectedError extends Error {}\n\n/**\n * An error that is instantiated when someone attempts to perform an action that requires a selected wallet account.\n * This is more of an edge case stemming from the fact that wallets don't technically require you to authorize any\n * accounts when connecting a wallet.\n */\nexport class WalletNoAccountSelectedError extends Error {}\n\n/**\n * An error that is instantiated when someone attempts to perform an action that isn't supported by a wallet.\n */\nexport class WalletFeatureNotSupportedError extends Error {}\n\n/**\n * An error that is instantiated when a wallet account can't be found for a specific wallet.\n */\nexport class WalletAccountNotFoundError extends Error {}\n", "// Copyright (c) Mysten Labs, Inc.\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\tconst store = useContext(WalletContext);\n\tif (!store) {\n\t\tthrow new Error(\n\t\t\t'Could not find WalletContext. Ensure that you have set up the WalletProvider.',\n\t\t);\n\t}\n\treturn useStore(store, selector);\n}\n", "// Copyright (c) Mysten Labs, Inc.\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// 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\tconst currentWallet = useWalletStore((state) => state.currentWallet);\n\tconst connectionStatus = useWalletStore((state) => state.connectionStatus);\n\tconst supportedIntents = useWalletStore((state) => state.supportedIntents);\n\n\tswitch (connectionStatus) {\n\t\tcase 'connecting':\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: null,\n\t\t\t\tisDisconnected: false,\n\t\t\t\tisConnecting: true,\n\t\t\t\tisConnected: false,\n\t\t\t\tsupportedIntents: [],\n\t\t\t} as const;\n\t\tcase 'disconnected':\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: null,\n\t\t\t\tisDisconnected: true,\n\t\t\t\tisConnecting: false,\n\t\t\t\tisConnected: false,\n\t\t\t\tsupportedIntents: [],\n\t\t\t} as const;\n\t\tcase 'connected': {\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: currentWallet!,\n\t\t\t\tisDisconnected: false,\n\t\t\t\tisConnecting: false,\n\t\t\t\tisConnected: true,\n\t\t\t\tsupportedIntents,\n\t\t\t} as const;\n\t\t}\n\t}\n}\n"],
5
+ "mappings": ";AAKA,SAAS,mBAAmB;;;ACArB,IAAM,qBAAqB;AAAA,EACjC,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;AACzE;AAEA,SAAS,kBAAkB,YAAoB;AAC9C,SAAO,SAAS,cAAc,iBAA8B,CAAC,GAAG;AAC/D,WAAO,CAAC,EAAE,GAAG,mBAAmB,KAAK,WAAW,GAAG,GAAG,cAAc;AAAA,EACrE;AACD;;;ACfO,IAAM,0BAAN,cAAsC,MAAM;AAAC;AAiB7C,IAAM,6BAAN,cAAyC,MAAM;AAAC;;;ACpBvD,SAAS,kBAAkB;AAC3B,SAAS,gBAAgB;;;ACDzB,SAAS,qBAAqB;AAIvB,IAAM,gBAAgB,cAAkC,IAAI;;;ADE5D,SAAS,eAAkB,UAAuC;AACxE,QAAM,QAAQ,WAAW,aAAa;AACtC,MAAI,CAAC,OAAO;AACX,UAAM,IAAI;AAAA,MACT;AAAA,IACD;AAAA,EACD;AACA,SAAO,SAAS,OAAO,QAAQ;AAChC;;;AETO,SAAS,mBAAmB;AAClC,QAAM,gBAAgB,eAAe,CAAC,UAAU,MAAM,aAAa;AACnE,QAAM,mBAAmB,eAAe,CAAC,UAAU,MAAM,gBAAgB;AACzE,QAAM,mBAAmB,eAAe,CAAC,UAAU,MAAM,gBAAgB;AAEzE,UAAQ,kBAAkB;AAAA,IACzB,KAAK;AACJ,aAAO;AAAA,QACN;AAAA,QACA,eAAe;AAAA,QACf,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,aAAa;AAAA,QACb,kBAAkB,CAAC;AAAA,MACpB;AAAA,IACD,KAAK;AACJ,aAAO;AAAA,QACN;AAAA,QACA,eAAe;AAAA,QACf,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,aAAa;AAAA,QACb,kBAAkB,CAAC;AAAA,MACpB;AAAA,IACD,KAAK,aAAa;AACjB,aAAO;AAAA,QACN;AAAA,QACA;AAAA,QACA,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,aAAa;AAAA,QACb;AAAA,MACD;AAAA,IACD;AAAA,EACD;AACD;;;ALfO,SAAS,iBAAiB;AAAA,EAChC;AAAA,EACA,GAAG;AACJ,IAAqC,CAAC,GAIpC;AACD,QAAM,EAAE,cAAc,IAAI,iBAAiB;AAC3C,QAAM,qBAAqB,eAAe,CAAC,UAAU,MAAM,kBAAkB;AAE7E,SAAO,YAAY;AAAA,IAClB,aAAa,mBAAmB,cAAc,WAAW;AAAA,IACzD,YAAY,OAAO,EAAE,QAAQ,MAAM;AAClC,UAAI,CAAC,eAAe;AACnB,cAAM,IAAI,wBAAwB,yBAAyB;AAAA,MAC5D;AAEA,YAAM,kBAAkB,cAAc,SAAS;AAAA,QAC9C,CAAC,kBAAkB,cAAc,YAAY,QAAQ;AAAA,MACtD;AACA,UAAI,CAAC,iBAAiB;AACrB,cAAM,IAAI;AAAA,UACT,2BAA2B,QAAQ,2BAA2B,cAAc;AAAA,QAC7E;AAAA,MACD;AAEA,yBAAmB,eAAe;AAAA,IACnC;AAAA,IACA,GAAG;AAAA,EACJ,CAAC;AACF;",
6
6
  "names": []
7
7
  }