
    ei                        d dl mZ d dlmZ d dlZd dlZd dlZd dlmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlm Z  d dl!m"Z" d dl#m$Z$  G d dee          Z%dS )    )Exchange)ImplicitAPIN)AnyBalancesIntMarketNumOrder	OrderBook	OrderSide	OrderTypeStrStringsTickerTickersTrade)List)ExchangeError)AuthenticationError)PermissionDenied)InsufficientFunds)InvalidOrder)OrderNotFound)DDoSProtection)InvalidNonce)	TICK_SIZE)Precisec                   >    e Zd Zdef fdZi fdee         fdZdedefdZ	de
fdZi fde
fdZdi fd	ed
edefdZd0dededefdZi fd	edefdZdi fdedefdZd0dededefdZddi fd	eded
edee         fdZdi fd	ededededef
dZdi fded	efdZ defdZ!d0dedede"fdZ#di fded	efd Z$dddi fd	eded
efd!Z%dddi fd	eded
edee"         fd"Z&dddi fd	eded
edee"         fd#Z'd$ Z(d%d&i ddfd'Z)d(e*d)ed*ed+ed,ed-efd.Z+d%d&i ddi fd/Z, xZ-S )1btcboxreturnc                    |                      t          t          |                                           dddgdddi dd dd	d
ddddddddddddddddd	dddddd	ddddddi dddd	ddddddddddd dd!dd"dd#dd$dd%dd&dd'dd(dd)di d*dd+dd,dd-dd.dd/dd0dd1dd2dd3dd4dd5dd6dd7dd8dd9dd:di d;dd<dd=dd>dd?dd@d	dAddBddCd	dDd	dEd	dFddGddHddIddJddKdi dLddMddNddOd	dPd	dQd	dRddSddTddUddVddWddXddYddZdd[dd\ddddddd]d^d_d`idadbdcdddeg dfidgg dhidedigidjd	dkdldmdndddd dddd dddddoddddddddpd d dddd	dqddrddd	dsddrd d ddd	dtd d du	d d dvd d dvdwt          t
          t          t          t          t          t          t          t          t          t          dx
dy          S )zNr   BtcBoxJPi  v1FCORSspotTmarginswapfutureoption	addMarginborrowCrossMarginborrowIsolatedMarginborrowMargincancelOrdercloseAllPositionsclosePositioncreateOrder$createOrderWithTakeProfitAndStopLoss&createOrderWithTakeProfitAndStopLossWscreatePostOnlyOrdercreateReduceOnlyOrderfetchBalancefetchBorrowInterestfetchBorrowRatefetchBorrowRateHistoriesfetchBorrowRateHistoryfetchBorrowRatesfetchBorrowRatesPerSymbolfetchCrossBorrowRatefetchCrossBorrowRatesfetchCurrenciesfetchFundingHistoryfetchFundingIntervalfetchFundingIntervalsfetchFundingRatefetchFundingRateHistoryfetchFundingRatesfetchGreeksfetchIndexOHLCVfetchIsolatedBorrowRatefetchIsolatedBorrowRatesfetchIsolatedPositionsfetchLeveragefetchLeveragesfetchLeverageTiersfetchLiquidationsfetchLongShortRatiofetchLongShortRatioHistoryfetchMarginAdjustmentHistoryfetchMarginModefetchMarginModesfetchMarketLeverageTiersfetchMarkOHLCVfetchMarkPricesfetchMyLiquidationsfetchMySettlementHistoryfetchOpenInterestfetchOpenInterestHistoryfetchOpenInterestsfetchOpenOrdersfetchOptionfetchOptionChain
fetchOrderfetchOrderBookfetchOrdersfetchPositionfetchPositionHistoryfetchPositionModefetchPositionsfetchPositionsForSymbolfetchPositionsHistoryfetchPositionsRiskfetchPremiumIndexOHLCVfetchSettlementHistoryfetchTickerfetchTickersfetchTradesfetchTransferfetchTransfersfetchVolatilityHistoryfetchWithdrawalfetchWithdrawalsreduceMarginrepayCrossMarginrepayIsolatedMarginrepayMarginsetLeverage	setMargin)setMarginModesetPositionModetransferwithdrawwszOhttps://github.com/user-attachments/assets/1e2cb499-8d0f-4f8f-9464-3c015cfbc76brestzhttps://www.btcbox.co.jp/apizhttps://www.btcbox.co.jp/z'https://blog.btcbox.jp/en/archives/8762zMhttps://support.btcbox.co.jp/hc/en-us/articles/360001235694-Fees-introduction)logoapiwwwdocfeesget)depthorderstickertickerspost)balance	trade_addtrade_cancel
trade_list
trade_viewwalletzajax/coin/coinInfo)publicprivatewebApi   )webApiEnablewebApiRetriesz0.0001)fetchMarketsamountPrecision)IOCFOKPOGTD)
marginModetriggerPricetriggerPriceTypetriggerDirectionstopLossPricetakeProfitPriceattachedStopLossTakeProfittimeInForcehedgedleveragemarketBuyRequiresPricemarketBuyByCostselfTradePreventiontrailingiceberg)r   triggerr   symbolRequiredd   )r   limitr   r   r   )r   r   daysBack	untilDaysr   r   r   )	sandboxr2   createOrdersfetchMyTradesr`   r]   rb   fetchClosedOrders
fetchOHLCV)linearinverse)r&   r(   r)   )
104105106107200201202203401402)idname	countries	rateLimitversionprohasurlsr   optionsfeaturesprecisionMode
exceptions)deep_extendsuperr   describer   r   r   r   r   r   r   r   )self	__class__s    W/var/www/html/volatility/venv/lib/python3.11/site-packages/ccxt/async_support/btcbox.pyr   zbtcbox.describe   s   fd 3 3 < < > >[[[ %[ 	[
 %[ %[ U[ $U[ '[ [ t[ $U[  [ t[ 7[  9%![" &u#[ [$ (%[& '[( &u)[* "5+[, +E-[. )%/[0 #E1[2 ,U3[4 '5[6 (7[8 "59[: &u;[< '=[> (?[@ #EA[B *5C[D $UE[ [ [F uG[H "5I[J *5K[L +EM[N )%O[P  Q[R !%S[T %eU[V $UW[X &uY[Z -e[[\ /][^ "5_[` #Ea[b +Ec[d !%e[f "5g[ [ [h &ui[j +Ek[l $Um[n +Eo[p %eq[r "4s[t uu[v #Ew[x dy[z !${[| t}[~  [@ 'A[B $UC[D !%E[F *5G[H (I[ [ [J %eK[L )%M[N )%O[P tQ[R S[T tU[V  W[X !%Y[Z )%[[\ "5][^ #E_[` a[b #Ec[d &ue[f ug[h ui[j Uk[ [l "'#(!!u[ [ [z j: 3@g         	 ,' 6 %)%&! ! $,   %&+(-,0,1).+06:#(#("'#(	( ( #($)27+0/4$)#()$ $, %)%)&+#($)*.	# # ',!$#($)*.( ( ',!$$(%)#($)*.$ $ *."&c2 2h ## 
 ## q< <z '*'##(##$$% UVA
 VA
 V V V	    c                   K   |                                  }|                     ddd          }t          j        ||g  d{V \  }}|                     |di           }t          |                                          }g }t          dt          |                    D ]}	||	         }
|
	                    d          }| 
                    |d          }| 
                    |d          }|                                }|                                }||
         }|d	z   |z   }|d
k    r|                     d          n|                     d          }|                     ||i           }|                     |di           }|                    |                     i d|ddd|d|d|d|d|ddddddddddddddddd|d|ddddddddddd ddd ddd ddd d!|                     |                     | 
                    |d"                              dd#| 
                    |d$          d%k    d|d&                     |S )'z
        retrieves data on all markets for ace
        :param dict [params]: extra parameters specific to the exchange API endpoint
        :returns dict[]: an array of objects representing market data
        r   webApiGetAjaxCoinCoinInfoTNdatar   _   /BTCz0.0005z0.0010trader   uppercaseIdsymbolbasebaseIdquotequoteIdsettlesettleIdtyper&   r'   Fr(   r)   r*   takermakerminmaxamountpricecostr   pricedecimalr   r   enable1)contractr   r   contractSizeexpiryexpiryDatetimestrike
optionTypelimits	precisionactivecreatedinfo)publicGetTickersfetch_web_endpointasynciogather	safe_dictlistkeysrangelensplitsafe_stringlowerparse_numberappendsafe_market_structureparse_precision)r   paramspromise1promise2	response1	response2result2Data	marketIdsmarketsimarketIdsymbolPartsbaseCurrr   r   r   resr   feedetailstradeDetailss                        r   fetch_marketszbtcbox.fetch_markets   sY      ((****>;VX\]]%,^h5I%JJJJJJJ	9nnY;;))**	q#i..)) ?	 ?	A |H"..--K''Q77H$$[!44EkkmmG!!BH%C^e+F24++$##H---DDUDUV^D_D_Cnn["b99G>>'7B??LNN455 37b37t37 &37 	37
 "37 37 737 $37 D37 37 37 %37 37 %37 %37  !37" #37$ " $"&"  $# 
  $# 
  $# 
  $#! ! & "..t/C/CDDTDTUacqDrDr/s/stt"  **<BBcIe37 37 37 3 3 3 3 3 3h r   marketc                    |                      |d          }|                     |          }|                      |d          }|                     |          }|dz   |z   }i d|                      |d          dd d|d|d|d|d|d	d d
d dddddddddddddddd d d d d d d |                     |d          |                     |d          dd d dd d dd d dd|                     |                     |                      |d                              |                     |                     |                      |d                              dd d |dS )Nr   r   r   r   r   r   r   r   r   r   r   r&   Tr'   Fr(   r)   r*   r   r   minLimitBaseAmountmaxLimitBaseAmountr   r   quotePrecisionbasePrecisionr   )r   r   r   r   r   r   r   r   r   r   r   )r	  safe_currency_codesafe_numberr  r  )r   r   r   r   r   r   r   s          r   parse_marketzbtcbox.parse_marketC  sS   !!&&11&&v..""6733''00e#1
$""68441
41
 f1
 D	1

 f1
 U1
 w1
 d1
 1
 F1
 D1
 e1
 E1
 e1
 e1
  !1
" d#1
$  "  ++F4HII++F4HII 
   
   
    & **4+?+?@P@PQWYi@j@j+k+kll++D,@,@AQAQRXZiAjAj,k,kll  a1
 1
 1
 1	
r   c                    d|i}t          | j                                                  }t          dt	          |                    D ]}||         }|                     |          }|d         }|dz   }||v rP|                                 }	|dz   }
|                     ||          |	d<   |                     ||
          |	d<   |	||<   |                     |          S )Nr   r   r   _balance_lockfreeused)	r  
currenciesr  r  r  currencyaccountr	  safe_balance)r   responseresultcodesr  coder/  
currencyIdr,  r0  r-  s              r   parse_balancezbtcbox.parse_balance|  s    )T_))++,,q#e**%% 
	' 
	'A8D}}T**H!$J
*Dx,,..!G+"&"2"28T"B"B"&"2"28T"B"B&t  (((r   c                    K   |                                   d{V  |                     |           d{V }|                     |          S )aW  
        query for balance and get the amount of funds available for trading or funds locked in orders

        https://blog.btcbox.jp/en/archives/8762#toc13

        :param dict [params]: extra parameters specific to the exchange API endpoint
        :returns dict: a `balance structure <https://docs.ccxt.com/?id=balance-structure>`
        N)load_marketsprivatePostBalancer7  )r   r  r2  s      r   fetch_balancezbtcbox.fetch_balance  se       !!!!!!!!!0088888888!!(+++r   Nr   r   c                 H  K   |                                   d{V  |                     |          }i }t          | j                  }|dk    r|d         |d<   |                     |                     ||                     d{V }|                     ||d                   S )a(  
        fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data

        https://blog.btcbox.jp/en/archives/8762#toc6

        :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   coinr   )r9  r   r  symbolspublicGetDepthextendparse_order_book)r   r   r   r  r   request
numSymbolsr2  s           r   fetch_order_bookzbtcbox.fetch_order_book  s       !!!!!!!!!V$$&&
>>$X.GFO,,T[[&-I-IJJJJJJJJ$$Xvh/?@@@r   r   c                    |                      d |          }|                     |d          }|                     i d|dd dd d|                     |d          d|                     |d          d|                     |d          d	d d
|                     |d          dd dd dd d|d|dd dd dd dd |                     |d          |                     |d          |d|          S )Nlastr   	timestampdatetimehighlowbidbuy	bidVolumeasksell	askVolumevwapopenclosepreviousClosechange
percentageaveragevolvolume)
baseVolumequoteVolumer   )safe_symbolr	  safe_ticker)r   r   r   r   rF  s        r   parse_tickerzbtcbox.parse_ticker  s   !!$//// !
f!
!
 !
 D$$VV44	!

 4##FE22!
 4##FE22!
 !
 4##FF33!
 !
 D!
 D!
 T!
 D!
 T!
 d!
  $!!
" t#!
$ **6599++FH==)!
 !
 !
* +  	r   c                 <  K   |                                   d{V  |                     |          }i }t          | j                  }|dk    r|d         |d<   |                     |                     ||                     d{V }|                     ||          S )a  
        fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market

        https://blog.btcbox.jp/en/archives/8762#toc5

        :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   r=  )r9  r   r  r>  publicGetTickerr@  r^  )r   r   r  r   rB  rC  r2  s          r   fetch_tickerzbtcbox.fetch_ticker  s       !!!!!!!!!V$$&&
>>$X.GFO--dkk'6.J.JKKKKKKKK  6222r   r>  c                    K   |                                   d{V  |                     |           d{V }|                     ||          S )a  
        fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
        :param str[] [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)r9  r   parse_tickers)r   r>  r  r2  s       r   fetch_tickerszbtcbox.fetch_tickers  sg       !!!!!!!!!..v66666666!!(G444r   r   c                    |                      |d          }|                     d |          }|                     |d          }|                     |d          }|                     |d          }d }|                     |d          }|                     ||d ||                     |          |d         ||d ||d d d|          S )Ndatetidr   r   r   r   )r   r   orderrG  rH  r   r   sidetakerOrMakerr   r   r   r  )safe_timestampsafe_marketr	  
safe_tradeiso8601)	r   r   r   rG  r   priceStringamountStringr   ri  s	            r   parse_tradezbtcbox.parse_trade  s     ''v66	!!$//eU++&&ug66''x88v.."Y//X&  " 
  
   	r   sincec                 @  K   |                                   d{V  |                     |          }i }t          | j                  }|dk    r|d         |d<   |                     |                     ||                     d{V }|                     ||||          S )a  
        get the list of most recent trades for a particular symbol

        https://blog.btcbox.jp/en/archives/8762#toc7

        :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=  )r9  r   r  r>  publicGetOrdersr@  parse_trades)	r   r   rr  r   r  r   rB  rC  r2  s	            r   fetch_tradeszbtcbox.fetch_trades  s       !!!!!!!!!V$$&&
>>$X.GFO--dkk'6.J.JKKKKKKKK   65%@@@r   r   ri  r   r   c                   K   |                                   d{V  |                     |          }||||d         d}|                     |                     ||                     d{V }	|                     |	|          S )a  
        create a trade order

        https://blog.btcbox.jp/en/archives/8762#toc18

        :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=  )r9  r   privatePostTradeAddr@  parse_order)
r   r   r   ri  r   r   r  r   rB  r2  s
             r   create_orderzbtcbox.create_order(  s       !!!!!!!!!V$$8$	
 
 11$++gv2N2NOOOOOOOO &111r   r   c                   K   |                                   d{V  |d}|                     |          }||d         d}|                     |                     ||                     d{V }|                     ||          S )az  
        cancels an open order

        https://blog.btcbox.jp/en/archives/8762#toc17

        :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>`
        NBTC/JPYr   r   r=  )r9  r   privatePostTradeCancelr@  ry  r   r   r   r  r   rB  r2  s          r   cancel_orderzbtcbox.cancel_orderG  s       !!!!!!!!!>FV$$8$
 
 44T[[&5Q5QRRRRRRRR &111r   statusc                 @    dddddd}|                      |||          S )NrR  closedcanceled)partall	cancelledr  no)r	  )r   r  statusess      r   parse_order_statuszbtcbox.parse_order_statusa  s9     #
 
 &&999r   rh  c                    |                      |d          }|                      |d          }d }||                     |d         dz             }|                      |d          }|                      |d          }|                      |d          }|                     |                      |d                    }	|	t          j        |d          rd	}	d }
|                     d |          }|                      |d
          }|                     i d|dd d|d|                     |          dd d|d|dd d|d
d dd dd d|	d|d         d|dd dd |
d |d d|          S )Nr   rH  z+09:00amount_originalamount_outstandingr   r  0r  r   clientOrderIdrG  lastTradeTimestampr   	remainingfilledri  r   postOnlyr   r   r   )tradesr  r   rW  )r	  	parse8601r  r   string_equalsrl  
safe_orderrn  )r   rh  r   r   datetimeStringrG  r   r  r   r  r  ri  s               r   ry  zbtcbox.parse_orderl  s    eT**))%<<	%uZ'88'CDDI!!%):;;$$U,@AA	  00(()9)9%)J)JKK>$Y44 "!!!$//v..  
" 
T 
  
 Y//	 

 !$ 
 f 
  
 d 
 D 
 D 
 4 
  
 f 
 fX& 
 U 
  D! 
" D# 
$ + 
  
  
, -  	r   c                 4  K   |                                   d{V  |d}|                     |          }|                     ||d         d|          }|                     |                     ||                     d{V }|                     ||          S )a  
        fetches information on an order made by the user

        https://blog.btcbox.jp/en/archives/8762#toc16

        :param str id: the 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}  )r9  r   r@  privatePostTradeViewry  r  s          r   fetch_orderzbtcbox.fetch_order  s       !!!!!!!!!>FV$$++8$
 
   224;;w3O3OPPPPPPPP &111r   c                 n  K   |                                   d {V  |                     |          }||d         d}|                     |                     ||                     d {V }|                     ||||          }	|dk    r+t          dt          |	                    D ]}
d|	|
         d<   |	S )Nr   )r   r=  rR  r   r  )r9  r   privatePostTradeListr@  parse_ordersr  r  )r   r   r   rr  r   r  r   rB  r2  r   r  s              r   fetch_orders_by_typezbtcbox.fetch_orders_by_type  s      !!!!!!!!!V$$8$
 
 224;;w3O3OPPPPPPPP ""8VUEBB 6>>1c&kk** - -&,q	(##r   c                 D   K   |                      d||||           d{V S )a#  
        fetches information on multiple orders made by the user

        https://blog.btcbox.jp/en/archives/8762#toc15

        :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>`
        r  Nr  r   r   rr  r   r  s        r   fetch_orderszbtcbox.fetch_orders  s6       ..ufeUFSSSSSSSSSr   c                 D   K   |                      d||||           d{V S )a  
        fetch all unfilled currently open orders

        https://blog.btcbox.jp/en/archives/8762#toc15

        :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>`
        rR  Nr  r  s        r   fetch_open_orderszbtcbox.fetch_open_orders  s6       ..vvueVTTTTTTTTTr   c                 *    |                                  S N)milliseconds)r   s    r   noncezbtcbox.nonce  s      """r   r   GETc                    | j         d         d         dz   | j        z   dz   |z   }|dk    r|r|d|                     |          z   z  }n|dk    r| j         d         dz   |z   }n|                                  t	          |                                           }|                     | j        |d|          }	|                     |	          }
|                     | 	                    | j
                  d	          }|                     | 	                    |
          | 	                    |          t          j                  |	d
<   |                     |	          }ddi}||||dS )Nr   r   r   r   ?r   r   )keyr  md5	signaturezContent-Typez!application/x-www-form-urlencoded)urlmethodbodyheaders)r   r   	urlencodecheck_required_credentialsstrr  r@  apiKeyhashencodesecrethmachashlibsha256)r   pathr   r  r  r  r  r  r  queryrB  r  s               r   signzbtcbox.sign  sd   iv&,t|;cADH(?? 4sT^^F3333H__)E"S(4/CC++---

%%EKK{! !  E nnU++GYYt{{4;77??F!%4;;w+?+?VATATV]Vd!e!eE+>>%((D CG fdwOOOr   httpCodereasonr  r  r  r  c
                     |d S |dk    rd S |                      |d          }
|
|
du rd S |                      |d          }| j        dz   |z   }|                     | j        ||           t	          |          )Ni  r3  Tr5   )
safe_valuer   throw_exactly_matched_exceptionr   r   )r   r  r  r  r  r  r  r2  requestHeadersrequestBodyr3  r5  feedbacks                r   handle_errorszbtcbox.handle_errors  s    4s??4844>Vt^^4x007S=4',,T_dHMMMH%%%r   c           	      &  K   |                      |||||||           d {V }t          |t                    rX|                     |          }|                     |          st          | j        dz   |z             t          j        |          }|S )Nr  )	fetch2
isinstancer  stripis_json_encoded_objectr   r   jsonloads)	r   r  r   r  r  r  r  configr2  s	            r   rB  zbtcbox.request&  s      T3vVVVVVVVVh$$ 	,zz(++H..x88 >#DGcMH$<===z(++Hr   r  ).__name__
__module____qualname__r   r   r   r   r  dictr(  r   r7  r;  r  r   r   rD  r   r^  ra  r   r   rd  r   rq  rv  r   r   floatr	   rz  r   r  r  r
   ry  r  r  r  r  r  r  intr  rB  __classcell__)r   s   @r   r   r      s       W# W W W W W Wr *, M MV M M M M^7
4 7
F 7
 7
 7
 7
r) ) ) ) )  *, , , , , , , @DB A AS A AS\ A A A A( 4  6    4 68 3 3 3F 3 3 3 3& 6:" 	5 	57 	5 	5 	5 	5 	5! ! !v ! ! ! ! !F <@d[] A A AS A Abfglbm A A A A@ mqy{ 2 2 2I 2Y 2X] 2fi 2 2 2 2> 9=R 2 2S 2# 2 2 2 24	: 	: 	: 	: 	:4 4 4v 4 4 4 4 4l 8<B !2 !2C !2 !2 !2 !2 !2F >BPTcgpr  s # ]`    : 04$UYbd T T TC Ts Timnsit T T T T 59tZ^gi U Uc U UTW Unrsxny U U U U# # # &eBSW P P P P.&c &3 &S &# &X\ &dg & & & & '/uRQU\`ik        r   r   )& ccxt.async_support.base.exchanger   ccxt.abstract.btcboxr   r  r  r  ccxt.base.typesr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   typingr   ccxt.base.errorsr   r   r   r   r   r   r   r   ccxt.base.decimal_to_precisionr   ccxt.base.preciser   r    r   r   <module>r     s   6 5 5 5 5 5 , , , , , ,    J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J       * * * * * * 0 0 0 0 0 0 - - - - - - . . . . . . ) ) ) ) ) ) * * * * * * + + + + + + ) ) ) ) ) ) 4 4 4 4 4 4 % % % % % %U U U U UX{ U U U U Ur   