o
    7Di[                     @   sZ   d Z ddlZddlZddlmZ dedefddZdedefdd	Z	ed
efddZ
dS )zTRX Address.    N)	validatoraddrreturnc                 C   s2   d}d}| D ]}|d | | }q|jdddS )z Decode a base58 encoded address.:123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyzr   :      big)	byteorder)indexto_bytes)r   alphabetnumchar r   `/var/www/Datamplify/venv/lib/python3.10/site-packages/validators/crypto_addresses/trx_address.py_base58_decode   s
   r   c                 C   s   t | dkrdS zt| }W n
 ty   Y dS w t |dks%|d dkr'dS tt|dd   dd }|dd |kS )	z#Validate TRX type checksum address."   Fr   r   A   N   )lenr   
ValueErrorhashlibsha256digest)r   address	check_sumr   r   r   _validate_trx_checksum_address   s   (r   valuec                C   s    | sdS t d| ot| S )aG  Return whether or not given value is a valid tron address.

    Full validation is implemented for TRC20 tron addresses.

    Examples:
        >>> trx_address('TLjfbTbpZYDQ4EoA4N5CLNgGjfbF8ZWz38')
        True
        >>> trx_address('TR2G7Rm4vFqF8EpY4U5xdLdQ7XgJ2U8Vd')
        ValidationError(func=trx_address, args={'value': 'TR2G7Rm4vFqF8EpY4U5xdLdQ7XgJ2U8Vd'})

    Args:
        value:
            Tron address string to validate.

    Returns:
        (Literal[True]): If `value` is a valid tron address.
        (ValidationError): If `value` is an invalid tron address.
    Fz^[T][a-km-zA-HJ-NP-Z1-9]{33}$)recompilematchr   )r   r   r   r   trx_address%   s   
r"   )__doc__r   r   validators.utilsr   strbytesr   boolr   r"   r   r   r   r   <module>   s    	