@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/useDisconnectWallet.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 { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport { WalletNotConnectedError } from '../../errors/walletErrors.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\nimport { useWalletStore } from './useWalletStore.js';\n\ntype UseDisconnectWalletError = WalletNotConnectedError | Error;\n\ntype UseDisconnectWalletMutationOptions = Omit<\n\tUseMutationOptions<void, UseDisconnectWalletError, void, unknown>,\n\t'mutationFn'\n>;\n\n/**\n * Mutation hook for disconnecting from an active wallet connection, if currently connected.\n */\nexport function useDisconnectWallet({\n\tmutationKey,\n\t...mutationOptions\n}: UseDisconnectWalletMutationOptions = {}): UseMutationResult<\n\tvoid,\n\tUseDisconnectWalletError,\n\tvoid\n> {\n\tconst { currentWallet } = useCurrentWallet();\n\tconst setWalletDisconnected = useWalletStore((state) => state.setWalletDisconnected);\n\n\treturn useMutation({\n\t\tmutationKey: walletMutationKeys.disconnectWallet(mutationKey),\n\t\tmutationFn: async () => {\n\t\t\tif (!currentWallet) {\n\t\t\t\tthrow new WalletNotConnectedError('No wallet is connected.');\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\t// Wallets aren't required to implement the disconnect feature, so we'll\n\t\t\t\t// optionally call the disconnect feature if it exists and reset the UI\n\t\t\t\t// state on the frontend at a minimum.\n\t\t\t\tawait currentWallet.features['standard:disconnect']?.disconnect();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Failed to disconnect the application from the current wallet.', error);\n\t\t\t}\n\n\t\t\tsetWalletDisconnected();\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": ";AAIA,SAAS,mBAAmB;;;ACCrB,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;;;ACHpD,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;;;ALlBO,SAAS,oBAAoB;AAAA,EACnC;AAAA,EACA,GAAG;AACJ,IAAwC,CAAC,GAIvC;AACD,QAAM,EAAE,cAAc,IAAI,iBAAiB;AAC3C,QAAM,wBAAwB,eAAe,CAAC,UAAU,MAAM,qBAAqB;AAEnF,SAAO,YAAY;AAAA,IAClB,aAAa,mBAAmB,iBAAiB,WAAW;AAAA,IAC5D,YAAY,YAAY;AACvB,UAAI,CAAC,eAAe;AACnB,cAAM,IAAI,wBAAwB,yBAAyB;AAAA,MAC5D;AAEA,UAAI;AAIH,cAAM,cAAc,SAAS,qBAAqB,GAAG,WAAW;AAAA,MACjE,SAAS,OAAP;AACD,gBAAQ,MAAM,iEAAiE,KAAK;AAAA,MACrF;AAEA,4BAAsB;AAAA,IACvB;AAAA,IACA,GAAG;AAAA,EACJ,CAAC;AACF;",
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport { WalletNotConnectedError } from '../../errors/walletErrors.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\nimport { useWalletStore } from './useWalletStore.js';\n\ntype UseDisconnectWalletError = WalletNotConnectedError | Error;\n\ntype UseDisconnectWalletMutationOptions = Omit<\n\tUseMutationOptions<void, UseDisconnectWalletError, void, unknown>,\n\t'mutationFn'\n>;\n\n/**\n * Mutation hook for disconnecting from an active wallet connection, if currently connected.\n */\nexport function useDisconnectWallet({\n\tmutationKey,\n\t...mutationOptions\n}: UseDisconnectWalletMutationOptions = {}): UseMutationResult<\n\tvoid,\n\tUseDisconnectWalletError,\n\tvoid\n> {\n\tconst { currentWallet } = useCurrentWallet();\n\tconst setWalletDisconnected = useWalletStore((state) => state.setWalletDisconnected);\n\n\treturn useMutation({\n\t\tmutationKey: walletMutationKeys.disconnectWallet(mutationKey),\n\t\tmutationFn: async () => {\n\t\t\tif (!currentWallet) {\n\t\t\t\tthrow new WalletNotConnectedError('No wallet is connected.');\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\t// Wallets aren't required to implement the disconnect feature, so we'll\n\t\t\t\t// optionally call the disconnect feature if it exists and reset the UI\n\t\t\t\t// state on the frontend at a minimum.\n\t\t\t\tawait currentWallet.features['standard:disconnect']?.disconnect();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Failed to disconnect the application from the current wallet.', error);\n\t\t\t}\n\n\t\t\tsetWalletDisconnected();\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": ";AAIA,SAAS,mBAAmB;;;ACCrB,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;;;ACHpD,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;;;ALtBO,SAAS,oBAAoB;AAAA,EACnC;AAAA,EACA,GAAG;AACJ,IAAwC,CAAC,GAIvC;AACD,QAAM,EAAE,cAAc,IAAI,iBAAiB;AAC3C,QAAM,wBAAwB,eAAe,CAAC,UAAU,MAAM,qBAAqB;AAEnF,SAAO,YAAY;AAAA,IAClB,aAAa,mBAAmB,iBAAiB,WAAW;AAAA,IAC5D,YAAY,YAAY;AACvB,UAAI,CAAC,eAAe;AACnB,cAAM,IAAI,wBAAwB,yBAAyB;AAAA,MAC5D;AAEA,UAAI;AAIH,cAAM,cAAc,SAAS,qBAAqB,GAAG,WAAW;AAAA,MACjE,SAAS,OAAP;AACD,gBAAQ,MAAM,iEAAiE,KAAK;AAAA,MACrF;AAEA,4BAAsB;AAAA,IACvB;AAAA,IACA,GAAG;AAAA,EACJ,CAAC;AACF;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,15 @@
1
+ import type { SuiReportTransactionEffectsInput } from '@mysten/wallet-standard';
2
+ import type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';
3
+ import type { WalletFeatureNotSupportedError } from '../../errors/walletErrors.js';
4
+ import { WalletNoAccountSelectedError, WalletNotConnectedError } from '../../errors/walletErrors.js';
5
+ import type { PartialBy } from '../../types/utilityTypes.js';
6
+ type UseReportTransactionEffectsArgs = Omit<PartialBy<SuiReportTransactionEffectsInput, 'account' | 'chain'>, 'effects'> & {
7
+ effects: string | number[];
8
+ };
9
+ type UseReportTransactionEffectsError = WalletFeatureNotSupportedError | WalletNoAccountSelectedError | WalletNotConnectedError | Error;
10
+ type UseReportTransactionEffectsMutationOptions = Omit<UseMutationOptions<void, UseReportTransactionEffectsError, UseReportTransactionEffectsArgs, unknown>, 'mutationFn'>;
11
+ /**
12
+ * Mutation hook for prompting the user to sign a message.
13
+ */
14
+ export declare function useReportTransactionEffects({ mutationKey, ...mutationOptions }?: UseReportTransactionEffectsMutationOptions): UseMutationResult<void, UseReportTransactionEffectsError, UseReportTransactionEffectsArgs>;
15
+ export {};
@@ -1,14 +1,7 @@
1
- // src/hooks/wallet/useSignTransactionBlock.ts
1
+ // src/hooks/wallet/useReportTransactionEffects.ts
2
+ import { toB64 } from "@mysten/sui/utils";
2
3
  import { useMutation } from "@tanstack/react-query";
3
4
 
4
- // src/errors/walletErrors.ts
5
- var WalletNotConnectedError = class extends Error {
6
- };
7
- var WalletNoAccountSelectedError = class extends Error {
8
- };
9
- var WalletFeatureNotSupportedError = class extends Error {
10
- };
11
-
12
5
  // src/constants/walletMutationKeys.ts
13
6
  var walletMutationKeys = {
14
7
  all: { baseScope: "wallet" },
@@ -16,9 +9,10 @@ var walletMutationKeys = {
16
9
  autoconnectWallet: formMutationKeyFn("autoconnect-wallet"),
17
10
  disconnectWallet: formMutationKeyFn("disconnect-wallet"),
18
11
  signPersonalMessage: formMutationKeyFn("sign-personal-message"),
19
- signTransactionBlock: formMutationKeyFn("sign-transaction-block"),
20
- signAndExecuteTransactionBlock: formMutationKeyFn("sign-and-execute-transaction-block"),
21
- 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")
22
16
  };
23
17
  function formMutationKeyFn(baseEntity) {
24
18
  return function mutationKeyFn(additionalKeys = []) {
@@ -26,6 +20,12 @@ function formMutationKeyFn(baseEntity) {
26
20
  };
27
21
  }
28
22
 
23
+ // src/errors/walletErrors.ts
24
+ var WalletNotConnectedError = class extends Error {
25
+ };
26
+ var WalletNoAccountSelectedError = class extends Error {
27
+ };
28
+
29
29
  // src/hooks/wallet/useWalletStore.ts
30
30
  import { useContext } from "react";
31
31
  import { useStore } from "zustand";
@@ -54,6 +54,7 @@ function useCurrentAccount() {
54
54
  function useCurrentWallet() {
55
55
  const currentWallet = useWalletStore((state) => state.currentWallet);
56
56
  const connectionStatus = useWalletStore((state) => state.connectionStatus);
57
+ const supportedIntents = useWalletStore((state) => state.supportedIntents);
57
58
  switch (connectionStatus) {
58
59
  case "connecting":
59
60
  return {
@@ -61,7 +62,8 @@ function useCurrentWallet() {
61
62
  currentWallet: null,
62
63
  isDisconnected: false,
63
64
  isConnecting: true,
64
- isConnected: false
65
+ isConnected: false,
66
+ supportedIntents: []
65
67
  };
66
68
  case "disconnected":
67
69
  return {
@@ -69,7 +71,8 @@ function useCurrentWallet() {
69
71
  currentWallet: null,
70
72
  isDisconnected: true,
71
73
  isConnecting: false,
72
- isConnected: false
74
+ isConnected: false,
75
+ supportedIntents: []
73
76
  };
74
77
  case "connected": {
75
78
  return {
@@ -77,47 +80,44 @@ function useCurrentWallet() {
77
80
  currentWallet,
78
81
  isDisconnected: false,
79
82
  isConnecting: false,
80
- isConnected: true
83
+ isConnected: true,
84
+ supportedIntents
81
85
  };
82
86
  }
83
87
  }
84
88
  }
85
89
 
86
- // src/hooks/wallet/useSignTransactionBlock.ts
87
- function useSignTransactionBlock({
90
+ // src/hooks/wallet/useReportTransactionEffects.ts
91
+ function useReportTransactionEffects({
88
92
  mutationKey,
89
93
  ...mutationOptions
90
94
  } = {}) {
91
95
  const { currentWallet } = useCurrentWallet();
92
96
  const currentAccount = useCurrentAccount();
93
97
  return useMutation({
94
- mutationKey: walletMutationKeys.signTransactionBlock(mutationKey),
95
- mutationFn: async (signTransactionBlockArgs) => {
98
+ mutationKey: walletMutationKeys.reportTransactionEffects(mutationKey),
99
+ mutationFn: async ({ effects, chain = currentWallet?.chains[0], account = currentAccount }) => {
96
100
  if (!currentWallet) {
97
101
  throw new WalletNotConnectedError("No wallet is connected.");
98
102
  }
99
- const signerAccount = signTransactionBlockArgs.account ?? currentAccount;
100
- if (!signerAccount) {
103
+ if (!account) {
101
104
  throw new WalletNoAccountSelectedError(
102
- "No wallet account is selected to sign the transaction block with."
105
+ "No wallet account is selected to report transaction effects for"
103
106
  );
104
107
  }
105
- const walletFeature = currentWallet.features["sui:signTransactionBlock"];
106
- if (!walletFeature) {
107
- throw new WalletFeatureNotSupportedError(
108
- "This wallet doesn't support the `SignTransactionBlock` feature."
109
- );
108
+ const reportTransactionEffectsFeature = currentWallet.features["sui:reportTransactionEffects"];
109
+ if (reportTransactionEffectsFeature) {
110
+ return await reportTransactionEffectsFeature.reportTransactionEffects({
111
+ effects: Array.isArray(effects) ? toB64(new Uint8Array(effects)) : effects,
112
+ account,
113
+ chain: chain ?? currentWallet?.chains[0]
114
+ });
110
115
  }
111
- return await walletFeature.signTransactionBlock({
112
- ...signTransactionBlockArgs,
113
- account: signerAccount,
114
- chain: signTransactionBlockArgs.chain ?? signerAccount.chains[0]
115
- });
116
116
  },
117
117
  ...mutationOptions
118
118
  });
119
119
  }
120
120
  export {
121
- useSignTransactionBlock
121
+ useReportTransactionEffects
122
122
  };
123
- //# sourceMappingURL=useSignTransactionBlock.js.map
123
+ //# sourceMappingURL=useReportTransactionEffects.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/hooks/wallet/useReportTransactionEffects.ts", "../../../../src/constants/walletMutationKeys.ts", "../../../../src/errors/walletErrors.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 { 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", "// 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 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
+ "names": []
7
+ }
@@ -0,0 +1,29 @@
1
+ import type { Transaction } from '@mysten/sui/transactions';
2
+ import type { SuiSignAndExecuteTransactionInput, SuiSignAndExecuteTransactionOutput } 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 UseSignAndExecuteTransactionArgs = PartialBy<Omit<SuiSignAndExecuteTransactionInput, 'transaction'>, 'account' | 'chain'> & {
7
+ transaction: Transaction | string;
8
+ };
9
+ type UseSignAndExecuteTransactionResult = SuiSignAndExecuteTransactionOutput;
10
+ type UseSignAndExecuteTransactionError = WalletFeatureNotSupportedError | WalletNoAccountSelectedError | WalletNotConnectedError | Error;
11
+ type ExecuteTransactionResult = {
12
+ digest: string;
13
+ rawEffects?: number[];
14
+ } | {
15
+ effects?: {
16
+ bcs?: string;
17
+ };
18
+ };
19
+ type UseSignAndExecuteTransactionMutationOptions<Result extends ExecuteTransactionResult> = Omit<UseMutationOptions<Result, UseSignAndExecuteTransactionError, UseSignAndExecuteTransactionArgs, unknown>, 'mutationFn'> & {
20
+ execute?: ({ bytes, signature }: {
21
+ bytes: string;
22
+ signature: string;
23
+ }) => Promise<Result>;
24
+ };
25
+ /**
26
+ * Mutation hook for prompting the user to sign and execute a transaction.
27
+ */
28
+ export declare function useSignAndExecuteTransaction<Result extends ExecuteTransactionResult = UseSignAndExecuteTransactionResult>({ mutationKey, execute, ...mutationOptions }?: UseSignAndExecuteTransactionMutationOptions<Result>): UseMutationResult<Result, UseSignAndExecuteTransactionError, UseSignAndExecuteTransactionArgs>;
29
+ export {};
@@ -0,0 +1,227 @@
1
+ // src/hooks/wallet/useSignAndExecuteTransaction.ts
2
+ import { toB64 as toB642 } from "@mysten/sui/utils";
3
+ import { signTransaction } from "@mysten/wallet-standard";
4
+ import { useMutation as useMutation2 } from "@tanstack/react-query";
5
+
6
+ // src/constants/walletMutationKeys.ts
7
+ var walletMutationKeys = {
8
+ all: { baseScope: "wallet" },
9
+ connectWallet: formMutationKeyFn("connect-wallet"),
10
+ autoconnectWallet: formMutationKeyFn("autoconnect-wallet"),
11
+ disconnectWallet: formMutationKeyFn("disconnect-wallet"),
12
+ signPersonalMessage: formMutationKeyFn("sign-personal-message"),
13
+ signTransaction: formMutationKeyFn("sign-transaction"),
14
+ signAndExecuteTransaction: formMutationKeyFn("sign-and-execute-transaction"),
15
+ switchAccount: formMutationKeyFn("switch-account"),
16
+ reportTransactionEffects: formMutationKeyFn("report-transaction-effects")
17
+ };
18
+ function formMutationKeyFn(baseEntity) {
19
+ return function mutationKeyFn(additionalKeys = []) {
20
+ return [{ ...walletMutationKeys.all, baseEntity }, ...additionalKeys];
21
+ };
22
+ }
23
+
24
+ // src/errors/walletErrors.ts
25
+ var WalletNotConnectedError = class extends Error {
26
+ };
27
+ var WalletNoAccountSelectedError = class extends Error {
28
+ };
29
+ var WalletFeatureNotSupportedError = class extends Error {
30
+ };
31
+
32
+ // src/hooks/useSuiClient.ts
33
+ import { useContext } from "react";
34
+
35
+ // src/components/SuiClientProvider.tsx
36
+ import { getFullnodeUrl, isSuiClient, SuiClient } from "@mysten/sui/client";
37
+ import { createContext, useMemo, useState } from "react";
38
+ import { jsx } from "react/jsx-runtime";
39
+ var SuiClientContext = createContext(null);
40
+ var DEFAULT_NETWORKS = {
41
+ localnet: { url: getFullnodeUrl("localnet") }
42
+ };
43
+
44
+ // src/hooks/useSuiClient.ts
45
+ function useSuiClientContext() {
46
+ const suiClient = useContext(SuiClientContext);
47
+ if (!suiClient) {
48
+ throw new Error(
49
+ "Could not find SuiClientContext. Ensure that you have set up the SuiClientProvider"
50
+ );
51
+ }
52
+ return suiClient;
53
+ }
54
+ function useSuiClient() {
55
+ return useSuiClientContext().client;
56
+ }
57
+
58
+ // src/hooks/wallet/useWalletStore.ts
59
+ import { useContext as useContext2 } from "react";
60
+ import { useStore } from "zustand";
61
+
62
+ // src/contexts/walletContext.ts
63
+ import { createContext as createContext2 } from "react";
64
+ var WalletContext = createContext2(null);
65
+
66
+ // src/hooks/wallet/useWalletStore.ts
67
+ function useWalletStore(selector) {
68
+ const store = useContext2(WalletContext);
69
+ if (!store) {
70
+ throw new Error(
71
+ "Could not find WalletContext. Ensure that you have set up the WalletProvider."
72
+ );
73
+ }
74
+ return useStore(store, selector);
75
+ }
76
+
77
+ // src/hooks/wallet/useCurrentAccount.ts
78
+ function useCurrentAccount() {
79
+ return useWalletStore((state) => state.currentAccount);
80
+ }
81
+
82
+ // src/hooks/wallet/useCurrentWallet.ts
83
+ function useCurrentWallet() {
84
+ const currentWallet = useWalletStore((state) => state.currentWallet);
85
+ const connectionStatus = useWalletStore((state) => state.connectionStatus);
86
+ const supportedIntents = useWalletStore((state) => state.supportedIntents);
87
+ switch (connectionStatus) {
88
+ case "connecting":
89
+ return {
90
+ connectionStatus,
91
+ currentWallet: null,
92
+ isDisconnected: false,
93
+ isConnecting: true,
94
+ isConnected: false,
95
+ supportedIntents: []
96
+ };
97
+ case "disconnected":
98
+ return {
99
+ connectionStatus,
100
+ currentWallet: null,
101
+ isDisconnected: true,
102
+ isConnecting: false,
103
+ isConnected: false,
104
+ supportedIntents: []
105
+ };
106
+ case "connected": {
107
+ return {
108
+ connectionStatus,
109
+ currentWallet,
110
+ isDisconnected: false,
111
+ isConnecting: false,
112
+ isConnected: true,
113
+ supportedIntents
114
+ };
115
+ }
116
+ }
117
+ }
118
+
119
+ // src/hooks/wallet/useReportTransactionEffects.ts
120
+ import { toB64 } from "@mysten/sui/utils";
121
+ import { useMutation } from "@tanstack/react-query";
122
+ function useReportTransactionEffects({
123
+ mutationKey,
124
+ ...mutationOptions
125
+ } = {}) {
126
+ const { currentWallet } = useCurrentWallet();
127
+ const currentAccount = useCurrentAccount();
128
+ return useMutation({
129
+ mutationKey: walletMutationKeys.reportTransactionEffects(mutationKey),
130
+ mutationFn: async ({ effects, chain = currentWallet?.chains[0], account = currentAccount }) => {
131
+ if (!currentWallet) {
132
+ throw new WalletNotConnectedError("No wallet is connected.");
133
+ }
134
+ if (!account) {
135
+ throw new WalletNoAccountSelectedError(
136
+ "No wallet account is selected to report transaction effects for"
137
+ );
138
+ }
139
+ const reportTransactionEffectsFeature = currentWallet.features["sui:reportTransactionEffects"];
140
+ if (reportTransactionEffectsFeature) {
141
+ return await reportTransactionEffectsFeature.reportTransactionEffects({
142
+ effects: Array.isArray(effects) ? toB64(new Uint8Array(effects)) : effects,
143
+ account,
144
+ chain: chain ?? currentWallet?.chains[0]
145
+ });
146
+ }
147
+ },
148
+ ...mutationOptions
149
+ });
150
+ }
151
+
152
+ // src/hooks/wallet/useSignAndExecuteTransaction.ts
153
+ function useSignAndExecuteTransaction({
154
+ mutationKey,
155
+ execute,
156
+ ...mutationOptions
157
+ } = {}) {
158
+ const { currentWallet, supportedIntents } = useCurrentWallet();
159
+ const currentAccount = useCurrentAccount();
160
+ const client = useSuiClient();
161
+ const { mutate: reportTransactionEffects } = useReportTransactionEffects();
162
+ const executeTransaction = execute ?? (async ({ bytes, signature }) => {
163
+ const { digest, rawEffects } = await client.executeTransactionBlock({
164
+ transactionBlock: bytes,
165
+ signature,
166
+ options: {
167
+ showRawEffects: true
168
+ }
169
+ });
170
+ return {
171
+ digest,
172
+ rawEffects,
173
+ effects: toB642(new Uint8Array(rawEffects)),
174
+ bytes,
175
+ signature
176
+ };
177
+ });
178
+ return useMutation2({
179
+ mutationKey: walletMutationKeys.signAndExecuteTransaction(mutationKey),
180
+ mutationFn: async ({ transaction, ...signTransactionArgs }) => {
181
+ if (!currentWallet) {
182
+ throw new WalletNotConnectedError("No wallet is connected.");
183
+ }
184
+ const signerAccount = signTransactionArgs.account ?? currentAccount;
185
+ if (!signerAccount) {
186
+ throw new WalletNoAccountSelectedError(
187
+ "No wallet account is selected to sign the transaction with."
188
+ );
189
+ }
190
+ const chain = signTransactionArgs.chain ?? signerAccount?.chains[0];
191
+ if (!currentWallet.features["sui:signTransaction"] && !currentWallet.features["sui:signTransactionBlock"]) {
192
+ throw new WalletFeatureNotSupportedError(
193
+ "This wallet doesn't support the `signTransaction` feature."
194
+ );
195
+ }
196
+ const { signature, bytes } = await signTransaction(currentWallet, {
197
+ ...signTransactionArgs,
198
+ transaction: {
199
+ async toJSON() {
200
+ return typeof transaction === "string" ? transaction : await transaction.toJSON({
201
+ supportedIntents,
202
+ client
203
+ });
204
+ }
205
+ },
206
+ account: signerAccount,
207
+ chain: signTransactionArgs.chain ?? signerAccount.chains[0]
208
+ });
209
+ const result = await executeTransaction({ bytes, signature });
210
+ let effects;
211
+ if ("effects" in result && result.effects?.bcs) {
212
+ effects = result.effects.bcs;
213
+ } else if ("rawEffects" in result) {
214
+ effects = toB642(new Uint8Array(result.rawEffects));
215
+ } else {
216
+ throw new Error("Could not parse effects from transaction result.");
217
+ }
218
+ reportTransactionEffects({ effects, account: signerAccount, chain });
219
+ return result;
220
+ },
221
+ ...mutationOptions
222
+ });
223
+ }
224
+ export {
225
+ useSignAndExecuteTransaction
226
+ };
227
+ //# sourceMappingURL=useSignAndExecuteTransaction.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/hooks/wallet/useSignAndExecuteTransaction.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 { toB64 } from '@mysten/sui/utils';\nimport type {\n\tSuiSignAndExecuteTransactionInput,\n\tSuiSignAndExecuteTransactionOutput,\n} from '@mysten/wallet-standard';\nimport { signTransaction } 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 UseSignAndExecuteTransactionArgs = PartialBy<\n\tOmit<SuiSignAndExecuteTransactionInput, 'transaction'>,\n\t'account' | 'chain'\n> & {\n\ttransaction: Transaction | string;\n};\n\ntype UseSignAndExecuteTransactionResult = SuiSignAndExecuteTransactionOutput;\n\ntype UseSignAndExecuteTransactionError =\n\t| WalletFeatureNotSupportedError\n\t| WalletNoAccountSelectedError\n\t| WalletNotConnectedError\n\t| Error;\n\ntype ExecuteTransactionResult =\n\t| {\n\t\t\tdigest: string;\n\t\t\trawEffects?: number[];\n\t }\n\t| {\n\t\t\teffects?: {\n\t\t\t\tbcs?: string;\n\t\t\t};\n\t };\n\ntype UseSignAndExecuteTransactionMutationOptions<Result extends ExecuteTransactionResult> = Omit<\n\tUseMutationOptions<\n\t\tResult,\n\t\tUseSignAndExecuteTransactionError,\n\t\tUseSignAndExecuteTransactionArgs,\n\t\tunknown\n\t>,\n\t'mutationFn'\n> & {\n\texecute?: ({ bytes, signature }: { bytes: string; signature: string }) => Promise<Result>;\n};\n\n/**\n * Mutation hook for prompting the user to sign and execute a transaction.\n */\nexport function useSignAndExecuteTransaction<\n\tResult extends ExecuteTransactionResult = UseSignAndExecuteTransactionResult,\n>({\n\tmutationKey,\n\texecute,\n\t...mutationOptions\n}: UseSignAndExecuteTransactionMutationOptions<Result> = {}): UseMutationResult<\n\tResult,\n\tUseSignAndExecuteTransactionError,\n\tUseSignAndExecuteTransactionArgs\n> {\n\tconst { currentWallet, supportedIntents } = useCurrentWallet();\n\tconst currentAccount = useCurrentAccount();\n\tconst client = useSuiClient();\n\tconst { mutate: reportTransactionEffects } = useReportTransactionEffects();\n\n\tconst executeTransaction: ({\n\t\tbytes,\n\t\tsignature,\n\t}: {\n\t\tbytes: string;\n\t\tsignature: string;\n\t}) => Promise<ExecuteTransactionResult> =\n\t\texecute ??\n\t\t(async ({ bytes, signature }) => {\n\t\t\tconst { digest, rawEffects } = await client.executeTransactionBlock({\n\t\t\t\ttransactionBlock: bytes,\n\t\t\t\tsignature,\n\t\t\t\toptions: {\n\t\t\t\t\tshowRawEffects: true,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tdigest,\n\t\t\t\trawEffects,\n\t\t\t\teffects: toB64(new Uint8Array(rawEffects!)),\n\t\t\t\tbytes,\n\t\t\t\tsignature,\n\t\t\t};\n\t\t});\n\n\treturn useMutation({\n\t\tmutationKey: walletMutationKeys.signAndExecuteTransaction(mutationKey),\n\t\tmutationFn: async ({ transaction, ...signTransactionArgs }): Promise<Result> => {\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\t\t\tconst chain = signTransactionArgs.chain ?? signerAccount?.chains[0];\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 { signature, bytes } = await signTransaction(currentWallet, {\n\t\t\t\t...signTransactionArgs,\n\t\t\t\ttransaction: {\n\t\t\t\t\tasync toJSON() {\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\tconst result = await executeTransaction({ bytes, signature });\n\n\t\t\tlet effects: string;\n\n\t\t\tif ('effects' in result && result.effects?.bcs) {\n\t\t\t\teffects = result.effects.bcs;\n\t\t\t} else if ('rawEffects' in result) {\n\t\t\t\teffects = toB64(new Uint8Array(result.rawEffects!));\n\t\t\t} else {\n\t\t\t\tthrow new Error('Could not parse effects from transaction result.');\n\t\t\t}\n\n\t\t\treportTransactionEffects({ effects, account: signerAccount, chain });\n\n\t\t\treturn result as Result;\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": ["toB64", "useMutation", "useContext", "createContext", "useContext", "toB64", "useMutation"]
7
+ }
@@ -16,9 +16,10 @@ var walletMutationKeys = {
16
16
  autoconnectWallet: formMutationKeyFn("autoconnect-wallet"),
17
17
  disconnectWallet: formMutationKeyFn("disconnect-wallet"),
18
18
  signPersonalMessage: formMutationKeyFn("sign-personal-message"),
19
- signTransactionBlock: formMutationKeyFn("sign-transaction-block"),
20
- signAndExecuteTransactionBlock: formMutationKeyFn("sign-and-execute-transaction-block"),
21
- switchAccount: formMutationKeyFn("switch-account")
19
+ signTransaction: formMutationKeyFn("sign-transaction"),
20
+ signAndExecuteTransaction: formMutationKeyFn("sign-and-execute-transaction"),
21
+ switchAccount: formMutationKeyFn("switch-account"),
22
+ reportTransactionEffects: formMutationKeyFn("report-transaction-effects")
22
23
  };
23
24
  function formMutationKeyFn(baseEntity) {
24
25
  return function mutationKeyFn(additionalKeys = []) {
@@ -54,6 +55,7 @@ function useCurrentAccount() {
54
55
  function useCurrentWallet() {
55
56
  const currentWallet = useWalletStore((state) => state.currentWallet);
56
57
  const connectionStatus = useWalletStore((state) => state.connectionStatus);
58
+ const supportedIntents = useWalletStore((state) => state.supportedIntents);
57
59
  switch (connectionStatus) {
58
60
  case "connecting":
59
61
  return {
@@ -61,7 +63,8 @@ function useCurrentWallet() {
61
63
  currentWallet: null,
62
64
  isDisconnected: false,
63
65
  isConnecting: true,
64
- isConnected: false
66
+ isConnected: false,
67
+ supportedIntents: []
65
68
  };
66
69
  case "disconnected":
67
70
  return {
@@ -69,7 +72,8 @@ function useCurrentWallet() {
69
72
  currentWallet: null,
70
73
  isDisconnected: true,
71
74
  isConnecting: false,
72
- isConnected: false
75
+ isConnected: false,
76
+ supportedIntents: []
73
77
  };
74
78
  case "connected": {
75
79
  return {
@@ -77,7 +81,8 @@ function useCurrentWallet() {
77
81
  currentWallet,
78
82
  isDisconnected: false,
79
83
  isConnecting: false,
80
- isConnected: true
84
+ isConnected: true,
85
+ supportedIntents
81
86
  };
82
87
  }
83
88
  }