UNPKG

chaingate

Version:

Multi-chain cryptocurrency SDK for TypeScript — unified API for Bitcoin, Ethereum, Litecoin, Dogecoin, Bitcoin Cash, Polygon, Arbitrum, and any EVM-compatible chain. Create wallets, query balances, send transactions, and manage tokens and NFTs across UTXO

68 lines (67 loc) 2.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EvmNetworkDescriptor = void 0; const crypto_1 = require("../../utils/crypto"); const messageSigning_1 = require("../../utils/messageSigning"); const NetworkDescriptor_1 = require("./NetworkDescriptor"); /** A {@link NetworkDescriptor} whose {@link id} is an EVM network. */ class EvmNetworkDescriptor extends NetworkDescriptor_1.NetworkDescriptor { /** @internal */ constructor(id, info, marketsCache, apiKey) { super(id, info, marketsCache, apiKey); } /** * Derives an EIP-55 checksummed Ethereum address from a public key. * * @param publicKey - Compressed or uncompressed secp256k1 public key. */ publicKeyToAddress(publicKey) { return (0, crypto_1.publicKeyToEthAddress)(publicKey); } /** * Checks whether a string is a valid EVM address for this network. * * Accepts both checksummed and all-lowercase/all-uppercase forms. * When the address uses mixed case, the EIP-55 checksum is verified. * * @param address - The address string to validate. * @returns `true` if the address is valid. */ isValidAddress(address) { return (0, crypto_1.isValidEvmAddress)(address); } /** * Signs a message using EIP-191 personal sign (the same scheme as MetaMask's * `personal_sign`). * * @param message - The message to sign (string or raw bytes). * @param privateKey - The 32-byte secp256k1 private key. * @returns The 65-byte signature as a hex string with `0x` prefix. * * @example * ```ts * const key = await wallet.derive("m/44'/60'/0'/0/0"); * const sig = cg.networks.ethereum.signMessage('Hello', key.privateKey.raw); * ``` */ signMessage(message, privateKey) { return (0, messageSigning_1.signEvmMessage)(message, privateKey); } /** * Verifies an EIP-191 personal sign signature. * * @param message - The original message. * @param signature - The signature hex string (with `0x` prefix). * @param address - The expected signer address. * @returns `true` if the signature is valid. * * @example * ```ts * const valid = cg.networks.ethereum.verifyMessage('Hello', sig, '0xAb5801a7...'); * ``` */ verifyMessage(message, signature, address) { return (0, messageSigning_1.verifyEvmMessage)(message, signature, address); } } exports.EvmNetworkDescriptor = EvmNetworkDescriptor;