
    :h                         d dl mZ d dlmZ d dlmZmZ e G d d                      Ze G d d                      ZdS )	    )	dataclass)datetime)ListOptionalc                       e Zd ZU dZeed<   eed<   eed<   eed<   eed<   eed<   eed<   eed	<   eed
<   eed<   ee         ed<   eed<   eed<   e	ed<   dZ
ee         ed<   d ZdS )P2POrderz&P2P Order model for Binance C2C tradesorder_idmerchant_idmerchant_nameassetfiatpriceavailable_amountmin_single_trans_amountmax_single_trans_amount
trade_typepayment_methodscompletion_rateorders_completedis_merchantN	timestampc                 H    | j         t          j                    | _         d S d S N)r   r   nowselfs    /app/src/models/order.py__post_init__zP2POrder.__post_init__   s#    >!%\^^DNNN "!    )__name__
__module____qualname____doc__str__annotations__floatr   intboolr   r   r   r    r   r   r   r      s         00MMMJJJ
IIILLL""""""""OOO#Y$(Ix!(((, , , , ,r   r   c                       e Zd ZU dZeed<   eed<   eed<   eed<   ee         ed<   e	de
fd            Ze	defd	            Ze	defd
            Ze	defd            Zdedee         fdZdedee         fdZdS )OrderBookSnapshotz,Snapshot of P2P orderbook for specific assetr   r   r   r   ordersreturnc                 X    t          t          d | j        D                                 S )Nc              3   $   K   | ]}|j         V  d S r   r
   .0orders     r   	<genexpr>z3OrderBookSnapshot.merchant_count.<locals>.<genexpr>-   s%      BBUu(BBBBBBr   )lensetr,   r   s    r   merchant_countz OrderBookSnapshot.merchant_count+   s)    3BBdkBBBBBCCCr   c                 >    t          d | j        D                       S )Nc              3   $   K   | ]}|j         V  d S r   )r   r1   s     r   r4   z1OrderBookSnapshot.total_volume.<locals>.<genexpr>1   s%      CCe5)CCCCCCr   )sumr,   r   s    r   total_volumezOrderBookSnapshot.total_volume/   s!    CCt{CCCCCCr   c                 z    | j         sdS t          d | j         D                       t          | j                   z  S )N        c              3   $   K   | ]}|j         V  d S r   r   r1   s     r   r4   z2OrderBookSnapshot.average_price.<locals>.<genexpr>7   s$      8855;888888r   )r,   r:   r5   r   s    r   average_pricezOrderBookSnapshot.average_price3   s?    { 	388DK888883t{;K;KKKr   c                     | j         sdS | j        dk    rt          d | j         D                       S t          d | j         D                       S )Nr=   SELLc              3   $   K   | ]}|j         V  d S r   r?   r1   s     r   r4   z/OrderBookSnapshot.best_price.<locals>.<genexpr>>   $      <<uu{<<<<<<r   c              3   $   K   | ]}|j         V  d S r   r?   r1   s     r   r4   z/OrderBookSnapshot.best_price.<locals>.<genexpr>@   rD   r   )r,   r   minmaxr   s    r   
best_pricezOrderBookSnapshot.best_price9   s\    { 	3?f$$<<<<<<<<<<<<<<<<r   r
   c                 *    fd| j         D             S )Nc                 *    g | ]}|j         k    |S r)   r0   )r2   r3   r
   s     r   
<listcomp>z<OrderBookSnapshot.get_orders_by_merchant.<locals>.<listcomp>C   s&    SSS%%2C{2R2R2R2R2Rr   )r,   )r   r
   s    `r   get_orders_by_merchantz(OrderBookSnapshot.get_orders_by_merchantB   s    SSSS4;SSSSr   r	   c                 8    | j         D ]}|j        |k    r|c S dS )zFind order by IDN)r,   r	   )r   r	   r3   s      r   get_order_by_idz!OrderBookSnapshot.get_order_by_idE   s3    [ 	 	E~)) *tr   N)r    r!   r"   r#   r$   r%   r&   r   r   propertyr'   r7   r;   r@   rH   rL   r   rN   r)   r   r   r+   r+   !   sO        66JJJ
IIIOOOND D D D XD De D D D XD Lu L L L XL
 =E = = = X=T# T$x. T T T T 0B      r   r+   N)dataclassesr   r   typingr   r   r   r+   r)   r   r   <module>rR      s    ! ! ! ! ! !       ! ! ! ! ! ! ! ! , , , , , , , ,4 ( ( ( ( ( ( ( ( ( (r   