32 lines
1.1 KiB
Python
32 lines
1.1 KiB
Python
from __future__ import annotations
|
|
|
|
from ..constants import BCH, BSC, BTC, DASH, DOGE, ETH, LTC, POLYGON
|
|
from .bch import validate_bch_address
|
|
from .btc import validate_btc_address
|
|
from .common import is_address_characters_safe
|
|
from .dash import validate_dash_address
|
|
from .doge import validate_doge_address
|
|
from .evm import validate_evm_address
|
|
from .ltc import validate_ltc_address
|
|
|
|
|
|
def validate_address(coin: str, address: str) -> tuple[bool, str]:
|
|
if not address:
|
|
return False, "Address is required"
|
|
if not is_address_characters_safe(address):
|
|
return False, "Address contains unsupported characters"
|
|
|
|
if coin == BTC:
|
|
return validate_btc_address(address)
|
|
if coin == LTC:
|
|
return validate_ltc_address(address)
|
|
if coin == DOGE:
|
|
return validate_doge_address(address)
|
|
if coin == DASH:
|
|
return validate_dash_address(address)
|
|
if coin == BCH:
|
|
return validate_bch_address(address)
|
|
if coin in (ETH, BSC, POLYGON):
|
|
return validate_evm_address(address)
|
|
return False, "Unsupported coin"
|