@layerzerolabs/lz-foundation 3.0.141 → 3.0.143
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/CHANGELOG.md +18 -0
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @layerzerolabs/lz-foundation
|
|
2
2
|
|
|
3
|
+
## 3.0.143
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 2b9515d: endpoints: nexera, stable
|
|
8
|
+
- Updated dependencies [2b9515d]
|
|
9
|
+
- @layerzerolabs/lz-definitions@3.0.143
|
|
10
|
+
- @layerzerolabs/lz-utilities@3.0.143
|
|
11
|
+
|
|
12
|
+
## 3.0.142
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- ecf5da4: Update the Iota oft sdk
|
|
17
|
+
- Updated dependencies [ecf5da4]
|
|
18
|
+
- @layerzerolabs/lz-definitions@3.0.142
|
|
19
|
+
- @layerzerolabs/lz-utilities@3.0.142
|
|
20
|
+
|
|
3
21
|
## 3.0.141
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
package/dist/index.cjs
CHANGED
|
@@ -869,7 +869,7 @@ var Address7 = {
|
|
|
869
869
|
return Address6.from(address);
|
|
870
870
|
}
|
|
871
871
|
return Address.from(address);
|
|
872
|
-
case lzDefinitions.ChainType.
|
|
872
|
+
case lzDefinitions.ChainType.IOTAL1:
|
|
873
873
|
case lzDefinitions.ChainType.APTOS:
|
|
874
874
|
case lzDefinitions.ChainType.SUI:
|
|
875
875
|
return Address3.from(address);
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"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","ed25519","signHash","secp256k1","base58","arrayify","decode","encode","createBase58check","sha256","base64","isHex","hexlify","padify","Address","bech32","chainToChainType","ChainType","Chain"],"mappings":"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","file":"index.cjs","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.IOTAMOVE:\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"]}
|
|
1
|
+
{"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","ed25519","signHash","secp256k1","base58","arrayify","decode","encode","createBase58check","sha256","base64","isHex","hexlify","padify","Address","bech32","chainToChainType","ChainType","Chain"],"mappings":"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","file":"index.cjs","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"]}
|
package/dist/index.mjs
CHANGED
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"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.IOTAMOVE:\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"]}
|
|
1
|
+
{"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"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@layerzerolabs/lz-foundation",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.143",
|
|
4
4
|
"description": "LayerZero Core Library",
|
|
5
5
|
"license": "BUSL-1.1",
|
|
6
6
|
"exports": {
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
"clean-prebuild": "rm -rf dist"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@layerzerolabs/lz-definitions": "^3.0.
|
|
27
|
-
"@layerzerolabs/lz-utilities": "^3.0.
|
|
26
|
+
"@layerzerolabs/lz-definitions": "^3.0.143",
|
|
27
|
+
"@layerzerolabs/lz-utilities": "^3.0.143",
|
|
28
28
|
"@noble/ed25519": "^1.7.1",
|
|
29
29
|
"@noble/hashes": "^1.3.2",
|
|
30
30
|
"@noble/secp256k1": "^1.7.1",
|
|
@@ -34,8 +34,8 @@
|
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@jest/globals": "^29.7.0",
|
|
37
|
-
"@layerzerolabs/tsup-config-next": "^3.0.
|
|
38
|
-
"@layerzerolabs/typescript-config-next": "^3.0.
|
|
37
|
+
"@layerzerolabs/tsup-config-next": "^3.0.143",
|
|
38
|
+
"@layerzerolabs/typescript-config-next": "^3.0.143",
|
|
39
39
|
"@microsoft/api-extractor": "~7.47.0",
|
|
40
40
|
"@types/jest": "^29.5.10",
|
|
41
41
|
"jest": "^29.7.0",
|