
    &j                        d dl mZ d dlZd dlZd dlmZmZ d dlmZ d dlZd dl	m
Z
mZ d dlmZmZ dZdZd	d
d)dZd*dZdddd+dZd,dZdd d-d$Zd.d/d'Zed(k    r e e                      dS )0    )annotationsN)datetimetimezone)Any)	BotConfigRuntimePaths)append_market_context_eventbuild_market_context_snapshotz https://api.hyperliquid.xyz/info)BTCETHSOLHYPE   )timeoutpayloaddict[str, Any]r   intreturnr   c                   t          j        t          | |          }|                                 |                                S )N)jsonr   )requestspostINFO_URLraise_for_statusr   )r   r   responses      collect_market_context.py
_post_infor      s8    }XGWEEEH==??    dict[str, dict[str, Any]]c                 l   t          ddi          } t          | t                    rt          |           dk     ri S | d                             dg           }| d         }i }t          ||          D ]A\  }}t          |                    dd                                                    }|r|||<   B|S )	NtypemetaAndAssetCtxs   r   universe   name )r   
isinstancelistlengetzipstrupper)datar$   ctxsoutassetctxr&   s          r   fetch_meta_contextsr4      s    v1233DdD!! SYY]]	Aw{{:r**H7D%'C(D))  
s599VR(())//11 	CIJr   15mi  )intervallookback_minutescoinr-   r6   r7   list[dict[str, float]]c               >   t          t          j                    dz            }||dz  dz  z
  }t          d|                                 |||dd          }g }|pg D ]}|                    t          |                    d                    t          |                    d                    t          |                    d                    t          |                    d	                    t          |                    d
d                    d           |S )Ni  <   candleSnapshot)r8   r6   	startTimeendTime)r!   reqohlcvg        )openhighlowclosevolume)r   timer   r.   appendfloatr+   )r8   r6   r7   end_msstart_msrawcandlesrC   s           r   fetch_candlesrQ   &   s   t#$$F(2-44H
 JJLL !	
 
   C GYB  !%%**%%!%%**%%s$$155::&&AEE#sOO,,
 
 	 	 	 	 Nr   valuefloat | Nonec                Z    	 | d nt          |           S # t          t          f$ r Y d S w xY wN)rL   	TypeError
ValueError)rR   s    r   _float_or_nonerX   >   sB    }tt%,,6z"   tts    **r6   coins	list[str]list[dict[str, Any]]c                  t          j                    }t          j        |          }|                                 t                      }g }| D ]}|                                }t          ||          }t          |          dk     r<|	                    |i           }t          ||t          |	                    d                    p!t          |	                    d                    t          |	                    d                    d|t          j        t          j                            }	|                    t#          |j        |	                     |S )NrY      openInterestopenInterestUsdfundinghyperliquid)r8   rP   open_interest_usdfunding_ratesource	timeframets)r   	from_filer   from_configensure_dirsr4   r.   rQ   r*   r+   r
   rX   r   nowr   utcrK   r	   market_context)
rZ   r6   cfgpathsmetaeventsr8   rP   r3   snapshots
             r   collect_market_contextrs   E   s=   



C$S))E	  DF S Szz||x888w<<"hhtR  0,SWW^-D-DEEsX[X_X_`qXrXrIsIs'	(:(:;; |HL))
 
 
 	1%2FQQRRRRMr   argvlist[str] | Nonec           	        t          j        d          }|                    dd                    t                    d           |                    dd	           |                    |           }d
 |j                            d          D             }t          ||j	                  }t          dt          |           dd                    d |D                                   dS )NzHCollect Hyperliquid market context snapshots for paper-trading analysis.)descriptionz--coins,zComma-separated coin list)defaulthelpz
--intervalr5   )ry   c                    g | ]<}|                                 |                                                                 =S  )stripr.   ).0xs     r   
<listcomp>zmain.<locals>.<listcomp>c   s7    KKK1KQWWYY__KKKr   rY   zmarket_context_events=z coins=c              3  &   K   | ]}|d          V  dS )r8   Nr|   )r~   es     r   	<genexpr>zmain.<locals>.<genexpr>e   s&      ?Z?Za&	?Z?Z?Z?Z?Z?Zr   r   )argparseArgumentParseradd_argumentjoinDEFAULT_COINS
parse_argsrZ   splitrs   r6   printr*   )rt   parserargsrZ   rq   s        r   mainr   ^   s    $1{|||F
	388M+B+BIdeee
e444T""DKK
(8(8(=(=KKKE#EDMBBBF	
\3v;;
\
\sxx?Z?ZSY?Z?Z?Z7Z7Z
\
\]]]1r   __main__)r   r   r   r   r   r   )r   r   )r8   r-   r6   r-   r7   r   r   r9   )rR   r   r   rS   )rZ   r[   r6   r-   r   r\   rU   )rt   ru   r   r   )
__future__r   r   rJ   r   r   typingr   r   configr   r   rm   r	   r
   r   r   r   r4   rQ   rX   rs   r   __name__
SystemExitr|   r   r   <module>r      sq   " " " " " "   ' ' ' ' ' ' ' '        * * * * * * * * U U U U U U U U .- ;=          16w      0    AF      2     z
*TTVV

 r   