
    ":h}              	           d dl Z d dlmZmZmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZmZmZ dd	lmZ dd
z  dz
  ZdZdedefdZdedefdZ	 ddededee   defdZddededefdZdee   defdZdedefdZy)    N)ListOptionalSequence   )keccak   )int_from_bytes)EC_ORDER)ECSignatureprivate_to_stark_keysign)pedersen_hash      0xdatareturnc                 L    t        t        j                  |             t        z  S )z^
    A variant of eth-keccak that computes a value that fits in a Starknet field element.
    )r	   r   SHA3MASK_250r   s    f/var/www/html/turnos/venv/lib/python3.12/site-packages/ccxt/static_dependencies/starknet/hash/utils.py_starknet_keccakr      s     &++d+,x77    c                 R    t        j                  t        g | t        |       d      S )aY  
    Computes a hash chain over the data, in the following order:
        h(h(h(h(0, data[0]), data[1]), ...), data[n-1]), n).

    The hash is initialized with 0 and ends with the data length appended.
    The length is appended in order to avoid collisions of the following kind:
    H([x,y,z]) = h(h(x,y),z) = H([w, z]) where w = h(x,y).
    r   )	functoolsreducer   lenr   s    r   compute_hash_on_elementsr   $   s(     M+=T+=3t9+=qAAr   msg_hashpriv_keyseedc                     t        | ||      S )z-
    Signs the message with private key.
    )r   )r    r!   r"   s      r   message_signaturer$   0   s     (D))r   valuebytes_lengthc                 (    | j                  |d      S )Nbig)	byteorder)to_bytes)r%   r&   s     r   encode_uintr+   E   s    >>,%>88r   c                 2    dj                  d | D              S )Nr   c              3   2   K   | ]  }t        |        y w)N)r+   ).0xs     r   	<genexpr>z#encode_uint_list.<locals>.<genexpr>J   s     1qKN1s   )joinr   s    r   encode_uint_listr2   I   s    881D111r   c                 .    | j                         dz   dz  S )N      )
bit_length)r%   s    r   get_bytes_lengthr7   M   s    "q((r   )    )r   typingr   r   r    r   commonr	   	constantsr
   starkware.crypto.signaturer   r   r   #starkware.crypto.fast_pedersen_hashr   r   
HEX_PREFIXbytesintr   r   r$   r+   r2   r7    r   r   <module>rC      s     + +  #    c6A:
85 8S 8	B8 	B 	B 9;** *(0***9s 9# 9u 9249 2 2)C )C )r   