
    E#i                         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  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)AnyBalancesCurrencyDepositAddressIntMarketNumOrder	OrderBook	OrderSide	OrderTypeStrStringsTickerTickersTradeTransaction)List)ExchangeError)ArgumentsRequired)
BadRequest)	BadSymbol)InsufficientFunds)OrderNotFound)	TICK_SIZE)Precisec                     ^  \ rS rSrS\4U 4S jjr0 4S jr0 4S\\   4S jjr	S0 4S\
S\S\4S	 jjrS6S
\S\S\4S jjrS0 4S\S\4S jjrS\4S jr0 4S\4S jjrS rS6S\S\S\4S jjrS0 4S\
S\S\S\S\4
S jjrS0 4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"S6S\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&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)S6S% jr*S6S&\S'\+S\'4S( jjr,0 4S"\
S\-4S) jjr.S* r/S+S,0 SS4S- jr0S.\1S/\
S0\
S1\
S2\S3\
4S4 jr2S5r3U =r4$ )7bitbns   returnc                    > U R                  [        [        U ]  5       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	_S$S	_S%S	_S&S_S'S_S(S	_S)S*_ES	S	SSSSSS	SSS+.
ES,S-S.S/S0S1.S2S3S4/S5S6.S7/ S8Q0/ S9Q/ S:QS;.S</ S=Q0S1.S>S?SS	U R	                  S@5      U R	                  S@5      SA.0[
        SSS	S SSSS SSSSSB.SSSSSSSSC.S SS S S S	SD.SSSS	SE.SS S	SS	SF.S S SGSH0SI.	S S SJ.S S SJ.SK.[        [        [        [        SL.0 SM.SN.5      $ )ONr    BitbnsINi  Fv2CORSspotTmarginswapfutureoptioncancelAllOrderscancelOrdercreateOrdercreateStopOrdercreateTriggerOrderfechCurrenciesfetchBalancefetchDepositAddressfetchDepositAddressesfetchDepositAddressesByNetworkfetchDepositsfetchFundingHistoryfetchFundingRatefetchFundingRateHistoryfetchFundingRatesfetchIndexOHLCVfetchMarginModefetchMarketsfetchMarkOHLCVfetchMyTrades
fetchOHLCVfetchOpenOrders
fetchOrderfetchOrderBookfetchPositionModefetchPremiumIndexOHLCVfetchStatusfetchTickeremulated)
fetchTickersfetchTradesfetchTradingFeefetchTradingFeesfetchTransferfetchTransfersfetchWithdrawalfetchWithdrawalstransferwithdrawz
bitbns.comzOhttps://github.com/user-attachments/assets/a5b9a562-cdd8-4bea-9fa7-fd24c1dad3d9zhttps://{hostname}z#https://api.{hostname}/api/trade/v1z#https://api.{hostname}/api/trade/v2)wwwv1r&   zhttps://bitbns.comzhttps://ref.bitbns.com/1090961z'https://bitbns.com/trade/#/api-trading/zhttps://bitbns.com/fees)logoapirT   referraldocfeesget)zorder/fetchMarketszorder/fetchTickerszorder/fetchOrderbookzorder/getTickerWithVolumezexchangeData/ohlczexchangeData/orderBookzexchangeData/tradedetails)zplatform/statustickerszorderbook/sell/{symbol}zorderbook/buy/{symbol})zcurrentCoinBalance/EVERYTHINGzgetApiUsageStatus/USAGEzgetOrderSocketToken/USAGEzcurrentCoinBalance/{symbol}zorderStatus/{symbol}zdepositHistory/{symbol}zwithdrawHistory/{symbol}zwithdrawHistoryAll/{symbol}zdepositHistoryAll/{symbol}zlistOpenOrders/{symbol}zlistOpenStopOrders/{symbol}zgetCoinAddress/{symbol}zplaceSellOrder/{symbol}zplaceBuyOrder/{symbol}zbuyStopLoss/{symbol}zsellStopLoss/{symbol}zcancelOrder/{symbol}zcancelStopLossOrder/{symbol}zlistExecutedOrders/{symbol}zplaceMarketOrder/{symbol}zplaceMarketOrderQnty/{symbol})r[   postr]   )orderscancelgetordersnewmarginOrderstradingquotez0.0025)feeSide	tierBased
percentagetakermaker)IOCFOKPOGTD)
marginModetriggerPricetriggerPriceTypetriggerDirectionstopLossPricetakeProfitPriceattachedStopLossTakeProfittimeInForcehedgedtrailingleveragemarketBuyRequiresPricemarketBuyByCostselfTradePreventioniceberg)rm   limitdaysBack	untilDayssymbolRequired)rm   triggerrv   r   )rm   r|   r   rv   r   r|   d   )	sandboxr/   createOrdersr@   rC   rB   fetchOrdersfetchClosedOrdersrA   )linearinverse)r(   r*   r+   )400409416417)exactbroad)idname	countries	rateLimit	certifiedversionhashostnameurlsrW   rZ   precisionModefeatures
exceptions)
deep_extendsuperr    describeparse_numberr   r   r   r   r   )self	__class__s    S/home/james-whalen/.local/lib/python3.13/site-packages/ccxt/async_support/bitbns.pyr   bitbns.describe   s   fd < >--- $- 	-
 %- $- "5- t- t- "4- %d- !%- - &t- (-  1%!-"  #-$ &u%-& #E'-( *5)-* $U+-, "5--. "5/-0 1-2 !%3-4  5-6 e7-8 "49-: d;-< !$=-> $U?-@ )%A-B tC-D zE-F !%##($)!&"'#($(!!Y-\ %i/??
 ,<= 2   
@  W3j &!&"&!..x8!..x8 '  %&+(,,0,1).+06:#(#("'#(	( #($)$)27+0/4#()$, %)&+!%$(%)*.& ',#($)*.	# ',!%#'$)*.( $()-  #a3l ##
 ##u>B &$,(	 EKA
 K K	    c                    #    U R                  U5      I Sh  vN nU R                  US5      nU R                  SS0X35      SSSUS.$  N07f)z
the latest known information on the availability of the exchange API
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: a `status structure <https://docs.ccxt.com/#/?id=exchange-status-structure>`
Nstatus1ok)r   updatedetaurlinfo)v1GetPlatformStatussafe_string)r   paramsresponse	statusRaws       r   fetch_statusbitbns.fetch_status   s]      11&99 $$Xx8	&&T{II
 	
 :s   A
A1A
c                   #    U R                  U5      I Sh  vN n/ n[        S[        U5      5       GH  nX$   nU R                  US5      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0 5      nU R                  US0 5      nU R                  US0 5      nU R                  US	0 5      nU R                  US
0 5      nUS:H  nU(       a  US-   U-   OUnUR                  0 SU_SU_SU	S-   U
-   _SU	_SU
_SS_SU_SU_SS_SS_SS_SS_SS_SS_SS_SU R                  US5      _SS_SS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      S.SSS.U R                  US 5      U R                  US!5      S.U R                  US 5      U R                  US!5      S.U R                  US 5      U R                  US!5      S.S".SUS#.E5        GM     U$  GN07f)$z
retrieves data on all markets for bitbns
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict[]: an array of objects representing market data
Nr   r   baserc   	precisionlimitsamountpricecostUSDT_uppercaseIdsymbol/settlebaseIdquoteIdsettleIdtyper(   Tr)   Fr*   r+   r,   activecontract)r   r   )minmaxr   r   )rw   r   r   r   )r   r   contractSizeexpiryexpiryDatetimestrike
optionTyper   r   createdr   )wwwGetOrderFetchMarketsrangelenr   safe_currency_code	safe_dictappend	safe_boolr   parse_precisionsafe_number)r   r   r   resultimarketr   r   r   r   rc   marketPrecisionmarketLimitsamountLimitspriceLimits
costLimitsusdtr   s                     r   fetch_marketsbitbns.fetch_markets  s     55f==0 q#h-(A[F!!&$/B%%ff5F&&vw7G**62D++G4E"nnV["EO>>&(B?L>>,"EL..wCKfbAJv%D6:6C<'1KMM 1b1{1 $*u,1 	1
 1 $1 &1 71 D1 1 1 %1 1 %1 %1  $..:!1" E#1$  $"&""//0D0DTEUEUVegoEp0qr!..t/C/CDDTDTUdfmDn/op  $#!
  $//eD#//eD
  $//UC#//UC
  $//
EB#//
EB$  a1 1 )B u >s   I
IH0I
Nr   r|   c                   #    U R                  5       I Sh  vN   U R                  U5      nSUS   0nUb  X%S'   U R                  U R                  XS5      5      I Sh  vN nU R	                  US5      nU R                  XdS   U5      $  Nr N-7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   r   r|   	timestamp)load_marketsr   wwwGetOrderFetchOrderbookextendsafe_integerparse_order_book)r   r   r|   r   r   requestr   r   s           r   fetch_order_bookbitbns.fetch_order_bookc  s      !!!V$fTl
 $G77G8TUU$ %%h<	$$Xh/?KK5 	" Vs"   BB	ABB,BBtickerr   c                    U R                  US5      nU R                  US5      nU R                  XB5      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 R                  US5      _SU R                  US5      _S	U R                  US	5      _S
U R                  US
5      _SU R                  US5      _SU R                  US5      _SU_SU_SU R                  US5      _SU R                  US5      _SU R                  US5      _SU R                  US5      _U R                  US5      U R                  US5      US.EU5      $ )Nr   r   lastdatetimehighlowbid	bidVolumeask	askVolumevwapopenclosepreviousClosechangerf   average
baseVolumequoteVolume)r   r   r   )r   r   safe_symbolsafe_tickeriso8601)r   r   r   r   marketIdr   r   s          r   parse_tickerbitbns.parse_ticker  s   > %%fk:	##FH5!!(3/ !
f!
!
 Y/!
 D$$VV4	!

 4##FE2!
 4##FE2!
 ))&+>!
 4##FE2!
 ))&+>!
 D$$VV4!
 D$$VV4!
 T!
 D!
 T--foF!
 d&&vx8!
  $**6<@!!
" t''	:#!
$ **6<@++FMB)!
* + 	r   symbolsc                    #    U R                  5       I Sh  vN   U R                  U5      I Sh  vN nU R                  X15      $  N. N7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>`
N)r   wwwGetOrderFetchTickersparse_tickers)r   r  r   r   s       r   fetch_tickersbitbns.fetch_tickers  sI      !!!55f==B !!(44E 	"=   A	AA	AA	A	c                    S nUUU R                  U5      S.nU R                  US0 5      n[        UR                  5       5      n[	        S[        U5      5       H  nXV   nUR                  S5      n[        U5      n	U	S:  d  M+  U R                  US5      n
U R                  5       nU R                  XG5      US'   U R                  USU
-   5      US'   U
S	:X  a  S
n
U R                  U
5      nXU'   M     U R                  U5      $ )N)r   r   r   datar   availableorder   freeinorderusedMoneyINR)r   r   listkeysr   r   splitr   accountr   safe_balance)r   r   r   r   r  r  r   keypartsnumParts
currencyIdr  codes                r   parse_balancebitbns.parse_balance  s   	"Y/

 ~~h3DIIK q#d)$A'CII./E5zH!|!--eQ7
,,."&"2"24"="&"2"24Z9O"P(!&J..z:&t %   ((r   c                    #    U R                  5       I Sh  vN   U R                  U5      I Sh  vN nU R                  U5      $  N. 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>`
N)r   "v1PostCurrentCoinBalanceEVERYTHINGr  )r   r   r   s      r   fetch_balancebitbns.fetch_balance  sG      !!!@@HH$ !!(++' 	"Hr	  c                 4    SSSSS.nU R                  X!U5      $ )N	cancelledr   done)z-10r   2)r   )r   r   statusess      r   parse_statusbitbns.parse_status   s*    	
 &99r   orderc                 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S:X  a  SnOUS:X  a  S	nU R                  US
5      nU R                  US5      nUS:X  a  SnOU R                  U5      nU R                  0 SU_SU_SS _SU R	                  U5      _SU_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S5      _SS _SS _SS _SS _US S S S .S S!.EU5      $ )"Nr   entry_idtimet_rater   r&  buyr   sellr  r   z Successfully cancelled the orderr$  r   clientOrderIdr   r   lastTradeTimestampr   rt   postOnlysider   ratern   r   btcr   r   filled	remaining)r   currencyr6  )r   feetrades)safe_string_2r   r)  
safe_order	parse8601)	r   r+  r   r   r   rn   r5  r  r   s	            r   parse_orderbitbns.parse_order/  s   D tZ8##E62''x8v.3;DS[Dv.!!%255 F&&v.F  
E 
" 
 T 
 1	 

  
 !$ 
 d&&vx8 
 4 
  
 D 
 T%%eV4 
 L 
 d&&ue4 
 D 
 t 
  d! 
" # 
$  
 1 
2 3 	r   r   r5  r   r   c                   #    U R                  5       I Sh  vN   U R                  U5      nU R                  U/ SQ5      nU R                  US5      n	U R                  US5      n
U R	                  U/ SQ5      nUR                  5       US   U R                  X5      S.nSnUS	:X  a  U R                  X5      US
'   O
SnUS   US'   Ub  U R                  X5      US'   U	b  U R                  X5      US'   U
b  U R                  X5      US'   [        X5      " U R                  X5      5      I Sh  vN nU R                  X5      $  GN- N7f)a  
       create a trade order

       https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-2/place-orders
       https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-1/market-orders-quantity  # market orders

       :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
       :param float [params.triggerPrice]: the price at which a trigger order is triggered at

EXCHANGE SPECIFIC PARAMETERS
       :param float [params.target_rate]: *requires params.trail_rate when set, type must be 'limit'* a bracket order is placed when set
       :param float [params.trail_rate]: *requires params.target_rate when set, type must be 'limit'* a bracket order is placed when set
       :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
       N)rn   	stopPricer/  target_rate
trail_rate)rn   rC  rE  rD  r/  r   )r5  r   quantityv2PostOrdersr|   r6   v1PostPlaceMarketOrderQntySymbolr   r   r/  )r   r   safe_string_nr   omitupperamount_to_precisionprice_to_precisiongetattrr   r@  )r   r   r   r5  r   r   r   r   rn   
targetRate	trailRater   methodr   s                 r   create_orderbitbns.create_orderz  sV    ( !!!V$))&2YZ%%fm<
$$V\:	6#ghJJL]+00@
  7?"55fDGFO7F &y 1GH# $ 7 7 MGH!%)%<%<V%PGM" $($;$;F$NGL! .t{{7/KLL 11I 	"4 Ms"   EEDE-E.EEr   c                   #    Uc  [        U R                  S-   5      eU R                  5       I Sh  vN   U R                  U5      nU R	                  USS5      nU R                  USS/5      nUUS   S.nSnU(       a  SOSnUS	   S
:X  a  SOSn	X-  n	XS'   U R                  U R                  Xc5      5      I Sh  vN nU R                  Xt5      $  N N7f)a  
cancels an open order

https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-2/cancel-orders
https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-1/cancel-stop-loss-orders

: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
:param boolean [params.trigger]: True if cancelling a trigger order
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
Nz) cancelOrder() requires a symbol argumentr   stopr   )r-  r   StopLossOrderr   r   r   
usdtcancelr_   r5  )	r   r   r   r   safe_bool_2rJ  v2PostCancelr   r@  )
r   r   r   r   r   	isTriggerr   r   tail	quoteSides
             r   cancel_orderbitbns.cancel_order  s      >#DGG.Y$YZZ!!!V$$$VY?	6Iv#67]+
 "+%+I%6&%@Lx		#**4;;w+GHH11 	" Is"   /CCB	C;C<CCc                   #    Uc  [        U R                  S-   5      eU R                  5       I Sh  vN   U R                  U5      nUS   US.nU R	                  USS5      nU(       a  [        U R                  S-   5      eU R                  U R                  XS5      5      I Sh  vN nU R                  US/ 5      nU R                  US	5      n	U R                  X5      $  N N<7f)
a  
fetches information on an order made by the user

https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-1/order-status

: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>`
Nz( fetchOrder() requires a symbol argumentr   )r   r-  r   rU  z$ fetchOrder cannot fetch stop ordersr  r   )r   r   r   r   rX  r   v1PostOrderStatusSymbolr   	safe_listr   r@  )
r   r   r   r   r   r   r   r   r  firsts
             r   fetch_orderbitbns.fetch_order  s      >#DGG.X$XYY!!!V$Tl
 ""69f=TWW'MMNN55dkk'6RSS4 ~~h3tQ'..K 	" Ts"   /C#CA2C#$C!%;C#!C#sincec                   #    Uc  [        U R                  S-   5      eU R                  5       I Sh  vN   U R                  U5      nU R	                  USS5      nU R                  USS/5      nUS   S:X  a  SOSnUS	   S
U(       a  US-   OUS-   S.nU R                  U R                  X5      5      I Sh  vN n	U R                  U	S/ 5      n
U R                  XX#5      $  N N+7f)a  
fetch all unfilled currently open orders

https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-2/order-status-limit
https://docs.bitbns.com/bitbns/rest-endpoints/order-apis/version-2/order-status-limit/order-status-stop-limit

: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
:param boolean [params.trigger]: True if fetching trigger orders
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
Nz- fetchOpenOrders() requires a symbol argumentr   rU  r   r   usdtListOpenlistOpenr   r   
StopOrdersOrders)r   pager5  r  )
r   r   r   r   rX  rJ  v2PostGetordersnewr   ra  parse_orders)r   r   re  r|   r   r   rZ  r\  r   r   r  s              r   fetch_open_ordersbitbns.fetch_open_orders  s      >#DGG.]$]^^!!!V$$$VY?	6Iv#67'-i'8F'BN	]+2;Y-)hBV

 00W1MNN* ~~h3  u<<A 	" Os"   /C$C BC$6C"7*C$"C$tradec                    U R                  S U5      nU R                  USS5      nU R                  U R                  US5      5      nU R	                  USU5      nU R                  USS5      nU R                  US5      nU R                  US5      nUb/  UR                  S	5      S
:  a  S	nOUR                  S5      S
:  a  SnU R                  US5      nS n	Ub  [        R                  " Xh5      nO$U R                  US5      nU R                  US5      n	US   n
S nU R                  US5      nUb
  US   nUUS.nU R                  UUU R                  U5      U
UUS US UUU	US.U5      $ )Nr   tradeIddater   r6  r   r   r   r0  r   r1  factorbase_volumequote_volumer   r;  rc   )r   r:  )r   r   r   r   r   r+  r   r5  takerOrMakerr   r   r   r;  )safe_marketr=  r?  r   r   safe_string_lowerfindr   
string_div
safe_trader   )r   rp  r   orderIdr   priceStringamountStringr5  rt  
costStringr   r;  feeCostStringfeeCurrencyCodes                 r   parse_tradebitbns.parse_trade9  s   @ !!$/$$UD)<NN4#3#3E6#BC	%%e[)D	((@''x8%%eV4yy1$6"a'!!%2
"--lCL++E=AL))%@J!((6$$WoO%+C "Y/  " 
  	r   c                 r  #    Uc  [        U R                  S-   5      eU R                  5       I Sh  vN   U R                  U5      nUS   SS.nUb  U R	                  U5      US'   U R                  U R                  Xd5      5      I Sh  vN nU R                  US/ 5      nU R                  XX#5      $  N 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>`
Nz+ fetchMyTrades() requires a symbol argumentr   r   r   rk  re  r  )	r   r   r   r   r   v1PostListExecutedOrdersSymbolr   ra  parse_trades)	r   r   re  r|   r   r   r   r   r  s	            r   fetch_my_tradesbitbns.fetch_my_trades  s      >#DGG.[$[\\!!!V$Tl
 #||E2GG<<T[[=YZZT ~~h3  u<<g 	" [s"   /B7B3AB7	B5
*B75B7c                 $  #    Uc  [        U R                  S-   5      eU R                  5       I Sh  vN   U R                  U5      nUS   US   S.nU R	                  U R                  Xd5      5      I Sh  vN nU R                  XuX#5      $  NZ N7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>`
Nz) fetchTrades() requires a symbol argumentr   r   )coinr   )r   r   r   r   wwwGetExchangeDataTradedetailsr   r  )r   r   re  r|   r   r   r   r   s           r   fetch_tradesbitbns.fetch_trades  s      >#DGG.Y$YZZ!!!V$8$Y'
 <<T[[=YZZ   5@@ 	" [s"   /BBAB5B6BBr  c                 D  #    Uc  [        U R                  S-   5      eU R                  5       I Sh  vN   U R                  U5      nUS   SS.nU R	                  U R                  Xd5      5      I Sh  vN nU R                  US/ 5      nU R                  XX#5      $  Nj 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>`
Nz2 fetchDeposits() requires a currency code argumentr   r   r  r  )r   r   r   r:  v1PostDepositHistorySymbolr   ra  parse_transactions	r   r  re  r|   r   r:  r   r   r  s	            r   fetch_depositsbitbns.fetch_deposits  s      <#DGG.b$bcc!!!==&tn
 88W9UVV0 ~~h3&&tuDD? 	" W"   /B BA B 2B3*B B c                 D  #    Uc  [        U R                  S-   5      eU R                  5       I Sh  vN   U R                  U5      nUS   SS.nU R	                  U R                  Xd5      5      I Sh  vN nU R                  US/ 5      nU R                  XX#5      $  Nj 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>`
Nz5 fetchWithdrawals() requires a currency code argumentr   r   r  r  )r   r   r   r:  v1PostWithdrawHistorySymbolr   ra  r  r  s	            r   fetch_withdrawalsbitbns.fetch_withdrawals  s      <#DGG.e$eff!!!==&tn
 99$++g:VWW ~~h3&&tuDD 	" Xr  c           	      j    SSS.SSSSSSSS.S.nU R                  X20 5      nU R                  XAU5      $ )Npendingr   )r&  r   canceledfailed)r&  r   r'  3456)deposit
withdrawal)r   r   )r   r   r   statusesByTyper(  s        r    parse_transaction_status_by_type'bitbns.parse_transaction_status_by_type$  sW     
  
 >>.;&99r   transactionr:  c                 Z   U R                  US5      nU R                  X25      nU R                  U R                  USS5      5      nU R                  US5      nU R                  USS5      nS nUbF  UR	                  S5      S:  a  SnS	nO,UR	                  S
5      S:  d  UR	                  S
5      S:  a  SnU R                  US5      n	U R                  US5      n
S nU
b  XJS.n0 SU_SS _SS _SU_SU R                  U5      _SS _SS _SS _SS _SS _SS _SS _SU_SU	_SU_SU_SS _S S US.E$ )Nunitrs  r   r   expTime r  r   r   rS   r  r   r;  )r:  r   r   r   txidr   networkaddress	addressToaddressFromtagtagTotagFromr:  r   r   )commentinternalr;  )r   r   r?  r=  rz  r   r   )r   r  r:  r  r  r   r   r  r   r   feeCostr;  s               r   parse_transactionbitbns.parse_transaction7  s   . %%k6:
&&z<NN4#5#5k6;#WX	V4"";	2>yy#q( :&!+w||J/G1/L#!!+x8"";6#5C
K
$
 D
 	

 Y/
 t
 t
 
 4
 4
 T
 t
 D
 f
 
  f!
" t#
$ )
 	
r   c                 b  #    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0 5      nU R                  US5      nU R                  US5      nU R                  U5        UUSUUS.$  N NV7f)a  
fetch the deposit address for a currency associated with self account
:param str code: unified currency code
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
Nr   r   r  tokenr  )r   r:  r  r  r  )r   r:  v1PostGetCoinAddressSymbolr   r   r   check_address)	r   r  r   r:  r   r   r  r  r  s	            r   fetch_deposit_addressbitbns.fetch_deposit_addressw  s      !!!==&htn
 88W9UVV ~~h3""41tU+7#
 	
) 	"
 Ws"   B/B+?B/B-AB/-B/c                 "    U R                  5       $ N)milliseconds)r   s    r   noncebitbns.nonce  s      ""r   rT   GETc                    U R                   nX'S   ;  a  [        U R                  S-   U-   S-   5      eUS:w  a  U R                  5         SU R                  0nU R                  U R                   S   U   5      nUS-   U R                  X5      -   n	U R                  X@R                  U5      5      n
[        U R                  5       5      nUS:X  a  U
(       a  U	SU R                  U
5      -   -  n	OUS	:X  a  U
(       a  U R                  U
5      nOS
nUUS.nU R                  U R                  U5      5      nU R                  U R                  U5      U R                  U R                   5      ["        R$                  5      nXS'   XS'   SUS'   XXeS.$ )NrW   z) does not have a testnet/sandbox URL for z
 endpointsrT   zX-BITBNS-APIKEYr   r  ?POSTz{})timeStamp_noncebodyzX-BITBNS-PAYLOADzX-BITBNS-SIGNATUREz!application/x-www-form-urlencodedzContent-Type)r   rQ  r  headers)r   r   r   check_required_credentialsapiKeyimplode_hostnameimplode_paramsrJ  extract_paramsstrr  	urlencodejsonstring_to_base64hmacencodesecrethashlibsha512)r   pathrW   rQ  r   r  r  r   baseUrlr   queryr  authpayload	signatures                  r   signbitbns.sign  sy   yyE{"*U UX[ [^j jkk%<++-!4;;G ''		%(8(=>md11$??		&"5"5d";<DJJL!U?sT^^E222vyy'#(D ++DIIdO<G		$++g"6DKK8PRYR`R`aI*1&',5()&IGN#dOOr   httpCodereasonr   rQ  r  r  c
                    Uc  g U R                  US5      n
U R                  US5      nU
S L=(       a    U
S:g  =(       a    U
S:g  nU(       d  Ubz  U R                  S-   U-   nU R                  U R                  S   X5        U R                  U R                  S   X5        U R	                  U R                  S   X5        [        U5      eg )Nr  msg200204 r   r   )r   r   throw_exactly_matched_exceptionr   throw_broadly_matched_exceptionr   )r   r  r  r   rQ  r  r  r   requestHeadersrequestBodyr  messageerrorfeedbacks                 r   handle_errorsbitbns.handle_errors  s    
 &1""8U3T!JJDEMW(ww}t+H001I4Z001I7]001I7]))r    r  )5__name__
__module____qualname____firstlineno__r   r   r   r   r
   r   r  r	   r   r   dictr   r  r   r   r  r   r  r!  r)  r   r@  r   r   floatr   rR  r   r]  rc  rn  r   r  r  r  r   r  r  r  r   r  r   r  r  r  intr  __static_attributes____classcell__)r   s   @r   r    r       s   L# L\ )+ 
8 *, `V `D @DB "LS "L "LS\ "LH84 8 86 8t 6:" )57 )5 )5V) )2 *, , ,6:I Iv I IV mqy{ 82 82I 82Y 82X] 82fi 82t 9=R 2S 2# 2> 8<B 2/C 2/ 2/h 59tZ^gi 0=c 0= 0=TW 0=nrsxny 0=dJ Jv J JX 37TX\eg >=C >=s >=RU >=@ <@d[] A AS A Abfglbm A6 04$UYbd *E *EC *Es *Eimnyiz *EX 37TX\eg EC Es ERU Elpq|l} E0:&>
T >
X >
Q\ >
@ =? !
 !
> !
F# #5TPT P@c 3 S # X\ dg  r   r    )% ccxt.async_support.base.exchanger   ccxt.abstract.bitbnsr   r  ccxt.base.typesr   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   ccxt.base.decimal_to_precisionr   ccxt.base.preciser   r    r  r   r   <module>r     sY    6 ,  q  q  q  q  q  * . ' & . * 4 %xX{ xr   