
    (iT	                         d dl Z d dlZddlmZmZmZ dedefdZdedefdZ	dd	e
defd
Zdedede
fdZdedede
fdZy)    N   )OrderBookSummaryOrderSummaryTickSizeraw_obsreturnc                    g }| d   D ]$  }|j                  t        |d   |d                & g }| d   D ]$  }|j                  t        |d   |d                & t        | d   | d   | d   | d	   | d
   | d   | d   ||| d   
      }|S )Nbidssizeprice)r   r   asksmarketasset_id	timestamplast_trade_pricemin_order_sizeneg_risk	tick_sizehash)
r   r   r   r   r   r   r   r
   r   r   )appendr   r   )r   r
   bidr   askorderbookSummarys         I/var/www/br/venv/lib/python3.12/site-packages/py_clob_client/utilities.pyparse_raw_orderbook_summaryr      s    Dv HLc&kWFGH Dv HLc&kWFGH (x $+& !34/0$+&V_     	orderbookc                 .   | j                   | j                  | j                  d| j                  xs g D cg c]  }|j                  |j
                  d c}| j                  xs g D cg c]  }|j                  |j
                  d c}| j                  | j                  | j                  | j                  d
}t        j                  |dd      }t        j                  |j                  d            j!                         }|| _        |S c c}w c c}w )z
    Server-compatible orderbook hash.

    The server computes SHA1 over a compact JSON payload with a specific key order,
    and with the "hash" field set to an empty string while hashing.
     )r   r   )
r   r   r   r   r
   r   r   r   r   r   ),:F)
separatorsensure_asciizutf-8)r   r   r   r
   r   r   r   r   r   r   r   jsondumpshashlibsha1encode	hexdigestr   )r   opayload
serializedhs        r   generate_orderbook_summary_hashr.       s     ""&&((>Gnn>RPRT177AFF3T>Gnn>RPRT177AFF3T#22((&&%66G G
OJZ&&w/0::<AINH UTs    D) D	post_onlyc                 ,    | j                         |||dS )N)orderowner	orderTypepostOnly)dict)r1   r2   r3   r/   s       r   order_to_jsonr6   =   s    ZZ\E	W`aar   abc                 0    t        |       t        |      k  S )Nfloat)r7   r8   s     r   is_tick_size_smallerr<   A   s    8eAhr   r   r   c                 D    | t        |      k\  xr | dt        |      z
  k  S )Nr   r:   )r   r   s     r   price_validr>   E   s&    E)$$F!eI6F2F)FFr   )F)r&   r$   
clob_typesr   r   r   anyr   strr.   boolr5   r6   r<   r;   r>    r   r   <module>rD      s      @ @ 1A 2/? C :bd bt bH  d Gu G Gd Gr   