@layerzerolabs/chain-utils 0.0.49 → 0.0.51

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/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var IVFVZYWG_cjs = require('./IVFVZYWG.cjs');
3
+ var _3DUSMLGX_cjs = require('./3DUSMLGX.cjs');
4
4
  var NOJYY7DN_cjs = require('./NOJYY7DN.cjs');
5
5
  var J6P5K7DC_cjs = require('./J6P5K7DC.cjs');
6
6
 
@@ -9,23 +9,23 @@ J6P5K7DC_cjs.init_cjs_shims();
9
9
 
10
10
  Object.defineProperty(exports, "AddressEncoding", {
11
11
  enumerable: true,
12
- get: function () { return IVFVZYWG_cjs.AddressEncoding; }
12
+ get: function () { return _3DUSMLGX_cjs.AddressEncoding; }
13
13
  });
14
14
  Object.defineProperty(exports, "addressParser", {
15
15
  enumerable: true,
16
- get: function () { return IVFVZYWG_cjs.addressParser; }
16
+ get: function () { return _3DUSMLGX_cjs.addressParser; }
17
17
  });
18
18
  Object.defineProperty(exports, "base58AddressParser", {
19
19
  enumerable: true,
20
- get: function () { return IVFVZYWG_cjs.base58AddressParser; }
20
+ get: function () { return _3DUSMLGX_cjs.base58AddressParser; }
21
21
  });
22
22
  Object.defineProperty(exports, "hexAddressParser", {
23
23
  enumerable: true,
24
- get: function () { return IVFVZYWG_cjs.hexAddressParser; }
24
+ get: function () { return _3DUSMLGX_cjs.hexAddressParser; }
25
25
  });
26
26
  Object.defineProperty(exports, "tonAddressParser", {
27
27
  enumerable: true,
28
- get: function () { return IVFVZYWG_cjs.tonAddressParser; }
28
+ get: function () { return _3DUSMLGX_cjs.tonAddressParser; }
29
29
  });
30
30
  Object.defineProperty(exports, "getNetworkName", {
31
31
  enumerable: true,
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { AddressEncoding, addressParser, base58AddressParser, hexAddressParser, tonAddressParser } from './IUWKW475.js';
1
+ export { AddressEncoding, addressParser, base58AddressParser, hexAddressParser, tonAddressParser } from './WE3VE6AV.js';
2
2
  export { getNetworkName } from './FJIAQ3QL.js';
3
3
  import { init_esm_shims } from './YXE7PREU.js';
4
4
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@layerzerolabs/chain-utils",
3
- "version": "0.0.49",
3
+ "version": "0.0.51",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -14,19 +14,20 @@
14
14
  "module": "./dist/index.js",
15
15
  "types": "./dist/index.d.ts",
16
16
  "dependencies": {
17
+ "@ton/ton": "npm:@layerzerolabs/ton@15.1.0-rc.9",
17
18
  "bs58": "^5.0.0",
18
- "@layerzerolabs/common-chain-model": "0.0.49",
19
- "@layerzerolabs/common-ton": "0.0.49",
20
- "@layerzerolabs/common-utils": "0.0.49",
21
- "@layerzerolabs/layerzero-definitions": "0.0.49",
22
- "@layerzerolabs/static-chain-info": "0.0.49"
19
+ "@layerzerolabs/common-chain-model": "0.0.51",
20
+ "@layerzerolabs/common-ton": "0.0.51",
21
+ "@layerzerolabs/common-utils": "0.0.51",
22
+ "@layerzerolabs/layerzero-definitions": "0.0.51",
23
+ "@layerzerolabs/static-chain-info": "0.0.51"
23
24
  },
24
25
  "devDependencies": {
25
26
  "tsup": "^8.4.0",
26
27
  "vitest": "^3.2.3",
27
- "@layerzerolabs/tsup-configuration": "0.0.49",
28
- "@layerzerolabs/typescript-configuration": "0.0.49",
29
- "@layerzerolabs/typescript-utils": "0.0.49"
28
+ "@layerzerolabs/tsup-configuration": "0.0.51",
29
+ "@layerzerolabs/typescript-utils": "0.0.51",
30
+ "@layerzerolabs/typescript-configuration": "0.0.51"
30
31
  },
31
32
  "publishConfig": {
32
33
  "access": "restricted",
@@ -36,8 +37,7 @@
36
37
  "build": "tsup",
37
38
  "checkdeps": "pnpm --filter @layerzerolabs/depcheck run depcheck validate --catalog --missing-dependencies --only $npm_package_name",
38
39
  "clean": "rm -rf ./node_modules .turbo ./dist",
39
- "dev": "tsup --watch",
40
40
  "lint": "eslint . --max-warnings 0 || (eslint . --fix --max-warnings 0 && false)",
41
- "test": "vitest --run --pass-with-no-tests"
41
+ "test": "vitest --run --pass-with-no-tests --typecheck"
42
42
  }
43
43
  }
@@ -1,3 +1,4 @@
1
+ import type { Address } from '@ton/ton';
1
2
  import bs58 from 'bs58';
2
3
 
3
4
  import type { HexString, NormalizedHexString } from '@layerzerolabs/common-chain-model';
@@ -13,6 +14,7 @@ import {
13
14
  import type {
14
15
  Base58String,
15
16
  ChainsByEncoding,
17
+ InferChainTypeForChainName,
16
18
  NativeAddress,
17
19
  ResolvedEncodingForChainName,
18
20
  TonString,
@@ -31,9 +33,21 @@ export enum AddressEncoding {
31
33
  TON = 'ton',
32
34
  }
33
35
 
34
- export interface AddressParser<T extends ChainName | `${ChainName}`> {
36
+ export type ExtensionByChainType = {
37
+ ton: {
38
+ tonToNormalized: (tonAddress: Address) => NormalizedHexString;
39
+ };
40
+ };
41
+
42
+ export type InferExtensionByChainName<T extends ChainName | `${ChainName}`> =
43
+ InferChainTypeForChainName<T> extends keyof ExtensionByChainType
44
+ ? ExtensionByChainType[InferChainTypeForChainName<T>]
45
+ : {};
46
+
47
+ export type AddressParser<T extends ChainName | `${ChainName}`> = {
35
48
  normalizedToNative: (address: NormalizedHexString) => ChainNativeAddress<T>;
36
49
  normalizedToNativeString: (address: NormalizedHexString) => ResolvedEncodingForChainName<T>;
50
+ normalizedToUnpaddedString: (address: NormalizedHexString) => HexString;
37
51
  nativeToNormalized: (nativeAddress: NativeOrString<T>) => NormalizedHexString;
38
52
  nativeToBytes: (nativeAddress: NativeOrString<T>) => Uint8Array;
39
53
  nativeToBytes32Hex: (nativeAddress: NativeOrString<T>) => HexString;
@@ -48,7 +62,7 @@ export interface AddressParser<T extends ChainName | `${ChainName}`> {
48
62
  parseNative: (nativeAddress: string) => NormalizedHexString;
49
63
  parseNativeToHex: (nativeAddress: string) => HexString;
50
64
  encoding: AddressEncoding;
51
- }
65
+ } & InferExtensionByChainName<T>;
52
66
 
53
67
  export function addressParser<T extends ChainName | `${ChainName}`>(
54
68
  chainName: T,
@@ -117,6 +131,9 @@ export const tonAddressParser: (
117
131
  normalizedToNativeString: (address) => {
118
132
  return addressParser(chainName).normalizedToNative(address).nativeAddress;
119
133
  },
134
+ normalizedToUnpaddedString: (address) => {
135
+ return String(address) as HexString;
136
+ },
120
137
  nativeToNormalized: (nativeAddress) => {
121
138
  const address = getAddress(nativeAddress);
122
139
  validateNative(address, chainName);
@@ -144,6 +161,9 @@ export const tonAddressParser: (
144
161
  parseNativeToHex: (nativeAddress) => {
145
162
  return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;
146
163
  },
164
+ tonToNormalized: (tonAddress) => {
165
+ return addressParser(chainName).parseNative(addressToHex(tonAddress));
166
+ },
147
167
  encoding: AddressEncoding.TON,
148
168
  };
149
169
  };
@@ -166,6 +186,9 @@ export const base58AddressParser = (
166
186
  normalizedToNativeString: (address) => {
167
187
  return addressParser(chainName).normalizedToNative(address).nativeAddress;
168
188
  },
189
+ normalizedToUnpaddedString: (address) => {
190
+ return String(address) as HexString;
191
+ },
169
192
  nativeToNormalized: (nativeAddress) => {
170
193
  const address = getAddress(nativeAddress);
171
194
  validateNative(address, chainName);
@@ -219,6 +242,9 @@ export const hexAddressParser = (
219
242
  normalizedToNativeString: (address) => {
220
243
  return hexZeroPad(address as unknown as HexString, nativeByteLength);
221
244
  },
245
+ normalizedToUnpaddedString: (address) => {
246
+ return String(address) as HexString;
247
+ },
222
248
  nativeToNormalized: (nativeAddress) => {
223
249
  const address = getAddress(nativeAddress);
224
250
  validateNative(address, chainName);
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/addressParser.ts"],"names":["AddressEncoding","addressParser","chainName","ChainName","TON","tonAddressParser","SOLANA","base58AddressParser","hexAddressParser","normalizedToBytes32Hex","address","hexZeroPad","normalizedToBytes32","hexToBytes","normalizedToBigInt","BigInt","parseNative","nativeAddress","validateNative","expectedChainName","Error","getAddress","parseTonAddress","normalizedToNative","numericalValue","bigintToAddress","toString","normalizedToNativeString","nativeToNormalized","normalizeHex","addressToHex","nativeToBytes32Hex","nativeToBytes","nativeToBytes32","parseNativeToHex","encoding","isBase58","bs58","encode","hex","bytesToHexPrefixed","decode","nativeByteLength","StaticChainConfigs","getAddressSizeInBytes","isHexString","TRON","startsWith","slice"],"mappings":"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","file":"IUWKW475.js","sourcesContent":["import bs58 from 'bs58';\n\nimport type { HexString, NormalizedHexString } from '@layerzerolabs/common-chain-model';\nimport { normalizeHex } from '@layerzerolabs/common-chain-model';\nimport { addressToHex, bigintToAddress, parseTonAddress } from '@layerzerolabs/common-ton';\nimport {\n bytesToHexPrefixed,\n hexToBytes,\n hexZeroPad,\n isBase58,\n isHexString,\n} from '@layerzerolabs/common-utils';\nimport type {\n Base58String,\n ChainsByEncoding,\n NativeAddress,\n ResolvedEncodingForChainName,\n TonString,\n} from '@layerzerolabs/layerzero-definitions';\nimport type { ChainNativeAddress } from '@layerzerolabs/layerzero-definitions';\nimport { ChainName } from '@layerzerolabs/layerzero-definitions';\nimport { StaticChainConfigs } from '@layerzerolabs/static-chain-info';\n\ntype NativeOrString<T extends ChainName | `${ChainName}`> =\n | ChainNativeAddress<T>\n | ResolvedEncodingForChainName<T>;\n\nexport enum AddressEncoding {\n HEX = 'hex',\n BASE58 = 'base58',\n TON = 'ton',\n}\n\nexport interface AddressParser<T extends ChainName | `${ChainName}`> {\n normalizedToNative: (address: NormalizedHexString) => ChainNativeAddress<T>;\n normalizedToNativeString: (address: NormalizedHexString) => ResolvedEncodingForChainName<T>;\n nativeToNormalized: (nativeAddress: NativeOrString<T>) => NormalizedHexString;\n nativeToBytes: (nativeAddress: NativeOrString<T>) => Uint8Array;\n nativeToBytes32Hex: (nativeAddress: NativeOrString<T>) => HexString;\n nativeToBytes32: (nativeAddress: NativeOrString<T>) => Uint8Array;\n validateNative: (nativeAddress: string) => nativeAddress is ResolvedEncodingForChainName<T>;\n /**\n * Parse a native address to a string if it is valid.\n * Throws an error if the native address is invalid.\n * @param nativeAddress - The native address to parse.\n * @returns The parsed native address.\n */\n parseNative: (nativeAddress: string) => NormalizedHexString;\n parseNativeToHex: (nativeAddress: string) => HexString;\n encoding: AddressEncoding;\n}\n\nexport function addressParser<T extends ChainName | `${ChainName}`>(\n chainName: T,\n): AddressParser<T> {\n // FIXME: figure out a way to not have to cast here\n if (chainName === ChainName.TON)\n return tonAddressParser(chainName) as unknown as AddressParser<T>;\n if (chainName === ChainName.SOLANA)\n return base58AddressParser(chainName) as unknown as AddressParser<T>;\n return hexAddressParser(chainName) as unknown as AddressParser<T>;\n}\n\nexport namespace addressParser {\n export const normalizedToBytes32Hex = (address: NormalizedHexString) => {\n return hexZeroPad(address as unknown as HexString, 32);\n };\n export const normalizedToBytes32 = (address: NormalizedHexString) => {\n return hexToBytes(normalizedToBytes32Hex(address));\n };\n export const normalizedToBigInt = (address: NormalizedHexString) => {\n return BigInt(address as unknown as HexString);\n };\n export const parseNative = (nativeAddress: NativeAddress) => {\n return addressParser(nativeAddress.chainName).parseNative(nativeAddress.nativeAddress);\n };\n}\n\nconst validateNative = <T extends ChainName | `${ChainName}`>(\n nativeAddress: string,\n expectedChainName: T,\n): nativeAddress is ResolvedEncodingForChainName<T> => {\n if (!addressParser(expectedChainName).validateNative(nativeAddress)) {\n throw new Error(\n 'Cannot convert: ' +\n nativeAddress +\n ' - The native address does not match the expected format for the chain: ' +\n expectedChainName,\n );\n }\n return true;\n};\n\nconst getAddress = <T extends ChainName | `${ChainName}`>(nativeAddress: NativeOrString<T>) => {\n return typeof nativeAddress === 'object' ? nativeAddress.nativeAddress : nativeAddress;\n};\n\nexport const tonAddressParser: (\n chainName: ChainsByEncoding[TonString],\n) => AddressParser<ChainsByEncoding[TonString]> = (chainName) => {\n return {\n validateNative: (nativeAddress): nativeAddress is TonString => {\n try {\n parseTonAddress(nativeAddress);\n return true;\n } catch {\n return false;\n }\n },\n normalizedToNative: (address) => {\n const numericalValue = addressParser.normalizedToBigInt(address);\n return {\n nativeAddress: bigintToAddress(numericalValue).toString() as TonString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n return addressParser(chainName).normalizedToNative(address).nativeAddress;\n },\n nativeToNormalized: (nativeAddress) => {\n const address = getAddress(nativeAddress);\n validateNative(address, chainName);\n return normalizeHex(addressToHex(address));\n },\n nativeToBytes32Hex: (nativeAddress) => {\n // naturally ton is 32 bytes, pad it anyway\n return hexZeroPad(\n addressParser(chainName).nativeToNormalized(nativeAddress) as unknown as HexString,\n 32,\n );\n },\n nativeToBytes: (nativeAddress) => {\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n nativeToBytes32: (nativeAddress) => {\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n parseNative: (nativeAddress) => {\n if (!validateNative(nativeAddress, chainName)) {\n throw new Error('Invalid native address: ' + nativeAddress);\n }\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.TON,\n };\n};\n\nexport const base58AddressParser = (\n chainName: ChainsByEncoding[Base58String],\n): AddressParser<ChainsByEncoding[Base58String]> => {\n return {\n validateNative: (nativeAddress): nativeAddress is Base58String => {\n return isBase58(nativeAddress);\n },\n normalizedToNative: (address) => {\n return {\n nativeAddress: bs58.encode(\n hexToBytes(address as unknown as HexString),\n ) as Base58String,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n return addressParser(chainName).normalizedToNative(address).nativeAddress;\n },\n nativeToNormalized: (nativeAddress) => {\n const address = getAddress(nativeAddress);\n validateNative(address, chainName);\n const hex = bytesToHexPrefixed(bs58.decode(address));\n return normalizeHex(hex);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n // naturally solana is 32 bytes, pad it anyway\n return hexZeroPad(\n addressParser(chainName).nativeToNormalized(nativeAddress) as unknown as HexString,\n 32,\n );\n },\n nativeToBytes: (nativeAddress) => {\n const address = getAddress(nativeAddress);\n validateNative(address, chainName);\n return bs58.decode(address);\n },\n nativeToBytes32: (nativeAddress) => {\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n parseNative: (nativeAddress) => {\n if (!validateNative(nativeAddress, chainName)) {\n throw new Error('Invalid native address: ' + nativeAddress);\n }\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.BASE58,\n };\n};\n\nexport const hexAddressParser = (\n chainName: ChainsByEncoding[HexString],\n): AddressParser<ChainsByEncoding[HexString]> => {\n const nativeByteLength = StaticChainConfigs.getAddressSizeInBytes(chainName as ChainName);\n\n return {\n validateNative: (nativeAddress): nativeAddress is HexString => {\n return isHexString(nativeAddress);\n },\n normalizedToNative: (address) => {\n return {\n // we could have EIP-55 here, but omitted for now\n nativeAddress: hexZeroPad(address as unknown as HexString, nativeByteLength),\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n return hexZeroPad(address as unknown as HexString, nativeByteLength);\n },\n nativeToNormalized: (nativeAddress) => {\n const address = getAddress(nativeAddress);\n validateNative(address, chainName);\n return normalizeHex(address);\n },\n nativeToBytes: (nativeAddress) => {\n const address = getAddress(nativeAddress);\n validateNative(address, chainName);\n return hexToBytes(address);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n const address = getAddress(nativeAddress);\n validateNative(address, chainName);\n return hexZeroPad(address, 32);\n },\n nativeToBytes32: (nativeAddress) => {\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n parseNative: (nativeAddress) => {\n // Specific case to make tron a little less flaky, handle the 41 prefix\n if (chainName === ChainName.TRON) {\n nativeAddress = nativeAddress.startsWith('41')\n ? `0x${nativeAddress.slice(2)}`\n : nativeAddress;\n }\n\n if (!validateNative(nativeAddress, chainName)) {\n throw new Error('Invalid native address: ' + nativeAddress);\n }\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.HEX,\n };\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/addressParser.ts"],"names":["init_cjs_shims","AddressEncoding","addressParser","chainName","ChainName","TON","tonAddressParser","SOLANA","base58AddressParser","hexAddressParser","normalizedToBytes32Hex","address","hexZeroPad","normalizedToBytes32","hexToBytes","normalizedToBigInt","BigInt","parseNative","nativeAddress","validateNative","__name","expectedChainName","Error","getAddress","parseTonAddress","normalizedToNative","numericalValue","bigintToAddress","toString","normalizedToNativeString","nativeToNormalized","normalizeHex","addressToHex","nativeToBytes32Hex","nativeToBytes","nativeToBytes32","parseNativeToHex","encoding","isBase58","bs58","encode","hex","bytesToHexPrefixed","decode","nativeByteLength","StaticChainConfigs","getAddressSizeInBytes","isHexString","TRON","startsWith","slice"],"mappings":"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","file":"IVFVZYWG.cjs","sourcesContent":["import bs58 from 'bs58';\n\nimport type { HexString, NormalizedHexString } from '@layerzerolabs/common-chain-model';\nimport { normalizeHex } from '@layerzerolabs/common-chain-model';\nimport { addressToHex, bigintToAddress, parseTonAddress } from '@layerzerolabs/common-ton';\nimport {\n bytesToHexPrefixed,\n hexToBytes,\n hexZeroPad,\n isBase58,\n isHexString,\n} from '@layerzerolabs/common-utils';\nimport type {\n Base58String,\n ChainsByEncoding,\n NativeAddress,\n ResolvedEncodingForChainName,\n TonString,\n} from '@layerzerolabs/layerzero-definitions';\nimport type { ChainNativeAddress } from '@layerzerolabs/layerzero-definitions';\nimport { ChainName } from '@layerzerolabs/layerzero-definitions';\nimport { StaticChainConfigs } from '@layerzerolabs/static-chain-info';\n\ntype NativeOrString<T extends ChainName | `${ChainName}`> =\n | ChainNativeAddress<T>\n | ResolvedEncodingForChainName<T>;\n\nexport enum AddressEncoding {\n HEX = 'hex',\n BASE58 = 'base58',\n TON = 'ton',\n}\n\nexport interface AddressParser<T extends ChainName | `${ChainName}`> {\n normalizedToNative: (address: NormalizedHexString) => ChainNativeAddress<T>;\n normalizedToNativeString: (address: NormalizedHexString) => ResolvedEncodingForChainName<T>;\n nativeToNormalized: (nativeAddress: NativeOrString<T>) => NormalizedHexString;\n nativeToBytes: (nativeAddress: NativeOrString<T>) => Uint8Array;\n nativeToBytes32Hex: (nativeAddress: NativeOrString<T>) => HexString;\n nativeToBytes32: (nativeAddress: NativeOrString<T>) => Uint8Array;\n validateNative: (nativeAddress: string) => nativeAddress is ResolvedEncodingForChainName<T>;\n /**\n * Parse a native address to a string if it is valid.\n * Throws an error if the native address is invalid.\n * @param nativeAddress - The native address to parse.\n * @returns The parsed native address.\n */\n parseNative: (nativeAddress: string) => NormalizedHexString;\n parseNativeToHex: (nativeAddress: string) => HexString;\n encoding: AddressEncoding;\n}\n\nexport function addressParser<T extends ChainName | `${ChainName}`>(\n chainName: T,\n): AddressParser<T> {\n // FIXME: figure out a way to not have to cast here\n if (chainName === ChainName.TON)\n return tonAddressParser(chainName) as unknown as AddressParser<T>;\n if (chainName === ChainName.SOLANA)\n return base58AddressParser(chainName) as unknown as AddressParser<T>;\n return hexAddressParser(chainName) as unknown as AddressParser<T>;\n}\n\nexport namespace addressParser {\n export const normalizedToBytes32Hex = (address: NormalizedHexString) => {\n return hexZeroPad(address as unknown as HexString, 32);\n };\n export const normalizedToBytes32 = (address: NormalizedHexString) => {\n return hexToBytes(normalizedToBytes32Hex(address));\n };\n export const normalizedToBigInt = (address: NormalizedHexString) => {\n return BigInt(address as unknown as HexString);\n };\n export const parseNative = (nativeAddress: NativeAddress) => {\n return addressParser(nativeAddress.chainName).parseNative(nativeAddress.nativeAddress);\n };\n}\n\nconst validateNative = <T extends ChainName | `${ChainName}`>(\n nativeAddress: string,\n expectedChainName: T,\n): nativeAddress is ResolvedEncodingForChainName<T> => {\n if (!addressParser(expectedChainName).validateNative(nativeAddress)) {\n throw new Error(\n 'Cannot convert: ' +\n nativeAddress +\n ' - The native address does not match the expected format for the chain: ' +\n expectedChainName,\n );\n }\n return true;\n};\n\nconst getAddress = <T extends ChainName | `${ChainName}`>(nativeAddress: NativeOrString<T>) => {\n return typeof nativeAddress === 'object' ? nativeAddress.nativeAddress : nativeAddress;\n};\n\nexport const tonAddressParser: (\n chainName: ChainsByEncoding[TonString],\n) => AddressParser<ChainsByEncoding[TonString]> = (chainName) => {\n return {\n validateNative: (nativeAddress): nativeAddress is TonString => {\n try {\n parseTonAddress(nativeAddress);\n return true;\n } catch {\n return false;\n }\n },\n normalizedToNative: (address) => {\n const numericalValue = addressParser.normalizedToBigInt(address);\n return {\n nativeAddress: bigintToAddress(numericalValue).toString() as TonString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n return addressParser(chainName).normalizedToNative(address).nativeAddress;\n },\n nativeToNormalized: (nativeAddress) => {\n const address = getAddress(nativeAddress);\n validateNative(address, chainName);\n return normalizeHex(addressToHex(address));\n },\n nativeToBytes32Hex: (nativeAddress) => {\n // naturally ton is 32 bytes, pad it anyway\n return hexZeroPad(\n addressParser(chainName).nativeToNormalized(nativeAddress) as unknown as HexString,\n 32,\n );\n },\n nativeToBytes: (nativeAddress) => {\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n nativeToBytes32: (nativeAddress) => {\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n parseNative: (nativeAddress) => {\n if (!validateNative(nativeAddress, chainName)) {\n throw new Error('Invalid native address: ' + nativeAddress);\n }\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.TON,\n };\n};\n\nexport const base58AddressParser = (\n chainName: ChainsByEncoding[Base58String],\n): AddressParser<ChainsByEncoding[Base58String]> => {\n return {\n validateNative: (nativeAddress): nativeAddress is Base58String => {\n return isBase58(nativeAddress);\n },\n normalizedToNative: (address) => {\n return {\n nativeAddress: bs58.encode(\n hexToBytes(address as unknown as HexString),\n ) as Base58String,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n return addressParser(chainName).normalizedToNative(address).nativeAddress;\n },\n nativeToNormalized: (nativeAddress) => {\n const address = getAddress(nativeAddress);\n validateNative(address, chainName);\n const hex = bytesToHexPrefixed(bs58.decode(address));\n return normalizeHex(hex);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n // naturally solana is 32 bytes, pad it anyway\n return hexZeroPad(\n addressParser(chainName).nativeToNormalized(nativeAddress) as unknown as HexString,\n 32,\n );\n },\n nativeToBytes: (nativeAddress) => {\n const address = getAddress(nativeAddress);\n validateNative(address, chainName);\n return bs58.decode(address);\n },\n nativeToBytes32: (nativeAddress) => {\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n parseNative: (nativeAddress) => {\n if (!validateNative(nativeAddress, chainName)) {\n throw new Error('Invalid native address: ' + nativeAddress);\n }\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.BASE58,\n };\n};\n\nexport const hexAddressParser = (\n chainName: ChainsByEncoding[HexString],\n): AddressParser<ChainsByEncoding[HexString]> => {\n const nativeByteLength = StaticChainConfigs.getAddressSizeInBytes(chainName as ChainName);\n\n return {\n validateNative: (nativeAddress): nativeAddress is HexString => {\n return isHexString(nativeAddress);\n },\n normalizedToNative: (address) => {\n return {\n // we could have EIP-55 here, but omitted for now\n nativeAddress: hexZeroPad(address as unknown as HexString, nativeByteLength),\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n return hexZeroPad(address as unknown as HexString, nativeByteLength);\n },\n nativeToNormalized: (nativeAddress) => {\n const address = getAddress(nativeAddress);\n validateNative(address, chainName);\n return normalizeHex(address);\n },\n nativeToBytes: (nativeAddress) => {\n const address = getAddress(nativeAddress);\n validateNative(address, chainName);\n return hexToBytes(address);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n const address = getAddress(nativeAddress);\n validateNative(address, chainName);\n return hexZeroPad(address, 32);\n },\n nativeToBytes32: (nativeAddress) => {\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n parseNative: (nativeAddress) => {\n // Specific case to make tron a little less flaky, handle the 41 prefix\n if (chainName === ChainName.TRON) {\n nativeAddress = nativeAddress.startsWith('41')\n ? `0x${nativeAddress.slice(2)}`\n : nativeAddress;\n }\n\n if (!validateNative(nativeAddress, chainName)) {\n throw new Error('Invalid native address: ' + nativeAddress);\n }\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.HEX,\n };\n};\n"]}