@matchain/matchid-sdk-react 0.1.48-alpha.3 → 0.1.48-alpha.30

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 (73) hide show
  1. package/dist/assets/icon/index.d.mts +12 -2
  2. package/dist/assets/icon/index.d.ts +12 -2
  3. package/dist/assets/icon/index.js +93 -2
  4. package/dist/assets/icon/index.js.map +1 -1
  5. package/dist/assets/icon/index.mjs +9 -1
  6. package/dist/chunk-5JHHHLG4.mjs +136 -0
  7. package/dist/chunk-5JHHHLG4.mjs.map +1 -0
  8. package/dist/{chunk-LNSJ3ZXG.mjs → chunk-FB5MHLWX.mjs} +75 -42
  9. package/dist/chunk-FB5MHLWX.mjs.map +1 -0
  10. package/dist/{chunk-V3WGYFWQ.mjs → chunk-KIVNILBF.mjs} +2307 -668
  11. package/dist/chunk-KIVNILBF.mjs.map +1 -0
  12. package/dist/{chunk-A5D3NKTK.mjs → chunk-LHNKZISB.mjs} +91 -4
  13. package/dist/chunk-LHNKZISB.mjs.map +1 -0
  14. package/dist/{chunk-LPQROHSB.mjs → chunk-YJV23RET.mjs} +2 -2
  15. package/dist/components/index.d.mts +4 -3
  16. package/dist/components/index.d.ts +4 -3
  17. package/dist/components/index.js +2262 -529
  18. package/dist/components/index.js.map +1 -1
  19. package/dist/components/index.mjs +14 -3
  20. package/dist/hooks/api/index.d.mts +2 -2
  21. package/dist/hooks/api/index.d.ts +2 -2
  22. package/dist/hooks/api/index.js +390 -193
  23. package/dist/hooks/api/index.js.map +1 -1
  24. package/dist/hooks/api/index.mjs +5 -4
  25. package/dist/hooks/index.d.mts +4 -2
  26. package/dist/hooks/index.d.ts +4 -2
  27. package/dist/hooks/index.js +1862 -245
  28. package/dist/hooks/index.js.map +1 -1
  29. package/dist/hooks/index.mjs +10 -3
  30. package/dist/index-BMfaixEx.d.mts +66 -0
  31. package/dist/{index-DCeOyAw8.d.ts → index-BMsj8hJv.d.ts} +4 -3
  32. package/dist/{index-Bzcc-y8m.d.ts → index-BcEreCxd.d.ts} +1 -1
  33. package/dist/index-Bpmrd7mh.d.ts +66 -0
  34. package/dist/{index-BHvCA7F9.d.ts → index-Bvc8cjpN.d.ts} +34 -4
  35. package/dist/{index-BvLpvebq.d.mts → index-C9F6f2iz.d.mts} +4 -3
  36. package/dist/{index-BZrddrq-.d.mts → index-C9qYyRgt.d.mts} +34 -4
  37. package/dist/{index-DbG5IjhP.d.mts → index-Cou96DpL.d.mts} +1 -1
  38. package/dist/{index-Cwx2p8th.d.ts → index-Cy3K-Yao.d.ts} +31 -8
  39. package/dist/{index-B8DYrhSW.d.mts → index-D4ju2J_e.d.mts} +31 -8
  40. package/dist/index-DUHkH5t-.d.mts +3317 -0
  41. package/dist/index-DcQm2dkr.d.ts +3317 -0
  42. package/dist/index.css +620 -6
  43. package/dist/index.d.mts +9 -8
  44. package/dist/index.d.ts +9 -8
  45. package/dist/index.js +2875 -1041
  46. package/dist/index.js.map +1 -1
  47. package/dist/index.mjs +11 -10
  48. package/dist/types/index.d.mts +2 -1
  49. package/dist/types/index.d.ts +2 -1
  50. package/dist/{types-CHkU0WHZ.d.mts → types-DzVVzMYU.d.mts} +74 -36
  51. package/dist/{types-CHkU0WHZ.d.ts → types-DzVVzMYU.d.ts} +74 -36
  52. package/dist/ui/index.d.mts +4 -3
  53. package/dist/ui/index.d.ts +4 -3
  54. package/dist/ui/index.js +140 -95
  55. package/dist/ui/index.js.map +1 -1
  56. package/dist/ui/index.mjs +2 -2
  57. package/dist/utils/index.d.mts +26 -0
  58. package/dist/utils/index.d.ts +26 -0
  59. package/dist/utils/index.js +181 -0
  60. package/dist/utils/index.js.map +1 -0
  61. package/dist/utils/index.mjs +30 -0
  62. package/dist/utils/index.mjs.map +1 -0
  63. package/example/src/pages/Wallet/components/MatchWallet.tsx +45 -9
  64. package/example/src/pages/Wallet/index.tsx +2 -1
  65. package/package.json +7 -1
  66. package/dist/chunk-A5D3NKTK.mjs.map +0 -1
  67. package/dist/chunk-LNSJ3ZXG.mjs.map +0 -1
  68. package/dist/chunk-V3WGYFWQ.mjs.map +0 -1
  69. package/dist/index-B-s1k4Da.d.mts +0 -59
  70. package/dist/index-DG_gyw1q.d.ts +0 -59
  71. package/dist/index-DKyt0for.d.mts +0 -181
  72. package/dist/index-TkB89QxX.d.ts +0 -181
  73. /package/dist/{chunk-LPQROHSB.mjs.map → chunk-YJV23RET.mjs.map} +0 -0
@@ -1,4 +1,5 @@
1
1
  import {
2
+ AlphaAvatar,
2
3
  Button,
3
4
  Field,
4
5
  HashPanel_default,
@@ -9,13 +10,28 @@ import {
9
10
  Overlay,
10
11
  Popover,
11
12
  Radio,
13
+ fail_default,
12
14
  matchlog_default,
15
+ success_default,
13
16
  useDownMd,
17
+ useHash,
14
18
  useLayout_exports
15
- } from "./chunk-LNSJ3ZXG.mjs";
19
+ } from "./chunk-FB5MHLWX.mjs";
20
+ import {
21
+ NumberFormatter,
22
+ encodeBase64,
23
+ formatAddress,
24
+ formatDate,
25
+ getAppClientId,
26
+ getVersion,
27
+ isValidEmail,
28
+ isValidUsername,
29
+ truncateAddress
30
+ } from "./chunk-5JHHHLG4.mjs";
16
31
  import {
17
32
  ArrowDownIcon,
18
33
  ArrowRightIcon,
34
+ ArrowSendIcon,
19
35
  BTCDarkIcon,
20
36
  BTCLightIcon,
21
37
  BitgetIcon,
@@ -32,8 +48,11 @@ import {
32
48
  FacebookIcon,
33
49
  GithubIcon,
34
50
  GoogleIcon,
51
+ InfoLineIcon,
52
+ InfoRoundIcon,
35
53
  LeatherIcon,
36
54
  LinkedinIcon,
55
+ LoadingIcon_default,
37
56
  LoginIcon_default,
38
57
  OKXIcon,
39
58
  SOLDarkIcon,
@@ -43,6 +62,7 @@ import {
43
62
  TelegramIcon,
44
63
  TonLightIcon,
45
64
  TonLightIcon2,
65
+ TransferIcon,
46
66
  TronLinkIcon,
47
67
  UnLoginIcon_default,
48
68
  UnisatIcon,
@@ -50,7 +70,7 @@ import {
50
70
  XIcon,
51
71
  XverseIcon,
52
72
  YoutubeIcon
53
- } from "./chunk-A5D3NKTK.mjs";
73
+ } from "./chunk-LHNKZISB.mjs";
54
74
  import {
55
75
  __export
56
76
  } from "./chunk-J5LGTIGS.mjs";
@@ -74,42 +94,20 @@ __export(components_exports, {
74
94
  SOLModal: () => SOLModal,
75
95
  TONModal: () => TONModal,
76
96
  TRONModal: () => TRONModal,
97
+ TokenDetail: () => TokenDetail,
98
+ TokenSend: () => TokenSend,
99
+ TokenSendList: () => TokenSendList,
100
+ TransactionList: () => TransactionList,
77
101
  UsernameModal: () => UsernameModal,
102
+ WalletAsset: () => WalletAsset,
78
103
  WalletModal: () => WalletModal
79
104
  });
80
105
 
81
106
  // src/components/EmailModal/index.tsx
82
- import { useEffect as useEffect13, useState as useState12 } from "react";
107
+ import { useEffect as useEffect15, useState as useState14 } from "react";
83
108
 
84
109
  // src/components/EmailModal/StepEmail.tsx
85
110
  import { useEffect, useMemo, useState } from "react";
86
-
87
- // src/utils/index.ts
88
- var getVersion = () => {
89
- return "0.0.2";
90
- };
91
- function encodeBase64(input) {
92
- return btoa(unescape(encodeURIComponent(input)));
93
- }
94
- var isValidEmail = (email) => {
95
- return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);
96
- };
97
- var isValidUsername = (username) => {
98
- return /^[a-zA-Z0-9_-]+$/.test(username);
99
- };
100
- function truncateAddress(address2) {
101
- if (address2.length <= 6) {
102
- return address2;
103
- }
104
- const start = address2.slice(0, 4);
105
- const end = address2.slice(-2);
106
- return `${start}...${end}`;
107
- }
108
- function getAppClientId() {
109
- return "react-sdk-" + getVersion();
110
- }
111
-
112
- // src/components/EmailModal/StepEmail.tsx
113
111
  import { FormattedMessage, useIntl } from "react-intl";
114
112
  import { jsx, jsxs } from "react/jsx-runtime";
115
113
  function StepEmail(props) {
@@ -370,11 +368,11 @@ var unBindApi = ({ type }) => {
370
368
  data: { type }
371
369
  });
372
370
  };
373
- var unBindWalletApi = ({ address: address2 }) => {
371
+ var unBindWalletApi = ({ address }) => {
374
372
  return request_default({
375
373
  url: `/api/v1/wallet/unbind`,
376
374
  method: "POST",
377
- data: { address: address2 }
375
+ data: { address }
378
376
  });
379
377
  };
380
378
  var verifyPohApi = ({
@@ -432,7 +430,7 @@ var getWalletNonceApi = (data) => {
432
430
  };
433
431
  var loginByWalletApi = ({
434
432
  type,
435
- address: address2,
433
+ address,
436
434
  signature,
437
435
  message,
438
436
  connector_type,
@@ -441,7 +439,7 @@ var loginByWalletApi = ({
441
439
  return request_default({
442
440
  url: `/api/v1/login/wallet`,
443
441
  method: "POST",
444
- data: { type, address: address2, signature, message, connector_type, wallet_client_type }
442
+ data: { type, address, signature, message, connector_type, wallet_client_type }
445
443
  });
446
444
  };
447
445
  var getWalletInitApi = (data) => {
@@ -453,7 +451,7 @@ var getWalletInitApi = (data) => {
453
451
  };
454
452
  var toBindWalletApi = ({
455
453
  type,
456
- address: address2,
454
+ address,
457
455
  signature,
458
456
  message,
459
457
  connector_type,
@@ -462,7 +460,7 @@ var toBindWalletApi = ({
462
460
  return request_default({
463
461
  url: `/api/v1/wallet/bind`,
464
462
  method: "POST",
465
- data: { type, address: address2, signature, message, connector_type, wallet_client_type }
463
+ data: { type, address, signature, message, connector_type, wallet_client_type }
466
464
  });
467
465
  };
468
466
  var getAppConfigApi = () => {
@@ -525,6 +523,13 @@ var getWalletChainListApi = () => {
525
523
  method: "POST"
526
524
  });
527
525
  };
526
+ var getWalletNftListApi = (data) => {
527
+ return request_default({
528
+ url: `/api/v1/wallet/nfts`,
529
+ method: "POST",
530
+ data
531
+ });
532
+ };
528
533
 
529
534
  // src/store/useLocalStore.ts
530
535
  var persistedState = persist(
@@ -558,11 +563,11 @@ var persistedState = persist(
558
563
  setToken: (token) => set({ token }),
559
564
  setAppid: (appid) => set({ appid }),
560
565
  setMid: (mid) => set({ mid }),
561
- logout: () => set({ token: "", did: "", mid: "", address: "", overview: null }),
566
+ logout: () => set({ token: "", did: "", mid: "", address: "", overview: null, assets: [] }),
562
567
  setTheme: (theme) => set({ theme }),
563
568
  setEndpoints: (endpoints) => set({ endpoints }),
564
569
  address: "",
565
- setAddress: (address2) => set({ address: address2 }),
570
+ setAddress: (address) => set({ address }),
566
571
  locale: "en",
567
572
  setLocale: (locale) => set({ locale }),
568
573
  wallet: {
@@ -570,7 +575,9 @@ var persistedState = persist(
570
575
  },
571
576
  setWallet: (wallet) => set({ wallet }),
572
577
  chainId: 698,
573
- setChainId: (chainId) => set({ chainId })
578
+ setChainId: (chainId) => set({ chainId }),
579
+ assets: [],
580
+ setAssets: (assets) => set({ assets })
574
581
  }),
575
582
  { name: "match-local" }
576
583
  );
@@ -579,7 +586,7 @@ var localStore = useLocalStore;
579
586
  var useLocalStore_default = useLocalStore;
580
587
 
581
588
  // src/hooks/useUserInfo.tsx
582
- import { useMemo as useMemo6 } from "react";
589
+ import { useMemo as useMemo7 } from "react";
583
590
 
584
591
  // src/MatchContext.tsx
585
592
  import { createContext as createContext3, useContext as useContext3 } from "react";
@@ -592,10 +599,13 @@ __export(hooks_exports, {
592
599
  useMatchChain: () => useMatchChain,
593
600
  useMatchEvents: () => useMatchEvents,
594
601
  useMatchWallet: () => useMatchWallet,
602
+ useMatchWalletAssetList: () => useMatchWalletAssetList,
603
+ useMatchWalletAssets: () => useMatchWalletAssets,
595
604
  useMatchWalletRecords: () => useMatchWalletRecords,
596
605
  useModal: () => useModal,
597
606
  useReceipt: () => useReceipt,
598
607
  useToast: () => useToast,
608
+ useTransaction: () => useTransaction,
599
609
  useUserInfo: () => useUserInfo,
600
610
  useWallet: () => useWallet
601
611
  });
@@ -668,108 +678,112 @@ import { createWalletClient } from "viem";
668
678
  import { useEffect as useEffect3, useMemo as useMemo2 } from "react";
669
679
  import { encodeDeployData } from "viem";
670
680
 
671
- // src/store/useModalStore.ts
672
- import { create as create3 } from "zustand";
681
+ // src/context/ModalContext.tsx
682
+ import { useState as useState2, useCallback, createContext, useContext } from "react";
683
+ import { createPortal } from "react-dom";
684
+ import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
685
+ var ModalContext = createContext(null);
686
+ function ModalProvider({ children }) {
687
+ const [modalState, setModalState] = useState2({
688
+ modals: [],
689
+ highestZIndex: 100
690
+ });
691
+ const getNextIndex = useCallback(() => {
692
+ return Math.max(...modalState.modals.map((modal) => modal.index), 0) + 1 || 100;
693
+ }, [modalState]);
694
+ const closeModal = useCallback((index) => {
695
+ setModalState((prevState) => ({
696
+ modals: prevState.modals.filter((modal) => modal.index !== index),
697
+ highestZIndex: prevState.highestZIndex
698
+ }));
699
+ }, []);
700
+ const show = useCallback((content, index) => {
701
+ setModalState((prevState) => {
702
+ const modalIndex = index !== void 0 ? index : getNextIndex();
703
+ const newZIndex = prevState.highestZIndex + 1;
704
+ return {
705
+ modals: [...prevState.modals, {
706
+ visible: true,
707
+ index: modalIndex,
708
+ zIndex: newZIndex,
709
+ content: content({ close: () => closeModal(modalIndex), zIndex: newZIndex })
710
+ }],
711
+ highestZIndex: newZIndex
712
+ };
713
+ });
714
+ }, [getNextIndex, closeModal]);
715
+ const open = useCallback((props) => {
716
+ setModalState((prevState) => {
717
+ const modalIndex = props.index !== void 0 ? props.index : getNextIndex();
718
+ const newZIndex = prevState.highestZIndex + 1;
719
+ return {
720
+ modals: [...prevState.modals, {
721
+ visible: true,
722
+ index: modalIndex,
723
+ zIndex: newZIndex,
724
+ content: /* @__PURE__ */ jsx2(ModalDrawer, { showClose: true, isOpen: true, onClose: () => closeModal(modalIndex), title: props.title, zIndex: newZIndex, onBack: props.onBack, children: /* @__PURE__ */ jsx2(props.content, { close: () => closeModal(modalIndex), zIndex: newZIndex }) })
725
+ }],
726
+ highestZIndex: newZIndex
727
+ };
728
+ });
729
+ }, [getNextIndex, closeModal]);
730
+ const modalElements = modalState.modals.sort((a, b) => b.zIndex - a.zIndex).map(
731
+ (modal) => modal.visible ? createPortal(
732
+ modal.content,
733
+ document.body
734
+ ) : null
735
+ );
736
+ return /* @__PURE__ */ jsxs2(ModalContext.Provider, { value: { show, open }, children: [
737
+ children,
738
+ modalElements
739
+ ] });
740
+ }
741
+ function useModal() {
742
+ const context = useContext(ModalContext);
743
+ if (!context) {
744
+ throw new Error("useModal must be used within a ModalProvider");
745
+ }
746
+ return context;
747
+ }
673
748
 
674
- // src/hooks/useConfig.tsx
675
- import { jsx as jsx2 } from "react/jsx-runtime";
676
- var DEFAULT_WALLET_METHODS = ["evm", "sol", "btc", "tron", "ton"];
677
- var WALLET_METHODS = ["evm", "sol", "btc", "tron", "ton"];
678
- function useWalletConfig() {
679
- const isDownMd = useDownMd();
680
- const walletMap = {
681
- evm: {
682
- icon: /* @__PURE__ */ jsx2(EVMDarkIcon, { size: isDownMd ? 36 : 40 }),
683
- activeIcon: /* @__PURE__ */ jsx2(EVMLightIcon, { size: isDownMd ? 36 : 40 }),
684
- name: "EVM",
685
- method: "evm"
686
- },
687
- sol: {
688
- icon: /* @__PURE__ */ jsx2(SOLDarkIcon, { size: isDownMd ? 36 : 40 }),
689
- activeIcon: /* @__PURE__ */ jsx2(SOLLightIcon, { size: isDownMd ? 36 : 40 }),
690
- name: "SOL",
691
- method: "sol"
692
- },
693
- btc: {
694
- icon: /* @__PURE__ */ jsx2(BTCDarkIcon, { size: isDownMd ? 36 : 40 }),
695
- activeIcon: /* @__PURE__ */ jsx2(BTCLightIcon, { size: isDownMd ? 36 : 40 }),
696
- name: "BTC",
697
- method: "btc"
698
- },
699
- tron: {
700
- icon: /* @__PURE__ */ jsx2(TRXDarkIcon, { size: isDownMd ? 36 : 40 }),
701
- activeIcon: /* @__PURE__ */ jsx2(TRXLightIcon, { size: isDownMd ? 36 : 40 }),
702
- name: "TRON",
703
- method: "tron"
749
+ // src/store/useTransactionStore.ts
750
+ import { create as create3 } from "zustand";
751
+ import { devtools as devtools2, persist as persist2 } from "zustand/middleware";
752
+ var persistedState2 = persist2(
753
+ (set, get) => ({
754
+ transactions: {},
755
+ addTransaction: (data) => {
756
+ set((state) => {
757
+ const updatedTransactions = {
758
+ ...state.transactions,
759
+ [`${data.chainId}-${data.address}`]: [data.info, ...state.transactions[`${data.chainId}-${data.address}`] || []]
760
+ };
761
+ return { transactions: updatedTransactions };
762
+ });
704
763
  },
705
- ton: {
706
- icon: /* @__PURE__ */ jsx2(TonLightIcon, { size: isDownMd ? 36 : 40 }),
707
- activeIcon: /* @__PURE__ */ jsx2(TonLightIcon2, { size: isDownMd ? 36 : 40 }),
708
- name: "TON",
709
- method: "ton"
764
+ removeTransaction: (data) => {
765
+ set((state) => {
766
+ const updatedTransactions = {
767
+ ...state.transactions,
768
+ [`${data.chainId}-${data.address}`]: (state.transactions[`${data.chainId}-${data.address}`] || []).filter((tx) => tx.hash !== data.hash)
769
+ };
770
+ return { transactions: updatedTransactions };
771
+ });
710
772
  }
711
- };
712
- return {
713
- walletMap
714
- };
715
- }
716
-
717
- // src/store/useModalStore.ts
718
- var useSOLModalStore = create3((set) => ({
719
- isOpen: false,
720
- type: "",
721
- open: (type) => set({ isOpen: true, type }),
722
- close: () => set({ isOpen: false })
723
- }));
724
- var useTRONModalStore = create3((set) => ({
725
- isOpen: false,
726
- type: "",
727
- open: (type) => set({ isOpen: true, type }),
728
- close: () => set({ isOpen: false })
729
- }));
730
- var useTONModalStore = create3((set) => ({
731
- isOpen: false,
732
- type: "",
733
- open: (type) => set({ isOpen: true, type }),
734
- close: () => set({ isOpen: false })
735
- }));
736
- var useBTCModalStore = create3((set) => ({
737
- isOpen: false,
738
- type: "",
739
- open: (type) => set({ isOpen: true, type }),
740
- close: () => set({ isOpen: false })
741
- }));
742
- var useCEXBindModalStore = create3((set) => ({
743
- type: "",
744
- isOpen: false,
745
- open: (type) => set({ isOpen: true, type }),
746
- close: () => set({ isOpen: false })
747
- }));
748
- var useHashPanelStore = create3((set) => ({
749
- isOpen: false,
750
- hash: null,
751
- chain: null,
752
- open: (params) => set({
753
- isOpen: true,
754
- hash: params?.hash || null,
755
- chain: params?.chain || null
756
773
  }),
757
- close: () => set({ isOpen: false })
758
- }));
759
- var useWalletModalStore = create3((set) => ({
760
- isOpen: false,
761
- type: "",
762
- methods: [],
763
- open: (type, methods = DEFAULT_WALLET_METHODS) => set({ isOpen: true, type, methods }),
764
- close: () => set({ isOpen: false })
765
- }));
774
+ { name: "match-transactions-local" }
775
+ );
776
+ var useTransactionStore = create3(devtools2(persistedState2));
777
+ var useTransactionStore_default = useTransactionStore;
766
778
 
767
779
  // src/hooks/useWallet.tsx
780
+ import { jsx as jsx3 } from "react/jsx-runtime";
768
781
  var AppClientId = "react-sdk-" + getVersion();
769
782
  function useWallet() {
770
- const { address: address2, wallet: walletConfig } = useLocalStore_default();
783
+ const { address, wallet: walletConfig } = useLocalStore_default();
771
784
  const { walletReady } = useStore_default();
772
- const { open: openHashPanel } = useHashPanelStore();
785
+ const modal = useModal();
786
+ const { addTransaction } = useTransactionStore_default();
773
787
  const isRecovered = async () => {
774
788
  const res = await window.matchProvider.waitUntilWalletMessage({
775
789
  method: "isRecovered"
@@ -815,39 +829,44 @@ function useWallet() {
815
829
  }
816
830
  };
817
831
  const evmAccount = useMemo2(() => {
818
- return address2 ? toAccount({
819
- address: address2,
820
- async signMessage({ message }) {
821
- return await signMessage2({
822
- message,
823
- chainType: "ethereum" /* Ethereum */
824
- });
825
- },
826
- async signTransaction(transaction, options) {
827
- const { account, chain, ...restTransaction } = transaction;
828
- console.log("qwe-sign-transaction", restTransaction, options);
829
- return await signTransaction({
830
- transaction: {
831
- ...restTransaction
832
- },
833
- chainType: "ethereum" /* Ethereum */,
834
- chain: {
835
- id: chain?.id || restTransaction.chainId,
836
- name: chain?.name,
837
- nativeCurrency: {
838
- name: chain?.nativeCurrency?.name || "ETH",
839
- symbol: chain?.nativeCurrency?.symbol || "ETH",
840
- decimals: chain?.nativeCurrency?.decimals || 18
832
+ try {
833
+ return address ? toAccount({
834
+ address,
835
+ async signMessage({ message }) {
836
+ return await signMessage2({
837
+ message,
838
+ chainType: "ethereum" /* Ethereum */
839
+ });
840
+ },
841
+ async signTransaction(transaction, options) {
842
+ const { account, chain, ...restTransaction } = transaction;
843
+ console.log("qwe-sign-transaction", restTransaction, options);
844
+ return await signTransaction({
845
+ transaction: {
846
+ ...restTransaction
841
847
  },
842
- rpcUrls: chain?.rpcUrls
843
- }
844
- });
845
- },
846
- async signTypedData(typedData) {
847
- return "0x";
848
- }
849
- }) : void 0;
850
- }, [address2]);
848
+ chainType: "ethereum" /* Ethereum */,
849
+ chain: {
850
+ id: chain?.id || restTransaction.chainId,
851
+ name: chain?.name,
852
+ nativeCurrency: {
853
+ name: chain?.nativeCurrency?.name || "ETH",
854
+ symbol: chain?.nativeCurrency?.symbol || "ETH",
855
+ decimals: chain?.nativeCurrency?.decimals || 18
856
+ },
857
+ rpcUrls: chain?.rpcUrls
858
+ }
859
+ });
860
+ },
861
+ async signTypedData(typedData) {
862
+ return "0x";
863
+ }
864
+ }) : void 0;
865
+ } catch (error) {
866
+ console.error(`qwe-evm-account-error ${address}`, error);
867
+ return void 0;
868
+ }
869
+ }, [address]);
851
870
  useEffect3(() => {
852
871
  matchlog_default.log("qwe-evmAccount", evmAccount);
853
872
  }, [evmAccount]);
@@ -913,13 +932,25 @@ function useWallet() {
913
932
  prepareTransactionRequest
914
933
  }
915
934
  });
916
- openHashPanel();
917
935
  const txHash = await obj.sendRawTransaction({
918
936
  serializedTransaction
919
937
  });
920
- openHashPanel({
938
+ addTransaction({
939
+ chainId,
921
940
  hash: txHash,
922
- chain: _chain
941
+ info: {
942
+ from: evmAccount.address,
943
+ to: restTransaction.to,
944
+ value: (restTransaction.value || 0).toString(),
945
+ input: restTransaction.data,
946
+ timestamp: Math.floor(Date.now() / 1e3).toString(),
947
+ hash: txHash,
948
+ source: "local"
949
+ },
950
+ address: evmAccount.address
951
+ });
952
+ modal.show((props) => {
953
+ return /* @__PURE__ */ jsx3(HashPanel_default, { isOpen: true, onClose: props.close, zIndex: props.zIndex, hash: txHash, chain: _chain });
923
954
  });
924
955
  clearInterval(window.matchProvider.transactionMessageIntervalMap[transactionId].interval);
925
956
  delete window.matchProvider.transactionMessageIntervalMap[transactionId];
@@ -940,7 +971,7 @@ function useWallet() {
940
971
  });
941
972
  };
942
973
  const writeContract = async (parameters2) => {
943
- const { abi, address: address3, args, dataSuffix, functionName, ...request3 } = parameters2;
974
+ const { abi, address: address2, args, dataSuffix, functionName, ...request3 } = parameters2;
944
975
  const data = encodeFunctionData({
945
976
  abi,
946
977
  args,
@@ -948,7 +979,7 @@ function useWallet() {
948
979
  });
949
980
  return await sendTransaction({
950
981
  data: `${data}${dataSuffix ? dataSuffix.replace("0x", "") : ""}`,
951
- to: address3,
982
+ to: address2,
952
983
  ...request3
953
984
  });
954
985
  };
@@ -962,7 +993,7 @@ function useWallet() {
962
993
  return {
963
994
  walletReady,
964
995
  evmAccount,
965
- address: address2,
996
+ address,
966
997
  signMessage: signMessage2,
967
998
  signTransaction,
968
999
  isRecovered,
@@ -972,10 +1003,10 @@ function useWallet() {
972
1003
 
973
1004
  // src/hooks/useCopyClipboard.ts
974
1005
  import copy from "copy-to-clipboard";
975
- import { useCallback, useEffect as useEffect4, useState as useState3 } from "react";
1006
+ import { useCallback as useCallback2, useEffect as useEffect4, useState as useState4 } from "react";
976
1007
  function useCopyClipboard(timeout = 500) {
977
- const [isCopied, setIsCopied] = useState3(false);
978
- const staticCopy = useCallback((text) => {
1008
+ const [isCopied, setIsCopied] = useState4(false);
1009
+ const staticCopy = useCallback2((text) => {
979
1010
  const didCopy = copy(text);
980
1011
  setIsCopied(didCopy);
981
1012
  }, []);
@@ -993,48 +1024,6 @@ function useCopyClipboard(timeout = 500) {
993
1024
  return [isCopied, staticCopy];
994
1025
  }
995
1026
 
996
- // src/context/ModalContext.tsx
997
- import { useState as useState4, useCallback as useCallback2, createContext, useContext } from "react";
998
- import { createPortal } from "react-dom";
999
- import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
1000
- var ModalContext = createContext(null);
1001
- function ModalProvider({ children }) {
1002
- const [showModalState, setShowModalState] = useState4({
1003
- visible: false,
1004
- content: null
1005
- });
1006
- const closeShowModal = useCallback2(() => {
1007
- setShowModalState({ visible: false, content: null });
1008
- }, []);
1009
- const show = useCallback2((content) => {
1010
- setShowModalState({
1011
- visible: true,
1012
- content: content({ close: closeShowModal })
1013
- });
1014
- }, [closeShowModal]);
1015
- const open = useCallback2((props) => {
1016
- setShowModalState({
1017
- visible: true,
1018
- content: /* @__PURE__ */ jsx3(ModalDrawer, { showClose: true, isOpen: true, onClose: closeShowModal, title: props.title, children: /* @__PURE__ */ jsx3(props.content, { close: closeShowModal }) })
1019
- });
1020
- }, [closeShowModal]);
1021
- const ShowModalComponent = showModalState.visible ? createPortal(
1022
- showModalState.content,
1023
- document.body
1024
- ) : null;
1025
- return /* @__PURE__ */ jsxs2(ModalContext.Provider, { value: { show, open }, children: [
1026
- children,
1027
- ShowModalComponent
1028
- ] });
1029
- }
1030
- function useModal() {
1031
- const context = useContext(ModalContext);
1032
- if (!context) {
1033
- throw new Error("useModal must be used within a ModalProvider");
1034
- }
1035
- return context;
1036
- }
1037
-
1038
1027
  // src/context/ToastContext.tsx
1039
1028
  import { useState as useState5, useCallback as useCallback3, createContext as createContext2, useContext as useContext2 } from "react";
1040
1029
  import { createPortal as createPortal2 } from "react-dom";
@@ -1088,20 +1077,23 @@ function useToast() {
1088
1077
  // src/hooks/api/wallet.ts
1089
1078
  var wallet_exports = {};
1090
1079
  __export(wallet_exports, {
1080
+ USER_IMPORT_TOKEN_LIST_KEY: () => USER_IMPORT_TOKEN_LIST_KEY,
1091
1081
  getUserWalletTransactionsApi: () => getUserWalletTransactionsApi,
1092
1082
  getWalletAssetListApi: () => getWalletAssetListApi,
1093
1083
  getWalletListApi: () => getWalletListApi,
1094
1084
  useAssetListQuery: () => useAssetListQuery,
1095
1085
  useChainListQuery: () => useChainListQuery,
1096
1086
  useImportTokenListQuery: () => useImportTokenListQuery,
1087
+ useWalletAssetListQuery: () => useWalletAssetListQuery,
1097
1088
  useWalletChainListQuery: () => useWalletChainListQuery,
1089
+ useWalletNftListQuery: () => useWalletNftListQuery,
1098
1090
  userImportTokenApi: () => userImportTokenApi
1099
1091
  });
1100
1092
  import { useQuery } from "@tanstack/react-query";
1101
1093
  function useChainListQuery(options) {
1102
1094
  const { isLogin, token } = useUserInfo();
1103
1095
  return useQuery({
1104
- queryKey: ["match-chain-list", token],
1096
+ queryKey: ["match-user-chain-list", token],
1105
1097
  queryFn: async () => {
1106
1098
  const res = await getUserChainListApi();
1107
1099
  if (!isSuccess(res)) {
@@ -1119,7 +1111,7 @@ function useAssetListQuery({
1119
1111
  }) {
1120
1112
  const { isLogin, token } = useUserInfo();
1121
1113
  return useQuery({
1122
- queryKey: ["match-wallet-asset-list", token, chainId],
1114
+ queryKey: ["match-user-asset-list", token, chainId],
1123
1115
  queryFn: async () => {
1124
1116
  const res = await getUserWalletAssetApi({ chain_id: chainId.toString() });
1125
1117
  if (!isSuccess(res)) {
@@ -1131,13 +1123,14 @@ function useAssetListQuery({
1131
1123
  ...options
1132
1124
  });
1133
1125
  }
1126
+ var USER_IMPORT_TOKEN_LIST_KEY = "match-user-import-token-list";
1134
1127
  function useImportTokenListQuery({
1135
1128
  chainId,
1136
1129
  ...options
1137
1130
  }) {
1138
1131
  const { isLogin, token } = useUserInfo();
1139
1132
  return useQuery({
1140
- queryKey: ["match-wallet-import-token-list", token, chainId],
1133
+ queryKey: [USER_IMPORT_TOKEN_LIST_KEY, token, chainId],
1141
1134
  queryFn: async () => {
1142
1135
  const res = await getUserImportTokenListApi({ chain_id: chainId.toString() });
1143
1136
  if (!isSuccess(res)) {
@@ -1164,9 +1157,54 @@ function useWalletChainListQuery(options) {
1164
1157
  ...options
1165
1158
  });
1166
1159
  }
1160
+ function useWalletNftListQuery({
1161
+ chainId,
1162
+ address,
1163
+ ...options
1164
+ }) {
1165
+ const { isLogin, token } = useUserInfo();
1166
+ return useQuery({
1167
+ queryKey: ["match-wallet-nft-list", token, chainId, address],
1168
+ queryFn: async () => {
1169
+ const res = await getWalletNftListApi({
1170
+ chain_id: chainId.toString(),
1171
+ address
1172
+ });
1173
+ if (!isSuccess(res)) {
1174
+ return [];
1175
+ }
1176
+ return res.data;
1177
+ },
1178
+ enabled: isLogin,
1179
+ ...options
1180
+ });
1181
+ }
1182
+ function useWalletAssetListQuery({
1183
+ chainId,
1184
+ address,
1185
+ ...options
1186
+ }) {
1187
+ const { isLogin, token } = useUserInfo();
1188
+ return useQuery({
1189
+ queryKey: ["match-wallet-asset-list", token, chainId, address],
1190
+ queryFn: async () => {
1191
+ const res = await getWalletAssetListApi({
1192
+ chain_id: chainId,
1193
+ address
1194
+ });
1195
+ if (!isSuccess(res)) {
1196
+ return null;
1197
+ }
1198
+ return res.data;
1199
+ },
1200
+ enabled: isLogin,
1201
+ ...options
1202
+ });
1203
+ }
1167
1204
 
1168
1205
  // src/hooks/useMatchChain.tsx
1169
1206
  import { useMemo as useMemo3, useState as useState6 } from "react";
1207
+ import { createPublicClient as createPublicClient2, formatUnits, http as http2, parseUnits } from "viem";
1170
1208
  import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
1171
1209
  function useMatchChain() {
1172
1210
  const chainListQuery = useChainListQuery();
@@ -1226,120 +1264,685 @@ function useMatchChain() {
1226
1264
  content: ChangeNetwork
1227
1265
  });
1228
1266
  };
1267
+ const publicClient = useMemo3(() => {
1268
+ if (!chain) {
1269
+ return null;
1270
+ }
1271
+ return createPublicClient2({
1272
+ chain,
1273
+ transport: http2()
1274
+ });
1275
+ }, [chain]);
1229
1276
  return {
1230
1277
  list: chainListQuery.data,
1231
1278
  chainId,
1232
1279
  setChainId,
1233
1280
  chain,
1234
1281
  explorerLink,
1235
- showChangeNetwork
1282
+ showChangeNetwork,
1283
+ publicClient,
1284
+ formatUnits: (value) => {
1285
+ return formatUnits(value, chain?.nativeCurrency.decimals || 18);
1286
+ },
1287
+ parseUnits: (value) => {
1288
+ return parseUnits(value, chain?.nativeCurrency.decimals || 18);
1289
+ }
1236
1290
  };
1237
1291
  }
1238
1292
 
1239
1293
  // src/hooks/useMatchWallet.tsx
1240
1294
  import { QRCode } from "react-qrcode";
1241
- import { useEffect as useEffect6, useState as useState7 } from "react";
1295
+ import { useEffect as useEffect7, useMemo as useMemo5, useRef, useState as useState8 } from "react";
1296
+ import { useQuery as useQuery3 } from "@tanstack/react-query";
1242
1297
 
1243
- // example/src/config/contract.ts
1244
- var address = "0x4143e29770fd63e24bb1f32d50bf8a590e34de4b";
1298
+ // src/config/index.tsx
1299
+ var EMAIL_INTERVAL = 60;
1300
+ var EMAIL_CODE_LENGTH = 6;
1301
+ var NATIVE_TOKEN_ADDRESS = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
1302
+
1303
+ // src/hooks/useMatchWallet.tsx
1304
+ import { erc20Abi as erc20Abi2, formatUnits as formatUnits2 } from "viem";
1305
+
1306
+ // src/store/useContractStore.ts
1307
+ import { create as create4 } from "zustand";
1308
+ import { devtools as devtools3, persist as persist3 } from "zustand/middleware";
1309
+ var persistedState3 = persist3(
1310
+ (set, get) => ({
1311
+ contracts: {},
1312
+ getContract: (chainId, contractAddress) => {
1313
+ const key = `${chainId}-${contractAddress.toLowerCase()}`;
1314
+ return get().contracts[key];
1315
+ },
1316
+ setContractName: (chainId, contractAddress, name) => {
1317
+ const key = `${chainId}-${contractAddress.toLowerCase()}`;
1318
+ set((state) => {
1319
+ const updatedContracts = {
1320
+ ...state.contracts,
1321
+ [key]: { ...state.contracts[key], name }
1322
+ };
1323
+ return { contracts: updatedContracts };
1324
+ });
1325
+ },
1326
+ setContractSymbol: (chainId, contractAddress, symbol) => {
1327
+ const key = `${chainId}-${contractAddress.toLowerCase()}`;
1328
+ set((state) => {
1329
+ const updatedContracts = {
1330
+ ...state.contracts,
1331
+ [key]: { ...state.contracts[key], symbol }
1332
+ };
1333
+ return { contracts: updatedContracts };
1334
+ });
1335
+ },
1336
+ setContractDecimals: (chainId, contractAddress, decimals) => {
1337
+ const key = `${chainId}-${contractAddress.toLowerCase()}`;
1338
+ set((state) => {
1339
+ const updatedContracts = {
1340
+ ...state.contracts,
1341
+ [key]: { ...state.contracts[key], decimals }
1342
+ };
1343
+ return { contracts: updatedContracts };
1344
+ });
1345
+ },
1346
+ setContracts: (data) => {
1347
+ set((state) => {
1348
+ const newContracts = { ...state.contracts };
1349
+ data.forEach(({ chainId, contractAddress, info }) => {
1350
+ const key = `${chainId}-${contractAddress.toLowerCase()}`;
1351
+ newContracts[key] = { ...newContracts[key], ...info };
1352
+ });
1353
+ return { contracts: newContracts };
1354
+ });
1355
+ }
1356
+ }),
1357
+ { name: "match-contract-local" }
1358
+ );
1359
+ var useContractStore = create4(devtools3(persistedState3));
1360
+ var useContractStore_default = useContractStore;
1245
1361
 
1246
1362
  // src/hooks/useMatchWallet.tsx
1363
+ import { FormattedMessage as FormattedMessage3, useIntl as useIntl3 } from "react-intl";
1364
+
1365
+ // src/components/ImportToken/index.tsx
1366
+ import { useEffect as useEffect6, useMemo as useMemo4, useState as useState7 } from "react";
1367
+ import { FormattedMessage as FormattedMessage2, useIntl as useIntl2 } from "react-intl";
1368
+ import { useQueryClient } from "@tanstack/react-query";
1369
+ import { defineChain, erc20Abi } from "viem";
1370
+
1371
+ // src/hooks/useIsContract.ts
1372
+ import { createPublicClient as createPublicClient3, http as http3 } from "viem";
1373
+ import { useQuery as useQuery2 } from "@tanstack/react-query";
1374
+ function useIsContract({
1375
+ address,
1376
+ chain,
1377
+ enabled
1378
+ }) {
1379
+ return useQuery2({
1380
+ queryKey: ["is_contract", chain?.id, address],
1381
+ queryFn: async () => {
1382
+ if (!chain) return false;
1383
+ if (!address) return false;
1384
+ const publicClient = createPublicClient3({
1385
+ chain,
1386
+ transport: http3()
1387
+ });
1388
+ const res = await publicClient.getCode({ address });
1389
+ return res !== null && res !== void 0;
1390
+ },
1391
+ enabled
1392
+ });
1393
+ }
1394
+
1395
+ // src/components/ImportToken/index.tsx
1247
1396
  import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
1248
- function useMatchWallet() {
1249
- const modal = useModal();
1250
- const { address: address2 } = useWallet();
1397
+ function ImportToken({ close }) {
1398
+ const [status, setStatus] = useState7("");
1399
+ const { token } = useUserInfo();
1400
+ const [address, setAddress] = useState7("");
1401
+ const [symbol, setSymbol] = useState7("");
1402
+ const [decimals, setDecimals] = useState7("");
1403
+ const [error, setError] = useState7({});
1404
+ const { publicClient, chainId, chain } = useMatchChain();
1405
+ const getContractInfo = async () => {
1406
+ if (!publicClient) return;
1407
+ const calls = [
1408
+ {
1409
+ address,
1410
+ abi: erc20Abi,
1411
+ functionName: "symbol",
1412
+ args: []
1413
+ },
1414
+ {
1415
+ address,
1416
+ abi: erc20Abi,
1417
+ functionName: "decimals",
1418
+ args: []
1419
+ }
1420
+ ];
1421
+ try {
1422
+ const results = await publicClient.multicall({ contracts: calls });
1423
+ console.log("results", results);
1424
+ if (!symbol && results[0]?.status == "success") {
1425
+ setSymbol(results[0]?.result);
1426
+ }
1427
+ if (!decimals && results[1]?.status == "success") {
1428
+ setDecimals((results[1]?.result).toString());
1429
+ }
1430
+ } catch (error2) {
1431
+ setError({
1432
+ address: error2.message
1433
+ });
1434
+ }
1435
+ };
1436
+ const intl = useIntl2();
1437
+ useEffect6(() => {
1438
+ if (address.length === 42) {
1439
+ const reg = /^0x[0-9a-fA-F]{40}$/;
1440
+ if (!reg.test(address)) {
1441
+ setError({
1442
+ ...error,
1443
+ address: intl.formatMessage({
1444
+ id: "tokenAddressError"
1445
+ })
1446
+ });
1447
+ } else {
1448
+ setError({
1449
+ ...error,
1450
+ address: ""
1451
+ });
1452
+ publicClient && getContractInfo();
1453
+ }
1454
+ }
1455
+ }, [address, publicClient]);
1456
+ const [loading, setLoading] = useState7(false);
1457
+ const toast = useToast();
1458
+ const queryClient2 = useQueryClient();
1459
+ const onImport = async () => {
1460
+ setLoading(true);
1461
+ try {
1462
+ const res = await userImportTokenApi({
1463
+ chain_id: chainId?.toString() || "",
1464
+ symbol,
1465
+ address,
1466
+ decimals
1467
+ });
1468
+ if (isSuccess(res)) {
1469
+ setStatus("success");
1470
+ queryClient2.invalidateQueries({
1471
+ queryKey: [USER_IMPORT_TOKEN_LIST_KEY, token, chainId]
1472
+ });
1473
+ } else {
1474
+ setStatus("fail");
1475
+ toast.error(res.message);
1476
+ }
1477
+ } catch (error2) {
1478
+ setStatus("fail");
1479
+ toast.error(error2.message);
1480
+ } finally {
1481
+ setLoading(false);
1482
+ }
1483
+ };
1484
+ const canImport = useMemo4(() => {
1485
+ if (!address) {
1486
+ return false;
1487
+ }
1488
+ if (!symbol) {
1489
+ return false;
1490
+ }
1491
+ if (decimals.length === 0) {
1492
+ return false;
1493
+ }
1494
+ const reg = /^0x[0-9a-fA-F]{40}$/;
1495
+ if (!reg.test(address)) {
1496
+ return false;
1497
+ }
1498
+ return true;
1499
+ }, [error, address, symbol, decimals]);
1500
+ const isContractQuery = useIsContract({
1501
+ //@ts-ignore
1502
+ chain: defineChain(chain),
1503
+ address,
1504
+ enabled: canImport
1505
+ });
1506
+ if (status == "success" || status == "fail") {
1507
+ return /* @__PURE__ */ jsxs5("div", { className: `matchid-import-token-result matchid-flex`, children: [
1508
+ /* @__PURE__ */ jsxs5("div", { className: `matchid-import-token-result-box matchid-flex`, children: [
1509
+ /* @__PURE__ */ jsx6("img", { src: status == "success" ? success_default : fail_default, alt: status == "success" ? "success" : "fail", className: `matchid-import-token-result-img` }),
1510
+ /* @__PURE__ */ jsx6("div", { className: `matchid-import-token-result-text matchid-import-token-result-text-${status}`, children: status == "success" ? /* @__PURE__ */ jsx6(FormattedMessage2, { id: "importSuccess" }) : /* @__PURE__ */ jsx6(FormattedMessage2, { id: "importFail" }) })
1511
+ ] }),
1512
+ status == "success" ? /* @__PURE__ */ jsx6(Button, { size: "lg", onClick: close, block: true, highlight: true, children: /* @__PURE__ */ jsx6(FormattedMessage2, { id: "close" }) }) : /* @__PURE__ */ jsx6(Button, { size: "lg", onClick: () => setStatus(""), block: true, highlight: true, children: /* @__PURE__ */ jsx6(FormattedMessage2, { id: "back" }) })
1513
+ ] });
1514
+ }
1515
+ return /* @__PURE__ */ jsxs5("div", { className: `matchid-import-token`, children: [
1516
+ /* @__PURE__ */ jsxs5("div", { className: "matchid-import-token-form", children: [
1517
+ /* @__PURE__ */ jsx6(Field, { label: intl.formatMessage({
1518
+ id: "tokenSmartContract"
1519
+ }), error: error.address ? error.address : isContractQuery.isFetched && !isContractQuery.isLoading && !isContractQuery.data && canImport ? "Address isn't a contract address" : "", children: /* @__PURE__ */ jsx6(
1520
+ Input,
1521
+ {
1522
+ placeholder: intl.formatMessage({
1523
+ id: "tokenSmartContractPlaceholder"
1524
+ }),
1525
+ value: address,
1526
+ onChange: (e) => setAddress(e.target.value),
1527
+ maxLength: 42
1528
+ }
1529
+ ) }),
1530
+ /* @__PURE__ */ jsx6(Field, { label: intl.formatMessage({
1531
+ id: "tokenSymbol"
1532
+ }), error: error.symbol, children: /* @__PURE__ */ jsx6(
1533
+ Input,
1534
+ {
1535
+ placeholder: intl.formatMessage({
1536
+ id: "tokenSymbolPlaceholder"
1537
+ }),
1538
+ value: symbol,
1539
+ onChange: (e) => setSymbol(e.target.value),
1540
+ maxLength: 16
1541
+ }
1542
+ ) }),
1543
+ /* @__PURE__ */ jsx6(Field, { label: intl.formatMessage({
1544
+ id: "tokenDecimals"
1545
+ }), error: error.decimals, children: /* @__PURE__ */ jsx6(
1546
+ Input,
1547
+ {
1548
+ placeholder: intl.formatMessage({
1549
+ id: "tokenDecimalsPlaceholder"
1550
+ }),
1551
+ type: "number",
1552
+ value: decimals,
1553
+ onChange: (e) => setDecimals(e.target.value)
1554
+ }
1555
+ ) })
1556
+ ] }),
1557
+ /* @__PURE__ */ jsx6(
1558
+ Button,
1559
+ {
1560
+ size: "lg",
1561
+ onClick: onImport,
1562
+ block: true,
1563
+ loading: loading || isContractQuery.isLoading,
1564
+ disabled: !canImport || !isContractQuery.data,
1565
+ highlight: true,
1566
+ children: /* @__PURE__ */ jsx6(FormattedMessage2, { id: "import" })
1567
+ }
1568
+ )
1569
+ ] });
1570
+ }
1571
+
1572
+ // src/hooks/useMatchWallet.tsx
1573
+ import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
1574
+ var ReceiveModal = () => {
1251
1575
  const chain = useMatchChain();
1576
+ const { address } = useWallet();
1252
1577
  const [copied, setCopied] = useCopyClipboard();
1253
1578
  const toast = useToast();
1579
+ const intl = useIntl3();
1254
1580
  const onCopy = () => {
1255
- setCopied(address2);
1256
- toast.success("Copied!");
1581
+ setCopied(address);
1582
+ toast.success(intl.formatMessage({
1583
+ id: "copied"
1584
+ }));
1257
1585
  };
1586
+ const chainLink = chain.explorerLink("address/" + address);
1587
+ return /* @__PURE__ */ jsxs6("div", { className: `matchid-receive-modal`, children: [
1588
+ /* @__PURE__ */ jsxs6("div", { className: "matchid-receive-container", children: [
1589
+ /* @__PURE__ */ jsx7("div", { className: `matchid-receive-text`, children: /* @__PURE__ */ jsx7(FormattedMessage3, { id: "receiveQrcode" }) }),
1590
+ /* @__PURE__ */ jsx7("div", { className: `matchid-qr-container`, children: /* @__PURE__ */ jsx7(
1591
+ QRCode,
1592
+ {
1593
+ margin: "0",
1594
+ className: `matchid-qr-code`,
1595
+ value: address
1596
+ }
1597
+ ) }),
1598
+ /* @__PURE__ */ jsx7(
1599
+ "a",
1600
+ {
1601
+ href: chainLink,
1602
+ target: "_blank",
1603
+ className: `matchid-receive-link`,
1604
+ children: address
1605
+ }
1606
+ )
1607
+ ] }),
1608
+ /* @__PURE__ */ jsx7(Button, { size: "lg", onClick: onCopy, block: true, highlight: true, disabled: copied, children: /* @__PURE__ */ jsx7(
1609
+ FormattedMessage3,
1610
+ {
1611
+ id: "copyAddress"
1612
+ }
1613
+ ) })
1614
+ ] });
1615
+ };
1616
+ function useMatchWallet() {
1617
+ const modal = useModal();
1618
+ const intl = useIntl3();
1258
1619
  const showReceiveModal = () => {
1259
- const chainLink = chain.explorerLink("address/" + address2);
1260
- const ReceiveModal = () => {
1261
- return /* @__PURE__ */ jsxs5("div", { className: `matchid-receive-modal`, children: [
1262
- /* @__PURE__ */ jsxs5("div", { className: "matchid-receive-container", children: [
1263
- /* @__PURE__ */ jsx6("div", { className: `matchid-receive-text`, children: "Receive by scanning the QR code" }),
1264
- /* @__PURE__ */ jsx6("div", { className: `matchid-qr-container`, children: /* @__PURE__ */ jsx6(
1265
- QRCode,
1266
- {
1267
- margin: "0",
1268
- className: `matchid-qr-code`,
1269
- value: address2
1270
- }
1271
- ) }),
1272
- /* @__PURE__ */ jsx6(
1273
- "a",
1274
- {
1275
- href: chainLink,
1276
- target: "_blank",
1277
- className: `matchid-receive-link`,
1278
- children: address2
1279
- }
1280
- )
1281
- ] }),
1282
- /* @__PURE__ */ jsx6(Button, { size: "lg", onClick: onCopy, block: true, highlight: true, disabled: copied, children: "Copy Address" })
1283
- ] });
1284
- };
1285
1620
  modal.open({
1286
- title: "Receive",
1621
+ title: intl.formatMessage({
1622
+ id: "receive"
1623
+ }),
1287
1624
  content: ReceiveModal
1288
1625
  });
1289
1626
  };
1627
+ const showImportTokenModal = () => {
1628
+ modal.open({
1629
+ title: intl.formatMessage({
1630
+ id: "customizedToken"
1631
+ }),
1632
+ content: ImportToken
1633
+ });
1634
+ };
1635
+ const showSendListModal = () => {
1636
+ modal.open({
1637
+ title: intl.formatMessage({
1638
+ id: "send"
1639
+ }),
1640
+ content: TokenSendList
1641
+ });
1642
+ };
1290
1643
  return {
1291
- showReceiveModal
1644
+ showReceiveModal,
1645
+ showImportTokenModal,
1646
+ showSendListModal
1292
1647
  };
1293
1648
  }
1294
- function useMatchWalletRecords({
1295
- pageSize = 10
1296
- }) {
1297
- const [hasMore, setHasMore] = useState7(true);
1298
- const [items, setItems] = useState7([]);
1299
- const { chainId } = useMatchChain();
1300
- const chainIdStr = chainId.toString() || "";
1649
+ function useMatchWalletRecords() {
1650
+ const [hasMore, setHasMore] = useState8(true);
1651
+ const [items, setItems] = useState8([]);
1652
+ const { chainId, publicClient } = useMatchChain();
1653
+ const { address } = useWallet();
1654
+ const hasMoreRef = useRef(hasMore);
1655
+ const nextPageParamsRef = useRef(void 0);
1656
+ const { getContract, setContracts } = useContractStore_default();
1301
1657
  const fetchMoreData = async () => {
1302
- if (!hasMore) {
1658
+ const chainIdStr = chainId ? chainId.toString() : "";
1659
+ if (!hasMoreRef.current || !chainIdStr) {
1303
1660
  return;
1304
1661
  }
1305
1662
  const res = await getUserWalletTransactionsApi({
1306
1663
  chain_id: chainIdStr,
1307
- limit: pageSize,
1308
- offset: items.length
1664
+ ...nextPageParamsRef.current
1665
+ });
1666
+ if (isSuccess(res)) {
1667
+ if (res.data && res.data.transactions && res.data.transactions.length > 0) {
1668
+ const contractList = res.data.transactions.filter((item) => item.input.toLowerCase().substring(0, 10) == "0xa9059cbb").map((item) => item.to);
1669
+ const contractUnique = Array.from(new Set(contractList)).filter((item) => {
1670
+ const contract = getContract(chainId || 0, item);
1671
+ if (!contract) {
1672
+ return true;
1673
+ }
1674
+ if (!contract.symbol && !contract.name) {
1675
+ return true;
1676
+ }
1677
+ if (!contract.decimals) {
1678
+ return true;
1679
+ }
1680
+ return false;
1681
+ });
1682
+ const calls = [];
1683
+ for (const contract of contractUnique) {
1684
+ calls.push({
1685
+ address: contract,
1686
+ abi: erc20Abi2,
1687
+ functionName: "symbol",
1688
+ args: []
1689
+ });
1690
+ calls.push({
1691
+ address: contract,
1692
+ abi: erc20Abi2,
1693
+ functionName: "decimals",
1694
+ args: []
1695
+ });
1696
+ }
1697
+ const results = await publicClient?.multicall({ contracts: calls });
1698
+ if (results) {
1699
+ console.log("contract results", calls, results);
1700
+ const contractMap = [];
1701
+ for (let i = 0; i < contractUnique.length; i++) {
1702
+ const info = {};
1703
+ if (results[i * 2].status == "success") {
1704
+ info.symbol = results[i * 2].result;
1705
+ }
1706
+ if (results[i * 2 + 1].status == "success") {
1707
+ info.decimals = results[i * 2 + 1].result;
1708
+ }
1709
+ contractMap.push({
1710
+ chainId: chainId || 0,
1711
+ contractAddress: contractUnique[i],
1712
+ info
1713
+ });
1714
+ }
1715
+ setContracts(contractMap);
1716
+ }
1717
+ setItems(items.concat(res.data.transactions || []));
1718
+ }
1719
+ hasMoreRef.current = res.data && res.data.transactions && res.data.transactions.length >= 50;
1720
+ setHasMore(hasMoreRef.current);
1721
+ nextPageParamsRef.current = res.data.next_page_params;
1722
+ }
1723
+ };
1724
+ const onInit = async () => {
1725
+ nextPageParamsRef.current = void 0;
1726
+ setItems([]);
1727
+ setHasMore(true);
1728
+ hasMoreRef.current = true;
1729
+ fetchMoreData();
1730
+ };
1731
+ useEffect7(() => {
1732
+ if (chainId && address) {
1733
+ onInit();
1734
+ }
1735
+ }, [chainId, address]);
1736
+ const { transactions, removeTransaction } = useTransactionStore_default();
1737
+ const list = useMemo5(() => {
1738
+ const localTransactions = transactions[`${chainId}-${address}`] || [];
1739
+ const removeList = localTransactions.filter((n) => items.findIndex((m) => m.hash == n.hash) >= 0);
1740
+ removeList.forEach((item) => {
1741
+ removeTransaction({
1742
+ chainId: chainId || 0,
1743
+ hash: item.hash,
1744
+ address
1745
+ });
1746
+ });
1747
+ const saveList = localTransactions.filter((n) => items.findIndex((m) => m.hash == n.hash) < 0);
1748
+ return [
1749
+ ...saveList,
1750
+ ...items
1751
+ ].sort((a, b) => {
1752
+ const btimestamp = typeof b.timestamp === "string" ? parseInt(b.timestamp) : b.timestamp;
1753
+ const atimestamp = typeof a.timestamp === "string" ? parseInt(a.timestamp) : a.timestamp;
1754
+ return btimestamp - atimestamp;
1755
+ });
1756
+ }, [transactions, chainId, items, address]);
1757
+ return {
1758
+ items: list,
1759
+ fetchMoreData,
1760
+ hasMore
1761
+ };
1762
+ }
1763
+ function useMatchWalletAssets({
1764
+ importTokenOptions,
1765
+ assetListOptions
1766
+ } = {}) {
1767
+ const { chainId, chain } = useMatchChain();
1768
+ const importTokenQuery = useImportTokenListQuery({
1769
+ chainId: chainId || 0,
1770
+ ...importTokenOptions
1771
+ });
1772
+ const assetListQuery = useAssetListQuery({
1773
+ chainId: chainId || 0,
1774
+ ...assetListOptions
1775
+ });
1776
+ const mergedAssets = useMemo5(() => {
1777
+ if (!assetListQuery.data && !importTokenQuery.data) return [];
1778
+ const assetList = (assetListQuery.data || []).map((asset) => ({
1779
+ ...asset,
1780
+ isAuto: true
1781
+ }));
1782
+ const importTokens = (importTokenQuery.data || []).map((token) => ({
1783
+ ...token,
1784
+ isCustom: true
1785
+ }));
1786
+ const assetMap = /* @__PURE__ */ new Map();
1787
+ assetList.forEach((asset) => {
1788
+ const key = `${asset.chain_id}-${asset.address.toLowerCase()}`;
1789
+ assetMap.set(key, asset);
1309
1790
  });
1310
- if (isSuccess(res)) {
1311
- if (res.data && res.data.transactions.length > 0) {
1312
- setItems(items.concat(res.data.transactions));
1791
+ importTokens.forEach((token) => {
1792
+ const key = `${token.chain_id}-${token.address.toLowerCase()}`;
1793
+ if (assetMap.has(key)) {
1794
+ const existing = assetMap.get(key);
1795
+ assetMap.set(key, {
1796
+ ...existing,
1797
+ symbol: token.symbol,
1798
+ decimals: token.decimals,
1799
+ isCustom: true,
1800
+ isAuto: existing.isAuto ?? false
1801
+ });
1802
+ } else {
1803
+ assetMap.set(key, token);
1313
1804
  }
1314
- setHasMore(res.data && res.data.transactions.length >= pageSize);
1805
+ });
1806
+ const list = Array.from(assetMap.values()).sort((a, b) => {
1807
+ return (b.isAuto ? 1 : 0) - (a.isAuto ? 1 : 0);
1808
+ });
1809
+ const nativeToken = list.find((asset) => asset.address.toLowerCase() === NATIVE_TOKEN_ADDRESS.toLowerCase());
1810
+ if (!nativeToken) {
1811
+ list.unshift({
1812
+ chain_id: chain?.id.toString() || "",
1813
+ address: NATIVE_TOKEN_ADDRESS,
1814
+ decimals: chain?.nativeCurrency.decimals || 18,
1815
+ symbol: chain?.nativeCurrency.symbol,
1816
+ name: chain?.nativeCurrency.name,
1817
+ balance: 0,
1818
+ icon: chain?.nativeCurrency.icon
1819
+ });
1315
1820
  }
1821
+ return list;
1822
+ }, [assetListQuery.data, importTokenQuery.data]);
1823
+ return {
1824
+ importTokenQuery,
1825
+ assetListQuery,
1826
+ mergedAssets
1316
1827
  };
1317
- const onInit = async () => {
1318
- setItems([]);
1319
- setHasMore(true);
1320
- fetchMoreData();
1828
+ }
1829
+ var MULTICALL_LIMIT = 100;
1830
+ function useMatchWalletAssetList({
1831
+ list
1832
+ }) {
1833
+ const { publicClient, chain } = useMatchChain();
1834
+ const { address } = useWallet();
1835
+ const { assets, setAssets } = useLocalStore_default();
1836
+ const nativeToken = list.find((asset) => asset.address.toLowerCase() === NATIVE_TOKEN_ADDRESS.toLowerCase()) || {
1837
+ chain_id: chain?.id || "",
1838
+ address: NATIVE_TOKEN_ADDRESS,
1839
+ decimals: 18,
1840
+ symbol: chain?.nativeCurrency.symbol,
1841
+ name: chain?.nativeCurrency.name,
1842
+ balance: 0
1321
1843
  };
1322
- useEffect6(() => {
1323
- if (chainId && address) {
1324
- onInit();
1325
- }
1326
- }, [chainId, address]);
1844
+ const nativeBalanceQuery = useQuery3({
1845
+ queryKey: ["nativeBalance", nativeToken?.chain_id],
1846
+ queryFn: async () => {
1847
+ if (!nativeToken || !publicClient) return null;
1848
+ try {
1849
+ return await publicClient.getBalance({
1850
+ address
1851
+ });
1852
+ } catch (error) {
1853
+ console.error("Native Token Balance Error:", error);
1854
+ return null;
1855
+ }
1856
+ },
1857
+ enabled: !!nativeToken && !!publicClient,
1858
+ refetchInterval: 15e3,
1859
+ // Refresh every 15 seconds
1860
+ retry: 3
1861
+ // Retry up to 3 times if failed
1862
+ });
1863
+ const erc20Tokens = useMemo5(() => list.filter((asset) => asset.address !== NATIVE_TOKEN_ADDRESS), [list]);
1864
+ const erc20BalanceQuery = useQuery3({
1865
+ queryKey: ["erc20Balances", erc20Tokens.map((token) => token.address)],
1866
+ queryFn: async () => {
1867
+ if (!erc20Tokens.length || !publicClient) return [];
1868
+ const calls = erc20Tokens.map((token) => ({
1869
+ address: token.address,
1870
+ abi: erc20Abi2,
1871
+ functionName: "balanceOf",
1872
+ args: [address]
1873
+ }));
1874
+ let balances = [];
1875
+ for (let i = 0; i < calls.length; i += MULTICALL_LIMIT) {
1876
+ const batchCalls = calls.slice(i, i + MULTICALL_LIMIT);
1877
+ try {
1878
+ const results = await publicClient.multicall({ contracts: batchCalls });
1879
+ balances.push(...results);
1880
+ } catch (error) {
1881
+ console.error("MultiCall Error:", error);
1882
+ }
1883
+ }
1884
+ return balances;
1885
+ },
1886
+ enabled: !!publicClient,
1887
+ refetchInterval: 15e3,
1888
+ // Refresh every 15 seconds
1889
+ retry: 3
1890
+ });
1891
+ const enrichedAssets = useMemo5(() => {
1892
+ if (!list) return [];
1893
+ const erc20Balances = erc20BalanceQuery.data || [];
1894
+ return list.map((asset) => {
1895
+ let balanceValue = "0";
1896
+ let balance = 0;
1897
+ const decimals = typeof asset.decimals === "string" ? parseInt(asset.decimals) : asset.decimals;
1898
+ const assetAddress = asset.address.toLowerCase();
1899
+ if (assetAddress === NATIVE_TOKEN_ADDRESS) {
1900
+ balanceValue = nativeBalanceQuery.data?.toString() || "0";
1901
+ balance = nativeBalanceQuery.data ? Number(formatUnits2(nativeBalanceQuery.data, decimals)) : 0;
1902
+ } else {
1903
+ const index = erc20Tokens.findIndex((t) => t.address.toLowerCase() === assetAddress);
1904
+ if (index !== -1 && erc20Balances[index] && erc20Balances[index].status === "success") {
1905
+ balance = Number(formatUnits2(erc20Balances[index].result, decimals));
1906
+ balanceValue = erc20Balances[index].result?.toString() || "0";
1907
+ }
1908
+ }
1909
+ const value = asset.isAuto ? balance * (asset.price || 0) : 0;
1910
+ return { ...asset, balance, value, balanceValue };
1911
+ });
1912
+ }, [list, nativeBalanceQuery.data, erc20BalanceQuery.data]);
1913
+ useEffect7(() => {
1914
+ const list2 = enrichedAssets.sort((a, b) => {
1915
+ if (a.address === NATIVE_TOKEN_ADDRESS) return -1;
1916
+ if (b.address === NATIVE_TOKEN_ADDRESS) return 1;
1917
+ if (a.isAuto && b.isAuto) return b.value - a.value;
1918
+ if (a.isAuto) return -1;
1919
+ if (b.isAuto) return 1;
1920
+ if (a.isCustom && !a.isAuto && a.balance > 0) return -1;
1921
+ if (b.isCustom && !b.isAuto && b.balance > 0) return 1;
1922
+ return 0;
1923
+ });
1924
+ setAssets(list2);
1925
+ }, [enrichedAssets]);
1327
1926
  return {
1328
- items,
1329
- fetchMoreData,
1330
- hasMore
1927
+ list: assets,
1928
+ isLoading: nativeBalanceQuery.isLoading || erc20BalanceQuery.isLoading,
1929
+ isFetched: nativeBalanceQuery.isFetched && erc20BalanceQuery.isFetched,
1930
+ nativeBalanceQuery,
1931
+ erc20BalanceQuery,
1932
+ nativeBalance: nativeBalanceQuery.data,
1933
+ erc20Balances: erc20BalanceQuery.data
1331
1934
  };
1332
1935
  }
1333
1936
 
1334
1937
  // src/hooks/useReceipt.tsx
1335
- import { useState as useState8, useCallback as useCallback4, useEffect as useEffect7 } from "react";
1336
- import { useQuery as useQuery2 } from "@tanstack/react-query";
1337
- import { createPublicClient, defineChain, http } from "viem";
1938
+ import { useState as useState9, useCallback as useCallback4, useEffect as useEffect8 } from "react";
1939
+ import { useQuery as useQuery4 } from "@tanstack/react-query";
1940
+ import { createPublicClient as createPublicClient4, defineChain as defineChain2, http as http4 } from "viem";
1338
1941
  var CACHE_TTL = 86400 * 30 * 1e3;
1339
1942
  var MAX_CACHE_SIZE = 500;
1340
1943
  var STORAGE_KEY = "match_receipt_logs";
1341
1944
  function useReceiptCache() {
1342
- const [cache, setCache] = useState8(/* @__PURE__ */ new Map());
1945
+ const [cache, setCache] = useState9(/* @__PURE__ */ new Map());
1343
1946
  const isLocalStorageAvailable = (() => {
1344
1947
  try {
1345
1948
  const testKey = "__test__";
@@ -1350,7 +1953,7 @@ function useReceiptCache() {
1350
1953
  return false;
1351
1954
  }
1352
1955
  })();
1353
- useEffect7(() => {
1956
+ useEffect8(() => {
1354
1957
  if (isLocalStorageAvailable) {
1355
1958
  try {
1356
1959
  const storedData = localStorage.getItem(STORAGE_KEY);
@@ -1441,8 +2044,8 @@ function useReceipt({
1441
2044
  const { list } = useMatchChain();
1442
2045
  const cache = useReceiptCache();
1443
2046
  const chain = list?.find((item) => item.id === chainId);
1444
- const [shouldRefetch, setShouldRefetch] = useState8(true);
1445
- const query = useQuery2({
2047
+ const [shouldRefetch, setShouldRefetch] = useState9(true);
2048
+ const query = useQuery4({
1446
2049
  queryKey: ["match-tx-receipt", hash, chain],
1447
2050
  queryFn: async () => {
1448
2051
  if (!chain || !hash) return false;
@@ -1451,12 +2054,11 @@ function useReceipt({
1451
2054
  return cache.get(cacheKey);
1452
2055
  }
1453
2056
  try {
1454
- const publicClient = createPublicClient({
1455
- //@ts-ignore
1456
- chain: defineChain(chain),
1457
- transport: http()
2057
+ const publicClient = createPublicClient4({
2058
+ chain: defineChain2(chain),
2059
+ transport: http4()
1458
2060
  });
1459
- const receipt = await publicClient.getTransaction({ hash });
2061
+ const receipt = await publicClient.getTransactionReceipt({ hash });
1460
2062
  if (!receipt) {
1461
2063
  return false;
1462
2064
  }
@@ -1468,7 +2070,151 @@ function useReceipt({
1468
2070
  },
1469
2071
  refetchInterval: shouldRefetch ? 1e4 : false
1470
2072
  });
1471
- useEffect7(() => {
2073
+ useEffect8(() => {
2074
+ if (query.data) {
2075
+ setShouldRefetch(false);
2076
+ }
2077
+ }, [query.data]);
2078
+ return query;
2079
+ }
2080
+
2081
+ // src/hooks/useTransaction.tsx
2082
+ import { useState as useState10, useCallback as useCallback5, useEffect as useEffect9 } from "react";
2083
+ import { useQuery as useQuery5 } from "@tanstack/react-query";
2084
+ import { createPublicClient as createPublicClient5, defineChain as defineChain3, http as http5 } from "viem";
2085
+ var CACHE_TTL2 = 86400 * 30 * 1e3;
2086
+ var MAX_CACHE_SIZE2 = 500;
2087
+ var STORAGE_KEY2 = "match_transaction_logs";
2088
+ function useTransactionCache() {
2089
+ const [cache, setCache] = useState10(/* @__PURE__ */ new Map());
2090
+ const isLocalStorageAvailable = (() => {
2091
+ try {
2092
+ const testKey = "__test__";
2093
+ localStorage.setItem(testKey, "1");
2094
+ localStorage.removeItem(testKey);
2095
+ return true;
2096
+ } catch (e) {
2097
+ return false;
2098
+ }
2099
+ })();
2100
+ useEffect9(() => {
2101
+ if (isLocalStorageAvailable) {
2102
+ try {
2103
+ const storedData = localStorage.getItem(STORAGE_KEY2);
2104
+ if (storedData) {
2105
+ try {
2106
+ const parsed = JSON.parse(storedData);
2107
+ const now = Date.now();
2108
+ const validEntries = Object.entries(parsed).filter(([_, entry]) => typeof entry === "object" && entry !== null && "timestamp" in entry && now - entry.timestamp <= CACHE_TTL2).map(([key, entry]) => [key, entry]);
2109
+ setCache(new Map(validEntries));
2110
+ } catch (e) {
2111
+ console.error("Failed to parse cache from localStorage:", e);
2112
+ }
2113
+ }
2114
+ } catch (e) {
2115
+ console.error("Failed to load cache from localStorage:", e);
2116
+ }
2117
+ }
2118
+ }, []);
2119
+ const updateLocalStorage = useCallback5((updatedCache) => {
2120
+ if (isLocalStorageAvailable) {
2121
+ try {
2122
+ const storedData = localStorage.getItem(STORAGE_KEY2);
2123
+ let parsed = {};
2124
+ if (storedData) {
2125
+ parsed = JSON.parse(storedData);
2126
+ }
2127
+ updatedCache.forEach((entry, key) => {
2128
+ parsed[key] = entry;
2129
+ });
2130
+ localStorage.setItem(STORAGE_KEY2, JSON.stringify(parsed));
2131
+ } catch (e) {
2132
+ console.error("Failed to update localStorage:", e);
2133
+ }
2134
+ }
2135
+ }, []);
2136
+ const set = useCallback5((key, value) => {
2137
+ const now = Date.now();
2138
+ const newCache = new Map(cache);
2139
+ newCache.forEach((entry, k) => {
2140
+ if (now - entry.timestamp > CACHE_TTL2) {
2141
+ newCache.delete(k);
2142
+ }
2143
+ });
2144
+ if (newCache.size >= MAX_CACHE_SIZE2) {
2145
+ const firstKey = newCache.keys().next().value;
2146
+ if (firstKey !== void 0) {
2147
+ newCache.delete(firstKey);
2148
+ }
2149
+ }
2150
+ newCache.set(key, { value, timestamp: now });
2151
+ setCache(newCache);
2152
+ updateLocalStorage(newCache);
2153
+ }, [cache, updateLocalStorage]);
2154
+ const get = useCallback5((key) => {
2155
+ const entry = cache.get(key);
2156
+ if (entry) {
2157
+ if (Date.now() - entry.timestamp > CACHE_TTL2) {
2158
+ const newCache = new Map(cache);
2159
+ newCache.delete(key);
2160
+ setCache(newCache);
2161
+ updateLocalStorage(newCache);
2162
+ return void 0;
2163
+ }
2164
+ return entry.value;
2165
+ }
2166
+ return void 0;
2167
+ }, [cache, updateLocalStorage]);
2168
+ const del = useCallback5((key) => {
2169
+ if (cache.has(key)) {
2170
+ const newCache = new Map(cache);
2171
+ newCache.delete(key);
2172
+ setCache(newCache);
2173
+ updateLocalStorage(newCache);
2174
+ }
2175
+ }, [cache, updateLocalStorage]);
2176
+ const clear = useCallback5(() => {
2177
+ setCache(/* @__PURE__ */ new Map());
2178
+ if (isLocalStorageAvailable) {
2179
+ localStorage.removeItem(STORAGE_KEY2);
2180
+ }
2181
+ }, [isLocalStorageAvailable]);
2182
+ return { set, get, del, clear };
2183
+ }
2184
+ function useTransaction({
2185
+ chainId,
2186
+ hash
2187
+ }) {
2188
+ const { list } = useMatchChain();
2189
+ const cache = useTransactionCache();
2190
+ const chain = list?.find((item) => item.id === chainId);
2191
+ const [shouldRefetch, setShouldRefetch] = useState10(true);
2192
+ const query = useQuery5({
2193
+ queryKey: ["match-tx-transaction", hash, chain],
2194
+ queryFn: async () => {
2195
+ if (!chain || !hash) return false;
2196
+ const cacheKey = `${chain.id}-${hash}`;
2197
+ if (cache.get(cacheKey)) {
2198
+ return cache.get(cacheKey);
2199
+ }
2200
+ try {
2201
+ const publicClient = createPublicClient5({
2202
+ chain: defineChain3(chain),
2203
+ transport: http5()
2204
+ });
2205
+ const transaction = await publicClient.getTransaction({ hash });
2206
+ if (!transaction) {
2207
+ return false;
2208
+ }
2209
+ cache.set(cacheKey, transaction);
2210
+ return transaction;
2211
+ } catch (e) {
2212
+ return false;
2213
+ }
2214
+ },
2215
+ refetchInterval: shouldRefetch ? 1e4 : false
2216
+ });
2217
+ useEffect9(() => {
1472
2218
  if (query.data) {
1473
2219
  setShouldRefetch(false);
1474
2220
  }
@@ -1476,28 +2222,113 @@ function useReceipt({
1476
2222
  return query;
1477
2223
  }
1478
2224
 
2225
+ // src/store/useModalStore.ts
2226
+ import { create as create5 } from "zustand";
2227
+
2228
+ // src/hooks/useConfig.tsx
2229
+ import { jsx as jsx8 } from "react/jsx-runtime";
2230
+ var DEFAULT_WALLET_METHODS = ["evm", "sol", "btc", "tron", "ton"];
2231
+ var WALLET_METHODS = ["evm", "sol", "btc", "tron", "ton"];
2232
+ function useWalletConfig() {
2233
+ const isDownMd = useDownMd();
2234
+ const walletMap = {
2235
+ evm: {
2236
+ icon: /* @__PURE__ */ jsx8(EVMDarkIcon, { size: isDownMd ? 36 : 40 }),
2237
+ activeIcon: /* @__PURE__ */ jsx8(EVMLightIcon, { size: isDownMd ? 36 : 40 }),
2238
+ name: "EVM",
2239
+ method: "evm"
2240
+ },
2241
+ sol: {
2242
+ icon: /* @__PURE__ */ jsx8(SOLDarkIcon, { size: isDownMd ? 36 : 40 }),
2243
+ activeIcon: /* @__PURE__ */ jsx8(SOLLightIcon, { size: isDownMd ? 36 : 40 }),
2244
+ name: "SOL",
2245
+ method: "sol"
2246
+ },
2247
+ btc: {
2248
+ icon: /* @__PURE__ */ jsx8(BTCDarkIcon, { size: isDownMd ? 36 : 40 }),
2249
+ activeIcon: /* @__PURE__ */ jsx8(BTCLightIcon, { size: isDownMd ? 36 : 40 }),
2250
+ name: "BTC",
2251
+ method: "btc"
2252
+ },
2253
+ tron: {
2254
+ icon: /* @__PURE__ */ jsx8(TRXDarkIcon, { size: isDownMd ? 36 : 40 }),
2255
+ activeIcon: /* @__PURE__ */ jsx8(TRXLightIcon, { size: isDownMd ? 36 : 40 }),
2256
+ name: "TRON",
2257
+ method: "tron"
2258
+ },
2259
+ ton: {
2260
+ icon: /* @__PURE__ */ jsx8(TonLightIcon, { size: isDownMd ? 36 : 40 }),
2261
+ activeIcon: /* @__PURE__ */ jsx8(TonLightIcon2, { size: isDownMd ? 36 : 40 }),
2262
+ name: "TON",
2263
+ method: "ton"
2264
+ }
2265
+ };
2266
+ return {
2267
+ walletMap
2268
+ };
2269
+ }
2270
+
2271
+ // src/store/useModalStore.ts
2272
+ var useSOLModalStore = create5((set) => ({
2273
+ isOpen: false,
2274
+ type: "",
2275
+ open: (type) => set({ isOpen: true, type }),
2276
+ close: () => set({ isOpen: false })
2277
+ }));
2278
+ var useTRONModalStore = create5((set) => ({
2279
+ isOpen: false,
2280
+ type: "",
2281
+ open: (type) => set({ isOpen: true, type }),
2282
+ close: () => set({ isOpen: false })
2283
+ }));
2284
+ var useTONModalStore = create5((set) => ({
2285
+ isOpen: false,
2286
+ type: "",
2287
+ open: (type) => set({ isOpen: true, type }),
2288
+ close: () => set({ isOpen: false })
2289
+ }));
2290
+ var useBTCModalStore = create5((set) => ({
2291
+ isOpen: false,
2292
+ type: "",
2293
+ open: (type) => set({ isOpen: true, type }),
2294
+ close: () => set({ isOpen: false })
2295
+ }));
2296
+ var useCEXBindModalStore = create5((set) => ({
2297
+ type: "",
2298
+ isOpen: false,
2299
+ open: (type) => set({ isOpen: true, type }),
2300
+ close: () => set({ isOpen: false })
2301
+ }));
2302
+ var useWalletModalStore = create5((set) => ({
2303
+ isOpen: false,
2304
+ type: "",
2305
+ methods: [],
2306
+ open: (type, methods = DEFAULT_WALLET_METHODS) => set({ isOpen: true, type, methods }),
2307
+ close: () => set({ isOpen: false })
2308
+ }));
2309
+
1479
2310
  // src/components/CEXBindModal/index.tsx
1480
- import { useEffect as useEffect8, useMemo as useMemo5, useState as useState9 } from "react";
1481
- import { FormattedMessage as FormattedMessage2, useIntl as useIntl2 } from "react-intl";
1482
- import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
2311
+ import { useEffect as useEffect10, useMemo as useMemo6, useState as useState11 } from "react";
2312
+ import { FormattedMessage as FormattedMessage4, useIntl as useIntl4 } from "react-intl";
2313
+ import { jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
1483
2314
  function CEXBindModal({
1484
2315
  onClose,
1485
2316
  type,
1486
2317
  isOpen = false,
1487
2318
  ...props
1488
2319
  }) {
1489
- const intl = useIntl2();
2320
+ const intl = useIntl4();
1490
2321
  const { events } = useMatch();
1491
- const [APIPassphrase, setAPIPassphrase] = useState9("");
2322
+ const [APIPassphrase, setAPIPassphrase] = useState11("");
1492
2323
  const { refreshOverview } = useUserInfo();
1493
- const [loading, setLoading] = useState9(false);
1494
- const [key, setKey] = useState9("");
1495
- const [secret, setSecret] = useState9("");
1496
- const [error, setError] = useState9("");
1497
- const needPassphrase = useMemo5(() => {
2324
+ const [loading, setLoading] = useState11(false);
2325
+ const [key, setKey] = useState11("");
2326
+ const [secret, setSecret] = useState11("");
2327
+ const [error, setError] = useState11("");
2328
+ const needPassphrase = useMemo6(() => {
1498
2329
  return ["bitget", "okx"].includes(type.toLowerCase());
1499
2330
  }, [type]);
1500
- useEffect8(() => {
2331
+ useEffect10(() => {
1501
2332
  if (isOpen) {
1502
2333
  setSecret("");
1503
2334
  setKey("");
@@ -1534,20 +2365,20 @@ function CEXBindModal({
1534
2365
  setLoading(false);
1535
2366
  }
1536
2367
  };
1537
- return /* @__PURE__ */ jsx7(ModalWithHeader, { showClose: true, isOpen, onClose, title: intl.formatMessage({
2368
+ return /* @__PURE__ */ jsx9(ModalWithHeader, { showClose: true, isOpen, onClose, title: intl.formatMessage({
1538
2369
  id: "CEXBindTitle"
1539
2370
  }, {
1540
2371
  type
1541
- }), ...props, children: /* @__PURE__ */ jsxs6("div", { className: "matchid-cex-modal", children: [
1542
- /* @__PURE__ */ jsxs6("div", { children: [
1543
- /* @__PURE__ */ jsx7("p", { children: /* @__PURE__ */ jsx7(FormattedMessage2, { id: "CEXBindAttention" }) }),
1544
- /* @__PURE__ */ jsx7("p", { children: /* @__PURE__ */ jsx7(FormattedMessage2, { id: "CEXBindTips1" }) }),
1545
- /* @__PURE__ */ jsx7("p", { children: /* @__PURE__ */ jsx7(FormattedMessage2, { id: "CEXBindTips2" }) }),
1546
- /* @__PURE__ */ jsx7("p", { children: /* @__PURE__ */ jsx7(FormattedMessage2, { id: "CEXBindTips3" }) })
2372
+ }), ...props, children: /* @__PURE__ */ jsxs7("div", { className: "matchid-cex-modal", children: [
2373
+ /* @__PURE__ */ jsxs7("div", { children: [
2374
+ /* @__PURE__ */ jsx9("p", { children: /* @__PURE__ */ jsx9(FormattedMessage4, { id: "CEXBindAttention" }) }),
2375
+ /* @__PURE__ */ jsx9("p", { children: /* @__PURE__ */ jsx9(FormattedMessage4, { id: "CEXBindTips1" }) }),
2376
+ /* @__PURE__ */ jsx9("p", { children: /* @__PURE__ */ jsx9(FormattedMessage4, { id: "CEXBindTips2" }) }),
2377
+ /* @__PURE__ */ jsx9("p", { children: /* @__PURE__ */ jsx9(FormattedMessage4, { id: "CEXBindTips3" }) })
1547
2378
  ] }),
1548
- /* @__PURE__ */ jsx7(Field, { label: intl.formatMessage({
2379
+ /* @__PURE__ */ jsx9(Field, { label: intl.formatMessage({
1549
2380
  id: "CEXBindApiKey"
1550
- }), children: /* @__PURE__ */ jsx7(
2381
+ }), children: /* @__PURE__ */ jsx9(
1551
2382
  Input,
1552
2383
  {
1553
2384
  value: key,
@@ -1555,9 +2386,9 @@ function CEXBindModal({
1555
2386
  placeholder: "**** **** ****"
1556
2387
  }
1557
2388
  ) }),
1558
- /* @__PURE__ */ jsx7(Field, { label: intl.formatMessage({
2389
+ /* @__PURE__ */ jsx9(Field, { label: intl.formatMessage({
1559
2390
  id: "CEXBindApiSecretKey"
1560
- }), error: !needPassphrase && error, children: /* @__PURE__ */ jsx7(
2391
+ }), error: !needPassphrase && error, children: /* @__PURE__ */ jsx9(
1561
2392
  Input,
1562
2393
  {
1563
2394
  value: secret,
@@ -1565,9 +2396,9 @@ function CEXBindModal({
1565
2396
  placeholder: "**** **** ****"
1566
2397
  }
1567
2398
  ) }),
1568
- needPassphrase && /* @__PURE__ */ jsx7(Field, { error, label: intl.formatMessage({
2399
+ needPassphrase && /* @__PURE__ */ jsx9(Field, { error, label: intl.formatMessage({
1569
2400
  id: "CEXBindApiPassphrase"
1570
- }), children: /* @__PURE__ */ jsx7(
2401
+ }), children: /* @__PURE__ */ jsx9(
1571
2402
  Input,
1572
2403
  {
1573
2404
  value: APIPassphrase,
@@ -1575,7 +2406,7 @@ function CEXBindModal({
1575
2406
  placeholder: "**** **** ****"
1576
2407
  }
1577
2408
  ) }),
1578
- /* @__PURE__ */ jsx7(
2409
+ /* @__PURE__ */ jsx9(
1579
2410
  Button,
1580
2411
  {
1581
2412
  onClick: SubmitApi,
@@ -1583,14 +2414,14 @@ function CEXBindModal({
1583
2414
  block: true,
1584
2415
  loading,
1585
2416
  disabled: !key || !secret,
1586
- children: /* @__PURE__ */ jsx7(FormattedMessage2, { id: "continue" })
2417
+ children: /* @__PURE__ */ jsx9(FormattedMessage4, { id: "continue" })
1587
2418
  }
1588
2419
  )
1589
2420
  ] }) });
1590
2421
  }
1591
2422
 
1592
2423
  // src/context/BusinessProvider.tsx
1593
- import { Fragment, jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
2424
+ import { Fragment, jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
1594
2425
  function BusinessProvider({ children }) {
1595
2426
  const { overview, token } = useUserInfo();
1596
2427
  const { type: SOLType, isOpen: SOLIsOpen, close: SOLClose } = useSOLModalStore();
@@ -1599,13 +2430,12 @@ function BusinessProvider({ children }) {
1599
2430
  const { type: BTCType, isOpen: BTCIsOpen, close: BTCClose } = useBTCModalStore();
1600
2431
  const { type: CEXType, isOpen: CEXIsOpen, close: CEXClose } = useCEXBindModalStore();
1601
2432
  const WalletModalStore = useWalletModalStore();
1602
- const { close: HashPanelClose, ...hashPanelProps } = useHashPanelStore();
1603
2433
  const walletModalClose = (func) => {
1604
2434
  WalletModalStore.close();
1605
2435
  func();
1606
2436
  };
1607
- return /* @__PURE__ */ jsxs7(Fragment, { children: [
1608
- /* @__PURE__ */ jsx8(
2437
+ return /* @__PURE__ */ jsxs8(Fragment, { children: [
2438
+ /* @__PURE__ */ jsx10(
1609
2439
  SOLModal,
1610
2440
  {
1611
2441
  isOpen: SOLIsOpen && (SOLType == "login" && !overview && !token || SOLType == "bind" && !!token && !!overview),
@@ -1615,7 +2445,7 @@ function BusinessProvider({ children }) {
1615
2445
  zIndex: 199
1616
2446
  }
1617
2447
  ),
1618
- /* @__PURE__ */ jsx8(
2448
+ /* @__PURE__ */ jsx10(
1619
2449
  TRONModal,
1620
2450
  {
1621
2451
  isOpen: TRONIsOpen && (TRONType == "login" && !overview && !token || TRONType == "bind" && !!token && !!overview),
@@ -1625,7 +2455,7 @@ function BusinessProvider({ children }) {
1625
2455
  zIndex: 199
1626
2456
  }
1627
2457
  ),
1628
- /* @__PURE__ */ jsx8(
2458
+ /* @__PURE__ */ jsx10(
1629
2459
  TONModal,
1630
2460
  {
1631
2461
  isOpen: TONIsOpen && (TONType == "login" && !overview && !token || TONType == "bind" && !!token && !!overview),
@@ -1635,7 +2465,7 @@ function BusinessProvider({ children }) {
1635
2465
  zIndex: 199
1636
2466
  }
1637
2467
  ),
1638
- /* @__PURE__ */ jsx8(
2468
+ /* @__PURE__ */ jsx10(
1639
2469
  BTCModal,
1640
2470
  {
1641
2471
  isOpen: BTCIsOpen && (BTCType == "login" && !overview && !token || BTCType == "bind" && !!token && !!overview),
@@ -1645,7 +2475,7 @@ function BusinessProvider({ children }) {
1645
2475
  zIndex: 199
1646
2476
  }
1647
2477
  ),
1648
- /* @__PURE__ */ jsx8(
2478
+ /* @__PURE__ */ jsx10(
1649
2479
  CEXBindModal,
1650
2480
  {
1651
2481
  isOpen: CEXIsOpen && (!!token && !!overview),
@@ -1654,8 +2484,7 @@ function BusinessProvider({ children }) {
1654
2484
  zIndex: 199
1655
2485
  }
1656
2486
  ),
1657
- /* @__PURE__ */ jsx8(HashPanel_default, { onClose: HashPanelClose, ...hashPanelProps }),
1658
- /* @__PURE__ */ jsx8(
2487
+ /* @__PURE__ */ jsx10(
1659
2488
  WalletModal,
1660
2489
  {
1661
2490
  isOpen: WalletModalStore.isOpen && (WalletModalStore.type == "login" && !overview && !token || WalletModalStore.type == "bind" && !!token && !!overview),
@@ -1670,14 +2499,14 @@ function BusinessProvider({ children }) {
1670
2499
  }
1671
2500
 
1672
2501
  // src/context/index.tsx
1673
- import { jsx as jsx9 } from "react/jsx-runtime";
2502
+ import { jsx as jsx11 } from "react/jsx-runtime";
1674
2503
  var Providers = ({ children }) => {
1675
- return /* @__PURE__ */ jsx9(ToastProvider, { children: /* @__PURE__ */ jsx9(ModalProvider, { children: /* @__PURE__ */ jsx9(BusinessProvider, { children }) }) });
2504
+ return /* @__PURE__ */ jsx11(ToastProvider, { children: /* @__PURE__ */ jsx11(ModalProvider, { children: /* @__PURE__ */ jsx11(BusinessProvider, { children }) }) });
1676
2505
  };
1677
2506
  var context_default = Providers;
1678
2507
 
1679
2508
  // src/hooks/useWalletInit.ts
1680
- import { useEffect as useEffect9, useRef } from "react";
2509
+ import { useEffect as useEffect11, useRef as useRef2 } from "react";
1681
2510
 
1682
2511
  // src/utils/wallet.ts
1683
2512
  var sendMessage = ({ method, data, resolve, reject, timeout }) => {
@@ -1710,11 +2539,11 @@ function useWalletInit({
1710
2539
  }) {
1711
2540
  const { endpoints, token, overview, setWallet, wallet, appid, locale, refreshOverview } = useLocalStore_default();
1712
2541
  const { setWalletReady, walletReady } = useStore_default();
1713
- const iframeReadyRef = useRef(walletReady);
1714
- useEffect9(() => {
2542
+ const iframeReadyRef = useRef2(walletReady);
2543
+ useEffect11(() => {
1715
2544
  setWallet(config);
1716
2545
  }, [config]);
1717
- useEffect9(() => {
2546
+ useEffect11(() => {
1718
2547
  matchlog_default.log("sdk.mpc.status", walletReady, iframeReadyRef.current);
1719
2548
  iframeReadyRef.current = walletReady;
1720
2549
  if (iframeReadyRef.current) {
@@ -1731,7 +2560,7 @@ function useWalletInit({
1731
2560
  onReady();
1732
2561
  }
1733
2562
  }, [walletReady]);
1734
- useEffect9(() => {
2563
+ useEffect11(() => {
1735
2564
  if (!endpoints.auth || !appid || !token || !config) {
1736
2565
  const existingIframe = getWalletIframe();
1737
2566
  if (existingIframe) {
@@ -1831,7 +2660,7 @@ function useWalletInit({
1831
2660
  }
1832
2661
  }
1833
2662
  }, [endpoints.auth, appid, token, config]);
1834
- useEffect9(() => {
2663
+ useEffect11(() => {
1835
2664
  const messageHandle = async (e) => {
1836
2665
  if (e.origin !== endpoints.auth.substring(0, endpoints.auth.length - 1)) {
1837
2666
  return;
@@ -1912,7 +2741,7 @@ function useWalletInit({
1912
2741
  }
1913
2742
 
1914
2743
  // src/hooks/useInit.tsx
1915
- import { useEffect as useEffect10, useRef as useRef2 } from "react";
2744
+ import { useEffect as useEffect12, useRef as useRef3 } from "react";
1916
2745
  function useInit({
1917
2746
  theme,
1918
2747
  appid,
@@ -1932,23 +2761,23 @@ function useInit({
1932
2761
  locale: realLocale
1933
2762
  } = useLocalStore_default();
1934
2763
  const walletModalStore = useWalletModalStore();
1935
- const overviewLoadingRef = useRef2(false);
2764
+ const overviewLoadingRef = useRef3(false);
1936
2765
  const searchParams = new URLSearchParams(window.location.search);
1937
2766
  const matchToken = searchParams.get("matchToken");
1938
2767
  const realEndpoints = endpoints || env_default.endpoints;
1939
- useEffect10(() => {
2768
+ useEffect12(() => {
1940
2769
  setTheme(theme);
1941
2770
  }, [theme]);
1942
- useEffect10(() => {
2771
+ useEffect12(() => {
1943
2772
  setAppid(appid);
1944
2773
  }, [appid]);
1945
- useEffect10(() => {
2774
+ useEffect12(() => {
1946
2775
  setEndpoints(realEndpoints);
1947
2776
  }, [realEndpoints]);
1948
- useEffect10(() => {
2777
+ useEffect12(() => {
1949
2778
  setLocale(locale || "en");
1950
2779
  }, [locale]);
1951
- useEffect10(() => {
2780
+ useEffect12(() => {
1952
2781
  if (matchToken) {
1953
2782
  const tokenData = JSON.parse(atob(matchToken));
1954
2783
  if (tokenData && tokenData.mid && tokenData.token) {
@@ -1959,7 +2788,7 @@ function useInit({
1959
2788
  }
1960
2789
  }
1961
2790
  }, [matchToken]);
1962
- useEffect10(() => {
2791
+ useEffect12(() => {
1963
2792
  const onLoginMessage = (event) => {
1964
2793
  const res = event.data;
1965
2794
  if (res.event === "login" && res.data && (res.data.token || res.data.token_type && res.data.access_token)) {
@@ -1996,7 +2825,7 @@ function useInit({
1996
2825
  overviewLoadingRef.current = false;
1997
2826
  }
1998
2827
  };
1999
- useEffect10(() => {
2828
+ useEffect12(() => {
2000
2829
  if (token) {
2001
2830
  loadOverview();
2002
2831
  }
@@ -2079,7 +2908,35 @@ var en_default = {
2079
2908
  CEXBindApiSecretKey: "API Secret Key",
2080
2909
  CEXBindApiPassphrase: "API Passphrase",
2081
2910
  cancel: "Cancel",
2082
- walletLoading: "Wallet service is loading"
2911
+ walletLoading: "Wallet service is loading",
2912
+ tokenDetails: "Token Details",
2913
+ tokenAmountMin: "Amount must be greater than 0.",
2914
+ tokenAmountMax: "Insufficient balance.",
2915
+ tokenAddressError: "Invalid address.",
2916
+ amount: "Amount",
2917
+ amountPlaceholder: "Enter the Amount.",
2918
+ balance: "Balance",
2919
+ receiveTitle: "Received wallet address",
2920
+ receivePlaceholder: "Enter the Received wallet address.",
2921
+ next: "Next",
2922
+ copied: "Copied",
2923
+ receiveQrcode: "Receive by scanning the QR code",
2924
+ copyAddress: "Copy Address",
2925
+ tokenSmartContract: "Token Smart Contract",
2926
+ tokenSmartContractPlaceholder: "Enter the Token Smart Contract.",
2927
+ tokenSymbol: "Token Symbol",
2928
+ tokenSymbolPlaceholder: "Enter the Token Symbol.",
2929
+ tokenDecimals: "Decimals",
2930
+ tokenDecimalsPlaceholder: "Enter the Decimals.",
2931
+ import: "Import",
2932
+ receive: "Receive",
2933
+ customizedToken: "Customized Token",
2934
+ noMoreRecords: "There is no more Records here!",
2935
+ noRecords: "No Records here!",
2936
+ close: "Close",
2937
+ back: "Back",
2938
+ importSuccess: "Import Token Successfully",
2939
+ importFail: "Failed to import Token"
2083
2940
  };
2084
2941
 
2085
2942
  // src/i18n/zh.json
@@ -2131,7 +2988,35 @@ var zh_default = {
2131
2988
  CEXBindApiSecretKey: "API \u79D8\u94A5",
2132
2989
  CEXBindApiPassphrase: "API \u5BC6\u7801\u77ED\u8BED",
2133
2990
  cancel: "\u53D6\u6D88",
2134
- walletLoading: "\u94B1\u5305\u670D\u52A1\u6B63\u5728\u52A0\u8F7D"
2991
+ walletLoading: "\u94B1\u5305\u670D\u52A1\u6B63\u5728\u52A0\u8F7D",
2992
+ tokenDetails: "\u4EE3\u5E01\u8BE6\u60C5",
2993
+ tokenAmountMin: "\u91D1\u989D\u5FC5\u987B\u5927\u4E8E 0\u3002",
2994
+ tokenAmountMax: "\u4F59\u989D\u4E0D\u8DB3\u3002",
2995
+ tokenAddressError: "\u65E0\u6548\u7684\u5730\u5740\u3002",
2996
+ amount: "\u91D1\u989D",
2997
+ amountPlaceholder: "\u8BF7\u8F93\u5165\u91D1\u989D\u3002",
2998
+ balance: "\u4F59\u989D",
2999
+ receiveTitle: "\u63A5\u6536\u94B1\u5305\u5730\u5740",
3000
+ receivePlaceholder: "\u8BF7\u8F93\u5165\u63A5\u6536\u94B1\u5305\u5730\u5740\u3002",
3001
+ next: "\u4E0B\u4E00\u6B65",
3002
+ copied: "\u5DF2\u590D\u5236",
3003
+ receiveQrcode: "\u626B\u63CF QR \u7801\u63A5\u6536",
3004
+ copyAddress: "\u590D\u5236\u5730\u5740",
3005
+ tokenSmartContract: "\u4EE3\u5E01\u667A\u80FD\u5408\u7EA6",
3006
+ tokenSmartContractPlaceholder: "\u8BF7\u8F93\u5165\u4EE3\u5E01\u667A\u80FD\u5408\u7EA6\u3002",
3007
+ tokenSymbol: "\u4EE3\u5E01\u7B26\u53F7",
3008
+ tokenSymbolPlaceholder: "\u8BF7\u8F93\u5165\u4EE3\u5E01\u7B26\u53F7\u3002",
3009
+ tokenDecimals: "\u5C0F\u6570\u4F4D\u6570",
3010
+ tokenDecimalsPlaceholder: "\u8BF7\u8F93\u5165\u5C0F\u6570\u4F4D\u6570\u3002",
3011
+ import: "\u5BFC\u5165",
3012
+ receive: "\u63A5\u6536",
3013
+ customizedToken: "\u81EA\u5B9A\u4E49\u4EE3\u5E01",
3014
+ noMoreRecords: "\u6CA1\u6709\u66F4\u591A\u4EA4\u6613\u8BB0\u5F55\u4E86\uFF01",
3015
+ noRecords: "\u6682\u65E0\u4EA4\u6613\u8BB0\u5F55\uFF01",
3016
+ close: "\u5173\u95ED",
3017
+ back: "\u8FD4\u56DE",
3018
+ importSuccess: "\u6210\u529F\u5BFC\u5165\u4EE3\u5E01",
3019
+ importFail: "\u5BFC\u5165\u4EE3\u5E01\u5931\u8D25"
2135
3020
  };
2136
3021
 
2137
3022
  // src/i18n/tw.json
@@ -2183,7 +3068,35 @@ var tw_default = {
2183
3068
  CEXBindApiSecretKey: "API \u5BC6\u9470",
2184
3069
  CEXBindApiPassphrase: "API \u5BC6\u78BC\u77ED\u8A9E",
2185
3070
  cancel: "\u53D6\u6D88",
2186
- walletLoading: "\u9322\u5305\u670D\u52D9\u6B63\u5728\u52A0\u8F09"
3071
+ walletLoading: "\u9322\u5305\u670D\u52D9\u6B63\u5728\u52A0\u8F09",
3072
+ tokenDetails: "\u4EE3\u5E63\u8A73\u60C5",
3073
+ tokenAmountMin: "\u91D1\u984D\u5FC5\u9808\u5927\u65BC 0\u3002",
3074
+ tokenAmountMax: "\u9918\u984D\u4E0D\u8DB3\u3002",
3075
+ tokenAddressError: "\u7121\u6548\u7684\u5730\u5740\u3002",
3076
+ amount: "\u91D1\u984D",
3077
+ amountPlaceholder: "\u8ACB\u8F38\u5165\u91D1\u984D\u3002",
3078
+ balance: "\u9918\u984D",
3079
+ receiveTitle: "\u63A5\u6536\u9322\u5305\u5730\u5740",
3080
+ receivePlaceholder: "\u8ACB\u8F38\u5165\u63A5\u6536\u9322\u5305\u5730\u5740\u3002",
3081
+ next: "\u4E0B\u4E00\u6B65",
3082
+ copied: "\u5DF2\u8907\u88FD",
3083
+ receiveQrcode: "\u6383\u63CF QR \u78BC\u63A5\u6536",
3084
+ copyAddress: "\u8907\u88FD\u5730\u5740",
3085
+ tokenSmartContract: "\u4EE3\u5E63\u667A\u80FD\u5408\u7D04",
3086
+ tokenSmartContractPlaceholder: "\u8ACB\u8F38\u5165\u4EE3\u5E63\u667A\u80FD\u5408\u7D04\u3002",
3087
+ tokenSymbol: "\u4EE3\u5E63\u7B26\u865F",
3088
+ tokenSymbolPlaceholder: "\u8ACB\u8F38\u5165\u4EE3\u5E63\u7B26\u865F\u3002",
3089
+ tokenDecimals: "\u5C0F\u6578\u4F4D\u6578",
3090
+ tokenDecimalsPlaceholder: "\u8ACB\u8F38\u5165\u5C0F\u6578\u4F4D\u6578\u3002",
3091
+ import: "\u5C0E\u5165",
3092
+ receive: "\u63A5\u6536",
3093
+ customizedToken: "\u81EA\u5B9A\u7FA9\u4EE3\u5E63",
3094
+ noMoreRecords: "\u6C92\u6709\u66F4\u591A\u4EA4\u6613\u8A18\u9304\u4E86\uFF01",
3095
+ noRecords: "\u66AB\u7121\u4EA4\u6613\u8A18\u9304\uFF01",
3096
+ close: "\u95DC\u9589",
3097
+ back: "\u8FD4\u56DE",
3098
+ importSuccess: "\u6210\u529F\u532F\u5165\u4EE3\u5E63",
3099
+ importFail: "\u532F\u5165\u4EE3\u5E63\u5931\u6557"
2187
3100
  };
2188
3101
 
2189
3102
  // src/i18n/fr.json
@@ -2235,7 +3148,35 @@ var fr_default = {
2235
3148
  CEXBindApiSecretKey: "Cl\xE9 Secr\xE8te API",
2236
3149
  CEXBindApiPassphrase: "Phrase secr\xE8te API",
2237
3150
  cancel: "Annuler",
2238
- walletLoading: "Le service de portefeuille est en cours de chargement"
3151
+ walletLoading: "Le service de portefeuille est en cours de chargement",
3152
+ tokenDetails: "D\xE9tails du Token",
3153
+ tokenAmountMin: "Le montant doit \xEAtre sup\xE9rieur \xE0 0.",
3154
+ tokenAmountMax: "Solde insuffisant.",
3155
+ tokenAddressError: "Adresse invalide.",
3156
+ amount: "Montant",
3157
+ amountPlaceholder: "Entrez le montant.",
3158
+ balance: "Solde",
3159
+ receiveTitle: "Adresse du portefeuille re\xE7u",
3160
+ receivePlaceholder: "Entrez l'adresse du portefeuille re\xE7u.",
3161
+ next: "Suivant",
3162
+ copied: "Copi\xE9",
3163
+ receiveQrcode: "Recevoir en scannant le code QR",
3164
+ copyAddress: "Copier l'adresse",
3165
+ tokenSmartContract: "Contrat intelligent du Token",
3166
+ tokenSmartContractPlaceholder: "Entrez le contrat intelligent du Token.",
3167
+ tokenSymbol: "Symbole du Token",
3168
+ tokenSymbolPlaceholder: "Entrez le symbole du Token.",
3169
+ tokenDecimals: "D\xE9cimales",
3170
+ tokenDecimalsPlaceholder: "Entrez les d\xE9cimales.",
3171
+ import: "Importer",
3172
+ receive: "Recevoir",
3173
+ customizedToken: "Token personnalis\xE9",
3174
+ noMoreRecords: "Il n'y a plus d'enregistrements ici !",
3175
+ noRecords: "Il n'y a aucun enregistrement ici !",
3176
+ close: "Fermer",
3177
+ back: "Retour",
3178
+ importSuccess: "Importation du jeton r\xE9ussie",
3179
+ importFail: "\xC9chec de l'importation du jeton"
2239
3180
  };
2240
3181
 
2241
3182
  // src/i18n/ja.json
@@ -2287,7 +3228,35 @@ var ja_default = {
2287
3228
  CEXBindApiSecretKey: "API \u30B7\u30FC\u30AF\u30EC\u30C3\u30C8\u30AD\u30FC",
2288
3229
  CEXBindApiPassphrase: "API \u30D1\u30B9\u30D5\u30EC\u30FC\u30BA",
2289
3230
  cancel: "\u30AD\u30E3\u30F3\u30BB\u30EB",
2290
- walletLoading: "\u30A6\u30A9\u30EC\u30C3\u30C8\u30B5\u30FC\u30D3\u30B9\u3092\u8AAD\u307F\u8FBC\u3093\u3067\u3044\u307E\u3059"
3231
+ walletLoading: "\u30A6\u30A9\u30EC\u30C3\u30C8\u30B5\u30FC\u30D3\u30B9\u3092\u8AAD\u307F\u8FBC\u3093\u3067\u3044\u307E\u3059",
3232
+ tokenDetails: "\u30C8\u30FC\u30AF\u30F3\u306E\u8A73\u7D30",
3233
+ tokenAmountMin: "\u91D1\u984D\u306F0\u3088\u308A\u5927\u304D\u304F\u306A\u3051\u308C\u3070\u306A\u308A\u307E\u305B\u3093\u3002",
3234
+ tokenAmountMax: "\u6B8B\u9AD8\u304C\u4E0D\u8DB3\u3057\u3066\u3044\u307E\u3059\u3002",
3235
+ tokenAddressError: "\u7121\u52B9\u306A\u30A2\u30C9\u30EC\u30B9\u3067\u3059\u3002",
3236
+ amount: "\u91D1\u984D",
3237
+ amountPlaceholder: "\u91D1\u984D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
3238
+ balance: "\u6B8B\u9AD8",
3239
+ receiveTitle: "\u53D7\u53D6\u30A6\u30A9\u30EC\u30C3\u30C8\u30A2\u30C9\u30EC\u30B9",
3240
+ receivePlaceholder: "\u53D7\u53D6\u30A6\u30A9\u30EC\u30C3\u30C8\u30A2\u30C9\u30EC\u30B9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
3241
+ next: "\u6B21\u3078",
3242
+ copied: "\u30B3\u30D4\u30FC\u3057\u307E\u3057\u305F",
3243
+ receiveQrcode: "QR\u30B3\u30FC\u30C9\u3092\u30B9\u30AD\u30E3\u30F3\u3057\u3066\u53D7\u3051\u53D6\u308B",
3244
+ copyAddress: "\u30A2\u30C9\u30EC\u30B9\u3092\u30B3\u30D4\u30FC",
3245
+ tokenSmartContract: "\u30C8\u30FC\u30AF\u30F3\u306E\u30B9\u30DE\u30FC\u30C8\u30B3\u30F3\u30C8\u30E9\u30AF\u30C8",
3246
+ tokenSmartContractPlaceholder: "\u30C8\u30FC\u30AF\u30F3\u306E\u30B9\u30DE\u30FC\u30C8\u30B3\u30F3\u30C8\u30E9\u30AF\u30C8\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
3247
+ tokenSymbol: "\u30C8\u30FC\u30AF\u30F3\u30B7\u30F3\u30DC\u30EB",
3248
+ tokenSymbolPlaceholder: "\u30C8\u30FC\u30AF\u30F3\u30B7\u30F3\u30DC\u30EB\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
3249
+ tokenDecimals: "\u5C0F\u6570\u70B9",
3250
+ tokenDecimalsPlaceholder: "\u5C0F\u6570\u70B9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
3251
+ import: "\u30A4\u30F3\u30DD\u30FC\u30C8",
3252
+ receive: "\u53D7\u3051\u53D6\u308B",
3253
+ customizedToken: "\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u30C8\u30FC\u30AF\u30F3",
3254
+ noMoreRecords: "\u3053\u308C\u4EE5\u4E0A\u306E\u8A18\u9332\u306F\u3042\u308A\u307E\u305B\u3093\uFF01",
3255
+ noRecords: "\u8A18\u9332\u304C\u3042\u308A\u307E\u305B\u3093\uFF01",
3256
+ close: "\u9589\u3058\u308B",
3257
+ back: "\u623B\u308B",
3258
+ importSuccess: "\u30C8\u30FC\u30AF\u30F3\u306E\u30A4\u30F3\u30DD\u30FC\u30C8\u306B\u6210\u529F\u3057\u307E\u3057\u305F",
3259
+ importFail: "\u30C8\u30FC\u30AF\u30F3\u306E\u30A4\u30F3\u30DD\u30FC\u30C8\u306B\u5931\u6557\u3057\u307E\u3057\u305F"
2291
3260
  };
2292
3261
 
2293
3262
  // src/i18n/ko.json
@@ -2339,7 +3308,35 @@ var ko_default = {
2339
3308
  CEXBindApiSecretKey: "API \uBE44\uBC00 \uD0A4",
2340
3309
  CEXBindApiPassphrase: "API \uC554\uD638 \uAD6C\uBB38",
2341
3310
  cancel: "\uCDE8\uC18C",
2342
- walletLoading: "\uC9C0\uAC11 \uC11C\uBE44\uC2A4\uB97C \uBD88\uB7EC\uC624\uB294 \uC911"
3311
+ walletLoading: "\uC9C0\uAC11 \uC11C\uBE44\uC2A4\uB97C \uBD88\uB7EC\uC624\uB294 \uC911",
3312
+ tokenDetails: "\uD1A0\uD070 \uC0C1\uC138\uC815\uBCF4",
3313
+ tokenAmountMin: "\uAE08\uC561\uC740 0\uBCF4\uB2E4 \uCEE4\uC57C \uD569\uB2C8\uB2E4.",
3314
+ tokenAmountMax: "\uC794\uC561\uC774 \uBD80\uC871\uD569\uB2C8\uB2E4.",
3315
+ tokenAddressError: "\uC720\uD6A8\uD558\uC9C0 \uC54A\uC740 \uC8FC\uC18C\uC785\uB2C8\uB2E4.",
3316
+ amount: "\uAE08\uC561",
3317
+ amountPlaceholder: "\uAE08\uC561\uC744 \uC785\uB825\uD558\uC138\uC694.",
3318
+ balance: "\uC794\uC561",
3319
+ receiveTitle: "\uC218\uC2E0 \uC9C0\uAC11 \uC8FC\uC18C",
3320
+ receivePlaceholder: "\uC218\uC2E0 \uC9C0\uAC11 \uC8FC\uC18C\uB97C \uC785\uB825\uD558\uC138\uC694.",
3321
+ next: "\uB2E4\uC74C",
3322
+ copied: "\uBCF5\uC0AC\uB428",
3323
+ receiveQrcode: "QR \uCF54\uB4DC\uB97C \uC2A4\uCE94\uD558\uC5EC \uBC1B\uAE30",
3324
+ copyAddress: "\uC8FC\uC18C \uBCF5\uC0AC",
3325
+ tokenSmartContract: "\uD1A0\uD070 \uC2A4\uB9C8\uD2B8 \uCEE8\uD2B8\uB799\uD2B8",
3326
+ tokenSmartContractPlaceholder: "\uD1A0\uD070 \uC2A4\uB9C8\uD2B8 \uCEE8\uD2B8\uB799\uD2B8\uB97C \uC785\uB825\uD558\uC138\uC694.",
3327
+ tokenSymbol: "\uD1A0\uD070 \uC2EC\uBCFC",
3328
+ tokenSymbolPlaceholder: "\uD1A0\uD070 \uC2EC\uBCFC\uC744 \uC785\uB825\uD558\uC138\uC694.",
3329
+ tokenDecimals: "\uC18C\uC218\uC810 \uC790\uB9AC\uC218",
3330
+ tokenDecimalsPlaceholder: "\uC18C\uC218\uC810 \uC790\uB9AC\uC218\uB97C \uC785\uB825\uD558\uC138\uC694.",
3331
+ import: "\uAC00\uC838\uC624\uAE30",
3332
+ receive: "\uBC1B\uAE30",
3333
+ customizedToken: "\uB9DE\uCDA4\uD615 \uD1A0\uD070",
3334
+ noMoreRecords: "\uC5EC\uAE30\uC5D0 \uB354 \uC774\uC0C1 \uAE30\uB85D\uC774 \uC5C6\uC2B5\uB2C8\uB2E4!",
3335
+ noRecords: "\uC5EC\uAE30\uC5D0 \uAE30\uB85D\uC774 \uC5C6\uC2B5\uB2C8\uB2E4!",
3336
+ close: "\uB2EB\uAE30",
3337
+ back: "\uB4A4\uB85C",
3338
+ importSuccess: "\uD1A0\uD070\uC744 \uC131\uACF5\uC801\uC73C\uB85C \uAC00\uC838\uC654\uC2B5\uB2C8\uB2E4",
3339
+ importFail: "\uD1A0\uD070 \uAC00\uC838\uC624\uAE30\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4"
2343
3340
  };
2344
3341
 
2345
3342
  // src/i18n/vi.json
@@ -2391,7 +3388,35 @@ var vi_default = {
2391
3388
  CEXBindApiSecretKey: "Kh\xF3a b\xED m\u1EADt API",
2392
3389
  CEXBindApiPassphrase: "C\u1EE5m m\u1EADt kh\u1EA9u API",
2393
3390
  cancel: "H\u1EE7y",
2394
- walletLoading: "D\u1ECBch v\u1EE5 v\xED \u0111ang t\u1EA3i"
3391
+ walletLoading: "D\u1ECBch v\u1EE5 v\xED \u0111ang t\u1EA3i",
3392
+ tokenDetails: "Chi ti\u1EBFt Token",
3393
+ tokenAmountMin: "S\u1ED1 ti\u1EC1n ph\u1EA3i l\u1EDBn h\u01A1n 0.",
3394
+ tokenAmountMax: "S\u1ED1 d\u01B0 kh\xF4ng \u0111\u1EE7.",
3395
+ tokenAddressError: "\u0110\u1ECBa ch\u1EC9 kh\xF4ng h\u1EE3p l\u1EC7.",
3396
+ amount: "S\u1ED1 l\u01B0\u1EE3ng",
3397
+ amountPlaceholder: "Nh\u1EADp s\u1ED1 l\u01B0\u1EE3ng.",
3398
+ balance: "S\u1ED1 d\u01B0",
3399
+ receiveTitle: "\u0110\u1ECBa ch\u1EC9 v\xED nh\u1EADn",
3400
+ receivePlaceholder: "Nh\u1EADp \u0111\u1ECBa ch\u1EC9 v\xED nh\u1EADn.",
3401
+ next: "Ti\u1EBFp theo",
3402
+ copied: "\u0110\xE3 sao ch\xE9p",
3403
+ receiveQrcode: "Nh\u1EADn b\u1EB1ng c\xE1ch qu\xE9t m\xE3 QR",
3404
+ copyAddress: "Sao ch\xE9p \u0111\u1ECBa ch\u1EC9",
3405
+ tokenSmartContract: "H\u1EE3p \u0111\u1ED3ng th\xF4ng minh Token",
3406
+ tokenSmartContractPlaceholder: "Nh\u1EADp h\u1EE3p \u0111\u1ED3ng th\xF4ng minh Token.",
3407
+ tokenSymbol: "K\xFD hi\u1EC7u Token",
3408
+ tokenSymbolPlaceholder: "Nh\u1EADp k\xFD hi\u1EC7u Token.",
3409
+ tokenDecimals: "S\u1ED1 th\u1EADp ph\xE2n",
3410
+ tokenDecimalsPlaceholder: "Nh\u1EADp s\u1ED1 th\u1EADp ph\xE2n.",
3411
+ import: "Nh\u1EADp",
3412
+ receive: "Nh\u1EADn",
3413
+ customizedToken: "Token t\xF9y ch\u1EC9nh",
3414
+ noMoreRecords: "Kh\xF4ng c\xF2n b\u1EA3n ghi n\xE0o \u1EDF \u0111\xE2y!",
3415
+ noRecords: "Kh\xF4ng c\xF3 b\u1EA3n ghi n\xE0o \u1EDF \u0111\xE2y!",
3416
+ close: "\u0110\xF3ng",
3417
+ back: "Quay l\u1EA1i",
3418
+ importSuccess: "Nh\u1EADp Token th\xE0nh c\xF4ng",
3419
+ importFail: "Kh\xF4ng th\u1EC3 nh\u1EADp Token"
2395
3420
  };
2396
3421
 
2397
3422
  // src/i18n/es.json
@@ -2443,7 +3468,35 @@ var es_default = {
2443
3468
  CEXBindApiSecretKey: "Clave Secreta API",
2444
3469
  CEXBindApiPassphrase: "Frase de contrase\xF1a API",
2445
3470
  cancel: "Cancelar",
2446
- walletLoading: "El servicio de cartera se est\xE1 cargando"
3471
+ walletLoading: "El servicio de cartera se est\xE1 cargando",
3472
+ tokenDetails: "Detalles del Token",
3473
+ tokenAmountMin: "La cantidad debe ser mayor que 0.",
3474
+ tokenAmountMax: "Saldo insuficiente.",
3475
+ tokenAddressError: "Direcci\xF3n no v\xE1lida.",
3476
+ amount: "Cantidad",
3477
+ amountPlaceholder: "Ingrese la cantidad.",
3478
+ balance: "Saldo",
3479
+ receiveTitle: "Direcci\xF3n de billetera recibida",
3480
+ receivePlaceholder: "Ingrese la direcci\xF3n de la billetera recibida.",
3481
+ next: "Siguiente",
3482
+ copied: "Copiado",
3483
+ receiveQrcode: "Recibir escaneando el c\xF3digo QR",
3484
+ copyAddress: "Copiar direcci\xF3n",
3485
+ tokenSmartContract: "Contrato inteligente del Token",
3486
+ tokenSmartContractPlaceholder: "Ingrese el contrato inteligente del Token.",
3487
+ tokenSymbol: "S\xEDmbolo del Token",
3488
+ tokenSymbolPlaceholder: "Ingrese el s\xEDmbolo del Token.",
3489
+ tokenDecimals: "Decimales",
3490
+ tokenDecimalsPlaceholder: "Ingrese los decimales.",
3491
+ import: "Importar",
3492
+ receive: "Recibir",
3493
+ customizedToken: "Token personalizado",
3494
+ noMoreRecords: "\xA1No hay m\xE1s registros aqu\xED!",
3495
+ noRecords: "\xA1No hay registros aqu\xED!",
3496
+ close: "Cerrar",
3497
+ back: "Atr\xE1s",
3498
+ importSuccess: "Token importado con \xE9xito",
3499
+ importFail: "Error al importar el token"
2447
3500
  };
2448
3501
 
2449
3502
  // src/i18n/pt.json
@@ -2495,7 +3548,35 @@ var pt_default = {
2495
3548
  CEXBindApiSecretKey: "Chave Secreta API",
2496
3549
  CEXBindApiPassphrase: "Senha de API",
2497
3550
  cancel: "Cancelar",
2498
- walletLoading: "O servi\xE7o de carteira est\xE1 carregando"
3551
+ walletLoading: "O servi\xE7o de carteira est\xE1 carregando",
3552
+ tokenDetails: "Detalhes do Token",
3553
+ tokenAmountMin: "O valor deve ser maior que 0.",
3554
+ tokenAmountMax: "Saldo insuficiente.",
3555
+ tokenAddressError: "Endere\xE7o inv\xE1lido.",
3556
+ amount: "Quantidade",
3557
+ amountPlaceholder: "Digite a quantidade.",
3558
+ balance: "Saldo",
3559
+ receiveTitle: "Endere\xE7o da carteira recebida",
3560
+ receivePlaceholder: "Digite o endere\xE7o da carteira recebida.",
3561
+ next: "Pr\xF3ximo",
3562
+ copied: "Copiado",
3563
+ receiveQrcode: "Receber escaneando o c\xF3digo QR",
3564
+ copyAddress: "Copiar endere\xE7o",
3565
+ tokenSmartContract: "Contrato inteligente do Token",
3566
+ tokenSmartContractPlaceholder: "Digite o contrato inteligente do Token.",
3567
+ tokenSymbol: "S\xEDmbolo do Token",
3568
+ tokenSymbolPlaceholder: "Digite o s\xEDmbolo do Token.",
3569
+ tokenDecimals: "Decimais",
3570
+ tokenDecimalsPlaceholder: "Digite os decimais.",
3571
+ import: "Importar",
3572
+ receive: "Receber",
3573
+ customizedToken: "Token personalizado",
3574
+ noMoreRecords: "N\xE3o h\xE1 mais registros aqui!",
3575
+ noRecords: "N\xE3o h\xE1 registros aqui!",
3576
+ close: "Fechar",
3577
+ back: "Voltar",
3578
+ importSuccess: "Token importado com sucesso",
3579
+ importFail: "Falha ao importar o token"
2499
3580
  };
2500
3581
 
2501
3582
  // src/i18n/index.ts
@@ -2512,7 +3593,7 @@ var messages = {
2512
3593
  };
2513
3594
 
2514
3595
  // src/MatchContext.tsx
2515
- import { jsx as jsx10 } from "react/jsx-runtime";
3596
+ import { jsx as jsx12 } from "react/jsx-runtime";
2516
3597
  var queryClient = new QueryClient();
2517
3598
  var MatchContext = createContext3(void 0);
2518
3599
  var MatchProvider = ({
@@ -2534,7 +3615,7 @@ var MatchProvider = ({
2534
3615
  useWalletInit({
2535
3616
  config: wallet
2536
3617
  });
2537
- return /* @__PURE__ */ jsx10(IntlProvider, { locale: realLocale, messages: messages[realLocale], children: /* @__PURE__ */ jsx10(QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ jsx10(
3618
+ return /* @__PURE__ */ jsx12(IntlProvider, { locale: realLocale, messages: messages[realLocale], children: /* @__PURE__ */ jsx12(QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ jsx12(
2538
3619
  MatchContext.Provider,
2539
3620
  {
2540
3621
  value: {
@@ -2545,7 +3626,7 @@ var MatchProvider = ({
2545
3626
  theme,
2546
3627
  locale: realLocale
2547
3628
  },
2548
- children: /* @__PURE__ */ jsx10(context_default, { children })
3629
+ children: /* @__PURE__ */ jsx12(context_default, { children })
2549
3630
  }
2550
3631
  ) }) });
2551
3632
  };
@@ -2567,7 +3648,7 @@ function useUserInfo() {
2567
3648
  logout: logoutStore,
2568
3649
  setOverview,
2569
3650
  overview,
2570
- address: address2,
3651
+ address,
2571
3652
  endpoints,
2572
3653
  locale,
2573
3654
  refreshOverview
@@ -2579,7 +3660,7 @@ function useUserInfo() {
2579
3660
  const { open: BTCOpen } = useBTCModalStore();
2580
3661
  const { open: CEXBindOpen } = useCEXBindModalStore();
2581
3662
  const walletModalStore = useWalletModalStore();
2582
- const isLogin = useMemo6(() => !!token && !!overview, [token, overview]);
3663
+ const isLogin = useMemo7(() => !!token && !!overview, [token, overview]);
2583
3664
  const logout = async () => {
2584
3665
  try {
2585
3666
  await toLogoutApi();
@@ -2795,7 +3876,7 @@ function useUserInfo() {
2795
3876
  token,
2796
3877
  mid,
2797
3878
  did,
2798
- address: address2,
3879
+ address,
2799
3880
  isLogin,
2800
3881
  logout,
2801
3882
  getLoginEmailCode,
@@ -2811,29 +3892,23 @@ function useUserInfo() {
2811
3892
  }
2812
3893
 
2813
3894
  // src/components/EmailModal/StepVerify.tsx
2814
- import { useEffect as useEffect12, useMemo as useMemo7, useRef as useRef3, useState as useState11 } from "react";
2815
-
2816
- // src/config/index.tsx
2817
- var EMAIL_INTERVAL = 60;
2818
- var EMAIL_CODE_LENGTH = 6;
2819
-
2820
- // src/components/EmailModal/StepVerify.tsx
2821
- import { FormattedMessage as FormattedMessage3, useIntl as useIntl3 } from "react-intl";
2822
- import { jsx as jsx11, jsxs as jsxs8 } from "react/jsx-runtime";
3895
+ import { useEffect as useEffect14, useMemo as useMemo8, useRef as useRef4, useState as useState13 } from "react";
3896
+ import { FormattedMessage as FormattedMessage5, useIntl as useIntl5 } from "react-intl";
3897
+ import { jsx as jsx13, jsxs as jsxs9 } from "react/jsx-runtime";
2823
3898
  function StepVerify(props) {
2824
- const intl = useIntl3();
3899
+ const intl = useIntl5();
2825
3900
  const { getLoginEmailCode, loginByEmail } = useUserInfo();
2826
- const [error, setError] = useState11("");
2827
- const [code, setCode] = useState11("");
2828
- const [sending, setSending] = useState11(false);
2829
- const [submitting, setSubmitting] = useState11(false);
2830
- const sendTimeRef = useRef3(0);
2831
- const [sendBtnText, setSendBtnText] = useState11(intl.formatMessage({
3901
+ const [error, setError] = useState13("");
3902
+ const [code, setCode] = useState13("");
3903
+ const [sending, setSending] = useState13(false);
3904
+ const [submitting, setSubmitting] = useState13(false);
3905
+ const sendTimeRef = useRef4(0);
3906
+ const [sendBtnText, setSendBtnText] = useState13(intl.formatMessage({
2832
3907
  id: "send"
2833
3908
  }));
2834
3909
  const intervalTime = EMAIL_INTERVAL;
2835
3910
  const codeLength = EMAIL_CODE_LENGTH;
2836
- const intervalRef = useRef3(null);
3911
+ const intervalRef = useRef4(null);
2837
3912
  const isDownMd = useDownMd();
2838
3913
  const onSend = async () => {
2839
3914
  if (sendTimeRef.current > 0) {
@@ -2864,7 +3939,7 @@ function StepVerify(props) {
2864
3939
  setSending(false);
2865
3940
  }
2866
3941
  };
2867
- useEffect12(() => {
3942
+ useEffect14(() => {
2868
3943
  onSend();
2869
3944
  return () => {
2870
3945
  if (intervalRef.current) {
@@ -2872,7 +3947,7 @@ function StepVerify(props) {
2872
3947
  }
2873
3948
  };
2874
3949
  }, []);
2875
- const canContinue = useMemo7(() => {
3950
+ const canContinue = useMemo8(() => {
2876
3951
  return code.length === codeLength;
2877
3952
  }, [code]);
2878
3953
  const onContinue = async () => {
@@ -2896,17 +3971,17 @@ function StepVerify(props) {
2896
3971
  setSubmitting(false);
2897
3972
  }
2898
3973
  };
2899
- return /* @__PURE__ */ jsxs8("div", { className: "matchid-email-verify-box", children: [
2900
- /* @__PURE__ */ jsxs8("div", { className: "matchid-email-verify-header", children: [
2901
- /* @__PURE__ */ jsx11("div", { className: "matchid-email-verify-header-icon", children: /* @__PURE__ */ jsx11(EmailLineIcon, { size: isDownMd ? 19 : 24 }) }),
2902
- /* @__PURE__ */ jsxs8("div", { className: "matchid-email-verify-header-content", children: [
2903
- /* @__PURE__ */ jsx11("div", { className: "matchid-email-verify-header-value", children: props.email }),
2904
- /* @__PURE__ */ jsx11("div", { className: "matchid-email-verify-header-tips", children: /* @__PURE__ */ jsx11(FormattedMessage3, { id: "sendEmailTips" }) })
3974
+ return /* @__PURE__ */ jsxs9("div", { className: "matchid-email-verify-box", children: [
3975
+ /* @__PURE__ */ jsxs9("div", { className: "matchid-email-verify-header", children: [
3976
+ /* @__PURE__ */ jsx13("div", { className: "matchid-email-verify-header-icon", children: /* @__PURE__ */ jsx13(EmailLineIcon, { size: isDownMd ? 19 : 24 }) }),
3977
+ /* @__PURE__ */ jsxs9("div", { className: "matchid-email-verify-header-content", children: [
3978
+ /* @__PURE__ */ jsx13("div", { className: "matchid-email-verify-header-value", children: props.email }),
3979
+ /* @__PURE__ */ jsx13("div", { className: "matchid-email-verify-header-tips", children: /* @__PURE__ */ jsx13(FormattedMessage5, { id: "sendEmailTips" }) })
2905
3980
  ] })
2906
3981
  ] }),
2907
- /* @__PURE__ */ jsx11(Field, { label: intl.formatMessage({
3982
+ /* @__PURE__ */ jsx13(Field, { label: intl.formatMessage({
2908
3983
  id: "verificationCode"
2909
- }), error, children: /* @__PURE__ */ jsx11(
3984
+ }), error, children: /* @__PURE__ */ jsx13(
2910
3985
  Input,
2911
3986
  {
2912
3987
  placeholder: intl.formatMessage({
@@ -2916,7 +3991,7 @@ function StepVerify(props) {
2916
3991
  maxLength: codeLength,
2917
3992
  onChange: (e) => setCode(e.target.value),
2918
3993
  value: code,
2919
- after: /* @__PURE__ */ jsx11(
3994
+ after: /* @__PURE__ */ jsx13(
2920
3995
  Button,
2921
3996
  {
2922
3997
  highlight: true,
@@ -2935,13 +4010,13 @@ function StepVerify(props) {
2935
4010
  )
2936
4011
  }
2937
4012
  ) }),
2938
- /* @__PURE__ */ jsx11(Button, { disabled: !canContinue, highlight: true, block: true, size: "lg", onClick: onContinue, children: /* @__PURE__ */ jsx11(FormattedMessage3, { id: "continue" }) })
4013
+ /* @__PURE__ */ jsx13(Button, { disabled: !canContinue, highlight: true, block: true, size: "lg", onClick: onContinue, children: /* @__PURE__ */ jsx13(FormattedMessage5, { id: "continue" }) })
2939
4014
  ] });
2940
4015
  }
2941
4016
 
2942
4017
  // src/components/EmailModal/index.tsx
2943
- import { useIntl as useIntl4 } from "react-intl";
2944
- import { jsx as jsx12 } from "react/jsx-runtime";
4018
+ import { useIntl as useIntl6 } from "react-intl";
4019
+ import { jsx as jsx14 } from "react/jsx-runtime";
2945
4020
  function EmailModal({
2946
4021
  isOpen = false,
2947
4022
  width = 480,
@@ -2949,16 +4024,16 @@ function EmailModal({
2949
4024
  onBack,
2950
4025
  onLogin
2951
4026
  }) {
2952
- const [step, setStep] = useState12("input");
2953
- const [emailVal, setEmailVal] = useState12("");
2954
- const intl = useIntl4();
2955
- useEffect13(() => {
4027
+ const [step, setStep] = useState14("input");
4028
+ const [emailVal, setEmailVal] = useState14("");
4029
+ const intl = useIntl6();
4030
+ useEffect15(() => {
2956
4031
  if (!isOpen) {
2957
4032
  setStep("input");
2958
4033
  setEmailVal("");
2959
4034
  }
2960
4035
  }, [isOpen]);
2961
- return /* @__PURE__ */ jsx12(
4036
+ return /* @__PURE__ */ jsx14(
2962
4037
  ModalWithHeader,
2963
4038
  {
2964
4039
  isOpen,
@@ -2968,22 +4043,22 @@ function EmailModal({
2968
4043
  id: "email"
2969
4044
  }),
2970
4045
  onBack: step == "verify" ? () => setStep("input") : onBack,
2971
- children: step === "input" ? /* @__PURE__ */ jsx12(StepEmail, { email: emailVal, onContinue: (email) => {
4046
+ children: step === "input" ? /* @__PURE__ */ jsx14(StepEmail, { email: emailVal, onContinue: (email) => {
2972
4047
  setEmailVal(email);
2973
4048
  setStep("verify");
2974
- } }) : /* @__PURE__ */ jsx12(StepVerify, { email: emailVal, onSuccess: onLogin })
4049
+ } }) : /* @__PURE__ */ jsx14(StepVerify, { email: emailVal, onSuccess: onLogin })
2975
4050
  }
2976
4051
  );
2977
4052
  }
2978
4053
 
2979
4054
  // src/components/LoginBox/index.tsx
2980
- import { useMemo as useMemo8, useState as useState13 } from "react";
2981
- import { FormattedMessage as FormattedMessage4, useIntl as useIntl5 } from "react-intl";
4055
+ import { useMemo as useMemo9, useState as useState15 } from "react";
4056
+ import { FormattedMessage as FormattedMessage6, useIntl as useIntl7 } from "react-intl";
2982
4057
 
2983
4058
  // src/hooks/useAppConfig.ts
2984
- import { useQuery as useQuery3 } from "@tanstack/react-query";
4059
+ import { useQuery as useQuery6 } from "@tanstack/react-query";
2985
4060
  function useAppConfig() {
2986
- const query = useQuery3({
4061
+ const query = useQuery6({
2987
4062
  queryKey: ["appConfig"],
2988
4063
  queryFn: async () => {
2989
4064
  const res = await getAppConfigApi();
@@ -3001,7 +4076,7 @@ function useAppConfig() {
3001
4076
  }
3002
4077
 
3003
4078
  // src/components/LoginBox/index.tsx
3004
- import { Fragment as Fragment2, jsx as jsx13, jsxs as jsxs9 } from "react/jsx-runtime";
4079
+ import { Fragment as Fragment2, jsx as jsx15, jsxs as jsxs10 } from "react/jsx-runtime";
3005
4080
  var RecommendItem = ({
3006
4081
  icon,
3007
4082
  name,
@@ -3010,20 +4085,20 @@ var RecommendItem = ({
3010
4085
  children,
3011
4086
  footer
3012
4087
  }) => {
3013
- return /* @__PURE__ */ jsxs9("div", { className: "matchid-login-recommend-method", children: [
3014
- /* @__PURE__ */ jsxs9("div", { className: "matchid-login-recommend-method-item", onClick, children: [
3015
- /* @__PURE__ */ jsxs9("div", { className: "matchid-login-recommend-method-content", children: [
3016
- /* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-method-icon", children: icon }),
3017
- /* @__PURE__ */ jsx13("span", { className: "matchid-login-recommend-method-name", children: name })
4088
+ return /* @__PURE__ */ jsxs10("div", { className: "matchid-login-recommend-method", children: [
4089
+ /* @__PURE__ */ jsxs10("div", { className: "matchid-login-recommend-method-item", onClick, children: [
4090
+ /* @__PURE__ */ jsxs10("div", { className: "matchid-login-recommend-method-content", children: [
4091
+ /* @__PURE__ */ jsx15("div", { className: "matchid-login-recommend-method-icon", children: icon }),
4092
+ /* @__PURE__ */ jsx15("span", { className: "matchid-login-recommend-method-name", children: name })
3018
4093
  ] }),
3019
- footer ? footer : children ? /* @__PURE__ */ jsx13(
4094
+ footer ? footer : children ? /* @__PURE__ */ jsx15(
3020
4095
  ArrowDownIcon,
3021
4096
  {
3022
4097
  className: `matchid-login-recommend-method-arrow ${showChildren ? "matchid-login-recommend-method-arrow-active" : ""}`,
3023
4098
  size: 20,
3024
4099
  color: "var(--matchid-arrow-color)"
3025
4100
  }
3026
- ) : /* @__PURE__ */ jsx13(
4101
+ ) : /* @__PURE__ */ jsx15(
3027
4102
  ArrowRightIcon,
3028
4103
  {
3029
4104
  className: "matchid-login-recommend-method-arrow",
@@ -3032,7 +4107,7 @@ var RecommendItem = ({
3032
4107
  }
3033
4108
  )
3034
4109
  ] }),
3035
- children && /* @__PURE__ */ jsx13(
4110
+ children && /* @__PURE__ */ jsx15(
3036
4111
  "div",
3037
4112
  {
3038
4113
  className: `matchid-login-recommend-method-popover ${showChildren ? "matchid-login-recommend-method-popover-active" : ""}`,
@@ -3048,7 +4123,7 @@ function LoginBox({
3048
4123
  inModal = false
3049
4124
  }) {
3050
4125
  const config = useAppConfig();
3051
- const methodConfig = useMemo8(() => {
4126
+ const methodConfig = useMemo9(() => {
3052
4127
  if (recommendMethods || methods || walletMethods) {
3053
4128
  return {
3054
4129
  recommendMethods: recommendMethods ? recommendMethods : walletMethods ? ["wallet"] : [],
@@ -3090,82 +4165,82 @@ function LoginBox({
3090
4165
  walletMethods: walletMethodList
3091
4166
  };
3092
4167
  }, [config.platform, recommendMethods, methods, walletMethods]);
3093
- const [emailOpen, setEmailOpen] = useState13(false);
4168
+ const [emailOpen, setEmailOpen] = useState15(false);
3094
4169
  const { login } = useUserInfo();
3095
- const [showWallet, setShowWallet] = useState13(false);
3096
- const intl = useIntl5();
4170
+ const [showWallet, setShowWallet] = useState15(false);
4171
+ const intl = useIntl7();
3097
4172
  const isDownMd = useDownMd();
3098
4173
  const methodMap = {
3099
4174
  wallet: {
3100
- icon: /* @__PURE__ */ jsx13(WalletIcon, { size: isDownMd ? 36 : 40 }),
4175
+ icon: /* @__PURE__ */ jsx15(WalletIcon, { size: isDownMd ? 36 : 40 }),
3101
4176
  name: intl.formatMessage({ id: "wallet" }),
3102
4177
  onClick: () => setShowWallet(!showWallet),
3103
4178
  type: "wallet"
3104
4179
  },
3105
4180
  email: {
3106
- icon: /* @__PURE__ */ jsx13(EmailIcon, { size: isDownMd ? 36 : 40 }),
4181
+ icon: /* @__PURE__ */ jsx15(EmailIcon, { size: isDownMd ? 36 : 40 }),
3107
4182
  name: intl.formatMessage({ id: "email" }),
3108
4183
  onClick: () => {
3109
4184
  setEmailOpen(true);
3110
4185
  }
3111
4186
  },
3112
4187
  google: {
3113
- icon: /* @__PURE__ */ jsx13(GoogleIcon, { size: isDownMd ? 36 : 40 }),
4188
+ icon: /* @__PURE__ */ jsx15(GoogleIcon, { size: isDownMd ? 36 : 40 }),
3114
4189
  name: "Google",
3115
4190
  onClick: () => login("google")
3116
4191
  },
3117
4192
  twitter: {
3118
- icon: /* @__PURE__ */ jsx13(XIcon, { size: isDownMd ? 36 : 40 }),
4193
+ icon: /* @__PURE__ */ jsx15(XIcon, { size: isDownMd ? 36 : 40 }),
3119
4194
  name: "X",
3120
4195
  onClick: () => login("twitter")
3121
4196
  },
3122
4197
  telegram: {
3123
- icon: /* @__PURE__ */ jsx13(TelegramIcon, { size: isDownMd ? 36 : 40 }),
4198
+ icon: /* @__PURE__ */ jsx15(TelegramIcon, { size: isDownMd ? 36 : 40 }),
3124
4199
  name: "Telegram",
3125
4200
  onClick: () => login("telegram")
3126
4201
  },
3127
4202
  github: {
3128
- icon: /* @__PURE__ */ jsx13(GithubIcon, { size: isDownMd ? 36 : 40 }),
4203
+ icon: /* @__PURE__ */ jsx15(GithubIcon, { size: isDownMd ? 36 : 40 }),
3129
4204
  name: "Github",
3130
4205
  onClick: () => login("github")
3131
4206
  },
3132
4207
  discord: {
3133
- icon: /* @__PURE__ */ jsx13(DiscordIcon, { size: isDownMd ? 36 : 40 }),
4208
+ icon: /* @__PURE__ */ jsx15(DiscordIcon, { size: isDownMd ? 36 : 40 }),
3134
4209
  name: "Discord",
3135
4210
  onClick: () => login("discord")
3136
4211
  },
3137
4212
  linkedin: {
3138
- icon: /* @__PURE__ */ jsx13(LinkedinIcon, { size: isDownMd ? 36 : 40 }),
4213
+ icon: /* @__PURE__ */ jsx15(LinkedinIcon, { size: isDownMd ? 36 : 40 }),
3139
4214
  name: "LinkedIn",
3140
4215
  onClick: () => login("linkedin")
3141
4216
  },
3142
4217
  facebook: {
3143
- icon: /* @__PURE__ */ jsx13(FacebookIcon, { size: isDownMd ? 36 : 40 }),
4218
+ icon: /* @__PURE__ */ jsx15(FacebookIcon, { size: isDownMd ? 36 : 40 }),
3144
4219
  name: "Facebook",
3145
4220
  onClick: () => login("facebook")
3146
4221
  },
3147
4222
  youtube: {
3148
- icon: /* @__PURE__ */ jsx13(YoutubeIcon, { size: isDownMd ? 36 : 40 }),
4223
+ icon: /* @__PURE__ */ jsx15(YoutubeIcon, { size: isDownMd ? 36 : 40 }),
3149
4224
  name: "Youtube",
3150
4225
  onClick: () => login("youtube")
3151
4226
  }
3152
4227
  };
3153
4228
  const { walletMap } = useWalletConfig();
3154
- return /* @__PURE__ */ jsxs9(Fragment2, { children: [
3155
- (!inModal || !emailOpen) && /* @__PURE__ */ jsxs9("div", { className: "matchid-login-box", children: [
3156
- /* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-list", children: methodConfig.recommendMethods.map((m) => {
3157
- return /* @__PURE__ */ jsx13(
4229
+ return /* @__PURE__ */ jsxs10(Fragment2, { children: [
4230
+ (!inModal || !emailOpen) && /* @__PURE__ */ jsxs10("div", { className: "matchid-login-box", children: [
4231
+ /* @__PURE__ */ jsx15("div", { className: "matchid-login-recommend-list", children: methodConfig.recommendMethods.map((m) => {
4232
+ return /* @__PURE__ */ jsx15(
3158
4233
  RecommendItem,
3159
4234
  {
3160
4235
  icon: methodMap[m]?.icon,
3161
4236
  name: methodMap[m]?.name,
3162
4237
  onClick: methodMap[m]?.onClick,
3163
4238
  showChildren: m == "wallet" && showWallet,
3164
- children: m == "wallet" && /* @__PURE__ */ jsxs9(Fragment2, { children: [
3165
- /* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-wallet-divider" }),
3166
- /* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-wallet-list", children: methodConfig.walletMethods.map((n) => {
4239
+ children: m == "wallet" && /* @__PURE__ */ jsxs10(Fragment2, { children: [
4240
+ /* @__PURE__ */ jsx15("div", { className: "matchid-login-recommend-wallet-divider" }),
4241
+ /* @__PURE__ */ jsx15("div", { className: "matchid-login-recommend-wallet-list", children: methodConfig.walletMethods.map((n) => {
3167
4242
  const m2 = walletMap[n];
3168
- return /* @__PURE__ */ jsxs9(
4243
+ return /* @__PURE__ */ jsxs10(
3169
4244
  "div",
3170
4245
  {
3171
4246
  className: "matchid-login-recommend-wallet-item",
@@ -3173,16 +4248,16 @@ function LoginBox({
3173
4248
  login(m2.method);
3174
4249
  },
3175
4250
  children: [
3176
- /* @__PURE__ */ jsxs9("div", { className: "matchid-login-recommend-wallet-item-content", children: [
3177
- /* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-wallet-item-icon", children: m2.icon }),
3178
- /* @__PURE__ */ jsx13(
4251
+ /* @__PURE__ */ jsxs10("div", { className: "matchid-login-recommend-wallet-item-content", children: [
4252
+ /* @__PURE__ */ jsx15("div", { className: "matchid-login-recommend-wallet-item-icon", children: m2.icon }),
4253
+ /* @__PURE__ */ jsx15(
3179
4254
  "div",
3180
4255
  {
3181
4256
  className: "matchid-login-recommend-wallet-item-hover-icon",
3182
4257
  children: m2.activeIcon
3183
4258
  }
3184
4259
  ),
3185
- /* @__PURE__ */ jsx13(
4260
+ /* @__PURE__ */ jsx15(
3186
4261
  "span",
3187
4262
  {
3188
4263
  className: "matchid-login-recommend-wallet-item-name",
@@ -3190,7 +4265,7 @@ function LoginBox({
3190
4265
  }
3191
4266
  )
3192
4267
  ] }),
3193
- /* @__PURE__ */ jsx13(
4268
+ /* @__PURE__ */ jsx15(
3194
4269
  ArrowRightIcon,
3195
4270
  {
3196
4271
  className: "matchid-login-recommend-wallet-item-arrow",
@@ -3208,10 +4283,10 @@ function LoginBox({
3208
4283
  m
3209
4284
  );
3210
4285
  }) }),
3211
- methodConfig.methods.length > 0 && /* @__PURE__ */ jsxs9("div", { className: "matchid-login-other", children: [
3212
- /* @__PURE__ */ jsx13("div", { className: "matchid-login-other-text", children: /* @__PURE__ */ jsx13(FormattedMessage4, { id: "otherLoginMethods" }) }),
3213
- /* @__PURE__ */ jsx13("div", { className: "matchid-login-method-box", children: methodConfig.methods.map((m) => {
3214
- return /* @__PURE__ */ jsx13(
4286
+ methodConfig.methods.length > 0 && /* @__PURE__ */ jsxs10("div", { className: "matchid-login-other", children: [
4287
+ /* @__PURE__ */ jsx15("div", { className: "matchid-login-other-text", children: /* @__PURE__ */ jsx15(FormattedMessage6, { id: "otherLoginMethods" }) }),
4288
+ /* @__PURE__ */ jsx15("div", { className: "matchid-login-method-box", children: methodConfig.methods.map((m) => {
4289
+ return /* @__PURE__ */ jsx15(
3215
4290
  "div",
3216
4291
  {
3217
4292
  className: "matchid-login-method-item",
@@ -3224,7 +4299,7 @@ function LoginBox({
3224
4299
  }) })
3225
4300
  ] })
3226
4301
  ] }),
3227
- /* @__PURE__ */ jsx13(
4302
+ /* @__PURE__ */ jsx15(
3228
4303
  EmailModal,
3229
4304
  {
3230
4305
  isOpen: emailOpen,
@@ -3240,56 +4315,56 @@ function LoginBox({
3240
4315
  }
3241
4316
 
3242
4317
  // src/components/LoginButton/index.tsx
3243
- import { useState as useState15 } from "react";
4318
+ import { useState as useState17 } from "react";
3244
4319
 
3245
4320
  // src/components/LoginPanel/index.tsx
3246
- import { FormattedMessage as FormattedMessage5 } from "react-intl";
3247
- import { jsx as jsx14, jsxs as jsxs10 } from "react/jsx-runtime";
4321
+ import { FormattedMessage as FormattedMessage7 } from "react-intl";
4322
+ import { jsx as jsx16, jsxs as jsxs11 } from "react/jsx-runtime";
3248
4323
  function LoginPanel({
3249
4324
  header,
3250
4325
  onClose,
3251
4326
  ...props
3252
4327
  }) {
3253
4328
  const isDownMd = useDownMd();
3254
- return /* @__PURE__ */ jsxs10("div", { className: "matchid-login-panel", children: [
3255
- header ? header : /* @__PURE__ */ jsxs10("div", { className: "matchid-login-panel-header", children: [
3256
- /* @__PURE__ */ jsxs10("div", { className: "matchid-login-panel-header-content", children: [
3257
- /* @__PURE__ */ jsx14("div", { className: "matchid-login-panel-header-title", children: /* @__PURE__ */ jsx14(FormattedMessage5, { id: "loginTitle" }) }),
3258
- /* @__PURE__ */ jsx14("div", { className: "matchid-login-panel-header-subtilte", children: /* @__PURE__ */ jsx14(FormattedMessage5, { id: "loginTips" }) })
4329
+ return /* @__PURE__ */ jsxs11("div", { className: "matchid-login-panel", children: [
4330
+ header ? header : /* @__PURE__ */ jsxs11("div", { className: "matchid-login-panel-header", children: [
4331
+ /* @__PURE__ */ jsxs11("div", { className: "matchid-login-panel-header-content", children: [
4332
+ /* @__PURE__ */ jsx16("div", { className: "matchid-login-panel-header-title", children: /* @__PURE__ */ jsx16(FormattedMessage7, { id: "loginTitle" }) }),
4333
+ /* @__PURE__ */ jsx16("div", { className: "matchid-login-panel-header-subtilte", children: /* @__PURE__ */ jsx16(FormattedMessage7, { id: "loginTips" }) })
3259
4334
  ] }),
3260
- onClose && /* @__PURE__ */ jsx14("div", { className: "matchid-login-panel-header-close", onClick: onClose, children: /* @__PURE__ */ jsx14(CloseRoundIcon, { size: isDownMd ? 24 : 30 }) })
4335
+ onClose && /* @__PURE__ */ jsx16("div", { className: "matchid-login-panel-header-close", onClick: onClose, children: /* @__PURE__ */ jsx16(CloseRoundIcon, { size: isDownMd ? 24 : 30 }) })
3261
4336
  ] }),
3262
- /* @__PURE__ */ jsx14("div", { className: "matchid-login-panel-divide" }),
3263
- /* @__PURE__ */ jsx14("div", { className: "matchid-login-panel-box", children: /* @__PURE__ */ jsx14(LoginBox, { ...props }) })
4337
+ /* @__PURE__ */ jsx16("div", { className: "matchid-login-panel-divide" }),
4338
+ /* @__PURE__ */ jsx16("div", { className: "matchid-login-panel-box", children: /* @__PURE__ */ jsx16(LoginBox, { ...props }) })
3264
4339
  ] });
3265
4340
  }
3266
4341
 
3267
4342
  // src/components/LoginModal/index.tsx
3268
- import { jsx as jsx15 } from "react/jsx-runtime";
4343
+ import { jsx as jsx17 } from "react/jsx-runtime";
3269
4344
  function LoginModal({
3270
4345
  isOpen = false,
3271
4346
  width = 480,
3272
4347
  ...props
3273
4348
  }) {
3274
4349
  const { isLogin } = useUserInfo();
3275
- return /* @__PURE__ */ jsx15(
4350
+ return /* @__PURE__ */ jsx17(
3276
4351
  Modal,
3277
4352
  {
3278
4353
  isOpen: isOpen && !isLogin,
3279
4354
  width,
3280
- children: /* @__PURE__ */ jsx15(LoginPanel, { ...props, inModal: true })
4355
+ children: /* @__PURE__ */ jsx17(LoginPanel, { ...props, inModal: true })
3281
4356
  }
3282
4357
  );
3283
4358
  }
3284
4359
 
3285
4360
  // src/components/UserPopover/index.tsx
3286
- import { useState as useState14 } from "react";
4361
+ import { useState as useState16 } from "react";
3287
4362
 
3288
4363
  // src/assets/icon/ProfileIcon.tsx
3289
- import { jsx as jsx16, jsxs as jsxs11 } from "react/jsx-runtime";
4364
+ import { jsx as jsx18, jsxs as jsxs12 } from "react/jsx-runtime";
3290
4365
  function ProfileIcon({ size = 24, color = "black", ...props }) {
3291
- return /* @__PURE__ */ jsxs11("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
3292
- /* @__PURE__ */ jsx16(
4366
+ return /* @__PURE__ */ jsxs12("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
4367
+ /* @__PURE__ */ jsx18(
3293
4368
  "path",
3294
4369
  {
3295
4370
  fillRule: "evenodd",
@@ -3298,7 +4373,7 @@ function ProfileIcon({ size = 24, color = "black", ...props }) {
3298
4373
  fill: color
3299
4374
  }
3300
4375
  ),
3301
- /* @__PURE__ */ jsx16(
4376
+ /* @__PURE__ */ jsx18(
3302
4377
  "path",
3303
4378
  {
3304
4379
  fillRule: "evenodd",
@@ -3311,11 +4386,11 @@ function ProfileIcon({ size = 24, color = "black", ...props }) {
3311
4386
  }
3312
4387
 
3313
4388
  // src/components/UserPopover/index.tsx
3314
- import { FormattedMessage as FormattedMessage6, useIntl as useIntl6 } from "react-intl";
3315
- import { jsx as jsx17, jsxs as jsxs12 } from "react/jsx-runtime";
4389
+ import { FormattedMessage as FormattedMessage8, useIntl as useIntl8 } from "react-intl";
4390
+ import { jsx as jsx19, jsxs as jsxs13 } from "react/jsx-runtime";
3316
4391
  function UserContent() {
3317
- const { logout, address: address2, username } = useUserInfo();
3318
- const [logouting, setLogouting] = useState14(false);
4392
+ const { logout, address, username } = useUserInfo();
4393
+ const [logouting, setLogouting] = useState16(false);
3319
4394
  const onLogout = async () => {
3320
4395
  if (logouting) return;
3321
4396
  try {
@@ -3333,34 +4408,34 @@ function UserContent() {
3333
4408
  rightIcon,
3334
4409
  onClick
3335
4410
  }) => {
3336
- return /* @__PURE__ */ jsxs12("div", { className: "matchid-user-popover-item", onClick, children: [
3337
- /* @__PURE__ */ jsxs12("div", { className: `matchid-user-popover-item-content`, children: [
4411
+ return /* @__PURE__ */ jsxs13("div", { className: "matchid-user-popover-item", onClick, children: [
4412
+ /* @__PURE__ */ jsxs13("div", { className: `matchid-user-popover-item-content`, children: [
3338
4413
  icon,
3339
- /* @__PURE__ */ jsx17("div", { className: "matchid-user-popover-item-text", children })
4414
+ /* @__PURE__ */ jsx19("div", { className: "matchid-user-popover-item-text", children })
3340
4415
  ] }),
3341
4416
  rightIcon
3342
4417
  ] });
3343
4418
  };
3344
4419
  const UserDivider = () => {
3345
- return /* @__PURE__ */ jsx17("div", { className: `matchid-user-popover-divider` });
4420
+ return /* @__PURE__ */ jsx19("div", { className: `matchid-user-popover-divider` });
3346
4421
  };
3347
- const [usernameOpen, setUsernameOpen] = useState14(false);
4422
+ const [usernameOpen, setUsernameOpen] = useState16(false);
3348
4423
  const [copied, setCopied] = useCopyClipboard();
3349
- const intl = useIntl6();
3350
- return /* @__PURE__ */ jsxs12("div", { className: "matchid-user-popover-content", children: [
3351
- /* @__PURE__ */ jsxs12("div", { className: "matchid-user-popover-list", children: [
3352
- /* @__PURE__ */ jsx17(UserItem, { onClick: () => {
3353
- setCopied(address2);
3354
- }, icon: copied ? /* @__PURE__ */ jsx17(CheckIcon, { size: 20, color: "#0ecb81" }) : /* @__PURE__ */ jsx17(CopyIcon, { size: 20, color: "var(--icon-color)" }), rightIcon: /* @__PURE__ */ jsx17(CheckIcon, { size: 20, color: "var(--icon-color)" }), children: truncateAddress(address2) }),
3355
- /* @__PURE__ */ jsx17(UserDivider, {}),
3356
- /* @__PURE__ */ jsx17(UserItem, { onClick: () => {
4424
+ const intl = useIntl8();
4425
+ return /* @__PURE__ */ jsxs13("div", { className: "matchid-user-popover-content", children: [
4426
+ /* @__PURE__ */ jsxs13("div", { className: "matchid-user-popover-list", children: [
4427
+ /* @__PURE__ */ jsx19(UserItem, { onClick: () => {
4428
+ setCopied(address);
4429
+ }, icon: copied ? /* @__PURE__ */ jsx19(CheckIcon, { size: 20, color: "#0ecb81" }) : /* @__PURE__ */ jsx19(CopyIcon, { size: 20, color: "var(--icon-color)" }), rightIcon: /* @__PURE__ */ jsx19(CheckIcon, { size: 20, color: "var(--icon-color)" }), children: truncateAddress(address) }),
4430
+ /* @__PURE__ */ jsx19(UserDivider, {}),
4431
+ /* @__PURE__ */ jsx19(UserItem, { onClick: () => {
3357
4432
  setUsernameOpen(true);
3358
- }, icon: /* @__PURE__ */ jsx17(ProfileIcon, { size: 20, color: "var(--icon-color)" }), rightIcon: /* @__PURE__ */ jsx17(ArrowRightIcon, { size: 20, color: "var(--icon-color)" }), children: username || intl.formatMessage({
4433
+ }, icon: /* @__PURE__ */ jsx19(ProfileIcon, { size: 20, color: "var(--icon-color)" }), rightIcon: /* @__PURE__ */ jsx19(ArrowRightIcon, { size: 20, color: "var(--icon-color)" }), children: username || intl.formatMessage({
3359
4434
  id: "setUsername"
3360
4435
  }) })
3361
4436
  ] }),
3362
- /* @__PURE__ */ jsx17(Button, { onClick: onLogout, loading: logouting, children: /* @__PURE__ */ jsx17(FormattedMessage6, { id: "disconnect" }) }),
3363
- /* @__PURE__ */ jsx17(UsernameModal, { isOpen: usernameOpen, onClose: () => {
4437
+ /* @__PURE__ */ jsx19(Button, { onClick: onLogout, loading: logouting, children: /* @__PURE__ */ jsx19(FormattedMessage8, { id: "disconnect" }) }),
4438
+ /* @__PURE__ */ jsx19(UsernameModal, { isOpen: usernameOpen, onClose: () => {
3364
4439
  setUsernameOpen(false);
3365
4440
  }, onSuccess: () => {
3366
4441
  setUsernameOpen(false);
@@ -3371,12 +4446,12 @@ function UserPopover({
3371
4446
  children,
3372
4447
  ...props
3373
4448
  }) {
3374
- return /* @__PURE__ */ jsx17(Popover, { ...props, content: /* @__PURE__ */ jsx17(UserContent, {}), children });
4449
+ return /* @__PURE__ */ jsx19(Popover, { ...props, content: /* @__PURE__ */ jsx19(UserContent, {}), children });
3375
4450
  }
3376
4451
 
3377
4452
  // src/components/LoginButton/index.tsx
3378
- import { FormattedMessage as FormattedMessage7, useIntl as useIntl7 } from "react-intl";
3379
- import { Fragment as Fragment3, jsx as jsx18, jsxs as jsxs13 } from "react/jsx-runtime";
4453
+ import { FormattedMessage as FormattedMessage9, useIntl as useIntl9 } from "react-intl";
4454
+ import { Fragment as Fragment3, jsx as jsx20, jsxs as jsxs14 } from "react/jsx-runtime";
3380
4455
  function LoginButton({
3381
4456
  loginRender,
3382
4457
  methods,
@@ -3388,12 +4463,12 @@ function LoginButton({
3388
4463
  walletMethods,
3389
4464
  ...props
3390
4465
  }) {
3391
- const intl = useIntl7();
4466
+ const intl = useIntl9();
3392
4467
  const { isLogin, username } = useUserInfo();
3393
- const [loginOpen, setLoginOpen] = useState15(false);
4468
+ const [loginOpen, setLoginOpen] = useState17(false);
3394
4469
  if (!isLogin) {
3395
- return /* @__PURE__ */ jsxs13(Fragment3, { children: [
3396
- /* @__PURE__ */ jsx18(
4470
+ return /* @__PURE__ */ jsxs14(Fragment3, { children: [
4471
+ /* @__PURE__ */ jsx20(
3397
4472
  LoginModal,
3398
4473
  {
3399
4474
  methods,
@@ -3403,55 +4478,32 @@ function LoginButton({
3403
4478
  onClose: () => setLoginOpen(false)
3404
4479
  }
3405
4480
  ),
3406
- /* @__PURE__ */ jsxs13(Button, { className: "matchid-unlogin-btn", ...props, highlight: true, onClick: () => setLoginOpen(true), children: [
3407
- /* @__PURE__ */ jsx18(UnLoginIcon_default, {}),
3408
- /* @__PURE__ */ jsx18("span", { children: /* @__PURE__ */ jsx18(FormattedMessage7, { id: "login" }) })
4481
+ /* @__PURE__ */ jsxs14(Button, { className: "matchid-unlogin-btn", ...props, highlight: true, onClick: () => setLoginOpen(true), children: [
4482
+ /* @__PURE__ */ jsx20(UnLoginIcon_default, {}),
4483
+ /* @__PURE__ */ jsx20("span", { children: /* @__PURE__ */ jsx20(FormattedMessage9, { id: "login" }) })
3409
4484
  ] })
3410
4485
  ] });
3411
4486
  }
3412
- return loginRender ? /* @__PURE__ */ jsx18(Fragment3, { children: loginRender }) : /* @__PURE__ */ jsx18(UserPopover, { position: popoverPosition, type: popoverType, gap: popoverGap, children: /* @__PURE__ */ jsxs13(Button, { onClick: onLoginClick, className: "matchid-login-btn", ...props, children: [
3413
- /* @__PURE__ */ jsx18(LoginIcon_default, {}),
3414
- /* @__PURE__ */ jsx18("span", { children: username ? truncateAddress(username) : "MatchID " + intl.formatMessage({
4487
+ return loginRender ? /* @__PURE__ */ jsx20(Fragment3, { children: loginRender }) : /* @__PURE__ */ jsx20(UserPopover, { position: popoverPosition, type: popoverType, gap: popoverGap, children: /* @__PURE__ */ jsxs14(Button, { onClick: onLoginClick, className: "matchid-login-btn", ...props, children: [
4488
+ /* @__PURE__ */ jsx20(LoginIcon_default, {}),
4489
+ /* @__PURE__ */ jsx20("span", { children: username ? truncateAddress(username) : "MatchID " + intl.formatMessage({
3415
4490
  id: "user"
3416
4491
  }) })
3417
4492
  ] }) });
3418
4493
  }
3419
4494
 
3420
4495
  // src/components/UsernameModal/index.tsx
3421
- import { useEffect as useEffect14, useMemo as useMemo9, useState as useState16 } from "react";
3422
-
3423
- // src/assets/icon/InfoRoundIcon.tsx
3424
- import { jsx as jsx19, jsxs as jsxs14 } from "react/jsx-runtime";
3425
- function InfoRoundIcon({
3426
- size,
3427
- color = "#6E6E6E",
3428
- ...props
3429
- }) {
3430
- return /* @__PURE__ */ jsxs14("svg", { width: size, height: size, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [
3431
- /* @__PURE__ */ jsx19("g", { clipPath: "url(#clip0_418_7746)", children: /* @__PURE__ */ jsx19(
3432
- "path",
3433
- {
3434
- fillRule: "evenodd",
3435
- clipRule: "evenodd",
3436
- d: "M7.99984 0.666504C3.94975 0.666504 0.666504 3.94975 0.666504 7.99984C0.666504 12.0499 3.94975 15.3332 7.99984 15.3332C12.0499 15.3332 15.3332 12.0499 15.3332 7.99984C15.3332 3.94975 12.0499 0.666504 7.99984 0.666504ZM1.99984 7.99984C1.99984 4.68613 4.68613 1.99984 7.99984 1.99984C11.3135 1.99984 13.9998 4.68613 13.9998 7.99984C13.9998 11.3135 11.3135 13.9998 7.99984 13.9998C4.68613 13.9998 1.99984 11.3135 1.99984 7.99984ZM8.6665 7.33317C8.6665 6.96498 8.36803 6.6665 7.99984 6.6665C7.63165 6.6665 7.33317 6.96498 7.33317 7.33317V11.3332C7.33317 11.7014 7.63165 11.9998 7.99984 11.9998C8.36803 11.9998 8.6665 11.7014 8.6665 11.3332V7.33317ZM7.99984 5.33317C8.36803 5.33317 8.6665 5.03469 8.6665 4.6665C8.6665 4.29831 8.36803 3.99984 7.99984 3.99984C7.63165 3.99984 7.33317 4.29831 7.33317 4.6665C7.33317 5.03469 7.63165 5.33317 7.99984 5.33317Z",
3437
- fill: color
3438
- }
3439
- ) }),
3440
- /* @__PURE__ */ jsx19("defs", { children: /* @__PURE__ */ jsx19("clipPath", { id: "clip0_418_7746", children: /* @__PURE__ */ jsx19("rect", { width: "16", height: "16", fill: "white" }) }) })
3441
- ] });
3442
- }
3443
-
3444
- // src/components/UsernameModal/index.tsx
3445
- import { FormattedMessage as FormattedMessage8, useIntl as useIntl8 } from "react-intl";
3446
- import { jsx as jsx20, jsxs as jsxs15 } from "react/jsx-runtime";
4496
+ import { useEffect as useEffect16, useMemo as useMemo10, useState as useState18 } from "react";
4497
+ import { FormattedMessage as FormattedMessage10, useIntl as useIntl10 } from "react-intl";
4498
+ import { jsx as jsx21, jsxs as jsxs15 } from "react/jsx-runtime";
3447
4499
  var ValidItem = ({
3448
4500
  success = false,
3449
4501
  text
3450
4502
  }) => {
3451
4503
  const isDownMd = useDownMd();
3452
4504
  return /* @__PURE__ */ jsxs15("div", { className: `matchid-valid-status-item matchid-valid-status-${success ? "success" : "error"}`, children: [
3453
- success ? /* @__PURE__ */ jsx20(CheckRoundIcon, { size: isDownMd ? 12 : 16 }) : /* @__PURE__ */ jsx20(InfoRoundIcon, { size: isDownMd ? 12 : 16 }),
3454
- /* @__PURE__ */ jsx20("span", { children: text })
4505
+ success ? /* @__PURE__ */ jsx21(CheckRoundIcon, { size: isDownMd ? 12 : 16 }) : /* @__PURE__ */ jsx21(InfoLineIcon, { size: isDownMd ? 12 : 16 }),
4506
+ /* @__PURE__ */ jsx21("span", { children: text })
3455
4507
  ] });
3456
4508
  };
3457
4509
  function UsernameModal({
@@ -3462,23 +4514,23 @@ function UsernameModal({
3462
4514
  }) {
3463
4515
  const { username, refreshOverview } = useUserInfo();
3464
4516
  const { isLogin } = useUserInfo();
3465
- const [val, setVal] = useState16(username);
3466
- const [error, setError] = useState16("");
4517
+ const [val, setVal] = useState18(username);
4518
+ const [error, setError] = useState18("");
3467
4519
  const isDownMd = useDownMd();
3468
- useEffect14(() => {
4520
+ useEffect16(() => {
3469
4521
  if (isOpen) {
3470
4522
  setVal(username);
3471
4523
  setError("");
3472
4524
  }
3473
4525
  }, [isOpen]);
3474
- const isValid = useMemo9(() => {
4526
+ const isValid = useMemo10(() => {
3475
4527
  return isValidUsername(val);
3476
4528
  }, [val]);
3477
- const isLength = useMemo9(() => {
4529
+ const isLength = useMemo10(() => {
3478
4530
  return val.length >= 2 && val.length <= 32;
3479
4531
  }, [val]);
3480
4532
  const isSafe = isValid && isLength;
3481
- const [isSubmitting, setIsSubmitting] = useState16(false);
4533
+ const [isSubmitting, setIsSubmitting] = useState18(false);
3482
4534
  const onSubmit = async () => {
3483
4535
  if (isSubmitting) return;
3484
4536
  try {
@@ -3498,13 +4550,13 @@ function UsernameModal({
3498
4550
  setIsSubmitting(false);
3499
4551
  }
3500
4552
  };
3501
- const intl = useIntl8();
3502
- return /* @__PURE__ */ jsx20(ModalWithHeader, { isOpen: isOpen && isLogin, ...props, title: title || intl.formatMessage({
4553
+ const intl = useIntl10();
4554
+ return /* @__PURE__ */ jsx21(ModalWithHeader, { isOpen: isOpen && isLogin, ...props, title: title || intl.formatMessage({
3503
4555
  id: username ? "editUsernameTitle" : "setUsernameTitle"
3504
4556
  }), children: /* @__PURE__ */ jsxs15("div", { className: "matchid-username-box", children: [
3505
- /* @__PURE__ */ jsx20(Field, { label: intl.formatMessage({
4557
+ /* @__PURE__ */ jsx21(Field, { label: intl.formatMessage({
3506
4558
  id: "username"
3507
- }), error, children: /* @__PURE__ */ jsx20(
4559
+ }), error, children: /* @__PURE__ */ jsx21(
3508
4560
  Input,
3509
4561
  {
3510
4562
  placeholder: intl.formatMessage({
@@ -3518,7 +4570,7 @@ function UsernameModal({
3518
4570
  }
3519
4571
  ) }),
3520
4572
  /* @__PURE__ */ jsxs15("div", { className: "matchid-valid", children: [
3521
- /* @__PURE__ */ jsx20(
4573
+ /* @__PURE__ */ jsx21(
3522
4574
  ValidItem,
3523
4575
  {
3524
4576
  success: isValid,
@@ -3527,21 +4579,21 @@ function UsernameModal({
3527
4579
  })
3528
4580
  }
3529
4581
  ),
3530
- /* @__PURE__ */ jsx20(ValidItem, { success: isLength, text: intl.formatMessage({
4582
+ /* @__PURE__ */ jsx21(ValidItem, { success: isLength, text: intl.formatMessage({
3531
4583
  id: "usernameLengthError"
3532
4584
  }) })
3533
4585
  ] }),
3534
- /* @__PURE__ */ jsx20(Button, { disabled: !isSafe, loading: isSubmitting, style: {
4586
+ /* @__PURE__ */ jsx21(Button, { disabled: !isSafe, loading: isSubmitting, style: {
3535
4587
  marginTop: isDownMd ? "36px" : "64px"
3536
- }, onClick: onSubmit, size: "lg", block: true, highlight: true, children: /* @__PURE__ */ jsx20(FormattedMessage8, { id: "confirm" }) }),
3537
- /* @__PURE__ */ jsx20(Button, { style: {
4588
+ }, onClick: onSubmit, size: "lg", block: true, highlight: true, children: /* @__PURE__ */ jsx21(FormattedMessage10, { id: "confirm" }) }),
4589
+ /* @__PURE__ */ jsx21(Button, { style: {
3538
4590
  marginTop: isDownMd ? "12px" : "24px"
3539
- }, onClick: props.onClose, size: "lg", block: true, children: /* @__PURE__ */ jsx20(FormattedMessage8, { id: "cancel" }) })
4591
+ }, onClick: props.onClose, size: "lg", block: true, children: /* @__PURE__ */ jsx21(FormattedMessage10, { id: "cancel" }) })
3540
4592
  ] }) });
3541
4593
  }
3542
4594
 
3543
4595
  // src/components/SOLModal/index.tsx
3544
- import React7, { useEffect as useEffect15, useState as useState17 } from "react";
4596
+ import React7, { useEffect as useEffect17, useState as useState19 } from "react";
3545
4597
  import { clusterApiUrl } from "@solana/web3.js";
3546
4598
  import { useWallet as useWallet2, WalletProvider, ConnectionProvider } from "@solana/wallet-adapter-react";
3547
4599
  import { WalletModalProvider, useWalletModal } from "@solana/wallet-adapter-react-ui";
@@ -3592,10 +4644,10 @@ import {
3592
4644
  XDEFIWalletAdapter
3593
4645
  } from "@solana/wallet-adapter-wallets";
3594
4646
  import "@solana/wallet-adapter-react-ui/styles.css";
3595
- import { useIntl as useIntl9 } from "react-intl";
4647
+ import { useIntl as useIntl11 } from "react-intl";
3596
4648
 
3597
4649
  // src/components/WalletModalContent/index.tsx
3598
- import { useMemo as useMemo10 } from "react";
4650
+ import { useMemo as useMemo11 } from "react";
3599
4651
 
3600
4652
  // src/assets/wallet.ts
3601
4653
  var walletErrorImage = "data:image/png;base64,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";
@@ -3605,7 +4657,7 @@ var walletConnectImage = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEA
3605
4657
  var walletSigningImage = "data:image/png;base64,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";
3606
4658
 
3607
4659
  // src/components/WalletModalContent/index.tsx
3608
- import { jsx as jsx21, jsxs as jsxs16 } from "react/jsx-runtime";
4660
+ import { jsx as jsx22, jsxs as jsxs16 } from "react/jsx-runtime";
3609
4661
  function WalletModalContent({
3610
4662
  status,
3611
4663
  error,
@@ -3613,10 +4665,10 @@ function WalletModalContent({
3613
4665
  setError,
3614
4666
  setVisible,
3615
4667
  visible,
3616
- address: address2,
4668
+ address,
3617
4669
  connected
3618
4670
  }) {
3619
- const pageData = useMemo10(() => {
4671
+ const pageData = useMemo11(() => {
3620
4672
  if (status == "success") {
3621
4673
  return {
3622
4674
  btnText: "Disconnect Wallet",
@@ -3674,13 +4726,13 @@ function WalletModalContent({
3674
4726
  text: "Please Connect your wallet",
3675
4727
  statusImage: walletConnectImage
3676
4728
  };
3677
- }, [visible, connected, status, error, address2]);
3678
- return /* @__PURE__ */ jsx21("div", { className: "matchid-wallet-container", children: /* @__PURE__ */ jsxs16("div", { className: `matchid-wallet-box`, children: [
4729
+ }, [visible, connected, status, error, address]);
4730
+ return /* @__PURE__ */ jsx22("div", { className: "matchid-wallet-container", children: /* @__PURE__ */ jsxs16("div", { className: `matchid-wallet-box`, children: [
3679
4731
  /* @__PURE__ */ jsxs16("div", { className: `matchid-wallet-content`, children: [
3680
- /* @__PURE__ */ jsx21("img", { src: pageData.statusImage }),
3681
- /* @__PURE__ */ jsx21("div", { className: pageData.isError ? "text-[#F7585E]" : "", children: pageData.text })
4732
+ /* @__PURE__ */ jsx22("img", { src: pageData.statusImage }),
4733
+ /* @__PURE__ */ jsx22("div", { className: pageData.isError ? "text-[#F7585E]" : "", children: pageData.text })
3682
4734
  ] }),
3683
- /* @__PURE__ */ jsx21(
4735
+ /* @__PURE__ */ jsx22(
3684
4736
  Button,
3685
4737
  {
3686
4738
  block: true,
@@ -3695,7 +4747,7 @@ function WalletModalContent({
3695
4747
  }
3696
4748
 
3697
4749
  // src/components/SOLModal/index.tsx
3698
- import { jsx as jsx22 } from "react/jsx-runtime";
4750
+ import { jsx as jsx23 } from "react/jsx-runtime";
3699
4751
  function WalletContent({
3700
4752
  onSuccess,
3701
4753
  type
@@ -3703,17 +4755,17 @@ function WalletContent({
3703
4755
  const { setVisible, visible } = useWalletModal();
3704
4756
  const wallet = useWallet2();
3705
4757
  const { events, login } = useMatch();
3706
- const [status, setStatus] = useState17("");
4758
+ const [status, setStatus] = useState19("");
3707
4759
  const statusRef = React7.useRef(status);
3708
- const [error, setError] = useState17("");
3709
- useEffect15(() => {
4760
+ const [error, setError] = useState19("");
4761
+ useEffect17(() => {
3710
4762
  const init = async () => {
3711
4763
  await wallet.disconnect();
3712
4764
  setVisible(true);
3713
4765
  };
3714
4766
  init();
3715
4767
  }, []);
3716
- useEffect15(() => {
4768
+ useEffect17(() => {
3717
4769
  if (wallet.connected) {
3718
4770
  console.log("wallet.connected", wallet.connected);
3719
4771
  toLoginInWallet();
@@ -3721,14 +4773,14 @@ function WalletContent({
3721
4773
  }, [wallet.connected]);
3722
4774
  const toLoginInWallet = async () => {
3723
4775
  if (statusRef.current) return;
3724
- const address2 = wallet.publicKey?.toBase58() || "";
4776
+ const address = wallet.publicKey?.toBase58() || "";
3725
4777
  try {
3726
4778
  setStatus("nonce");
3727
4779
  statusRef.current = "nonce";
3728
4780
  const res = type == "bind" ? await getWalletInitApi({
3729
- address: address2,
4781
+ address,
3730
4782
  type: "SOL"
3731
- }) : await getWalletNonceApi({ address: address2, type: "SOL" });
4783
+ }) : await getWalletNonceApi({ address, type: "SOL" });
3732
4784
  if (!isSuccess(res)) {
3733
4785
  throw new Error(res.message);
3734
4786
  }
@@ -3741,7 +4793,7 @@ function WalletContent({
3741
4793
  const signedMessage = await wallet.signMessage(encodedMessage);
3742
4794
  let obj = {
3743
4795
  type: "SOL",
3744
- address: address2,
4796
+ address,
3745
4797
  signature: Buffer.from(signedMessage).toString("base64"),
3746
4798
  message,
3747
4799
  connector_type: "SOL",
@@ -3777,7 +4829,7 @@ function WalletContent({
3777
4829
  statusRef.current = "";
3778
4830
  }
3779
4831
  };
3780
- return /* @__PURE__ */ jsx22(
4832
+ return /* @__PURE__ */ jsx23(
3781
4833
  WalletModalContent,
3782
4834
  {
3783
4835
  connected: wallet.connected,
@@ -3837,20 +4889,20 @@ function SOLConnectModal({
3837
4889
  onSuccess,
3838
4890
  ...props
3839
4891
  }) {
3840
- const intl = useIntl9();
3841
- return /* @__PURE__ */ jsx22(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
4892
+ const intl = useIntl11();
4893
+ return /* @__PURE__ */ jsx23(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
3842
4894
  id: type == "bind" ? "bindWith" : "loginWith"
3843
4895
  }, {
3844
4896
  name: "SOL"
3845
- }), children: /* @__PURE__ */ jsx22(ConnectionProvider, { endpoint: clusterApiUrl("devnet"), children: /* @__PURE__ */ jsx22(WalletProvider, { wallets, autoConnect: true, children: /* @__PURE__ */ jsx22(WalletModalProvider, { children: /* @__PURE__ */ jsx22(WalletContent, { onSuccess, type }) }) }) }) });
4897
+ }), children: /* @__PURE__ */ jsx23(ConnectionProvider, { endpoint: clusterApiUrl("devnet"), children: /* @__PURE__ */ jsx23(WalletProvider, { wallets, autoConnect: true, children: /* @__PURE__ */ jsx23(WalletModalProvider, { children: /* @__PURE__ */ jsx23(WalletContent, { onSuccess, type }) }) }) }) });
3846
4898
  }
3847
4899
  function SOLModal(props) {
3848
- return props.isOpen && /* @__PURE__ */ jsx22(SOLConnectModal, { ...props });
4900
+ return props.isOpen && /* @__PURE__ */ jsx23(SOLConnectModal, { ...props });
3849
4901
  }
3850
4902
 
3851
4903
  // src/components/TRONModal/index.tsx
3852
- import React8, { useEffect as useEffect17, useMemo as useMemo11, useState as useState19 } from "react";
3853
- import { useIntl as useIntl10 } from "react-intl";
4904
+ import React8, { useEffect as useEffect19, useMemo as useMemo12, useState as useState21 } from "react";
4905
+ import { useIntl as useIntl12 } from "react-intl";
3854
4906
 
3855
4907
  // src/lib/tron/TronLinkAdapter.ts
3856
4908
  var TronLinkAdapter = class {
@@ -3883,7 +4935,7 @@ var TronLinkAdapter = class {
3883
4935
  };
3884
4936
 
3885
4937
  // src/hooks/useTRONWallet.ts
3886
- import { useEffect as useEffect16, useState as useState18 } from "react";
4938
+ import { useEffect as useEffect18, useState as useState20 } from "react";
3887
4939
 
3888
4940
  // src/lib/tron/BitgetAdapter.ts
3889
4941
  var BitgetAdapter = class {
@@ -3928,9 +4980,9 @@ var OKXAdapter = class {
3928
4980
  // src/hooks/useTRONWallet.ts
3929
4981
  var useTRONWallet = () => {
3930
4982
  const wallets2 = [new TronLinkAdapter(), new BitgetAdapter(), new OKXAdapter()];
3931
- const [installedWallets, setInstalledWallets] = useState18([]);
3932
- const [address2, setAddress] = useState18(null);
3933
- useEffect16(() => {
4983
+ const [installedWallets, setInstalledWallets] = useState20([]);
4984
+ const [address, setAddress] = useState20(null);
4985
+ useEffect18(() => {
3934
4986
  const getInstalled = async () => {
3935
4987
  const installed = await Promise.all(wallets2.map((wallet2) => wallet2.isInstalled().then((isInstalled) => ({
3936
4988
  wallet: wallet2,
@@ -3940,11 +4992,11 @@ var useTRONWallet = () => {
3940
4992
  };
3941
4993
  getInstalled();
3942
4994
  }, []);
3943
- const [wallet, chooseWallet] = useState18(null);
4995
+ const [wallet, chooseWallet] = useState20(null);
3944
4996
  const onConnect = async () => {
3945
4997
  setAddress(await wallet.connect());
3946
4998
  };
3947
- useEffect16(() => {
4999
+ useEffect18(() => {
3948
5000
  if (!wallet) {
3949
5001
  setAddress(null);
3950
5002
  }
@@ -3954,33 +5006,33 @@ var useTRONWallet = () => {
3954
5006
  wallets: wallets2,
3955
5007
  chooseWallet,
3956
5008
  wallet,
3957
- address: address2,
5009
+ address,
3958
5010
  onConnect
3959
5011
  };
3960
5012
  };
3961
5013
 
3962
5014
  // src/components/TRONModal/index.tsx
3963
- import { jsx as jsx23, jsxs as jsxs17 } from "react/jsx-runtime";
5015
+ import { jsx as jsx24, jsxs as jsxs17 } from "react/jsx-runtime";
3964
5016
  function TRONConnectModal({
3965
5017
  type = "login",
3966
5018
  onSuccess,
3967
5019
  ...props
3968
5020
  }) {
3969
5021
  const isDownMd = useDownMd();
3970
- const intl = useIntl10();
3971
- const { wallets: wallets2, installedWallets, chooseWallet, wallet, address: address2, onConnect } = useTRONWallet();
5022
+ const intl = useIntl12();
5023
+ const { wallets: wallets2, installedWallets, chooseWallet, wallet, address, onConnect } = useTRONWallet();
3972
5024
  const iconMaps = {
3973
- tronlink: /* @__PURE__ */ jsx23(TronLinkIcon, { size: isDownMd ? 36 : 40 }),
3974
- bitget: /* @__PURE__ */ jsx23(BitgetIcon, { size: isDownMd ? 36 : 40 }),
3975
- okx: /* @__PURE__ */ jsx23(OKXIcon, { size: isDownMd ? 36 : 40 })
5025
+ tronlink: /* @__PURE__ */ jsx24(TronLinkIcon, { size: isDownMd ? 36 : 40 }),
5026
+ bitget: /* @__PURE__ */ jsx24(BitgetIcon, { size: isDownMd ? 36 : 40 }),
5027
+ okx: /* @__PURE__ */ jsx24(OKXIcon, { size: isDownMd ? 36 : 40 })
3976
5028
  };
3977
5029
  const { events, login } = useMatch();
3978
- const [status, setStatus] = useState19("");
5030
+ const [status, setStatus] = useState21("");
3979
5031
  const statusRef = React8.useRef(status);
3980
- const [error, setError] = useState19("");
3981
- const connected = useMemo11(() => {
3982
- return !!address2;
3983
- }, [address2]);
5032
+ const [error, setError] = useState21("");
5033
+ const connected = useMemo12(() => {
5034
+ return !!address;
5035
+ }, [address]);
3984
5036
  const disconnect = async () => {
3985
5037
  setStatus("");
3986
5038
  chooseWallet(null);
@@ -3994,11 +5046,11 @@ function TRONConnectModal({
3994
5046
  setError("");
3995
5047
  };
3996
5048
  const toLoginInWallet = async () => {
3997
- if (statusRef.current || !address2 || !wallet) return;
5049
+ if (statusRef.current || !address || !wallet) return;
3998
5050
  try {
3999
5051
  setStatus("nonce");
4000
5052
  statusRef.current = "nonce";
4001
- const res = type == "bind" ? await getWalletInitApi({ address: address2, type: "TRON" }) : await getWalletNonceApi({ address: address2, type: "TRON" });
5053
+ const res = type == "bind" ? await getWalletInitApi({ address, type: "TRON" }) : await getWalletNonceApi({ address, type: "TRON" });
4002
5054
  if (!isSuccess(res)) {
4003
5055
  throw new Error(res.message);
4004
5056
  }
@@ -4010,7 +5062,7 @@ function TRONConnectModal({
4010
5062
  const signedMessage = await wallet.signMessage(message);
4011
5063
  let obj = {
4012
5064
  type: "TRON",
4013
- address: address2,
5065
+ address,
4014
5066
  signature: signedMessage,
4015
5067
  message,
4016
5068
  connector_type: "TRON",
@@ -4046,7 +5098,7 @@ function TRONConnectModal({
4046
5098
  statusRef.current = "";
4047
5099
  }
4048
5100
  };
4049
- useEffect17(() => {
5101
+ useEffect19(() => {
4050
5102
  if (wallet) {
4051
5103
  console.log("onConnect");
4052
5104
  onConnect();
@@ -4054,36 +5106,36 @@ function TRONConnectModal({
4054
5106
  setStatus("");
4055
5107
  }
4056
5108
  }, [wallet]);
4057
- useEffect17(() => {
4058
- if (address2) {
5109
+ useEffect19(() => {
5110
+ if (address) {
4059
5111
  toLoginInWallet();
4060
5112
  }
4061
- }, [address2]);
4062
- useEffect17(() => {
5113
+ }, [address]);
5114
+ useEffect19(() => {
4063
5115
  if (!props.isOpen) {
4064
5116
  disconnect();
4065
5117
  }
4066
5118
  }, [props.isOpen]);
4067
- return /* @__PURE__ */ jsx23(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
5119
+ return /* @__PURE__ */ jsx24(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
4068
5120
  id: type == "bind" ? "bindWith" : "loginWith"
4069
5121
  }, {
4070
5122
  name: "TRON"
4071
- }), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */ jsx23(
5123
+ }), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */ jsx24(
4072
5124
  WalletModalContent,
4073
5125
  {
4074
5126
  error,
4075
5127
  setError,
4076
5128
  status,
4077
5129
  disconnect,
4078
- address: address2 || "",
5130
+ address: address || "",
4079
5131
  connected,
4080
5132
  visible: true,
4081
5133
  setVisible: () => {
4082
5134
  }
4083
5135
  }
4084
- ) : /* @__PURE__ */ jsx23("div", { className: "matchid-login-box", children: /* @__PURE__ */ jsxs17("div", { className: "matchid-login-recommend-list", children: [
5136
+ ) : /* @__PURE__ */ jsx24("div", { className: "matchid-login-box", children: /* @__PURE__ */ jsxs17("div", { className: "matchid-login-recommend-list", children: [
4085
5137
  installedWallets.map((wallet2) => {
4086
- return /* @__PURE__ */ jsx23(
5138
+ return /* @__PURE__ */ jsx24(
4087
5139
  RecommendItem,
4088
5140
  {
4089
5141
  icon: iconMaps[wallet2.walletKey],
@@ -4096,14 +5148,14 @@ function TRONConnectModal({
4096
5148
  );
4097
5149
  }),
4098
5150
  wallets2.filter((wallet2) => !installedWallets.find((installedWallet) => installedWallet.walletKey == wallet2.walletKey)).map((wallet2) => {
4099
- return /* @__PURE__ */ jsx23(
5151
+ return /* @__PURE__ */ jsx24(
4100
5152
  RecommendItem,
4101
5153
  {
4102
5154
  icon: iconMaps[wallet2.walletKey],
4103
5155
  name: wallet2.name,
4104
5156
  onClick: () => {
4105
5157
  },
4106
- footer: /* @__PURE__ */ jsx23(Button, { size: "sm", onClick: () => {
5158
+ footer: /* @__PURE__ */ jsx24(Button, { size: "sm", onClick: () => {
4107
5159
  window.open(wallet2.website);
4108
5160
  }, children: "Install" })
4109
5161
  },
@@ -4113,12 +5165,12 @@ function TRONConnectModal({
4113
5165
  ] }) }) });
4114
5166
  }
4115
5167
  function TRONModal(props) {
4116
- return props.isOpen && /* @__PURE__ */ jsx23(TRONConnectModal, { ...props, type: props.type });
5168
+ return props.isOpen && /* @__PURE__ */ jsx24(TRONConnectModal, { ...props, type: props.type });
4117
5169
  }
4118
5170
 
4119
5171
  // src/components/TONModal/index.tsx
4120
- import React9, { useEffect as useEffect18, useState as useState20 } from "react";
4121
- import { useIntl as useIntl11 } from "react-intl";
5172
+ import React9, { useEffect as useEffect20, useState as useState22 } from "react";
5173
+ import { useIntl as useIntl13 } from "react-intl";
4122
5174
  import {
4123
5175
  TonConnectUIProvider,
4124
5176
  useTonAddress,
@@ -4126,23 +5178,23 @@ import {
4126
5178
  useTonConnectUI,
4127
5179
  useTonWallet
4128
5180
  } from "@tonconnect/ui-react";
4129
- import { jsx as jsx24 } from "react/jsx-runtime";
5181
+ import { jsx as jsx25 } from "react/jsx-runtime";
4130
5182
  function WalletContent2({
4131
5183
  onSuccess,
4132
5184
  type
4133
5185
  }) {
4134
5186
  const { events, login } = useMatch();
4135
- const [connected, setConnected] = useState20(false);
5187
+ const [connected, setConnected] = useState22(false);
4136
5188
  const wallet = useTonWallet();
4137
5189
  const userFriendlyAddress = useTonAddress();
4138
5190
  const [tonConnectUI] = useTonConnectUI();
4139
5191
  const { state, open, close } = useTonConnectModal();
4140
- const [status, setStatus] = useState20("");
5192
+ const [status, setStatus] = useState22("");
4141
5193
  const statusRef = React9.useRef(status);
4142
- const [error, setError] = useState20("");
4143
- useEffect18(() => {
5194
+ const [error, setError] = useState22("");
5195
+ useEffect20(() => {
4144
5196
  const init = async () => {
4145
- if (wallet) {
5197
+ if (tonConnectUI.connected) {
4146
5198
  await tonConnectUI.disconnect();
4147
5199
  }
4148
5200
  open();
@@ -4213,7 +5265,7 @@ function WalletContent2({
4213
5265
  }
4214
5266
  });
4215
5267
  }, []);
4216
- useEffect18(() => {
5268
+ useEffect20(() => {
4217
5269
  if (wallet) {
4218
5270
  setConnected(true);
4219
5271
  console.log("Wallet connected:", wallet);
@@ -4224,7 +5276,7 @@ function WalletContent2({
4224
5276
  setStatus("");
4225
5277
  }
4226
5278
  }, [wallet]);
4227
- useEffect18(() => {
5279
+ useEffect20(() => {
4228
5280
  console.log({
4229
5281
  state,
4230
5282
  wallet
@@ -4253,7 +5305,7 @@ function WalletContent2({
4253
5305
  }
4254
5306
  }
4255
5307
  }, [state]);
4256
- return /* @__PURE__ */ jsx24(
5308
+ return /* @__PURE__ */ jsx25(
4257
5309
  WalletModalContent,
4258
5310
  {
4259
5311
  connected,
@@ -4263,7 +5315,7 @@ function WalletContent2({
4263
5315
  setVisible: async (v) => {
4264
5316
  console.log("setVisible", v);
4265
5317
  if (v) {
4266
- if (wallet) {
5318
+ if (tonConnectUI.connected) {
4267
5319
  await tonConnectUI.disconnect();
4268
5320
  }
4269
5321
  setStatus("");
@@ -4284,28 +5336,28 @@ function TONConnectModal({
4284
5336
  onSuccess,
4285
5337
  ...props
4286
5338
  }) {
4287
- const intl = useIntl11();
5339
+ const intl = useIntl13();
4288
5340
  const { endpoints, appid } = useLocalStore_default();
4289
5341
  const manifestUrl = `${endpoints.back}api/v1/wallet/ton?appid=${appid}&url=` + encodeURIComponent(window.location.origin);
4290
- return /* @__PURE__ */ jsx24(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
5342
+ return /* @__PURE__ */ jsx25(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
4291
5343
  id: type == "bind" ? "bindWith" : "loginWith"
4292
5344
  }, {
4293
5345
  name: "TON"
4294
- }), children: /* @__PURE__ */ jsx24(
5346
+ }), children: /* @__PURE__ */ jsx25(
4295
5347
  TonConnectUIProvider,
4296
5348
  {
4297
5349
  manifestUrl,
4298
- children: /* @__PURE__ */ jsx24(WalletContent2, { onSuccess, type })
5350
+ children: /* @__PURE__ */ jsx25(WalletContent2, { onSuccess, type })
4299
5351
  }
4300
5352
  ) });
4301
5353
  }
4302
5354
  function TONModal(props) {
4303
- return props.isOpen && /* @__PURE__ */ jsx24(TONConnectModal, { ...props });
5355
+ return props.isOpen && /* @__PURE__ */ jsx25(TONConnectModal, { ...props });
4304
5356
  }
4305
5357
 
4306
5358
  // src/components/BTCModal/index.tsx
4307
- import React10, { useEffect as useEffect20, useMemo as useMemo12, useState as useState22 } from "react";
4308
- import { useIntl as useIntl12 } from "react-intl";
5359
+ import React10, { useEffect as useEffect22, useMemo as useMemo13, useState as useState24 } from "react";
5360
+ import { useIntl as useIntl14 } from "react-intl";
4309
5361
 
4310
5362
  // src/lib/btc/UnisatAdapter.ts
4311
5363
  var UnisatAdapter = class {
@@ -4396,7 +5448,7 @@ var XverseAdapter = class {
4396
5448
  matchlog_default.log("getAccounts ~ response:", response);
4397
5449
  if (response.status === "success") {
4398
5450
  const ordinalsAddressItem = response.result.find(
4399
- (address2) => address2.purpose === AddressPurpose.Ordinals
5451
+ (address) => address.purpose === AddressPurpose.Ordinals
4400
5452
  );
4401
5453
  this.address = ordinalsAddressItem?.address || "";
4402
5454
  return ordinalsAddressItem?.address || "";
@@ -4459,12 +5511,12 @@ var LeatherAdapter = class {
4459
5511
  };
4460
5512
 
4461
5513
  // src/hooks/useBTCWallet.ts
4462
- import { useEffect as useEffect19, useState as useState21 } from "react";
5514
+ import { useEffect as useEffect21, useState as useState23 } from "react";
4463
5515
  var useBTCWallet = () => {
4464
5516
  const wallets2 = [new UnisatAdapter(), new XverseAdapter(), new LeatherAdapter()];
4465
- const [installedWallets, setInstalledWallets] = useState21([]);
4466
- const [address2, setAddress] = useState21(null);
4467
- useEffect19(() => {
5517
+ const [installedWallets, setInstalledWallets] = useState23([]);
5518
+ const [address, setAddress] = useState23(null);
5519
+ useEffect21(() => {
4468
5520
  const getInstalled = async () => {
4469
5521
  const installed = await Promise.all(wallets2.map((wallet2) => wallet2.isInstalled().then((isInstalled) => ({
4470
5522
  wallet: wallet2,
@@ -4474,11 +5526,11 @@ var useBTCWallet = () => {
4474
5526
  };
4475
5527
  getInstalled();
4476
5528
  }, []);
4477
- const [wallet, chooseWallet] = useState21(null);
5529
+ const [wallet, chooseWallet] = useState23(null);
4478
5530
  const onConnect = async () => {
4479
5531
  setAddress(await wallet.connect());
4480
5532
  };
4481
- useEffect19(() => {
5533
+ useEffect21(() => {
4482
5534
  if (!wallet) {
4483
5535
  setAddress(null);
4484
5536
  }
@@ -4488,33 +5540,33 @@ var useBTCWallet = () => {
4488
5540
  wallets: wallets2,
4489
5541
  chooseWallet,
4490
5542
  wallet,
4491
- address: address2,
5543
+ address,
4492
5544
  onConnect
4493
5545
  };
4494
5546
  };
4495
5547
 
4496
5548
  // src/components/BTCModal/index.tsx
4497
- import { jsx as jsx25, jsxs as jsxs18 } from "react/jsx-runtime";
5549
+ import { jsx as jsx26, jsxs as jsxs18 } from "react/jsx-runtime";
4498
5550
  function BTCConnectModal({
4499
5551
  type = "login",
4500
5552
  onSuccess,
4501
5553
  ...props
4502
5554
  }) {
4503
5555
  const isDownMd = useDownMd();
4504
- const intl = useIntl12();
4505
- const { wallets: wallets2, installedWallets, chooseWallet, wallet, address: address2, onConnect } = useBTCWallet();
5556
+ const intl = useIntl14();
5557
+ const { wallets: wallets2, installedWallets, chooseWallet, wallet, address, onConnect } = useBTCWallet();
4506
5558
  const iconMaps = {
4507
- leather: /* @__PURE__ */ jsx25(LeatherIcon, { size: isDownMd ? 36 : 40 }),
4508
- unisat: /* @__PURE__ */ jsx25(UnisatIcon, { size: isDownMd ? 36 : 40 }),
4509
- xverse: /* @__PURE__ */ jsx25(XverseIcon, { size: isDownMd ? 36 : 40 })
5559
+ leather: /* @__PURE__ */ jsx26(LeatherIcon, { size: isDownMd ? 36 : 40 }),
5560
+ unisat: /* @__PURE__ */ jsx26(UnisatIcon, { size: isDownMd ? 36 : 40 }),
5561
+ xverse: /* @__PURE__ */ jsx26(XverseIcon, { size: isDownMd ? 36 : 40 })
4510
5562
  };
4511
5563
  const { events, login } = useMatch();
4512
- const [status, setStatus] = useState22("");
5564
+ const [status, setStatus] = useState24("");
4513
5565
  const statusRef = React10.useRef(status);
4514
- const [error, setError] = useState22("");
4515
- const connected = useMemo12(() => {
4516
- return !!address2;
4517
- }, [address2]);
5566
+ const [error, setError] = useState24("");
5567
+ const connected = useMemo13(() => {
5568
+ return !!address;
5569
+ }, [address]);
4518
5570
  const disconnect = async () => {
4519
5571
  wallet && wallet.disconnet && wallet.disconnet();
4520
5572
  setStatus("");
@@ -4523,11 +5575,11 @@ function BTCConnectModal({
4523
5575
  setError("");
4524
5576
  };
4525
5577
  const toLoginInWallet = async () => {
4526
- if (statusRef.current || !address2 || !wallet) return;
5578
+ if (statusRef.current || !address || !wallet) return;
4527
5579
  try {
4528
5580
  setStatus("nonce");
4529
5581
  statusRef.current = "nonce";
4530
- const res = type == "bind" ? await getWalletInitApi({ address: address2, type: "BTC" }) : await getWalletNonceApi({ address: address2, type: "BTC" });
5582
+ const res = type == "bind" ? await getWalletInitApi({ address, type: "BTC" }) : await getWalletNonceApi({ address, type: "BTC" });
4531
5583
  if (!isSuccess(res)) {
4532
5584
  throw new Error(res.message);
4533
5585
  }
@@ -4539,7 +5591,7 @@ function BTCConnectModal({
4539
5591
  const signedMessage = await wallet.signMessage(message);
4540
5592
  let obj = {
4541
5593
  type: "BTC",
4542
- address: address2,
5594
+ address,
4543
5595
  signature: signedMessage,
4544
5596
  message,
4545
5597
  connector_type: "BTC",
@@ -4576,7 +5628,7 @@ function BTCConnectModal({
4576
5628
  statusRef.current = "";
4577
5629
  }
4578
5630
  };
4579
- useEffect20(() => {
5631
+ useEffect22(() => {
4580
5632
  if (wallet) {
4581
5633
  console.log("onConnect");
4582
5634
  try {
@@ -4589,12 +5641,12 @@ function BTCConnectModal({
4589
5641
  setStatus("");
4590
5642
  }
4591
5643
  }, [wallet]);
4592
- useEffect20(() => {
4593
- if (address2) {
5644
+ useEffect22(() => {
5645
+ if (address) {
4594
5646
  toLoginInWallet();
4595
5647
  }
4596
- }, [address2]);
4597
- useEffect20(() => {
5648
+ }, [address]);
5649
+ useEffect22(() => {
4598
5650
  if (!props.isOpen) {
4599
5651
  disconnect();
4600
5652
  }
@@ -4606,26 +5658,26 @@ function BTCConnectModal({
4606
5658
  statusRef.current = "";
4607
5659
  setError("");
4608
5660
  };
4609
- return /* @__PURE__ */ jsx25(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
5661
+ return /* @__PURE__ */ jsx26(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
4610
5662
  id: type == "bind" ? "bindWith" : "loginWith"
4611
5663
  }, {
4612
5664
  name: "BTC"
4613
- }), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */ jsx25(
5665
+ }), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */ jsx26(
4614
5666
  WalletModalContent,
4615
5667
  {
4616
5668
  error,
4617
5669
  setError,
4618
5670
  status,
4619
5671
  disconnect,
4620
- address: address2 || "",
5672
+ address: address || "",
4621
5673
  connected,
4622
5674
  visible: true,
4623
5675
  setVisible: () => {
4624
5676
  }
4625
5677
  }
4626
- ) : /* @__PURE__ */ jsx25("div", { className: "matchid-login-box", children: /* @__PURE__ */ jsxs18("div", { className: "matchid-login-recommend-list", children: [
5678
+ ) : /* @__PURE__ */ jsx26("div", { className: "matchid-login-box", children: /* @__PURE__ */ jsxs18("div", { className: "matchid-login-recommend-list", children: [
4627
5679
  installedWallets.map((wallet2) => {
4628
- return /* @__PURE__ */ jsx25(
5680
+ return /* @__PURE__ */ jsx26(
4629
5681
  RecommendItem,
4630
5682
  {
4631
5683
  icon: iconMaps[wallet2.walletKey],
@@ -4638,14 +5690,14 @@ function BTCConnectModal({
4638
5690
  );
4639
5691
  }),
4640
5692
  wallets2.filter((wallet2) => !installedWallets.find((installedWallet) => installedWallet.walletKey == wallet2.walletKey)).map((wallet2) => {
4641
- return /* @__PURE__ */ jsx25(
5693
+ return /* @__PURE__ */ jsx26(
4642
5694
  RecommendItem,
4643
5695
  {
4644
5696
  icon: iconMaps[wallet2.walletKey],
4645
5697
  name: wallet2.name,
4646
5698
  onClick: () => {
4647
5699
  },
4648
- footer: /* @__PURE__ */ jsx25(Button, { size: "sm", onClick: () => {
5700
+ footer: /* @__PURE__ */ jsx26(Button, { size: "sm", onClick: () => {
4649
5701
  window.open(wallet2.website);
4650
5702
  }, children: "Install" })
4651
5703
  },
@@ -4655,23 +5707,23 @@ function BTCConnectModal({
4655
5707
  ] }) }) });
4656
5708
  }
4657
5709
  function BTCModal(props) {
4658
- return props.isOpen && /* @__PURE__ */ jsx25(BTCConnectModal, { ...props });
5710
+ return props.isOpen && /* @__PURE__ */ jsx26(BTCConnectModal, { ...props });
4659
5711
  }
4660
5712
 
4661
5713
  // src/components/WalletModal/index.tsx
4662
- import { useMemo as useMemo13 } from "react";
4663
- import { useIntl as useIntl13 } from "react-intl";
4664
- import { jsx as jsx26 } from "react/jsx-runtime";
5714
+ import { useMemo as useMemo14 } from "react";
5715
+ import { useIntl as useIntl15 } from "react-intl";
5716
+ import { jsx as jsx27 } from "react/jsx-runtime";
4665
5717
  function WalletConnectModal({
4666
5718
  type,
4667
5719
  methods: _methods,
4668
5720
  ...props
4669
5721
  }) {
4670
- const intl = useIntl13();
5722
+ const intl = useIntl15();
4671
5723
  const { walletMap } = useWalletConfig();
4672
5724
  const { bind, login } = useUserInfo();
4673
5725
  const config = useAppConfig();
4674
- const methods = useMemo13(() => {
5726
+ const methods = useMemo14(() => {
4675
5727
  if (_methods) return _methods;
4676
5728
  if (!config.platform) {
4677
5729
  return [];
@@ -4679,13 +5731,13 @@ function WalletConnectModal({
4679
5731
  const platform = config.platform.map((p) => p.toLowerCase());
4680
5732
  return WALLET_METHODS.filter((m) => platform.includes(m));
4681
5733
  }, [config.platform, _methods]);
4682
- return /* @__PURE__ */ jsx26(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
5734
+ return /* @__PURE__ */ jsx27(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
4683
5735
  id: type == "bind" ? "bindWith" : "loginWith"
4684
5736
  }, {
4685
5737
  name: ""
4686
- }), children: /* @__PURE__ */ jsx26("div", { className: "matchid-login-box", children: /* @__PURE__ */ jsx26("div", { className: "matchid-login-recommend-list", children: methods.map((method, index) => {
5738
+ }), children: /* @__PURE__ */ jsx27("div", { className: "matchid-login-box", children: /* @__PURE__ */ jsx27("div", { className: "matchid-login-recommend-list", children: methods.map((method, index) => {
4687
5739
  const m = walletMap[method];
4688
- return /* @__PURE__ */ jsx26(
5740
+ return /* @__PURE__ */ jsx27(
4689
5741
  RecommendItem,
4690
5742
  {
4691
5743
  icon: m?.icon,
@@ -4699,7 +5751,586 @@ function WalletConnectModal({
4699
5751
  }) }) }) });
4700
5752
  }
4701
5753
  function WalletModal(props) {
4702
- return props.isOpen && /* @__PURE__ */ jsx26(WalletConnectModal, { ...props });
5754
+ return props.isOpen && /* @__PURE__ */ jsx27(WalletConnectModal, { ...props });
5755
+ }
5756
+
5757
+ // src/components/AlphaAvatar/index.tsx
5758
+ import { useEffect as useEffect23, useState as useState25 } from "react";
5759
+ import { jsx as jsx28 } from "react/jsx-runtime";
5760
+ function AlphaAvatar2({ name, size = 40, className = "" }) {
5761
+ const [avatar, setAvatar] = useState25(void 0);
5762
+ useEffect23(() => {
5763
+ if (name) {
5764
+ const char = name[0].toUpperCase();
5765
+ setAvatar(char);
5766
+ }
5767
+ }, [name]);
5768
+ return /* @__PURE__ */ jsx28("div", { className: `matchid-alpha-avatar ${className}`, style: {
5769
+ width: size,
5770
+ height: size,
5771
+ fontSize: Math.ceil(size / 2)
5772
+ }, children: avatar });
5773
+ }
5774
+
5775
+ // src/components/WalletAsset/index.tsx
5776
+ import { jsx as jsx29, jsxs as jsxs19 } from "react/jsx-runtime";
5777
+ function WalletAsset({
5778
+ onAssetClick,
5779
+ matchWalletAssetsOptions
5780
+ }) {
5781
+ const walletAssets = useMatchWalletAssets(matchWalletAssetsOptions);
5782
+ const matchWalletAssetList = useMatchWalletAssetList({
5783
+ list: walletAssets.mergedAssets
5784
+ });
5785
+ const { list } = useMatchChain();
5786
+ return /* @__PURE__ */ jsx29("div", { className: "matchid-wallet-asset-list", children: matchWalletAssetList.list.map((n, index) => {
5787
+ const clickFunc = onAssetClick && onAssetClick(n);
5788
+ const chain = list?.find((m) => m.id.toString() === n.chain_id);
5789
+ const getFooterColor = () => {
5790
+ if (!n.price_change_24h) {
5791
+ return "";
5792
+ }
5793
+ if (n.price_change_24h > 0) {
5794
+ return "matchid-wallet-asset-up";
5795
+ }
5796
+ if (n.price_change_24h < 0) {
5797
+ return "matchid-wallet-asset-down";
5798
+ }
5799
+ return "";
5800
+ };
5801
+ return /* @__PURE__ */ jsxs19("div", { className: `matchid-wallet-asset-item`, onClick: clickFunc, style: {
5802
+ cursor: clickFunc ? "pointer" : "default"
5803
+ }, children: [
5804
+ /* @__PURE__ */ jsxs19("div", { className: "matchid-wallet-asset-logo", title: n.symbol || n.name || "", children: [
5805
+ n.icon ? /* @__PURE__ */ jsx29("img", { src: n.icon, alt: n.symbol, className: `matchid-wallet-asset-icon` }) : /* @__PURE__ */ jsx29(
5806
+ AlphaAvatar2,
5807
+ {
5808
+ className: `matchid-wallet-asset-icon`,
5809
+ size: 40,
5810
+ name: n.symbol || n.name || ""
5811
+ }
5812
+ ),
5813
+ chain?.iconUrl && /* @__PURE__ */ jsx29("img", { src: chain.iconUrl, alt: chain.name, className: `matchid-wallet-asset-chain` })
5814
+ ] }),
5815
+ /* @__PURE__ */ jsxs19("div", { className: `matchid-wallet-asset-info`, children: [
5816
+ /* @__PURE__ */ jsx29("div", { className: `matchid-wallet-asset-name`, children: n.symbol }),
5817
+ "price" in n && /* @__PURE__ */ jsxs19("div", { className: `matchid-wallet-asset-content`, children: [
5818
+ /* @__PURE__ */ jsx29("div", { className: "matchid-wallet-asset-price", children: /* @__PURE__ */ jsx29(
5819
+ NumberFormatter,
5820
+ {
5821
+ value: n.price,
5822
+ prefix: "$ ",
5823
+ tFixNum: 2
5824
+ }
5825
+ ) }),
5826
+ /* @__PURE__ */ jsx29("div", { className: "matchid-wallet-asset-value", children: /* @__PURE__ */ jsx29(
5827
+ NumberFormatter,
5828
+ {
5829
+ value: n.value,
5830
+ prefix: "$ ",
5831
+ tFixNum: 2
5832
+ }
5833
+ ) })
5834
+ ] }),
5835
+ /* @__PURE__ */ jsxs19("div", { className: `matchid-wallet-asset-footer`, children: [
5836
+ /* @__PURE__ */ jsx29("div", { className: `matchid-wallet-asset-balance`, children: /* @__PURE__ */ jsx29(
5837
+ NumberFormatter,
5838
+ {
5839
+ value: n.balance,
5840
+ tFixNum: 3
5841
+ }
5842
+ ) }),
5843
+ "price_change_24h" in n && /* @__PURE__ */ jsx29("div", { className: `matchid-wallet-asset-change ${getFooterColor()}`, children: /* @__PURE__ */ jsx29(
5844
+ NumberFormatter,
5845
+ {
5846
+ prefix: `${(n?.price_change_24h || 0) < 0 ? "-" : "+"} `,
5847
+ value: Math.abs(n.price_change_24h || 0),
5848
+ suffix: "%",
5849
+ tFixNum: 3
5850
+ }
5851
+ ) })
5852
+ ] })
5853
+ ] })
5854
+ ] }, index);
5855
+ }) });
5856
+ }
5857
+
5858
+ // src/components/TokenSend/index.tsx
5859
+ import { useEffect as useEffect24, useMemo as useMemo15, useState as useState26 } from "react";
5860
+ import { defineChain as defineChain4, encodeFunctionData as encodeFunctionData2, erc20Abi as erc20Abi3, http as http6, parseUnits as parseUnits2 } from "viem";
5861
+ import { FormattedMessage as FormattedMessage11, useIntl as useIntl16 } from "react-intl";
5862
+ import { jsx as jsx30, jsxs as jsxs20 } from "react/jsx-runtime";
5863
+ function Input2({
5864
+ onChange,
5865
+ placeholder,
5866
+ value,
5867
+ maxLength,
5868
+ type,
5869
+ error,
5870
+ size = "df"
5871
+ }) {
5872
+ return /* @__PURE__ */ jsxs20("div", { className: `matchid-token-input-box ${"matchid-token-input-" + size}`, children: [
5873
+ /* @__PURE__ */ jsx30(
5874
+ "input",
5875
+ {
5876
+ placeholder,
5877
+ onChange,
5878
+ maxLength,
5879
+ type,
5880
+ value,
5881
+ className: `matchid-token-input ${error ? "matchid-token-input-error" : ""}`
5882
+ }
5883
+ ),
5884
+ error && /* @__PURE__ */ jsx30("div", { className: "matchid-token-input-error-text", children: error })
5885
+ ] });
5886
+ }
5887
+ function TokenSend({
5888
+ onClose,
5889
+ zIndex,
5890
+ token,
5891
+ onBack
5892
+ }) {
5893
+ const { list: chainList } = useMatchChain();
5894
+ const intl = useIntl16();
5895
+ const { createWalletClient: createWalletClient2 } = useWallet();
5896
+ const isNative = token.address.toLowerCase() == NATIVE_TOKEN_ADDRESS;
5897
+ const chain = useMemo15(() => {
5898
+ return chainList?.find((m) => m.id.toString() === token.chain_id);
5899
+ }, [chainList, token.chain_id]);
5900
+ const walletClient = useMemo15(() => {
5901
+ return createWalletClient2({
5902
+ // @ts-ignore
5903
+ chain: defineChain4(chain),
5904
+ transport: http6()
5905
+ });
5906
+ }, [chain]);
5907
+ const [amount, setAmount] = useState26("");
5908
+ const [address, setAddress] = useState26("");
5909
+ const [loading, setLoading] = useState26(false);
5910
+ const [sending, setSending] = useState26(false);
5911
+ const [txError, setTxError] = useState26("");
5912
+ const transaction = useMemo15(() => {
5913
+ const reg = /^0x[a-fA-F0-9]{40}$/;
5914
+ if (!amount || !address || !reg.test(address)) {
5915
+ return;
5916
+ }
5917
+ const viemChain = defineChain4(chain);
5918
+ const to = isNative ? address : token.address;
5919
+ const value = isNative ? parseUnits2(amount, parseInt(token?.decimals || "18")) : BigInt(0);
5920
+ const data = isNative ? "0x" : encodeFunctionData2({
5921
+ abi: erc20Abi3,
5922
+ functionName: "transfer",
5923
+ args: [address, parseUnits2(amount, parseInt(token?.decimals || "18"))]
5924
+ });
5925
+ return {
5926
+ to,
5927
+ value,
5928
+ data,
5929
+ chain: viemChain
5930
+ };
5931
+ }, [amount, address]);
5932
+ const onCal = async () => {
5933
+ try {
5934
+ setLoading(true);
5935
+ await walletClient?.prepareTransactionRequest(transaction);
5936
+ } catch (error2) {
5937
+ console.error(error2);
5938
+ setTxError(error2.details || error2.message);
5939
+ } finally {
5940
+ setLoading(false);
5941
+ }
5942
+ };
5943
+ const error = useMemo15(() => {
5944
+ setTxError("");
5945
+ let amountError = "";
5946
+ let addressError = "";
5947
+ if (amount) {
5948
+ if (parseFloat(amount) <= 0) {
5949
+ amountError = intl.formatMessage({
5950
+ id: "tokenAmountMin"
5951
+ });
5952
+ } else if ("balance" in token && parseFloat(amount) > (token.balance || 0)) {
5953
+ amountError = intl.formatMessage({
5954
+ id: "tokenAmountMax"
5955
+ });
5956
+ }
5957
+ }
5958
+ if (address) {
5959
+ if (address.length < 42) {
5960
+ addressError = intl.formatMessage({
5961
+ id: "tokenAddressError"
5962
+ });
5963
+ } else {
5964
+ const reg = /^0x[a-fA-F0-9]{40}$/;
5965
+ if (!reg.test(address)) {
5966
+ addressError = intl.formatMessage({
5967
+ id: "tokenAddressError"
5968
+ });
5969
+ }
5970
+ }
5971
+ }
5972
+ if (amount && address && !amountError && !addressError && walletClient) {
5973
+ onCal();
5974
+ }
5975
+ return {
5976
+ amount: amountError,
5977
+ address: addressError
5978
+ };
5979
+ }, [amount, token, chain, address, walletClient]);
5980
+ const onChangeAmount = (e) => {
5981
+ const value = e.target.value;
5982
+ if (value.match(/^\d*\.?\d*$/)) {
5983
+ setAmount(value);
5984
+ }
5985
+ };
5986
+ const canSend = useMemo15(() => {
5987
+ return !error.amount && !error.address && amount && address;
5988
+ }, [error]);
5989
+ const onNext = async () => {
5990
+ setSending(true);
5991
+ if (transaction) {
5992
+ await walletClient?.sendTransaction(transaction);
5993
+ }
5994
+ onClose();
5995
+ };
5996
+ useEffect24(() => {
5997
+ const receiveMessage = (event) => {
5998
+ if (event.data) {
5999
+ if (event.data.source == "match-wallet") {
6000
+ if (event.data.method == "sendTransaction" && event.data.messageId == "openIframe") {
6001
+ onBack();
6002
+ setSending(false);
6003
+ }
6004
+ }
6005
+ }
6006
+ };
6007
+ window.addEventListener("message", receiveMessage);
6008
+ return () => {
6009
+ window.removeEventListener("message", receiveMessage);
6010
+ };
6011
+ }, []);
6012
+ return /* @__PURE__ */ jsx30(ModalDrawer, { isOpen: true, onClose, zIndex, title: /* @__PURE__ */ jsx30(FormattedMessage11, { id: "send" }), onBack, children: /* @__PURE__ */ jsxs20("div", { className: `matchid-token-send-box`, children: [
6013
+ /* @__PURE__ */ jsxs20("div", { className: "matchid-token-send-content", children: [
6014
+ /* @__PURE__ */ jsxs20("div", { className: `matchid-token-amount-content`, children: [
6015
+ /* @__PURE__ */ jsxs20("div", { className: `matchid-token-amount-header`, children: [
6016
+ /* @__PURE__ */ jsx30("div", { className: `matchid-token-amount-title`, children: /* @__PURE__ */ jsx30(FormattedMessage11, { id: "amount" }) }),
6017
+ /* @__PURE__ */ jsxs20("div", { className: `matchid-token-amount-chain`, children: [
6018
+ token.icon ? /* @__PURE__ */ jsx30(
6019
+ "img",
6020
+ {
6021
+ src: token?.icon,
6022
+ alt: token?.symbol,
6023
+ className: `matchid-token-amount-chain-icon`
6024
+ }
6025
+ ) : /* @__PURE__ */ jsx30(AlphaAvatar, { name: token.symbol || token.name || "", size: 16 }),
6026
+ /* @__PURE__ */ jsx30("span", { children: token?.symbol })
6027
+ ] })
6028
+ ] }),
6029
+ /* @__PURE__ */ jsx30(
6030
+ Input2,
6031
+ {
6032
+ type: "text",
6033
+ onChange: onChangeAmount,
6034
+ placeholder: intl.formatMessage({
6035
+ id: "amountPlaceholder"
6036
+ }),
6037
+ value: amount,
6038
+ maxLength: 40,
6039
+ error: error.amount || txError
6040
+ }
6041
+ ),
6042
+ /* @__PURE__ */ jsxs20("div", { className: `matchid-token-amount-footer`, children: [
6043
+ /* @__PURE__ */ jsxs20("div", { className: `matchid-token-amount-title`, children: [
6044
+ /* @__PURE__ */ jsx30(FormattedMessage11, { id: "balance" }),
6045
+ ":"
6046
+ ] }),
6047
+ /* @__PURE__ */ jsx30("div", { className: `matchid-token-amount-value`, children: /* @__PURE__ */ jsx30(NumberFormatter, { value: token.balance, tFixNum: 10, suffix: " " + token.symbol }) })
6048
+ ] }),
6049
+ /* @__PURE__ */ jsx30(TransferIcon, { className: "matchid-token-amount-transfer" })
6050
+ ] }),
6051
+ /* @__PURE__ */ jsxs20("div", { className: `matchid-token-address-content`, children: [
6052
+ /* @__PURE__ */ jsx30("div", { className: `matchid-token-address-header`, children: /* @__PURE__ */ jsx30("div", { className: `matchid-token-address-title`, children: /* @__PURE__ */ jsx30(FormattedMessage11, { id: "receiveTitle" }) }) }),
6053
+ /* @__PURE__ */ jsx30(
6054
+ Input2,
6055
+ {
6056
+ type: "text",
6057
+ size: "sm",
6058
+ onChange: (e) => setAddress(e.target.value),
6059
+ placeholder: intl.formatMessage({
6060
+ id: "receivePlaceholder"
6061
+ }),
6062
+ value: address,
6063
+ maxLength: 42,
6064
+ error: error.address
6065
+ }
6066
+ )
6067
+ ] })
6068
+ ] }),
6069
+ /* @__PURE__ */ jsx30(
6070
+ Button,
6071
+ {
6072
+ size: "lg",
6073
+ block: true,
6074
+ highlight: true,
6075
+ disabled: !canSend || !!txError,
6076
+ onClick: onNext,
6077
+ loading: loading || sending,
6078
+ children: /* @__PURE__ */ jsx30(FormattedMessage11, { id: "next" })
6079
+ }
6080
+ )
6081
+ ] }) });
6082
+ }
6083
+
6084
+ // src/components/TokenDetail/index.tsx
6085
+ import { FormattedMessage as FormattedMessage12, useIntl as useIntl17 } from "react-intl";
6086
+ import { jsx as jsx31, jsxs as jsxs21 } from "react/jsx-runtime";
6087
+ function TokenDetail({
6088
+ onClose,
6089
+ token
6090
+ }) {
6091
+ const { list: chainList } = useMatchChain();
6092
+ const modal = useModal();
6093
+ const chain = chainList?.find((m) => m.id.toString() === token.chain_id);
6094
+ const onSend = () => {
6095
+ modal.show((props) => {
6096
+ return /* @__PURE__ */ jsx31(TokenSend, { onClose: () => {
6097
+ props.close();
6098
+ onClose();
6099
+ }, onBack: props.close, zIndex: props.zIndex, token });
6100
+ });
6101
+ };
6102
+ const intl = useIntl17();
6103
+ return /* @__PURE__ */ jsx31(ModalDrawer, { isOpen: true, title: intl.formatMessage({
6104
+ id: "tokenDetails"
6105
+ }), onClose, children: /* @__PURE__ */ jsxs21("div", { className: `matchid-token-detail`, children: [
6106
+ /* @__PURE__ */ jsxs21("div", { className: `matchid-token-main`, children: [
6107
+ /* @__PURE__ */ jsxs21("div", { className: `matchid-token-info`, children: [
6108
+ /* @__PURE__ */ jsxs21("div", { className: `matchid-token-logo`, children: [
6109
+ token.icon ? /* @__PURE__ */ jsx31("img", { src: token.icon, alt: token.symbol, className: `matchid-token-icon` }) : /* @__PURE__ */ jsx31(AlphaAvatar, { className: `matchid-token-icon`, size: 48, name: token.symbol || token.name || "" }),
6110
+ chain?.iconUrl && /* @__PURE__ */ jsx31("img", { src: chain.iconUrl, alt: chain.name, className: `matchid-token-chain` })
6111
+ ] }),
6112
+ /* @__PURE__ */ jsxs21("div", { className: `matchid-token-name`, children: [
6113
+ /* @__PURE__ */ jsx31(NumberFormatter, { value: token.balance, tFixNum: 10 }),
6114
+ " ",
6115
+ token.symbol
6116
+ ] })
6117
+ ] }),
6118
+ token.address.toLowerCase() != NATIVE_TOKEN_ADDRESS && /* @__PURE__ */ jsxs21("div", { className: `matchid-token-contract`, children: [
6119
+ /* @__PURE__ */ jsx31("div", { className: "matchid-token-contract-title", children: "Contract address" }),
6120
+ /* @__PURE__ */ jsx31("div", { className: "matchid-token-contract-address", children: token.address })
6121
+ ] })
6122
+ ] }),
6123
+ /* @__PURE__ */ jsx31(Button, { size: "lg", block: true, highlight: true, onClick: onSend, children: /* @__PURE__ */ jsx31(FormattedMessage12, { id: "send" }) })
6124
+ ] }) });
6125
+ }
6126
+
6127
+ // src/components/TokenSendList/index.tsx
6128
+ import { useState as useState27 } from "react";
6129
+ import { FormattedMessage as FormattedMessage13 } from "react-intl";
6130
+ import { jsx as jsx32, jsxs as jsxs22 } from "react/jsx-runtime";
6131
+ function TokenSendList({ close }) {
6132
+ const walletAssets = useMatchWalletAssets();
6133
+ const matchWalletAssetList = useMatchWalletAssetList({
6134
+ list: walletAssets.mergedAssets
6135
+ });
6136
+ const { list } = useMatchChain();
6137
+ const [checked, setChecked] = useState27();
6138
+ const modal = useModal();
6139
+ const onNext = () => {
6140
+ checked && modal.show((props) => {
6141
+ return /* @__PURE__ */ jsx32(TokenSend, { onClose: () => {
6142
+ props.close();
6143
+ close();
6144
+ }, onBack: props.close, zIndex: props.zIndex, token: checked });
6145
+ });
6146
+ };
6147
+ return /* @__PURE__ */ jsxs22("div", { className: "matchid-token-send-list-box", children: [
6148
+ /* @__PURE__ */ jsx32("div", { className: "matchid-token-send-list", children: matchWalletAssetList.list.map((n, index) => {
6149
+ const chain = list?.find((m) => m.id.toString() === n.chain_id);
6150
+ return /* @__PURE__ */ jsxs22(
6151
+ "div",
6152
+ {
6153
+ className: `matchid-token-send-item ${checked?.address == n.address ? "matchid-token-send-chekced" : ""}`,
6154
+ onClick: () => {
6155
+ setChecked(n);
6156
+ },
6157
+ children: [
6158
+ /* @__PURE__ */ jsx32(Radio, { checked: checked?.address == n.address }),
6159
+ /* @__PURE__ */ jsxs22("div", { className: "matchid-token-send-content", children: [
6160
+ /* @__PURE__ */ jsxs22("div", { className: "matchid-token-send-logo", children: [
6161
+ n.icon ? /* @__PURE__ */ jsx32("img", { src: n.icon, alt: n.symbol, className: `matchid-token-send-icon` }) : /* @__PURE__ */ jsx32(
6162
+ AlphaAvatar2,
6163
+ {
6164
+ className: `matchid-token-send-icon`,
6165
+ size: 40,
6166
+ name: n.symbol || n.name || ""
6167
+ }
6168
+ ),
6169
+ chain?.iconUrl && /* @__PURE__ */ jsx32(
6170
+ "img",
6171
+ {
6172
+ src: chain.iconUrl,
6173
+ alt: chain.name,
6174
+ className: `matchid-token-send-chain`
6175
+ }
6176
+ )
6177
+ ] }),
6178
+ /* @__PURE__ */ jsxs22("div", { className: `matchid-token-send-info`, children: [
6179
+ /* @__PURE__ */ jsx32("div", { className: `matchid-token-send-name`, children: n.symbol }),
6180
+ /* @__PURE__ */ jsx32("div", { className: `matchid-token-send-balance`, children: /* @__PURE__ */ jsx32(NumberFormatter, { value: n.balance, tFixNum: 3 }) })
6181
+ ] })
6182
+ ] })
6183
+ ]
6184
+ },
6185
+ index
6186
+ );
6187
+ }) }),
6188
+ /* @__PURE__ */ jsx32(Button, { size: "lg", highlight: true, block: true, disabled: !checked, onClick: onNext, children: /* @__PURE__ */ jsx32(FormattedMessage13, { id: "next" }) })
6189
+ ] });
6190
+ }
6191
+
6192
+ // src/components/TransactionList/index.tsx
6193
+ import InfiniteScroll from "react-infinite-scroll-component";
6194
+ import { useEffect as useEffect25, useMemo as useMemo16, useState as useState28 } from "react";
6195
+ import { decodeFunctionData, defineChain as defineChain5, formatUnits as formatUnits3 } from "viem";
6196
+ import { erc20Abi as erc20Abi4 } from "viem";
6197
+ import { FormattedMessage as FormattedMessage14 } from "react-intl";
6198
+ import { jsx as jsx33, jsxs as jsxs23 } from "react/jsx-runtime";
6199
+ var Item = ({ data }) => {
6200
+ const { address } = useWallet();
6201
+ const isOut = data.from.toLowerCase() == address.toLowerCase();
6202
+ const { chain, chainId, explorerLink, formatUnits: chainFormatUnits } = useMatchChain();
6203
+ const { contracts } = useContractStore_default();
6204
+ const [shouldRefetch, setShouldRefetch] = useState28(true);
6205
+ const transferType = useMemo16(() => {
6206
+ const methodId = data.input.substring(2, 10);
6207
+ if (methodId == "095ea7b3") {
6208
+ return "erc20_approve";
6209
+ }
6210
+ if (methodId == "a9059cbb") {
6211
+ return "erc20_transfer";
6212
+ }
6213
+ return "unknown";
6214
+ }, [data.input]);
6215
+ const to = useMemo16(() => {
6216
+ if (!isOut) {
6217
+ return data.from;
6218
+ }
6219
+ if (transferType == "erc20_transfer") {
6220
+ const decodeData = decodeFunctionData({
6221
+ abi: erc20Abi4,
6222
+ data: data.input
6223
+ });
6224
+ return decodeData.args[0];
6225
+ }
6226
+ return data.to;
6227
+ }, [data.input, transferType, data.to, isOut]);
6228
+ const amount = useMemo16(() => {
6229
+ if (transferType == "erc20_transfer") {
6230
+ const decodeData = decodeFunctionData({
6231
+ abi: erc20Abi4,
6232
+ data: data.input
6233
+ });
6234
+ const value = decodeData.args[1];
6235
+ return formatUnits3(value, contracts[`${chainId}-${data.to.toLowerCase()}`]?.decimals || 18);
6236
+ }
6237
+ return chainFormatUnits(BigInt(data.value));
6238
+ }, [data.input, transferType, data.value, contracts, chainId, data.to]);
6239
+ const hashQuery = useHash({
6240
+ hash: data.hash,
6241
+ //@ts-ignore
6242
+ chain: defineChain5(chain),
6243
+ refetchInterval: shouldRefetch ? 3e3 : false,
6244
+ enabled: shouldRefetch && data.source == "local"
6245
+ });
6246
+ const status = useMemo16(() => {
6247
+ if (data.source == "matchain") {
6248
+ switch (data.extra.status) {
6249
+ case "ok":
6250
+ return "success";
6251
+ case "error":
6252
+ return "error";
6253
+ }
6254
+ } else if (data.source == "auto") {
6255
+ if (data.extra.receipt_status == 1) {
6256
+ return "success";
6257
+ } else {
6258
+ return "error";
6259
+ }
6260
+ } else {
6261
+ if (hashQuery.data == 1) {
6262
+ return "success";
6263
+ }
6264
+ if (hashQuery.data == -1) {
6265
+ return "error";
6266
+ }
6267
+ if (Date.now() / 1e3 - parseInt(data.timestamp) > 3600) {
6268
+ return "error";
6269
+ }
6270
+ }
6271
+ return "loading";
6272
+ }, [data.extra?.status, data.source, hashQuery.data]);
6273
+ useEffect25(() => {
6274
+ if (data.hash) {
6275
+ setShouldRefetch(status == "loading");
6276
+ }
6277
+ }, [status, data.hash]);
6278
+ const symbol = useMemo16(() => {
6279
+ if (transferType == "erc20_transfer") {
6280
+ const contract = contracts[`${chainId}-${data.to.toLowerCase()}`];
6281
+ return contract?.symbol || contract?.name || "unknown";
6282
+ }
6283
+ return chain?.nativeCurrency.symbol || chain?.nativeCurrency.name;
6284
+ }, [transferType, chain, contracts, chainId, data.to]);
6285
+ return /* @__PURE__ */ jsxs23(
6286
+ "a",
6287
+ {
6288
+ href: explorerLink(`tx/${data.hash}`),
6289
+ target: "_blank",
6290
+ className: `matchid-transaction-item`,
6291
+ children: [
6292
+ /* @__PURE__ */ jsxs23("div", { className: `matchid-transacton-item-container`, children: [
6293
+ /* @__PURE__ */ jsx33("div", { className: "matchid-transaction-item-icon", children: /* @__PURE__ */ jsx33(ArrowSendIcon, { className: !isOut ? "rotate-180" : "" }) }),
6294
+ /* @__PURE__ */ jsxs23("div", { className: `matchid-transaction-item-details`, children: [
6295
+ /* @__PURE__ */ jsx33("div", { className: `matchid-transaction-item-address`, children: formatAddress(to, 6, 4) }),
6296
+ /* @__PURE__ */ jsx33(
6297
+ "div",
6298
+ {
6299
+ className: `matchid-transaction-item-timestamp`,
6300
+ children: formatDate(data.timestamp, "MM/DD HH:mm:ss")
6301
+ }
6302
+ )
6303
+ ] })
6304
+ ] }),
6305
+ /* @__PURE__ */ jsxs23("div", { className: `matchid-transaction-item-amount ${"matchid-transaction-item-" + status}`, children: [
6306
+ /* @__PURE__ */ jsx33(NumberFormatter, { value: amount, tFixNum: 6, prefix: isOut ? "-" : "+", suffix: " " + symbol }),
6307
+ status == "loading" && /* @__PURE__ */ jsx33(LoadingIcon_default, { color: "#000000", size: 16, rotate: true }),
6308
+ status == "success" && /* @__PURE__ */ jsx33(CheckRoundIcon, { size: 16 }),
6309
+ status == "error" && /* @__PURE__ */ jsx33(InfoRoundIcon, { size: 16 })
6310
+ ] })
6311
+ ]
6312
+ }
6313
+ );
6314
+ };
6315
+ function TransactionList({
6316
+ scrollableTarget
6317
+ }) {
6318
+ const { fetchMoreData, hasMore, items } = useMatchWalletRecords();
6319
+ return /* @__PURE__ */ jsx33(
6320
+ InfiniteScroll,
6321
+ {
6322
+ scrollableTarget,
6323
+ dataLength: items.length,
6324
+ next: fetchMoreData,
6325
+ hasMore,
6326
+ loader: /* @__PURE__ */ jsxs23("div", { className: "matchid-list-nomore", children: [
6327
+ /* @__PURE__ */ jsx33(LoadingIcon_default, { rotate: true, size: 16, color: "black" }),
6328
+ "Loading..."
6329
+ ] }),
6330
+ endMessage: items.length > 0 ? /* @__PURE__ */ jsx33("div", { className: `matchid-list-nomore`, children: /* @__PURE__ */ jsx33(FormattedMessage14, { id: "noMoreRecords" }) }) : /* @__PURE__ */ jsx33("div", { className: `matchid-list-nomore`, children: /* @__PURE__ */ jsx33(FormattedMessage14, { id: "noRecords" }) }),
6331
+ children: items.length == 0 && !hasMore ? /* @__PURE__ */ jsx33("div", { className: "mt-[150px]" }) : /* @__PURE__ */ jsx33("div", { className: `matchid-transaction-list`, children: items.map((item, index) => /* @__PURE__ */ jsx33(Item, { data: item }, index)) })
6332
+ }
6333
+ );
4703
6334
  }
4704
6335
 
4705
6336
  export {
@@ -4715,9 +6346,9 @@ export {
4715
6346
  mintPassportNftApi,
4716
6347
  useUserInfo,
4717
6348
  useMatchEvents,
6349
+ useModal,
4718
6350
  useWallet,
4719
6351
  useCopyClipboard,
4720
- useModal,
4721
6352
  useToast,
4722
6353
  wallet_exports,
4723
6354
  useMatchChain,
@@ -4732,12 +6363,20 @@ export {
4732
6363
  TONModal,
4733
6364
  BTCModal,
4734
6365
  WalletModal,
6366
+ WalletAsset,
6367
+ TokenSend,
6368
+ TokenDetail,
6369
+ TokenSendList,
6370
+ TransactionList,
4735
6371
  components_exports,
4736
6372
  useMatchWallet,
4737
6373
  useMatchWalletRecords,
6374
+ useMatchWalletAssets,
6375
+ useMatchWalletAssetList,
4738
6376
  useReceipt,
6377
+ useTransaction,
4739
6378
  hooks_exports,
4740
6379
  MatchProvider,
4741
6380
  useMatch
4742
6381
  };
4743
- //# sourceMappingURL=chunk-V3WGYFWQ.mjs.map
6382
+ //# sourceMappingURL=chunk-KIVNILBF.mjs.map