
    !:h                    `   d dl mZ d dlmZ d dlZd dlZd dlmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlm Z  d dlm!Z! d d	lm"Z" d d
lm#Z# d dlm$Z$ d dlm%Z% d dlm&Z& d dlm'Z' d dlm(Z( d dlm)Z) d dlm*Z* d dlm+Z+ d dl,m-Z- d dl.m/Z/  G d dee      Z0y)    )Exchange)ImplicitAPIN)AnyBalances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                   Z    e Zd Zdef fdZi fdefdZi fdee   fdZ	i fdZ
i fdZdVded	edefd
Zi fdedefdZdi fdedefdZdi fdededefdZdVded	edefdZddi fdedededee   fdZdVd	edefdZdddi fdedededee   fdZdefdZdVd	edefdZi fdedefdZ di fdede!fdZ"i fdefdZ#dVded	ede$fdZ%i fdede$fdZ&i fde'fd Z(i fded!e)fd"Z*di fded#e+d$e,d%e)d&e-f
d'Z.d(e/fd)Z0dVd*ed	ede1fd+Z2di fd,ede/fd-Z3di fd,ede/fd.Z4di fd,ede/fd/Z5dddi fde/dedefd0Z6dddi fde/dededee1   fd1Z7dddi fde/dededee1   fd2Z8di fd,ede/fd3Z9di fde/fd4Z:d5 Z;i fd6ede<fd7Z=i fd6ede<fd8Z>i fd6ede<fd9Z?di fd6ed%e)d:ede@fd;ZAd< ZBdVd=ed>eCde@fd?ZDdddi fd6e/dededee@   fd@ZEdddi fd6e/dededee@   fdAZFdi fdBefdCZGi fdDZHi fdEZIdi fdBefdFZJdi fdGZKdi fdHZLdVdIZMdVd>eCfdJZNdKdLi ddfdMZOdN ZPdOeQdPedQedRedSedTefdUZR xZSS )Wlbankreturnc           )         | j                  t        t        |          dddgdddi ddd	dd
ddd ddddddddddddddddddddddddddi ddddddddddddddd dd!dd"d#d$dd%dd&dd'dd(dd)dd*di d+dd,dd-dd.dd/dd0dd1dd2dd3dd4dd5dd6dd7dd8dd9dd:dd;dddddddddddddd<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSi dTdUdVdUdWdUdXdUdYdUdZdUd[dUd\dUd]dUd^dUd_dUd`dUdadUdbdUdcdUdddUdedUidfdgi dhdUdidUdjdUdkdUdldUdmdUdndodpdodqdodrdodsdUdtdUdudUdvdUdwdUdxdUdydUi dzdUd{dUd|dUd}dUd~dUddUddUddUddUd`dUddoddoddoddoddUddUddUdUdUdiddddUdUdUdUdiid| j	                  d      | j	                  d      ddxi idddddt
        ddddiddiddiddiddiddiddii dddddddddddddddddddddddddddddddddddddddddddddddddddiddddd dddd dddddddddddddd ddddddŜdddddƜddddddȜddd d ddddɜd ddid̜	ddiddid dϜd d dϜdМdќ      S )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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withdrawConfigs	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_dealrq   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)r3   r   z0.001)makertaker)tradingfundingHiverVENPenta)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   r   bep20r   r   r   r   r   r   r   r   USDT)cacheSecretAsPem!createMarketBuyOrderRequiresPricerj   rl   rN   rI   r>   r_   rC   networksinverse-networks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\   r_   r^   ra   rF   r]   extendsdefault)linearinverse)r  r3   r5   r6   )idname	countriesversion	rateLimitprohas
timeframesurlsr   r   commonCurrenciesprecisionModeoptionsfeatures)deep_extendsuperr+   describeparse_numberr(   )self	__class__s    R/var/www/html/turnos/venv/lib/python3.12/site-packages/ccxt/async_support/lbank.pyr  zlbank.describe   s   eT ; = @@@ %@ 	@
 %@ %@ U@ "4@ t@ /@ ,U@ 0@ t@ (@ '@  (!@" "5#@$ %@& +E'@( )%)@* $U+@, '-@. (/@0 &t1@2 (3@4 1%5@6 *:7@8 +D9@: &u;@< #E=@> *5?@@ $TA@B "5C@D *5E@F +EG@H )%I@J  K@L %eM@N "5O@P Q@R !%S@T  U@V dW@X "4Y@Z d[@\ !$]@^ t_@`  a@b $Uc@d !%e@f %eg@h +0# $!#$((, %$!&#( @D  !! ~4 ; 0.D CE +S &  '  .s	 
 (  *3  %c  $S  (  %c  $S  5c  3C  0   6s! " ;C# ( 7!)2  *!'*! 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*!, 3FP :==@=@>A	 	QRj "..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$]Qh  %&+(-,0,1).+06:#'#'"'#(	( #(/4$)$)+/27#()$, %)&+!$$*%&*.& ',#($)*.	# ',!$#($)*.( ',!$$(%)#($)*.$ *.#o:x y
 "9  $	 ##KIqb@
 b b	    c                    K   d}| j                  dd|      \  }}d}|dk(  r| j                  |       d{   }n| j                  |       d{   }| j                  |d      S 7 07 w)a  
        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
        Nri   r5   data)handle_market_type_and_params'contractPublicGetCfdOpenApiV1PubGetTimespotPublicGetTimestampsafe_integer)r  paramstyperesponses       r  
fetch_timezlbank.fetch_time  sv      99+tVTf6>!II&QQH!88@@H*   622/ R@s!   4A+A'A+A)A+)A+c                    K   | j                  |      | j                  |      g}t        j                  |  d{   }| j	                  |d   |d         S 7 w)ao  
        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
        Nr   r   )fetch_spot_marketsfetch_swap_marketsasynciogatherarray_concat)r  r$  marketsPromisesresolvedMarketss       r  fetch_marketszlbank.fetch_markets  sa      ##F+##F+
 !( @@  !3_Q5GHH As   8AAAc                   K   | j                  |       d {   }| j                  |dg       }g }t        dt        |            D ]0  }||   }| j	                  |d      }|j                  d      }|d   }	|d   }
| j                  |	      }| j                  |
      }|dz   |z   }|j                  i d|d|d|d	|d
|	d|
dd dd dddddddddddddddddd d d d d d d | j                  | j                  | j	                  |d                  | j                  | j                  | j	                  |d                  dd d d| j                  |d      d dd d dd d ddd |d
       3 |S 7 ew) Nr  r   symbol_r   /r	  basequotebaseIdquoteIdsettlesettleIdr%  r3   Tr4   Fr5   r6   r7   activer   r  quantityAccuracypriceAccuracyamountpriceminmax
minTranQuar   r?  r@  cost
r  contractSizeexpiryexpiryDatetimestrike
optionType	precisionlimitscreatedinfo)spotPublicGetAccuracy
safe_valuerangelensafe_stringsplitsafe_currency_codeappendr  parse_precisionsafe_number)r  r$  r&  r  resultimarketmarketIdpartsr7  r8  r5  r6  r2  s                 r  r)  zlbank.fetch_spot_markets  sY    33F;;  x4q#d)$ 9	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9	t Y <s   E?E<E%E?c                   K   ddi}| j                  | j                  ||             d {   }| j                  |dg       }g }t        dt	        |            D ]f  }||   }| j                  |d      }| j                  |d      }	| j                  |d      }
|
}| j                  |	      }| j                  |      }| j                  |
      }|dz   |z   d	z   |z   }|j                  i d
|d|d|d|d|d|	d|d|
ddddddddddddddddddd | j                  |d      d d d d | j                  |d      | j                  |d      dd d d | j                  |d!      | j                  |d"      d | j                  |d#      | j                  |d$      d | j                  |d%      d d d&d |d'
       i |S 7 w)(NproductGroupSwapUr  r   r2  baseCurrencyclearCurrencyr4  :r	  r5  r6  r9  r7  r8  r:  r%  r5   r3   Fr4   Tr6   r7   r;  r   r  volumeMultiple
volumeTick	priceTickr>  rA  minOrderVolumemaxOrderVolumepriceLimitLowerValuepriceLimitUpperValueminOrderCostrE  rG  )	*contractPublicGetCfdOpenApiV1PubInstrumentextendrR  rS  rT  rU  rW  rX  rZ  )r  r$  requestr&  r  r[  r\  r]  r^  r7  r:  r8  r5  r6  r9  r2  s                   r  r*  zlbank.fetch_swap_markets  s    G
 HHU\^dIeff: 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 u gs   )G	GFG	Nr   r]  c           	      f   | j                  |d      }| j                  |d      }| j                  ||      }| j                  |di       }| j	                  ||      }|d   r|n|}| j                  i d|d|d| j                  |      d| j                  |dd      d| j                  |dd	      d
d dd dd dd dd d| j                  |d      dd d| j                  |dd      dd dd d| j                  |d      dd | j                  |dd      | j                  |d      |d|      S )Nr   r2  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quoteVolumerP  )r#  rU  safe_symbolrR  safe_marketsafe_tickeriso8601safe_string_2)r  r   r]  r   r^  r2  
tickerDatar  s           r  parse_tickerzlbank.parse_tickerk  s   > %%fk:	##FH5!!(F3__VXr:
!!(F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  r2  c                   K   | j                          d{    | j                  |      }|d   r3| j                  |d   g|       d{   }| j                  ||d         S d|d   i}| j	                  | j                  ||             d{   }| j                  |dg       }| j                  |di       }| j                  ||      S 7 7 7 @w)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>`
        Nr5   r2  r	  r  r   )load_marketsr]  fetch_tickersrR  spotPublicGetTicker24hrro  	safe_dictr  )	r  r2  r$  r]  responseForSwaprp  r&  r  firsts	            r  fetch_tickerzlbank.fetch_ticker  s      !!!V$&>$($6$6x8H7I6$RRO???F84DEEfTl
 55dkk'66RSS, x4tQ+  //A 	" S
 Ts4   CC3C
CACC=CCCsymbolsc                   K   | j                          d{    d}|5| j                  |      }t        |      }|dkD  r| j                  |d         }i }d}| j	                  d||      \  }}d}|dk(  r/d|d<   | j                  | j                  ||             d{   }n.d|d<   | j                  | j                  ||             d{   }| j                  |d	g       }| j                  ||      S 7 7 Z7 -w)
aw  
        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   rh   r5   rb  ra  allr2  r  )
r  market_symbolsrT  r]  r   *contractPublicGetCfdOpenApiV1PubMarketDataro  r  	safe_listparse_tickers)	r  r  r$  r]  symbolsLengthrp  r%  r&  r  s	            r  r  zlbank.fetch_tickers  s     !!!))'2GLMq WQZ099.&RXYf6>&-GN#!LLT[[Y`bhMijjH %GH!99$++gv:VWWH\ ~~h3!!$00 	" k Xs4   C=C7BC=C9.C=C;*C=9C=;C=r   c           	      .  K   | j                          d{    | j                  |      }|d}d|d   i}d}| j                  d||      \  }}d}|dk(  r/||d<   | j                  | j	                  ||             d{   }n.||d<   | j                  | j	                  ||             d{   }| j                  |d	i       }| j                         }	|d   r| j                  ||d   |	d
ddd      S | j                  ||d   |	d
ddd      S 7 7 7 dw)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<   r2  r	  r`   r5   r   sizer  bidsasksr@  r  r   r   )	r  r]  r   +contractPublicGetCfdOpenApiV1PubMarketOrderro  spotPublicGetDepthrR  millisecondsparse_order_book)
r  r2  r   r$  r]  rp  r%  r&  	orderbookr   s
             r  fetch_order_bookzlbank.fetch_order_book  sI     !!!V$=EfTl
 99:JFTZ[f6>$GG!MMdkkZaciNjkkH#GFO!44T[[&5QRRHb OOHfb9	%%'	&>((F84DiQWY_ahjrss$$Yx0@)VU[]^`abbI 	" l Ss5   DDA(D?D .D.D/A!DDDtradec                 b   | j                  |dd      }|| j                  |d      }| j                  |dd      }|| j                  |d      }| j                  |d      }|| j                  |d      }| j                  |d	      }|| j                  |d
      }| j                  |dd      }d }d }	|J|j	                  d      }
| j                  |
d      }| j                  |
d      }d}d}	||dk(  rd}n|dk(  rd}	| j                  |dd      }|| j                  |d      }| j                  |d      }| j                  d |      }d }| j                  |d      }|#||dk(  r|d   n|d   | j                  |d      d}| j                  || j                  |      |||||	||||||d|      S )Ndate_mstimedealTimer?  qtydealQuantityr@  	dealPricequoteQtydealVolumePrice	tradeTyper%  r3  r   r   r   r   r]  r   tidr	  txUuid	orderUuidtradeFeebuyr5  r6  tradeFeeRate)rF  currencyrate)r   rr  r2  r	  orderr%  takerOrMakersider@  r?  rF  feerP  )safe_integer_2r#  r  rU  rV  r  
safe_trader  )r  r  r]  r   amountStringpriceString
costStringr  r%  r  r_  typePartr	  r  r2  r  feeCosts                    r  parse_tradezlbank.parse_tradeq  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                 `  K   | j                          d{    | j                  |      }d|d   i}|||d<   |t        |d      |d<   nd|d<   | j                  | j                  di       }| j                  |dd	      }| j                  |d|      }	| j                  |d      }d}
|	d
k(  r*| j                  | j                  ||             d{   }
n)| j                  | j                  ||             d{   }
| j                  |
dg       }| j                  ||||      S 7 7 X7 0w)a~  
        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>`
        Nr2  r	  r  iX  r  rj   r   r   spotPublicGetSupplementTradesr  )r  r]  rB  rR  r  rU  omitr  ro  r   r  parse_trades)r  r2  r  r   r$  r]  rp  r  defaultMethodr   r&  r   s               r  fetch_tradeszlbank.fetch_trades  s=     !!!V$fTl
 #GFO!%oGFO!GFO//$,,rB(((<QR!!&(MB68,44!??GU[@\]]H!55dkk'66RSSH" &"5  >>K 	"" ^Ss4   D.D'B:D.D*)D.;D,<,D.*D.,D.c           	          | j                  |d      | j                  |d      | j                  |d      | j                  |d      | j                  |d      | j                  |d      gS )Nr   r   r            )safe_timestamprZ  )r  ohlcvr]  s      r  parse_ohlcvzlbank.parse_ohlcv  sn     q)UA&UA&UA&UA&UA&
 	
r  r~   c                   K   | j                          d{    | j                  |      }|d}nt        |d      }|*| j                  |      }| j	                         |dz  |z  z
  }|d   | j                  | j                  ||      | j                  |dz        t        |dz   d      d}| j                  | j                  ||             d{   }	| j                  |	dg       }
| j                  |
||||      S 7 7 .w)	a  
        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
        Nr   r  i  r	  r   )r2  r%  r  r  r  )r  r]  rB  parse_timeframer  rU  r  parse_to_intspotPublicGetKlinero  r  parse_ohlcvs)r  r2  	timeframer  r   r$  r]  durationrp  r&  ohlcvss              r  fetch_ohlcvzlbank.fetch_ohlcv  s     !!!V$=Et$E=++I6H%%'8d?U+BCETl$$T__iK%%edl3	4(	
 00Wf1MNN&"5,   E5IIM 	" Os"   DC>B:DD -D Dc                    | j                  |d      }||| j                  |      d}| j                  |d      }| j                  |d      }|| j                  |di       }| j                  |di       }t        |j	                               }t        dt        |            D ]W  }	||	   }
| j                  |
      }| j                         }| j                  ||
      |d<   | j                  ||
      |d<   |||<   Y | j                  |      S | j                  |d	      }|t        dt        |            D ]i  }	||	   }| j                  |d
      }
| j                  |
      }| j                         }| j                  |d      |d<   | j                  |d      |d<   |||<   k | j                  |      S t        |t              }|du rt        dt        |            D ]i  }	||	   }| j                  |d      }
| j                  |
      }| j                         }| j                  |d      |d<   | j                  |d      |d<   |||<   k | j                  |      S y )Nts)rP  r   rr  r  toBtcfreezefreer   usedbalancesassetlockedTcoin	usableAmt	freezeAmt)r#  r  rR  listkeysrS  rT  rW  accountrU  safe_balance
isinstance)r  r&  r   r[  r  r  r  r  
currenciesr\  
currencyIdcoder  r  item	codeInnerisArrays                    r  parse_balancezlbank.parse_balanceL  sp   \ %%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( ,Aw!--dF;
 33J?	,,."&"2"24"E"&"2"24"E$+y!, $$V,,r  c                    | j                  |d      }| j                  ||      }| j                  |d      }| j                  |d      }| j                  |d      }| j                  |d      }| j                  |d      }	d }
|	%| j	                  |	dz  dz        }t        |      dz   }
i d	|d|d
|d|d|d|d| j                  |      dd dd dd dd dd dd dd dd d|
S )Nr2  markedPriceunderlyingPricefundingRatenextFeeTimepositionFeeTimer  hrP  	markPrice
indexPricefundingTimestampfundingDatetimer   rr  nextFundingRatenextFundingTimestampnextFundingDatetimepreviousFundingRatepreviousFundingTimestamppreviousFundingDatetimeinterval)rU  r  rZ  r#  r  strr  )r  r   r]  r^  r2  r  r  r  fundingTimer   intervalStringr  s               r  parse_funding_ratezlbank.parse_funding_rate  s     ##FH5!!(F3$$V];	%%f.?@
&&v}=''>++F4EF&((2)=)BCH ]S0N
F
f
 
 *	

 ;
 
 t||K8
 
 
 t
 #D
 "4
 "4
 '
 &t
  !
 	
r  c                    K   | j                          d{    | j                  |      }| j                  |d   g|       d{   }| j                  ||d         S 7 H7 w)aq  
        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>`
        Nr2  )r  r]  fetch_funding_ratesrR  )r  r2  r$  r]  r  s        r  fetch_funding_ratezlbank.fetch_funding_rate  sd      !!!V$ $ 8 8&:J9KV TTx0@AA 	"Ts!   A#A.A#A!A#!A#c                   K   | j                          d{    | j                  |      }ddi}| j                  | j                  ||             d{   }| j	                  |dg       }| j                  ||      S 7 g7 +w)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
        Nra  rb  r  )r  r  r  ro  r  parse_funding_rates)r  r  r$  rp  r&  r  s         r  r  zlbank.fetch_funding_rates  s      !!!%%g.G
 HHU\^dIeff0 ~~h3''g66= 	"
 gs!   BA>=BB *B Bc                   K   | j                          d{    | j                  | j                  di       }| j                  |dd      }| j                  |d|      }d}|dk(  r| j	                          d{   }n6|dk(  r| j                          d{   }n| j                          d{   }| j                  |      S 7 7 N7 27 w)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>`
        NrC   r   r   (spotPrivatePostSupplementUserInfoAccountspotPrivatePostUserInfo)r  rR  r  rU  r  r  r   r  )r  r$  r  r  r   r&  s         r  fetch_balancezlbank.fetch_balance0  s      !!!//$,,C(((<_`!!&(MB??!JJLLH00!99;;H!CCEEH> !!(++S 	" M;EsF   CCA!C8C9CC	C/C0CC	CCr  c                     | j                  |d      }| j                  |      }||| j                  |d      | j                  |d      d d dS )Nr2  makerCommissiontakerCommission)rP  r2  r   r   r  	tierBased)rU  r  rZ  )r  r  r]  r^  r2  s        r  parse_trading_feezlbank.parse_trading_feef  s^     ##C2!!(+%%c+<=%%c+<=
 	
r  c                    K   | j                  |      }| j                  | j                  |d|d   i             d{   }| j                  ||      S 7 w)aa  
        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	  N)r]  fetch_trading_feesro  r  )r  r2  r$  r]  r[  s        r  fetch_trading_feezlbank.fetch_trading_feey  sW      V$..t{{6JPVW[P\C]/^__~~ff-- `s   ;AAAc                 6  K   | j                          d{    i }| j                  | j                  ||             d{   }| j                  |dg       }i }t	        dt        |            D ]   }| j                  ||         }|d   }|||<   " |S 7 ~7 Uw)aa  
        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
        Nr  r   r2  )r  )spotPrivatePostSupplementCustomerTradeFeero  rR  rS  rT  r  )	r  r$  rp  r&  r   r[  r\  r  r2  s	            r  r!  zlbank.fetch_trading_fees  s      !!!GGT[]cHdeex4q#d)$ 	!A((a1C]F F6N	!  	"es"   BB*BBABBrF  c                    K   | j                          d{    | j                  |      }|d   st        | j                  dz         d|d<   | j	                  |dd|d|       d{   S 7 U7 w)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>`
        Nr3   z9 createMarketBuyOrderWithCost() supports spot orders onlyFr   r]  r  )r  r]  r%   r	  r   )r  r2  rF  r$  r]  s        r  !create_market_buy_order_with_costz'lbank.create_market_buy_order_with_cost  sy      !!!V$f~tww)ddee6;23&&vxdFSSS 	"
 Ts"   A0A,AA0'A.(A0.A0r%  r  r?  r@  c                 8  K   | j                          d{    | j                  |      }| j                  |dd      }| j                  |dd      }	| j	                  |d      }
| j                  |g d      }d|d	   i}|
d
k(  }|
dk(  }|	xs |
dk(  }|dk(  r|s|s|rt        | j                  dz         |dk(  r]||d<   | j                  ||      |d<   | j                  ||      |d<   |r|dz   dz   |d<   n-|r|dz   dz   |d<   n|r|dz   dz   |d<   n|dk(  r|dk(  r!|dz   dz   |d<   | j                  ||      |d<   n|dk(  r|dz   dz   |d<   d}d}| j                  |ddd      \  }}| j                  |d      }| j                  |d      }|| j                  ||      }ny|re|t        | j                  dz         | j                  |      }| j                  |      }t        j                  ||      }| j                  ||      }n| j                  ||      }||d<   |||d<   | j!                  | j"                  di       }| j%                  |dd      }| j%                  |d|      }| j                  |d      }d}|d k(  r*| j'                  | j)                  ||             d{   }n)| j+                  | j)                  ||             d{   }| j!                  |d!i       }| j-                  | j%                  |d"      |d#|      S 7 7 i7 Aw)$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>`
        N	custom_idclientOrderIdpostOnlyFr   )r(  r)  r   r*  r2  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%  r@  r?  r3  iocfokr   sellr  Tr>   r   rF  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	  rP  )r  r]  r  	safe_boolsafe_string_upperr  r#   r	  price_to_precisionamount_to_precisionhandle_option_and_paramsrZ  cost_to_precisionnumber_to_stringr)   
string_mulrR  r  rU  r.  ro  r   
safe_order)r  r2  r%  r  r?  r@  r$  r]  r)  r*  r   rp  r+  r,  r   quoteAmountr   rF  r  r  costRequestr  r  r   r&  r[  s                             r  r   zlbank.create_order  s     !!!V$**6;P>>&*e<,,V]C6#\]fTl
 e#e#2kT1H3#tww  *c   c  d  d7?"GFO#66vuEGG $ 8 8 HGH"&*u"4"&*u"4"&*w"6Xv~"&*x"7$($<$<VV$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#. $#0GK //$,,rB(((<bc!!&(MB68,11!<<T[[RX=YZZH!FFt{{SZ\bGcddH 626""6:6 
  	Q 	"r [ds4   LLJL,L-)LL=LLLstatusc                 :    ddddddd}| j                  |||      S )Ncanceledr|  closed)z-101234)rU  )r  r;  statusess      r  parse_order_statuszlbank.parse_order_status
  s2    
 &&99r  r  c                 4   | j                  |dd      }| j                  |dd      }| j                  |dd      }| j                  |d      }| j                  |d      }| j                  ||      }d }d	}	d
}
| j                  |dd      }|j	                  d      }| j                  |d      }| j                  |d      }|dk(  rd}
|dk(  rd}	d}|dk(  rd}|dk(  rd}| j                  |d      }| j                  |d      }d }|dk7  r| j                  |dd      }| j                  |dd      }| j                  i d|d|d | j                  |      d!|d"d d| j                  |      d|d   d|
d#|d$|	d%|d|d&d d'|d|d(|d)d d d |d d*|      S )+NorderIdr/  r)  r(  r  create_timer;  r2  Fr   r%  r  r3  r   r   r]  r   Tr   r+  r   r,  r   r@  cummulativeQuoteQty
buy_marketorigQtyr?  executedQtydeal_amountr	  rr  r   lastTradeTimestampr   r*  r  r   rF  filled	remaining)r   r  rP  r  )r  r  rU  r  rV  r8  r  rE  )r  r  r]  r	  r)  r   	rawStatusr^  r   r*  r%  rawTyper_  r  r  r@  r  r  filledStrings                      r  parse_orderzlbank.parse_order  sn   p y*=**5/;O''v}E	$$UH5	##E84!!(F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                 D  K   | j                          d{    | j                  |d      }|0| j                  | j                  di       }| j                  |dd      }|dk(  r| j	                  |||       d{   S | j                  |||       d{   S 7 7 !7 w)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>`
        Nr   r_   r   )r  rU  rR  r  fetch_order_supplementfetch_order_default)r  r	  r2  r$  r   r  s         r  fetch_orderzlbank.fetch_order  s      !!!!!&(3>oodllL"EG%%gx9OPF++44RHHH--b&&AAA 	" IAs4   B BA#B :B;B BB B B c                 B  K   |t        | j                  dz         | j                          d {    | j                  |      }|d   |d}| j	                  | j                  ||             d {   }| j                  |di       }| j                  |      S 7 j7 *w)N( fetchOrder() requires a symbol argumentr	  r2  rG  r  )r   r	  r  r]  #spotPrivatePostSupplementOrdersInforo  r  rT  )r  r	  r2  r$  r]  rp  r&  r[  s           r  rV  zlbank.fetch_order_supplement  s     >#DGG.X$XYY!!!V$Tl
 AA$++gW]B^__, &"5''; 	" `s"   .BBAB2B3)BBc                   K   |t        | j                  dz         | j                          d {    | j                  |      }|d   |d}| j	                  | j                  ||             d {   }| j                  |dg       }t        |      }|dk(  r| j                  |d         S t        | j                  dz         7 7 Uw)NrZ  r	  )r2  r/  r  r   r   z0 fetchOrder() can only fetch one order at a time)
r   r	  r  r]  spotPrivatePostOrdersInforo  rR  rT  rT  r   )	r  r	  r2  r$  r]  rp  r&  r[  	numOrderss	            r  rW  zlbank.fetch_order_default  s     >#DGG.X$XYY!!!V$Tl
 77GV8TUU* 626K	>##F1I.. TWW'YYZZM 	" Vs#   .C
CAC
2C3AC
C
c                   K   |t        | j                  dz         | j                          d{    | j                  |      }| j	                  |d|      }| j                  |d      }d|d   i}|||d<   |-| j                  |d      |d<   | j                  |dz   d      |d	<   | j                  | j                  ||             d{   }| j                  |d
g       }| j                  ||||      S 7 7 -w)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>`
        Nz+ fetchMyTrades() requires a symbol argument
start_dater2  r	  r  -i \&end_dater  )r   r	  r  r]  rR  r  ymd!spotPrivatePostTransactionHistoryro  r  r  )	r  r2  r  r   r$  r]  rp  r&  r   s	            r  fetch_my_tradeszlbank.fetch_my_trades  s     >#DGG.[$[\\!!!V$e<6<0fTl
 #GFO$(HHUC$8GL!"&((58+;S"AGJ??GU[@\]]* &"5  >>Q 	"$ ^s"   .C<C8BC<C:,C<:C<c                 x  K   |t        | j                  dz         | j                          d{    | j                  |      }|d}|d   d|d}| j	                  | j                  ||             d{   }| j                  |di       }| j                  |dg       }	| j                  |	|||      S 7 7 @w)	a4  
        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>`
        Nz) fetchOrders() requires a symbol argumentr   r	  r   r2  current_pagepage_lengthr  orders)	r   r	  r  r]  *spotPrivatePostSupplementOrdersInfoHistoryro  rR  r  parse_orders
r  r2  r  r   r$  r]  rp  r&  r[  rk  s
             r  fetch_orderszlbank.fetch_orders<  s      >#DGG.Y$YZZ!!!V$=ETl 
 HHU\^dIeff8 626"5  >>Q 	" g"   .B:B6AB:7B88?B:8B:c                 x  K   |t        | j                  dz         | j                          d{    | j                  |      }|d}|d   d|d}| j	                  | j                  ||             d{   }| j                  |di       }| j                  |dg       }	| j                  |	|||      S 7 7 @w)	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>`
        Nz- fetchOpenOrders() requires a symbol argumentr   r	  r   rh  r  rk  )	r   r	  r  r]  )spotPrivatePostSupplementOrdersInfoNoDealro  rR  r  rm  rn  s
             r  fetch_open_orderszlbank.fetch_open_ordersv  s      >#DGG.]$]^^!!!V$=ETl 

 GGT[]cHdee8 626"5  >>O 	" frp  c                   K   |t        | j                  dz         | j                          d{    | j                  |dd      }| j	                  |ddg      }| j                  |      }|d   |d}|||d<   | j                  | j                  ||             d{   }| j                  |di       }| j                  |      S 7 7 *w)a  
        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>`
        Nz) cancelOrder() requires a symbol argumentorigClientOrderIdr)  r	  r[  r  )
r   r	  r  r  r  r]  $spotPrivatePostSupplementCancelOrderro  r  rT  )	r  r	  r2  r$  r)  r]  rp  r&  r  s	            r  r   zlbank.cancel_order  s      >#DGG.Y$YZZ!!!**63FX6$7#IJV$Tl
 $+8G'(BB4;;wX^C_`` ~~h3%%3 	" as"   .CC	A/C C!)CCc                 @  K   |t        | j                  dz         | j                          d{    | j                  |      }d|d   i}| j	                  | j                  ||             d{   }| j                  |dg       }| j                  |      S 7 i7 *w)a  
        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>`
        Nz- cancelAllOrders() requires a symbol argumentr2  r	  r  )r   r	  r  r]  ,spotPrivatePostSupplementCancelOrderBySymbolro  r  rm  )r  r2  r$  r]  rp  r&  r  s          r  cancel_all_orderszlbank.cancel_all_orders  s      >#DGG.]$]^^!!!V$fTl
 JJ4;;W^`fKghh$ ~~h3  &&1 	"
 is"   .BBA B1B2)BBc                     | j                  | j                  d      }| j                  ||      }| j                  | j                  di       }| j                  |d|      }| j                  |||      }|S )Nr   r   network)rR  r  r1  rU  )r  currencyCoder$  r   defaultNetworkr   r{  s          r  get_network_code_for_currencyz#lbank.get_network_code_for_currency  sl    //$,,8IJ//N??4<<R@((NK""8Wg>r  r  c                 n  K   | j                          d{    | j                  | j                  di       }| j                  |dd      }| j                  |d|      }| j	                  |d      }d}|dk(  r| j                  ||       d{   }|S | j                  ||       d{   }|S 7 7 $7 
w)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>`
        NrI   r   r   fetchDepositAddressSupplement)r  rR  r  rU  r   fetch_deposit_address_supplementfetch_deposit_address_default)r  r  r$  r  r  r   r&  s          r  fetch_deposit_addresszlbank.fetch_deposit_address  s      !!!//$,,0ErJ(((<XY!!&(MB68,44!BB4PPH  "??fMMH 	" QMs4   B5B/A5B5B1B5(B3)B51B53B5c                   K   | j                          d {    | j                  |      }d|d   i}| j                  ||      }|||d<   | j                  |d      }| j	                  | j                  ||             d {   }| j                  |d      }| j                  |d      }| j                  |d      }	| j                  |d      }
| j                  | j                  di       }| j                  ||
|
      }|||||	d	S 7 7 w)
N	assetCoder	  netWorkr{  r  addressmemor   rP  r  r{  r  tag)
r  r  r~  r   spotPrivatePostGetDepositAddressro  rR  rU  r  r1  )r  r  r$  r  rp  r{  r&  r[  r  r  	networkIdinverseNetworksnetworkCodes                r  r  z#lbank.fetch_deposit_address_default  s!    !!!==&$
 44T6B!(GIYYvy1F>>t{{7TZ?[\\ 62""695vv.$$VY7	//$,,8JBO,,_iS"
 	
; 	" ]s#   DDA+DD	BD	Dc                 V  K   | j                          d {    | j                  |      }d|d   i}| j                  | j                  d      }| j	                  |d      }| j                  |||      }|||d<   | j                  |d      }| j                  | j                  ||             d {   }| j                  |d      }| j                  |d      }	| j                  |d      }
| j                  | j                  d	i       }| j	                  |||      }||||	|
d
S 7 7 uw)Nr  r	  r   r{  networkNamer  r  r  r   r  )	r  r  rR  r  r1  rU  r  *spotPrivatePostSupplementGetDepositAddressro  )r  r  r$  r  rp  r   r{  r&  r[  r  r  r  r  s                r  r  z&lbank.fetch_deposit_address_supplement@  s8    !!!==&HTN
 ??4<<<((;""8Wg>%,GM"YYvy1FHHU\^dIeff 62""695vv.//$,,8JBO,,_gwO"
 	
; 	" gs#   D)D$BD)1D'2A3D)'D)r  c                   K   | j                  ||      \  }}| j                  |       | j                          d{    | j                  |d      }| j	                  |d      }| j                  d|d       | j                  |      }||d   ||d}|||d<   | j                  |dd      }	| j	                  |ddg      }| j                  | j                  d	      }
| j                  |
|	|	      }|||d<   | j                  | j                  ||             d{   }| j                  |d
i       }|| j                  |d      dS 7 7 /w)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>`
        Nr  rq   r	  )r  r  r?  r  r  r{  r  r   r  
withdrawId)rP  r	  )handle_withdraw_tag_and_paramscheck_addressr  rU  r  check_required_argumentr  safe_string_upper_2rR  r  !spotPrivatePostSupplementWithdrawro  )r  r  r?  r  r  r$  r  r  rp  r{  r   r  r&  r[  s                 r  rq   zlbank.withdrawg  se     99#vFV7#!!!vu-65)$$Ze<==&TN	
 ?!GFO**69mL6I}#=>??4<<<$$Xw@	 %.GM"??GU[@\]] 626""6<8
 	
O 	"4 ^s"   :EECEE-EEc                 j    dddddddddddd}| j                  | j                  ||i       ||      S )	Npendingokfailedr=  transfer)r@  rA  rB  rC  5)r@  rA  rB  rC  )deposit
withdrawal)rU  rR  )r  r;  r%  rD  s       r  parse_transaction_statuszlbank.parse_transaction_status  sV      	
 $ CVVTTr  transactionr  c                    | j                  |d      }d }|d}nd}| j                  |d      }| j                  |dd      }| j                  | j                  di       }| j                  |d      }| j                  |||      }	| j                  |d	      }
d }d }|dk(  r|
}n|
}| j	                  |d
      }| j                  |dd      }| j                  ||      }| j                  | j                  |d      |      }d }| j	                  |d      }|||d}i d|d|d|d|d| j                  |      d|	d	|
d|d|dd dd dd d|d
|d|d|dd d |dk(  |dS )Nr	  r  r  txId
insertTime	applyTimer   r  r  r?  r  coidr;  r  )rF  r  rP  txidr   rr  r{  	addressToaddressFromr  tagTotagFromr%  r  updatedr  )commentinternalr  )	rU  r  rR  r  rZ  r  rW  r  r  )r  r  r  r	  r%  r  r   r   r  r{  r  r  r  r?  r  r  r;  r  r  s                      r  parse_transactionzlbank.parse_transaction  s-   < k40:DDV4''\;O	??4<<1CRH$$[-@	""8Y	B"";	:	9!KI!!+x8''VVD
&&z8<..t/?/?X/VX\]"";6 C
K
"
 D
 	

 Y/
 w
 w
 
 ;
 4
 T
 t
 D
 f
 
  f!
" t#
$ :-)
 	
r  c                 T  K   | j                          d{    i }d}|| j                  |      }|d   |d<   |||d<   | j                  | j                  ||             d{   }| j	                  |di       }| j                  |dg       }	| j                  |	|||      S 7 7 @w)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  'spotPrivatePostSupplementDepositHistoryro  rR  r  parse_transactions)
r  r  r  r   r$  rp  r  r&  r  depositss
             r  fetch_depositszlbank.fetch_deposits	  s      !!!
 }}T*H&tnGFO#(GK EEdkkRY[aFbcc0 x4>>$<&&x5%HHK 	" d"   B(B$AB(%B&&?B(&B(c                 T  K   | j                          d{    i }d}|| j                  |      }|d   |d<   |||d<   | j                  | j                  ||             d{   }| j	                  |di       }| j                  |dg       }	| j                  |	|||      S 7 7 @w)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  "spotPrivatePostSupplementWithdrawsro  rR  r  r  )
r  r  r  r   r$  rp  r  r&  r  r   s
             r  fetch_withdrawalszlbank.fetch_withdrawals9	  s      !!!

 }}T*H&tnGFO#(GK @@WV\A]^^6 x4NN4b9	&&y(E5IIS 	" _r  codesc                   K   | j                          d{    | j                  d      }d}|du r| j                  | j                  di       }| j	                  |dd      }| j	                  |d|      }| j                  |d      }|dk(  r| j                  |       d{   }|S | j                  |       d{   }|S | j                  |       d{   }|S 7 7 >7 %7 w)aG  
 @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>`
        NFTrl   r   r   fetchPublicTransactionFees)r  check_required_credentialsrR  r  rU  r  fetch_public_transaction_feesfetch_private_transaction_fees)r  r  r$  isAuthorizedr[  r  r  r   s           r  fetch_transaction_feeszlbank.fetch_transaction_feesp	  s      !!!66u=4oodll4JBOG ,,Wh@]^M%%fhFFYYvx0F55#AA&II
   $BB6JJ   ==fEEF 	" JJEsF   C%CB	C% C!C%;C!<C%C#C%C%!C%#C%c                 8  K   | j                          d {    | j                          d {   }| j                  |dg       }i }t        dt	        |            D ]  }||   }| j                  |d      }| j                  |      }| j                  |dg       }	i ||<   t        dt	        |	            D ]V  }
|	|
   }| j                  |d      }| j                  | j                  d   ||      }| j                  |d      }|O|||   |<   X  |i |dS 7 7 w)	Nr  r   r  networkListr
  r   withdrawFeerq   r  rP  )	r  r   rR  rS  rT  rU  rW  r  rZ  )r  r$  r&  r[  withdrawFeesr\  entryr  r  r  jnetworkEntryr  r  r  s                  r  r  z$lbank.fetch_private_transaction_fees	  s@     !!!??AA> 626q#f+& 	:A1IE))%8J**:6D//%CK!#L1c+./ :*1~ ,,\6B	"..t||<N/OQZ\ef&&|]C?69L&{3:	: %
 	
_ 	"As&   DDDDCDDDc                   K   | j                          d {    | j                  |dd      }| j                  |ddg      }i }|| j                  |      }|d   |d<   | j	                  | j                  ||             d {   }| j                  |dg       }i }t        dt        |            D ]  }||   }	| j                  |	d      }
|
dk(  s | j                  |	d      }| j                  |      }| j                  |	d      }| j                  | j                  d	   ||      }||}| j                  |	d
      }||   i ||<   | j                  |      ||   |<    |i |dS 7 P7 w)Nr  r  r	  r  r   canWithDrawtruechainr   r  r  )r  r  r  r  spotPublicGetWithdrawConfigsro  rR  rS  rT  rU  rW  r  r  )r  r$  r  rp  r  r&  r[  r  r\  r  canWithdrawr  r  r  r{  r  s                   r  r  z#lbank.fetch_public_transaction_fees	  s     !!!!!&&+>6FK#89}}T*H#+D>GK ::4;;wPV;WXX, 626q#f+& 	JA!9D//$>Kf$!--dK@
 33J?	((w7**4<<8J+KUTYZ?'G&&tU3	*2.0L+373D3DS3IY'0	J %
 	
[ 	" Ys*   E+E&A,E+E)AE+BE+)E+c                   K   | j                          d{    | j                  d      }d}|du r| j                  | j                  di       }| j	                  |dd      }| j	                  |d|      }| j                  |d      }|dk(  r| j                  ||       d{   }|S | j                  ||       d{   }|S | j                  ||       d{   }|S 7 7 @7 &7 w)ar  
        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>`
        NFTrN   r   r   fetchPublicDepositWithdrawFees)r  r  rR  r  rU  r  "fetch_public_deposit_withdraw_fees#fetch_private_deposit_withdraw_fees)r  r  r$  r  r&  r  r  r   s           r  fetch_deposit_withdraw_feesz!lbank.fetch_deposit_withdraw_fees	  s      !!!66u=4oodll4NPRSG ,,Wh@abM%%fhFFYYvx0F99!%!H!HPV!WW
  "&!I!I%QW!XX  "DDUFSSH 	" XXSsF   C(C B
C(!C""C(=C$>C(C&C("C($C(&C(c                    K   | j                          d {    | j                  |       d {   }| j                  |dg       }| j                  ||d      S 7 C7 ,w)Nr  r  )r  r   r  parse_deposit_withdraw_fees)r  r  r$  r&  r  s        r  r  z)lbank.fetch_private_deposit_withdraw_fees
  s`      !!!??GG> ~~h3//eVDDC 	"Gs   AAAA+AAc                    K   | j                          d {    i }| j                  | j                  ||             d {   }| j                  |dg       }| j	                  ||      S 7 T7 +w)Nr  )r  r  ro  rR  "parse_public_deposit_withdraw_fees)r  r  r$  rp  r&  r  s         r  r  z(lbank.fetch_public_deposit_withdraw_fees8
  sn      !!!::4;;wPV;WXX, x466tUCC3 	"Xs!   A/A+*A/A-*A/-A/c                 B   i }t        dt        |            D ]  }||   }| j                  |d      }|du s | j                  |d      }| j	                  |      }|| j                  ||      sX| j                  |d      }	|	m| j                  ||      }
|
| j                  |g      ||<   n||   d   }|j                  |       | j                  |d      }| j                  | j                  d   ||      }||	d d	d d d	d
||   d   |<   |	d d	||   d<    |S )Nr   r  Tr  r  rP  r  r   r  r  rq   r  r   rq   )
rS  rT  rR  rU  rW  in_arrayrZ  deposit_withdraw_feerX  r  )r  r&  r  r[  r\  r  r  r  r  r  resultValueresultCodeInfor  r  s                 r  r  z(lbank.parse_public_deposit_withdraw_feesV
  s`   " q#h-(  	A1+C//#}=Kd"!--c;?
..z:=DMM$$>"&"2"23">K".&*oofd&C&.+/+D+DcU+KF4L-3D\&-AN*11#6 $ 0 0g >&*&6&6t||DV7WY^`e&f&2 ,726-"
 ,026,"	EF4L4[A (3.28F4L4; 	B r  c                 t   | j                  |      }| j                  |dg       }t        dt        |            D ]{  }||   }| j	                  |d      }| j                  | j                  d   ||      }| j                  |d      }	| j                  |d      }
|	a|
r|	d d|d<   |	d dd d dd	|d
   |<   } |S )Nr  r   r
  r   r  	isDefaultr  rq   r  r   )r  rR  rS  rT  rU  r1  r  rZ  )r  r  r  r[  r  r  r  r  r  r  r  s              r  parse_deposit_withdraw_feez lbank.parse_deposit_withdraw_fee
  s    6 **3/ooc="=q#k*+ 	A&q>L((v>I00>P1QS\^ghK**<GKkBI&*&**F:&  +&*!
  $&* 	3z";/	, r  r   GETc           
         | j                  || j                  |            }| j                  d   d   dz   | j                  z   dz   | j	                  ||      z   }|d   dk(  r|dz  }n(| j                  d   d   dz   | j	                  ||      z   }|d   d	k(  r+|rN|d
| j                  | j                  |            z   z  }n&| j                          t        | j                               }	| j                         | j                         z   }
| j                  d| j                  i|      }d }t        | j                        dkD  rd}nd}| j!                  | j                  | j                  |
||	d|                  }| j#                  |      }| j%                  |d      }|j'                         }d }|dk(  r| j)                  | j*                  dd      }d }|rX| j-                  | j*                  d      }|d| j/                  | j#                  | j                              }|| j*                  d<   n*| j/                  | j#                  | j                              }| j1                  ||d      }nN|dk(  rI| j3                  | j#                  |      | j#                  | j                        t4        j6                        }||d<   | j                  | j                  |            }d|	||
d}||||dS )Nr   r   r4  r   r3   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  r  r  uuid22uuid16ro  apiKeyrT  secret	rawencodeencodehashupperr0  r  rR  convert_secret_to_pemrsahmachashlibr  )r  pathr   r   r$  r  r  queryr  r   r  signatureMethodauthencodedr  uppercaseHashr  r   r  s                      r  r  z
lbank.sign
  s   		&$"5"5d";<iiv&,t||;cADDWDWX\^dDeeq6V5LC))E":.4t7J7J4QW7X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 fdwOOr  c                     d}t        |      dz
  }| j                  ||z        }| j                  |d      }d}t        d|      D ].  }||z  }| j                  ||      }|| j                  || dz   z  }0 |dz   S )N@   r   r   z-----BEGIN PRIVATE KEY-----

z-----END PRIVATE KEY-----)rT  r  sumrS  r  )	r  r  
lineLengthsecretLengthnumLinesr  r\  startends	            r  r  zlbank.convert_secret_to_pem
  s    
6{Q$$\J%>?88Ha(-q(# 	1A
NE((5*-C4;;uS)D00C	1 000r  httpCodereasonr  r   r  r  c
                    |y | j                  |d      }
|
dk(  s|
s+| j                  |d      }| j                  i dddddd	d
dddddddddddddddddddddd d!d"d#d$d%i d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGi dHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdg|| j                  |            }| j                  i dt        dt        d
t        dt
        dt        dt        dt        dt        dt        dt        dt        dt        dt        d t        d"t        d$t        d&t        i d(t        d*t        d,t        d.t        d0t        d2t        d4t        d6t        d8t        d:t        d<t        d>t        d@t        dBt        dDt        dFt        dHt        t        t        t        t        t        t        t        t        t        t        t        t        t        t        t        dh|t              } ||      y )iNr[  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@  rA  rB  rC  rD  rE  rF  rG  rH  rI  rJ  )rR  rU  jsonr   r   r&   r    r#   r!   r   r   r'   r$   r"   )r  r  r  r  r   r  r  r&  requestHeadersrequestBodysuccess	errorCodemessage
ErrorClasss                 r  handle_errorszlbank.handle_errors  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)T__name__
__module____qualname__r   r  r	   r'  r   r
   r0  r)  r*  dictr   r  r  r  r   r   r  r   r  r   r  r  r  r  r  r   r  r   r  r  r   r  r  r   r  r"  r   r!  floatr&  r   r   r   r   r   rE  r   rT  rX  rV  rW  rf  ro  rs  r   ry  r~  r   r  r  r  r   rq   r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  intrR  __classcell__)r  s   @r  r+   r+      s   c# cJ ') %3S %3N *, IV I" /1 M^ /1 ^@:4 : :6 :x 68 *0 *0F *0X 6:" J17 J1 J1X @DB PcS Pc PcS\ Pcd[ [v [ [z <@d[] 2? 2?S 2? 2?bfglbm 2?h
 
4 
( 8<$]ajl 4J 4JC 4JWZ 4Jquvzq{ 4Jl{ {z,
 ,
; ,
\ <> Bs B+ B <@ (7 (7| (7T *, 4, 4,l
T 
6 
EX 
& ;= .c .AT . /1 [ ( XZ Tc T T& mqy{ Z ZI ZY ZX] Zfi Zx	: 	:J Jv J JX 8<B BC B B* CGr  (s  (C  (D @DB *[C *[ *[X 37TX\eg 6?C 6?s 6?RU 6?p 04$UYbd 8? 8?C 8?s 8?imnsit 8?t 59tZ^gi 5?c 5? 5?TW 5?nrsxny 5?n 9=R &&S &&# &&P 59 $'c $'L =?  > . EG $
 $
> $
L HJ %
3 %
n %
N JNVX 9
3 9
 9
 9
]h 9
vU$P
T P
X P
Q\ P
d 04$UYbd 1I 1IC 1Is 1Iimnyiz 1If 37TX\eg 5JC 5Js 5JRU 5Jlpq|l} 5Jn =A ' 2 ;= 6
p :< 4
l BFb w 6 ?C2 $EL >B" D<3j3 3j &eBSW 5Pn
1pc p3 pS p# pX\ pdg pr  r+   )1 ccxt.async_support.base.exchanger   ccxt.abstract.lbankr   r+  r  ccxt.base.typesr   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  <module>rb     sw    6 +   n  n  n  n  n  n  * 0 - . ' & . + ) - ) . ) 4 %V-Hk V-r  