@vechain/vechain-kit 1.8.3 → 2.0.0-rc.1
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/{chunk-ZZOAVX47.cjs → chunk-PTWGTINW.cjs} +102 -20
- package/dist/chunk-PTWGTINW.cjs.map +1 -0
- package/dist/{chunk-3SI2CCB5.js → chunk-R722OBPE.js} +86 -21
- package/dist/chunk-R722OBPE.js.map +1 -0
- package/dist/index.cjs +7101 -8588
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2710 -3523
- package/dist/index.d.ts +2710 -3523
- package/dist/index.js +13018 -14406
- package/dist/index.js.map +1 -1
- package/dist/metafile-cjs.json +1 -1
- package/dist/metafile-esm.json +1 -1
- package/dist/{Constants-D3GSqSp8.d.cts → thorUtils-BOhp47ZG.d.cts} +56 -51
- package/dist/{Constants-D3GSqSp8.d.ts → thorUtils-BOhp47ZG.d.ts} +56 -51
- package/dist/utils/index.cjs +91 -39
- package/dist/utils/index.d.cts +107 -4
- package/dist/utils/index.d.ts +107 -4
- package/dist/utils/index.js +1 -1
- package/package.json +6 -19
- package/dist/chunk-3SI2CCB5.js.map +0 -1
- package/dist/chunk-ZZOAVX47.cjs.map +0 -1
|
@@ -6,8 +6,12 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
6
6
|
var picasso = require('@vechain/picasso');
|
|
7
7
|
var bignumber_js = require('bignumber.js');
|
|
8
8
|
var accounts = require('viem/accounts');
|
|
9
|
-
var
|
|
10
|
-
require('
|
|
9
|
+
var crypto = require('crypto');
|
|
10
|
+
var sdkCore = require('@vechain/sdk-core');
|
|
11
|
+
|
|
12
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
+
|
|
14
|
+
var crypto__default = /*#__PURE__*/_interopDefault(crypto);
|
|
11
15
|
|
|
12
16
|
var VOT3Logo = ({ ...props }) => {
|
|
13
17
|
return /* @__PURE__ */ jsxRuntime.jsxs(react.Icon, { viewBox: "0 0 1684.56 1684.56", ...props, children: [
|
|
@@ -101,7 +105,7 @@ var VECHAIN_KIT_COOKIES_CONFIG = {
|
|
|
101
105
|
required: false,
|
|
102
106
|
displayName: "Vechain Kit Cookies"
|
|
103
107
|
};
|
|
104
|
-
var humanAddress = (
|
|
108
|
+
var humanAddress = (address, charAtStart = 6, charAtEnd = 4) => `${address.slice(0, charAtStart)}\u2022\u2022\u2022${address.slice(-charAtEnd)}`;
|
|
105
109
|
var humanDomain = (domain, lengthBefore = 8, lengthAfter = 6) => {
|
|
106
110
|
if (domain.length <= lengthBefore + lengthAfter) return domain;
|
|
107
111
|
const before = domain.substring(0, lengthBefore);
|
|
@@ -127,8 +131,8 @@ var isZero = (value) => {
|
|
|
127
131
|
if (!value && value !== 0) return false;
|
|
128
132
|
return new bignumber_js.BigNumber(value).isZero();
|
|
129
133
|
};
|
|
130
|
-
var getPicassoImage = (
|
|
131
|
-
const image = picasso.picasso(
|
|
134
|
+
var getPicassoImage = (address, base64 = false) => {
|
|
135
|
+
const image = picasso.picasso(address.toLowerCase());
|
|
132
136
|
if (base64) {
|
|
133
137
|
const base64data = Buffer.from(image, "utf8").toString("base64");
|
|
134
138
|
return `data:image/svg+xml;base64,${base64data}`;
|
|
@@ -161,6 +165,10 @@ var randomTransactionUser = (() => {
|
|
|
161
165
|
var PREFIX = "0x";
|
|
162
166
|
var PREFIX_REGEX = /^0[xX]/;
|
|
163
167
|
var HEX_REGEX = /^(0[xX])?[a-fA-F0-9]+$/;
|
|
168
|
+
var removePrefix = (hex) => {
|
|
169
|
+
validate(hex);
|
|
170
|
+
return hex.replace(PREFIX_REGEX, "");
|
|
171
|
+
};
|
|
164
172
|
var addPrefix = (hex) => {
|
|
165
173
|
validate(hex);
|
|
166
174
|
return PREFIX_REGEX.test(hex) ? hex.replace(PREFIX_REGEX, PREFIX) : `${PREFIX}${hex}`;
|
|
@@ -171,11 +179,25 @@ var validate = (hex) => {
|
|
|
171
179
|
var isValid = (hex) => {
|
|
172
180
|
return !!hex && HEX_REGEX.test(hex);
|
|
173
181
|
};
|
|
182
|
+
var isInvalid = (hex) => {
|
|
183
|
+
return !isValid(hex);
|
|
184
|
+
};
|
|
174
185
|
var normalize = (hex) => {
|
|
175
186
|
return addPrefix(hex.toLowerCase().trim());
|
|
176
187
|
};
|
|
177
|
-
|
|
178
|
-
|
|
188
|
+
var compare = (hex1, hex2) => {
|
|
189
|
+
try {
|
|
190
|
+
return removePrefix(hex1).toLowerCase() === removePrefix(hex2).toLowerCase();
|
|
191
|
+
} catch (e) {
|
|
192
|
+
return false;
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
var generateRandom = (size) => {
|
|
196
|
+
if (size < 1) throw Error("Size must be > 0");
|
|
197
|
+
const randBuffer = crypto__default.default.randomBytes(Math.ceil(size / 2));
|
|
198
|
+
if (!randBuffer) throw Error("Failed to generate random hex");
|
|
199
|
+
return `${PREFIX}${randBuffer.toString("hex").substring(0, size)}`;
|
|
200
|
+
};
|
|
179
201
|
var compareAddresses = (address1, address2) => {
|
|
180
202
|
if (!address1 || !address2) return false;
|
|
181
203
|
if (address2 === address1) {
|
|
@@ -199,15 +221,7 @@ var compareListOfAddresses = (add1, add2) => {
|
|
|
199
221
|
var regexPattern = () => {
|
|
200
222
|
return /^0x[a-fA-F0-9]{40}$/;
|
|
201
223
|
};
|
|
202
|
-
var isValidAddress =
|
|
203
|
-
try {
|
|
204
|
-
if (typeof addr !== "string") return false;
|
|
205
|
-
thorDevkit.address.toChecksumed(addPrefix(addr));
|
|
206
|
-
return true;
|
|
207
|
-
} catch (e) {
|
|
208
|
-
return false;
|
|
209
|
-
}
|
|
210
|
-
};
|
|
224
|
+
var isValidAddress = sdkCore.Address.isValid;
|
|
211
225
|
var leftPadWithZeros = (str, length) => {
|
|
212
226
|
const cleanStr = str.startsWith("0x") ? str.slice(2) : str;
|
|
213
227
|
if (cleanStr.length > length) {
|
|
@@ -480,7 +494,7 @@ async function uploadBlobToIPFS(blob, filename, networkType) {
|
|
|
480
494
|
}
|
|
481
495
|
}
|
|
482
496
|
|
|
483
|
-
// src/types/
|
|
497
|
+
// src/types/types.ts
|
|
484
498
|
var NFTMediaType = /* @__PURE__ */ ((NFTMediaType2) => {
|
|
485
499
|
NFTMediaType2["IMAGE"] = "image";
|
|
486
500
|
NFTMediaType2["VIDEO"] = "video";
|
|
@@ -657,7 +671,7 @@ var buildQueryString = (params) => {
|
|
|
657
671
|
return searchParams.toString();
|
|
658
672
|
};
|
|
659
673
|
|
|
660
|
-
// src/utils/
|
|
674
|
+
// src/utils/xNode.ts
|
|
661
675
|
var NodeStrengthLevelToImage = {
|
|
662
676
|
"0": "/images/vnt/00-noNode.webp",
|
|
663
677
|
"1": "/images/vnt/01-strength.webp",
|
|
@@ -685,6 +699,26 @@ var allNodeStrengthLevelToName = {
|
|
|
685
699
|
...XNodeStrengthLevelToName
|
|
686
700
|
};
|
|
687
701
|
|
|
702
|
+
// src/utils/time.ts
|
|
703
|
+
var TIME = {
|
|
704
|
+
SECOND: 1e3,
|
|
705
|
+
MINUTE: 1e3 * 60,
|
|
706
|
+
HOUR: 1e3 * 60 * 60,
|
|
707
|
+
DAY: 1e3 * 60 * 60 * 24,
|
|
708
|
+
WEEK: 1e3 * 60 * 60 * 24 * 7,
|
|
709
|
+
MONTH: 1e3 * 60 * 60 * 24 * 30,
|
|
710
|
+
YEAR: 1e3 * 60 * 60 * 24 * 365
|
|
711
|
+
};
|
|
712
|
+
|
|
713
|
+
// src/utils/stringUtils.ts
|
|
714
|
+
var isRejectionError = (errorMessage) => {
|
|
715
|
+
if (!errorMessage) return false;
|
|
716
|
+
const rejectionTerms = ["rejected", "cancelled", "user denied", "closed"];
|
|
717
|
+
return rejectionTerms.some(
|
|
718
|
+
(term) => errorMessage.toLowerCase().includes(term.toLowerCase())
|
|
719
|
+
);
|
|
720
|
+
};
|
|
721
|
+
|
|
688
722
|
// src/utils/url.ts
|
|
689
723
|
var isValidUrl = (value) => {
|
|
690
724
|
try {
|
|
@@ -695,6 +729,41 @@ var isValidUrl = (value) => {
|
|
|
695
729
|
}
|
|
696
730
|
};
|
|
697
731
|
|
|
732
|
+
// src/utils/thorUtils.ts
|
|
733
|
+
var executeCallClause = async ({
|
|
734
|
+
thor,
|
|
735
|
+
contractAddress,
|
|
736
|
+
abi,
|
|
737
|
+
method,
|
|
738
|
+
args
|
|
739
|
+
}) => {
|
|
740
|
+
const contract = thor.contracts.load(contractAddress, abi);
|
|
741
|
+
const res = await contract.read[method](...args);
|
|
742
|
+
return res;
|
|
743
|
+
};
|
|
744
|
+
var executeMultipleClausesCall = async ({
|
|
745
|
+
thor,
|
|
746
|
+
calls
|
|
747
|
+
}) => {
|
|
748
|
+
if (!Array.isArray(calls)) throw new Error("calls must be an array");
|
|
749
|
+
const clauses = calls.map(
|
|
750
|
+
(call) => thor.contracts.load(call.contractAddress, call.abi).clause[call.method](...call.args)
|
|
751
|
+
);
|
|
752
|
+
const res = await thor.transactions.executeMultipleClausesCall(clauses);
|
|
753
|
+
if (!res.every((r) => r.success))
|
|
754
|
+
throw new Error("Failed to execute multiple clauses call");
|
|
755
|
+
return res.map((r) => r.result.plain);
|
|
756
|
+
};
|
|
757
|
+
var buildCallClauses = ({
|
|
758
|
+
thor,
|
|
759
|
+
calls
|
|
760
|
+
}) => {
|
|
761
|
+
if (!Array.isArray(calls)) throw new Error("calls must be an array");
|
|
762
|
+
return calls.map(
|
|
763
|
+
(call) => thor.contracts.load(call.address, call.abi).clause[call.functionName](...call.args)
|
|
764
|
+
);
|
|
765
|
+
};
|
|
766
|
+
|
|
698
767
|
exports.CURRENCY_SYMBOLS = CURRENCY_SYMBOLS;
|
|
699
768
|
exports.DEFAULT_PRIVY_ECOSYSTEM_APPS = DEFAULT_PRIVY_ECOSYSTEM_APPS;
|
|
700
769
|
exports.ENS_TEXT_RECORDS = ENS_TEXT_RECORDS;
|
|
@@ -705,6 +774,7 @@ exports.LegalDocumentType = LegalDocumentType;
|
|
|
705
774
|
exports.MinXNodeLevel = MinXNodeLevel;
|
|
706
775
|
exports.NFTMediaType = NFTMediaType;
|
|
707
776
|
exports.NodeStrengthLevelToImage = NodeStrengthLevelToImage;
|
|
777
|
+
exports.TIME = TIME;
|
|
708
778
|
exports.TOKEN_LOGOS = TOKEN_LOGOS;
|
|
709
779
|
exports.TOKEN_LOGO_COMPONENTS = TOKEN_LOGO_COMPONENTS;
|
|
710
780
|
exports.TogglePassportCheck = TogglePassportCheck;
|
|
@@ -717,28 +787,40 @@ exports.VECHAIN_KIT_TERMS_CONFIG = VECHAIN_KIT_TERMS_CONFIG;
|
|
|
717
787
|
exports.VECHAIN_PRIVY_APP_ID = VECHAIN_PRIVY_APP_ID;
|
|
718
788
|
exports.VePassportUserStatus = VePassportUserStatus;
|
|
719
789
|
exports.XNodeStrengthLevelToName = XNodeStrengthLevelToName;
|
|
790
|
+
exports.addPrefix = addPrefix;
|
|
720
791
|
exports.allNodeStrengthLevelToName = allNodeStrengthLevelToName;
|
|
792
|
+
exports.buildCallClauses = buildCallClauses;
|
|
721
793
|
exports.buildQueryString = buildQueryString;
|
|
794
|
+
exports.compare = compare;
|
|
722
795
|
exports.compareAddresses = compareAddresses;
|
|
723
796
|
exports.compareListOfAddresses = compareListOfAddresses;
|
|
724
797
|
exports.convertUriToUrl = convertUriToUrl;
|
|
798
|
+
exports.executeCallClause = executeCallClause;
|
|
799
|
+
exports.executeMultipleClausesCall = executeMultipleClausesCall;
|
|
800
|
+
exports.generateRandom = generateRandom;
|
|
725
801
|
exports.getConfig = getConfig;
|
|
726
802
|
exports.getPicassoImage = getPicassoImage;
|
|
727
803
|
exports.gmNfts = gmNfts;
|
|
728
804
|
exports.humanAddress = humanAddress;
|
|
729
805
|
exports.humanDomain = humanDomain;
|
|
730
806
|
exports.humanNumber = humanNumber;
|
|
807
|
+
exports.isInvalid = isInvalid;
|
|
808
|
+
exports.isRejectionError = isRejectionError;
|
|
809
|
+
exports.isValid = isValid;
|
|
731
810
|
exports.isValidAddress = isValidAddress;
|
|
732
811
|
exports.isValidUrl = isValidUrl;
|
|
733
812
|
exports.isZero = isZero;
|
|
734
813
|
exports.leftPadWithZeros = leftPadWithZeros;
|
|
814
|
+
exports.normalize = normalize;
|
|
735
815
|
exports.notFoundImage = notFoundImage;
|
|
736
816
|
exports.randomTransactionUser = randomTransactionUser;
|
|
737
817
|
exports.regexPattern = regexPattern;
|
|
818
|
+
exports.removePrefix = removePrefix;
|
|
738
819
|
exports.resolveMediaTypeFromMimeType = resolveMediaTypeFromMimeType;
|
|
739
820
|
exports.toIPFSURL = toIPFSURL;
|
|
740
821
|
exports.uploadBlobToIPFS = uploadBlobToIPFS;
|
|
822
|
+
exports.validate = validate;
|
|
741
823
|
exports.validateIpfsUri = validateIpfsUri;
|
|
742
824
|
exports.xNodeToGMstartingLevel = xNodeToGMstartingLevel;
|
|
743
|
-
//# sourceMappingURL=chunk-
|
|
744
|
-
//# sourceMappingURL=chunk-
|
|
825
|
+
//# sourceMappingURL=chunk-PTWGTINW.cjs.map
|
|
826
|
+
//# sourceMappingURL=chunk-PTWGTINW.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/assets/icons/VechainLogo/VOT3Logo.tsx","../src/utils/constants.tsx","../src/utils/formattingUtils.tsx","../src/utils/randomTxForwarder.tsx","../src/utils/hexUtils.ts","../src/utils/addressUtils.ts","../src/config/solo.ts","../src/config/testnet.ts","../src/config/mainnet.ts","../src/config/index.ts","../src/utils/ipfs.ts","../src/types/types.ts","../src/types/ensTextRecords.ts","../src/types/index.ts","../src/utils/media.ts","../src/utils/uri.ts","../src/utils/gmNfts.ts","../src/utils/buildQueryString.ts","../src/utils/xNode.ts","../src/utils/time.ts","../src/utils/stringUtils.ts","../src/utils/url.ts","../src/utils/thorUtils.ts"],"names":["jsxs","Icon","jsx","VETLogo","VTHOLogo","VeBetterIcon","TogglePassportCheck","BigNumber","picasso","generatePrivateKey","privateKeyToAccount","crypto","Address","config","NFTMediaType","VePassportUserStatus","LegalDocumentType","LegalDocumentSource"],"mappings":"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","file":"chunk-PTWGTINW.cjs","sourcesContent":["import { Icon, IconProps } from '@chakra-ui/react';\nimport React from 'react';\n\ntype Props = Omit<IconProps, 'dangerouslySetInnerHTML'>;\n\nexport const VOT3Logo: React.FC<Props> = ({ ...props }) => {\n return (\n <Icon viewBox=\"0 0 1684.56 1684.56\" {...props}>\n <rect\n fill=\"#b1f16c\"\n width=\"1684.56\"\n height=\"1684.56\"\n rx=\"157.74\"\n ry=\"157.74\"\n />\n <path\n fill=\"#1d1d1d\"\n d=\"M844.98,1386.28c-41.46,0-75.1-33.9-75.1-75.67,0-142.78-86.35-274.05-158.8-359.01-89.72-105.25-197.89-186.19-265.28-219.75-37.18-18.54-52.43-63.88-34.09-101.35,18.39-37.47,63.39-52.83,100.58-34.35,75.09,37.41,202.11,127.08,312.7,256.82,32.24,37.81,66.77,83.5,97.66,135.35,34.2-108.83,79.98-205.07,121.61-280.12,91.8-165.56,214.37-317.13,319.84-395.63,33.36-24.83,80.39-17.68,105.02,15.93,24.64,33.61,17.55,81-15.81,105.82-88.03,65.47-197.1,201.95-277.93,347.68-70.82,127.7-155.25,323.08-155.25,528.6,0,41.78-33.64,75.67-75.1,75.67h-.06Z\"\n />\n </Icon>\n );\n};\n","import { VeBetterIcon, VTHOLogo } from '@/assets';\nimport { VETLogo } from '@/assets/icons/VechainLogo/VETLogo';\nimport { VOT3Logo } from '@/assets/icons/VechainLogo/VOT3Logo';\n\nexport const TOKEN_LOGOS: Record<string, string> = {\n VET: 'https://cryptologos.cc/logos/vechain-vet-logo.png',\n VTHO: 'https://s2.coinmarketcap.com/static/img/coins/64x64/3012.png',\n B3TR: 'https://vechain.github.io/token-registry/assets/3d55edb42b09a634f7f2f26756a02571de901a5b.png',\n VOT3: 'https://vechain.github.io/token-registry/assets/17ff70aa1d898bc97ad690dbfad1a3b5643f7e0b.png',\n veDelegate:\n 'https://vechain.github.io/token-registry/assets/1c641b86096d56bf13d49f38388accd6db8b8b2e.png',\n USDGLO: 'https://raw.githubusercontent.com/vechain/app-hub/439fba60c80ba2521d435981102d88c4aec050d6/apps/org.glodollar.app/logo.png',\n};\n\nexport const TOKEN_LOGO_COMPONENTS: Record<string, JSX.Element> = {\n VET: <VETLogo />,\n VTHO: <VTHOLogo />,\n B3TR: <VeBetterIcon />,\n VOT3: <VOT3Logo />,\n};\n\nexport const VECHAIN_PRIVY_APP_ID = 'cm4wxxujb022fyujl7g0thb21';\n\nexport const notFoundImage =\n 'https://upload.wikimedia.org/wikipedia/commons/a/a3/Image-not-found.png';\n\nexport enum TogglePassportCheck {\n WhitelistCheck = 1,\n BlacklistCheck = 2,\n SignalingCheck = 3,\n ParticipationScoreCheck = 4,\n GmOwnershipCheck = 5,\n}\n\nexport const VECHAIN_KIT_STORAGE_KEYS = {\n NETWORK: 'vechain-kit:network',\n};\n\nexport const ENV = {\n isDevelopment:\n localStorage.getItem(VECHAIN_KIT_STORAGE_KEYS.NETWORK) === 'test',\n isProduction:\n localStorage.getItem(VECHAIN_KIT_STORAGE_KEYS.NETWORK) === 'main',\n};\n\nexport const VECHAIN_KIT_MIXPANEL_TOKENS = {\n development: 'e9627dff3f9ac07c28c28615fa86b181',\n production: '2c9e0d4c8a37e9f31e3d59361f48b0dc',\n};\n\nexport const VECHAIN_KIT_MIXPANEL_PROJECT_TOKEN = ENV.isProduction\n ? VECHAIN_KIT_MIXPANEL_TOKENS.production\n : VECHAIN_KIT_MIXPANEL_TOKENS.development;\n\nexport const VECHAIN_KIT_MIXPANEL_PROJECT_NAME = 'vechain-kit';\n\nexport type PrivyEcosystemApp = {\n id: string;\n name: string;\n website: string;\n};\n\nexport const DEFAULT_PRIVY_ECOSYSTEM_APPS: PrivyEcosystemApp[] = [\n {\n id: 'clz41gcg00e4ay75dmq3uzzgr',\n name: 'Cleanify',\n website: 'https://app.cleanify.vet',\n },\n {\n id: 'cm153hrup0817axti38avlfyg',\n name: 'GreenCart',\n website: 'https://greencart.ai',\n },\n {\n id: 'clv9sfos20j6x1431ga80d95f',\n name: 'Mughsot',\n website: 'https://mugshot.vet/',\n },\n {\n id: 'cm4l8tiai070i108zo17oieyc',\n name: 'EVearn',\n website: 'https://evearn.io',\n },\n];\n\n//Hardcoded for displaying in the \"Terms and Privacy\" agreements modal\nexport const VECHAIN_KIT_TERMS_CONFIG = {\n url: 'https://vechainkit.vechain.org/terms',\n version: 1,\n required: true,\n displayName: 'Vechain Kit Terms',\n};\n\n//Hardcoded for showing up if allowAnalytics is true\n//So we ask users if they agree with data tracking\nexport const VECHAIN_KIT_COOKIES_CONFIG = {\n url: 'https://vechainkit.vechain.org/cookies',\n version: 1,\n required: false,\n displayName: 'Vechain Kit Cookies',\n};\n","import { picasso } from '@vechain/picasso';\nimport { BigNumber } from 'bignumber.js';\n\nexport const humanAddress = (\n address: string,\n charAtStart = 6,\n charAtEnd = 4,\n): string => `${address.slice(0, charAtStart)}•••${address.slice(-charAtEnd)}`;\n\nexport const humanDomain = (\n domain: string,\n lengthBefore = 8,\n lengthAfter = 6,\n) => {\n // if domain is smaller than lengthBefore + lengthAfter, return the domain\n if (domain.length <= lengthBefore + lengthAfter) return domain;\n\n const before = domain.substring(0, lengthBefore);\n const after = domain.substring(domain.length - lengthAfter);\n return `${before}•••${after}`;\n};\n\nexport const humanNumber = (\n formattedValue: BigNumber.Value,\n originalValue?: BigNumber.Value,\n symbol: string | null = null,\n) => {\n const suffix = symbol ? ' ' + symbol : '';\n\n originalValue = originalValue || formattedValue;\n const formatter = new Intl.NumberFormat('en-US', {\n style: 'decimal',\n minimumFractionDigits:\n Number.parseFloat(formattedValue.toString()) % 1 === 0 ? 0 : 2,\n });\n\n let value = formatter.format(\n roundDownSignificantDigits(Number(formattedValue), 2),\n );\n\n //If the original number got scaled down to 0\n if (!isZero(originalValue) && isZero(value)) {\n value = '< 0.01';\n }\n\n return value + suffix;\n};\n\nexport const isZero = (value?: BigNumber.Value) => {\n if (!value && value !== 0) return false;\n return new BigNumber(value).isZero();\n};\n\nexport const getPicassoImage = (address: string, base64 = false): string => {\n const image = picasso(address.toLowerCase());\n if (base64) {\n const base64data = Buffer.from(image, 'utf8').toString('base64');\n return `data:image/svg+xml;base64,${base64data}`;\n }\n return `data:image/svg+xml;utf8,${image}`;\n};\n\n/**\n * Format the number human friendly\n * @param formattedValue - value in string or number\n * @param originalValue - value in string or number to determine if the original value is 0\n * @param symbol - (optional) symbol to append at end of number (with a space)\n * @returns the formatted number\n */\n\nfunction roundDownSignificantDigits(numbers: number, decimals: number = 0) {\n if (typeof numbers !== 'number' || typeof decimals !== 'number') {\n throw new Error(\n 'Invalid input: number and decimals must be of type number',\n );\n }\n\n const significantDigits = parseInt(\n numbers.toExponential().split('e-')[1] || '0',\n 10,\n );\n\n const effectiveDecimals = Math.max(0, decimals + significantDigits);\n const scaleFactor = Math.pow(10, effectiveDecimals);\n\n return Math.floor(numbers * scaleFactor) / scaleFactor;\n}\n","import {\n generatePrivateKey,\n privateKeyToAccount,\n Account,\n} from 'viem/accounts';\n\nexport const randomTransactionUser: {\n privateKey: string;\n account: Account;\n address: string;\n} = (() => {\n const privateKey = generatePrivateKey();\n const account = privateKeyToAccount(privateKey);\n return {\n privateKey,\n account,\n address: account.address,\n };\n})();\n","import crypto from \"crypto\";\nconst PREFIX = \"0x\";\nconst PREFIX_REGEX = /^0[xX]/;\nconst HEX_REGEX = /^(0[xX])?[a-fA-F0-9]+$/;\n\n/**\n * Returns the provied hex string with the hex prefix removed.\n * If the prefix doesn't exist the hex is returned unmodified\n * @param hex - the input hex string\n * @returns the input hex string with the hex prefix removed\n * @throws an error if the input is not a valid hex string\n */\nexport const removePrefix = (hex: string): string => {\n validate(hex);\n return hex.replace(PREFIX_REGEX, \"\");\n};\n\n/**\n * Returns the provided hex string with the hex prefix added.\n * If the prefix already exists the string is returned unmodified.\n * If the string contains an UPPER case `X` in the prefix it will be replaced with a lower case `x`\n * @param hex - the input hex string\n * @returns the input hex string with the hex prefix added\n * @throws an error if the input is not a valid hex string\n */\nexport const addPrefix = (hex: string): string => {\n validate(hex);\n return PREFIX_REGEX.test(hex)\n ? hex.replace(PREFIX_REGEX, PREFIX)\n : `${PREFIX}${hex}`;\n};\n\n/**\n * Validate the hex string. Throws an Error if not valid\n * @param hex - the input hex string\n * @throws an error if the input is not a valid hex string\n */\nexport const validate = (hex: string) => {\n if (!isValid(hex)) throw Error(\"Provided hex value is not valid\");\n};\n\n/**\n * Check if input string is valid\n * @param hex - the input hex string\n * @returns boolean representing whether the input hex is valid\n */\nexport const isValid = (hex?: string | null): boolean => {\n return !!hex && HEX_REGEX.test(hex);\n};\n\nexport const isInvalid = (hex?: string | null): boolean => {\n return !isValid(hex);\n};\n\nexport const normalize = (hex: string): string => {\n return addPrefix(hex.toLowerCase().trim());\n};\n\nexport const compare = (hex1: string, hex2: string): boolean => {\n try {\n return (\n removePrefix(hex1).toLowerCase() ===\n removePrefix(hex2).toLowerCase()\n );\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e) {\n return false;\n }\n};\n\n/**\n * Generate a random hex string of the defined length\n * @param size - the length of the random hex output\n * @returns a random hex string of length `size`\n */\nexport const generateRandom = (size: number): string => {\n if (size < 1) throw Error(\"Size must be > 0\");\n const randBuffer = crypto.randomBytes(Math.ceil(size / 2));\n if (!randBuffer) throw Error(\"Failed to generate random hex\");\n return `${PREFIX}${randBuffer.toString(\"hex\").substring(0, size)}`;\n};\n","import * as HexUtils from './hexUtils';\nimport { Address } from '@vechain/sdk-core';\n\n/**\n * Checks if two addresses are equal. Returns true if both values are strings AND:\n * - The two values are equal OR\n * - The checksumed addresses are equal\n *\n * @param address1\n * @param address2\n */\nexport const compareAddresses = (\n address1?: string,\n address2?: string,\n): boolean => {\n if (!address1 || !address2) return false;\n\n if (address2 === address1) {\n return true;\n }\n\n try {\n return HexUtils.normalize(address1) === HexUtils.normalize(address2);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e) {\n return false;\n }\n};\n\nexport const compareListOfAddresses = (add1: string[], add2: string[]) => {\n if (add1.length !== add2.length) return false;\n const sortedAdd1 = [...add1]\n .map((e) => e.toLowerCase())\n .sort((a, b) => a.localeCompare(b));\n const sortedAdd2 = [...add2]\n .map((e) => e.toLowerCase())\n .sort((a, b) => a.localeCompare(b));\n\n for (let i = 0; i < sortedAdd1.length; i++) {\n if (!compareAddresses(sortedAdd1[i], sortedAdd2[i])) return false;\n }\n\n return true;\n};\n\nexport const regexPattern = () => {\n return /^0x[a-fA-F0-9]{40}$/;\n};\n\nexport const isValidAddress = Address.isValid;\n\nexport const leftPadWithZeros = (str: string, length: number): string => {\n // Remove '0x' prefix if it exists\n const cleanStr = str.startsWith('0x') ? str.slice(2) : str;\n if (cleanStr.length > length) {\n throw new Error('Input string is longer than the specified length');\n }\n // Pad the string to the specified length\n const paddedStr = cleanStr.padStart(length, '0');\n return `0x${paddedStr}`;\n};\n","import { AppConfig } from '.';\nconst config: AppConfig = {\n ipfsFetchingService: 'https://api.dev.gateway-proxy.vechain.org/ipfs',\n ipfsPinningService:\n 'https://api.dev.gateway-proxy.vechain.org/api/v1/pinning/pinFileToIPFS',\n vthoContractAddress: '0x0000000000000000000000000000456E65726779',\n b3trContractAddress: '0xd31A6f2DBa8785cE41AB68Ea192791B5175309F4',\n vot3ContractAddress: '0x028Af33230576c1e073C8245F72a7A4aa53564E4',\n b3trGovernorAddress: '0x36E0e9b46D56dF12Dd69fD560e41954C73cE9ded',\n timelockContractAddress: '0x125389845c93Efcf6471BA8BE1AC19c11e128603',\n xAllocationPoolContractAddress:\n '0xC8232c91E2f744E533322B99F95f809b9f7ec446',\n xAllocationVotingContractAddress:\n '0x074F093f4C534a16cDD09cb4b2669713218A762a',\n emissionsContractAddress: '0x6a084E85f38400790043788FcCee39595616aa3A',\n voterRewardsContractAddress: '0xbAb852081C459c0060960287aDcf9a0C2c1dc4b8',\n galaxyMemberContractAddress: '0xbdA1cff75d2D43AB9186Ada41fECF79e25c49Ba3',\n treasuryContractAddress: '0xe9414513Fe0e3b9bf7a61eC5c1AC7Df943fB3e77',\n x2EarnAppsContractAddress: '0x432C46476f4970575C43B19588A170D237dC4929',\n x2EarnRewardsPoolContractAddress:\n '0x134E4Fce6761f660401808CF86aE0e62cE52a81E',\n nodeManagementContractAddress: '0xa96B5057171D797298A71178b48449A7bC615D8E',\n veBetterPassportContractAddress:\n '0x8db6D14452fE36ba86C341AfEFaC0f90A0Db2bcb',\n x2EarnCreatorContractAddress: '0x4e5f7eb452e9ecd75c0B29e3540014cBe01bBF52',\n veDelegate: '0xfc32a9895C78CE00A1047d602Bd81Ea8134CC32b',\n veDelegateVotes: '0xeb71148c9B3cd57e228c2152d79f6e78F5F1ef9a',\n veDelegateTokenContractAddress:\n '0xD3f7b82Df5705D34f64C634d2dEf6B1cB3116950',\n oracleContractAddress: '0x49eC7192BF804Abc289645ca86F1eD01a6C17713',\n accountFactoryAddress: '0xC06Ad8573022e2BE416CA89DA47E8c592971679A',\n cleanifyCampaignsContractAddress:\n '0x7a11D63338576aE8c038868433ea199d7E5319A6',\n cleanifyChallengesContractAddress:\n '0xa58681692AdDD2e8E37f9113D40Bb9253C03F65e',\n veWorldSubdomainClaimerContractAddress:\n '0x0000000000000000000000000000000000000000',\n vetDomainsContractAddress: '0x0000000000000000000000000000000000000000',\n vetDomainsPublicResolverAddress:\n '0x0000000000000000000000000000000000000000',\n vetDomainsReverseRegistrarAddress:\n '0x5c970901a587BA3932C835D4ae5FAE2BEa7e78Bc',\n vnsResolverAddress: '0x0000000000000000000000000000000000000000',\n gloDollarContractAddress: '0x0000000000000000000000000000000000000000',\n vetDomainAvatarUrl: 'https://testnet.vet.domains/api/avatar',\n indexerUrl: 'https://b3tr.testnet.vechain.org/api/v1',\n b3trIndexerUrl: 'https://b3tr.testnet.vechain.org/api/v1',\n graphQlIndexerUrl: 'https://graph.vet/subgraphs/name/vns',\n nodeUrl: 'http://localhost:8669',\n network: {\n id: 'solo',\n name: 'solo',\n type: 'solo',\n defaultNet: true,\n urls: ['http://localhost:8669'],\n explorerUrl: 'https://explore-testnet.vechain.org',\n blockTime: 10000,\n genesis: {\n number: 0,\n id: '0x00000000c05a20fbca2bf6ae3affba6af4a74b800b585bf7a4988aba7aea69f6',\n size: 170,\n parentID:\n '0xffffffff53616c757465202620526573706563742c20457468657265756d2100',\n timestamp: 1530316800,\n gasLimit: 10000000,\n beneficiary: '0x0000000000000000000000000000000000000000',\n gasUsed: 0,\n totalScore: 0,\n txsRoot:\n '0x45b0cfc220ceec5b7c1c62c4d4193d38e4eba48e8815729ce75f9c0ab0e4c1c0',\n txsFeatures: 0,\n stateRoot:\n '0x93de0ffb1f33bc0af053abc2a87c4af44594f5dcb1cb879dd823686a15d68550',\n receiptsRoot:\n '0x45b0cfc220ceec5b7c1c62c4d4193d38e4eba48e8815729ce75f9c0ab0e4c1c0',\n signer: '0x0000000000000000000000000000000000000000',\n isTrunk: true,\n transactions: [],\n },\n },\n explorerUrl: 'https://explore-testnet.vechain.org',\n};\nexport default config;\n","import { AppConfig } from '.';\n\nconst config: AppConfig = {\n ipfsFetchingService: 'https://api.dev.gateway-proxy.vechain.org/ipfs',\n ipfsPinningService:\n 'https://api.dev.gateway-proxy.vechain.org/api/v1/pinning/pinFileToIPFS',\n vthoContractAddress: '0x0000000000000000000000000000456E65726779',\n b3trContractAddress: '0xbf64cf86894Ee0877C4e7d03936e35Ee8D8b864F',\n vot3ContractAddress: '0xa704c45971995467696EE9544Da77DD42Bc9706E',\n b3trGovernorAddress: '0xDF5E114D391CAC840529802fe8D01f6bdeBE41eC',\n timelockContractAddress: '0x30ee94F303643902a68aD8A7A6456cA69d763192',\n xAllocationPoolContractAddress:\n '0x9B9CA9D0C41Add1d204f90BA0E9a6844f1843A84',\n xAllocationVotingContractAddress:\n '0x5859ff910d8b0c127364c98E24233b0af7443c1c',\n emissionsContractAddress: '0x3D7616213191a10460e49CfdB7edBf88D6a10942',\n voterRewardsContractAddress: '0x2E47fc4aabB3403037fB5E1f38995E7a91Ce8Ed2',\n galaxyMemberContractAddress: '0xa9aC49C030c1148b95F056E86f2531f8F3d5bf27',\n x2EarnCreatorContractAddress: '',\n nodeManagementContractAddress: '',\n x2EarnAppsContractAddress: '0xcB23Eb1bBD5c07553795b9538b1061D0f4ABA153',\n treasuryContractAddress: '0x039893EBe092A2D22B08E2b029735D211bfF7F50',\n x2EarnRewardsPoolContractAddress:\n '0x5F8f86B8D0Fa93cdaE20936d150175dF0205fB38',\n veBetterPassportContractAddress:\n '0x63c061a2753e84635a22ff05954e1687f104f002',\n veDelegate: '0xfc32a9895C78CE00A1047d602Bd81Ea8134CC32b',\n veDelegateVotes: '0xeb71148c9B3cd57e228c2152d79f6e78F5F1ef9a',\n veDelegateTokenContractAddress:\n '0xD3f7b82Df5705D34f64C634d2dEf6B1cB3116950',\n oracleContractAddress: '0xdcCAaBd81B38e0dEEf4c202bC7F1261A4D9192C6',\n accountFactoryAddress: '0x713b908Bcf77f3E00EFEf328E50b657a1A23AeaF',\n cleanifyCampaignsContractAddress:\n '0x22d19ACBD2cBf6b2B6C546395c26B9Cb448248BF',\n cleanifyChallengesContractAddress:\n '0x8Cc885DC3e5c376632CCEA0e8e1a51F1B3572442',\n veWorldSubdomainClaimerContractAddress:\n '0xe5af50e7ad1aaab4fbe4efbb2b30f764013918b3',\n vetDomainsContractAddress: '0xcBFB30c1F267914816668d53AcBA7bA7c9806D13',\n vetDomainsPublicResolverAddress:\n '0xA6eFd130085a127D090ACb0b100294aD1079EA6f',\n vetDomainsReverseRegistrarAddress:\n '0x6878f1aD5e3015310CfE5B38d7B7071C5D8818Ca',\n vnsResolverAddress: '0xc403b8EA53F707d7d4de095f0A20bC491Cf2bc94',\n gloDollarContractAddress: '0x0000000000000000000000000000000000000000',\n vetDomainAvatarUrl: 'https://testnet.vet.domains/api/avatar',\n indexerUrl: 'https://indexer.testnet.vechain.org/api/v1',\n b3trIndexerUrl: 'https://b3tr.testnet.vechain.org/api/v1',\n graphQlIndexerUrl: 'https://graph.vet/subgraphs/name/vns',\n nodeUrl: 'https://testnet.vechain.org',\n network: {\n id: 'testnet',\n name: 'testnet',\n type: 'test',\n defaultNet: true,\n urls: [\n 'https://testnet.vechain.org',\n 'https://vethor-node-test.vechaindev.com',\n 'https://sync-testnet.veblocks.net',\n 'https://testnet.vecha.in',\n ],\n explorerUrl: 'https://insight.vecha.in/#/test',\n blockTime: 10000,\n genesis: {\n number: 0,\n id: '0x000000000b2bce3c70bc649a02749e8687721b09ed2e15997f466536b20bb127',\n size: 170,\n parentID:\n '0xffffffff00000000000000000000000000000000000000000000000000000000',\n timestamp: 1530014400,\n gasLimit: 10000000,\n beneficiary: '0x0000000000000000000000000000000000000000',\n gasUsed: 0,\n totalScore: 0,\n txsRoot:\n '0x45b0cfc220ceec5b7c1c62c4d4193d38e4eba48e8815729ce75f9c0ab0e4c1c0',\n txsFeatures: 0,\n stateRoot:\n '0x4ec3af0acbad1ae467ad569337d2fe8576fe303928d35b8cdd91de47e9ac84bb',\n receiptsRoot:\n '0x45b0cfc220ceec5b7c1c62c4d4193d38e4eba48e8815729ce75f9c0ab0e4c1c0',\n signer: '0x0000000000000000000000000000000000000000',\n isTrunk: true,\n transactions: [],\n },\n },\n explorerUrl: 'https://explore-testnet.vechain.org/transactions',\n};\nexport default config;\n","import { AppConfig } from '.';\nconst config: AppConfig = {\n ipfsFetchingService: 'https://api.gateway-proxy.vechain.org/ipfs',\n indexerUrl: 'https://indexer.mainnet.vechain.org/api/v1',\n ipfsPinningService:\n 'https://api.gateway-proxy.vechain.org/api/v1/pinning/pinFileToIPFS',\n b3trIndexerUrl: 'https://b3tr.mainnet.vechain.org/api/v1',\n graphQlIndexerUrl: 'https://graph.vet/subgraphs/name/vns',\n nodeUrl: 'https://mainnet.vechain.org',\n network: {\n id: 'main',\n name: 'main',\n type: 'main',\n defaultNet: true,\n urls: [\n 'https://mainnet.vechain.org',\n 'https://vethor-node.vechain.com',\n 'https://mainnet.veblocks.net',\n 'https://mainnet.vecha.in',\n ],\n explorerUrl: 'https://vechainstats.com',\n blockTime: 10000,\n genesis: {\n number: 0,\n id: '0x00000000851caf3cfdb6e899cf5958bfb1ac3413d346d43539627e6be7ec1b4a',\n size: 170,\n parentID:\n '0xffffffff53616c757465202620526573706563742c20457468657265756d2100',\n timestamp: 1530316800,\n gasLimit: 10000000,\n beneficiary: '0x0000000000000000000000000000000000000000',\n gasUsed: 0,\n totalScore: 0,\n txsRoot:\n '0x45b0cfc220ceec5b7c1c62c4d4193d38e4eba48e8815729ce75f9c0ab0e4c1c0',\n txsFeatures: 0,\n stateRoot:\n '0x09bfdf9e24dd5cd5b63f3c1b5d58b97ff02ca0490214a021ed7d99b93867839c',\n receiptsRoot:\n '0x45b0cfc220ceec5b7c1c62c4d4193d38e4eba48e8815729ce75f9c0ab0e4c1c0',\n signer: '0x0000000000000000000000000000000000000000',\n isTrunk: true,\n transactions: [],\n },\n },\n explorerUrl: 'https://vechainstats.com/transaction',\n // general\n vthoContractAddress: '0x0000000000000000000000000000456E65726779',\n //VeBetterDAO\n b3trContractAddress: '0x5ef79995FE8a89e0812330E4378eB2660ceDe699',\n vot3ContractAddress: '0x76Ca782B59C74d088C7D2Cce2f211BC00836c602',\n b3trGovernorAddress: '0x1c65C25fABe2fc1bCb82f253fA0C916a322f777C',\n timelockContractAddress: '0x7B7EaF620d88E38782c6491D7Ce0B8D8cF3227e4',\n xAllocationPoolContractAddress:\n '0x4191776F05f4bE4848d3f4d587345078B439C7d3',\n xAllocationVotingContractAddress:\n '0x89A00Bb0947a30FF95BEeF77a66AEdE3842Fe5B7',\n emissionsContractAddress: '0xDf94739bd169C84fe6478D8420Bb807F1f47b135',\n voterRewardsContractAddress: '0x838A33AF756a6366f93e201423E1425f67eC0Fa7',\n galaxyMemberContractAddress: '0x93B8cD34A7Fc4f53271b9011161F7A2B5fEA9D1F',\n treasuryContractAddress: '0xD5903BCc66e439c753e525F8AF2FeC7be2429593',\n x2EarnAppsContractAddress: '0x8392B7CCc763dB03b47afcD8E8f5e24F9cf0554D',\n x2EarnRewardsPoolContractAddress:\n '0x6Bee7DDab6c99d5B2Af0554EaEA484CE18F52631',\n x2EarnCreatorContractAddress: '0xe8e96a768ffd00417d4bd985bec9EcfC6F732a7f',\n nodeManagementContractAddress: '0xB0EF9D89C6b49CbA6BBF86Bf2FDf0Eee4968c6AB',\n veBetterPassportContractAddress:\n '0x35a267671d8EDD607B2056A9a13E7ba7CF53c8b3',\n //veDelegate\n veDelegate: '0xfc32a9895C78CE00A1047d602Bd81Ea8134CC32b',\n veDelegateVotes: '0xeb71148c9B3cd57e228c2152d79f6e78F5F1ef9a',\n veDelegateTokenContractAddress:\n '0xD3f7b82Df5705D34f64C634d2dEf6B1cB3116950',\n //utility\n oracleContractAddress: '0x49eC7192BF804Abc289645ca86F1eD01a6C17713',\n accountFactoryAddress: '0xC06Ad8573022e2BE416CA89DA47E8c592971679A',\n //cleanify\n cleanifyCampaignsContractAddress:\n '0x7a11D63338576aE8c038868433ea199d7E5319A6',\n cleanifyChallengesContractAddress:\n '0xa58681692AdDD2e8E37f9113D40Bb9253C03F65e',\n veWorldSubdomainClaimerContractAddress:\n '0xa4173c32fe8a61a8fd0d0234675b559fc360446a',\n vetDomainsContractAddress: '0xa9231da8BF8D10e2df3f6E03Dd5449caD600129b',\n vetDomainsPublicResolverAddress:\n '0xabac49445584C8b6c1472b030B1076Ac3901D7cf',\n vetDomainsReverseRegistrarAddress:\n '0x5c970901a587BA3932C835D4ae5FAE2BEa7e78Bc',\n vnsResolverAddress: '0xA11413086e163e41901bb81fdc5617c975Fa5a1A',\n vetDomainAvatarUrl: 'https://vet.domains/api/avatar',\n gloDollarContractAddress: '0x29c630cce4ddb23900f5fe66ab55e488c15b9f5e',\n};\nexport default config;\n","import localConfig from './solo';\nimport testnetConfig from './testnet';\nimport mainnetConfig from './mainnet';\nimport { Network, NETWORK_TYPE } from './network';\n\nexport type AppConfig = {\n ipfsFetchingService: string;\n ipfsPinningService: string;\n vthoContractAddress: string;\n b3trContractAddress: string;\n vot3ContractAddress: string;\n b3trGovernorAddress: string;\n timelockContractAddress: string;\n xAllocationPoolContractAddress: string;\n xAllocationVotingContractAddress: string;\n emissionsContractAddress: string;\n voterRewardsContractAddress: string;\n galaxyMemberContractAddress: string;\n treasuryContractAddress: string;\n x2EarnAppsContractAddress: string;\n x2EarnCreatorContractAddress: string;\n x2EarnRewardsPoolContractAddress: string;\n nodeManagementContractAddress: string;\n veBetterPassportContractAddress: string;\n veDelegate: string;\n veDelegateVotes: string;\n veDelegateTokenContractAddress: string;\n oracleContractAddress: string;\n accountFactoryAddress: string;\n cleanifyCampaignsContractAddress: string;\n cleanifyChallengesContractAddress: string;\n veWorldSubdomainClaimerContractAddress: string;\n vetDomainsContractAddress: string;\n vetDomainsPublicResolverAddress: string;\n vetDomainsReverseRegistrarAddress: string;\n vnsResolverAddress: string;\n gloDollarContractAddress: string;\n vetDomainAvatarUrl: string;\n nodeUrl: string;\n indexerUrl: string;\n b3trIndexerUrl: string;\n graphQlIndexerUrl: string;\n network: Network;\n explorerUrl: string;\n};\n\nexport const getConfig = (env: NETWORK_TYPE): AppConfig => {\n if (env === 'solo') return localConfig;\n if (env === 'test') return testnetConfig;\n if (env === 'main') return mainnetConfig;\n throw new Error(`Unsupported NETWORK_TYPE ${env}`);\n};\n","import { getConfig } from '@/config';\nimport { NETWORK_TYPE } from '@/config/network';\n\n/**\n * Validate IPFS URI strings. An example of a valid IPFS URI is:\n * - ipfs://QmfSTia1TJUiKQ2fyW9NTPzEKNdjMGzbUgrC3QPSTpkum6/406.json\n * - ipfs://QmVPqKfwRXjg5Fqwy6RNRbKR2ZP4pKKVLvmfjmhQfdM3MH/4\n * - ipfs://QmVPqKfwRXjg5Fqwy6RNRbKR2ZP4pKKVLvmfjmhQfdM3MH\n * @param uri\n * @returns\n */\nexport const validateIpfsUri = (uri: string): boolean => {\n const trimmedUri = uri.trim();\n return /^ipfs:\\/\\/[a-zA-Z0-9]+(\\/[^/]+)*\\/?$/.test(trimmedUri);\n};\n\n/**\n * Converts a CID to an IPFS native URL.\n *\n * @param cid - The CID to convert.\n * @param fileName - The name of the file to append to the URL.\n *\n * @returns The IPFS URL in the format `ipfs://${cid}/${fileName}`.\n */\nexport function toIPFSURL(cid: string, fileName?: string): string {\n return `ipfs://${cid}/${fileName ?? ''}`;\n}\n\n/**\n * Uploads a blob to IPFS.\n * @param blob The Blob object to upload.\n * @param filename A name for the file in the FormData payload.\n * @param networkType The network type to use for the IPFS pinning service.\n * @returns The IPFS hash of the uploaded blob.\n */\nexport async function uploadBlobToIPFS(\n blob: Blob,\n filename: string,\n networkType: NETWORK_TYPE,\n): Promise<string> {\n try {\n const form = new FormData();\n form.append('file', blob, filename);\n const response = await fetch(\n getConfig(networkType).ipfsPinningService,\n {\n method: 'POST',\n headers: {\n 'X-Project-Id': 'vechain-kit',\n },\n body: form,\n },\n );\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const data = await response.json();\n return data.IpfsHash;\n } catch (error) {\n console.error('Error uploading blob:', error);\n throw new Error('Failed to upload blob to IPFS');\n }\n}\n","import { LoginMethodOrderOption } from '@privy-io/react-auth';\nimport { TransactionClause } from '@vechain/sdk-core';\n\nexport type TokenBalance = {\n original: string;\n scaled: string;\n formatted: string;\n};\n\nexport type ENSRecords = {\n display?: string;\n description?: string;\n email?: string;\n url?: string;\n header?: string;\n notice?: string;\n location?: string;\n phone?: string;\n [key: string]: string | undefined;\n};\n\nexport type Wallet = {\n address: string;\n domain?: string;\n image?: string;\n isLoadingMetadata?: boolean;\n metadata?: ENSRecords;\n} | null;\n\nexport type SmartAccount = Wallet & {\n isDeployed: boolean;\n isActive: boolean;\n version: number | null;\n};\n\nexport type ConnectionSource = {\n type: 'privy' | 'wallet' | 'privy-cross-app';\n displayName: string;\n};\n\n/**\n * Data that the Privy user must sign in order to execute a transaction\n * by authorizing the Smart Account contract\n */\nexport type ExecuteWithAuthorizationSignData = {\n domain: {\n name: string;\n version: string;\n chainId: number;\n verifyingContract: string;\n };\n types: {\n ExecuteWithAuthorization: {\n name: string;\n type: string;\n }[];\n EIP712Domain: {\n name: string;\n type: string;\n }[];\n };\n primaryType: string;\n message: {\n validAfter: number;\n validBefore: number;\n to: string | null | undefined;\n value: string;\n data: string;\n };\n};\n\nexport type ExecuteBatchWithAuthorizationSignData = {\n domain: {\n name: string;\n version: string;\n chainId: number;\n verifyingContract: string;\n };\n types: {\n ExecuteBatchWithAuthorization: {\n name: string;\n type: string;\n }[];\n EIP712Domain: {\n name: string;\n type: string;\n }[];\n };\n primaryType: string;\n message: {\n to: string[] | null | undefined;\n value: string[] | null | undefined;\n data: string[] | null | undefined;\n validAfter: number;\n validBefore: number;\n nonce: string;\n };\n};\n\n/**\n * ready: the user has not clicked on the button yet\n * pending: the user has clicked on the button and we're waiting for the transaction to be sent\n * waitingConfirmation: the transaction has been sent and we're waiting for the transaction to be confirmed by the chain\n * success: the transaction has been confirmed by the chain\n * error: the transaction has failed\n * unknown: the transaction receipt has failed to load\n */\nexport type TransactionStatus =\n | 'ready'\n | 'pending'\n | 'waitingConfirmation'\n | 'success'\n | 'error'\n | 'unknown';\n\nexport type TransactionStatusErrorType = {\n type:\n | 'SendTransactionError'\n | 'TxReceiptError'\n | 'RevertReasonError'\n | 'UserRejectedError';\n reason?: string;\n};\n\n/**\n * An enhanced clause with a comment and an abi\n * @param comment a comment to add to the clause\n * @param abi the abi of the contract to call\n */\nexport type EnhancedClause = TransactionClause;\n\nexport type PrivyAppInfo = {\n id: string;\n name: string;\n logo_url: string;\n icon_url: string | null;\n terms_and_conditions_url: string;\n privacy_policy_url: string;\n theme: string;\n accent_color: string;\n wallet_auth: boolean;\n email_auth: boolean;\n google_oauth: boolean;\n twitter_oauth: boolean;\n url: string;\n website?: string;\n};\n\nexport type PrivyLoginMethod = LoginMethodOrderOption;\n\nexport interface CrossAppConnectionCache {\n timestamp: number;\n ecosystemApp: {\n name: string;\n logoUrl?: string;\n appId: string;\n website?: string;\n };\n}\n\nexport enum NFTMediaType {\n IMAGE = 'image',\n VIDEO = 'video',\n UNKNOWN = 'unknown',\n TEXT = 'text', // mp4 appears as text sometimes\n}\n\nexport enum VePassportUserStatus {\n NONE = 'NONE',\n WHITELIST = 'WHITELIST',\n BLACKLIST = 'BLACKLIST',\n}\n\nexport type CURRENCY = 'usd' | 'gbp' | 'eur';\n\nexport const CURRENCY_SYMBOLS: Record<CURRENCY, string> = {\n usd: '$',\n gbp: '£',\n eur: '€',\n};\n","export const ENS_TEXT_RECORDS = [\n 'display',\n 'avatar',\n 'description',\n 'keywords',\n 'email',\n 'url',\n 'header',\n 'notice',\n 'location',\n 'phone',\n 'com.x',\n] as const;\n\nexport type TextRecords = {\n [K in (typeof ENS_TEXT_RECORDS)[number]]?: string;\n};\n","export * from './types';\nexport * from './ensTextRecords';\n\nimport { LegalDocument } from '@/providers';\n\nexport enum LegalDocumentType {\n TERMS = 'terms',\n PRIVACY = 'privacy',\n COOKIES = 'cookies',\n}\n\nexport enum LegalDocumentSource {\n VECHAIN_KIT = 'vechain-kit',\n APPLICATION = 'application',\n}\n\n// Base type for all legal documents (terms, privacy policy, cookies)\nexport type EnrichedLegalDocument = LegalDocument & {\n id: string;\n documentType: LegalDocumentType;\n documentSource: LegalDocumentSource;\n};\n\n// Agreement record stored in localStorage\nexport type LegalDocumentAgreement = EnrichedLegalDocument & {\n walletAddress: string;\n timestamp: number;\n};\n","import { NFTMediaType } from \"@/types\"\n\nconst isValidMimeType = (mime: string, type: NFTMediaType[]) => {\n const found = type.find(t => {\n if (mime?.split(\"/\")[0] === t) {\n return true\n }\n })\n\n return !!found\n}\n\nexport const resolveMediaTypeFromMimeType = (mimeType: string): NFTMediaType => {\n if (isValidMimeType(mimeType, [NFTMediaType.IMAGE])) return NFTMediaType.IMAGE\n else if (isValidMimeType(mimeType, [NFTMediaType.VIDEO])) return NFTMediaType.VIDEO\n\n return NFTMediaType.UNKNOWN\n}\n","import { NETWORK_TYPE } from '@/config/network';\nimport { validateIpfsUri } from './ipfs';\nimport { getConfig } from '@/config';\n\n/**\n * Convert a URI to a URL\n * We support both IPFS and Arweave URIs. Both should be converted to their https gateway URLs.\n * All other URIs should pass through unchanged.\n *\n * @param uri\n */\nexport const convertUriToUrl = (uri: string, networkType: NETWORK_TYPE) => {\n // if it is a data uri just return it\n if (uri.startsWith('data:')) return uri;\n\n const splitUri = uri?.split('://');\n if (splitUri.length !== 2) return null;\n // if (splitUri.length !== 2) throw new Error(`Invalid URI ${uri}`);\n\n const protocol = splitUri?.[0]?.trim();\n const uriWithoutProtocol = splitUri[1];\n\n switch (protocol) {\n case 'ipfs':\n if (!validateIpfsUri(uri))\n throw new Error(`Invalid IPFS URI ${uri}`);\n\n // Check cache for IPFS document\n return `${\n getConfig(networkType).ipfsFetchingService\n }/${uriWithoutProtocol}`;\n\n case 'ar':\n return `https://arweave.net/${uriWithoutProtocol}`;\n\n default:\n return uri;\n }\n};\n","export const gmNfts = [\n {\n level: '1',\n name: 'Earth',\n image: '/images/nft-levels/0.png',\n multiplier: 1,\n b3trToUpgrade: 0,\n },\n {\n level: '2',\n name: 'Moon',\n image: '/images/nft-levels/1.png',\n multiplier: 1.1,\n b3trToUpgrade: 10_000,\n },\n {\n level: '3',\n name: 'Mercury',\n image: '/images/nft-levels/2.png',\n multiplier: 1.2,\n b3trToUpgrade: 25_000,\n },\n {\n level: '4',\n name: 'Venus',\n image: '/images/nft-levels/3.png',\n multiplier: 1.5,\n b3trToUpgrade: 50_000,\n },\n {\n level: '5',\n name: 'Mars',\n image: '/images/nft-levels/4.png',\n multiplier: 2,\n b3trToUpgrade: 100_000,\n },\n {\n level: '6',\n name: 'Jupiter',\n image: '/images/nft-levels/5.png',\n multiplier: 2.5,\n b3trToUpgrade: 250_000,\n },\n {\n level: '7',\n name: 'Saturn',\n image: '/images/nft-levels/6.png',\n multiplier: 3,\n b3trToUpgrade: 500_000,\n },\n {\n level: '8',\n name: 'Uranus',\n image: '/images/nft-levels/7.png',\n multiplier: 5,\n b3trToUpgrade: 2_500_000,\n },\n {\n level: '9',\n name: 'Neptune',\n image: '/images/nft-levels/8.png',\n multiplier: 10,\n b3trToUpgrade: 5_000_000,\n },\n {\n level: '10',\n name: 'Galaxy',\n image: '/images/nft-levels/9.png',\n multiplier: 25,\n b3trToUpgrade: 25_000_000,\n },\n];\n\n/**\n * Maps the XNode level to the GM starting level.\n */\nexport const xNodeToGMstartingLevel: Record<number, number> = {\n 1: 2,\n 2: 4,\n 3: 6,\n 4: 2,\n 5: 4,\n 6: 6,\n 7: 7,\n};\n","// Function to build query string dynamically\nexport const buildQueryString = (params: { [key: string]: any }) => {\n const searchParams = new URLSearchParams()\n\n // Iterate over the parameters and append only the defined values\n Object.keys(params).forEach(key => {\n const value = params[key]\n if (value !== undefined && value !== null) {\n searchParams.append(key, String(value))\n }\n })\n\n return searchParams.toString()\n}\n","/**\n * Map strength level coming from contract to hq image\n */\nexport const NodeStrengthLevelToImage: { [key: string]: string } = {\n \"0\": \"/images/vnt/00-noNode.webp\",\n \"1\": \"/images/vnt/01-strength.webp\",\n \"2\": \"/images/vnt/02-thunder.webp\",\n \"3\": \"/images/vnt/03-mjolnir.webp\",\n \"4\": \"/images/vnt/04-vethorX.webp\",\n \"5\": \"/images/vnt/05-strengthX.webp\",\n \"6\": \"/images/vnt/06-thunderX.webp\",\n \"7\": \"/images/vnt/07-mjolnirX.webp\",\n}\n\n//after this level the nfts are considered xNode\nexport const MinXNodeLevel = 4\nexport const EconomicNodeStrengthLevelToName: { [key: string]: string } = {\n \"1\": \"Strength\",\n \"2\": \"Thunder\",\n \"3\": \"Mjolnir\",\n}\n\nexport const XNodeStrengthLevelToName: { [key: string]: string } = {\n \"4\": \"VeThorX\",\n \"5\": \"StrengthX\",\n \"6\": \"ThunderX\",\n \"7\": \"MjolnirX\",\n}\n\nexport const allNodeStrengthLevelToName: { [key: string]: string } = {\n ...EconomicNodeStrengthLevelToName,\n ...XNodeStrengthLevelToName,\n}\n","export const TIME = {\n SECOND: 1000,\n MINUTE: 1000 * 60,\n HOUR: 1000 * 60 * 60,\n DAY: 1000 * 60 * 60 * 24,\n WEEK: 1000 * 60 * 60 * 24 * 7,\n MONTH: 1000 * 60 * 60 * 24 * 30,\n YEAR: 1000 * 60 * 60 * 24 * 365,\n}\n","/**\n * Checks if a string contains common rejection-related terms\n * @param errorMessage The error message to check\n * @returns boolean indicating if the message contains rejection terms\n */\nexport const isRejectionError = (errorMessage: string): boolean => {\n if (!errorMessage) return false;\n const rejectionTerms = ['rejected', 'cancelled', 'user denied', 'closed'];\n return rejectionTerms.some((term) =>\n errorMessage.toLowerCase().includes(term.toLowerCase()),\n );\n};\n","export const isValidUrl = (value: string) => {\n try {\n new URL(value);\n return true;\n } catch {\n return false;\n }\n};\n","import { ThorClient } from '@vechain/sdk-network';\nimport {\n ExtractAbiFunctionNames,\n AbiParametersToPrimitiveTypes,\n ExtractAbiFunction,\n} from 'abitype';\nimport { Abi, ContractFunctionParameters } from 'viem';\nimport type {\n MulticallParameters as viem_MulticallParameters,\n MulticallReturnType as viem_MulticallReturnType,\n} from 'viem';\n\ntype ExtractViewFunction<\n TAbi extends Abi,\n TMethod extends ExtractAbiFunctionNames<TAbi, 'pure' | 'view'>,\n> = Extract<\n TAbi[number],\n { type: 'function'; stateMutability: 'pure' | 'view'; name: TMethod }\n>;\n\nexport type ViewFunctionResult<\n TAbi extends Abi,\n TMethod extends ExtractAbiFunctionNames<TAbi, 'pure' | 'view'>,\n> = AbiParametersToPrimitiveTypes<\n ExtractViewFunction<TAbi, TMethod>['outputs'],\n 'outputs'\n>;\n\nexport type MultipleClausesCallParameters<\n contracts extends readonly unknown[] = readonly ContractFunctionParameters[],\n allowFailure extends boolean = true,\n> = viem_MulticallParameters<contracts, allowFailure>['contracts'];\n\nexport type MultipleClausesCallReturnType<\n contracts extends readonly unknown[] = readonly ContractFunctionParameters[],\n allowFailure extends boolean = true,\n> = viem_MulticallReturnType<contracts, allowFailure>;\n\nexport const executeCallClause = async <\n TAbi extends Abi,\n TMethod extends ExtractAbiFunctionNames<TAbi, 'pure' | 'view'>,\n>({\n thor,\n contractAddress,\n abi,\n method,\n args,\n}: {\n thor: ThorClient;\n contractAddress: string;\n abi: TAbi;\n method: TMethod;\n args: AbiParametersToPrimitiveTypes<\n ExtractAbiFunction<TAbi, TMethod>['inputs'],\n 'inputs'\n >;\n}) => {\n const contract = thor.contracts.load(contractAddress, abi);\n const res = await contract.read[method](...args);\n return res as ViewFunctionResult<TAbi, TMethod>;\n};\n\nexport const executeMultipleClausesCall = async <\n contracts extends readonly ContractFunctionParameters[],\n allowFailure extends boolean = false,\n>({\n thor,\n calls,\n}: {\n thor: ThorClient;\n calls: MultipleClausesCallParameters<contracts, allowFailure>;\n}) => {\n if (!Array.isArray(calls)) throw new Error('calls must be an array');\n\n const clauses = calls.map((call) =>\n thor.contracts\n .load(call.contractAddress, call.abi)\n .clause[call.method](...call.args),\n );\n const res = await thor.transactions.executeMultipleClausesCall(clauses);\n\n if (!res.every((r) => r.success))\n throw new Error('Failed to execute multiple clauses call');\n\n return res.map((r) => r.result.plain) as MultipleClausesCallReturnType<\n contracts,\n allowFailure\n >;\n};\n\nexport const buildCallClauses = <\n contracts extends readonly ContractFunctionParameters[],\n allowFailure extends boolean = false,\n>({\n thor,\n calls,\n}: {\n thor: ThorClient;\n calls: MultipleClausesCallParameters<contracts, allowFailure>;\n}) => {\n if (!Array.isArray(calls)) throw new Error('calls must be an array');\n\n return calls.map((call) =>\n thor.contracts\n .load(call.address, call.abi)\n .clause[call.functionName](...call.args),\n );\n};\n"]}
|
|
@@ -4,8 +4,8 @@ import { jsx, jsxs } from 'react/jsx-runtime';
|
|
|
4
4
|
import { picasso } from '@vechain/picasso';
|
|
5
5
|
import { BigNumber } from 'bignumber.js';
|
|
6
6
|
import { generatePrivateKey, privateKeyToAccount } from 'viem/accounts';
|
|
7
|
-
import
|
|
8
|
-
import '
|
|
7
|
+
import crypto from 'crypto';
|
|
8
|
+
import { Address } from '@vechain/sdk-core';
|
|
9
9
|
|
|
10
10
|
var VOT3Logo = ({ ...props }) => {
|
|
11
11
|
return /* @__PURE__ */ jsxs(Icon, { viewBox: "0 0 1684.56 1684.56", ...props, children: [
|
|
@@ -99,7 +99,7 @@ var VECHAIN_KIT_COOKIES_CONFIG = {
|
|
|
99
99
|
required: false,
|
|
100
100
|
displayName: "Vechain Kit Cookies"
|
|
101
101
|
};
|
|
102
|
-
var humanAddress = (
|
|
102
|
+
var humanAddress = (address, charAtStart = 6, charAtEnd = 4) => `${address.slice(0, charAtStart)}\u2022\u2022\u2022${address.slice(-charAtEnd)}`;
|
|
103
103
|
var humanDomain = (domain, lengthBefore = 8, lengthAfter = 6) => {
|
|
104
104
|
if (domain.length <= lengthBefore + lengthAfter) return domain;
|
|
105
105
|
const before = domain.substring(0, lengthBefore);
|
|
@@ -125,8 +125,8 @@ var isZero = (value) => {
|
|
|
125
125
|
if (!value && value !== 0) return false;
|
|
126
126
|
return new BigNumber(value).isZero();
|
|
127
127
|
};
|
|
128
|
-
var getPicassoImage = (
|
|
129
|
-
const image = picasso(
|
|
128
|
+
var getPicassoImage = (address, base64 = false) => {
|
|
129
|
+
const image = picasso(address.toLowerCase());
|
|
130
130
|
if (base64) {
|
|
131
131
|
const base64data = Buffer.from(image, "utf8").toString("base64");
|
|
132
132
|
return `data:image/svg+xml;base64,${base64data}`;
|
|
@@ -159,6 +159,10 @@ var randomTransactionUser = (() => {
|
|
|
159
159
|
var PREFIX = "0x";
|
|
160
160
|
var PREFIX_REGEX = /^0[xX]/;
|
|
161
161
|
var HEX_REGEX = /^(0[xX])?[a-fA-F0-9]+$/;
|
|
162
|
+
var removePrefix = (hex) => {
|
|
163
|
+
validate(hex);
|
|
164
|
+
return hex.replace(PREFIX_REGEX, "");
|
|
165
|
+
};
|
|
162
166
|
var addPrefix = (hex) => {
|
|
163
167
|
validate(hex);
|
|
164
168
|
return PREFIX_REGEX.test(hex) ? hex.replace(PREFIX_REGEX, PREFIX) : `${PREFIX}${hex}`;
|
|
@@ -169,11 +173,25 @@ var validate = (hex) => {
|
|
|
169
173
|
var isValid = (hex) => {
|
|
170
174
|
return !!hex && HEX_REGEX.test(hex);
|
|
171
175
|
};
|
|
176
|
+
var isInvalid = (hex) => {
|
|
177
|
+
return !isValid(hex);
|
|
178
|
+
};
|
|
172
179
|
var normalize = (hex) => {
|
|
173
180
|
return addPrefix(hex.toLowerCase().trim());
|
|
174
181
|
};
|
|
175
|
-
|
|
176
|
-
|
|
182
|
+
var compare = (hex1, hex2) => {
|
|
183
|
+
try {
|
|
184
|
+
return removePrefix(hex1).toLowerCase() === removePrefix(hex2).toLowerCase();
|
|
185
|
+
} catch (e) {
|
|
186
|
+
return false;
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
var generateRandom = (size) => {
|
|
190
|
+
if (size < 1) throw Error("Size must be > 0");
|
|
191
|
+
const randBuffer = crypto.randomBytes(Math.ceil(size / 2));
|
|
192
|
+
if (!randBuffer) throw Error("Failed to generate random hex");
|
|
193
|
+
return `${PREFIX}${randBuffer.toString("hex").substring(0, size)}`;
|
|
194
|
+
};
|
|
177
195
|
var compareAddresses = (address1, address2) => {
|
|
178
196
|
if (!address1 || !address2) return false;
|
|
179
197
|
if (address2 === address1) {
|
|
@@ -197,15 +215,7 @@ var compareListOfAddresses = (add1, add2) => {
|
|
|
197
215
|
var regexPattern = () => {
|
|
198
216
|
return /^0x[a-fA-F0-9]{40}$/;
|
|
199
217
|
};
|
|
200
|
-
var isValidAddress =
|
|
201
|
-
try {
|
|
202
|
-
if (typeof addr !== "string") return false;
|
|
203
|
-
address.toChecksumed(addPrefix(addr));
|
|
204
|
-
return true;
|
|
205
|
-
} catch (e) {
|
|
206
|
-
return false;
|
|
207
|
-
}
|
|
208
|
-
};
|
|
218
|
+
var isValidAddress = Address.isValid;
|
|
209
219
|
var leftPadWithZeros = (str, length) => {
|
|
210
220
|
const cleanStr = str.startsWith("0x") ? str.slice(2) : str;
|
|
211
221
|
if (cleanStr.length > length) {
|
|
@@ -478,7 +488,7 @@ async function uploadBlobToIPFS(blob, filename, networkType) {
|
|
|
478
488
|
}
|
|
479
489
|
}
|
|
480
490
|
|
|
481
|
-
// src/types/
|
|
491
|
+
// src/types/types.ts
|
|
482
492
|
var NFTMediaType = /* @__PURE__ */ ((NFTMediaType2) => {
|
|
483
493
|
NFTMediaType2["IMAGE"] = "image";
|
|
484
494
|
NFTMediaType2["VIDEO"] = "video";
|
|
@@ -655,7 +665,7 @@ var buildQueryString = (params) => {
|
|
|
655
665
|
return searchParams.toString();
|
|
656
666
|
};
|
|
657
667
|
|
|
658
|
-
// src/utils/
|
|
668
|
+
// src/utils/xNode.ts
|
|
659
669
|
var NodeStrengthLevelToImage = {
|
|
660
670
|
"0": "/images/vnt/00-noNode.webp",
|
|
661
671
|
"1": "/images/vnt/01-strength.webp",
|
|
@@ -683,6 +693,26 @@ var allNodeStrengthLevelToName = {
|
|
|
683
693
|
...XNodeStrengthLevelToName
|
|
684
694
|
};
|
|
685
695
|
|
|
696
|
+
// src/utils/time.ts
|
|
697
|
+
var TIME = {
|
|
698
|
+
SECOND: 1e3,
|
|
699
|
+
MINUTE: 1e3 * 60,
|
|
700
|
+
HOUR: 1e3 * 60 * 60,
|
|
701
|
+
DAY: 1e3 * 60 * 60 * 24,
|
|
702
|
+
WEEK: 1e3 * 60 * 60 * 24 * 7,
|
|
703
|
+
MONTH: 1e3 * 60 * 60 * 24 * 30,
|
|
704
|
+
YEAR: 1e3 * 60 * 60 * 24 * 365
|
|
705
|
+
};
|
|
706
|
+
|
|
707
|
+
// src/utils/stringUtils.ts
|
|
708
|
+
var isRejectionError = (errorMessage) => {
|
|
709
|
+
if (!errorMessage) return false;
|
|
710
|
+
const rejectionTerms = ["rejected", "cancelled", "user denied", "closed"];
|
|
711
|
+
return rejectionTerms.some(
|
|
712
|
+
(term) => errorMessage.toLowerCase().includes(term.toLowerCase())
|
|
713
|
+
);
|
|
714
|
+
};
|
|
715
|
+
|
|
686
716
|
// src/utils/url.ts
|
|
687
717
|
var isValidUrl = (value) => {
|
|
688
718
|
try {
|
|
@@ -693,6 +723,41 @@ var isValidUrl = (value) => {
|
|
|
693
723
|
}
|
|
694
724
|
};
|
|
695
725
|
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
726
|
+
// src/utils/thorUtils.ts
|
|
727
|
+
var executeCallClause = async ({
|
|
728
|
+
thor,
|
|
729
|
+
contractAddress,
|
|
730
|
+
abi,
|
|
731
|
+
method,
|
|
732
|
+
args
|
|
733
|
+
}) => {
|
|
734
|
+
const contract = thor.contracts.load(contractAddress, abi);
|
|
735
|
+
const res = await contract.read[method](...args);
|
|
736
|
+
return res;
|
|
737
|
+
};
|
|
738
|
+
var executeMultipleClausesCall = async ({
|
|
739
|
+
thor,
|
|
740
|
+
calls
|
|
741
|
+
}) => {
|
|
742
|
+
if (!Array.isArray(calls)) throw new Error("calls must be an array");
|
|
743
|
+
const clauses = calls.map(
|
|
744
|
+
(call) => thor.contracts.load(call.contractAddress, call.abi).clause[call.method](...call.args)
|
|
745
|
+
);
|
|
746
|
+
const res = await thor.transactions.executeMultipleClausesCall(clauses);
|
|
747
|
+
if (!res.every((r) => r.success))
|
|
748
|
+
throw new Error("Failed to execute multiple clauses call");
|
|
749
|
+
return res.map((r) => r.result.plain);
|
|
750
|
+
};
|
|
751
|
+
var buildCallClauses = ({
|
|
752
|
+
thor,
|
|
753
|
+
calls
|
|
754
|
+
}) => {
|
|
755
|
+
if (!Array.isArray(calls)) throw new Error("calls must be an array");
|
|
756
|
+
return calls.map(
|
|
757
|
+
(call) => thor.contracts.load(call.address, call.abi).clause[call.functionName](...call.args)
|
|
758
|
+
);
|
|
759
|
+
};
|
|
760
|
+
|
|
761
|
+
export { CURRENCY_SYMBOLS, DEFAULT_PRIVY_ECOSYSTEM_APPS, ENS_TEXT_RECORDS, ENV, EconomicNodeStrengthLevelToName, LegalDocumentSource, LegalDocumentType, MinXNodeLevel, NFTMediaType, NodeStrengthLevelToImage, TIME, TOKEN_LOGOS, TOKEN_LOGO_COMPONENTS, TogglePassportCheck, VECHAIN_KIT_COOKIES_CONFIG, VECHAIN_KIT_MIXPANEL_PROJECT_NAME, VECHAIN_KIT_MIXPANEL_PROJECT_TOKEN, VECHAIN_KIT_MIXPANEL_TOKENS, VECHAIN_KIT_STORAGE_KEYS, VECHAIN_KIT_TERMS_CONFIG, VECHAIN_PRIVY_APP_ID, VePassportUserStatus, XNodeStrengthLevelToName, addPrefix, allNodeStrengthLevelToName, buildCallClauses, buildQueryString, compare, compareAddresses, compareListOfAddresses, convertUriToUrl, executeCallClause, executeMultipleClausesCall, generateRandom, getConfig, getPicassoImage, gmNfts, humanAddress, humanDomain, humanNumber, isInvalid, isRejectionError, isValid, isValidAddress, isValidUrl, isZero, leftPadWithZeros, normalize, notFoundImage, randomTransactionUser, regexPattern, removePrefix, resolveMediaTypeFromMimeType, toIPFSURL, uploadBlobToIPFS, validate, validateIpfsUri, xNodeToGMstartingLevel };
|
|
762
|
+
//# sourceMappingURL=chunk-R722OBPE.js.map
|
|
763
|
+
//# sourceMappingURL=chunk-R722OBPE.js.map
|