@mysten/dapp-kit 0.13.1 → 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 (200) hide show
  1. package/CHANGELOG.md +24 -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 +106 -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/components/styling/InjectedThemeStyles.js +2 -0
  17. package/dist/cjs/components/styling/InjectedThemeStyles.js.map +2 -2
  18. package/dist/cjs/constants/walletDefaults.d.ts +1 -1
  19. package/dist/cjs/constants/walletDefaults.js +4 -2
  20. package/dist/cjs/constants/walletDefaults.js.map +2 -2
  21. package/dist/cjs/constants/walletMutationKeys.d.ts +3 -2
  22. package/dist/cjs/constants/walletMutationKeys.js +4 -3
  23. package/dist/cjs/constants/walletMutationKeys.js.map +2 -2
  24. package/dist/cjs/hooks/networkConfig.d.ts +1 -1
  25. package/dist/cjs/hooks/networkConfig.js +1 -1
  26. package/dist/cjs/hooks/networkConfig.js.map +1 -1
  27. package/dist/cjs/hooks/useResolveSuiNSNames.d.ts +1 -1
  28. package/dist/cjs/hooks/useResolveSuiNSNames.js +1 -1
  29. package/dist/cjs/hooks/useResolveSuiNSNames.js.map +1 -1
  30. package/dist/cjs/hooks/useSuiClient.d.ts +1 -1
  31. package/dist/cjs/hooks/useSuiClient.js +1 -1
  32. package/dist/cjs/hooks/useSuiClient.js.map +1 -1
  33. package/dist/cjs/hooks/useSuiClientInfiniteQuery.d.ts +1 -1
  34. package/dist/cjs/hooks/useSuiClientInfiniteQuery.js +1 -1
  35. package/dist/cjs/hooks/useSuiClientInfiniteQuery.js.map +1 -1
  36. package/dist/cjs/hooks/useSuiClientMutation.js +1 -1
  37. package/dist/cjs/hooks/useSuiClientMutation.js.map +1 -1
  38. package/dist/cjs/hooks/useSuiClientQueries.js +1 -1
  39. package/dist/cjs/hooks/useSuiClientQueries.js.map +1 -1
  40. package/dist/cjs/hooks/useSuiClientQuery.d.ts +1 -1
  41. package/dist/cjs/hooks/useSuiClientQuery.js +1 -1
  42. package/dist/cjs/hooks/useSuiClientQuery.js.map +1 -1
  43. package/dist/cjs/hooks/wallet/useAutoConnectWallet.js +17 -7
  44. package/dist/cjs/hooks/wallet/useAutoConnectWallet.js.map +2 -2
  45. package/dist/cjs/hooks/wallet/useConnectWallet.js +10 -4
  46. package/dist/cjs/hooks/wallet/useConnectWallet.js.map +2 -2
  47. package/dist/cjs/hooks/wallet/useCurrentWallet.d.ts +3 -0
  48. package/dist/cjs/hooks/wallet/useCurrentWallet.js +7 -3
  49. package/dist/cjs/hooks/wallet/useCurrentWallet.js.map +2 -2
  50. package/dist/cjs/hooks/wallet/useDisconnectWallet.js +11 -6
  51. package/dist/cjs/hooks/wallet/useDisconnectWallet.js.map +2 -2
  52. package/dist/cjs/hooks/wallet/useReportTransactionEffects.d.ts +15 -0
  53. package/dist/cjs/hooks/wallet/{useSignTransactionBlock.js → useReportTransactionEffects.js} +37 -37
  54. package/dist/cjs/hooks/wallet/useReportTransactionEffects.js.map +7 -0
  55. package/dist/cjs/hooks/wallet/useSignAndExecuteTransaction.d.ts +29 -0
  56. package/dist/cjs/hooks/wallet/useSignAndExecuteTransaction.js +248 -0
  57. package/dist/cjs/hooks/wallet/useSignAndExecuteTransaction.js.map +7 -0
  58. package/dist/cjs/hooks/wallet/useSignPersonalMessage.js +11 -6
  59. package/dist/cjs/hooks/wallet/useSignPersonalMessage.js.map +2 -2
  60. package/dist/cjs/hooks/wallet/useSignTransaction.d.ts +18 -0
  61. package/dist/cjs/hooks/wallet/{useSignAndExecuteTransactionBlock.js → useSignTransaction.js} +83 -47
  62. package/dist/cjs/hooks/wallet/useSignTransaction.js.map +7 -0
  63. package/dist/cjs/hooks/wallet/useStashedWallet.js +17 -7
  64. package/dist/cjs/hooks/wallet/useStashedWallet.js.map +2 -2
  65. package/dist/cjs/hooks/wallet/useSwitchAccount.js +11 -6
  66. package/dist/cjs/hooks/wallet/useSwitchAccount.js.map +2 -2
  67. package/dist/cjs/hooks/wallet/useUnsafeBurnerWallet.js +64 -9
  68. package/dist/cjs/hooks/wallet/useUnsafeBurnerWallet.js.map +2 -2
  69. package/dist/cjs/hooks/wallet/useWalletPropertiesChanged.js +7 -3
  70. package/dist/cjs/hooks/wallet/useWalletPropertiesChanged.js.map +2 -2
  71. package/dist/cjs/hooks/wallet/useWalletsChanged.d.ts +1 -1
  72. package/dist/cjs/hooks/wallet/useWalletsChanged.js +7 -7
  73. package/dist/cjs/hooks/wallet/useWalletsChanged.js.map +2 -2
  74. package/dist/cjs/index.d.ts +3 -2
  75. package/dist/cjs/index.js +233 -86
  76. package/dist/cjs/index.js.map +4 -4
  77. package/dist/cjs/types.d.ts +1 -1
  78. package/dist/cjs/types.js.map +1 -1
  79. package/dist/cjs/utils/walletUtils.d.ts +2 -2
  80. package/dist/cjs/utils/walletUtils.js +2 -2
  81. package/dist/cjs/utils/walletUtils.js.map +2 -2
  82. package/dist/cjs/walletStore.d.ts +2 -1
  83. package/dist/cjs/walletStore.js +8 -4
  84. package/dist/cjs/walletStore.js.map +2 -2
  85. package/dist/esm/components/AccountDropdownMenu.js +13 -8
  86. package/dist/esm/components/AccountDropdownMenu.js.map +2 -2
  87. package/dist/esm/components/ConnectButton.js +19 -9
  88. package/dist/esm/components/ConnectButton.js.map +2 -2
  89. package/dist/esm/components/SuiClientProvider.d.ts +1 -1
  90. package/dist/esm/components/SuiClientProvider.js +1 -1
  91. package/dist/esm/components/SuiClientProvider.js.map +1 -1
  92. package/dist/esm/components/WalletProvider.d.ts +3 -3
  93. package/dist/esm/components/WalletProvider.js +106 -33
  94. package/dist/esm/components/WalletProvider.js.map +2 -2
  95. package/dist/esm/components/connect-modal/ConnectModal.js +10 -4
  96. package/dist/esm/components/connect-modal/ConnectModal.js.map +2 -2
  97. package/dist/esm/components/connect-modal/wallet-list/WalletList.js.map +2 -2
  98. package/dist/esm/components/styling/InjectedThemeStyles.js +2 -0
  99. package/dist/esm/components/styling/InjectedThemeStyles.js.map +2 -2
  100. package/dist/esm/constants/walletDefaults.d.ts +1 -1
  101. package/dist/esm/constants/walletDefaults.js +4 -2
  102. package/dist/esm/constants/walletDefaults.js.map +2 -2
  103. package/dist/esm/constants/walletMutationKeys.d.ts +3 -2
  104. package/dist/esm/constants/walletMutationKeys.js +4 -3
  105. package/dist/esm/constants/walletMutationKeys.js.map +2 -2
  106. package/dist/esm/hooks/networkConfig.d.ts +1 -1
  107. package/dist/esm/hooks/networkConfig.js +1 -1
  108. package/dist/esm/hooks/networkConfig.js.map +1 -1
  109. package/dist/esm/hooks/useResolveSuiNSNames.d.ts +1 -1
  110. package/dist/esm/hooks/useResolveSuiNSNames.js +1 -1
  111. package/dist/esm/hooks/useResolveSuiNSNames.js.map +1 -1
  112. package/dist/esm/hooks/useSuiClient.d.ts +1 -1
  113. package/dist/esm/hooks/useSuiClient.js +1 -1
  114. package/dist/esm/hooks/useSuiClient.js.map +1 -1
  115. package/dist/esm/hooks/useSuiClientInfiniteQuery.d.ts +1 -1
  116. package/dist/esm/hooks/useSuiClientInfiniteQuery.js +1 -1
  117. package/dist/esm/hooks/useSuiClientInfiniteQuery.js.map +1 -1
  118. package/dist/esm/hooks/useSuiClientMutation.js +1 -1
  119. package/dist/esm/hooks/useSuiClientMutation.js.map +1 -1
  120. package/dist/esm/hooks/useSuiClientQueries.js +1 -1
  121. package/dist/esm/hooks/useSuiClientQueries.js.map +1 -1
  122. package/dist/esm/hooks/useSuiClientQuery.d.ts +1 -1
  123. package/dist/esm/hooks/useSuiClientQuery.js +1 -1
  124. package/dist/esm/hooks/useSuiClientQuery.js.map +1 -1
  125. package/dist/esm/hooks/wallet/useAutoConnectWallet.js +17 -7
  126. package/dist/esm/hooks/wallet/useAutoConnectWallet.js.map +2 -2
  127. package/dist/esm/hooks/wallet/useConnectWallet.js +10 -4
  128. package/dist/esm/hooks/wallet/useConnectWallet.js.map +2 -2
  129. package/dist/esm/hooks/wallet/useCurrentWallet.d.ts +3 -0
  130. package/dist/esm/hooks/wallet/useCurrentWallet.js +7 -3
  131. package/dist/esm/hooks/wallet/useCurrentWallet.js.map +2 -2
  132. package/dist/esm/hooks/wallet/useDisconnectWallet.js +11 -6
  133. package/dist/esm/hooks/wallet/useDisconnectWallet.js.map +2 -2
  134. package/dist/esm/hooks/wallet/useReportTransactionEffects.d.ts +15 -0
  135. package/dist/esm/hooks/wallet/{useSignTransactionBlock.js → useReportTransactionEffects.js} +34 -34
  136. package/dist/esm/hooks/wallet/useReportTransactionEffects.js.map +7 -0
  137. package/dist/esm/hooks/wallet/useSignAndExecuteTransaction.d.ts +29 -0
  138. package/dist/esm/hooks/wallet/useSignAndExecuteTransaction.js +227 -0
  139. package/dist/esm/hooks/wallet/useSignAndExecuteTransaction.js.map +7 -0
  140. package/dist/esm/hooks/wallet/useSignPersonalMessage.js +11 -6
  141. package/dist/esm/hooks/wallet/useSignPersonalMessage.js.map +2 -2
  142. package/dist/esm/hooks/wallet/useSignTransaction.d.ts +18 -0
  143. package/dist/esm/hooks/wallet/{useSignAndExecuteTransactionBlock.js → useSignTransaction.js} +80 -44
  144. package/dist/esm/hooks/wallet/useSignTransaction.js.map +7 -0
  145. package/dist/esm/hooks/wallet/useStashedWallet.js +17 -7
  146. package/dist/esm/hooks/wallet/useStashedWallet.js.map +2 -2
  147. package/dist/esm/hooks/wallet/useSwitchAccount.js +11 -6
  148. package/dist/esm/hooks/wallet/useSwitchAccount.js.map +2 -2
  149. package/dist/esm/hooks/wallet/useUnsafeBurnerWallet.js +64 -9
  150. package/dist/esm/hooks/wallet/useUnsafeBurnerWallet.js.map +2 -2
  151. package/dist/esm/hooks/wallet/useWalletPropertiesChanged.js +7 -3
  152. package/dist/esm/hooks/wallet/useWalletPropertiesChanged.js.map +2 -2
  153. package/dist/esm/hooks/wallet/useWalletsChanged.d.ts +1 -1
  154. package/dist/esm/hooks/wallet/useWalletsChanged.js +7 -7
  155. package/dist/esm/hooks/wallet/useWalletsChanged.js.map +2 -2
  156. package/dist/esm/index.d.ts +3 -2
  157. package/dist/esm/index.js +233 -86
  158. package/dist/esm/index.js.map +4 -4
  159. package/dist/esm/types.d.ts +1 -1
  160. package/dist/esm/utils/walletUtils.d.ts +2 -2
  161. package/dist/esm/utils/walletUtils.js +2 -2
  162. package/dist/esm/utils/walletUtils.js.map +2 -2
  163. package/dist/esm/walletStore.d.ts +2 -1
  164. package/dist/esm/walletStore.js +8 -4
  165. package/dist/esm/walletStore.js.map +2 -2
  166. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  167. package/dist/tsconfig.tsbuildinfo +1 -1
  168. package/package.json +6 -6
  169. package/src/components/AccountDropdownMenu.tsx +1 -1
  170. package/src/components/SuiClientProvider.tsx +2 -2
  171. package/src/components/WalletProvider.tsx +9 -9
  172. package/src/components/styling/InjectedThemeStyles.tsx +4 -0
  173. package/src/constants/walletDefaults.ts +7 -3
  174. package/src/constants/walletMutationKeys.ts +3 -2
  175. package/src/hooks/networkConfig.ts +1 -1
  176. package/src/hooks/useResolveSuiNSNames.ts +1 -1
  177. package/src/hooks/useSuiClient.ts +1 -1
  178. package/src/hooks/useSuiClientInfiniteQuery.ts +1 -1
  179. package/src/hooks/useSuiClientQuery.ts +1 -1
  180. package/src/hooks/wallet/useConnectWallet.ts +6 -1
  181. package/src/hooks/wallet/useCurrentWallet.ts +4 -0
  182. package/src/hooks/wallet/useReportTransactionEffects.ts +82 -0
  183. package/src/hooks/wallet/useSignAndExecuteTransaction.ts +167 -0
  184. package/src/hooks/wallet/useSignTransaction.ts +119 -0
  185. package/src/hooks/wallet/useUnsafeBurnerWallet.ts +69 -6
  186. package/src/hooks/wallet/useWalletsChanged.ts +5 -5
  187. package/src/index.ts +3 -2
  188. package/src/types.ts +1 -1
  189. package/src/utils/walletUtils.ts +3 -2
  190. package/src/walletStore.ts +7 -1
  191. package/dist/cjs/hooks/wallet/useSignAndExecuteTransactionBlock.d.ts +0 -15
  192. package/dist/cjs/hooks/wallet/useSignAndExecuteTransactionBlock.js.map +0 -7
  193. package/dist/cjs/hooks/wallet/useSignTransactionBlock.d.ts +0 -13
  194. package/dist/cjs/hooks/wallet/useSignTransactionBlock.js.map +0 -7
  195. package/dist/esm/hooks/wallet/useSignAndExecuteTransactionBlock.d.ts +0 -15
  196. package/dist/esm/hooks/wallet/useSignAndExecuteTransactionBlock.js.map +0 -7
  197. package/dist/esm/hooks/wallet/useSignTransactionBlock.d.ts +0 -13
  198. package/dist/esm/hooks/wallet/useSignTransactionBlock.js.map +0 -7
  199. package/src/hooks/wallet/useSignAndExecuteTransactionBlock.ts +0 -116
  200. 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 }));
@@ -1413,6 +1484,8 @@ function InjectedThemeStyles({ theme }) {
1413
1484
  return /* @__PURE__ */ jsx21(
1414
1485
  "style",
1415
1486
  {
1487
+ precedence: "default",
1488
+ href: "mysten-dapp-kit-theme",
1416
1489
  dangerouslySetInnerHTML: {
1417
1490
  __html: themeStyles
1418
1491
  }
@@ -1437,7 +1510,7 @@ function cssStringFromTheme(theme) {
1437
1510
  import { jsx as jsx22, jsxs as jsxs9 } from "react/jsx-runtime";
1438
1511
  function WalletProvider({
1439
1512
  preferredWallets = DEFAULT_PREFERRED_WALLETS,
1440
- requiredFeatures = DEFAULT_REQUIRED_FEATURES,
1513
+ walletFilter = DEFAULT_WALLET_FILTER,
1441
1514
  storage = DEFAULT_STORAGE,
1442
1515
  storageKey = DEFAULT_STORAGE_KEY,
1443
1516
  enableUnsafeBurner = false,
@@ -1449,7 +1522,7 @@ function WalletProvider({
1449
1522
  const storeRef = useRef(
1450
1523
  createWalletStore({
1451
1524
  autoConnectEnabled: autoConnect,
1452
- wallets: getRegisteredWallets(preferredWallets, requiredFeatures),
1525
+ wallets: getRegisteredWallets(preferredWallets, walletFilter),
1453
1526
  storage: storage || createInMemoryStore(),
1454
1527
  storageKey
1455
1528
  })
@@ -1458,7 +1531,7 @@ function WalletProvider({
1458
1531
  WalletConnectionManager,
1459
1532
  {
1460
1533
  preferredWallets,
1461
- requiredFeatures,
1534
+ walletFilter,
1462
1535
  enableUnsafeBurner,
1463
1536
  stashedWallet,
1464
1537
  children: [
@@ -1470,12 +1543,12 @@ function WalletProvider({
1470
1543
  }
1471
1544
  function WalletConnectionManager({
1472
1545
  preferredWallets = DEFAULT_PREFERRED_WALLETS,
1473
- requiredFeatures = DEFAULT_REQUIRED_FEATURES,
1546
+ walletFilter = DEFAULT_WALLET_FILTER,
1474
1547
  enableUnsafeBurner = false,
1475
1548
  stashedWallet,
1476
1549
  children
1477
1550
  }) {
1478
- useWalletsChanged(preferredWallets, requiredFeatures);
1551
+ useWalletsChanged(preferredWallets, walletFilter);
1479
1552
  useWalletPropertiesChanged();
1480
1553
  useStashedWallet(stashedWallet);
1481
1554
  useUnsafeBurnerWallet(enableUnsafeBurner);
@@ -1563,74 +1636,126 @@ function useSuiClientQueries({
1563
1636
  });
1564
1637
  }
1565
1638
 
1566
- // 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";
1567
1646
  import { useMutation as useMutation5 } from "@tanstack/react-query";
1568
- function useSignAndExecuteTransactionBlock({
1647
+ function useReportTransactionEffects({
1569
1648
  mutationKey,
1570
- executeFromWallet,
1571
1649
  ...mutationOptions
1572
1650
  } = {}) {
1573
1651
  const { currentWallet } = useCurrentWallet();
1574
1652
  const currentAccount = useCurrentAccount();
1575
- const client = useSuiClient();
1576
1653
  return useMutation5({
1577
- mutationKey: walletMutationKeys.signAndExecuteTransactionBlock(mutationKey),
1578
- mutationFn: async ({ requestType, options, ...signTransactionBlockArgs }) => {
1654
+ mutationKey: walletMutationKeys.reportTransactionEffects(mutationKey),
1655
+ mutationFn: async ({ effects, chain = currentWallet?.chains[0], account = currentAccount }) => {
1579
1656
  if (!currentWallet) {
1580
1657
  throw new WalletNotConnectedError("No wallet is connected.");
1581
1658
  }
1582
- const signerAccount = signTransactionBlockArgs.account ?? currentAccount;
1583
- if (!signerAccount) {
1659
+ if (!account) {
1584
1660
  throw new WalletNoAccountSelectedError(
1585
- "No wallet account is selected to sign and execute the transaction block with."
1661
+ "No wallet account is selected to report transaction effects for"
1586
1662
  );
1587
1663
  }
1588
- if (executeFromWallet) {
1589
- const walletFeature2 = currentWallet.features["sui:signAndExecuteTransactionBlock"];
1590
- if (!walletFeature2) {
1591
- throw new WalletFeatureNotSupportedError(
1592
- "This wallet doesn't support the `signAndExecuteTransactionBlock` feature."
1593
- );
1594
- }
1595
- return walletFeature2.signAndExecuteTransactionBlock({
1596
- ...signTransactionBlockArgs,
1597
- account: signerAccount,
1598
- chain: signTransactionBlockArgs.chain ?? signerAccount.chains[0],
1599
- requestType,
1600
- 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]
1601
1670
  });
1602
1671
  }
1603
- const walletFeature = currentWallet.features["sui:signTransactionBlock"];
1604
- 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"]) {
1605
1717
  throw new WalletFeatureNotSupportedError(
1606
- "This wallet doesn't support the `signTransactionBlock` feature."
1718
+ "This wallet doesn't support the `signTransaction` feature."
1607
1719
  );
1608
1720
  }
1609
- const { signature, transactionBlockBytes } = await walletFeature.signTransactionBlock({
1610
- ...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
+ },
1611
1731
  account: signerAccount,
1612
- chain: signTransactionBlockArgs.chain ?? signerAccount.chains[0]
1613
- });
1614
- return client.executeTransactionBlock({
1615
- transactionBlock: transactionBlockBytes,
1616
- signature,
1617
- requestType,
1618
- options
1732
+ chain: signTransactionArgs.chain ?? signerAccount.chains[0]
1619
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;
1620
1745
  },
1621
1746
  ...mutationOptions
1622
1747
  });
1623
1748
  }
1624
1749
 
1625
1750
  // src/hooks/wallet/useSignPersonalMessage.ts
1626
- import { useMutation as useMutation6 } from "@tanstack/react-query";
1751
+ import { useMutation as useMutation7 } from "@tanstack/react-query";
1627
1752
  function useSignPersonalMessage({
1628
1753
  mutationKey,
1629
1754
  ...mutationOptions
1630
1755
  } = {}) {
1631
1756
  const { currentWallet } = useCurrentWallet();
1632
1757
  const currentAccount = useCurrentAccount();
1633
- return useMutation6({
1758
+ return useMutation7({
1634
1759
  mutationKey: walletMutationKeys.signPersonalMessage(mutationKey),
1635
1760
  mutationFn: async (signPersonalMessageArgs) => {
1636
1761
  if (!currentWallet) {
@@ -1668,37 +1793,58 @@ function useSignPersonalMessage({
1668
1793
  });
1669
1794
  }
1670
1795
 
1671
- // src/hooks/wallet/useSignTransactionBlock.ts
1672
- import { useMutation as useMutation7 } from "@tanstack/react-query";
1673
- 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({
1674
1800
  mutationKey,
1675
1801
  ...mutationOptions
1676
1802
  } = {}) {
1677
1803
  const { currentWallet } = useCurrentWallet();
1678
1804
  const currentAccount = useCurrentAccount();
1679
- return useMutation7({
1680
- mutationKey: walletMutationKeys.signTransactionBlock(mutationKey),
1681
- 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 }) => {
1682
1810
  if (!currentWallet) {
1683
1811
  throw new WalletNotConnectedError("No wallet is connected.");
1684
1812
  }
1685
- const signerAccount = signTransactionBlockArgs.account ?? currentAccount;
1813
+ const signerAccount = signTransactionArgs.account ?? currentAccount;
1686
1814
  if (!signerAccount) {
1687
1815
  throw new WalletNoAccountSelectedError(
1688
- "No wallet account is selected to sign the transaction block with."
1816
+ "No wallet account is selected to sign the transaction with."
1689
1817
  );
1690
1818
  }
1691
- const walletFeature = currentWallet.features["sui:signTransactionBlock"];
1692
- if (!walletFeature) {
1819
+ if (!currentWallet.features["sui:signTransaction"] && !currentWallet.features["sui:signTransactionBlock"]) {
1693
1820
  throw new WalletFeatureNotSupportedError(
1694
- "This wallet doesn't support the `SignTransactionBlock` feature."
1821
+ "This wallet doesn't support the `signTransaction` feature."
1695
1822
  );
1696
1823
  }
1697
- return await walletFeature.signTransactionBlock({
1698
- ...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
+ },
1699
1834
  account: signerAccount,
1700
- chain: signTransactionBlockArgs.chain ?? signerAccount.chains[0]
1835
+ chain: signTransactionArgs.chain ?? signerAccount.chains[0]
1701
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
+ };
1702
1848
  },
1703
1849
  ...mutationOptions
1704
1850
  });
@@ -1717,10 +1863,11 @@ export {
1717
1863
  useCurrentAccount,
1718
1864
  useCurrentWallet,
1719
1865
  useDisconnectWallet,
1866
+ useReportTransactionEffects,
1720
1867
  useResolveSuiNSName,
1721
- useSignAndExecuteTransactionBlock,
1868
+ useSignAndExecuteTransaction,
1722
1869
  useSignPersonalMessage,
1723
- useSignTransactionBlock,
1870
+ useSignTransaction,
1724
1871
  useSuiClient,
1725
1872
  useSuiClientContext,
1726
1873
  useSuiClientInfiniteQuery,