
    SIj              
      H   U d dl mZ d dlmZ d dlmZ d dlmZmZ d dl	Z	dZ
ddd	d
dddddd	Zded<   d)d*dZ G d de          Z G d d          Z ed            G d! d"                      Z ed            G d# d$                      Zd+d&Z G d' d(          ZdS ),    )annotations)	dataclass)Decimal)AnyProtocolNz.https://api.coingecko.com/api/v3/coins/marketsbitcoinethereumsolana	chainlinkzworldcoin-wldsuiethenazbitcoin-cashhyperliquid)	BTCETHSOLLINKWLDSUIENABCHHYPEzdict[str, str]COINGECKO_IDS0valuer   defaultstrreturnr   c                    	 | t          |          S t          t          |                     S # t          $ r t          |          cY S w xY wN)r   r   	Exception)r   r   s     M/home/agent/projects/CryptoTradingBot/Crypto_Agent/src/market/fundamentals.py_dr"      s]     =7###s5zz"""      w s   / / A
Ac                      e Zd ZddddZdS )FundamentalsTransport
   timeouturlr   paramsdict[str, Any]r'   intr   r   c                   d S r    )selfr(   r)   r'   s       r!   getzFundamentalsTransport.get"   s          Nr(   r   r)   r*   r'   r+   r   r   __name__
__module____qualname__r/   r-   r0   r!   r$   r$   !   s%        FHUUUUUUUUr0   r$   c                      e Zd ZddddZdS )RequestsFundamentalsTransportr%   r&   r(   r   r)   r*   r'   r+   r   r   c                   t          j        |||          }|                                 |                                S )Nr)   r'   )requestsr/   raise_for_statusjson)r.   r(   r)   r'   responses        r!   r/   z!RequestsFundamentalsTransport.get&   s8    <FGDDD!!###}}r0   Nr1   r2   r-   r0   r!   r7   r7   %   s5        FH        r0   r7   T)frozenc                  F   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<    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dZdS ) CoinFundamentalsr   coincoingecko_idr   market_cap_usdfdv_usdtotal_volume_usdz
int | Nonemarket_cap_rankprice_change_24h_pctprice_change_7d_pctcirculating_supplytotal_supplyr   price_change_1h_pctprice_change_30d_pctath_usdatl_usdfdv_to_market_capr-   tuple[str, ...]
categoriescoingecko_marketssourceloadedstatusr   r*   c                h   i d| j         d| j        d| j        dt          | j                  dt          | j                  dt          | j                  d| j        dt          | j                  d	t          | j	                  d
t          | j
                  dt          | j                  dt          | j                  dt          | j                  dt          | j                  dt          | j                  dt          | j                  dt#          | j                  S )NrS   rU   rB   rC   rD   rE   rF   rG   rH   rK   rL   rI   rJ   rM   rN   rO   rQ   )rS   rU   rB   r   rC   rD   rE   rF   rG   rH   rK   rL   rI   rJ   rM   rN   rO   listrQ   r.   s    r!   to_dictzCoinFundamentals.to_dictA   si   
dk
dk
 D-
 c$"566	

 s4<((
 D$9 : :
 t3
 #C(A$B$B
 "3t'?#@#@
 "3t'?#@#@
 #C(A$B$B
 !#d&=">">
 C 122
 s4<((
 s4<((
   T%;!<!<!
" $t//#
 	
r0   Nr   r*   )r3   r4   r5   __annotations__r   rK   rL   rM   rN   rO   rQ   rS   rU   rY   r-   r0   r!   r@   r@   ,   sR        III!!!!    #*73<<////$+GCLL0000ws||G####ws||G####!(----"$J$$$$%F%%%%F
 
 
 
 
 
r0   r@   c                  T    e Zd ZU ded<   dZded<   dZded<   dZd	ed
<   ddZddZdS )FundamentalsSnapshotzdict[str, CoinFundamentals]fundamentalsrR   r   rS   rT   rU   Nz
str | NoneerrorrA   r   r*   c                    | j                             |                                          }|| j        dddS |                                S )N
not_loadedcoin_not_available)rS   rU   reason)r^   r/   upperrS   rY   )r.   rA   rows      r!   for_coinzFundamentalsSnapshot.for_coin^   sF    ##DJJLL11;"k\Mabbb{{}}r0   c                    | j         | j        | j        d t          | j                                                  D             dS )Nc                >    i | ]\  }}||                                 S r-   )rY   ).0rA   re   s      r!   
<dictcomp>z0FundamentalsSnapshot.to_dict.<locals>.<dictcomp>i   s&    ]]]idCdCKKMM]]]r0   )rS   rU   r_   coins)rS   rU   r_   sortedr^   itemsrX   s    r!   rY   zFundamentalsSnapshot.to_dictd   sH    kkZ]]6$BSBYBYB[B[;\;\]]]	
 
 	
r0   )rA   r   r   r*   rZ   )	r3   r4   r5   r[   rS   rU   r_   rf   rY   r-   r0   r!   r]   r]   W   s}         ----%F%%%%FE   
 
 
 
 
 
r0   r]   rc   c                &    t          i d|           S )Nunavailable)r^   rU   r_   )r]   rc   s    r!   'build_unavailable_fundamentals_snapshotrq   m   s    RVTTTTr0   c                  $    e Zd ZdZdddZddZdS )CoinGeckoFundamentalsClientzRead-only CoinGecko fundamentals adapter.

    This client fetches public market/fundamental fields only. It never handles
    secrets and never has execution authority.
    N	transportFundamentalsTransport | Noner   Nonec                0    |pt                      | _        d S r   )r7   rt   )r.   rt   s     r!   __init__z$CoinGeckoFundamentalsClient.__init__x   s    "E&C&E&Er0   rk   rP   r]   c                   d |D             fdt                                           D             }|st          i d          S dd                    t	          |                    dt          |          dd	d
d}	 | j                            t          |d          }n9# t          $ r,}t          t          |          j                  cY d }~S d }~ww xY wt          |t                    st          d          S i }|D ]}t          |t                    s|                    t!          |                    dd                              }|sR|                    d          }		 |	t#          |	          nd }
n# t          $ r d }
Y nw xY wt%          d.i d|dt!          |                    d          pt           |                   dt'          |                    d                    dt'          |                    d                    dt'          |                    d                    d|
dt'          |                    d|                    d                              dt'          |                    d                    d t'          |                    d                     d!t'          |                    d!                    d"t'          |                    d#                    d$t'          |                    d%                    d&t'          |                    d'                    d(t'          |                    d)                    d*t'          |                    d                    d+k    rEt'          |                    d                    t'          |                    d                    z  nt)          d,          d-d.||<   t          |/          S )0Nc                6    h | ]}|                                 S r-   )rd   )ri   rA   s     r!   	<setcomp>z6CoinGeckoFundamentalsClient.collect.<locals>.<setcomp>|   s     444dTZZ\\444r0   c                $    i | ]\  }}|v 	||S r-   r-   )ri   rA   rB   	requesteds      r!   rj   z7CoinGeckoFundamentalsClient.collect.<locals>.<dictcomp>}   s,    nnn-?T<\`dm\m\mlD\m\m\mr0   empty)r^   rU   usd,market_cap_desc   falsez1h,24h,7d,30d)vs_currencyidsorderper_pagepage	sparklineprice_change_percentager%   r9   rp   unexpected_response_shapeid rF   rA   rB   rC   
market_caprD   fully_diluted_valuationrE   total_volumerG   'price_change_percentage_24h_in_currencyprice_change_percentage_24hrH   &price_change_percentage_7d_in_currencyrI   rJ   rK   &price_change_percentage_1h_in_currencyrL   'price_change_percentage_30d_in_currencyrM   athrN   atlrO   r   r   rQ   r-   )r^   )r   rm   r]   joinrl   lenrt   r/   COINGECKO_MARKETS_URLr    rq   typer3   
isinstancerW   dictr   r+   r@   r"   r   )r.   rk   
id_to_coinr)   rowsexcr^   re   rA   rank_rawrankr}   s              @r!   collectz#CoinGeckoFundamentalsClient.collect{   s   44e444	nnnn=CVCVCXCXnnn
 	I'RHHHH 88F:..//&J '6
 
	V>%%&;FTV%WWDD 	V 	V 	V:$s))BTUUUUUUUUU	V$%% 	_:B]^^^^46 	 	Cc4(( >>#cggdB&7&7"8"899D ww011H(0(<s8}}}$   !1 " " "T" !E-2EFFF"  "#'',"7"7888" 377#<==>>>	"
 "$CGGN$;$;!<!<!<" !%" &(0Y[^[b[b  dA  \B  \B  )C  )C  &D  &D  &D" %'sww/W'X'X$Y$Y$Y" $&cgg.B&C&C#D#D#D"   7 7888" %'sww/W'X'X$Y$Y$Y" &(0Y(Z(Z%[%[%[" 3775>>***" 3775>>***" jllolsls  uA  mB  mB  jC  jC  FG  jG  jG2cgg.G&H&H#I#IBswwWcOdOdLeLe#e#e  MT  UX  MY  MY"  2!"L$ $>>>>s0   >"B! !
C+!CCC+E??FFr   )rt   ru   r   rv   )rk   rP   r   r]   )r3   r4   r5   __doc__rx   r   r-   r0   r!   rs   rs   q   sP         F F F F F2? 2? 2? 2? 2? 2?r0   rs   )r   )r   r   r   r   r   r   )rc   r   r   r]   )
__future__r   dataclassesr   decimalr   typingr   r   r:   r   r   r[   r"   r$   r7   r@   r]   rq   rs   r-   r0   r!   <module>r      s   " " " " " " " ! ! ! ! ! !                       H  
! 
! 
 
 
 
         V V V V VH V V V        $'
 '
 '
 '
 '
 '
 '
 '
T $
 
 
 
 
 
 
 
*U U U U<? <? <? <? <? <? <? <? <? <?r0   