
    E#iQ                     (   S SK Jr  S SKJr  S SKrS SKJrJrJrJ	r	J
r
JrJrJrJrJrJrJrJrJrJrJrJrJr  S SKJr  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJr  S SKJ r   S SKJ!r!  S SKJ"r"  S SKJ#r#  S SKJ$r$  S SK%J&r&  S SK'J(r(   " S S\\5      r)g)    )Exchange)ImplicitAPIN)AnyBalancesDepositAddressIntMarketNumOrder	OrderBook	OrderSide	OrderTypeStrStringsTickerTickers
OrderBooksTradeTradingFeesTransaction)List)ExchangeError)AuthenticationError)ArgumentsRequired)InsufficientFunds)InvalidOrder)OrderNotFound)DDoSProtection)RateLimitExceeded)ExchangeNotAvailable)InvalidNonce)	TICK_SIZE)Precisec                     ^  \ rS rSrS\4U 4S jjrS\4S jr0 4S\4S jjr0 4S\	\
   4S jjrS0 4S\S	\S\4S
 jjrSS0 4S\S	\S\4S jjrS8S\S\
S\4S jjr0 4S\S\4S jjrS0 4S\S\4S jjr0 4S\S\4S jjrS8S\S\
S\4S jjrSS0 4S\S\S	\S\	\   4S jjr0 4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 \$4S! jr&S8S"\S\
S\'4S# jjr(S0 4S\S\$4S$ jjr)SSS0 4S\$S\S	\S\	\'   4S% jjr*SSS0 4S\$S\S	\4S& jjr+0 4S'\S\,4S( jjr-0 4S'\S\,4S) jjr.S0 4S'\S\!S*\S+\$S\/4
S, jjr0S-S.0 SS4S/ jr1S0\2S1\S2\S3\S4\S5\4S6 jr3S7r4U =r5$ )9yobit   returnc                   > U R                  [        [        U ]  5       0 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_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_S0S_E0 S1S_S2S_S3S_S4S_S5S_S6S_S7S_S8S_S9S_S:S_S;S_S<S_S=S_S>S_S?S_S@S_SAS_E0 SBS_SCS_SDS_SES_SFS_SGS_SHS_SIS_SJS_SKS_SLS_SMS_SNS_SOS_SPS_SQS_SRS_E0 SSS_STS_SUS_SVS_SWS_SXS_SYS_SZS_S[S_S\S_S]S_S^S_S_S_S`S_SaS_SbS_ScS_E0 SdS_SeS_SfS_SgS_ShS_SiS_SjS_SkS_SlS_SmS_SnS_SoS_SpS_SqS_SrS_SsS_StS_ESuS0E_SvSwSxSySz.S{S|S}S~._SSSSSSS.0SSSSSSSSSS.0Sz._SSSS.St0 0S._S0 SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_0 SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_E0 SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_E0 SS_SS_SS_SS_SS_SS_SS_SS_SS_GS GS_GSGS_GSGS_GSGS_GSGS	_GS
GS_GSGS_GSGS_E0 GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GS GS!_GS"GS#_GS$GS%_GS&GS'_GS(GS)_GS*GS+_GS,GS-_GS.GS/_E0 GS0GS1_GS2GS3_GS4GS5_GS6GS7_GS8GS9_GS:GS;_GS<GS=_GS>GS?_GS@GSA_GSBGSC_GSDGSE_GSFGSG_GSHGSI_GSJGSK_GSLGSM_GSNGSO_GSPGSQ_EGSRGSSGSTGSUGSVGSW.E_GSXGSYSGSZGS[GS\GS].GS^._GS_[        _GS`[
        [
        [
        [
        [
        [        [        [        GSa.0 GSb[        _GSc[        _GSd[        _GSe[        _GSf[
        _GSg[
        _GSh[
        _GSi[        _GSj[        _GSk[        _GSl[        _GSm[
        _GSn[
        _GSo[        _GSp[        _GSq[        _GSr[
        _GSs[        0EGSt._GSuSSSSS SSS SSSSGSv.SSSSSSSGSw.S SGSxGSyGSySGSz.SSSSGS{.SS SSSGS|.S S S GS}.	S S GS~.S S GS~.GS._GS0 _5      $ (  Nidr%   nameYoBit	countriesRU	rateLimiti  version3proFhasCORSspotTmarginswapfutureoption	addMarginborrowCrossMarginborrowIsolatedMarginborrowMargincancelOrdercloseAllPositionsclosePositioncreateDepositAddresscreateMarketOrdercreateOrdercreateReduceOnlyOrdercreateStopLimitOrdercreateStopMarketOrdercreateStopOrderfetchAllGreeksfetchBalancefetchBorrowInterestfetchBorrowRatefetchBorrowRateHistoriesfetchBorrowRateHistoryfetchBorrowRatesfetchBorrowRatesPerSymbolfetchCrossBorrowRatefetchCrossBorrowRatesfetchCurrenciesfetchDepositAddressfetchDepositAddressesfetchDepositAddressesByNetworkfetchDepositsfetchFundingHistoryfetchFundingIntervalfetchFundingIntervalsfetchFundingRatefetchFundingRateHistoryfetchFundingRatesfetchGreeksfetchIndexOHLCVfetchIsolatedBorrowRatefetchIsolatedBorrowRatesfetchIsolatedPositionsfetchLeveragefetchLeveragesfetchLeverageTiersfetchLiquidationsfetchLongShortRatiofetchLongShortRatioHistoryfetchMarginAdjustmentHistoryfetchMarginModefetchMarginModesfetchMarketLeverageTiersfetchMarketsfetchMarkOHLCVfetchMarkPricefetchMarkPricesfetchMyLiquidationsfetchMySettlementHistoryfetchMyTradesfetchOpenInterestfetchOpenInterestHistoryfetchOpenInterestsfetchOpenOrdersfetchOptionfetchOptionChain
fetchOrderfetchOrderBookfetchOrderBooksfetchPositionfetchPositionHistoryfetchPositionModefetchPositionsfetchPositionsForSymbolfetchPositionsHistoryfetchPositionsRiskfetchPremiumIndexOHLCVfetchSettlementHistoryfetchTickerfetchTickersfetchTradesfetchTradingFeefetchTradingFeesfetchTransactionsfetchTransferfetchTransfersfetchUnderlyingAssetsfetchVolatilityHistoryfetchWithdrawalsreduceMarginrepayCrossMarginrepayIsolatedMarginrepayMarginsetLeverage	setMarginsetMarginModesetPositionModetransferwithdrawwsurlszchttps://user-images.githubusercontent.com/1294454/27766910-cdcbfdae-5eea-11e7-9859-03fea873272d.jpgzhttps://yobit.net/apizhttps://yobit.net/tapi)publicprivatezhttps://www.yobit.netzhttps://www.yobit.net/en/api/zhttps://www.yobit.net/en/fees/)logoapiwwwdocfeesr   get   )zdepth/{pair}infozticker/{pair}ztrades/{pair}post)ActiveOrdersCancelOrderGetDepositAddressgetInfo	OrderInfor   TradeHistoryWithdrawCoinsToAddressr   gMb`?)makertaker)tradingfundingcommonCurrenciesAIRAirCoinANIANICoinANTAntsCoinATMCHAATMASN	AscensionASTAstral
AutumncoinAUR
AuroraCoinBABBabelBANBANcoinBCCBCHBCSBitcoinStakeBITSBitstarBLNBulleonBNSzBenefit Bonus CoinBOTBOTcoinBONBONESBPCBitcoinPremiumBSTBitStoneBTS
Bitshares2CATBitClaveCBCCryptoBossCoinCMT	CometCoinCOINzCoin.comCOVz
Coven CoinCOVXCPC	CapricoinCREDIT	CreditbitCSCryptoSpotsDCTDiscountDFT	DraftCoinDGDDarkGoldCoinDIRTDIRTYDROP
FaucetCoinDSHDASHEGCEverGreenCoinEGGEggCoinEKOEkoCoinENTERENTRCEPCExperienceCoinESCEdwardSnowdenEUROPEEUROPEXTLifeExtensionFUND
FUNDChainsFUNKFUNKCoinFXFCoinGCCGlobalCryptocurrencyGENGenstakeGENEGenesiscoinGMRGimmerGOLDGoldMintGOTzGiotto CoinGSX
GlowSharesGTGTcoinHTML5HTMLHYPERXHYPERICNiCoinINSANEINSNJNT	JointCoinJPCJupiterCoinJWLJewelsKNCz
KingN CoinLBTCXLiteBitcoinLIZILiZiLOCLocoCoinLOCXLUNYRLUN	LunarCoinLUNAz	Luna CoinMASKz
Yobit MASKMDTMidnightMEMEzMemez TokenMISMIScoinMM
MasterMintNAV
NavajoCoinNBT	NiceBytesOMGOMGameONXOnixPACz$PACPLAYPlayCoinPIVXDarknetPUREPurePOSPUTIN	PutinCoinSPACE	SpacecoinSTK	StakeCoinSUBSubscriptioPAYEPAYPLCzPlatin CoinRAI
RaiderCoinRCNRCoinREPRepublicoinRURRUBSBTCzSuper BitcoinSMC	SmartCoinSOLOSoloCoinSOULSoulCoinSTARStarCoinSUPER	SuperCoinTNSTranscodiumTTC
TittieCoinUNIUniverseUSTUservice
VolumeCoinXINCoin
SummitCoinRatecoinBSV)VOLXINXMTXRABCHNoptions   ERC20TRC20BEP20)ETHTRXBSC)maxUrlLengthfetchOrdersRequiresSymbolnetworksprecisionMode
exceptions)803804805806807831832833zInvalid pair namezinvalid api keyzinvalid signz"api key dont have trade permissionzinvalid parameterzinvalid orderz*The given order has already been cancelledzRequests too oftenznot availablezdata unavailablezexternal service unavailablezTotal transaction amountz?The given order has already been closed and cannot be cancelledzInsufficient fundszinvalid keyzinvalid noncez.Total order amount is less than minimal amountzRate Limited)exactbroadfeatures)IOCFOKPOGTD)
marginModetriggerPricetriggerDirectiontriggerPriceTypestopLossPricetakeProfitPriceattachedStopLossTakeProfittimeInForcehedgedtrailingleveragemarketBuyByCostmarketBuyRequiresPriceselfTradePreventioniceberg  i )r  limitdaysBack	untilDayssymbolRequired)r  triggerr  r  )r  r  r  r  r  )	sandboxrB   createOrdersrq   rx   ru   fetchOrdersfetchClosedOrders
fetchOHLCV)linearinverse)r4   r6   r7   orders)deep_extendsuperr%   describer"   r   r   r   r   r   r   r    r!   r   )self	__class__s    D/home/james-whalen/.local/lib/python3.13/site-packages/ccxt/yobit.pyr  yobit.describe   s   eT ; = l@
'l@
Gl@
 $l@
 	l@

 sl@
 5l@
  hhh %h 	h
 %h %h Uh $Uh 'h h th $Uh  h 'h $Uh  t!h" (#h$ '%h& ('h( "5)h* !%+h, -h. &u/h0 "51h2 +E3h4 )%5h6 #E7h8 ,U9h: ';h< (=h> "5?h@ &tAhB (ChD 1%EhF  GhH &uIhJ 'KhL (MhN #EOhP *5QhR $UShT uUhV "5WhX *5YhZ +E[h\ )%]h^  _h` !%ahb %echd $Uehf &ughh -eihj /khl "5mhn #Eohp +Eqhr sht !%uhv !%whx "5yhz &u{h| +E}h~  h@ $UAhB +EChD %eEhF "4GhH uIhJ #EKhL dMhN !$OhP "4QhR  ShT 'UhV $UWhX !%YhZ *5[h\ (]h^ %e_h` )%ahb )%chd tehf ghh tihj "5khl #Dmhn $Uohp  qhr !%sht (uhv )%whx #Eyhz {h| #E}h~ &uh@ uAhB uChD UEhF  GhH "5IhJ EKhL DMhN eOhl@
` }57 /68	al@
t () !)*)*	 ()'(-.#$%&!"()23	ul@
` ""
 al@
r  l!yl!yl! zl! %	l!
 {l! xl! |l! |l! wl! yl! ul! ~l! 	l! yl! +l!  y!l!" w#l!$ '%l!& z'l!( |)l!* z+l!, '-l!. {/l!0 
1l!2 |3l!4 5l!6 {7l!8 +9l!: m;l!< z=l!> {?l!@ ~Al!B Cl!D El!F vGl!H Il!J yKl!L yMl!N Ol!P 'Ql!R Sl!T 'Ul!V Wl!X Yl!Z 
[l!\ g]l!^ -_l!` zal!b cl!d xel!f 
gl!h }il!j |kl!l hml!n ol!p 'ql!r wsl!t &ul!v {wl!x }yl!z x{l!| |}l!~ l!@ Al!B zCl!D El!F Gl!H {Il!J Kl!L Ml!N zOl!P Ql!R ySl!T lUl!V |Wl!X {Yl!Z x[l!\ v]l!^ v_l!` 
al!b 	cl!d 	el!f gl!h il!j {kl!l }ml!n vol!p }ql!r |sl!t wul!v }wl!x uyl!z {l!| {}l!~ 
l!@ 
Al!B 
Cl!D El!F }Gl!H |Il!J zKl!L zMl!N $ #!Wl!sl@
L  $-1"""Ml@
^ Y_l@
` ''''',,(	'%': #$7 9:M	
 ( $\ A, ). $%9 '(< 34H / VWc )*; "#6  $\!" El#$ #$5%al@
`	 $&+(-,1,0).+06:#(#("'#(	( #($)$)+027/4#()$, %)&+!%$*%+*.& ',#($)*/	# ',!%#($)*.( $()-"&_0d ##
 ##m:a	l@
V bWl@
 l l	    c                    U R                  US0 5      nU R                  US5      nUUU R                  U5      S.nU R                  US0 5      nU R                  US0 5      n[        U R	                  XV5      R                  5       5      n[        S[        U5      5       HT  nXx   n	U R                  U	5      n
U R                  5       nU R                  XY5      US'   U R                  Xi5      US'   XU
'   MV     U R                  U5      $ )	Nr'   server_time)r   	timestampdatetimefundsfunds_incl_ordersr   freetotal)	safe_dictsafe_integeriso8601listextendkeysrangelensafe_currency_codeaccountsafe_stringsafe_balance)r  responsebalancesr  resultr  r  currencyIdsi
currencyIdcoder  s               r  parse_balanceyobit.parse_balance  s    >>(Hb9%%h>	"Y/

 ~~h4x)<bA4;;t388:;q#k*+A$J**:6DllnG"..t@GFO#//BGG"4L ,   ((r  c                 f    U R                  5         U R                  U5      nU R                  U5      $ )a  

https://yobit.net/en/api

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>`
)load_marketsprivatePostGetInfor  )r  paramsr  s      r  fetch_balanceyobit.fetch_balance  s3     	**624 !!(++r  c                 d   U R                  U5      nU R                  US0 5      n[        UR                  5       5      n/ n[	        S[        U5      5       GH  nXF   nX7   nUR                  S5      u  pU	R                  5       nU
R                  5       nU R                  U5      nU R                  U5      nU R                  US5      nU R                  US5      n[        R                  " US5      nUR                  0 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S:H  _SS_SS_SU R                  U5      U R                  U5      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      SS.S$.SUS%.E5        GM     U$ )&z

https://yobit.net/en/api

retrieves data on all markets for yobit
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict[]: an array of objects representing market data
pairsr   _hiddenfee100r)   symbol/basequotesettleNbaseIdquoteIdsettleIdtyper4   Tr5   Fr6   r7   r8   activecontractr  decimal_places)amountprice)minmax
min_amount
max_amount	min_price	max_price	min_total)r  r  r  cost)r  r   r   contractSizeexpiryexpiryDatetimestrike
optionType	precisionlimitscreatedr   )publicGetInfor  r  r  r  r  splitupperr  r  r  r#   
string_divappendparse_numberparse_precisionsafe_number)r  r  r  marketsr  r  r  r)   marketr  r  r  r  r  	feeStrings                  r  fetch_marketsyobit.fetch_markets  s    %%f-& ..7B7GLLN#q#d)$AB[F hhsmOF<<>DMMOE**40D++E2E&&vx8F((7I**9e<IMM 2b2$*u,2 2 	2
 $2 &2 72 D2 2 2 %2 2 %2 %2 6Q;2  E!2" $#2$  **95**95 $"&""//0D0DTEUEUV\^nEo0pq!..t/C/CDDTDTU[]mDn/op  $#!
  $//E#//E
  $//D#//D
  $//D#$  c2 2 %~ r  Nr  r  c                 0   U R                  5         U R                  U5      nSUS   0nUb  X%S'   U R                  U R                  XS5      5      nUS   U;   nU(       d!  [	        U R
                  S-   US   -   S-   5      eXdS      nU R                  X5      $ )a  

https://yobit.net/en/api

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
pairr)   r   r  z% order book is empty or not available)r  r
  publicGetDepthPairr  r   r)   parse_order_book)	r  r  r  r  r
  requestr  market_id_in_reponse	orderbooks	            r  fetch_order_bookyobit.fetch_order_book$  s     	V$F4L
 $G**4;;w+GH &t 8##x0@ @Cj jkkD\*	$$Y77r  symbolsc                 \   U R                  5         SnUcg  SR                  U R                  5      n[        U5      S:  a<  [        U R                  5      n[	        U R
                  S-   [        U5      -   S-   5      eO"U R                  U5      nSR                  U5      nSU0nUb  X&S'   U R                  U R                  Xc5      5      n0 n[        UR                  5       5      n[        S[        U5      5       H.  n	XI   n
U R                  U
5      nU R                  Xz   U5      X'   M0     U$ )	a  

https://yobit.net/en/api

fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data for multiple markets
:param str[]|None symbols: list of unified market symbols, all symbols fetched if None, default is None
:param int [limit]: max number of entries per orderbook to return, default is None
: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 symbol
N-rz  z fetchOrderBooks() has zy symbols exceeding max URL length, you are required to specify a list of symbols in the first argument to fetchOrderBooksr  r  r   )r  joinidsr  r   r)   str
market_idsr  r  r  r  r  safe_symbolr  )r  r  r  r  r  numIdsr  r  r  r  r)   r  s               r  fetch_order_booksyobit.fetch_order_books=  s*    	?((488$C3x$TXX#DGG.G$G#f+$U  YT  %T  U  U  //'*C((3-CC
 $G**4;;w+GH8==?#q#c(#AB%%b)F!228<HFN $ r  tickerr
  c                    U R                  US5      nU R                  US5      nU R                  0 SU R                  S U5      _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
S _SU R                  US5      _SS _SS _SS _SU_SU_SS _SS _SS _SU R                  US5      _U R                  US5      U R                  US5      US.EU5      $ )Nupdatedlastr  r  r  highlowbidbuy	bidVolumeasksell	askVolumevwapopenclosepreviousClosechange
percentageaverageavgvol_curvol)
baseVolumequoteVolumer   )safe_timestampr  safe_tickerr  r  )r  r#  r
  r  r&  s        r  parse_tickeryobit.parse_tickerb  s    ''	:	/ !
d&&tV4!
!
 Y/!
 D$$VV4	!

 4##FE2!
 4##FE2!
 !
 4##FF3!
 !
 D!
 D!
 T!
 D!
 T!
 d!
  $!!
" t''6#!
$ **69=++FE:)!
* + 	r  	idsStringc                    SU0nU R                  U R                  X25      5      n0 n[        UR                  5       5      n[	        S[        U5      5       H4  nXg   nXH   n	U R                  U5      n
U
S   nU R                  X5      X['   M6     U$ )Nr  r   r  )publicGetTickerPairr  r  r  r  r  safe_marketr=  )r  r?  r  r  tickersr  r  kr)   r#  r
  r  s               r  fetch_tickers_helperyobit.fetch_tickers_helper  s    I
 **4;;w+GHGLLN#q#d)$AB[F%%b)FH%F!..v>FN % r  c                 >   SnU R                  USS5      u  p2Uc  U(       d  [        U R                  S-   5      eU R                  5         / nU R	                  U R
                  SS5      nSnU(       a  U R                  nSn[        S	[        U R                  5      5       HV  nU R                  U   n	US:X  a  SOS
n
XzU	-   -  n[        U5      U:  d  M4  UR                  U R                  Xr5      5        SnMX     US:w  a   UR                  U R                  Xr5      5        OU R                  U5      nU R                  U5      n[        U5      nS
R                  U5      n[        U5      U-   nX:  aE  [        U R                  S-   [        U5      -   S-   [        U5      -   S-   [        U5      -   S-   5      eUR                  U R                  X5      5        Un0 n[        S	[        U5      5       H*  nU R!                  X   SU5      nU R#                  UU5      nM,     U$ )aI  

https://yobit.net/en/api

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
:param dict [params.all]: you can set to `true` for convenience to fetch all tickers from self exchange by sending multiple requests
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
NallFzs fetchTickers() requires "symbols" argument or use `params["all"] = True` to send multiple requests for all marketsr  rz  (    r   r  z' fetchTickers() is being requested for z$ markets(which has an URL length of z- characters), but it exceedes max URL length(zK), please pass limisted symbols array to fetchTickers to fit in one requestr  )handle_param_boolr   r)   r  r  ry  r  r  r  r  r  rE  market_symbolsr  r  r  filter_by_array_tickersr  )r  r  r  
allSymbolspromises	maxLengthlenghtOfBaseUrlr  r  r)   prefix	idsLengthr?  actualLength	resultAllfinalResultr  s                    r  fetch_tickersyobit.fetch_tickers  s?    
!33FE5I
?:#DGG  /d  %d  e  e%%dllNDI	llGC1c$((m,XXa[ #r	{"s8i'OOD$=$=c$JKC - by 9 9# FG))'2G//'*C #CIIy>O;L''2[([^abk^l(l  pV  )V  Y\  ]i  Yj  )j  m\  )\  _b  cl  _m  )m  p}  )}  ~  ~OOD55iHI	q#i.)A11),'RF++k6:K * r  c                 0    U R                  U/U5      nX1   $ )a  

https://yobit.net/en/api

fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
:param str symbol: unified symbol of the market to fetch the ticker for
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
)rW  )r  r  r  rC  s       r  fetch_tickeryobit.fetch_ticker  s      $$fXv6r  tradec                 .   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S5      nU R                  US	S
5      nU R                  US5      nU R                  US5      nU R                  X5      n	U R                  US5      n
U R	                  U5      nU R	                  U
5      nSnS nU R                  US5      nUb(  U R                  US5      nU R                  U5      nUUS.nU R                  US5      nUbM  UcJ  U R                  XXLUS5      nU R                  US5      U R                  US5      U R                  US5      S.nU R                  UUUU R                  U5      U	UUS UU
S UUS.U5      $ )Nr  r  r,  r-  r)  r*  rater  trade_idtidorder_idr  r  r  
commissioncommissionCurrency)r  currencyis_your_orderr   rd  r  rd  r  r^  )r)   orderr  r  r  r  sidetakerOrMakerr  r  r  r  r   )
r;  r  safe_string_2r  r  r  r  calculate_fee
safe_trader  )r  r\  r
  r  rh  priceStringr)   rg  marketIdr  amountStringr  r  r  r  feeCostStringfeeCurrencyIdfeeCurrencyCodeisYourOrderfeeInNumberss                       r  parse_tradeyobit.parse_trade  s   0 ''{;	v.5=DU]D((@z59  
3##E62!!(3''x8!!+.""<0((=$ ,,U4HIM"55mDO%+C &&uo>"{#11&eU\] $ 0 0z J ,,\6B ,,\6B
 "Y/  " 
  	r  sincec                 >   U R                  5         U R                  U5      nSUS   0nUb  X6S'   U R                  U R                  Xd5      5      n[	        U[
        5      (       a  [        U5      nUS:X  a  / $ U R                  XuS   / 5      n	U R                  XX#5      $ )a  

https://yobit.net/en/api

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>`
r  r)   r  r   )	r  r
  publicGetTradesPairr  
isinstancer  r  	safe_listparse_trades)
r  r  rw  r  r  r
  r  r  numElementsr  s
             r  fetch_tradesyobit.fetch_trades  s     	V$F4L
 $G++DKK,HI h%%h-Ka	,;  >>r  c                 $   U R                  5         U R                  U5      nU R                  US0 5      n[        UR	                  5       5      n0 n[        S[        U5      5       H  nXF   nU R                  X70 5      nU R                  USS5      n	U R                  US5      n
U R                  US5      nU R                  [        R                  " U
S5      5      nU R                  [        R                  " US5      5      nUU	UUSS	S
.XY'   M     U$ )a  

https://yobit.net/en/api

fetch the trading fees for multiple markets
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: a dictionary of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>` indexed by market symbols
r  r   Nr  	fee_buyer
fee_sellerr  TF)r   r  r   r   r4  	tierBased)r  r  r  r  r  r  r  r  r  r  r#   r  )r  r  r  r  	marketIdsr  r  rn  r  r  takerStringmakerStringr   r   s                 r  fetch_trading_feesyobit.fetch_trading_feesG  s	    	%%f-( x"5&	q#i.)A |H>>%26D%%hc:F**4=K**4>K%%g&8&8e&LME%%g&8&8e&LME ""FN *  r  r  rh  r  r  c                 V   US:X  a  [        U R                  S-   5      eU R                  5         U R                  U5      nUS   UU R	                  X5      U R                  X5      S.nU R                  U R                  X5      5      n	U R                  U	S5      n
U R                  X5      $ )a.  

https://yobit.net/en/api

create a trade order
:param str symbol: unified symbol of the market to create an order in
:param str type: must be '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>`
r
  z' createOrder() allows limit orders onlyr)   )r  r  r  r^  r'   )
r   r)   r  r
  amount_to_precisionprice_to_precisionprivatePostTrader  r  parse_order)r  r  r  rh  r  r  r  r
  r  r  r  s              r  create_orderyobit.create_orderz  s     8*S STTV$4L..v>++F:	
 ((W)EF, (3//r  r)   c                     U R                  5         S[        U5      0nU R                  U R                  XC5      5      nU R	                  US0 5      nU R                  U5      $ )a  

https://yobit.net/en/api

cancels an open order
:param str id: order id
:param str symbol: not used by yobit cancelOrder()
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
ra  r'   )r  intprivatePostCancelOrderr  r  r  )r  r)   r  r  r  r  r  s          r  cancel_orderyobit.cancel_order  s`     	B
 ..t{{7/KL( (B7''r  statusc                 4    SSSSS.nU R                  X!U5      $ )Nr0  closedcanceled)012r0   )r  )r  r  statusess      r  parse_order_statusyobit.parse_order_status  s*    	
 &99r  rg  c                    U R                  USS5      nU R                  U R                  USS5      5      nUS:X  a  U R                  US5      nSnU R                  USS	5      nU R                  US
5      nU R	                  Xb5      nU R                  US5      nU R                  USS5      n	U R                  USS5      n
U R                  US5      nS nSnU R                  US5      nU R                  0 SU_SU_SS _SU_SU_SU R                  U5      _SS _SU_SS _SS _SU_SU_SS _SS _SU_SU	_S U
_UUS S S!.EU5      $ )"Nr)   ra  r  r0  r  init_order_idr  timestamp_createdr  r  start_amountr  remainsreceivedz0.0r^  r  r  r   clientOrderIdr  r  r  lastTradeTimestampr  postOnlyrh  r  r  r  	remainingfilled)r  r  r5  trades)rj  r  r  safe_timestamp_2r  
safe_orderr  )r  rg  r
  r)   r  r  rn  r  r  r  r  r  r  r  rh  s                  r  r  yobit.parse_order  s   | tZ8(()9)9%6)RS9!!%9BF))%1DmT	##E62!!(3!!%8&&uh	B	!!%U;  /v.  
E 
" 
 T 
 f	 

  
 Y/ 
 !$ 
 D 
 4 
  
 D 
 U 
 D 
 D 
 f 
  ! 
" f# 
$ + 
, - 	r  c                    U R                  5         S[        U5      0nU R                  U R                  XC5      5      n[	        U5      nU R                  US0 5      nU R                  U R                  SU0Xa   5      5      $ )a4  

https://yobit.net/en/api

fetches information on an order made by the user
:param str id: order id
:param str symbol: not used by yobit fetchOrder
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
ra  r'   r)   )r  r  privatePostOrderInfor  r  r  r  )r  r)   r  r  r  r  r  s          r  fetch_orderyobit.fetch_order?  sz     	B
 ,,T[[-IJW(B7" T2J
 CDDr  c                 "   Uc  [        U R                  S-   5      eU R                  5         0 nSnUb  U R                  U5      nUS   US'   U R	                  U R                  XT5      5      nU R                  US0 5      n	U R                  XX#5      $ )a  

https://yobit.net/en/api

fetch all unfilled currently open orders
:param str symbol: unified market symbol
:param int [since]: the earliest time in ms to fetch open orders for
:param int [limit]: the maximum number of open 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>`
Nz- fetchOpenOrders() requires a symbol argumentr)   r  r'   )r   r)   r  r
  privatePostActiveOrdersr  r  parse_orders)
r  r  rw  r  r  r  r
  marketInnerr  r  s
             r  fetch_open_ordersyobit.fetch_open_ordersc  s     >#DGG.]$]^^++f-K)$/GFO//G0LM0 (B7  >>r  c                 X   Uc  [        U R                  S-   5      eU R                  5         U R                  U5      nSUS   0nUb  X6S'   Ub  U R	                  US-  5      US'   U R                  U R                  Xd5      5      nU R                  US0 5      n[        UR                  5       5      n	/ n
[        S[        U	5      5       HK  nU R                  X5      nU R                  U R                  X   S	U05      U5      nU
R                  U5        MM     U R                  XS
   X#5      $ )a  

https://yobit.net/en/api

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>`
z+ fetchMyTrades() requires a symbol argumentr  r)   countr  rw  r'   r   r_  r  )r   r)   r  r
  parse_to_intprivatePostTradeHistoryr  r  r  r  r  r  r  ru  r  filter_by_symbol_since_limit)r  r  rw  r  r  r
  r  r  r  r  r  r  r)   r\  s                 r  fetch_my_tradesyobit.fetch_my_trades  s4    >#DGG.[$[\\V$ F4L	
 $G#00>GG//G0LM" (B76;;=!q#c(#A!!#)B$$T[[B> &E MM%  $ 009I5XXr  r  c                     SS0nU R                  XR                  X25      5      nU R                  US5      nU R                  U5        UUSSUS   S.$ )a0  

https://yobit.net/en/api

create a currency deposit address
:param str code: unified currency code of the currency for the deposit address
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
need_newr   addressNr   )rd  r  tagnetworkr   )fetch_deposit_addressr  r  check_address)r  r  r  r  r  r  s         r  create_deposit_addressyobit.create_deposit_address  si     
 --dKK4PQ""8Y77#V$
 	
r  c                    U R                  5         U R                  U5      nUS   nU R                  U R                  S0 5      nU R	                  US5      nU R                  XVU5      nUb*  US:w  a  XFR                  5       -   nU R                  US5      nUSS.nU R                  U R                  Xr5      5      nU R                  US   S	5      n	U R                  U	5        UUSU	SS
.$ )a,  
fetch the deposit address for a currency associated with self account

https://yobit.net/en/api

: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>`
r)   r  r  Nr{  r   )coinNamer  r'   r  )r   rd  r  r  r  )r  rd  r  ry  safe_string_upperr  loweromitprivatePostGetDepositAddressr  r  )
r  r  r  rd  r  r  r  r  r  r  s
             r  r  yobit.fetch_deposit_address  s     	==&d^
>>$,,
B?((;""8g>'!'--/9
YYvy1F"
 44T[[5QR""8H#5yA7#
 	
r  r  r  c                    U R                  XE5      u  pEU R                  U5        U R                  5         U R                  U5      nUS   UUS.nUb  [	        U R
                  S-   5      eU R                  U R                  Xu5      5      n0 SU_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SSS.S.E$ )aj  

https://yobit.net/en/api

make a withdrawal
:param str code: unified currency code
:param float amount: the amount to withdraw
:param str address: the address to withdraw to
:param str tag:
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: a `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
r)   )r  r  r  Nz withdraw() does not support the tag argument yet due to a lack of docs on withdrawing with tag/memo on behalf of the exchange.r   txidr  rd  r  r  r  r  r  r  addressFrom	addressTor  tagFromtagTor%  rf  )commentr  )handle_withdraw_tag_and_paramsr  r  rd  r   r)   !privatePostWithdrawCoinsToAddressr  )	r  r  r  r  r  r  rd  r  r  s	            r  r   yobit.withdraw  s}    99#F7#==& 
 ?  +l  !l  m  m99$++g:VW
H
$
 D
 D	

 
 t
 d
 d
 
 
 t
 4
 
 4
 t
  T!
" t#
$  '
 	
r  r   GETc                     U R                   S   U   nU R                  X@R                  U5      5      nUS:X  a  U R                  5         U R	                  5       n	U R                  U R                  U	US.U5      5      nU R                  U R                  U5      U R                  U R                  5      [        R                  5      n
SU R                  U
S.nOUS:X  aF  USU R                  -   S-   U R                  X5      -   -  nU(       a  USU R                  U5      -   -  nOXUSU R                  X5      -   -  nUS	:X  a  U(       a  USU R                  U5      -   -  nOU(       a  U R                  U5      nS
S0nXsXeS.$ )Nr   r   )noncemethodz!application/x-www-form-urlencoded)Content-TypeKeySignr   r  ?r  r  zapplication/json)urlr  bodyheaders)r   r  extract_paramscheck_required_credentialsr  	urlencoder  hmacencodesecrethashlibsha512apiKeyr/   implode_paramsjson)r  pathr   r  r  r  r  r  queryr  	signatures              r  sign
yobit.sign<  sm   iis#		&"5"5d";<)++-JJLE>>$++/ # D 		$++d"3T[[5Mw~~^I C{{!G
 H_3%+d.A.A$.OOOCsT^^E2223,,T:::C3!666C99U+D&(:G dOOr  httpCodereasonr  r  r  r  c
                    Uc  g SU;   a  U R                  US5      n
[        U
[        5      (       a  U
S:X  d  U
S:X  a  Sn
OSn
U
(       d  U R                  US5      nU R                  US5      n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 )Nsuccesstruer  TFr  errorr  r  r  )	
safe_valuerz  r  r  r)   throw_exactly_matched_exceptionr  throw_broadly_matched_exceptionr   )r  r  r  r  r  r  r  r  requestHeadersrequestBodyr  r  messagefeedbacks                 r  handle_errorsyobit.handle_errors]  s     6 ooh	:G'3''v%7c>"G#G''&9**8W=77S=4/44T__W5Mt^44T__W5Mwa44T__W5Mwa#H--r   )N)6__name__
__module____qualname____firstlineno__r   r  r   r  r  r   r	   r  r  r   r   r  r   r   r!  dictr   r=  r   rE  rW  rZ  r   ru  r~  r   r  r   r   floatr
   r  r   r  r  r   r  r  r  r  r   r  r  r   r   r  r  r  __static_attributes____classcell__)r  s   @r  r%   r%      s   m# m^) )( $& $,( $,L $& ^$v, ^@ :>b 8s 83 8Y 82 48dSU # # #Zd #J%4 % %6 %N ;= c   04B .W .7 .` 02 3 f H Hv H HT 6:UW &?3 &?s &?# &?\`af\g &?P )+ 1{ 1f gksu /03 /0i /0y /0RW /0`c /0b 37r $(s $(C $(L: :c cv c cJ 26b "Ec "E3 "EH /3TXac -? -?3 -?c -?hlmrhs -?^ -1tRV_a 9Yc 9Y 9YC 9Yv 8: 
3 
n 
0 79 !
# !
^ !
F KOWY 2
S 2
% 2
# 2
C 2
^i 2
h &eBSW PB,c ,3 ,S ,# ,X\ ,dg , ,r  r%   )*ccxt.base.exchanger   ccxt.abstract.yobitr   r  ccxt.base.typesr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   typingr   ccxt.base.errorsr   r   r   r   r   r   r   r   r    r!   ccxt.base.decimal_to_precisionr"   ccxt.base.preciser#   r%   r  r  r  <module>r     se    ( +  @  @  @  @  @  * 0 . . ) * + . 1 ) 4 %pHk pr  