
    E#i4m                    d   S SK Jr  S SKJr  S SK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JrJrJrJrJrJr  S SKJr  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJr  S SKJ r   S SKJ!r!  S SKJ"r"  S SKJ#r#  S SKJ$r$  S SKJ%r%  S SKJ&r&  S SKJ'r'  S SKJ(r(  S SK)J*r*  S SK)J+r+  S SK,J-r-   " S S\\5      r.g)    )Exchange)ImplicitAPIN)AccountAnyBalances
CurrenciesCurrencyIntMarketNumOrder	OrderBook	OrderSide	OrderTypeStrStringsTickerTickersTradeTransaction)List)ExchangeError)AuthenticationError)PermissionDenied)ArgumentsRequired)
BadRequest)	BadSymbol)InsufficientFunds)InvalidOrder)OrderNotFound)NotSupported)NetworkError)ExchangeNotAvailable)OnMaintenance)RequestTimeout)TRUNCATE)	TICK_SIZE)Precisec                     ^  \ rS rSrS\4U 4S jjr0 4S\4S jjrS0 4S\4S jjr	0 4S\
4S	 jjrS0 4S
\4S jjrS r0 4S\\   4S jjrSQS\S\S\4S jjrS0 4S
\
S\S\4S jjr0 4S
\
S\4S jjrS0 4S\S\4S jjrSQS\S\S\4S jjrSSS0 4S\
S
\S\S\4S jjrSSS0 4S
\S\S\4S jjrSS0 4S
\
S\S\S\\   4S jjrSQS\S\4S jjr SSS0 4S
\
S\
S\S\S\\   4
S jjr!0 4S\\"   4S  jjr#0 4S\$4S! jjr%S\&4S" jr'0 4S\&4S# jjr(SSS0 4S
\S\S\4S$ jjr)S0 4S\
S
\4S% jjr*SSS0 4S
\S\S\S\\+   4S& jjr,SSS0 4S
\S\S\S\\+   4S' jjr-SSS0 4S
\S\S\4S( jjr.SSS0 4S
\S\S\S\\+   4S) jjr/SSS0 4S
\S\S\4S* jjr0S+\4S, jr1SQS-\S\S\+4S. jjr20 4S
\
S/\34S0 jjr4S0 4S
\
S1\5S2\6S3\3S4\74
S5 jjr8S0 4S\
S
\4S6 jjr9S0 4S7\\
   S
\4S8 jjr:S9 r;S0 4S
\4S: jjr<SQS;\=4S< jjr>SSS0 4S=\S\S\S\\?   4S> jjr@SSS0 4S=\S\S\S\\?   4S? jjrASQS@\S;\=S\?4SA jjrBS+\4SB jrCS0 4S=\
S3\3SC\
SD\S\?4
SE jjrDSFSG0 SS4SH jrESI\FSJ\
SK\
SL\
SM\SN\
4SO jrGSPrHU =rI$ )Rbittrade   returnc                   > U R                  [        [        U ]  5       0 SS_SS_SS/_SS_S	U R                  S
   _SS_SS_SS_SS_S0 SS _SS_SS _SS_SS_SS_SS_SS_SS_SS_SS_SS_S S_S!S_S"S_S#S_S$S_0 S%S_S&S_S'S_S(S_S)S_S*S_S+S_S,S_S-S_S.S_S/S_S0S_S1S_S2S_S3S_S4S_S5S_ESSSSSSSSSSSS6.E_S7S8S9S:S;S<S=S>S?S@SASB.
_SCSDSESESESESESF.SGSHSISJSK._SLSMSNSNSO.00 SPSN_SQSN_SRSN_SSSN_STSU_SVSN_SWSX_SYSU_SZSN_S[SN_S\SN_S]SN_S^SN_S_SN_S`SN_SaSN_SbSN_SNSNSNSNSNSNSNSUSUSNSNSc.E0 SdSN_STSU_SeSU_SfSN_SgSN_ShSN_SiSN_SjSN_SkSN_SlSN_SmSN_SnSN_SoSN_SpSN_SqSN_SrSN_SsSN_SNSNSUSUStSuSv.ESw.SMSNSNSNSNSNSNSNSNSx.0SMSNSNSNSNSNSy.00 SzSX_S{SX_S|SN_S}S~_SSN_SSN_SSN_SS_SS_SS_SS_SS_SSN_SSN_SSN_SSX_SSX_SNSNSNSNStSNSNS.E0 SdSN_SSN_SS_SSX_SSX_SS_SSX_SS_SSN_SSN_SSt_SSt_SSt_SSt_SSN_SSN_SSN_SNSNStS.ESw.S._SSSMSSU R                  S5      U R                  S5      S.0_SSSSS SSSS SSSSS.SSSSSSSS.S SSSSSS.SSSSS.SS SSSS.SS S S SSSS.SS S S S SSSS.SS0S.	S S S.S S S.S._S[        _S[        [        S.0 S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _[        [        [        [        [         [         [        [         [         [        [        [        S.ES._SSSSSSSSS.SSSSSS["        SSS0S.SSSSSSS.S.E5      $ )Nidr*   nameBitTrade	countriesJP	rateLimitd   	userAgentchrome39	certifiedFversionv1hostnamezapi-cloud.bittrade.co.jpproThasCORSspotmarginswapfutureoptioncancelAllOrderscancelOrdercancelOrderscreateMarketBuyOrderWithCostcreateMarketOrderWithCostcreateMarketSellOrderWithCostcreateOrdercreateStopLimitOrdercreateStopMarketOrdercreateStopOrderfetchAccountsfetchBalancefetchClosedOrdersfetchCurrenciesfetchDepositAddressfetchDepositAddressesByNetworkfetchDepositsfetchFundingHistoryfetchFundingRatefetchFundingRateHistoryfetchFundingRatesfetchIndexOHLCVfetchMarketsfetchMarkOHLCVfetchMyTrades
fetchOHLCVfetchOpenOrders
fetchOrder)fetchOrderBookfetchOrdersfetchOrderTradesfetchPremiumIndexOHLCVfetchTickerfetchTickers	fetchTimefetchTradesfetchTradingLimitsfetchWithdrawalswithdraw
timeframes1min5min15min30min60min4hour1day1week1mon1year)
1m5m15m30m1h4h1d1w1M1yurlszchttps://user-images.githubusercontent.com/1294454/85734211-85755480-b705-11ea-8b35-0b7f1db33a2f.jpgzhttps://{hostname})marketpublicprivatev2Public	v2Privatezhttps://www.bittrade.co.jpz6https://www.bittrade.co.jp/register/?invite_code=znnq3zhttps://api-doc.bittrade.co.jpz,https://www.bittrade.co.jp/ja-jp/support/fee)logoapiwwwreferraldocfeesr   get   )zreference/currencieszmarket-statuszaccount/ledgerzaccount/withdraw/quotazaccount/withdraw/addresszaccount/deposit/addresszaccount/repayment   zreference/transact-fee-ratezaccount/asset-valuationg?zpoint/accountzsub-user/user-listzsub-user/user-statezsub-user/account-listzsub-user/deposit-addresszsub-user/query-depositzuser/api-keyzuser/uidzalgo-orders/openingzalgo-orders/history)zalgo-orders/specificz
c2c/offers	c2c/offerzc2c/transactionsc2c/repaymentzc2c/accountzetp/referencezetp/transactionszetp/transactionzetp/rebalancez	etp/limitzaccount/transferzpoint/transferzsub-user/managementzsub-user/creationzsub-user/tradable-marketzsub-user/transferabilityzsub-user/api-key-generationzsub-user/api-key-modificationzsub-user/api-key-deletionzsub-user/deduct-modezalgo-orderszalgo-orders/cancel-all-afterzalgo-orders/cancellationr   zc2c/cancellationzc2c/cancel-all
   2   )r   zc2c/transferzetp/creationzetp/redemptionzetp/{transactId}/cancelzetp/batch-cancel)r   post)zhistory/klinezdetail/mergeddepthtradezhistory/tradedetailtickersetp)zcommon/symbolszcommon/currencyszcommon/timestampzcommon/exchangezsettings/currencyszaccount/accountszaccount/accounts/{id}/balancezaccount/accounts/{sub-uid}zaccount/history   zcross-margin/loan-infozmargin/loan-infozfee/fee-rate/getzorder/openOrdersg?zorder/orderszorder/orders/{id}zorder/orders/{id}/matchresultszorder/orders/getClientOrderzorder/historyzorder/matchresultszquery/deposit-withdrawzmargin/loan-orderszmargin/accounts/balance)zcross-margin/loan-orderszcross-margin/accounts/balancezpoints/actionszpoints/orderszsubuser/aggregate-balancezstable-coin/exchange_ratezstable-coin/quotezfutures/transferzorder/batch-orderszorder/orders/placez$order/orders/submitCancelClientOrderz"order/orders/batchCancelOpenOrderszorder/orders/{id}/submitcancelzorder/orders/batchcancelzdw/withdraw/api/createzdw/withdraw-virtual/{id}/cancelzdw/transfer-in/marginzdw/transfer-out/marginzmargin/orderszmargin/orders/{id}/repayzcross-margin/transfer-inzcross-margin/transfer-outzcross-margin/orders)zcross-margin/orders/{id}/repayzstable-coin/exchangezsubuser/transfer)r   r   r   r   r   r   trading0.002)feeSide	tierBased
percentagemakertakerfeatures)IOCFOKPOGTD)
marginModetriggerPricetriggerPriceTypetriggerDirectionstopLossPricetakeProfitPriceattachedStopLossTakeProfittimeInForcehedgedselfTradePreventiontrailingleveragemarketBuyByCostmarketBuyRequiresPriceicebergx      )r   limitdaysBack	untilDayssymbolRequired)r   triggerr   r   )r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   daysBackCanceledr   r   r   r   r     )	sandboxrI   createOrdersr[   r^   r]   r`   rO   r\   )linearinverse)r>   r@   rA   precisionMode
exceptions)zTcontract is restricted of closing positions on API.  Please contact customer servicemaintainzbad-requestzbase-date-limit-errorzapi-not-support-temp-addrtimeoutzgateway-internal-errorz)account-frozen-balance-insufficient-errorzinvalid-amountz!order-limitorder-amount-min-errorz!order-limitorder-amount-max-errorz"order-marketorder-amount-min-errorz order-limitorder-price-min-errorz order-limitorder-price-max-errorzorder-holding-limit-failedz order-orderprice-precision-errorzorder-etp-nav-price-max-errorzorder-orderstate-errorzorder-queryorder-invalid)zorder-update-errorzapi-signature-check-failedzapi-signature-not-validzbase-record-invalidzbase-symbol-trade-disabledzbase-symbol-errorzsystem-maintenancezinvalid symbolzsymbol trade not open nowzinvalid-addresszbase-currency-chain-errorzdw-insufficient-balance)broadexactERC20erc20trc20hrc20algo )ETHTRXHRC20HECOHTALGOOMNIprivate_get_order_ordersfetch_open_orders_v1publicGetCommonSymbols"privateGetAccountAccountsIdBalanceprivatePostOrderOrdersPlacezen-US
AA03022abc)defaultNetworknetworksfetchOrdersByStatesMethodfetchOpenOrdersMethod!createMarketBuyOrderRequiresPricefetchMarketsMethodfetchBalanceMethodcreateOrderMethodcurrencyToPrecisionRoundingModelanguagebrokerThemiszGame.comHitChainPentazSuper BitcoinzBitcoin File)GETGTCHITPNTSBTCBIFI)optionscommonCurrencies)deep_extendsuperr*   describe
userAgentsparse_numberr'   r$   r   r   r%   r#   r   r   r    r   r   r&   )self	__class__s    U/home/james-whalen/.local/lib/python3.13/site-packages/ccxt/async_support/bittrade.pyr   bittrade.describe    s	   h > @ HC
*HC
JHC
 $HC
 	HC

 4HC
 HC
 tHC
 2HC
 4HC
  ... $. 	.
 %. %. "4. t. . /. ,U. 0. t. '. (.  "5!."  #.$ %.& $T'.( "4).* &u+., 1%-..  /.0 &u1.2 #E3.4 *55.6 $U7.8 "59.: ;.< !%=.>  ?.@ dA.B "4C.D dE.F #'#$(*/# $!#&*$( [.HC
r sHC
J }223 4!5 4T7FKHC
f 01)*(!0! 3A 21	
 ,Q 6q 23 ( -a .q 0 3A 1! ' #A  .q!" .q#$ 12&'%&,-)*'()*,-+,)*%&9<*A+Q )! .q	
 ,Q 3A 3A 6q 8 4Q / &q 7 3A $Q  +A!" )!#$ *+()()*+35,./?8t )*)*!"!")*"##$ 	 *+,-,-+,./*C7 5a *1	
 1! +A +A +C ' ,S 9# 6s ( -a  1!!$ -c%& 23'( 569:*+)*5756-.58*A*A -c -c	
 ? =c 9# 3C 1! :1  0!" 1"#$ (%& 3B'( 3A)* 4Q+, .q-. ;<01,.3;8kNgHC
D $!&"&!..w7!..w7EHC
V $&+(,,0,1).+06:#(#("'#(	( #(/4$)$)+/27#()$, %)&+!$$'%&*/& ',#($)*/	# ',!%#($)*/( ',!%$(%)#($)*/$ ',!%$(,0%)#($)*/	*  #ACJ ##
 ##SMWHC
r	 Ys	HC
t	 ly - !:  ,Z  01A	 
 ~  -.B  @AR  %l  8  8  9,  7  7  1,  7   4\! " -m# $ /% & +?2E/B+82;)2*7&/1:'11;/@? &u	HC
D #*""$#!" .H)?59&>&J%B3;#,)8  !!
 '&!sHC
 H H	    c                 d   #    U R                  U5      I Sh  vN nU R                  US5      $  N7f)z
fetches the current integer timestamp in milliseconds from the exchange server
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns int: the current integer timestamp in milliseconds from the exchange server
Ndata)publicGetCommonTimestampsafe_integerr   paramsresponses      r   
fetch_timebittrade.fetch_time  s2      66v>>  622 ?s   0.0Nsymbolsc                    #    U R                  5       I S h  vN   Uc  U R                  n0 n[        S[        U5      5       H2  nX   nU R	                  U R                  U5      U5      I S h  vN X5'   M4     U$  Nb N7f)Nr   )load_marketsr  rangelenfetch_trading_limits_by_id	market_id)r   r  r   resultisymbols         r   fetch_trading_limitsbittrade.fetch_trading_limits  s|      !!!?llGq#g,'AZF#'#B#B4>>RXCY[a#bbFN (  	" cs"   A=A9AA=,A;-A=;A=r.   c                    #    SU0nU R                  U R                  X25      5      I S h  vN nU R                  U R                  US0 5      5      $  N&7f)Nr  r   )publicGetCommonExchangeextendparse_trading_limits
safe_value)r   r.   r   requestr   s        r   r  #bittrade.fetch_trading_limits_by_id  sU     b
 55dkk'6RSS" ((62)NOO# Ts   (AA'Ar  c                 V    USU R                  US5      U R                  US5      S.0S.$ )Namountzlimit-order-must-greater-thanzlimit-order-must-less-thanminmax)infolimits)safe_number)r   r  r  r   s       r   r  bittrade.parse_trading_limits  s@    " ++F4ST++F4PQ
 	
r   c                 l    U R                  U[        U R                  U   S   S   U R                  5      $ )N	precisioncost)decimal_to_precisionr&   marketsr   )r   r  r!  s      r   cost_to_precisionbittrade.cost_to_precision  s4    ((xf9Mk9Z[a9bdhdvdvwwr   c                   #    U R                   S   n[        X5      " U5      I Sh  vN nU R                  US/ 5      n[        U5      nUS:  a*  [	        U R
                  S-   U R                  U5      -   5      e/ n[        S[        U5      5       GH>  nXG   nU R                  US5      n	U R                  US5      n
U R                  U	5      nU R                  U
5      nU R                  US	5      nU R                  US
S5      nU R                  USS5      n[        R                  " US5      =(       d    [        R                  " US5      nUS:X  a  U R                  S5      OU R                  S5      nUR                  0 SX-   _SUS-   U-   _SU_SU_SS_SU	_SU
_SS_SS_SS_SU_SS_SS_S S_S!US":H  _S#S_S$S_SUUSSSSSU R                  U R                  U R                  US%5      5      5      U R                  U R                  U R                  US&5      5      5      U R                  U R                  U R                  US'5      5      5      S(.U R                  S5      U R                  U5      U R                  U5      S).U R                  US*5      U R                  US+5      S,.SSS,.U R                  US-5      SS,.S..SUS/.E5        GMA     U$  GN7f)0z
retrieves data on all markets for huobijp
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict[]: an array of objects representing market data
r   Nr   r   z) fetchMarkets() returned empty response: r   zbase-currencyzquote-currencystatezleverage-ratio1zsuper-margin-leverage-ratioOMG0r   r.   r  /basequotesettlebaseIdquoteIdsettleIdtyper>   Tr?   r@   FrA   rB   activeonlinecontractr   zprice-precisionzamount-precisionzvalue-precision)pricer  r!  )r  r  superMaxzmin-order-amtzmax-order-amtr  zmin-order-value)r   r  r6  r!  )r   r   r   contractSizeexpiryexpiryDatetimestrike
optionTyper   r  createdr  )r   getattrr  r  r"   r.   jsonr  safe_stringsafe_currency_coder(   	string_gtr   appendparse_precisionr  )r   r   methodr   r#  
numMarketsr
  r  r   r/  r0  r,  r-  r'  leverageRatiosuperLeverageRatior?   fees                     r   fetch_marketsbittrade.fetch_markets  s     23 .v66B //(FB7\
>tww)TTW[W`W`ahWiijjq#g,'AZF%%fo>F&&v/?@G**62D++G4E$$VW5E ,,V5EsKM!%!1!1&:WY\!]&&}c:hg>O>OPbdg>hF-1U]$##C(ARARSZA[CMM 4f&4$*u,4 4 	4
 $4 &4 74 D4 4 4 &4 4 %4 %4 5H,4  E!4" $#4$   $"&"!..t/C/CDDTDTU[]nDo/pq"//0D0DTEUEUV\^pEq0rs --d.B.B4CSCSTZ\mCn.op  $005#00?$($5$56H$I!  $//H#//H
  $#
  $//8IJ#&  g4 4 (@ M 7s   $KKJ/Ktickerr   c                    U R                  S U5      nU R                  US5      nS nS nS nS nSU;   ag  [        US   [        5      (       a+  U R	                  US   S5      nU R	                  US   S5      nO$U R	                  US5      nU R	                  US5      nSU;   ag  [        US   [        5      (       a+  U R	                  US   S5      nU R	                  US   S5      nO$U R	                  US5      nU R	                  US5      nU R	                  US5      n	U R	                  US	5      n
U R	                  US
5      nU R	                  US5      nU R                  0 SU_SU_SU R                  U5      _SU R	                  US5      _SU R	                  US5      _SU_SU_SU_SU_SS _SU	_S	U
_SU
_SS _SS _SS _SS _UUUS.EU5      $ )Ntsbidr   r   bidSizeaskaskSizeopencloser  volr  	timestampdatetimehighlow	bidVolume	askVolumevwaplastpreviousClosechanger   average)
baseVolumequoteVolumer  )safe_symbolr   
isinstancelistr@  safe_tickeriso8601)r   rL  r   r  rV  rO  rZ  rQ  r[  rS  rT  ra  rb  s                r   parse_tickerbittrade.parse_tickerd  sm   D !!$/%%fd3			F?&-..&&ve}a8 ,,VE]A>	&&vu5 ,,VY?	F?&-..&&ve}a8 ,,VE]A>	&&vu5 ,,VY?	/  1%%fh7
&&vu5 !
f!
!
 Y/!
 D$$VV4	!

 4##FE2!
 3!
 !
 3!
 !
 D!
 D!
 U!
 E!
 T!
 d!
  $!!
" t#!
$ %&)!
* + 	r   r   c                 J  #    U R                  5       I Sh  vN   U R                  U5      nUS   SS.nU R                  U R                  XS5      5      I Sh  vN nSU;   a  US   (       d*  [	        U R
                  S-   U R                  U5      -   5      eU R                  US5      nU R                  USU R                  US5      5      nU R                  XqU5      n	U R                  US5      U	S	'   U	$ [        U R
                  S
-   U R                  U5      -   5      e GN N7f)a  
fetches 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
Nr.   step0)r  r2  tickz+ fetchOrderBook() returned empty response: rN  r8   noncez2 fetchOrderBook() returned unrecognized response: )r  r   marketGetDepthr  r   r.   r?  r  r   parse_order_bookr   )
r   r  r   r   r   r  r   rl  rV  r
  s
             r   fetch_order_bookbittrade.fetch_order_book  s!     !!!V$Tl
 ,,T[[-IJJ, XF#*W WZ^ZcZcdlZm mnn??8V4D))$d6G6GRV6WXI**4CF"//i@F7OMDGG&ZZ]a]f]fgo]ppqqI 	" Ks#   D#DA D#D!CD#!D#c                 D  #    U R                  5       I Sh  vN   U R                  U5      nSUS   0nU R                  U R                  XB5      5      I Sh  vN nU R	                  US   U5      nU R                  US5      nXvS'   U R                  U5      US'   U$  N NG7f)ah  
fetches 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>`
Nr  r.   rl  rN  rV  rW  )r  r   marketGetDetailMergedr  rh  r   rg  )r   r  r   r   r  r   rL  rV  s           r   fetch_tickerbittrade.fetch_ticker  s      !!!V$fTl
 33DKK4PQQ* ""8F#3V<%%h5	'{!\\)4z= 	"
 Rs"   B B?B BAB B c                   #    U R                  5       I Sh  vN   U R                  U5      nU R                  U5      I Sh  vN nU R                  US/ 5      nU R	                  US5      n0 n[        S[        U5      5       H]  nU R                  XG   S5      nU R                  U5      n	U	S   n
U R                  XG   U	5      nX[S'   U R                  U5      US'   XU
'   M_     U R                  USU5      $  N N7f)a  
fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
:param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
Nr   rN  r   r  rV  rW  )r  market_symbolsmarketGetTickersr  r   r  r  r@  safe_marketrh  rg  filter_by_array_tickers)r   r  r   r   r   rV  r
  r  marketIdr   r  rL  s               r   fetch_tickersbittrade.fetch_tickers
  s      !!!%%g...v66//(FB7%%h5	q#g,'A''
H=H%%h/FH%F&&wz6:F"+;!%i!8F:#6N ( ++FHgFF 	"6s"   C9C5)C9 C7B5C97C9r   c                    U R                  US5      nU R                  X25      nU R                  USS5      nU R                  US5      nU R                  US5      nU R                  US5      nUb  UR                  S5      n	U	S   nU	S	   nU R                  US
5      n
U R                  US5      nU R	                  USS5      n[
        R                  " X5      nS nU R                  US5      nU R                  U R                  US5      5      nU R                  US5      nUbB  Ub  [
        R                  " US5      (       a#  UnU R                  U R                  US5      5      nUb  UUS.nU R	                  USS5      nU R                  USU5      nU R                  UUUUUU R                  U5      UUU
UUUUS.5      $ )Nr  rN  
created-atorder-id	directionr2  -r   r   roler6  filled-amountr  filled-feeszfee-currencyzfilled-pointsz0.0zfee-deduct-currencyr!  currencyztrade-idtradeIdr.   )r  r.   r  orderrV  rW  r2  sidetakerOrMakerr6  r  r!  rI  )r@  rc  safe_integer_2splitsafe_string_2r(   
string_mulrA  	string_eq
safe_traderg  )r   r   r   r{  r  rV  r  r  r2  	typePartsr  r6  r  r!  rI  feeCostfeeCurrencyfilledPointsr  r.   s                       r   parse_tradebittrade.parse_trade!  s   B ##E84!!(3''t\B	  
3{3v.

3IQ<DQ<D''v6  0##E?HE!!%0""5-8--d.>.>un.UV''?#W%6%6w%F%F&"55d6F6FuNc6de'C $$UJ	BeT73"Y/( 
  	r   sincec                    #    U R                  5       I Sh  vN   SU0nU R                  U R                  Xe5      5      I Sh  vN nU R                  US   SX45      $  NF N7f)a  
fetch all the trades made from a single order
:param str id: order id
:param str symbol: unified market symbol
:param int [since]: the earliest time in ms to fetch trades for
:param int [limit]: the maximum number of trades 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>`
Nr.   r   )r  #privateGetOrderOrdersIdMatchresultsr  parse_trades)r   r.   r  r  r   r   r  r   s           r   fetch_order_tradesbittrade.fetch_order_tradeso  sh      !!!"
 AA$++gB^__  &!14FF 	" `s!   A!A+A!AA!A!c                   #    U R                  5       I Sh  vN   Sn0 nUb  U R                  U5      nUS   US'   Ub  X6S'   Ub  X&S'   U R                  U R                  Xd5      5      I Sh  vN nU R	                  US   XRU5      $  Np N7f)a~  
fetch all trades made by the user
:param str symbol: unified market symbol
:param int [since]: the earliest time in ms to fetch trades for
:param int [limit]: the maximum number of trades structures to retrieve
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns Trade[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
Nr.   r  sizez
start-timer   )r  r   privateGetOrderMatchresultsr  r  )r   r  r  r   r   r   r  r   s           r   fetch_my_tradesbittrade.fetch_my_trades  s      !!![[(F &tGH#FO$)L!99$++g:VWW  &!16%HH 	" Xs"   BBAB,B	-B	Bi  c                 D  #    U R                  5       I Sh  vN   U R                  U5      nSUS   0nUb  [        US5      US'   U R                  U R	                  Xd5      5      I Sh  vN nU R                  US/ 5      n/ n	[        S[        U5      5       HY  n
U R                  X   S/ 5      n[        S[        U5      5       H(  nU R                  X   U5      nU	R                  U5        M*     M[     U R                  U	S5      n	U R                  XS   X#5      $  GN N7f)	a  
get the list of most recent trades for a particular symbol
: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 exchange API endpoint
:returns Trade[]: a list of `trade structures <https://docs.ccxt.com/#/?id=public-trades>`
Nr  r.   r   r  r   r   rV  )r  r   r  marketGetHistoryTrader  r  r  r  r  rC  sort_byfilter_by_symbol_since_limit)r   r  r  r   r   r   r  r   r   r
  r  tradesjr   s                 r   fetch_tradesbittrade.fetch_trades  s     !!!V$fTl
 !%.GFO33DKK4PQQ2 x4q#d)$A__TWfb9F1c&k*((F;e$ + %
 fk2009I5XXQ 	" Rs#   D DAD (D)B3D D 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      /$ )Nr.   rS  rX  rY  rT  r  )safe_timestampr  )r   ohlcvr   s      r   parse_ohlcvbittrade.parse_ohlcv  sn     t,UF+UF+UE*UG,UH-
 	
r   ru   	timeframec                 h  #    U R                  5       I Sh  vN   U R                  U5      nUS   U R                  U R                  X"5      S.nUb  [	        US5      US'   U R                  U R                  Xu5      5      I Sh  vN nU R                  US/ 5      n	U R                  XX#U5      $  N N,7f)a  
fetches 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
Nr.   )r  periodr   r  r   )	r  r   r@  rj   r  marketGetHistoryKliner  	safe_listparse_ohlcvs)
r   r  r  r  r   r   r   r  r   r   s
             r   fetch_ohlcvbittrade.fetch_ohlcv  s      !!!V$Tl&&t	M
 !%.GFO33DKK4PQQ ~~h3  yGG- 	" Rs"   B2B.A,B2B0+B20B2c                 ~   #    U R                  5       I Sh  vN   U R                  U5      I Sh  vN nUS   $  N" N7f)z
fetch all the accounts associated with a profile
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: a dictionary of `account structures <https://docs.ccxt.com/#/?id=account-structure>` indexed by the account type
Nr   )r  privateGetAccountAccountsr   s      r   fetch_accountsbittrade.fetch_accounts  s?      !!!77?? 	"?s   =9=;
==c                 L  #    SU R                   S   0nU R                  U R                  X!5      5      I Sh  vN nU R                  US/ 5      n0 n[	        S[        U5      5       GH4  nXF   nU R                  US5      nU R                  U5      n	U R                  US5      n
U R                  US5      nU R                  US5      nU R                  US	S
5      nU R                  US5      nU=(       a%    U
=(       a    U=(       a    US:H  =(       a    U(       + nU R                  US5      nU R                  U R                  U R                  US5      5      5      nUU	SUUU
USUSUSS.U R                  US5      SS.U R                  US5      SS.S.US.XY'   GM7     U$  GNj7f)z
fetches all available currencies on an exchange
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: an associative dictionary of currencies
r   Nr   r   r/   zdeposit-enabledzwithdraw-enabledzcountry-disabledvisibleFr'  r4  zdisplay-namezwithdraw-precisioncryptor  zdeposit-min-amountzwithdraw-min-amount)r  depositri   )r.   coder2  r/   r3  r  ri   rI  r   r   r  r  )r   publicGetSettingsCurrencysr  r  r  r  rA  	safe_boolr@  r   rD  r  )r   r   r  r   
currenciesr
  r  r  r.   r  depositEnabledwithdrawEnabledcountryDisabledr  r'  r3  r/   r   s                     r   fetch_currenciesbittrade.fetch_currencies  s     Z0
 88W9UVVR __Xvr:
q#j/*A!}H62B**2.D!__X7HIN"ooh8JKO"ooh8JKOnnXy%@G$$Xw7EssOsRZIZsds`sF##Hn=D))$*>*>t?O?OPXZn?o*pqI   )+&   )#
  $//:NO# 
  $//:OP#! !9FL +T k Ws   5F$F!E*F$c                    U R                  US   S/ 5      nSU0n[        S[        U5      5       H  nX$   nU R                  US5      nU R	                  U5      nS nXs;   a  X7   nOU R                  5       nUS   S:X  a  U R                  US5      US	'   US   S
:X  a  U R                  US5      US'   XU'   M     U R                  U5      $ )Nr   re  r  r   r  r2  r   balancefreefrozenused)r  r  r  r@  rA  accountsafe_balance)	r   r   balancesr
  r  r  
currencyIdr  r  s	            r   parse_balancebittrade.parse_balancel  s    ??8F#3VR@)q#h-(AkG))':>J**:6DG~ ,,,.v')"&"2"27I"Fv(*"&"2"27I"F"4L )   ((r   c                 .  #    U R                  5       I Sh  vN   U R                  5       I Sh  vN   U R                  S   nSU R                  S   S   0n[	        X5      " U R                  X15      5      I Sh  vN nU R                  U5      $  Nx Nb N7f)a  
query for 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.   r   )r  load_accountsr   accountsr>  r  r  )r   r   rE  r  r   s        r   fetch_balancebittrade.fetch_balance  s      !!!  """23$--"4(
 !.t{{7/KLL!!(++ 	""
 Ms2   BBBBA
B9B:BBBc                 <  #    U R                  5       I S h  vN   SU0nS nUb  U R                  U5      nUS   US'   U R                  U R                  SS5      n[	        X5      " U R                  Xe5      5      I S h  vN n	U R                  U	S   XsU5      $  N N7f)Nstatesr.   r  r   r   r   )r  r   r@  r   r>  r  parse_orders)
r   r  r  r  r   r   r  r   rE  r   s
             r   fetch_orders_by_statesbittrade.fetch_orders_by_states  s     !!!f
 [[(F &tGH!!$,,0KMgh .t{{7/KLL$   &!16%HH7 	" Ms"   BBA&B=B>BBc                    #    U R                  5       I Sh  vN   SU0nU R                  U R                  XC5      5      I Sh  vN nU R                  US5      nU R	                  U5      $  NS N)7f)a/  
fetches information on an order made by the user
:param str id: order id
:param str symbol: unified symbol of the market the order was made in
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
Nr.   r   )r  privateGetOrderOrdersIdr  	safe_dictparse_order)r   r.   r  r   r  r   r  s          r   fetch_orderbittrade.fetch_order  so      !!!"
 55dkk'6RSSx0&& 	" Ts!   A.A*+A.A,(A.,A.c                 D   #    U R                  SXX45      I Sh  vN $  N7f)a  
fetches 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
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
zGpre-submitted,submitted,partial-filled,filled,partial-canceled,canceledNr  r   r  r  r   r   s        r   fetch_ordersbittrade.fetch_orders  s9      001z  }C  LQ  Z  Z  	Z  Z     c                 |   #    U R                  U R                  SS5      n[        X5      " XX45      I Sh  vN $  N7f)a  
fetch all unfilled currently open orders
:param str symbol: unified market symbol
:param int [since]: the earliest time in ms to fetch open orders for
:param int [limit]: the maximum number of  open orders structures to retrieve
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
r   r   N)r@  r   r>  )r   r  r  r   r   rE  s         r   fetch_open_ordersbittrade.fetch_open_orders  s9      !!$,,0GI_`T*6%HHHHs   3<:<c                 z   #    Uc  [        U R                  S-   5      eU R                  SXX45      I S h  vN $  N7f)Nz/ fetchOpenOrdersV1() requires a symbol argumentz&pre-submitted,submitted,partial-filled)r   r.   r  r  s        r   r   bittrade.fetch_open_orders_v1  s=     >#DGG._$_``001Y[ajoxxxxs   2;9;c                 D   #    U R                  SXX45      I Sh  vN $  N7f)a  
fetches information on multiple closed 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
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
z filled,partial-canceled,canceledNr  r  s        r   fetch_closed_ordersbittrade.fetch_closed_orders  s%      001SU[dirrrrr  c                 d  #    U R                  5       I S h  vN   0 nS nUb  U R                  U5      nUS   US'   U R                  US5      nUco  U R                  5       I S h  vN   [	        S[        U R                  5      5       H4  nU R                  U   n	U	S   S:X  d  M  U R                  U	S5      nUc  M4    O   XuS'   Ub  X5S'   U R                  US5      n
U R                  U R                  XZ5      5      I S h  vN nU R                  US/ 5      nU R                  XX#5      $  GN N N.7f)	Nr.   r  
account-idr   r2  r>   r  r   )r  r   r@  r  r  r  r  omitprivateGetOrderOpenOrdersr  r  r  )r   r  r  r   r   r  r   	accountIdr  r  omittedr   r   s                r   fetch_open_orders_v2bittrade.fetch_open_orders_v2  s7    !!![[(F &tGH$$V\:	$$&&&1c$--01--*6?f, $ 0 0$ ?I , 2 !*#FO))FL177G8UVV, ~~h3  u<<W 	" ' WsA   D0D)AD0#D,$<D0$D0;AD0?D. *D0,D0.D0statusc                 6    SSSSSS.nU R                  X!U5      $ )NrS  canceledclosed)zpartial-filledzpartial-canceledfilledr  	submittedr@  r   r  statusess      r   parse_order_statusbittrade.parse_order_status  s-    $ *"
 &99r   r  c                    U R                  US5      nS nS nS nSU;   a?  US   R                  S5      nUS   nUS   nU R                  U R                  US5      5      nU R                  US5      nU R                  X5      nU R	                  US5      n	U R                  US	5      n
U R                  US
5      nU R                  USS5      nU R                  US5      nU R                  USS5      nU R                  USS5      nS nUb  US:X  a  US   OUS   nUUS.nU R                  0 SU_SU_SU
_SU	_SU R                  U	5      _SS _SUS   _SU_SS _SS _SU_SU_SS _SS _S U_S
U_S!U_S UUS S".EU5      $ )#Nr.   r2  r  r   r   r'  r  r  client-order-idr  r  zfield-amountr6  zfilled-cash-amountzfield-cash-amountr  z
field-feessellr-  r,  r  r  clientOrderIdrV  rW  lastTradeTimestampr   postOnlyr  r   r`  r!  r  )	remainingr  rI  r  )r@  r  r  ry  r   r  
safe_orderrg  )r   r  r   r.   r  r2  r  	orderTyper{  rV  r  r  r  r6  r!  r  rI  r  s                     r   r  bittrade.parse_order  sL   @ eT*U?f++C0IQ<DQ<D,,T-=-=eW-MNF##E84!!(3%%e\:	((0AB!!%2##E?NK  0!!%)=?RS$$UM<H.2fn&/6&>K'C   
E 
" 
 ] 
 	 

 Y/ 
 !$ 
 fX& 
 D 
 4 
  
 D 
 U 
 D 
 t 
 D 
  f! 
" f# 
$ + 
, - 	r   r!  c                    #    U R                  5       I Sh  vN   U R                  U5      nUS   (       d  [        U R                  S-   5      eSUS'   U R	                  USSUSU5      I Sh  vN $  NZ N7f)an  
create a market buy order by providing the symbol and cost
:param str symbol: unified symbol of the market to create an order in
:param float cost: how much you want to trade in units of the quote currency
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
Nr>   z9 createMarketBuyOrderWithCost() supports spot orders onlyFr   r   buy)r  r   r!   r.   create_order)r   r  r!  r   r   s        r   !create_market_buy_order_with_cost*bittrade.create_market_buy_order_with_costl  sw      !!!V$f~tww)ddee6;23&&vxdFSSS 	"
 Ts"   A5A1AA5,A3-A53A5r2  r  r  r6  c                 4  #    U R                  5       I Sh  vN   U R                  5       I Sh  vN   U R                  U5      nU R                  S   S   US   US-   U-   S.nU R	                  USS5      n	U	cE  U R                  U R                  S0 5      n
U R                  U
S5      nXR                  5       -   US'   OXS'   U R                  USS/5      nUS	:X  a  US
:X  a  SnSnU R                  USSS5      u  pU R                  US5      nU R                  US5      nUb  U R                  X5      nO}U(       ae  Uc  [        U R                  S-   5      eU R                  U5      nU R                  U5      nU R                  U[         R"                  " UU5      5      nOU R                  X5      nXS'   OU R                  X5      US'   US:X  d  US:X  d  US:X  d  US:X  d  US:X  a  U R%                  X5      US'   U R                  S   n['        U U5      " U R)                  X5      5      I Sh  vN nU R                  US5      nU R+                  0 SU_SU_SS_SS_SS_SS_SU_SU_S U_SU_SU_S!S_S"S_SS_S#S_S$S_SS_S%S0EU5      $  GNz GNe Ne7f)&a  
create a trade order
:param str symbol: unified symbol of the market to create an order in
:param str type: 'market' or 'limit'
:param str side: 'buy' or 'sell'
:param float amount: how much of currency you want to trade in units of base currency
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
Nr   r.   r  )r  r  r2  r  r  r   r   r  TrI   r   r!  z createOrder() requires the price argument for market buy orders to calculate the total cost to spend(amount * price), alternatively set the createMarketBuyOrderRequiresPrice option or param to False and pass the cost to spend in the amount argumentr  r   ioczlimit-makerz
stop-limitzstop-limit-fokr6  r   r   r  rV  rW  r	  r  r  r2  r  r  r  r  rI  r`  )r  r  r   r  r  r  r   r@  uuidr  handle_option_and_paramsr  amount_to_precisionr   r.   number_to_stringr(   r  price_to_precisionr>  r  r  )r   r  r2  r  r  r6  r   r   r  r  r   brokerIdquoteAmountr   r!  amountStringpriceStringrE  r   r.   s                       r   r  bittrade.create_order{  sf     !!!  """V$--*40Tl3J%

 **6?DUV __T\\8R@F''5H)1IIK)?G%&)6%&6O5F#GHH45=K04-8<8U8UV\^k  nQ  SW  9X5-##FF3DYYvv.F"66vD2=&tww  2m  (m  n  n $(#8#8#@L"&"7"7">K"&":":67CUCUVbdoCp"qK"66vF +H $ 8 8 HGH7?demt}/DP\H\`dhx`x#66vEGG12 v.t{{7/KLLh/  
H 
" 
  
 	 

 !$ 
 d 
 f 
 D 
 D 
 U 
 f 
 d 
  
 D 
 d 
  4! 
" T# 
$ t% 
& ' 	_ 	""X Ms3   JJJJHJ0J1A JJJc                    #    U R                  SU05      I Sh  vN nU R                  U R                  U5      USS.5      $  N(7f)a  
cancels an open order
:param str id: order id
:param str symbol: not used by bittrade cancelOrder()
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
r.   Nr  )r.   r  )$privatePostOrderOrdersIdSubmitcancelr  r  )r   r.   r  r   r   s        r   cancel_orderbittrade.cancel_order  sO      BBD":NN {{4++H5 8
  	 Os   AA)Aidsc                   #    U R                  5       I Sh  vN   U R                  USS5      nU R                  USS/5      n0 nUc  XS'   OXES'   U R                  U R	                  XS5      5      I Sh  vN nU R                  U5      $  Nr N7f)a  
cancel multiple orders
:param str[] ids: order ids
:param str symbol: not used by bittrade cancelOrders()
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: an list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
NclientOrderIdszclient-order-idsz	order-ids)r  safe_value_2r  !privatePostOrderOrdersBatchcancelr  parse_cancel_orders)r   r$  r  r   r&  r  r   s          r   cancel_ordersbittrade.cancel_orders  s      !!!**63CEWX6$46H#IJ!#&K *8&'??G@\]]B ''11S 	" ^s"   BB	AB3B4BBc                    U R                  US5      nS nUb  UR                  S5      nOU R                  US/ 5      nU R                  USS/ 5      n/ n[	        S[        U5      5       H+  nX6   nUR                  U R                  UUSS.5      5        M-     [	        S[        U5      5       HM  nXF   nUR                  U R                  UU R                  US	S
5      SU R                  US5      S.5      5        MO     U$ )N	successes,successerrorsfailedr   r  )r  r.   r  r  order_idr  )r  r.   r  r  )	r@  r  r  safe_list_2r  r  rC  r  r  )r   ordersr-  r/  r1  r
  r  r  s           r   r)  bittrade.parse_cancel_orders  s   : $$V[9	 ooc*GnnVY;G!!&(HbAq#g,'AJEMM$//$+   ( q#f+&AIEMM$//((
JG"!%!1!1%9J!K	+   ' r   c                    #    U R                  5       I Sh  vN   0 nSnUb  U R                  U5      nUS   US'   U R                  U R                  X25      5      I Sh  vN nU R	                  US0 5      nU R                  SU05      /$  Ns N-7f)a:  
cancel all open orders
:param str symbol: unified market symbol, only orders in the market of self symbol are cancelled when symbol is not None
: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>`
Nr.   r  r   r  )r  r   +privatePostOrderOrdersBatchCancelOpenOrdersr  r  r  )r   r  r   r  r   r   r   s          r   cancel_all_ordersbittrade.cancel_all_ordersG  s      !!!
 [[(F &tGHII$++V]Jfgg ~~h3OO 
 	
1 	" hs"   BB
ABB,BBr  c                    U R                  US5      nU R                  US5      nU R                  US5      nU R                  XR5      nU R                  XR5      nU R                  US5      nU R                  US0 5      nU R	                  US5      n	U R                  XU5      n
U R                  U
S5      nU R                  U5        UUUUUS.$ )	Naddress
addressTagr  chainr   r.   network)r  r;  tagr>  r  )r@  safe_currencyrA  r  index_bycheck_address)r   depositAddressr  r;  r?  r  r  	networkIdr   networksByIdnetworkValuer>  s               r   parse_deposit_addressbittrade.parse_deposit_addressl  s     "">9=~|<%%njA
%%j;&&z<$$^W=	??8Z<}}Xt4|	J""<;7#"
 	
r   r  c                 .  #    Ub  US:  a  SnU R                  5       I Sh  vN   SnUb  U R                  U5      nSSS.nUb  US   US'   Ub  X6S'   U R                  U R                  Xd5      5      I Sh  vN nU R	                  US	   XRU5      $  No N7f)
a  
fetch all deposits made to an account
:param str code: unified currency code
:param int [since]: the earliest time in ms to fetch deposits for
:param int [limit]: the maximum number of deposits structures to retrieve
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict[]: a list of `transaction structures <https://docs.ccxt.com/#/?id=transaction-structure>`
Nr4   r  r   r2  fromr.   r  r  r   r  r  privateGetQueryDepositWithdrawr  parse_transactionsr   r  r  r   r   r  r  r   s           r   fetch_depositsbittrade.fetch_deposits  s      =ECKE!!!}}T*H
 "*4.GJ#FO<<T[[=YZZ&&x'7%PP 	" ["   BBAB6B7BBc                 .  #    Ub  US:  a  SnU R                  5       I Sh  vN   SnUb  U R                  U5      nSSS.nUb  US   US'   Ub  X6S'   U R                  U R                  Xd5      5      I Sh  vN nU R	                  US	   XRU5      $  No N7f)
a  
fetch all withdrawals made from an account
:param str code: unified currency code
:param int [since]: the earliest time in ms to fetch withdrawals for
:param int [limit]: the maximum number of withdrawals structures to retrieve
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict[]: a list of `transaction structures <https://docs.ccxt.com/#/?id=transaction-structure>`
Nr4   ri   r   rJ  r.   r  r  r   rL  rO  s           r   fetch_withdrawalsbittrade.fetch_withdrawals  s      =ECKE!!!}}T*H
 "*4.GJ#FO<<T[[=YZZ&&x'7%PP 	" [rR  transactionc                    U R                  US5      nU R                  U R                  US5      5      nU R                  US5      nUS:X  a  SnU R                  US5      nUb  [        R                  " U5      n0 SU_SU R                  USS	5      _S
U R                  US5      _SU_SU R                  U5      _SU R                  US5      _SU R                  US5      _SS _SS _SU R                  US5      _SS _SS _SU_SU R                  US5      _SU_SU R                  U R                  US5      5      _SU R                  US5      _S S UU R                  U5      S S.S.E$ )Nr  r  r2  ri   
withdrawalrI  r  r.   r   txidztx-hashrV  rW  r>  r=  r;  	addressToaddressFromr?  zaddress-tagtagTotagFromr  r  r'  updatedz
updated-at)r  r!  rate)commentinternalrI  )r   rA  r@  r(   
string_absr  rg  safe_string_upperr  parse_transaction_statusr   )r   rV  r  rV  r  r2  r  s          r   parse_transactionbittrade.parse_transaction  s   V %%k<@	&&t'7'7Z'PQV4:D"";6((1G
K
$$$[$?
 D$$[)<
 	

 Y/
 t--k7C
 t''Y?
 
 4
 4##K?
 T
 t
 D
 d&&{H=
 
  d33D4D4D[RY4Z[!
" t((lC#
$  ))'2)
 	
r   c                 J    SSSSSSSSSSSSSSSS.nU R                  X!U5      $ )Nr1  pendingokr  )unknown
confirming	confirmedsafeorphanr  r  	reexaminerejectpasszwallet-rejectzconfirm-errorrepealedzwallet-transferzpre-transferr   r  s      r   rd  !bittrade.parse_transaction_status  sM      #"""%% (%%
( &99r   r;  r?  c                 >  #    U R                  XE5      u  pEU R                  5       I Sh  vN   U R                  U5        U R                  U5      nUUUS   R	                  5       S.nUb  XGS'   U R                  U R                  S0 5      nU R                  US5      n	U R                  XU	5      n	U	b.  U	S:X  a  US   U	-   US'   O
XS   -   US'   U R                  US5      nU R                  U R                  Xu5      5      I Sh  vN n
U R                  X5      $  N N7f)	aO  
make a withdrawal
:param str code: unified currency code
:param float amount: the amount to withdraw
:param str address: the address to withdraw to
:param str tag:
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: a `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
Nr.   )r;  r  r  zaddr-tagr   r>  r   r=  )handle_withdraw_tag_and_paramsr  rB  r  lowerr  r   rc  safe_string_lowerr  privatePostDwWithdrawApiCreater  re  )r   r  r  r;  r?  r   r  r  r   r>  r   s              r   ri   bittrade.withdraw#  s)     99#F!!!7#==& ,,.

 ?"%J??4<<R@((;((GD'!#+D>G#; #*d^#; YYvy1F<<T[[=YZZ %%h997 	"( [s"   'DDCDDDDr   r   c                    SnUS:X  a  Xr-  nO,US:X  d  US:X  a  XpR                   -  nOUS:X  d  US:X  a  US-  nUSU R                  X5      -   -  nU R                  X@R                  U5      5      nUS:X  d  US:X  Ga#  U R	                  5         U R                  U R                  5       S5      n	S	S
U R                  U	S.n
US:w  a  U R                  X5      n
U R                  U
5      nU R                  U5      nSR                  X0R                  X|/5      nU R                  U R                  U5      U R                  U R                  5      [         R"                  S5      nUSU R                  SU05      -   -  nUSU-   -  nUS:X  a  U R%                  U5      nSS0nO#SS0nOU(       a  USU R                  U5      -   -  nU R                  U R&                  S   U   SU R                  05      U-   nXsXeS.$ )Nr+  r   r   r   r   r   v2T
HmacSHA2562)SignatureMethodSignatureVersionAccessKeyId	TimestampPOST
base64&	Signature?zContent-Typezapplication/jsonz!application/x-www-form-urlencodedr   r:   )urlrE  bodyheaders)r8   implode_paramsr  extract_paramscheck_required_credentialsymdhmsmillisecondsapiKeyr  keysort	urlencodejoinr:   hmacencodesecrethashlibsha256r?  r   )r   pathr   rE  r   r  r  r  queryrV  r  requestSortedauthpayload	signatures                  r   signbittrade.signK  s   (?JCXo3)#3<<CZSK%74KCsT((666		&"5"5d";<)sk1++-D$5$5$7=I#/$'#{{&	G ++g5 LL1M>>-0D ii BCG		$++g"6DKK8PRYR`R`bjkIC$..+y)ABBBD3:Cyy'"$6
 #$G sT^^F333!!$))E"23"7:
  dOOr   httpCodereasonr  rE  r  r  c
                    Uc  g SU;   a  U R                  US5      n
U
S:X  a  U R                  US5      nU R                  S-   U-   nU R                  U R                  S   Xl5        U R	                  U R                  S   X5        U R                  US5      nU R	                  U R                  S   X5        [        U5      eg )Nr  errorzerr-code r   r   zerr-msg)r@  r.   throw_broadly_matched_exceptionr   throw_exactly_matched_exceptionr   )r   r  r  r  rE  r  r  r   requestHeadersrequestBodyr  r  feedbackmessages                 r   handle_errorsbittrade.handle_errorsy  s    x %%h9F ''*=77S=4/44T__W5Mt^44T__W5Mt^**8Y?44T__W5Mwa#H--r    )N)J__name__
__module____qualname____firstlineno__r   r   r
   r  r   r  strr  r   r  r$  r   r   rJ  dictr   rh  r   rp  rt  r   r|  r   r  r  r  r  re  r  r  r   r  r   r  r   r  r  r  r  r   r  r  r   r  r  r  r  floatr  r   r   r   r  r"  r*  r)  r8  r	   rG  r   rP  rT  re  rd  ri   r  intr  __static_attributes____classcell__)r   s   @r   r*   r*      s   I# IV ') 3S 3 =A '  @B P3 P. :>b 
3 
4x *, mV m^O4 O O6 Ob @DB ,rS ,r ,rS\ ,r\ 68 % %F %N 6:" G7 G G.L Lv L L\ ?CQUdhqs G3 G G3 G^a G" 37TX\eg IC Is IRU I. <@d[] 1Y 1YS 1Y 1Ybfglbm 1Yf
 
4 
, ?CQUdhqs  H  H  H3  H^a  Hx|  ~B  yC  HD +-  g   -/ ^: ^@) )& *, , , BFTXgktv I3 Ic Iad I< 8<B 'C ' '  04$UYbd 	Z 	ZC 	Zs 	Zimnsit 	Z 59tZ^gi 
Ic 
I 
ITW 
Inrsxny 
I 8<$]ajl y yC yWZ y
 7;\`ik 	s 	s3 	sVY 	sptuzp{ 	s 8<$]ajl ,= ,=C ,=WZ ,=\: :O Ov O Ob XZ Tc T T mqy{ M MI MY MX] Mfi M^ 9=R S # ( AER 12tCy 12# 12f4l 59 #
c #
J
h 
8 04$UYbd Q QC Qs Qimnyiz Q6 37TX\eg QC Qs QRU Qlpq|l} Q6L
T L
X L
Q\ L
\:s :. QU]_ &:3 &: &: &:# &:do &:P &eBSW ,P\c 3 S # X\ dg  r   r*   )/ ccxt.async_support.base.exchanger   ccxt.abstract.bittrader   r  ccxt.base.typesr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   typingr   ccxt.base.errorsr   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   ccxt.base.decimal_to_precisionr&   r'   ccxt.base.preciser(   r*   r  r   r   <module>r     st    6 .  v  v  v  v  v  * 0 - . ' & . ) * ) ) 1 * + 3 4 %kx kr   