{"version":3,"sources":["../src/hash/index.ts","../src/sign/constant.ts","../src/sign/ed25519.ts","../src/sign/internal.ts","../src/sign/secp256k1.ts","../src/sign/index.ts","../src/signer.ts","../src/base/base58.ts","../src/base/base58check.ts","../src/base/base64.ts","../src/address/evm.ts","../src/address/initia.ts","../src/address/move.ts","../src/address/solana.ts","../src/address/ton.ts","../src/address/tron.ts","../src/address/utils.ts","../src/address/address.ts"],"names":["_keccak_256","_blake2b","_sha3_256","_sha256","SignAlgorithm","getPublicKey","signHash","decode","encode","arrayify","Address","isHex","hexlify"],"mappings":"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","file":"index.mjs","sourcesContent":["import { blake2b as _blake2b } from '@noble/hashes/blake2b'\nimport { sha256 as _sha256 } from '@noble/hashes/sha256'\nimport { keccak_256 as _keccak_256, sha3_256 as _sha3_256 } from '@noble/hashes/sha3'\n\n/**\n * Computes the Keccak-256 hash of the given message.\n * introduction: https://wiki.rugdoc.io/docs/introduction-to-ethereums-keccak-256-algorithm/\n *\n * @param {Uint8Array | string} message - The input message to hash.\n * @returns {Uint8Array} The Keccak-256 hash of the input message.\n */\nexport function keccak_256(message: Uint8Array | string): Uint8Array {\n    return _keccak_256(message)\n}\n\n/**\n * Computes the BLAKE2b hash of the given message.\n * introduction: https://en.wikipedia.org/wiki/BLAKE_(hash_function)\n *\n * @param {Uint8Array | string} message - The input message to hash.\n * @returns {Uint8Array} The BLAKE2b hash of the input message.\n */\nexport function blake2b(message: Uint8Array | string): Uint8Array {\n    return _blake2b(message)\n}\n\n/**\n * Computes the SHA3-256 hash of the given message.\n *\n * @param {Uint8Array | string} message - The input message to hash.\n * @returns {Uint8Array} The SHA3-256 hash of the input message.\n */\nexport function sha3_256(message: Uint8Array | string): Uint8Array {\n    return _sha3_256(message)\n}\n\n/**\n * Computes the SHA-256 hash of the given message.\n *\n * @param {Uint8Array | string} message - The input message to hash.\n * @returns {Uint8Array} The SHA-256 hash of the input message.\n */\nexport function sha2_256(message: Uint8Array | string): Uint8Array {\n    return _sha256(message)\n}\n","/**\n * Enum representing different signing algorithms.\n */\nexport enum SignAlgorithm {\n    /**\n     * Native signing algorithm.\n     */\n    NATIVE,\n\n    /**\n     * SECP256K1 signing algorithm.\n     * introduction: https://en.bitcoin.it/wiki/Secp256k1\n     */\n    SECP256K1,\n\n    /**\n     * ED25519 signing algorithm.\n     * introduction: https://ed25519.cr.yp.to/\n     */\n    ED25519,\n}\n","import * as ed25519 from '@noble/ed25519'\n\nimport { normalizePrivateKey } from './internal'\n\n/**\n * Signs a hash using the ed25519 algorithm.\n *\n * @param {Uint8Array} hash - The hash to sign, must be 32 bytes long.\n * @param {string | Uint8Array | bigint} privateKey - The private key in hex format, Uint8Array, or bigint.\n * @returns {Promise<Uint8Array>} A promise that resolves to the signature.\n * @throws {Error} If the hash is not 32 bytes long or the signature is invalid.\n */\nexport async function signHash(hash: Uint8Array, privateKey: string | Uint8Array | bigint): Promise<Uint8Array> {\n    if (hash.length !== 32) {\n        throw new Error('Hash must be 32 bytes long')\n    }\n\n    privateKey = normalizePrivateKey(privateKey)\n    const pubKey = await ed25519.getPublicKey(privateKey)\n    const signature = await ed25519.sign(hash, privateKey)\n    const isValid = await ed25519.verify(signature, hash, pubKey)\n    if (!isValid) {\n        throw new Error('Invalid signature')\n    }\n\n    return signature\n}\n\n/**\n * Gets the public key corresponding to the given private key using the ed25519 algorithm.\n *\n * @param {string | Uint8Array | bigint} privateKey - The private key in hex format, Uint8Array, or bigint.\n * @returns {Promise<Uint8Array>} A promise that resolves to the public key.\n */\nexport async function getPublicKey(privateKey: string | Uint8Array | bigint): Promise<Uint8Array> {\n    privateKey = normalizePrivateKey(privateKey)\n    return ed25519.getPublicKey(privateKey)\n}\n","/**\n * Normalizes the private key to a string or Uint8Array.\n * - `getPublicKey` accepts bigint but `sign` does not, in ed25519.\n * - A string privateKey should not have a 0x prefix, in ed25519.\n *\n * @param {string | Uint8Array | bigint} privateKey - The private key to normalize.\n * @returns {string | Uint8Array} The normalized private key.\n */\nexport function normalizePrivateKey(privateKey: string | Uint8Array | bigint): string | Uint8Array {\n    if (typeof privateKey === 'string') {\n        return privateKey.replace(/^0x/, '')\n    } else if (typeof privateKey === 'bigint') {\n        return privateKey.toString(16).padStart(64, '0') // the private key is 32 bytes for ed25519 and secp256k1\n    } else {\n        return privateKey\n    }\n}\n","import * as secp256k1 from '@noble/secp256k1'\n\nimport { normalizePrivateKey } from './internal'\n\n/**\n * Signs a hash using the secp256k1 algorithm.\n *\n * @param {Uint8Array} hash - The hash to sign, must be 32 bytes long.\n * @param {string | Uint8Array | bigint} privateKey - The private key in hex format, Uint8Array, or bigint.\n * @returns {Promise<Uint8Array>} A promise that resolves to the signature.\n * @throws {Error} If the hash is not 32 bytes long or the signature is invalid.\n */\nexport async function signHash(hash: Uint8Array, privateKey: string | Uint8Array | bigint): Promise<Uint8Array> {\n    if (hash.length !== 32) {\n        throw new Error('Hash must be 32 bytes long')\n    }\n\n    privateKey = normalizePrivateKey(privateKey)\n    const pubKey = secp256k1.getPublicKey(privateKey, false)\n\n    // refer to: https://github.com/paulmillr/noble-secp256k1/tree/1.7.1#signmsghash-privatekey\n    const [signature, recoveryId] = await secp256k1.sign(hash, privateKey, {\n        // recovered - true indicates the recovered bit should be included in the result\n        recovered: true,\n        // canonical - true makes signatures compatible with libsecp256k1, false makes signatures compatible with openssl\n        canonical: true,\n        // der - whether the returned signature should be in DER format. If false, it would be in Compact format (32-byte r + 32-byte s)\n        der: false,\n        // extraEntropy - When true, it would automatically be filled with 32 bytes of cryptographically secure entropy. Strongly recommended to pass true to improve security:\n        extraEntropy: undefined,\n    })\n\n    const isValid = secp256k1.verify(signature, hash, pubKey, { strict: true })\n    if (!isValid) {\n        throw new Error('Invalid signature')\n    }\n\n    return Uint8Array.from([...signature, recoveryId])\n}\n\n/**\n * Gets the public key corresponding to the given private key using the secp256k1 algorithm.\n *\n * @param {string | Uint8Array | bigint} privateKey - The private key in hex format, Uint8Array, or bigint.\n * @returns {Promise<Uint8Array>} A promise that resolves to the public key.\n */\nexport async function getPublicKey(privateKey: string | Uint8Array | bigint): Promise<Uint8Array> {\n    privateKey = normalizePrivateKey(privateKey)\n    return Promise.resolve(secp256k1.getPublicKey(privateKey, false))\n}\n","import { SignAlgorithm } from './constant'\nexport * from './keypair'\nexport * from './constant'\nimport * as ed25519 from './ed25519'\nimport * as secp256k1 from './secp256k1'\n\n/**\n * Signs a hash using the specified signing algorithm.\n *\n * @param {Uint8Array} hash - The hash to sign, must be 32 bytes long.\n * @param {string | Uint8Array} privateKey - The private key in hex format or Uint8Array.\n * @param {SignAlgorithm} algorithm - The signing algorithm to use.\n * @returns {Promise<Uint8Array>} A promise that resolves to the signature.\n * @throws {Error} If the hash is not 32 bytes long or the algorithm is unsupported.\n */\nexport async function signHash(\n    hash: Uint8Array,\n    privateKey: string | Uint8Array,\n    algorithm: SignAlgorithm\n): Promise<Uint8Array> {\n    if (hash.length !== 32) {\n        throw new Error('Hash must be 32 bytes long')\n    }\n\n    // privKey should be a hex string without 0x prefix\n    // refer to: https://github.com/paulmillr/noble-secp256k1/blob/5ed251242bf065aeb22a54bb42eee1f67e7c77ce/index.ts#L130\n    const privKey =\n        typeof privateKey === 'string' ? privateKey.replace(/^0x/, '') : Buffer.from(privateKey).toString('hex')\n    switch (algorithm) {\n        case SignAlgorithm.SECP256K1:\n            return secp256k1.signHash(hash, privKey)\n            break\n        case SignAlgorithm.ED25519:\n            return ed25519.signHash(hash, privKey)\n            break\n        default:\n            throw new Error(`Unsupported algorithm: ${algorithm}`)\n    }\n}\n\nexport { secp256k1, ed25519 }\n","import { ed25519, secp256k1 } from './sign'\n/**\n * Interface for signing a hash.\n */\nexport interface HashSigner {\n    /**\n     * Signs a hash.\n     * @param {Uint8Array} hash - The hash to sign, must be 32 bytes long.\n     * @returns {Promise<Uint8Array>} A promise that resolves to the signature.\n     */\n    signHash(hash: Uint8Array): Promise<Uint8Array>\n\n    /**\n     * Returns the public key of the signer.\n     * @returns {Promise<Uint8Array>} A promise that resolves to the public key.\n     */\n    getPublicKey(): Promise<Uint8Array>\n}\n\n/**\n * Class for signing hashes using the secp256k1 algorithm.\n */\nexport class Secp256k1Signer implements HashSigner {\n    private constructor(private readonly privateKey: Uint8Array) {}\n\n    /**\n     * Creates an instance of Secp256k1Signer from a private key.\n     * @param {Uint8Array} privateKey - The private key.\n     * @returns {Secp256k1Signer} The created Secp256k1Signer instance.\n     */\n    static from(privatekey: Uint8Array): Secp256k1Signer {\n        return new Secp256k1Signer(privatekey)\n    }\n\n    /**\n     * Returns the public key of the signer.\n     * @returns {Promise<Uint8Array>} A promise that resolves to the public key.\n     */\n    async getPublicKey(): Promise<Uint8Array> {\n        return secp256k1.getPublicKey(this.privateKey)\n    }\n\n    /**\n     * Signs a hash.\n     * @param {Uint8Array} hash - The hash to sign, must be 32 bytes long.\n     * @returns {Promise<Uint8Array>} A promise that resolves to the signature.\n     */\n    async signHash(hash: Uint8Array): Promise<Uint8Array> {\n        return secp256k1.signHash(hash, this.privateKey)\n    }\n}\n\n/**\n * Class for signing hashes using the ed25519 algorithm.\n */\nexport class Ed25519Signer implements HashSigner {\n    private constructor(private readonly privateKey: Uint8Array) {}\n\n    /**\n     * Creates an instance of Ed25519Signer from a private key.\n     * @param {Uint8Array} privateKey - The private key.\n     * @returns {Ed25519Signer} The created Ed25519Signer instance.\n     */\n    static from(privateKey: Uint8Array): Ed25519Signer {\n        return new Ed25519Signer(privateKey)\n    }\n\n    /**\n     * Signs a hash.\n     * @param {Uint8Array} hash - The hash to sign, must be 32 bytes long.\n     * @returns {Promise<Uint8Array>} A promise that resolves to the signature.\n     */\n    async signHash(hash: Uint8Array): Promise<Uint8Array> {\n        return ed25519.signHash(hash, this.privateKey)\n    }\n\n    /**\n     * Returns the public key of the signer.\n     * @returns {Promise<Uint8Array>} A promise that resolves to the public key.\n     */\n    async getPublicKey(): Promise<Uint8Array> {\n        return ed25519.getPublicKey(this.privateKey)\n    }\n}\n","import { base58 } from '@scure/base'\n\nimport { arrayify } from '@layerzerolabs/lz-utilities'\n\n/**\n * Encodes a string or Uint8Array to a base58 string.\n *\n * @param {string | Uint8Array} value - The value to encode.\n * @returns {string} The base58 encoded string.\n */\nexport function encode(value: string | Uint8Array): string {\n    if (typeof value === 'string') {\n        return base58.encode(arrayify(value))\n    } else {\n        return base58.encode(value)\n    }\n}\n\n/**\n * Decodes a base58 string to a Uint8Array.\n *\n * @param {string} value - The base58 string to decode.\n * @returns {Uint8Array} The decoded Uint8Array.\n */\nexport function decode(value: string): Uint8Array {\n    return base58.decode(value)\n}\n","import { sha256 } from '@noble/hashes/sha256'\nimport { createBase58check } from '@scure/base'\n\nimport { arrayify } from '@layerzerolabs/lz-utilities'\n\n/**\n * Encodes a string or Uint8Array to a base58check string.\n *\n * @param {string | Uint8Array} value - The value to encode.\n * @returns {string} The base58check encoded string.\n */\nexport function encode(value: string | Uint8Array): string {\n    const base58check = createBase58check(sha256)\n    if (typeof value === 'string') {\n        return base58check.encode(arrayify(value))\n    } else {\n        return base58check.encode(value)\n    }\n}\n\n/**\n * Decodes a base58check string to a Uint8Array.\n *\n * @param {string} value - The base58check string to decode.\n * @returns {Uint8Array} The decoded Uint8Array.\n */\nexport function decode(value: string): Uint8Array {\n    const base58check = createBase58check(sha256)\n    return base58check.decode(value)\n}\n","import { base64 } from '@scure/base'\n\nimport { arrayify } from '@layerzerolabs/lz-utilities'\n\n/**\n * Encodes a string or Uint8Array to a base64 string.\n *\n * @param {string | Uint8Array} value - The value to encode.\n * @returns {string} The base64 encoded string.\n */\nexport function encode(value: string | Uint8Array): string {\n    if (typeof value === 'string') {\n        return base64.encode(arrayify(value))\n    } else {\n        return base64.encode(value)\n    }\n}\n\n/**\n * Decodes a base64 string to a Uint8Array.\n *\n * @param {string} value - The base64 string to decode.\n * @returns {Uint8Array} The decoded Uint8Array.\n */\nexport function decode(value: string): Uint8Array {\n    return base64.decode(value)\n}\n","import { Hex, arrayify, hexlify, isHex, padify } from '@layerzerolabs/lz-utilities'\n\nimport { Address as AddressInterface } from './address'\nimport { keccak_256 } from '../hash'\n\n/**\n * Represents an EVM address.\n * @see {@link AddressInterface}\n */\nexport class Address implements AddressInterface {\n    /**\n     * The raw address data.\n     */\n    private data: Uint8Array\n\n    /**\n     * Creates an instance of Address.\n     * @param {Uint8Array | string} value - The address value.\n     * @throws {Error} If the address is invalid.\n     */\n    constructor(value: Uint8Array | string) {\n        let data: Uint8Array | undefined = undefined\n        if (value instanceof Uint8Array) {\n            data = value\n        } else if (typeof value === 'string' && isHex(value)) {\n            data = arrayify(value)\n        }\n\n        if (data === undefined) {\n            throw new Error('Invalid address')\n        }\n\n        if (data.length > 20) {\n            const prefix = data.slice(0, data.length - 20)\n            const isAllZero = prefix.every((byte) => byte === 0)\n            if (!isAllZero) {\n                throw new Error('Invalid address length. Expected less or equal than 20 bytes.')\n            }\n        }\n\n        this.data = data\n    }\n\n    /**\n     * Creates an Address instance from a value.\n     * @param {Uint8Array | string} value - The address value.\n     * @returns {Address} The Address instance.\n     */\n    static from(value: Uint8Array | string): Address {\n        return new Address(value)\n    }\n\n    /**\n     * Inspects the address.\n     * @returns {string} The address as a string.\n     */\n    inspect(): string {\n        return this.toString()\n    }\n\n    /**\n     * Converts the address to a string.\n     * @returns {string} The address as a string.\n     */\n    toString(): string {\n        return this.hr()\n    }\n\n    /**\n     * Gets the raw address data.\n     * @returns {Uint8Array} The raw address data.\n     */\n    raw(): Uint8Array {\n        return this.data\n    }\n\n    /**\n     * Gets the human-readable address.\n     * @returns {string} The human-readable address.\n     */\n    hr(): string {\n        const value = hexlify(padify(this.data, { size: 20 }))\n        return toChecksumAddress(value)\n    }\n\n    /**\n     * Gets the address as a hexadecimal string.\n     * @returns {Hex} The address as a hexadecimal string.\n     */\n    hex(): Hex {\n        return hexlify(padify(this.data, { size: 20 }))\n    }\n}\n\n/**\n * Converts an address to its checksum format.\n * @param {string} address - The address to convert.\n * @returns {string} The checksummed address.\n */\nexport function toChecksumAddress(address: string): string {\n    // https://eips.ethereum.org/EIPS/eip-55\n    const lowercasedAddress = address.toLowerCase().replace('0x', '')\n\n    const hash = Buffer.from(keccak_256(lowercasedAddress)).toString('hex')\n\n    let checksumAddress = '0x'\n    for (let i = 0; i < lowercasedAddress.length; i++) {\n        if (parseInt(hash[i], 16) > 7) {\n            checksumAddress += lowercasedAddress[i].toUpperCase()\n        } else {\n            checksumAddress += lowercasedAddress[i]\n        }\n    }\n\n    return checksumAddress\n}\n","import { bech32 } from 'bech32'\n\nimport { Hex, arrayify, hexlify, isHex } from '@layerzerolabs/lz-utilities'\n\nimport { Address as AddressInterface } from './address'\n\n/**\n * Represents an Initia address.\n * @see {@link AddressInterface}\n */\nexport class Address implements AddressInterface {\n    /**\n     * The raw address data.\n     */\n    private data: Uint8Array\n\n    /**\n     * Creates an instance of Address.\n     * @param {Uint8Array | string} value - The address value.\n     * @throws {Error} If the address is invalid.\n     */\n    constructor(value: Uint8Array | string) {\n        let data: Uint8Array | undefined = undefined\n\n        if (value instanceof Uint8Array) {\n            data = value\n        } else {\n            if (isHex(value)) {\n                data = arrayify(value)\n            } else if (this.validateInitiaAddress(value)) {\n                const vals = bech32.decode(value)\n                data = new Uint8Array(Buffer.from(bech32.fromWords(vals.words)))\n            }\n        }\n        if (data === undefined) {\n            throw new Error('Invalid address')\n        }\n\n        if (data.length > 32) {\n            throw new Error('Invalid address length. Expected less or equal than 32 bytes.')\n        }\n\n        this.data = data\n    }\n\n    /**\n     * Creates an Address instance from a value.\n     * @param {Uint8Array | string} value - The address value.\n     * @returns {Address} The Address instance.\n     */\n    static from(value: Uint8Array | string): Address {\n        return new Address(value)\n    }\n\n    /**\n     * Inspects the address.\n     * @returns {string} The address as a string.\n     */\n    inspect(): string {\n        return this.toString()\n    }\n\n    /**\n     * Converts the address to a string.\n     * @returns {string} The address as a string.\n     */\n    toString(): string {\n        return this.hr()\n    }\n\n    /**\n     * Gets the raw address data.\n     * @returns {Uint8Array} The raw address data.\n     */\n    raw(): Uint8Array {\n        return this.data\n    }\n\n    /**\n     * Gets the human-readable address.\n     * @returns {string} The human-readable address.\n     */\n    hr(): string {\n        return this.fromHex(this.hex())\n    }\n\n    /**\n     * Gets the address as a hexadecimal string.\n     * @returns {Hex} The address as a hexadecimal string.\n     */\n    hex(): Hex {\n        return hexlify(this.data)\n    }\n\n    private checkPrefixAndLength(prefix: string, data: string, length: number): boolean {\n        try {\n            const vals = bech32.decode(data)\n            return vals.prefix === prefix && data.length == length\n        } catch (e) {\n            return false\n        }\n    }\n\n    /**\n     * Checks if a string is a valid Initia account address.\n     * @param data string to check\n     */\n    private validateInitiaAddress(data: string): boolean {\n        return this.checkPrefixAndLength('init', data, 43) || this.checkPrefixAndLength('init', data, 63)\n    }\n\n    /**\n     * Converts a hex address into an account address\n     * @param hexAddress hex address\n     */\n    private fromHex(hexAddress: string): string {\n        const hex = hexAddress.replace(/^0x0+|^0x|^0+(?!x)/, '')\n        if (hex.length <= 40) {\n            return bech32.encode('init', bech32.toWords(Buffer.from(hex.padStart(40, '0'), 'hex')))\n        } else {\n            return bech32.encode('init', bech32.toWords(Buffer.from(hex.padStart(64, '0'), 'hex')))\n        }\n    }\n}\n","import { Hex, arrayify, hexlify, isHex } from '@layerzerolabs/lz-utilities'\n\nimport { Address as AddressInterface } from './address'\n\n/**\n * Represents an Aptos address.\n * @see {@link AddressInterface}\n */\nexport class Address implements AddressInterface {\n    /**\n     * The raw address data.\n     */\n    private data: Uint8Array\n\n    /**\n     * Creates an instance of Address.\n     * @param {Uint8Array | string} value - The address value.\n     * @throws {Error} If the address is invalid.\n     */\n    constructor(value: Uint8Array | string) {\n        let data: Uint8Array | undefined = undefined\n\n        if (value instanceof Uint8Array) {\n            data = value\n        } else if (typeof value === 'string') {\n            if (isHex(value)) {\n                data = arrayify(value)\n            }\n        }\n        if (data === undefined) {\n            throw new Error('Invalid address')\n        }\n\n        if (data.length > 32) {\n            throw new Error('Invalid address length. Expected less or equal than 32 bytes.')\n        }\n\n        this.data = data\n    }\n\n    /**\n     * Creates an Address instance from a value.\n     * @param {Uint8Array | string} value - The address value.\n     * @returns {Address} The Address instance.\n     */\n    static from(value: Uint8Array | string): Address {\n        return new Address(value)\n    }\n\n    /**\n     * Inspects the address.\n     * @returns {string} The address as a string.\n     */\n    inspect(): string {\n        return this.toString()\n    }\n\n    /**\n     * Converts the address to a string.\n     * @returns {string} The address as a string.\n     */\n    toString(): string {\n        return this.hr()\n    }\n\n    /**\n     * Gets the raw address data.\n     * @returns {Uint8Array} The raw address data.\n     */\n    raw(): Uint8Array {\n        return this.data\n    }\n\n    /**\n     * Gets the human-readable address.\n     * @returns {string} The human-readable address.\n     */\n    hr(): string {\n        return hexlify(this.data)\n    }\n\n    /**\n     * Gets the address as a hexadecimal string.\n     * @returns {Hex} The address as a hexadecimal string.\n     */\n    hex(): Hex {\n        return hexlify(this.data)\n    }\n}\n","import { Hex, arrayify, hexlify, isHex } from '@layerzerolabs/lz-utilities'\n\nimport { Address as AddressInterface } from './address'\nimport { base58 } from '../base'\n\n/**\n * Represents a Solana address.\n * @see {@link AddressInterface}\n */\nexport class Address implements AddressInterface {\n    /**\n     * The raw address data.\n     */\n    private data: Uint8Array\n\n    /**\n     * Creates an instance of Address.\n     * @param {Uint8Array | string} value - The address value.\n     * @throws {Error} If the address is invalid.\n     */\n    constructor(value: Uint8Array | string) {\n        let data: Uint8Array | undefined = undefined\n        if (value instanceof Uint8Array) {\n            data = value\n        } else if (typeof value === 'string') {\n            if (isHex(value)) {\n                data = arrayify(value)\n            } else {\n                data = base58.decode(value)\n            }\n        }\n\n        if (data === undefined) {\n            throw new Error('Invalid address')\n        }\n\n        if (data.length > 32) {\n            throw new Error('Invalid address length. Expected less or equal than 32 bytes.')\n        }\n\n        this.data = data\n    }\n\n    /**\n     * Creates an Address instance from a value.\n     * @param {Uint8Array | string} value - The address value.\n     * @returns {Address} The Address instance.\n     */\n    static from(value: Uint8Array | string): Address {\n        return new Address(value)\n    }\n\n    /**\n     * Inspects the address.\n     * @returns {string} The address as a string.\n     */\n    inspect(): string {\n        return this.toString()\n    }\n\n    /**\n     * Converts the address to a string.\n     * @returns {string} The address as a string.\n     */\n    toString(): string {\n        return this.hr()\n    }\n\n    /**\n     * Gets the raw address data.\n     * @returns {Uint8Array} The raw address data.\n     */\n    raw(): Uint8Array {\n        return this.data\n    }\n\n    /**\n     * Gets the human-readable address.\n     * @returns {string} The human-readable address.\n     */\n    hr(): string {\n        return base58.encode(this.data)\n    }\n\n    /**\n     * Gets the address as a hexadecimal string.\n     * @returns {Hex} The address as a hexadecimal string.\n     */\n    hex(): Hex {\n        return hexlify(this.data)\n    }\n}\n","import { Hex, arrayify, hexlify, isHex } from '@layerzerolabs/lz-utilities'\n\nimport { Address as AddressInterface } from './address'\n\nconst bounceable_tag = 0x11\nconst non_bounceable_tag = 0x51\nconst test_flag = 0x80\n\n/**\n * Represents a Ton address.\n * @see {@link AddressInterface}\n */\nexport class Address implements AddressInterface {\n    private workchain = 0\n    /**\n     * The raw address data.\n     */\n    private data: Uint8Array\n\n    private testOnly = false\n    private bounceable = true\n    /**\n     * Creates an instance of Address.\n     * @param {Uint8Array | string} value - The address value.\n     * @throws {Error} If the address is invalid.\n     */\n    constructor(value: Uint8Array | string) {\n        let data: Uint8Array | undefined = undefined\n        if (value instanceof Uint8Array) {\n            data = value\n        } else if (typeof value === 'string') {\n            console.log('value', value)\n            if (this.isFriendly(value)) {\n                const { workchain, hashPart, isTestOnly, isBounceable } = this.parseFriendlyAddress(\n                    value.replace(/-/g, '+').replace(/_/g, '/')\n                )\n                this.workchain = workchain\n                data = hashPart\n                this.testOnly = isTestOnly\n                this.bounceable = isBounceable\n            } else if (this.isRaw(value)) {\n                const { workchain, hashPart } = this.parseRaw(value)\n                this.workchain = workchain\n                data = hashPart\n            } else if (isHex(value)) {\n                data = arrayify(value)\n            }\n        }\n\n        if (data === undefined) {\n            throw new Error('Invalid address')\n        }\n\n        if (data.length != 32) {\n            throw new Error('Invalid hash part length. Expected equal to 32 bytes.')\n        }\n\n        this.data = data\n    }\n\n    /**\n     * Creates an Address instance from a value.\n     * @param {Uint8Array | string} value - The address value.\n     * @returns {Address} The Address instance.\n     */\n    static from(value: Uint8Array | string): Address {\n        return new Address(value)\n    }\n\n    /**\n     * Inspects the address.\n     * @returns {string} The address as a string.\n     */\n    inspect(): string {\n        return this.toString()\n    }\n\n    /**\n     * Converts the address to a string.\n     * @returns {string} The address as a string.\n     */\n    toString(): string {\n        return this.hr()\n    }\n\n    /**\n     * Gets the raw address data.\n     * @returns {Uint8Array} The raw address data.\n     */\n    raw(): Uint8Array {\n        return this.data\n    }\n\n    /**\n     * Gets the human-readable address.\n     * @returns {string} The human-readable address.\n     */\n    hr(): string {\n        const buffer = this.toStringBuffer()\n        return buffer.toString('base64')\n    }\n\n    /**\n     * Gets the address as a hexadecimal string.\n     * @returns {Hex} The address as a hexadecimal string.\n     */\n    hex(): Hex {\n        return hexlify(this.data)\n    }\n\n    private isFriendly(source: string): boolean {\n        // Check length\n        if (source.length !== 48) {\n            return false\n        }\n        // Check if address is valid base64\n        if (!/[A-Za-z0-9+/_-]+/.test(source)) {\n            return false\n        }\n        return true\n    }\n\n    private isRaw(source: string): boolean {\n        // Check if has delimiter\n        if (!source.includes(':')) {\n            return false\n        }\n\n        const [wc, hash] = source.split(':')\n\n        // wc is not valid\n        if (!Number.isInteger(parseFloat(wc))) {\n            return false\n        }\n\n        // hash is not valid\n        if (!/[a-f0-9]+/.test(hash.toLowerCase())) {\n            return false\n        }\n\n        // hash is not correct\n        if (hash.length !== 64) {\n            return false\n        }\n\n        return true\n    }\n\n    private parseRaw(source: string): {\n        workchain: number\n        hashPart: Uint8Array\n    } {\n        return {\n            workchain: parseInt(source.split(':')[0]),\n            hashPart: new Uint8Array(Buffer.from(source.split(':')[1], 'hex')),\n        }\n    }\n\n    private parseFriendlyAddress(src: string): {\n        isTestOnly: boolean\n        isBounceable: boolean\n        workchain: number\n        hashPart: Uint8Array\n    } {\n        if (!this.isFriendly(src)) {\n            throw new Error('Unknown address type')\n        }\n\n        const data = Buffer.isBuffer(src) ? src : Buffer.from(src, 'base64')\n\n        // 1byte tag + 1byte workchain + 32 bytes hash + 2 byte crc\n        if (data.length !== 36) {\n            throw new Error('Unknown address type: byte length is not equal to 36')\n        }\n\n        // Prepare data\n        const addr = data.subarray(0, 34)\n        const crc = data.subarray(34, 36)\n        const calcedCrc = this.crc16(addr)\n        if (!(calcedCrc[0] === crc[0] && calcedCrc[1] === crc[1])) {\n            throw new Error(`Invalid checksum: ${src}`)\n        }\n\n        // Parse tag\n        let tag = addr[0]\n        let isTestOnly = false\n        let isBounceable = false\n        if (tag & test_flag) {\n            isTestOnly = true\n            tag = tag ^ test_flag\n        }\n        if (tag !== bounceable_tag && tag !== non_bounceable_tag) throw new Error('Unknown address tag')\n\n        isBounceable = tag === bounceable_tag\n\n        let workchain = null\n        if (addr[1] === 0xff) {\n            // TODO we should read signed integer here\n            workchain = -1\n        } else {\n            workchain = addr[1]\n        }\n\n        const hashPart = addr.subarray(2, 34)\n\n        return { isTestOnly, isBounceable, workchain, hashPart }\n    }\n\n    private crc16(data: Buffer): Uint8Array {\n        const poly = 0x1021\n        let reg = 0\n        const message = Buffer.alloc(data.length + 2)\n        message.set(data)\n        for (const byte of message) {\n            let mask = 0x80\n            while (mask > 0) {\n                reg <<= 1\n                if (byte & mask) {\n                    reg += 1\n                }\n                mask >>= 1\n                if (reg > 0xffff) {\n                    reg &= 0xffff\n                    reg ^= poly\n                }\n            }\n        }\n        return Buffer.from([Math.floor(reg / 256), reg % 256])\n    }\n\n    private toStringBuffer(): Buffer {\n        let tag = this.bounceable ? bounceable_tag : non_bounceable_tag\n        if (this.testOnly) {\n            tag |= test_flag\n        }\n\n        const addr = Buffer.alloc(34)\n        addr[0] = tag\n        addr[1] = this.workchain\n        addr.set(this.data, 2)\n        const addressWithChecksum = Buffer.alloc(36)\n        addressWithChecksum.set(addr)\n        addressWithChecksum.set(this.crc16(addr), 34)\n        return addressWithChecksum\n    }\n}\n","import { Hex, arrayify, hexlify, isHex } from '@layerzerolabs/lz-utilities'\n\nimport { Address as AddressInterface } from './address'\nimport { base58check } from '../base'\n\n/**\n * Represents a Tron address.\n * @see {@link AddressInterface}\n */\nexport class Address implements AddressInterface {\n    /**\n     * The raw address data.\n     */\n    private data: Uint8Array\n\n    /**\n     * Creates an instance of Address.\n     * @param {Uint8Array | string} value - The address value.\n     * @throws {Error} If the address is invalid.\n     */\n    constructor(value: Uint8Array | string) {\n        let data: Uint8Array | undefined = undefined\n        if (value instanceof Uint8Array) {\n            data = value\n        } else if (typeof value === 'string') {\n            if (isHex(value)) {\n                data = arrayify(value)\n            } else {\n                data = base58check.decode(value)\n            }\n        }\n\n        if (data === undefined) {\n            throw new Error('Invalid address')\n        }\n        if (data.length != 20) {\n            throw new Error('Invalid address length. Expected 20 bytes.')\n        }\n\n        this.data = data\n    }\n\n    /**\n     * Creates an Address instance from a value.\n     * @param {Uint8Array | string} value - The address value.\n     * @returns {Address} The Address instance.\n     */\n    static from(value: Uint8Array | string): Address {\n        return new Address(value)\n    }\n\n    /**\n     * Inspects the address.\n     * @returns {string} The address as a string.\n     */\n    inspect(): string {\n        return this.toString()\n    }\n\n    /**\n     * Converts the address to a string.\n     * @returns {string} The address as a string.\n     */\n    toString(): string {\n        return this.hr()\n    }\n\n    /**\n     * Gets the raw address data.\n     * @returns {Uint8Array} The raw address data.\n     */\n    raw(): Uint8Array {\n        return this.data\n    }\n\n    /**\n     * Gets the human-readable address.\n     * @returns {string} The human-readable address.\n     */\n    hr(): string {\n        return base58check.encode(this.data)\n    }\n\n    /**\n     * Gets the address as a hexadecimal string.\n     * @returns {Hex} The address as a hexadecimal string.\n     */\n    hex(): Hex {\n        return hexlify(this.data)\n    }\n}\n","import { Chain, ChainType, chainToChainType } from '@layerzerolabs/lz-definitions'\n\nimport { Address as AddressInterface } from './address'\nimport * as evm from './evm'\nimport * as initia from './initia'\nimport * as move from './move'\nimport * as solana from './solana'\nimport * as ton from './ton'\nimport * as tron from './tron'\n\nexport const Address = {\n    from: (address: string | Uint8Array, chain: Chain): AddressInterface => {\n        const chainType = chainToChainType(chain)\n        switch (chainType) {\n            case ChainType.EVM:\n                if (chain === Chain.TRON) {\n                    return tron.Address.from(address)\n                }\n                return evm.Address.from(address)\n            case ChainType.IOTAL1:\n            case ChainType.APTOS:\n            case ChainType.SUI: // TODO: use Sui address\n                return move.Address.from(address)\n            case ChainType.INITIA:\n                return initia.Address.from(address)\n            case ChainType.SOLANA:\n                return solana.Address.from(address)\n            case ChainType.TON:\n                return ton.Address.from(address)\n            default:\n                throw new Error(`Unsupported chain type: ${chainType}`)\n        }\n    },\n}\n","import { Address as AddressInterface } from './types'\nimport { Address as AddressObject } from './utils'\n\nconst Address = AddressObject\ntype Address = AddressInterface\n\nexport { Address }\n"]}