
    ":h                         d dl Zd dlmZmZmZmZ d dlmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ  G d dej0                  j2                        Zy)    N)
ArrayCacheArrayCacheBySymbolByIdArrayCacheBySymbolBySideArrayCacheByTimestamp)AnyBalancesIntMarketOrder	OrderBookPositionStrStringsTickerTickersTrade)Client)Listc                   d    e Zd Zdef fdZdefdZd Zd Zddi fde	d	e	d
e	de
dee	   f
dZi fde	defdZdi fdedefdZdddi fde	dededee   fdZddi fde	dededee   fdZdi fde	dedefdZdddi fdedededee   fdZdddi fdedededee   fdZi fdefdZdddi fdedededee   fdZ de!fdZ"d Z#d Z$de!de%fd Z&de!de%fd!Z'de!de%fd"Z(de!de%fd#Z)de!de%fd$Z*d/d%e%de
fd&Z+d/d'e%de
fd(Z,de!de%fd)Z-de!de%fd*Z.de!de%fd+Z/de!fd,Z0de!fd-Z1de!de%fd.Z2 xZ3S )0xtreturnc                     | j                  t        t        |          dddddddddddddddddiid	d	d	d
did
didddddd| j                  dd d      S )NTF)ws
watchOHLCVwatchOrderBookwatchTickerwatchTickerswatchTradeswatchTradesForSymbolswatchBalancewatchOrderswatchMyTradeswatchPositionsapir   zwss://stream.xt.comzwss://fstream.xt.com/ws)spotcontract  methodtickertickersswap)typefetchPositionsSnapshotawaitPositionsSnapshot)tradesLimitordersLimit
OHLCVLimitr   r   r#   i N  )	keepAliveping)hasurlsoptions	streamingtoken)deep_extendsuperr   describer3   )self	__class__s    E/var/www/html/turnos/venv/lib/python3.12/site-packages/ccxt/pro/xt.pyr;   zxt.describe   s    b$ 8 :""&# $#). $#!%"&  5$=  $#"h  i! #.2.2#" #		 U+=
 + +	    
isContractc                   K   | j                          |rdnd}| j                  d   d   |   }|s|dz   }| j                  |      }| j                  |j                  d      }||r8| j                          d{   }| j                  |d      |j                  d<   nI| j                          d{   }| j                  |d      }| j                  |d	      |j                  d<   |j                  d   S 7 |7 Fw)
a  
 @ignore
        required for private endpoints
        :param str isContract: True for contract trades

        https://doc.xt.com/#websocket_privategetToken
        https://doc.xt.com/#futures_user_websocket_v2base

        :returns str: listen key / access token
        r&   r%   r$   r   z/privater8   NresultaccessToken)check_required_credentialsr5   clientsafe_stringsubscriptions)privateLinearGetFutureUserV1UserListenKeyprivateSpotPostWsToken	safe_dict)r<   r@   	tradeTypeurlrE   r8   responserB   s           r>   get_listen_keyzxt.get_listen_key=   s      	'')",J&	iit$Y/
"CS!  !5!5w?=!%!O!O!QQ 150@0@80T$$W-!%!<!<!>> (;040@0@0W$$W-##G,,3 R ?s%   A7C:9C6:7C:1C82AC:8C:c                    | j                  |d      }| j                  |d      }| j                  |dd      }||dz
  k  ryt        dt	        |            D ]#  }||   }| j                  |dd      }||k\  s!|c S  t	        |      S )Nnoncer   iu   )safe_integer
safe_valuesafe_integer_2rangelen)	r<   	orderbookcacherP   
firstDeltafirstDeltaNoncerQ   delta
deltaNonces	            r>   get_cache_indexzxt.get_cache_indexl   s    !!)W5__UA.
--j#sC?Q&&q#e*% 	A!HE,,UC=JU"		
 5zr?   c                    | j                  |dd      |d<   | j                  |dg       }| j                  |dg       }|d   }|d   }t        dt        |            D ]=  }||   }| j	                  |d      }	| j	                  |d	      }
|j                  |	|
       ? t        dt        |            D ]=  }||   }| j	                  |d      }	| j	                  |d	      }
|j                  |	|
       ? y )
NrQ   rR   rP   abbidsasksr   rS   )rW   	safe_listrX   rY   safe_numberstore)r<   rZ   r^   obAsksobBidsrd   re   rQ   bidpricequantityasks               r>   handle_deltazxt.handle_deltaz   s    !00SA	'sB/sB/  q#f+& 	(A)C$$S!,E''Q/HJJuh'		(
 q#f+& 	(A)C$$S!,E''Q/HJJuh'		(r?   Nnameaccess
methodNamemarketsymbolsc                 J  K   |dk(  }d}| j                  |||      \  }}|dk7  }	|	rdnd| j                  | j                               |z   d}
|rM|	s#|g|
d<   | j                  |	       d{   |
d<   n.| j                  |	       d{   }|d	z   |z   }|g|
d<   n|g|
d<   |	rd
nd}|dz   |z   }||dz   dj	                  |      z   }| j                  |
|      }|}|	r|rdnd}| j                  d   d   |   dz   |z   }| j                  ||||       d{   S 7 7 7 w)a)  
 @ignore
        Connects to a websocket channel

        https://doc.xt.com/#websocket_privaterequestFormat
        https://doc.xt.com/#futures_market_websocket_v2base

        :param str name: name of the channel
        :param str access: public or private
        :param str methodName: the name of the CCXT class method
        :param dict [market]: CCXT market
        :param str[] [symbols]: unified market symbols
        :param dict params: extra parameters specific to the xt api
        :returns dict: data from the websocket stream
        privateNr%   	SUBSCRIBE	subscribe)r(   idparams	listenKey@r&   ::,userrs   r$   r   /)handle_market_type_and_paramsnumber_to_stringmillisecondsrN   joinextendr5   watch)r<   rp   rq   rr   rs   rt   rz   privateAccessr,   r@   rx   r{   paramrK   messageHashrequesttailrL   s                     r>   rx   zxt.subscribe   sh      )+99*ffUffn
%/k[''(9(9(;<tC
	 '+f	(#/3/B/B:/N)N	+&"&"5"5j"AA	s
Y.',g	(##'&Ih",J&	TkI-%,sxx/@@K++i0*6Diit$Y/#5<ZZ[';GGG! *OA Hs7   A*D#,D-D#	D
BD#D!D#D#!D#symbolc                 :  K   | j                          d{    | j                  |      }| j                  | j                  d      }| j	                  |dd      }| j	                  |d|      }|dz   |d   z   }| j                  |dd|d|       d{   S 7 7 w)a  
        watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market

        https://doc.xt.com/#websocket_publictickerRealTime
        https://doc.xt.com/#futures_market_websocket_v2tickerRealTime
        https://doc.xt.com/#futures_market_websocket_v2aggTickerRealTime

        :param str symbol: unified symbol of the market to fetch the ticker for
        :param dict params: extra parameters specific to the xt api endpoint
        :param str [params.method]: 'agg_ticker'(contract only) or 'ticker', default = 'ticker' - the endpoint that will be streamed
        :returns dict: a `ticker structure <https://docs.ccxt.com/en/latest/manual.html#ticker-structure>`
        Nr   r(   r)   r|   ry   public)load_marketsrs   rJ   r6   rF   rx   )r<   r   rz   rs   r6   defaultMethodr(   rp   s           r>   watch_tickerzxt.watch_ticker   s      !!!V$..}=(((HE!!&(MB|fTl*^^D(M64QWXXX 	" Ys"   BBA;BBBBc                   K   | j                          d{    | j                  | j                  d      }| j                  |dd      }| j                  |d|      }d}|| j	                  |d         }| j                  |dd|||       d{   }| j                  r|S | j                  | j                  d|      S 7 7 1w)a  
        watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market

        https://doc.xt.com/#websocket_publicallTicker
        https://doc.xt.com/#futures_market_websocket_v2allTicker
        https://doc.xt.com/#futures_market_websocket_v2allAggTicker

        :param str [symbols]: unified market symbols
        :param dict params: extra parameters specific to the xt api endpoint
        :param str [params.method]: 'agg_tickers'(contract only) or 'tickers', default = 'tickers' - the endpoint that will be streamed
        :returns dict: a `ticker structure <https://docs.ccxt.com/en/latest/manual.html#ticker-structure>`
        Nr   r(   r*   r   r   r   )	r   rJ   r6   rF   rs   rx   
newUpdatesfilter_by_arrayr*   )r<   rt   rz   r6   r   rp   rs   r*   s           r>   watch_tickerszxt.watch_tickers   s      !!!..~>(((IF-@[[,FtX~vwX^__??N##DLL(GDD 	" `s"   CB>A7CC 0C C1msincelimitc                 "  K   | j                          d{    | j                  |      }d|d   z   dz   |z   }| j                  |dd|d|       d{   }| j                  r|j	                  ||      }| j                  |||dd      S 7 t7 9w)	a  
        watches historical candlestick data containing the open, high, low, and close price, and the volume of a market

        https://doc.xt.com/#websocket_publicsymbolKline
        https://doc.xt.com/#futures_market_websocket_v2symbolKline

        :param str symbol: unified symbol of the market to fetch OHLCV data for
        :param str timeframe: 1m, 3m, 5m, 15m, 30m, 1h, 2h, 4h, 6h, 8h, 12h, 1d, 3d, 1w, or 1M
        :param int [since]: not used by xt watchOHLCV
        :param int [limit]: not used by xt watchOHLCV
        :param dict params: extra parameters specific to the xt api endpoint
        :returns int[][]: A list of candles ordered, open, high, low, close, volume
        Nzkline@ry   r~   r   r   r   Tr   rs   rx   r   getLimitfilter_by_since_limit)	r<   r   	timeframer   r   rz   rs   rp   ohlcvs	            r>   watch_ohlcvzxt.watch_ohlcv   s      !!!V$&,&,y8nnT8\64QWXX??NN651E))%q$GG 	" Ys!   BB<BB8BBc                   K   | j                          d{    | j                  |      }d|d   z   }| j                  |dd|d|       d{   }| j                  r|j	                  ||      }| j                  |||d      S 7 m7 8w)a`  
        get the list of most recent trades for a particular symbol

        https://doc.xt.com/#websocket_publicdealRecord
        https://doc.xt.com/#futures_market_websocket_v2dealRecord

        :param str symbol: unified symbol of the market to fetch trades for
        :param int [since]: timestamp in ms of the earliest trade to fetch
        :param int [limit]: the maximum amount of trades to fetch
        :param dict params: extra parameters specific to the xt api endpoint
        :returns dict[]: a list of `trade structures <https://docs.ccxt.com/en/latest/manual.html?#public-trades>`
        Nztrade@ry   r   r   	timestampr   )r<   r   r   r   rz   rs   rp   tradess           r>   watch_tradeszxt.watch_trades   s      !!!V$&,&~~dHmVTSYZZ??OOFE2E))&%LL 	" [s!   BB6BB7BBc                 8  K   | j                          d{    | j                  |      }| j                  |d      }| j                  |d      }d|d   z   }|d|d   z   dz   |z   }| j	                  |dd|d|       d{   }|j                         S 7 7 w)	a  
        watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data

        https://doc.xt.com/#websocket_publiclimitDepth
        https://doc.xt.com/#websocket_publicincreDepth
        https://doc.xt.com/#futures_market_websocket_v2limitDepth
        https://doc.xt.com/#futures_market_websocket_v2increDepth

        :param str symbol: unified symbol of the market to fetch the order book for
        :param int [limit]: not used by xt watchOrderBook
        :param dict params: extra parameters specific to the xt api endpoint
        :param int [params.levels]: 5, 10, 20, or 50
        :returns dict: A dictionary of `order book structures <https://docs.ccxt.com/en/latest/manual.html#order-book-structure>` indexed by market symbols
        Nlevelszdepth_update@ry   zdepth@r~   r   r   )r   rs   rF   omitrx   r   )r<   r   r   rz   rs   r   rp   rZ   s           r>   watch_order_bookzxt.watch_order_book  s      !!!V$!!&(368,-fTl*S069D..x9I6SWY_``	   	" as"   BBA*BBBBc                   K   | j                          d{    d}d}|| j                  |      }| j                  |dd|d|       d{   }| j                  r|j	                  ||      }| j                  |||d      S 7 k7 8w)a-  
        watches information on multiple orders made by the user

        https://doc.xt.com/#websocket_privateorderChange
        https://doc.xt.com/#futures_user_websocket_v2order

        :param str [symbol]: unified market symbol
        :param int [since]: not used by xt watchOrders
        :param int [limit]: the maximum number of orders to return
        :param dict params: extra parameters specific to the xt api endpoint
        :returns dict[]: a list of `order structures <https://docs.ccxt.com/en/latest/manual.html#order-structure>`
        Norderrv   r!   r   r   )r<   r   r   r   rz   rp   rs   orderss           r>   watch_orderszxt.watch_orders,  s      !!![[(F~~dI}fdTZ[[??OOFE2E))&%LL 	"
 \!   BB4BB7BBc                   K   | j                          d{    d}d}|| j                  |      }| j                  |dd|d|       d{   }| j                  r|j	                  ||      }| j                  |||d      S 7 k7 8w)a\  
        watches information on multiple trades made by the user

        https://doc.xt.com/#websocket_privateorderDeal
        https://doc.xt.com/#futures_user_websocket_v2trade

        :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  orde structures to retrieve
        :param dict params: extra parameters specific to the kucoin api endpoint
        :returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
        Ntraderv   r"   r   r   )r<   r   r   r   rz   rp   rs   r   s           r>   watch_my_tradeszxt.watch_my_tradesC  s      !!![[(F~~dIPTV\]]??OOFE2E))&%LL 	"
 ^r   c                    K   | j                          d{    d}| j                  |dddd|       d{   S 7 $7 w)ax  
        watches information on multiple orders made by the user

        https://doc.xt.com/#websocket_privatebalanceChange
        https://doc.xt.com/#futures_user_websocket_v2balance

        :param dict params: extra parameters specific to the xt api endpoint
        :returns dict[]: a list of `balance structures <https://docs.ccxt.com/#/?id=balance-structure>`
        Nbalancerv   r    )r   rx   )r<   rz   rp   s      r>   watch_balancezxt.watch_balanceZ  sE      !!!^^D)^T4QWXXX 	"Xs   ?;?=??c                 0  K   | j                          d{    | j                  d   d   d   dz   dz   }| j                  |      }| j                  |       | j	                  ddd	      }| j	                  dd
d	      }| j
                  }	|rA|r?| j                  |	      r.|j                  d       d{   }
| j                  |
|||d	      S d}| j                  |dddd|       d{   }| j                  r|S | j                  |	|||d	      S 7 7 ^7 +w)a  

        https://doc.xt.com/#futures_user_websocket_v2position

        watch all open positions
        :param str[]|None symbols: list of unified market symbols
        :param number [since]: since timestamp
        :param number [limit]: limit
        :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>`
        Nr$   r   r&   r   r   r#   r-   Tr.   positionrv   )r   r5   rE   set_positions_cachehandle_option	positionsis_emptyfuturefilter_by_symbols_since_limitrx   r   )r<   rt   r   r   rz   rL   rE   r-   r.   r[   snapshotrp   newPositionss                r>   watch_positionszxt.watch_positionsh  s,     !!!iit$Z036?S!  (!%!3!34DF^`d!e!%!3!34DF^`d!e!&<uAU#]]+CDDH55hPUW[\\!^^D)=MtUY[abb??11%%PTUU 	" E cs4   DDBD3D44D(D)(DDDrE   c                     | j                   t               | _         | j                  dd      }|r@d}||j                  vr/|j	                  |       | j                  | j                  ||       y y y )Nr#   r-   )r   r   r   futuresr   spawnload_positions_snapshot)r<   rE   r-   r   s       r>   r   zxt.set_positions_cache  sk    >>!57DN!%!3!34DF^!_!2K6>>1k*

477M 2 "r?   c                 n  K   | j                  d        d {   }t               | _        | j                  }t        dt	        |            D ]1  }||   }| j                  |dd      }|dkD  s!|j                  |       3 |j                  |   }|j                  |       |j                  |d       y 7 w)Nr   	contractsposition::contract)	fetch_positionsr   r   rX   rY   rg   appendr   resolve)	r<   rE   r   r   r[   rQ   r   r   r   s	            r>   r   zxt.load_positions_snapshot  s     ..t44	13q#i.) 	'A |H((;BI1}X&		' ,uu23 5s   B5B3AB5-AB5c                    | j                   t               | _         | j                   }| j                  |di       }| j                  |      }|j	                  |       | j                  |d      }t        dt        |            D ]g  }||   }|j                  d      }	|	d   }
|
j                  d      }| j                  |gd|d      }| j                  |      rV|j                  ||       i |j                  |gd       y )	Ndatar   r   r}   rS   r~   r   F)r   r   rJ   parse_positionr   find_message_hashesrX   rY   splitr   r   r   )r<   rE   messager[   r   r   messageHashesrQ   r   partssymbolsStringrt   r   s                r>   handle_positionzxt.handle_position  s    > >>!57DN~~gvr2&&t,X009MNq#m,- 	7A'*K%%d+E!!HM#))#.G,,hZ7ERI==+y+6	7 	z#78r?   r   c                 ,   | j                  |d      }| j                  |d      }|m| j                  |d      }|d u}| j                  |      }|d   }|| j                  |<   | j                  |d      }	|rdnd}
|	dz   |
z   }|j	                  ||       |S )	Nr   scvr   eventr%   r&   r}   )rJ   rF   parse_tickerr*   r   )r<   rE   r   r   marketIdr   isSpotr)   r   r   messageHashTailr   s               r>   handle_tickerzxt.handle_ticker  s    z ~~gv.##D#.!!$-Bt^F&&t,FH%F#)DLL $$Wg6E(.fJO$,8KNN6;/r?   c                    | j                  |dg       }| j                  |d      }| j                  |dd      }|dnd}g }t        dt	        |            D ]=  }||   }	| j                  |	      }
|
d   }|
| j                  |<   |j                  |
       ? | j                  |d      d	z   |z   }| j                  ||d	z         }t        dt	        |            D ]}  }||   }|j                  d	      }|d
   }|j                  d      }| j                  |d|      }t        |j                               }t	        |      }|dkD  sl|j                  ||        |j                  | j                  |       |S )Nr   r   r   aqr%   r&   r   topicr}      r~   )rf   rJ   safe_string_2rX   rY   r   r*   r   rF   r   r   r   listkeysr   )r<   rE   r   r   firstTickerspotTestrK   
newTickersrQ   
tickerDatar)   r   messageHashStartr   r   r   r   rt   r*   tickersSymbols
numTickerss                        r>   handle_tickerszxt.handle_tickers  s   H ~~gvr2nnT1-%%k4>'3F*	
q#d)$ 	&AaJ&&z2FH%F#)DLL f%	&  ++GW=DyP009ID9PQq#m,- 		5A'*K%%d+E!!HM#))#.G**:xIG!',,.1N^,JA~w4		5 	t||%56r?   c                 d   | j                  |di       }| j                  |d      }|| j                  |d      }d|v rdnd}| j                  |d d |      }|d   }| j                  ||      }	| j                  | j                  |i       | j                  |<   | j                  | j                  |   |      }
|
:| j                  | j                  dd	      }t        |      }
|
| j                  |   |<   |
j                  |	       | j                  |d
      }|dz   |z   }|j                  |
|       |S )Nr   r   rQ   qr%   r&   r   r1   r'   r   r}   )rJ   rF   safe_marketparse_ohlcvohlcvsrV   rU   r6   r   r   r   )r<   rE   r   r   r   r   rK   rs   r   parsedstoredr   r   r   s                 r>   handle_ohlcvzxt.handle_ohlcvu  s1   L ~~gvr2##D#.((s3I#&$;ZI%%hdIFFH%F%%dF3F"&..fb"IDKK__T[[%8)DF~))$,,dK.u517F#I.MM&!$$Wg6E$,2KNN6;/r?   c                    | j                  |d      }| j                  |d      }|| j                  |      }| j                  |d      }|dnd}| j	                  |d d |      }|d   }	| j                  |d      }
| j                  | j                  |	      }|7| j                  | j                  dd	      }t        |      }|| j                  |	<   |j                  |       |
d
z   |z   }|j                  ||       |S )Nr   r   rQ   r%   r&   r   r   r/   r'   r}   )rJ   safe_string_lowerparse_traderF   r   rV   r   rU   r6   r   r   r   )r<   rE   r   r   r   r   rQ   rK   rs   r   r   tradesArrayr/   r   s                 r>   handle_tradezxt.handle_trade  s   > ~~gv.))$4$$T*E  s+A#$=zI%%hdIFFH%F$$Wg6E//$++v>K""//mTR(5&1F#u%$,2KNN;4r?   c                 D   | j                  |d      }| j                  |d      }|y| j                  |d      }|j                  d      }| j                  |d      }d|v rdnd}| j                  |d d |      }|d	   }	| j	                  |d
      }
| j	                  |d      }|dz   |z   }|	| j
                  vrN| j                  |j                  |i       }| j                  |d      }| j                  i |      | j
                  |	<   | j
                  |	   }| j                  |d      }|gt        |j                        }| j                  ddd      }||k(  r| j                  | j                  |||	       |j                  j                  |       y |
Z|d   }t        dt        |
            D ]=  }|
|   }| j!                  |d      }| j!                  |d      }|j#                  ||       ? |Z|d   }t        dt        |            D ]=  }||   }| j!                  |d      }| j!                  |d      }|j#                  ||       ? | j                  |d      }| j%                  |dd      |d<   ||d<   | j'                  |      |d<   |	|d	<   |j)                  ||       y y )Nr   r   r   r~   r   fur&   r%   r   rb   rc   r}   r   rP   r   snapshotDelay   re   rS   rd   trQ   rR   r   datetime)rJ   rF   r   r   rf   
orderbooksrG   rU   
order_bookrY   r[   r   r   load_order_bookr   rX   rg   rh   rW   iso8601r   )r<   rE   r   r   r   r   
splitEventrK   rs   r   ri   rj   r   subscriptionr   rZ   rP   cacheLengthr   re   rQ   rn   rl   rm   rd   rk   r   s                              r>   handle_order_bookzxt.handle_order_book  s   x ~~gv.##D#.$$Wg6ES)J$$Z3E'+t|
&I%%hdIFFH%F^^D#.F^^D#.F$,2Kdoo-#~~f.B.BKQST)),@*.//"e*D'/I%%i9E}!)//2 $ 2 23C_VX Y-/JJt33V[&Q&&t,! (q#f+. 0A )C ,,S!4E#//Q7HJJuh/	0
 ! (q#f+. 0A )C ,,S!4E#//Q7HJJuh/	0
 ))$4I!%!4!4T3!DIg%.Ik"$(LL$;Ij!"(IhNN9k2U  r?   r   c                    | j                  |d      }d|v rdnd}| j                  ||d |      }| j                  |d      }| j                  |d || j                  |      |d   | j                  |dd      | j	                  | j                  |dd	            | j                  |d
d      d | j                  |d      | j                  |d      d d | j                  |d      d dd|      S )Nr   r   r&   r%   r   rQ   orderIdststatesd	orderSiderl   origQtyf)currencycostrate)infory   r   r   r   r   r,   sidetakerOrMakerrl   amountr  fee)rF   r   
safe_trader   parse_order_statusr   rg   )r<   r   rs   r   rK   r   s         r>   parse_ws_order_tradezxt.parse_ws_order_tradeK  s   B ##E3/#+u#4J6	!!(FD)D$$UC0	"Y/X&%%eS)<++D,<,<UD',RS**5$D %%eW5&&ui8 ((4 
$ % 	r?   r   c                    | j                  |dd      }d|v rdnd}| j                  ||d |      }| j                  |dd      }| j                  i d|d| j                  |d	d
      d| j                  |dd      d|d| j	                  |      dd d|d   d|d   dd dd d| j                  |dd      d| j                  |dd      dd dd dd d| j                  |dd      d| j                  |dd       | j                  |d!      d | j                  |d"d#      | j                  | j                  |d$d%            d | j                  |d&      d'd d(|      S ))Nr   r   r&   r%   ct
createTimer  ry   rQ   r  clientOrderIdcir   r   lastTradeTimestampr,   timeInForcepostOnlyr  r	  r
  rl   p	stopPricestopLoss
takeProfitr  oqr  filledeqexecutedQtylqapavgPricer  r  r  )r  r  )	remainingr  averagestatusr  r   )
r   r   rW   
safe_orderr   safe_string_lower_2safe_number_2rF   r  rg   )r<   r   rs   r   rK   r   s         r>   parse_ws_orderzxt.parse_ws_order  s   V %%eS(;#+u#4J6	!!(FD)D''t\B	  
E 
$$$UC; 
 T//t_M 
 	 

 Y/ 
 !$ 
 fX& 
 F6N 
 4 
  
 D,,UD+F 
 T''sG< 
  
  
 $ 
  d((i@! 
" d((mD# 
$ ))%6))%zB--d.>.>udG.TU ((4 5 
6 7 	r?   c                 v   | j                   }|.| j                  | j                  d      }t        |      }|| _         | j	                  |di       }| j                  |dd      }|Td|v rdnd}| j                  |d d |      }| j                  ||      }	|j                  |	       |j                  |d|z          |S )Nr0   r   r   r   r&   r%   zorder::)
r   rU   r6   r   rJ   r   r   r1  r   r   )
r<   rE   r   r   r   r   r   rK   rs   r   s
             r>   handle_orderzxt.handle_order  s    V >%%dllMBE+E2F DKw3%%eS(;'/5'8
vI%%hdIFF((7FMM&!NN69y#89r?   c                    | j                  |di       }| j                  |dd      }| j                  |      }| j                         }| j	                  |d      |d<   | j	                  |d      |d<   | j                  |dd	      |d
<   || j
                  |<   | j                  | j
                        | _        d|v rdnd}|j                  | j
                  d|z          y )Nr   ccoinavailableBalancefreer  usedrc   walletBalancetotalr&   r%   z	balance::)rJ   r   safe_currency_codeaccountrF   r   safe_balancer   )r<   rE   r   r   
currencyIdcoder=  rK   s           r>   handle_balancezxt.handle_balance
  s    F ~~gvr2''c6:
&&z2,,.**41CD**45--dCI$T((6#)T>J	t||[9%<=r?   c                 L   | j                  |di       }| j                  }|/| j                  | j                  dd      }t	        |      }|| _        | j                  |      }| j                  |d         }|j                  |       |d   rdnd}|j                  |d|z          y )Nr   r/   r'   r   r&   r%   ztrade::)	rJ   myTradesrU   r6   r   r   rs   r   r   )	r<   rE   r   r   r   r   parsedTraders   rK   s	            r>   handle_my_tradeszxt.handle_my_trades9  s    F ~~gvr2>%%dllM4HE+E2F"DM&&t,[23k""("4J&	vy945r?   c                    | j                  |d      }|dk(  r|j                          y || j                  |d      }| j                  | j                  | j                  | j                  | j                  | j
                  | j
                  | j                  | j                  | j                  d
}| j                  ||      }|dk(  r3| j                  |d      }d|v sd|v r| j                  }n| j                  }|
 |||       y y y )	Nr   pongr   )
klinedepthdepth_updater)   
agg_tickerr*   agg_tickersr   r   r   r   r   oir  )rF   onPongr   r  r   r   rA  r3  r   rV   rJ   rE  r   )r<   rE   r   r   r   methodsr(   r   s           r>   handle_messagezxt.handle_messageh  s     '2F?MMO$$Wg6E**// $ 6 6,,"00..#22..** 00G __We4F~~gv6DLi4&7!22F!..F!vw' "+ r?   c                 .    | j                         |_        y)Nr3   )r   lastPong)r<   rE   s     r>   r3   zxt.ping  s    ++-r?   c                     | j                  |d      }|dk(  s|dk(  r!d |j                  d<   | j                  d       y |j                  |       y )Nmsginvalid_listen_keyztoken expirer8   T)rF   rG   rN   reject)r<   rE   r   rT  s       r>   handle_error_messagezxt.handle_error_message  sS     w.''SN-B,0F  )%gr?   )N)4__name__
__module____qualname__r   r;   boolrN   r`   ro   strr
   r   rx   r   r   r   r   r   r	   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   dictr   r   r   r   r  r  r1  r3  rA  rE  rP  r3   rW  __classcell__)r=   s   @r>   r   r      s   ,# ,\--t --^(& Y]sw  AC +HC +H +H# +Hv +Hgklogp +HZ 68 Y YF Y* 6:" E7 E E2 8<$]ajl H HC HWZ Hquvzq{ H, <@d[] M MS M Mbfglbm M* @DB !S ! !S\ !2 04$UYbd M MC Ms Mimnsit M. 37TX\eg MC Ms MRU Mlpqvlw M. *, Y Y 8<$]ajl VW VC VWZ Vquv~q V8N& N4.9`IF IT IV\V \d \|86 8D 8t06 0D 0dh3 h3 h3T7$ 7 7rJD J& JX86 8D 8t->V ->d ->^-6v -6 -6^(V (86 6 D r?   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    r?   r>   <module>rg     sB     A  A x x x x 4 H				 Hr?   