Address Utilities
The AddressUtils class provides functions for address conversion and validation across different wallet types.
Import
import { AddressUtils } from 'bakosafe';Methods
isPasskey()
Check if an address is a passkey/WebAuthn address.
static isPasskey(value: string): booleanExample:
const isPasskey = AddressUtils.isPasskey('pkau1qz...');
// true
const isPasskey = AddressUtils.isPasskey('fuel1qz...');
// falseisSocial()
Check if an address is a social login address.
static isSocial(value: string): booleanisEvm()
Check if an address is a valid EVM address.
static isEvm(address: string): booleanExample:
const isEvm = AddressUtils.isEvm('0x742d35Cc6634C0532925a3b844Bc9e7595f8fE34');
// true
const isEvm = AddressUtils.isEvm('fuel1qz...');
// falsetoBech32()
Convert a hex address to Bech32 format with specified prefix.
static toBech32(address: string, prefix: Bech32Prefix): stringExample:
const bech32 = AddressUtils.toBech32(
'0x123abc...',
'fuel'
);
// fuel1qz...fromBech32()
Decode a Bech32 address back to hex format.
static fromBech32(address: Bech32): stringExample:
const hex = AddressUtils.fromBech32('fuel1qz...');
// 0x123abc...parseFuelAddressToEth()
Convert a Fuel address to Ethereum-compatible hex format.
static parseFuelAddressToEth(address: string): stringExample:
const ethAddress = AddressUtils.parseFuelAddressToEth('fuel1qz...');
// 0x742d35Cc...hex2string()
Convert hex addresses array to string format, filtering zero bytes.
static hex2string(add: string[]): string[]Bech32 Prefixes
| Prefix | Use Case |
|---|---|
fuel | Standard Fuel addresses |
pkau | Passkey/WebAuthn addresses |
social | Social login addresses |
Address Type Detection
function getAddressType(address: string): string {
if (AddressUtils.isPasskey(address)) {
return 'passkey';
}
if (AddressUtils.isSocial(address)) {
return 'social';
}
if (AddressUtils.isEvm(address)) {
return 'evm';
}
if (address.startsWith('fuel1')) {
return 'fuel';
}
return 'unknown';
}Conversion Examples
Fuel to EVM
const fuelAddress = 'fuel1qz2x...';
const evmAddress = AddressUtils.parseFuelAddressToEth(fuelAddress);
console.log('EVM format:', evmAddress);Hex to Bech32
const hexAddress = '0x123abc456def...';
const fuelAddress = AddressUtils.toBech32(hexAddress, 'fuel');
console.log('Fuel format:', fuelAddress);Bech32 to Hex
const fuelAddress = 'fuel1qz2x...';
const hexAddress = AddressUtils.fromBech32(fuelAddress);
console.log('Hex format:', hexAddress);Validation Helper
function validateSignerAddress(address: string): boolean {
// Check if it's any supported format
if (address.startsWith('fuel1')) return true;
if (AddressUtils.isEvm(address)) return true;
if (AddressUtils.isPasskey(address)) return true;
if (AddressUtils.isSocial(address)) return true;
return false;
}
// Usage
const signers = [
'fuel1abc...',
'0x742d35Cc...',
'pkau1xyz...'
];
const allValid = signers.every(validateSignerAddress);