o
    ¢ØÆh1  ã                   @   sê   d dl Z d dlmZmZ dZe jed�Ze  d ¡Ze  d¡Z	de
de
fdd	„Zd
e
dee
e
f fdd„Zd
e
dee
e
f fdd„Zd
e
de
dee je jf fdd„Zd
e
de
dee je jf fdd„Zde
dee jge jf fdd„ZdS )é    N)ÚCallableÚTupleiç  )Úprecé
   ÚxÚreturnc                 C   s    | d dkr| S | d | d  S )Né    r   © ©r   r	   r	   úb/var/www/html/HyperOracle/crypto_trader/venv/lib/python3.10/site-packages/eth_abi/utils/numeric.pyÚceil32   s    r   Únum_bitsc                 C   s   dd|  d fS )Nr   é   é   r	   ©r   r	   r	   r   Úcompute_unsigned_integer_bounds   s   
þr   c                 C   s    dd| d   d| d  d fS )Néÿÿÿÿr   r   r	   r   r	   r	   r   Úcompute_signed_integer_bounds   s   þr   Úfrac_placesc                 C   sX   t | ƒd }t t¡� t |¡t|   }W d   ƒ t|fS 1 s#w   Y  t|fS )Nr   )r   ÚdecimalÚlocalcontextÚabi_decimal_contextÚDecimalÚTENÚZERO)r   r   Ú	int_upperÚupperr	   r	   r   Úcompute_unsigned_fixed_bounds!   s   
ÿýr   c                 C   sj   t | ƒ\}}t t¡� t|  }t |¡| }t |¡| }W d   ƒ ||fS 1 s,w   Y  ||fS ©N)r   r   r   r   r   r   )r   r   Ú	int_lowerr   ÚexpÚlowerr   r	   r	   r   Úcompute_signed_fixed_bounds-   s   

ýûr"   Úplacesc                    sª   t | tƒstd| › dt| ƒ› d�ƒ‚t t¡� t|   ‰ W d  ƒ n1 s'w   Y  dtjdtjf‡ fdd„}| d	krBd
| › �nd|  › �}d|› �}||_	||_
|S )zs
    Returns a function that shifts the decimal point of decimal values to the
    right by ``places`` places.
    z*Argument `places` must be int.  Got value z	 of type Ú.Nr   r   c                    s6   t  t¡� | ˆ  W  d   ƒ S 1 sw   Y  d S r   )r   r   r   r
   ©Úscaling_factorr	   r   ÚfI   s   $ÿzscale_places.<locals>.fr   ÚEnegÚEposÚ	scale_by_)Ú
isinstanceÚintÚ
ValueErrorÚtyper   r   r   r   r   Ú__name__Ú__qualname__)r#   r'   Úplaces_reprÚ	func_namer	   r%   r   Úscale_places;   s   
ÿÿÿ
r3   )r   Útypingr   r   ÚABI_DECIMAL_PRECÚContextr   r   r   r   r,   r   r   r   r   r"   r3   r	   r	   r	   r   Ú<module>   s0    

ÿþ
ýÿþ
ý$