import {toHex, keccak256Checksum} from '../crypto/utils';
const base32 = require('../crypto/externals/base32');

export function isValidAddress(_address: string): boolean {
    const address = _address.toString().toUpperCase().replace(/-/g, '');
    if (!address || address.length !== 40) {
        return false;
    }
    const decoded = toHex(base32.b32decode(address));
    const stepThreeChecksum = keccak256Checksum(Buffer.from(decoded.slice(0, 42), 'hex'));

    return stepThreeChecksum === decoded.slice(42);
}
