
    eiB                         d dl Zd dl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 d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ  G d	 d
ej        j                  ZdS )    N)ArrayCacheBySymbolByIdArrayCacheByTimestamp)AnyBalancesBoolIntOrder	OrderBookStrStringsTickerTickersTrade)Client)List)ExchangeError)NotSupported)Precisec                       e Zd Zdef fdZi fdefdZd Zi fdede	fdZ
di fdedefd	Zd
efdZd)dZd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
efdZd Z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)dZd Zd
efdZ d
efdZ!d Z"d Z#dddi fdededededee$         f
dZ%d
efdZ&d)d Z'd
efd!Z(d
efd"Z)d
ede*fd#Z+d
efd$Z,d
efd%Z-d
efd&Z.g i fdefd'Z/i fd(Z0 xZ1S )*
onetradingreturnc                     |                      t          t          |                                           ddddddddddd
dddiiddd	d
ddd
ddd
ddd
dd	d
ddd
dd	d
dd	d
dd	d
d	di i d          S )NTF)
wswatchBalancewatchTickerwatchTickerswatchTradeswatchTradesForSymbolswatchMyTradeswatchOrderswatchOrderBook
watchOHLCVapir   zwss://streams.onetrading.com/   MINUTES   )unitperiod         HOURS   DAYSWEEKSMONTHS)	1m5m15m30m1h4h1d1w1M)bp_remaining_quota
timeframes)hasurlsoptions	streaming
exceptions)deep_extendsuperr   describe)self	__class__s    Q/var/www/html/volatility/venv/lib/python3.11/site-packages/ccxt/pro/onetrading.pyrC   zonetrading.describe   sD   j$ 7 7 @ @ B B $# $$).!%#"&"  9 '* !*"# 
 !*"# 
 !*"$ 
 !*"$ 
 !("# 
 !("# 
 !'"# 
 !("# 
 !)"# C% %( (R{?E
 ?E
 ? ? ?	    c                   K   |                      |           d{V  | j        d         d         }d}d}|                     | j        dd          }d|d	digd
}|                     ||          }|                     |||||           d{V S )ag  

        https://developers.bitpanda.com/exchange/#account-history-channel

        watch balance and get the amount of funds available for trading or funds locked in orders
        :param dict [params]: extra parameters specific to the exchange API endpoint
        :returns dict: a `balance structure <https://docs.ccxt.com/?id=balance-structure>`
        Nr#   r   balanceACCOUNT_HISTORYr:   r$   	SUBSCRIBEnametyper:   channels)authenticater=   safe_integerr>   rA   watch)rD   paramsurlmessageHashsubscribeHashbpRemainingQuota	subscriberequests           rF   watch_balancezonetrading.watch_balanceT   s       '''''''''it$),,T\;OQTUU"2 -
 
	 ""9f55ZZ['='RRRRRRRRRrG   c                 t    |                      |          | _        d}|                    | j        |           d S )NrI   )parse_balancerI   resolve)rD   clientmessagerU   s       rF   handle_balance_snapshotz"onetrading.handle_balance_snapshotn   s:    : ))'22t|[11111rG   symbolc                    K   |                                   d{V  |                     |          }|d         }d}d|z   }ddddgd}|                     ||||g|           d{V S )	a  

        https://developers.bitpanda.com/exchange/#market-ticker-channel

        watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
        :param str symbol: unified symbol of the market to fetch the ticker for
        :param dict [params]: extra parameters specific to the exchange API endpoint
        :returns dict: a `ticker structure <https://docs.ccxt.com/?id=ticker-structure>`
        Nra   MARKET_TICKERticker.rK   INLINErL   price_points_moderN   rO   )load_marketsmarket
watch_many)rD   ra   rS   rj   subscriptionHashrU   rY   s          rF   watch_tickerzonetrading.watch_ticker   s       !!!!!!!!!V$$!*&( ,)1 
 
 __[';KfXW]^^^^^^^^^rG   Nsymbolsc                    K   |                                   d{V  |                     |          }|g }d}d}ddddgd}|                     |||||           d{V }|                     |d|          S )	a  

        https://developers.bitpanda.com/exchange/#market-ticker-channel

        watches price tickers, a statistical calculation with the information for all markets or those specified.
        :param str symbols: unified symbols of the markets to fetch the ticker for
        :param dict [params]: extra parameters specific to the exchange API endpoint
        :returns dict: an array of `ticker structure <https://docs.ccxt.com/?id=ticker-structure>`
        Nrc   tickersrK   re   rf   rh   ra   )ri   market_symbolsrk   filter_by_array)rD   rn   rS   rl   rU   rY   rp   s          rF   watch_tickerszonetrading.watch_tickers   s       !!!!!!!!!%%g..?G* ,)1 
 
 W>NPWY_````````##GXw???rG   r^   c                 N   |                      |dg           }|                     |d          }t          dt          |                    D ]}||         }|                     |d          }|                     |          }|                     |          | j        |<   |                     |          }	|	| j        |         d<   |                     |	          | j        |         d<   |	                    | j        |         d|z              |	                    | j        d           d S )	Nticker_updatestimer   
instrument	timestampdatetimerd   rp   )

safe_valuesafe_stringrangelensafe_symbolparse_ws_tickerrp   	parse8601iso8601r]   )
rD   r^   r_   rp   ry   itickermarketIdra   rx   s
             rF   handle_tickerzonetrading.handle_ticker   s   " //'+;R@@##GV44q#g,,'' 	E 	EAQZF''==H%%h//F#'#7#7#?#?DL x00I09DL -/3||I/F/FDL ,NN4</V1CDDDDt|Y/////rG   c                    |                      |d          }|                     i d|                     ||          dd dd d|                      |d          d|                      |d          dd dd d	d d
d dd dd d|                      |d          d|                      |d          dd d|                      |d          d|                      |d          dd d |                     |d          |d|          S )Nrw   ra   rx   ry   highlowbid	bidVolumeask	askVolumevwapopenclose
last_pricelastpreviousClosechangeprice_change
percentageprice_change_percentageaveragevolume)
baseVolumequoteVolumeinfo)r{   safe_tickerr~   safe_number)rD   r   rj   r   s       rF   r   zonetrading.parse_ws_ticker   s    ##FL99 !
d&&x88!
!
 !
 D$$VV44	!

 4##FE22!
 4!
 !
 4!
 !
 D!
 D!
 T%%fl;;!
 D$$V\::!
 T!
 d&&v~>>!
  $**63LMM!!
" t#!
$ ++FH==)!
 !
 !
* +  	rG   sincelimitc                 t  K   |                                   d{V  d}|%|                     |          }|d         }|d|z   z  }|                     |           d{V  | j        d         d         }d}|                     | j        dd	          }	d
|	ddigd}
|                     |
|          }|                     |||||           d{V }| j        r|	                    ||          }| 
                    ||||          }t          |          }|dk    r|                     ||||           d{V S |S )a:  

        https://developers.bitpanda.com/exchange/#account-history-channel

        get the list of trades associated with the user
        :param str symbol: unified symbol of the market to fetch trades for. Use 'any' to watch all trades
        :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 exchange API endpoint
        :returns dict[]: a list of `trade structures <https://docs.ccxt.com/?id=public-trades>`
        NmyTradesra   :r#   r   rJ   r:   r$   rK   rL   rM   r   )ri   rj   rP   r=   rQ   r>   rA   rR   
newUpdatesgetLimitfilter_by_symbol_since_limitr}   watch_my_trades)rD   ra   r   r   rS   rU   rj   rT   rV   rW   rX   rY   trades	numTradess                 rF   r   zonetrading.watch_my_trades  s      !!!!!!!!! [[((FH%F3<'K'''''''''it$),,T\;OQTUU"2 -
 
	 ""9f55zz#{G]GTTTTTTTT? 	3OOFE22E22665%PPKK	>>--feUFKKKKKKKKKrG   c                   K   |                                   d{V  |                     |          }|d         }d|z   }d}d}||}dd|dgd}|                     ||||g|           d{V }	|	                                S )	a;  

        https://developers.bitpanda.com/exchange/#market-ticker-channel

        watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
        :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
        Nra   book:
ORDER_BOOKr   rK   )rL   depthrh   )ri   rj   rk   r   )
rD   ra   r   rS   rj   rU   rl   r   rY   	orderbooks
             rF   watch_order_bookzonetrading.watch_order_book0  s       !!!!!!!!!V$$!&'E )" 
 
 //+w@PSYRZ\bcccccccc	   rG   c                    |                      |d          }|                      |d          }|                     |          }|                      |d          }|                     |          }d|z   }|                     | j        |          }	|	|                     i           }	|dk    r/|                     |||dd          }
|	                    |
           nN|dk    r.|                     |d	g           }|                     |	|           nt          | j
        d
z   |z             ||	d<   ||	d<   |                     |          |	d<   |	| j        |<   |                    |	|           d S )NrN   instrument_coderv   r   ORDER_BOOK_SNAPSHOTbidsasksORDER_BOOK_UPDATEchangesz1 watchOrderBook() did not recognize message type noncerx   ry   )r{   r~   r   rz   
orderbooks
order_bookparse_order_bookresethandle_deltasr   idr   r]   )rD   r^   r_   rN   r   ra   dateTimerx   channelr   snapshotr   s               rF   handle_order_bookzonetrading.handle_order_bookO  s   : 00##G->??!!(++##GV44NN8,,	F"OODOV<<	++I(((,,WfiQWXXHOOH%%%%(((oogy"==Gy'2222tw)\\_ccddd&	'!*	+ $Y 7 7	*"+y'*****rG   c                 J   |                      |dd          }|                     |d          }|dk    r|d         }|                    |           d S |dk    r|d         }|                    |           d S t          | j        dz   |                     |          z             )	Nr&      r   BUYr   SELLr   z/ watchOrderBook() received unknown change type )parse_bid_askr{   
storeArrayr   r   json)rD   r   deltabidAskrN   r   r   s          rF   handle_deltazonetrading.handle_delta  s     ##E1a00q))5==V$DOOF#####V^^V$DOOF#####tw)ZZ]a]f]fgl]m]mmnnnrG   c                 ~    t          dt          |                    D ]}|                     |||                    d S )Nr   )r|   r}   r   )rD   r   deltasr   s       rF   r   zonetrading.handle_deltas  sJ     q#f++&& 	4 	4Ai3333	4 	4rG   c                   K   |                                   d{V  d}|%|                     |          }|d         }|d|z   z  }|                     |           d{V  | j        d         d         }|                     |dd          }|                     | j        d	d
          }	d|	d|igd}
|                     |
|          }|                     |||||           d{V }| j	        r|
                    ||          }|                     ||||          }t          |          }|dk    r|                     ||||           d{V S |S )a  

        https://developers.bitpanda.com/exchange/#account-history-channel

        watches information on multiple orders made by the user
        :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
        :param str [params.channel]: can listen to orders using ACCOUNT_HISTORY or TRADING
        :returns dict[]: a list of `order structures <https://docs.ccxt.com/?id=order-structure>`
        Nordersra   r   r#   r   r   rJ   r:   r$   rK   rL   rM   r   )ri   rj   rP   r=   r{   rQ   r>   rA   rR   r   r   r   r}   watch_orders)rD   ra   r   r   rS   rU   rj   rT   rV   rW   rX   rY   r   	numOrderss                 rF   r   zonetrading.watch_orders  s      !!!!!!!!![[((FH%F3<'K'''''''''it$((<MNN,,T\;OQTUU"2 M
 
	 ""9f55zz#{G]GTTTTTTTT? 	3OOFE22E22665%PPKK	>>**65%HHHHHHHHHrG   c                 T   | j         0|                     | j        dd          }t          |          | _         |                     |          }| j         }|                    |           |                    | j         d|d         z              |                    | j         d           d S )NordersLimit  orders:ra   r   )r   rQ   r>   r   parse_trading_orderappendr]   )rD   r^   r_   r   orderr   s         rF   handle_tradingzonetrading.handle_trading  s    Z ;%%dlM4HHE077DK((11et{Ih$?@@@t{H-----rG   c           
         |                      |d          }|                      |d          }|                     ||d          }|                     i d|                      |d          d|                      |d          d|d	|                     |          d
|dd d|dd dd dd d|                     |d          d|                     |dd          d|                     |d          d|                     |d          dd dd dd |                      |d          |                     |                      |d                    d d d|          S )Nrv   r   _r   order_idclientOrderId	client_idr   rx   ry   lastTradeTimestampra   rN   timeInForcepostOnlysidepricematched_price	stopPricetrigger_priceamountcostr   filled	remainingstatus)r   r   feer   )r{   r~   
safe_orderr   safe_string_lowersafe_number_2r   parse_trading_order_status)rD   r   rj   ry   r   ra   s         rF   r   zonetrading.parse_trading_order  s   j ##E622##E+<==!!(FC88  
$""5*55 
T--e[AA 
 E 
 11	 

  
 !$ 
 f 
 D 
 4 
  
 D**5&99 
 T''wHH 
 ))%AA 
 d&&uh77 
 D 
  t! 
" d# 
$ ))%==55d6F6Fuh6W6WXX+ 
  
  
, -  	rG   c                 D    dddddddd}|                      |||          S )Ncanceledrejectedclosed)	CANCELLED
SELF_TRADEFILLED_FULLYINSUFFICIENT_FUNDSINSUFFICIENT_LIQUIDITYTIME_TO_MARKET_EXCEEDEDLAST_PRICE_UNKNOWNr{   rD   r   statusess      rF   r   z%onetrading.parse_trading_order_statusl  s=    #$$",&0'1",
 
 &&999rG   c                    | j         0|                     | j        dd          }t          |          | _         | j        0|                     | j        dd          }t          |          | _        |                     |dg           }t          |          }|dk    rd S | j         }t          dt          |                    D ]}|                     ||                   }| 	                    |dd          }	|
                    |           |                    | j         d|	z              |                     ||         d	g           }
t          dt          |
                    D ]l}|                     |
|                   }| 	                    |d|	          }	| j        
                    |           |                    | j        d
|	z              m|                    | j         d           |                    | j        d           d S )Nr   r   tradesLimitr   r   ra    r   r   	myTrades:r   )r   rQ   r>   r   r   rz   r}   r|   parse_orderr{   r   r]   parse_trade)rD   r^   r_   r   	rawOrdersrawOrdersLengthr   r   r   ra   	rawTradesiitrades                rF   handle_orderszonetrading.handle_ordersx  s   p ;%%dlM4HHE077DK= %%dlM4HHE2599DMOOGXr::	i..aFq#i..)) 
	D 
	DA$$Yq\22E%%eXr::FMM%   NN4;	F(:;;;	!hCCIAs9~~.. D D((277))%6BB$$U+++t}kF.BCCCC	D
 	t{H---t}j11111rG   c                     | j         0|                     | j        dd          }t          |          | _         | j        0|                     | j        dd          }t          |          | _        d }| j         }|                     |di           }|                     |d          }|dk    s|dk    s|dk    r|                     |d	          }|                     |d
d          }	|                     | j         d|d          }
|                     |
di           }|d         }|                     |d          }| 	                    |          }|dk    rt          j        |d          rd}||||                     |	          |	d}|                    |           nA|                     |          }|                     |dd          }|                    |           |                    | j         d|z              |                    | j         d           g d}t!          dt#          |                    D ]5}|                     |||                   }||                     |           6|                    | j        d           |dk    r|                     |          }|                     |dd          }| j        }|                    |           |                    | j        d|z              |                    | j        d           d S d S )Nr   r   r   updaterN   ORDER_REJECTEDORDER_CLOSEDSTOP_ORDER_TRIGGEREDr   rv   rx   r   Fr   ra   filled_amount0r   )r   ra   r   rx   ry   r   r   r   )lockedunlockedspentspent_on_feescrediteddeductedrI   TRADE_SETTLEDr  r   )r   rQ   r>   r   r   rz   r{   safe_string_2rr   parse_ws_order_statusr   	string_eqr   r   r  r]   r|   r}   update_balancerI   r  )rD   r^   r_   r   ra   r   r  
updateTypeorderIdry   previousOrderArraypreviousOrderr   r   orderObjectparsedbalanceKeysr   
newBalancer   s                       rF   handle_account_updatez onetrading.handle_account_update  s   | ;%%dlM4HHE077DK= %%dlM4HHE2599DM(B77%%ff55
)))Z>-I-IZ[qMqMq&&vz::G))&&+FFH!%!5!5dk4RW!X!X OO,>2FFM"8,F%%fo>>F//
;;F^++0A&#0N0N+#  !^^H55$! !K MM+&&&&%%f--F%%fh;;FMM&!!!t{I$6777t{H---^^^q#k**++ 	0 	0AQ@@J%##J///t|Y///((%%f--F%%fh;;F}HOOF###NN4=+*>???NN4=*55555 )(rG   c                 <    dddd}|                      |||          S )Nr   r   	triggered)r  r  r  r   r   s      rF   r  z onetrading.parse_ws_order_status  s1    ($$/
 

 &&999rG   c                 :   |                      |d          }|                     |          }|                                 }|                      |d          |d<   |                      |d          |d<   || j        |<   |                     | j                  | _        d S )Ncurrency_codenew_availablefree
new_lockedused)r{   safe_currency_codeaccountrI   safe_balance)rD   rI   
currencyIdcoder.  s        rF   r  zonetrading.update_balance  s     %%g??
&&z22,,..**7ODD**7LAA$T((66rG   r1   	timeframec                   K   |                                   d{V  |                     |          }|d         }|d         }| j        d         d         }|                     | j        di           }	|                     |	|          }
|
t          | j        dz             d|z   d	z   |z   }d
}|                     | j        |          }d}i }|\|                     |j        |          }|=|                     ||i           }| 	                    ||d          }|sd}d|j        |<   ni }|                     ||          }|i ||<   d||         |<   g }t          |                                          }t          dt          |                    D ]}t          |||                                                            }t          dt          |                    D ]8}|                     |	|          }||         |d}|                    |           9|d
|dgd}|                     |||                     ||          ||           d{V }| j        r|                    ||          }|                     |||dd          S )a  

        https://developers.bitpanda.com/exchange/#candlesticks-channel

        watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
        :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
        :returns int[][]: A list of candles ordered, open, high, low, close, volume
        Nra   r   r#   r   r;   zO self interval is not supported, please provide one of the supported timeframesohlcv..CANDLESTICKSrK   FUPDATE_SUBSCRIPTIONTr   )r   time_granularity)rL   
propertiesrh   )ri   rj   r=   rz   r>   r   r   clientssubscriptions	safe_boollistkeysr|   r}   r   rR   rA   r   r   filter_by_since_limit)rD   ra   r2  r   r   rS   rj   r   rT   r;   timeframeIdrU   rl   r^   rN   subscriptionohlcvMarketmarketSubscribedsubscriptionMarketIdr9  	marketIdsr   marketIdtimeframesr  marketTimeframeIdpropertyrY   ohlcvs                               rF   watch_ohlcvzonetrading.watch_ohlcv  s      !!!!!!!!!V$$!$<it$__T\<DD
ooj)<<tw)zz{{{'#-	9)s33??6+?AQRRL'"oolHbII#'>>+y%#P#P ' B0D=AF()9:!#|XFF'%'L",0Xy)
**,,--	q#i..)) 	, 	,A!%l9Q<&@&E&E&G&G!H!HAs#56677 , ,$(OOJ	$J$J!'0|(9" " !!(++++,  +", 
 
 jjk43C3CGV3T3TVfhtuuuuuuuu? 	2NN6511E))%q$GGGrG   c           	         |                      |d          }|                     |          }|                      |d          }|                     |d          }|                     | j        di           }|                     ||          }d|z   dz   |z   }	|                     |          |                     |d          |                     |d          |                     |d	          |                     |d
          |                     |d          g}
|                     | j        |i           | j        |<   |                     | j        |         |          }|+|                     | j        dd          }t          |          }|
                    |
           || j        |         |<   |                    ||	           d S )Nr   rv   granularityr;   r4  r5  r   r   r   r   r   
OHLCVLimitr   )r{   r~   rz   r>   find_timeframer   r   ohlcvsrQ   r   r   r]   )rD   r^   r_   r   ra   r   r@  r;   r2  r   r!  storedr   s                rF   handle_ohlcvzonetrading.handle_ohlcv4  s   F ##G->??!!(++##GV44oog}==__T\<DD
''Z@@	V#c)I5NN8$$Wf--Wf--We,,Wg..Wh//
 #oodk62FFFV!4i@@>%%dlL$GGE*511Ff)/FI&vw'''''rG   c                    |p| j         }t          |                                          }t          dt	          |                    D ]>}||         }||         d         |d         k    r||         d         |d         k    r|c S ?d S )Nr   r'   r(   )r;   r=  r>  r|   r}   )rD   r2  r;   r>  r   keys         rF   rN  zonetrading.find_timeframeo  s    24?
JOO%%&&q#d))$$ 	 	Aq'C#v&)F*;;;
3PX@Y]fgo]p@p@p


trG   c                     |S N rD   r^   r_   s      rF   handle_subscriptionszonetrading.handle_subscriptionsx  s	     rG   c                     |S rU  rV  rW  s      rF   handle_heartbeatzonetrading.handle_heartbeat  s	     rG   c                 \    t          | j        dz   |                     |          z             )N )r   r   r   rW  s      rF   handle_error_messagezonetrading.handle_error_message  s)     DGcMDIIg,>,>>???rG   c           	      L   |                      |d          }||                     ||           d S |                      |d          }i d| j        d| j        d| j        d| j        d| j        d| j        d	| j        d
| j        d| j        d| j        d| j        d| j        d| j	        d| j
        d| j
        d| j        d| j        | j        | j        | j        | j        | j        | j        | j        d}|                      ||          }| |||           d S d S )NerrorrN   r   r   ACTIVE_ORDERS_SNAPSHOTINACTIVE_ORDERS_SNAPSHOTACCOUNT_UPDATEBALANCES_SNAPSHOTSUBSCRIPTIONSSUBSCRIPTION_UPDATED
PRICE_TICKPRICE_TICK_HISTORY	HEARTBEATMARKET_TICKER_UPDATESPRICE_POINT_UPDATESCANDLESTICK_SNAPSHOTCANDLESTICKAUTHENTICATEDFILL)DONEBOOKEDUPDATETRACKED	TRIGGEREDSTOP_TRACKEDSTOP_TRIGGERED)rz   r]  r   r	  r$  r`   rX  r   rZ  handle_price_point_updatesrQ  handle_authentication_messager   )rD   r^   r_   r_  rN   handlershandlers          rF   handle_messagezonetrading.handle_message  s   11%%fg666Fw//
!7
!4#9
 %d&8
 '(:	

 d8
  !=
 T6
 #D$=
 $,
 !$";
 .
 $T%7
 "4#B
 #D$5
 4,
  T?!
" D'#
$ '))*, /"11
 
 
4 //(D11GFG$$$$$ rG   c                     |S rU  rV  rW  s      rF   rv  z%onetrading.handle_price_point_updates  s	    & rG   c                 j    |                      |j        d          }||                    d           |S )NauthenticatedT)rz   futuresr]   )rD   r^   r_   futures       rF   rw  z(onetrading.handle_authentication_message  s6     AANN4   rG   c                   K   g }t          |          }|dk    r't          | j                                                  }n|                     |          }| j        d         d         }|                     | j        |          }	d}
i }|	m|                     |	j        |          }|Nt          dt          |                    D ]/}||         }| 
                    ||d          }|sd}
d |	j        |<   0ni }t          dt          |                    D ]}||         }d||<   |
|d<   t          |                                          |d	         d         d
<   |                     |||                     ||          ||           d {V S )Nr   r#   r   rK   Fr7  TrN   rO   instrument_codes)r}   r=  markets_by_idr>  
market_idsr=   rz   r:  r;  r|   r<  rR   rA   )rD   rU   rY   rl   rn   rS   rE  
numSymbolsrT   r^   rN   rA  r   r   rC  s                  rF   rk   zonetrading.watch_many  s     	\\
??T/446677II00Iit$s33??6+?AQRRL'q#i..11 F FA(|H'+~~lHe'T'T$+ F4AE,-=>F  "q#i..)) 	* 	*A |H%)L""59,:K:K:M:M5N5N
A12ZZ[$2B2B7F2S2SUegstttttttttrG   c                 b  K   | j         d         d         }|                     |          }d}|                    d          }|                     |j        |          }|J|                                  d| j        d}|                     |||                     ||          |           | d {V S )Nr#   r   r}  AUTHENTICATE)rN   	api_token)	r=   r^   reusableFuturerz   r;  check_required_credentialsapiKeyrR   extend)rD   rS   rT   r^   rU   r  r}  rY   s           rF   rP   zonetrading.authenticate  s      it$S!!%&&77(<kJJ ++---&![ G JJsKWf)E)E{SSS||||||rG   rU  )2__name__
__module____qualname__r   rC   r   rZ   r`   strr   rm   r   r   rs   r   r   r   r   r   r   r   r   r
   r   r   r   r   r	   r   r   r   r   r	  r$  r  r  r=  rJ  rQ  rN  rX  rZ  r   r]  rz  rv  rw  rk   rP   __classcell__)rE   s   @rF   r   r      sg       @# @ @ @ @ @ @D *, S S S S S S42 2 2B 68 _ _ _F _ _ _ _4 6:" @ @7 @ @ @ @ @80F 0 0 0 0<" " " "H 37TX\eg ' 'C 's 'RU 'lpqvlw ' ' ' 'R @DB ! !S ! !S\ ! ! ! !>2+ 2+ 2+ 2+ 2+ho o o4 4 4 04$UYbd ( ( (C (s (imnsit ( ( ( (T4.V 4. 4. 4. 4.ln n n n`
: 
: 
:O2F O2 O2 O2 O2bN6F N6 N6 N6 N6`: : :7 7 7" ?CQUdhqs @H @H @H @H3 @H^a @Hx|  ~B  yC @H @H @H @HD9(6 9( 9( 9( 9(v   6    	v 	 	 	 		@6 	@t 	@ 	@ 	@ 	@"%V "% "% "% "%H    *F     []eg u uPW u u u u: )+        rG   r   )ccxt.async_supportccxt ccxt.async_support.base.ws.cacher   r   ccxt.base.typesr   r   r   r   r	   r
   r   r   r   r   r   !ccxt.async_support.base.ws.clientr   typingr   ccxt.base.errorsr   r   ccxt.base.preciser   async_supportr   rV  rG   rF   <module>r     s       Z Z Z Z Z Z Z Z l l l l l l l l l l l l l l l l l l l l l l l l l l 4 4 4 4 4 4       * * * * * * ) ) ) ) ) ) % % % % % %| | | | |#. | | | | |rG   