@vechain/vechain-kit 1.5.11 → 1.5.13
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.
- package/dist/assets/index.cjs +23 -23
- package/dist/assets/index.js +1 -1
- package/dist/{chunk-3CI2FPCB.js → chunk-G7I2W6XJ.js} +3 -3
- package/dist/{chunk-3CI2FPCB.js.map → chunk-G7I2W6XJ.js.map} +1 -1
- package/dist/{chunk-DBQR2OKX.cjs → chunk-QRYVPUVY.cjs} +6 -6
- package/dist/{chunk-DBQR2OKX.cjs.map → chunk-QRYVPUVY.cjs.map} +1 -1
- package/dist/{chunk-A4NZ5AVL.cjs → chunk-TV24UEQU.cjs} +3 -3
- package/dist/{chunk-A4NZ5AVL.cjs.map → chunk-TV24UEQU.cjs.map} +1 -1
- package/dist/{chunk-RSEKQ6PP.js → chunk-YPHGCDGO.js} +3 -3
- package/dist/{chunk-RSEKQ6PP.js.map → chunk-YPHGCDGO.js.map} +1 -1
- package/dist/index.cjs +1100 -622
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +67 -10
- package/dist/index.d.ts +67 -10
- package/dist/index.js +907 -434
- package/dist/index.js.map +1 -1
- package/dist/metafile-cjs.json +1 -1
- package/dist/metafile-esm.json +1 -1
- package/dist/utils/index.cjs +32 -32
- package/dist/utils/index.js +2 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { IVechainEnergyOracleV1__factory, IB3TR__factory, IVOT3__factory, GalaxyMember__factory, NodeManagement__factory, X2EarnApps__factory, XAllocationVoting__factory, XAllocationVotingGovernor__factory, XAllocationPool__factory, VoterRewards__factory, VeBetterPassport__factory, IERC20__factory, MockENS__factory, SubdomainClaimer__factory, IReverseRegistrar__factory, ERC20__factory, SimpleAccountFactory__factory, SimpleAccount__factory, Emissions__factory, X2EarnRewardsPool__factory } from './chunk-FOSPSOWT.js';
|
|
2
|
-
import { getConfig, humanNumber, NodeStrengthLevelToImage, allNodeStrengthLevelToName, notFoundImage, convertUriToUrl, resolveMediaTypeFromMimeType, gmNfts, DEFAULT_PRIVY_ECOSYSTEM_APPS, humanAddress, getPicassoImage, VECHAIN_PRIVY_APP_ID, compareAddresses, isValidAddress, TOKEN_LOGO_COMPONENTS, TOKEN_LOGOS, humanDomain, uploadBlobToIPFS, randomTransactionUser } from './chunk-
|
|
3
|
-
export { getConfig } from './chunk-
|
|
4
|
-
import { SimpleAccountFactoryABI, VechainLogo, VechainLogoLight, VechainLogoDark, VechainEnergy, PrivyLogo, SimpleAccountABI } from './chunk-
|
|
2
|
+
import { getConfig, humanNumber, NodeStrengthLevelToImage, allNodeStrengthLevelToName, notFoundImage, convertUriToUrl, resolveMediaTypeFromMimeType, gmNfts, DEFAULT_PRIVY_ECOSYSTEM_APPS, humanAddress, getPicassoImage, VECHAIN_PRIVY_APP_ID, compareAddresses, isValidAddress, TOKEN_LOGO_COMPONENTS, TOKEN_LOGOS, humanDomain, uploadBlobToIPFS, randomTransactionUser } from './chunk-YPHGCDGO.js';
|
|
3
|
+
export { getConfig } from './chunk-YPHGCDGO.js';
|
|
4
|
+
import { SimpleAccountFactoryABI, VechainLogo, VechainLogoLight, VechainLogoDark, VechainEnergy, PrivyLogo, SimpleAccountABI } from './chunk-G7I2W6XJ.js';
|
|
5
5
|
import './chunk-PZ5AY32C.js';
|
|
6
6
|
import React10, { createContext, useState, useEffect, useMemo, useCallback, useRef, useContext } from 'react';
|
|
7
7
|
import { useLoginWithOAuth, usePrivy, useLoginWithEmail, useMfaEnrollment, useSetWalletRecovery, useLoginWithPasskey as useLoginWithPasskey$1, PrivyProvider } from '@privy-io/react-auth';
|
|
8
8
|
export { useMfaEnrollment, usePrivy, useSetWalletRecovery } from '@privy-io/react-auth';
|
|
9
|
-
import { useConnex, useWallet as useWallet$1, useWalletModal,
|
|
9
|
+
import { useConnex, useWallet as useWallet$1, useWalletModal, DAppKitProvider } from '@vechain/dapp-kit-react';
|
|
10
10
|
export { WalletButton as DAppKitWalletButton, useConnex, useWallet as useDAppKitWallet, useWalletModal as useDAppKitWalletModal } from '@vechain/dapp-kit-react';
|
|
11
11
|
import { defineChain, formatEther, parseEther, zeroAddress, keccak256, toBytes, concat, encodeFunctionData } from 'viem';
|
|
12
12
|
import { ABIContract, Address, Clause } from '@vechain/sdk-core';
|
|
@@ -17,14 +17,14 @@ import { initReactI18next, useTranslation } from 'react-i18next';
|
|
|
17
17
|
import { abi, Transaction } from 'thor-devkit';
|
|
18
18
|
import imageCompression from 'browser-image-compression';
|
|
19
19
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
20
|
-
import { Interface, formatEther as formatEther$1, isAddress, namehash, toUtf8String, zeroPadValue, toBeHex,
|
|
20
|
+
import { Interface, formatEther as formatEther$1, isAddress, ethers, namehash, toUtf8String, zeroPadValue, toBeHex, parseEther as parseEther$1 } from 'ethers';
|
|
21
21
|
import { z } from 'zod';
|
|
22
22
|
import { useAccount, createConfig, http, WagmiProvider, useConnect, useSignTypedData, useSignMessage, useDisconnect } from 'wagmi';
|
|
23
23
|
import { toPrivyWalletConnector } from '@privy-io/cross-app-connect/rainbow-kit';
|
|
24
24
|
import { isMobile } from 'react-device-detect';
|
|
25
25
|
import { createMultiStyleConfigHelpers, defineStyle, defineStyleConfig, extendTheme, createStandaloneToast, IconButton, VStack, Text, InputGroup, InputLeftElement, Icon, Input, InputRightElement, HStack, Link, Box, useMediaQuery, Modal, ModalOverlay, ModalContent, Button, Image, Skeleton, Spinner, useDisclosure, GridItem, ModalHeader, ModalCloseButton, ModalBody, ModalFooter, Tag, Heading, useColorModeValue, Tabs, TabList, Tab, TabPanels, TabPanel, Grid, Card, CardBody, Alert, AlertIcon, CardHeader, Center, CardFooter, Divider, Container, FormControl, Select, FormLabel, Textarea, Circle, AlertTitle, AlertDescription, Popover, PopoverTrigger, PopoverContent, PopoverBody, PinInput, PinInputField, Stack, Accordion, AccordionItem, AccordionButton, AccordionPanel, List, ChakraProvider, ColorModeScript, ListItem, Flex } from '@chakra-ui/react';
|
|
26
26
|
import { motion } from 'framer-motion';
|
|
27
|
-
import { IoChevronBack, IoCheckmarkOutline, IoCopyOutline, IoWalletOutline, IoCloseCircle, IoCogSharp, IoShieldOutline, IoOpenOutline, IoTrashBin, IoChevronUp, IoChevronDown, IoCloseOutline } from 'react-icons/io5';
|
|
27
|
+
import { IoChevronBack, IoCheckmarkOutline, IoCopyOutline, IoWalletOutline, IoCloseCircle, IoCogSharp, IoShieldOutline, IoOpenOutline, IoTrashBin, IoChevronUp, IoChevronDown, IoCloseOutline, IoTrashOutline } from 'react-icons/io5';
|
|
28
28
|
import { FaRegAddressCard, FaExternalLinkAlt, FaGlobe, FaEnvelope, FaArrowRight, FaTelegramPlane, FaChevronDown, FaEdit, FaGoogle, FaTwitter, FaPhone, FaSpotify, FaApple, FaInstagram, FaTiktok, FaGithub, FaLinkedin, FaTelegram, FaDiscord as FaDiscord$1, FaWallet, FaPlus } from 'react-icons/fa';
|
|
29
29
|
import { HiOutlineWallet, HiOutlineShieldCheck } from 'react-icons/hi2';
|
|
30
30
|
import { BsQuestionCircle, BsBookmarkFill, BsBookmark } from 'react-icons/bs';
|
|
@@ -2808,25 +2808,27 @@ var fetchVechainDomain = async (thor, networkType, addressOrDomain) => {
|
|
|
2808
2808
|
return {
|
|
2809
2809
|
address: void 0,
|
|
2810
2810
|
domain: void 0,
|
|
2811
|
-
isValidAddressOrDomain: false
|
|
2811
|
+
isValidAddressOrDomain: false,
|
|
2812
|
+
isPrimaryDomain: false
|
|
2812
2813
|
};
|
|
2813
2814
|
}
|
|
2814
|
-
|
|
2815
|
-
if (isValidAddress2) {
|
|
2815
|
+
if (isAddress(addressOrDomain)) {
|
|
2816
2816
|
try {
|
|
2817
2817
|
const res = await thor.account(getConfig(networkType).vnsResolverAddress).method(getNamesABI).call([addressOrDomain]);
|
|
2818
2818
|
const domainName = res.decoded.names?.[0];
|
|
2819
2819
|
return {
|
|
2820
2820
|
address: addressOrDomain,
|
|
2821
2821
|
domain: domainName || void 0,
|
|
2822
|
-
isValidAddressOrDomain: true
|
|
2822
|
+
isValidAddressOrDomain: true,
|
|
2823
|
+
isPrimaryDomain: true
|
|
2823
2824
|
};
|
|
2824
2825
|
} catch (err) {
|
|
2825
2826
|
console.error("Error getting domain: ", err);
|
|
2826
2827
|
return {
|
|
2827
2828
|
address: addressOrDomain,
|
|
2828
2829
|
domain: void 0,
|
|
2829
|
-
isValidAddressOrDomain: true
|
|
2830
|
+
isValidAddressOrDomain: true,
|
|
2831
|
+
isPrimaryDomain: false
|
|
2830
2832
|
};
|
|
2831
2833
|
}
|
|
2832
2834
|
}
|
|
@@ -2837,20 +2839,25 @@ var fetchVechainDomain = async (thor, networkType, addressOrDomain) => {
|
|
|
2837
2839
|
return {
|
|
2838
2840
|
address: void 0,
|
|
2839
2841
|
domain: void 0,
|
|
2840
|
-
isValidAddressOrDomain: false
|
|
2842
|
+
isValidAddressOrDomain: false,
|
|
2843
|
+
isPrimaryDomain: false
|
|
2841
2844
|
};
|
|
2842
2845
|
}
|
|
2846
|
+
const primaryDomainRes = await thor.account(getConfig(networkType).vnsResolverAddress).method(getNamesABI).call([domainAddress]);
|
|
2847
|
+
const primaryDomain = primaryDomainRes.decoded.names?.[0];
|
|
2843
2848
|
return {
|
|
2844
2849
|
address: domainAddress,
|
|
2845
2850
|
domain: addressOrDomain,
|
|
2846
|
-
isValidAddressOrDomain: true
|
|
2851
|
+
isValidAddressOrDomain: true,
|
|
2852
|
+
isPrimaryDomain: primaryDomain === addressOrDomain
|
|
2847
2853
|
};
|
|
2848
2854
|
} catch (err) {
|
|
2849
2855
|
console.error("Error getting address: ", err);
|
|
2850
2856
|
return {
|
|
2851
2857
|
address: void 0,
|
|
2852
2858
|
domain: void 0,
|
|
2853
|
-
isValidAddressOrDomain: false
|
|
2859
|
+
isValidAddressOrDomain: false,
|
|
2860
|
+
isPrimaryDomain: false
|
|
2854
2861
|
};
|
|
2855
2862
|
}
|
|
2856
2863
|
};
|
|
@@ -2864,11 +2871,7 @@ var useVechainDomain = (addressOrDomain) => {
|
|
|
2864
2871
|
return useQuery({
|
|
2865
2872
|
queryKey: getVechainDomainQueryKey(addressOrDomain),
|
|
2866
2873
|
queryFn: () => fetchVechainDomain(thor, network.type, addressOrDomain),
|
|
2867
|
-
enabled: !!thor && !!addressOrDomain
|
|
2868
|
-
staleTime: 24 * 60 * 60 * 1e3,
|
|
2869
|
-
// 24 hours
|
|
2870
|
-
gcTime: 24 * 60 * 60 * 1e3
|
|
2871
|
-
// 24 hours
|
|
2874
|
+
enabled: !!thor && !!addressOrDomain
|
|
2872
2875
|
});
|
|
2873
2876
|
};
|
|
2874
2877
|
var MockENSInterface = MockENS__factory.createInterface();
|
|
@@ -2894,6 +2897,83 @@ var useEnsRecordExists = (name) => {
|
|
|
2894
2897
|
enabled: !!name
|
|
2895
2898
|
});
|
|
2896
2899
|
};
|
|
2900
|
+
var useRefreshMetadata = (domain, address) => {
|
|
2901
|
+
const queryClient = useQueryClient();
|
|
2902
|
+
const { network } = useVeChainKitConfig();
|
|
2903
|
+
const refresh = async () => {
|
|
2904
|
+
await queryClient.invalidateQueries({
|
|
2905
|
+
queryKey: getAvatarQueryKey(domain ?? "", network.type)
|
|
2906
|
+
});
|
|
2907
|
+
await queryClient.refetchQueries({
|
|
2908
|
+
queryKey: getAvatarQueryKey(domain ?? "", network.type)
|
|
2909
|
+
});
|
|
2910
|
+
await queryClient.invalidateQueries({
|
|
2911
|
+
queryKey: getTextRecordsQueryKey(domain, network.type)
|
|
2912
|
+
});
|
|
2913
|
+
await queryClient.refetchQueries({
|
|
2914
|
+
queryKey: getTextRecordsQueryKey(domain, network.type)
|
|
2915
|
+
});
|
|
2916
|
+
await queryClient.invalidateQueries({
|
|
2917
|
+
queryKey: getAvatarOfAddressQueryKey(address)
|
|
2918
|
+
});
|
|
2919
|
+
await queryClient.refetchQueries({
|
|
2920
|
+
queryKey: getAvatarOfAddressQueryKey(address)
|
|
2921
|
+
});
|
|
2922
|
+
};
|
|
2923
|
+
return { refresh };
|
|
2924
|
+
};
|
|
2925
|
+
|
|
2926
|
+
// src/hooks/api/vetDomains/utils/domainQueryUtils.ts
|
|
2927
|
+
var invalidateAndRefetchDomainQueries = async (queryClient, address, fullDomain, subdomain, domain, networkType) => {
|
|
2928
|
+
await Promise.all([
|
|
2929
|
+
queryClient.invalidateQueries({
|
|
2930
|
+
queryKey: getVechainDomainQueryKey(address)
|
|
2931
|
+
}),
|
|
2932
|
+
queryClient.invalidateQueries({
|
|
2933
|
+
queryKey: getVechainDomainQueryKey(fullDomain)
|
|
2934
|
+
}),
|
|
2935
|
+
queryClient.invalidateQueries({
|
|
2936
|
+
queryKey: getEnsRecordExistsQueryKey(subdomain)
|
|
2937
|
+
}),
|
|
2938
|
+
queryClient.invalidateQueries({
|
|
2939
|
+
queryKey: getDomainsOfAddressQueryKey(address, ".vet")
|
|
2940
|
+
}),
|
|
2941
|
+
queryClient.invalidateQueries({
|
|
2942
|
+
queryKey: getDomainsOfAddressQueryKey(address, ".veworld.vet")
|
|
2943
|
+
}),
|
|
2944
|
+
queryClient.invalidateQueries({
|
|
2945
|
+
queryKey: getTextRecordsQueryKey(fullDomain)
|
|
2946
|
+
})
|
|
2947
|
+
]);
|
|
2948
|
+
await Promise.all([
|
|
2949
|
+
queryClient.refetchQueries({
|
|
2950
|
+
queryKey: getVechainDomainQueryKey(address)
|
|
2951
|
+
}),
|
|
2952
|
+
queryClient.refetchQueries({
|
|
2953
|
+
queryKey: getVechainDomainQueryKey(fullDomain)
|
|
2954
|
+
}),
|
|
2955
|
+
queryClient.refetchQueries({
|
|
2956
|
+
queryKey: getDomainsOfAddressQueryKey(address, ".vet")
|
|
2957
|
+
}),
|
|
2958
|
+
queryClient.refetchQueries({
|
|
2959
|
+
queryKey: getDomainsOfAddressQueryKey(address, ".veworld.vet")
|
|
2960
|
+
}),
|
|
2961
|
+
queryClient.refetchQueries({
|
|
2962
|
+
queryKey: getAvatarQueryKey(subdomain + "." + domain, networkType)
|
|
2963
|
+
}),
|
|
2964
|
+
queryClient.refetchQueries({
|
|
2965
|
+
queryKey: getTextRecordsQueryKey(fullDomain)
|
|
2966
|
+
}),
|
|
2967
|
+
queryClient.refetchQueries({
|
|
2968
|
+
queryKey: getEnsRecordExistsQueryKey(subdomain)
|
|
2969
|
+
}),
|
|
2970
|
+
queryClient.refetchQueries({
|
|
2971
|
+
queryKey: getAvatarOfAddressQueryKey(address)
|
|
2972
|
+
})
|
|
2973
|
+
]);
|
|
2974
|
+
};
|
|
2975
|
+
|
|
2976
|
+
// src/hooks/api/vetDomains/useClaimVeWorldSubdomain.ts
|
|
2897
2977
|
var SubdomainClaimerInterface = SubdomainClaimer__factory.createInterface();
|
|
2898
2978
|
var ReverseRegistrarInterface = IReverseRegistrar__factory.createInterface();
|
|
2899
2979
|
var useClaimVeWorldSubdomain = ({
|
|
@@ -2906,9 +2986,14 @@ var useClaimVeWorldSubdomain = ({
|
|
|
2906
2986
|
const queryClient = useQueryClient();
|
|
2907
2987
|
const { account } = useWallet();
|
|
2908
2988
|
const { network } = useVeChainKitConfig();
|
|
2989
|
+
const { refresh: refreshMetadata } = useRefreshMetadata(
|
|
2990
|
+
subdomain + "." + domain,
|
|
2991
|
+
account?.address ?? ""
|
|
2992
|
+
);
|
|
2909
2993
|
const buildClauses = useCallback(async () => {
|
|
2910
|
-
if (!subdomain) throw new Error("Invalid subdomain");
|
|
2911
2994
|
const clausesArray = [];
|
|
2995
|
+
if (!subdomain) throw new Error("Invalid subdomain");
|
|
2996
|
+
const fullDomain = `${subdomain}.${domain}`;
|
|
2912
2997
|
clausesArray.push({
|
|
2913
2998
|
to: getConfig(network.type).vetDomainsReverseRegistrarAddress,
|
|
2914
2999
|
value: "0x0",
|
|
@@ -2920,88 +3005,190 @@ var useClaimVeWorldSubdomain = ({
|
|
|
2920
3005
|
)}`,
|
|
2921
3006
|
abi: ReverseRegistrarInterface.getFunction("setName")
|
|
2922
3007
|
});
|
|
2923
|
-
if (
|
|
3008
|
+
if (alreadyOwned) {
|
|
2924
3009
|
clausesArray.push({
|
|
2925
|
-
to: getConfig(network.type).
|
|
3010
|
+
to: getConfig(network.type).vetDomainsReverseRegistrarAddress,
|
|
2926
3011
|
value: "0x0",
|
|
2927
|
-
data:
|
|
2928
|
-
|
|
2929
|
-
getConfig(network.type).vetDomainsPublicResolverAddress
|
|
3012
|
+
data: ReverseRegistrarInterface.encodeFunctionData("setName", [
|
|
3013
|
+
fullDomain
|
|
2930
3014
|
]),
|
|
2931
|
-
comment: `
|
|
2932
|
-
abi:
|
|
3015
|
+
comment: `Setting your VeChain nickname to ${fullDomain}`,
|
|
3016
|
+
abi: ReverseRegistrarInterface.getFunction("setName")
|
|
2933
3017
|
});
|
|
3018
|
+
const PublicResolverInterface = new ethers.Interface([
|
|
3019
|
+
"function setAddr(bytes32 node, address addr)"
|
|
3020
|
+
]);
|
|
3021
|
+
const domainNode = ethers.namehash(fullDomain);
|
|
3022
|
+
clausesArray.push({
|
|
3023
|
+
to: getConfig(network.type).vetDomainsPublicResolverAddress,
|
|
3024
|
+
value: "0x0",
|
|
3025
|
+
data: PublicResolverInterface.encodeFunctionData("setAddr", [
|
|
3026
|
+
domainNode,
|
|
3027
|
+
account?.address || ""
|
|
3028
|
+
]),
|
|
3029
|
+
comment: `Setting the address for ${fullDomain} to ${humanAddress(
|
|
3030
|
+
account?.address ?? "",
|
|
3031
|
+
4,
|
|
3032
|
+
4
|
|
3033
|
+
)}`,
|
|
3034
|
+
abi: PublicResolverInterface.getFunction("setAddr")
|
|
3035
|
+
});
|
|
3036
|
+
} else {
|
|
3037
|
+
if (isVeWorldDomain(domain)) {
|
|
3038
|
+
clausesArray.push({
|
|
3039
|
+
to: getConfig(network.type).veWorldSubdomainClaimerContractAddress,
|
|
3040
|
+
value: "0x0",
|
|
3041
|
+
data: SubdomainClaimerInterface.encodeFunctionData(
|
|
3042
|
+
"claim",
|
|
3043
|
+
[
|
|
3044
|
+
subdomain,
|
|
3045
|
+
getConfig(network.type).vetDomainsPublicResolverAddress
|
|
3046
|
+
]
|
|
3047
|
+
),
|
|
3048
|
+
comment: `Claim VeChain subdomain: ${subdomain}.${domain}`,
|
|
3049
|
+
abi: SubdomainClaimerInterface.getFunction("claim")
|
|
3050
|
+
});
|
|
3051
|
+
clausesArray.push({
|
|
3052
|
+
to: getConfig(network.type).vetDomainsReverseRegistrarAddress,
|
|
3053
|
+
value: "0x0",
|
|
3054
|
+
data: ReverseRegistrarInterface.encodeFunctionData(
|
|
3055
|
+
"setName",
|
|
3056
|
+
[subdomain + "." + domain]
|
|
3057
|
+
),
|
|
3058
|
+
comment: `Set ${subdomain}.${domain} as the VeChain nickname of the account ${humanAddress(
|
|
3059
|
+
account?.address ?? "",
|
|
3060
|
+
4,
|
|
3061
|
+
4
|
|
3062
|
+
)}`,
|
|
3063
|
+
abi: ReverseRegistrarInterface.getFunction("setName")
|
|
3064
|
+
});
|
|
3065
|
+
} else {
|
|
3066
|
+
throw new Error(
|
|
3067
|
+
"This hook only supports .veworld.vet subdomains"
|
|
3068
|
+
);
|
|
3069
|
+
}
|
|
2934
3070
|
}
|
|
2935
|
-
clausesArray.push({
|
|
2936
|
-
to: getConfig(network.type).vetDomainsReverseRegistrarAddress,
|
|
2937
|
-
value: "0x0",
|
|
2938
|
-
data: ReverseRegistrarInterface.encodeFunctionData("setName", [
|
|
2939
|
-
subdomain + "." + domain
|
|
2940
|
-
]),
|
|
2941
|
-
comment: `Set ${subdomain}.${domain} as the VeChain nickname of the account ${humanAddress(
|
|
2942
|
-
account?.address ?? "",
|
|
2943
|
-
4,
|
|
2944
|
-
4
|
|
2945
|
-
)}`,
|
|
2946
|
-
abi: ReverseRegistrarInterface.getFunction("setName")
|
|
2947
|
-
});
|
|
2948
3071
|
return clausesArray;
|
|
2949
|
-
}, [subdomain, domain, account?.address,
|
|
3072
|
+
}, [subdomain, domain, alreadyOwned, account?.address, network.type]);
|
|
2950
3073
|
const handleOnSuccess = useCallback(async () => {
|
|
2951
|
-
|
|
2952
|
-
|
|
2953
|
-
|
|
2954
|
-
|
|
2955
|
-
|
|
2956
|
-
|
|
2957
|
-
|
|
2958
|
-
|
|
2959
|
-
|
|
2960
|
-
|
|
2961
|
-
|
|
2962
|
-
|
|
2963
|
-
|
|
2964
|
-
|
|
2965
|
-
|
|
2966
|
-
|
|
2967
|
-
|
|
2968
|
-
|
|
2969
|
-
|
|
2970
|
-
|
|
2971
|
-
|
|
2972
|
-
|
|
2973
|
-
|
|
2974
|
-
|
|
2975
|
-
|
|
2976
|
-
|
|
2977
|
-
|
|
2978
|
-
|
|
2979
|
-
|
|
2980
|
-
|
|
2981
|
-
|
|
2982
|
-
|
|
2983
|
-
|
|
2984
|
-
|
|
2985
|
-
|
|
2986
|
-
|
|
2987
|
-
|
|
2988
|
-
|
|
2989
|
-
|
|
3074
|
+
const fullDomain = `${subdomain}.${domain}`;
|
|
3075
|
+
const address = account?.address ?? "";
|
|
3076
|
+
await invalidateAndRefetchDomainQueries(
|
|
3077
|
+
queryClient,
|
|
3078
|
+
address,
|
|
3079
|
+
fullDomain,
|
|
3080
|
+
subdomain,
|
|
3081
|
+
domain,
|
|
3082
|
+
network.type
|
|
3083
|
+
);
|
|
3084
|
+
refreshMetadata();
|
|
3085
|
+
onSuccess?.();
|
|
3086
|
+
}, [
|
|
3087
|
+
onSuccess,
|
|
3088
|
+
subdomain,
|
|
3089
|
+
domain,
|
|
3090
|
+
queryClient,
|
|
3091
|
+
account,
|
|
3092
|
+
network.type,
|
|
3093
|
+
refreshMetadata
|
|
3094
|
+
]);
|
|
3095
|
+
const result = useSendTransaction({
|
|
3096
|
+
signerAccountAddress: account?.address ?? "",
|
|
3097
|
+
privyUIOptions: {
|
|
3098
|
+
title: "Sign to claim your VeChain nickname",
|
|
3099
|
+
description: `Claim ${subdomain}.${domain} as your VeChain nickname`,
|
|
3100
|
+
buttonText: "Sign to continue"
|
|
3101
|
+
},
|
|
3102
|
+
onTxConfirmed: handleOnSuccess,
|
|
3103
|
+
onTxFailedOrCancelled: onError
|
|
3104
|
+
});
|
|
3105
|
+
return {
|
|
3106
|
+
...result,
|
|
3107
|
+
sendTransaction: async () => {
|
|
3108
|
+
return result.sendTransaction(await buildClauses());
|
|
3109
|
+
}
|
|
3110
|
+
};
|
|
3111
|
+
};
|
|
3112
|
+
var isVeWorldDomain = (domain) => {
|
|
3113
|
+
return domain.endsWith("veworld.vet");
|
|
3114
|
+
};
|
|
3115
|
+
var ReverseRegistrarInterface2 = IReverseRegistrar__factory.createInterface();
|
|
3116
|
+
var useClaimVetDomain = ({
|
|
3117
|
+
domain,
|
|
3118
|
+
onSuccess,
|
|
3119
|
+
onError,
|
|
3120
|
+
alreadyOwned = false
|
|
3121
|
+
}) => {
|
|
3122
|
+
const queryClient = useQueryClient();
|
|
3123
|
+
const { account } = useWallet();
|
|
3124
|
+
const { network } = useVeChainKitConfig();
|
|
3125
|
+
const { refresh: refreshMetadata } = useRefreshMetadata(
|
|
3126
|
+
domain,
|
|
3127
|
+
account?.address ?? ""
|
|
3128
|
+
);
|
|
3129
|
+
const buildClauses = useCallback(async () => {
|
|
3130
|
+
const clausesArray = [];
|
|
3131
|
+
if (!domain) throw new Error("Invalid domain");
|
|
3132
|
+
const fullDomain = `${domain}.vet`;
|
|
3133
|
+
if (alreadyOwned) {
|
|
3134
|
+
clausesArray.push({
|
|
3135
|
+
to: getConfig(network.type).vetDomainsReverseRegistrarAddress,
|
|
3136
|
+
value: "0x0",
|
|
3137
|
+
data: ReverseRegistrarInterface2.encodeFunctionData("setName", [
|
|
3138
|
+
fullDomain
|
|
3139
|
+
]),
|
|
3140
|
+
comment: `Setting your VeChain nickname to ${fullDomain}`,
|
|
3141
|
+
abi: ReverseRegistrarInterface2.getFunction("setName")
|
|
2990
3142
|
});
|
|
2991
|
-
|
|
2992
|
-
|
|
3143
|
+
const PublicResolverInterface = new ethers.Interface([
|
|
3144
|
+
"function setAddr(bytes32 node, address addr)"
|
|
3145
|
+
]);
|
|
3146
|
+
const domainNode = ethers.namehash(fullDomain);
|
|
3147
|
+
clausesArray.push({
|
|
3148
|
+
to: getConfig(network.type).vetDomainsPublicResolverAddress,
|
|
3149
|
+
value: "0x0",
|
|
3150
|
+
data: PublicResolverInterface.encodeFunctionData("setAddr", [
|
|
3151
|
+
domainNode,
|
|
3152
|
+
account?.address || ""
|
|
3153
|
+
]),
|
|
3154
|
+
comment: `Setting the address for ${fullDomain} to ${humanAddress(
|
|
2993
3155
|
account?.address ?? "",
|
|
2994
|
-
|
|
2995
|
-
|
|
3156
|
+
4,
|
|
3157
|
+
4
|
|
3158
|
+
)}`,
|
|
3159
|
+
abi: PublicResolverInterface.getFunction("setAddr")
|
|
2996
3160
|
});
|
|
2997
|
-
}
|
|
3161
|
+
} else {
|
|
3162
|
+
throw new Error("Primary .vet domains are not supported yet");
|
|
3163
|
+
}
|
|
3164
|
+
return clausesArray;
|
|
3165
|
+
}, [domain, alreadyOwned, account?.address, network.type]);
|
|
3166
|
+
const handleOnSuccess = useCallback(async () => {
|
|
3167
|
+
const address = account?.address ?? "";
|
|
3168
|
+
await invalidateAndRefetchDomainQueries(
|
|
3169
|
+
queryClient,
|
|
3170
|
+
address,
|
|
3171
|
+
domain,
|
|
3172
|
+
"",
|
|
3173
|
+
// No subdomain for primary domains
|
|
3174
|
+
domain.endsWith(".vet") ? domain : `${domain}.vet`,
|
|
3175
|
+
network.type
|
|
3176
|
+
);
|
|
3177
|
+
refreshMetadata();
|
|
2998
3178
|
onSuccess?.();
|
|
2999
|
-
}, [
|
|
3179
|
+
}, [
|
|
3180
|
+
onSuccess,
|
|
3181
|
+
domain,
|
|
3182
|
+
queryClient,
|
|
3183
|
+
account,
|
|
3184
|
+
network.type,
|
|
3185
|
+
refreshMetadata
|
|
3186
|
+
]);
|
|
3000
3187
|
const result = useSendTransaction({
|
|
3001
3188
|
signerAccountAddress: account?.address ?? "",
|
|
3002
3189
|
privyUIOptions: {
|
|
3003
3190
|
title: "Sign to claim your VeChain nickname",
|
|
3004
|
-
description: `Claim ${
|
|
3191
|
+
description: `Claim ${domain} as your VeChain nickname`,
|
|
3005
3192
|
buttonText: "Sign to continue"
|
|
3006
3193
|
},
|
|
3007
3194
|
onTxConfirmed: handleOnSuccess,
|
|
@@ -3076,173 +3263,48 @@ var useGetDomainsOfAddress = (address, parentDomain) => {
|
|
|
3076
3263
|
enabled: !!address && !!network.type
|
|
3077
3264
|
});
|
|
3078
3265
|
};
|
|
3079
|
-
var
|
|
3080
|
-
"function resolver(bytes32 node) returns (address resolverAddress)",
|
|
3081
|
-
"function text(bytes32 node, string key) returns (string avatar)"
|
|
3082
|
-
]);
|
|
3083
|
-
var erc721Interface = new Interface([
|
|
3084
|
-
"function tokenURI(uint256 tokenId) view returns (string)",
|
|
3085
|
-
"function uri(uint256 id) view returns (string)"
|
|
3086
|
-
]);
|
|
3087
|
-
var getAvatar = async (networkType, nodeUrl, name) => {
|
|
3266
|
+
var getAvatar = async (name, networkType) => {
|
|
3088
3267
|
if (!name) throw new Error("Name is required");
|
|
3089
|
-
const node = namehash(name);
|
|
3090
3268
|
try {
|
|
3091
|
-
const
|
|
3092
|
-
|
|
3093
|
-
headers: {
|
|
3094
|
-
"content-type": "application/json"
|
|
3095
|
-
},
|
|
3096
|
-
body: JSON.stringify({
|
|
3097
|
-
clauses: [
|
|
3098
|
-
{
|
|
3099
|
-
to: getConfig(networkType).vetDomainsContractAddress,
|
|
3100
|
-
data: nameInterface.encodeFunctionData("resolver", [
|
|
3101
|
-
node
|
|
3102
|
-
])
|
|
3103
|
-
}
|
|
3104
|
-
]
|
|
3105
|
-
})
|
|
3106
|
-
});
|
|
3107
|
-
const [{ data: resolverData, reverted: noResolver }] = await resolverResponse.json();
|
|
3108
|
-
if (noResolver) {
|
|
3109
|
-
return null;
|
|
3110
|
-
}
|
|
3111
|
-
const { resolverAddress } = nameInterface.decodeFunctionResult(
|
|
3112
|
-
"resolver",
|
|
3113
|
-
resolverData
|
|
3269
|
+
const response = await fetch(
|
|
3270
|
+
`${getConfig(networkType).vetDomainAvatarUrl}/${name}`
|
|
3114
3271
|
);
|
|
3115
|
-
|
|
3116
|
-
method: "POST",
|
|
3117
|
-
headers: {
|
|
3118
|
-
"content-type": "application/json"
|
|
3119
|
-
},
|
|
3120
|
-
body: JSON.stringify({
|
|
3121
|
-
clauses: [
|
|
3122
|
-
{
|
|
3123
|
-
to: resolverAddress,
|
|
3124
|
-
data: nameInterface.encodeFunctionData("text", [
|
|
3125
|
-
node,
|
|
3126
|
-
"avatar"
|
|
3127
|
-
])
|
|
3128
|
-
}
|
|
3129
|
-
]
|
|
3130
|
-
})
|
|
3131
|
-
});
|
|
3132
|
-
const [{ data: lookupData, reverted: noLookup }] = await avatarResponse.json();
|
|
3133
|
-
if (noLookup || lookupData === "0x") {
|
|
3134
|
-
return null;
|
|
3135
|
-
}
|
|
3136
|
-
try {
|
|
3137
|
-
const { avatar } = nameInterface.decodeFunctionResult(
|
|
3138
|
-
"text",
|
|
3139
|
-
lookupData
|
|
3140
|
-
);
|
|
3141
|
-
return avatar === "" ? null : avatar;
|
|
3142
|
-
} catch (decodeError) {
|
|
3143
|
-
console.error("Failed to decode avatar data:", decodeError);
|
|
3272
|
+
if (!response.ok) {
|
|
3144
3273
|
return null;
|
|
3145
3274
|
}
|
|
3275
|
+
const blob = await response.blob();
|
|
3276
|
+
return new Promise((resolve) => {
|
|
3277
|
+
const reader = new FileReader();
|
|
3278
|
+
reader.readAsDataURL(blob);
|
|
3279
|
+
reader.onloadend = () => {
|
|
3280
|
+
resolve(reader.result);
|
|
3281
|
+
};
|
|
3282
|
+
});
|
|
3146
3283
|
} catch (error) {
|
|
3147
3284
|
console.error("Error fetching avatar:", error);
|
|
3148
|
-
|
|
3285
|
+
return null;
|
|
3149
3286
|
}
|
|
3150
3287
|
};
|
|
3151
|
-
var getAvatarQueryKey = (name) => [
|
|
3288
|
+
var getAvatarQueryKey = (name, networkType) => [
|
|
3152
3289
|
"VECHAIN_KIT",
|
|
3153
3290
|
"VET_DOMAINS",
|
|
3154
3291
|
"AVATAR",
|
|
3155
|
-
name
|
|
3292
|
+
name,
|
|
3293
|
+
networkType
|
|
3156
3294
|
];
|
|
3157
|
-
async function parseAvatarRecord(record, networkType, nodeUrl) {
|
|
3158
|
-
try {
|
|
3159
|
-
if (record.startsWith("http") || record.startsWith("ipfs://") || record.startsWith("ar://")) {
|
|
3160
|
-
return convertUriToUrl(record, networkType) || null;
|
|
3161
|
-
}
|
|
3162
|
-
const match = record.match(
|
|
3163
|
-
/eip155:(\d+)\/(?:erc721|erc1155):([^/]+)\/(\d+)/
|
|
3164
|
-
);
|
|
3165
|
-
if (match) {
|
|
3166
|
-
const [, chainId, contractAddress, tokenId] = match;
|
|
3167
|
-
const isErc1155 = record.includes("erc1155");
|
|
3168
|
-
if (!chainId || !contractAddress || tokenId === void 0) {
|
|
3169
|
-
return null;
|
|
3170
|
-
}
|
|
3171
|
-
const clauses = [
|
|
3172
|
-
{
|
|
3173
|
-
to: contractAddress,
|
|
3174
|
-
data: erc721Interface.encodeFunctionData(
|
|
3175
|
-
isErc1155 ? "uri" : "tokenURI",
|
|
3176
|
-
[BigInt(tokenId)]
|
|
3177
|
-
)
|
|
3178
|
-
}
|
|
3179
|
-
];
|
|
3180
|
-
const [{ data, reverted }] = await fetch(`${nodeUrl}/accounts/*`, {
|
|
3181
|
-
method: "POST",
|
|
3182
|
-
headers: {
|
|
3183
|
-
"content-type": "application/json"
|
|
3184
|
-
},
|
|
3185
|
-
body: JSON.stringify({ clauses })
|
|
3186
|
-
}).then((res) => res.json());
|
|
3187
|
-
if (reverted) {
|
|
3188
|
-
console.error("Failed to fetch tokenURI");
|
|
3189
|
-
return null;
|
|
3190
|
-
}
|
|
3191
|
-
let tokenUri = "";
|
|
3192
|
-
try {
|
|
3193
|
-
tokenUri = erc721Interface.decodeFunctionResult(
|
|
3194
|
-
isErc1155 ? "uri" : "tokenURI",
|
|
3195
|
-
data
|
|
3196
|
-
)[0];
|
|
3197
|
-
} catch (e) {
|
|
3198
|
-
console.error("Failed to decode avatar data:", e);
|
|
3199
|
-
tokenUri = toUtf8String(data);
|
|
3200
|
-
}
|
|
3201
|
-
tokenUri = convertUriToUrl(tokenUri, networkType) || tokenUri;
|
|
3202
|
-
if (isErc1155) {
|
|
3203
|
-
tokenUri = tokenUri.replace(
|
|
3204
|
-
"{id}",
|
|
3205
|
-
zeroPadValue(toBeHex(BigInt(tokenId)), 32).slice(2)
|
|
3206
|
-
);
|
|
3207
|
-
}
|
|
3208
|
-
const metadataResponse = await fetch(tokenUri);
|
|
3209
|
-
if (!metadataResponse.ok) {
|
|
3210
|
-
console.error("Failed to fetch metadata");
|
|
3211
|
-
return null;
|
|
3212
|
-
}
|
|
3213
|
-
const metadata = await metadataResponse.json();
|
|
3214
|
-
const imageUrl = metadata.image || metadata.image_url || metadata.image_data;
|
|
3215
|
-
if (!imageUrl) {
|
|
3216
|
-
console.error("No image URL in metadata");
|
|
3217
|
-
return null;
|
|
3218
|
-
}
|
|
3219
|
-
return convertUriToUrl(imageUrl, networkType) || imageUrl;
|
|
3220
|
-
}
|
|
3221
|
-
return null;
|
|
3222
|
-
} catch (error) {
|
|
3223
|
-
console.error("Error parsing avatar record:", error);
|
|
3224
|
-
return null;
|
|
3225
|
-
}
|
|
3226
|
-
}
|
|
3227
3295
|
var useGetAvatar = (name) => {
|
|
3228
3296
|
const { network } = useVeChainKitConfig();
|
|
3229
|
-
const nodeUrl = network.nodeUrl ?? getConfig(network.type).nodeUrl;
|
|
3230
3297
|
const avatarQuery = useQuery({
|
|
3231
|
-
queryKey: getAvatarQueryKey(name ?? ""),
|
|
3298
|
+
queryKey: getAvatarQueryKey(name ?? "", network.type),
|
|
3232
3299
|
queryFn: async () => {
|
|
3233
3300
|
if (!name) return null;
|
|
3234
|
-
|
|
3235
|
-
if (!avatarRecord) return null;
|
|
3236
|
-
return parseAvatarRecord(avatarRecord, network.type, nodeUrl);
|
|
3301
|
+
return getAvatar(name, network.type);
|
|
3237
3302
|
},
|
|
3238
|
-
enabled: !!name && !!
|
|
3239
|
-
// Use the same caching strategy as the avatar query
|
|
3240
|
-
staleTime: 5 * 60 * 1e3
|
|
3241
|
-
// 5 minutes
|
|
3303
|
+
enabled: !!name && !!network.type
|
|
3242
3304
|
});
|
|
3243
3305
|
return avatarQuery;
|
|
3244
3306
|
};
|
|
3245
|
-
var
|
|
3307
|
+
var nameInterface = new Interface([
|
|
3246
3308
|
"function resolver(bytes32 node) returns (address resolverAddress)",
|
|
3247
3309
|
"function text(bytes32 node, string key) view returns (string)"
|
|
3248
3310
|
]);
|
|
@@ -3259,7 +3321,7 @@ var getTextRecords = async (nodeUrl, network, domain) => {
|
|
|
3259
3321
|
clauses: [
|
|
3260
3322
|
{
|
|
3261
3323
|
to: getConfig(network).vetDomainsContractAddress,
|
|
3262
|
-
data:
|
|
3324
|
+
data: nameInterface.encodeFunctionData("resolver", [
|
|
3263
3325
|
node
|
|
3264
3326
|
])
|
|
3265
3327
|
}
|
|
@@ -3270,7 +3332,7 @@ var getTextRecords = async (nodeUrl, network, domain) => {
|
|
|
3270
3332
|
if (noResolver) {
|
|
3271
3333
|
return {};
|
|
3272
3334
|
}
|
|
3273
|
-
const { resolverAddress } =
|
|
3335
|
+
const { resolverAddress } = nameInterface.decodeFunctionResult(
|
|
3274
3336
|
"resolver",
|
|
3275
3337
|
resolverData
|
|
3276
3338
|
);
|
|
@@ -3282,7 +3344,7 @@ var getTextRecords = async (nodeUrl, network, domain) => {
|
|
|
3282
3344
|
body: JSON.stringify({
|
|
3283
3345
|
clauses: ENS_TEXT_RECORDS.map((key) => ({
|
|
3284
3346
|
to: resolverAddress,
|
|
3285
|
-
data:
|
|
3347
|
+
data: nameInterface.encodeFunctionData("text", [node, key])
|
|
3286
3348
|
}))
|
|
3287
3349
|
})
|
|
3288
3350
|
});
|
|
@@ -3291,7 +3353,7 @@ var getTextRecords = async (nodeUrl, network, domain) => {
|
|
|
3291
3353
|
(acc, { data, reverted }, index) => {
|
|
3292
3354
|
if (!reverted && data && data !== "0x") {
|
|
3293
3355
|
try {
|
|
3294
|
-
const value =
|
|
3356
|
+
const value = nameInterface.decodeFunctionResult(
|
|
3295
3357
|
"text",
|
|
3296
3358
|
data
|
|
3297
3359
|
)[0];
|
|
@@ -3548,7 +3610,7 @@ var useSendTransaction = ({
|
|
|
3548
3610
|
};
|
|
3549
3611
|
|
|
3550
3612
|
// src/hooks/api/vetDomains/useUpdateTextRecord.ts
|
|
3551
|
-
var
|
|
3613
|
+
var nameInterface2 = new Interface([
|
|
3552
3614
|
"function resolver(bytes32 node) returns (address resolverAddress)",
|
|
3553
3615
|
"function setText(bytes32 node, string key, string value) external"
|
|
3554
3616
|
]);
|
|
@@ -3568,7 +3630,7 @@ var useUpdateTextRecord = ({
|
|
|
3568
3630
|
const node = namehash(domain);
|
|
3569
3631
|
clauses.push({
|
|
3570
3632
|
to: resolverAddress,
|
|
3571
|
-
data:
|
|
3633
|
+
data: nameInterface2.encodeFunctionData("setText", [
|
|
3572
3634
|
node,
|
|
3573
3635
|
key,
|
|
3574
3636
|
value
|
|
@@ -3577,95 +3639,305 @@ var useUpdateTextRecord = ({
|
|
|
3577
3639
|
comment: `Update ${key} record`
|
|
3578
3640
|
});
|
|
3579
3641
|
}
|
|
3580
|
-
return clauses;
|
|
3642
|
+
return clauses;
|
|
3643
|
+
},
|
|
3644
|
+
[resolverAddress]
|
|
3645
|
+
);
|
|
3646
|
+
const result = useSendTransaction({
|
|
3647
|
+
signerAccountAddress,
|
|
3648
|
+
onTxConfirmed: onSuccess,
|
|
3649
|
+
onTxFailedOrCancelled: async () => {
|
|
3650
|
+
onError?.();
|
|
3651
|
+
},
|
|
3652
|
+
privyUIOptions: {
|
|
3653
|
+
title: "Update Profile Information",
|
|
3654
|
+
description: "Update the profile information associated with your domain",
|
|
3655
|
+
buttonText: "Sign to continue"
|
|
3656
|
+
}
|
|
3657
|
+
});
|
|
3658
|
+
return {
|
|
3659
|
+
...result,
|
|
3660
|
+
sendTransaction: async (params) => {
|
|
3661
|
+
return result.sendTransaction(await buildClauses(params));
|
|
3662
|
+
}
|
|
3663
|
+
};
|
|
3664
|
+
};
|
|
3665
|
+
var nameInterface3 = new Interface([
|
|
3666
|
+
"function resolver(bytes32 node) returns (address resolverAddress)"
|
|
3667
|
+
]);
|
|
3668
|
+
var getResolverAddress = async (nodeUrl, network, domain) => {
|
|
3669
|
+
if (!domain) throw new Error("Domain is required");
|
|
3670
|
+
const node = namehash(domain);
|
|
3671
|
+
const resolverResponse = await fetch(`${nodeUrl}/accounts/*`, {
|
|
3672
|
+
method: "POST",
|
|
3673
|
+
headers: { "content-type": "application/json" },
|
|
3674
|
+
body: JSON.stringify({
|
|
3675
|
+
clauses: [
|
|
3676
|
+
{
|
|
3677
|
+
to: getConfig(network).vetDomainsContractAddress,
|
|
3678
|
+
data: nameInterface3.encodeFunctionData("resolver", [node])
|
|
3679
|
+
}
|
|
3680
|
+
]
|
|
3681
|
+
})
|
|
3682
|
+
});
|
|
3683
|
+
const [{ data: resolverData, reverted: noResolver }] = await resolverResponse.json();
|
|
3684
|
+
if (noResolver) throw new Error("Failed to get resolver address");
|
|
3685
|
+
const { resolverAddress } = nameInterface3.decodeFunctionResult(
|
|
3686
|
+
"resolver",
|
|
3687
|
+
resolverData
|
|
3688
|
+
);
|
|
3689
|
+
return resolverAddress;
|
|
3690
|
+
};
|
|
3691
|
+
var getResolverAddressQueryKey = (domain) => [
|
|
3692
|
+
"VECHAIN_KIT",
|
|
3693
|
+
"RESOLVER_ADDRESS",
|
|
3694
|
+
domain
|
|
3695
|
+
];
|
|
3696
|
+
var useGetResolverAddress = (domain) => {
|
|
3697
|
+
const { network } = useVeChainKitConfig();
|
|
3698
|
+
const nodeUrl = network.nodeUrl ?? getConfig(network.type).nodeUrl;
|
|
3699
|
+
return useQuery({
|
|
3700
|
+
queryKey: getResolverAddressQueryKey(domain),
|
|
3701
|
+
queryFn: () => getResolverAddress(nodeUrl, network.type, domain),
|
|
3702
|
+
enabled: !!domain && !!nodeUrl && !!network.type
|
|
3703
|
+
});
|
|
3704
|
+
};
|
|
3705
|
+
var getAvatarOfAddressQueryKey = (address) => [
|
|
3706
|
+
"VECHAIN_KIT",
|
|
3707
|
+
"VET_DOMAINS",
|
|
3708
|
+
"AVATAR_OF_ADDRESS",
|
|
3709
|
+
address
|
|
3710
|
+
];
|
|
3711
|
+
var useGetAvatarOfAddress = (address) => {
|
|
3712
|
+
const domainsQuery = useVechainDomain(address);
|
|
3713
|
+
const primaryDomain = domainsQuery.data?.domain;
|
|
3714
|
+
const avatarQuery = useGetAvatar(primaryDomain ?? "");
|
|
3715
|
+
return useQuery({
|
|
3716
|
+
queryKey: getAvatarOfAddressQueryKey(address),
|
|
3717
|
+
queryFn: async () => {
|
|
3718
|
+
if (!address) return getPicassoImage(address ?? "");
|
|
3719
|
+
const domains = await domainsQuery.refetch();
|
|
3720
|
+
if (!domains.data?.domain) return getPicassoImage(address);
|
|
3721
|
+
if (domains.data.domain && avatarQuery.data)
|
|
3722
|
+
return avatarQuery.data;
|
|
3723
|
+
return getPicassoImage(address);
|
|
3724
|
+
},
|
|
3725
|
+
enabled: !!address && domainsQuery.isSuccess && (primaryDomain ? avatarQuery.isSuccess : true)
|
|
3726
|
+
});
|
|
3727
|
+
};
|
|
3728
|
+
var nameInterface4 = new Interface([
|
|
3729
|
+
"function resolver(bytes32 node) returns (address resolverAddress)",
|
|
3730
|
+
"function text(bytes32 node, string key) returns (string avatar)"
|
|
3731
|
+
]);
|
|
3732
|
+
var erc721Interface = new Interface([
|
|
3733
|
+
"function tokenURI(uint256 tokenId) view returns (string)",
|
|
3734
|
+
"function uri(uint256 id) view returns (string)"
|
|
3735
|
+
]);
|
|
3736
|
+
var getAvatarLegacy = async (networkType, nodeUrl, name) => {
|
|
3737
|
+
if (!name) throw new Error("Name is required");
|
|
3738
|
+
const node = namehash(name);
|
|
3739
|
+
try {
|
|
3740
|
+
const resolverResponse = await fetch(`${nodeUrl}/accounts/*`, {
|
|
3741
|
+
method: "POST",
|
|
3742
|
+
headers: {
|
|
3743
|
+
"content-type": "application/json"
|
|
3744
|
+
},
|
|
3745
|
+
body: JSON.stringify({
|
|
3746
|
+
clauses: [
|
|
3747
|
+
{
|
|
3748
|
+
to: getConfig(networkType).vetDomainsContractAddress,
|
|
3749
|
+
data: nameInterface4.encodeFunctionData("resolver", [
|
|
3750
|
+
node
|
|
3751
|
+
])
|
|
3752
|
+
}
|
|
3753
|
+
]
|
|
3754
|
+
})
|
|
3755
|
+
});
|
|
3756
|
+
const [{ data: resolverData, reverted: noResolver }] = await resolverResponse.json();
|
|
3757
|
+
if (noResolver) {
|
|
3758
|
+
return null;
|
|
3759
|
+
}
|
|
3760
|
+
const { resolverAddress } = nameInterface4.decodeFunctionResult(
|
|
3761
|
+
"resolver",
|
|
3762
|
+
resolverData
|
|
3763
|
+
);
|
|
3764
|
+
const avatarResponse = await fetch(`${nodeUrl}/accounts/*`, {
|
|
3765
|
+
method: "POST",
|
|
3766
|
+
headers: {
|
|
3767
|
+
"content-type": "application/json"
|
|
3768
|
+
},
|
|
3769
|
+
body: JSON.stringify({
|
|
3770
|
+
clauses: [
|
|
3771
|
+
{
|
|
3772
|
+
to: resolverAddress,
|
|
3773
|
+
data: nameInterface4.encodeFunctionData("text", [
|
|
3774
|
+
node,
|
|
3775
|
+
"avatar"
|
|
3776
|
+
])
|
|
3777
|
+
}
|
|
3778
|
+
]
|
|
3779
|
+
})
|
|
3780
|
+
});
|
|
3781
|
+
const [{ data: lookupData, reverted: noLookup }] = await avatarResponse.json();
|
|
3782
|
+
if (noLookup || lookupData === "0x") {
|
|
3783
|
+
return null;
|
|
3784
|
+
}
|
|
3785
|
+
try {
|
|
3786
|
+
const { avatar } = nameInterface4.decodeFunctionResult(
|
|
3787
|
+
"text",
|
|
3788
|
+
lookupData
|
|
3789
|
+
);
|
|
3790
|
+
const avatarRecord = avatar === "" ? null : avatar;
|
|
3791
|
+
if (!avatarRecord) return null;
|
|
3792
|
+
return parseAvatarRecord(avatarRecord, networkType, nodeUrl);
|
|
3793
|
+
} catch (decodeError) {
|
|
3794
|
+
console.error("Failed to decode avatar data:", decodeError);
|
|
3795
|
+
return null;
|
|
3796
|
+
}
|
|
3797
|
+
} catch (error) {
|
|
3798
|
+
console.error("Error fetching avatar:", error);
|
|
3799
|
+
throw error;
|
|
3800
|
+
}
|
|
3801
|
+
};
|
|
3802
|
+
var getAvatarLegacyQueryKey = (name, networkType) => ["VECHAIN_KIT", "VET_DOMAINS", "AVATAR", "LEGACY", name, networkType];
|
|
3803
|
+
async function parseAvatarRecord(record, networkType, nodeUrl) {
|
|
3804
|
+
try {
|
|
3805
|
+
if (record.startsWith("http") || record.startsWith("ipfs://") || record.startsWith("ar://")) {
|
|
3806
|
+
return convertUriToUrl(record, networkType) || null;
|
|
3807
|
+
}
|
|
3808
|
+
const match = record.match(
|
|
3809
|
+
/eip155:(\d+)\/(?:erc721|erc1155):([^/]+)\/(\d+)/
|
|
3810
|
+
);
|
|
3811
|
+
if (match) {
|
|
3812
|
+
const [, chainId, contractAddress, tokenId] = match;
|
|
3813
|
+
const isErc1155 = record.includes("erc1155");
|
|
3814
|
+
if (!chainId || !contractAddress || tokenId === void 0) {
|
|
3815
|
+
return null;
|
|
3816
|
+
}
|
|
3817
|
+
const clauses = [
|
|
3818
|
+
{
|
|
3819
|
+
to: contractAddress,
|
|
3820
|
+
data: erc721Interface.encodeFunctionData(
|
|
3821
|
+
isErc1155 ? "uri" : "tokenURI",
|
|
3822
|
+
[BigInt(tokenId)]
|
|
3823
|
+
)
|
|
3824
|
+
}
|
|
3825
|
+
];
|
|
3826
|
+
const [{ data, reverted }] = await fetch(`${nodeUrl}/accounts/*`, {
|
|
3827
|
+
method: "POST",
|
|
3828
|
+
headers: {
|
|
3829
|
+
"content-type": "application/json"
|
|
3830
|
+
},
|
|
3831
|
+
body: JSON.stringify({ clauses })
|
|
3832
|
+
}).then((res) => res.json());
|
|
3833
|
+
if (reverted) {
|
|
3834
|
+
console.error("Failed to fetch tokenURI");
|
|
3835
|
+
return null;
|
|
3836
|
+
}
|
|
3837
|
+
let tokenUri = "";
|
|
3838
|
+
try {
|
|
3839
|
+
tokenUri = erc721Interface.decodeFunctionResult(
|
|
3840
|
+
isErc1155 ? "uri" : "tokenURI",
|
|
3841
|
+
data
|
|
3842
|
+
)[0];
|
|
3843
|
+
} catch (e) {
|
|
3844
|
+
console.error("Failed to decode avatar data:", e);
|
|
3845
|
+
tokenUri = toUtf8String(data);
|
|
3846
|
+
}
|
|
3847
|
+
tokenUri = convertUriToUrl(tokenUri, networkType) || tokenUri;
|
|
3848
|
+
if (isErc1155) {
|
|
3849
|
+
tokenUri = tokenUri.replace(
|
|
3850
|
+
"{id}",
|
|
3851
|
+
zeroPadValue(toBeHex(BigInt(tokenId)), 32).slice(2)
|
|
3852
|
+
);
|
|
3853
|
+
}
|
|
3854
|
+
const metadataResponse = await fetch(tokenUri);
|
|
3855
|
+
if (!metadataResponse.ok) {
|
|
3856
|
+
console.error("Failed to fetch metadata");
|
|
3857
|
+
return null;
|
|
3858
|
+
}
|
|
3859
|
+
const metadata = await metadataResponse.json();
|
|
3860
|
+
const imageUrl = metadata.image || metadata.image_url || metadata.image_data;
|
|
3861
|
+
if (!imageUrl) {
|
|
3862
|
+
console.error("No image URL in metadata");
|
|
3863
|
+
return null;
|
|
3864
|
+
}
|
|
3865
|
+
return convertUriToUrl(imageUrl, networkType) || imageUrl;
|
|
3866
|
+
}
|
|
3867
|
+
return null;
|
|
3868
|
+
} catch (error) {
|
|
3869
|
+
console.error("Error parsing avatar record:", error);
|
|
3870
|
+
return null;
|
|
3871
|
+
}
|
|
3872
|
+
}
|
|
3873
|
+
var useGetAvatarLegacy = (name) => {
|
|
3874
|
+
const { network } = useVeChainKitConfig();
|
|
3875
|
+
const nodeUrl = network.nodeUrl ?? getConfig(network.type).nodeUrl;
|
|
3876
|
+
const avatarQuery = useQuery({
|
|
3877
|
+
queryKey: getAvatarLegacyQueryKey(name ?? "", network.type),
|
|
3878
|
+
queryFn: async () => {
|
|
3879
|
+
if (!name) return null;
|
|
3880
|
+
return getAvatarLegacy(network.type, nodeUrl, name);
|
|
3581
3881
|
},
|
|
3582
|
-
|
|
3583
|
-
);
|
|
3882
|
+
enabled: !!name && !!nodeUrl && !!network.type
|
|
3883
|
+
});
|
|
3884
|
+
return avatarQuery;
|
|
3885
|
+
};
|
|
3886
|
+
var ReverseRegistrarInterface3 = IReverseRegistrar__factory.createInterface();
|
|
3887
|
+
var useUnsetDomain = ({
|
|
3888
|
+
onSuccess,
|
|
3889
|
+
onError
|
|
3890
|
+
}) => {
|
|
3891
|
+
const queryClient = useQueryClient();
|
|
3892
|
+
const { account } = useWallet();
|
|
3893
|
+
const { network } = useVeChainKitConfig();
|
|
3894
|
+
const buildClauses = useCallback(async () => {
|
|
3895
|
+
const clausesArray = [];
|
|
3896
|
+
clausesArray.push({
|
|
3897
|
+
to: getConfig(network.type).vetDomainsReverseRegistrarAddress,
|
|
3898
|
+
value: "0x0",
|
|
3899
|
+
data: ReverseRegistrarInterface3.encodeFunctionData("setName", [""]),
|
|
3900
|
+
comment: `Unsetting your current VeChain nickname of the account ${humanAddress(
|
|
3901
|
+
account?.address ?? "",
|
|
3902
|
+
4,
|
|
3903
|
+
4
|
|
3904
|
+
)}`,
|
|
3905
|
+
abi: ReverseRegistrarInterface3.getFunction("setName")
|
|
3906
|
+
});
|
|
3907
|
+
return clausesArray;
|
|
3908
|
+
}, [account?.address, network.type]);
|
|
3909
|
+
const handleOnSuccess = useCallback(async () => {
|
|
3910
|
+
const address = account?.address ?? "";
|
|
3911
|
+
await invalidateAndRefetchDomainQueries(
|
|
3912
|
+
queryClient,
|
|
3913
|
+
address,
|
|
3914
|
+
"",
|
|
3915
|
+
// No domain being set
|
|
3916
|
+
"",
|
|
3917
|
+
// No subdomain
|
|
3918
|
+
"",
|
|
3919
|
+
// No full domain
|
|
3920
|
+
network.type
|
|
3921
|
+
);
|
|
3922
|
+
onSuccess?.();
|
|
3923
|
+
}, [onSuccess, queryClient, account, network.type]);
|
|
3584
3924
|
const result = useSendTransaction({
|
|
3585
|
-
signerAccountAddress,
|
|
3586
|
-
onTxConfirmed: onSuccess,
|
|
3587
|
-
onTxFailedOrCancelled: async () => {
|
|
3588
|
-
onError?.();
|
|
3589
|
-
},
|
|
3925
|
+
signerAccountAddress: account?.address ?? "",
|
|
3590
3926
|
privyUIOptions: {
|
|
3591
|
-
title: "
|
|
3592
|
-
description: "
|
|
3927
|
+
title: "Sign to unset your VeChain nickname",
|
|
3928
|
+
description: "Unset your current VeChain nickname",
|
|
3593
3929
|
buttonText: "Sign to continue"
|
|
3594
|
-
}
|
|
3930
|
+
},
|
|
3931
|
+
onTxConfirmed: handleOnSuccess,
|
|
3932
|
+
onTxFailedOrCancelled: onError
|
|
3595
3933
|
});
|
|
3596
3934
|
return {
|
|
3597
3935
|
...result,
|
|
3598
|
-
sendTransaction: async (
|
|
3599
|
-
return result.sendTransaction(await buildClauses(
|
|
3936
|
+
sendTransaction: async () => {
|
|
3937
|
+
return result.sendTransaction(await buildClauses());
|
|
3600
3938
|
}
|
|
3601
3939
|
};
|
|
3602
3940
|
};
|
|
3603
|
-
var nameInterface4 = new Interface([
|
|
3604
|
-
"function resolver(bytes32 node) returns (address resolverAddress)"
|
|
3605
|
-
]);
|
|
3606
|
-
var getResolverAddress = async (nodeUrl, network, domain) => {
|
|
3607
|
-
if (!domain) throw new Error("Domain is required");
|
|
3608
|
-
const node = namehash(domain);
|
|
3609
|
-
const resolverResponse = await fetch(`${nodeUrl}/accounts/*`, {
|
|
3610
|
-
method: "POST",
|
|
3611
|
-
headers: { "content-type": "application/json" },
|
|
3612
|
-
body: JSON.stringify({
|
|
3613
|
-
clauses: [
|
|
3614
|
-
{
|
|
3615
|
-
to: getConfig(network).vetDomainsContractAddress,
|
|
3616
|
-
data: nameInterface4.encodeFunctionData("resolver", [node])
|
|
3617
|
-
}
|
|
3618
|
-
]
|
|
3619
|
-
})
|
|
3620
|
-
});
|
|
3621
|
-
const [{ data: resolverData, reverted: noResolver }] = await resolverResponse.json();
|
|
3622
|
-
if (noResolver) throw new Error("Failed to get resolver address");
|
|
3623
|
-
const { resolverAddress } = nameInterface4.decodeFunctionResult(
|
|
3624
|
-
"resolver",
|
|
3625
|
-
resolverData
|
|
3626
|
-
);
|
|
3627
|
-
return resolverAddress;
|
|
3628
|
-
};
|
|
3629
|
-
var getResolverAddressQueryKey = (domain) => [
|
|
3630
|
-
"VECHAIN_KIT",
|
|
3631
|
-
"RESOLVER_ADDRESS",
|
|
3632
|
-
domain
|
|
3633
|
-
];
|
|
3634
|
-
var useGetResolverAddress = (domain) => {
|
|
3635
|
-
const { network } = useVeChainKitConfig();
|
|
3636
|
-
const nodeUrl = network.nodeUrl ?? getConfig(network.type).nodeUrl;
|
|
3637
|
-
return useQuery({
|
|
3638
|
-
queryKey: getResolverAddressQueryKey(domain),
|
|
3639
|
-
queryFn: () => getResolverAddress(nodeUrl, network.type, domain),
|
|
3640
|
-
enabled: !!domain && !!nodeUrl && !!network.type
|
|
3641
|
-
});
|
|
3642
|
-
};
|
|
3643
|
-
var getAvatarOfAddressQueryKey = (address) => [
|
|
3644
|
-
"VECHAIN_KIT",
|
|
3645
|
-
"VET_DOMAINS",
|
|
3646
|
-
"AVATAR_OF_ADDRESS",
|
|
3647
|
-
address
|
|
3648
|
-
];
|
|
3649
|
-
var useGetAvatarOfAddress = (address) => {
|
|
3650
|
-
const domainsQuery = useVechainDomain(address);
|
|
3651
|
-
const primaryDomain = domainsQuery.data?.domain;
|
|
3652
|
-
const avatarQuery = useGetAvatar(primaryDomain ?? "");
|
|
3653
|
-
return useQuery({
|
|
3654
|
-
queryKey: getAvatarOfAddressQueryKey(address),
|
|
3655
|
-
queryFn: async () => {
|
|
3656
|
-
if (!address) return getPicassoImage(address ?? "");
|
|
3657
|
-
const domains = await domainsQuery.refetch();
|
|
3658
|
-
if (!domains.data?.domain) return getPicassoImage(address);
|
|
3659
|
-
if (domains.data.domain && avatarQuery.data)
|
|
3660
|
-
return avatarQuery.data;
|
|
3661
|
-
return getPicassoImage(address);
|
|
3662
|
-
},
|
|
3663
|
-
enabled: !!address && domainsQuery.isSuccess && (primaryDomain ? avatarQuery.isSuccess : true),
|
|
3664
|
-
// Use the same caching strategy as the avatar query
|
|
3665
|
-
staleTime: 5 * 60 * 1e3
|
|
3666
|
-
// 5 minutes
|
|
3667
|
-
});
|
|
3668
|
-
};
|
|
3669
3941
|
var useBalances = ({ address = "" }) => {
|
|
3670
3942
|
const { network } = useVeChainKitConfig();
|
|
3671
3943
|
const config = getConfig(network.type);
|
|
@@ -3944,12 +4216,14 @@ var usePrivyCrossAppSdk = () => {
|
|
|
3944
4216
|
// src/hooks/api/wallet/useWalletMetadata.ts
|
|
3945
4217
|
var useWalletMetadata = (address, networkType) => {
|
|
3946
4218
|
const { data: domain, isLoading: isLoadingVechainDomain } = useVechainDomain(address ?? "");
|
|
3947
|
-
const { data: avatar, isLoading: isLoadingMetadata } =
|
|
4219
|
+
const { data: avatar, isLoading: isLoadingMetadata } = useGetAvatar(
|
|
4220
|
+
domain?.domain ?? ""
|
|
4221
|
+
);
|
|
3948
4222
|
const { data: textRecords, isLoading: isLoadingRecords } = useGetTextRecords(domain?.domain ?? "");
|
|
3949
4223
|
const headerUrl = textRecords?.header ? convertUriToUrl(textRecords.header, networkType) : null;
|
|
3950
4224
|
return {
|
|
3951
4225
|
domain: domain?.domain,
|
|
3952
|
-
image: avatar,
|
|
4226
|
+
image: avatar ?? getPicassoImage(address ?? ""),
|
|
3953
4227
|
records: {
|
|
3954
4228
|
...textRecords,
|
|
3955
4229
|
header: headerUrl
|
|
@@ -4014,10 +4288,9 @@ var useWallet = () => {
|
|
|
4014
4288
|
const connectedWalletAddress = isConnectedWithDappKit ? dappKitAccount : isConnectedWithCrossApp ? crossAppAddress : privyEmbeddedWalletAddress;
|
|
4015
4289
|
const { data: smartAccount } = useSmartAccount(connectedWalletAddress);
|
|
4016
4290
|
const activeAddress = isConnectedWithDappKit ? dappKitAccount : smartAccount?.address;
|
|
4017
|
-
const
|
|
4018
|
-
|
|
4019
|
-
|
|
4020
|
-
activeAccountDomain?.data?.domain
|
|
4291
|
+
const activeAccountMetadata = useWalletMetadata(
|
|
4292
|
+
activeAddress ?? "",
|
|
4293
|
+
network.type
|
|
4021
4294
|
);
|
|
4022
4295
|
const connectedMetadata = useWalletMetadata(
|
|
4023
4296
|
connectedWalletAddress ?? "",
|
|
@@ -4029,10 +4302,10 @@ var useWallet = () => {
|
|
|
4029
4302
|
);
|
|
4030
4303
|
const account = activeAddress ? {
|
|
4031
4304
|
address: activeAddress,
|
|
4032
|
-
domain:
|
|
4033
|
-
image:
|
|
4034
|
-
isLoadingMetadata:
|
|
4035
|
-
metadata:
|
|
4305
|
+
domain: activeAccountMetadata.domain,
|
|
4306
|
+
image: activeAccountMetadata.image,
|
|
4307
|
+
isLoadingMetadata: activeAccountMetadata.isLoading,
|
|
4308
|
+
metadata: activeAccountMetadata.records
|
|
4036
4309
|
} : null;
|
|
4037
4310
|
const connectedWallet = connectedWalletAddress ? {
|
|
4038
4311
|
address: connectedWalletAddress,
|
|
@@ -4277,31 +4550,6 @@ var useAccountBalance = (address) => {
|
|
|
4277
4550
|
refetchInterval: 1e4
|
|
4278
4551
|
});
|
|
4279
4552
|
};
|
|
4280
|
-
var useRefreshMetadata = (domain, address) => {
|
|
4281
|
-
const queryClient = useQueryClient();
|
|
4282
|
-
const { network } = useVeChainKitConfig();
|
|
4283
|
-
const refresh = async () => {
|
|
4284
|
-
await queryClient.invalidateQueries({
|
|
4285
|
-
queryKey: getAvatarQueryKey(domain ?? "")
|
|
4286
|
-
});
|
|
4287
|
-
await queryClient.refetchQueries({
|
|
4288
|
-
queryKey: getAvatarQueryKey(domain ?? "")
|
|
4289
|
-
});
|
|
4290
|
-
await queryClient.invalidateQueries({
|
|
4291
|
-
queryKey: getTextRecordsQueryKey(domain, network.type)
|
|
4292
|
-
});
|
|
4293
|
-
await queryClient.refetchQueries({
|
|
4294
|
-
queryKey: getTextRecordsQueryKey(domain, network.type)
|
|
4295
|
-
});
|
|
4296
|
-
await queryClient.invalidateQueries({
|
|
4297
|
-
queryKey: getAvatarOfAddressQueryKey(address)
|
|
4298
|
-
});
|
|
4299
|
-
await queryClient.refetchQueries({
|
|
4300
|
-
queryKey: getAvatarOfAddressQueryKey(address)
|
|
4301
|
-
});
|
|
4302
|
-
};
|
|
4303
|
-
return { refresh };
|
|
4304
|
-
};
|
|
4305
4553
|
|
|
4306
4554
|
// src/hooks/api/utility/useGetNodeUrl.ts
|
|
4307
4555
|
var useGetNodeUrl = () => {
|
|
@@ -5262,7 +5510,7 @@ var AddressDisplay = ({
|
|
|
5262
5510
|
// package.json
|
|
5263
5511
|
var package_default = {
|
|
5264
5512
|
name: "@vechain/vechain-kit",
|
|
5265
|
-
version: "1.5.
|
|
5513
|
+
version: "1.5.13",
|
|
5266
5514
|
private: false,
|
|
5267
5515
|
homepage: "https://github.com/vechain/vechain-kit",
|
|
5268
5516
|
repository: "github:vechain/vechain-kit",
|
|
@@ -5716,16 +5964,23 @@ var ScrollToTopWrapper = ({ children, ...props }) => {
|
|
|
5716
5964
|
return /* @__PURE__ */ jsx(VStack, { ...props, children });
|
|
5717
5965
|
};
|
|
5718
5966
|
var AccountAvatar = ({ wallet, props }) => {
|
|
5719
|
-
|
|
5967
|
+
const previousImageRef = useRef(wallet?.image);
|
|
5968
|
+
useEffect(() => {
|
|
5969
|
+
if (wallet?.image && !wallet.isLoadingMetadata) {
|
|
5970
|
+
previousImageRef.current = wallet.image;
|
|
5971
|
+
}
|
|
5972
|
+
}, [wallet?.image, wallet?.isLoadingMetadata]);
|
|
5973
|
+
if (wallet?.isLoadingMetadata && !previousImageRef.current) {
|
|
5720
5974
|
return /* @__PURE__ */ jsx(Spinner, { size: "sm" });
|
|
5721
5975
|
}
|
|
5722
5976
|
return /* @__PURE__ */ jsx(
|
|
5723
5977
|
Image,
|
|
5724
5978
|
{
|
|
5725
|
-
src: props?.src || wallet?.image,
|
|
5979
|
+
src: props?.src || wallet?.image || previousImageRef.current,
|
|
5726
5980
|
alt: props?.alt || wallet?.domain,
|
|
5727
5981
|
objectFit: "cover",
|
|
5728
5982
|
rounded: "full",
|
|
5983
|
+
fallbackSrc: getPicassoImage(wallet?.address ?? ""),
|
|
5729
5984
|
...props
|
|
5730
5985
|
}
|
|
5731
5986
|
);
|
|
@@ -7055,7 +7310,7 @@ var QuickActionsSection = ({ mt, setCurrentContent }) => {
|
|
|
7055
7310
|
const hasUnreadNotifications = notifications.some((n) => !n.isRead);
|
|
7056
7311
|
const showRedDot = connection.isConnectedWithPrivy && upgradeRequired || hasUnreadNotifications;
|
|
7057
7312
|
return /* @__PURE__ */ jsxs(VStack, { w: "full", mt, spacing: 4, children: [
|
|
7058
|
-
/* @__PURE__ */ jsx(Heading, { size: "xs", fontWeight: "500", w: "full", opacity: 0.5, children: t("
|
|
7313
|
+
/* @__PURE__ */ jsx(Heading, { size: "xs", fontWeight: "500", w: "full", opacity: 0.5, children: t("Tools") }),
|
|
7059
7314
|
/* @__PURE__ */ jsx(Grid, { templateColumns: "repeat(3, 1fr)", gap: 2, w: "full", children: QUICK_ACTIONS.map((action) => /* @__PURE__ */ jsx(
|
|
7060
7315
|
QuickActionButton,
|
|
7061
7316
|
{
|
|
@@ -8342,7 +8597,7 @@ var SendTokenContent = ({
|
|
|
8342
8597
|
mode: "onChange"
|
|
8343
8598
|
});
|
|
8344
8599
|
const { toAddressOrDomain } = watch();
|
|
8345
|
-
const {
|
|
8600
|
+
const { data: resolvedDomainData } = useVechainDomain(toAddressOrDomain);
|
|
8346
8601
|
const handleSetMaxAmount = () => {
|
|
8347
8602
|
if (selectedToken) {
|
|
8348
8603
|
setValue("amount", selectedToken.numericBalance);
|
|
@@ -8350,7 +8605,7 @@ var SendTokenContent = ({
|
|
|
8350
8605
|
};
|
|
8351
8606
|
const onSubmit = async (data) => {
|
|
8352
8607
|
if (!selectedToken) return;
|
|
8353
|
-
const isValidReceiver = !
|
|
8608
|
+
const isValidReceiver = resolvedDomainData?.isValidAddressOrDomain && (!resolvedDomainData?.domain || resolvedDomainData?.domain && resolvedDomainData?.isPrimaryDomain);
|
|
8354
8609
|
if (!isValidReceiver) {
|
|
8355
8610
|
setError("toAddressOrDomain", {
|
|
8356
8611
|
type: "manual",
|
|
@@ -8374,8 +8629,8 @@ var SendTokenContent = ({
|
|
|
8374
8629
|
type: "send-token-summary",
|
|
8375
8630
|
props: {
|
|
8376
8631
|
toAddressOrDomain: data.toAddressOrDomain,
|
|
8377
|
-
resolvedDomain,
|
|
8378
|
-
resolvedAddress,
|
|
8632
|
+
resolvedDomain: resolvedDomainData?.domain,
|
|
8633
|
+
resolvedAddress: resolvedDomainData?.address,
|
|
8379
8634
|
amount: data.amount,
|
|
8380
8635
|
selectedToken,
|
|
8381
8636
|
setCurrentContent
|
|
@@ -8648,7 +8903,7 @@ var SendTokenSummaryContent = ({
|
|
|
8648
8903
|
}) => {
|
|
8649
8904
|
const { t } = useTranslation();
|
|
8650
8905
|
const { account, connection, connectedWallet } = useWallet();
|
|
8651
|
-
const { data: avatar } =
|
|
8906
|
+
const { data: avatar } = useGetAvatarOfAddress(resolvedAddress ?? "");
|
|
8652
8907
|
const { network } = useVeChainKitConfig();
|
|
8653
8908
|
const { data: upgradeRequired } = useUpgradeRequired(
|
|
8654
8909
|
account?.address ?? "",
|
|
@@ -9037,9 +9292,76 @@ var DomainListItem = ({
|
|
|
9037
9292
|
domain.name
|
|
9038
9293
|
);
|
|
9039
9294
|
};
|
|
9295
|
+
var UnsetDomainListItem = ({ onUnset }) => {
|
|
9296
|
+
const { darkMode: isDark } = useVeChainKitConfig();
|
|
9297
|
+
const { t } = useTranslation();
|
|
9298
|
+
return /* @__PURE__ */ jsx(
|
|
9299
|
+
ListItem,
|
|
9300
|
+
{
|
|
9301
|
+
p: 4,
|
|
9302
|
+
bg: isDark ? "#1f1f1e" : "white",
|
|
9303
|
+
borderRadius: "xl",
|
|
9304
|
+
cursor: "pointer",
|
|
9305
|
+
opacity: 1,
|
|
9306
|
+
border: `1px solid ${isDark ? "#2d2d2d" : "#eaeaea"}`,
|
|
9307
|
+
_hover: {
|
|
9308
|
+
bg: isDark ? "#252525" : "gray.50",
|
|
9309
|
+
borderColor: isDark ? "#3d3d3d" : "#dedede",
|
|
9310
|
+
color: "red.400"
|
|
9311
|
+
},
|
|
9312
|
+
onClick: onUnset,
|
|
9313
|
+
transition: "all 0.2s",
|
|
9314
|
+
role: "button",
|
|
9315
|
+
"aria-label": t("Unset current domain"),
|
|
9316
|
+
children: /* @__PURE__ */ jsxs(HStack, { spacing: 3, align: "center", children: [
|
|
9317
|
+
/* @__PURE__ */ jsx(
|
|
9318
|
+
Box,
|
|
9319
|
+
{
|
|
9320
|
+
width: "40px",
|
|
9321
|
+
height: "40px",
|
|
9322
|
+
borderRadius: "full",
|
|
9323
|
+
display: "flex",
|
|
9324
|
+
alignItems: "center",
|
|
9325
|
+
justifyContent: "center",
|
|
9326
|
+
bg: isDark ? "whiteAlpha.100" : "gray.100",
|
|
9327
|
+
children: /* @__PURE__ */ jsx(
|
|
9328
|
+
Icon,
|
|
9329
|
+
{
|
|
9330
|
+
as: IoTrashOutline,
|
|
9331
|
+
fontSize: "18px",
|
|
9332
|
+
color: isDark ? "red.300" : "red.500"
|
|
9333
|
+
}
|
|
9334
|
+
)
|
|
9335
|
+
}
|
|
9336
|
+
),
|
|
9337
|
+
/* @__PURE__ */ jsxs(VStack, { align: "start", spacing: 0, flex: 1, children: [
|
|
9338
|
+
/* @__PURE__ */ jsx(
|
|
9339
|
+
Text,
|
|
9340
|
+
{
|
|
9341
|
+
color: isDark ? "whiteAlpha.900" : "gray.700",
|
|
9342
|
+
fontSize: "md",
|
|
9343
|
+
fontWeight: "500",
|
|
9344
|
+
children: t("Unset current domain")
|
|
9345
|
+
}
|
|
9346
|
+
),
|
|
9347
|
+
/* @__PURE__ */ jsx(
|
|
9348
|
+
Text,
|
|
9349
|
+
{
|
|
9350
|
+
fontSize: "sm",
|
|
9351
|
+
color: isDark ? "whiteAlpha.600" : "blackAlpha.600",
|
|
9352
|
+
children: t("Remove your current domain name")
|
|
9353
|
+
}
|
|
9354
|
+
)
|
|
9355
|
+
] })
|
|
9356
|
+
] })
|
|
9357
|
+
},
|
|
9358
|
+
"unset-domain-list-item"
|
|
9359
|
+
);
|
|
9360
|
+
};
|
|
9040
9361
|
var ExistingDomainsList = ({
|
|
9041
9362
|
domains,
|
|
9042
9363
|
onDomainSelect,
|
|
9364
|
+
onUnsetDomain,
|
|
9043
9365
|
isLoading
|
|
9044
9366
|
}) => {
|
|
9045
9367
|
const { t } = useTranslation();
|
|
@@ -9073,15 +9395,23 @@ var ExistingDomainsList = ({
|
|
|
9073
9395
|
]
|
|
9074
9396
|
}
|
|
9075
9397
|
),
|
|
9076
|
-
/* @__PURE__ */ jsx(AccordionPanel, { pb: 4, pt: 2, children: /* @__PURE__ */
|
|
9077
|
-
|
|
9078
|
-
|
|
9079
|
-
|
|
9080
|
-
|
|
9081
|
-
|
|
9082
|
-
|
|
9083
|
-
|
|
9084
|
-
|
|
9398
|
+
/* @__PURE__ */ jsx(AccordionPanel, { pb: 4, pt: 2, children: /* @__PURE__ */ jsxs(List, { spacing: 2, children: [
|
|
9399
|
+
domains.map((domain) => /* @__PURE__ */ jsx(
|
|
9400
|
+
DomainListItem,
|
|
9401
|
+
{
|
|
9402
|
+
domain,
|
|
9403
|
+
isCurrentDomain: domain.name === account?.domain,
|
|
9404
|
+
onSelect: onDomainSelect
|
|
9405
|
+
},
|
|
9406
|
+
domain.name
|
|
9407
|
+
)),
|
|
9408
|
+
account?.domain && /* @__PURE__ */ jsx(
|
|
9409
|
+
UnsetDomainListItem,
|
|
9410
|
+
{
|
|
9411
|
+
onUnset: onUnsetDomain
|
|
9412
|
+
}
|
|
9413
|
+
)
|
|
9414
|
+
] }) })
|
|
9085
9415
|
] }) }) });
|
|
9086
9416
|
};
|
|
9087
9417
|
var ChooseNameSearchContent = ({
|
|
@@ -9163,17 +9493,33 @@ var ChooseNameSearchContent = ({
|
|
|
9163
9493
|
}
|
|
9164
9494
|
};
|
|
9165
9495
|
const handleDomainSelect = (selectedDomain) => {
|
|
9166
|
-
const
|
|
9496
|
+
const parts3 = selectedDomain.split(".");
|
|
9497
|
+
const baseName = parts3[0];
|
|
9498
|
+
const domainType = parts3.length > 2 ? `${parts3[1]}.${parts3[2]}` : "vet";
|
|
9167
9499
|
setCurrentContent({
|
|
9168
9500
|
type: "choose-name-summary",
|
|
9169
9501
|
props: {
|
|
9170
9502
|
name: baseName,
|
|
9503
|
+
domainType,
|
|
9171
9504
|
isOwnDomain: true,
|
|
9172
9505
|
setCurrentContent,
|
|
9173
9506
|
initialContentSource
|
|
9174
9507
|
}
|
|
9175
9508
|
});
|
|
9176
9509
|
};
|
|
9510
|
+
const handleUnsetDomain = () => {
|
|
9511
|
+
setCurrentContent({
|
|
9512
|
+
type: "choose-name-summary",
|
|
9513
|
+
props: {
|
|
9514
|
+
name: "",
|
|
9515
|
+
domainType: "",
|
|
9516
|
+
isOwnDomain: false,
|
|
9517
|
+
isUnsetting: true,
|
|
9518
|
+
setCurrentContent,
|
|
9519
|
+
initialContentSource
|
|
9520
|
+
}
|
|
9521
|
+
});
|
|
9522
|
+
};
|
|
9177
9523
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
9178
9524
|
/* @__PURE__ */ jsxs(StickyHeaderContainer, { children: [
|
|
9179
9525
|
/* @__PURE__ */ jsx(ModalHeader, { children: t("Choose Name") }),
|
|
@@ -9191,6 +9537,7 @@ var ChooseNameSearchContent = ({
|
|
|
9191
9537
|
{
|
|
9192
9538
|
domains: allUserDomains,
|
|
9193
9539
|
onDomainSelect: handleDomainSelect,
|
|
9540
|
+
onUnsetDomain: handleUnsetDomain,
|
|
9194
9541
|
isLoading: isLoadingOwnedDomains
|
|
9195
9542
|
}
|
|
9196
9543
|
),
|
|
@@ -9262,7 +9609,9 @@ var ChooseNameSearchContent = ({
|
|
|
9262
9609
|
var ChooseNameSummaryContent = ({
|
|
9263
9610
|
setCurrentContent,
|
|
9264
9611
|
name,
|
|
9612
|
+
domainType = "veworld.vet",
|
|
9265
9613
|
isOwnDomain,
|
|
9614
|
+
isUnsetting = false,
|
|
9266
9615
|
initialContentSource = "settings"
|
|
9267
9616
|
}) => {
|
|
9268
9617
|
const { t } = useTranslation();
|
|
@@ -9273,34 +9622,45 @@ var ChooseNameSummaryContent = ({
|
|
|
9273
9622
|
3
|
|
9274
9623
|
);
|
|
9275
9624
|
const { open: openUpgradeSmartAccountModal } = useUpgradeSmartAccountModal();
|
|
9625
|
+
const unsetDomainHook = useUnsetDomain({
|
|
9626
|
+
onSuccess: () => handleSuccess()
|
|
9627
|
+
});
|
|
9628
|
+
const isVeWorldSubdomain = domainType.endsWith("veworld.vet");
|
|
9629
|
+
const veWorldSubdomainHook = useClaimVeWorldSubdomain({
|
|
9630
|
+
subdomain: name,
|
|
9631
|
+
domain: domainType,
|
|
9632
|
+
alreadyOwned: isOwnDomain,
|
|
9633
|
+
onSuccess: () => handleSuccess()
|
|
9634
|
+
});
|
|
9635
|
+
const vetDomainHook = useClaimVetDomain({
|
|
9636
|
+
domain: name,
|
|
9637
|
+
alreadyOwned: isOwnDomain,
|
|
9638
|
+
onSuccess: () => handleSuccess()
|
|
9639
|
+
});
|
|
9276
9640
|
const {
|
|
9277
9641
|
sendTransaction,
|
|
9278
9642
|
txReceipt,
|
|
9279
9643
|
error: txError,
|
|
9280
9644
|
isWaitingForWalletConfirmation,
|
|
9281
9645
|
isTransactionPending
|
|
9282
|
-
} =
|
|
9283
|
-
|
|
9284
|
-
|
|
9285
|
-
|
|
9286
|
-
|
|
9287
|
-
|
|
9288
|
-
|
|
9289
|
-
|
|
9290
|
-
|
|
9291
|
-
|
|
9292
|
-
|
|
9293
|
-
|
|
9294
|
-
|
|
9295
|
-
|
|
9296
|
-
),
|
|
9297
|
-
onDone: () => {
|
|
9298
|
-
setCurrentContent(initialContentSource);
|
|
9299
|
-
}
|
|
9646
|
+
} = isUnsetting ? unsetDomainHook : isVeWorldSubdomain ? veWorldSubdomainHook : vetDomainHook;
|
|
9647
|
+
const handleSuccess = () => {
|
|
9648
|
+
setCurrentContent({
|
|
9649
|
+
type: "successful-operation",
|
|
9650
|
+
props: {
|
|
9651
|
+
setCurrentContent,
|
|
9652
|
+
txId: txReceipt?.meta.txID,
|
|
9653
|
+
title: isUnsetting ? t("Domain unset") : t("Domain set"),
|
|
9654
|
+
description: isUnsetting ? t("Your domain has been unset successfully.") : t(
|
|
9655
|
+
`Your address has been successfully set to {{name}}.{{domainType}}.`,
|
|
9656
|
+
{ name, domainType }
|
|
9657
|
+
),
|
|
9658
|
+
onDone: () => {
|
|
9659
|
+
setCurrentContent(initialContentSource);
|
|
9300
9660
|
}
|
|
9301
|
-
}
|
|
9302
|
-
}
|
|
9303
|
-
}
|
|
9661
|
+
}
|
|
9662
|
+
});
|
|
9663
|
+
};
|
|
9304
9664
|
const handleConfirm = async () => {
|
|
9305
9665
|
if (upgradeRequired) {
|
|
9306
9666
|
openUpgradeSmartAccountModal();
|
|
@@ -9314,7 +9674,7 @@ var ChooseNameSummaryContent = ({
|
|
|
9314
9674
|
};
|
|
9315
9675
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
9316
9676
|
/* @__PURE__ */ jsxs(StickyHeaderContainer, { children: [
|
|
9317
|
-
/* @__PURE__ */ jsx(ModalHeader, { children: t("Confirm Name") }),
|
|
9677
|
+
/* @__PURE__ */ jsx(ModalHeader, { children: isUnsetting ? t("Confirm Unset Domain") : t("Confirm Name") }),
|
|
9318
9678
|
/* @__PURE__ */ jsx(
|
|
9319
9679
|
ModalBackButton,
|
|
9320
9680
|
{
|
|
@@ -9332,8 +9692,12 @@ var ChooseNameSummaryContent = ({
|
|
|
9332
9692
|
/* @__PURE__ */ jsx(ModalCloseButton, { isDisabled: isTransactionPending })
|
|
9333
9693
|
] }),
|
|
9334
9694
|
/* @__PURE__ */ jsx(ModalBody, { children: /* @__PURE__ */ jsxs(VStack, { spacing: 4, w: "full", textAlign: "center", children: [
|
|
9335
|
-
/* @__PURE__ */ jsx(Text, { fontSize: "lg", children: t(
|
|
9336
|
-
|
|
9695
|
+
/* @__PURE__ */ jsx(Text, { fontSize: "lg", children: isUnsetting ? t(
|
|
9696
|
+
"Are you sure you want to unset your current domain?"
|
|
9697
|
+
) : t(
|
|
9698
|
+
"Are you sure you want to set your domain name to"
|
|
9699
|
+
) }),
|
|
9700
|
+
!isUnsetting && /* @__PURE__ */ jsx(Text, { fontSize: "xl", fontWeight: "bold", color: "blue.500", children: `${name}.${domainType}` })
|
|
9337
9701
|
] }) }),
|
|
9338
9702
|
/* @__PURE__ */ jsx(ModalFooter, { gap: 4, w: "full", children: /* @__PURE__ */ jsx(
|
|
9339
9703
|
TransactionButtonAndStatus,
|
|
@@ -9342,7 +9706,7 @@ var ChooseNameSummaryContent = ({
|
|
|
9342
9706
|
isSubmitting: isTransactionPending,
|
|
9343
9707
|
isTxWaitingConfirmation: isWaitingForWalletConfirmation,
|
|
9344
9708
|
onConfirm: handleConfirm,
|
|
9345
|
-
transactionPendingText: t("Claiming name..."),
|
|
9709
|
+
transactionPendingText: isUnsetting ? t("Unsetting current domain...") : t("Claiming name..."),
|
|
9346
9710
|
txReceipt,
|
|
9347
9711
|
buttonText: t("Confirm"),
|
|
9348
9712
|
isDisabled: isTransactionPending
|
|
@@ -9555,6 +9919,7 @@ var en_default = {
|
|
|
9555
9919
|
"Are you sure you want to disconnect your wallet?": "Are you sure you want to disconnect your wallet?",
|
|
9556
9920
|
"Are you sure you want to set your domain name to": "Are you sure you want to set your domain name to",
|
|
9557
9921
|
"Are you sure you want to unlink {{accountType}} as a login method linked to {{accountDescription}}?": "Are you sure you want to unlink {{accountType}} as a login method linked to {{accountDescription}}?",
|
|
9922
|
+
"Are you sure you want to unset your current domain?": "Are you sure you want to unset your current domain?",
|
|
9558
9923
|
Assets: "Assets",
|
|
9559
9924
|
At: "At",
|
|
9560
9925
|
"B3TR is the incentive token of VeBetterDAO, built on VechainThor blockchain. It has a capped supply of 1 billion tokens, emitted weekly over 12 years. B3TR is used for rewards, governance, and backing VOT3 tokens 1:1. It supports sustainability applications and DAO treasury management.": "B3TR is the incentive token of VeBetterDAO, built on VechainThor blockchain. It has a capped supply of 1 billion tokens, emitted weekly over 12 years. B3TR is used for rewards, governance, and backing VOT3 tokens 1:1. It supports sustainability applications and DAO treasury management.",
|
|
@@ -9594,6 +9959,7 @@ var en_default = {
|
|
|
9594
9959
|
Confirm: "Confirm",
|
|
9595
9960
|
"Confirm Changes": "Confirm Changes",
|
|
9596
9961
|
"Confirm Name": "Confirm Name",
|
|
9962
|
+
"Confirm Unset Domain": "Confirm Unset Domain",
|
|
9597
9963
|
"Confirm the transaction in your wallet to complete it.": "Confirm the transaction in your wallet to complete it.",
|
|
9598
9964
|
"Confirm transaction": "Confirm transaction",
|
|
9599
9965
|
"Connect Wallet": "Connect Wallet",
|
|
@@ -9647,6 +10013,8 @@ var en_default = {
|
|
|
9647
10013
|
Discord: "Discord",
|
|
9648
10014
|
"Display Name": "Display Name",
|
|
9649
10015
|
"Display name must be less than 25 characters": "Display name must be less than 25 characters",
|
|
10016
|
+
"Domain set": "Domain set",
|
|
10017
|
+
"Domain unset": "Domain unset",
|
|
9650
10018
|
Done: "Done",
|
|
9651
10019
|
Ecosystem: "Ecosystem",
|
|
9652
10020
|
"Ecosystem Login": "Ecosystem Login",
|
|
@@ -9804,6 +10172,7 @@ var en_default = {
|
|
|
9804
10172
|
Remove: "Remove",
|
|
9805
10173
|
"Remove Login Method": "Remove Login Method",
|
|
9806
10174
|
"Remove from shortcuts": "Remove from shortcuts",
|
|
10175
|
+
"Remove your current domain name": "Remove your current domain name",
|
|
9807
10176
|
"Resend code": "Resend code",
|
|
9808
10177
|
Retry: "Retry",
|
|
9809
10178
|
"Safari blocked the login window. Please try again, it should work now.": "Safari blocked the login window. Please try again, it should work now.",
|
|
@@ -9883,6 +10252,7 @@ var en_default = {
|
|
|
9883
10252
|
"Token Contract Address": "Token Contract Address",
|
|
9884
10253
|
"Token already added": "Token already added",
|
|
9885
10254
|
"Tokens transferred successfully.": "Tokens transferred successfully.",
|
|
10255
|
+
Tools: "Tools",
|
|
9886
10256
|
"Total balance": "Total balance",
|
|
9887
10257
|
"Transaction completed!": "Transaction completed!",
|
|
9888
10258
|
"Transaction failed": "Transaction failed",
|
|
@@ -9902,6 +10272,11 @@ var en_default = {
|
|
|
9902
10272
|
"Unknown error": "Unknown error",
|
|
9903
10273
|
"Unknown status": "Unknown status",
|
|
9904
10274
|
"Unlink Login Method": "Unlink Login Method",
|
|
10275
|
+
"Unset current domain": "Unset current domain",
|
|
10276
|
+
"Unsetting current domain": "Unsetting current domain",
|
|
10277
|
+
"Unsetting current domain...": "Unsetting current domain...",
|
|
10278
|
+
"Unsetting your current VeChain nickname": "Unsetting your current VeChain nickname",
|
|
10279
|
+
"Unsetting your current domain": "Unsetting your current domain",
|
|
9905
10280
|
"Update profile image": "Update profile image",
|
|
9906
10281
|
"Upgrade Now": "Upgrade Now",
|
|
9907
10282
|
"Upgrade Smart Account to V3": "Upgrade Smart Account to V3",
|
|
@@ -9969,8 +10344,10 @@ var en_default = {
|
|
|
9969
10344
|
"You own a Smart Account and it has priority over your wallet.": "You own a Smart Account and it has priority over your wallet.",
|
|
9970
10345
|
"Your account has been successfully upgraded to the latest version. You can now enjoy a better user experience, lower gas costs, and enhanced security.": "Your account has been successfully upgraded to the latest version. You can now enjoy a better user experience, lower gas costs, and enhanced security.",
|
|
9971
10346
|
"Your accounts": "Your accounts",
|
|
10347
|
+
"Your address has been successfully set to {{name}}.{{domainType}}.": "Your address has been successfully set to {{name}}.{{domainType}}.",
|
|
9972
10348
|
"Your changes have been saved successfully.": "Your changes have been saved successfully.",
|
|
9973
10349
|
"Your customizations are linked to your .vet domain name, making them portable across different applications.": "Your customizations are linked to your .vet domain name, making them portable across different applications.",
|
|
10350
|
+
"Your domain has been unset successfully.": "Your domain has been unset successfully.",
|
|
9974
10351
|
"Your embedded wallet": "Your embedded wallet",
|
|
9975
10352
|
"Your existing domains": "Your existing domains",
|
|
9976
10353
|
"Your mobile browser blocked the login window.": "Your mobile browser blocked the login window.",
|
|
@@ -9987,6 +10364,7 @@ var en_default = {
|
|
|
9987
10364
|
"Your wallet is secured by a private key. The private key is a unique code that allows you to access your wallet. It is stored in your browser and is used to sign transactions. The private key is never shared with anyone, including the VeChain Foundation.": "Your wallet is secured by a private key. The private key is a unique code that allows you to access your wallet. It is stored in your browser and is used to sign transactions. The private key is never shared with anyone, including the VeChain Foundation.",
|
|
9988
10365
|
"Your wallet security depends on how you access it. With self-custody options like the VeWorld extension, mobile app, or hardware wallet, you have complete control over your private keys. This extension itself has no access to your private keys. When logging in with social accounts or VeChain, your wallet is created and secured by Privy and managed by VeChain, providing an easier onboarding experience while maintaining security.": "Your wallet security depends on how you access it. With self-custody options like the VeWorld extension, mobile app, or hardware wallet, you have complete control over your private keys. This extension itself has no access to your private keys. When logging in with social accounts or VeChain, your wallet is created and secured by Privy and managed by VeChain, providing an easier onboarding experience while maintaining security.",
|
|
9989
10366
|
"Your {{name}}.veworld.vet name has been claimed successfully.": "Your {{name}}.veworld.vet name has been claimed successfully.",
|
|
10367
|
+
"Your {{name}}.{{domainType}} name has been claimed successfully.": "Your {{name}}.{{domainType}} name has been claimed successfully.",
|
|
9990
10368
|
here: "here",
|
|
9991
10369
|
of: "of",
|
|
9992
10370
|
on: "on",
|
|
@@ -10043,6 +10421,7 @@ var de_default = {
|
|
|
10043
10421
|
"Are you sure you want to disconnect your wallet?": "Sind Sie sicher, dass Sie Ihr Wallet trennen m\xF6chten?",
|
|
10044
10422
|
"Are you sure you want to set your domain name to": "Sind Sie sicher, dass Sie Ihren Domainnamen auf",
|
|
10045
10423
|
"Are you sure you want to unlink {{accountType}} as a login method linked to {{accountDescription}}?": "Sind Sie sicher, dass Sie {{accountType}} als Anmeldemethode, die mit {{accountDescription}} verkn\xFCpft ist, trennen m\xF6chten?",
|
|
10424
|
+
"Are you sure you want to unset your current domain?": "Sind Sie sicher, dass Sie Ihre aktuelle Domain aufheben m\xF6chten?",
|
|
10046
10425
|
Assets: "Verm\xF6genswerte",
|
|
10047
10426
|
At: "Am",
|
|
10048
10427
|
"B3TR is the incentive token of VeBetterDAO, built on VechainThor blockchain. It has a capped supply of 1 billion tokens, emitted weekly over 12 years. B3TR is used for rewards, governance, and backing VOT3 tokens 1:1. It supports sustainability applications and DAO treasury management.": "B3TR ist der Anreiz-Token von VeBetterDAO, aufgebaut auf der VechainThor-Blockchain. Es gibt eine Obergrenze von 1 Milliarde Tokens, die w\xF6chentlich \xFCber 12 Jahre hinweg ausgegeben werden. B3TR wird f\xFCr Belohnungen, Governance und die Unterst\xFCtzung von VOT3-Token im Verh\xE4ltnis 1:1 verwendet. Es unterst\xFCtzt Nachhaltigkeitsanwendungen und das Verwaltung der DAO-Kasse.",
|
|
@@ -10082,6 +10461,7 @@ var de_default = {
|
|
|
10082
10461
|
Confirm: "Best\xE4tigen",
|
|
10083
10462
|
"Confirm Changes": "\xC4nderungen best\xE4tigen",
|
|
10084
10463
|
"Confirm Name": "Name best\xE4tigen",
|
|
10464
|
+
"Confirm Unset Domain": "L\xF6schung der Domain best\xE4tigen",
|
|
10085
10465
|
"Confirm the transaction in your wallet to complete it.": "Best\xE4tigen Sie die Transaktion in Ihrer Wallet, um sie abzuschlie\xDFen.",
|
|
10086
10466
|
"Confirm transaction": "Transaktion best\xE4tigen",
|
|
10087
10467
|
"Connect Wallet": "Wallet verbinden",
|
|
@@ -10135,6 +10515,8 @@ var de_default = {
|
|
|
10135
10515
|
Discord: "Discord",
|
|
10136
10516
|
"Display Name": "Anzeigename",
|
|
10137
10517
|
"Display name must be less than 25 characters": "Der Anzeigename muss weniger als 25 Zeichen umfassen",
|
|
10518
|
+
"Domain set": "Domain eingerichtet",
|
|
10519
|
+
"Domain unset": "Domain aufgehoben",
|
|
10138
10520
|
Done: "Fertig",
|
|
10139
10521
|
Ecosystem: "\xD6kosystem",
|
|
10140
10522
|
"Ecosystem Login": "\xD6kosystem-Anmeldung",
|
|
@@ -10292,6 +10674,7 @@ var de_default = {
|
|
|
10292
10674
|
Remove: "Entfernen",
|
|
10293
10675
|
"Remove Login Method": "Anmeldemethode entfernen",
|
|
10294
10676
|
"Remove from shortcuts": "Aus den Verkn\xFCpfungen entfernen",
|
|
10677
|
+
"Remove your current domain name": "Entfernen Sie Ihren aktuellen Domainnamen",
|
|
10295
10678
|
"Resend code": "Code erneut senden",
|
|
10296
10679
|
Retry: "Erneut versuchen",
|
|
10297
10680
|
"Safari blocked the login window. Please try again, it should work now.": "Safari hat das Anmeldefenster blockiert. Bitte versuchen Sie es erneut, jetzt sollte es funktionieren.",
|
|
@@ -10371,6 +10754,7 @@ var de_default = {
|
|
|
10371
10754
|
"Token Contract Address": "Token-Vertragsadresse",
|
|
10372
10755
|
"Token already added": "Token bereits hinzugef\xFCgt",
|
|
10373
10756
|
"Tokens transferred successfully.": "Tokens erfolgreich \xFCbertragen.",
|
|
10757
|
+
Tools: "Werkzeuge",
|
|
10374
10758
|
"Total balance": "Gesamtguthaben",
|
|
10375
10759
|
"Transaction completed!": "Transaktion abgeschlossen!",
|
|
10376
10760
|
"Transaction failed": "Transaktion fehlgeschlagen",
|
|
@@ -10390,6 +10774,11 @@ var de_default = {
|
|
|
10390
10774
|
"Unknown error": "Unbekannter Fehler",
|
|
10391
10775
|
"Unknown status": "Unbekannter Status",
|
|
10392
10776
|
"Unlink Login Method": "Anmeldemethode entfernen",
|
|
10777
|
+
"Unset current domain": "Aktuelle Domain aufheben",
|
|
10778
|
+
"Unsetting current domain": "Aufheben der aktuellen Domain",
|
|
10779
|
+
"Unsetting current domain...": "Aktuelle Domain wird aufgehoben...",
|
|
10780
|
+
"Unsetting your current VeChain nickname": "Aufheben Ihres aktuellen VeChain-Spitznamens",
|
|
10781
|
+
"Unsetting your current domain": "Aufheben Ihrer aktuellen Domain",
|
|
10393
10782
|
"Update profile image": "Profilbild aktualisieren",
|
|
10394
10783
|
"Upgrade Now": "Jetzt upgraden",
|
|
10395
10784
|
"Upgrade Smart Account to V3": "Smart Account auf V3 upgraden",
|
|
@@ -10457,8 +10846,10 @@ var de_default = {
|
|
|
10457
10846
|
"You own a Smart Account and it has priority over your wallet.": "Sie besitzen einen Smart Account und dieser hat Vorrang vor Ihrer Wallet.",
|
|
10458
10847
|
"Your account has been successfully upgraded to the latest version. You can now enjoy a better user experience, lower gas costs, and enhanced security.": "Ihr Konto wurde erfolgreich auf die neueste Version aktualisiert. Sie k\xF6nnen nun eine bessere Benutzererfahrung, niedrigere Gaskosten und erh\xF6hte Sicherheit genie\xDFen.",
|
|
10459
10848
|
"Your accounts": "Ihre Konten",
|
|
10849
|
+
"Your address has been successfully set to {{name}}.{{domainType}}.": "Ihre Adresse wurde erfolgreich auf {{name}}.{{domainType}} gesetzt.",
|
|
10460
10850
|
"Your changes have been saved successfully.": "Ihre \xC4nderungen wurden erfolgreich gespeichert.",
|
|
10461
10851
|
"Your customizations are linked to your .vet domain name, making them portable across different applications.": "Ihre Anpassungen sind mit Ihrem .vet-Domainnamen verkn\xFCpft, wodurch sie in verschiedenen Anwendungen tragbar sind.",
|
|
10852
|
+
"Your domain has been unset successfully.": "Ihre Domain wurde erfolgreich aufgehoben.",
|
|
10462
10853
|
"Your embedded wallet": "Ihr eingebettetes Portemonnaie",
|
|
10463
10854
|
"Your existing domains": "Ihre vorhandenen Domains",
|
|
10464
10855
|
"Your mobile browser blocked the login window.": "Ihr mobiler Browser hat das Anmeldefenster blockiert.",
|
|
@@ -10475,6 +10866,7 @@ var de_default = {
|
|
|
10475
10866
|
"Your wallet is secured by a private key. The private key is a unique code that allows you to access your wallet. It is stored in your browser and is used to sign transactions. The private key is never shared with anyone, including the VeChain Foundation.": "Ihr Wallet ist durch einen privaten Schl\xFCssel gesichert. Der private Schl\xFCssel ist ein einzigartiger Code, der es Ihnen erm\xF6glicht, auf Ihr Wallet zuzugreifen. Er wird in Ihrem Browser gespeichert und wird verwendet, um Transaktionen zu signieren. Der private Schl\xFCssel wird niemals mit jemandem geteilt, einschlie\xDFlich der VeChain Foundation.",
|
|
10476
10867
|
"Your wallet security depends on how you access it. With self-custody options like the VeWorld extension, mobile app, or hardware wallet, you have complete control over your private keys. This extension itself has no access to your private keys. When logging in with social accounts or VeChain, your wallet is created and secured by Privy and managed by VeChain, providing an easier onboarding experience while maintaining security.": "Die Sicherheit Ihres Wallets h\xE4ngt davon ab, wie Sie darauf zugreifen. Mit Selbstverwaltungsoptionen wie der VeWorld-Erweiterung, der mobilen App oder einer Hardware-Wallet haben Sie die vollst\xE4ndige Kontrolle \xFCber Ihre privaten Schl\xFCssel. Diese Erweiterung selbst hat keinen Zugriff auf Ihre privaten Schl\xFCssel. Beim Einloggen mit sozialen Konten oder VeChain wird Ihr Wallet von Privy erstellt und gesichert und von VeChain verwaltet, was ein einfacheres Onboarding-Erlebnis bietet und gleichzeitig die Sicherheit gew\xE4hrleistet.",
|
|
10477
10868
|
"Your {{name}}.veworld.vet name has been claimed successfully.": "Ihr {{name}}.veworld.vet-Name wurde erfolgreich beansprucht.",
|
|
10869
|
+
"Your {{name}}.{{domainType}} name has been claimed successfully.": "Ihr {{name}}.{{domainType}}-Name wurde erfolgreich beansprucht.",
|
|
10478
10870
|
here: "hier",
|
|
10479
10871
|
of: "von",
|
|
10480
10872
|
on: "am",
|
|
@@ -10531,6 +10923,7 @@ var it_default = {
|
|
|
10531
10923
|
"Are you sure you want to disconnect your wallet?": "Sei sicuro di voler disconnettere il tuo portafoglio?",
|
|
10532
10924
|
"Are you sure you want to set your domain name to": "Sei sicuro di voler impostare il tuo nome di dominio su",
|
|
10533
10925
|
"Are you sure you want to unlink {{accountType}} as a login method linked to {{accountDescription}}?": "Sei sicuro di voler scollegare {{accountType}} come metodo di accesso collegato a {{accountDescription}}?",
|
|
10926
|
+
"Are you sure you want to unset your current domain?": "Sei sicuro di voler rimuovere il tuo attuale dominio?",
|
|
10534
10927
|
Assets: "Risorse",
|
|
10535
10928
|
At: "Alle",
|
|
10536
10929
|
"B3TR is the incentive token of VeBetterDAO, built on VechainThor blockchain. It has a capped supply of 1 billion tokens, emitted weekly over 12 years. B3TR is used for rewards, governance, and backing VOT3 tokens 1:1. It supports sustainability applications and DAO treasury management.": "B3TR \xE8 il token incentivo di VeBetterDAO, creato sulla blockchain VechainThor. Ha una fornitura massima di 1 miliardo di token, emessi settimanalmente per 12 anni. B3TR viene utilizzato per ricompense, governance e supporto dei token VOT3 1:1. Supporta applicazioni di sostenibilit\xE0 e gestione del tesoro del DAO.",
|
|
@@ -10570,6 +10963,7 @@ var it_default = {
|
|
|
10570
10963
|
Confirm: "Conferma",
|
|
10571
10964
|
"Confirm Changes": "Conferma Modifiche",
|
|
10572
10965
|
"Confirm Name": "Conferma Nome",
|
|
10966
|
+
"Confirm Unset Domain": "Conferma Rimozione Dominio",
|
|
10573
10967
|
"Confirm the transaction in your wallet to complete it.": "Conferma la transazione nel tuo portafoglio per completarla.",
|
|
10574
10968
|
"Confirm transaction": "Conferma transazione",
|
|
10575
10969
|
"Connect Wallet": "Collega Portafoglio",
|
|
@@ -10623,6 +11017,8 @@ var it_default = {
|
|
|
10623
11017
|
Discord: "Discord",
|
|
10624
11018
|
"Display Name": "Nome da visualizzare",
|
|
10625
11019
|
"Display name must be less than 25 characters": "Il nome da visualizzare deve contenere meno di 25 caratteri",
|
|
11020
|
+
"Domain set": "Dominio impostato",
|
|
11021
|
+
"Domain unset": "Dominio rimosso",
|
|
10626
11022
|
Done: "Fatto",
|
|
10627
11023
|
Ecosystem: "Ecosistema",
|
|
10628
11024
|
"Ecosystem Login": "Accesso Ecosistema",
|
|
@@ -10780,6 +11176,7 @@ var it_default = {
|
|
|
10780
11176
|
Remove: "Rimuovi",
|
|
10781
11177
|
"Remove Login Method": "Rimuovi metodo di accesso",
|
|
10782
11178
|
"Remove from shortcuts": "Rimuovi dai collegamenti",
|
|
11179
|
+
"Remove your current domain name": "Rimuovi il tuo attuale nome di dominio",
|
|
10783
11180
|
"Resend code": "Reinvia codice",
|
|
10784
11181
|
Retry: "Riprova",
|
|
10785
11182
|
"Safari blocked the login window. Please try again, it should work now.": "Safari ha bloccato la finestra di accesso. Si prega di riprovare, dovrebbe funzionare ora.",
|
|
@@ -10859,6 +11256,7 @@ var it_default = {
|
|
|
10859
11256
|
"Token Contract Address": "Indirizzo del Contratto del Token",
|
|
10860
11257
|
"Token already added": "Token gi\xE0 aggiunto",
|
|
10861
11258
|
"Tokens transferred successfully.": "Token trasferiti con successo.",
|
|
11259
|
+
Tools: "Strumenti",
|
|
10862
11260
|
"Total balance": "Saldo totale",
|
|
10863
11261
|
"Transaction completed!": "Transazione completata!",
|
|
10864
11262
|
"Transaction failed": "Transazione fallita",
|
|
@@ -10878,6 +11276,11 @@ var it_default = {
|
|
|
10878
11276
|
"Unknown error": "Errore sconosciuto",
|
|
10879
11277
|
"Unknown status": "Stato sconosciuto",
|
|
10880
11278
|
"Unlink Login Method": "Scollega metodo di accesso",
|
|
11279
|
+
"Unset current domain": "Rimuovi dominio attuale",
|
|
11280
|
+
"Unsetting current domain": "Rimozione del dominio attuale",
|
|
11281
|
+
"Unsetting current domain...": "Rimozione del dominio attuale in corso...",
|
|
11282
|
+
"Unsetting your current VeChain nickname": "Rimozione del tuo attuale soprannome VeChain",
|
|
11283
|
+
"Unsetting your current domain": "Rimozione del tuo attuale dominio",
|
|
10881
11284
|
"Update profile image": "Aggiorna immagine del profilo",
|
|
10882
11285
|
"Upgrade Now": "Aggiorna Ora",
|
|
10883
11286
|
"Upgrade Smart Account to V3": "Aggiorna Conto Smart a V3",
|
|
@@ -10945,8 +11348,10 @@ var it_default = {
|
|
|
10945
11348
|
"You own a Smart Account and it has priority over your wallet.": "Possiedi un Account Smart e ha priorit\xE0 sul tuo portafoglio.",
|
|
10946
11349
|
"Your account has been successfully upgraded to the latest version. You can now enjoy a better user experience, lower gas costs, and enhanced security.": "Il tuo account \xE8 stato aggiornato con successo all'ultima versione. Ora puoi godere di un'esperienza utente migliorata, costi del gas ridotti e maggiore sicurezza.",
|
|
10947
11350
|
"Your accounts": "I tuoi account",
|
|
11351
|
+
"Your address has been successfully set to {{name}}.{{domainType}}.": "Il tuo indirizzo \xE8 stato impostato correttamente su {{name}}.{{domainType}}.",
|
|
10948
11352
|
"Your changes have been saved successfully.": "Le tue modifiche sono state salvate con successo.",
|
|
10949
11353
|
"Your customizations are linked to your .vet domain name, making them portable across different applications.": "Le tue personalizzazioni sono collegate al tuo nome di dominio .vet, rendendole portabili tra diverse applicazioni.",
|
|
11354
|
+
"Your domain has been unset successfully.": "Il tuo dominio \xE8 stato rimosso con successo.",
|
|
10950
11355
|
"Your embedded wallet": "Il tuo portafoglio integrato",
|
|
10951
11356
|
"Your existing domains": "I tuoi domini esistenti",
|
|
10952
11357
|
"Your mobile browser blocked the login window.": "Il tuo browser mobile ha bloccato la finestra di accesso.",
|
|
@@ -10963,6 +11368,7 @@ var it_default = {
|
|
|
10963
11368
|
"Your wallet is secured by a private key. The private key is a unique code that allows you to access your wallet. It is stored in your browser and is used to sign transactions. The private key is never shared with anyone, including the VeChain Foundation.": "Il tuo portafoglio \xE8 protetto da una chiave privata. La chiave privata \xE8 un codice unico che ti consente di accedere al tuo portafoglio. \xC8 memorizzata nel tuo browser e viene utilizzata per firmare le transazioni. La chiave privata non viene mai condivisa con nessuno, inclusa la Fondazione VeChain.",
|
|
10964
11369
|
"Your wallet security depends on how you access it. With self-custody options like the VeWorld extension, mobile app, or hardware wallet, you have complete control over your private keys. This extension itself has no access to your private keys. When logging in with social accounts or VeChain, your wallet is created and secured by Privy and managed by VeChain, providing an easier onboarding experience while maintaining security.": "La sicurezza del tuo portafoglio dipende da come vi accedi. Con opzioni di autocustodia come l'estensione VeWorld, l'app mobile o il portafoglio hardware, hai il controllo completo sulle tue chiavi private. Questa estensione stessa non ha accesso alle tue chiavi private. Quando accedi con i social account o VeChain, il tuo portafoglio viene creato e protetto da Privy e gestito da VeChain, offrendo un'esperienza di onboarding pi\xF9 semplice mantenendo la sicurezza.",
|
|
10965
11370
|
"Your {{name}}.veworld.vet name has been claimed successfully.": "Il tuo nome {{name}}.veworld.vet \xE8 stato rivendicato con successo.",
|
|
11371
|
+
"Your {{name}}.{{domainType}} name has been claimed successfully.": "Il tuo nome {{name}}.{{domainType}} \xE8 stato rivendicato con successo.",
|
|
10966
11372
|
here: "qui",
|
|
10967
11373
|
of: "di",
|
|
10968
11374
|
on: "su",
|
|
@@ -11019,6 +11425,7 @@ var fr_default = {
|
|
|
11019
11425
|
"Are you sure you want to disconnect your wallet?": "\xCAtes-vous s\xFBr de vouloir d\xE9connecter votre portefeuille ?",
|
|
11020
11426
|
"Are you sure you want to set your domain name to": "\xCAtes-vous s\xFBr de vouloir d\xE9finir votre nom de domaine sur",
|
|
11021
11427
|
"Are you sure you want to unlink {{accountType}} as a login method linked to {{accountDescription}}?": "\xCAtes-vous s\xFBr de vouloir dissocier {{accountType}} en tant que m\xE9thode de connexion li\xE9e \xE0 {{accountDescription}} ?",
|
|
11428
|
+
"Are you sure you want to unset your current domain?": "\xCAtes-vous s\xFBr de vouloir d\xE9s\xE9lectionner votre domaine actuel ?",
|
|
11022
11429
|
Assets: "Actifs",
|
|
11023
11430
|
At: "\xC0",
|
|
11024
11431
|
"B3TR is the incentive token of VeBetterDAO, built on VechainThor blockchain. It has a capped supply of 1 billion tokens, emitted weekly over 12 years. B3TR is used for rewards, governance, and backing VOT3 tokens 1:1. It supports sustainability applications and DAO treasury management.": "B3TR est le token incitatif de VeBetterDAO, construit sur la blockchain VechainThor. Il a un approvisionnement limit\xE9 \xE0 1 milliard de tokens, \xE9mis de fa\xE7on hebdomadaire sur 12 ans. B3TR est utilis\xE9 pour les r\xE9compenses, la gouvernance et pour soutenir les tokens VOT3 \xE0 un taux de 1:1. Il soutient les applications de durabilit\xE9 et la gestion de la tr\xE9sorerie DAO.",
|
|
@@ -11058,6 +11465,7 @@ var fr_default = {
|
|
|
11058
11465
|
Confirm: "Confirmer",
|
|
11059
11466
|
"Confirm Changes": "Confirmer les modifications",
|
|
11060
11467
|
"Confirm Name": "Confirmer le nom",
|
|
11468
|
+
"Confirm Unset Domain": "Confirmer la d\xE9s\xE9lection du domaine",
|
|
11061
11469
|
"Confirm the transaction in your wallet to complete it.": "Confirmez la transaction dans votre portefeuille pour la terminer.",
|
|
11062
11470
|
"Confirm transaction": "Confirmer la transaction",
|
|
11063
11471
|
"Connect Wallet": "Connecter le portefeuille",
|
|
@@ -11111,6 +11519,8 @@ var fr_default = {
|
|
|
11111
11519
|
Discord: "Discord",
|
|
11112
11520
|
"Display Name": "Nom affich\xE9",
|
|
11113
11521
|
"Display name must be less than 25 characters": "Le nom affich\xE9 doit comporter moins de 25 caract\xE8res",
|
|
11522
|
+
"Domain set": "Domaine d\xE9fini",
|
|
11523
|
+
"Domain unset": "Domaine d\xE9s\xE9lectionn\xE9",
|
|
11114
11524
|
Done: "Fait",
|
|
11115
11525
|
Ecosystem: "\xC9cosyst\xE8me",
|
|
11116
11526
|
"Ecosystem Login": "Connexion \xE0 l'\xE9cosyst\xE8me",
|
|
@@ -11268,6 +11678,7 @@ var fr_default = {
|
|
|
11268
11678
|
Remove: "Supprimer",
|
|
11269
11679
|
"Remove Login Method": "Supprimer la m\xE9thode de connexion",
|
|
11270
11680
|
"Remove from shortcuts": "Retirer des raccourcis",
|
|
11681
|
+
"Remove your current domain name": "Supprimer votre nom de domaine actuel",
|
|
11271
11682
|
"Resend code": "Renvoyer le code",
|
|
11272
11683
|
Retry: "R\xE9essayer",
|
|
11273
11684
|
"Safari blocked the login window. Please try again, it should work now.": "Safari a bloqu\xE9 la fen\xEAtre de connexion. Veuillez r\xE9essayer, cela devrait fonctionner maintenant.",
|
|
@@ -11347,6 +11758,7 @@ var fr_default = {
|
|
|
11347
11758
|
"Token Contract Address": "Adresse du contrat du jeton",
|
|
11348
11759
|
"Token already added": "Jeton d\xE9j\xE0 ajout\xE9",
|
|
11349
11760
|
"Tokens transferred successfully.": "Jetons transf\xE9r\xE9s avec succ\xE8s.",
|
|
11761
|
+
Tools: "Outils",
|
|
11350
11762
|
"Total balance": "Solde total",
|
|
11351
11763
|
"Transaction completed!": "Transaction termin\xE9e !",
|
|
11352
11764
|
"Transaction failed": "La transaction a \xE9chou\xE9",
|
|
@@ -11366,6 +11778,11 @@ var fr_default = {
|
|
|
11366
11778
|
"Unknown error": "Erreur inconnue",
|
|
11367
11779
|
"Unknown status": "Statut inconnu",
|
|
11368
11780
|
"Unlink Login Method": "Dissocier la m\xE9thode de connexion",
|
|
11781
|
+
"Unset current domain": "D\xE9s\xE9lectionner le domaine actuel",
|
|
11782
|
+
"Unsetting current domain": "D\xE9s\xE9lection du domaine actuel",
|
|
11783
|
+
"Unsetting current domain...": "D\xE9s\xE9lection du domaine actuel...",
|
|
11784
|
+
"Unsetting your current VeChain nickname": "D\xE9s\xE9lection de votre surnom VeChain actuel",
|
|
11785
|
+
"Unsetting your current domain": "D\xE9s\xE9lection de votre domaine actuel",
|
|
11369
11786
|
"Update profile image": "Mettre \xE0 jour l'image de profil",
|
|
11370
11787
|
"Upgrade Now": "Mettre \xE0 niveau maintenant",
|
|
11371
11788
|
"Upgrade Smart Account to V3": "Mettre \xE0 niveau le compte intelligent vers V3",
|
|
@@ -11433,8 +11850,10 @@ var fr_default = {
|
|
|
11433
11850
|
"You own a Smart Account and it has priority over your wallet.": "Vous poss\xE9dez un Smart Account et il a la priorit\xE9 sur votre portefeuille.",
|
|
11434
11851
|
"Your account has been successfully upgraded to the latest version. You can now enjoy a better user experience, lower gas costs, and enhanced security.": "Votre compte a \xE9t\xE9 mis \xE0 niveau avec succ\xE8s vers la derni\xE8re version. Vous pouvez d\xE9sormais profiter d'une meilleure exp\xE9rience utilisateur, de co\xFBts de gaz r\xE9duits et d'une s\xE9curit\xE9 renforc\xE9e.",
|
|
11435
11852
|
"Your accounts": "Vos comptes",
|
|
11853
|
+
"Your address has been successfully set to {{name}}.{{domainType}}.": "Votre adresse a \xE9t\xE9 d\xE9finie avec succ\xE8s sur {{name}}.{{domainType}}.",
|
|
11436
11854
|
"Your changes have been saved successfully.": "Vos modifications ont \xE9t\xE9 enregistr\xE9es avec succ\xE8s.",
|
|
11437
11855
|
"Your customizations are linked to your .vet domain name, making them portable across different applications.": "Vos personnalisations sont li\xE9es \xE0 votre nom de domaine .vet, ce qui les rend portables \xE0 travers diff\xE9rentes applications.",
|
|
11856
|
+
"Your domain has been unset successfully.": "Votre domaine a \xE9t\xE9 d\xE9s\xE9lectionn\xE9 avec succ\xE8s.",
|
|
11438
11857
|
"Your embedded wallet": "Votre portefeuille int\xE9gr\xE9",
|
|
11439
11858
|
"Your existing domains": "Vos domaines existants",
|
|
11440
11859
|
"Your mobile browser blocked the login window.": "Votre navigateur mobile a bloqu\xE9 la fen\xEAtre de connexion.",
|
|
@@ -11451,6 +11870,7 @@ var fr_default = {
|
|
|
11451
11870
|
"Your wallet is secured by a private key. The private key is a unique code that allows you to access your wallet. It is stored in your browser and is used to sign transactions. The private key is never shared with anyone, including the VeChain Foundation.": "Votre portefeuille est s\xE9curis\xE9 par une cl\xE9 priv\xE9e. La cl\xE9 priv\xE9e est un code unique qui vous permet d'acc\xE9der \xE0 votre portefeuille. Elle est stock\xE9e dans votre navigateur et est utilis\xE9e pour signer des transactions. La cl\xE9 priv\xE9e n'est jamais partag\xE9e avec qui que ce soit, y compris la Fondation VeChain.",
|
|
11452
11871
|
"Your wallet security depends on how you access it. With self-custody options like the VeWorld extension, mobile app, or hardware wallet, you have complete control over your private keys. This extension itself has no access to your private keys. When logging in with social accounts or VeChain, your wallet is created and secured by Privy and managed by VeChain, providing an easier onboarding experience while maintaining security.": "La s\xE9curit\xE9 de votre portefeuille d\xE9pend de la fa\xE7on dont vous y acc\xE9dez. Avec des options d'auto-gardiennage comme l'extension VeWorld, l'application mobile ou le portefeuille mat\xE9riel, vous avez un contr\xF4le complet sur vos cl\xE9s priv\xE9es. Cette extension en elle-m\xEAme n'a pas acc\xE8s \xE0 vos cl\xE9s priv\xE9es. Lors de la connexion avec des comptes sociaux ou VeChain, votre portefeuille est cr\xE9\xE9 et s\xE9curis\xE9 par Privy et g\xE9r\xE9 par VeChain, offrant une exp\xE9rience d'int\xE9gration plus facile tout en maintenant la s\xE9curit\xE9.",
|
|
11453
11872
|
"Your {{name}}.veworld.vet name has been claimed successfully.": "Votre nom {{name}}.veworld.vet a \xE9t\xE9 revendiqu\xE9 avec succ\xE8s.",
|
|
11873
|
+
"Your {{name}}.{{domainType}} name has been claimed successfully.": "Votre nom {{name}}.{{domainType}} a \xE9t\xE9 revendiqu\xE9 avec succ\xE8s.",
|
|
11454
11874
|
here: "ici",
|
|
11455
11875
|
of: "de",
|
|
11456
11876
|
on: "le",
|
|
@@ -11507,6 +11927,7 @@ var es_default = {
|
|
|
11507
11927
|
"Are you sure you want to disconnect your wallet?": "\xBFEst\xE1s seguro de que quieres desconectar tu billetera?",
|
|
11508
11928
|
"Are you sure you want to set your domain name to": "\xBFEst\xE1s seguro de que quieres establecer tu nombre de dominio en",
|
|
11509
11929
|
"Are you sure you want to unlink {{accountType}} as a login method linked to {{accountDescription}}?": "\xBFEst\xE1 seguro de que desea desvincular {{accountType}} como m\xE9todo de inicio de sesi\xF3n vinculado a {{accountDescription}}?",
|
|
11930
|
+
"Are you sure you want to unset your current domain?": "\xBFEst\xE1 seguro de que desea desactivar su dominio actual?",
|
|
11510
11931
|
Assets: "Activos",
|
|
11511
11932
|
At: "En",
|
|
11512
11933
|
"B3TR is the incentive token of VeBetterDAO, built on VechainThor blockchain. It has a capped supply of 1 billion tokens, emitted weekly over 12 years. B3TR is used for rewards, governance, and backing VOT3 tokens 1:1. It supports sustainability applications and DAO treasury management.": "B3TR es el token de incentivo de VeBetterDAO, construido sobre la blockchain VechainThor. Tiene un suministro limitado de 1 mil millones de tokens, emitidos semanalmente durante 12 a\xF1os. B3TR se utiliza para recompensas, gobernanza y respaldar tokens VOT3 en una proporci\xF3n de 1:1. Apoya aplicaciones sostenibles y la gesti\xF3n del tesoro del DAO.",
|
|
@@ -11546,6 +11967,7 @@ var es_default = {
|
|
|
11546
11967
|
Confirm: "Confirmar",
|
|
11547
11968
|
"Confirm Changes": "Confirmar cambios",
|
|
11548
11969
|
"Confirm Name": "Confirmar Nombre",
|
|
11970
|
+
"Confirm Unset Domain": "Confirmar desactivaci\xF3n de dominio",
|
|
11549
11971
|
"Confirm the transaction in your wallet to complete it.": "Confirme la transacci\xF3n en su monedero para completarla.",
|
|
11550
11972
|
"Confirm transaction": "Confirmar transacci\xF3n",
|
|
11551
11973
|
"Connect Wallet": "Conectar Monedero",
|
|
@@ -11599,6 +12021,8 @@ var es_default = {
|
|
|
11599
12021
|
Discord: "Discord",
|
|
11600
12022
|
"Display Name": "Nombre para mostrar",
|
|
11601
12023
|
"Display name must be less than 25 characters": "El nombre para mostrar debe tener menos de 25 caracteres",
|
|
12024
|
+
"Domain set": "Dominio configurado",
|
|
12025
|
+
"Domain unset": "Dominio desactivado",
|
|
11602
12026
|
Done: "Hecho",
|
|
11603
12027
|
Ecosystem: "Ecosistema",
|
|
11604
12028
|
"Ecosystem Login": "Inicio de sesi\xF3n en el ecosistema",
|
|
@@ -11756,6 +12180,7 @@ var es_default = {
|
|
|
11756
12180
|
Remove: "Eliminar",
|
|
11757
12181
|
"Remove Login Method": "Eliminar m\xE9todo de inicio de sesi\xF3n",
|
|
11758
12182
|
"Remove from shortcuts": "Eliminar de los accesos directos",
|
|
12183
|
+
"Remove your current domain name": "Eliminar su nombre de dominio actual",
|
|
11759
12184
|
"Resend code": "Reenviar c\xF3digo",
|
|
11760
12185
|
Retry: "Reintentar",
|
|
11761
12186
|
"Safari blocked the login window. Please try again, it should work now.": "Safari bloque\xF3 la ventana de inicio de sesi\xF3n. Por favor, int\xE9ntelo de nuevo, deber\xEDa funcionar ahora.",
|
|
@@ -11835,6 +12260,7 @@ var es_default = {
|
|
|
11835
12260
|
"Token Contract Address": "Direcci\xF3n del contrato del token",
|
|
11836
12261
|
"Token already added": "Token ya agregado",
|
|
11837
12262
|
"Tokens transferred successfully.": "Tokens transferidos exitosamente.",
|
|
12263
|
+
Tools: "Herramientas",
|
|
11838
12264
|
"Total balance": "Saldo total",
|
|
11839
12265
|
"Transaction completed!": "\xA1Transacci\xF3n completada!",
|
|
11840
12266
|
"Transaction failed": "Transacci\xF3n fallida",
|
|
@@ -11854,6 +12280,11 @@ var es_default = {
|
|
|
11854
12280
|
"Unknown error": "Error desconocido",
|
|
11855
12281
|
"Unknown status": "Estado desconocido",
|
|
11856
12282
|
"Unlink Login Method": "Desvincular m\xE9todo de inicio de sesi\xF3n",
|
|
12283
|
+
"Unset current domain": "Desactivar dominio actual",
|
|
12284
|
+
"Unsetting current domain": "Desactivando dominio actual",
|
|
12285
|
+
"Unsetting current domain...": "Desactivando dominio actual...",
|
|
12286
|
+
"Unsetting your current VeChain nickname": "Desactivando su apodo de VeChain actual",
|
|
12287
|
+
"Unsetting your current domain": "Desactivando su dominio actual",
|
|
11857
12288
|
"Update profile image": "Actualizar imagen de perfil",
|
|
11858
12289
|
"Upgrade Now": "Actualizar ahora",
|
|
11859
12290
|
"Upgrade Smart Account to V3": "Actualizar cuenta inteligente a V3",
|
|
@@ -11921,8 +12352,10 @@ var es_default = {
|
|
|
11921
12352
|
"You own a Smart Account and it has priority over your wallet.": "Posees una Smart Account y tiene prioridad sobre tu billetera.",
|
|
11922
12353
|
"Your account has been successfully upgraded to the latest version. You can now enjoy a better user experience, lower gas costs, and enhanced security.": "Su cuenta ha sido actualizada exitosamente a la \xFAltima versi\xF3n. Ahora puede disfrutar de una mejor experiencia de usuario, menores costos de gas y mayor seguridad.",
|
|
11923
12354
|
"Your accounts": "Tus cuentas",
|
|
12355
|
+
"Your address has been successfully set to {{name}}.{{domainType}}.": "Su direcci\xF3n ha sido configurada exitosamente a {{name}}.{{domainType}}.",
|
|
11924
12356
|
"Your changes have been saved successfully.": "Tus cambios han sido guardados exitosamente.",
|
|
11925
12357
|
"Your customizations are linked to your .vet domain name, making them portable across different applications.": "Tus personalizaciones est\xE1n vinculadas a tu nombre de dominio .vet, lo que las hace port\xE1tiles a trav\xE9s de diferentes aplicaciones.",
|
|
12358
|
+
"Your domain has been unset successfully.": "Su dominio ha sido desactivado exitosamente.",
|
|
11926
12359
|
"Your embedded wallet": "Su billetera integrada",
|
|
11927
12360
|
"Your existing domains": "Tus dominios existentes",
|
|
11928
12361
|
"Your mobile browser blocked the login window.": "Tu navegador m\xF3vil bloque\xF3 la ventana de inicio de sesi\xF3n.",
|
|
@@ -11939,6 +12372,7 @@ var es_default = {
|
|
|
11939
12372
|
"Your wallet is secured by a private key. The private key is a unique code that allows you to access your wallet. It is stored in your browser and is used to sign transactions. The private key is never shared with anyone, including the VeChain Foundation.": "Tu billetera est\xE1 protegida por una clave privada. La clave privada es un c\xF3digo \xFAnico que te permite acceder a tu billetera. Se almacena en tu navegador y se utiliza para firmar transacciones. La clave privada nunca se comparte con nadie, incluida la Fundaci\xF3n VeChain.",
|
|
11940
12373
|
"Your wallet security depends on how you access it. With self-custody options like the VeWorld extension, mobile app, or hardware wallet, you have complete control over your private keys. This extension itself has no access to your private keys. When logging in with social accounts or VeChain, your wallet is created and secured by Privy and managed by VeChain, providing an easier onboarding experience while maintaining security.": "La seguridad de tu billetera depende de c\xF3mo accedas a ella. Con opciones de autocustodia como la extensi\xF3n VeWorld, la aplicaci\xF3n m\xF3vil o la billetera de hardware, tienes control total sobre tus claves privadas. Esta extensi\xF3n no tiene acceso a tus claves privadas. Al iniciar sesi\xF3n con cuentas sociales o VeChain, tu billetera es creada y asegurada por Privy y gestionada por VeChain, ofreciendo una experiencia de integraci\xF3n m\xE1s sencilla mientras se mantiene la seguridad.",
|
|
11941
12374
|
"Your {{name}}.veworld.vet name has been claimed successfully.": "Tu nombre {{name}}.veworld.vet ha sido reclamado exitosamente.",
|
|
12375
|
+
"Your {{name}}.{{domainType}} name has been claimed successfully.": "Su nombre {{name}}.{{domainType}} ha sido reclamado exitosamente.",
|
|
11942
12376
|
here: "aqu\xED",
|
|
11943
12377
|
of: "de",
|
|
11944
12378
|
on: "en",
|
|
@@ -11995,6 +12429,7 @@ var zh_default = {
|
|
|
11995
12429
|
"Are you sure you want to disconnect your wallet?": "\u60A8\u786E\u5B9A\u8981\u65AD\u5F00\u94B1\u5305\u8FDE\u63A5\u5417\uFF1F",
|
|
11996
12430
|
"Are you sure you want to set your domain name to": "\u60A8\u786E\u5B9A\u8981\u5C06\u60A8\u7684\u57DF\u540D\u8BBE\u7F6E\u4E3A",
|
|
11997
12431
|
"Are you sure you want to unlink {{accountType}} as a login method linked to {{accountDescription}}?": "\u60A8\u786E\u5B9A\u8981\u53D6\u6D88\u94FE\u63A5 {{accountDescription}} \u4E2D\u4F5C\u4E3A\u767B\u5F55\u65B9\u5F0F\u4E4B\u4E00\u7684 {{accountType}} \u5417\uFF1F",
|
|
12432
|
+
"Are you sure you want to unset your current domain?": "\u60A8\u786E\u5B9A\u8981\u53D6\u6D88\u8BBE\u7F6E\u5F53\u524D\u57DF\u540D\u5417\uFF1F",
|
|
11998
12433
|
Assets: "\u8D44\u4EA7",
|
|
11999
12434
|
At: "\u5728",
|
|
12000
12435
|
"B3TR is the incentive token of VeBetterDAO, built on VechainThor blockchain. It has a capped supply of 1 billion tokens, emitted weekly over 12 years. B3TR is used for rewards, governance, and backing VOT3 tokens 1:1. It supports sustainability applications and DAO treasury management.": "B3TR \u662F VeBetterDAO \u7684\u6FC0\u52B1\u6027\u4EE3\u5E01\uFF0C\u57FA\u4E8E VechainThor \u533A\u5757\u94FE\u6784\u5EFA\u3002\u5176\u4F9B\u5E94\u91CF\u4E0A\u9650\u4E3A 10 \u4EBF\u4E2A\u4EE3\u5E01\uFF0C\u5206 12 \u5E74\u6BCF\u5468\u53D1\u653E\u3002B3TR \u7528\u4E8E\u5956\u52B1\u3001\u6CBB\u7406\u4EE5\u53CA 1:1 \u652F\u6301 VOT3 \u4EE3\u5E01\u3002\u5B83\u652F\u6301\u53EF\u6301\u7EED\u6027\u5E94\u7528\u548C DAO \u8D22\u52A1\u7BA1\u7406\u3002",
|
|
@@ -12034,6 +12469,7 @@ var zh_default = {
|
|
|
12034
12469
|
Confirm: "\u786E\u8BA4",
|
|
12035
12470
|
"Confirm Changes": "\u786E\u8BA4\u66F4\u6539",
|
|
12036
12471
|
"Confirm Name": "\u786E\u8BA4\u59D3\u540D",
|
|
12472
|
+
"Confirm Unset Domain": "\u786E\u8BA4\u53D6\u6D88\u8BBE\u7F6E\u57DF\u540D",
|
|
12037
12473
|
"Confirm the transaction in your wallet to complete it.": "\u5728\u60A8\u7684\u94B1\u5305\u4E2D\u786E\u8BA4\u4EA4\u6613\u4EE5\u5B8C\u6210\u5B83\u3002",
|
|
12038
12474
|
"Confirm transaction": "\u786E\u8BA4\u4EA4\u6613",
|
|
12039
12475
|
"Connect Wallet": "\u8FDE\u63A5\u94B1\u5305",
|
|
@@ -12087,6 +12523,8 @@ var zh_default = {
|
|
|
12087
12523
|
Discord: "Discord",
|
|
12088
12524
|
"Display Name": "\u663E\u793A\u540D\u79F0",
|
|
12089
12525
|
"Display name must be less than 25 characters": "\u663E\u793A\u540D\u79F0\u5FC5\u987B\u5C11\u4E8E25\u4E2A\u5B57\u7B26",
|
|
12526
|
+
"Domain set": "\u57DF\u540D\u5DF2\u8BBE\u7F6E",
|
|
12527
|
+
"Domain unset": "\u57DF\u540D\u5DF2\u53D6\u6D88\u8BBE\u7F6E",
|
|
12090
12528
|
Done: "\u5B8C\u6210",
|
|
12091
12529
|
Ecosystem: "\u751F\u6001\u7CFB\u7EDF",
|
|
12092
12530
|
"Ecosystem Login": "\u751F\u6001\u7CFB\u7EDF\u767B\u5F55",
|
|
@@ -12244,6 +12682,7 @@ var zh_default = {
|
|
|
12244
12682
|
Remove: "\u79FB\u9664",
|
|
12245
12683
|
"Remove Login Method": "\u79FB\u9664\u767B\u5F55\u65B9\u5F0F",
|
|
12246
12684
|
"Remove from shortcuts": "\u4ECE\u5FEB\u6377\u65B9\u5F0F\u4E2D\u79FB\u9664",
|
|
12685
|
+
"Remove your current domain name": "\u79FB\u9664\u5F53\u524D\u57DF\u540D",
|
|
12247
12686
|
"Resend code": "\u91CD\u65B0\u53D1\u9001\u4EE3\u7801",
|
|
12248
12687
|
Retry: "\u91CD\u8BD5",
|
|
12249
12688
|
"Safari blocked the login window. Please try again, it should work now.": "Safari \u963B\u6B62\u4E86\u767B\u5F55\u7A97\u53E3\u3002\u8BF7\u518D\u6B21\u5C1D\u8BD5\uFF0C\u73B0\u5728\u5E94\u8BE5\u53EF\u4EE5\u6B63\u5E38\u5DE5\u4F5C\u3002",
|
|
@@ -12323,6 +12762,7 @@ var zh_default = {
|
|
|
12323
12762
|
"Token Contract Address": "\u4EE3\u5E01\u5408\u7EA6\u5730\u5740",
|
|
12324
12763
|
"Token already added": "\u4EE3\u5E01\u5DF2\u6DFB\u52A0",
|
|
12325
12764
|
"Tokens transferred successfully.": "\u4EE3\u5E01\u8F6C\u79FB\u6210\u529F\u3002",
|
|
12765
|
+
Tools: "\u5DE5\u5177",
|
|
12326
12766
|
"Total balance": "\u603B\u4F59\u989D",
|
|
12327
12767
|
"Transaction completed!": "\u4EA4\u6613\u5B8C\u6210\uFF01",
|
|
12328
12768
|
"Transaction failed": "\u4EA4\u6613\u5931\u8D25",
|
|
@@ -12342,6 +12782,11 @@ var zh_default = {
|
|
|
12342
12782
|
"Unknown error": "\u672A\u77E5\u9519\u8BEF",
|
|
12343
12783
|
"Unknown status": "\u672A\u77E5\u72B6\u6001",
|
|
12344
12784
|
"Unlink Login Method": "\u53D6\u6D88\u94FE\u63A5\u767B\u5F55\u65B9\u5F0F",
|
|
12785
|
+
"Unset current domain": "\u53D6\u6D88\u8BBE\u7F6E\u5F53\u524D\u57DF\u540D",
|
|
12786
|
+
"Unsetting current domain": "\u6B63\u5728\u53D6\u6D88\u8BBE\u7F6E\u5F53\u524D\u57DF\u540D",
|
|
12787
|
+
"Unsetting current domain...": "\u6B63\u5728\u53D6\u6D88\u8BBE\u7F6E\u5F53\u524D\u57DF\u540D...",
|
|
12788
|
+
"Unsetting your current VeChain nickname": "\u53D6\u6D88\u8BBE\u7F6E\u60A8\u5F53\u524D\u7684VeChain\u6635\u79F0",
|
|
12789
|
+
"Unsetting your current domain": "\u53D6\u6D88\u8BBE\u7F6E\u60A8\u5F53\u524D\u7684\u57DF\u540D",
|
|
12345
12790
|
"Update profile image": "\u66F4\u65B0\u8D44\u6599\u56FE\u7247",
|
|
12346
12791
|
"Upgrade Now": "\u7ACB\u5373\u5347\u7EA7",
|
|
12347
12792
|
"Upgrade Smart Account to V3": "\u5C06\u667A\u80FD\u8D26\u6237\u5347\u7EA7\u5230V3",
|
|
@@ -12409,8 +12854,10 @@ var zh_default = {
|
|
|
12409
12854
|
"You own a Smart Account and it has priority over your wallet.": "\u60A8\u62E5\u6709\u4E00\u4E2A\u667A\u80FD\u8D26\u6237\uFF0C\u5B83\u4F18\u5148\u4E8E\u60A8\u7684\u94B1\u5305\u3002",
|
|
12410
12855
|
"Your account has been successfully upgraded to the latest version. You can now enjoy a better user experience, lower gas costs, and enhanced security.": "\u60A8\u7684\u8D26\u6237\u5DF2\u6210\u529F\u5347\u7EA7\u5230\u6700\u65B0\u7248\u672C\u3002\u60A8\u73B0\u5728\u53EF\u4EE5\u4EAB\u53D7\u66F4\u597D\u7684\u7528\u6237\u4F53\u9A8C\u3001\u66F4\u4F4E\u7684\u71C3\u6C14\u8D39\u7528\u548C\u589E\u5F3A\u7684\u5B89\u5168\u6027\u3002",
|
|
12411
12856
|
"Your accounts": "\u60A8\u7684\u8D26\u6237",
|
|
12857
|
+
"Your address has been successfully set to {{name}}.{{domainType}}.": "\u60A8\u7684\u5730\u5740\u5DF2\u6210\u529F\u8BBE\u7F6E\u4E3A{{name}}.{{domainType}}\u3002",
|
|
12412
12858
|
"Your changes have been saved successfully.": "\u60A8\u7684\u66F4\u6539\u5DF2\u6210\u529F\u4FDD\u5B58\u3002",
|
|
12413
12859
|
"Your customizations are linked to your .vet domain name, making them portable across different applications.": "\u60A8\u7684\u81EA\u5B9A\u4E49\u8BBE\u7F6E\u4E0E\u60A8\u7684.vet\u57DF\u540D\u76F8\u5173\u8054\uFF0C\u4F7F\u5176\u80FD\u591F\u5728\u4E0D\u540C\u7684\u5E94\u7528\u7A0B\u5E8F\u4E2D\u6D41\u7545\u4F7F\u7528\u3002",
|
|
12860
|
+
"Your domain has been unset successfully.": "\u60A8\u7684\u57DF\u540D\u5DF2\u6210\u529F\u53D6\u6D88\u8BBE\u7F6E\u3002",
|
|
12414
12861
|
"Your embedded wallet": "\u60A8\u7684\u5D4C\u5165\u94B1\u5305",
|
|
12415
12862
|
"Your existing domains": "\u60A8\u73B0\u6709\u7684\u57DF\u540D",
|
|
12416
12863
|
"Your mobile browser blocked the login window.": "\u60A8\u7684\u79FB\u52A8\u6D4F\u89C8\u5668\u963B\u6B62\u4E86\u767B\u5F55\u7A97\u53E3\u3002",
|
|
@@ -12427,6 +12874,7 @@ var zh_default = {
|
|
|
12427
12874
|
"Your wallet is secured by a private key. The private key is a unique code that allows you to access your wallet. It is stored in your browser and is used to sign transactions. The private key is never shared with anyone, including the VeChain Foundation.": "\u60A8\u7684\u94B1\u5305\u7531\u79C1\u94A5\u4FDD\u62A4\u3002\u79C1\u94A5\u662F\u4E00\u4E2A\u72EC\u7279\u7684\u4EE3\u7801\uFF0C\u5141\u8BB8\u60A8\u8BBF\u95EE\u60A8\u7684\u94B1\u5305\u3002\u5B83\u5B58\u50A8\u5728\u60A8\u7684\u6D4F\u89C8\u5668\u4E2D\uFF0C\u7528\u4E8E\u7B7E\u7F72\u4EA4\u6613\u3002\u79C1\u94A5\u4E0D\u4F1A\u4E0E\u4EFB\u4F55\u4EBA\u5171\u4EAB\uFF0C\u5305\u62EC\u552F\u94FE\u57FA\u91D1\u4F1A\u3002",
|
|
12428
12875
|
"Your wallet security depends on how you access it. With self-custody options like the VeWorld extension, mobile app, or hardware wallet, you have complete control over your private keys. This extension itself has no access to your private keys. When logging in with social accounts or VeChain, your wallet is created and secured by Privy and managed by VeChain, providing an easier onboarding experience while maintaining security.": "\u60A8\u7684\u94B1\u5305\u5B89\u5168\u6027\u53D6\u51B3\u4E8E\u60A8\u5982\u4F55\u8BBF\u95EE\u5B83\u3002\u901A\u8FC7 VeWorld \u63D2\u4EF6\u3001\u79FB\u52A8\u5E94\u7528\u6216\u786C\u4EF6\u94B1\u5305\u7B49\u81EA\u6211\u6258\u7BA1\u9009\u9879\uFF0C\u60A8\u53EF\u4EE5\u5B8C\u5168\u63A7\u5236\u60A8\u7684\u79C1\u94A5\u3002\u6B64\u63D2\u4EF6\u672C\u8EAB\u65E0\u6CD5\u8BBF\u95EE\u60A8\u7684\u79C1\u94A5\u3002\u4F7F\u7528\u793E\u4EA4\u8D26\u6237\u6216\u552F\u94FE\u767B\u5F55\u65F6\uFF0C\u60A8\u7684\u94B1\u5305\u7531 Privy \u521B\u5EFA\u548C\u4FDD\u62A4\uFF0C\u5E76\u7531\u552F\u94FE\u7BA1\u7406\uFF0C\u63D0\u4F9B\u66F4\u7B80\u5355\u7684\u5165\u95E8\u4F53\u9A8C\uFF0C\u540C\u65F6\u4FDD\u6301\u5B89\u5168\u6027\u3002",
|
|
12429
12876
|
"Your {{name}}.veworld.vet name has been claimed successfully.": "\u60A8\u7684 {{name}}.veworld.vet \u540D\u5B57\u5DF2\u6210\u529F\u6CE8\u518C\u3002",
|
|
12877
|
+
"Your {{name}}.{{domainType}} name has been claimed successfully.": "\u60A8\u7684{{name}}.{{domainType}}\u540D\u79F0\u5DF2\u6210\u529F\u7533\u8BF7\u3002",
|
|
12430
12878
|
here: "\u8FD9\u91CC",
|
|
12431
12879
|
of: "\u7684",
|
|
12432
12880
|
on: "\u5F00\u542F",
|
|
@@ -12483,6 +12931,7 @@ var ja_default = {
|
|
|
12483
12931
|
"Are you sure you want to disconnect your wallet?": "\u30A6\u30A9\u30EC\u30C3\u30C8\u3092\u5207\u65AD\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B\uFF1F",
|
|
12484
12932
|
"Are you sure you want to set your domain name to": "\u30C9\u30E1\u30A4\u30F3\u540D\u3092\u8A2D\u5B9A\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B",
|
|
12485
12933
|
"Are you sure you want to unlink {{accountType}} as a login method linked to {{accountDescription}}?": "{{accountDescription}}\u306B\u30EA\u30F3\u30AF\u3055\u308C\u305F\u30ED\u30B0\u30A4\u30F3\u65B9\u6CD5\u3068\u3057\u3066{{accountType}}\u306E\u30EA\u30F3\u30AF\u3092\u89E3\u9664\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B\uFF1F",
|
|
12934
|
+
"Are you sure you want to unset your current domain?": "\u73FE\u5728\u306E\u30C9\u30E1\u30A4\u30F3\u3092\u89E3\u9664\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B\uFF1F",
|
|
12486
12935
|
Assets: "\u8CC7\u7523",
|
|
12487
12936
|
At: "\u3067",
|
|
12488
12937
|
"B3TR is the incentive token of VeBetterDAO, built on VechainThor blockchain. It has a capped supply of 1 billion tokens, emitted weekly over 12 years. B3TR is used for rewards, governance, and backing VOT3 tokens 1:1. It supports sustainability applications and DAO treasury management.": "B3TR\u306FVeBetterDAO\u306E\u30A4\u30F3\u30BB\u30F3\u30C6\u30A3\u30D6\u30C8\u30FC\u30AF\u30F3\u3067\u3042\u308A\u3001VechainThor\u30D6\u30ED\u30C3\u30AF\u30C1\u30A7\u30FC\u30F3\u4E0A\u306B\u69CB\u7BC9\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u7DCF\u4F9B\u7D66\u91CF\u306F10\u5104\u30C8\u30FC\u30AF\u30F3\u306B\u9650\u5B9A\u3055\u308C\u300112\u5E74\u9593\u306B\u308F\u305F\u3063\u3066\u6BCE\u9031\u767A\u884C\u3055\u308C\u307E\u3059\u3002B3TR\u306F\u5831\u916C\u3001\u30AC\u30D0\u30CA\u30F3\u30B9\u3001\u304A\u3088\u3073VOT3\u30C8\u30FC\u30AF\u30F3\u306E1:1\u306E\u4FDD\u8B77\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002\u305D\u308C\u306F\u30B5\u30B9\u30C6\u30CA\u30D3\u30EA\u30C6\u30A3\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u3068DAO\u30C8\u30EC\u30B8\u30E3\u30EA\u7BA1\u7406\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u307E\u3059\u3002",
|
|
@@ -12522,6 +12971,7 @@ var ja_default = {
|
|
|
12522
12971
|
Confirm: "\u78BA\u8A8D",
|
|
12523
12972
|
"Confirm Changes": "\u5909\u66F4\u3092\u78BA\u8A8D",
|
|
12524
12973
|
"Confirm Name": "\u540D\u524D\u3092\u78BA\u8A8D",
|
|
12974
|
+
"Confirm Unset Domain": "\u30C9\u30E1\u30A4\u30F3\u89E3\u9664\u3092\u78BA\u8A8D",
|
|
12525
12975
|
"Confirm the transaction in your wallet to complete it.": "\u30A6\u30A9\u30EC\u30C3\u30C8\u3067\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3\u3092\u78BA\u8A8D\u3057\u3066\u5B8C\u4E86\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
12526
12976
|
"Confirm transaction": "\u53D6\u5F15\u3092\u78BA\u8A8D",
|
|
12527
12977
|
"Connect Wallet": "\u30A6\u30A9\u30EC\u30C3\u30C8\u3092\u63A5\u7D9A",
|
|
@@ -12575,6 +13025,8 @@ var ja_default = {
|
|
|
12575
13025
|
Discord: "\u30C7\u30A3\u30B9\u30B3\u30FC\u30C9",
|
|
12576
13026
|
"Display Name": "\u8868\u793A\u540D",
|
|
12577
13027
|
"Display name must be less than 25 characters": "\u8868\u793A\u540D\u306F25\u6587\u5B57\u672A\u6E80\u3067\u306A\u3051\u308C\u3070\u306A\u308A\u307E\u305B\u3093",
|
|
13028
|
+
"Domain set": "\u30C9\u30E1\u30A4\u30F3\u304C\u8A2D\u5B9A\u3055\u308C\u307E\u3057\u305F",
|
|
13029
|
+
"Domain unset": "\u30C9\u30E1\u30A4\u30F3\u304C\u89E3\u9664\u3055\u308C\u307E\u3057\u305F",
|
|
12578
13030
|
Done: "\u5B8C\u4E86",
|
|
12579
13031
|
Ecosystem: "\u30A8\u30B3\u30B7\u30B9\u30C6\u30E0",
|
|
12580
13032
|
"Ecosystem Login": "\u30A8\u30B3\u30B7\u30B9\u30C6\u30E0\u306B\u30ED\u30B0\u30A4\u30F3",
|
|
@@ -12732,6 +13184,7 @@ var ja_default = {
|
|
|
12732
13184
|
Remove: "\u524A\u9664",
|
|
12733
13185
|
"Remove Login Method": "\u30ED\u30B0\u30A4\u30F3\u65B9\u6CD5\u306E\u524A\u9664",
|
|
12734
13186
|
"Remove from shortcuts": "\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u304B\u3089\u524A\u9664",
|
|
13187
|
+
"Remove your current domain name": "\u73FE\u5728\u306E\u30C9\u30E1\u30A4\u30F3\u540D\u3092\u524A\u9664\u3059\u308B",
|
|
12735
13188
|
"Resend code": "\u30B3\u30FC\u30C9\u3092\u518D\u9001\u4FE1",
|
|
12736
13189
|
Retry: "\u518D\u8A66\u884C",
|
|
12737
13190
|
"Safari blocked the login window. Please try again, it should work now.": "Safari\u304C\u30ED\u30B0\u30A4\u30F3\u30A6\u30A3\u30F3\u30C9\u30A6\u3092\u30D6\u30ED\u30C3\u30AF\u3057\u307E\u3057\u305F\u3002\u3082\u3046\u4E00\u5EA6\u304A\u8A66\u3057\u304F\u3060\u3055\u3044\u3002\u4ECA\u5EA6\u306F\u3046\u307E\u304F\u3044\u304F\u306F\u305A\u3067\u3059\u3002",
|
|
@@ -12811,6 +13264,7 @@ var ja_default = {
|
|
|
12811
13264
|
"Token Contract Address": "\u30C8\u30FC\u30AF\u30F3\u5951\u7D04\u30A2\u30C9\u30EC\u30B9",
|
|
12812
13265
|
"Token already added": "\u30C8\u30FC\u30AF\u30F3\u306F\u65E2\u306B\u8FFD\u52A0\u3055\u308C\u3066\u3044\u307E\u3059",
|
|
12813
13266
|
"Tokens transferred successfully.": "\u30C8\u30FC\u30AF\u30F3\u306E\u8EE2\u9001\u304C\u6210\u529F\u3057\u307E\u3057\u305F\u3002",
|
|
13267
|
+
Tools: "\u30C4\u30FC\u30EB",
|
|
12814
13268
|
"Total balance": "\u7DCF\u6B8B\u9AD8",
|
|
12815
13269
|
"Transaction completed!": "\u53D6\u5F15\u304C\u5B8C\u4E86\u3057\u307E\u3057\u305F\uFF01",
|
|
12816
13270
|
"Transaction failed": "\u53D6\u5F15\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
|
|
@@ -12830,6 +13284,11 @@ var ja_default = {
|
|
|
12830
13284
|
"Unknown error": "\u4E0D\u660E\u306A\u30A8\u30E9\u30FC",
|
|
12831
13285
|
"Unknown status": "\u4E0D\u660E\u306A\u72B6\u614B",
|
|
12832
13286
|
"Unlink Login Method": "\u30ED\u30B0\u30A4\u30F3\u65B9\u6CD5\u306E\u30EA\u30F3\u30AF\u89E3\u9664",
|
|
13287
|
+
"Unset current domain": "\u73FE\u5728\u306E\u30C9\u30E1\u30A4\u30F3\u3092\u89E3\u9664\u3059\u308B",
|
|
13288
|
+
"Unsetting current domain": "\u73FE\u5728\u306E\u30C9\u30E1\u30A4\u30F3\u3092\u89E3\u9664\u4E2D",
|
|
13289
|
+
"Unsetting current domain...": "\u73FE\u5728\u306E\u30C9\u30E1\u30A4\u30F3\u3092\u89E3\u9664\u4E2D...",
|
|
13290
|
+
"Unsetting your current VeChain nickname": "\u73FE\u5728\u306EVeChain\u30CB\u30C3\u30AF\u30CD\u30FC\u30E0\u3092\u89E3\u9664\u4E2D",
|
|
13291
|
+
"Unsetting your current domain": "\u73FE\u5728\u306E\u30C9\u30E1\u30A4\u30F3\u3092\u89E3\u9664\u4E2D",
|
|
12833
13292
|
"Update profile image": "\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u753B\u50CF\u3092\u66F4\u65B0",
|
|
12834
13293
|
"Upgrade Now": "\u4ECA\u3059\u3050\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9",
|
|
12835
13294
|
"Upgrade Smart Account to V3": "\u30B9\u30DE\u30FC\u30C8\u30A2\u30AB\u30A6\u30F3\u30C8\u3092V3\u306B\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9",
|
|
@@ -12897,8 +13356,10 @@ var ja_default = {
|
|
|
12897
13356
|
"You own a Smart Account and it has priority over your wallet.": "\u3042\u306A\u305F\u306F\u30B9\u30DE\u30FC\u30C8\u30A2\u30AB\u30A6\u30F3\u30C8\u3092\u6240\u6709\u3057\u3066\u304A\u308A\u3001\u305D\u308C\u306F\u3042\u306A\u305F\u306E\u30A6\u30A9\u30EC\u30C3\u30C8\u3088\u308A\u512A\u5148\u3055\u308C\u307E\u3059\u3002",
|
|
12898
13357
|
"Your account has been successfully upgraded to the latest version. You can now enjoy a better user experience, lower gas costs, and enhanced security.": "\u3042\u306A\u305F\u306E\u30A2\u30AB\u30A6\u30F3\u30C8\u306F\u6700\u65B0\u30D0\u30FC\u30B8\u30E7\u30F3\u306B\u6B63\u5E38\u306B\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9\u3055\u308C\u307E\u3057\u305F\u3002\u3088\u308A\u826F\u3044\u30E6\u30FC\u30B6\u30FC\u4F53\u9A13\u3001\u4F4E\u3044\u30AC\u30B9\u30B3\u30B9\u30C8\u3001\u5F37\u5316\u3055\u308C\u305F\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u3092\u304A\u697D\u3057\u307F\u304F\u3060\u3055\u3044\u3002",
|
|
12899
13358
|
"Your accounts": "\u3042\u306A\u305F\u306E\u30A2\u30AB\u30A6\u30F3\u30C8",
|
|
13359
|
+
"Your address has been successfully set to {{name}}.{{domainType}}.": "\u3042\u306A\u305F\u306E\u30A2\u30C9\u30EC\u30B9\u306F{{name}}.{{domainType}}\u306B\u6B63\u5E38\u306B\u8A2D\u5B9A\u3055\u308C\u307E\u3057\u305F\u3002",
|
|
12900
13360
|
"Your changes have been saved successfully.": "\u5909\u66F4\u306F\u6B63\u5E38\u306B\u4FDD\u5B58\u3055\u308C\u307E\u3057\u305F\u3002",
|
|
12901
13361
|
"Your customizations are linked to your .vet domain name, making them portable across different applications.": "\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u306F.vet\u30C9\u30E1\u30A4\u30F3\u540D\u306B\u30EA\u30F3\u30AF\u3055\u308C\u3066\u3044\u308B\u305F\u3081\u3001\u7570\u306A\u308B\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u9593\u3067\u6301\u3061\u904B\u3079\u307E\u3059\u3002",
|
|
13362
|
+
"Your domain has been unset successfully.": "\u3042\u306A\u305F\u306E\u30C9\u30E1\u30A4\u30F3\u306F\u6B63\u5E38\u306B\u89E3\u9664\u3055\u308C\u307E\u3057\u305F\u3002",
|
|
12902
13363
|
"Your embedded wallet": "\u3042\u306A\u305F\u306E\u57CB\u3081\u8FBC\u307F\u30A6\u30A9\u30EC\u30C3\u30C8",
|
|
12903
13364
|
"Your existing domains": "\u65E2\u5B58\u306E\u30C9\u30E1\u30A4\u30F3",
|
|
12904
13365
|
"Your mobile browser blocked the login window.": "\u30E2\u30D0\u30A4\u30EB\u30D6\u30E9\u30A6\u30B6\u304C\u30ED\u30B0\u30A4\u30F3\u30A6\u30A3\u30F3\u30C9\u30A6\u3092\u30D6\u30ED\u30C3\u30AF\u3057\u307E\u3057\u305F\u3002",
|
|
@@ -12915,6 +13376,7 @@ var ja_default = {
|
|
|
12915
13376
|
"Your wallet is secured by a private key. The private key is a unique code that allows you to access your wallet. It is stored in your browser and is used to sign transactions. The private key is never shared with anyone, including the VeChain Foundation.": "\u30A6\u30A9\u30EC\u30C3\u30C8\u306F\u79D8\u5BC6\u9375\u306B\u3088\u3063\u3066\u4FDD\u8B77\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u79D8\u5BC6\u9375\u306F\u30A6\u30A9\u30EC\u30C3\u30C8\u3078\u306E\u30A2\u30AF\u30BB\u30B9\u3092\u53EF\u80FD\u306B\u3059\u308B\u4E00\u610F\u306E\u30B3\u30FC\u30C9\u3067\u3059\u3002\u3053\u308C\u306F\u30D6\u30E9\u30A6\u30B6\u306B\u4FDD\u5B58\u3055\u308C\u3001\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3\u306E\u7F72\u540D\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002\u79D8\u5BC6\u9375\u306F\u3001VeChain\u306E\u8CA1\u56E3\u3092\u542B\u3080\u8AB0\u3068\u3082\u5171\u6709\u3055\u308C\u307E\u305B\u3093\u3002",
|
|
12916
13377
|
"Your wallet security depends on how you access it. With self-custody options like the VeWorld extension, mobile app, or hardware wallet, you have complete control over your private keys. This extension itself has no access to your private keys. When logging in with social accounts or VeChain, your wallet is created and secured by Privy and managed by VeChain, providing an easier onboarding experience while maintaining security.": "\u30A6\u30A9\u30EC\u30C3\u30C8\u306E\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u306F\u3001\u30A2\u30AF\u30BB\u30B9\u65B9\u6CD5\u306B\u4F9D\u5B58\u3057\u307E\u3059\u3002VeWorld\u62E1\u5F35\u6A5F\u80FD\u3084\u30E2\u30D0\u30A4\u30EB\u30A2\u30D7\u30EA\u3001\u30CF\u30FC\u30C9\u30A6\u30A7\u30A2\u30A6\u30A9\u30EC\u30C3\u30C8\u306A\u3069\u306E\u81EA\u5DF1\u7BA1\u7406\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u4F7F\u7528\u3059\u308B\u3053\u3068\u3067\u3001\u79D8\u5BC6\u9375\u3092\u5B8C\u5168\u306B\u7BA1\u7406\u3067\u304D\u307E\u3059\u3002\u3053\u306E\u62E1\u5F35\u6A5F\u80FD\u81EA\u4F53\u306F\u3042\u306A\u305F\u306E\u79D8\u5BC6\u9375\u306B\u30A2\u30AF\u30BB\u30B9\u3059\u308B\u3053\u3068\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u30BD\u30FC\u30B7\u30E3\u30EB\u30A2\u30AB\u30A6\u30F3\u30C8\u3084VeChain\u3092\u4F7F\u7528\u3057\u3066\u30ED\u30B0\u30A4\u30F3\u3059\u308B\u5834\u5408\u3001\u30A6\u30A9\u30EC\u30C3\u30C8\u306FPrivy\u306B\u3088\u3063\u3066\u4F5C\u6210\u3055\u308C\u3001\u4FDD\u8B77\u3055\u308C\u3001VeChain\u306B\u3088\u3063\u3066\u7BA1\u7406\u3055\u308C\u3001\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u3092\u7DAD\u6301\u3057\u3064\u3064\u5BB9\u6613\u306A\u30AA\u30F3\u30DC\u30FC\u30C7\u30A3\u30F3\u30B0\u4F53\u9A13\u3092\u63D0\u4F9B\u3057\u307E\u3059\u3002",
|
|
12917
13378
|
"Your {{name}}.veworld.vet name has been claimed successfully.": "\u3042\u306A\u305F\u306E{{name}}.veworld.vet\u540D\u304C\u6B63\u5E38\u306B\u8ACB\u6C42\u3055\u308C\u307E\u3057\u305F\u3002",
|
|
13379
|
+
"Your {{name}}.{{domainType}} name has been claimed successfully.": "\u3042\u306A\u305F\u306E{{name}}.{{domainType}}\u540D\u306F\u6B63\u5E38\u306B\u53D6\u5F97\u3055\u308C\u307E\u3057\u305F\u3002",
|
|
12918
13380
|
here: "\u3053\u3061\u3089",
|
|
12919
13381
|
of: "\u306E",
|
|
12920
13382
|
on: "\u4E0A",
|
|
@@ -15886,22 +16348,17 @@ var ConnectPopover = ({
|
|
|
15886
16348
|
};
|
|
15887
16349
|
var WalletDisplay = ({ variant }) => {
|
|
15888
16350
|
const { account } = useWallet();
|
|
15889
|
-
const [isSmallMobile] = useMediaQuery("(max-width: 480px)");
|
|
15890
|
-
const accountDomain = useMemo(() => {
|
|
15891
|
-
const isLongDomain = account?.domain && account.domain.length > 18;
|
|
15892
|
-
return isSmallMobile && isLongDomain ? humanDomain(account?.domain ?? "", 18, 0) : account?.domain;
|
|
15893
|
-
}, [isSmallMobile, account?.domain]);
|
|
15894
16351
|
if (!account) return /* @__PURE__ */ jsx(Spinner, {});
|
|
15895
16352
|
if (variant === "icon") {
|
|
15896
16353
|
return null;
|
|
15897
16354
|
}
|
|
15898
16355
|
if (variant === "iconAndDomain") {
|
|
15899
|
-
return account.domain ? /* @__PURE__ */ jsx(Text, { fontSize: "sm", children:
|
|
16356
|
+
return account.domain ? /* @__PURE__ */ jsx(Text, { fontSize: "sm", children: humanDomain(account?.domain ?? "", 16, 0) }) : /* @__PURE__ */ jsx(Text, { fontSize: "sm", children: humanAddress(account.address ?? "", 6, 4) });
|
|
15900
16357
|
}
|
|
15901
16358
|
if (variant === "iconDomainAndAssets") {
|
|
15902
16359
|
return /* @__PURE__ */ jsxs(HStack, { spacing: 4, children: [
|
|
15903
16360
|
/* @__PURE__ */ jsxs(VStack, { spacing: 0, alignItems: "flex-start", children: [
|
|
15904
|
-
account.domain && /* @__PURE__ */ jsx(Text, { fontSize: "sm", fontWeight: "bold", children:
|
|
16361
|
+
account.domain && /* @__PURE__ */ jsx(Text, { fontSize: "sm", fontWeight: "bold", children: humanDomain(account?.domain ?? "", 16, 0) }),
|
|
15905
16362
|
/* @__PURE__ */ jsx(
|
|
15906
16363
|
Text,
|
|
15907
16364
|
{
|
|
@@ -15915,7 +16372,7 @@ var WalletDisplay = ({ variant }) => {
|
|
|
15915
16372
|
] });
|
|
15916
16373
|
}
|
|
15917
16374
|
return /* @__PURE__ */ jsxs(VStack, { spacing: 0, alignItems: "flex-start", children: [
|
|
15918
|
-
account.domain && /* @__PURE__ */ jsx(Text, { fontSize: "sm", fontWeight: "bold", children:
|
|
16375
|
+
account.domain && /* @__PURE__ */ jsx(Text, { fontSize: "sm", fontWeight: "bold", children: humanDomain(account?.domain ?? "", 16, 0) }),
|
|
15919
16376
|
/* @__PURE__ */ jsx(
|
|
15920
16377
|
Text,
|
|
15921
16378
|
{
|
|
@@ -16542,14 +16999,11 @@ var ProfileCard = ({
|
|
|
16542
16999
|
}) => {
|
|
16543
17000
|
const { t } = useTranslation();
|
|
16544
17001
|
const { account } = useWallet();
|
|
16545
|
-
const
|
|
16546
|
-
const
|
|
16547
|
-
const activeAccountTextRecords = useGetTextRecords(
|
|
16548
|
-
activeAccountDomain?.data?.domain
|
|
16549
|
-
);
|
|
17002
|
+
const { network } = useVeChainKitConfig();
|
|
17003
|
+
const metadata = useWalletMetadata(address, network.type);
|
|
16550
17004
|
const headerImageSvg = getPicassoImage(address);
|
|
16551
17005
|
const isConnectedAccount = address === account?.address;
|
|
16552
|
-
const hasLinks =
|
|
17006
|
+
const hasLinks = metadata?.records?.url || metadata?.records?.["com.x"] || metadata?.records?.email;
|
|
16553
17007
|
return /* @__PURE__ */ jsxs(Card, { variant: "vechainKitBase", ...style?.card, children: [
|
|
16554
17008
|
/* @__PURE__ */ jsx(
|
|
16555
17009
|
Box,
|
|
@@ -16576,14 +17030,14 @@ var ProfileCard = ({
|
|
|
16576
17030
|
{
|
|
16577
17031
|
wallet: {
|
|
16578
17032
|
address,
|
|
16579
|
-
domain:
|
|
16580
|
-
image:
|
|
16581
|
-
isLoadingMetadata:
|
|
16582
|
-
metadata:
|
|
17033
|
+
domain: metadata?.domain,
|
|
17034
|
+
image: metadata?.image,
|
|
17035
|
+
isLoadingMetadata: metadata?.isLoading,
|
|
17036
|
+
metadata: metadata?.records
|
|
16583
17037
|
},
|
|
16584
17038
|
props: {
|
|
16585
|
-
width: "
|
|
16586
|
-
height: "
|
|
17039
|
+
width: "120px",
|
|
17040
|
+
height: "120px"
|
|
16587
17041
|
// boxShadow: '0px 0px 3px 2px #00000024',
|
|
16588
17042
|
}
|
|
16589
17043
|
}
|
|
@@ -16593,12 +17047,12 @@ var ProfileCard = ({
|
|
|
16593
17047
|
/* @__PURE__ */ jsx(
|
|
16594
17048
|
CardBody,
|
|
16595
17049
|
{
|
|
16596
|
-
mt:
|
|
17050
|
+
mt: "60px",
|
|
16597
17051
|
backgroundColor: "none",
|
|
16598
17052
|
border: "none",
|
|
16599
17053
|
...style?.body,
|
|
16600
17054
|
children: /* @__PURE__ */ jsxs(VStack, { w: "full", spacing: 2, children: [
|
|
16601
|
-
showDisplayName &&
|
|
17055
|
+
showDisplayName && metadata?.records?.display && /* @__PURE__ */ jsx(
|
|
16602
17056
|
Text,
|
|
16603
17057
|
{
|
|
16604
17058
|
fontSize: "xl",
|
|
@@ -16606,10 +17060,19 @@ var ProfileCard = ({
|
|
|
16606
17060
|
w: "full",
|
|
16607
17061
|
textAlign: "center",
|
|
16608
17062
|
mt: 2,
|
|
16609
|
-
children:
|
|
17063
|
+
children: metadata?.records?.display
|
|
17064
|
+
}
|
|
17065
|
+
),
|
|
17066
|
+
showDescription && metadata?.records?.description && /* @__PURE__ */ jsx(
|
|
17067
|
+
Text,
|
|
17068
|
+
{
|
|
17069
|
+
fontSize: "sm",
|
|
17070
|
+
opacity: 0.7,
|
|
17071
|
+
w: "full",
|
|
17072
|
+
textAlign: "center",
|
|
17073
|
+
children: metadata?.records?.description
|
|
16610
17074
|
}
|
|
16611
17075
|
),
|
|
16612
|
-
showDescription && activeAccountTextRecords?.data?.description && /* @__PURE__ */ jsx(Text, { fontSize: "sm", opacity: 0.7, children: activeAccountTextRecords?.data?.description }),
|
|
16613
17076
|
showLinks && hasLinks && /* @__PURE__ */ jsxs(
|
|
16614
17077
|
HStack,
|
|
16615
17078
|
{
|
|
@@ -16618,26 +17081,26 @@ var ProfileCard = ({
|
|
|
16618
17081
|
spacing: 5,
|
|
16619
17082
|
mt: 4,
|
|
16620
17083
|
children: [
|
|
16621
|
-
|
|
17084
|
+
metadata?.records?.email && /* @__PURE__ */ jsx(
|
|
16622
17085
|
Link,
|
|
16623
17086
|
{
|
|
16624
|
-
href: `mailto:${
|
|
17087
|
+
href: `mailto:${metadata?.records?.email}`,
|
|
16625
17088
|
target: "_blank",
|
|
16626
17089
|
children: /* @__PURE__ */ jsx(Icon, { as: FaEnvelope })
|
|
16627
17090
|
}
|
|
16628
17091
|
),
|
|
16629
|
-
|
|
17092
|
+
metadata?.records?.url && /* @__PURE__ */ jsx(
|
|
16630
17093
|
Link,
|
|
16631
17094
|
{
|
|
16632
|
-
href:
|
|
17095
|
+
href: metadata?.records?.url,
|
|
16633
17096
|
target: "_blank",
|
|
16634
17097
|
children: /* @__PURE__ */ jsx(Icon, { as: FaGlobe })
|
|
16635
17098
|
}
|
|
16636
17099
|
),
|
|
16637
|
-
|
|
17100
|
+
metadata?.records?.["com.x"] && /* @__PURE__ */ jsx(
|
|
16638
17101
|
Link,
|
|
16639
17102
|
{
|
|
16640
|
-
href: `https://x.com/${
|
|
17103
|
+
href: `https://x.com/${metadata?.records?.["com.x"]}`,
|
|
16641
17104
|
target: "_blank",
|
|
16642
17105
|
children: /* @__PURE__ */ jsx(Icon, { as: FaXTwitter })
|
|
16643
17106
|
}
|
|
@@ -16650,10 +17113,10 @@ var ProfileCard = ({
|
|
|
16650
17113
|
{
|
|
16651
17114
|
wallet: {
|
|
16652
17115
|
address,
|
|
16653
|
-
domain:
|
|
16654
|
-
image:
|
|
16655
|
-
isLoadingMetadata:
|
|
16656
|
-
metadata:
|
|
17116
|
+
domain: metadata?.domain,
|
|
17117
|
+
image: metadata?.image,
|
|
17118
|
+
isLoadingMetadata: metadata?.isLoading,
|
|
17119
|
+
metadata: metadata?.records
|
|
16657
17120
|
},
|
|
16658
17121
|
style: { mt: 4 }
|
|
16659
17122
|
}
|
|
@@ -17585,7 +18048,7 @@ var useSignTypedData2 = () => {
|
|
|
17585
18048
|
const privyWalletProvider = usePrivyWalletProvider();
|
|
17586
18049
|
const { signTypedData: signTypedDataDappKit } = useWallet$1();
|
|
17587
18050
|
const signTypedData = useCallback(
|
|
17588
|
-
async (data) => {
|
|
18051
|
+
async (data, options) => {
|
|
17589
18052
|
setIsSigningPending(true);
|
|
17590
18053
|
setError(null);
|
|
17591
18054
|
setSignature(null);
|
|
@@ -17599,7 +18062,8 @@ var useSignTypedData2 = () => {
|
|
|
17599
18062
|
sig = await signTypedDataDappKit(
|
|
17600
18063
|
domain,
|
|
17601
18064
|
data.types,
|
|
17602
|
-
data.message
|
|
18065
|
+
data.message,
|
|
18066
|
+
options
|
|
17603
18067
|
);
|
|
17604
18068
|
} else {
|
|
17605
18069
|
sig = await privyWalletProvider.signTypedData(data);
|
|
@@ -17607,7 +18071,16 @@ var useSignTypedData2 = () => {
|
|
|
17607
18071
|
setSignature(sig);
|
|
17608
18072
|
return sig;
|
|
17609
18073
|
} catch (err) {
|
|
17610
|
-
|
|
18074
|
+
if (err && typeof err === "object" && "statusCode" in err && err.statusCode === 4001) {
|
|
18075
|
+
const userRejectionError = new Error(
|
|
18076
|
+
"User denied signature request"
|
|
18077
|
+
);
|
|
18078
|
+
setError(userRejectionError);
|
|
18079
|
+
throw userRejectionError;
|
|
18080
|
+
}
|
|
18081
|
+
const error2 = err instanceof Error ? err : new Error(
|
|
18082
|
+
typeof err === "object" ? JSON.stringify(err) : String(err)
|
|
18083
|
+
);
|
|
17611
18084
|
setError(error2);
|
|
17612
18085
|
throw error2;
|
|
17613
18086
|
} finally {
|
|
@@ -18708,6 +19181,6 @@ var VechainKitThemeProvider = ({
|
|
|
18708
19181
|
] });
|
|
18709
19182
|
};
|
|
18710
19183
|
|
|
18711
|
-
export { APP_SECURITY_LEVELS, AccessAndSecurityContent, AccessAndSecurityModalProvider, AccountAvatar, AccountCustomizationModalProvider, AccountDetailsButton, AccountMainContent, AccountModal, AccountModalProvider, AccountSelector, ActionButton, AddressDisplay, AddressDisplayCard, AssetButton, AssetsContent, AssetsSection, BalanceSection, BaseModal, BridgeContent, ChooseNameContent, ChooseNameModalProvider, ChooseNameSearchContent, ChooseNameSummaryContent, ConnectModal, ConnectModalProvider, ConnectPopover, ConnectionButton, CrossAppConnectionSecurityCard, CustomizationContent, CustomizationSummaryContent, DappKitButton, DomainRequiredAlert, ENS_TEXT_RECORDS, EcosystemButton, EcosystemModal, EmailLoginButton, EmbeddedWalletContent, ExchangeWarningAlert, ExploreEcosystemModalProvider, FAQContent, FAQModalProvider, FadeInView, FadeInViewFromBottom, FadeInViewFromLeft, FadeInViewFromRight, FeatureAnnouncementCard, LoginLoadingModal, LoginWithGoogleButton, MAX_IMAGE_SIZE, MainContent, ManageCustomTokenContent, ModalBackButton, ModalFAQButton, NFTMediaType, NotificationsModalProvider, PRICE_FEED_IDS, PasskeyLoginButton, PrivyButton, PrivyWalletProvider, ProfileCard, ProfileContent, ProfileModalProvider, QuickActionsSection, ReceiveModalProvider, ReceiveTokenContent, RoundState, ScrollToTopWrapper, SecurityLevel, SelectTokenContent, SendTokenContent, SendTokenModalProvider, SendTokenSummaryContent, SettingsContent, ShareButtons, SocialIcons, StickyFooterContainer, StickyHeaderContainer, SwapTokenContent, TransactionButtonAndStatus, TransactionModal, TransactionModalContent, TransactionModalProvider, TransactionToast, TransactionToastProvider, UpgradeSmartAccountContent, UpgradeSmartAccountModal, UpgradeSmartAccountModalProvider, VeChainKitContext, VeChainKitProvider, VeChainLoginButton, VeChainWithPrivyLoginButton, VePassportUserStatus, VechainKitThemeProvider, VersionFooter, WalletButton, WalletModalProvider, buildClaimRewardsTx, buildClaimRoundReward, compressImages, currentBlockQueryKey, decodeFunctionSignature, fetchPrivyAppInfo, fetchPrivyStatus, fetchVechainDomain, getAccountAddress, getAccountAddressQueryKey, getAccountBalance, getAccountBalanceQueryKey, getAccountImplementationAddress, getAccountImplementationAddressQueryKey, getAccountVersion, getAccountVersionQueryKey, getAllEvents, getAllocationAmount, getAllocationAmountQueryKey, getAllocationsRoundState, getAllocationsRoundStateQueryKey, getAllocationsRoundsEvents, getAllocationsRoundsEventsQueryKey, getAppAdmin, getAppAdminQueryKey, getAppBalance, getAppBalanceQueryKey, getAppExistsQueryKey, getAppSecurityLevelQueryKey, getAppsEligibleInNextRound, getAppsEligibleInNextRoundQueryKey, getAppsShareClauses, getAvatar, getAvatarOfAddressQueryKey, getAvatarQueryKey, getB3trBalance, getB3trBalanceQueryKey, getB3trDonatedQueryKey, getB3trToUpgradeQueryKey, getBalanceOf, getCallKey, getChainId, getChainIdQueryKey, getCurrentAccountImplementationVersion, getCurrentAccountImplementationVersionQueryKey, getCurrentAllocationsRoundId, getCurrentAllocationsRoundIdQueryKey, getCustomTokenBalance, getCustomTokenBalanceQueryKey, getCustomTokenInfo, getDelegateeQueryKey, getDelegatorQueryKey, getDomainsOfAddress, getDomainsOfAddressQueryKey, getEnsRecordExistsQueryKey, getEntitiesLinkedToPassportQueryKey, getErc20Balance, getErc20BalanceQueryKey, getEvents, getGMBaseUriQueryKey, getGMLevel, getGMbalanceQueryKey, getGetCumulativeScoreWithDecayQueryKey, getHasV1SmartAccount, getHasV1SmartAccountQueryKey, getHasVotedInRound, getHasVotedInRoundQueryKey, getIpfsImage, getIpfsImageQueryKey, getIpfsMetadata, getIpfsMetadataQueryKey, getIsBlacklistedQueryKey, getIsDeployed, getIsDeployedQueryKey, getIsDomainProtectedQueryKey, getIsEntityQueryKey, getIsNodeHolder, getIsNodeHolderQueryKey, getIsPassportQueryKey, getIsPersonAtTimepointQueryKey, getIsPersonQueryKey, getIsWhitelistedQueryKey, getLevelGradient, getLevelMultiplierQueryKey, getLevelOfTokenQueryKey, getNFTMetadataUri, getNFTMetadataUriQueryKey, getNodeCheckCooldownQueryKey, getNodeManagerQueryKey, getParticipatedInGovernance, getParticipatedInGovernanceQueryKey, getParticipationScoreThresholdQueryKey, getPassportForEntityQueryKey, getPassportToggleQueryKey, getPendingDelegationsQueryKeyDelegateePOV, getPendingDelegationsQueryKeyDelegatorPOV, getPendingLinkingsQueryKey, getPrivyAppInfoQueryKey, getResolverAddress, getResolverAddressQueryKey, getRoundReward, getRoundRewardQueryKey, getRoundXApps, getRoundXAppsQueryKey, getSecurityMultiplierQueryKey, getSmartAccount, getSmartAccountQueryKey, getTextRecords, getTextRecordsQueryKey, getThresholdParticipationScoreAtTimepointQueryKey, getThresholdParticipationScoreQueryKey, getTokenIdByAccount, getTokenIdByAccountQueryKey, getTokenInfo, getTokenUsdPrice, getTokenUsdPriceQueryKey, getTokensInfoByOwnerQueryKey, getUpgradeRequired, getUpgradeRequiredForAccount, getUpgradeRequiredForAccountQueryKey, getUpgradeRequiredQueryKey, getUserBotSignalsQueryKey, getUserNodesQueryKey, getUserRoundScoreQueryKey, getUserVotesInRound, getUserVotesInRoundQueryKey, getUserXNodes, getUserXNodesQueryKey, getVeDelegateBalance, getVeDelegateBalanceQueryKey, getVechainDomainQueryKey, getVersion, getVersionQueryKey, getVot3Balance, getVot3BalanceQueryKey, getVotesInRoundQueryKey, getXAppMetadata, getXAppMetadataQueryKey, getXAppRoundEarnings, getXAppRoundEarningsQueryKey, getXAppTotalEarningsClauses, getXAppTotalEarningsQueryKey, getXAppVotes, getXAppVotesQf, getXAppVotesQfQueryKey, getXAppVotesQueryKey, getXApps, getXAppsMetadataBaseUri, getXAppsMetadataBaseUriQueryKey, getXAppsQueryKey, getXAppsSharesQueryKey, imageCompressionOptions, pollForReceipt, useAccessAndSecurityModal, useAccountBalance, useAccountCustomizationModal, useAccountImplementationAddress, useAccountLinking, useAccountModal, useAllocationAmount, useAllocationsRound, useAllocationsRoundState, useAllocationsRoundsEvents, useAppAdmin, useAppBalance, useAppExists, useAppSecurityLevel, useAppsEligibleInNextRound, useB3trDonated, useB3trToUpgrade, useBalances, useCall, useChooseNameModal, useClaimVeWorldSubdomain, useConnectModal, useCrossAppConnectionCache, useCurrentAccountImplementationVersion, useCurrentAllocationsRound, useCurrentAllocationsRoundId, useCurrentBlock, useDecodeFunctionSignature, useEcosystemShortcuts, useEnsRecordExists, useExploreEcosystemModal, useFAQModal, useFeatureAnnouncement, useFetchAppInfo, useFetchPrivyStatus, useGMBaseUri, useGMbalance, useGetAccountAddress, useGetAccountVersion, useGetAvatar, useGetAvatarOfAddress, useGetB3trBalance, useGetChainId, useGetCumulativeScoreWithDecay, useGetCustomTokenBalances, useGetCustomTokenInfo, useGetDelegatee, useGetDelegator, useGetDomainsOfAddress, useGetEntitiesLinkedToPassport, useGetErc20Balance, useGetNodeManager, useGetNodeUrl, useGetPassportForEntity, useGetPendingDelegationsDelegateePOV, useGetPendingDelegationsDelegatorPOV, useGetPendingLinkings, useGetResolverAddress, useGetTextRecords, useGetTokenUsdPrice, useGetTokensInfoByOwner, useGetUserEntitiesLinkedToPassport, useGetUserNode, useGetUserNodes, useGetUserPassportForEntity, useGetUserPendingLinkings, useGetVeDelegateBalance, useGetVot3Balance, useHasV1SmartAccount, useHasVotedInRound, useIpfsImage, useIpfsImageList, useIpfsMetadata, useIpfsMetadatas, useIsBlacklisted, useIsDomainProtected, useIsEntity, useIsGMclaimable, useIsNodeHolder, useIsPWA, useIsPassport, useIsPassportCheckEnabled, useIsPerson, useIsPersonAtTimepoint, useIsSmartAccountDeployed, useIsUserEntity, useIsUserPassport, useIsUserPerson, useIsWhitelisted, useLevelMultiplier, useLevelOfToken, useLocalStorage, useLoginModalContent, useLoginWithOAuth2 as useLoginWithOAuth, useLoginWithPasskey, useLoginWithVeChain, useMostVotedAppsInRound, useMultipleXAppRoundEarnings, useNFTImage, useNFTMetadataUri, useNotificationAlerts, useNotifications, useNotificationsModal, useParticipatedInGovernance, useParticipationScoreThreshold, usePassportChecks, usePrivyWalletProvider, useProfileModal, useReceiveModal, useRefreshBalances, useRefreshMetadata, useRoundEarnings, useRoundReward, useRoundXApps, useScrollToTop, useSecurityMultiplier, useSelectedGmNft, useSendTokenModal, useSendTransaction, useSignMessage2 as useSignMessage, useSignTypedData2 as useSignTypedData, useSingleImageUpload, useSmartAccount, useSmartAccountVersion, useThresholdParticipationScore, useThresholdParticipationScoreAtTimepoint, useTokenIdByAccount, useTransactionModal, useTransactionToast, useTransferERC20, useTransferVET, useTxReceipt, useUpdateTextRecord, useUpgradeRequired, useUpgradeRequiredForAccount, useUpgradeSmartAccount, useUpgradeSmartAccountModal, useUploadImages, useUserBotSignals, useUserDelegation, useUserRoundScore, useUserStatus, useUserTopVotedApps, useUserVotesInAllRounds, useUserVotesInRound, useVeChainKitConfig, useVechainDomain, useVotesInRound, useVotingRewards, useWallet, useWalletMetadata, useWalletModal2 as useWalletModal, useXApp, useXAppMetadata, useXAppRoundEarnings, useXAppTotalEarnings, useXAppVotes, useXAppVotesQf, useXApps, useXAppsMetadataBaseUri, useXAppsShares, useXNode, useXNodeCheckCooldown, useXNodes };
|
|
19184
|
+
export { APP_SECURITY_LEVELS, AccessAndSecurityContent, AccessAndSecurityModalProvider, AccountAvatar, AccountCustomizationModalProvider, AccountDetailsButton, AccountMainContent, AccountModal, AccountModalProvider, AccountSelector, ActionButton, AddressDisplay, AddressDisplayCard, AssetButton, AssetsContent, AssetsSection, BalanceSection, BaseModal, BridgeContent, ChooseNameContent, ChooseNameModalProvider, ChooseNameSearchContent, ChooseNameSummaryContent, ConnectModal, ConnectModalProvider, ConnectPopover, ConnectionButton, CrossAppConnectionSecurityCard, CustomizationContent, CustomizationSummaryContent, DappKitButton, DomainRequiredAlert, ENS_TEXT_RECORDS, EcosystemButton, EcosystemModal, EmailLoginButton, EmbeddedWalletContent, ExchangeWarningAlert, ExploreEcosystemModalProvider, FAQContent, FAQModalProvider, FadeInView, FadeInViewFromBottom, FadeInViewFromLeft, FadeInViewFromRight, FeatureAnnouncementCard, LoginLoadingModal, LoginWithGoogleButton, MAX_IMAGE_SIZE, MainContent, ManageCustomTokenContent, ModalBackButton, ModalFAQButton, NFTMediaType, NotificationsModalProvider, PRICE_FEED_IDS, PasskeyLoginButton, PrivyButton, PrivyWalletProvider, ProfileCard, ProfileContent, ProfileModalProvider, QuickActionsSection, ReceiveModalProvider, ReceiveTokenContent, RoundState, ScrollToTopWrapper, SecurityLevel, SelectTokenContent, SendTokenContent, SendTokenModalProvider, SendTokenSummaryContent, SettingsContent, ShareButtons, SocialIcons, StickyFooterContainer, StickyHeaderContainer, SwapTokenContent, TransactionButtonAndStatus, TransactionModal, TransactionModalContent, TransactionModalProvider, TransactionToast, TransactionToastProvider, UpgradeSmartAccountContent, UpgradeSmartAccountModal, UpgradeSmartAccountModalProvider, VeChainKitContext, VeChainKitProvider, VeChainLoginButton, VeChainWithPrivyLoginButton, VePassportUserStatus, VechainKitThemeProvider, VersionFooter, WalletButton, WalletModalProvider, buildClaimRewardsTx, buildClaimRoundReward, compressImages, currentBlockQueryKey, decodeFunctionSignature, fetchPrivyAppInfo, fetchPrivyStatus, fetchVechainDomain, getAccountAddress, getAccountAddressQueryKey, getAccountBalance, getAccountBalanceQueryKey, getAccountImplementationAddress, getAccountImplementationAddressQueryKey, getAccountVersion, getAccountVersionQueryKey, getAllEvents, getAllocationAmount, getAllocationAmountQueryKey, getAllocationsRoundState, getAllocationsRoundStateQueryKey, getAllocationsRoundsEvents, getAllocationsRoundsEventsQueryKey, getAppAdmin, getAppAdminQueryKey, getAppBalance, getAppBalanceQueryKey, getAppExistsQueryKey, getAppSecurityLevelQueryKey, getAppsEligibleInNextRound, getAppsEligibleInNextRoundQueryKey, getAppsShareClauses, getAvatar, getAvatarLegacy, getAvatarLegacyQueryKey, getAvatarOfAddressQueryKey, getAvatarQueryKey, getB3trBalance, getB3trBalanceQueryKey, getB3trDonatedQueryKey, getB3trToUpgradeQueryKey, getBalanceOf, getCallKey, getChainId, getChainIdQueryKey, getCurrentAccountImplementationVersion, getCurrentAccountImplementationVersionQueryKey, getCurrentAllocationsRoundId, getCurrentAllocationsRoundIdQueryKey, getCustomTokenBalance, getCustomTokenBalanceQueryKey, getCustomTokenInfo, getDelegateeQueryKey, getDelegatorQueryKey, getDomainsOfAddress, getDomainsOfAddressQueryKey, getEnsRecordExistsQueryKey, getEntitiesLinkedToPassportQueryKey, getErc20Balance, getErc20BalanceQueryKey, getEvents, getGMBaseUriQueryKey, getGMLevel, getGMbalanceQueryKey, getGetCumulativeScoreWithDecayQueryKey, getHasV1SmartAccount, getHasV1SmartAccountQueryKey, getHasVotedInRound, getHasVotedInRoundQueryKey, getIpfsImage, getIpfsImageQueryKey, getIpfsMetadata, getIpfsMetadataQueryKey, getIsBlacklistedQueryKey, getIsDeployed, getIsDeployedQueryKey, getIsDomainProtectedQueryKey, getIsEntityQueryKey, getIsNodeHolder, getIsNodeHolderQueryKey, getIsPassportQueryKey, getIsPersonAtTimepointQueryKey, getIsPersonQueryKey, getIsWhitelistedQueryKey, getLevelGradient, getLevelMultiplierQueryKey, getLevelOfTokenQueryKey, getNFTMetadataUri, getNFTMetadataUriQueryKey, getNodeCheckCooldownQueryKey, getNodeManagerQueryKey, getParticipatedInGovernance, getParticipatedInGovernanceQueryKey, getParticipationScoreThresholdQueryKey, getPassportForEntityQueryKey, getPassportToggleQueryKey, getPendingDelegationsQueryKeyDelegateePOV, getPendingDelegationsQueryKeyDelegatorPOV, getPendingLinkingsQueryKey, getPrivyAppInfoQueryKey, getResolverAddress, getResolverAddressQueryKey, getRoundReward, getRoundRewardQueryKey, getRoundXApps, getRoundXAppsQueryKey, getSecurityMultiplierQueryKey, getSmartAccount, getSmartAccountQueryKey, getTextRecords, getTextRecordsQueryKey, getThresholdParticipationScoreAtTimepointQueryKey, getThresholdParticipationScoreQueryKey, getTokenIdByAccount, getTokenIdByAccountQueryKey, getTokenInfo, getTokenUsdPrice, getTokenUsdPriceQueryKey, getTokensInfoByOwnerQueryKey, getUpgradeRequired, getUpgradeRequiredForAccount, getUpgradeRequiredForAccountQueryKey, getUpgradeRequiredQueryKey, getUserBotSignalsQueryKey, getUserNodesQueryKey, getUserRoundScoreQueryKey, getUserVotesInRound, getUserVotesInRoundQueryKey, getUserXNodes, getUserXNodesQueryKey, getVeDelegateBalance, getVeDelegateBalanceQueryKey, getVechainDomainQueryKey, getVersion, getVersionQueryKey, getVot3Balance, getVot3BalanceQueryKey, getVotesInRoundQueryKey, getXAppMetadata, getXAppMetadataQueryKey, getXAppRoundEarnings, getXAppRoundEarningsQueryKey, getXAppTotalEarningsClauses, getXAppTotalEarningsQueryKey, getXAppVotes, getXAppVotesQf, getXAppVotesQfQueryKey, getXAppVotesQueryKey, getXApps, getXAppsMetadataBaseUri, getXAppsMetadataBaseUriQueryKey, getXAppsQueryKey, getXAppsSharesQueryKey, imageCompressionOptions, pollForReceipt, useAccessAndSecurityModal, useAccountBalance, useAccountCustomizationModal, useAccountImplementationAddress, useAccountLinking, useAccountModal, useAllocationAmount, useAllocationsRound, useAllocationsRoundState, useAllocationsRoundsEvents, useAppAdmin, useAppBalance, useAppExists, useAppSecurityLevel, useAppsEligibleInNextRound, useB3trDonated, useB3trToUpgrade, useBalances, useCall, useChooseNameModal, useClaimVeWorldSubdomain, useClaimVetDomain, useConnectModal, useCrossAppConnectionCache, useCurrentAccountImplementationVersion, useCurrentAllocationsRound, useCurrentAllocationsRoundId, useCurrentBlock, useDecodeFunctionSignature, useEcosystemShortcuts, useEnsRecordExists, useExploreEcosystemModal, useFAQModal, useFeatureAnnouncement, useFetchAppInfo, useFetchPrivyStatus, useGMBaseUri, useGMbalance, useGetAccountAddress, useGetAccountVersion, useGetAvatar, useGetAvatarLegacy, useGetAvatarOfAddress, useGetB3trBalance, useGetChainId, useGetCumulativeScoreWithDecay, useGetCustomTokenBalances, useGetCustomTokenInfo, useGetDelegatee, useGetDelegator, useGetDomainsOfAddress, useGetEntitiesLinkedToPassport, useGetErc20Balance, useGetNodeManager, useGetNodeUrl, useGetPassportForEntity, useGetPendingDelegationsDelegateePOV, useGetPendingDelegationsDelegatorPOV, useGetPendingLinkings, useGetResolverAddress, useGetTextRecords, useGetTokenUsdPrice, useGetTokensInfoByOwner, useGetUserEntitiesLinkedToPassport, useGetUserNode, useGetUserNodes, useGetUserPassportForEntity, useGetUserPendingLinkings, useGetVeDelegateBalance, useGetVot3Balance, useHasV1SmartAccount, useHasVotedInRound, useIpfsImage, useIpfsImageList, useIpfsMetadata, useIpfsMetadatas, useIsBlacklisted, useIsDomainProtected, useIsEntity, useIsGMclaimable, useIsNodeHolder, useIsPWA, useIsPassport, useIsPassportCheckEnabled, useIsPerson, useIsPersonAtTimepoint, useIsSmartAccountDeployed, useIsUserEntity, useIsUserPassport, useIsUserPerson, useIsWhitelisted, useLevelMultiplier, useLevelOfToken, useLocalStorage, useLoginModalContent, useLoginWithOAuth2 as useLoginWithOAuth, useLoginWithPasskey, useLoginWithVeChain, useMostVotedAppsInRound, useMultipleXAppRoundEarnings, useNFTImage, useNFTMetadataUri, useNotificationAlerts, useNotifications, useNotificationsModal, useParticipatedInGovernance, useParticipationScoreThreshold, usePassportChecks, usePrivyWalletProvider, useProfileModal, useReceiveModal, useRefreshBalances, useRefreshMetadata, useRoundEarnings, useRoundReward, useRoundXApps, useScrollToTop, useSecurityMultiplier, useSelectedGmNft, useSendTokenModal, useSendTransaction, useSignMessage2 as useSignMessage, useSignTypedData2 as useSignTypedData, useSingleImageUpload, useSmartAccount, useSmartAccountVersion, useThresholdParticipationScore, useThresholdParticipationScoreAtTimepoint, useTokenIdByAccount, useTransactionModal, useTransactionToast, useTransferERC20, useTransferVET, useTxReceipt, useUnsetDomain, useUpdateTextRecord, useUpgradeRequired, useUpgradeRequiredForAccount, useUpgradeSmartAccount, useUpgradeSmartAccountModal, useUploadImages, useUserBotSignals, useUserDelegation, useUserRoundScore, useUserStatus, useUserTopVotedApps, useUserVotesInAllRounds, useUserVotesInRound, useVeChainKitConfig, useVechainDomain, useVotesInRound, useVotingRewards, useWallet, useWalletMetadata, useWalletModal2 as useWalletModal, useXApp, useXAppMetadata, useXAppRoundEarnings, useXAppTotalEarnings, useXAppVotes, useXAppVotesQf, useXApps, useXAppsMetadataBaseUri, useXAppsShares, useXNode, useXNodeCheckCooldown, useXNodes };
|
|
18712
19185
|
//# sourceMappingURL=index.js.map
|
|
18713
19186
|
//# sourceMappingURL=index.js.map
|