
    ":h                         d dl mZ ddlmZ ee   Zddz  dz
  Zd ZdefdZe dz  Z	edz  Z
dedefd	Zdefd
ZdedefdZdedefdZy)    )List   FIELD_PRIME      valuec                 L    t         | cxk  r	t        k  sn t        d|  d      y )Nz4Uint256 is expected to be in range [0;2**256), got: .)MIN_UINT256MAX_UINT256
ValueErrorr	   s    f/var/www/html/turnos/venv/lib/python3.12/site-packages/ccxt/static_dependencies/starknet/cairo/felt.pyuint256_range_checkr      s-    %.;.B5'K
 	
 /    returnc                 *    d| cxk  xr	 t         k  S c S )Nr   r   r   s    r   is_in_felt_ranger      s    #####r   c                 F    t        |       st        dt         d|  d      y )Nz$Felt is expected to be in range [0; z), got: r   )r   r   r   r   s    r   cairo_vm_range_checkr      s.    E"2;-xwaP
 	
 #r   textc                    t        |       dkD  rt        dt        |        d      	 | j                  d      }t
        j                  |d      }t        |       |S # t        $ r}t        dt	        |        d      |d}~ww xY w)z
    A function which encodes short string value (at most 31 characters) into cairo felt (MSB as first character)

    :param text: A short string value in python
    :return: Short string value encoded into felt
       z6Shortstring cannot be longer than 31 characters, got: r   asciiz!Expected an ascii string. Found: Nbig)lenr   encodeUnicodeEncodeErrorreprint
from_bytesr   )r   
text_bytesu_errr	   s       r   encode_shortstringr%   "   s     4y2~DSYKqQ
 	
W[[)
 NN:u-EL  W<T$ZLJKQVVWs   A 	B%A>>Bc                     t        |        dj                  | j                  dd      D cg c]  }t        |       c}      j	                  d      S c c}w )z
    A function which decodes a felt value to short string (at most 31 characters)

    :param value: A felt value
    :return: Decoded string which is corresponds to that felt
     r   r   )	byteorder )r   jointo_byteschrlstrip)r	   is     r   decode_shortstringr/   8   sF     77ENN2N$GHqCFHIPPQWXXHs   AN)typingr   	constantsr   r!   	CairoDatar   r   r   MIN_FELTMAX_FELTboolr   r   strr%   r/    r   r   <module>r8      s     #I	 Cx1n
s 
 <1!$C $D $
 
S S ,Yc Yc Yr   