| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 | import { hexStr2byteArray, byteArray2hexStr } from './code.js';import { decodeBase58Address, getBase58CheckAddress, isAddressValid, pkToAddress } from './crypto.js';import { isHex, isString } from './validations.js';import { keccak256 } from './ethersUtils.js';export const ADDRESS_SIZE = 34;export const ADDRESS_PREFIX = '41';export const ADDRESS_PREFIX_BYTE = 0x41;export const ADDRESS_PREFIX_REGEX = /^(41)/;export const TRON_BIP39_PATH_PREFIX = "m/44'/195'";export const TRON_BIP39_PATH_INDEX_0 = TRON_BIP39_PATH_PREFIX + "/0'/0/0";export function fromHex(address) {    if (!isHex(address))        return address;    return getBase58CheckAddress(hexStr2byteArray(address.replace(/^0x/, ADDRESS_PREFIX)));}export function toHex(address) {    if (isHex(address))        return address.toLowerCase().replace(/^0x/, ADDRESS_PREFIX);    return byteArray2hexStr(decodeBase58Address(address)).toLowerCase();}function getChecksumAddress(address) {    address = address.toLowerCase();    const chars = address.substring(2).split('');    const expanded = new Uint8Array(40);    for (let i = 0; i < 40; i++) {        expanded[i] = chars[i].charCodeAt(0);    }    const hashed = hexStr2byteArray(keccak256(expanded).slice(2));    for (let i = 0; i < 40; i += 2) {        if ((hashed[i >> 1] >> 4) >= 8) {            chars[i] = chars[i].toUpperCase();        }        if ((hashed[i >> 1] & 0x0f) >= 8) {            chars[i + 1] = chars[i + 1].toUpperCase();        }    }    return ADDRESS_PREFIX + chars.join('');}export function toChecksumAddress(address) {    if (!isAddress(address))        throw new Error(`'${address}' is not a valid address string`);    return getChecksumAddress(toHex(address));}export function isChecksumAddress(address) {    if (!isHex(address) || address.length !== 42)        return false;    try {        return toChecksumAddress(address) === address;    }    catch {        return false;    }}export function fromPrivateKey(privateKey, strict = false) {    try {        return pkToAddress(privateKey, strict);    }    catch {        return false;    }}export function isAddress(address) {    if (!address || !isString(address))        return false;    // Convert HEX to Base58    if (address.length === 42) {        try {            // it throws an error if the address starts with 0x            return isAddress(getBase58CheckAddress(hexStr2byteArray(address)));        }        catch (err) {            return false;        }    }    try {        return isAddressValid(address);    }    catch (err) {        return false;    }}//# sourceMappingURL=address.js.map
 |