@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
package/dist/esm/index.js CHANGED
@@ -69,9 +69,10 @@ var walletMutationKeys = {
69
69
  autoconnectWallet: formMutationKeyFn("autoconnect-wallet"),
70
70
  disconnectWallet: formMutationKeyFn("disconnect-wallet"),
71
71
  signPersonalMessage: formMutationKeyFn("sign-personal-message"),
72
- signTransactionBlock: formMutationKeyFn("sign-transaction-block"),
73
- signAndExecuteTransactionBlock: formMutationKeyFn("sign-and-execute-transaction-block"),
74
- switchAccount: formMutationKeyFn("switch-account")
72
+ signTransaction: formMutationKeyFn("sign-transaction"),
73
+ signAndExecuteTransaction: formMutationKeyFn("sign-and-execute-transaction"),
74
+ switchAccount: formMutationKeyFn("switch-account"),
75
+ reportTransactionEffects: formMutationKeyFn("report-transaction-effects")
75
76
  };
76
77
  function formMutationKeyFn(baseEntity) {
77
78
  return function mutationKeyFn(additionalKeys = []) {
@@ -115,7 +116,12 @@ function useConnectWallet({
115
116
  (account) => account.chains.some((chain) => chain.split(":")[0] === "sui")
116
117
  );
117
118
  const selectedAccount = getSelectedAccount(connectedSuiAccounts, accountAddress);
118
- setWalletConnected(wallet, connectedSuiAccounts, selectedAccount);
119
+ setWalletConnected(
120
+ wallet,
121
+ connectedSuiAccounts,
122
+ selectedAccount,
123
+ connectResult.supportedIntents
124
+ );
119
125
  return { accounts: connectedSuiAccounts };
120
126
  } catch (error) {
121
127
  setConnectionStatus("disconnected");
@@ -138,11 +144,11 @@ function getSelectedAccount(connectedAccounts, accountAddress) {
138
144
 
139
145
  // src/utils/walletUtils.ts
140
146
  import { getWallets, isWalletWithRequiredFeatureSet } from "@mysten/wallet-standard";
141
- function getRegisteredWallets(preferredWallets, requiredFeatures) {
147
+ function getRegisteredWallets(preferredWallets, walletFilter) {
142
148
  const walletsApi = getWallets();
143
149
  const wallets = walletsApi.get();
144
150
  const suiWallets = wallets.filter(
145
- (wallet) => isWalletWithRequiredFeatureSet(wallet, requiredFeatures)
151
+ (wallet) => isWalletWithRequiredFeatureSet(wallet) && (!walletFilter || walletFilter(wallet))
146
152
  );
147
153
  return [
148
154
  // Preferred wallets, in order:
@@ -593,7 +599,7 @@ function useCurrentAccount() {
593
599
  }
594
600
 
595
601
  // src/components/AccountDropdownMenu.tsx
596
- import { formatAddress } from "@mysten/sui.js/utils";
602
+ import { formatAddress } from "@mysten/sui/utils";
597
603
  import * as DropdownMenu from "@radix-ui/react-dropdown-menu";
598
604
  import clsx7 from "clsx";
599
605
 
@@ -604,7 +610,7 @@ import { useQuery } from "@tanstack/react-query";
604
610
  import { useContext as useContext2 } from "react";
605
611
 
606
612
  // src/components/SuiClientProvider.tsx
607
- import { getFullnodeUrl, isSuiClient, SuiClient } from "@mysten/sui.js/client";
613
+ import { getFullnodeUrl, isSuiClient, SuiClient } from "@mysten/sui/client";
608
614
  import { createContext as createContext2, useMemo, useState as useState2 } from "react";
609
615
  import { jsx as jsx16 } from "react/jsx-runtime";
610
616
  var SuiClientContext = createContext2(null);
@@ -715,6 +721,7 @@ var WalletAccountNotFoundError = class extends Error {
715
721
  function useCurrentWallet() {
716
722
  const currentWallet = useWalletStore((state) => state.currentWallet);
717
723
  const connectionStatus2 = useWalletStore((state) => state.connectionStatus);
724
+ const supportedIntents = useWalletStore((state) => state.supportedIntents);
718
725
  switch (connectionStatus2) {
719
726
  case "connecting":
720
727
  return {
@@ -722,7 +729,8 @@ function useCurrentWallet() {
722
729
  currentWallet: null,
723
730
  isDisconnected: false,
724
731
  isConnecting: true,
725
- isConnected: false
732
+ isConnected: false,
733
+ supportedIntents: []
726
734
  };
727
735
  case "disconnected":
728
736
  return {
@@ -730,7 +738,8 @@ function useCurrentWallet() {
730
738
  currentWallet: null,
731
739
  isDisconnected: true,
732
740
  isConnecting: false,
733
- isConnected: false
741
+ isConnected: false,
742
+ supportedIntents: []
734
743
  };
735
744
  case "connected": {
736
745
  return {
@@ -738,7 +747,8 @@ function useCurrentWallet() {
738
747
  currentWallet,
739
748
  isDisconnected: false,
740
749
  isConnecting: false,
741
- isConnected: true
750
+ isConnected: true,
751
+ supportedIntents
742
752
  };
743
753
  }
744
754
  }
@@ -925,9 +935,11 @@ function createInMemoryStore() {
925
935
  var SUI_WALLET_NAME = "Sui Wallet";
926
936
  var DEFAULT_STORAGE = typeof window !== "undefined" && window.localStorage ? localStorage : createInMemoryStore();
927
937
  var DEFAULT_STORAGE_KEY = "sui-dapp-kit:wallet-connection-info";
928
- var DEFAULT_REQUIRED_FEATURES = [
938
+ var SIGN_FEATURES = [
939
+ "sui:signTransaction",
929
940
  "sui:signTransactionBlock"
930
941
  ];
942
+ var DEFAULT_WALLET_FILTER = (wallet) => SIGN_FEATURES.some((feature) => wallet.features[feature]);
931
943
  var DEFAULT_PREFERRED_WALLETS = [SUI_WALLET_NAME, STASHED_WALLET_NAME];
932
944
 
933
945
  // src/hooks/wallet/useAutoConnectWallet.ts
@@ -1033,7 +1045,9 @@ function useStashedWallet(config) {
1033
1045
  }
1034
1046
 
1035
1047
  // src/hooks/wallet/useUnsafeBurnerWallet.ts
1036
- import { Ed25519Keypair } from "@mysten/sui.js/keypairs/ed25519";
1048
+ import { Ed25519Keypair } from "@mysten/sui/keypairs/ed25519";
1049
+ import { Transaction } from "@mysten/sui/transactions";
1050
+ import { toB64 } from "@mysten/sui/utils";
1037
1051
  import { getWallets as getWallets2, ReadonlyWalletAccount, SUI_CHAINS } from "@mysten/wallet-standard";
1038
1052
  import { useEffect as useEffect2 } from "react";
1039
1053
  var WALLET_NAME = "Unsafe Burner Wallet";
@@ -1048,7 +1062,7 @@ function useUnsafeBurnerWallet(enabled) {
1048
1062
  }, [enabled, suiClient]);
1049
1063
  }
1050
1064
  function registerUnsafeBurnerWallet(suiClient) {
1051
- var _on, _connect, _signPersonalMessage, _signTransactionBlock, _signAndExecuteTransactionBlock;
1065
+ var _on, _connect, _signPersonalMessage, _signTransactionBlock, _signTransaction, _signAndExecuteTransactionBlock, _signAndExecuteTransaction;
1052
1066
  const walletsApi = getWallets2();
1053
1067
  const registeredWallets = walletsApi.get();
1054
1068
  if (registeredWallets.find((wallet) => wallet.name === WALLET_NAME)) {
@@ -1065,7 +1079,12 @@ function registerUnsafeBurnerWallet(suiClient) {
1065
1079
  address: keypair.getPublicKey().toSuiAddress(),
1066
1080
  publicKey: keypair.getPublicKey().toSuiBytes(),
1067
1081
  chains: ["sui:unknown"],
1068
- features: ["sui:signAndExecuteTransactionBlock", "sui:signTransactionBlock"]
1082
+ features: [
1083
+ "sui:signAndExecuteTransactionBlock",
1084
+ "sui:signTransactionBlock",
1085
+ "sui:signTransaction",
1086
+ "sui:signAndExecuteTransaction"
1087
+ ]
1069
1088
  });
1070
1089
  class UnsafeBurnerWallet {
1071
1090
  constructor() {
@@ -1090,14 +1109,52 @@ function registerUnsafeBurnerWallet(suiClient) {
1090
1109
  signature
1091
1110
  };
1092
1111
  });
1112
+ __privateAdd(this, _signTransaction, async (transactionInput) => {
1113
+ const { bytes, signature } = await Transaction.from(
1114
+ await transactionInput.transaction.toJSON()
1115
+ ).sign({
1116
+ client: suiClient,
1117
+ signer: keypair
1118
+ });
1119
+ transactionInput.signal?.throwIfAborted();
1120
+ return {
1121
+ bytes,
1122
+ signature
1123
+ };
1124
+ });
1093
1125
  __privateAdd(this, _signAndExecuteTransactionBlock, async (transactionInput) => {
1094
- return await suiClient.signAndExecuteTransactionBlock({
1095
- signer: keypair,
1096
- transactionBlock: transactionInput.transactionBlock,
1097
- options: transactionInput.options,
1098
- requestType: transactionInput.requestType
1126
+ const { bytes, signature } = await transactionInput.transactionBlock.sign({
1127
+ client: suiClient,
1128
+ signer: keypair
1129
+ });
1130
+ return suiClient.executeTransactionBlock({
1131
+ signature,
1132
+ transactionBlock: bytes,
1133
+ options: transactionInput.options
1099
1134
  });
1100
1135
  });
1136
+ __privateAdd(this, _signAndExecuteTransaction, async (transactionInput) => {
1137
+ const { bytes, signature } = await Transaction.from(
1138
+ await transactionInput.transaction.toJSON()
1139
+ ).sign({
1140
+ client: suiClient,
1141
+ signer: keypair
1142
+ });
1143
+ transactionInput.signal?.throwIfAborted();
1144
+ const { rawEffects, digest } = await suiClient.executeTransactionBlock({
1145
+ signature,
1146
+ transactionBlock: bytes,
1147
+ options: {
1148
+ showRawEffects: true
1149
+ }
1150
+ });
1151
+ return {
1152
+ bytes,
1153
+ signature,
1154
+ digest,
1155
+ effects: toB64(new Uint8Array(rawEffects))
1156
+ };
1157
+ });
1101
1158
  }
1102
1159
  get version() {
1103
1160
  return "1.0.0";
@@ -1136,6 +1193,14 @@ function registerUnsafeBurnerWallet(suiClient) {
1136
1193
  "sui:signAndExecuteTransactionBlock": {
1137
1194
  version: "1.0.0",
1138
1195
  signAndExecuteTransactionBlock: __privateGet(this, _signAndExecuteTransactionBlock)
1196
+ },
1197
+ "sui:signTransaction": {
1198
+ version: "2.0.0",
1199
+ signTransaction: __privateGet(this, _signTransaction)
1200
+ },
1201
+ "sui:signAndExecuteTransaction": {
1202
+ version: "2.0.0",
1203
+ signAndExecuteTransaction: __privateGet(this, _signAndExecuteTransaction)
1139
1204
  }
1140
1205
  };
1141
1206
  }
@@ -1144,7 +1209,9 @@ function registerUnsafeBurnerWallet(suiClient) {
1144
1209
  _connect = new WeakMap();
1145
1210
  _signPersonalMessage = new WeakMap();
1146
1211
  _signTransactionBlock = new WeakMap();
1212
+ _signTransaction = new WeakMap();
1147
1213
  _signAndExecuteTransactionBlock = new WeakMap();
1214
+ _signAndExecuteTransaction = new WeakMap();
1148
1215
  return walletsApi.register(new UnsafeBurnerWallet());
1149
1216
  }
1150
1217
 
@@ -1169,18 +1236,18 @@ function useWalletPropertiesChanged() {
1169
1236
  // src/hooks/wallet/useWalletsChanged.ts
1170
1237
  import { getWallets as getWallets3 } from "@mysten/wallet-standard";
1171
1238
  import { useEffect as useEffect4 } from "react";
1172
- function useWalletsChanged(preferredWallets, requiredFeatures) {
1239
+ function useWalletsChanged(preferredWallets, walletFilter) {
1173
1240
  const setWalletRegistered = useWalletStore((state) => state.setWalletRegistered);
1174
1241
  const setWalletUnregistered = useWalletStore((state) => state.setWalletUnregistered);
1175
1242
  useEffect4(() => {
1176
1243
  const walletsApi = getWallets3();
1177
- setWalletRegistered(getRegisteredWallets(preferredWallets, requiredFeatures));
1244
+ setWalletRegistered(getRegisteredWallets(preferredWallets, walletFilter));
1178
1245
  const unsubscribeFromRegister = walletsApi.on("register", () => {
1179
- setWalletRegistered(getRegisteredWallets(preferredWallets, requiredFeatures));
1246
+ setWalletRegistered(getRegisteredWallets(preferredWallets, walletFilter));
1180
1247
  });
1181
1248
  const unsubscribeFromUnregister = walletsApi.on("unregister", (unregisteredWallet) => {
1182
1249
  setWalletUnregistered(
1183
- getRegisteredWallets(preferredWallets, requiredFeatures),
1250
+ getRegisteredWallets(preferredWallets, walletFilter),
1184
1251
  unregisteredWallet
1185
1252
  );
1186
1253
  });
@@ -1188,7 +1255,7 @@ function useWalletsChanged(preferredWallets, requiredFeatures) {
1188
1255
  unsubscribeFromRegister();
1189
1256
  unsubscribeFromUnregister();
1190
1257
  };
1191
- }, [preferredWallets, requiredFeatures, setWalletRegistered, setWalletUnregistered]);
1258
+ }, [preferredWallets, walletFilter, setWalletRegistered, setWalletUnregistered]);
1192
1259
  }
1193
1260
 
1194
1261
  // src/themes/lightTheme.ts
@@ -1270,19 +1337,21 @@ function createWalletStore({
1270
1337
  lastConnectedAccountAddress: null,
1271
1338
  lastConnectedWalletName: null,
1272
1339
  connectionStatus: "disconnected",
1340
+ supportedIntents: [],
1273
1341
  setConnectionStatus(connectionStatus2) {
1274
1342
  set(() => ({
1275
1343
  connectionStatus: connectionStatus2
1276
1344
  }));
1277
1345
  },
1278
- setWalletConnected(wallet, connectedAccounts, selectedAccount) {
1346
+ setWalletConnected(wallet, connectedAccounts, selectedAccount, supportedIntents = []) {
1279
1347
  set(() => ({
1280
1348
  accounts: connectedAccounts,
1281
1349
  currentWallet: wallet,
1282
1350
  currentAccount: selectedAccount,
1283
1351
  lastConnectedWalletName: getWalletUniqueIdentifier(wallet),
1284
1352
  lastConnectedAccountAddress: selectedAccount?.address,
1285
- connectionStatus: "connected"
1353
+ connectionStatus: "connected",
1354
+ supportedIntents
1286
1355
  }));
1287
1356
  },
1288
1357
  setWalletDisconnected() {
@@ -1292,7 +1361,8 @@ function createWalletStore({
1292
1361
  currentAccount: null,
1293
1362
  lastConnectedWalletName: null,
1294
1363
  lastConnectedAccountAddress: null,
1295
- connectionStatus: "disconnected"
1364
+ connectionStatus: "disconnected",
1365
+ supportedIntents: []
1296
1366
  }));
1297
1367
  },
1298
1368
  setAccountSwitched(selectedAccount) {
@@ -1313,7 +1383,8 @@ function createWalletStore({
1313
1383
  currentAccount: null,
1314
1384
  lastConnectedWalletName: null,
1315
1385
  lastConnectedAccountAddress: null,
1316
- connectionStatus: "disconnected"
1386
+ connectionStatus: "disconnected",
1387
+ supportedIntents: []
1317
1388
  }));
1318
1389
  } else {
1319
1390
  set(() => ({ wallets: updatedWallets }));
@@ -1439,7 +1510,7 @@ function cssStringFromTheme(theme) {
1439
1510
  import { jsx as jsx22, jsxs as jsxs9 } from "react/jsx-runtime";
1440
1511
  function WalletProvider({
1441
1512
  preferredWallets = DEFAULT_PREFERRED_WALLETS,
1442
- requiredFeatures = DEFAULT_REQUIRED_FEATURES,
1513
+ walletFilter = DEFAULT_WALLET_FILTER,
1443
1514
  storage = DEFAULT_STORAGE,
1444
1515
  storageKey = DEFAULT_STORAGE_KEY,
1445
1516
  enableUnsafeBurner = false,
@@ -1451,7 +1522,7 @@ function WalletProvider({
1451
1522
  const storeRef = useRef(
1452
1523
  createWalletStore({
1453
1524
  autoConnectEnabled: autoConnect,
1454
- wallets: getRegisteredWallets(preferredWallets, requiredFeatures),
1525
+ wallets: getRegisteredWallets(preferredWallets, walletFilter),
1455
1526
  storage: storage || createInMemoryStore(),
1456
1527
  storageKey
1457
1528
  })
@@ -1460,7 +1531,7 @@ function WalletProvider({
1460
1531
  WalletConnectionManager,
1461
1532
  {
1462
1533
  preferredWallets,
1463
- requiredFeatures,
1534
+ walletFilter,
1464
1535
  enableUnsafeBurner,
1465
1536
  stashedWallet,
1466
1537
  children: [
@@ -1472,12 +1543,12 @@ function WalletProvider({
1472
1543
  }
1473
1544
  function WalletConnectionManager({
1474
1545
  preferredWallets = DEFAULT_PREFERRED_WALLETS,
1475
- requiredFeatures = DEFAULT_REQUIRED_FEATURES,
1546
+ walletFilter = DEFAULT_WALLET_FILTER,
1476
1547
  enableUnsafeBurner = false,
1477
1548
  stashedWallet,
1478
1549
  children
1479
1550
  }) {
1480
- useWalletsChanged(preferredWallets, requiredFeatures);
1551
+ useWalletsChanged(preferredWallets, walletFilter);
1481
1552
  useWalletPropertiesChanged();
1482
1553
  useStashedWallet(stashedWallet);
1483
1554
  useUnsafeBurnerWallet(enableUnsafeBurner);
@@ -1565,74 +1636,126 @@ function useSuiClientQueries({
1565
1636
  });
1566
1637
  }
1567
1638
 
1568
- // src/hooks/wallet/useSignAndExecuteTransactionBlock.ts
1639
+ // src/hooks/wallet/useSignAndExecuteTransaction.ts
1640
+ import { toB64 as toB643 } from "@mysten/sui/utils";
1641
+ import { signTransaction } from "@mysten/wallet-standard";
1642
+ import { useMutation as useMutation6 } from "@tanstack/react-query";
1643
+
1644
+ // src/hooks/wallet/useReportTransactionEffects.ts
1645
+ import { toB64 as toB642 } from "@mysten/sui/utils";
1569
1646
  import { useMutation as useMutation5 } from "@tanstack/react-query";
1570
- function useSignAndExecuteTransactionBlock({
1647
+ function useReportTransactionEffects({
1571
1648
  mutationKey,
1572
- executeFromWallet,
1573
1649
  ...mutationOptions
1574
1650
  } = {}) {
1575
1651
  const { currentWallet } = useCurrentWallet();
1576
1652
  const currentAccount = useCurrentAccount();
1577
- const client = useSuiClient();
1578
1653
  return useMutation5({
1579
- mutationKey: walletMutationKeys.signAndExecuteTransactionBlock(mutationKey),
1580
- mutationFn: async ({ requestType, options, ...signTransactionBlockArgs }) => {
1654
+ mutationKey: walletMutationKeys.reportTransactionEffects(mutationKey),
1655
+ mutationFn: async ({ effects, chain = currentWallet?.chains[0], account = currentAccount }) => {
1581
1656
  if (!currentWallet) {
1582
1657
  throw new WalletNotConnectedError("No wallet is connected.");
1583
1658
  }
1584
- const signerAccount = signTransactionBlockArgs.account ?? currentAccount;
1585
- if (!signerAccount) {
1659
+ if (!account) {
1586
1660
  throw new WalletNoAccountSelectedError(
1587
- "No wallet account is selected to sign and execute the transaction block with."
1661
+ "No wallet account is selected to report transaction effects for"
1588
1662
  );
1589
1663
  }
1590
- if (executeFromWallet) {
1591
- const walletFeature2 = currentWallet.features["sui:signAndExecuteTransactionBlock"];
1592
- if (!walletFeature2) {
1593
- throw new WalletFeatureNotSupportedError(
1594
- "This wallet doesn't support the `signAndExecuteTransactionBlock` feature."
1595
- );
1596
- }
1597
- return walletFeature2.signAndExecuteTransactionBlock({
1598
- ...signTransactionBlockArgs,
1599
- account: signerAccount,
1600
- chain: signTransactionBlockArgs.chain ?? signerAccount.chains[0],
1601
- requestType,
1602
- options
1664
+ const reportTransactionEffectsFeature = currentWallet.features["sui:reportTransactionEffects"];
1665
+ if (reportTransactionEffectsFeature) {
1666
+ return await reportTransactionEffectsFeature.reportTransactionEffects({
1667
+ effects: Array.isArray(effects) ? toB642(new Uint8Array(effects)) : effects,
1668
+ account,
1669
+ chain: chain ?? currentWallet?.chains[0]
1603
1670
  });
1604
1671
  }
1605
- const walletFeature = currentWallet.features["sui:signTransactionBlock"];
1606
- if (!walletFeature) {
1672
+ },
1673
+ ...mutationOptions
1674
+ });
1675
+ }
1676
+
1677
+ // src/hooks/wallet/useSignAndExecuteTransaction.ts
1678
+ function useSignAndExecuteTransaction({
1679
+ mutationKey,
1680
+ execute,
1681
+ ...mutationOptions
1682
+ } = {}) {
1683
+ const { currentWallet, supportedIntents } = useCurrentWallet();
1684
+ const currentAccount = useCurrentAccount();
1685
+ const client = useSuiClient();
1686
+ const { mutate: reportTransactionEffects } = useReportTransactionEffects();
1687
+ const executeTransaction = execute ?? (async ({ bytes, signature }) => {
1688
+ const { digest, rawEffects } = await client.executeTransactionBlock({
1689
+ transactionBlock: bytes,
1690
+ signature,
1691
+ options: {
1692
+ showRawEffects: true
1693
+ }
1694
+ });
1695
+ return {
1696
+ digest,
1697
+ rawEffects,
1698
+ effects: toB643(new Uint8Array(rawEffects)),
1699
+ bytes,
1700
+ signature
1701
+ };
1702
+ });
1703
+ return useMutation6({
1704
+ mutationKey: walletMutationKeys.signAndExecuteTransaction(mutationKey),
1705
+ mutationFn: async ({ transaction, ...signTransactionArgs }) => {
1706
+ if (!currentWallet) {
1707
+ throw new WalletNotConnectedError("No wallet is connected.");
1708
+ }
1709
+ const signerAccount = signTransactionArgs.account ?? currentAccount;
1710
+ if (!signerAccount) {
1711
+ throw new WalletNoAccountSelectedError(
1712
+ "No wallet account is selected to sign the transaction with."
1713
+ );
1714
+ }
1715
+ const chain = signTransactionArgs.chain ?? signerAccount?.chains[0];
1716
+ if (!currentWallet.features["sui:signTransaction"] && !currentWallet.features["sui:signTransactionBlock"]) {
1607
1717
  throw new WalletFeatureNotSupportedError(
1608
- "This wallet doesn't support the `signTransactionBlock` feature."
1718
+ "This wallet doesn't support the `signTransaction` feature."
1609
1719
  );
1610
1720
  }
1611
- const { signature, transactionBlockBytes } = await walletFeature.signTransactionBlock({
1612
- ...signTransactionBlockArgs,
1721
+ const { signature, bytes } = await signTransaction(currentWallet, {
1722
+ ...signTransactionArgs,
1723
+ transaction: {
1724
+ async toJSON() {
1725
+ return typeof transaction === "string" ? transaction : await transaction.toJSON({
1726
+ supportedIntents,
1727
+ client
1728
+ });
1729
+ }
1730
+ },
1613
1731
  account: signerAccount,
1614
- chain: signTransactionBlockArgs.chain ?? signerAccount.chains[0]
1615
- });
1616
- return client.executeTransactionBlock({
1617
- transactionBlock: transactionBlockBytes,
1618
- signature,
1619
- requestType,
1620
- options
1732
+ chain: signTransactionArgs.chain ?? signerAccount.chains[0]
1621
1733
  });
1734
+ const result = await executeTransaction({ bytes, signature });
1735
+ let effects;
1736
+ if ("effects" in result && result.effects?.bcs) {
1737
+ effects = result.effects.bcs;
1738
+ } else if ("rawEffects" in result) {
1739
+ effects = toB643(new Uint8Array(result.rawEffects));
1740
+ } else {
1741
+ throw new Error("Could not parse effects from transaction result.");
1742
+ }
1743
+ reportTransactionEffects({ effects, account: signerAccount, chain });
1744
+ return result;
1622
1745
  },
1623
1746
  ...mutationOptions
1624
1747
  });
1625
1748
  }
1626
1749
 
1627
1750
  // src/hooks/wallet/useSignPersonalMessage.ts
1628
- import { useMutation as useMutation6 } from "@tanstack/react-query";
1751
+ import { useMutation as useMutation7 } from "@tanstack/react-query";
1629
1752
  function useSignPersonalMessage({
1630
1753
  mutationKey,
1631
1754
  ...mutationOptions
1632
1755
  } = {}) {
1633
1756
  const { currentWallet } = useCurrentWallet();
1634
1757
  const currentAccount = useCurrentAccount();
1635
- return useMutation6({
1758
+ return useMutation7({
1636
1759
  mutationKey: walletMutationKeys.signPersonalMessage(mutationKey),
1637
1760
  mutationFn: async (signPersonalMessageArgs) => {
1638
1761
  if (!currentWallet) {
@@ -1670,37 +1793,58 @@ function useSignPersonalMessage({
1670
1793
  });
1671
1794
  }
1672
1795
 
1673
- // src/hooks/wallet/useSignTransactionBlock.ts
1674
- import { useMutation as useMutation7 } from "@tanstack/react-query";
1675
- function useSignTransactionBlock({
1796
+ // src/hooks/wallet/useSignTransaction.ts
1797
+ import { signTransaction as signTransaction2 } from "@mysten/wallet-standard";
1798
+ import { useMutation as useMutation8 } from "@tanstack/react-query";
1799
+ function useSignTransaction({
1676
1800
  mutationKey,
1677
1801
  ...mutationOptions
1678
1802
  } = {}) {
1679
1803
  const { currentWallet } = useCurrentWallet();
1680
1804
  const currentAccount = useCurrentAccount();
1681
- return useMutation7({
1682
- mutationKey: walletMutationKeys.signTransactionBlock(mutationKey),
1683
- mutationFn: async (signTransactionBlockArgs) => {
1805
+ const client = useSuiClient();
1806
+ const { mutate: reportTransactionEffects } = useReportTransactionEffects();
1807
+ return useMutation8({
1808
+ mutationKey: walletMutationKeys.signTransaction(mutationKey),
1809
+ mutationFn: async ({ transaction, ...signTransactionArgs }) => {
1684
1810
  if (!currentWallet) {
1685
1811
  throw new WalletNotConnectedError("No wallet is connected.");
1686
1812
  }
1687
- const signerAccount = signTransactionBlockArgs.account ?? currentAccount;
1813
+ const signerAccount = signTransactionArgs.account ?? currentAccount;
1688
1814
  if (!signerAccount) {
1689
1815
  throw new WalletNoAccountSelectedError(
1690
- "No wallet account is selected to sign the transaction block with."
1816
+ "No wallet account is selected to sign the transaction with."
1691
1817
  );
1692
1818
  }
1693
- const walletFeature = currentWallet.features["sui:signTransactionBlock"];
1694
- if (!walletFeature) {
1819
+ if (!currentWallet.features["sui:signTransaction"] && !currentWallet.features["sui:signTransactionBlock"]) {
1695
1820
  throw new WalletFeatureNotSupportedError(
1696
- "This wallet doesn't support the `SignTransactionBlock` feature."
1821
+ "This wallet doesn't support the `signTransaction` feature."
1697
1822
  );
1698
1823
  }
1699
- return await walletFeature.signTransactionBlock({
1700
- ...signTransactionBlockArgs,
1824
+ const { bytes, signature } = await signTransaction2(currentWallet, {
1825
+ ...signTransactionArgs,
1826
+ transaction: {
1827
+ toJSON: async () => {
1828
+ return typeof transaction === "string" ? transaction : await transaction.toJSON({
1829
+ supportedIntents: [],
1830
+ client
1831
+ });
1832
+ }
1833
+ },
1701
1834
  account: signerAccount,
1702
- chain: signTransactionBlockArgs.chain ?? signerAccount.chains[0]
1835
+ chain: signTransactionArgs.chain ?? signerAccount.chains[0]
1703
1836
  });
1837
+ return {
1838
+ bytes,
1839
+ signature,
1840
+ reportTransactionEffects: (effects) => {
1841
+ reportTransactionEffects({
1842
+ effects,
1843
+ account: signerAccount,
1844
+ chain: signTransactionArgs.chain ?? signerAccount.chains[0]
1845
+ });
1846
+ }
1847
+ };
1704
1848
  },
1705
1849
  ...mutationOptions
1706
1850
  });
@@ -1719,10 +1863,11 @@ export {
1719
1863
  useCurrentAccount,
1720
1864
  useCurrentWallet,
1721
1865
  useDisconnectWallet,
1866
+ useReportTransactionEffects,
1722
1867
  useResolveSuiNSName,
1723
- useSignAndExecuteTransactionBlock,
1868
+ useSignAndExecuteTransaction,
1724
1869
  useSignPersonalMessage,
1725
- useSignTransactionBlock,
1870
+ useSignTransaction,
1726
1871
  useSuiClient,
1727
1872
  useSuiClientContext,
1728
1873
  useSuiClientInfiniteQuery,