@layerzerolabs/chain-utils 0.2.112 → 0.2.114

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.
@@ -1,10 +1,9 @@
1
1
  import { __name, AddressEncoding } from './IWK4KKTR.js';
2
2
  import { normalizeHex } from '@layerzerolabs/common-chain-model';
3
- import { hexToBytes, hexZeroPad, bytesToHexPrefixed, isBase58, isHexString, trim0x } from '@layerzerolabs/common-encoding-utils';
3
+ import { hexToBytes, hexZeroPad, base58ToBytes, bytesToHexPrefixed, bytesToBase58, isBase58, isHexString, ensure0xPrefixed, bigIntToHex, trim0x } from '@layerzerolabs/common-encoding-utils';
4
4
  import { ChainName } from '@layerzerolabs/layerzero-definitions';
5
5
  import { StaticChainConfigs } from '@layerzerolabs/static-chain-info';
6
6
  import { AccAddress } from '@initia/initia.js';
7
- import bs58 from 'bs58';
8
7
  import { StrKey } from '@stellar/stellar-sdk';
9
8
  import { addressToHex, bigintToAddress, parseTonAddress } from '@layerzerolabs/address-utils-ton';
10
9
 
@@ -117,7 +116,7 @@ var initiaAddressParser = /* @__PURE__ */ __name((chainName) => {
117
116
  const address = getAddress(nativeAddress);
118
117
  assertNative(address, chainName);
119
118
  if (isHexString(address)) {
120
- return normalizeHex(address);
119
+ return normalizeHex(ensure0xPrefixed(address));
121
120
  }
122
121
  return normalizeHex(AccAddress.toHex(nativeAddress.toString()));
123
122
  }, "nativeToNormalized"),
@@ -165,7 +164,7 @@ var base58AddressParser = /* @__PURE__ */ __name((chainName) => {
165
164
  if (address === void 0) return void 0;
166
165
  const nativeByteLength = StaticChainConfigs.getAddressSizeInBytes(chainName);
167
166
  return {
168
- nativeAddress: bs58.encode(hexToBytes(hexZeroPad(address, nativeByteLength))),
167
+ nativeAddress: bytesToBase58(hexToBytes(hexZeroPad(address, nativeByteLength))),
169
168
  chainName
170
169
  };
171
170
  }, "normalizedToNative"),
@@ -177,7 +176,7 @@ var base58AddressParser = /* @__PURE__ */ __name((chainName) => {
177
176
  if (nativeAddress === void 0) return void 0;
178
177
  const address = getAddress(nativeAddress);
179
178
  assertNative(address, chainName);
180
- const hex = bytesToHexPrefixed(bs58.decode(address));
179
+ const hex = bytesToHexPrefixed(base58ToBytes(address));
181
180
  return normalizeHex(hex);
182
181
  }, "nativeToNormalized"),
183
182
  nativeToBytes32Hex: /* @__PURE__ */ __name((nativeAddress) => {
@@ -188,7 +187,7 @@ var base58AddressParser = /* @__PURE__ */ __name((chainName) => {
188
187
  if (nativeAddress === void 0) return void 0;
189
188
  const address = getAddress(nativeAddress);
190
189
  assertNative(address, chainName);
191
- return bs58.decode(address);
190
+ return base58ToBytes(address);
192
191
  }, "nativeToBytes"),
193
192
  nativeToBytes32: /* @__PURE__ */ __name((nativeAddress) => {
194
193
  if (nativeAddress === void 0) return void 0;
@@ -225,7 +224,7 @@ var starknetAddressParser = /* @__PURE__ */ __name((chainName) => {
225
224
  }, "validateNative"),
226
225
  parseNative: /* @__PURE__ */ __name((nativeAddress) => {
227
226
  if (nativeAddress === void 0) return void 0;
228
- nativeAddress = `0x${BigInt(nativeAddress).toString(16)}`;
227
+ nativeAddress = bigIntToHex(BigInt(nativeAddress));
229
228
  assertNative(nativeAddress, chainName);
230
229
  return addressParser(chainName).nativeToNormalized(nativeAddress);
231
230
  }, "parseNative"),
@@ -249,7 +248,7 @@ var hexToStellarNative = /* @__PURE__ */ __name((address) => {
249
248
  if (hexPayload.length !== BYTES32_HEX_LENGTH) {
250
249
  throw new Error(`Stellar hex address must be exactly 32 bytes (${BYTES32_HEX_LENGTH} hex chars), got ${hexPayload.length}: ${address}`);
251
250
  }
252
- const raw = Buffer.from(hexPayload, "hex");
251
+ const raw = Buffer.from(hexToBytes(hexPayload));
253
252
  return StrKey.encodeContract(raw);
254
253
  }, "hexToStellarNative");
255
254
  var stellarAddressParser = /* @__PURE__ */ __name((chainName) => {
@@ -469,7 +468,7 @@ var cantonAddressParser = /* @__PURE__ */ __name((chainName) => {
469
468
  const hintHex = Buffer.from(party.hint, "utf-8").toString("hex");
470
469
  return `0x${party.fingerprint}${hintHex}`;
471
470
  }
472
- const hex = nativeAddress.startsWith("0x") ? nativeAddress : `0x${nativeAddress}`;
471
+ const hex = ensure0xPrefixed(nativeAddress);
473
472
  return hex.toLowerCase();
474
473
  }, "extractCantonAddress");
475
474
  const normalizeCantonAddress = /* @__PURE__ */ __name((nativeAddress) => {
@@ -479,18 +478,18 @@ var cantonAddressParser = /* @__PURE__ */ __name((chainName) => {
479
478
  return normalizeHex(`0x${party.fingerprint}${hintHex}${CANTON_TYPE_PARTY}`);
480
479
  }
481
480
  if (isCantonContractId(nativeAddress)) {
482
- return normalizeHex(`0x${trim0x(nativeAddress)}${CANTON_TYPE_CONTRACT}`);
481
+ return normalizeHex(`${ensure0xPrefixed(nativeAddress)}${CANTON_TYPE_CONTRACT}`);
483
482
  }
484
483
  throw new Error(`Not a Canton-native address (expected party id or contract id): ${nativeAddress}`);
485
484
  }, "normalizeCantonAddress");
486
485
  const reconstructCantonAddress = /* @__PURE__ */ __name((hex) => {
487
- const body = hex.startsWith("0x") ? hex.slice(2) : hex;
486
+ const body = trim0x(hex);
488
487
  const typeByte = body.slice(-2);
489
488
  const payload = body.slice(0, -2);
490
489
  if (typeByte === CANTON_TYPE_PARTY) {
491
490
  const fingerprint = payload.slice(0, CANTON_FINGERPRINT_HEX_LENGTH);
492
491
  const hintHex = payload.slice(CANTON_FINGERPRINT_HEX_LENGTH);
493
- const hint = Buffer.from(hintHex, "hex").toString("utf-8");
492
+ const hint = Buffer.from(hexToBytes(hintHex)).toString("utf-8");
494
493
  return `${hint}::${fingerprint}`;
495
494
  }
496
495
  if (typeByte === CANTON_TYPE_CONTRACT) {
@@ -542,5 +541,5 @@ var cantonAddressParser = /* @__PURE__ */ __name((chainName) => {
542
541
  }, "cantonAddressParser");
543
542
 
544
543
  export { addressParser, assertNative, base58AddressParser, cantonAddressParser, getAddress, hexAddressParser, initiaAddressParser, starknetAddressParser, stellarAddressParser, tonAddressParser };
545
- //# sourceMappingURL=7ZJ3AI3Q.js.map
546
- //# sourceMappingURL=7ZJ3AI3Q.js.map
544
+ //# sourceMappingURL=KRU2HZVN.js.map
545
+ //# sourceMappingURL=KRU2HZVN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/addressParser/utils.ts","../src/addressParser/hex.ts","../src/addressParser/initia.ts","../src/addressParser/solana.ts","../src/addressParser/starknet.ts","../src/addressParser/stellar.ts","../src/addressParser/ton.ts","../src/addressParser/index.ts","../src/addressParser/canton.ts"],"names":["getAddress","nativeAddress","assertNative","expectedChainName","addressParser","validateNative","Error","hexAddressParser","chainName","undefined","isHexString","normalizedToNative","address","nativeByteLength","StaticChainConfigs","getAddressSizeInBytes","hexZeroPad","normalizedToNativeString","nativeToNormalized","normalizeHex","nativeToBytes","hexToBytes","nativeToBytes32Hex","nativeToBytes32","normalizedToBytes32Hex","normalizedToBytes32","bytes32ToNormalized","bytes32Hex","parseNative","ChainName","TRON","startsWith","slice","parseNativeToUnpaddedHex","encoding","AddressEncoding","HEX","initiaAddressParser","test","AccAddress","fromHex","ensure0xPrefixed","toHex","toString","INITIA","base58AddressParser","isBase58","bytesToBase58","hex","bytesToHexPrefixed","base58ToBytes","BASE58","starknetAddressParser","bigIntToHex","BigInt","BYTES32_HEX_LENGTH","hexToStellarNative","hexPayload","length","raw","Buffer","from","StrKey","encodeContract","stellarAddressParser","isValidStellarAddress","isValidEd25519PublicKey","isValidContract","isValidMed25519PublicKey","isValidLiquidityPool","isValidClaimableBalance","isValidSignedPayload","stellarTextEncoder","TextEncoder","stellarAsciiToNormalized","bytes","encode","stellarTextDecoder","TextDecoder","normalizedToStellarAscii","normalizedHex","decode","stellarAddress","rawBytes","decodeEd25519PublicKey","decodeContract","decodeLiquidityPool","fullBytes","decodeClaimableBalance","subarray","normalized","STELLAR","tonAddressParser","parseTonAddress","numericalValue","normalizedToBigInt","bigintToAddress","addressToHex","tonToNormalized","tonAddress","TON","SOLANA","STARKNET","CANTON","cantonAddressParser","normalizedToUnpaddedString","CANTON_PARTY_ID_REGEX","CANTON_FINGERPRINT_HEX_LENGTH","CANTON_CONTRACT_ID_HEX_LENGTH","CANTON_TYPE_CONTRACT","CANTON_TYPE_PARTY","matchCantonPartyId","match","exec","hint","fingerprint","isCantonContractId","bare","trim0x","extractCantonAddress","party","hintHex","toLowerCase","normalizeCantonAddress","reconstructCantonAddress","body","typeByte","payload","padStart"],"mappings":"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","file":"KRU2HZVN.js","sourcesContent":["import type { ChainName, ResolvedEncodingForChainName } from '@layerzerolabs/layerzero-definitions';\n\nimport { addressParser } from './index';\nimport type { NativeOrString } from './types';\n\nexport const getAddress = <T extends ChainName>(nativeAddress: NativeOrString<T>) => {\n return typeof nativeAddress === 'object' ? nativeAddress.nativeAddress : nativeAddress;\n};\n\nexport function assertNative<T extends ChainName>(\n nativeAddress: string | undefined,\n expectedChainName: T,\n): asserts 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}\n","import type { HexString } from '@layerzerolabs/common-chain-model';\nimport { normalizeHex } from '@layerzerolabs/common-chain-model';\nimport { hexToBytes, hexZeroPad, isHexString } from '@layerzerolabs/common-encoding-utils';\nimport type { ChainsByEncoding } from '@layerzerolabs/layerzero-definitions';\nimport { ChainName } from '@layerzerolabs/layerzero-definitions';\nimport { StaticChainConfigs } from '@layerzerolabs/static-chain-info';\n\nimport { addressParser } from './index';\nimport type { AddressParser } from './types';\nimport { AddressEncoding } from './types';\nimport { assertNative, getAddress } from './utils';\n\nexport const hexAddressParser = (\n chainName: ChainsByEncoding[HexString],\n): AddressParser<ChainsByEncoding[HexString]> => {\n return {\n validateNative: (nativeAddress): nativeAddress is HexString => {\n if (nativeAddress === undefined) return false;\n return isHexString(nativeAddress);\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n // we fetch here instead of storing by chain because some chains may not have this defined,\n // so we should only throw on those chains if they try to use these methods that need the native byte length\n const nativeByteLength = StaticChainConfigs.getAddressSizeInBytes(chainName);\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 if (address === undefined) return undefined as any;\n const nativeByteLength = StaticChainConfigs.getAddressSizeInBytes(chainName);\n return hexZeroPad(address as unknown as HexString, nativeByteLength);\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n return normalizeHex(address);\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n return hexToBytes(address);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n return hexZeroPad(address, 32);\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n normalizedToBytes32Hex: (address) => {\n if (address === undefined) return undefined as any;\n return hexZeroPad(address as unknown as HexString, 32);\n },\n normalizedToBytes32: (address) => {\n if (address === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));\n },\n bytes32ToNormalized: (bytes32Hex) => {\n if (bytes32Hex === undefined) return undefined as any;\n return normalizeHex(bytes32Hex);\n },\n parseNative: (nativeAddress) => {\n // Specific case to make tron a little less flaky, handle the 41 prefix\n if (chainName === ChainName.TRON && nativeAddress) {\n nativeAddress = nativeAddress.startsWith('41')\n ? `0x${nativeAddress.slice(2)}`\n : nativeAddress;\n }\n\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.HEX,\n };\n};\n","import { AccAddress } from '@initia/initia.js';\n\nimport type { HexString } from '@layerzerolabs/common-chain-model';\nimport { normalizeHex } from '@layerzerolabs/common-chain-model';\nimport {\n ensure0xPrefixed,\n hexToBytes,\n hexZeroPad,\n isHexString,\n} from '@layerzerolabs/common-encoding-utils';\nimport type { ChainsByEncoding, InitiaString } from '@layerzerolabs/layerzero-definitions';\n\nimport { addressParser } from './index';\nimport type { AddressParser } from './types';\nimport { AddressEncoding } from './types';\nimport { assertNative, getAddress } from './utils';\n\nexport const initiaAddressParser: (\n chainName: ChainsByEncoding[InitiaString],\n) => AddressParser<ChainsByEncoding[InitiaString]> = (chainName) => {\n return {\n validateNative: (nativeAddress): nativeAddress is InitiaString => {\n if (nativeAddress === undefined) {\n return false;\n }\n try {\n // Both formats are native for the chain and are used kind of randomly.\n return (\n isHexString(nativeAddress) ||\n /^(init)1(['qpzry9x8gf2tvdw0s3jn54khce6mua7l]{38,66})$/.test(nativeAddress)\n );\n } catch {\n return false;\n }\n },\n normalizedToNative: (address) => {\n if (address === undefined) {\n return undefined as any;\n }\n return {\n nativeAddress: AccAddress.fromHex(address as unknown as HexString) as InitiaString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return addressParser(chainName).normalizedToNative(address).nativeAddress;\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n if (isHexString(address)) {\n // isHexString accepts unprefixed input, so add the 0x it may lack before normalizing.\n return normalizeHex(ensure0xPrefixed(address));\n }\n return normalizeHex(AccAddress.toHex(nativeAddress.toString()) as HexString);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\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 if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n normalizedToBytes32Hex: (address) => {\n if (address === undefined) return undefined as any;\n return hexZeroPad(address as unknown as HexString, 32);\n },\n normalizedToBytes32: (address) => {\n if (address === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));\n },\n bytes32ToNormalized: (bytes32Hex) => {\n if (bytes32Hex === undefined) return undefined as any;\n return normalizeHex(bytes32Hex);\n },\n parseNative: (nativeAddress) => {\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.INITIA,\n };\n};\n","import type { HexString } from '@layerzerolabs/common-chain-model';\nimport { normalizeHex } from '@layerzerolabs/common-chain-model';\nimport {\n base58ToBytes,\n bytesToBase58,\n bytesToHexPrefixed,\n hexToBytes,\n hexZeroPad,\n isBase58,\n} from '@layerzerolabs/common-encoding-utils';\nimport type { Base58String, ChainsByEncoding } from '@layerzerolabs/layerzero-definitions';\nimport { StaticChainConfigs } from '@layerzerolabs/static-chain-info';\n\nimport { addressParser } from './index';\nimport type { AddressParser } from './types';\nimport { AddressEncoding } from './types';\nimport { assertNative, getAddress } from './utils';\n\nexport const base58AddressParser = (\n chainName: ChainsByEncoding[Base58String],\n): AddressParser<ChainsByEncoding[Base58String]> => {\n return {\n validateNative: (nativeAddress): nativeAddress is Base58String => {\n if (nativeAddress === undefined) return false;\n return isBase58(nativeAddress);\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n const nativeByteLength = StaticChainConfigs.getAddressSizeInBytes(chainName);\n return {\n nativeAddress: bytesToBase58(\n hexToBytes(hexZeroPad(address as unknown as HexString, nativeByteLength)),\n ) as Base58String,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return addressParser(chainName).normalizedToNative(address).nativeAddress;\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n const hex = bytesToHexPrefixed(base58ToBytes(address));\n return normalizeHex(hex);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n // naturally solana is 32 bytes, pad it anyway\n if (nativeAddress === undefined) return undefined as any;\n return hexZeroPad(\n addressParser(chainName).nativeToNormalized(nativeAddress) as unknown as HexString,\n 32,\n );\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n return base58ToBytes(address);\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n normalizedToBytes32Hex: (address) => {\n if (address === undefined) return undefined as any;\n return hexZeroPad(address as unknown as HexString, 32);\n },\n normalizedToBytes32: (address) => {\n if (address === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));\n },\n bytes32ToNormalized: (bytes32Hex) => {\n if (bytes32Hex === undefined) return undefined as any;\n return normalizeHex(bytes32Hex);\n },\n parseNative: (nativeAddress) => {\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.BASE58,\n };\n};\n","import type { HexString } from '@layerzerolabs/common-chain-model';\nimport { bigIntToHex, isHexString } from '@layerzerolabs/common-encoding-utils';\nimport type { ChainsByEncoding } from '@layerzerolabs/layerzero-definitions';\n\nimport { hexAddressParser } from './hex';\nimport { addressParser } from './index';\nimport type { AddressParser } from './types';\nimport { assertNative } from './utils';\n\n// Starknet addresses do not handle hex-zero padding, so we just return the address as is\nexport const starknetAddressParser = (\n chainName: ChainsByEncoding[HexString],\n): AddressParser<ChainsByEncoding[HexString]> => {\n return {\n ...hexAddressParser(chainName),\n validateNative: (nativeAddress): nativeAddress is HexString => {\n if (nativeAddress === undefined) return false;\n return isHexString(nativeAddress);\n },\n parseNative: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n // We can't trust starknet.js strings, they may actually be bigints!\n // so just convert everything to hex first, then convert to normalized\n nativeAddress = bigIntToHex(BigInt(nativeAddress));\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n return {\n nativeAddress: address,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return address;\n },\n };\n};\n","import { StrKey } from '@stellar/stellar-sdk';\n\nimport type { HexString, NormalizedHexString } from '@layerzerolabs/common-chain-model';\nimport { normalizeHex } from '@layerzerolabs/common-chain-model';\nimport { bytesToHexPrefixed, hexToBytes, isHexString } from '@layerzerolabs/common-encoding-utils';\nimport type {\n ChainType,\n InferChainNamesForChainType,\n StellarString,\n} from '@layerzerolabs/layerzero-definitions';\n\nimport { addressParser } from './index';\nimport type { AddressParser } from './types';\nimport { AddressEncoding } from './types';\nimport { assertNative, getAddress } from './utils';\n\nconst BYTES32_HEX_LENGTH = 64;\n\n/**\n * If the input is a 0x-prefixed bytes32 hex string (raw contract ID),\n * convert it to native Stellar base32 format. Only accepts exactly\n * 32 bytes (64 hex chars) to avoid silent corruption from other hex\n * representations (e.g. the UTF-8 \"normalized\" encoding which is 56 bytes,\n * or a 20-byte EVM address).\n */\nconst hexToStellarNative = (address: string | undefined): string | undefined => {\n if (!address || !address.startsWith('0x') || !isHexString(address)) return address;\n const hexPayload = address.slice(2);\n if (hexPayload.length !== BYTES32_HEX_LENGTH) {\n throw new Error(\n `Stellar hex address must be exactly 32 bytes (${BYTES32_HEX_LENGTH} hex chars), got ${hexPayload.length}: ${address}`,\n );\n }\n const raw = Buffer.from(hexToBytes(hexPayload));\n return StrKey.encodeContract(raw);\n};\n\nexport const stellarAddressParser: (\n chainName: InferChainNamesForChainType<ChainType.STELLAR>,\n) => AddressParser<InferChainNamesForChainType<ChainType.STELLAR>> = (chainName) => {\n /**\n * Validate if a string is a valid Stellar address.\n *\n * According to SEP-0023 (https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0023.md),\n * Stellar supports multiple address types encoded as base32 ASCII strings:\n * - Account addresses starting with 'G' (56 chars, Ed25519 public key)\n * - Contract addresses starting with 'C' (56 chars, contract ID)\n * - Muxed addresses starting with 'M' (69 chars, muxed account with ID)\n * - Liquidity pool addresses starting with 'L' (56 chars, pool ID)\n * - Claimable balance addresses starting with 'B' (56 chars, balance ID)\n * - Signed payload starting with 'P' (variable length)\n *\n * All addresses are stored in their native ASCII format to preserve type information.\n */\n const isValidStellarAddress = (address: string): boolean => {\n if (!address) return false;\n // Use the StrKey validation methods for all supported address types\n return (\n StrKey.isValidEd25519PublicKey(address) ||\n StrKey.isValidContract(address) ||\n StrKey.isValidMed25519PublicKey(address) ||\n StrKey.isValidLiquidityPool(address) ||\n StrKey.isValidClaimableBalance(address) ||\n StrKey.isValidSignedPayload(address)\n );\n };\n\n /**\n * Convert Stellar ASCII address to normalized hex by encoding the ASCII string as UTF-8 bytes.\n * This preserves the full address including type prefix and allows round-trip conversion.\n */\n const stellarTextEncoder = new TextEncoder();\n const stellarAsciiToNormalized = (address: string): NormalizedHexString => {\n // Convert ASCII address string to UTF-8 bytes, then to hex\n const bytes = stellarTextEncoder.encode(address);\n return normalizeHex(bytesToHexPrefixed(bytes));\n };\n\n /**\n * Convert normalized hex back to Stellar ASCII address by decoding UTF-8 bytes.\n */\n const stellarTextDecoder = new TextDecoder();\n const normalizedToStellarAscii = (normalizedHex: NormalizedHexString): string => {\n // A StrKey address's first byte is always >= 0x42, so normalizeHex never strips a leading\n // nibble and the body stays even-length; hexToBytes rejects anything odd as malformed.\n const bytes = hexToBytes(normalizedHex as unknown as HexString);\n return stellarTextDecoder.decode(bytes);\n };\n\n return {\n validateNative: (nativeAddress): nativeAddress is StellarString => {\n if (nativeAddress === undefined) return false;\n return isValidStellarAddress(nativeAddress);\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n // Decode normalized hex back to ASCII Stellar address\n const stellarAddress = normalizedToStellarAscii(address);\n return {\n nativeAddress: stellarAddress as StellarString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return normalizedToStellarAscii(address) as StellarString;\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n // Convert ASCII address to normalized hex\n return stellarAsciiToNormalized(address);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n // Decode the Stellar address to its raw 32-byte payload based on type\n let rawBytes: Buffer;\n if (StrKey.isValidEd25519PublicKey(address)) {\n // Account addresses (G...) - Ed25519 public key (32 bytes)\n rawBytes = StrKey.decodeEd25519PublicKey(address);\n } else if (StrKey.isValidContract(address)) {\n // Contract addresses (C...) - contract ID (32 bytes)\n rawBytes = StrKey.decodeContract(address);\n } else if (StrKey.isValidLiquidityPool(address)) {\n // Liquidity pool addresses (L...) - pool ID (32 bytes)\n rawBytes = StrKey.decodeLiquidityPool(address);\n } else if (StrKey.isValidClaimableBalance(address)) {\n // Claimable balance addresses (B...) - balance ID (33 bytes: 1-byte version + 32-byte hash)\n // Per SEP-0023: first byte is the claimable balance type (0x00 = V0), followed by 32-byte SHA256 hash\n const fullBytes = StrKey.decodeClaimableBalance(address);\n rawBytes = fullBytes.subarray(1); // Skip the first byte (version), return the 32-byte hash\n } else if (StrKey.isValidMed25519PublicKey(address)) {\n // Muxed addresses (M...) contain additional data beyond 32 bytes\n throw new Error(\n 'nativeToBytes32 is not supported for Stellar muxed addresses (M...)',\n );\n } else if (StrKey.isValidSignedPayload(address)) {\n // Signed payload (P...) has variable length\n throw new Error(\n 'nativeToBytes32 is not supported for Stellar signed payload addresses (P...)',\n );\n } else {\n throw new Error(`Unknown Stellar address type: ${address}`);\n }\n return bytesToHexPrefixed(rawBytes);\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n // Convert ASCII address to UTF-8 bytes\n return stellarTextEncoder.encode(address);\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n // Use nativeToBytes32Hex and convert to Uint8Array\n const hex = addressParser(chainName).nativeToBytes32Hex(nativeAddress);\n return hexToBytes(hex);\n },\n normalizedToBytes32Hex: (address) => {\n if (address === undefined) return undefined as any;\n // Stellar normalized hex is UTF-8 of ASCII address (56 bytes), not raw bytes.\n // Route through native string to extract the raw 32-byte StrKey payload.\n return addressParser(chainName).nativeToBytes32Hex(\n addressParser(chainName).normalizedToNativeString(address),\n );\n },\n normalizedToBytes32: (address) => {\n if (address === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));\n },\n bytes32ToNormalized: (bytes32Hex) => {\n if (bytes32Hex === undefined) return undefined as any;\n // Always assumes contract address type — G-address→bytes32 is a lossy upcast\n return stellarAsciiToNormalized(\n StrKey.encodeContract(Buffer.from(hexToBytes(bytes32Hex))),\n );\n },\n parseNative: (nativeAddress) => {\n nativeAddress = hexToStellarNative(nativeAddress);\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n nativeAddress = hexToStellarNative(nativeAddress);\n assertNative(nativeAddress, chainName);\n const normalized = addressParser(chainName).nativeToNormalized(nativeAddress);\n return normalized as unknown as HexString;\n },\n encoding: AddressEncoding.STELLAR,\n };\n};\n","import { addressToHex, bigintToAddress, parseTonAddress } from '@layerzerolabs/address-utils-ton';\nimport type { HexString } from '@layerzerolabs/common-chain-model';\nimport { normalizeHex } from '@layerzerolabs/common-chain-model';\nimport { hexToBytes, hexZeroPad } from '@layerzerolabs/common-encoding-utils';\nimport type { ChainType, InferChainNamesForChainType } from '@layerzerolabs/layerzero-definitions';\n\nimport { addressParser } from './index';\nimport type { AddressParser } from './types';\nimport { AddressEncoding } from './types';\nimport { assertNative, getAddress } from './utils';\n\nexport const tonAddressParser: (\n chainName: InferChainNamesForChainType<ChainType.TON>,\n) => AddressParser<InferChainNamesForChainType<ChainType.TON>> = (chainName) => {\n return {\n validateNative: (nativeAddress): nativeAddress is HexString => {\n if (nativeAddress === undefined) {\n return false;\n }\n try {\n parseTonAddress(nativeAddress);\n return true;\n } catch {\n return false;\n }\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n const numericalValue = addressParser.normalizedToBigInt(address);\n return {\n // TODO: use Base64 native format instead of hex for TON addresses\n nativeAddress: bigintToAddress(numericalValue).toString() as HexString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return addressParser(chainName).normalizedToNative(address).nativeAddress;\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n return normalizeHex(addressToHex(address));\n },\n nativeToBytes32Hex: (nativeAddress) => {\n // naturally ton is 32 bytes, pad it anyway\n if (nativeAddress === undefined) return undefined as any;\n return hexZeroPad(\n addressParser(chainName).nativeToNormalized(nativeAddress) as unknown as HexString,\n 32,\n );\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n normalizedToBytes32Hex: (address) => {\n if (address === undefined) return undefined as any;\n return hexZeroPad(address as unknown as HexString, 32);\n },\n normalizedToBytes32: (address) => {\n if (address === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));\n },\n bytes32ToNormalized: (bytes32Hex) => {\n if (bytes32Hex === undefined) return undefined as any;\n return normalizeHex(bytes32Hex);\n },\n parseNative: (nativeAddress) => {\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n tonToNormalized: (tonAddress) => {\n return addressParser(chainName).parseNative(addressToHex(tonAddress));\n },\n encoding: AddressEncoding.TON,\n };\n};\n","import type { HexString, NormalizedHexString } from '@layerzerolabs/common-chain-model';\nimport type { NativeAddress } from '@layerzerolabs/layerzero-definitions';\nimport { ChainName } from '@layerzerolabs/layerzero-definitions';\n\nimport { cantonAddressParser } from './canton';\nimport { hexAddressParser } from './hex';\nimport { initiaAddressParser } from './initia';\nimport { base58AddressParser } from './solana';\nimport { starknetAddressParser } from './starknet';\nimport { stellarAddressParser } from './stellar';\nimport { tonAddressParser } from './ton';\nimport type { AddressParser } from './types';\n\nexport { cantonAddressParser } from './canton';\nexport { hexAddressParser } from './hex';\nexport { initiaAddressParser } from './initia';\nexport { base58AddressParser } from './solana';\nexport { starknetAddressParser } from './starknet';\nexport { stellarAddressParser } from './stellar';\nexport { tonAddressParser } from './ton';\nexport type {\n AddressParser,\n ExtensionByChainType,\n InferExtensionByChainName,\n NativeOrString,\n} from './types';\nexport { AddressEncoding } from './types';\n\nexport function addressParser<T extends ChainName>(chainName: T): AddressParser<T> {\n // TODO: find a way to narrow generics to avoid type cast\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 if (chainName === ChainName.INITIA)\n return initiaAddressParser(chainName) as unknown as AddressParser<T>;\n if (chainName === ChainName.STELLAR)\n return stellarAddressParser(chainName) as unknown as AddressParser<T>;\n if (chainName === ChainName.STARKNET)\n return starknetAddressParser(chainName) as unknown as AddressParser<T>;\n if (chainName === ChainName.CANTON)\n return cantonAddressParser(chainName) as unknown as AddressParser<T>;\n return hexAddressParser(chainName) as unknown as AddressParser<T>;\n}\n\nexport namespace addressParser {\n export const normalizedToUnpaddedString = (address: NormalizedHexString) => {\n return address.toString() as HexString;\n };\n\n export const normalizedToBigInt = (address: NormalizedHexString) => {\n return BigInt(address as unknown as HexString);\n };\n\n export const parseNative = (nativeAddress: NativeAddress) => {\n return addressParser(nativeAddress.chainName).parseNative(nativeAddress.nativeAddress);\n };\n}\n","import type { HexString, NormalizedHexString } from '@layerzerolabs/common-chain-model';\nimport { normalizeHex } from '@layerzerolabs/common-chain-model';\nimport { ensure0xPrefixed, hexToBytes, trim0x } from '@layerzerolabs/common-encoding-utils';\nimport type {\n CantonString,\n ChainType,\n InferChainNamesForChainType,\n} from '@layerzerolabs/layerzero-definitions';\n\nimport { addressParser } from './index';\nimport type { AddressParser } from './types';\nimport { AddressEncoding } from './types';\n\n/**\n * Canton address formats and normalization.\n *\n * Canton has exactly two native address forms:\n * - Contract ID: `00<68 bytes hex>` (69 bytes total, V1 prefix `00`)\n * Normalized: `0x<contract_id_hex>00` — trailing `00` type discriminator\n *\n * - Party ID: `<hint>::1220<fingerprint>` (variable length)\n * Normalized: `0x<1220><fingerprint><hintHex>01` — fingerprint first (fixed 68 hex), then UTF-8 hex of hint, trailing `01`\n *\n * Reconstruction reads the last byte (2 hex chars) of the body:\n * - `00` → contract ID (strip trailing `00`, pad to 138 hex chars to restore leading zeros)\n * - `01` → party ID (strip trailing `01`, split at offset 68 for hint)\n * Anything else is not a Canton-native address and is rejected. Protocol-level\n * identifiers (e.g. a ver-endpoint global address) are not Canton addresses and\n * must be handled with chain-agnostic helpers (`normalizeHex`) by the caller, not\n * routed through this parser.\n *\n * The trailing discriminator survives normalizeHex (which only strips leading zeros),\n * avoiding ambiguity when a contract ID starting with `001220...` would otherwise\n * be indistinguishable from a party ID after leading-zero stripping.\n *\n * `1220` is the multihash prefix (0x12 = SHA-256, 0x20 = 32 bytes).\n */\nconst CANTON_PARTY_ID_REGEX = /^(.+)::([0-9a-fA-F]+)$/;\nconst CANTON_FINGERPRINT_HEX_LENGTH = 68; // '1220' (4) + SHA-256 hex (64)\nconst CANTON_CONTRACT_ID_HEX_LENGTH = 138; // 69 bytes\nconst CANTON_TYPE_CONTRACT = '00';\nconst CANTON_TYPE_PARTY = '01';\n\nconst matchCantonPartyId = (nativeAddress: string) => {\n const match = CANTON_PARTY_ID_REGEX.exec(nativeAddress);\n if (!match) return null;\n const [, hint, fingerprint] = match;\n return { hint, fingerprint };\n};\n\nconst isCantonContractId = (nativeAddress: string): boolean => {\n const bare = trim0x(nativeAddress);\n return bare.length === CANTON_CONTRACT_ID_HEX_LENGTH && bare.startsWith('00');\n};\n\nexport const cantonAddressParser = (\n chainName: InferChainNamesForChainType<ChainType.CANTON>,\n): AddressParser<InferChainNamesForChainType<ChainType.CANTON>> => {\n /** Returns raw hex for bytes operations (no type discriminator). */\n const extractCantonAddress = (nativeAddress: string): string => {\n const party = matchCantonPartyId(nativeAddress);\n if (party) {\n const hintHex = Buffer.from(party.hint, 'utf-8').toString('hex');\n return `0x${party.fingerprint}${hintHex}`;\n }\n const hex = ensure0xPrefixed(nativeAddress);\n return hex.toLowerCase();\n };\n\n /**\n * Normalize a Canton native address. A party id and a `00`-prefixed contract id\n * get a trailing type discriminator (`01` / `00`). Anything else is not a\n * Canton-native address and is rejected — callers holding protocol-level\n * identifiers (e.g. a ver-endpoint global address) must use chain-agnostic\n * `normalizeHex` directly instead of this parser.\n */\n const normalizeCantonAddress = (nativeAddress: string): NormalizedHexString => {\n const party = matchCantonPartyId(nativeAddress);\n if (party) {\n const hintHex = Buffer.from(party.hint, 'utf-8').toString('hex');\n return normalizeHex(`0x${party.fingerprint}${hintHex}${CANTON_TYPE_PARTY}`);\n }\n if (isCantonContractId(nativeAddress)) {\n return normalizeHex(`${ensure0xPrefixed(nativeAddress)}${CANTON_TYPE_CONTRACT}`);\n }\n throw new Error(\n `Not a Canton-native address (expected party id or contract id): ${nativeAddress}`,\n );\n };\n\n const reconstructCantonAddress = (hex: string): string => {\n const body = trim0x(hex);\n const typeByte = body.slice(-2);\n const payload = body.slice(0, -2);\n\n if (typeByte === CANTON_TYPE_PARTY) {\n const fingerprint = payload.slice(0, CANTON_FINGERPRINT_HEX_LENGTH);\n const hintHex = payload.slice(CANTON_FINGERPRINT_HEX_LENGTH);\n const hint = Buffer.from(hexToBytes(hintHex)).toString('utf-8');\n return `${hint}::${fingerprint}`;\n }\n\n if (typeByte === CANTON_TYPE_CONTRACT) {\n // Contract ID: pad to 138 hex chars to restore leading zeros stripped by normalizeHex\n return payload.padStart(CANTON_CONTRACT_ID_HEX_LENGTH, '0');\n }\n\n throw new Error(\n `Cannot reconstruct Canton address: unknown type discriminator '${typeByte}' in ${hex}`,\n );\n };\n\n return {\n validateNative: (nativeAddress): nativeAddress is CantonString => {\n if (nativeAddress === undefined) return false;\n return matchCantonPartyId(nativeAddress) !== null || isCantonContractId(nativeAddress);\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n return {\n nativeAddress: reconstructCantonAddress(\n address as unknown as string,\n ) as CantonString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return reconstructCantonAddress(address as unknown as string) as CantonString;\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return normalizeCantonAddress(nativeAddress as string);\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = extractCantonAddress(nativeAddress as string) as HexString;\n return hexToBytes(address);\n },\n // Canton addresses (party ids / contract ids) are not bytes32, so every\n // bytes32 conversion is unsupported and returns undefined.\n nativeToBytes32Hex: () => undefined as any,\n nativeToBytes32: () => undefined as any,\n normalizedToBytes32Hex: () => undefined as any,\n normalizedToBytes32: () => undefined as any,\n bytes32ToNormalized: () => undefined as any,\n parseNative: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return normalizeCantonAddress(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.CANTON,\n };\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"canton.d.ts","sourceRoot":"","sources":["../../src/addressParser/canton.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAER,SAAS,EACT,2BAA2B,EAC9B,MAAM,sCAAsC,CAAC;AAG9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AA6C7C,eAAO,MAAM,mBAAmB,GAC5B,WAAW,2BAA2B,CAAC,SAAS,CAAC,MAAM,CAAC,KACzD,aAAa,CAAC,2BAA2B,CAAC,SAAS,CAAC,MAAM,CAAC,CAoG7D,CAAC"}
1
+ {"version":3,"file":"canton.d.ts","sourceRoot":"","sources":["../../src/addressParser/canton.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAER,SAAS,EACT,2BAA2B,EAC9B,MAAM,sCAAsC,CAAC;AAG9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AA6C7C,eAAO,MAAM,mBAAmB,GAC5B,WAAW,2BAA2B,CAAC,SAAS,CAAC,MAAM,CAAC,KACzD,aAAa,CAAC,2BAA2B,CAAC,SAAS,CAAC,MAAM,CAAC,CAkG7D,CAAC"}
@@ -1,4 +1,4 @@
1
- export { cantonAddressParser } from '../7ZJ3AI3Q.js';
1
+ export { cantonAddressParser } from '../KRU2HZVN.js';
2
2
  import '../IWK4KKTR.js';
3
3
  //# sourceMappingURL=canton.js.map
4
4
  //# sourceMappingURL=canton.js.map
@@ -1,4 +1,4 @@
1
- export { hexAddressParser } from '../7ZJ3AI3Q.js';
1
+ export { hexAddressParser } from '../KRU2HZVN.js';
2
2
  import '../IWK4KKTR.js';
3
3
  //# sourceMappingURL=hex.js.map
4
4
  //# sourceMappingURL=hex.js.map
@@ -1,4 +1,4 @@
1
- export { addressParser, base58AddressParser, cantonAddressParser, hexAddressParser, initiaAddressParser, starknetAddressParser, stellarAddressParser, tonAddressParser } from '../7ZJ3AI3Q.js';
1
+ export { addressParser, base58AddressParser, cantonAddressParser, hexAddressParser, initiaAddressParser, starknetAddressParser, stellarAddressParser, tonAddressParser } from '../KRU2HZVN.js';
2
2
  export { AddressEncoding } from '../IWK4KKTR.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"initia.d.ts","sourceRoot":"","sources":["../../src/addressParser/initia.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAG3F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAI7C,eAAO,MAAM,mBAAmB,EAAE,CAC9B,SAAS,EAAE,gBAAgB,CAAC,YAAY,CAAC,KACxC,aAAa,CAAC,gBAAgB,CAAC,YAAY,CAAC,CA2EhD,CAAC"}
1
+ {"version":3,"file":"initia.d.ts","sourceRoot":"","sources":["../../src/addressParser/initia.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAG3F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAI7C,eAAO,MAAM,mBAAmB,EAAE,CAC9B,SAAS,EAAE,gBAAgB,CAAC,YAAY,CAAC,KACxC,aAAa,CAAC,gBAAgB,CAAC,YAAY,CAAC,CA4EhD,CAAC"}
@@ -1,4 +1,4 @@
1
- export { initiaAddressParser } from '../7ZJ3AI3Q.js';
1
+ export { initiaAddressParser } from '../KRU2HZVN.js';
2
2
  import '../IWK4KKTR.js';
3
3
  //# sourceMappingURL=initia.js.map
4
4
  //# sourceMappingURL=initia.js.map
@@ -1,4 +1,4 @@
1
- export { base58AddressParser } from '../7ZJ3AI3Q.js';
1
+ export { base58AddressParser } from '../KRU2HZVN.js';
2
2
  import '../IWK4KKTR.js';
3
3
  //# sourceMappingURL=solana.js.map
4
4
  //# sourceMappingURL=solana.js.map
@@ -1,4 +1,4 @@
1
- export { starknetAddressParser } from '../7ZJ3AI3Q.js';
1
+ export { starknetAddressParser } from '../KRU2HZVN.js';
2
2
  import '../IWK4KKTR.js';
3
3
  //# sourceMappingURL=starknet.js.map
4
4
  //# sourceMappingURL=starknet.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stellar.d.ts","sourceRoot":"","sources":["../../src/addressParser/stellar.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACR,SAAS,EACT,2BAA2B,EAE9B,MAAM,sCAAsC,CAAC;AAG9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAyB7C,eAAO,MAAM,oBAAoB,EAAE,CAC/B,SAAS,EAAE,2BAA2B,CAAC,SAAS,CAAC,OAAO,CAAC,KACxD,aAAa,CAAC,2BAA2B,CAAC,SAAS,CAAC,OAAO,CAAC,CA0JhE,CAAC"}
1
+ {"version":3,"file":"stellar.d.ts","sourceRoot":"","sources":["../../src/addressParser/stellar.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACR,SAAS,EACT,2BAA2B,EAE9B,MAAM,sCAAsC,CAAC;AAG9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAyB7C,eAAO,MAAM,oBAAoB,EAAE,CAC/B,SAAS,EAAE,2BAA2B,CAAC,SAAS,CAAC,OAAO,CAAC,KACxD,aAAa,CAAC,2BAA2B,CAAC,SAAS,CAAC,OAAO,CAAC,CA2JhE,CAAC"}
@@ -1,4 +1,4 @@
1
- export { stellarAddressParser } from '../7ZJ3AI3Q.js';
1
+ export { stellarAddressParser } from '../KRU2HZVN.js';
2
2
  import '../IWK4KKTR.js';
3
3
  //# sourceMappingURL=stellar.js.map
4
4
  //# sourceMappingURL=stellar.js.map
@@ -1,4 +1,4 @@
1
- export { tonAddressParser } from '../7ZJ3AI3Q.js';
1
+ export { tonAddressParser } from '../KRU2HZVN.js';
2
2
  import '../IWK4KKTR.js';
3
3
  //# sourceMappingURL=ton.js.map
4
4
  //# sourceMappingURL=ton.js.map
@@ -1,4 +1,4 @@
1
- export { assertNative, getAddress } from '../7ZJ3AI3Q.js';
1
+ export { assertNative, getAddress } from '../KRU2HZVN.js';
2
2
  import '../IWK4KKTR.js';
3
3
  //# sourceMappingURL=utils.js.map
4
4
  //# sourceMappingURL=utils.js.map
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { addressParser, base58AddressParser, cantonAddressParser, hexAddressParser, initiaAddressParser, starknetAddressParser, stellarAddressParser, tonAddressParser } from './7ZJ3AI3Q.js';
1
+ export { addressParser, base58AddressParser, cantonAddressParser, hexAddressParser, initiaAddressParser, starknetAddressParser, stellarAddressParser, tonAddressParser } from './KRU2HZVN.js';
2
2
  export { AddressEncoding } from './IWK4KKTR.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@layerzerolabs/chain-utils",
3
- "version": "0.2.112",
3
+ "version": "0.2.114",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -20,18 +20,18 @@
20
20
  "@stellar/stellar-sdk": "^14.4.3",
21
21
  "@ton/core": "^0.59.0",
22
22
  "bs58": "^5.0.0",
23
- "@layerzerolabs/address-utils-ton": "0.2.112",
24
- "@layerzerolabs/common-chain-model": "0.2.112",
25
- "@layerzerolabs/common-encoding-utils": "0.2.112",
26
- "@layerzerolabs/layerzero-definitions": "0.2.112",
27
- "@layerzerolabs/static-chain-info": "0.2.112"
23
+ "@layerzerolabs/address-utils-ton": "0.2.114",
24
+ "@layerzerolabs/common-chain-model": "0.2.114",
25
+ "@layerzerolabs/layerzero-definitions": "0.2.114",
26
+ "@layerzerolabs/static-chain-info": "0.2.114",
27
+ "@layerzerolabs/common-encoding-utils": "0.2.114"
28
28
  },
29
29
  "devDependencies": {
30
30
  "tsup": "^8.4.0",
31
31
  "vitest": "^3.2.6",
32
- "@layerzerolabs/tsup-configuration": "0.2.112",
33
- "@layerzerolabs/typescript-configuration": "0.2.112",
34
- "@layerzerolabs/typescript-utils": "0.2.112"
32
+ "@layerzerolabs/tsup-configuration": "0.2.114",
33
+ "@layerzerolabs/typescript-configuration": "0.2.114",
34
+ "@layerzerolabs/typescript-utils": "0.2.114"
35
35
  },
36
36
  "publishConfig": {
37
37
  "access": "public",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/addressParser/utils.ts","../src/addressParser/hex.ts","../src/addressParser/initia.ts","../src/addressParser/solana.ts","../src/addressParser/starknet.ts","../src/addressParser/stellar.ts","../src/addressParser/ton.ts","../src/addressParser/index.ts","../src/addressParser/canton.ts"],"names":["getAddress","nativeAddress","assertNative","expectedChainName","addressParser","validateNative","Error","hexAddressParser","chainName","undefined","isHexString","normalizedToNative","address","nativeByteLength","StaticChainConfigs","getAddressSizeInBytes","hexZeroPad","normalizedToNativeString","nativeToNormalized","normalizeHex","nativeToBytes","hexToBytes","nativeToBytes32Hex","nativeToBytes32","normalizedToBytes32Hex","normalizedToBytes32","bytes32ToNormalized","bytes32Hex","parseNative","ChainName","TRON","startsWith","slice","parseNativeToUnpaddedHex","encoding","AddressEncoding","HEX","initiaAddressParser","test","AccAddress","fromHex","toHex","toString","INITIA","base58AddressParser","isBase58","bs58","encode","hex","bytesToHexPrefixed","decode","BASE58","starknetAddressParser","BigInt","BYTES32_HEX_LENGTH","hexToStellarNative","hexPayload","length","raw","Buffer","from","StrKey","encodeContract","stellarAddressParser","isValidStellarAddress","isValidEd25519PublicKey","isValidContract","isValidMed25519PublicKey","isValidLiquidityPool","isValidClaimableBalance","isValidSignedPayload","stellarTextEncoder","TextEncoder","stellarAsciiToNormalized","bytes","stellarTextDecoder","TextDecoder","normalizedToStellarAscii","normalizedHex","stellarAddress","rawBytes","decodeEd25519PublicKey","decodeContract","decodeLiquidityPool","fullBytes","decodeClaimableBalance","subarray","normalized","STELLAR","tonAddressParser","parseTonAddress","numericalValue","normalizedToBigInt","bigintToAddress","addressToHex","tonToNormalized","tonAddress","TON","SOLANA","STARKNET","CANTON","cantonAddressParser","normalizedToUnpaddedString","CANTON_PARTY_ID_REGEX","CANTON_FINGERPRINT_HEX_LENGTH","CANTON_CONTRACT_ID_HEX_LENGTH","CANTON_TYPE_CONTRACT","CANTON_TYPE_PARTY","matchCantonPartyId","match","exec","hint","fingerprint","isCantonContractId","bare","trim0x","extractCantonAddress","party","hintHex","toLowerCase","normalizeCantonAddress","reconstructCantonAddress","body","typeByte","payload","padStart"],"mappings":"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","file":"7ZJ3AI3Q.js","sourcesContent":["import type { ChainName, ResolvedEncodingForChainName } from '@layerzerolabs/layerzero-definitions';\n\nimport { addressParser } from './index';\nimport type { NativeOrString } from './types';\n\nexport const getAddress = <T extends ChainName>(nativeAddress: NativeOrString<T>) => {\n return typeof nativeAddress === 'object' ? nativeAddress.nativeAddress : nativeAddress;\n};\n\nexport function assertNative<T extends ChainName>(\n nativeAddress: string | undefined,\n expectedChainName: T,\n): asserts 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}\n","import type { HexString } from '@layerzerolabs/common-chain-model';\nimport { normalizeHex } from '@layerzerolabs/common-chain-model';\nimport { hexToBytes, hexZeroPad, isHexString } from '@layerzerolabs/common-encoding-utils';\nimport type { ChainsByEncoding } from '@layerzerolabs/layerzero-definitions';\nimport { ChainName } from '@layerzerolabs/layerzero-definitions';\nimport { StaticChainConfigs } from '@layerzerolabs/static-chain-info';\n\nimport { addressParser } from './index';\nimport type { AddressParser } from './types';\nimport { AddressEncoding } from './types';\nimport { assertNative, getAddress } from './utils';\n\nexport const hexAddressParser = (\n chainName: ChainsByEncoding[HexString],\n): AddressParser<ChainsByEncoding[HexString]> => {\n return {\n validateNative: (nativeAddress): nativeAddress is HexString => {\n if (nativeAddress === undefined) return false;\n return isHexString(nativeAddress);\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n // we fetch here instead of storing by chain because some chains may not have this defined,\n // so we should only throw on those chains if they try to use these methods that need the native byte length\n const nativeByteLength = StaticChainConfigs.getAddressSizeInBytes(chainName);\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 if (address === undefined) return undefined as any;\n const nativeByteLength = StaticChainConfigs.getAddressSizeInBytes(chainName);\n return hexZeroPad(address as unknown as HexString, nativeByteLength);\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n return normalizeHex(address);\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n return hexToBytes(address);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n return hexZeroPad(address, 32);\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n normalizedToBytes32Hex: (address) => {\n if (address === undefined) return undefined as any;\n return hexZeroPad(address as unknown as HexString, 32);\n },\n normalizedToBytes32: (address) => {\n if (address === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));\n },\n bytes32ToNormalized: (bytes32Hex) => {\n if (bytes32Hex === undefined) return undefined as any;\n return normalizeHex(bytes32Hex);\n },\n parseNative: (nativeAddress) => {\n // Specific case to make tron a little less flaky, handle the 41 prefix\n if (chainName === ChainName.TRON && nativeAddress) {\n nativeAddress = nativeAddress.startsWith('41')\n ? `0x${nativeAddress.slice(2)}`\n : nativeAddress;\n }\n\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.HEX,\n };\n};\n","import { AccAddress } from '@initia/initia.js';\n\nimport type { HexString } from '@layerzerolabs/common-chain-model';\nimport { normalizeHex } from '@layerzerolabs/common-chain-model';\nimport { hexToBytes, hexZeroPad, isHexString } from '@layerzerolabs/common-encoding-utils';\nimport type { ChainsByEncoding, InitiaString } from '@layerzerolabs/layerzero-definitions';\n\nimport { addressParser } from './index';\nimport type { AddressParser } from './types';\nimport { AddressEncoding } from './types';\nimport { assertNative, getAddress } from './utils';\n\nexport const initiaAddressParser: (\n chainName: ChainsByEncoding[InitiaString],\n) => AddressParser<ChainsByEncoding[InitiaString]> = (chainName) => {\n return {\n validateNative: (nativeAddress): nativeAddress is InitiaString => {\n if (nativeAddress === undefined) {\n return false;\n }\n try {\n // Both formats are native for the chain and are used kind of randomly.\n return (\n isHexString(nativeAddress) ||\n /^(init)1(['qpzry9x8gf2tvdw0s3jn54khce6mua7l]{38,66})$/.test(nativeAddress)\n );\n } catch {\n return false;\n }\n },\n normalizedToNative: (address) => {\n if (address === undefined) {\n return undefined as any;\n }\n return {\n nativeAddress: AccAddress.fromHex(address as unknown as HexString) as InitiaString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return addressParser(chainName).normalizedToNative(address).nativeAddress;\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n if (isHexString(address)) {\n return normalizeHex(address);\n }\n return normalizeHex(AccAddress.toHex(nativeAddress.toString()) as HexString);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\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 if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n normalizedToBytes32Hex: (address) => {\n if (address === undefined) return undefined as any;\n return hexZeroPad(address as unknown as HexString, 32);\n },\n normalizedToBytes32: (address) => {\n if (address === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));\n },\n bytes32ToNormalized: (bytes32Hex) => {\n if (bytes32Hex === undefined) return undefined as any;\n return normalizeHex(bytes32Hex);\n },\n parseNative: (nativeAddress) => {\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.INITIA,\n };\n};\n","import bs58 from 'bs58';\n\nimport type { HexString } from '@layerzerolabs/common-chain-model';\nimport { normalizeHex } from '@layerzerolabs/common-chain-model';\nimport {\n bytesToHexPrefixed,\n hexToBytes,\n hexZeroPad,\n isBase58,\n} from '@layerzerolabs/common-encoding-utils';\nimport type { Base58String, ChainsByEncoding } from '@layerzerolabs/layerzero-definitions';\nimport { StaticChainConfigs } from '@layerzerolabs/static-chain-info';\n\nimport { addressParser } from './index';\nimport type { AddressParser } from './types';\nimport { AddressEncoding } from './types';\nimport { assertNative, getAddress } from './utils';\n\nexport const base58AddressParser = (\n chainName: ChainsByEncoding[Base58String],\n): AddressParser<ChainsByEncoding[Base58String]> => {\n return {\n validateNative: (nativeAddress): nativeAddress is Base58String => {\n if (nativeAddress === undefined) return false;\n return isBase58(nativeAddress);\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n const nativeByteLength = StaticChainConfigs.getAddressSizeInBytes(chainName);\n return {\n nativeAddress: bs58.encode(\n hexToBytes(hexZeroPad(address as unknown as HexString, nativeByteLength)),\n ) as Base58String,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return addressParser(chainName).normalizedToNative(address).nativeAddress;\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(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 if (nativeAddress === undefined) return undefined as any;\n return hexZeroPad(\n addressParser(chainName).nativeToNormalized(nativeAddress) as unknown as HexString,\n 32,\n );\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n return bs58.decode(address);\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n normalizedToBytes32Hex: (address) => {\n if (address === undefined) return undefined as any;\n return hexZeroPad(address as unknown as HexString, 32);\n },\n normalizedToBytes32: (address) => {\n if (address === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));\n },\n bytes32ToNormalized: (bytes32Hex) => {\n if (bytes32Hex === undefined) return undefined as any;\n return normalizeHex(bytes32Hex);\n },\n parseNative: (nativeAddress) => {\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.BASE58,\n };\n};\n","import type { HexString } from '@layerzerolabs/common-chain-model';\nimport { isHexString } from '@layerzerolabs/common-encoding-utils';\nimport type { ChainsByEncoding } from '@layerzerolabs/layerzero-definitions';\n\nimport { hexAddressParser } from './hex';\nimport { addressParser } from './index';\nimport type { AddressParser } from './types';\nimport { assertNative } from './utils';\n\n// Starknet addresses do not handle hex-zero padding, so we just return the address as is\nexport const starknetAddressParser = (\n chainName: ChainsByEncoding[HexString],\n): AddressParser<ChainsByEncoding[HexString]> => {\n return {\n ...hexAddressParser(chainName),\n validateNative: (nativeAddress): nativeAddress is HexString => {\n if (nativeAddress === undefined) return false;\n return isHexString(nativeAddress);\n },\n parseNative: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n // We can't trust starknet.js strings, they may actually be bigints!\n // so just convert everything to hex first, then convert to normalized\n nativeAddress = `0x${BigInt(nativeAddress).toString(16)}`;\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n return {\n nativeAddress: address,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return address;\n },\n };\n};\n","import { StrKey } from '@stellar/stellar-sdk';\n\nimport type { HexString, NormalizedHexString } from '@layerzerolabs/common-chain-model';\nimport { normalizeHex } from '@layerzerolabs/common-chain-model';\nimport { bytesToHexPrefixed, hexToBytes, isHexString } from '@layerzerolabs/common-encoding-utils';\nimport type {\n ChainType,\n InferChainNamesForChainType,\n StellarString,\n} from '@layerzerolabs/layerzero-definitions';\n\nimport { addressParser } from './index';\nimport type { AddressParser } from './types';\nimport { AddressEncoding } from './types';\nimport { assertNative, getAddress } from './utils';\n\nconst BYTES32_HEX_LENGTH = 64;\n\n/**\n * If the input is a 0x-prefixed bytes32 hex string (raw contract ID),\n * convert it to native Stellar base32 format. Only accepts exactly\n * 32 bytes (64 hex chars) to avoid silent corruption from other hex\n * representations (e.g. the UTF-8 \"normalized\" encoding which is 56 bytes,\n * or a 20-byte EVM address).\n */\nconst hexToStellarNative = (address: string | undefined): string | undefined => {\n if (!address || !address.startsWith('0x') || !isHexString(address)) return address;\n const hexPayload = address.slice(2);\n if (hexPayload.length !== BYTES32_HEX_LENGTH) {\n throw new Error(\n `Stellar hex address must be exactly 32 bytes (${BYTES32_HEX_LENGTH} hex chars), got ${hexPayload.length}: ${address}`,\n );\n }\n const raw = Buffer.from(hexPayload, 'hex');\n return StrKey.encodeContract(raw);\n};\n\nexport const stellarAddressParser: (\n chainName: InferChainNamesForChainType<ChainType.STELLAR>,\n) => AddressParser<InferChainNamesForChainType<ChainType.STELLAR>> = (chainName) => {\n /**\n * Validate if a string is a valid Stellar address.\n *\n * According to SEP-0023 (https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0023.md),\n * Stellar supports multiple address types encoded as base32 ASCII strings:\n * - Account addresses starting with 'G' (56 chars, Ed25519 public key)\n * - Contract addresses starting with 'C' (56 chars, contract ID)\n * - Muxed addresses starting with 'M' (69 chars, muxed account with ID)\n * - Liquidity pool addresses starting with 'L' (56 chars, pool ID)\n * - Claimable balance addresses starting with 'B' (56 chars, balance ID)\n * - Signed payload starting with 'P' (variable length)\n *\n * All addresses are stored in their native ASCII format to preserve type information.\n */\n const isValidStellarAddress = (address: string): boolean => {\n if (!address) return false;\n // Use the StrKey validation methods for all supported address types\n return (\n StrKey.isValidEd25519PublicKey(address) ||\n StrKey.isValidContract(address) ||\n StrKey.isValidMed25519PublicKey(address) ||\n StrKey.isValidLiquidityPool(address) ||\n StrKey.isValidClaimableBalance(address) ||\n StrKey.isValidSignedPayload(address)\n );\n };\n\n /**\n * Convert Stellar ASCII address to normalized hex by encoding the ASCII string as UTF-8 bytes.\n * This preserves the full address including type prefix and allows round-trip conversion.\n */\n const stellarTextEncoder = new TextEncoder();\n const stellarAsciiToNormalized = (address: string): NormalizedHexString => {\n // Convert ASCII address string to UTF-8 bytes, then to hex\n const bytes = stellarTextEncoder.encode(address);\n return normalizeHex(bytesToHexPrefixed(bytes));\n };\n\n /**\n * Convert normalized hex back to Stellar ASCII address by decoding UTF-8 bytes.\n */\n const stellarTextDecoder = new TextDecoder();\n const normalizedToStellarAscii = (normalizedHex: NormalizedHexString): string => {\n // Convert hex to bytes, then decode as UTF-8 string\n const bytes = hexToBytes(normalizedHex as unknown as HexString);\n return stellarTextDecoder.decode(bytes);\n };\n\n return {\n validateNative: (nativeAddress): nativeAddress is StellarString => {\n if (nativeAddress === undefined) return false;\n return isValidStellarAddress(nativeAddress);\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n // Decode normalized hex back to ASCII Stellar address\n const stellarAddress = normalizedToStellarAscii(address);\n return {\n nativeAddress: stellarAddress as StellarString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return normalizedToStellarAscii(address) as StellarString;\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n // Convert ASCII address to normalized hex\n return stellarAsciiToNormalized(address);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n // Decode the Stellar address to its raw 32-byte payload based on type\n let rawBytes: Buffer;\n if (StrKey.isValidEd25519PublicKey(address)) {\n // Account addresses (G...) - Ed25519 public key (32 bytes)\n rawBytes = StrKey.decodeEd25519PublicKey(address);\n } else if (StrKey.isValidContract(address)) {\n // Contract addresses (C...) - contract ID (32 bytes)\n rawBytes = StrKey.decodeContract(address);\n } else if (StrKey.isValidLiquidityPool(address)) {\n // Liquidity pool addresses (L...) - pool ID (32 bytes)\n rawBytes = StrKey.decodeLiquidityPool(address);\n } else if (StrKey.isValidClaimableBalance(address)) {\n // Claimable balance addresses (B...) - balance ID (33 bytes: 1-byte version + 32-byte hash)\n // Per SEP-0023: first byte is the claimable balance type (0x00 = V0), followed by 32-byte SHA256 hash\n const fullBytes = StrKey.decodeClaimableBalance(address);\n rawBytes = fullBytes.subarray(1); // Skip the first byte (version), return the 32-byte hash\n } else if (StrKey.isValidMed25519PublicKey(address)) {\n // Muxed addresses (M...) contain additional data beyond 32 bytes\n throw new Error(\n 'nativeToBytes32 is not supported for Stellar muxed addresses (M...)',\n );\n } else if (StrKey.isValidSignedPayload(address)) {\n // Signed payload (P...) has variable length\n throw new Error(\n 'nativeToBytes32 is not supported for Stellar signed payload addresses (P...)',\n );\n } else {\n throw new Error(`Unknown Stellar address type: ${address}`);\n }\n return bytesToHexPrefixed(rawBytes);\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n // Convert ASCII address to UTF-8 bytes\n return stellarTextEncoder.encode(address);\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n // Use nativeToBytes32Hex and convert to Uint8Array\n const hex = addressParser(chainName).nativeToBytes32Hex(nativeAddress);\n return hexToBytes(hex);\n },\n normalizedToBytes32Hex: (address) => {\n if (address === undefined) return undefined as any;\n // Stellar normalized hex is UTF-8 of ASCII address (56 bytes), not raw bytes.\n // Route through native string to extract the raw 32-byte StrKey payload.\n return addressParser(chainName).nativeToBytes32Hex(\n addressParser(chainName).normalizedToNativeString(address),\n );\n },\n normalizedToBytes32: (address) => {\n if (address === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));\n },\n bytes32ToNormalized: (bytes32Hex) => {\n if (bytes32Hex === undefined) return undefined as any;\n // Always assumes contract address type — G-address→bytes32 is a lossy upcast\n return stellarAsciiToNormalized(\n StrKey.encodeContract(Buffer.from(hexToBytes(bytes32Hex))),\n );\n },\n parseNative: (nativeAddress) => {\n nativeAddress = hexToStellarNative(nativeAddress);\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n nativeAddress = hexToStellarNative(nativeAddress);\n assertNative(nativeAddress, chainName);\n const normalized = addressParser(chainName).nativeToNormalized(nativeAddress);\n return normalized as unknown as HexString;\n },\n encoding: AddressEncoding.STELLAR,\n };\n};\n","import { addressToHex, bigintToAddress, parseTonAddress } from '@layerzerolabs/address-utils-ton';\nimport type { HexString } from '@layerzerolabs/common-chain-model';\nimport { normalizeHex } from '@layerzerolabs/common-chain-model';\nimport { hexToBytes, hexZeroPad } from '@layerzerolabs/common-encoding-utils';\nimport type { ChainType, InferChainNamesForChainType } from '@layerzerolabs/layerzero-definitions';\n\nimport { addressParser } from './index';\nimport type { AddressParser } from './types';\nimport { AddressEncoding } from './types';\nimport { assertNative, getAddress } from './utils';\n\nexport const tonAddressParser: (\n chainName: InferChainNamesForChainType<ChainType.TON>,\n) => AddressParser<InferChainNamesForChainType<ChainType.TON>> = (chainName) => {\n return {\n validateNative: (nativeAddress): nativeAddress is HexString => {\n if (nativeAddress === undefined) {\n return false;\n }\n try {\n parseTonAddress(nativeAddress);\n return true;\n } catch {\n return false;\n }\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n const numericalValue = addressParser.normalizedToBigInt(address);\n return {\n // TODO: use Base64 native format instead of hex for TON addresses\n nativeAddress: bigintToAddress(numericalValue).toString() as HexString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return addressParser(chainName).normalizedToNative(address).nativeAddress;\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n return normalizeHex(addressToHex(address));\n },\n nativeToBytes32Hex: (nativeAddress) => {\n // naturally ton is 32 bytes, pad it anyway\n if (nativeAddress === undefined) return undefined as any;\n return hexZeroPad(\n addressParser(chainName).nativeToNormalized(nativeAddress) as unknown as HexString,\n 32,\n );\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n normalizedToBytes32Hex: (address) => {\n if (address === undefined) return undefined as any;\n return hexZeroPad(address as unknown as HexString, 32);\n },\n normalizedToBytes32: (address) => {\n if (address === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));\n },\n bytes32ToNormalized: (bytes32Hex) => {\n if (bytes32Hex === undefined) return undefined as any;\n return normalizeHex(bytes32Hex);\n },\n parseNative: (nativeAddress) => {\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n tonToNormalized: (tonAddress) => {\n return addressParser(chainName).parseNative(addressToHex(tonAddress));\n },\n encoding: AddressEncoding.TON,\n };\n};\n","import type { HexString, NormalizedHexString } from '@layerzerolabs/common-chain-model';\nimport type { NativeAddress } from '@layerzerolabs/layerzero-definitions';\nimport { ChainName } from '@layerzerolabs/layerzero-definitions';\n\nimport { cantonAddressParser } from './canton';\nimport { hexAddressParser } from './hex';\nimport { initiaAddressParser } from './initia';\nimport { base58AddressParser } from './solana';\nimport { starknetAddressParser } from './starknet';\nimport { stellarAddressParser } from './stellar';\nimport { tonAddressParser } from './ton';\nimport type { AddressParser } from './types';\n\nexport { cantonAddressParser } from './canton';\nexport { hexAddressParser } from './hex';\nexport { initiaAddressParser } from './initia';\nexport { base58AddressParser } from './solana';\nexport { starknetAddressParser } from './starknet';\nexport { stellarAddressParser } from './stellar';\nexport { tonAddressParser } from './ton';\nexport type {\n AddressParser,\n ExtensionByChainType,\n InferExtensionByChainName,\n NativeOrString,\n} from './types';\nexport { AddressEncoding } from './types';\n\nexport function addressParser<T extends ChainName>(chainName: T): AddressParser<T> {\n // TODO: find a way to narrow generics to avoid type cast\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 if (chainName === ChainName.INITIA)\n return initiaAddressParser(chainName) as unknown as AddressParser<T>;\n if (chainName === ChainName.STELLAR)\n return stellarAddressParser(chainName) as unknown as AddressParser<T>;\n if (chainName === ChainName.STARKNET)\n return starknetAddressParser(chainName) as unknown as AddressParser<T>;\n if (chainName === ChainName.CANTON)\n return cantonAddressParser(chainName) as unknown as AddressParser<T>;\n return hexAddressParser(chainName) as unknown as AddressParser<T>;\n}\n\nexport namespace addressParser {\n export const normalizedToUnpaddedString = (address: NormalizedHexString) => {\n return address.toString() as HexString;\n };\n\n export const normalizedToBigInt = (address: NormalizedHexString) => {\n return BigInt(address as unknown as HexString);\n };\n\n export const parseNative = (nativeAddress: NativeAddress) => {\n return addressParser(nativeAddress.chainName).parseNative(nativeAddress.nativeAddress);\n };\n}\n","import type { HexString, NormalizedHexString } from '@layerzerolabs/common-chain-model';\nimport { normalizeHex } from '@layerzerolabs/common-chain-model';\nimport { hexToBytes, trim0x } from '@layerzerolabs/common-encoding-utils';\nimport type {\n CantonString,\n ChainType,\n InferChainNamesForChainType,\n} from '@layerzerolabs/layerzero-definitions';\n\nimport { addressParser } from './index';\nimport type { AddressParser } from './types';\nimport { AddressEncoding } from './types';\n\n/**\n * Canton address formats and normalization.\n *\n * Canton has exactly two native address forms:\n * - Contract ID: `00<68 bytes hex>` (69 bytes total, V1 prefix `00`)\n * Normalized: `0x<contract_id_hex>00` — trailing `00` type discriminator\n *\n * - Party ID: `<hint>::1220<fingerprint>` (variable length)\n * Normalized: `0x<1220><fingerprint><hintHex>01` — fingerprint first (fixed 68 hex), then UTF-8 hex of hint, trailing `01`\n *\n * Reconstruction reads the last byte (2 hex chars) of the body:\n * - `00` → contract ID (strip trailing `00`, pad to 138 hex chars to restore leading zeros)\n * - `01` → party ID (strip trailing `01`, split at offset 68 for hint)\n * Anything else is not a Canton-native address and is rejected. Protocol-level\n * identifiers (e.g. a ver-endpoint global address) are not Canton addresses and\n * must be handled with chain-agnostic helpers (`normalizeHex`) by the caller, not\n * routed through this parser.\n *\n * The trailing discriminator survives normalizeHex (which only strips leading zeros),\n * avoiding ambiguity when a contract ID starting with `001220...` would otherwise\n * be indistinguishable from a party ID after leading-zero stripping.\n *\n * `1220` is the multihash prefix (0x12 = SHA-256, 0x20 = 32 bytes).\n */\nconst CANTON_PARTY_ID_REGEX = /^(.+)::([0-9a-fA-F]+)$/;\nconst CANTON_FINGERPRINT_HEX_LENGTH = 68; // '1220' (4) + SHA-256 hex (64)\nconst CANTON_CONTRACT_ID_HEX_LENGTH = 138; // 69 bytes\nconst CANTON_TYPE_CONTRACT = '00';\nconst CANTON_TYPE_PARTY = '01';\n\nconst matchCantonPartyId = (nativeAddress: string) => {\n const match = CANTON_PARTY_ID_REGEX.exec(nativeAddress);\n if (!match) return null;\n const [, hint, fingerprint] = match;\n return { hint, fingerprint };\n};\n\nconst isCantonContractId = (nativeAddress: string): boolean => {\n const bare = trim0x(nativeAddress);\n return bare.length === CANTON_CONTRACT_ID_HEX_LENGTH && bare.startsWith('00');\n};\n\nexport const cantonAddressParser = (\n chainName: InferChainNamesForChainType<ChainType.CANTON>,\n): AddressParser<InferChainNamesForChainType<ChainType.CANTON>> => {\n /** Returns raw hex for bytes operations (no type discriminator). */\n const extractCantonAddress = (nativeAddress: string): string => {\n const party = matchCantonPartyId(nativeAddress);\n if (party) {\n const hintHex = Buffer.from(party.hint, 'utf-8').toString('hex');\n return `0x${party.fingerprint}${hintHex}`;\n }\n const hex = nativeAddress.startsWith('0x') ? nativeAddress : `0x${nativeAddress}`;\n return hex.toLowerCase();\n };\n\n /**\n * Normalize a Canton native address. A party id and a `00`-prefixed contract id\n * get a trailing type discriminator (`01` / `00`). Anything else is not a\n * Canton-native address and is rejected — callers holding protocol-level\n * identifiers (e.g. a ver-endpoint global address) must use chain-agnostic\n * `normalizeHex` directly instead of this parser.\n */\n const normalizeCantonAddress = (nativeAddress: string): NormalizedHexString => {\n const party = matchCantonPartyId(nativeAddress);\n if (party) {\n const hintHex = Buffer.from(party.hint, 'utf-8').toString('hex');\n return normalizeHex(\n `0x${party.fingerprint}${hintHex}${CANTON_TYPE_PARTY}` as HexString,\n );\n }\n if (isCantonContractId(nativeAddress)) {\n return normalizeHex(`0x${trim0x(nativeAddress)}${CANTON_TYPE_CONTRACT}` as HexString);\n }\n throw new Error(\n `Not a Canton-native address (expected party id or contract id): ${nativeAddress}`,\n );\n };\n\n const reconstructCantonAddress = (hex: string): string => {\n const body = hex.startsWith('0x') ? hex.slice(2) : hex;\n const typeByte = body.slice(-2);\n const payload = body.slice(0, -2);\n\n if (typeByte === CANTON_TYPE_PARTY) {\n const fingerprint = payload.slice(0, CANTON_FINGERPRINT_HEX_LENGTH);\n const hintHex = payload.slice(CANTON_FINGERPRINT_HEX_LENGTH);\n const hint = Buffer.from(hintHex, 'hex').toString('utf-8');\n return `${hint}::${fingerprint}`;\n }\n\n if (typeByte === CANTON_TYPE_CONTRACT) {\n // Contract ID: pad to 138 hex chars to restore leading zeros stripped by normalizeHex\n return payload.padStart(CANTON_CONTRACT_ID_HEX_LENGTH, '0');\n }\n\n throw new Error(\n `Cannot reconstruct Canton address: unknown type discriminator '${typeByte}' in ${hex}`,\n );\n };\n\n return {\n validateNative: (nativeAddress): nativeAddress is CantonString => {\n if (nativeAddress === undefined) return false;\n return matchCantonPartyId(nativeAddress) !== null || isCantonContractId(nativeAddress);\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n return {\n nativeAddress: reconstructCantonAddress(\n address as unknown as string,\n ) as CantonString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return reconstructCantonAddress(address as unknown as string) as CantonString;\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return normalizeCantonAddress(nativeAddress as string);\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = extractCantonAddress(nativeAddress as string) as HexString;\n return hexToBytes(address);\n },\n // Canton addresses (party ids / contract ids) are not bytes32, so every\n // bytes32 conversion is unsupported and returns undefined.\n nativeToBytes32Hex: () => undefined as any,\n nativeToBytes32: () => undefined as any,\n normalizedToBytes32Hex: () => undefined as any,\n normalizedToBytes32: () => undefined as any,\n bytes32ToNormalized: () => undefined as any,\n parseNative: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return normalizeCantonAddress(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.CANTON,\n };\n};\n"]}