
    E#i                         S SK rS SKJrJrJrJr  S SKJrJ	r	J
r
JrJrJrJrJrJrJrJrJr  S SKJr  S SKJr   " S S\R0                  R2                  5      rg)    N)
ArrayCacheArrayCacheBySymbolByIdArrayCacheBySymbolBySideArrayCacheByTimestamp)AnyBalancesBoolIntMarketOrder	OrderBookPositionStrStringsTickerTrade)Client)Listc                     ^  \ rS rSrS\4U 4S jjr0 4S\S\S\4S jjrS r	S	 r
S
SS0 4S\S\S\S\S\\   4
S jjrS\4S jrS-S\S\4S jjr0 4S\S\4S jjrS\4S jrSS0 4S\S\S\S\\   4S jjrS\4S jrS0 4S\S\S\4S jjrS\4S jrSSS0 4S\S\S\S\\   4S jjrS\4S jrS-S\S\S\4S jjr SSS0 4S\S\S\S\\   4S jjr!0 4S\4S jjr"S-S\4S  jjr#SSS0 4S!\$S\S\S\\%   4S" jjr&S\4S# jr'S-S\S\%4S$ jjr(0 4S\)4S% jjr*S\4S& jr+S' r,S\4S( jr-0 4S) jr.0 4S* jr/S\4S+ jr0S,r1U =r2$ ).hashkey   returnc                    > U R                  [        [        U ]  5       SSSSSSSSSSS.
SSSS.SS	S
S.0S.0SS SSS.S.SS0S.5      $ )NTF)
wswatchBalancewatchMyTrades
watchOHLCVwatchOrderBookwatchOrderswatchTickerwatchTradeswatchTradesForSymbolswatchPositionsapiz(wss://stream-glb.hashkey.com/quote/ws/v1z&wss://stream-glb.hashkey.com/api/v1/ws)publicprivater   z/wss://stream-glb.sim.hashkeydev.com/quote/ws/v1z-wss://stream-glb.sim.hashkeydev.com/api/v1/ws)r   test6 )fetchBalanceSnapshotawaitBalanceSnapshot)listenKeyRefreshRate	listenKeyr   	keepAlivei'  )hasurlsoptions	streaming)deep_extendsuperr   describe)self	__class__s    J/home/james-whalen/.local/lib/python3.13/site-packages/ccxt/pro/hashkey.pyr4   hashkey.describe   s    gt = ? $!%""&###)."' "L#K
 &W'V )0!,0,1! UG&B
 & &	    markettopicmessageHashc                    #    US   USS.nU R                   S   S   S   nU R                  XcU R                  XT5      U5      I S h  vN $  N7f)Nidsub)symbolr;   eventr$   r   r%   )r/   watchr2   )r5   r:   r;   r<   paramsrequesturls          r7   wath_publichashkey.wath_public8   sX     Tl

 iit$X.ZZ$2B2B72SU`aaaas   AAAAc                    #    U R                  5       I S h  vN nU R                  U5      nU R                  X1S U5      I S h  vN $  N0 N7fN)authenticateget_private_urlrB   )r5   r<   r,   rE   s       r7   watch_privatehashkey.watch_privateA   sD     ++--	""9-ZZ$DDD .Ds!   AA+AA	A	Ac                 8    U R                   S   S   S   S-   U-   $ )Nr$   r   r&   /)r/   )r5   r,   s     r7   rK   hashkey.get_private_urlF   s%    yy%i036BBr9   1mNr@   	timeframesincelimitc                 f  #    U R                  5       I Sh  vN   U R                  U5      nUS   nU R                  U R                  X"5      nSU-   nSU-   S-   U-   n	U R	                  XhX5      I Sh  vN n
U R
                  (       a  U
R                  X5      nU R                  XUSS5      $  N N<7f)a  
watches historical candlestick data containing the open, high, low, and close price, and the volume of a market

https://hashkeyglobal-apidoc.readme.io/reference/websocket-api#public-stream

:param str symbol: unified symbol of the market to fetch OHLCV data for
:param str timeframe: the length of time each candle represents
:param int [since]: timestamp in ms of the earliest candle to fetch
:param int [limit]: the maximum amount of candles to fetch
:param dict [params]: extra parameters specific to the exchange API endpoint
:param bool [params.binary]: True or False - default False
:returns int[][]: A list of candles ordered, open, high, low, close, volume
Nr@   kline_ohlcv::r   T)load_marketsr:   safe_string
timeframesrF   
newUpdatesgetLimitfilter_by_since_limit)r5   r@   rR   rS   rT   rC   r:   intervalr;   r<   ohlcvs              r7   watch_ohlcvhashkey.watch_ohlcvI   s      !!!V$!##DOOYJ8#'#-	9&&vkJJ??NN61E))%q$GG 	" Ks"   B1B-AB12B/3;B1/B1clientc                    U R                  US5      nU R                  U5      nU R                  X45      nXPR                  ;  a  0 U R                  U'   U R	                  US5      nU R                  US5      nU R                  U5      nXR                  U   ;  a8  U R                  U R                  SS5      n	[        U	5      U R                  U   U'   U R                  US/ 5      n
U R                  U   U   n[        S[        U
5      5       H7  nU R	                  X0 5      nU R                  X5      nUR                  U5        M9     SU-   S	-   U-   nUR                  X5        g )
Nr@   rC   	klineType
OHLCVLimit  datar   rW   rX   )rZ   safe_marketsafe_symbolohlcvs	safe_dictfind_timeframesafe_integerr0   r   	safe_listrangelenparse_ws_ohlcvappendresolve)r5   rc   messagemarketIdr:   r@   rC   re   rR   rT   rh   storedicandleparsedr<   s                   r7   handle_ohlcvhashkey.handle_ohlcvb   sG   6 ##GX6!!(+!!(3++%"$DKK2$$V[9	''	2	[[00%%dllL$GE-B5-IDKK	*~~gvr2V$Y/q#d)$A^^DR0F((8FMM&! % '#-	9v+r9   c           	          U R                  US5      U R                  US5      U R                  US5      U R                  US5      U R                  US5      U R                  US5      /$ )Ntohlcv)rn   safe_number)r5   r`   r:   s      r7   rr   hashkey.parse_ws_ohlcv   sn     eS)UC(UC(UC(UC(UC(
 	
r9   c                    #    U R                  5       I Sh  vN   U R                  U5      nUS   nSnSU-   nU R                  X4XR5      I Sh  vN $  N; N7f)a  
watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market

https://hashkeyglobal-apidoc.readme.io/reference/websocket-api#public-stream

:param str symbol: unified symbol of the market to fetch the ticker for
:param dict [params]: extra parameters specific to the exchange API endpoint
:param bool [params.binary]: True or False - default False
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
Nr@   	realtimesticker:)rY   r:   rF   )r5   r@   rC   r:   r;   r<   s         r7   watch_tickerhashkey.watch_ticker   sa      !!!V$!&(%%f[III 	"
 Js!   AA6AAAAc                     U R                  US/ 5      nU R                  U R                  US5      5      nUS   nSU-   nX@R                  U'   UR	                  U R                  U   U5        g )Nrh   r   r@   r   )ro   parse_tickerrl   tickersrt   )r5   rc   ru   rh   tickerr@   r<   s          r7   handle_tickerhashkey.handle_ticker   sh    : ~~gvr2""4>>$#:;!&(%Vt||F+[9r9   c                   #    U R                  5       I Sh  vN   U R                  U5      nUS   nSnSU-   nU R                  XVXt5      I Sh  vN nU R                  (       a  UR	                  X5      nU R                  XUSS5      $  Nq N<7f)a>  
watches information on multiple trades made in a market

https://hashkeyglobal-apidoc.readme.io/reference/websocket-api#public-stream

:param str symbol: unified market symbol of the market trades were made in
:param int [since]: the earliest time in ms to fetch orders for
:param int [limit]: the maximum number of trade structures to retrieve
:param dict [params]: extra parameters specific to the exchange API endpoint
:param bool [params.binary]: True or False - default False
:returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
Nr@   tradetrades:	timestampT)rY   r:   rF   r\   r]   r^   )	r5   r@   rS   rT   rC   r:   r;   r<   tradess	            r7   watch_tradeshashkey.watch_trades   s      !!!V$!&(''{KK??OOF2E))&TRR 	"
 L!   BB6BB
;B
Bc                    U R                  US5      nU R                  U5      nUS   nXPR                  ;  a5  U R                  U R                  SS5      n[        U5      U R                  U'   U R                  U   nU R                  US5      nUba  U R                  US5      n[        S[        U5      5       H6  n	U R                  X5      n
U R                  X5      nUR                  U5        M8     SU-   nUR                  X|5        g )Nr@   tradesLimitrg   rh   r~   r   r   )rZ   ri   r   rn   r0   r   ro   sort_byrp   rq   rl   parse_ws_traders   rt   )r5   rc   ru   rv   r:   r@   rT   rw   rh   rx   r   rz   r<   s                r7   handle_tradeshashkey.handle_trades   s    2 ##GX6!!(+!++%%%dllM4HE",U"3DKKV$~~gv.<<c*D1c$i(t/,,U;f% ) %v-v+r9   c                    #    U R                  5       I Sh  vN   U R                  U5      nUS   nSnSU-   nU R                  XEXc5      I Sh  vN nUR                  5       $  NK N7f)a  
watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data

https://hashkeyglobal-apidoc.readme.io/reference/websocket-api#public-stream

:param str symbol: unified symbol of the market to fetch the order book for
:param int [limit]: the maximum amount of order book entries to return.
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: A dictionary of `order book structures <https://docs.ccxt.com/#/?id=order-book-structure>` indexed by market symbols
Nr@   depth
orderbook:)rY   r:   rF   rT   )r5   r@   rT   rC   r:   r;   r<   	orderbooks           r7   watch_order_bookhashkey.watch_order_book  sm      !!!V$!"V+**6+NN	   	"
 Os!   A&A"6A&A$A&$A&c                    U R                  US5      nU R                  U5      nSU-   nX@R                  ;  a  U R                  0 5      U R                  U'   U R                  U   nU R	                  US/ 5      nU R                  US5      nU R                  US5      n	U R                  XU	SS5      n
UR                  U
5        U R                  US5      US	'   X`R                  U'   UR                  Xe5        g )
Nr@   r   rh   r   r~   bar>   nonce)
rZ   rj   
orderbooks
order_bookro   rl   rn   parse_order_bookresetrt   )r5   rc   ru   rv   r@   r<   r   rh   	dataEntryr   snapshots              r7   handle_order_bookhashkey.handle_order_book1  s    < ##GX6!!(+"V+//)&*oob&9DOOF#OOF+	~~gvr2NN4+	%%i5	((IsCP!!..w=	'"+y.r9   c                   #    U R                  5       I Sh  vN   SnUb  U R                  U5      nUS-   U-   nU R                  U5      I Sh  vN nU R                  (       a  UR	                  X5      nU R                  XaX#S5      $  Np N;7f)a  
watches information on multiple orders made by the user

https://hashkeyglobal-apidoc.readme.io/reference/websocket-api#private-stream

:param str symbol: unified market symbol of the market orders were made in
:param int [since]: the earliest time in ms to fetch orders for
:param int [limit]: the maximum number of order structures to retrieve
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
NordersrX   T)rY   r@   rL   r\   r]   filter_by_symbol_since_limit)r5   r@   rS   rT   rC   r<   r   s          r7   watch_ordershashkey.watch_orders^  s      !!![[(F%+f4K))+66??OOF2E00tTT 	"
 7s!   BB6BB	:B	Bc                 6   U R                   c-  U R                  U R                  SS5      n[        U5      U l         U R	                  U5      nU R                   nUR                  U5        SnUR                  XV5        US   nUS-   U-   nUR                  XX5        g )NordersLimitrg   r   r@   rX   )r   rn   r0   r   parse_ws_orderrs   rt   )	r5   rc   ru   rT   rz   r   r<   r@   symbolSpecificMessageHashs	            r7   handle_orderhashkey.handle_ordert  s    H ;;%%dllM4HE07DK$$W-fv+!$/#$5$>!v9r9   orderc                 &   U R                  US5      nU R                  X25      nU R                  US5      nU R                  US5      nS nU R	                  U5      u  pVU R                  U R                  US5      5      nU R                  US5      nS n	U R                  Xx5      u  pxn	US   (       a  S nU R                  0 SU R                  US5      _S	U R                  US
5      _SU R                  U5      _SU_SS _SS _SU R                  U R                  US5      5      _SUS   _SU_SU_SU_SU R                  US5      _SU R                  US5      _SU R                  U R                  US5      5      _SU R                  US5      _SU R                  US5      _SS _S S S U R                  U R                  US 5      5      S U R                  U R                  US!5      5      U R                  U R                  US"5      5      S#.UU	US$.	EU5      $ )%NsOSr   fcontractr>   rx   clientOrderIdr   datetimer   lastTradeTimestamplastUpdateTimestampstatusXr@   typetimeInForcesidepricepaverageVamountqfilledz	remainingr	stopPriceZNn)currencyr   )	triggerPricetakeProfitPricestopLossPricecostr   fee
reduceOnlypostOnlyinfo)rZ   ri   rn   safe_string_lowerparseOrderSideAndReduceOnlyparseOrderType$parseOrderTypeTimeInForceAndPostOnly
safe_orderiso8601parse_order_status	omit_zerosafe_currency_code)
r5   r   r:   rv   r   r   r   r   r   r   s
             r7   r   hashkey.parse_ws_order  s   ##E3/!!(3%%eS1	%%eS1
;;DA""4#3#3E3#?@&&uc2&*&O&OPT&b#8*D  
$""5#. 
T--eS9 
 Y/ 
 	 

 !$ 
 "4 
 d--d.>.>uc.JK 
 fX& 
 D 
 ; 
 D 
 T%%eS1 
 t''s3 
 dnnT%5%5eS%AB 
 d&&uc2 
  ))%5! 
" # 
$ !#!NN4#3#3E3#?@ 33D4D4DUC4PQ..)9)9%)EF % ; 
< = 	r9   c                   #    U R                  5       I Sh  vN   SnUb  U R                  U5      nUSU-   -  nU R                  U5      I Sh  vN nU R                  (       a  UR	                  X5      nU R                  XbUSS5      $  Nq N<7f)a  
watches information on multiple trades made by the user

https://hashkeyglobal-apidoc.readme.io/reference/websocket-api#private-stream

:param str symbol: unified market symbol of the market trades were made in
:param int [since]: the earliest time in ms to fetch trades for
:param int [limit]: the maximum number of trade structures to retrieve
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
NmyTradesrX   r   T)rY   r@   rL   r\   r]   r^   )r5   r@   rS   rT   rC   r<   r   s          r7   watch_my_tradeshashkey.watch_my_trades  s      !!! [[(F3<'K))+66??OOF2E))&TRR 	"
 7r   c                 B   U R                   c-  U R                  U R                  SS5      n[        U5      U l         U R                   nU R	                  U5      nUR                  U5        XPl         SnUR                  XW5        US   nUS-   U-   n	UR                  XY5        g )Nr   rg   r   r@   rX   )r   rn   r0   r   r   rs   rt   )
r5   rc   ru   subscriptionrT   tradesArrayrz   r<   r@   r   s
             r7   handle_my_tradehashkey.handle_my_trade  s    " == %%dllM4HE259DMmm$$W-6"# {0!$/#$5$>!{>r9   c                    U R                  US5      nU R                  X25      nU R                  US5      nU R                  US5      nS nUb  U(       a  SnOSnU R	                  U R                  USS5      UU R                  U5      US   U R                  US	5      U R                  US
5      U R                  US5      S US U R                  US5      S US.U5      $ )Nr   r~   mmakertakerr   Tr@   r   r   r   r   )r>   r   r   r@   r   r   r   r   takerOrMakerr   r   r   r   )rZ   ri   rn   	safe_bool
safe_tradesafe_string_2r   r   )r5   r   r:   rv   r   isMakerr   s          r7   r   hashkey.parse_ws_trade  s    6 ##E3/!!(3%%eS1	.., &&$$UC5"Y/X&**5#6%%eS1&&uc2(%%eS1 
  	r9   symbolsc                   #    U R                  5       I Sh  vN   U R                  5       I Sh  vN nU R                  U5      nSn/ nUc  UR                  U5        O7[	        S[        U5      5       H  nX   n	UR                  US-   U	-   5        M      U R                  U5      n
U R                  XSU5      I Sh  vN nU R                  (       a  U$ U R                  U R                  XUS5      $  N N N97f)a  

https://hashkeyglobal-apidoc.readme.io/reference/websocket-api#private-stream

watch all open positions
:param str[] [symbols]: list of unified market symbols to watch positions for
:param int [since]: the earliest time in ms to fetch positions for
:param int [limit]: the maximum number of positions to retrieve
:param dict params: extra parameters specific to the exchange API endpoint
:returns dict[]: a list of `position structure <https://docs.ccxt.com/en/latest/manual.html#position-structure>`
N	positionsr   rX   T)rY   rJ   market_symbolsrs   rp   rq   rK   watch_multipler\   filter_by_symbols_since_limitr  )r5   r  rS   rT   rC   r,   r<   messageHashesrx   r@   rE   r  s               r7   watch_positionshashkey.watch_positions:  s      !!!++--	%%g.!?  -1c'l+ $$[3%6%?@ , ""9---c$VV	??11$..'RWY]^^ 	"- Ws2   C7C1C7C3BC7;C5<6C73C75C7c                     U R                   c  [        5       U l         U R                   nU R                  U5      nUR                  U5        SnUR	                  XE5        US   nUR	                  XES-   U-   5        g )Nr  r@   rX   )r  r   parse_ws_positionrs   rt   )r5   rc   ru   r  rz   r<   r@   s          r7   handle_positionhashkey.handle_positionW  sp    , >>!57DNNN	''0 !v+!vS069:r9   c                    U R                  US5      nU R                  U5      nU R                  US5      nU R                  0 SUS   _SS _SU_SU R	                  U5      _SU R                  US5      _S	S _S
U R                  US5      _SU R                  US5      _SU R                  US5      _SU R                  US5      _SU R                  US5      _SS _SU R                  US5      _SS _SU R                  US5      _SU R                  US5      _SS_U R                  US5      S U R                  US5      S S S S S S S US .E5      $ )!Nr   Er@   r>   r   r   	contractsPcontractSizer   r   notionalpvleverager   unrealizedPnluprealizedPnlr   
collateral
entryPricer   	markPriceliquidationPricer   
marginModemthedgedTmmr   )maintenanceMarginmaintenanceMarginPercentageinitialMargininitialMarginPercentagemarginRatior   	lastPricer   r   
percentager   )rZ   ri   rn   safe_positionr   r   r   )r5   positionr:   rv   r   s        r7   r  hashkey.parse_ws_positionw  s   ##Hc2!!(+%%h4	!! #
fX&#
$#
 #
 Y/	#

 ))(C8#
 D#
 D**8S9#
 ((48#
 ))(C8#
 T--h=#
 4++Hc:#
 $#
 $**8S9#
 #
  0 03 ?#
  $004@!#
" d##
$ "&!1!1(D!A+/!--h<'+#'!#9#
  	r9   c                 ,  #    U R                  5       I Sh  vN nU R                  5       I Sh  vN   SnU R                  SSX5      u  p1SU-   nU R                  U5      nU R	                  U5      nU R                  XcU5        SnSnU R                  U R                  SSS5      u  pqU R                  U R                  SSS5      u  pU(       a#  U(       a  UR                  US	-   5      I Sh  vN   U R                  XTSU5      I Sh  vN $  N N N# N
7f)
a  
watch balance and get the amount of funds available for trading or funds locked in orders

https://hashkeyglobal-apidoc.readme.io/reference/websocket-api#private-stream

:param dict [params]: extra parameters specific to the exchange API endpoint
:param str [params.type]: 'spot' or 'swap' - the type of the market to watch balance for(default 'spot')
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
Nspotr   balance:r)   Tr*   Fz:fetchBalanceSnapshot)
rJ   rY   handle_market_type_and_paramsrK   rc   set_balance_cachehandle_option_and_paramsr0   futurerB   )	r5   rC   r,   r   r<   rE   rc   r)   r*   s	            r7   watch_balancehashkey.watch_balance  s     ++--	!!!99.$PV] 4'""9-S!v[9##'+'D'DT\\Sacy{  (A$'+'D'DT\\Sacy  |A  (B$$8--'> >???ZZ$DDD .! @DsD   DDDDB=D,D-DDDDDDc                 8   X1R                   ;   a  g U R                  U R                  S5      nU R                  USS5      nU(       aE  US-   S-   nXaR                  ;  a.  UR                  U5        U R                  U R                  XU5        0 U R                  U'   g )Nr   r)   TrX   )	subscriptionsrl   r0   r   futuresr1  spawnload_balance_snapshotbalance)r5   rc   r   subscribeHashr0   r   r<   s          r7   r/  hashkey.set_balance_cache  s    000..~>>>'+A4H*'==K>>1k*

455vDQTr9   c                 :  #    U R                  SU05      I S h  vN nU R                  X@R                  U R                  U0 5      5      U R                  U'   UR                  U   nUR                  5         UR                  U R                  U   SU-   5        g  N7f)Nr   r-  )fetch_balanceextend
safe_valuer9  r6  rt   )r5   rc   r<   r   responser1  s         r7   r8  hashkey.load_balance_snapshot  s     ++VTN;;![[??4<<QUWY3Z[T,t||D):+<= <s   BBB Bc                 j   U R                  US5      nU R                  US/ 5      nU R                  US5      nUS:H  nU(       a  SOSnXpR                  ;  a  0 U R                  U'   X R                  U   S'   U R                  US5      nU R	                  U5      n	U R                  5       n
U R                  US	5      U
S
'   U R                  US5      U
S'   XR                  U   U	'   U R                  U R                  U   5      U R                  U'   SU-   nUR                  U R                  U   U5        g )NeBr   outboundAccountInfor,  swapr   r   r   freer   usedr-  )rZ   ro   rl   r9  r   accountsafe_balancert   )r5   rc   ru   rA   rh   balanceUpdateisSpotr   
currencyIdcoderI  r<   s               r7   handle_balancehashkey.handle_balance  s"   &   #.~~gsB/tQ///vV$!#DLL%,T6"%%mS9
&&z2,,.**=#>**=#>#*T4 !..t||D/ABT 4't||D);7r9   c                 8  #    U R                  U R                  S5      nUb  U$ U R                  U5      I S h  vN nU R                  US5      nX R                  S'   U R                  U R                  SS5      nU R	                  X@R
                  X!5        U$  N_7f)Nr,   r+   r(   )rZ   r0   privatePostApiV1UserDataStreamrn   delaykeep_alive_listen_key)r5   rC   r,   r@  r+   s        r7   rJ   hashkey.authenticate  s     $$T\\;?	 <<VDD $$X{;	$-[!#00?UW^_

')C)CYW Es   6BBA Bc                   #    Uc  g SU0n U R                  U R                  X25      5      I S h  vN   U R                  U R                  SS5      nU R	                  X@R
                  X5        g  N>! [         aY  nU R                  U5      nU R                  U5      nS U R                  S'   UR                  U5        U R                  U	  S nAg S nAff = f7f)Nr,   r+   iO )privatePutApiV1UserDataStreamr>  rn   r0   rS  rT  	ExceptionrK   rc   rejectclients)r5   r,   rC   rD   r+   errorrE   rc   s           r7   rT  hashkey.keep_alive_listen_key  s     
		"44T[[5QRRR#'#4#4T\\CY[b#c JJ+-G-G[ S  	"&&y1C[[%F(,DLL%MM% S!	"s?   	C#A0 A.=A0 -C.A0 0
C:AC	CCCc                    [        U[        5      (       a  U R                  US0 5      nU R                  USS5      nUS:X  a  U R	                  X5        g US:X  a  U R                  X5        g US:X  a  U R                  X5        g US:X  a  U R                  X5        g US:X  d  US	:X  a  U R                  X5        g US
:X  a  U R                  X5        g US:X  a  U R                  X5        g US:X  d  US:X  a  U R                  X5        g g )Nr   r;   rC  kliner   r   r   contractExecutionReportexecutionReport
ticketInfooutboundContractPositionInforE  outboundContractAccountInfo)
isinstancelistrl   r   r{   r   r   r   r   r   r  rO  )r5   rc   ru   r;   s       r7   handle_messagehashkey.handle_message  s    gt$$nnWa4G""7GS9Gf.k!v/gv/g""6300e?P6Pf.l"  144  1,,%;X2X0 3Yr9   )r   r   r  rI   )3__name__
__module____qualname____firstlineno__r   r4   r   strrF   rL   rK   r
   r   re  ra   r   r{   rr   r   r   r   r   r   r   r   r   r   r   r   r   r   dictr   r   r   r   r   r   r  r  r  r   r2  r/  r8  rO  rJ   rT  rf  __static_attributes____classcell__)r6   s   @r7   r   r      s   '# 'R VX b bs b bE
C ?CQUdhqs H H H3 H^a Hx|  ~B  yC H2-,6 -,^
F 
d 
, 68 J JF J$":F ":H <@d[] S SS S Sbfglbm S.(,F (,T @DB !S ! !S\ !&+/ +/Z 04$UYbd U UC Us Uimnsit U,.:6 .:`+D +& +E +Z 37TX\eg SC Ss SRU Slpqvlw S, EG ?f ?<3E 3j 8<$]ajl _W _C _WZ _quv~q _:;f ;@!& !H !F *, E E4
  
 >#8V #8J )+   =? ""1V 1 1r9   r   )ccxt.async_supportccxt ccxt.async_support.base.ws.cacher   r   r   r   ccxt.base.typesr   r   r	   r
   r   r   r   r   r   r   r   r   !ccxt.async_support.base.ws.clientr   typingr   async_supportr    r9   r7   <module>rx     sB     A  A u u u u 4 U1d  (( U1r9   