
    E#i                    \   S SK Jr  S SKJr  S SKrS SKJrJrJrJ	r	J
r
JrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJr  S SKJr  S SKJr  S SKJ r   S SKJ!r!  S S	KJ"r"  S S
KJ#r#  S SKJ$r$  S SKJ%r%  S SKJ&r&  S SKJ'r'  S SKJ(r(  S SKJ)r)  S SKJ*r*  S SKJ+r+  S SK,J-r-  S SK.J/r/   " S S\\5      r0g)    )Exchange)ImplicitAPIN)AnyBalances
CurrenciesCurrencyDepositAddressIntMarketNumOrder	OrderBook	OrderSide	OrderTypeStrStringsTickerTickersFundingRateFundingRatesTradeTradingFeeInterfaceTradingFeesTransaction)List)ExchangeError)AuthenticationError)PermissionDenied)ArgumentsRequired)
BadRequest)	BadSymbol)InsufficientFunds)InvalidAddress)InvalidOrder)DuplicateOrderId)NotSupported)RateLimitExceeded)InvalidNonce)	TICK_SIZE)Precisec                   0  ^  \ rS rSrS\4U 4S jjr0 4S\4S jjr0 4S\4S jjr	0 4S\
\   4S jjr0 4S jr0 4S jrS[S
\S\S\4S jjr0 4S\S\4S jjrS	0 4S\S\4S jjrS	0 4S\S\S\4S jjrS[S\S\S\4S jjrS	S	0 4S\S\S\S\
\   4S jjrS[S\S\4S jjrSS	S	0 4S\S\S\S\S\
\   4
S jjrS\4S jr S[S\S\!4S jjr"0 4S\S\!4S jjr#S	0 4S\S\$4S jjr%0 4S\4S jjr&S[S \S\S\'4S! jjr(0 4S\S\'4S" jjr)0 4S\*4S# jjr+0 4S\S$\,4S% jjr-S	0 4S\S&\.S'\/S(\,S)\04
S* jjr1S+\24S, jr3S[S-\S\S\44S. jjr5S	0 4S/\S\24S0 jjr6S	0 4S/\S\24S1 jjr7S	0 4S/\S\24S2 jjr8S	S	S	0 4S\2S\S\4S3 jjr9S	S	S	0 4S\2S\S\S\
\4   4S4 jjr:S	S	S	0 4S\2S\S\S\
\4   4S5 jjr;S	0 4S/\S\24S6 jjr<S	0 4S\24S7 jjr=S8 r>0 4S9\S\?4S: jjr@0 4S9\S\?4S; jjrA0 4S9\S\?4S< jjrBS	0 4S9\S(\,S=\S>\2S\C4
S? jjrDS@ rES[SA\SB\FS\C4SC jjrGS	S	S	0 4S9\2S\S\S\
\C   4SD jjrHS	S	S	0 4S9\2S\S\S\
\C   4SE jjrIS	0 4SF\4SG jjrJ0 4SH jrK0 4SI jrLS	0 4SF\4SJ jjrMS	0 4SK jrNS	0 4SL jrOS[SM jrPS[SB\F4SN jjrQSOSP0 S	S	4SQ jrRSR rSSS\TST\SU\SV\SW\SX\4SY jrUSZrVU =rW$ )\lbank   returnc           "        > U R                  [        [        U ]  5       SSS/SSS0 SS_S	S_S
S_SS _SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_0 SS_SS_SS_SS_SS_SS_SS_S S_S!S_S"S_S#S$_S%S_S&S_S'S_S(S_S)S_S*S_E0 S+S_S,S_S-S_S.S_S/S_S0S_S1S_S2S_S3S_S4S_S5S_S6S_S7S_S8S_S9S_S:S_S;S_ESSSSSSSSSSSSSS<.ES=S>S?S@SASBSCSDSESFSGSHSI.SJSKSLSM.SNSOSPSQSRSS.0 STSU_SVSU_SWSU_SXSU_SYSZ_S[SU_S\SU_S]SU_S^SU_S_SU_S`SU_SaSU_SbSU_ScSU_SdSU_SeSU_SfSU_SgSU0Sh.Si0 SjSU_SkSU_SlSU_SmSU_SnSU_SoSU_SpSq_SrSq_SsSq_StSq_SuSU_SvSU_SwSU_SxSU_SySU_SzSU_S{SU_0 S|SU_S}SU_S~SU_SSU_SSU_SSU_SSU_SSU_SSU_SbSU_SSq_SSq_SSq_SSq_SSU_SSU_SSU_ESUSUS.E0S.SSSUSUSUSUS.00S.U R	                  S5      U R	                  S5      S.Sz0 0S.SSSSS.[
        SSSS0SS0SS0SS0SS0SS0SS00 SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SSSSSS.SS0S.SSSS SSSS SSSSS.SSSSSSSS.S SSSSSS.SSSSS.SSSSSS.SSS S SSSS.S SS0S.	SS0SS0S S.S S S.S.S.5      $ )Nr,   LBankCNv2   TCORSFspotmarginswapfutureoption	addMargincancelAllOrderscancelOrdercreateMarketBuyOrderWithCostcreateMarketOrderWithCostcreateMarketSellOrderWithCostcreateOrdercreateReduceOnlyOrdercreateStopLimitOrdercreateStopMarketOrdercreateStopOrderfetchBalancefetchBorrowRateHistoriesfetchBorrowRateHistoryfetchClosedOrdersfetchCrossBorrowRatefetchCrossBorrowRatesfetchCurrenciesfetchDepositAddressfetchDepositAddressesfetchDepositAddressesByNetworkfetchDepositWithdrawFeeemulatedfetchDepositWithdrawFeesfetchFundingHistoryfetchFundingRatefetchFundingRateHistoryfetchFundingRatesfetchIndexOHLCVfetchIsolatedBorrowRatefetchIsolatedBorrowRatesfetchIsolatedPositionsfetchLeveragefetchLeverageTiersfetchMarginModefetchMarketsfetchMarkOHLCVfetchMyTrades
fetchOHLCVfetchOpenOrders
fetchOrderfetchOrderBookfetchOrdersfetchPositionfetchPositionModefetchPositions)fetchPositionsRiskfetchPremiumIndexOHLCVfetchTickerfetchTickers	fetchTimefetchTradesfetchTradingFeesfetchTransactionFeesreduceMarginsetLeveragesetMarginModesetPositionModewithdrawminute1minute5minute15minute30hour1hour2hour4hour6hour8hour12day1week1)1m5m15m30m1h2h4h6h8h12h1d1wzchttps://user-images.githubusercontent.com/1294454/38063602-9605e28a-3302-11e8-81be-64b1e53c4cfb.jpgzhttps://api.lbank.infozhttps://lbkperp.lbank.com)restcontractzhttps://api.lbkex.comzhttps://www.lbank.comz+https://www.lbank.com/en-US/docs/index.htmlzhhttps://support.lbank.site/hc/en-gb/articles/900000535703-Trading-Fees-From-14-00-on-April-7-2020-UTC-8-z'https://www.lbank.com/login/?icode=7QCY)logoapiapi2wwwdocfeesreferralcurrencyPairsg      @accuracyusdToCnyassetConfigswithdrawConfigsg      @	timestampzticker/24hrtickerdepth	incrDepthtradesklinezsupplement/system_pingzsupplement/incrDepthzsupplement/tradeszsupplement/ticker/pricezsupplement/ticker/bookTickerzsupplement/system_status)getpostr   	user_infozsubscribe/get_keyzsubscribe/refresh_keyzsubscribe/destroy_keyget_deposit_addressdeposit_historycreate_order   batch_create_ordercancel_ordercancel_clientOrdersorders_infoorders_info_historyorder_transaction_detailtransaction_historyorders_info_no_dealrt   withdrawCancel	withdrawszsupplement/user_infozsupplement/withdrawzsupplement/deposit_historyzsupplement/withdrawszsupplement/get_deposit_addresszsupplement/asset_detailzsupplement/customer_trade_feezsupplement/api_Restrictionszsupplement/create_order_testzsupplement/create_orderzsupplement/cancel_orderz!supplement/cancel_order_by_symbolzsupplement/orders_infozsupplement/orders_info_no_dealzsupplement/orders_info_history)zsupplement/user_info_accountzsupplement/transaction_history)publicprivater   r   )zcfd/openApi/v1/pub/getTimezcfd/openApi/v1/pub/instrumentzcfd/openApi/v1/pub/marketDatazcfd/openApi/v1/pub/marketOrder)r5   r   z0.001)makertaker)tradingfundingXBTHiverVENPenta)r   HIT	VET_ERC20PNTmethodspotPublicGetTradesfetchPrivateTransactionFeesfetchPrivateDepositWithdrawFeesfetchDepositAddressDefault$spotPrivatePostSupplementCreateOrderfetchOrderSupplement!spotPrivatePostSupplementUserInfoERC20erc20ETHTRC20trc20TRXOMNIomniASAasaBEP20
bep20(bsc)BSCHThecoBNBbep2BTCbtcDOGEdogecoinMATICmaticPOLYGONOECoecBTCTRONbtctronXRPxrp)r   r   r   r   bep20USDT)cacheSecretAsPem!createMarketBuyOrderRequiresPricerm   ro   rQ   rL   r@   rb   rE   networksnetworksByIddefaultNetworks)IOCFOKPOGTD)
marginModetriggerPricetriggerPriceTypetriggerDirectionstopLossPricetakeProfitPriceattachedStopLossTakeProfittimeInForcehedgedselfTradePreventiontrailingleveragemarketBuyByCostmarketBuyRequiresPriceicebergd   i    )r   limitdaysBack	untilDayssymbolRequired)r   triggerr   r     )r   r  r  r   r  )r   r  r  r  r  r   r  r    )	sandboxr@   createOrdersr_   rb   ra   rd   rH   r`   extendsdefault)linearinverse)r  r5   r7   r8   )idname	countriesversion	rateLimitprohas
timeframesurlsr   r   commonCurrenciesprecisionModeoptionsfeatures)deep_extendsuperr,   describeparse_numberr)   )self	__class__s    D/home/james-whalen/.local/lib/python3.13/site-packages/ccxt/lbank.pyr  lbank.describe   s   eT ; = AAA %A 	A
 %A %A UA "4A tA /A ,UA 0A tA (A 'A  (!A" "5#A$ %A& +E'A( )%)A* $U+A, '-A. (/A0 "41A2 &t3A4 (5A6 1%7A8 *:9A: +D;A< &u=A> #E?A@ *5AAB $TCAD "5EAF *5GAH +EIAJ )%KAL  MAN %eOAP "5QAR SAT !%UAV  WAX dYAZ "4[A\ d]A^ !$_A` taAb  cAd $UeAf !%gAh ',*/# $!#$((, %$!&#( AAF  !! ~4 ; 0.D CE +S &  '  +C	 
 .y  (  *3  %c  $S  (  %c  $S  5c  3C   0! " 6s# $ ;C% * 7!+4  *!'*! 0*! 4S	*!
 4S*! 23*! .s*! +A*! 1!*! +A*! 21*! *3*! 23*! 7*!  23!*!" 23#*!& ''*!( -c)*!* (+*!, 3C-*!. 23/*!0 9#1*!2 3C3*!4 =c5*!6 6s7*!8 <S9*!: :3;*!> 5c?*!B ;AC*!D 6qE*!F 6qG*!H @I*!J 5cK*!L =cM*!N =cO*!P =@>AS*!, 5GR :==@=@>A	 	SSl "..w7!..w7
  "	! '$(593  ;) ?- :( D  4 A!%W%7% W% 7	%
 F% 5% \% <% &% 6% 5% J% W% w% 5%  y!%" 5#%N %$"")$! G$KHV  %&+(-,0,1).+06:#'#'"'#(	( #(/4$)$)+/27#()$, %)&+!$$*%&*.& ',#($)*.	# ',!$#($)*.( ',!$$(%)#($)*.$ *.#o:x y
 "9  $	 ##KIe\@
 \ \	    c                     SnU R                  SSU5      u  p!SnUS:X  a  U R                  U5      nOU R                  U5      nU R                  US5      $ )ar  
fetches the current integer timestamp in milliseconds from the exchange server

https://www.lbank.com/en-US/docs/index.html#get-timestamp
https://www.lbank.com/en-US/docs/contract.html#get-the-current-time

:param dict [params]: extra parameters specific to the exchange API endpoint
:returns int: the current integer timestamp in milliseconds from the exchange server
Nrl   r7   data)handle_market_type_and_params'contractPublicGetCfdOpenApiV1PubGetTimespotPublicGetTimestampsafe_integer)r  paramstyperesponses       r!  
fetch_timelbank.fetch_time}  s`     99+tVT6>CCFKH226:H*   622r#  c                 8   U R                  U5      nU R                  US/ 5      nU R                  US5      n[        UR	                  5       5      n0 n[        S[        U5      5       GH.  n[        XW   5      nU R                  U5      n	XH   n
0 n[        S[        U
5      5       H  nX   nU R                  US5      nUc  U R                  US5      nU R                  U5      nUUU R                  US5      SS.U R                  US5      SS.S	.SSU R                  US
5      U R                  US5      U R                  U R                  U R                  US5      5      5      US.	X'   M     U R                  UU	SSSSSSSSSS.SSS.S	.UU
S.5      Xi'   GM1     U$ )z
fetches all available currencies on an exchange
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: an associative dictionary of currencies
r%  	assetCoder   chainNminr2  maxminTransferrt   depositcanWithDrawfeetransferAmtScale)	r  networklimitsactiver7  rt   r9  	precisioninfo)r  coder>  r+  r  r=  r7  rt   r9  r<  r   r?  )spotPublicGetWithdrawConfigs	safe_listgroup_bylistkeysrangelenstrsafe_currency_codesafe_stringnetwork_id_to_codesafe_number	safe_boolr  parse_precisionsafe_currency_structure)r  r*  r,  currenciesDatagroupedgroupedKeysresultir  r@  networksRawr   jnetworkEntry	networkIdnetworkCodes                   r!  fetch_currencieslbank.fetch_currencies  s    44V<D &"=--<7<<>*q#k*+Akn&B**2.D!+KH1c+./*~ ,,\7C	$ $ 0 0{ KI"55i@#* $(#3#3L%#H#'%
 $(#3#3L-#P#'$	 ## $|] K++L%@!%!2!243G3GHXHXYegyHz3{!|(%)% 04  77!   $#!
  $# 	 %#+9 FL? ,l r#  c                 z    U R                  U5      U R                  U5      /nUnU R                  US   US   5      $ )a?  
retrieves data on all markets for lbank

https://www.lbank.com/en-US/docs/index.html#trading-pairs
https://www.lbank.com/en-US/docs/contract.html#query-contract-information-list

:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict[]: an array of objects representing market data
r   r   )fetch_spot_marketsfetch_swap_marketsarray_concat)r  r*  marketsPromisesresolvedMarketss       r!  fetch_marketslbank.fetch_markets  sK     ##F+##F+
 *  !3_Q5GHHr#  c                    U R                  U5      nU R                  US/ 5      n/ n[        S[        U5      5       GH0  nX5   nU R	                  US5      nUR                  S5      nUS   n	US   n
U R                  U	5      nU R                  U
5      nUS-   U-   nUR                  0 SU_SU_SU_S	U_S
U	_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 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      S S.S S S.S S S.S.S US.
E5        GM3     U$ ) Nr%  r   symbol_r   /r  basequotebaseIdquoteIdsettlesettleIdr+  r5   Tr6   Fr7   r8   r9   r=  r   r  quantityAccuracypriceAccuracyamountpricer3  
minTranQuar   rq  rr  cost
r  contractSizeexpiryexpiryDatetimestrike
optionTyper>  r<  createdr?  )spotPublicGetAccuracy
safe_valuerF  rG  rJ  splitrI  appendr  rN  rL  )r  r*  r,  r%  rS  rT  marketmarketIdpartsrj  rk  rh  ri  re  s                 r!  r]  lbank.fetch_spot_markets  sE   --f5  x4q#d)$AWF''9HNN3'E1XFAhG**62D++G4ECZ%'FMM 0h0&0 0 	0
 &0 70 $0 D0 0 0 %0 0 %0 %0 $0  E!0" $#0$   $"&""//0D0DTEUEUV\^pEq0rs!..t/C/CDDTDTU[]lDm/no  $#!
  $//E#
  $#
  $#$  _0 0 %t r#  c                 x   SS0nU R                  U R                  X!5      5      nU R                  US/ 5      n/ n[        S[	        U5      5       GHf  nXF   nU R                  US5      nU R                  US5      n	U R                  US5      n
U
nU R                  U	5      nU R                  U5      nU R                  U
5      nUS-   U-   S	-   U-   nUR                  0 S
U_SU_SU_SU_SU_SU	_SU_SU
_SS_SS_SS_SS_SS_SS_SS_SS_SS_SU R                  US5      S S S S U R                  US5      U R                  US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Mi     U$ )(NproductGroupSwapUr%  r   re  baseCurrencyclearCurrencyrg  :r  rh  ri  rl  rj  rk  rm  r+  r7   r5   Fr6   Tr8   r9   r=  r   r  volumeMultiple
volumeTick	priceTickrp  r3  minOrderVolumemaxOrderVolumepriceLimitLowerValuepriceLimitUpperValueminOrderCostrt  rv  )	*contractPublicGetCfdOpenApiV1PubInstrumentextendr~  rF  rG  rJ  rI  r  rL  )r  r*  requestr,  r%  rS  rT  r  r  rj  rm  rk  rh  ri  rl  re  s                   r!  r^  lbank.fetch_swap_marketsh  s   G
 BB4;;wC_`: x4q#d)$AWF''9H%%fn=F''@HG**62D++G4E,,X6FCZ%'#-6FMM 0h0&0 0 	0
 &0 &0 70 H0 0 0 %0 0 %0 %0 $0  D!0" $#0$ ! $ 0 09I J"&""..v|D!--fkB  $#!
  $//8HI#//8HI
  $//8NO#//8NO
  $//G#$  _0 0 %v r#  Nr   r  c           	      l   U R                  US5      nU R                  US5      nU R                  XB5      nU R                  US0 5      nU R	                  XB5      nUS   (       a  UOUnU R                  0 SU_SU_SU R                  U5      _SU R                  USS5      _SU R                  USS	5      _S
S _SS _SS _SS _SS _SU R                  US5      _SS _SU R                  USS5      _SS _SS _SU R                  US5      _SS _U R                  USS5      U R                  US5      US.EU5      $ )Nr   re  r   r   datetimehighhighestPricelowlowestPricebid	bidVolumeask	askVolumevwapopen	openPricecloselastlatest	lastPricepreviousClosechange
percentageaveragevolvolumeturnover)
baseVolumequoteVolumer?  )r)  rJ  safe_symbolr~  safe_marketsafe_tickeriso8601safe_string_2)r  r   r  r   r  re  
tickerDatar%  s           r!  parse_tickerlbank.parse_ticker  s   > %%fk:	##FH5!!(3__VXr:
!!(3 ,v: !
f!
!
 Y/!
 D&&tV^D	!

 4%%dE=A!
 4!
 !
 4!
 !
 D!
 D$$T;7!
 T!
 D&&tX{C!
 T!
 d!
  $**4:!!
" t#!
$ ,,T5(C++D*=)!
* + 	r#  re  c                 h   U R                  5         U R                  U5      nUS   (       a*  U R                  US   /U5      nU R                  XCS   5      $ SUS   0nU R	                  U R                  XR5      5      nU R                  US/ 5      nU R                  US0 5      nU R                  X5      $ )a  
fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market

https://www.lbank.com/en-US/docs/index.html#query-current-market-data-new

: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>`
r7   re  r  r%  r   )load_marketsr  fetch_tickersr~  spotPublicGetTicker24hrr  	safe_dictr  )	r  re  r*  r  responseForSwapr  r,  r%  firsts	            r!  fetch_tickerlbank.fetch_ticker  s     	V$&>"00&2B1CVLO???84DEEfTl
 //G0LM, x4tQ+  //r#  symbolsc                    U R                  5         SnUb6  U R                  U5      n[        U5      nUS:  a  U R                  US   5      n0 nSnU R	                  SX25      u  pbSnUS:X  a&  SUS'   U R                  U R                  XR5      5      nO%SUS'   U R                  U R                  XR5      5      nU R                  US	/ 5      nU R                  X5      $ )
a?  
fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market

https://www.lbank.com/en-US/docs/index.html#query-current-market-data-new
https://www.lbank.com/en-US/docs/contract.html#query-contract-market-list

:param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
Nr   rk   r7   r  r  allre  r%  )
r  market_symbolsrG  r  r&  *contractPublicGetCfdOpenApiV1PubMarketDatar  r  rB  parse_tickers)	r  r  r*  r  symbolsLengthr  r+  r,  r%  s	            r!  r  lbank.fetch_tickers0  s     	))'2GLMq WQZ099.&Y6>&-GN#FFt{{SZGcdH %GH33DKK4PQH\ ~~h3!!$00r#  r  c           	         U R                  5         U R                  U5      nUc  SnSUS   0nSnU R                  SXC5      u  pcSnUS:X  a%  X%S'   U R                  U R	                  XS5      5      nO$X%S'   U R                  U R	                  XS5      5      nU R                  US	0 5      nU R                  5       n	US   (       a  U R                  XS   U	S
SSS5      $ U R                  XS   U	S
S5      $ )a@  
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data

https://www.lbank.com/en-US/docs/index.html#query-market-depth
https://www.lbank.com/en-US/docs/contract.html#get-handicap

: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
N<   re  r  rc   r7   r   sizer%  bidsasksrr  r  )	r  r  r&  +contractPublicGetCfdOpenApiV1PubMarketOrderr  spotPublicGetDepthr~  millisecondsparse_order_book)
r  re  r  r*  r  r  r+  r,  	orderbookr   s
             r!  fetch_order_booklbank.fetch_order_book|  s    	V$=EfTl
 99:JF[6>$GGGT[HdeH#FO..t{{7/KLHb OOHfb9	%%'	&>((84DiQWY_ahjrss$$Yx0@)VU[\\r#  tradec                 x   U R                  USS5      nUc  U R                  US5      nU R                  USS5      nUc  U R                  US5      nU R                  US5      nUc  U R                  US5      nU R                  US	5      nUc  U R                  US
5      nU R                  USS5      nS nS n	UbM  UR	                  S5      n
U R                  U
S5      nU R                  U
S5      nSnSn	Ub  US:X  a  SnOUS:X  a  Sn	U R                  USS5      nUc  U R                  US5      nU R                  US5      nU R                  S U5      nS nU R                  US5      nUb$  UUS:X  a  US   OUS   U R                  US5      S.nU R                  UU R                  U5      UUUUU	UUUUUUS.U5      $ )Ndate_mstimedealTimerq  qtydealQuantityrr  	dealPricequoteQtydealVolumePrice	tradeTyper+  rf  r   r   r  r   r  r   tidr  txUuid	orderUuidtradeFeebuyrh  ri  tradeFeeRate)ru  currencyrate)r   r  re  r  orderr+  takerOrMakersiderr  rq  ru  r9  r?  )safe_integer_2r)  r  rJ  r  r  
safe_trader  )r  r  r  r   amountStringpriceString
costStringr  r+  r  r  typePartr  r  re  r9  feeCosts                    r!  parse_tradelbank.parse_trade  s   L ''y&A	))%<I))%5A++E>BL&&ug6**5+>K%%eZ8
))%1BCJ!!%f=JJsOE##E1-D''q1HD"L#x'#D(#*Lud3:!!%2B  4!!$/""5*5/3u}F6N6'?((?C
 "Y/( " 
  	r#  sincec                    U R                  5         U R                  U5      nSUS   0nUb  X&S'   Ub  [        US5      US'   OSUS'   U R                  U R                  S0 5      nU R                  USS	5      nU R                  USU5      n	U R                  US5      nSn
U	S
:X  a!  U R                  U R                  Xd5      5      n
O U R                  U R                  Xd5      5      n
U R                  U
S/ 5      nU R                  XX#5      $ )a6  
get the list of most recent trades for a particular symbol

https://www.lbank.com/en-US/docs/index.html#query-historical-transactions
https://www.lbank.com/en-US/docs/index.html#recent-transactions-list

: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>`
re  r  Nr  iX  r  rm   r   r   spotPublicGetSupplementTradesr%  )r  r  r2  r~  r  rJ  omitr  r  r   rB  parse_trades)r  re  r  r  r*  r  r  r  defaultMethodr   r,  r   s               r!  fetch_tradeslbank.fetch_trades+  s    	V$fTl
 #FO!%oGFO!GFO//$,,rB(((<QR!!&(MB68,4499$++g:VWH//G0LMH" &"5  >>r#  c           	          U R                  US5      U R                  US5      U R                  US5      U R                  US5      U R                  US5      U R                  US5      /$ )Nr   r   r            )safe_timestamprL  )r  ohlcvr  s      r!  parse_ohlcvlbank.parse_ohlcv_  sn     q)UA&UA&UA&UA&UA&
 	
r#  r   	timeframec                    U R                  5         U R                  U5      nUc  SnO[        US5      nUc*  U R                  U5      nU R	                  5       US-  U-  -
  nUS   U R                  U R                  X"5      U R                  US-  5      [        US-   S5      S.nU R                  U R                  X5      5      n	U R                  U	S/ 5      n
U R                  XX#U5      $ )aP  
fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market

https://www.lbank.com/en-US/docs/index.html#query-k-bar-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
:returns int[][]: A list of candles ordered, open, high, low, close, volume
r   r  i  r  r   )re  r+  r  r  r%  )r  r  r2  parse_timeframer  rJ  r  parse_to_intspotPublicGetKliner  rB  parse_ohlcvs)r  re  r  r  r  r*  r  durationr  r,  ohlcvss              r!  fetch_ohlcvlbank.fetch_ohlcvs  s     	V$=Et$E=++I6H%%'8d?U+BCETl$$T__iK%%edl3	4(	
 **4;;w+GH&"5,   5IIr#  c                    U R                  US5      nUUU R                  U5      S.nU R                  US5      nU R                  US5      nUb  U R                  US0 5      nU R                  US0 5      n[        UR	                  5       5      n[        S[        U5      5       HT  n	X   n
U R                  U
5      nU R                  5       nU R                  Xj5      US'   U R                  Xz5      US'   XU'   MV     U R                  U5      $ U R                  US	5      nUb  [        S[        U5      5       Hh  n	X   nU R                  US
5      n
U R                  U
5      nU R                  5       nU R                  US5      US'   U R                  US5      US'   XU'   Mj     U R                  U5      $ [        U[        5      nUSL a  [        S[        U5      5       Hh  n	XI   nU R                  US5      n
U R                  U
5      nU R                  5       nU R                  US5      US'   U R                  US5      US'   XU'   Mj     U R                  U5      $ g )Nts)r?  r   r  r%  toBtcfreezefreer   usedbalancesassetlockedTcoin	usableAmt	freezeAmt)r)  r  r~  rD  rE  rF  rG  rI  accountrJ  safe_balance
isinstance)r  r,  r   rS  r%  r  r  r  
currenciesrT  
currencyIdr@  r  r  item	codeInnerisArrays                    r!  parse_balancelbank.parse_balance  sQ   \ %%h5	"Y/

 x0g.??426D??44Ddiik*J1c*o.']
..z:,,."&"2"24"D"&"2"24"D&t / $$V,,??441c(m,{!--dG<
 33J?	,,."&"2"24"@"&"2"24"B$+y! - $$V,,T4(d?1c$i(w!--dF;
 33J?	,,."&"2"24"E"&"2"24"E$+y! ) $$V,,r#  c                    U R                  US5      nU R                  X25      nU R                  US5      nU R                  US5      nU R                  US5      nU R                  US5      nU R                  US5      n	S n
U	b%  U R	                  U	S-  S-  5      n[        U5      S-   n
0 S	U_SU_S
U_SU_SU_SU_SU R                  U5      _SS _SS _SS _SS _SS _SS _SS _SS _SU
_$ )Nre  markedPriceunderlyingPricefundingRatenextFeeTimepositionFeeTimer  hr?  	markPrice
indexPricefundingTimestampfundingDatetimer   r  nextFundingRatenextFundingTimestampnextFundingDatetimepreviousFundingRatepreviousFundingTimestamppreviousFundingDatetimeinterval)rJ  r  rL  r)  r  rH  r  )r  r   r  r  re  r,  r-  r(  fundingTimer*  intervalStringr6  s               r!  parse_funding_ratelbank.parse_funding_rate&  s     ##FH5!!(3$$V];	%%f.?@
&&v}=''>++F4EF&((2)=)BCH ]S0N
F
f
 
 *	

 ;
 
 t||K8
 
 
 t
 #D
 "4
 "4
 '
 &t
  !
 	
r#  c                     U R                  5         U R                  U5      nU R                  US   /U5      nU R                  XCS   5      $ )aA  
fetch the current funding rate

https://www.lbank.com/en-US/docs/contract.html#query-contract-market-list

:param str symbol: unified market symbol
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: a `funding rate structure <https://docs.ccxt.com/#/?id=funding-rate-structure>`
re  )r  r  fetch_funding_ratesr~  )r  re  r*  r  r  s        r!  fetch_funding_ratelbank.fetch_funding_rateT  sL     	V$22F84D3EvNx0@AAr#  c                     U R                  5         U R                  U5      nSS0nU R                  U R                  X25      5      nU R	                  US/ 5      nU R                  XQ5      $ )a  
fetch the funding rate for multiple markets

https://www.lbank.com/en-US/docs/contract.html#query-contract-market-list

:param str[]|None symbols: list of unified market symbols
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: a dictionary of `funding rate structures <https://docs.ccxt.com/#/?id=funding-rates-structure>`, indexed by market symbols
r  r  r%  )r  r  r  r  rB  parse_funding_rates)r  r  r*  r  r,  r%  s         r!  r<  lbank.fetch_funding_ratesc  sl     	%%g.G
 BB4;;wC_`0 ~~h3''66r#  c                 J   U R                  5         U R                  U R                  S0 5      nU R                  USS5      nU R                  USU5      nSnUS:X  a  U R	                  5       nO'US:X  a  U R                  5       nOU R                  5       nU R                  U5      $ )a  
query for balance and get the amount of funds available for trading or funds locked in orders

https://www.lbank.com/en-US/docs/index.html#asset-information
https://www.lbank.com/en-US/docs/index.html#account-information
https://www.lbank.com/en-US/docs/index.html#get-all-coins-information

:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
rE   r   r   N(spotPrivatePostSupplementUserInfoAccountspotPrivatePostUserInfo)r  r~  r  rJ  rC  rD  r   r#  )r  r*  r  r  r   r,  s         r!  fetch_balancelbank.fetch_balance  s     	//$,,C(((<_`!!&(MB??DDFH00335H==?H> !!(++r#  r9  c                     U R                  US5      nU R                  U5      nUUU R                  US5      U R                  US5      S S S.$ )Nre  makerCommissiontakerCommission)r?  re  r   r   r  	tierBased)rJ  r  rL  )r  r9  r  r  re  s        r!  parse_trading_feelbank.parse_trading_fee  s^     ##C2!!(+%%c+<=%%c+<=
 	
r#  c                     U R                  U5      nU R                  U R                  USUS   05      5      nU R                  XA5      $ )a1  
fetch the trading fees for a market

https://www.lbank.com/en-US/docs/index.html#transaction-fee-rate-query

:param str symbol: unified market symbol
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: a `fee structure <https://docs.ccxt.com/#/?id=fee-structure>`
categoryr  )r  fetch_trading_feesr  r  )r  re  r*  r  rS  s        r!  fetch_trading_feelbank.fetch_trading_fee  sF     V$((Vj&QU,=W)XY~~f--r#  c                    U R                  5         0 nU R                  U R                  X!5      5      nU R                  US/ 5      n0 n[	        S[        U5      5       H  nU R                  XF   5      nUS   nXuU'   M!     U$ )a9  
fetch the trading fees for multiple markets

https://www.lbank.com/en-US/docs/index.html#transaction-fee-rate-query

: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   re  )r  )spotPrivatePostSupplementCustomerTradeFeer  r~  rF  rG  rK  )	r  r*  r  r,  r   rS  rT  r9  re  s	            r!  rO  lbank.fetch_trading_fees  s     	AA$++gB^_x4q#d)$A((1C]F 6N % r#  ru  c                     U R                  5         U R                  U5      nUS   (       d  [        U R                  S-   5      eSUS'   U R	                  USSUSU5      $ )a  
create a market buy order by providing the symbol and cost

https://www.lbank.com/en-US/docs/index.html#place-order
https://www.lbank.com/en-US/docs/index.html#place-an-order

:param str symbol: unified symbol of the market to create an order in
:param float cost: how much you want to trade in units of the quote currency
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
r5   z9 createMarketBuyOrderWithCost() supports spot orders onlyFr   r  r  N)r  r  r&   r  r   )r  re  ru  r*  r  s        r!  !create_market_buy_order_with_cost'lbank.create_market_buy_order_with_cost  s`     	V$f~tww)ddee6;23  5$fMMr#  r+  r  rq  rr  c                 B   U R                  5         U R                  U5      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Q5      nSUS   0nU
S	:H  nU
S
:H  nU	=(       d    U
S:H  nUS:X  a-  U(       d  U(       d  U(       a  [        U R                  S-   5      eUS:X  ah  X;S'   U R                  X5      US'   U R                  X5      US'   U(       a  US-   S-   US'   GO>U(       a  US-   S-   US'   GO*U(       a  US-   S-   US'   GOUS:X  Ga  US:X  a   US-   S-   US'   U R                  X5      US'   OUS:X  a  US-   S-   US'   SnSnU R                  USSS5      u  nnU R                  US5      nU R                  US5      nUb  U R                  UU5      nOU(       ag  Uc  [        U R                  S-   5      eU R                  U5      nU R                  U5      n[        R                  " UU5      nU R                  UU5      nOU R                  X5      nXS'   Ub  XS'   U R!                  U R"                  S0 5      nU R%                  USS5      nU R%                  USU5      nU R                  US5      nSnUS :X  a!  U R'                  U R)                  X5      5      nO U R+                  U R)                  X5      5      nU R!                  US!0 5      nU R-                  U R%                  US"5      US#.U5      $ )$a  
create a trade order

https://www.lbank.com/en-US/docs/index.html#place-order
https://www.lbank.com/en-US/docs/index.html#place-an-order

:param str symbol: unified symbol of the market to create an order in
:param str type: 'market' or 'limit'
:param str side: 'buy' or 'sell'
:param float amount: how much of currency you want to trade in units of base currency
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
	custom_idclientOrderIdpostOnlyFr   )rY  rZ  r   r[  re  r  r   r   r   r  zw createOrder() does not allow market FOK, IOC, or postOnly orders. Only limit IOC, FOK, and postOnly orders are allowedr  r+  rr  rq  rf  iocfokr   sellr  NTr@   r   ru  z createOrder() requires the price argument for market buy orders to calculate the total cost to spend(amount * price), alternatively set the createMarketBuyOrderRequiresPrice option or param to False and pass the cost to spend in the amount argumentr   r   spotPrivatePostCreateOrderr%  order_id)r  r?  )r  r  r  rM  safe_string_upperr  r$   r  price_to_precisionamount_to_precisionhandle_option_and_paramsrL  cost_to_precisionnumber_to_stringr*   
string_mulr~  r  rJ  r_  r  r   
safe_order)r  re  r+  r  rq  rr  r*  r  rZ  r[  r   r  r\  r]  r   quoteAmountr   ru  r  r  costRequestr  r  r   r,  rS  s                             r!  r   lbank.create_order  sf    	V$**6;P>>&*e<,,V]C6#\]fTl
 e#e#2kT1H3#tww  *c   c  d  d7?"FO#66vEGG $ 8 8 HGH"&*u"4"&*u"4"&*w"6Xv~"&*x"7$($<$<V$L!"&*x"7"481<@<Y<YZ`bo  rU  W[  =\916''7662#"&"8"8"FK6}*477  6q  ,q  r  r'+'<'<V'D&*&;&;E&B&-&8&8{&S&*&<&<V[&Q"&"8"8"HK#. $#0K //$,,rB(((<bc!!&(MB68,1166t{{77STH@@WA]^H 626""6:6 
  	r#  statusc                 8    SSSSSSS.nU R                  X!U5      $ )Ncanceledr  closed)z-101234)rJ  )r  rl  statusess      r!  parse_order_statuslbank.parse_order_statusg  s0    
 &99r#  r  c                 <   U R                  USS5      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                  Xr5      nS nS	n	S
n
U R                  USS5      nUR	                  S5      nU R                  US5      nU R                  US5      nUS:X  a  Sn
US:X  a  Sn	SnUS:X  a  SnUS:X  a  SnU R                  US5      nU R                  US5      nS nUS:w  a  U R                  USS5      nU R                  USS5      nU R                  0 SU_SU_S U R                  U5      _S!U_S"S _SU R                  U5      _SUS   _SU
_S#U_S$U	_S%U_SU_S&S _S'U_SU_S(U_S)S _S S US S*.EU5      $ )+NorderIdr`  rZ  rY  r  create_timerl  re  Fr  r+  r  rf  r   r   r  r   Tr   r\  r   r]  r   rr  cummulativeQuoteQty
buy_marketorigQtyrq  executedQtydeal_amountr  r  r   lastTradeTimestampr   r[  r  r   ru  filled	remaining)r   r9  r?  r  )r  r  rJ  r  r  rh  r  rv  )r  r  r  r  rZ  r   	rawStatusr  r   r[  r+  rawTyper  r  r  rr  r  r  filledStrings                      r!  parse_orderlbank.parse_orderr  sl   p y*=**5/;O''v}E	$$UH5	##E84!!(3$$UFK@c"q)##E1-xDwHKuKuK  0%%e-BC
l"--eYIL))%N  
" 
] 
 Y/ 
 	 

 !$ 
 d--i8 
 fX& 
 D 
 ; 
  
 D 
 U 
 D 
 J 
 l 
  l! 
" # 
$ + 
, - 	r#  r  c                     U R                  5         U R                  US5      nUc0  U R                  U R                  S0 5      nU R                  USS5      nUS:X  a  U R	                  XU5      $ U R                  XU5      $ )a  
fetches information on an order made by the user

https://www.lbank.com/en-US/docs/index.html#query-order
https://www.lbank.com/en-US/docs/index.html#query-order-new

: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>`
r   rb   r   )r  rJ  r~  r  fetch_order_supplementfetch_order_default)r  r  re  r*  r   r  s         r!  fetch_orderlbank.fetch_order  s     	!!&(3>oodllL"EG%%gx9OPF++..r6BB''F;;r#  c                    Uc  [        U R                  S-   5      eU R                  5         U R                  U5      nUS   US.nU R	                  U R                  XS5      5      nU R                  US0 5      nU R                  U5      $ )N( fetchOrder() requires a symbol argumentr  re  ry  r%  )r   r  r  r  #spotPrivatePostSupplementOrdersInfor  r  r  )r  r  re  r*  r  r  r,  rS  s           r!  r  lbank.fetch_order_supplement  s    >#DGG.X$XYYV$Tl
 ;;DKK<XY, &"5''r#  c                 j   Uc  [        U R                  S-   5      eU R                  5         U R                  U5      nUS   US.nU R	                  U R                  XS5      5      nU R                  US/ 5      n[        U5      nUS:X  a  U R                  US   5      $ [        U R                  S-   5      e)Nr  r  )re  r`  r%  r   r   z0 fetchOrder() can only fetch one order at a time)
r   r  r  r  spotPrivatePostOrdersInfor  r~  rG  r  r    )	r  r  re  r*  r  r  r,  rS  	numOrderss	            r!  r  lbank.fetch_order_default5  s    >#DGG.X$XYYV$Tl
 11$++g2NO* 626K	>##F1I.. TWW'YYZZr#  c                    Uc  [        U R                  S-   5      eU R                  5         U R                  U5      nU R	                  USU5      nU R                  US5      nSUS   0nUb  X6S'   Ub-  U R                  US5      US'   U R                  US-   S5      US'   U R                  U R                  Xd5      5      nU R                  US	/ 5      nU R                  XX#5      $ )
a  
fetch all trades made by the user

https://www.lbank.com/en-US/docs/index.html#past-transaction-details

: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 trade 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 argument
start_datere  r  r  -i \&end_dater%  )r   r  r  r  r~  r  ymd!spotPrivatePostTransactionHistoryr  rB  r  )	r  re  r  r  r*  r  r  r,  r   s	            r!  fetch_my_tradeslbank.fetch_my_tradesa  s     >#DGG.[$[\\V$e<6<0fTl
 #FO$(HHUC$8GL!"&((58+;S"AGJ99$++g:VW* &"5  >>r#  c                 F   Uc  [        U R                  S-   5      eU R                  5         U R                  U5      nUc  SnUS   SUS.nU R	                  U R                  Xd5      5      nU R                  US0 5      nU R                  US/ 5      n	U R                  XX#5      $ )a  
fetches information on multiple orders made by the user

https://www.lbank.com/en-US/docs/index.html#query-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>`
z) fetchOrders() requires a symbol argumentr   r  r   re  current_pagepage_lengthr%  orders)	r   r  r  r  *spotPrivatePostSupplementOrdersInfoHistoryr  r~  rB  parse_orders
r  re  r  r  r*  r  r  r,  rS  r  s
             r!  fetch_orderslbank.fetch_orders  s     >#DGG.Y$YZZV$=ETl 
 BB4;;wC_`8 626"5  >>r#  c                 F   Uc  [        U R                  S-   5      eU R                  5         U R                  U5      nUc  SnUS   SUS.nU R	                  U R                  Xd5      5      nU R                  US0 5      nU R                  US/ 5      n	U R                  XX#5      $ )a  
fetch all unfilled currently open orders

https://www.lbank.com/en-US/docs/index.html#current-pending-order

: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>`
z- fetchOpenOrders() requires a symbol argumentr   r  r   r  r%  r  )	r   r  r  r  )spotPrivatePostSupplementOrdersInfoNoDealr  r~  rB  r  r  s
             r!  fetch_open_orderslbank.fetch_open_orders  s     >#DGG.]$]^^V$=ETl 

 AA$++gB^_8 626"5  >>r#  c                 n   Uc  [        U R                  S-   5      eU R                  5         U R                  USS5      nU R	                  USS/5      nU R                  U5      nUS   US.nUb  XFS'   U R                  U R                  Xc5      5      nU R                  US0 5      nU R                  U5      $ )aS  
cancels an open order

https://www.lbank.com/en-US/docs/index.html#cancel-order-new

: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>`
z) cancelOrder() requires a symbol argumentorigClientOrderIdrZ  r  r  r%  )
r   r  r  r  r  r  $spotPrivatePostSupplementCancelOrderr  r  r  )	r  r  re  r*  rZ  r  r  r,  r%  s	            r!  r   lbank.cancel_order
  s     >#DGG.Y$YZZ**63FX6$7#IJV$Tl
 $+8'(<<T[[=YZ ~~h3%%r#  c                    Uc  [        U R                  S-   5      eU R                  5         U R                  U5      nSUS   0nU R	                  U R                  XB5      5      nU R                  US/ 5      nU R                  U5      $ )az  
cancel all open orders in a market

https://www.lbank.com/en-US/docs/index.html#cancel-all-pending-orders-for-a-single-trading-pair

:param str symbol: unified market symbol of the market to cancel orders in
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
z- cancelAllOrders() requires a symbol argumentre  r  r%  )r   r  r  r  ,spotPrivatePostSupplementCancelOrderBySymbolr  rB  r  )r  re  r*  r  r  r,  r%  s          r!  cancel_all_orderslbank.cancel_all_orders2  s     >#DGG.]$]^^V$fTl
 DDT[[QXEab$ ~~h3  &&r#  c                     U R                  U R                  S5      nU R                  X15      nU R                  U R                  S0 5      nU R                  USU5      nU R                  XVU5      nU$ )Nr   r   r;  )r~  r  ra  rJ  )r  currencyCoder*  r   defaultNetworkr   r;  s          r!  get_network_code_for_currency#lbank.get_network_code_for_currencyX  sh    //$,,8IJ//N??4<<R@((NK""8g>r#  r@  c                 (   U R                  5         U R                  U R                  S0 5      nU R                  USS5      nU R                  USU5      nU R	                  US5      nSnUS:X  a  U R                  X5      nU$ U R                  X5      nU$ )a  
fetch the deposit address for a currency associated with self account

https://www.lbank.com/en-US/docs/index.html#get-deposit-address
https://www.lbank.com/en-US/docs/index.html#the-user-obtains-the-deposit-address

: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>`
rL   r   r   NfetchDepositAddressSupplement)r  r~  r  rJ  r   fetch_deposit_address_supplementfetch_deposit_address_default)r  r@  r*  r  r  r   r,  s          r!  fetch_deposit_addresslbank.fetch_deposit_address`  s     	//$,,0ErJ(((<XY!!&(MB68,44<<TJH  99$GHr#  c                    U R                  5         U R                  U5      nSUS   0nU R                  X5      nUb  XTS'   U R                  US5      nU R	                  U R                  XB5      5      nU R                  US5      nU R                  US5      nU R                  US5      n	UUU R                  U R                  US5      5      UU	S.$ )	Nr0  r  netWorkr;  r%  addressmemor?  r  r;  r  tag)	r  r  r  r   spotPrivatePostGetDepositAddressr  r~  rJ  rK  )
r  r@  r*  r  r  r;  r,  rS  r  r  s
             r!  r  #lbank.fetch_deposit_address_defaultw  s    ==&$
 44TB!(IYYvy1F88W9UV 62""695vv...t/?/?	/RS
 	
r#  c                    U R                  5         U R                  U5      nSUS   0nU R                  U R                  S5      nU R	                  US5      nU R                  XVU5      nUb  XdS'   U R                  US5      nU R                  U R                  XB5      5      nU R                  US5      nU R                  US5      n	U R                  US5      n
UUS U	U
S	.$ )
Nr  r  r   r;  networkNamer%  r  r  r  )	r  r  r~  r  ra  rJ  r  *spotPrivatePostSupplementGetDepositAddressr  )r  r@  r*  r  r  r   r;  r,  rS  r  r  s              r!  r  &lbank.fetch_deposit_address_supplement  s    ==&HTN
 ??4<<<((;""8g>%,M"YYvy1FBB4;;wC_` 62""695vv.
 	
r#  r  r  c                 d   U R                  XE5      u  pEU R                  U5        U R                  5         U R                  US5      nU R	                  US5      nU R                  SUS5        U R                  U5      nUUS   UUS.nUb  XHS'   U R                  USS5      n	U R	                  USS/5      nU R                  U R                  S5      n
U R                  XU	5      nUb  XS'   U R                  U R                  X5      5      nU R                  US	0 5      nUU R                  US
5      S.$ )a  
make a withdrawal

https://www.lbank.com/en-US/docs/index.html#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>`
r9  rt   r  )r  r  rq  r9  r  r;  r  r   r%  
withdrawId)r?  r  )handle_withdraw_tag_and_paramscheck_addressr  rJ  r  check_required_argumentr  safe_string_upper_2r~  r  !spotPrivatePostSupplementWithdrawr  )r  r@  rq  r  r  r*  r9  r  r  r;  r   rX  r,  rS  s                 r!  rt   lbank.withdraw  s>    99#F7#vu-65)$$Ze<==&TN	
 ?!FO**69mL6I}#=>??4<<<$$X@	 %.M"99$++g:VW 626""6<8
 	
r#  c                 f    SSSSSS.SSSSS.S.nU R                  U R                  X20 5      X5      $ )	Npendingokfailedrn  transfer)rq  rr  rs  rt  5)rq  rr  rs  rt  )r7  
withdrawal)rJ  r~  )r  rl  r+  ru  s       r!  parse_transaction_statuslbank.parse_transaction_status  sR      	
  CVTTr#  transactionr  c                    U R                  US5      nS nUc  SnOSnU R                  US5      nU R                  USS5      nU R                  US5      nS nS n	US:X  a  UnOUn	U R                  US5      n
U R                  US	S
5      nU R	                  X5      nU R                  U R                  US5      U5      nS nU R                  US5      nUb  UUS.n0 SU_SU_SU_SU_SU R                  U5      _SU R                  U R                  US5      5      _SU_SU	_SU_SS _SS _SS _SU_SU
_SU_SU_SS _S US:H  US.E$ )Nr  r7  r  txId
insertTime	applyTimer  rq  r  coidrl  r9  )ru  r  r?  txidr   r  r;  r  	addressToaddressFromr  tagTotagFromr+  r  updatedr  )commentinternalr9  )rJ  r  rL  r  rI  r  r  rK  )r  r  r  r  r+  r  r   r  r  r  rq  r  r@  rl  r9  r  s                   r!  parse_transactionlbank.parse_transaction	  s   < k40:DDV4''\;O	"";	:	9!KI!!+x8''VVD
&&z<..t/?/?X/VX\]"";6 C
K
"
 D
 	

 Y/
 t..t/?/?]/[\
 w
 
 ;
 4
 T
 t
 D
 f
 
  f!
" t#
$ :-)
 	
r#  c                     U R                  5         0 nSnUb  U R                  U5      nUS   US'   Ub  X%S'   U R                  U R                  XT5      5      nU R	                  US0 5      nU R                  US/ 5      n	U R                  XX#5      $ )a  
fetch all deposits made to an account

https://www.lbank.com/en-US/docs/index.html#get-recharge-history

:param str code: unified currency code
:param int [since]: the earliest time in ms to fetch deposits for
:param int [limit]: the maximum number of deposits structures to retrieve
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict[]: a list of `transaction structures <https://docs.ccxt.com/#/?id=transaction-structure>`
Nr  r  	startTimer%  depositOrders)r  r  'spotPrivatePostSupplementDepositHistoryr  r~  rB  parse_transactions)
r  r@  r  r  r*  r  r  r,  r%  depositss
             r!  fetch_depositslbank.fetch_deposits[	  s     	
 }}T*H&tnGFO#(K ??G@\]0 x4>>$<&&x5HHr#  c                     U R                  5         0 nSnUb  U R                  U5      nUS   US'   Ub  X%S'   U R                  U R                  XT5      5      nU R	                  US0 5      nU R                  US/ 5      n	U R                  XX#5      $ )a  
fetch all withdrawals made from an account

https://www.lbank.com/en-US/docs/index.html#get-withdrawal-history

:param str code: unified currency code
:param int [since]: the earliest time in ms to fetch withdrawals for
:param int [limit]: the maximum number of withdrawals structures to retrieve
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict[]: a list of `transaction structures <https://docs.ccxt.com/#/?id=transaction-structure>`
Nr  r  r  r%  r   )r  r  "spotPrivatePostSupplementWithdrawsr  r~  rB  r  )
r  r@  r  r  r*  r  r  r,  r%  r   s
             r!  fetch_withdrawalslbank.fetch_withdrawals	  s     	

 }}T*H&tnGFO#(K ::4;;w;WX6 x4NN4b9	&&yEIIr#  codesc                 |   U R                  5         U R                  S5      nSnUSL a  U R                  U R                  S0 5      nU R	                  USS5      nU R	                  USU5      nU R                  US5      nUS:X  a  U R                  U5      nU$ U R                  U5      n U$ U R                  U5      nU$ )aA  
@deprecated
       please use fetchDepositWithdrawFees instead
       :param str[]|None codes: not used by lbank fetchTransactionFees()
       :param dict [params]: extra parameters specific to the exchange API endpoint
       :returns dict: a list of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>`
       FNTro   r   r   fetchPublicTransactionFees)r  check_required_credentialsr~  r  rJ  r  fetch_public_transaction_feesfetch_private_transaction_fees)r  r  r*  isAuthorizedrS  r  r  r   s           r!  fetch_transaction_feeslbank.fetch_transaction_fees	  s     	66u=4oodll4JBOG ,,Wh@]^M%%fhFFYYvx0F55;;FC
  <<VD  77?Fr#  c                    U R                  5         U R                  5       nU R                  US/ 5      n0 n[        S[	        U5      5       H  nX5   nU R                  US5      nU R                  U5      nU R                  US/ 5      n	0 XH'   [        S[	        U	5      5       HF  n
X   nU R                  US5      nUc  M  U R                  U R                  US5      5      nXU   U'   MH     M     U0 US.$ )Nr%  r   r  networkListwithdrawFeer  rt   r7  r?  )	r  r   r~  rF  rG  rJ  rI  rL  rK  )r  r*  r,  rS  withdrawFeesrT  entryr  r@  r  rV  rW  r9  rY  s                 r!  r  $lbank.fetch_private_transaction_fees	  s    	99;> 626q#f+&AIE))%8J**:6D//%CK!#L1c+./*~&&|]C?"&"9"9$:J:J<Y_:`"aK69&{3 0 ' %
 	
r#  c                    U R                  5         U R                  USS5      nU R                  USS/5      n0 nUb  U R                  U5      nUS   US'   U R	                  U R                  X15      5      nU R                  US/ 5      n0 n[        S[        U5      5       H  nXh   n	U R                  U	S5      n
U
S:X  d  M!  U R                  U	S5      nU R                  U5      nU R                  U R                  U	S5      5      nUc  UnU R                  U	S	5      nX|   c  0 X|'   U R                  U5      X|   U'   M     U0 US
.$ )Nr  r0  r  r%  r   r8  truer1  r9  r  )r  r  r  r  rA  r  r~  rF  rG  rJ  rI  rK  r  )r  r*  r@  r  r  r,  rS  r  rT  r   canWithdrawr  r!  r;  r9  s                  r!  r  #lbank.fetch_public_transaction_fees
  s_    	!!&&+>6FK#89}}T*H#+D>GK 44T[[5QR, 626q#f+&A9D//$>Kf$!--dK@
 33J?	11$2B2B42QR?'G&&tU3*2.0L+373D3DS3I'0 ' %
 	
r#  c                 |   U R                  5         U R                  S5      nSnUSL a  U R                  U R                  S0 5      nU R	                  USS5      nU R	                  USU5      nU R                  US5      nUS:X  a  U R                  X5      nU$ U R                  X5      n U$ U R                  X5      nU$ )a:  
when using private endpoint, only returns information for currencies with non-zero balance, use public method by specifying self.options['fetchDepositWithdrawFees']['method'] = 'fetchPublicDepositWithdrawFees'

https://www.lbank.com/en-US/docs/index.html#get-all-coins-information
https://www.lbank.com/en-US/docs/index.html#withdrawal-configurations

:param str[] [codes]: array of unified currency codes
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: a list of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>`
FNTrQ   r   r   fetchPublicDepositWithdrawFees)r  r  r~  r  rJ  r  "fetch_public_deposit_withdraw_fees#fetch_private_deposit_withdraw_fees)r  r  r*  r  r,  r  r  r   s           r!  fetch_deposit_withdraw_fees!lbank.fetch_deposit_withdraw_feesJ
  s     	66u=4oodll4NPRSG ,,Wh@abM%%fhFFYYvx0F99BB5Q
   CCER  >>uMHr#  c                     U R                  5         U R                  U5      nU R                  US/ 5      nU R                  XAS5      $ )Nr%  r  )r  r   rB  parse_deposit_withdraw_fees)r  r  r*  r,  r%  s        r!  r  )lbank.fetch_private_deposit_withdraw_feese
  sG     	99&A> ~~h3//VDDr#  c                     U R                  5         0 nU R                  U R                  X25      5      nU R                  US/ 5      nU R	                  XQ5      $ )Nr%  )r  rA  r  r~  "parse_public_deposit_withdraw_fees)r  r  r*  r  r,  r%  s         r!  r  (lbank.fetch_public_deposit_withdraw_fees
  sS     	44T[[5QR, x466tCCr#  c                 .   0 n[        S[        U5      5       H  nX   nU R                  US5      nUSL d  M   U R                  US5      nU R	                  U5      nUb  U R                  X5      (       d  M^  U R                  US5      n	U	c  Mu  U R                  X85      n
U
c  U R                  U/5      X8'   OX8   S   nUR                  U5        U R                  U R                  US5      5      nUb  U	S S.S S S.S	.X8   S
   U'   M  U	S S.X8   S'   M     U$ )Nr   r8  Tr0  r9  r?  r1  r9  r  r6  r   rt   )
rF  rG  r~  rJ  rI  in_arrayrL  deposit_withdraw_feer  rK  )r  r,  r  rS  rT  r9  r
  r  r@  r  resultValueresultCodeInforY  s                r!  r  (lbank.parse_public_deposit_withdraw_fees
  s<   " q#h-(A+C//#}=Kd"!--c;?
..z:=DMM$$>$>"&"2"23">K".&*oof&C&.+/+D+DcU+KFL-3\&-AN*11#6&*&=&=d>N>NsT[>\&]&2 ,726-"
 ,026,"	EFL4[A (3.28FL49 )@ r#  c                 b   U R                  U5      nU R                  US/ 5      n[        S[        U5      5       Hq  nXE   nU R	                  U R                  US5      5      nU R                  US5      nU R                  US5      n	Uc  MQ  U	(       a  US S.US'   US S.S S S.S.US	   U'   Ms     U$ )
Nr  r   r  r  	isDefaultr  rt   r6  r   )r  r~  rF  rG  rK  rJ  rL  )
r  r9  r  rS  r  rV  rW  rY  r  r   s
             r!  parse_deposit_withdraw_fee lbank.parse_deposit_withdraw_fee
  s    6 **3/ooc="=q#k*+A&>L11$2B2B<QW2XYK**<GKkBI&*&**F:&  +&*!
  $&* 	3z";/ ,* r#  r   GETc           
         U R                  X@R                  U5      5      nU R                  S   S   S-   U R                  -   S-   U R	                  X5      -   nUS   S:X  a  US-  nO'U R                  S   S   S-   U R	                  X5      -   nUS   S	:X  a/  U(       a&  US
U R                  U R                  U5      5      -   -  nGO/U R                  5         [        U R                  5       5      n	U R                  5       U R                  5       -   n
U R                  SU R                  0U5      nS n[        U R                  5      S:  a  SnOSnU R!                  U R                  U R                  U
UU	S.U5      5      5      nU R#                  U5      nU R%                  US5      nUR'                  5       nS nUS:X  a  U R)                  U R*                  SS5      nS nU(       aY  U R-                  U R*                  S5      nUc9  U R/                  U R#                  U R                  5      5      nUU R*                  S'   O*U R/                  U R#                  U R                  5      5      nU R1                  UUS5      nOOUS:X  aI  U R3                  U R#                  U5      U R#                  U R                  5      [4        R6                  5      nUUS'   U R                  U R                  U5      5      nSU	UU
S.nXXeS.$ )Nr   r   rg  r   r5   z.dor   r   r   ?api_key    RSA
HmacSHA256)echostrsignature_methodr   md5r   Tpemsha256signz!application/x-www-form-urlencoded)zContent-Typer   r+  r*  )urlr   bodyheaders)r  extract_paramsr  r  implode_params	urlencodekeysortr  rH  r  uuid22uuid16r  apiKeyrG  secret	rawencodeencodehashupperrM  r  r~  convert_secret_to_pemrsahmachashlibr.  )r  pathr   r   r*  r2  r1  queryr0  r   r*  signatureMethodauthencodedr=  uppercaseHashr/  r   r-  s                      r!  r/  
lbank.sign  s   		&"5"5d";<iiv&,t||;cADDWDWX\Deeq6V5LC))E":.4t7J7J47XXCq6XsT^^DLL,?@@@++-D--/0Ikkmdkkm3GKK4;;!E #O4;;"$"'".>>$,,t{{"$3&< 	0 # D
 kk$'G99We,D JJLMD%'#'>>$,,@RTX#Y #//$,,>C{"88T[[9QR.1U+44T[[5MNCxxsH= L0yy]!;T[[=UW^WeWef E&M>>$,,u"56D C&$3"	G dOOr#  c                     Sn[        U5      S-
  nU R                  X2-  5      nU R                  US5      nSn[        SU5       H+  nXb-  nU R                  Xr5      nXPR                  Xx S-   -  nM-     US-   $ )N@   r   r   z-----BEGIN PRIVATE KEY-----

z-----END PRIVATE KEY-----)rG  r  sumrF  r:  )	r  r:  
lineLengthsecretLengthnumLinesr-  rT  startends	            r!  r?  lbank.convert_secret_to_pemH  s    
6{Q$$\%>?88Ha(-q(#ANE((5-C;;u)D00C $ 000r#  httpCodereasonr0  r   r2  r1  c
                    Uc  g U R                  US5      n
U
S:X  d  U
(       Gd*  U R                  US5      nU R                  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/_S0S1_S2S3_S4S5_S6S7_S8S9_S:S;_S<S=_S>S?_S@SA_SBSC_SDSE_SFSG_E0 SHSI_SJSK_SLSM_SNSO_SPSQ_SRSS_STSU_SVSW_SXSY_SZS[_S\S]_S^S__S`Sa_SbSc_SdSe_SfSg_EXR                  U5      5      nU R                  0 S[        _S[        _S
[        _S[
        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S [        _S"[        _S$[        _S&[        _0 S([        _S*[        _S,[        _S.[        _S0[        _S2[        _S4[        _S6[        _S8[        _S:[        _S<[        _S>[        _S@[        _SB[        _SD[        _SF[        _SH[        _E[        [        [        [        [        [        [        [        [        [        [        [        [        [        [        Sh.EU[        5      nU" U5      eg )iNrS  false
error_code10000zInternal error10001z(The required parameters can not be empty10002zValidation failed10003zInvalid parameter10004zRequest too frequent10005zSecret key does not exist10006zUser does not exist10007zInvalid signature10008zInvalid Trading Pair10009z0Price and/or Amount are required for limit order10010z9Price and/or Amount must be less than minimum requirement10013zThe amount is too small10014z+Insufficient amount of money in the account10015zInvalid order type10016zInsufficient account balance10017zServer Error10018z$Page size should be between 1 and 5010019z+Cancel NO more than 3 orders in one request10020zVolume < 0.00110021zPrice < 0.0110022zInvalid authorization10023z!Market Order is not supported yet10024zUser cannot trade on self pair10025zOrder has been filled10026zOrder has been cancelld10027zOrder is cancelling10028zWrong query time10029zfrom is not in the query time10030z0from do not match the transaction type of inqury10031z=echostr length must be valid and length must be from 30 to 4010033zFailed to create order10036zcustomID duplicated10100zHas no privilege to withdraw10101zInvalid fee rate to withdraw10102zToo little to withdraw10103z#Exceed daily limitation of withdraw10104zCancel was rejected10105zRequest has been cancelled10106zNone trade time10107zStart price exception10108zcan not create order10109zwallet address is not mapping10110ztransfer fee is not mapping10111z	mount > 010112zfee is too lower10113ztransfer fee is 010600z5intercepted by replay attacks filter, check timestamp10601zInterface closed unavailable10701zinvalid asset code10702znot allowed deposit)r|  r}  r~  r  r  r  r  r  r  r  r  r  r  r  r  )r~  rJ  jsonr    r   r'   r!   r$   r"   r   r   r(   r%   r#   )r  rT  rU  r0  r   r2  r1  r,  requestHeadersrequestBodysuccess	errorCodemessage
ErrorClasss                 r!  handle_errorslbank.handle_errorsT  s   //(H5gW((<@I&& 5()5(C5( ,5( ,	5(
 /5( 45( .5( ,5( /5( K5( T5( 25( F5(  -!5(" 7#5($ %5(& ?'5(( F)5(* )+5(, -5(. 0/5(0 <15(2 935(4 055(6 275(8 .95(: +;5(< 8=5(> K?5(@ XA5(B 1C5(D .E5(F 7G5(H 7I5(J 1K5(L >M5(N .O5(P 5Q5(R *S5(T 0U5(V /W5(X 8Y5(Z 6[5(\ ]5(^ +_5(` ,a5(b Pc5(d 7e5(f -g5(h .i5(j ))H-k5/Gl  2*2*,2* 2* *	2*
 ,2* ,2* ,2* 2* 2* 2* 2* *2* 2* *2* 2*  !2*" #2*$ %2*& '2*( ))2** +2*, )-2*. /2*0 12*2 32*4 52*6 72*8 92*: ;2*< =2*> )?2*@ )A2*B C2*D *E2*F '&&##&'&####&")c2*d -e2)Jf W%%r#   )N)X__name__
__module____qualname____firstlineno__r   r  r
   r-  r   rZ  r   r   rb  r]  r^  dictr   r  rH  r  r   r   r  r   r  r   r  r  rD  r  r  r   r#  r   r9  r=  r   r<  rE  r   rK  rP  r   rO  floatrV  r   r   r   r   r   rv  r   r  r  r  r  r  r  r  r   r  r  r	   r  r  r  r   rt   r  r   r  r  r  r  r  r  r  r  r  r  r!  r/  r?  intr  __static_attributes____classcell__)r   s   @r!  r,   r,      s   ]# ]~
 !# %3s %3N ') bZ bH $& I$v, I" )+ M^ )+ ^@:4 : :6 :x 02 *03 *0f *0X 04B J1W J17 J1X :>b P]s P]3 P]Y P]d[ [v [ [z 6:UW 2?3 2?s 2?# 2?\`af\g 2?h
 
4 
( 9=4^bkm 4J# 4J# 4JS 4JX[ 4Jrvw{r| 4Jl{ {z,
 ,
; ,
\ 68 B BK B 6:" (77 (7 (7T $& 4,( 4,l
T 
6 
EX 
& 57 . .;N . )+ { ( RT N N5 N& gksu Z3 Zi Zy ZRW Z`c Zx	: 	:J Jv J JX 26b <c <3 <* =A  (  (c  (D :>b *[c *[3 *[X -1tRV_a 6?c 6? 6?C 6?p *.Dt\^ 8?3 8?c 8? 8?cghmcn 8?t /3TXac 5? 5?3 5?c 5?hlmrhs 5?n 37r &&s &&C &&P /32 $' $'L 79 # ^ . ?A !
# !
^ !
F BD #
S #
 #
J KOWY 9
S 9
% 9
# 9
C 9
^i 9
vU$M
T M
X M
Q\ M
^ *.Dt\^ 1I3 1Ic 1I 1Icghsct 1If -1tRV_a 5Jc 5J 5JC 5Jfjkvfw 5Jn 7;2 G 2 57 5
n 46 3
j <@  6 9=R $EL 8<B D<2h2 2h &eBSW 5Pn
1pc p3 pS p# pX\ pdg p pr#  r,   )1ccxt.base.exchanger   ccxt.abstract.lbankr   rB  ccxt.base.typesr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   typingr   ccxt.base.errorsr   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   ccxt.base.decimal_to_precisionr)   ccxt.base.preciser*   r,   r  r#  r!  <module>r     st    ( +  z  z  z  z  z  z  * 0 - . ' & . + ) - ) . ) 4 %h.Hk h.r#  