@vechain/vechain-kit 1.2.4 → 1.3.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/README.md CHANGED
@@ -30,7 +30,7 @@ It offers:
30
30
  # Installation
31
31
 
32
32
  ```bash
33
- yarn add @tanstack/react-query@"^5.64.2" @chakra-ui/react@"^2.8.2" @vechain/dapp-kit-react@"1.4.1" @vechain/vechain-kit
33
+ yarn add @tanstack/react-query@"^5.64.2" @chakra-ui/react@"^2.8.2" @vechain/dapp-kit-react@"1.5.0" @vechain/vechain-kit
34
34
  ```
35
35
 
36
36
  # Quick Start
@@ -40,9 +40,10 @@ yarn add @tanstack/react-query@"^5.64.2" @chakra-ui/react@"^2.8.2" @vechain/dapp
40
40
  ```typescript
41
41
  'use client';
42
42
 
43
- import DAppKitPrivyProvider from '@vechain/dapp-kit-react-privy'
44
43
 
45
- export function DAppKitPrivyProvider({ children }: Props) {
44
+ import VeChainKitProvider from '@vechain/vechain-kit'
45
+
46
+ export function VeChainKitProviderWrapper({ children }: Props) {
46
47
  return (
47
48
  <VechainKitProvider
48
49
  // Mandatory
@@ -135,7 +135,7 @@ declare const genesises: {
135
135
  readonly main: Connex.Thor.Block;
136
136
  readonly test: Connex.Thor.Block;
137
137
  readonly solo: Connex.Thor.Block;
138
- which(gid: string): "main" | "test" | "solo" | undefined;
138
+ which(gid: string): "main" | "solo" | "test" | undefined;
139
139
  };
140
140
 
141
141
  declare const TOKEN_LOGOS: Record<string, string>;
@@ -149,4 +149,4 @@ declare enum TogglePassportCheck {
149
149
  GmOwnershipCheck = 5
150
150
  }
151
151
 
152
- export { type ConnectionSource as C, type EnhancedClause as E, type NETWORK_TYPE as N, type PrivyAppInfo as P, type SmartAccount as S, type TransactionProgress as T, VePassportUserStatus as V, type Wallet as W, type TransactionStatusErrorType as a, type PrivyLoginMethod as b, type Network as c, NFTMediaType as d, TogglePassportCheck as e, type TransactionStatus as f, type CrossAppConnectionCache as g, type ExecuteWithAuthorizationSignData as h, TOKEN_LOGOS as i, VECHAIN_PRIVY_APP_ID as j, notFoundImage as n };
152
+ export { type ConnectionSource as C, type EnhancedClause as E, type NETWORK_TYPE as N, type PrivyAppInfo as P, type SmartAccount as S, type TransactionProgress as T, VePassportUserStatus as V, type Wallet as W, type TransactionStatusErrorType as a, type PrivyLoginMethod as b, type Network as c, TogglePassportCheck as d, NFTMediaType as e, type TransactionStatus as f, type CrossAppConnectionCache as g, type ExecuteWithAuthorizationSignData as h, TOKEN_LOGOS as i, VECHAIN_PRIVY_APP_ID as j, notFoundImage as n };
@@ -135,7 +135,7 @@ declare const genesises: {
135
135
  readonly main: Connex.Thor.Block;
136
136
  readonly test: Connex.Thor.Block;
137
137
  readonly solo: Connex.Thor.Block;
138
- which(gid: string): "main" | "test" | "solo" | undefined;
138
+ which(gid: string): "main" | "solo" | "test" | undefined;
139
139
  };
140
140
 
141
141
  declare const TOKEN_LOGOS: Record<string, string>;
@@ -149,4 +149,4 @@ declare enum TogglePassportCheck {
149
149
  GmOwnershipCheck = 5
150
150
  }
151
151
 
152
- export { type ConnectionSource as C, type EnhancedClause as E, type NETWORK_TYPE as N, type PrivyAppInfo as P, type SmartAccount as S, type TransactionProgress as T, VePassportUserStatus as V, type Wallet as W, type TransactionStatusErrorType as a, type PrivyLoginMethod as b, type Network as c, NFTMediaType as d, TogglePassportCheck as e, type TransactionStatus as f, type CrossAppConnectionCache as g, type ExecuteWithAuthorizationSignData as h, TOKEN_LOGOS as i, VECHAIN_PRIVY_APP_ID as j, notFoundImage as n };
152
+ export { type ConnectionSource as C, type EnhancedClause as E, type NETWORK_TYPE as N, type PrivyAppInfo as P, type SmartAccount as S, type TransactionProgress as T, VePassportUserStatus as V, type Wallet as W, type TransactionStatusErrorType as a, type PrivyLoginMethod as b, type Network as c, TogglePassportCheck as d, NFTMediaType as e, type TransactionStatus as f, type CrossAppConnectionCache as g, type ExecuteWithAuthorizationSignData as h, TOKEN_LOGOS as i, VECHAIN_PRIVY_APP_ID as j, notFoundImage as n };
@@ -138,33 +138,10 @@ var leftPadWithZeros = (str, length) => {
138
138
  return `0x${paddedStr}`;
139
139
  };
140
140
 
141
- // src/utils/ipfs.ts
142
- var validateIpfsUri = (uri) => {
143
- const trimmedUri = uri.trim();
144
- return /^ipfs:\/\/[a-zA-Z0-9]+(\/[^/]+)*\/?$/.test(trimmedUri);
145
- };
146
- function toIPFSURL(cid, fileName) {
147
- return `ipfs://${cid}/${fileName ?? ""}`;
148
- }
149
-
150
- // src/utils/media.ts
151
- var isValidMimeType = (mime, type) => {
152
- const found = type.find((t) => {
153
- if (mime?.split("/")[0] === t) {
154
- return true;
155
- }
156
- });
157
- return !!found;
158
- };
159
- var resolveMediaTypeFromMimeType = (mimeType) => {
160
- if (isValidMimeType(mimeType, ["image" /* IMAGE */])) return "image" /* IMAGE */;
161
- else if (isValidMimeType(mimeType, ["video" /* VIDEO */])) return "video" /* VIDEO */;
162
- return "unknown" /* UNKNOWN */;
163
- };
164
-
165
141
  // src/config/solo.ts
166
142
  var config = {
167
143
  ipfsFetchingService: "https://api.dev.gateway-proxy.vechain.org/ipfs",
144
+ ipfsPinningService: "https://api.dev.gateway-proxy.vechain.org/api/v1/pinning/pinFileToIPFS",
168
145
  vthoContractAddress: "0x0000000000000000000000000000456E65726779",
169
146
  b3trContractAddress: "0xd31A6f2DBa8785cE41AB68Ea192791B5175309F4",
170
147
  vot3ContractAddress: "0x028Af33230576c1e073C8245F72a7A4aa53564E4",
@@ -193,7 +170,10 @@ var config = {
193
170
  vetDomainsPublicResolverAddress: "0x0000000000000000000000000000000000000000",
194
171
  vetDomainsReverseRegistrarAddress: "0x5c970901a587BA3932C835D4ae5FAE2BEa7e78Bc",
195
172
  vnsResolverAddress: "0x0000000000000000000000000000000000000000",
173
+ vetDomainAvatarUrl: "https://testnet.vet.domains/api/avatar",
196
174
  indexerUrl: "https://b3tr.testnet.vechain.org/api/v1",
175
+ b3trIndexerUrl: "https://b3tr.testnet.vechain.org/api/v1",
176
+ graphQlIndexerUrl: "https://graph.vet/subgraphs/name/vns",
197
177
  nodeUrl: "http://localhost:8669",
198
178
  network: {
199
179
  id: "solo",
@@ -229,6 +209,7 @@ var solo_default = config;
229
209
  // src/config/testnet.ts
230
210
  var config2 = {
231
211
  ipfsFetchingService: "https://api.dev.gateway-proxy.vechain.org/ipfs",
212
+ ipfsPinningService: "https://api.dev.gateway-proxy.vechain.org/api/v1/pinning/pinFileToIPFS",
232
213
  vthoContractAddress: "0x0000000000000000000000000000456E65726779",
233
214
  b3trContractAddress: "0xbf64cf86894Ee0877C4e7d03936e35Ee8D8b864F",
234
215
  vot3ContractAddress: "0xa704c45971995467696EE9544Da77DD42Bc9706E",
@@ -248,7 +229,7 @@ var config2 = {
248
229
  veDelegate: "0xfc32a9895C78CE00A1047d602Bd81Ea8134CC32b",
249
230
  veDelegateVotes: "0xeb71148c9B3cd57e228c2152d79f6e78F5F1ef9a",
250
231
  veDelegateTokenContractAddress: "0xD3f7b82Df5705D34f64C634d2dEf6B1cB3116950",
251
- oracleContractAddress: "0x49eC7192BF804Abc289645ca86F1eD01a6C17713",
232
+ oracleContractAddress: "0xdcCAaBd81B38e0dEEf4c202bC7F1261A4D9192C6",
252
233
  accountFactoryAddress: "0x7EABA81B4F3741Ac381af7e025f3B6e0428F05Fb",
253
234
  cleanifyCampaignsContractAddress: "0x22d19ACBD2cBf6b2B6C546395c26B9Cb448248BF",
254
235
  cleanifyChallengesContractAddress: "0x8Cc885DC3e5c376632CCEA0e8e1a51F1B3572442",
@@ -257,7 +238,10 @@ var config2 = {
257
238
  vetDomainsPublicResolverAddress: "0xA6eFd130085a127D090ACb0b100294aD1079EA6f",
258
239
  vetDomainsReverseRegistrarAddress: "0x6878f1aD5e3015310CfE5B38d7B7071C5D8818Ca",
259
240
  vnsResolverAddress: "0xc403b8EA53F707d7d4de095f0A20bC491Cf2bc94",
241
+ vetDomainAvatarUrl: "https://testnet.vet.domains/api/avatar",
260
242
  indexerUrl: "https://indexer.testnet.vechain.org/api/v1",
243
+ b3trIndexerUrl: "https://b3tr.testnet.vechain.org/api/v1",
244
+ graphQlIndexerUrl: "https://graph.vet/subgraphs/name/vns",
261
245
  nodeUrl: "https://testnet.vechain.org",
262
246
  network: {
263
247
  id: "testnet",
@@ -299,6 +283,9 @@ var testnet_default = config2;
299
283
  var config3 = {
300
284
  ipfsFetchingService: "https://api.gateway-proxy.vechain.org/ipfs",
301
285
  indexerUrl: "https://indexer.mainnet.vechain.org/api/v1",
286
+ ipfsPinningService: "https://api.gateway-proxy.vechain.org/api/v1/pinning/pinFileToIPFS",
287
+ b3trIndexerUrl: "https://b3tr.mainnet.vechain.org/api/v1",
288
+ graphQlIndexerUrl: "https://graph.vet/subgraphs/name/vns",
302
289
  nodeUrl: "https://mainnet.vechain.org",
303
290
  network: {
304
291
  id: "main",
@@ -365,7 +352,8 @@ var config3 = {
365
352
  vetDomainsContractAddress: "0xa9231da8BF8D10e2df3f6E03Dd5449caD600129b",
366
353
  vetDomainsPublicResolverAddress: "0xabac49445584C8b6c1472b030B1076Ac3901D7cf",
367
354
  vetDomainsReverseRegistrarAddress: "0x5c970901a587BA3932C835D4ae5FAE2BEa7e78Bc",
368
- vnsResolverAddress: "0xA11413086e163e41901bb81fdc5617c975Fa5a1A"
355
+ vnsResolverAddress: "0xA11413086e163e41901bb81fdc5617c975Fa5a1A",
356
+ vetDomainAvatarUrl: "https://vet.domains/api/avatar"
369
357
  };
370
358
  var mainnet_default = config3;
371
359
 
@@ -377,11 +365,56 @@ var getConfig = (env) => {
377
365
  throw new Error(`Unsupported NETWORK_TYPE ${env}`);
378
366
  };
379
367
 
368
+ // src/utils/ipfs.ts
369
+ var validateIpfsUri = (uri) => {
370
+ const trimmedUri = uri.trim();
371
+ return /^ipfs:\/\/[a-zA-Z0-9]+(\/[^/]+)*\/?$/.test(trimmedUri);
372
+ };
373
+ function toIPFSURL(cid, fileName) {
374
+ return `ipfs://${cid}/${fileName ?? ""}`;
375
+ }
376
+ async function uploadBlobToIPFS(blob, filename, networkType) {
377
+ try {
378
+ const form = new FormData();
379
+ form.append("file", blob, filename);
380
+ const response = await fetch(
381
+ getConfig(networkType).ipfsPinningService,
382
+ {
383
+ method: "POST",
384
+ body: form
385
+ }
386
+ );
387
+ if (!response.ok) {
388
+ throw new Error(`HTTP error! status: ${response.status}`);
389
+ }
390
+ const data = await response.json();
391
+ return data.IpfsHash;
392
+ } catch (error) {
393
+ console.error("Error uploading blob:", error);
394
+ throw new Error("Failed to upload blob to IPFS");
395
+ }
396
+ }
397
+
398
+ // src/utils/media.ts
399
+ var isValidMimeType = (mime, type) => {
400
+ const found = type.find((t) => {
401
+ if (mime?.split("/")[0] === t) {
402
+ return true;
403
+ }
404
+ });
405
+ return !!found;
406
+ };
407
+ var resolveMediaTypeFromMimeType = (mimeType) => {
408
+ if (isValidMimeType(mimeType, ["image" /* IMAGE */])) return "image" /* IMAGE */;
409
+ else if (isValidMimeType(mimeType, ["video" /* VIDEO */])) return "video" /* VIDEO */;
410
+ return "unknown" /* UNKNOWN */;
411
+ };
412
+
380
413
  // src/utils/uri.ts
381
414
  var convertUriToUrl = (uri, networkType) => {
382
415
  if (uri.startsWith("data:")) return uri;
383
416
  const splitUri = uri?.split("://");
384
- if (splitUri.length !== 2) throw new Error(`Invalid URI ${uri}`);
417
+ if (splitUri.length !== 2) return;
385
418
  const protocol = splitUri?.[0]?.trim();
386
419
  const uriWithoutProtocol = splitUri[1];
387
420
  switch (protocol) {
@@ -519,6 +552,6 @@ var allNodeStrengthLevelToName = {
519
552
  ...XNodeStrengthLevelToName
520
553
  };
521
554
 
522
- export { EconomicNodeStrengthLevelToName, MinXNodeLevel, NodeStrengthLevelToImage, TOKEN_LOGOS, TogglePassportCheck, VECHAIN_PRIVY_APP_ID, XNodeStrengthLevelToName, allNodeStrengthLevelToName, buildQueryString, compareAddresses, compareListOfAddresses, convertUriToUrl, getConfig, getPicassoImage, gmNfts, humanAddress, humanDomain, humanNumber, isValidAddress, isZero, leftPadWithZeros, notFoundImage, randomTransactionUser, regexPattern, resolveMediaTypeFromMimeType, toIPFSURL, validateIpfsUri, xNodeToGMstartingLevel };
523
- //# sourceMappingURL=chunk-RAUWG27M.js.map
524
- //# sourceMappingURL=chunk-RAUWG27M.js.map
555
+ export { EconomicNodeStrengthLevelToName, MinXNodeLevel, NodeStrengthLevelToImage, TOKEN_LOGOS, TogglePassportCheck, VECHAIN_PRIVY_APP_ID, XNodeStrengthLevelToName, allNodeStrengthLevelToName, buildQueryString, compareAddresses, compareListOfAddresses, convertUriToUrl, getConfig, getPicassoImage, gmNfts, humanAddress, humanDomain, humanNumber, isValidAddress, isZero, leftPadWithZeros, notFoundImage, randomTransactionUser, regexPattern, resolveMediaTypeFromMimeType, toIPFSURL, uploadBlobToIPFS, validateIpfsUri, xNodeToGMstartingLevel };
556
+ //# sourceMappingURL=chunk-CDZXTDVH.js.map
557
+ //# sourceMappingURL=chunk-CDZXTDVH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../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/utils/media.ts","../src/utils/uri.ts","../src/utils/gmNfts.ts","../src/utils/buildQueryString.ts","../src/utils/XNode.ts"],"names":["TogglePassportCheck","address","config"],"mappings":"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","file":"chunk-CDZXTDVH.js","sourcesContent":["export 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};\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","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', {\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 { address } from \"thor-devkit\";\nimport * as HexUtils from \"./HexUtils\";\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 = (addr: string | undefined | null): boolean => {\n try {\n if (typeof addr !== \"string\") return false;\n address.toChecksumed(HexUtils.addPrefix(addr));\n return true;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e) {\n return false;\n }\n};\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 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 veDelegate: '0xfc32a9895C78CE00A1047d602Bd81Ea8134CC32b',\n veDelegateVotes: '0xeb71148c9B3cd57e228c2152d79f6e78F5F1ef9a',\n veDelegateTokenContractAddress:\n '0xD3f7b82Df5705D34f64C634d2dEf6B1cB3116950',\n oracleContractAddress: '0xdcCAaBd81B38e0dEEf4c202bC7F1261A4D9192C6',\n accountFactoryAddress: '0x7EABA81B4F3741Ac381af7e025f3B6e0428F05Fb',\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 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};\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 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 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 { 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;\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"]}
@@ -140,33 +140,10 @@ var leftPadWithZeros = (str, length) => {
140
140
  return `0x${paddedStr}`;
141
141
  };
142
142
 
143
- // src/utils/ipfs.ts
144
- var validateIpfsUri = (uri) => {
145
- const trimmedUri = uri.trim();
146
- return /^ipfs:\/\/[a-zA-Z0-9]+(\/[^/]+)*\/?$/.test(trimmedUri);
147
- };
148
- function toIPFSURL(cid, fileName) {
149
- return `ipfs://${cid}/${fileName ?? ""}`;
150
- }
151
-
152
- // src/utils/media.ts
153
- var isValidMimeType = (mime, type) => {
154
- const found = type.find((t) => {
155
- if (mime?.split("/")[0] === t) {
156
- return true;
157
- }
158
- });
159
- return !!found;
160
- };
161
- var resolveMediaTypeFromMimeType = (mimeType) => {
162
- if (isValidMimeType(mimeType, ["image" /* IMAGE */])) return "image" /* IMAGE */;
163
- else if (isValidMimeType(mimeType, ["video" /* VIDEO */])) return "video" /* VIDEO */;
164
- return "unknown" /* UNKNOWN */;
165
- };
166
-
167
143
  // src/config/solo.ts
168
144
  var config = {
169
145
  ipfsFetchingService: "https://api.dev.gateway-proxy.vechain.org/ipfs",
146
+ ipfsPinningService: "https://api.dev.gateway-proxy.vechain.org/api/v1/pinning/pinFileToIPFS",
170
147
  vthoContractAddress: "0x0000000000000000000000000000456E65726779",
171
148
  b3trContractAddress: "0xd31A6f2DBa8785cE41AB68Ea192791B5175309F4",
172
149
  vot3ContractAddress: "0x028Af33230576c1e073C8245F72a7A4aa53564E4",
@@ -195,7 +172,10 @@ var config = {
195
172
  vetDomainsPublicResolverAddress: "0x0000000000000000000000000000000000000000",
196
173
  vetDomainsReverseRegistrarAddress: "0x5c970901a587BA3932C835D4ae5FAE2BEa7e78Bc",
197
174
  vnsResolverAddress: "0x0000000000000000000000000000000000000000",
175
+ vetDomainAvatarUrl: "https://testnet.vet.domains/api/avatar",
198
176
  indexerUrl: "https://b3tr.testnet.vechain.org/api/v1",
177
+ b3trIndexerUrl: "https://b3tr.testnet.vechain.org/api/v1",
178
+ graphQlIndexerUrl: "https://graph.vet/subgraphs/name/vns",
199
179
  nodeUrl: "http://localhost:8669",
200
180
  network: {
201
181
  id: "solo",
@@ -231,6 +211,7 @@ var solo_default = config;
231
211
  // src/config/testnet.ts
232
212
  var config2 = {
233
213
  ipfsFetchingService: "https://api.dev.gateway-proxy.vechain.org/ipfs",
214
+ ipfsPinningService: "https://api.dev.gateway-proxy.vechain.org/api/v1/pinning/pinFileToIPFS",
234
215
  vthoContractAddress: "0x0000000000000000000000000000456E65726779",
235
216
  b3trContractAddress: "0xbf64cf86894Ee0877C4e7d03936e35Ee8D8b864F",
236
217
  vot3ContractAddress: "0xa704c45971995467696EE9544Da77DD42Bc9706E",
@@ -250,7 +231,7 @@ var config2 = {
250
231
  veDelegate: "0xfc32a9895C78CE00A1047d602Bd81Ea8134CC32b",
251
232
  veDelegateVotes: "0xeb71148c9B3cd57e228c2152d79f6e78F5F1ef9a",
252
233
  veDelegateTokenContractAddress: "0xD3f7b82Df5705D34f64C634d2dEf6B1cB3116950",
253
- oracleContractAddress: "0x49eC7192BF804Abc289645ca86F1eD01a6C17713",
234
+ oracleContractAddress: "0xdcCAaBd81B38e0dEEf4c202bC7F1261A4D9192C6",
254
235
  accountFactoryAddress: "0x7EABA81B4F3741Ac381af7e025f3B6e0428F05Fb",
255
236
  cleanifyCampaignsContractAddress: "0x22d19ACBD2cBf6b2B6C546395c26B9Cb448248BF",
256
237
  cleanifyChallengesContractAddress: "0x8Cc885DC3e5c376632CCEA0e8e1a51F1B3572442",
@@ -259,7 +240,10 @@ var config2 = {
259
240
  vetDomainsPublicResolverAddress: "0xA6eFd130085a127D090ACb0b100294aD1079EA6f",
260
241
  vetDomainsReverseRegistrarAddress: "0x6878f1aD5e3015310CfE5B38d7B7071C5D8818Ca",
261
242
  vnsResolverAddress: "0xc403b8EA53F707d7d4de095f0A20bC491Cf2bc94",
243
+ vetDomainAvatarUrl: "https://testnet.vet.domains/api/avatar",
262
244
  indexerUrl: "https://indexer.testnet.vechain.org/api/v1",
245
+ b3trIndexerUrl: "https://b3tr.testnet.vechain.org/api/v1",
246
+ graphQlIndexerUrl: "https://graph.vet/subgraphs/name/vns",
263
247
  nodeUrl: "https://testnet.vechain.org",
264
248
  network: {
265
249
  id: "testnet",
@@ -301,6 +285,9 @@ var testnet_default = config2;
301
285
  var config3 = {
302
286
  ipfsFetchingService: "https://api.gateway-proxy.vechain.org/ipfs",
303
287
  indexerUrl: "https://indexer.mainnet.vechain.org/api/v1",
288
+ ipfsPinningService: "https://api.gateway-proxy.vechain.org/api/v1/pinning/pinFileToIPFS",
289
+ b3trIndexerUrl: "https://b3tr.mainnet.vechain.org/api/v1",
290
+ graphQlIndexerUrl: "https://graph.vet/subgraphs/name/vns",
304
291
  nodeUrl: "https://mainnet.vechain.org",
305
292
  network: {
306
293
  id: "main",
@@ -367,7 +354,8 @@ var config3 = {
367
354
  vetDomainsContractAddress: "0xa9231da8BF8D10e2df3f6E03Dd5449caD600129b",
368
355
  vetDomainsPublicResolverAddress: "0xabac49445584C8b6c1472b030B1076Ac3901D7cf",
369
356
  vetDomainsReverseRegistrarAddress: "0x5c970901a587BA3932C835D4ae5FAE2BEa7e78Bc",
370
- vnsResolverAddress: "0xA11413086e163e41901bb81fdc5617c975Fa5a1A"
357
+ vnsResolverAddress: "0xA11413086e163e41901bb81fdc5617c975Fa5a1A",
358
+ vetDomainAvatarUrl: "https://vet.domains/api/avatar"
371
359
  };
372
360
  var mainnet_default = config3;
373
361
 
@@ -379,11 +367,56 @@ var getConfig = (env) => {
379
367
  throw new Error(`Unsupported NETWORK_TYPE ${env}`);
380
368
  };
381
369
 
370
+ // src/utils/ipfs.ts
371
+ var validateIpfsUri = (uri) => {
372
+ const trimmedUri = uri.trim();
373
+ return /^ipfs:\/\/[a-zA-Z0-9]+(\/[^/]+)*\/?$/.test(trimmedUri);
374
+ };
375
+ function toIPFSURL(cid, fileName) {
376
+ return `ipfs://${cid}/${fileName ?? ""}`;
377
+ }
378
+ async function uploadBlobToIPFS(blob, filename, networkType) {
379
+ try {
380
+ const form = new FormData();
381
+ form.append("file", blob, filename);
382
+ const response = await fetch(
383
+ getConfig(networkType).ipfsPinningService,
384
+ {
385
+ method: "POST",
386
+ body: form
387
+ }
388
+ );
389
+ if (!response.ok) {
390
+ throw new Error(`HTTP error! status: ${response.status}`);
391
+ }
392
+ const data = await response.json();
393
+ return data.IpfsHash;
394
+ } catch (error) {
395
+ console.error("Error uploading blob:", error);
396
+ throw new Error("Failed to upload blob to IPFS");
397
+ }
398
+ }
399
+
400
+ // src/utils/media.ts
401
+ var isValidMimeType = (mime, type) => {
402
+ const found = type.find((t) => {
403
+ if (mime?.split("/")[0] === t) {
404
+ return true;
405
+ }
406
+ });
407
+ return !!found;
408
+ };
409
+ var resolveMediaTypeFromMimeType = (mimeType) => {
410
+ if (isValidMimeType(mimeType, ["image" /* IMAGE */])) return "image" /* IMAGE */;
411
+ else if (isValidMimeType(mimeType, ["video" /* VIDEO */])) return "video" /* VIDEO */;
412
+ return "unknown" /* UNKNOWN */;
413
+ };
414
+
382
415
  // src/utils/uri.ts
383
416
  var convertUriToUrl = (uri, networkType) => {
384
417
  if (uri.startsWith("data:")) return uri;
385
418
  const splitUri = uri?.split("://");
386
- if (splitUri.length !== 2) throw new Error(`Invalid URI ${uri}`);
419
+ if (splitUri.length !== 2) return;
387
420
  const protocol = splitUri?.[0]?.trim();
388
421
  const uriWithoutProtocol = splitUri[1];
389
422
  switch (protocol) {
@@ -547,7 +580,8 @@ exports.randomTransactionUser = randomTransactionUser;
547
580
  exports.regexPattern = regexPattern;
548
581
  exports.resolveMediaTypeFromMimeType = resolveMediaTypeFromMimeType;
549
582
  exports.toIPFSURL = toIPFSURL;
583
+ exports.uploadBlobToIPFS = uploadBlobToIPFS;
550
584
  exports.validateIpfsUri = validateIpfsUri;
551
585
  exports.xNodeToGMstartingLevel = xNodeToGMstartingLevel;
552
- //# sourceMappingURL=chunk-VUMG5BY2.cjs.map
553
- //# sourceMappingURL=chunk-VUMG5BY2.cjs.map
586
+ //# sourceMappingURL=chunk-EO3CLT4E.cjs.map
587
+ //# sourceMappingURL=chunk-EO3CLT4E.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../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/utils/media.ts","../src/utils/uri.ts","../src/utils/gmNfts.ts","../src/utils/buildQueryString.ts","../src/utils/XNode.ts"],"names":["TogglePassportCheck","address","BigNumber","picasso","generatePrivateKey","privateKeyToAccount","config"],"mappings":"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","file":"chunk-EO3CLT4E.cjs","sourcesContent":["export 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};\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","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', {\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 { address } from \"thor-devkit\";\nimport * as HexUtils from \"./HexUtils\";\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 = (addr: string | undefined | null): boolean => {\n try {\n if (typeof addr !== \"string\") return false;\n address.toChecksumed(HexUtils.addPrefix(addr));\n return true;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e) {\n return false;\n }\n};\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 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 veDelegate: '0xfc32a9895C78CE00A1047d602Bd81Ea8134CC32b',\n veDelegateVotes: '0xeb71148c9B3cd57e228c2152d79f6e78F5F1ef9a',\n veDelegateTokenContractAddress:\n '0xD3f7b82Df5705D34f64C634d2dEf6B1cB3116950',\n oracleContractAddress: '0xdcCAaBd81B38e0dEEf4c202bC7F1261A4D9192C6',\n accountFactoryAddress: '0x7EABA81B4F3741Ac381af7e025f3B6e0428F05Fb',\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 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};\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 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 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 { 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;\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"]}