@multiversx/sdk-dapp-liquidity 1.1.7 → 2.0.0-alpha.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 (81) hide show
  1. package/index.js +7 -0
  2. package/index.mjs +8 -1
  3. package/package.json +19 -16
  4. package/reactjs/adapters/SuiAdapter.d.ts +60 -0
  5. package/reactjs/adapters/SuiAdapter.js +350 -0
  6. package/reactjs/adapters/SuiAdapter.mjs +349 -0
  7. package/reactjs/components/AmountInput/AmountInput.js +1 -1
  8. package/reactjs/components/AmountInput/AmountInput.mjs +1 -1
  9. package/reactjs/components/BridgeForm/Deposit.js +57 -18
  10. package/reactjs/components/BridgeForm/Deposit.mjs +57 -18
  11. package/reactjs/components/BridgeForm/Transfer.js +17 -10
  12. package/reactjs/components/BridgeForm/Transfer.mjs +17 -10
  13. package/reactjs/components/BridgeForm/hooks/useBridgeTokenSelection.js +31 -9
  14. package/reactjs/components/BridgeForm/hooks/useBridgeTokenSelection.mjs +31 -9
  15. package/reactjs/components/BridgeForm/utils/bridgeFormHelpers.d.ts +6 -0
  16. package/reactjs/components/BridgeForm/utils/bridgeFormHelpers.js +18 -0
  17. package/reactjs/components/BridgeForm/utils/bridgeFormHelpers.mjs +18 -0
  18. package/reactjs/components/BridgeHistory/BridgeHistory.js +2 -2
  19. package/reactjs/components/BridgeHistory/BridgeHistory.mjs +2 -2
  20. package/reactjs/components/Connect/BridgeAccountDisplay.js +77 -25
  21. package/reactjs/components/Connect/BridgeAccountDisplay.mjs +77 -25
  22. package/reactjs/components/Connect/BridgeConnectButton.js +1 -1
  23. package/reactjs/components/Connect/BridgeConnectButton.mjs +1 -1
  24. package/reactjs/components/Connect/ChainSelectConnect.d.ts +7 -0
  25. package/reactjs/components/Connect/ChainSelectConnect.js +144 -0
  26. package/reactjs/components/Connect/ChainSelectConnect.mjs +143 -0
  27. package/reactjs/components/Connect/MvxAccountDisplay.js +17 -3
  28. package/reactjs/components/Connect/MvxAccountDisplay.mjs +17 -3
  29. package/reactjs/components/Connect/MvxConnectButton.js +2 -2
  30. package/reactjs/components/Connect/MvxConnectButton.mjs +2 -2
  31. package/reactjs/components/Connect/index.d.ts +1 -0
  32. package/reactjs/components/Connect/index.js +2 -0
  33. package/reactjs/components/Connect/index.mjs +2 -0
  34. package/reactjs/components/TokenSelector/components/TokenItem.js +11 -1
  35. package/reactjs/components/TokenSelector/components/TokenItem.mjs +11 -1
  36. package/reactjs/components/TrimAddress/TrimAddress.js +1 -1
  37. package/reactjs/components/TrimAddress/TrimAddress.mjs +1 -1
  38. package/reactjs/components/index.js +2 -0
  39. package/reactjs/components/index.mjs +2 -0
  40. package/reactjs/constants/chains.d.ts +7 -1
  41. package/reactjs/constants/chains.js +6 -0
  42. package/reactjs/constants/chains.mjs +6 -0
  43. package/reactjs/helpers/index.d.ts +1 -0
  44. package/reactjs/helpers/index.js +7 -0
  45. package/reactjs/helpers/index.mjs +6 -0
  46. package/reactjs/helpers/resolveBridgeApiChainId.d.ts +18 -0
  47. package/reactjs/helpers/resolveBridgeApiChainId.js +41 -0
  48. package/reactjs/helpers/resolveBridgeApiChainId.mjs +40 -0
  49. package/reactjs/hooks/index.d.ts +2 -0
  50. package/reactjs/hooks/index.js +4 -0
  51. package/reactjs/hooks/index.mjs +4 -0
  52. package/reactjs/hooks/useBridgeApiChainId.d.ts +2 -0
  53. package/reactjs/hooks/useBridgeApiChainId.js +14 -0
  54. package/reactjs/hooks/useBridgeApiChainId.mjs +13 -0
  55. package/reactjs/hooks/useFetchTokens.js +17 -17
  56. package/reactjs/hooks/useFetchTokens.mjs +17 -17
  57. package/reactjs/hooks/useGenericSignMessage.d.ts +1 -1
  58. package/reactjs/hooks/useGenericSignMessage.js +14 -0
  59. package/reactjs/hooks/useGenericSignMessage.mjs +14 -0
  60. package/reactjs/hooks/useSignTransaction.d.ts +418 -3
  61. package/reactjs/hooks/useSignTransaction.js +28 -0
  62. package/reactjs/hooks/useSignTransaction.mjs +28 -0
  63. package/reactjs/hooks/useSuiConnect.d.ts +8 -0
  64. package/reactjs/hooks/useSuiConnect.js +87 -0
  65. package/reactjs/hooks/useSuiConnect.mjs +86 -0
  66. package/reactjs/index.js +7 -0
  67. package/reactjs/index.mjs +8 -1
  68. package/reactjs/init/index.js +1 -0
  69. package/reactjs/init/index.mjs +2 -1
  70. package/reactjs/init/init.d.ts +9 -30
  71. package/reactjs/init/init.js +90 -9
  72. package/reactjs/init/init.mjs +91 -10
  73. package/reactjs/queries/useCheckAccount.query.js +4 -14
  74. package/reactjs/queries/useCheckAccount.query.mjs +4 -14
  75. package/reactjs/queries/useGetNonMvxTokensBalances.query.js +1 -0
  76. package/reactjs/queries/useGetNonMvxTokensBalances.query.mjs +1 -0
  77. package/style.css +51 -0
  78. package/types/chainType.d.ts +2 -1
  79. package/types/chainType.js +1 -0
  80. package/types/chainType.mjs +1 -0
  81. package/types/transaction.d.ts +5 -0
@@ -0,0 +1,40 @@
1
+ const BRIDGE_API_SUI_CHAIN_ID = "784";
2
+ function isSuiNetwork(caipNetwork) {
3
+ var _a;
4
+ if (!caipNetwork) {
5
+ return false;
6
+ }
7
+ return caipNetwork.chainNamespace === "sui" || Boolean((_a = caipNetwork.caipNetworkId) == null ? void 0 : _a.startsWith("sui:"));
8
+ }
9
+ const SUI_APPKIT_CHAIN_SLUGS = /* @__PURE__ */ new Set(["mainnet", "testnet", "devnet"]);
10
+ const APPKIT_SUI_PLACEHOLDER_IDS = /* @__PURE__ */ new Set(["184"]);
11
+ function suiSlugFromAppKit(chainId, caipNetwork) {
12
+ const caipId = caipNetwork == null ? void 0 : caipNetwork.caipNetworkId;
13
+ if (caipId == null ? void 0 : caipId.startsWith("sui:")) {
14
+ return caipId.slice("sui:".length).toLowerCase();
15
+ }
16
+ return chainId.toLowerCase();
17
+ }
18
+ function toBridgeApiChainId(chainId, caipNetwork) {
19
+ if (chainId == null || chainId === "") {
20
+ return void 0;
21
+ }
22
+ const raw = String(chainId);
23
+ if (APPKIT_SUI_PLACEHOLDER_IDS.has(raw) || raw === BRIDGE_API_SUI_CHAIN_ID) {
24
+ return BRIDGE_API_SUI_CHAIN_ID;
25
+ }
26
+ const slug = suiSlugFromAppKit(raw, caipNetwork);
27
+ const treatAsSui = isSuiNetwork(caipNetwork) || SUI_APPKIT_CHAIN_SLUGS.has(slug) && !/^\d+$/.test(raw);
28
+ if (!treatAsSui) {
29
+ return raw;
30
+ }
31
+ return BRIDGE_API_SUI_CHAIN_ID;
32
+ }
33
+ function sameBridgeApiChainId(a, b) {
34
+ return toBridgeApiChainId(a) === toBridgeApiChainId(b);
35
+ }
36
+ export {
37
+ BRIDGE_API_SUI_CHAIN_ID,
38
+ sameBridgeApiChainId,
39
+ toBridgeApiChainId
40
+ };
@@ -6,6 +6,8 @@ export * from './useDebounce';
6
6
  export * from './useFetchBridgeData';
7
7
  export * from './useFetchTokens';
8
8
  export * from './useGetChainId';
9
+ export * from './useBridgeApiChainId';
9
10
  export * from './useResolveTokenChain';
10
11
  export * from './useSendTransactions';
11
12
  export * from './useSignTransaction';
13
+ export * from './useSuiConnect';
@@ -12,9 +12,11 @@ const reactjs_hooks_useDebounce = require("./useDebounce.js");
12
12
  const reactjs_hooks_useFetchBridgeData = require("./useFetchBridgeData.js");
13
13
  const reactjs_hooks_useFetchTokens = require("./useFetchTokens.js");
14
14
  const reactjs_hooks_useGetChainId = require("./useGetChainId.js");
15
+ const reactjs_hooks_useBridgeApiChainId = require("./useBridgeApiChainId.js");
15
16
  const reactjs_hooks_useResolveTokenChain = require("./useResolveTokenChain.js");
16
17
  const reactjs_hooks_useSendTransactions = require("./useSendTransactions.js");
17
18
  const reactjs_hooks_useSignTransaction = require("./useSignTransaction.js");
19
+ const reactjs_hooks_useSuiConnect = require("./useSuiConnect.js");
18
20
  exports.useAmountSchema = reactjs_hooks_validation_useAmountSchema.useAmountSchema;
19
21
  exports.useSecondAmountSchema = reactjs_hooks_validation_useSecondAmountSchema.useSecondAmountSchema;
20
22
  exports.useTestHasEnoughFunds = reactjs_hooks_validation_useTestHasEnoughFunds.useTestHasEnoughFunds;
@@ -27,6 +29,8 @@ exports.useDebounce = reactjs_hooks_useDebounce.useDebounce;
27
29
  exports.useFetchBridgeData = reactjs_hooks_useFetchBridgeData.useFetchBridgeData;
28
30
  exports.useFetchTokens = reactjs_hooks_useFetchTokens.useFetchTokens;
29
31
  exports.useGetChainId = reactjs_hooks_useGetChainId.useGetChainId;
32
+ exports.useBridgeApiChainId = reactjs_hooks_useBridgeApiChainId.useBridgeApiChainId;
30
33
  exports.useResolveTokenChain = reactjs_hooks_useResolveTokenChain.useResolveTokenChain;
31
34
  exports.useSendTransactions = reactjs_hooks_useSendTransactions.useSendTransactions;
32
35
  exports.useSignTransaction = reactjs_hooks_useSignTransaction.useSignTransaction;
36
+ exports.useSuiConnect = reactjs_hooks_useSuiConnect.useSuiConnect;
@@ -9,14 +9,17 @@ import { useDebounce } from "./useDebounce.mjs";
9
9
  import { useFetchBridgeData } from "./useFetchBridgeData.mjs";
10
10
  import { useFetchTokens } from "./useFetchTokens.mjs";
11
11
  import { useGetChainId } from "./useGetChainId.mjs";
12
+ import { useBridgeApiChainId } from "./useBridgeApiChainId.mjs";
12
13
  import { useResolveTokenChain } from "./useResolveTokenChain.mjs";
13
14
  import { useSendTransactions } from "./useSendTransactions.mjs";
14
15
  import { useSignTransaction } from "./useSignTransaction.mjs";
16
+ import { useSuiConnect } from "./useSuiConnect.mjs";
15
17
  export {
16
18
  BridgeFormikValuesEnum,
17
19
  useAccount,
18
20
  useAmountSchema,
19
21
  useBalances,
22
+ useBridgeApiChainId,
20
23
  useBridgeFormik,
21
24
  useDebounce,
22
25
  useFetchBridgeData,
@@ -26,6 +29,7 @@ export {
26
29
  useSecondAmountSchema,
27
30
  useSendTransactions,
28
31
  useSignTransaction,
32
+ useSuiConnect,
29
33
  useTestHasEnoughFunds,
30
34
  useTestIsConnected
31
35
  };
@@ -0,0 +1,2 @@
1
+ /** Active AppKit network `chainId` normalized for bridge HTTP APIs (see `toBridgeApiChainId`). */
2
+ export declare function useBridgeApiChainId(): string | undefined;
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
4
+ const react = require("@reown/appkit/react");
5
+ const React = require("react");
6
+ const reactjs_helpers_resolveBridgeApiChainId = require("../helpers/resolveBridgeApiChainId.js");
7
+ function useBridgeApiChainId() {
8
+ const { chainId, caipNetwork } = react.useAppKitNetwork();
9
+ return React.useMemo(
10
+ () => reactjs_helpers_resolveBridgeApiChainId.toBridgeApiChainId(chainId, caipNetwork),
11
+ [chainId, caipNetwork]
12
+ );
13
+ }
14
+ exports.useBridgeApiChainId = useBridgeApiChainId;
@@ -0,0 +1,13 @@
1
+ import { useAppKitNetwork } from "@reown/appkit/react";
2
+ import { useMemo } from "react";
3
+ import { toBridgeApiChainId } from "../helpers/resolveBridgeApiChainId.mjs";
4
+ function useBridgeApiChainId() {
5
+ const { chainId, caipNetwork } = useAppKitNetwork();
6
+ return useMemo(
7
+ () => toBridgeApiChainId(chainId, caipNetwork),
8
+ [chainId, caipNetwork]
9
+ );
10
+ }
11
+ export {
12
+ useBridgeApiChainId
13
+ };
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
4
- const react = require("@reown/appkit/react");
5
4
  const React = require("react");
6
5
  const reactjs_hooks_useAccount = require("./useAccount.js");
6
+ const reactjs_hooks_useBridgeApiChainId = require("./useBridgeApiChainId.js");
7
7
  const constants_index = require("../../constants/index.js");
8
8
  const reactjs_context_useWeb3App = require("../context/useWeb3App.js");
9
9
  const reactjs_queries_useGetAllTokens_query = require("../queries/useGetAllTokens.query.js");
@@ -14,7 +14,7 @@ const useFetchTokens = ({
14
14
  mvxApiURL,
15
15
  refetchTrigger
16
16
  }) => {
17
- const { chainId } = react.useAppKitNetwork();
17
+ const bridgeApiChainId = reactjs_hooks_useBridgeApiChainId.useBridgeApiChainId();
18
18
  const account = reactjs_hooks_useAccount.useAccount();
19
19
  const { nativeAuthToken, bridgeOnly } = reactjs_context_useWeb3App.useWeb3App();
20
20
  const {
@@ -25,7 +25,7 @@ const useFetchTokens = ({
25
25
  nativeAuthToken,
26
26
  bridgeOnly
27
27
  });
28
- const evmTokens = React.useMemo(
28
+ const nonMvxTokens = React.useMemo(
29
29
  () => tokens == null ? void 0 : tokens.filter(
30
30
  (token) => !constants_index.MVX_CHAIN_IDS.includes(token.chainId.toString()) && token.chainId.toLowerCase() !== "fiat"
31
31
  ),
@@ -38,12 +38,12 @@ const useFetchTokens = ({
38
38
  [tokens]
39
39
  );
40
40
  const {
41
- data: evmTokensBalances,
42
- isLoading: isLoadingEvmTokensBalances,
43
- isError: isErrorEvmTokensBalances
41
+ data: nonMvxTokensBalances,
42
+ isLoading: isLoadingNonMvxTokensBalances,
43
+ isError: isErrorNonMvxTokensBalances
44
44
  } = reactjs_queries_useGetNonMvxTokensBalances_query.useGetNonMvxTokensBalancesQuery({
45
- tokens: evmTokens ?? [],
46
- chainId: chainId == null ? void 0 : chainId.toString()
45
+ tokens: nonMvxTokens ?? [],
46
+ chainId: bridgeApiChainId
47
47
  });
48
48
  const {
49
49
  data: mvxTokensBalances,
@@ -71,10 +71,10 @@ const useFetchTokens = ({
71
71
  };
72
72
  });
73
73
  }, [mvxTokens, mvxTokensBalances]);
74
- const evmTokensWithBalances = React.useMemo(() => {
75
- return evmTokens == null ? void 0 : evmTokens.map((token) => {
76
- const foundToken = evmTokensBalances == null ? void 0 : evmTokensBalances.find(
77
- (evmToken) => evmToken.address === token.address && evmToken.chainId === token.chainId
74
+ const nonMvxTokensWithBalances = React.useMemo(() => {
75
+ return nonMvxTokens == null ? void 0 : nonMvxTokens.map((token) => {
76
+ const foundToken = nonMvxTokensBalances == null ? void 0 : nonMvxTokensBalances.find(
77
+ (nonMvxToken) => nonMvxToken.address === token.address && nonMvxToken.chainId === token.chainId
78
78
  );
79
79
  if (!foundToken) {
80
80
  return {
@@ -87,7 +87,7 @@ const useFetchTokens = ({
87
87
  balance: foundToken.balance.toString()
88
88
  };
89
89
  });
90
- }, [evmTokens, evmTokensBalances]);
90
+ }, [nonMvxTokens, nonMvxTokensBalances]);
91
91
  React.useEffect(() => {
92
92
  if (mvxAddress) {
93
93
  reactjs_queries_useGetMvxTokensBalances_query.invalidateMvxTokensBalancesQuery();
@@ -98,13 +98,13 @@ const useFetchTokens = ({
98
98
  return;
99
99
  }
100
100
  reactjs_queries_useGetNonMvxTokensBalances_query.invalidateEvmTokensBalances();
101
- }, [refetchTrigger, chainId, account.address]);
101
+ }, [refetchTrigger, bridgeApiChainId, account.address]);
102
102
  return {
103
103
  isTokensLoading,
104
104
  isTokensError,
105
- isLoadingEvmTokensBalances,
106
- isErrorEvmTokensBalances,
107
- evmTokensWithBalances,
105
+ isLoadingEvmTokensBalances: isLoadingNonMvxTokensBalances,
106
+ isErrorEvmTokensBalances: isErrorNonMvxTokensBalances,
107
+ evmTokensWithBalances: nonMvxTokensWithBalances,
108
108
  isLoadingMvxTokensBalances,
109
109
  isErrorMvxTokensBalances,
110
110
  mvxTokensWithBalances,
@@ -1,6 +1,6 @@
1
- import { useAppKitNetwork } from "@reown/appkit/react";
2
1
  import { useMemo, useEffect } from "react";
3
2
  import { useAccount } from "./useAccount.mjs";
3
+ import { useBridgeApiChainId } from "./useBridgeApiChainId.mjs";
4
4
  import { MVX_CHAIN_IDS } from "../../constants/index.mjs";
5
5
  import { useWeb3App } from "../context/useWeb3App.mjs";
6
6
  import { useGetAllTokensQuery } from "../queries/useGetAllTokens.query.mjs";
@@ -11,7 +11,7 @@ const useFetchTokens = ({
11
11
  mvxApiURL,
12
12
  refetchTrigger
13
13
  }) => {
14
- const { chainId } = useAppKitNetwork();
14
+ const bridgeApiChainId = useBridgeApiChainId();
15
15
  const account = useAccount();
16
16
  const { nativeAuthToken, bridgeOnly } = useWeb3App();
17
17
  const {
@@ -22,7 +22,7 @@ const useFetchTokens = ({
22
22
  nativeAuthToken,
23
23
  bridgeOnly
24
24
  });
25
- const evmTokens = useMemo(
25
+ const nonMvxTokens = useMemo(
26
26
  () => tokens == null ? void 0 : tokens.filter(
27
27
  (token) => !MVX_CHAIN_IDS.includes(token.chainId.toString()) && token.chainId.toLowerCase() !== "fiat"
28
28
  ),
@@ -35,12 +35,12 @@ const useFetchTokens = ({
35
35
  [tokens]
36
36
  );
37
37
  const {
38
- data: evmTokensBalances,
39
- isLoading: isLoadingEvmTokensBalances,
40
- isError: isErrorEvmTokensBalances
38
+ data: nonMvxTokensBalances,
39
+ isLoading: isLoadingNonMvxTokensBalances,
40
+ isError: isErrorNonMvxTokensBalances
41
41
  } = useGetNonMvxTokensBalancesQuery({
42
- tokens: evmTokens ?? [],
43
- chainId: chainId == null ? void 0 : chainId.toString()
42
+ tokens: nonMvxTokens ?? [],
43
+ chainId: bridgeApiChainId
44
44
  });
45
45
  const {
46
46
  data: mvxTokensBalances,
@@ -68,10 +68,10 @@ const useFetchTokens = ({
68
68
  };
69
69
  });
70
70
  }, [mvxTokens, mvxTokensBalances]);
71
- const evmTokensWithBalances = useMemo(() => {
72
- return evmTokens == null ? void 0 : evmTokens.map((token) => {
73
- const foundToken = evmTokensBalances == null ? void 0 : evmTokensBalances.find(
74
- (evmToken) => evmToken.address === token.address && evmToken.chainId === token.chainId
71
+ const nonMvxTokensWithBalances = useMemo(() => {
72
+ return nonMvxTokens == null ? void 0 : nonMvxTokens.map((token) => {
73
+ const foundToken = nonMvxTokensBalances == null ? void 0 : nonMvxTokensBalances.find(
74
+ (nonMvxToken) => nonMvxToken.address === token.address && nonMvxToken.chainId === token.chainId
75
75
  );
76
76
  if (!foundToken) {
77
77
  return {
@@ -84,7 +84,7 @@ const useFetchTokens = ({
84
84
  balance: foundToken.balance.toString()
85
85
  };
86
86
  });
87
- }, [evmTokens, evmTokensBalances]);
87
+ }, [nonMvxTokens, nonMvxTokensBalances]);
88
88
  useEffect(() => {
89
89
  if (mvxAddress) {
90
90
  invalidateMvxTokensBalancesQuery();
@@ -95,13 +95,13 @@ const useFetchTokens = ({
95
95
  return;
96
96
  }
97
97
  invalidateEvmTokensBalances();
98
- }, [refetchTrigger, chainId, account.address]);
98
+ }, [refetchTrigger, bridgeApiChainId, account.address]);
99
99
  return {
100
100
  isTokensLoading,
101
101
  isTokensError,
102
- isLoadingEvmTokensBalances,
103
- isErrorEvmTokensBalances,
104
- evmTokensWithBalances,
102
+ isLoadingEvmTokensBalances: isLoadingNonMvxTokensBalances,
103
+ isErrorEvmTokensBalances: isErrorNonMvxTokensBalances,
104
+ evmTokensWithBalances: nonMvxTokensWithBalances,
105
105
  isLoadingMvxTokensBalances,
106
106
  isErrorMvxTokensBalances,
107
107
  mvxTokensWithBalances,
@@ -1,3 +1,3 @@
1
1
  export declare const useGenericSignMessage: () => {
2
- signMessage: (message: string) => Promise<string>;
2
+ signMessage: (message: string) => Promise<any>;
3
3
  };
@@ -10,6 +10,7 @@ const useGenericSignMessage = () => {
10
10
  const { signMessageAsync } = wagmi.useSignMessage();
11
11
  const { walletProvider: solWalletProvider } = react.useAppKitProvider("solana");
12
12
  const { walletProvider: btcWalletProvider } = react.useAppKitProvider("bip122");
13
+ const { walletProvider: suiWalletProvider } = react.useAppKitProvider("sui");
13
14
  const signMessage = async (message) => {
14
15
  if (!isConnected || !(caipNetwork == null ? void 0 : caipNetwork.chainNamespace)) {
15
16
  throw new Error("Wallet not connected or chain namespace unavailable");
@@ -29,6 +30,19 @@ const useGenericSignMessage = () => {
29
30
  message
30
31
  });
31
32
  }
33
+ case "sui": {
34
+ if (!suiWalletProvider) {
35
+ throw new Error("Sui wallet not connected");
36
+ }
37
+ const encodedMessage = new TextEncoder().encode(message);
38
+ const result = await suiWalletProvider.request({
39
+ method: "sui_signPersonalMessage",
40
+ params: {
41
+ message: Buffer.from(encodedMessage).toString("base64")
42
+ }
43
+ });
44
+ return result.signature;
45
+ }
32
46
  default:
33
47
  throw new Error(
34
48
  `Unsupported chain namespace: ${caipNetwork.chainNamespace}`
@@ -7,6 +7,7 @@ const useGenericSignMessage = () => {
7
7
  const { signMessageAsync } = useSignMessage();
8
8
  const { walletProvider: solWalletProvider } = useAppKitProvider("solana");
9
9
  const { walletProvider: btcWalletProvider } = useAppKitProvider("bip122");
10
+ const { walletProvider: suiWalletProvider } = useAppKitProvider("sui");
10
11
  const signMessage = async (message) => {
11
12
  if (!isConnected || !(caipNetwork == null ? void 0 : caipNetwork.chainNamespace)) {
12
13
  throw new Error("Wallet not connected or chain namespace unavailable");
@@ -26,6 +27,19 @@ const useGenericSignMessage = () => {
26
27
  message
27
28
  });
28
29
  }
30
+ case "sui": {
31
+ if (!suiWalletProvider) {
32
+ throw new Error("Sui wallet not connected");
33
+ }
34
+ const encodedMessage = new TextEncoder().encode(message);
35
+ const result = await suiWalletProvider.request({
36
+ method: "sui_signPersonalMessage",
37
+ params: {
38
+ message: Buffer.from(encodedMessage).toString("base64")
39
+ }
40
+ });
41
+ return result.signature;
42
+ }
29
43
  default:
30
44
  throw new Error(
31
45
  `Unsupported chain namespace: ${caipNetwork.chainNamespace}`