
    >Bj                        d dl mZ d dlmZ d dlmZmZ d dlmZ d dlm	Z	 dZ
dZdZe
ez   ez   Z ed	
           G d d                      Z ed	
           G d d                      ZdS )    )annotations)	dataclass)datetimetimezone)Decimal)Iterable)BTCETHSOLLINK)WLDSUIENABCH)HYPET)frozenc                     e Zd ZU ded<   ded<   ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   ded<   ded<   ded<    ed          Zded<    ed          Zded<    ed          Zded<    ed          Zded<    ed          Z	ded<    ed          Z
ded<    ed          Zded<    ed          Zded<   dZded<   dZded<   dZded<   dZded <   d&d'd%ZdS )(CoinMarketContextstrcoinr   rsisma_fastsma_slowatrfundingvolumemidzDecimal | None
spread_pctr   	timestampreliability_scorebool
stale_datal2_available0open_interestpremium	oracle_pxmark_pxprev_day_pxday_ntl_vlmbid_depth_notional_5ask_depth_notional_5Nbuy_impact_1k_pctsell_impact_1k_pctbuy_impact_5k_pctsell_impact_5k_pctnowdatetime | Nonereturnfloatc                    |pt          j        t          j                  }| j        j        r| j        n$| j                            t          j                  }t          d||z
                                            S )N)tzinfog        )	r   r1   r   utcr   r6   replacemaxtotal_seconds)selfr1   tss      src/market/context.pyage_secondszCoinMarketContext.age_seconds*   sd    /X\(,//#~4eT^^$.:P:PX`Xd:P:e:e3r0022333    N)r1   r2   r3   r4   )__name__
__module____qualname____annotations__r   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r>    r?   r=   r   r      s        IIILLLLLLOOOLLL$WS\\M))))ws||G#### I%%%%ws||G####"73<<K''''"73<<K''''$+GCLL0000$+GCLL0000(,,,,,)-----(,,,,,)-----4 4 4 4 4 4 4r?   r   c                  R    e Zd ZU ded<   edd            Zedd            ZddZdS )MarketContextSnapshotzdict[str, CoinMarketContext]contextsr3   set[str]c                *    t          | j                  S r@   )setrH   )r;   s    r=   coinszMarketContextSnapshot.coins4   s    4=!!!r?   Iterable[CoinMarketContext]'MarketContextSnapshot'c                ,     | d |D                       S )Nc                B    i | ]}|j                                         |S rE   )r   upper).0ctxs     r=   
<dictcomp>z<MarketContextSnapshot.from_coin_contexts.<locals>.<dictcomp>:   s&    >>>cCHNN$$c>>>r?   rE   )clsrH   s     r=   from_coin_contextsz(MarketContextSnapshot.from_coin_contexts8   s!    s>>X>>>???r?   r   r   r   c                @    | j         |                                         S r@   )rH   rQ   )r;   r   s     r=   getzMarketContextSnapshot.get<   s    }TZZ\\**r?   N)r3   rI   )rH   rM   r3   rN   )r   r   r3   r   )	rA   rB   rC   rD   propertyrL   classmethodrV   rX   rE   r?   r=   rG   rG   0   sx         ****" " " X" @ @ @ [@+ + + + + +r?   rG   N)
__future__r   dataclassesr   r   r   decimalr   typingr   
CORE_COINSRESEARCH_ALT_COINSOPTIONAL_COINSDEFAULT_CONTEXT_UNIVERSEr   rG   rE   r?   r=   <module>rc      s   " " " " " " ! ! ! ! ! ! ' ' ' ' ' ' ' '            *
1 %(::^K  $4 4 4 4 4 4 4 4B $+ + + + + + + + + +r?   