
    i                         d dl mZ d dlm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 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)BalancesIntMarketNumOrder	OrderBook	OrderSide	OrderTypeStrStringsTickerTickersTrade)List)ExchangeError)
BadRequest)InsufficientFunds)InvalidOrder)	TICK_SIZE)Precisec                   0    e Zd Z fdZi fdee         fdZ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d)dedefdZdi fdedefdZi fdedefdZd)dedefdZddi fdeded	edee         fdZd)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ed	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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ede#fd"Z'dddi fde!ded	efd#Z(d$ Z)d%d&i ddfd'Z*d( Z+ xZ,S )+btcturkc                    |                      t          t          |                                           dddg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d/dd0dd1dd2dd3dd4dd5dd6dd7dd8dd9dd:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKd:dLd:d:d:dMid:d:d:d:dNd:d:d:d:dOdPd:idQdKd:d:dRidGdS|                     dT          |                     dU          dVidWt
          t          t          dXit          dY          S )ZNr   BTCTurkTRd   FCORSTspotmarginswapfutureoption	addMargincancelOrdercloseAllPositionsclosePositioncreateDepositAddresscreateOrdercreateReduceOnlyOrderfetchBalancefetchBorrowRateHistoriesfetchBorrowRateHistoryfetchCrossBorrowRatefetchCrossBorrowRatesfetchDepositAddressfetchDepositAddressesfetchDepositAddressesByNetworkfetchFundingHistoryfetchFundingRatefetchFundingRateHistoryfetchFundingRatesfetchIndexOHLCVfetchIsolatedBorrowRatefetchIsolatedBorrowRatesfetchLeveragefetchMarginModefetchMarketsfetchMarkOHLCVfetchMyTrades
fetchOHLCVfetchOpenInterestHistoryfetchOpenOrdersfetchOrderBookfetchOrdersfetchPositionfetchPositionModefetchPositionsfetchPositionsRiskfetchPremiumIndexOHLCVfetchTickerfetchTickersfetchTradesreduceMarginsetLeveragesetMarginModesetPositionModews         <      z1 dz1 wz1 y)1m15m30m1h4h1d1w1yzdhttps://user-images.githubusercontent.com/51840849/87153926-efbef500-c2c0-11ea-9842-05b63612c4b9.jpgzhttps://api.btcturk.com/api/v2zhttps://api.btcturk.com/api/v1z https://graph-api.btcturk.com/v1)publicprivategraphzhttps://www.btcturk.comz,https://github.com/BTCTrader/broker-api-docs)logoapiwwwdocgetg?)	orderbooktickertradesohlczserver/exchangeinfo)zusers/balances
openOrders	allOrderszusers/transactions/trade)zusers/transactions/cryptozusers/transactions/fiatorderr&   rm   )rf   postdelete)ohlcszklines/historytradingz0.0005z0.0009)makertakerexact)FAILED_ORDER_WITH_OPEN_ORDERSFAILED_LIMIT_ORDERFAILED_MARKET_ORDER)idname	countries	rateLimitprohas
timeframesurlsrc   fees
exceptionsprecisionMode)deep_extendsuperr   describeparse_numberr   r   r   )self	__class__s    R/var/www/html/crypto-bot/backend/venv/lib/python3.11/site-packages/ccxt/btcturk.pyr   zbtcturk.describe   s-   gt 4 4 = = ? ?444 %4 	4
 %4 %4 U4 t4 $U4  4 '4 t4 (4 4 +E4  )%!4" '#4 4$ (%4& &u'4( ()4* 1%+4, &u-4. #E/40 *5142 $U344 "5546 *5748 +E94:  ;4< "5=4> ?4@ !%A4B  C4D dE4 4 4F +EG4H "4I4J !$K4L tM4N  O4P $UQ4R !%S4T %eU4V )%W4X tY4Z [4\ t]4^ _4` ua4b  c4d "5e4f eg4 4l 	 	 >?? 
 1E	 	 %&"%"# !/0  +,&'%&45	  6734!"'(	    $ !"*+ 7! !F !..x88!..x88  5F*6+7  '}B
 B
   	    returnc                     |                      |          }|                     |d          }|                     |dg           }|                     |          S )a  
        retrieves data on all markets for btcturk
        :see: https://docs.btcturk.com/public-endpoints/exchange-info
        :param dict [params]: extra parameters specific to the exchange API endpoint
        :returns dict[]: an array of objects representing market data
        datasymbols)publicGetServerExchangeinfo
safe_valueparse_markets)r   paramsresponser   marketss        r   fetch_marketszbtcturk.fetch_markets   sV     33F;;X x00//$	266!!'***r   c                 T   |                      |d          }|                      |d          }|                      |d          }|                     |          }|                     |          }|                     |dg           }d }d }	d }
d }d }t          dt	          |                    D ]}||         }|                      |d          }|dk    rn|                     |d          }|                     |d	          }	|                     |d
          }
|                     |d          }|                     |d          }|                      |d          }i d|d|dz   |z   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d"d d d d d d d |                     |                     |                      |d#                              |                     |                     |                      |d$                              d%d d d&|
|d&||	d&|d d&d'd |d(
S ))Nry   	numeratordenominatorfiltersr   
filterTypePRICE_FILTERminPricemaxPrice	minAmount	maxAmountminExchangeValuestatusrx   symbol/basequotesettlebaseIdquoteIdsettleIdtyper    Tr!   Fr"   r#   r$   activeTRADINGcontractlinearnumeratorScaledenominatorScale)amountprice)minmax)leverager   r   cost)
inversecontractSizeexpiryexpiryDatetimestrike
optionType	precisionlimitscreatedinfo)safe_stringsafe_currency_coder   rangelensafe_numberr   parse_precision)r   entryrx   r   r   r   r   r   r   r   r   r   minCostjfilterr   r   s                    r   parse_marketzbtcturk.parse_market   s)   eV,,!!%55""5-88&&v..''00//%B77		q#g,,'' 	G 	GAQZF))&,??J^++++FJ??++FJ?? ,,V[AA	 ,,V[AA	**63EFF!!%220
"0
dSj5(0
 D0
 U	0

 d0
 f0
 w0
 0
 F0
 D0
 e0
 E0
 e0
 e0
 v*0
  !0
" d#0
$  "++D,@,@AQAQRWYiAjAj,k,kll**4+?+?@P@PQVXj@k@k+l+lmm    
 %$ 
 $# 
 #  $ _0
 0
 0
 0	
r   c                    |                      |dg           }|d d d}t          dt          |                    D ]}||         }|                     |d          }|                     |          }|                                 }|                     |d          |d<   |                     |d          |d<   |                     |d          |d	<   |||<   |                     |          S )
Nr   )r   	timestampdatetimer   assetbalancetotalfreelockedused)r   r   r   r   r   accountsafe_balance)	r   r   r   resultir   
currencyIdcoder   s	            r   parse_balancezbtcturk.parse_balance  s    x44
 

 q#d))$$ 	# 	#AGE))%99J**:66DllnnG#//yAAGG"..uf==GFO"..uh??GFO"F4LL  (((r   c                 ~    |                                   |                     |          }|                     |          S )aj  
        query for balance and get the amount of funds available for trading or funds locked in orders
        :see: https://docs.btcturk.com/private-endpoints/account-balance
        :param dict [params]: extra parameters specific to the exchange API endpoint
        :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
        )load_marketsprivateGetUsersBalancesr   )r   r   r   s      r   fetch_balancezbtcturk.fetch_balance)  s?     	//77" !!(+++r   Nr   limitc           	      T   |                                   |                     |          }d|d         i}|                     |                     ||                    }|                     |d          }|                     |d          }|                     ||d         |dddd	          S )
a5  
        fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
        :see: https://docs.btcturk.com/public-endpoints/orderbook
        :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
        
pairSymbolrx   r   r   r   bidsasksr   rR   )r   marketpublicGetOrderbookextendr   safe_integerparse_order_book)	r   r   r   r   r   requestr   r   r   s	            r   fetch_order_bookzbtcturk.fetch_order_bookD  s     	V$$&,
 **4;;w+G+GHH x00%%dK88	$$T6(+;YPVXY[\]]]r   r   c                    |                      |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|          S )Npairr   r   lastr   highlowbid	bidVolumeask	askVolumevwapopenclosepreviousClosechangedaily
percentagedailyPercentaveragevolume)
baseVolumequoteVolumer   )r   safe_marketr   safe_tickeriso8601)r   rh   r   marketIdr   r   r   s          r   parse_tickerzbtcturk.parse_tickerb  s   * ##FF33!!(F33!%%fk::	// !
f!
!
 Y//!
 D$$VV44	!

 4##FE22!
 4##FE22!
 !
 4##FE22!
 !
 D!
 D$$VV44!
 T!
 D!
 T!
 d&&vw77!
  $**6>BB!!
" t''	::#!
$ **68<<)!
 !
 !
* +  	r   r   c                     |                                   |                     |          }|                     |d          }|                     ||          S )a  
        fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
        :see: https://docs.btcturk.com/public-endpoints/ticker
        :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>`
        r   )r   publicGetTicker	safe_listparse_tickers)r   r   r   r   tickerss        r   fetch_tickerszbtcturk.fetch_tickers  sR     	''//..622!!'7333r   c                     |                                   |                     |g|          }|                     ||          S )a  
        fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
        :see: https://docs.btcturk.com/public-endpoints/ticker
        :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>`
        )r   r  r   )r   r   r   r
  s       r   fetch_tickerzbtcturk.fetch_ticker  sA     	$$fXv66w///r   c                    |                      |dd          }|                     |dd          }|                     |d          }|                     |d          }t          j        |                     |d                    }|                     |d          }|                     ||          }	|                     |d	d
          }
d }|                     |d          }|@|                     |d          }t          j        |          |                     |          d}|                     |||||                     |          |	d |
d ||d |d|          S )Ndater   tidrx   orderIdr   r   r   side	orderTypefeedenominatorSymbol)r   currency)r   rx   rm   r   r   r   r   r  takerOrMakerr   r   r   r  )	safe_integer_2safe_string_2r   r   
string_abssafe_symbolr   
safe_trader  )r   trader   r   rx   rm   priceStringamountStringr  r   r  r  feeAmountStringfeeCurrencys                 r   parse_tradezbtcturk.parse_trade  sx   : ''v{CC	ud33  	22&&ug66)$*:*:5(*K*KLL##E622!!(F33!!%==**5%88&**52EFFK*?;; 33K@@ C "Y//  " 
  
   	r   sincec                 $   |                                   |                     |          }d|d         i}|||d<   |                     |                     ||                    }|                     |d          }|                     ||||          S )a  
        get the list of most recent trades for a particular symbol
        :see: https://docs.btcturk.com/public-endpoints/trades
        :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>`
        r   rx   Nr   r   )r   r   publicGetTradesr   r  parse_trades	r   r   r#  r   r   r   r   r   r   s	            r   fetch_tradeszbtcturk.fetch_trades  s     	V$$ &,
 #GFO''GV(D(DEE$ ~~h//  vue<<<r   c           	         |                      |d          |                     |d          |                     |d          |                     |d          |                     |d          |                     |d          gS )Nr   r   r   r   r   r   )safe_timestampr   )r   ohlcvr   s      r   parse_ohlcvzbtcturk.parse_ohlcv  s     {33UF++UF++UE**UG,,UH--
 	
r   rZ   c                 *   |                                   |                     |          }|d         |                     | j        ||          d}|                     |d|                                           }|                     |dz            |d<   ||                     |dz            |d<   n|d}|t          |d	          }|d
k    rt          | j	        dz             | 
                    |          }	|	|dz
  z  }
|5|                     |dz            |
z   }t          |d         |          |d<   n|                     d          |
z
  |d<   |                     |                     ||                    }|                     |||||          S )a  
        fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
        :see: https://docs.btcturk.com/public-endpoints/get-kline-data
        :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
        :param int [params.until]: timestamp in ms of the latest candle to fetch
        :returns int[][]: A list of candles ordered, open, high, low, close, volume
        rx   )r   
resolutionuntil  toNfromr   i*  r^   zF fetchOHLCV() does not accept a limit parameter when timeframe == "1y"rR   g        )r   r   r   r~   r   millisecondsparse_to_intr   r   rx   parse_timeframegraphGetKlinesHistoryr   parse_ohlcvs)r   r   	timeframer#  r   r   r   r   r/  secondslimitSecondsr1  r   s                r   fetch_ohlcvzbtcturk.fetch_ohlcv$  s    	V$$Tl//$/9iPP
 
 !!&'43D3D3F3FGG))54<99"//==GFOO]Eu%%ED   +s!sttt**955G"eai0L &&ut|44|C #GDM2 6 6"&"3"3H"="="L--dkk'6.J.JKKH   69eUKKKr   rW   c           
         g }|                      |d          }|                      |d          }|                      |d          }	|                      |d          }
|                      |d          }|                      |d          }t          dt          |                    D ]}|                      ||          |                      ||          |                      |	|          |                      |
|          |                      ||          |                      ||          d}|                    |                     ||                     |                     |d          }|                     |||d          S )	Ntholcvr   )r   r   r   r   r   r   )r   r   r   appendr,  sort_byfilter_by_since_limit)r   ohlcvsr   r8  r#  r   resultsr   r   r   r   r   r   r   r+  sorteds                   r   r7  zbtcturk.parse_ohlcvsm  s^   OOFC00	vs++vs++oofc**,,--q#i..)) 		< 		<A!__Y::a00a00sA..22//&!44 E NN4++E6::;;;;gq))))&%BBBr   r   r  r   r   c                    |                                   |                     |          }|||d         |                     ||          d}|dk    r|                     ||          |d<   d|v r|d         |d<   nd|vr|                                 |d<   |                     |                     ||                    }	|                     |	d          }
|                     |
|          S )a  
        create a trade order
        :see: https://docs.btcturk.com/private-endpoints/submit-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 fullfilled, 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>`
        rx   )r  orderMethodr   quantityr   r   clientOrderIdnewClientOrderIdr   )	r   r   amount_to_precisionprice_to_precisionuuidprivatePostOrderr   	safe_dictparse_order)r   r   r   r  r   r   r   r   r   r   r   s              r   create_orderzbtcturk.create_order  s     	V$$ ,00@@	
 
 8#66vuEEGGf$$*0*AG&''$..*.))++G&'((Wf)E)EFF~~h//f---r   rx   c                 \    d|i}|                      |                     ||                    S )ay  
        cancels an open order
        :see: https://docs.btcturk.com/private-endpoints/cancel-order
        :param str id: order id
        :param str symbol: not used by btcturk cancelOrder()
        :param dict [params]: extra parameters specific to the exchange API endpoint
        :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
        rx   )privateDeleteOrderr   )r   rx   r   r   r   s        r   cancel_orderzbtcturk.cancel_order  s4     "
 &&t{{7F'C'CDDDr   c                    |                                   i }d}| |                     |          }|d         |d<   |                     |                     ||                    }|                     |d          }|                     |dg           }	|                     |dg           }
|                     |                     |	|
          |||          S )a  
        fetch all unfilled currently open orders
        :see: https://docs.btcturk.com/private-endpoints/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>`
        Nrx   r   r   r   r   )r   r   privateGetOpenOrdersr   r   r  parse_ordersarray_concat)r   r   r#  r   r   r   r   r   r   r   r   s              r   fetch_open_orderszbtcturk.fetch_open_orders  s     	[[((F$*4LGL!,,T[[&-I-IJJx00tVR00~~dFB//  !2!24!>!>uUUUr   c                 v   |                                   |                     |          }d|d         i}|||d<   |'t          t          j        |dz                      |d<   |                     |                     ||                    }|                     |d          }|                     ||||          S )a1  
        fetches information on multiple orders made by the user
        :see: https://docs.btcturk.com/private-endpoints/all-orders
        :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   rx   Nr   r0  	startTimer   )	r   r   intmathfloorprivateGetAllOrdersr   r  rZ  r'  s	            r   fetch_orderszbtcturk.fetch_orders  s     	V$$&,
 #GFO#&tz%$,'?'?#@#@GK ++DKK,H,HII* ~~h//  vue<<<r   c                 >    ddddd}|                      |||          S )Nr   canceledclosed)	UntouchedPartialCanceledClosed)r   )r   r   statusess      r   parse_order_statuszbtcturk.parse_order_status  s4    "	
 
 &&999r   c                    |                      |d          }|                      |d          }|                     |dd          }t          j        |          }|                      |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 |          S )Nrx   r   r   rK  
leftAmountr   r   methodorderClientId
updateTimer   r   r   	remainingfilledr   r   r  rL  r   r   r  )	r   r  r   r  r  r  rl  
safe_orderr  )r   rm   r   rx   r   r  r   rr  r  r   r  r   rL  r   	rawStatusr   s                   r   rS  zbtcturk.parse_order  s   D eT**  00))%:FF#L11$$UL99	##E<88!!(F33v..x00((@@''|ZHH	$$UH55	((33  
E 
" 
 U 
 f	 

  
 d 
 D 
 t 
 f 
 D 
 D 
 ] 
  
 Y// 
 f 
  4! 
" #  	r   c                     |                                   d}||                     |          }|                                 }|                     |d          }|                     ||||          S )a  
        fetch all trades made by the user
        :see: https://docs.btcturk.com/private-endpoints/user-transactions
        :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   r    privateGetUsersTransactionsTrader  r&  )r   r   r#  r   r   r   r   r   s           r   fetch_my_tradeszbtcturk.fetch_my_trades;  sr     	[[((F88::, ~~h//  vue<<<r   c                 *    |                                  S N)r3  )r   s    r   noncezbtcturk.nonceb  s      """r   r_   GETc                 @   | j         dk    rt          | j         dz             | j        d         |         dz   |z   }|dk    s|dk    r|r|d|                     |          z   z  }n|                     |          }|dk    r|                                  t          |                                           }|                     | j	                  }	| j
        |z   }
| j
        ||                     |                     |
          |	t          j        d	          d
d}||||dS )N	btctraderz1 is an abstract base API for BTCExchange, BTCTurkrc   r   r|  DELETE?r`   base64zapplication/json)zX-PCKzX-StampzX-SignaturezContent-Type)urlro  bodyheaders)rx   r   r   	urlencodejsoncheck_required_credentialsstrr{  base64_to_binarysecretapiKeyhmacencodehashlibsha256)r   pathrc   ro  r   r  r  r  r{  r  auths              r   signzbtcturk.signe  s*   7k!!*] ]^^^is#c)D0eOO8!3!3 4sT^^F333399V$$D)++---

%%E**4;77F;&D #yyT):):FGNT\]] 2	 G fdwOOOr   c
                    |                      |dd          }
|                      |d          }||n|}|                     | j        d         || j        dz   |z              |
dk    r |
dk    rt	          | j        dz   |z             d S )Nr   0messagert    SUCCESS)r   throw_exactly_matched_exceptionr   rx   r   )r   r   reasonr  ro  r  r  r   requestHeadersrequestBody	errorCoder  outputs                r   handle_errorszbtcturk.handle_errors{  s    $$Xvs;;	""8Y77!/,,T_W-EwPTPWZ]P]`fPfggg9	#9#9# 6777tr   rz  )NrW   NN)-__name__
__module____qualname__r   r   r   r   r   r   r   r   r  r   r
   r   r   r  r   r   r  r  r   r"  r(  listr,  r;  r7  r   r   floatr   rT  r   rW  r	   r\  rc  rl  rS  rx  r{  r  r  __classcell__)r   s   @r   r   r      s       @ @ @ @ @D $& 5+ 5+$v, 5+ 5+ 5+ 5+nF
V F
 F
 F
 F
P) ) ) ) )$ $& , ,( , , , ,6 :>b ^ ^s ^3 ^Y ^ ^ ^ ^</ /6 /V / / / /b 04B 4 4W 47 4 4 4 4 02 
0 
03 
0f 
0 
0 
0 
0; ; ;5 ; ; ; ;z 6:UW %= %=3 %=s %=# %=\`af\g %= %= %= %=N
 
 
4 
 
 
 
( 26DW[df GL GL# GLc GLQT GLkoptku GL GL GL GLRC Cs CZ] C C C C* gksu . .3 .i .y .RW .`c . . . .< 37r E Es EC E E E E /3TXac V V V3 Vc Vhlmrhs V V V V, *.Dt\^ *= *=3 *=c *= *=cghmcn *= *= *= *=X: : :@ @ @5 @ @ @ @D -1tRV_a %= %=c %= %=C %= %= %= %=N# # # &eBSW P P P P,      r   r   ) ccxt.base.exchanger   ccxt.abstract.btcturkr   r  r`  ccxt.base.typesr   r   r   r   r	   r
   r   r   r   r   r   r   r   typingr   ccxt.base.errorsr   r   r   r   ccxt.base.decimal_to_precisionr   ccxt.base.preciser   r    r   r   <module>r     s   ( ' ' ' ' ' - - - - - -   E  E  E  E  E  E  E  E  E  E  E  E  E  E  E  E  E  E  E  E  E  E  E  E  E  E  E  E  E  E       * * * * * * ' ' ' ' ' ' . . . . . . ) ) ) ) ) ) 4 4 4 4 4 4 % % % % % %n n n n nh n n n n nr   