@layerzerolabs/chain-utils 1.2.38 → 1.2.40
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/{VJ4WDAQX.js → OQS376LP.js} +4 -4
- package/dist/{VJ4WDAQX.js.map → OQS376LP.js.map} +1 -1
- package/dist/{RNN2KHTG.js → PH5SYXNY.js} +2 -2
- package/dist/PH5SYXNY.js.map +1 -0
- package/dist/addressParser/canton.js +2 -2
- package/dist/addressParser/hex.js +2 -2
- package/dist/addressParser/index.js +2 -2
- package/dist/addressParser/initia.js +2 -2
- package/dist/addressParser/sentinels.js +2 -2
- package/dist/addressParser/solana.js +2 -2
- package/dist/addressParser/starknet.js +2 -2
- package/dist/addressParser/stellar.js +2 -2
- package/dist/addressParser/ton.js +2 -2
- package/dist/addressParser/types.d.ts +1 -1
- package/dist/addressParser/types.d.ts.map +1 -1
- package/dist/addressParser/types.js +1 -1
- package/dist/addressParser/utils.js +2 -2
- package/dist/index.js +2 -2
- package/package.json +11 -10
- package/dist/RNN2KHTG.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { __name, AddressEncoding } from './
|
|
2
|
-
import { parseCantonDeferredValue, isCantonAddress, cantonPartyAddress, cantonCidAddress, CANTON_CID_ADDRESS_PREFIX, CANTON_PARTY_ADDRESS_PREFIX, CANTON_DEFERRED_VALUE_PREFIX, CANTON_DEFERRED_VALUE_SUFFIX } from '@layerzerolabs/common-canton';
|
|
1
|
+
import { __name, AddressEncoding } from './PH5SYXNY.js';
|
|
2
|
+
import { parseCantonDeferredValue, isCantonAddress, cantonPartyAddress, cantonCidAddress, CANTON_CID_ADDRESS_PREFIX, CANTON_PARTY_ADDRESS_PREFIX, CANTON_DEFERRED_VALUE_PREFIX, CANTON_DEFERRED_VALUE_SUFFIX } from '@layerzerolabs/common-canton/browser';
|
|
3
3
|
import { normalizeHex } from '@layerzerolabs/common-chain-model';
|
|
4
4
|
import { hexToBytes, hexZeroPad, base58ToBytes, bytesToHexPrefixed, bytesToBase58, isBase58, isHexString, ensure0xPrefixed, bigIntToHex, hexToUtf8, utf8ToHex, trim0x, tileHex } from '@layerzerolabs/common-encoding-utils';
|
|
5
5
|
import { ChainName } from '@layerzerolabs/layerzero-definitions';
|
|
@@ -632,5 +632,5 @@ var cantonAddressParser = /* @__PURE__ */ __name((chainName) => {
|
|
|
632
632
|
}, "cantonAddressParser");
|
|
633
633
|
|
|
634
634
|
export { addressParser, assertNative, base58AddressParser, cantonAddressParser, cantonSentinelNormalizedFromLabel, decodeCantonRefAddress, encodeCantonRefAddress, getAddress, hexAddressParser, initiaAddressParser, sentinelNativeFromLabel, sentinelNormalizedFromLabel, starknetAddressParser, stellarAddressParser, stellarSentinelNormalizedFromLabel, tonAddressParser };
|
|
635
|
-
//# sourceMappingURL=
|
|
636
|
-
//# sourceMappingURL=
|
|
635
|
+
//# sourceMappingURL=OQS376LP.js.map
|
|
636
|
+
//# sourceMappingURL=OQS376LP.js.map
|
|
@@ -1 +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/sentinels.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","stellarTextEncoder","TextEncoder","stellarAsciiToNormalized","bytes","encode","stellarNormalizedFromBytes32Hex","StrKey","encodeContract","Buffer","from","stellarSentinelNormalizedFromLabel","_chainName","label","tileHex","hexToStellarNative","hexPayload","length","raw","stellarAddressParser","isValidStellarAddress","isValidEd25519PublicKey","isValidContract","isValidMed25519PublicKey","isValidLiquidityPool","isValidClaimableBalance","isValidSignedPayload","stellarTextDecoder","TextDecoder","normalizedToStellarAscii","normalizedHex","decode","stellarAddress","rawBytes","decodeEd25519PublicKey","decodeContract","decodeLiquidityPool","fullBytes","decodeClaimableBalance","subarray","normalized","STELLAR","tonAddressParser","parseTonAddress","numericalValue","normalizedToBigInt","bigintToAddress","addressToHex","tonToNormalized","tonAddress","TON","tiledSentinelNormalizedFromLabel","byteLen","assertSentinelLabel","body","trim0x","assertSentinelRoundTrips","parser","roundTripped","resolveSentinelNormalizedFromLabel","CANTON","cantonSentinelNormalizedFromLabel","buildSentinelNormalizedFromLabel","resolvedFn","sentinelNormalizedFromLabel","sentinelNativeFromLabel","SOLANA","STARKNET","cantonAddressParser","normalizedToUnpaddedString","CANTON_FINGERPRINT_HEX_LENGTH","CANTON_CONTRACT_ID_HEX_LENGTH","CANTON_TYPE_CONTRACT","CANTON_TYPE_PARTY","CANTON_TYPE_DEFERRED","parsePartyAddress","addr","inner","CANTON_PARTY_ADDRESS_PREFIX","CANTON_DEFERRED_VALUE_SUFFIX","sep","lastIndexOf","hint","fingerprint","parseCidAddress","CANTON_CID_ADDRESS_PREFIX","deferredInner","sentinel","CANTON_DEFERRED_VALUE_PREFIX","encodeCantonRefAddress","utf8ToHex","decodeCantonRefAddress","hexToUtf8","extractCantonAddress","cid","toLowerCase","normalizeCantonAddress","endsWith","reconstructCantonAddress","typeByte","payload","hintHex","cantonPartyAddress","cantonCidAddress","padStart","cantonAddressToParty","cantonAddressToCid","isCantonAddress","String","normalizedToParty","normalizedToCid","normalizedToDeferredValue","value","parseCantonDeferredValue"],"mappings":"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","file":"VJ4WDAQX.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 {\n bytesToHexPrefixed,\n hexToBytes,\n isHexString,\n tileHex,\n} from '@layerzerolabs/common-encoding-utils';\nimport type {\n ChainName,\n ChainType,\n InferChainNamesForChainType,\n StellarString,\n} from '@layerzerolabs/layerzero-definitions';\n\nimport { addressParser } from './index';\nimport type { AddressParser, AddressSentinelNormalizedFromLabel } from './types';\nimport { AddressEncoding } from './types';\nimport { assertNative, getAddress } from './utils';\n\nconst BYTES32_HEX_LENGTH = 64;\n\nconst stellarTextEncoder = new TextEncoder();\n\n/** Convert Stellar ASCII address to normalized hex by encoding the ASCII string as UTF-8 bytes. */\nconst stellarAsciiToNormalized = (address: string): NormalizedHexString => {\n const bytes = stellarTextEncoder.encode(address);\n return normalizeHex(bytesToHexPrefixed(bytes));\n};\n\nconst stellarNormalizedFromBytes32Hex = (bytes32Hex: HexString): NormalizedHexString =>\n stellarAsciiToNormalized(StrKey.encodeContract(Buffer.from(hexToBytes(bytes32Hex))));\n\n/** Deterministic Stellar contract sentinel for test fixtures. */\n// chainName unused — required by AddressSentinelNormalizedFromLabel; wired from sentinels.ts\nexport const stellarSentinelNormalizedFromLabel: AddressSentinelNormalizedFromLabel<\n typeof ChainName.STELLAR\n> = (_chainName, label) => {\n return stellarNormalizedFromBytes32Hex(tileHex(label, BYTES32_HEX_LENGTH));\n};\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 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 stellarNormalizedFromBytes32Hex(bytes32Hex);\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 NormalizedHexString, normalizeHex } from '@layerzerolabs/common-chain-model';\nimport { tileHex, trim0x } from '@layerzerolabs/common-encoding-utils';\nimport { ChainName, type ResolvedEncodingForChainName } from '@layerzerolabs/layerzero-definitions';\nimport { StaticChainConfigs } from '@layerzerolabs/static-chain-info';\n\nimport { cantonSentinelNormalizedFromLabel } from './canton';\nimport { addressParser } from './index';\nimport { stellarSentinelNormalizedFromLabel } from './stellar';\nimport type { AddressParser, AddressSentinelNormalizedFromLabel } from './types';\n\n/** Default sentinel: tile `label` across the chain's native address byte width. */\nconst tiledSentinelNormalizedFromLabel = (\n chainName: ChainName,\n label: string,\n): NormalizedHexString => {\n const byteLen = StaticChainConfigs.getAddressSizeInBytes(chainName);\n return normalizeHex(tileHex(label, byteLen * 2));\n};\n\nconst assertSentinelLabel = (label: string): void => {\n const body = trim0x(label);\n if (body.startsWith('0')) {\n throw new Error(\n 'Sentinel labels must not start with a leading zero nibble; use chain zero constants for zero addresses',\n );\n }\n};\n\nconst assertSentinelRoundTrips = <T extends ChainName>(\n chainName: T,\n parser: AddressParser<T>,\n label: string,\n normalized: NormalizedHexString,\n): NormalizedHexString => {\n const roundTripped = parser.parseNative(parser.normalizedToNativeString(normalized));\n if (roundTripped !== normalized) {\n throw new Error(`Sentinel label \"${label}\" does not round-trip on ${chainName}`);\n }\n return roundTripped;\n};\n\n/** Resolve the per-chain sentinel label → normalized hex implementation. */\nconst resolveSentinelNormalizedFromLabel = <T extends ChainName>(\n chainName: T,\n): AddressSentinelNormalizedFromLabel<T> => {\n if (chainName === ChainName.CANTON) {\n return cantonSentinelNormalizedFromLabel as AddressSentinelNormalizedFromLabel<T>;\n }\n if (chainName === ChainName.STELLAR) {\n return stellarSentinelNormalizedFromLabel as AddressSentinelNormalizedFromLabel<T>;\n }\n return tiledSentinelNormalizedFromLabel as AddressSentinelNormalizedFromLabel<T>;\n};\n\nconst buildSentinelNormalizedFromLabel = <T extends ChainName>(\n chainName: T,\n label: string,\n parser: AddressParser<T>,\n): NormalizedHexString => {\n assertSentinelLabel(label);\n const resolvedFn = resolveSentinelNormalizedFromLabel(chainName);\n return assertSentinelRoundTrips(chainName, parser, label, resolvedFn(chainName, label));\n};\n\n/**\n * Deterministic sentinel address in normalized hex from a short hex label.\n *\n * @param chainName - Target chain; selects default tiling vs Canton/Stellar specialty builders.\n * @param label - Non-empty even-length hex (optional `0x` stripped). Must satisfy {@link tileHex}\n * and must not start with a leading zero nibble.\n * @throws If `label` is invalid, starts with a leading zero nibble, or does not round-trip on `chainName`.\n */\nexport const sentinelNormalizedFromLabel = <T extends ChainName>(\n chainName: T,\n label: string,\n): NormalizedHexString =>\n buildSentinelNormalizedFromLabel(chainName, label, addressParser(chainName));\n\n/**\n * Deterministic sentinel address in the chain's native encoding.\n * Native is derived from {@link sentinelNormalizedFromLabel} via the chain parser.\n *\n * @param chainName - Target chain; native form follows that chain's encoding (hex, base58, TON user format, etc.).\n * @param label - Same rules as {@link sentinelNormalizedFromLabel}.\n * @throws Same as {@link sentinelNormalizedFromLabel}.\n */\nexport const sentinelNativeFromLabel = <T extends ChainName>(\n chainName: T,\n label: string,\n): ResolvedEncodingForChainName<T> => {\n const parser = addressParser(chainName);\n return parser.normalizedToNativeString(\n buildSentinelNormalizedFromLabel(chainName, label, parser),\n );\n};\n","import type { HexString, NormalizedHexString } from '@layerzerolabs/common-chain-model';\nimport { ChainName, type NativeAddress } 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, decodeCantonRefAddress, encodeCantonRefAddress } 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\n/**\n * Chain-scoped address parser for encoding conversions.\n *\n * For deterministic test/harness sentinel addresses from hex labels, use\n * {@link sentinelNativeFromLabel} and {@link sentinelNormalizedFromLabel}.\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\nexport { sentinelNativeFromLabel, sentinelNormalizedFromLabel } from './sentinels';\n","import {\n CANTON_CID_ADDRESS_PREFIX,\n CANTON_DEFERRED_VALUE_PREFIX,\n CANTON_DEFERRED_VALUE_SUFFIX,\n CANTON_PARTY_ADDRESS_PREFIX,\n type CantonAddress,\n cantonCidAddress,\n cantonPartyAddress,\n isCantonAddress,\n parseCantonDeferredValue,\n} from '@layerzerolabs/common-canton';\nimport type { HexString, NormalizedHexString } from '@layerzerolabs/common-chain-model';\nimport { normalizeHex } from '@layerzerolabs/common-chain-model';\nimport {\n hexToBytes,\n hexToUtf8,\n tileHex,\n trim0x,\n utf8ToHex,\n} from '@layerzerolabs/common-encoding-utils';\nimport type {\n CantonString,\n ChainName,\n ChainType,\n InferChainNamesForChainType,\n} from '@layerzerolabs/layerzero-definitions';\n\nimport { addressParser } from './index';\nimport type { AddressParser, AddressSentinelNormalizedFromLabel } from './types';\nimport { AddressEncoding } from './types';\n\n// --- Canton address encoding constants ---\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';\nconst CANTON_TYPE_DEFERRED = '02';\n\n// Internal sentinel-format parsers\nconst parsePartyAddress = (addr: CantonAddress): { hint: string; fingerprint: string } => {\n const inner = addr.slice(\n CANTON_PARTY_ADDRESS_PREFIX.length,\n -CANTON_DEFERRED_VALUE_SUFFIX.length,\n );\n const sep = inner.lastIndexOf('::');\n return { hint: inner.slice(0, sep), fingerprint: inner.slice(sep + 2) };\n};\n\nconst parseCidAddress = (addr: CantonAddress): string =>\n addr.slice(CANTON_CID_ADDRESS_PREFIX.length, -CANTON_DEFERRED_VALUE_SUFFIX.length);\n\nconst deferredInner = (sentinel: string): string =>\n sentinel.slice(CANTON_DEFERRED_VALUE_PREFIX.length, -CANTON_DEFERRED_VALUE_SUFFIX.length);\n\nexport const encodeCantonRefAddress = (sentinel: string): NormalizedHexString =>\n normalizeHex(`0x${utf8ToHex(deferredInner(sentinel))}${CANTON_TYPE_DEFERRED}` as HexString);\n\nexport const decodeCantonRefAddress = (address: string): string | undefined => {\n const body = address.startsWith('0x') ? address.slice(2) : address;\n if (body.slice(-2) !== CANTON_TYPE_DEFERRED) return undefined;\n const inner = hexToUtf8(body.slice(0, -2));\n return `${CANTON_DEFERRED_VALUE_PREFIX}${inner}${CANTON_DEFERRED_VALUE_SUFFIX}`;\n};\n\nconst extractCantonAddress = (nativeAddress: string): string => {\n if (nativeAddress.startsWith(CANTON_PARTY_ADDRESS_PREFIX)) {\n const { fingerprint, hint } = parsePartyAddress(nativeAddress as CantonAddress);\n return `0x${fingerprint}${utf8ToHex(hint)}`;\n }\n if (nativeAddress.startsWith(CANTON_CID_ADDRESS_PREFIX)) {\n const cid = parseCidAddress(nativeAddress as CantonAddress);\n return (cid.startsWith('0x') ? cid : `0x${cid}`).toLowerCase();\n }\n if (nativeAddress.startsWith(CANTON_DEFERRED_VALUE_PREFIX)) {\n return `0x${utf8ToHex(deferredInner(nativeAddress))}`;\n }\n throw new Error(`Not a CantonAddress: ${nativeAddress}`);\n};\n\nconst normalizeCantonAddress = (nativeAddress: string): NormalizedHexString => {\n if (nativeAddress.startsWith(CANTON_PARTY_ADDRESS_PREFIX)) {\n const { fingerprint, hint } = parsePartyAddress(nativeAddress as CantonAddress);\n return normalizeHex(`0x${fingerprint}${utf8ToHex(hint)}${CANTON_TYPE_PARTY}` as HexString);\n }\n if (nativeAddress.startsWith(CANTON_CID_ADDRESS_PREFIX)) {\n const cid = parseCidAddress(nativeAddress as CantonAddress);\n return normalizeHex(`0x${trim0x(cid)}${CANTON_TYPE_CONTRACT}` as HexString);\n }\n if (\n nativeAddress.startsWith(CANTON_DEFERRED_VALUE_PREFIX) &&\n nativeAddress.endsWith(CANTON_DEFERRED_VALUE_SUFFIX)\n ) {\n return encodeCantonRefAddress(nativeAddress);\n }\n throw new Error(`Not a CantonAddress: ${nativeAddress}`);\n};\n\nconst reconstructCantonAddress = (hex: string): CantonAddress => {\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 return cantonPartyAddress(hexToUtf8(hintHex), fingerprint);\n }\n if (typeByte === CANTON_TYPE_CONTRACT) {\n return cantonCidAddress(payload.padStart(CANTON_CONTRACT_ID_HEX_LENGTH, '0'));\n }\n if (typeByte === CANTON_TYPE_DEFERRED) {\n return decodeCantonRefAddress(hex)! as CantonAddress;\n }\n throw new Error(\n `Cannot reconstruct Canton address: unknown type discriminator '${typeByte}' in ${hex}`,\n );\n};\n\nconst cantonAddressToParty = (addr: CantonAddress): string => {\n if (!addr.startsWith(CANTON_PARTY_ADDRESS_PREFIX)) {\n throw new Error(`Not a canton party address: ${addr}`);\n }\n const { hint, fingerprint } = parsePartyAddress(addr);\n return `${hint}::${fingerprint}`;\n};\n\nconst cantonAddressToCid = (addr: CantonAddress): string => {\n if (!addr.startsWith(CANTON_CID_ADDRESS_PREFIX)) {\n throw new Error(`Not a canton contract ID address: ${addr}`);\n }\n return parseCidAddress(addr);\n};\n\n/**\n * Deterministic Canton party sentinel for test fixtures.\n * Leading-zero labels are rejected upstream in {@link sentinelNormalizedFromLabel}.\n */\n// chainName unused — required by AddressSentinelNormalizedFromLabel; wired from sentinels.ts\nexport const cantonSentinelNormalizedFromLabel: AddressSentinelNormalizedFromLabel<\n typeof ChainName.CANTON\n> = (_chainName, label) => {\n const fingerprint = `1220${trim0x(tileHex(label, 64))}`;\n return normalizeHex(`0x${fingerprint}${utf8ToHex(label)}${CANTON_TYPE_PARTY}` as HexString);\n};\n\nexport const cantonAddressParser = (\n chainName: InferChainNamesForChainType<ChainType.CANTON>,\n): AddressParser<InferChainNamesForChainType<ChainType.CANTON>> => {\n return {\n validateNative: (nativeAddress): nativeAddress is CantonString =>\n nativeAddress !== undefined && isCantonAddress(nativeAddress),\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n return {\n nativeAddress: reconstructCantonAddress(String(address)) as unknown as CantonString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return reconstructCantonAddress(String(address)) as unknown 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 nativeToBytes32Hex: () => {\n throw new Error('Canton addresses do not support bytes32 format');\n },\n nativeToBytes32: () => {\n throw new Error('Canton addresses do not support bytes32 format');\n },\n normalizedToBytes32Hex: () => {\n throw new Error('Canton addresses do not support bytes32 format');\n },\n normalizedToBytes32: () => {\n throw new Error('Canton addresses do not support bytes32 format');\n },\n bytes32ToNormalized: () => {\n throw new Error('Canton addresses do not support bytes32 format');\n },\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 normalizedToParty: (normalized) => {\n const addr = reconstructCantonAddress(String(normalized));\n return cantonAddressToParty(addr);\n },\n normalizedToCid: (normalized) => {\n const addr = reconstructCantonAddress(String(normalized));\n return cantonAddressToCid(addr);\n },\n normalizedToDeferredValue: (normalized) => {\n const addr = reconstructCantonAddress(String(normalized));\n const value = parseCantonDeferredValue(addr);\n if (!value) throw new Error(`Not a canton deferred ref address: ${String(normalized)}`);\n return value;\n },\n encoding: AddressEncoding.CANTON,\n };\n};\n"]}
|
|
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/sentinels.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","stellarTextEncoder","TextEncoder","stellarAsciiToNormalized","bytes","encode","stellarNormalizedFromBytes32Hex","StrKey","encodeContract","Buffer","from","stellarSentinelNormalizedFromLabel","_chainName","label","tileHex","hexToStellarNative","hexPayload","length","raw","stellarAddressParser","isValidStellarAddress","isValidEd25519PublicKey","isValidContract","isValidMed25519PublicKey","isValidLiquidityPool","isValidClaimableBalance","isValidSignedPayload","stellarTextDecoder","TextDecoder","normalizedToStellarAscii","normalizedHex","decode","stellarAddress","rawBytes","decodeEd25519PublicKey","decodeContract","decodeLiquidityPool","fullBytes","decodeClaimableBalance","subarray","normalized","STELLAR","tonAddressParser","parseTonAddress","numericalValue","normalizedToBigInt","bigintToAddress","addressToHex","tonToNormalized","tonAddress","TON","tiledSentinelNormalizedFromLabel","byteLen","assertSentinelLabel","body","trim0x","assertSentinelRoundTrips","parser","roundTripped","resolveSentinelNormalizedFromLabel","CANTON","cantonSentinelNormalizedFromLabel","buildSentinelNormalizedFromLabel","resolvedFn","sentinelNormalizedFromLabel","sentinelNativeFromLabel","SOLANA","STARKNET","cantonAddressParser","normalizedToUnpaddedString","CANTON_FINGERPRINT_HEX_LENGTH","CANTON_CONTRACT_ID_HEX_LENGTH","CANTON_TYPE_CONTRACT","CANTON_TYPE_PARTY","CANTON_TYPE_DEFERRED","parsePartyAddress","addr","inner","CANTON_PARTY_ADDRESS_PREFIX","CANTON_DEFERRED_VALUE_SUFFIX","sep","lastIndexOf","hint","fingerprint","parseCidAddress","CANTON_CID_ADDRESS_PREFIX","deferredInner","sentinel","CANTON_DEFERRED_VALUE_PREFIX","encodeCantonRefAddress","utf8ToHex","decodeCantonRefAddress","hexToUtf8","extractCantonAddress","cid","toLowerCase","normalizeCantonAddress","endsWith","reconstructCantonAddress","typeByte","payload","hintHex","cantonPartyAddress","cantonCidAddress","padStart","cantonAddressToParty","cantonAddressToCid","isCantonAddress","String","normalizedToParty","normalizedToCid","normalizedToDeferredValue","value","parseCantonDeferredValue"],"mappings":"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","file":"OQS376LP.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 {\n bytesToHexPrefixed,\n hexToBytes,\n isHexString,\n tileHex,\n} from '@layerzerolabs/common-encoding-utils';\nimport type {\n ChainName,\n ChainType,\n InferChainNamesForChainType,\n StellarString,\n} from '@layerzerolabs/layerzero-definitions';\n\nimport { addressParser } from './index';\nimport type { AddressParser, AddressSentinelNormalizedFromLabel } from './types';\nimport { AddressEncoding } from './types';\nimport { assertNative, getAddress } from './utils';\n\nconst BYTES32_HEX_LENGTH = 64;\n\nconst stellarTextEncoder = new TextEncoder();\n\n/** Convert Stellar ASCII address to normalized hex by encoding the ASCII string as UTF-8 bytes. */\nconst stellarAsciiToNormalized = (address: string): NormalizedHexString => {\n const bytes = stellarTextEncoder.encode(address);\n return normalizeHex(bytesToHexPrefixed(bytes));\n};\n\nconst stellarNormalizedFromBytes32Hex = (bytes32Hex: HexString): NormalizedHexString =>\n stellarAsciiToNormalized(StrKey.encodeContract(Buffer.from(hexToBytes(bytes32Hex))));\n\n/** Deterministic Stellar contract sentinel for test fixtures. */\n// chainName unused — required by AddressSentinelNormalizedFromLabel; wired from sentinels.ts\nexport const stellarSentinelNormalizedFromLabel: AddressSentinelNormalizedFromLabel<\n typeof ChainName.STELLAR\n> = (_chainName, label) => {\n return stellarNormalizedFromBytes32Hex(tileHex(label, BYTES32_HEX_LENGTH));\n};\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 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 stellarNormalizedFromBytes32Hex(bytes32Hex);\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 NormalizedHexString, normalizeHex } from '@layerzerolabs/common-chain-model';\nimport { tileHex, trim0x } from '@layerzerolabs/common-encoding-utils';\nimport { ChainName, type ResolvedEncodingForChainName } from '@layerzerolabs/layerzero-definitions';\nimport { StaticChainConfigs } from '@layerzerolabs/static-chain-info';\n\nimport { cantonSentinelNormalizedFromLabel } from './canton';\nimport { addressParser } from './index';\nimport { stellarSentinelNormalizedFromLabel } from './stellar';\nimport type { AddressParser, AddressSentinelNormalizedFromLabel } from './types';\n\n/** Default sentinel: tile `label` across the chain's native address byte width. */\nconst tiledSentinelNormalizedFromLabel = (\n chainName: ChainName,\n label: string,\n): NormalizedHexString => {\n const byteLen = StaticChainConfigs.getAddressSizeInBytes(chainName);\n return normalizeHex(tileHex(label, byteLen * 2));\n};\n\nconst assertSentinelLabel = (label: string): void => {\n const body = trim0x(label);\n if (body.startsWith('0')) {\n throw new Error(\n 'Sentinel labels must not start with a leading zero nibble; use chain zero constants for zero addresses',\n );\n }\n};\n\nconst assertSentinelRoundTrips = <T extends ChainName>(\n chainName: T,\n parser: AddressParser<T>,\n label: string,\n normalized: NormalizedHexString,\n): NormalizedHexString => {\n const roundTripped = parser.parseNative(parser.normalizedToNativeString(normalized));\n if (roundTripped !== normalized) {\n throw new Error(`Sentinel label \"${label}\" does not round-trip on ${chainName}`);\n }\n return roundTripped;\n};\n\n/** Resolve the per-chain sentinel label → normalized hex implementation. */\nconst resolveSentinelNormalizedFromLabel = <T extends ChainName>(\n chainName: T,\n): AddressSentinelNormalizedFromLabel<T> => {\n if (chainName === ChainName.CANTON) {\n return cantonSentinelNormalizedFromLabel as AddressSentinelNormalizedFromLabel<T>;\n }\n if (chainName === ChainName.STELLAR) {\n return stellarSentinelNormalizedFromLabel as AddressSentinelNormalizedFromLabel<T>;\n }\n return tiledSentinelNormalizedFromLabel as AddressSentinelNormalizedFromLabel<T>;\n};\n\nconst buildSentinelNormalizedFromLabel = <T extends ChainName>(\n chainName: T,\n label: string,\n parser: AddressParser<T>,\n): NormalizedHexString => {\n assertSentinelLabel(label);\n const resolvedFn = resolveSentinelNormalizedFromLabel(chainName);\n return assertSentinelRoundTrips(chainName, parser, label, resolvedFn(chainName, label));\n};\n\n/**\n * Deterministic sentinel address in normalized hex from a short hex label.\n *\n * @param chainName - Target chain; selects default tiling vs Canton/Stellar specialty builders.\n * @param label - Non-empty even-length hex (optional `0x` stripped). Must satisfy {@link tileHex}\n * and must not start with a leading zero nibble.\n * @throws If `label` is invalid, starts with a leading zero nibble, or does not round-trip on `chainName`.\n */\nexport const sentinelNormalizedFromLabel = <T extends ChainName>(\n chainName: T,\n label: string,\n): NormalizedHexString =>\n buildSentinelNormalizedFromLabel(chainName, label, addressParser(chainName));\n\n/**\n * Deterministic sentinel address in the chain's native encoding.\n * Native is derived from {@link sentinelNormalizedFromLabel} via the chain parser.\n *\n * @param chainName - Target chain; native form follows that chain's encoding (hex, base58, TON user format, etc.).\n * @param label - Same rules as {@link sentinelNormalizedFromLabel}.\n * @throws Same as {@link sentinelNormalizedFromLabel}.\n */\nexport const sentinelNativeFromLabel = <T extends ChainName>(\n chainName: T,\n label: string,\n): ResolvedEncodingForChainName<T> => {\n const parser = addressParser(chainName);\n return parser.normalizedToNativeString(\n buildSentinelNormalizedFromLabel(chainName, label, parser),\n );\n};\n","import type { HexString, NormalizedHexString } from '@layerzerolabs/common-chain-model';\nimport { ChainName, type NativeAddress } 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, decodeCantonRefAddress, encodeCantonRefAddress } 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\n/**\n * Chain-scoped address parser for encoding conversions.\n *\n * For deterministic test/harness sentinel addresses from hex labels, use\n * {@link sentinelNativeFromLabel} and {@link sentinelNormalizedFromLabel}.\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\nexport { sentinelNativeFromLabel, sentinelNormalizedFromLabel } from './sentinels';\n","import {\n CANTON_CID_ADDRESS_PREFIX,\n CANTON_DEFERRED_VALUE_PREFIX,\n CANTON_DEFERRED_VALUE_SUFFIX,\n CANTON_PARTY_ADDRESS_PREFIX,\n type CantonAddress,\n cantonCidAddress,\n cantonPartyAddress,\n isCantonAddress,\n parseCantonDeferredValue,\n} from '@layerzerolabs/common-canton/browser';\nimport type { HexString, NormalizedHexString } from '@layerzerolabs/common-chain-model';\nimport { normalizeHex } from '@layerzerolabs/common-chain-model';\nimport {\n hexToBytes,\n hexToUtf8,\n tileHex,\n trim0x,\n utf8ToHex,\n} from '@layerzerolabs/common-encoding-utils';\nimport type {\n CantonString,\n ChainName,\n ChainType,\n InferChainNamesForChainType,\n} from '@layerzerolabs/layerzero-definitions';\n\nimport { addressParser } from './index';\nimport type { AddressParser, AddressSentinelNormalizedFromLabel } from './types';\nimport { AddressEncoding } from './types';\n\n// --- Canton address encoding constants ---\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';\nconst CANTON_TYPE_DEFERRED = '02';\n\n// Internal sentinel-format parsers\nconst parsePartyAddress = (addr: CantonAddress): { hint: string; fingerprint: string } => {\n const inner = addr.slice(\n CANTON_PARTY_ADDRESS_PREFIX.length,\n -CANTON_DEFERRED_VALUE_SUFFIX.length,\n );\n const sep = inner.lastIndexOf('::');\n return { hint: inner.slice(0, sep), fingerprint: inner.slice(sep + 2) };\n};\n\nconst parseCidAddress = (addr: CantonAddress): string =>\n addr.slice(CANTON_CID_ADDRESS_PREFIX.length, -CANTON_DEFERRED_VALUE_SUFFIX.length);\n\nconst deferredInner = (sentinel: string): string =>\n sentinel.slice(CANTON_DEFERRED_VALUE_PREFIX.length, -CANTON_DEFERRED_VALUE_SUFFIX.length);\n\nexport const encodeCantonRefAddress = (sentinel: string): NormalizedHexString =>\n normalizeHex(`0x${utf8ToHex(deferredInner(sentinel))}${CANTON_TYPE_DEFERRED}` as HexString);\n\nexport const decodeCantonRefAddress = (address: string): string | undefined => {\n const body = address.startsWith('0x') ? address.slice(2) : address;\n if (body.slice(-2) !== CANTON_TYPE_DEFERRED) return undefined;\n const inner = hexToUtf8(body.slice(0, -2));\n return `${CANTON_DEFERRED_VALUE_PREFIX}${inner}${CANTON_DEFERRED_VALUE_SUFFIX}`;\n};\n\nconst extractCantonAddress = (nativeAddress: string): string => {\n if (nativeAddress.startsWith(CANTON_PARTY_ADDRESS_PREFIX)) {\n const { fingerprint, hint } = parsePartyAddress(nativeAddress as CantonAddress);\n return `0x${fingerprint}${utf8ToHex(hint)}`;\n }\n if (nativeAddress.startsWith(CANTON_CID_ADDRESS_PREFIX)) {\n const cid = parseCidAddress(nativeAddress as CantonAddress);\n return (cid.startsWith('0x') ? cid : `0x${cid}`).toLowerCase();\n }\n if (nativeAddress.startsWith(CANTON_DEFERRED_VALUE_PREFIX)) {\n return `0x${utf8ToHex(deferredInner(nativeAddress))}`;\n }\n throw new Error(`Not a CantonAddress: ${nativeAddress}`);\n};\n\nconst normalizeCantonAddress = (nativeAddress: string): NormalizedHexString => {\n if (nativeAddress.startsWith(CANTON_PARTY_ADDRESS_PREFIX)) {\n const { fingerprint, hint } = parsePartyAddress(nativeAddress as CantonAddress);\n return normalizeHex(`0x${fingerprint}${utf8ToHex(hint)}${CANTON_TYPE_PARTY}` as HexString);\n }\n if (nativeAddress.startsWith(CANTON_CID_ADDRESS_PREFIX)) {\n const cid = parseCidAddress(nativeAddress as CantonAddress);\n return normalizeHex(`0x${trim0x(cid)}${CANTON_TYPE_CONTRACT}` as HexString);\n }\n if (\n nativeAddress.startsWith(CANTON_DEFERRED_VALUE_PREFIX) &&\n nativeAddress.endsWith(CANTON_DEFERRED_VALUE_SUFFIX)\n ) {\n return encodeCantonRefAddress(nativeAddress);\n }\n throw new Error(`Not a CantonAddress: ${nativeAddress}`);\n};\n\nconst reconstructCantonAddress = (hex: string): CantonAddress => {\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 return cantonPartyAddress(hexToUtf8(hintHex), fingerprint);\n }\n if (typeByte === CANTON_TYPE_CONTRACT) {\n return cantonCidAddress(payload.padStart(CANTON_CONTRACT_ID_HEX_LENGTH, '0'));\n }\n if (typeByte === CANTON_TYPE_DEFERRED) {\n return decodeCantonRefAddress(hex)! as CantonAddress;\n }\n throw new Error(\n `Cannot reconstruct Canton address: unknown type discriminator '${typeByte}' in ${hex}`,\n );\n};\n\nconst cantonAddressToParty = (addr: CantonAddress): string => {\n if (!addr.startsWith(CANTON_PARTY_ADDRESS_PREFIX)) {\n throw new Error(`Not a canton party address: ${addr}`);\n }\n const { hint, fingerprint } = parsePartyAddress(addr);\n return `${hint}::${fingerprint}`;\n};\n\nconst cantonAddressToCid = (addr: CantonAddress): string => {\n if (!addr.startsWith(CANTON_CID_ADDRESS_PREFIX)) {\n throw new Error(`Not a canton contract ID address: ${addr}`);\n }\n return parseCidAddress(addr);\n};\n\n/**\n * Deterministic Canton party sentinel for test fixtures.\n * Leading-zero labels are rejected upstream in {@link sentinelNormalizedFromLabel}.\n */\n// chainName unused — required by AddressSentinelNormalizedFromLabel; wired from sentinels.ts\nexport const cantonSentinelNormalizedFromLabel: AddressSentinelNormalizedFromLabel<\n typeof ChainName.CANTON\n> = (_chainName, label) => {\n const fingerprint = `1220${trim0x(tileHex(label, 64))}`;\n return normalizeHex(`0x${fingerprint}${utf8ToHex(label)}${CANTON_TYPE_PARTY}` as HexString);\n};\n\nexport const cantonAddressParser = (\n chainName: InferChainNamesForChainType<ChainType.CANTON>,\n): AddressParser<InferChainNamesForChainType<ChainType.CANTON>> => {\n return {\n validateNative: (nativeAddress): nativeAddress is CantonString =>\n nativeAddress !== undefined && isCantonAddress(nativeAddress),\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n return {\n nativeAddress: reconstructCantonAddress(String(address)) as unknown as CantonString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return reconstructCantonAddress(String(address)) as unknown 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 nativeToBytes32Hex: () => {\n throw new Error('Canton addresses do not support bytes32 format');\n },\n nativeToBytes32: () => {\n throw new Error('Canton addresses do not support bytes32 format');\n },\n normalizedToBytes32Hex: () => {\n throw new Error('Canton addresses do not support bytes32 format');\n },\n normalizedToBytes32: () => {\n throw new Error('Canton addresses do not support bytes32 format');\n },\n bytes32ToNormalized: () => {\n throw new Error('Canton addresses do not support bytes32 format');\n },\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 normalizedToParty: (normalized) => {\n const addr = reconstructCantonAddress(String(normalized));\n return cantonAddressToParty(addr);\n },\n normalizedToCid: (normalized) => {\n const addr = reconstructCantonAddress(String(normalized));\n return cantonAddressToCid(addr);\n },\n normalizedToDeferredValue: (normalized) => {\n const addr = reconstructCantonAddress(String(normalized));\n const value = parseCantonDeferredValue(addr);\n if (!value) throw new Error(`Not a canton deferred ref address: ${String(normalized)}`);\n return value;\n },\n encoding: AddressEncoding.CANTON,\n };\n};\n"]}
|
|
@@ -13,5 +13,5 @@ var AddressEncoding = /* @__PURE__ */ (function(AddressEncoding2) {
|
|
|
13
13
|
})({});
|
|
14
14
|
|
|
15
15
|
export { AddressEncoding, __name };
|
|
16
|
-
//# sourceMappingURL=
|
|
17
|
-
//# sourceMappingURL=
|
|
16
|
+
//# sourceMappingURL=PH5SYXNY.js.map
|
|
17
|
+
//# sourceMappingURL=PH5SYXNY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/addressParser/types.ts"],"names":["AddressEncoding"],"mappings":";;;;AAgBO,IAAKA,eAAAA,6BAAAA,gBAAAA,EAAAA;;;;;;;AAAAA,EAAAA,OAAAA,gBAAAA","file":"PH5SYXNY.js","sourcesContent":["import type { Address } from '@ton/core';\n\nimport type { CantonDeferredValue } from '@layerzerolabs/common-canton/browser';\nimport type { HexString, NormalizedHexString } from '@layerzerolabs/common-chain-model';\nimport type {\n ChainName,\n ChainNativeAddress,\n InferChainTypeForChainName,\n ResolvedEncodingForChainName,\n} from '@layerzerolabs/layerzero-definitions';\nimport type { MaybeUndefinedMapped } from '@layerzerolabs/typescript-utils';\n\nexport type NativeOrString<T extends ChainName> =\n | ChainNativeAddress<T>\n | ResolvedEncodingForChainName<T>;\n\nexport enum AddressEncoding {\n HEX = 'hex',\n BASE58 = 'base58',\n TON = 'ton',\n INITIA = 'initia',\n STELLAR = 'stellar',\n CANTON = 'canton',\n}\n\nexport type ExtensionByChainType = {\n ton: {\n tonToNormalized: (tonAddress: Address) => NormalizedHexString;\n };\n canton: {\n /** Decode a normalized canton address to the raw party string (`hint::fingerprint`). Throws if not a party address. */\n normalizedToParty: (normalized: NormalizedHexString) => string;\n /** Decode a normalized canton address to the raw contract ID string. Throws if not a CID address. */\n normalizedToCid: (normalized: NormalizedHexString) => string;\n /** Decode a normalized canton address to the parsed deferred-value object. Throws if not a deferred ref address. */\n normalizedToDeferredValue: (normalized: NormalizedHexString) => CantonDeferredValue;\n };\n};\n\nexport type InferExtensionByChainName<T extends ChainName> =\n InferChainTypeForChainName<T> extends keyof ExtensionByChainType\n ? ExtensionByChainType[InferChainTypeForChainName<T>]\n : {};\n\nexport type AddressParser<T extends ChainName> = {\n normalizedToNative: <Address extends NormalizedHexString | undefined>(\n address: Address,\n ) => MaybeUndefinedMapped<Address, ChainNativeAddress<T>>;\n normalizedToNativeString: <Address extends NormalizedHexString | undefined>(\n address: Address,\n ) => MaybeUndefinedMapped<Address, ResolvedEncodingForChainName<T>>;\n nativeToNormalized: <Address extends NativeOrString<T> | undefined>(\n nativeAddress: Address,\n ) => MaybeUndefinedMapped<Address, NormalizedHexString>;\n nativeToBytes: <Address extends NativeOrString<T> | undefined>(\n nativeAddress: Address,\n ) => MaybeUndefinedMapped<Address, Uint8Array>;\n nativeToBytes32Hex: <Address extends NativeOrString<T> | undefined>(\n nativeAddress: Address,\n ) => MaybeUndefinedMapped<Address, HexString>;\n nativeToBytes32: <Address extends NativeOrString<T> | undefined>(\n nativeAddress: Address,\n ) => MaybeUndefinedMapped<Address, Uint8Array>;\n normalizedToBytes32Hex: <Address extends NormalizedHexString | undefined>(\n address: Address,\n ) => MaybeUndefinedMapped<Address, HexString>;\n normalizedToBytes32: <Address extends NormalizedHexString | undefined>(\n address: Address,\n ) => MaybeUndefinedMapped<Address, Uint8Array>;\n bytes32ToNormalized: <B extends HexString | undefined>(\n bytes32Hex: B,\n ) => MaybeUndefinedMapped<B, NormalizedHexString>;\n validateNative: (\n nativeAddress: string | undefined,\n ) => 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 | undefined) => NormalizedHexString;\n parseNativeToUnpaddedHex: (nativeAddress: string | undefined) => HexString;\n encoding: AddressEncoding;\n} & InferExtensionByChainName<T>;\n\n/** Internal routing hook for sentinel label → normalized hex; not part of the public API. */\nexport type AddressSentinelNormalizedFromLabel<T extends ChainName> = (\n chainName: T,\n label: string,\n) => NormalizedHexString;\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { cantonAddressParser, cantonSentinelNormalizedFromLabel, decodeCantonRefAddress, encodeCantonRefAddress } from '../
|
|
2
|
-
import '../
|
|
1
|
+
export { cantonAddressParser, cantonSentinelNormalizedFromLabel, decodeCantonRefAddress, encodeCantonRefAddress } from '../OQS376LP.js';
|
|
2
|
+
import '../PH5SYXNY.js';
|
|
3
3
|
//# sourceMappingURL=canton.js.map
|
|
4
4
|
//# sourceMappingURL=canton.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { addressParser, base58AddressParser, cantonAddressParser, decodeCantonRefAddress, encodeCantonRefAddress, hexAddressParser, initiaAddressParser, sentinelNativeFromLabel, sentinelNormalizedFromLabel, starknetAddressParser, stellarAddressParser, tonAddressParser } from '../
|
|
2
|
-
export { AddressEncoding } from '../
|
|
1
|
+
export { addressParser, base58AddressParser, cantonAddressParser, decodeCantonRefAddress, encodeCantonRefAddress, hexAddressParser, initiaAddressParser, sentinelNativeFromLabel, sentinelNormalizedFromLabel, starknetAddressParser, stellarAddressParser, tonAddressParser } from '../OQS376LP.js';
|
|
2
|
+
export { AddressEncoding } from '../PH5SYXNY.js';
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { sentinelNativeFromLabel, sentinelNormalizedFromLabel } from '../
|
|
2
|
-
import '../
|
|
1
|
+
export { sentinelNativeFromLabel, sentinelNormalizedFromLabel } from '../OQS376LP.js';
|
|
2
|
+
import '../PH5SYXNY.js';
|
|
3
3
|
//# sourceMappingURL=sentinels.js.map
|
|
4
4
|
//# sourceMappingURL=sentinels.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { stellarAddressParser, stellarSentinelNormalizedFromLabel } from '../
|
|
2
|
-
import '../
|
|
1
|
+
export { stellarAddressParser, stellarSentinelNormalizedFromLabel } from '../OQS376LP.js';
|
|
2
|
+
import '../PH5SYXNY.js';
|
|
3
3
|
//# sourceMappingURL=stellar.js.map
|
|
4
4
|
//# sourceMappingURL=stellar.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Address } from '@ton/core';
|
|
2
|
-
import type { CantonDeferredValue } from '@layerzerolabs/common-canton';
|
|
2
|
+
import type { CantonDeferredValue } from '@layerzerolabs/common-canton/browser';
|
|
3
3
|
import type { HexString, NormalizedHexString } from '@layerzerolabs/common-chain-model';
|
|
4
4
|
import type { ChainName, ChainNativeAddress, InferChainTypeForChainName, ResolvedEncodingForChainName } from '@layerzerolabs/layerzero-definitions';
|
|
5
5
|
import type { MaybeUndefinedMapped } from '@layerzerolabs/typescript-utils';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/addressParser/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/addressParser/types.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { addressParser, base58AddressParser, cantonAddressParser, decodeCantonRefAddress, encodeCantonRefAddress, hexAddressParser, initiaAddressParser, sentinelNativeFromLabel, sentinelNormalizedFromLabel, starknetAddressParser, stellarAddressParser, tonAddressParser } from './
|
|
2
|
-
export { AddressEncoding } from './
|
|
1
|
+
export { addressParser, base58AddressParser, cantonAddressParser, decodeCantonRefAddress, encodeCantonRefAddress, hexAddressParser, initiaAddressParser, sentinelNativeFromLabel, sentinelNormalizedFromLabel, starknetAddressParser, stellarAddressParser, tonAddressParser } from './OQS376LP.js';
|
|
2
|
+
export { AddressEncoding } from './PH5SYXNY.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": "1.2.
|
|
3
|
+
"version": "1.2.40",
|
|
4
4
|
"private": false,
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -20,19 +20,19 @@
|
|
|
20
20
|
"@stellar/stellar-sdk": "^16.0.1",
|
|
21
21
|
"@ton/core": "^0.59.0",
|
|
22
22
|
"bs58": "^5.0.0",
|
|
23
|
-
"@layerzerolabs/address-utils-ton": "1.2.
|
|
24
|
-
"@layerzerolabs/common-canton": "1.2.
|
|
25
|
-
"@layerzerolabs/common-chain-model": "1.2.
|
|
26
|
-
"@layerzerolabs/
|
|
27
|
-
"@layerzerolabs/
|
|
28
|
-
"@layerzerolabs/
|
|
23
|
+
"@layerzerolabs/address-utils-ton": "1.2.40",
|
|
24
|
+
"@layerzerolabs/common-canton": "1.2.40",
|
|
25
|
+
"@layerzerolabs/common-chain-model": "1.2.40",
|
|
26
|
+
"@layerzerolabs/common-encoding-utils": "1.2.40",
|
|
27
|
+
"@layerzerolabs/static-chain-info": "1.2.40",
|
|
28
|
+
"@layerzerolabs/layerzero-definitions": "1.2.40"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"tsup": "^8.4.0",
|
|
32
32
|
"vitest": "^4.1.10",
|
|
33
|
-
"@layerzerolabs/typescript-configuration": "1.2.
|
|
34
|
-
"@layerzerolabs/tsup-configuration": "1.2.
|
|
35
|
-
"@layerzerolabs/typescript-utils": "1.2.
|
|
33
|
+
"@layerzerolabs/typescript-configuration": "1.2.40",
|
|
34
|
+
"@layerzerolabs/tsup-configuration": "1.2.40",
|
|
35
|
+
"@layerzerolabs/typescript-utils": "1.2.40"
|
|
36
36
|
},
|
|
37
37
|
"publishConfig": {
|
|
38
38
|
"access": "public",
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
"externalRepoConfig": {
|
|
42
42
|
"targets": [
|
|
43
43
|
"console-pen-test",
|
|
44
|
+
"everdawn-externalization",
|
|
44
45
|
"gasolina-audit",
|
|
45
46
|
"lz-labs-sidecar",
|
|
46
47
|
"onesig-client"
|
package/dist/RNN2KHTG.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/addressParser/types.ts"],"names":["AddressEncoding"],"mappings":";;;;AAgBO,IAAKA,eAAAA,6BAAAA,gBAAAA,EAAAA;;;;;;;AAAAA,EAAAA,OAAAA,gBAAAA","file":"RNN2KHTG.js","sourcesContent":["import type { Address } from '@ton/core';\n\nimport type { CantonDeferredValue } from '@layerzerolabs/common-canton';\nimport type { HexString, NormalizedHexString } from '@layerzerolabs/common-chain-model';\nimport type {\n ChainName,\n ChainNativeAddress,\n InferChainTypeForChainName,\n ResolvedEncodingForChainName,\n} from '@layerzerolabs/layerzero-definitions';\nimport type { MaybeUndefinedMapped } from '@layerzerolabs/typescript-utils';\n\nexport type NativeOrString<T extends ChainName> =\n | ChainNativeAddress<T>\n | ResolvedEncodingForChainName<T>;\n\nexport enum AddressEncoding {\n HEX = 'hex',\n BASE58 = 'base58',\n TON = 'ton',\n INITIA = 'initia',\n STELLAR = 'stellar',\n CANTON = 'canton',\n}\n\nexport type ExtensionByChainType = {\n ton: {\n tonToNormalized: (tonAddress: Address) => NormalizedHexString;\n };\n canton: {\n /** Decode a normalized canton address to the raw party string (`hint::fingerprint`). Throws if not a party address. */\n normalizedToParty: (normalized: NormalizedHexString) => string;\n /** Decode a normalized canton address to the raw contract ID string. Throws if not a CID address. */\n normalizedToCid: (normalized: NormalizedHexString) => string;\n /** Decode a normalized canton address to the parsed deferred-value object. Throws if not a deferred ref address. */\n normalizedToDeferredValue: (normalized: NormalizedHexString) => CantonDeferredValue;\n };\n};\n\nexport type InferExtensionByChainName<T extends ChainName> =\n InferChainTypeForChainName<T> extends keyof ExtensionByChainType\n ? ExtensionByChainType[InferChainTypeForChainName<T>]\n : {};\n\nexport type AddressParser<T extends ChainName> = {\n normalizedToNative: <Address extends NormalizedHexString | undefined>(\n address: Address,\n ) => MaybeUndefinedMapped<Address, ChainNativeAddress<T>>;\n normalizedToNativeString: <Address extends NormalizedHexString | undefined>(\n address: Address,\n ) => MaybeUndefinedMapped<Address, ResolvedEncodingForChainName<T>>;\n nativeToNormalized: <Address extends NativeOrString<T> | undefined>(\n nativeAddress: Address,\n ) => MaybeUndefinedMapped<Address, NormalizedHexString>;\n nativeToBytes: <Address extends NativeOrString<T> | undefined>(\n nativeAddress: Address,\n ) => MaybeUndefinedMapped<Address, Uint8Array>;\n nativeToBytes32Hex: <Address extends NativeOrString<T> | undefined>(\n nativeAddress: Address,\n ) => MaybeUndefinedMapped<Address, HexString>;\n nativeToBytes32: <Address extends NativeOrString<T> | undefined>(\n nativeAddress: Address,\n ) => MaybeUndefinedMapped<Address, Uint8Array>;\n normalizedToBytes32Hex: <Address extends NormalizedHexString | undefined>(\n address: Address,\n ) => MaybeUndefinedMapped<Address, HexString>;\n normalizedToBytes32: <Address extends NormalizedHexString | undefined>(\n address: Address,\n ) => MaybeUndefinedMapped<Address, Uint8Array>;\n bytes32ToNormalized: <B extends HexString | undefined>(\n bytes32Hex: B,\n ) => MaybeUndefinedMapped<B, NormalizedHexString>;\n validateNative: (\n nativeAddress: string | undefined,\n ) => 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 | undefined) => NormalizedHexString;\n parseNativeToUnpaddedHex: (nativeAddress: string | undefined) => HexString;\n encoding: AddressEncoding;\n} & InferExtensionByChainName<T>;\n\n/** Internal routing hook for sentinel label → normalized hex; not part of the public API. */\nexport type AddressSentinelNormalizedFromLabel<T extends ChainName> = (\n chainName: T,\n label: string,\n) => NormalizedHexString;\n"]}
|