genius-bridge-sdk
Version:
SDK for the Genius Bridge Protocol (GBP)
42 lines • 1.76 kB
JavaScript
;
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