UNPKG

genius-bridge-sdk

Version:
42 lines 1.76 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.validateSuiAddress = exports.validateAndChecksumEvmAddress = exports.validateSolanaAddress = exports.validateAddress = exports.SUI_REGEX = void 0; const web3_js_1 = require("@solana/web3.js"); const ethers_1 = require("ethers"); exports.SUI_REGEX = { coin: /^0x[a-fA-F0-9]{64}::[a-zA-Z_][a-zA-Z0-9_]*::[A-Z][A-Z0-9_]*$/, wallet: /^0x[a-fA-F0-9]{64}$/, }; const validateAddress = (address) => { (0, exports.validateSolanaAddress)(address); (0, exports.validateAndChecksumEvmAddress)(address); (0, exports.validateSuiAddress)(address); }; exports.validateAddress = validateAddress; const validateSolanaAddress = (address) => { try { web3_js_1.PublicKey.isOnCurve(new web3_js_1.PublicKey(address)); } catch { throw new Error(`${address} is not a valid SOLANA address.`); } }; exports.validateSolanaAddress = validateSolanaAddress; const validateAndChecksumEvmAddress = (address) => { const result = ethers_1.ethers.getAddress(address.toLowerCase()); if (!result) throw new Error(`${address} is not a valid EVM address.`); else return result; }; exports.validateAndChecksumEvmAddress = validateAndChecksumEvmAddress; const validateSuiAddress = (address) => { const isValidCoinAddress = exports.SUI_REGEX.coin.test(address); const isValidWalletAddress = exports.SUI_REGEX.wallet.test(address); const isShortenedNative = address === '0x2::sui::SUI'; if (!isValidCoinAddress && !isValidWalletAddress && !isShortenedNative) { throw new Error(`Invalid SUI address: ${address}`); } }; exports.validateSuiAddress = validateSuiAddress; //# sourceMappingURL=address-validation.js.map