@layerzerolabs/chain-utils 0.2.84 → 0.2.86
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/{OWLSJUPI.cjs → QMTEJOZE.cjs} +2 -2
- package/dist/QMTEJOZE.cjs.map +1 -0
- package/dist/{BSCDLYWS.js → Y7D2L34Q.js} +2 -2
- package/dist/Y7D2L34Q.js.map +1 -0
- package/dist/addressParser.cjs +10 -10
- package/dist/addressParser.d.ts +1 -1
- package/dist/addressParser.d.ts.map +1 -1
- package/dist/addressParser.js +1 -1
- package/dist/addressParser.test.cjs +21 -21
- package/dist/addressParser.test.js +1 -1
- package/dist/index.cjs +10 -10
- package/dist/index.js +1 -1
- package/package.json +10 -10
- package/dist/BSCDLYWS.js.map +0 -1
- package/dist/OWLSJUPI.cjs.map +0 -1
|
@@ -549,5 +549,5 @@ exports.initiaAddressParser = initiaAddressParser;
|
|
|
549
549
|
exports.starknetAddressParser = starknetAddressParser;
|
|
550
550
|
exports.stellarAddressParser = stellarAddressParser;
|
|
551
551
|
exports.tonAddressParser = tonAddressParser;
|
|
552
|
-
//# sourceMappingURL=
|
|
553
|
-
//# sourceMappingURL=
|
|
552
|
+
//# sourceMappingURL=QMTEJOZE.cjs.map
|
|
553
|
+
//# sourceMappingURL=QMTEJOZE.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/addressParser.ts"],"names":["init_cjs_shims","AddressEncoding","addressParser","chainName","ChainName","TON","tonAddressParser","SOLANA","base58AddressParser","INITIA","initiaAddressParser","STELLAR","stellarAddressParser","STARKNET","starknetAddressParser","CANTON","cantonAddressParser","hexAddressParser","normalizedToUnpaddedString","address","toString","normalizedToBigInt","BigInt","parseNative","nativeAddress","assertNative","expectedChainName","validateNative","Error","getAddress","undefined","parseTonAddress","normalizedToNative","numericalValue","bigintToAddress","normalizedToNativeString","nativeToNormalized","normalizeHex","addressToHex","nativeToBytes32Hex","hexZeroPad","nativeToBytes","hexToBytes","nativeToBytes32","normalizedToBytes32Hex","normalizedToBytes32","bytes32ToNormalized","bytes32Hex","parseNativeToUnpaddedHex","tonToNormalized","tonAddress","encoding","isHexString","test","AccAddress","fromHex","toHex","isBase58","bs58","encode","hex","bytesToHexPrefixed","decode","nativeByteLength","StaticChainConfigs","getAddressSizeInBytes","TRON","startsWith","slice","BYTES32_HEX_LENGTH","hexToStellarNative","hexPayload","length","raw","Buffer","from","StrKey","encodeContract","isValidStellarAddress","isValidEd25519PublicKey","isValidContract","isValidMed25519PublicKey","isValidLiquidityPool","isValidClaimableBalance","isValidSignedPayload","stellarTextEncoder","TextEncoder","stellarAsciiToNormalized","bytes","stellarTextDecoder","TextDecoder","normalizedToStellarAscii","normalizedHex","stellarAddress","rawBytes","decodeEd25519PublicKey","decodeContract","decodeLiquidityPool","fullBytes","decodeClaimableBalance","subarray","normalized","CANTON_PARTY_ID_REGEX","CANTON_FINGERPRINT_HEX_LENGTH","CANTON_CONTRACT_ID_HEX_LENGTH","CANTON_TYPE_CONTRACT","CANTON_TYPE_PARTY","matchCantonPartyId","match","exec","hint","fingerprint","base","extractCantonAddress","party","hintHex","toLowerCase","normalizeCantonAddress","bare","reconstructCantonAddress","body","typeByte","payload","padStart","_nativeAddress"],"mappings":"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","file":"QMTEJOZE.cjs","sourcesContent":["import { AccAddress } from '@initia/initia.js';\nimport { StrKey } from '@stellar/stellar-sdk';\nimport type { Address } from '@ton/core';\nimport bs58 from 'bs58';\n\nimport { addressToHex, bigintToAddress, parseTonAddress } from '@layerzerolabs/address-utils-ton';\nimport type { HexString, NormalizedHexString } from '@layerzerolabs/common-chain-model';\nimport { normalizeHex } from '@layerzerolabs/common-chain-model';\nimport {\n bytesToHexPrefixed,\n hexToBytes,\n hexZeroPad,\n isBase58,\n isHexString,\n} from '@layerzerolabs/common-encoding-utils';\nimport type {\n Base58String,\n ChainsByEncoding,\n ChainType,\n InferChainNamesForChainType,\n InferChainTypeForChainName,\n InitiaString,\n NativeAddress,\n ResolvedEncodingForChainName,\n StellarString,\n} from '@layerzerolabs/layerzero-definitions';\nimport type { ChainNativeAddress } from '@layerzerolabs/layerzero-definitions';\nimport { ChainName } from '@layerzerolabs/layerzero-definitions';\nimport { StaticChainConfigs } from '@layerzerolabs/static-chain-info';\nimport type { MaybeUndefinedMapped } from '@layerzerolabs/typescript-utils';\n\ntype NativeOrString<T extends ChainName> = ChainNativeAddress<T> | ResolvedEncodingForChainName<T>;\n\nexport enum AddressEncoding {\n HEX = 'hex',\n BASE58 = 'base58',\n TON = 'ton',\n INITIA = 'initia',\n STELLAR = 'stellar',\n}\n\nexport type ExtensionByChainType = {\n ton: {\n tonToNormalized: (tonAddress: Address) => NormalizedHexString;\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\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\nfunction 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\nconst getAddress = <T extends ChainName>(nativeAddress: NativeOrString<T>) => {\n return typeof nativeAddress === 'object' ? nativeAddress.nativeAddress : nativeAddress;\n};\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\nexport const initiaAddressParser: (\n chainName: ChainsByEncoding[InitiaString],\n) => AddressParser<ChainsByEncoding[InitiaString]> = (chainName) => {\n return {\n validateNative: (nativeAddress): nativeAddress is InitiaString => {\n if (nativeAddress === undefined) {\n return false;\n }\n try {\n // Both formats are native for the chain and are used kind of randomly.\n return (\n isHexString(nativeAddress) ||\n /^(init)1(['qpzry9x8gf2tvdw0s3jn54khce6mua7l]{38,66})$/.test(nativeAddress)\n );\n } catch {\n return false;\n }\n },\n normalizedToNative: (address) => {\n if (address === undefined) {\n return undefined as any;\n }\n return {\n nativeAddress: AccAddress.fromHex(address as unknown as HexString) as InitiaString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return addressParser(chainName).normalizedToNative(address).nativeAddress;\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n if (isHexString(address)) {\n return normalizeHex(address);\n }\n return normalizeHex(AccAddress.toHex(nativeAddress.toString()) as HexString);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n // naturally ton is 32 bytes, pad it anyway\n return hexZeroPad(\n addressParser(chainName).nativeToNormalized(nativeAddress) as unknown as HexString,\n 32,\n );\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n normalizedToBytes32Hex: (address) => {\n if (address === undefined) return undefined as any;\n return hexZeroPad(address as unknown as HexString, 32);\n },\n normalizedToBytes32: (address) => {\n if (address === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));\n },\n bytes32ToNormalized: (bytes32Hex) => {\n if (bytes32Hex === undefined) return undefined as any;\n return normalizeHex(bytes32Hex);\n },\n parseNative: (nativeAddress) => {\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.INITIA,\n };\n};\n\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 return {\n nativeAddress: bs58.encode(\n hexToBytes(address as unknown as HexString),\n ) as Base58String,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return addressParser(chainName).normalizedToNative(address).nativeAddress;\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n const hex = bytesToHexPrefixed(bs58.decode(address));\n return normalizeHex(hex);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n // naturally solana is 32 bytes, pad it anyway\n if (nativeAddress === undefined) return undefined as any;\n return hexZeroPad(\n addressParser(chainName).nativeToNormalized(nativeAddress) as unknown as HexString,\n 32,\n );\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n return bs58.decode(address);\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n normalizedToBytes32Hex: (address) => {\n if (address === undefined) return undefined as any;\n return hexZeroPad(address as unknown as HexString, 32);\n },\n normalizedToBytes32: (address) => {\n if (address === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));\n },\n bytes32ToNormalized: (bytes32Hex) => {\n if (bytes32Hex === undefined) return undefined as any;\n return normalizeHex(bytes32Hex);\n },\n parseNative: (nativeAddress) => {\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.BASE58,\n };\n};\n\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\nconst BYTES32_HEX_LENGTH = 64;\n\n/**\n * If the input is a 0x-prefixed bytes32 hex string (raw contract ID),\n * convert it to native Stellar base32 format. Only accepts exactly\n * 32 bytes (64 hex chars) to avoid silent corruption from other hex\n * representations (e.g. the UTF-8 \"normalized\" encoding which is 56 bytes,\n * or a 20-byte EVM address).\n */\nconst hexToStellarNative = (address: string | undefined): string | undefined => {\n if (!address || !address.startsWith('0x') || !isHexString(address)) return address;\n const hexPayload = address.slice(2);\n if (hexPayload.length !== BYTES32_HEX_LENGTH) {\n throw new Error(\n `Stellar hex address must be exactly 32 bytes (${BYTES32_HEX_LENGTH} hex chars), got ${hexPayload.length}: ${address}`,\n );\n }\n const raw = Buffer.from(hexPayload, 'hex');\n return StrKey.encodeContract(raw);\n};\n\nexport const stellarAddressParser: (\n chainName: InferChainNamesForChainType<ChainType.STELLAR>,\n) => AddressParser<InferChainNamesForChainType<ChainType.STELLAR>> = (chainName) => {\n /**\n * Validate if a string is a valid Stellar address.\n *\n * According to SEP-0023 (https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0023.md),\n * Stellar supports multiple address types encoded as base32 ASCII strings:\n * - Account addresses starting with 'G' (56 chars, Ed25519 public key)\n * - Contract addresses starting with 'C' (56 chars, contract ID)\n * - Muxed addresses starting with 'M' (69 chars, muxed account with ID)\n * - Liquidity pool addresses starting with 'L' (56 chars, pool ID)\n * - Claimable balance addresses starting with 'B' (56 chars, balance ID)\n * - Signed payload starting with 'P' (variable length)\n *\n * All addresses are stored in their native ASCII format to preserve type information.\n */\n const isValidStellarAddress = (address: string): boolean => {\n if (!address) return false;\n // Use the StrKey validation methods for all supported address types\n return (\n StrKey.isValidEd25519PublicKey(address) ||\n StrKey.isValidContract(address) ||\n StrKey.isValidMed25519PublicKey(address) ||\n StrKey.isValidLiquidityPool(address) ||\n StrKey.isValidClaimableBalance(address) ||\n StrKey.isValidSignedPayload(address)\n );\n };\n\n /**\n * Convert Stellar ASCII address to normalized hex by encoding the ASCII string as UTF-8 bytes.\n * This preserves the full address including type prefix and allows round-trip conversion.\n */\n const stellarTextEncoder = new TextEncoder();\n const stellarAsciiToNormalized = (address: string): NormalizedHexString => {\n // Convert ASCII address string to UTF-8 bytes, then to hex\n const bytes = stellarTextEncoder.encode(address);\n return normalizeHex(bytesToHexPrefixed(bytes));\n };\n\n /**\n * Convert normalized hex back to Stellar ASCII address by decoding UTF-8 bytes.\n */\n const stellarTextDecoder = new TextDecoder();\n const normalizedToStellarAscii = (normalizedHex: NormalizedHexString): string => {\n // Convert hex to bytes, then decode as UTF-8 string\n const bytes = hexToBytes(normalizedHex as unknown as HexString);\n return stellarTextDecoder.decode(bytes);\n };\n\n return {\n validateNative: (nativeAddress): nativeAddress is StellarString => {\n if (nativeAddress === undefined) return false;\n return isValidStellarAddress(nativeAddress);\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n // Decode normalized hex back to ASCII Stellar address\n const stellarAddress = normalizedToStellarAscii(address);\n return {\n nativeAddress: stellarAddress as StellarString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return normalizedToStellarAscii(address) as StellarString;\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n // Convert ASCII address to normalized hex\n return stellarAsciiToNormalized(address);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n // Decode the Stellar address to its raw 32-byte payload based on type\n let rawBytes: Buffer;\n if (StrKey.isValidEd25519PublicKey(address)) {\n // Account addresses (G...) - Ed25519 public key (32 bytes)\n rawBytes = StrKey.decodeEd25519PublicKey(address);\n } else if (StrKey.isValidContract(address)) {\n // Contract addresses (C...) - contract ID (32 bytes)\n rawBytes = StrKey.decodeContract(address);\n } else if (StrKey.isValidLiquidityPool(address)) {\n // Liquidity pool addresses (L...) - pool ID (32 bytes)\n rawBytes = StrKey.decodeLiquidityPool(address);\n } else if (StrKey.isValidClaimableBalance(address)) {\n // Claimable balance addresses (B...) - balance ID (33 bytes: 1-byte version + 32-byte hash)\n // Per SEP-0023: first byte is the claimable balance type (0x00 = V0), followed by 32-byte SHA256 hash\n const fullBytes = StrKey.decodeClaimableBalance(address);\n rawBytes = fullBytes.subarray(1); // Skip the first byte (version), return the 32-byte hash\n } else if (StrKey.isValidMed25519PublicKey(address)) {\n // Muxed addresses (M...) contain additional data beyond 32 bytes\n throw new Error(\n 'nativeToBytes32 is not supported for Stellar muxed addresses (M...)',\n );\n } else if (StrKey.isValidSignedPayload(address)) {\n // Signed payload (P...) has variable length\n throw new Error(\n 'nativeToBytes32 is not supported for Stellar signed payload addresses (P...)',\n );\n } else {\n throw new Error(`Unknown Stellar address type: ${address}`);\n }\n return bytesToHexPrefixed(rawBytes);\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n // Convert ASCII address to UTF-8 bytes\n return stellarTextEncoder.encode(address);\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n // Use nativeToBytes32Hex and convert to Uint8Array\n const hex = addressParser(chainName).nativeToBytes32Hex(nativeAddress);\n return hexToBytes(hex);\n },\n normalizedToBytes32Hex: (address) => {\n if (address === undefined) return undefined as any;\n // Stellar normalized hex is UTF-8 of ASCII address (56 bytes), not raw bytes.\n // Route through native string to extract the raw 32-byte StrKey payload.\n return addressParser(chainName).nativeToBytes32Hex(\n addressParser(chainName).normalizedToNativeString(address),\n );\n },\n normalizedToBytes32: (address) => {\n if (address === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));\n },\n bytes32ToNormalized: (bytes32Hex) => {\n if (bytes32Hex === undefined) return undefined as any;\n // Always assumes contract address type — G-address→bytes32 is a lossy upcast\n return stellarAsciiToNormalized(\n StrKey.encodeContract(Buffer.from(hexToBytes(bytes32Hex))),\n );\n },\n parseNative: (nativeAddress) => {\n nativeAddress = hexToStellarNative(nativeAddress);\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n nativeAddress = hexToStellarNative(nativeAddress);\n assertNative(nativeAddress, chainName);\n const normalized = addressParser(chainName).nativeToNormalized(nativeAddress);\n return normalized as unknown as HexString;\n },\n encoding: AddressEncoding.STELLAR,\n };\n};\n\n/**\n * Canton address formats and normalization:\n *\n * Two address types:\n * - Contract ID: `00<68 bytes hex>` (69 bytes total, V1 prefix `00`)\n * Normalized: `0x<contract_id_hex>00` — trailing `00` type discriminator\n *\n * - Party ID: `<hint>::1220<fingerprint>` (variable length)\n * Normalized: `0x<1220><fingerprint><hintHex>01` — fingerprint first (fixed 68 hex), then UTF-8 hex of hint, trailing `01`\n *\n * Reconstruction rule: read the last byte (2 hex chars) of the body:\n * - `00` → contract ID (strip trailing `00`, pad to 138 hex chars to restore leading zeros)\n * - `01` → party ID (strip trailing `01`, split at offset 68 for hint)\n *\n * The trailing discriminator survives normalizeHex (which only strips leading zeros),\n * avoiding ambiguity when a contract ID starting with `001220...` would otherwise\n * be indistinguishable from a party ID after leading-zero stripping.\n *\n * `1220` is the multihash prefix (0x12 = SHA-256, 0x20 = 32 bytes).\n */\nconst CANTON_PARTY_ID_REGEX = /^(.+)::([0-9a-fA-F]+)$/;\nconst CANTON_FINGERPRINT_HEX_LENGTH = 68; // '1220' (4) + SHA-256 hex (64)\nconst CANTON_CONTRACT_ID_HEX_LENGTH = 138; // 69 bytes\nconst CANTON_TYPE_CONTRACT = '00';\nconst CANTON_TYPE_PARTY = '01';\n\nconst matchCantonPartyId = (nativeAddress: string) => {\n const match = CANTON_PARTY_ID_REGEX.exec(nativeAddress);\n if (!match) return null;\n const [, hint, fingerprint] = match;\n return { hint, fingerprint };\n};\n\nexport const cantonAddressParser = (\n chainName: ChainsByEncoding[HexString],\n): AddressParser<ChainsByEncoding[HexString]> => {\n const base = hexAddressParser(chainName);\n\n /** Returns raw hex for bytes operations (no type discriminator). */\n const extractCantonAddress = (nativeAddress: string): string => {\n const party = matchCantonPartyId(nativeAddress);\n if (party) {\n const hintHex = Buffer.from(party.hint, 'utf-8').toString('hex');\n return `0x${party.fingerprint}${hintHex}`;\n }\n const hex = nativeAddress.startsWith('0x') ? nativeAddress : `0x${nativeAddress}`;\n return hex.toLowerCase();\n };\n\n /** Returns normalized hex with trailing type discriminator (`00` contract, `01` party). */\n const normalizeCantonAddress = (nativeAddress: string): NormalizedHexString => {\n const party = matchCantonPartyId(nativeAddress);\n if (party) {\n const hintHex = Buffer.from(party.hint, 'utf-8').toString('hex');\n return normalizeHex(\n `0x${party.fingerprint}${hintHex}${CANTON_TYPE_PARTY}` as HexString,\n );\n }\n // Contract ID (raw hex)\n const bare = nativeAddress.startsWith('0x') ? nativeAddress.slice(2) : nativeAddress;\n return normalizeHex(`0x${bare}${CANTON_TYPE_CONTRACT}` as HexString);\n };\n\n const reconstructCantonAddress = (hex: string): string => {\n const body = hex.startsWith('0x') ? hex.slice(2) : hex;\n const typeByte = body.slice(-2);\n const payload = body.slice(0, -2);\n\n if (typeByte === CANTON_TYPE_PARTY) {\n const fingerprint = payload.slice(0, CANTON_FINGERPRINT_HEX_LENGTH);\n const hintHex = payload.slice(CANTON_FINGERPRINT_HEX_LENGTH);\n const hint = Buffer.from(hintHex, 'hex').toString('utf-8');\n return `${hint}::${fingerprint}`;\n }\n\n if (typeByte === CANTON_TYPE_CONTRACT) {\n // Contract ID: pad to 138 hex chars to restore leading zeros stripped by normalizeHex\n return payload.padStart(CANTON_CONTRACT_ID_HEX_LENGTH, '0');\n }\n\n throw new Error(`Cannot reconstruct Canton address from normalized hex: ${hex}`);\n };\n\n return {\n ...base,\n validateNative: (nativeAddress): nativeAddress is HexString => {\n if (nativeAddress === undefined) return false;\n return isHexString(nativeAddress) || matchCantonPartyId(nativeAddress) !== null;\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n return {\n nativeAddress: reconstructCantonAddress(address as unknown as string) as HexString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return reconstructCantonAddress(address as unknown as string) as HexString;\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: (_nativeAddress) => {\n // Canton addresses are not bytes32, so we return undefined\n return undefined as any;\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 };\n};\n\n// Starknet addresses do not handle hex-zero padding, so we just return the address as is\nexport const starknetAddressParser = (\n chainName: ChainsByEncoding[HexString],\n): AddressParser<ChainsByEncoding[HexString]> => {\n return {\n ...hexAddressParser(chainName),\n validateNative: (nativeAddress): nativeAddress is HexString => {\n if (nativeAddress === undefined) return false;\n return isHexString(nativeAddress);\n },\n parseNative: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n // We can't trust starknet.js strings, they may actually be bigints!\n // so just convert everything to hex first, then convert to normalized\n nativeAddress = `0x${BigInt(nativeAddress).toString(16)}`;\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n return {\n nativeAddress: address,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return address;\n },\n };\n};\n"]}
|
|
@@ -535,5 +535,5 @@ var starknetAddressParser = /* @__PURE__ */ __name((chainName) => {
|
|
|
535
535
|
}, "starknetAddressParser");
|
|
536
536
|
|
|
537
537
|
export { AddressEncoding, addressParser, base58AddressParser, cantonAddressParser, hexAddressParser, initiaAddressParser, starknetAddressParser, stellarAddressParser, tonAddressParser };
|
|
538
|
-
//# sourceMappingURL=
|
|
539
|
-
//# sourceMappingURL=
|
|
538
|
+
//# sourceMappingURL=Y7D2L34Q.js.map
|
|
539
|
+
//# sourceMappingURL=Y7D2L34Q.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/addressParser.ts"],"names":["AddressEncoding","addressParser","chainName","ChainName","TON","tonAddressParser","SOLANA","base58AddressParser","INITIA","initiaAddressParser","STELLAR","stellarAddressParser","STARKNET","starknetAddressParser","CANTON","cantonAddressParser","hexAddressParser","normalizedToUnpaddedString","address","toString","normalizedToBigInt","BigInt","parseNative","nativeAddress","assertNative","expectedChainName","validateNative","Error","getAddress","undefined","parseTonAddress","normalizedToNative","numericalValue","bigintToAddress","normalizedToNativeString","nativeToNormalized","normalizeHex","addressToHex","nativeToBytes32Hex","hexZeroPad","nativeToBytes","hexToBytes","nativeToBytes32","normalizedToBytes32Hex","normalizedToBytes32","bytes32ToNormalized","bytes32Hex","parseNativeToUnpaddedHex","tonToNormalized","tonAddress","encoding","isHexString","test","AccAddress","fromHex","toHex","isBase58","bs58","encode","hex","bytesToHexPrefixed","decode","nativeByteLength","StaticChainConfigs","getAddressSizeInBytes","TRON","startsWith","slice","BYTES32_HEX_LENGTH","hexToStellarNative","hexPayload","length","raw","Buffer","from","StrKey","encodeContract","isValidStellarAddress","isValidEd25519PublicKey","isValidContract","isValidMed25519PublicKey","isValidLiquidityPool","isValidClaimableBalance","isValidSignedPayload","stellarTextEncoder","TextEncoder","stellarAsciiToNormalized","bytes","stellarTextDecoder","TextDecoder","normalizedToStellarAscii","normalizedHex","stellarAddress","rawBytes","decodeEd25519PublicKey","decodeContract","decodeLiquidityPool","fullBytes","decodeClaimableBalance","subarray","normalized","CANTON_PARTY_ID_REGEX","CANTON_FINGERPRINT_HEX_LENGTH","CANTON_CONTRACT_ID_HEX_LENGTH","CANTON_TYPE_CONTRACT","CANTON_TYPE_PARTY","matchCantonPartyId","match","exec","hint","fingerprint","base","extractCantonAddress","party","hintHex","toLowerCase","normalizeCantonAddress","bare","reconstructCantonAddress","body","typeByte","payload","padStart","_nativeAddress"],"mappings":"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","file":"Y7D2L34Q.js","sourcesContent":["import { AccAddress } from '@initia/initia.js';\nimport { StrKey } from '@stellar/stellar-sdk';\nimport type { Address } from '@ton/core';\nimport bs58 from 'bs58';\n\nimport { addressToHex, bigintToAddress, parseTonAddress } from '@layerzerolabs/address-utils-ton';\nimport type { HexString, NormalizedHexString } from '@layerzerolabs/common-chain-model';\nimport { normalizeHex } from '@layerzerolabs/common-chain-model';\nimport {\n bytesToHexPrefixed,\n hexToBytes,\n hexZeroPad,\n isBase58,\n isHexString,\n} from '@layerzerolabs/common-encoding-utils';\nimport type {\n Base58String,\n ChainsByEncoding,\n ChainType,\n InferChainNamesForChainType,\n InferChainTypeForChainName,\n InitiaString,\n NativeAddress,\n ResolvedEncodingForChainName,\n StellarString,\n} from '@layerzerolabs/layerzero-definitions';\nimport type { ChainNativeAddress } from '@layerzerolabs/layerzero-definitions';\nimport { ChainName } from '@layerzerolabs/layerzero-definitions';\nimport { StaticChainConfigs } from '@layerzerolabs/static-chain-info';\nimport type { MaybeUndefinedMapped } from '@layerzerolabs/typescript-utils';\n\ntype NativeOrString<T extends ChainName> = ChainNativeAddress<T> | ResolvedEncodingForChainName<T>;\n\nexport enum AddressEncoding {\n HEX = 'hex',\n BASE58 = 'base58',\n TON = 'ton',\n INITIA = 'initia',\n STELLAR = 'stellar',\n}\n\nexport type ExtensionByChainType = {\n ton: {\n tonToNormalized: (tonAddress: Address) => NormalizedHexString;\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\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\nfunction 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\nconst getAddress = <T extends ChainName>(nativeAddress: NativeOrString<T>) => {\n return typeof nativeAddress === 'object' ? nativeAddress.nativeAddress : nativeAddress;\n};\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\nexport const initiaAddressParser: (\n chainName: ChainsByEncoding[InitiaString],\n) => AddressParser<ChainsByEncoding[InitiaString]> = (chainName) => {\n return {\n validateNative: (nativeAddress): nativeAddress is InitiaString => {\n if (nativeAddress === undefined) {\n return false;\n }\n try {\n // Both formats are native for the chain and are used kind of randomly.\n return (\n isHexString(nativeAddress) ||\n /^(init)1(['qpzry9x8gf2tvdw0s3jn54khce6mua7l]{38,66})$/.test(nativeAddress)\n );\n } catch {\n return false;\n }\n },\n normalizedToNative: (address) => {\n if (address === undefined) {\n return undefined as any;\n }\n return {\n nativeAddress: AccAddress.fromHex(address as unknown as HexString) as InitiaString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return addressParser(chainName).normalizedToNative(address).nativeAddress;\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n if (isHexString(address)) {\n return normalizeHex(address);\n }\n return normalizeHex(AccAddress.toHex(nativeAddress.toString()) as HexString);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n // naturally ton is 32 bytes, pad it anyway\n return hexZeroPad(\n addressParser(chainName).nativeToNormalized(nativeAddress) as unknown as HexString,\n 32,\n );\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n normalizedToBytes32Hex: (address) => {\n if (address === undefined) return undefined as any;\n return hexZeroPad(address as unknown as HexString, 32);\n },\n normalizedToBytes32: (address) => {\n if (address === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));\n },\n bytes32ToNormalized: (bytes32Hex) => {\n if (bytes32Hex === undefined) return undefined as any;\n return normalizeHex(bytes32Hex);\n },\n parseNative: (nativeAddress) => {\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.INITIA,\n };\n};\n\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 return {\n nativeAddress: bs58.encode(\n hexToBytes(address as unknown as HexString),\n ) as Base58String,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return addressParser(chainName).normalizedToNative(address).nativeAddress;\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n const hex = bytesToHexPrefixed(bs58.decode(address));\n return normalizeHex(hex);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n // naturally solana is 32 bytes, pad it anyway\n if (nativeAddress === undefined) return undefined as any;\n return hexZeroPad(\n addressParser(chainName).nativeToNormalized(nativeAddress) as unknown as HexString,\n 32,\n );\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n return bs58.decode(address);\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n normalizedToBytes32Hex: (address) => {\n if (address === undefined) return undefined as any;\n return hexZeroPad(address as unknown as HexString, 32);\n },\n normalizedToBytes32: (address) => {\n if (address === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));\n },\n bytes32ToNormalized: (bytes32Hex) => {\n if (bytes32Hex === undefined) return undefined as any;\n return normalizeHex(bytes32Hex);\n },\n parseNative: (nativeAddress) => {\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.BASE58,\n };\n};\n\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\nconst BYTES32_HEX_LENGTH = 64;\n\n/**\n * If the input is a 0x-prefixed bytes32 hex string (raw contract ID),\n * convert it to native Stellar base32 format. Only accepts exactly\n * 32 bytes (64 hex chars) to avoid silent corruption from other hex\n * representations (e.g. the UTF-8 \"normalized\" encoding which is 56 bytes,\n * or a 20-byte EVM address).\n */\nconst hexToStellarNative = (address: string | undefined): string | undefined => {\n if (!address || !address.startsWith('0x') || !isHexString(address)) return address;\n const hexPayload = address.slice(2);\n if (hexPayload.length !== BYTES32_HEX_LENGTH) {\n throw new Error(\n `Stellar hex address must be exactly 32 bytes (${BYTES32_HEX_LENGTH} hex chars), got ${hexPayload.length}: ${address}`,\n );\n }\n const raw = Buffer.from(hexPayload, 'hex');\n return StrKey.encodeContract(raw);\n};\n\nexport const stellarAddressParser: (\n chainName: InferChainNamesForChainType<ChainType.STELLAR>,\n) => AddressParser<InferChainNamesForChainType<ChainType.STELLAR>> = (chainName) => {\n /**\n * Validate if a string is a valid Stellar address.\n *\n * According to SEP-0023 (https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0023.md),\n * Stellar supports multiple address types encoded as base32 ASCII strings:\n * - Account addresses starting with 'G' (56 chars, Ed25519 public key)\n * - Contract addresses starting with 'C' (56 chars, contract ID)\n * - Muxed addresses starting with 'M' (69 chars, muxed account with ID)\n * - Liquidity pool addresses starting with 'L' (56 chars, pool ID)\n * - Claimable balance addresses starting with 'B' (56 chars, balance ID)\n * - Signed payload starting with 'P' (variable length)\n *\n * All addresses are stored in their native ASCII format to preserve type information.\n */\n const isValidStellarAddress = (address: string): boolean => {\n if (!address) return false;\n // Use the StrKey validation methods for all supported address types\n return (\n StrKey.isValidEd25519PublicKey(address) ||\n StrKey.isValidContract(address) ||\n StrKey.isValidMed25519PublicKey(address) ||\n StrKey.isValidLiquidityPool(address) ||\n StrKey.isValidClaimableBalance(address) ||\n StrKey.isValidSignedPayload(address)\n );\n };\n\n /**\n * Convert Stellar ASCII address to normalized hex by encoding the ASCII string as UTF-8 bytes.\n * This preserves the full address including type prefix and allows round-trip conversion.\n */\n const stellarTextEncoder = new TextEncoder();\n const stellarAsciiToNormalized = (address: string): NormalizedHexString => {\n // Convert ASCII address string to UTF-8 bytes, then to hex\n const bytes = stellarTextEncoder.encode(address);\n return normalizeHex(bytesToHexPrefixed(bytes));\n };\n\n /**\n * Convert normalized hex back to Stellar ASCII address by decoding UTF-8 bytes.\n */\n const stellarTextDecoder = new TextDecoder();\n const normalizedToStellarAscii = (normalizedHex: NormalizedHexString): string => {\n // Convert hex to bytes, then decode as UTF-8 string\n const bytes = hexToBytes(normalizedHex as unknown as HexString);\n return stellarTextDecoder.decode(bytes);\n };\n\n return {\n validateNative: (nativeAddress): nativeAddress is StellarString => {\n if (nativeAddress === undefined) return false;\n return isValidStellarAddress(nativeAddress);\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n // Decode normalized hex back to ASCII Stellar address\n const stellarAddress = normalizedToStellarAscii(address);\n return {\n nativeAddress: stellarAddress as StellarString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return normalizedToStellarAscii(address) as StellarString;\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n // Convert ASCII address to normalized hex\n return stellarAsciiToNormalized(address);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n // Decode the Stellar address to its raw 32-byte payload based on type\n let rawBytes: Buffer;\n if (StrKey.isValidEd25519PublicKey(address)) {\n // Account addresses (G...) - Ed25519 public key (32 bytes)\n rawBytes = StrKey.decodeEd25519PublicKey(address);\n } else if (StrKey.isValidContract(address)) {\n // Contract addresses (C...) - contract ID (32 bytes)\n rawBytes = StrKey.decodeContract(address);\n } else if (StrKey.isValidLiquidityPool(address)) {\n // Liquidity pool addresses (L...) - pool ID (32 bytes)\n rawBytes = StrKey.decodeLiquidityPool(address);\n } else if (StrKey.isValidClaimableBalance(address)) {\n // Claimable balance addresses (B...) - balance ID (33 bytes: 1-byte version + 32-byte hash)\n // Per SEP-0023: first byte is the claimable balance type (0x00 = V0), followed by 32-byte SHA256 hash\n const fullBytes = StrKey.decodeClaimableBalance(address);\n rawBytes = fullBytes.subarray(1); // Skip the first byte (version), return the 32-byte hash\n } else if (StrKey.isValidMed25519PublicKey(address)) {\n // Muxed addresses (M...) contain additional data beyond 32 bytes\n throw new Error(\n 'nativeToBytes32 is not supported for Stellar muxed addresses (M...)',\n );\n } else if (StrKey.isValidSignedPayload(address)) {\n // Signed payload (P...) has variable length\n throw new Error(\n 'nativeToBytes32 is not supported for Stellar signed payload addresses (P...)',\n );\n } else {\n throw new Error(`Unknown Stellar address type: ${address}`);\n }\n return bytesToHexPrefixed(rawBytes);\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n // Convert ASCII address to UTF-8 bytes\n return stellarTextEncoder.encode(address);\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n // Use nativeToBytes32Hex and convert to Uint8Array\n const hex = addressParser(chainName).nativeToBytes32Hex(nativeAddress);\n return hexToBytes(hex);\n },\n normalizedToBytes32Hex: (address) => {\n if (address === undefined) return undefined as any;\n // Stellar normalized hex is UTF-8 of ASCII address (56 bytes), not raw bytes.\n // Route through native string to extract the raw 32-byte StrKey payload.\n return addressParser(chainName).nativeToBytes32Hex(\n addressParser(chainName).normalizedToNativeString(address),\n );\n },\n normalizedToBytes32: (address) => {\n if (address === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));\n },\n bytes32ToNormalized: (bytes32Hex) => {\n if (bytes32Hex === undefined) return undefined as any;\n // Always assumes contract address type — G-address→bytes32 is a lossy upcast\n return stellarAsciiToNormalized(\n StrKey.encodeContract(Buffer.from(hexToBytes(bytes32Hex))),\n );\n },\n parseNative: (nativeAddress) => {\n nativeAddress = hexToStellarNative(nativeAddress);\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n nativeAddress = hexToStellarNative(nativeAddress);\n assertNative(nativeAddress, chainName);\n const normalized = addressParser(chainName).nativeToNormalized(nativeAddress);\n return normalized as unknown as HexString;\n },\n encoding: AddressEncoding.STELLAR,\n };\n};\n\n/**\n * Canton address formats and normalization:\n *\n * Two address types:\n * - Contract ID: `00<68 bytes hex>` (69 bytes total, V1 prefix `00`)\n * Normalized: `0x<contract_id_hex>00` — trailing `00` type discriminator\n *\n * - Party ID: `<hint>::1220<fingerprint>` (variable length)\n * Normalized: `0x<1220><fingerprint><hintHex>01` — fingerprint first (fixed 68 hex), then UTF-8 hex of hint, trailing `01`\n *\n * Reconstruction rule: read the last byte (2 hex chars) of the body:\n * - `00` → contract ID (strip trailing `00`, pad to 138 hex chars to restore leading zeros)\n * - `01` → party ID (strip trailing `01`, split at offset 68 for hint)\n *\n * The trailing discriminator survives normalizeHex (which only strips leading zeros),\n * avoiding ambiguity when a contract ID starting with `001220...` would otherwise\n * be indistinguishable from a party ID after leading-zero stripping.\n *\n * `1220` is the multihash prefix (0x12 = SHA-256, 0x20 = 32 bytes).\n */\nconst CANTON_PARTY_ID_REGEX = /^(.+)::([0-9a-fA-F]+)$/;\nconst CANTON_FINGERPRINT_HEX_LENGTH = 68; // '1220' (4) + SHA-256 hex (64)\nconst CANTON_CONTRACT_ID_HEX_LENGTH = 138; // 69 bytes\nconst CANTON_TYPE_CONTRACT = '00';\nconst CANTON_TYPE_PARTY = '01';\n\nconst matchCantonPartyId = (nativeAddress: string) => {\n const match = CANTON_PARTY_ID_REGEX.exec(nativeAddress);\n if (!match) return null;\n const [, hint, fingerprint] = match;\n return { hint, fingerprint };\n};\n\nexport const cantonAddressParser = (\n chainName: ChainsByEncoding[HexString],\n): AddressParser<ChainsByEncoding[HexString]> => {\n const base = hexAddressParser(chainName);\n\n /** Returns raw hex for bytes operations (no type discriminator). */\n const extractCantonAddress = (nativeAddress: string): string => {\n const party = matchCantonPartyId(nativeAddress);\n if (party) {\n const hintHex = Buffer.from(party.hint, 'utf-8').toString('hex');\n return `0x${party.fingerprint}${hintHex}`;\n }\n const hex = nativeAddress.startsWith('0x') ? nativeAddress : `0x${nativeAddress}`;\n return hex.toLowerCase();\n };\n\n /** Returns normalized hex with trailing type discriminator (`00` contract, `01` party). */\n const normalizeCantonAddress = (nativeAddress: string): NormalizedHexString => {\n const party = matchCantonPartyId(nativeAddress);\n if (party) {\n const hintHex = Buffer.from(party.hint, 'utf-8').toString('hex');\n return normalizeHex(\n `0x${party.fingerprint}${hintHex}${CANTON_TYPE_PARTY}` as HexString,\n );\n }\n // Contract ID (raw hex)\n const bare = nativeAddress.startsWith('0x') ? nativeAddress.slice(2) : nativeAddress;\n return normalizeHex(`0x${bare}${CANTON_TYPE_CONTRACT}` as HexString);\n };\n\n const reconstructCantonAddress = (hex: string): string => {\n const body = hex.startsWith('0x') ? hex.slice(2) : hex;\n const typeByte = body.slice(-2);\n const payload = body.slice(0, -2);\n\n if (typeByte === CANTON_TYPE_PARTY) {\n const fingerprint = payload.slice(0, CANTON_FINGERPRINT_HEX_LENGTH);\n const hintHex = payload.slice(CANTON_FINGERPRINT_HEX_LENGTH);\n const hint = Buffer.from(hintHex, 'hex').toString('utf-8');\n return `${hint}::${fingerprint}`;\n }\n\n if (typeByte === CANTON_TYPE_CONTRACT) {\n // Contract ID: pad to 138 hex chars to restore leading zeros stripped by normalizeHex\n return payload.padStart(CANTON_CONTRACT_ID_HEX_LENGTH, '0');\n }\n\n throw new Error(`Cannot reconstruct Canton address from normalized hex: ${hex}`);\n };\n\n return {\n ...base,\n validateNative: (nativeAddress): nativeAddress is HexString => {\n if (nativeAddress === undefined) return false;\n return isHexString(nativeAddress) || matchCantonPartyId(nativeAddress) !== null;\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n return {\n nativeAddress: reconstructCantonAddress(address as unknown as string) as HexString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return reconstructCantonAddress(address as unknown as string) as HexString;\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: (_nativeAddress) => {\n // Canton addresses are not bytes32, so we return undefined\n return undefined as any;\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 };\n};\n\n// Starknet addresses do not handle hex-zero padding, so we just return the address as is\nexport const starknetAddressParser = (\n chainName: ChainsByEncoding[HexString],\n): AddressParser<ChainsByEncoding[HexString]> => {\n return {\n ...hexAddressParser(chainName),\n validateNative: (nativeAddress): nativeAddress is HexString => {\n if (nativeAddress === undefined) return false;\n return isHexString(nativeAddress);\n },\n parseNative: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n // We can't trust starknet.js strings, they may actually be bigints!\n // so just convert everything to hex first, then convert to normalized\n nativeAddress = `0x${BigInt(nativeAddress).toString(16)}`;\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n return {\n nativeAddress: address,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return address;\n },\n };\n};\n"]}
|
package/dist/addressParser.cjs
CHANGED
|
@@ -1,45 +1,45 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var QMTEJOZE_cjs = require('./QMTEJOZE.cjs');
|
|
4
4
|
require('./KHVGLVR5.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
Object.defineProperty(exports, "AddressEncoding", {
|
|
9
9
|
enumerable: true,
|
|
10
|
-
get: function () { return
|
|
10
|
+
get: function () { return QMTEJOZE_cjs.AddressEncoding; }
|
|
11
11
|
});
|
|
12
12
|
Object.defineProperty(exports, "addressParser", {
|
|
13
13
|
enumerable: true,
|
|
14
|
-
get: function () { return
|
|
14
|
+
get: function () { return QMTEJOZE_cjs.addressParser; }
|
|
15
15
|
});
|
|
16
16
|
Object.defineProperty(exports, "base58AddressParser", {
|
|
17
17
|
enumerable: true,
|
|
18
|
-
get: function () { return
|
|
18
|
+
get: function () { return QMTEJOZE_cjs.base58AddressParser; }
|
|
19
19
|
});
|
|
20
20
|
Object.defineProperty(exports, "cantonAddressParser", {
|
|
21
21
|
enumerable: true,
|
|
22
|
-
get: function () { return
|
|
22
|
+
get: function () { return QMTEJOZE_cjs.cantonAddressParser; }
|
|
23
23
|
});
|
|
24
24
|
Object.defineProperty(exports, "hexAddressParser", {
|
|
25
25
|
enumerable: true,
|
|
26
|
-
get: function () { return
|
|
26
|
+
get: function () { return QMTEJOZE_cjs.hexAddressParser; }
|
|
27
27
|
});
|
|
28
28
|
Object.defineProperty(exports, "initiaAddressParser", {
|
|
29
29
|
enumerable: true,
|
|
30
|
-
get: function () { return
|
|
30
|
+
get: function () { return QMTEJOZE_cjs.initiaAddressParser; }
|
|
31
31
|
});
|
|
32
32
|
Object.defineProperty(exports, "starknetAddressParser", {
|
|
33
33
|
enumerable: true,
|
|
34
|
-
get: function () { return
|
|
34
|
+
get: function () { return QMTEJOZE_cjs.starknetAddressParser; }
|
|
35
35
|
});
|
|
36
36
|
Object.defineProperty(exports, "stellarAddressParser", {
|
|
37
37
|
enumerable: true,
|
|
38
|
-
get: function () { return
|
|
38
|
+
get: function () { return QMTEJOZE_cjs.stellarAddressParser; }
|
|
39
39
|
});
|
|
40
40
|
Object.defineProperty(exports, "tonAddressParser", {
|
|
41
41
|
enumerable: true,
|
|
42
|
-
get: function () { return
|
|
42
|
+
get: function () { return QMTEJOZE_cjs.tonAddressParser; }
|
|
43
43
|
});
|
|
44
44
|
//# sourceMappingURL=addressParser.cjs.map
|
|
45
45
|
//# sourceMappingURL=addressParser.cjs.map
|
package/dist/addressParser.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Address } from '@ton/
|
|
1
|
+
import type { Address } from '@ton/core';
|
|
2
2
|
import type { HexString, NormalizedHexString } from '@layerzerolabs/common-chain-model';
|
|
3
3
|
import type { Base58String, ChainsByEncoding, ChainType, InferChainNamesForChainType, InferChainTypeForChainName, InitiaString, NativeAddress, ResolvedEncodingForChainName } from '@layerzerolabs/layerzero-definitions';
|
|
4
4
|
import type { ChainNativeAddress } from '@layerzerolabs/layerzero-definitions';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addressParser.d.ts","sourceRoot":"","sources":["../src/addressParser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"addressParser.d.ts","sourceRoot":"","sources":["../src/addressParser.ts"],"names":[],"mappings":"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"}
|
package/dist/addressParser.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { AddressEncoding, addressParser, base58AddressParser, cantonAddressParser, hexAddressParser, initiaAddressParser, starknetAddressParser, stellarAddressParser, tonAddressParser } from './
|
|
1
|
+
export { AddressEncoding, addressParser, base58AddressParser, cantonAddressParser, hexAddressParser, initiaAddressParser, starknetAddressParser, stellarAddressParser, tonAddressParser } from './Y7D2L34Q.js';
|
|
2
2
|
import './CWKWODSW.js';
|
|
3
3
|
//# sourceMappingURL=addressParser.js.map
|
|
4
4
|
//# sourceMappingURL=addressParser.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var QMTEJOZE_cjs = require('./QMTEJOZE.cjs');
|
|
4
4
|
var KHVGLVR5_cjs = require('./KHVGLVR5.cjs');
|
|
5
5
|
var bs58 = require('bs58');
|
|
6
6
|
var tty = require('tty');
|
|
@@ -18120,7 +18120,7 @@ describe("addressParser - hex/EVM chains", () => {
|
|
|
18120
18120
|
];
|
|
18121
18121
|
evmChains.forEach((chain) => {
|
|
18122
18122
|
describe(chain, () => {
|
|
18123
|
-
const parser =
|
|
18123
|
+
const parser = QMTEJOZE_cjs.addressParser(chain);
|
|
18124
18124
|
it("maintains roundtrip invariant: hex -> native -> hex", () => {
|
|
18125
18125
|
runPropertyTest(() => {
|
|
18126
18126
|
const input = randomHex(20);
|
|
@@ -18153,13 +18153,13 @@ describe("addressParser - hex/EVM chains", () => {
|
|
|
18153
18153
|
runPropertyTest(() => {
|
|
18154
18154
|
const byteLength = Math.floor(Math.random() * 32) + 1;
|
|
18155
18155
|
const input = randomHex(byteLength);
|
|
18156
|
-
const padded =
|
|
18156
|
+
const padded = QMTEJOZE_cjs.addressParser(layerzeroDefinitions.ChainName.ETHEREUM).normalizedToBytes32Hex(input);
|
|
18157
18157
|
globalExpect(padded.length).toBe(66);
|
|
18158
18158
|
globalExpect(padded).toBe(commonEncodingUtils.hexZeroPad(input, 32));
|
|
18159
18159
|
});
|
|
18160
18160
|
});
|
|
18161
18161
|
it("handles edge cases", () => {
|
|
18162
|
-
const parser =
|
|
18162
|
+
const parser = QMTEJOZE_cjs.addressParser(layerzeroDefinitions.ChainName.ETHEREUM);
|
|
18163
18163
|
const empty = commonChainModel.normalizeHex("0x");
|
|
18164
18164
|
globalExpect(parser.normalizedToNative(empty).nativeAddress.length).toBe(42);
|
|
18165
18165
|
const max = commonChainModel.normalizeHex("0x" + "ff".repeat(20));
|
|
@@ -18169,7 +18169,7 @@ describe("addressParser - hex/EVM chains", () => {
|
|
|
18169
18169
|
});
|
|
18170
18170
|
});
|
|
18171
18171
|
describe("addressParser - base58 chains (Solana)", () => {
|
|
18172
|
-
const parser =
|
|
18172
|
+
const parser = QMTEJOZE_cjs.addressParser(layerzeroDefinitions.ChainName.SOLANA);
|
|
18173
18173
|
it("maintains roundtrip invariant: hex -> base58 -> hex", () => {
|
|
18174
18174
|
runPropertyTest(() => {
|
|
18175
18175
|
const byteLength = Math.floor(Math.random() * 32) + 1;
|
|
@@ -18212,15 +18212,15 @@ describe("addressParser - base58 chains (Solana)", () => {
|
|
|
18212
18212
|
});
|
|
18213
18213
|
describe("addressParser - chain validation", () => {
|
|
18214
18214
|
it("validates chain names for nativeToBytes32Hex", () => {
|
|
18215
|
-
const evmParser =
|
|
18216
|
-
const solanaParser =
|
|
18215
|
+
const evmParser = QMTEJOZE_cjs.addressParser(layerzeroDefinitions.ChainName.ETHEREUM);
|
|
18216
|
+
const solanaParser = QMTEJOZE_cjs.addressParser(layerzeroDefinitions.ChainName.SOLANA);
|
|
18217
18217
|
const evmAddress = evmParser.normalizedToNative(randomHex(20));
|
|
18218
18218
|
const solanaAddress = solanaParser.normalizedToNative(randomHex(32));
|
|
18219
18219
|
globalExpect(() => solanaParser.nativeToBytes32Hex(evmAddress)).toThrow(/Cannot convert/);
|
|
18220
18220
|
globalExpect(() => evmParser.nativeToBytes32Hex(solanaAddress)).toThrow(/Cannot convert/);
|
|
18221
18221
|
});
|
|
18222
18222
|
it("accepts string addresses without validation", () => {
|
|
18223
|
-
const parser =
|
|
18223
|
+
const parser = QMTEJOZE_cjs.addressParser(layerzeroDefinitions.ChainName.ETHEREUM);
|
|
18224
18224
|
const randomAddress = "0x" + "ab".repeat(20);
|
|
18225
18225
|
const result = parser.nativeToNormalized(randomAddress);
|
|
18226
18226
|
globalExpect(result).toBe(commonChainModel.normalizeHex(randomAddress));
|
|
@@ -18231,7 +18231,7 @@ describe("addressParser - chain validation", () => {
|
|
|
18231
18231
|
});
|
|
18232
18232
|
});
|
|
18233
18233
|
describe("addressParser - TON", () => {
|
|
18234
|
-
const parser =
|
|
18234
|
+
const parser = QMTEJOZE_cjs.addressParser(layerzeroDefinitions.ChainName.TON);
|
|
18235
18235
|
it("maintains roundtrip invariant: hex -> ton address -> hex", () => {
|
|
18236
18236
|
runPropertyTest(() => {
|
|
18237
18237
|
const byteLength = Math.floor(Math.random() * 32) + 1;
|
|
@@ -18292,7 +18292,7 @@ describe("addressParser - TON", () => {
|
|
|
18292
18292
|
});
|
|
18293
18293
|
});
|
|
18294
18294
|
describe("addressParser - Stellar", () => {
|
|
18295
|
-
const parser =
|
|
18295
|
+
const parser = QMTEJOZE_cjs.addressParser(layerzeroDefinitions.ChainName.STELLAR);
|
|
18296
18296
|
const validTestAddresses = {
|
|
18297
18297
|
// Account address (G...)
|
|
18298
18298
|
account: "GA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVSGZ",
|
|
@@ -18615,7 +18615,7 @@ describe("addressParser - normalizedToBytes32Hex (cross-chain)", () => {
|
|
|
18615
18615
|
];
|
|
18616
18616
|
testCases.forEach(({ name, chainName, nativeAddr }) => {
|
|
18617
18617
|
it(`${name}: normalizedToBytes32Hex(normalized) === nativeToBytes32Hex(native)`, () => {
|
|
18618
|
-
const p3 =
|
|
18618
|
+
const p3 = QMTEJOZE_cjs.addressParser(chainName);
|
|
18619
18619
|
const normalized = p3.nativeToNormalized(nativeAddr);
|
|
18620
18620
|
const fromNormalized = p3.normalizedToBytes32Hex(normalized);
|
|
18621
18621
|
const fromNative = p3.nativeToBytes32Hex(nativeAddr);
|
|
@@ -18625,13 +18625,13 @@ describe("addressParser - normalizedToBytes32Hex (cross-chain)", () => {
|
|
|
18625
18625
|
});
|
|
18626
18626
|
});
|
|
18627
18627
|
it("normalizedToBytes32Hex is consistent across chain parsers for \u226432 byte hex", () => {
|
|
18628
|
-
const evmParser =
|
|
18629
|
-
const solanaParser =
|
|
18628
|
+
const evmParser = QMTEJOZE_cjs.addressParser(layerzeroDefinitions.ChainName.ETHEREUM);
|
|
18629
|
+
const solanaParser = QMTEJOZE_cjs.addressParser(layerzeroDefinitions.ChainName.SOLANA);
|
|
18630
18630
|
const normalized = commonChainModel.normalizeHex("0x1234567890abcdef1234567890abcdef12345678");
|
|
18631
18631
|
globalExpect(evmParser.normalizedToBytes32Hex(normalized)).toBe(solanaParser.normalizedToBytes32Hex(normalized));
|
|
18632
18632
|
});
|
|
18633
18633
|
it("normalizedToBytes32 returns correct Uint8Array", () => {
|
|
18634
|
-
const p3 =
|
|
18634
|
+
const p3 = QMTEJOZE_cjs.addressParser(layerzeroDefinitions.ChainName.ETHEREUM);
|
|
18635
18635
|
const normalized = commonChainModel.normalizeHex("0x1234567890abcdef1234567890abcdef12345678");
|
|
18636
18636
|
const bytes32Hex = p3.normalizedToBytes32Hex(normalized);
|
|
18637
18637
|
const bytes32 = p3.normalizedToBytes32(normalized);
|
|
@@ -18639,7 +18639,7 @@ describe("addressParser - normalizedToBytes32Hex (cross-chain)", () => {
|
|
|
18639
18639
|
globalExpect(commonEncodingUtils.bytesToHexPrefixed(bytes32)).toBe(bytes32Hex);
|
|
18640
18640
|
});
|
|
18641
18641
|
it("returns undefined for undefined input", () => {
|
|
18642
|
-
const p3 =
|
|
18642
|
+
const p3 = QMTEJOZE_cjs.addressParser(layerzeroDefinitions.ChainName.ETHEREUM);
|
|
18643
18643
|
globalExpect(p3.normalizedToBytes32Hex(void 0)).toBeUndefined();
|
|
18644
18644
|
globalExpect(p3.normalizedToBytes32(void 0)).toBeUndefined();
|
|
18645
18645
|
});
|
|
@@ -18681,14 +18681,14 @@ describe("addressParser - bytes32ToNormalized", () => {
|
|
|
18681
18681
|
];
|
|
18682
18682
|
cases.forEach(({ name, chainName, native }) => {
|
|
18683
18683
|
it(`${name}: round-trip`, () => {
|
|
18684
|
-
const p3 =
|
|
18684
|
+
const p3 = QMTEJOZE_cjs.addressParser(chainName);
|
|
18685
18685
|
const normalized = p3.nativeToNormalized(native);
|
|
18686
18686
|
const bytes32Hex = p3.nativeToBytes32Hex(native);
|
|
18687
18687
|
globalExpect(p3.bytes32ToNormalized(bytes32Hex)).toBe(normalized);
|
|
18688
18688
|
});
|
|
18689
18689
|
});
|
|
18690
18690
|
it("Stellar contract: round-trip", () => {
|
|
18691
|
-
const p3 =
|
|
18691
|
+
const p3 = QMTEJOZE_cjs.addressParser(layerzeroDefinitions.ChainName.STELLAR);
|
|
18692
18692
|
const contractAddr = "CA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUWDA";
|
|
18693
18693
|
const normalized = p3.nativeToNormalized(contractAddr);
|
|
18694
18694
|
const bytes32Hex = p3.nativeToBytes32Hex(contractAddr);
|
|
@@ -18696,7 +18696,7 @@ describe("addressParser - bytes32ToNormalized", () => {
|
|
|
18696
18696
|
});
|
|
18697
18697
|
});
|
|
18698
18698
|
it("undefined input returns undefined", () => {
|
|
18699
|
-
const p3 =
|
|
18699
|
+
const p3 = QMTEJOZE_cjs.addressParser(layerzeroDefinitions.ChainName.ETHEREUM);
|
|
18700
18700
|
globalExpect(p3.bytes32ToNormalized(void 0)).toBeUndefined();
|
|
18701
18701
|
});
|
|
18702
18702
|
it("non-Stellar: bytes32ToNative === normalizeHex for same input", () => {
|
|
@@ -18708,15 +18708,15 @@ describe("addressParser - bytes32ToNormalized", () => {
|
|
|
18708
18708
|
];
|
|
18709
18709
|
const bytes32 = "0x0000000000000000000000001234567890abcdef1234567890abcdef12345678";
|
|
18710
18710
|
chains.forEach((chainName) => {
|
|
18711
|
-
globalExpect(
|
|
18711
|
+
globalExpect(QMTEJOZE_cjs.addressParser(chainName).bytes32ToNormalized(bytes32)).toBe(commonChainModel.normalizeHex(bytes32));
|
|
18712
18712
|
});
|
|
18713
18713
|
});
|
|
18714
18714
|
it("zero bytes32: EVM returns NORMALIZED_HEX_ZERO", () => {
|
|
18715
|
-
const p3 =
|
|
18715
|
+
const p3 = QMTEJOZE_cjs.addressParser(layerzeroDefinitions.ChainName.ETHEREUM);
|
|
18716
18716
|
globalExpect(p3.bytes32ToNormalized(ZERO_BYTES32)).toBe(commonChainModel.NORMALIZED_HEX_ZERO);
|
|
18717
18717
|
});
|
|
18718
18718
|
it("zero bytes32: Stellar returns C-address for zero contract ID (not undefined)", () => {
|
|
18719
|
-
const p3 =
|
|
18719
|
+
const p3 = QMTEJOZE_cjs.addressParser(layerzeroDefinitions.ChainName.STELLAR);
|
|
18720
18720
|
const result = p3.bytes32ToNormalized(ZERO_BYTES32);
|
|
18721
18721
|
globalExpect(result).toBeDefined();
|
|
18722
18722
|
globalExpect(result).not.toBe(commonChainModel.NORMALIZED_HEX_ZERO);
|
package/dist/index.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var QMTEJOZE_cjs = require('./QMTEJOZE.cjs');
|
|
4
4
|
var KHVGLVR5_cjs = require('./KHVGLVR5.cjs');
|
|
5
5
|
|
|
6
6
|
// src/index.ts
|
|
@@ -8,39 +8,39 @@ KHVGLVR5_cjs.init_cjs_shims();
|
|
|
8
8
|
|
|
9
9
|
Object.defineProperty(exports, "AddressEncoding", {
|
|
10
10
|
enumerable: true,
|
|
11
|
-
get: function () { return
|
|
11
|
+
get: function () { return QMTEJOZE_cjs.AddressEncoding; }
|
|
12
12
|
});
|
|
13
13
|
Object.defineProperty(exports, "addressParser", {
|
|
14
14
|
enumerable: true,
|
|
15
|
-
get: function () { return
|
|
15
|
+
get: function () { return QMTEJOZE_cjs.addressParser; }
|
|
16
16
|
});
|
|
17
17
|
Object.defineProperty(exports, "base58AddressParser", {
|
|
18
18
|
enumerable: true,
|
|
19
|
-
get: function () { return
|
|
19
|
+
get: function () { return QMTEJOZE_cjs.base58AddressParser; }
|
|
20
20
|
});
|
|
21
21
|
Object.defineProperty(exports, "cantonAddressParser", {
|
|
22
22
|
enumerable: true,
|
|
23
|
-
get: function () { return
|
|
23
|
+
get: function () { return QMTEJOZE_cjs.cantonAddressParser; }
|
|
24
24
|
});
|
|
25
25
|
Object.defineProperty(exports, "hexAddressParser", {
|
|
26
26
|
enumerable: true,
|
|
27
|
-
get: function () { return
|
|
27
|
+
get: function () { return QMTEJOZE_cjs.hexAddressParser; }
|
|
28
28
|
});
|
|
29
29
|
Object.defineProperty(exports, "initiaAddressParser", {
|
|
30
30
|
enumerable: true,
|
|
31
|
-
get: function () { return
|
|
31
|
+
get: function () { return QMTEJOZE_cjs.initiaAddressParser; }
|
|
32
32
|
});
|
|
33
33
|
Object.defineProperty(exports, "starknetAddressParser", {
|
|
34
34
|
enumerable: true,
|
|
35
|
-
get: function () { return
|
|
35
|
+
get: function () { return QMTEJOZE_cjs.starknetAddressParser; }
|
|
36
36
|
});
|
|
37
37
|
Object.defineProperty(exports, "stellarAddressParser", {
|
|
38
38
|
enumerable: true,
|
|
39
|
-
get: function () { return
|
|
39
|
+
get: function () { return QMTEJOZE_cjs.stellarAddressParser; }
|
|
40
40
|
});
|
|
41
41
|
Object.defineProperty(exports, "tonAddressParser", {
|
|
42
42
|
enumerable: true,
|
|
43
|
-
get: function () { return
|
|
43
|
+
get: function () { return QMTEJOZE_cjs.tonAddressParser; }
|
|
44
44
|
});
|
|
45
45
|
//# sourceMappingURL=index.cjs.map
|
|
46
46
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { AddressEncoding, addressParser, base58AddressParser, cantonAddressParser, hexAddressParser, initiaAddressParser, starknetAddressParser, stellarAddressParser, tonAddressParser } from './
|
|
1
|
+
export { AddressEncoding, addressParser, base58AddressParser, cantonAddressParser, hexAddressParser, initiaAddressParser, starknetAddressParser, stellarAddressParser, tonAddressParser } from './Y7D2L34Q.js';
|
|
2
2
|
import { init_esm_shims } from './CWKWODSW.js';
|
|
3
3
|
|
|
4
4
|
// src/index.ts
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@layerzerolabs/chain-utils",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.86",
|
|
4
4
|
"private": false,
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -19,20 +19,20 @@
|
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"@initia/initia.js": "1.0.4",
|
|
21
21
|
"@stellar/stellar-sdk": "^14.1.1",
|
|
22
|
-
"@ton/
|
|
22
|
+
"@ton/core": "^0.59.0",
|
|
23
23
|
"bs58": "^5.0.0",
|
|
24
|
-
"@layerzerolabs/
|
|
25
|
-
"@layerzerolabs/common-
|
|
26
|
-
"@layerzerolabs/
|
|
27
|
-
"@layerzerolabs/static-chain-info": "0.2.
|
|
28
|
-
"@layerzerolabs/layerzero-definitions": "0.2.
|
|
24
|
+
"@layerzerolabs/address-utils-ton": "0.2.86",
|
|
25
|
+
"@layerzerolabs/common-chain-model": "0.2.86",
|
|
26
|
+
"@layerzerolabs/common-encoding-utils": "0.2.86",
|
|
27
|
+
"@layerzerolabs/static-chain-info": "0.2.86",
|
|
28
|
+
"@layerzerolabs/layerzero-definitions": "0.2.86"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"tsup": "^8.4.0",
|
|
32
32
|
"vitest": "^3.2.3",
|
|
33
|
-
"@layerzerolabs/
|
|
34
|
-
"@layerzerolabs/typescript-
|
|
35
|
-
"@layerzerolabs/
|
|
33
|
+
"@layerzerolabs/tsup-configuration": "0.2.86",
|
|
34
|
+
"@layerzerolabs/typescript-configuration": "0.2.86",
|
|
35
|
+
"@layerzerolabs/typescript-utils": "0.2.86"
|
|
36
36
|
},
|
|
37
37
|
"publishConfig": {
|
|
38
38
|
"access": "public",
|
package/dist/BSCDLYWS.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/addressParser.ts"],"names":["AddressEncoding","addressParser","chainName","ChainName","TON","tonAddressParser","SOLANA","base58AddressParser","INITIA","initiaAddressParser","STELLAR","stellarAddressParser","STARKNET","starknetAddressParser","CANTON","cantonAddressParser","hexAddressParser","normalizedToUnpaddedString","address","toString","normalizedToBigInt","BigInt","parseNative","nativeAddress","assertNative","expectedChainName","validateNative","Error","getAddress","undefined","parseTonAddress","normalizedToNative","numericalValue","bigintToAddress","normalizedToNativeString","nativeToNormalized","normalizeHex","addressToHex","nativeToBytes32Hex","hexZeroPad","nativeToBytes","hexToBytes","nativeToBytes32","normalizedToBytes32Hex","normalizedToBytes32","bytes32ToNormalized","bytes32Hex","parseNativeToUnpaddedHex","tonToNormalized","tonAddress","encoding","isHexString","test","AccAddress","fromHex","toHex","isBase58","bs58","encode","hex","bytesToHexPrefixed","decode","nativeByteLength","StaticChainConfigs","getAddressSizeInBytes","TRON","startsWith","slice","BYTES32_HEX_LENGTH","hexToStellarNative","hexPayload","length","raw","Buffer","from","StrKey","encodeContract","isValidStellarAddress","isValidEd25519PublicKey","isValidContract","isValidMed25519PublicKey","isValidLiquidityPool","isValidClaimableBalance","isValidSignedPayload","stellarTextEncoder","TextEncoder","stellarAsciiToNormalized","bytes","stellarTextDecoder","TextDecoder","normalizedToStellarAscii","normalizedHex","stellarAddress","rawBytes","decodeEd25519PublicKey","decodeContract","decodeLiquidityPool","fullBytes","decodeClaimableBalance","subarray","normalized","CANTON_PARTY_ID_REGEX","CANTON_FINGERPRINT_HEX_LENGTH","CANTON_CONTRACT_ID_HEX_LENGTH","CANTON_TYPE_CONTRACT","CANTON_TYPE_PARTY","matchCantonPartyId","match","exec","hint","fingerprint","base","extractCantonAddress","party","hintHex","toLowerCase","normalizeCantonAddress","bare","reconstructCantonAddress","body","typeByte","payload","padStart","_nativeAddress"],"mappings":"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","file":"BSCDLYWS.js","sourcesContent":["import { AccAddress } from '@initia/initia.js';\nimport { StrKey } from '@stellar/stellar-sdk';\nimport type { Address } from '@ton/ton';\nimport bs58 from 'bs58';\n\nimport { addressToHex, bigintToAddress, parseTonAddress } from '@layerzerolabs/address-utils-ton';\nimport type { HexString, NormalizedHexString } from '@layerzerolabs/common-chain-model';\nimport { normalizeHex } from '@layerzerolabs/common-chain-model';\nimport {\n bytesToHexPrefixed,\n hexToBytes,\n hexZeroPad,\n isBase58,\n isHexString,\n} from '@layerzerolabs/common-encoding-utils';\nimport type {\n Base58String,\n ChainsByEncoding,\n ChainType,\n InferChainNamesForChainType,\n InferChainTypeForChainName,\n InitiaString,\n NativeAddress,\n ResolvedEncodingForChainName,\n StellarString,\n} from '@layerzerolabs/layerzero-definitions';\nimport type { ChainNativeAddress } from '@layerzerolabs/layerzero-definitions';\nimport { ChainName } from '@layerzerolabs/layerzero-definitions';\nimport { StaticChainConfigs } from '@layerzerolabs/static-chain-info';\nimport type { MaybeUndefinedMapped } from '@layerzerolabs/typescript-utils';\n\ntype NativeOrString<T extends ChainName> = ChainNativeAddress<T> | ResolvedEncodingForChainName<T>;\n\nexport enum AddressEncoding {\n HEX = 'hex',\n BASE58 = 'base58',\n TON = 'ton',\n INITIA = 'initia',\n STELLAR = 'stellar',\n}\n\nexport type ExtensionByChainType = {\n ton: {\n tonToNormalized: (tonAddress: Address) => NormalizedHexString;\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\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\nfunction 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\nconst getAddress = <T extends ChainName>(nativeAddress: NativeOrString<T>) => {\n return typeof nativeAddress === 'object' ? nativeAddress.nativeAddress : nativeAddress;\n};\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\nexport const initiaAddressParser: (\n chainName: ChainsByEncoding[InitiaString],\n) => AddressParser<ChainsByEncoding[InitiaString]> = (chainName) => {\n return {\n validateNative: (nativeAddress): nativeAddress is InitiaString => {\n if (nativeAddress === undefined) {\n return false;\n }\n try {\n // Both formats are native for the chain and are used kind of randomly.\n return (\n isHexString(nativeAddress) ||\n /^(init)1(['qpzry9x8gf2tvdw0s3jn54khce6mua7l]{38,66})$/.test(nativeAddress)\n );\n } catch {\n return false;\n }\n },\n normalizedToNative: (address) => {\n if (address === undefined) {\n return undefined as any;\n }\n return {\n nativeAddress: AccAddress.fromHex(address as unknown as HexString) as InitiaString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return addressParser(chainName).normalizedToNative(address).nativeAddress;\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n if (isHexString(address)) {\n return normalizeHex(address);\n }\n return normalizeHex(AccAddress.toHex(nativeAddress.toString()) as HexString);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n // naturally ton is 32 bytes, pad it anyway\n return hexZeroPad(\n addressParser(chainName).nativeToNormalized(nativeAddress) as unknown as HexString,\n 32,\n );\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n normalizedToBytes32Hex: (address) => {\n if (address === undefined) return undefined as any;\n return hexZeroPad(address as unknown as HexString, 32);\n },\n normalizedToBytes32: (address) => {\n if (address === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));\n },\n bytes32ToNormalized: (bytes32Hex) => {\n if (bytes32Hex === undefined) return undefined as any;\n return normalizeHex(bytes32Hex);\n },\n parseNative: (nativeAddress) => {\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.INITIA,\n };\n};\n\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 return {\n nativeAddress: bs58.encode(\n hexToBytes(address as unknown as HexString),\n ) as Base58String,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return addressParser(chainName).normalizedToNative(address).nativeAddress;\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n const hex = bytesToHexPrefixed(bs58.decode(address));\n return normalizeHex(hex);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n // naturally solana is 32 bytes, pad it anyway\n if (nativeAddress === undefined) return undefined as any;\n return hexZeroPad(\n addressParser(chainName).nativeToNormalized(nativeAddress) as unknown as HexString,\n 32,\n );\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n return bs58.decode(address);\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n normalizedToBytes32Hex: (address) => {\n if (address === undefined) return undefined as any;\n return hexZeroPad(address as unknown as HexString, 32);\n },\n normalizedToBytes32: (address) => {\n if (address === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));\n },\n bytes32ToNormalized: (bytes32Hex) => {\n if (bytes32Hex === undefined) return undefined as any;\n return normalizeHex(bytes32Hex);\n },\n parseNative: (nativeAddress) => {\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.BASE58,\n };\n};\n\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\nconst BYTES32_HEX_LENGTH = 64;\n\n/**\n * If the input is a 0x-prefixed bytes32 hex string (raw contract ID),\n * convert it to native Stellar base32 format. Only accepts exactly\n * 32 bytes (64 hex chars) to avoid silent corruption from other hex\n * representations (e.g. the UTF-8 \"normalized\" encoding which is 56 bytes,\n * or a 20-byte EVM address).\n */\nconst hexToStellarNative = (address: string | undefined): string | undefined => {\n if (!address || !address.startsWith('0x') || !isHexString(address)) return address;\n const hexPayload = address.slice(2);\n if (hexPayload.length !== BYTES32_HEX_LENGTH) {\n throw new Error(\n `Stellar hex address must be exactly 32 bytes (${BYTES32_HEX_LENGTH} hex chars), got ${hexPayload.length}: ${address}`,\n );\n }\n const raw = Buffer.from(hexPayload, 'hex');\n return StrKey.encodeContract(raw);\n};\n\nexport const stellarAddressParser: (\n chainName: InferChainNamesForChainType<ChainType.STELLAR>,\n) => AddressParser<InferChainNamesForChainType<ChainType.STELLAR>> = (chainName) => {\n /**\n * Validate if a string is a valid Stellar address.\n *\n * According to SEP-0023 (https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0023.md),\n * Stellar supports multiple address types encoded as base32 ASCII strings:\n * - Account addresses starting with 'G' (56 chars, Ed25519 public key)\n * - Contract addresses starting with 'C' (56 chars, contract ID)\n * - Muxed addresses starting with 'M' (69 chars, muxed account with ID)\n * - Liquidity pool addresses starting with 'L' (56 chars, pool ID)\n * - Claimable balance addresses starting with 'B' (56 chars, balance ID)\n * - Signed payload starting with 'P' (variable length)\n *\n * All addresses are stored in their native ASCII format to preserve type information.\n */\n const isValidStellarAddress = (address: string): boolean => {\n if (!address) return false;\n // Use the StrKey validation methods for all supported address types\n return (\n StrKey.isValidEd25519PublicKey(address) ||\n StrKey.isValidContract(address) ||\n StrKey.isValidMed25519PublicKey(address) ||\n StrKey.isValidLiquidityPool(address) ||\n StrKey.isValidClaimableBalance(address) ||\n StrKey.isValidSignedPayload(address)\n );\n };\n\n /**\n * Convert Stellar ASCII address to normalized hex by encoding the ASCII string as UTF-8 bytes.\n * This preserves the full address including type prefix and allows round-trip conversion.\n */\n const stellarTextEncoder = new TextEncoder();\n const stellarAsciiToNormalized = (address: string): NormalizedHexString => {\n // Convert ASCII address string to UTF-8 bytes, then to hex\n const bytes = stellarTextEncoder.encode(address);\n return normalizeHex(bytesToHexPrefixed(bytes));\n };\n\n /**\n * Convert normalized hex back to Stellar ASCII address by decoding UTF-8 bytes.\n */\n const stellarTextDecoder = new TextDecoder();\n const normalizedToStellarAscii = (normalizedHex: NormalizedHexString): string => {\n // Convert hex to bytes, then decode as UTF-8 string\n const bytes = hexToBytes(normalizedHex as unknown as HexString);\n return stellarTextDecoder.decode(bytes);\n };\n\n return {\n validateNative: (nativeAddress): nativeAddress is StellarString => {\n if (nativeAddress === undefined) return false;\n return isValidStellarAddress(nativeAddress);\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n // Decode normalized hex back to ASCII Stellar address\n const stellarAddress = normalizedToStellarAscii(address);\n return {\n nativeAddress: stellarAddress as StellarString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return normalizedToStellarAscii(address) as StellarString;\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n // Convert ASCII address to normalized hex\n return stellarAsciiToNormalized(address);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n // Decode the Stellar address to its raw 32-byte payload based on type\n let rawBytes: Buffer;\n if (StrKey.isValidEd25519PublicKey(address)) {\n // Account addresses (G...) - Ed25519 public key (32 bytes)\n rawBytes = StrKey.decodeEd25519PublicKey(address);\n } else if (StrKey.isValidContract(address)) {\n // Contract addresses (C...) - contract ID (32 bytes)\n rawBytes = StrKey.decodeContract(address);\n } else if (StrKey.isValidLiquidityPool(address)) {\n // Liquidity pool addresses (L...) - pool ID (32 bytes)\n rawBytes = StrKey.decodeLiquidityPool(address);\n } else if (StrKey.isValidClaimableBalance(address)) {\n // Claimable balance addresses (B...) - balance ID (33 bytes: 1-byte version + 32-byte hash)\n // Per SEP-0023: first byte is the claimable balance type (0x00 = V0), followed by 32-byte SHA256 hash\n const fullBytes = StrKey.decodeClaimableBalance(address);\n rawBytes = fullBytes.subarray(1); // Skip the first byte (version), return the 32-byte hash\n } else if (StrKey.isValidMed25519PublicKey(address)) {\n // Muxed addresses (M...) contain additional data beyond 32 bytes\n throw new Error(\n 'nativeToBytes32 is not supported for Stellar muxed addresses (M...)',\n );\n } else if (StrKey.isValidSignedPayload(address)) {\n // Signed payload (P...) has variable length\n throw new Error(\n 'nativeToBytes32 is not supported for Stellar signed payload addresses (P...)',\n );\n } else {\n throw new Error(`Unknown Stellar address type: ${address}`);\n }\n return bytesToHexPrefixed(rawBytes);\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n // Convert ASCII address to UTF-8 bytes\n return stellarTextEncoder.encode(address);\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n // Use nativeToBytes32Hex and convert to Uint8Array\n const hex = addressParser(chainName).nativeToBytes32Hex(nativeAddress);\n return hexToBytes(hex);\n },\n normalizedToBytes32Hex: (address) => {\n if (address === undefined) return undefined as any;\n // Stellar normalized hex is UTF-8 of ASCII address (56 bytes), not raw bytes.\n // Route through native string to extract the raw 32-byte StrKey payload.\n return addressParser(chainName).nativeToBytes32Hex(\n addressParser(chainName).normalizedToNativeString(address),\n );\n },\n normalizedToBytes32: (address) => {\n if (address === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));\n },\n bytes32ToNormalized: (bytes32Hex) => {\n if (bytes32Hex === undefined) return undefined as any;\n // Always assumes contract address type — G-address→bytes32 is a lossy upcast\n return stellarAsciiToNormalized(\n StrKey.encodeContract(Buffer.from(hexToBytes(bytes32Hex))),\n );\n },\n parseNative: (nativeAddress) => {\n nativeAddress = hexToStellarNative(nativeAddress);\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n nativeAddress = hexToStellarNative(nativeAddress);\n assertNative(nativeAddress, chainName);\n const normalized = addressParser(chainName).nativeToNormalized(nativeAddress);\n return normalized as unknown as HexString;\n },\n encoding: AddressEncoding.STELLAR,\n };\n};\n\n/**\n * Canton address formats and normalization:\n *\n * Two address types:\n * - Contract ID: `00<68 bytes hex>` (69 bytes total, V1 prefix `00`)\n * Normalized: `0x<contract_id_hex>00` — trailing `00` type discriminator\n *\n * - Party ID: `<hint>::1220<fingerprint>` (variable length)\n * Normalized: `0x<1220><fingerprint><hintHex>01` — fingerprint first (fixed 68 hex), then UTF-8 hex of hint, trailing `01`\n *\n * Reconstruction rule: read the last byte (2 hex chars) of the body:\n * - `00` → contract ID (strip trailing `00`, pad to 138 hex chars to restore leading zeros)\n * - `01` → party ID (strip trailing `01`, split at offset 68 for hint)\n *\n * The trailing discriminator survives normalizeHex (which only strips leading zeros),\n * avoiding ambiguity when a contract ID starting with `001220...` would otherwise\n * be indistinguishable from a party ID after leading-zero stripping.\n *\n * `1220` is the multihash prefix (0x12 = SHA-256, 0x20 = 32 bytes).\n */\nconst CANTON_PARTY_ID_REGEX = /^(.+)::([0-9a-fA-F]+)$/;\nconst CANTON_FINGERPRINT_HEX_LENGTH = 68; // '1220' (4) + SHA-256 hex (64)\nconst CANTON_CONTRACT_ID_HEX_LENGTH = 138; // 69 bytes\nconst CANTON_TYPE_CONTRACT = '00';\nconst CANTON_TYPE_PARTY = '01';\n\nconst matchCantonPartyId = (nativeAddress: string) => {\n const match = CANTON_PARTY_ID_REGEX.exec(nativeAddress);\n if (!match) return null;\n const [, hint, fingerprint] = match;\n return { hint, fingerprint };\n};\n\nexport const cantonAddressParser = (\n chainName: ChainsByEncoding[HexString],\n): AddressParser<ChainsByEncoding[HexString]> => {\n const base = hexAddressParser(chainName);\n\n /** Returns raw hex for bytes operations (no type discriminator). */\n const extractCantonAddress = (nativeAddress: string): string => {\n const party = matchCantonPartyId(nativeAddress);\n if (party) {\n const hintHex = Buffer.from(party.hint, 'utf-8').toString('hex');\n return `0x${party.fingerprint}${hintHex}`;\n }\n const hex = nativeAddress.startsWith('0x') ? nativeAddress : `0x${nativeAddress}`;\n return hex.toLowerCase();\n };\n\n /** Returns normalized hex with trailing type discriminator (`00` contract, `01` party). */\n const normalizeCantonAddress = (nativeAddress: string): NormalizedHexString => {\n const party = matchCantonPartyId(nativeAddress);\n if (party) {\n const hintHex = Buffer.from(party.hint, 'utf-8').toString('hex');\n return normalizeHex(\n `0x${party.fingerprint}${hintHex}${CANTON_TYPE_PARTY}` as HexString,\n );\n }\n // Contract ID (raw hex)\n const bare = nativeAddress.startsWith('0x') ? nativeAddress.slice(2) : nativeAddress;\n return normalizeHex(`0x${bare}${CANTON_TYPE_CONTRACT}` as HexString);\n };\n\n const reconstructCantonAddress = (hex: string): string => {\n const body = hex.startsWith('0x') ? hex.slice(2) : hex;\n const typeByte = body.slice(-2);\n const payload = body.slice(0, -2);\n\n if (typeByte === CANTON_TYPE_PARTY) {\n const fingerprint = payload.slice(0, CANTON_FINGERPRINT_HEX_LENGTH);\n const hintHex = payload.slice(CANTON_FINGERPRINT_HEX_LENGTH);\n const hint = Buffer.from(hintHex, 'hex').toString('utf-8');\n return `${hint}::${fingerprint}`;\n }\n\n if (typeByte === CANTON_TYPE_CONTRACT) {\n // Contract ID: pad to 138 hex chars to restore leading zeros stripped by normalizeHex\n return payload.padStart(CANTON_CONTRACT_ID_HEX_LENGTH, '0');\n }\n\n throw new Error(`Cannot reconstruct Canton address from normalized hex: ${hex}`);\n };\n\n return {\n ...base,\n validateNative: (nativeAddress): nativeAddress is HexString => {\n if (nativeAddress === undefined) return false;\n return isHexString(nativeAddress) || matchCantonPartyId(nativeAddress) !== null;\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n return {\n nativeAddress: reconstructCantonAddress(address as unknown as string) as HexString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return reconstructCantonAddress(address as unknown as string) as HexString;\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: (_nativeAddress) => {\n // Canton addresses are not bytes32, so we return undefined\n return undefined as any;\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 };\n};\n\n// Starknet addresses do not handle hex-zero padding, so we just return the address as is\nexport const starknetAddressParser = (\n chainName: ChainsByEncoding[HexString],\n): AddressParser<ChainsByEncoding[HexString]> => {\n return {\n ...hexAddressParser(chainName),\n validateNative: (nativeAddress): nativeAddress is HexString => {\n if (nativeAddress === undefined) return false;\n return isHexString(nativeAddress);\n },\n parseNative: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n // We can't trust starknet.js strings, they may actually be bigints!\n // so just convert everything to hex first, then convert to normalized\n nativeAddress = `0x${BigInt(nativeAddress).toString(16)}`;\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n return {\n nativeAddress: address,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return address;\n },\n };\n};\n"]}
|
package/dist/OWLSJUPI.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/addressParser.ts"],"names":["init_cjs_shims","AddressEncoding","addressParser","chainName","ChainName","TON","tonAddressParser","SOLANA","base58AddressParser","INITIA","initiaAddressParser","STELLAR","stellarAddressParser","STARKNET","starknetAddressParser","CANTON","cantonAddressParser","hexAddressParser","normalizedToUnpaddedString","address","toString","normalizedToBigInt","BigInt","parseNative","nativeAddress","assertNative","expectedChainName","validateNative","Error","getAddress","undefined","parseTonAddress","normalizedToNative","numericalValue","bigintToAddress","normalizedToNativeString","nativeToNormalized","normalizeHex","addressToHex","nativeToBytes32Hex","hexZeroPad","nativeToBytes","hexToBytes","nativeToBytes32","normalizedToBytes32Hex","normalizedToBytes32","bytes32ToNormalized","bytes32Hex","parseNativeToUnpaddedHex","tonToNormalized","tonAddress","encoding","isHexString","test","AccAddress","fromHex","toHex","isBase58","bs58","encode","hex","bytesToHexPrefixed","decode","nativeByteLength","StaticChainConfigs","getAddressSizeInBytes","TRON","startsWith","slice","BYTES32_HEX_LENGTH","hexToStellarNative","hexPayload","length","raw","Buffer","from","StrKey","encodeContract","isValidStellarAddress","isValidEd25519PublicKey","isValidContract","isValidMed25519PublicKey","isValidLiquidityPool","isValidClaimableBalance","isValidSignedPayload","stellarTextEncoder","TextEncoder","stellarAsciiToNormalized","bytes","stellarTextDecoder","TextDecoder","normalizedToStellarAscii","normalizedHex","stellarAddress","rawBytes","decodeEd25519PublicKey","decodeContract","decodeLiquidityPool","fullBytes","decodeClaimableBalance","subarray","normalized","CANTON_PARTY_ID_REGEX","CANTON_FINGERPRINT_HEX_LENGTH","CANTON_CONTRACT_ID_HEX_LENGTH","CANTON_TYPE_CONTRACT","CANTON_TYPE_PARTY","matchCantonPartyId","match","exec","hint","fingerprint","base","extractCantonAddress","party","hintHex","toLowerCase","normalizeCantonAddress","bare","reconstructCantonAddress","body","typeByte","payload","padStart","_nativeAddress"],"mappings":"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","file":"OWLSJUPI.cjs","sourcesContent":["import { AccAddress } from '@initia/initia.js';\nimport { StrKey } from '@stellar/stellar-sdk';\nimport type { Address } from '@ton/ton';\nimport bs58 from 'bs58';\n\nimport { addressToHex, bigintToAddress, parseTonAddress } from '@layerzerolabs/address-utils-ton';\nimport type { HexString, NormalizedHexString } from '@layerzerolabs/common-chain-model';\nimport { normalizeHex } from '@layerzerolabs/common-chain-model';\nimport {\n bytesToHexPrefixed,\n hexToBytes,\n hexZeroPad,\n isBase58,\n isHexString,\n} from '@layerzerolabs/common-encoding-utils';\nimport type {\n Base58String,\n ChainsByEncoding,\n ChainType,\n InferChainNamesForChainType,\n InferChainTypeForChainName,\n InitiaString,\n NativeAddress,\n ResolvedEncodingForChainName,\n StellarString,\n} from '@layerzerolabs/layerzero-definitions';\nimport type { ChainNativeAddress } from '@layerzerolabs/layerzero-definitions';\nimport { ChainName } from '@layerzerolabs/layerzero-definitions';\nimport { StaticChainConfigs } from '@layerzerolabs/static-chain-info';\nimport type { MaybeUndefinedMapped } from '@layerzerolabs/typescript-utils';\n\ntype NativeOrString<T extends ChainName> = ChainNativeAddress<T> | ResolvedEncodingForChainName<T>;\n\nexport enum AddressEncoding {\n HEX = 'hex',\n BASE58 = 'base58',\n TON = 'ton',\n INITIA = 'initia',\n STELLAR = 'stellar',\n}\n\nexport type ExtensionByChainType = {\n ton: {\n tonToNormalized: (tonAddress: Address) => NormalizedHexString;\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\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\nfunction 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\nconst getAddress = <T extends ChainName>(nativeAddress: NativeOrString<T>) => {\n return typeof nativeAddress === 'object' ? nativeAddress.nativeAddress : nativeAddress;\n};\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\nexport const initiaAddressParser: (\n chainName: ChainsByEncoding[InitiaString],\n) => AddressParser<ChainsByEncoding[InitiaString]> = (chainName) => {\n return {\n validateNative: (nativeAddress): nativeAddress is InitiaString => {\n if (nativeAddress === undefined) {\n return false;\n }\n try {\n // Both formats are native for the chain and are used kind of randomly.\n return (\n isHexString(nativeAddress) ||\n /^(init)1(['qpzry9x8gf2tvdw0s3jn54khce6mua7l]{38,66})$/.test(nativeAddress)\n );\n } catch {\n return false;\n }\n },\n normalizedToNative: (address) => {\n if (address === undefined) {\n return undefined as any;\n }\n return {\n nativeAddress: AccAddress.fromHex(address as unknown as HexString) as InitiaString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return addressParser(chainName).normalizedToNative(address).nativeAddress;\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n if (isHexString(address)) {\n return normalizeHex(address);\n }\n return normalizeHex(AccAddress.toHex(nativeAddress.toString()) as HexString);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n // naturally ton is 32 bytes, pad it anyway\n return hexZeroPad(\n addressParser(chainName).nativeToNormalized(nativeAddress) as unknown as HexString,\n 32,\n );\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n normalizedToBytes32Hex: (address) => {\n if (address === undefined) return undefined as any;\n return hexZeroPad(address as unknown as HexString, 32);\n },\n normalizedToBytes32: (address) => {\n if (address === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));\n },\n bytes32ToNormalized: (bytes32Hex) => {\n if (bytes32Hex === undefined) return undefined as any;\n return normalizeHex(bytes32Hex);\n },\n parseNative: (nativeAddress) => {\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.INITIA,\n };\n};\n\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 return {\n nativeAddress: bs58.encode(\n hexToBytes(address as unknown as HexString),\n ) as Base58String,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return addressParser(chainName).normalizedToNative(address).nativeAddress;\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n const hex = bytesToHexPrefixed(bs58.decode(address));\n return normalizeHex(hex);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n // naturally solana is 32 bytes, pad it anyway\n if (nativeAddress === undefined) return undefined as any;\n return hexZeroPad(\n addressParser(chainName).nativeToNormalized(nativeAddress) as unknown as HexString,\n 32,\n );\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n return bs58.decode(address);\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).nativeToBytes32Hex(nativeAddress));\n },\n normalizedToBytes32Hex: (address) => {\n if (address === undefined) return undefined as any;\n return hexZeroPad(address as unknown as HexString, 32);\n },\n normalizedToBytes32: (address) => {\n if (address === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));\n },\n bytes32ToNormalized: (bytes32Hex) => {\n if (bytes32Hex === undefined) return undefined as any;\n return normalizeHex(bytes32Hex);\n },\n parseNative: (nativeAddress) => {\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n return addressParser(chainName).parseNative(nativeAddress) as unknown as HexString;\n },\n encoding: AddressEncoding.BASE58,\n };\n};\n\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\nconst BYTES32_HEX_LENGTH = 64;\n\n/**\n * If the input is a 0x-prefixed bytes32 hex string (raw contract ID),\n * convert it to native Stellar base32 format. Only accepts exactly\n * 32 bytes (64 hex chars) to avoid silent corruption from other hex\n * representations (e.g. the UTF-8 \"normalized\" encoding which is 56 bytes,\n * or a 20-byte EVM address).\n */\nconst hexToStellarNative = (address: string | undefined): string | undefined => {\n if (!address || !address.startsWith('0x') || !isHexString(address)) return address;\n const hexPayload = address.slice(2);\n if (hexPayload.length !== BYTES32_HEX_LENGTH) {\n throw new Error(\n `Stellar hex address must be exactly 32 bytes (${BYTES32_HEX_LENGTH} hex chars), got ${hexPayload.length}: ${address}`,\n );\n }\n const raw = Buffer.from(hexPayload, 'hex');\n return StrKey.encodeContract(raw);\n};\n\nexport const stellarAddressParser: (\n chainName: InferChainNamesForChainType<ChainType.STELLAR>,\n) => AddressParser<InferChainNamesForChainType<ChainType.STELLAR>> = (chainName) => {\n /**\n * Validate if a string is a valid Stellar address.\n *\n * According to SEP-0023 (https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0023.md),\n * Stellar supports multiple address types encoded as base32 ASCII strings:\n * - Account addresses starting with 'G' (56 chars, Ed25519 public key)\n * - Contract addresses starting with 'C' (56 chars, contract ID)\n * - Muxed addresses starting with 'M' (69 chars, muxed account with ID)\n * - Liquidity pool addresses starting with 'L' (56 chars, pool ID)\n * - Claimable balance addresses starting with 'B' (56 chars, balance ID)\n * - Signed payload starting with 'P' (variable length)\n *\n * All addresses are stored in their native ASCII format to preserve type information.\n */\n const isValidStellarAddress = (address: string): boolean => {\n if (!address) return false;\n // Use the StrKey validation methods for all supported address types\n return (\n StrKey.isValidEd25519PublicKey(address) ||\n StrKey.isValidContract(address) ||\n StrKey.isValidMed25519PublicKey(address) ||\n StrKey.isValidLiquidityPool(address) ||\n StrKey.isValidClaimableBalance(address) ||\n StrKey.isValidSignedPayload(address)\n );\n };\n\n /**\n * Convert Stellar ASCII address to normalized hex by encoding the ASCII string as UTF-8 bytes.\n * This preserves the full address including type prefix and allows round-trip conversion.\n */\n const stellarTextEncoder = new TextEncoder();\n const stellarAsciiToNormalized = (address: string): NormalizedHexString => {\n // Convert ASCII address string to UTF-8 bytes, then to hex\n const bytes = stellarTextEncoder.encode(address);\n return normalizeHex(bytesToHexPrefixed(bytes));\n };\n\n /**\n * Convert normalized hex back to Stellar ASCII address by decoding UTF-8 bytes.\n */\n const stellarTextDecoder = new TextDecoder();\n const normalizedToStellarAscii = (normalizedHex: NormalizedHexString): string => {\n // Convert hex to bytes, then decode as UTF-8 string\n const bytes = hexToBytes(normalizedHex as unknown as HexString);\n return stellarTextDecoder.decode(bytes);\n };\n\n return {\n validateNative: (nativeAddress): nativeAddress is StellarString => {\n if (nativeAddress === undefined) return false;\n return isValidStellarAddress(nativeAddress);\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n // Decode normalized hex back to ASCII Stellar address\n const stellarAddress = normalizedToStellarAscii(address);\n return {\n nativeAddress: stellarAddress as StellarString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return normalizedToStellarAscii(address) as StellarString;\n },\n nativeToNormalized: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n // Convert ASCII address to normalized hex\n return stellarAsciiToNormalized(address);\n },\n nativeToBytes32Hex: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n // Decode the Stellar address to its raw 32-byte payload based on type\n let rawBytes: Buffer;\n if (StrKey.isValidEd25519PublicKey(address)) {\n // Account addresses (G...) - Ed25519 public key (32 bytes)\n rawBytes = StrKey.decodeEd25519PublicKey(address);\n } else if (StrKey.isValidContract(address)) {\n // Contract addresses (C...) - contract ID (32 bytes)\n rawBytes = StrKey.decodeContract(address);\n } else if (StrKey.isValidLiquidityPool(address)) {\n // Liquidity pool addresses (L...) - pool ID (32 bytes)\n rawBytes = StrKey.decodeLiquidityPool(address);\n } else if (StrKey.isValidClaimableBalance(address)) {\n // Claimable balance addresses (B...) - balance ID (33 bytes: 1-byte version + 32-byte hash)\n // Per SEP-0023: first byte is the claimable balance type (0x00 = V0), followed by 32-byte SHA256 hash\n const fullBytes = StrKey.decodeClaimableBalance(address);\n rawBytes = fullBytes.subarray(1); // Skip the first byte (version), return the 32-byte hash\n } else if (StrKey.isValidMed25519PublicKey(address)) {\n // Muxed addresses (M...) contain additional data beyond 32 bytes\n throw new Error(\n 'nativeToBytes32 is not supported for Stellar muxed addresses (M...)',\n );\n } else if (StrKey.isValidSignedPayload(address)) {\n // Signed payload (P...) has variable length\n throw new Error(\n 'nativeToBytes32 is not supported for Stellar signed payload addresses (P...)',\n );\n } else {\n throw new Error(`Unknown Stellar address type: ${address}`);\n }\n return bytesToHexPrefixed(rawBytes);\n },\n nativeToBytes: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n const address = getAddress(nativeAddress);\n assertNative(address, chainName);\n // Convert ASCII address to UTF-8 bytes\n return stellarTextEncoder.encode(address);\n },\n nativeToBytes32: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n // Use nativeToBytes32Hex and convert to Uint8Array\n const hex = addressParser(chainName).nativeToBytes32Hex(nativeAddress);\n return hexToBytes(hex);\n },\n normalizedToBytes32Hex: (address) => {\n if (address === undefined) return undefined as any;\n // Stellar normalized hex is UTF-8 of ASCII address (56 bytes), not raw bytes.\n // Route through native string to extract the raw 32-byte StrKey payload.\n return addressParser(chainName).nativeToBytes32Hex(\n addressParser(chainName).normalizedToNativeString(address),\n );\n },\n normalizedToBytes32: (address) => {\n if (address === undefined) return undefined as any;\n return hexToBytes(addressParser(chainName).normalizedToBytes32Hex(address));\n },\n bytes32ToNormalized: (bytes32Hex) => {\n if (bytes32Hex === undefined) return undefined as any;\n // Always assumes contract address type — G-address→bytes32 is a lossy upcast\n return stellarAsciiToNormalized(\n StrKey.encodeContract(Buffer.from(hexToBytes(bytes32Hex))),\n );\n },\n parseNative: (nativeAddress) => {\n nativeAddress = hexToStellarNative(nativeAddress);\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n parseNativeToUnpaddedHex: (nativeAddress) => {\n nativeAddress = hexToStellarNative(nativeAddress);\n assertNative(nativeAddress, chainName);\n const normalized = addressParser(chainName).nativeToNormalized(nativeAddress);\n return normalized as unknown as HexString;\n },\n encoding: AddressEncoding.STELLAR,\n };\n};\n\n/**\n * Canton address formats and normalization:\n *\n * Two address types:\n * - Contract ID: `00<68 bytes hex>` (69 bytes total, V1 prefix `00`)\n * Normalized: `0x<contract_id_hex>00` — trailing `00` type discriminator\n *\n * - Party ID: `<hint>::1220<fingerprint>` (variable length)\n * Normalized: `0x<1220><fingerprint><hintHex>01` — fingerprint first (fixed 68 hex), then UTF-8 hex of hint, trailing `01`\n *\n * Reconstruction rule: read the last byte (2 hex chars) of the body:\n * - `00` → contract ID (strip trailing `00`, pad to 138 hex chars to restore leading zeros)\n * - `01` → party ID (strip trailing `01`, split at offset 68 for hint)\n *\n * The trailing discriminator survives normalizeHex (which only strips leading zeros),\n * avoiding ambiguity when a contract ID starting with `001220...` would otherwise\n * be indistinguishable from a party ID after leading-zero stripping.\n *\n * `1220` is the multihash prefix (0x12 = SHA-256, 0x20 = 32 bytes).\n */\nconst CANTON_PARTY_ID_REGEX = /^(.+)::([0-9a-fA-F]+)$/;\nconst CANTON_FINGERPRINT_HEX_LENGTH = 68; // '1220' (4) + SHA-256 hex (64)\nconst CANTON_CONTRACT_ID_HEX_LENGTH = 138; // 69 bytes\nconst CANTON_TYPE_CONTRACT = '00';\nconst CANTON_TYPE_PARTY = '01';\n\nconst matchCantonPartyId = (nativeAddress: string) => {\n const match = CANTON_PARTY_ID_REGEX.exec(nativeAddress);\n if (!match) return null;\n const [, hint, fingerprint] = match;\n return { hint, fingerprint };\n};\n\nexport const cantonAddressParser = (\n chainName: ChainsByEncoding[HexString],\n): AddressParser<ChainsByEncoding[HexString]> => {\n const base = hexAddressParser(chainName);\n\n /** Returns raw hex for bytes operations (no type discriminator). */\n const extractCantonAddress = (nativeAddress: string): string => {\n const party = matchCantonPartyId(nativeAddress);\n if (party) {\n const hintHex = Buffer.from(party.hint, 'utf-8').toString('hex');\n return `0x${party.fingerprint}${hintHex}`;\n }\n const hex = nativeAddress.startsWith('0x') ? nativeAddress : `0x${nativeAddress}`;\n return hex.toLowerCase();\n };\n\n /** Returns normalized hex with trailing type discriminator (`00` contract, `01` party). */\n const normalizeCantonAddress = (nativeAddress: string): NormalizedHexString => {\n const party = matchCantonPartyId(nativeAddress);\n if (party) {\n const hintHex = Buffer.from(party.hint, 'utf-8').toString('hex');\n return normalizeHex(\n `0x${party.fingerprint}${hintHex}${CANTON_TYPE_PARTY}` as HexString,\n );\n }\n // Contract ID (raw hex)\n const bare = nativeAddress.startsWith('0x') ? nativeAddress.slice(2) : nativeAddress;\n return normalizeHex(`0x${bare}${CANTON_TYPE_CONTRACT}` as HexString);\n };\n\n const reconstructCantonAddress = (hex: string): string => {\n const body = hex.startsWith('0x') ? hex.slice(2) : hex;\n const typeByte = body.slice(-2);\n const payload = body.slice(0, -2);\n\n if (typeByte === CANTON_TYPE_PARTY) {\n const fingerprint = payload.slice(0, CANTON_FINGERPRINT_HEX_LENGTH);\n const hintHex = payload.slice(CANTON_FINGERPRINT_HEX_LENGTH);\n const hint = Buffer.from(hintHex, 'hex').toString('utf-8');\n return `${hint}::${fingerprint}`;\n }\n\n if (typeByte === CANTON_TYPE_CONTRACT) {\n // Contract ID: pad to 138 hex chars to restore leading zeros stripped by normalizeHex\n return payload.padStart(CANTON_CONTRACT_ID_HEX_LENGTH, '0');\n }\n\n throw new Error(`Cannot reconstruct Canton address from normalized hex: ${hex}`);\n };\n\n return {\n ...base,\n validateNative: (nativeAddress): nativeAddress is HexString => {\n if (nativeAddress === undefined) return false;\n return isHexString(nativeAddress) || matchCantonPartyId(nativeAddress) !== null;\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n return {\n nativeAddress: reconstructCantonAddress(address as unknown as string) as HexString,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return reconstructCantonAddress(address as unknown as string) as HexString;\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: (_nativeAddress) => {\n // Canton addresses are not bytes32, so we return undefined\n return undefined as any;\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 };\n};\n\n// Starknet addresses do not handle hex-zero padding, so we just return the address as is\nexport const starknetAddressParser = (\n chainName: ChainsByEncoding[HexString],\n): AddressParser<ChainsByEncoding[HexString]> => {\n return {\n ...hexAddressParser(chainName),\n validateNative: (nativeAddress): nativeAddress is HexString => {\n if (nativeAddress === undefined) return false;\n return isHexString(nativeAddress);\n },\n parseNative: (nativeAddress) => {\n if (nativeAddress === undefined) return undefined as any;\n // We can't trust starknet.js strings, they may actually be bigints!\n // so just convert everything to hex first, then convert to normalized\n nativeAddress = `0x${BigInt(nativeAddress).toString(16)}`;\n assertNative(nativeAddress, chainName);\n return addressParser(chainName).nativeToNormalized(nativeAddress);\n },\n normalizedToNative: (address) => {\n if (address === undefined) return undefined as any;\n return {\n nativeAddress: address,\n chainName,\n };\n },\n normalizedToNativeString: (address) => {\n if (address === undefined) return undefined as any;\n return address;\n },\n };\n};\n"]}
|