
    ?jz                         d dl Z d dlZd dlZd dlmZ d dlZd dlmZmZm	Z	m
Z
mZmZmZmZmZ  eddeegdf         fdefg          Zdedefd	Zd
edee         fdZ G d dej                  ZdS )    N)defaultdict)	AnyCallableDictList
NamedTupleOptionalSubscriptionTupleWsMsgActiveSubscriptioncallbacksubscription_idsubscriptionreturnc                    | d         dk    rdS | d         dk    rd| d                                           S | d         dk    rd| d                                           S | d         dk    rdS | d         d	k    rd
| d                                           S | d         dk    r&d| d                                           d| d          S | d         dk    rdS | d         dk    rd| d                                           S | d         dk    rd| d                                           S | d         dk    rd| d                                           S | d         dk    rd| d                                           S | d         dk    rd| d                                           S | d         dk    r8d| d                                           d| d                                           S d S )NtypeallMidsl2Bookl2Book:cointradestrades:
userEvents	userFills
userFills:usercandlecandle:,intervalorderUpdatesuserFundingsuserFundings:userNonFundingLedgerUpdatesuserNonFundingLedgerUpdates:webData2	webData2:bbobbo:activeAssetCtxactiveAssetCtx:activeAssetDataactiveAssetData:)lower)r   s    v/home/agent/projects/CryptoTradingBot/Crypto_Agent/.venv/lib/python3.11/site-packages/hyperliquid/websocket_manager.pysubscription_to_identifierr1      sH   Fy((y	f		)	)7f-3355777	f		)	)7f-3355777	f		-	-|	f		,	,:L06688:::	f		)	)Rf-3355RRZ8PRRR	f		/	/~	f		/	/=|F399;;===	f	!>	>	>Ll6.B.H.H.J.JLLL	f		+	+9</5577999	f		&	&4l6*0022444	f	!1	1	1?f!5!;!;!=!=???	f	!2	2	2_,v"6"<"<">">__fAUA[A[A]A]___ 
3	2    ws_msgc                    | d         dk    rdS | d         dk    rdS | d         dk    r#d| d         d                                           S | d         dk    r@| d         }t          |          d	k    rd S d
|d	         d                                           S | d         dk    rdS | d         dk    r#d| d         d                                           S | d         dk    r2d| d         d                                           d| d         d          S | d         dk    rdS | d         dk    r#d| d         d                                           S | d         dk    r#d| d         d                                           S | d         dk    r#d| d         d                                           S | d         dk    r#d| d         d                                           S | d         dk    s| d         dk    r#d| d         d                                           S | d         d k    rDd!| d         d                                           d| d         d                                           S d S )"Nchannelpongr   r   r   datar   r   r   r   r   r   r   r   r   r   sr    ir"   r#   r$   r%   r&   r'   r(   r)   r*   r+   activeSpotAssetCtxr,   r-   r.   )r/   len)r3   r   s     r0   ws_msg_to_identifierr<   *   s   iF""v			i	'	'y			h	&	&9/5577999			h	&	&v;;!48VAYv.4466888			f	$	$|			k	)	)<F6N6288::<<<			h	&	&L,2244LLvf~c7JLLL			n	,	,~			n	,	,?vf~f5;;==???			;	;	;NfVnV.D.J.J.L.LNNN			j	(	(;6&>&17799;;;			e	#	#6fVnV,2244666			.	.	.&2CG[2[2[A!7!=!=!?!?AAA			/	/	/c&."8">">"@"@cc6&>RXCYC_C_CaCaccc 
0	/r2   c            	            e Zd Z fdZd Zd Zd Zd Zd Z	 dde	d	e
egdf         d
ee         defdZde	d
edefdZ xZS )WebsocketManagerc                    t                                                       d| _        d| _        g | _        t          t                    | _        d|t          d          d          z   dz   }t          j
        || j        | j                  | _        t          j        | j                  | _        t          j                    | _        d S )Nr   Fwshttpz/ws)
on_messageon_open)target)super__init__subscription_id_counterws_readyqueued_subscriptionsr   listactive_subscriptionsr;   	websocketWebSocketApprB   rC   r@   	threadingThread	send_pingping_senderEvent
stop_event)selfbase_urlws_url	__class__s      r0   rF   zWebsocketManager.__init__N   s    '($SU!ITUYIZIZ!V//%7(DOUYUabbb$+4>BBB#/++r2   c                 j    | j                                          | j                                         d S N)rQ   startr@   run_foreverrT   s    r0   runzWebsocketManager.runY   s1       r2   c                 4   | j                             d          si| j        j        sn\t	          j        d           | j                            t          j        ddi                     | j                             d          it	          j        d           d S )N2   zWebsocket sending pingmethodpingzWebsocket ping sender stopped)	rS   waitr@   keep_runningloggingdebugsendjsondumpsr\   s    r0   rP   zWebsocketManager.send_ping]   s    /&&r** 	97' M2333GLLXv$677888	 /&&r** 	9
 	566666r2   c                     | j                                          | j                                         | j                                        r| j                                         d S d S rY   )rS   setr@   closerQ   is_alivejoinr\   s    r0   stopzWebsocketManager.stope   sa    $$&& 	$!!#####	$ 	$r2   c                    |dk    rt          j        |           d S t          j        d|            t          j        |          }t	          |          }|dk    rt          j        d           d S |t          j        d           d S | j        |         }t          |          dk    rt          d||           d S |D ]}|                    |           d S )Nz!Websocket connection established.zon_message r6   zWebsocket received pongz$Websocket not handling empty messager   z2Websocket message from an unexpected subscription:)	rd   re   rg   loadsr<   rK   r;   printr   )rT   _wsmessager3   
identifierrK   active_subscriptions          r0   rB   zWebsocketManager.on_messagek   s   999M'"""F-G--...
7++)&11
M3444FM@AAAF#8D#$$))FQ[\\\\\'; 5 5##,,V44445 5r2   c                     t          j        d           d| _        | j        D ]&\  }}|                     ||j        |j                   'd S )NrC   T)rd   re   rH   rI   	subscriber   r   )rT   rr   r   ru   s       r0   rC   zWebsocketManager.on_open   s`    i   151J 	l 	l-L-NN<)<)EGZGjkkkk	l 	lr2   Nr   r   r   r   c                 >   || xj         dz  c_         | j         }| j        s?t          j        d           | j                            |t          ||          f           nt          j        d           t          |          }|dk    s|dk    r1t          | j	        |                   dk    rt          d| d          | j	        |                             t          ||                     | j                            t          j        d	|d
                     |S )N   zenqueueing subscriptionsubscribingr   r"   r   zCannot subscribe to z multiple timesrw   r`   r   )rG   rH   rd   re   rI   appendr   r1   r;   rK   NotImplementedErrorr@   rf   rg   rh   )rT   r   r   r   rt   s        r0   rw   zWebsocketManager.subscribe   s(    "((A-((":O} 	\M3444%,,l<NxYh<i<i-jkkkkM-(((3LAAJ\))Z>-I-It0<==BB-.`Z.`.`.`aaa%j1889KHVe9f9fgggGLL{L$Y$YZZ[[[r2   c                 \   | j         st          d          t          |          }| j        |         }fd|D             }t	          |          dk    r/| j                            t          j        d|d                     || j        |<   t	          |          t	          |          k    S )Nz,Can't unsubscribe before websocket connectedc                 *    g | ]}|j         k    |S  )r   ).0xr   s     r0   
<listcomp>z0WebsocketManager.unsubscribe.<locals>.<listcomp>   s'    #l#l#l!qGX\kGkGkAGkGkGkr2   r   unsubscriber{   )	rH   r}   r1   rK   r;   r@   rf   rg   rh   )rT   r   r   rt   rK   new_active_subscriptionss     `   r0   r   zWebsocketManager.unsubscribe   s    } 	V%&TUUU/==
#8D#l#l#l#l/C#l#l#l '((A--GLL}l$[$[\\]]]0H!*-'((C0H,I,IIIr2   rY   )__name__
__module____qualname__rF   r]   rP   rn   rB   rC   r
   r   r   r	   intrw   boolr   __classcell__)rW   s   @r0   r>   r>   M   s       	, 	, 	, 	, 	,  7 7 7$ $ $5 5 5(l l l mq (4<cUD[4I\deh\i	   (	J 	Js 	Jt 	J 	J 	J 	J 	J 	J 	J 	Jr2   r>   )rg   rd   rN   collectionsr   rL   hyperliquid.utils.typesr   r   r   r   r   r	   r
   r   r   r   r   strr1   r<   rO   r>   r   r2   r0   <module>r      sS         # # # # # #     o o o o o o o o o o o o o o o o o o o o o oZ 4
HcUTX[DY7Z]nps\t6uvv `\ `c ` ` ` `: d  d8C=  d  d  d  dFUJ UJ UJ UJ UJy' UJ UJ UJ UJ UJr2   