
    E#i$O                    T   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  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      r.g)    )Exchange)ImplicitAPIN)Any
CurrenciesCurrencyDepositAddressIntLedgerEntryLeverageTierLeverageTiersMarginModificationMarketNumOrder	OrderSide	OrderTypePositionStrTickersFundingRateTransactionTransferEntry)List)ExchangeError)AuthenticationError)PermissionDenied)ArgumentsRequired)
BadRequest)	BadSymbol)InsufficientFunds)InvalidOrder)NotSupported)NetworkError)RateLimitExceeded)OnMaintenance)RequestTimeout)	TICK_SIZE)Precisec                     ^  \ rS rSrS\4U 4S jjrS 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
 rS\S\4S jrSSS0 4S\S\S\S\4S jjrScS\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0 4S\\   S\4S jjrS0 4S\\   4S jjrScS jrSS0 4S\S\S\4S jjrSSS0 4S\S\S\4S jjrScS jr0 4S jr S r!0 4S\S \"4S! jjr#S0 4S\S"\$S#\%S$\"S%\&4
S& jjr'S0 4S\4S' jjr(S0 4S\4S( jjr)S0 4S)\S\4S* jjr*SSS0 4S\S\S\4S+ jjr+SSS0 4S\S\S\4S, jjr,SSS0 4S\S\S\4S- jjr-SSS0 4S\S\S\4S. jjr.SSS0 4S\S\S\4S/ jjr/S0 4S)\S\4S0 jjr0S0 4S\4S1 jjr1S0 4S2\\   S\S\\2   4S3 jjr3ScS4 jr4S5 r5SSS0 4S6\6S\S\S\\7   4S7 jjr8ScS\74S8 jjr9S9 r:0 4S6\S\;4S: jjr<ScS\;4S; jjr=SSS0 4S6\6S\S\4S< jjr>SSS0 4S6\6S\S\4S= jjr?S0 4S6\S$\"S>\S?\6S\@4
S@ jjrAScSA\SB\BS\@4SC jjrCSD rDS0 4SE\ES\4SF jjrF0 4S\S$\"4SG jjrG0 4S\S$\"4SH jjrH0 4S\S\I4SI jjrJScS\I4SJ jjrKS0 4S\\   S\L4SK jjrMSdS\L4SL jjrN0 4S\S\\O   4SM jjrPScS\\O   4SN jjrQSSS0 4S\S\S\4SO jjrR0 4S\S\S4SP jjrT0 4S\S\S4SQ jjrUScS\S4SR jjrVSSS0 4S\6S\S\4SS jjrWScST jrX0 4S\4SU jjrYS0 4S\\   S\\Z   4SV jjr[ScSW jr\0 4S6\S$\"SX\SY\S\]4
SZ jjr^ScS[ jr_S0 4S\\S\64S] jjr`SS0 4S)\S\S"\$S#\%S$\&S%\&S\24S^ jjraS_ rb/ S`0 SS4Sa jrcSbrdU =re$ )ext   returnc                   > U R                  [        [        U ]  5       0 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_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_S0S_S1S_E0 S2S_S3S_S4S_S5S_S6S_S7S_S8S_S9S_S:S_S;S_S<S_S=S_S>S_S?S_S@S_SAS_SBS_E0 SCS_SDS_SES_SFS_SGS_SHS_SIS_SJS_SKS_SLS_SMS_SNS_SOS_SPS_SQS_SRS_SSS_E0 STS_SUS_SVS_SWS_SXS_SYS_SZS_S[S_S\S_S]S_S^S_S_S_S`S_SaS_SbS_ScS_SdS_ESSSSSSSSe.E_Sf[        _SgShSiSjSkSlSm.SnSoSpSq/SrSs._StSuSvSwSvSvSvSvSvSvSvSvSvSvSx.0Su0 SySv_SzSv_S{Sv_S|Sv_S}Sv_S~Sv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSSvS.E0Su0 SySv_SzSv_S{Sv_S|Sv_S}Sv_S~Sv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSSvS.E0S.SvSvSvSvSvSvSvSvSvSvSvS.SSwSvSvSvS.SvSvSvS.SSv0S.0 SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv0E0 SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SvSvSvS.ES.0 SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv0E0 SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SSv_SvSvS.ES.SvSvS.SvSvS.SSv0SSv0S.Sm.S._SSSU R                  S5      U R                  S5      U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      //U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      //S.S.SSU R                  S5      U R                  S5      U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      //U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      /U R                  S5      U R                  S5      //S.S.S._S0 S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _S[        _GS [        _GS[        _GS[        _GS[        _GS[        _GS[        _0 GS[        _GS[        _GS[        _GS	[        _GS
[        _GS[        _GS[        _GS[        _GS[        _GS[        _GS[        _GS[        _GS[        _GS[        _GS[        _GS[        _GS[        _E0 GS[        _GS[        _GS[        _GS[        _GS[        _GS[        _GS[        _GS[        _GS[        _GS [        _GS![        _GS"[        _GS#[        _GS$[        _GS%[        _GS&[        _GS'[        _E0 GS([        _GS)[        _GS*[        _GS+[        _GS,[        _GS-[        _GS.[        _GS/[        _GS0[        _GS1[        _GS2[        _GS3[        _GS4[        _GS5[        _GS6[        _GS7[        _GS8[        _E0 GS9[        _GS:[        _GS;[        _GS<[        _GS=[        _GS>[        _GS?[        _GS@[        _GSA[        _GSB[        _GSC[        _GSD[        _GSE[        _GSF[        _GSG[        _GSH[        _GSI[        _E0 GSJ[        _GSK[        _GSL[        _GSM[        _GSN[        _GSO[        _GSP[        _GSQ[        _GSR[        _GSS[        _GST[        _GSU[        _GSV[        _GSW[        _GSX[         _GSY[        _GSZ[        _E[        [        [        [        [        [        GS[.E[        [        [        GS\.GS]._GS^GS_GS`GSaGSbGScGSdGSeGSfGSgGShGSiGSjGSkGSl._GSm0 _GSnSGSoGSpGSqGSrGSsGSsGSsGStGSu.0 GSvGSw_GSxGSy_GSzGS{_GS|GS}_GS~GSw_GSGSy_GSGS{_GSGS_GSGS_GSGS_GSGS_SGS_GSGS_GSGS_GSGS_GSGS_GSGS_0 GSGS_GSGS_GSGS_GSGS_GSGS_SGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_E0 GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_EGSGSGSGSGSGSGSGSGS.E0 GSwGSv_GSyGSx_GS{GSz_GS}GS|_GSGS_GSS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSS_0 GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_E0 GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_GSGS_EGSGSGSGSGSGS.ESSGS._GSSSSSS SSS SSSSGS.SSSSSSSGS.S SSGSGSSSSGS.SSSSSSGS.SSSSSSSGS.SSGSGSSSSSSGS.	SSGSSvGSSSSSSGS.
GSGS0GS.	GSGS0GSSSSSGS.SSGS.S S GS.GS.GSGS0GSGS0GS.GSGS0GSGS0GS.GS._5      $ (  Nidr*   nameXT	countriesSC	rateLimitd   versionv4	certifiedFproThasCORSspotmarginswapfutureoption	addMarginborrowMargincancelAllOrderscancelOrdercancelOrderscreateDepositAddresscreateMarketBuyOrderWithCostcreateMarketSellOrderWithCostcreateOrdercreatePostOnlyOrdercreateReduceOnlyOrder	editOrderfetchAccountsfetchBalancefetchBidsAsksfetchBorrowInterestfetchBorrowRatefetchBorrowRateHistoriesfetchBorrowRateHistoryfetchBorrowRatesPerSymbolfetchCanceledOrdersfetchClosedOrdersfetchCurrenciesfetchDepositfetchDepositAddressfetchDepositAddressesfetchDepositAddressesByNetworkfetchDepositsfetchDepositWithdrawalsfetchDepositWithdrawFeefetchDepositWithdrawFeesfetchFundingHistoryfetchFundingIntervalfetchFundingIntervalsfetchFundingRatefetchFundingRateHistoryfetchFundingRatesfetchIndexOHLCVfetchL3OrderBookfetchLedgerfetchLedgerEntryfetchLeveragefetchLeverageTiersfetchMarketLeverageTiersfetchMarketsfetchMarkOHLCVfetchMyTrades
fetchOHLCVfetchOpenInterestfetchOpenInterestHistoryfetchOpenOrders
fetchOrderfetchOrderBookfetchOrderBooksfetchOrdersfetchOrdersByStatusfetchOrderTradesfetchPositionfetchPositionsfetchPremiumIndexOHLCVfetchSettlementHistoryfetchStatusfetchTickerfetchTickers	fetchTimefetchTradesfetchTradingFeefetchTradingFeesfetchTradingLimitsfetchTransactionFeefetchTransactionFeesfetchTransactionsfetchTransferfetchTransfersfetchWithdrawalfetchWithdrawalsfetchWithdrawalWhitelistreduceMarginrepayMargin)setLeverage	setMarginsetMarginModesetPositionModesignIntransferwithdrawprecisionModeurlszehttps://user-images.githubusercontent.com/14319357/232636712-466df2fc-560a-4ca4-aab2-b1d954a58e24.jpgzhttps://sapi.xt.comzhttps://fapi.xt.comzhttps://dapi.xt.comzhttps://api.xt.com)r;   linearinverseuserzhttps://xt.comz3https://www.xt.com/en/accounts/register?ref=9PTM9VWzhttps://doc.xt.com/z https://github.com/xtpub/api-doczhttps://www.xt.com/en/rate)logoapiwwwreferraldocfeesr   get   
   )
currenciesdepthklinesymboltickerzticker/bookzticker/pricez
ticker/24htimeztrade/historyztrade/recentzwallet/support/currencyz-future/market/v1/public/contract/risk-balancez.future/market/v1/public/contract/open-interestz/future/market/v1/public/leverage/bracket/detailz-future/market/v1/public/leverage/bracket/listz$future/market/v1/public/q/agg-tickerz%future/market/v1/public/q/agg-tickerszfuture/market/v1/public/q/dealzfuture/market/v1/public/q/depthz&future/market/v1/public/q/funding-ratez-future/market/v1/public/q/funding-rate-recordz%future/market/v1/public/q/index-pricezfuture/market/v1/public/q/klinez$future/market/v1/public/q/mark-pricez,future/market/v1/public/q/symbol-index-pricez+future/market/v1/public/q/symbol-mark-pricez future/market/v1/public/q/tickerz!future/market/v1/public/q/tickersgp=
ף
@)z$future/market/v1/public/symbol/coinsz%future/market/v1/public/symbol/detailz#future/market/v1/public/symbol/list)r;   r   r   )balancebalancesbatch-orderzdeposit/addresszdeposit/historyzhistory-order
open-orderorderorder/{orderId}tradezwithdraw/historyg?)r   r   zbalance/transferzbalance/account/transferws-token)r   r   r   r   )r   postdeleteputz#future/trade/v1/entrust/plan-detailz!future/trade/v1/entrust/plan-listz)future/trade/v1/entrust/plan-list-historyz%future/trade/v1/entrust/profit-detailz#future/trade/v1/entrust/profit-listzfuture/trade/v1/order/detailzfuture/trade/v1/order/listz"future/trade/v1/order/list-historyz future/trade/v1/order/trade-listzfuture/user/v1/account/infozfuture/user/v1/balance/billszfuture/user/v1/balance/detailz(future/user/v1/balance/funding-rate-listzfuture/user/v1/balance/listzfuture/user/v1/position/adlzfuture/user/v1/position/listz#future/user/v1/user/collection/listzfuture/user/v1/user/listen-keyz'future/trade/v1/entrust/cancel-all-planz.future/trade/v1/entrust/cancel-all-profit-stopz#future/trade/v1/entrust/cancel-planz*future/trade/v1/entrust/cancel-profit-stopz#future/trade/v1/entrust/create-planz%future/trade/v1/entrust/create-profitz*future/trade/v1/entrust/update-profit-stopzfuture/trade/v1/order/cancelz future/trade/v1/order/cancel-allzfuture/trade/v1/order/createz"future/trade/v1/order/create-batchzfuture/trade/v1/order/updatezfuture/user/v1/account/openz'future/user/v1/position/adjust-leveragez#future/user/v1/position/auto-marginz!future/user/v1/position/close-allzfuture/user/v1/position/margin)"future/user/v1/user/collection/add%future/user/v1/user/collection/cancelz#future/user/v1/position/change-type)r   r   )r   r   )zuser/accountuser/account/api-keyr   zuser/account/{apiKeyId})r   r   r   r   )publicprivater   z0.00205000z0.001810000z0.001620000z0.001450000z0.0012150000z0.0010300000z0.0008600000z0.00071200000z0.00062500000z0.00056000000z0.000415000000z0.000330000000z0.0002)makertaker)	tierBased
percentager   r   tiers200000z0.000381000000z0.000365000000z0.0003410000000z0.00032z0.00028z0.0002450000000	100000000z0.00016	300000000z0.00012	500000000z0.00008z0.000588z0.00057z0.00054z0.00051z0.00048z0.00045z0.00033)r;   contract
exceptions400404429500502503AUTH_001AUTH_002AUTH_003AUTH_004AUTH_005AUTH_006AUTH_007AUTH_101AUTH_102AUTH_103AUTH_104AUTH_105AUTH_106
SYMBOL_001
SYMBOL_002
SYMBOL_003
SYMBOL_004
SYMBOL_005	ORDER_001	ORDER_002	ORDER_003	ORDER_004	ORDER_005	ORDER_006	ORDER_007ORDER_F0101ORDER_F0102ORDER_F0103ORDER_F0201ORDER_F0202ORDER_F0203ORDER_F0301ORDER_F0401ORDER_F0501ORDER_F0502ORDER_F0601
COMMON_001
COMMON_002
COMMON_003CURRENCY_001DEPOSIT_001DEPOSIT_002DEPOSIT_003DEPOSIT_004DEPOSIT_005DEPOSIT_006DEPOSIT_007DEPOSIT_008WITHDRAW_001WITHDRAW_002WITHDRAW_003WITHDRAW_004WITHDRAW_005WITHDRAW_006WITHDRAW_008WITHDRAW_009WITHDRAW_010WITHDRAW_011WITHDRAW_012WITHDRAW_013WITHDRAW_014WITHDRAW_015WITHDRAW_016WITHDRAW_017WITHDRAW_018WITHDRAW_019WITHDRAW_020WITHDRAW_021WITHDRAW_022WITHDRAW_023WITHDRAW_024WITHDRAW_025FUND_001FUND_002FUND_003FUND_004FUND_005FUND_014FUND_015FUND_016FUND_017FUND_018FUND_019FUND_020FUND_021FUND_022FUND_044TRANSFER_001TRANSFER_002TRANSFER_003TRANSFER_004TRANSFER_005TRANSFER_006TRANSFER_007TRANSFER_008TRANSFER_009)TRANSFER_010TRANSFER_011TRANSFER_012"symbol_not_support_trading_via_api"open_order_min_nominal_value_limitinsufficient_balance)z+The symbol does not support trading via APIz4Exceeds the minimum notional value of a single orderzinsufficient balance)exactbroad
timeframes1m5m15m30m1h2h4h6h8h1d3d1w1M)rE  rF  rG  rH  rI  rJ  rK  rL  rM  rN  rO  rP  rQ  commonCurrenciesoptionsr   SPOTLEVERFINANCE	FUTURES_U	FUTURES_C)r;   leveragefinancer=   r>   r   r   ERC20EthereumTRC20TronBEP20zBNB Smart ChainBEP2zBNB-BEP2ETHTRONBNBAVAXzAVAX C-ChainGALzGAL(FT)ALEOz	ALEO(IOU)BTCBitcoinzXT Smart ChainETCzEthereum ClassicMATICPolygonLTCLitecoinBTS	BitSharesXRPRippleXLMzStellar NetworkADACardanoXWCzXWC-XWCDOGEdogecoinDCRDecredSiacoinXTZTezosZECZcashXMRMoneroLSKLiskATOMCosmosONTOntologyALGOAlgorandSOLzSOL-SOLDOTPolkadotZENHorizenFILFilecoinCHZchzICPzInternet ComputerKSMKusamaLUNATerraTHETAzTheta TokenFTMFantomVETVeChainNEARzNEAR ProtocolONEHarmonyKLAYKlaytnARArweaveCELTOKTEGLDzElrond eGoldCROz
CRO-CRONOSBCHzBitcoin CashGLMRMoonbeamLOOPzLOOP-LRCzREI NetworkzAstar NetworkOPTMMT-MMTTBC-TBCOMAX-OMAX CHAIN
GMMT chainZilliqa)REIASTROPMMTTBCOMAXGMMTZILr  r  r  r  r  r  r  r  )r  r  r  r  r  )adjustForTimeDifferencetimeDifferenceaccountsByIdnetworksnetworksById!createMarketBuyOrderRequiresPrice
recvWindowfeatures)IOCFOKPOGTD)
marginModetriggerPricetriggerDirectiontriggerPriceTypestopLossPricetakeProfitPriceattachedStopLossTakeProfittimeInForcehedgedtrailingrY  marketBuyByCostmarketBuyRequiresPriceselfTradePreventionicebergi )r  limitdaysBack	untilDays
marketTypesubTypesymbolRequired)r  triggerr  r  r  r  )r  r  r  r  r  r  r  )	r  r  r  r  r  r  r  r  r  )
r  r  r  daysBackCanceledr  r  r  r  r  r  r    )	sandboxrH   createOrdersrn   rs   rr   rv   rU   ro   extendsdefault)lastmarkindex)r  r  r  r  )r  r  )r  rH   rn   forDerivatives)r   r   )r  r;   r  r=   r>   )deep_extendsuperr*   describer'   parse_numberr#   r   r$   r%   r   r   r   r!   r    r   r&   )self	__class__s    A/home/james-whalen/.local/lib/python3.13/site-packages/ccxt/xt.pyr  xt.describe   s   b$ 8 : P=
$P=
DP=
 $P=
 P=
 tP=
 P=
 4P=
  ]]] $] 	]
 $] %] T] ] "4] t] ] '] /] 0] t]  &u!]" (#]$ T%]&  ']( )]*  +], &u-]. "5/]0 +E1]2 )%3]4 ,U5]6 &t7]8 $T9]: "4;]< =]> &t?]@ (A]B 1%C]D  E]F *5G]H *5I]J +EK]L &tM]N 'O]P (Q]R #DS]T *4U]V $UW]X "5Y]Z #E[]\ t]]^ #E_]`  a]b %dc]d +De]f g]h !%i]j  k]l dm]n $Uo]p +Eq]r "4s]t du]v !$w]x "5y]z t{]| &t}]~ #E]@  A]B !$C]D )%E]F )%G]H uI]J tK]L M]N TO]P tQ]R "5S]T #EU]V %eW]X &uY]Z '[]\ $U]]^  _]` !%a]b "5c]d #De]f +Eg]h i]j uk]l  $"!%#(  y]P=
T YUP=
V 1340	 (Q)6 5WP=
v  *+%'%&&'&'+,,-*+$%-.,-78 "   KQ La  Nq  LQ	 
 CA  DQ  =a  >q  Ea  LQ  DQ  >q  CA  KA  J1   ?! " @# $ EIEICD) 2   KQ La  Nq  LQ	 
 CA  DQ  =a  >q  Ea  LQ  DQ  >q  CA  KA  J1   ?! " @# $ EIEICD)  SAJ ()()+,/0/0-.*+%&/0%&01  &)(*0189()! ,-*+/0# .q 5> A1 ?  H  DQ	 
 B1  ;A  9!  A!  ?  :1  ;A  <Q  G  :1  :1   ;A! " B1# $ =a% (!Eq!La! B1! I!	!
 B1! DQ! I!! ;A! ?! ;A! A!! ;A! :1! Fq! B1!  @!!" =a#!$ CDEFCD)!++Z A1 ?  H  DQ	 
 B1  ;A  9!  A!  ?  :1  ;A  <Q  G  :1  :1   ;A! " B1# $ =a% (!Eq!La! B1! I!	!
 B1! DQ! I!! ;A! ?! ;A! A!! ;A! :1! Fq! B1!  @!!" =a#!$ CDEF'!+* Z -.45 
 -.45!
 3A  6q#mFGJwP=
L
 !%"&!..w7!..w7 "..s3T5F5Fw5OP!..v68I8I(8ST!..w79J9J89TU!..w79J9J89TU!..w79J9J89TU!..x8$:K:KH:UV!..x8$:K:KH:UV!..x8$:K:KH:UV!..y94;L;LX;VW!..y94;L;LX;VW!..y94;L;LX;VW!..z:D<M<Mh<WX!..z:D<M<Mh<WX"  "..s3T5F5Fw5OP!..v68I8I(8ST!..w79J9J89TU!..w79J9J89TU!..w79J9J89TU!..x8$:K:KH:UV!..x8$:K:KH:UV!..x8$:K:KH:UV!..y94;L;LX;VW!..y94;L;LX;VW!..y94;L;LX;VW!..z:D<M<Mh<WX!..z:D<M<Mh<WX"!%N "&"&!..x8!..x8 "..s3T5F5Fx5PQ!..x8$:K:KI:VW!..y94;L;LY;WX!..y94;L;LY;WX!..z:D<M<Mi<XY!..z:D<M<Mi<XY!..z:D<M<Mi<XY!..z:D<M<Mh<WX!..{;T=N=Ny=YZ!..{;T=N=Ny=YZ!..{;T=N=Ny=YZ" "..s3T5F5Fx5PQ!..x8$:K:KJ:WX!..y94;L;LY;WX!..y94;L;LY;WX!..z:D<M<Mi<XY!..z:D<M<Mi<XY!..z:D<M<Mi<XY!..z:D<M<Mi<XY!..{;T=N=Ny=YZ!..{;T=N=Ny=YZ!..{;T=N=Nx=XY"!OIM
P=
` m<m=m ,m =	m
 =m =m  3m  3m  3m  3m  3m  3m  3m  3m  3m   3!m"  3#m$  3%m&  0'm( !))m* !)+m, !)-m. !)/m0 !)1m2  3m4  !25m6  7m8  9m:  ;m<  =m>  !1?m@ "<AmB "<CmD "<EmF "<GmH "<ImJ "<KmL "<MmN "<OmP "<QmR "<SmT "<UmV !-WmX !-YmZ !*[m\ #J]m^ ":_m` "#3amb ":cmd ":emf ":gmh ":imj ":kml ":mmn #Jomp #Jqmr #$4smt #Jumv #Jwmx #Jymz #$4{m| #$4}m~ #Jm@ #$5AmB #$4CmD #$4EmF #JGmH #JImJ #JKmL #JMmN #JOmP #JQmR #$4SmT #$4UmV #JWmX #JYmZ #J[m\ #J]m^ 
_m`  1amb 
cmd emf  0gmh 
imj 
kml 
mmn 
omp 
qmr 
smt 
umv 
wmx 
ymz 
{m| #J}m~ #$5m@ #JAmB #$4CmD #$4EmF #$4GmH #NImJ #JKmL #JMmN %5$4$4:C:F,=Ym^ DMLX,=_taP=
J KP=
h iP=
j +0"#" '('))*!<Z<V< .< J	<
 :< F< ,< N< 9< K< 9< *< -< Y< :<  ;!<" 8#<$ ,%<& 9'<( 9)<* J+<, 8-<. )/<0 71<2 73<4 85<6 67<8 H9<: :;<< J=<> 9?<@ :A<B 9C<D :E<F 5G<H .I<J 8K<L GM<N ]O<P 8Q<R 9S<T OU<V 9W<X HY<Z )[<\ E]<^ N_<` <a<b >c<d Je<f Jg<h )+$$-($w<z9!9!G9! &w9! 	9!
 u9! %d9! '9! w9! 9!  9! e9! &u9! u9! u9! 9!  e!9!" t#9!$ U%9!& U'9!( e)9!* E+9!, f-9!. /9!0 19!2 u39!4 59!6 u79!8 99!: 5;9!< (=9!> e?9!@ VA9!B "7C9!D eE9!F uG9!H #FI9!J $VK9!L uM9!N fO9!P tQ9!R 6S9!T #FU9!V !%W9!X #EY9!Z [9!\ ]9!^ "5_9!` $Va9!b uc9!d  e9!f 4g9!h  %$'-"($q9!t 6:$IEkP=
v $&+(-,1,0).+06:#'#'"&#(	( #($)$)+/27/4#()$, %)&*!$$*%+&*#'*/& ',#'$)&*#'*/# '+!$#'$)&*#'*/( '+!$$*%+#'$)&*#'*/
$ '+!$$*,-%+#'$)&*#'*/*  #UM^ y  )(, %)$(%)-
 *.+/
$ %)%)&#( "#3 "#3 	 "#3 "#3 	YtwP=
 P P	    c                 B    U R                  5       U R                  S   -
  $ )Nr  )millisecondsrS  )r  s    r  noncext.nonce1  s       "T\\2B%CCCr  c                 l    U R                  U5      nU R                  US5      nU R                  US5      $ )a  
fetches the current integer timestamp in milliseconds from the xt server

https://doc.xt.com/#market1serverInfo

:param dict params: extra parameters specific to the xt api endpoint
:returns int: the current integer timestamp in milliseconds from the xt server
result
serverTime)publicSpotGetTime
safe_valuesafe_integer)r  paramsresponsedatas       r  
fetch_timext.fetch_time4  s9     ))&1 x2  |44r  c                 h   U R                  U5      U R                  U5      /nUu  p4U R                  US/ 5      nU R                  US/ 5      nU R                  US/ 5      nU R                  US5      n0 n	[	        S[        U5      5       GH  n
Xz   nU R                  US5      nU R                  U5      nU R                  X0 5      nU R                  US/ 5      n0 n[	        S[        U5      5       H  nUU   nU R                  US5      nU R                  UU5      nUUUSSU R                  US5      SU R                  US	5      U R                  US
5      SSS.U R                  US5      SS.SSS.S.S.
UU'   M     U R                  US5      nSnUS:X  a  SnOSnU R                  UUUU R                  US5      SSU R                  U R                  U R                  US5      5      5      U R                  US5      S:H  U R                  US5      S:H  UUSSS.SSS.SSS.S.S.5      X'   GM     U	$ )z
fetches all available currencies on an exchange

https://doc.xt.com/#deposit_withdrawalsupportedCurrenciesGet

:param dict params: extra parameters specific to the xt api endpoint
:returns dict: an associative dictionary of currencies
r  r   currencyr   supportChainschainNwithdrawFeeAmountdepositEnabledwithdrawEnabledminmaxwithdrawMinAmount)amountr   deposit)
infor.   networkr/   activefee	precisionr  r   limitstypeFTcryptootherfullNamemaxPrecisiondepositStatus1withdrawStatus)r	  r.   coder/   r  r  r  r  r   r  r  r  )"publicSpotGetWalletSupportCurrencypublicSpotGetCurrenciesr  index_byrangelensafe_stringsafe_currency_codenetwork_id_to_codesafe_number	safe_boolsafe_currency_structurer  parse_precision)r  r  promisesRawchainsResponsecurrenciesResponse
chainsDatacurrenciesResultcurrenciesDatachainsDataIndexedr  ientry
currencyIdr  networkEntryrawNetworksr  j
rawNetwork	networkIdnetworkCodetypeRawr  s                          r  fetch_currenciesxt.fetch_currenciesK  s    >>vFHdHdekHlm-8*h __^XrB
??+=xL)9<L MM*jAq#n-.A"%E))%<J**:6D??+<"ML//,LKH1c+./(^
 ,,ZA	"55iF&#* "++J8KL!%#~~j:JK $z;L M $(#'#
 $(#3#3J@S#T#'%
 $(#'$)%	 0: &&uf5GD$77 ((
;!..t/C/CDDTDTUZ\jDk/lm++E?CsJ ,,U4DEL$  $#
  $#!
  $# 9 FLU /J r  c                     U R                   S   (       a  U R                  5         U R                  U5      U R                  U5      /nUnUS   nUS   nU R	                  XE5      $ )z
retrieves data on all markets for xt

https://doc.xt.com/#market2symbol
https://doc.xt.com/#futures_quotesgetSymbols

:param dict params: extra parameters specific to the xt api endpoint
:returns dict[]: an array of objects representing market data
r  r   r   )rS  load_time_differencefetch_spot_marketsfetch_swap_and_future_marketsarray_concat)r  r  promisesUnresolvedpromisesspotMarketsswapAndFutureMarketss         r  fetch_marketsxt.fetch_markets  sl     <<12%%'##F+..v6
 &qk'{  CCr  c                     U R                  U5      nU R                  US0 5      nU R                  US/ 5      nU R                  U5      $ )Nr  symbols)publicSpotGetSymbolr  parse_markets)r  r  r  r  rD  s        r  r:  xt.fetch_spot_markets  sJ    ++F3j x26//$	26!!'**r  c                     U R                  U5      U R                  U5      /nU R                  U R                  US   S/ 5      U R                  US   S/ 5      5      nU R	                  U5      $ )Nr   r  r   )-publicLinearGetFutureMarketV1PublicSymbolList.publicInverseGetFutureMarketV1PublicSymbolListr<  r  rF  )r  r  marketsr@  s       r  r;   xt.fetch_swap_and_future_markets$  s    EEfMt  PC  PC  DJ  PK  L~  $00XWY1Z\`\k\klstulv  yA  CE  ]F   G!!"677r  c                     / n[        S[        U5      5       H%  nUR                  U R                  X   5      5        M'     U$ )Nr   )r  r  appendparse_market)r  rK  r  r,  s       r  rF  xt.parse_marketsg  s:    q#g,'AMM$++GJ78 (r  marketc                    U R                  US5      nU R                  USS5      nU R                  USS5      nU R                  U5      nU R                  U5      nU R                  US5      nUS-   U-   nU R                  US/ 5      n	S n
S nS nS nS nS nS n[	        S	[        U	5      5       H  nU	U   nU R                  US
5      nUS:X  a6  U R                  US5      n
U R                  US5      nU R                  US5      nUS:X  a  U R                  US5      nUS:X  d  Mv  U R                  US5      nU R                  US5      nM     Uc0  U R                  U R                  U R                  US5      5      5      nU R                  US5      nS nS nS nS nS nSnSnSnSnSnUS:X  a  US-   U-   nUnUnSnSnOUS:X  a  US-   U-   nUnUnSnSnUb  U R                  US5      nU R                  US5      nUS:w  a  US-   U R                  U5      -   nSnSnOSnS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SnSn U(       a  U R                  US$S5      n O6US%:X  a0  U R                  US&5      (       a  U R                  US'5      (       a  Sn U R                  0 S(U_SU_S)U_S*U_S+U_S,U_S-U_S.U_S/U_SU_S0S _SU_SU_S1S_S2U _S3U_S4U_UU R                  US55      U R                  US65      U R                  US75      UU R                  U5      S S U R                  U R                  U R                  US85      5      5      UU R                  U R                  U R                  US95      5      5      U R                  U R                  U R                  US:5      5      5      S;.U R                  S<5      S S=.U
US=.UUS=.UUS=.S>.US?.E5      $ )@Nr   baseCurrencybaseCoinquoteCurrency	quoteCoinstate/filtersr   filterQUANTITYr  r  tickSize	QUOTE_QTYPRICEquantityPrecisionunderlyingTypeFTr;   U_BASED:
COIN_BASEDdeliveryDateproductType	perpetual-r>   r=   minQtyminNotionalmaxNotionalminPricemaxPrice	isOpenApiONLINEtradingEnabledopenapiEnabledr.   basequotesettlebaseIdquoteIdsettleIdr  r<   r?   r  r   r   takerFeemakerFeecontractSizepricePrecisionbaseCoinPrecisionquoteCoinPrecision)pricer  rq  rr  r  r  )rY  r  r}  cost)r   r   r   ry  expiryexpiryDatetimestrike
optionTyper  r  r	  )r  safe_string_2r  r  r  r  r!  r  r$  r  yymmddsafe_market_structureiso8601)!r  rQ  r.   rt  ru  rq  rr  rW  r   rY  	minAmount	maxAmountminCostmaxCostrk  rl  amountPrecisionr,  r-  rZ  r`  r   r   rv  rs  r  r>   r=   r   r;   r  re  isActives!                                    r  rO  xt.parse_marketm  sF   j fh/##FNJG$$V_kJ&&v.''0  1e#//&)R8		q#g,'AAJE%%eX6F# ,,UE:	 ,,UE:	"&"2"25*"E$**5%8 ++E59++E59 ( ""//0D0DTEUEUV\^qEr0stO))&2BCY&c\E)FHFFG|+c\D(FHFFG%&&v~>F**6=AKk)#F(;;((:I&&v}=G&&v}=G''
;H''
;HHDv{EBH!@P(Q(QX\XgXghn  qA  YB  YB)) 3+
"3+
f3+
 D3+
 U	3+

 f3+
 f3+
 w3+
 3+
 D3+
 D3+
 d3+
 D3+
 f3+
 e3+
 h3+
  !3+
" f#3+
$ %%fj9%%fj9 ,,V^D"ll62**4+?+?@P@PQWYi@j+kl)))$*>*>t?O?OPVXk?l*mn**4+?+?@P@PQWYm@n+op	  ,,S1
 %$
 $#
 #"$ e3+
 3 3	r  rE  Nr   	timeframesincer  c           	         U R                  5         SnU R                  USSS5      u  peU(       a  U R                  SXXBUS5      $ U R                  U5      nUS   U R	                  U R
                  X"5      S.nUb  X8S'   Ub  XHS	'   OSUS	'   U R                  US
5      n	U R                  US
/5      nU	b  XS'   Sn
US   (       a!  U R                  U R                  X5      5      n
OKUS   (       a!  U R                  U R                  X5      5      n
O U R                  U R                  X5      5      n
U R                  U
S/ 5      nU R                  XX#U5      $ )a  
fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market

https://doc.xt.com/#market4kline
https://doc.xt.com/#futures_quotesgetKLine

: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 xt api endpoint
:param int [params.until]: timestamp in ms of the latest candle to fetch
:param boolean [params.paginate]: default False, when True will automatically paginate by calling self endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
:returns int[][]: A list of candles ordered, open, high, low, close, volume
Fro   paginater  r.   )r   intervalN	startTimer  untilendTimer   r   r  )load_marketshandle_option_and_params"fetch_paginated_call_deterministicrQ  r  rD  r  omit)publicLinearGetFutureMarketV1PublicQKlineextend*publicInverseGetFutureMarketV1PublicQKlinepublicSpotGetKliner  parse_ohlcvs)r  r   r  r  r  r  r  rQ  requestr  r  ohlcvss               r  fetch_ohlcvxt.fetch_ohlcvb  sd     	88z[`a::<X]jprvwwV$Tl(()O
 #(K $G#GG!!&'26G9-!&I(EEdkkRYFbcHIFFt{{SZGcdH..t{{7/KLHT 8R8  5IIr  c           
          US   (       a  SOSn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	U5      /$ )
Nr   vatohlcq)r  r!  safe_number_2)r  ohlcvrQ  volumeIndexs       r  parse_ohlcvxt.parse_ohlcv  s~    8 %Y/cceS)UC(UC(UC(UC(uc;7
 	
r  c                    U R                  5         U R                  U5      nSUS   0nSnUS   (       a3  Ub  [        US5      US'   U R                  U R	                  XS5      5      nOmUb  [        US5      US'   OSUS'   US	   (       a!  U R                  U R	                  XS5      5      nO*US
   (       a   U R                  U R	                  XS5      5      nU R                  US0 5      nU R                  USS5      nUS   (       a)  U R                  XqU5      n	U R                  US5      U	S'   U	$ U R                  XqUSS5      n
U R                  USS5      U
S'   U
$ )a  

https://doc.xt.com/#market3depth
https://doc.xt.com/#futures_quotesgetDepth

fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
:param str symbol: unified market symbol 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 xt api endpoint
:returns dict: A dictionary of `order book structures <https://docs.ccxt.com/en/latest/manual.html#order-book-structure>` indexed by market symbols
r   r.   Nr;   i  r  2   levelr   r   r  	timestampr  lastUpdateIdr  br  u)r  rQ  r  publicSpotGetDepthr  )publicLinearGetFutureMarketV1PublicQDepth*publicInverseGetFutureMarketV1PublicQDepthr  safe_integer_2parse_order_bookr  )r  r   r  r  rQ  r  r  	orderBookr  obswapObs              r  fetch_order_bookxt.fetch_order_book  s_    	V$fTl
 &> #&uc? ..t{{7/KLH #&ub> #% hII$++V]Jfg	"JJ4;;W^Kgh^ OOHh;	''	;D	&>&&y)DB++I~FBwKI&&y)S#N--inMwr  c                    U R                  5         U R                  U5      nSUS   0nSnUS   (       a!  U R                  U R                  XB5      5      nOKUS   (       a!  U R	                  U R                  XB5      5      nO U R                  U R                  XB5      5      nU R                  US5      nUS   (       a  U R                  US   U5      $ U R                  Xc5      $ )	a  
fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market

https://doc.xt.com/#market10ticker24h
https://doc.xt.com/#futures_quotesgetAggTicker

:param str symbol: unified market symbol to fetch the ticker for
:param dict params: extra parameters specific to the xt api endpoint
:returns dict: a `ticker structure <https://docs.ccxt.com/en/latest/manual.html#ticker-structure>`
r   r.   Nr   r   r  r;   r   )r  rQ  -publicLinearGetFutureMarketV1PublicQAggTickerr  .publicInverseGetFutureMarketV1PublicQAggTickerpublicSpotGetTicker24hr  parse_ticker)r  r   r  rQ  r  r  r   s          r  fetch_tickerxt.fetch_ticker6  s     	V$fTl
 (II$++V]JfgHIJJ4;;W^KghH224;;w3OPH^ 84&>$$VAY77  00r  rD  c                    U R                  5         SnUb%  U R                  U5      nU R                  US   5      n0 nSnSnSnU R                  SX25      u  pRU R	                  SX25      u  pbUS:X  a!  U R                  U R                  XB5      5      nOSUS:X  d  US:X  d  US:X  a!  U R                  U R                  XB5      5      nO U R                  U R                  XB5      5      nU R                  US/ 5      n0 n	[        S[        U5      5       H   n
U R                  X   U5      nUS	   nXU'   M"     U R                  U	S	U5      $ )
a  
fetches price tickers for multiple markets, statistical calculations with the information calculated over the past 24 hours each market

https://doc.xt.com/#market10ticker24h
https://doc.xt.com/#futures_quotesgetAggTickers

:param str [symbols]: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
:param dict params: extra parameters specific to the xt api endpoint
:returns dict: an array of `ticker structures <https://docs.ccxt.com/en/latest/manual.html#ticker-structure>`
Nr   r   r   r   r=   r>   r  r   )r  market_symbolsrQ  handle_market_type_and_paramshandle_sub_type_and_params/publicInverseGetFutureMarketV1PublicQAggTickersr  .publicLinearGetFutureMarketV1PublicQAggTickersr  r  r  r  r  filter_by_array)r  rD  r  rQ  r  r  r  r  tickersr  r,  r   r   s                r  fetch_tickersxt.fetch_tickers  sN    	))'2G[[,F99.&Y99.&YiKKDKKX_LhiH!tv~48;KJJ4;;W^KghH224;;w3OPHb //(Hb9q#g,'A&&wz6:FH%F#6N ( ##FHg>>r  c                 d   U R                  5         U R                  U5      n0 nSnUb  U R                  US   5      nSnU R                  SXB5      u  pRUb  [	        U R
                  S-   5      eU R                  U R                  X25      5      nU R                  US/ 5      nU R                  Xq5      $ )a  
fetches the bid and ask price and volume for multiple markets

https://doc.xt.com/#market9tickerBook

:param str [symbols]: unified symbols of the markets to fetch the bids and asks for, all markets are returned if not assigned
:param dict params: extra parameters specific to the xt api endpoint
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/en/latest/manual.html#ticker-structure>`
Nr   rN   z^ fetchBidsAsks() is not available for swap and future markets, only spot markets are supportedr  )
r  r  rQ  r  r"   r.   publicSpotGetTickerBookr  r  parse_tickers)r  rD  r  r  rQ  r  r  r  s           r  fetch_bids_asksxt.fetch_bids_asks  s     	%%g.[[,F99/6Ztww  *J   J  K  K//G0LM$ //(Hb9!!'33r  c           	      Z   U R                  US5      nUb  US   OS nSU;   =(       d    SU;   nUc  U(       a  SOSnU R                  X2SU5      nUS   nU R                  US	5      nU R                  US
S5      nUb  [        R
                  " US5      nU R                  0 SU_SU_SU R                  U5      _SU R                  US5      _SU R                  US5      _SU R                  US5      _SU R                  US5      _SU R                  US5      _SU R                  US5      _SS _SU R                  US5      _SU R                  US5      _SU R                  US5      _S S _S!U R                  US5      _S"U R                  U5      _S#S _S U R                  US$S%5      US&.EU5      $ )'Nsr  cvaqr;   r   _r   r  crr100r  datetimehighr  lowr  bidbp	bidVolumebqaskap	askVolumevwapopenr  closer  r  previousClosechanger   averager  r  )
baseVolumequoteVolumer	  )r  safe_marketr  r  r(   
string_mulsafe_tickerr  r!  r  r  )	r  r   rQ  marketIdr  hasSpotKeysr   r  r   s	            r  r  xt.parse_ticker  s>   \ ##FC0(.(:VF^
v~:46>#.JJ!!(CD!%%fc2	''c:
! ++J>J !
f!
!
 Y/!
 D$$VS1	!

 4##FC0!
 4##FD1!
 ))&$7!
 4##FD1!
 ))&$7!
 D!
 D$$VS1!
 T%%fc2!
 D$$VS1!
 T!
 d&&vt4!
  $++J7!!
" t#!
$ --fc3?)!
* + 	r  c                    U R                  5         U R                  U5      nSUS   0nSnUS   (       a(  Ub  X6S'   U R                  U R                  Xd5      5      nO\Ub  X6S'   US   (       a!  U R	                  U R                  Xd5      5      nO*US   (       a   U R                  U R                  Xd5      5      nU R                  US	/ 5      nU R                  X5      $ )
a  
get the list of most recent trades for a particular symbol

https://doc.xt.com/#market5tradeRecent
https://doc.xt.com/#futures_quotesgetDeal

:param str symbol: unified market symbol 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 xt api endpoint
:returns dict[]: a list of `trade structures <https://docs.ccxt.com/en/latest/manual.html?#public-trades>`
r   r.   Nr;   r  numr   r   r  )r  rQ  publicSpotGetTradeRecentr  (publicLinearGetFutureMarketV1PublicQDeal)publicInverseGetFutureMarketV1PublicQDealr  parse_trades)	r  r   r  r  r  rQ  r  r  tradess	            r  fetch_tradesxt.fetch_tradesM  s     	V$fTl
 &> #( 44T[[5QRH !&hHHU\Ief	"II$++V]JfgJ 8R8  00r  c                    U R                  5         0 nSnUb  U R                  U5      nUS   US'   Ub  X%S'   SnSnSn	U R                  SXd5      u  ptU R                  SXd5      u  pUc  US:X  d  US:X  aO  Ub  X5S'   US	:X  a!  U R	                  U R                  XT5      5      n	OiU R                  U R                  XT5      5      n	OHSn
U R                  SU5      u  pU
b  S
OSnXS'   Ub  X5S'   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 trades made by the user

https://doc.xt.com/#tradetradeGet
https://doc.xt.com/#futures_ordergetTrades

:param str [symbol]: unified market symbol 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 xt api endpoint
:returns dict[]: a list of `trade structures <https://docs.ccxt.com/en/latest/manual.html?#public-trades>`
Nr.   r   r  rn   r=   r>   sizer   rU  rT  bizTyper  r  items)r  rQ  r  r  ,privateInverseGetFutureTradeV1OrderTradeListr  +privateLinearGetFutureTradeV1OrderTradeListhandle_margin_mode_and_paramsprivateSpotGetTrader  r  )r  r   r  r  r  r  rQ  r  r  r  r  marginOrSpotRequestr  r  s                 r  fetch_my_tradesxt.fetch_my_trades  sn    	[[(F &tGH#(K 99/6Z99/6ZTV^9I "')#LLT[[Y`MijKKDKKX_LhiJ!%!C!COU[!\J.8.D'6!4I #( //G0LMHv x26w3  >>r  c                 d   U R                  USS5      nUb  US   OS nSU;   =(       d    SU;   =(       d    SU;   nUc  U(       a  SOSnU R                  X2S	U5      nS nS nU R                  US5      nUb  U(       a  S
OSnSnOoU R                  US5      n	U	b  U	nO U R                  US5      n
U
b  U
(       a  SOSnU R                  US5      nUb  UnOU R	                  US5      nUb
  US:X  a  SOS
nU R                  U/ SQ5      nU R                  USS5      nS nUS:X  a  UnOeUc:  [        R                  " U R	                  US5      U R                  US   5      5      nO([        R                  " XR                  US   5      5      nU R                  UU R                  U/ SQ5      UU R                  U5      US   U R                  USS5      U R                  US5      UUU R                  USS5      US U R                  U R                  USS5      5      U R	                  US5      S .S!.U5      $ )"Nr  r   r  r  r  oir;   r   r  sellbuyr   
takerMakerisMakerr   	orderSidemBID)r  r   r  r  quantityr  ry  )r,  tradeIdexecIdorderId	orderTypepr}  feeCurrencyfeeCoinr  r  r~  )r	  r.   r  r  r   r   r  sidetakerOrMakerr}  r  r~  r  )r  r  r"  safe_string_lowerr  safe_integer_nr(   r  number_to_string
safe_tradesafe_string_nr  r  )r  r   rQ  r  r  r  r  r  isBuyerMakerr  r  r  bidOrAskr  r  r  s                   r  parse_tradext.parse_trade  s_   X %%eS(;(.(:VF^
e|Oe);O#.JJ!!(CD~~eS1#)6uD"L//|DJ%)..	:&.577L..ukBI$ ++E37'%-%65VD''/IJ	%%eS*=F ++D,<,<UC,H$J_J_`fgu`vJwx ++H6K6KFSaLb6cd$$U,FG"Y/X&''y$?**5+>(''sG< 33D4F4Fum]f4gh((6 
" # 	r  c                    U R                  5         SnSnSnU R                  SSU5      u  p!U R                  SSU5      u  p1US:H  =(       d    US:H  nUS:X  a  U R                  U5      nO0US:X  d  U(       a  U R	                  U5      nOU R                  U5      nSnUc  U(       a  U R                  US/ 5      nO&U R                  US0 5      nU R                  US/ 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://doc.xt.com/#balancebalancesGet
https://doc.xt.com/#futures_usergetBalances

:param dict params: extra parameters specific to the xt api endpoint
:returns dict: a `balance structure <https://docs.ccxt.com/en/latest/manual.html?#balance-structure>`
NrM   r=   r>   r   r   r  assets)r  r  r  (privateInverseGetFutureUserV1BalanceList'privateLinearGetFutureUserV1BalanceListprivateSpotGetBalancesr  parse_balance)r  r  r  r  r  isContractWalletr   r  s           r  fetch_balancext.fetch_balance  s     	99.$PVW99.$PVW!V^B1AiDDVLH!&6CCFKH226:HZ $4x2>H??8Xr:DtXr:H!!(++r  c                 &   SU0n[        S[        U5      5       H  nX   nU R                  USS5      nU R                  U5      nU R	                  5       nU R                  USS5      nU R                  US5      n	U R                  USS	5      n
U	c^  [        R                  " U R                  US
5      U R                  US5      5      n[        R                  " U R                  US5      U5      n	XS'   XS'   XS'   XrU'   M     U R                  U5      $ )Nr	  r   r  coinavailableAmountavailableBalancefrozenAmounttotalAmountwalletBalancecrossedMarginisolatedMarginopenOrderMarginFrozenfreeusedtotal)	r  r  r  r  accountr  r(   
string_addsafe_balance)r  r  r  r,  r   r.  r  r?  r<  r=  r>  crossedAndIsolatedMargins               r  r.  xt.parse_balance  s+   6 (#q#h-(AkG++GZHJ**:6DllnG%%g/@BTUD##G^<D&&wOE|+2+=+=d>N>NwXg>hjnjzjz  |C  EU  kV  ,W())$*:*:7D[*\^vw"FO"FO$G"4L )   ((r  r~  c                     U R                  5         U R                  U5      nUS   (       d  [        U R                  S-   5      eU R	                  USSUSU5      $ )a  

https://doc.xt.com/#orderorderPost

create a market buy order by providing the symbol and cost
: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>`
r;   z9 createMarketBuyOrderWithCost() supports spot orders onlyrQ  r  r   )r  rQ  r"   r.   create_order)r  r   r~  r  rQ  s        r  !create_market_buy_order_with_cost$xt.create_market_buy_order_with_cost	  sU     	V$f~tww)ddee  5$6JJr  r  r  r  r}  c                     U R                  5         U R                  U5      nUS   nUS   (       a  U R                  XX4XV5      $ U R                  XX4XV5      $ )aB  
create a trade order

https://doc.xt.com/#orderorderPost
https://doc.xt.com/#futures_ordercreate
https://doc.xt.com/#futures_entrustcreatePlan
https://doc.xt.com/#futures_entrustcreateProfit

: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 you want to trade in units of the base currency
:param float [price]: the price to fulfill the order, in units of the quote currency, can be ignored in market orders
:param dict params: extra parameters specific to the xt api endpoint
:param str [params.timeInForce]: 'GTC', 'IOC', 'FOK' or 'GTX'
:param str [params.entrustType]: 'TAKE_PROFIT', 'STOP', 'TAKE_PROFIT_MARKET', 'STOP_MARKET', 'TRAILING_STOP_MARKET', required if stopPrice is defined, currently isn't functioning on xt's side
:param str [params.triggerPriceType]: 'INDEX_PRICE', 'MARK_PRICE', 'LATEST_PRICE', required if stopPrice is defined
:param float [params.triggerPrice]: price to trigger a stop order
:param float [params.stopPrice]: alias for triggerPrice
:param float [params.stopLoss]: price to set a stop-loss on an open position
:param float [params.takeProfit]: price to set a take-profit on an open position
:returns dict: an `order structure <https://docs.ccxt.com/en/latest/manual.html#order-structure>`
r   r;   )r  rQ  create_spot_ordercreate_contract_order)r  r   r  r  r  r}  r  rQ  s           r  rE  xt.create_order&	  sY    0 	V$!&>))&eTT--fD%XXr  c                    U R                  5         U R                  U5      nUS   UR                  5       UR                  5       S.nS n	S n
U R                  SU5      u  pU
b  SOSnXS'   US:X  a  U R	                  USS	5      n	US
:X  a  U R                  US5      nU R                  US5      nU R                  U R                  SS5      nU(       at  Uc  Uc  [        U R                  S-   5      eU R                  U5      nU R                  U5      nS nUb  [        R                  " X5      nOUnU R                  UU5      US'   ODUb  UOUnU R                  UU5      US'   O'U R	                  USS5      n	U R                  X5      US'   US:X  d  US:X  a  U R!                  X5      US'   XS'   U R#                  U R%                  X5      5      nU R'                  US0 5      nU R)                  UU5      $ )Nr.   )r   r  r  rH   rU  rT  r  rQ  r  r  r  r~  r  Ta   createOrder() requires a price argument or cost in params for market buy orders on spot markets to calculate the total amount to spend(amount * price), alternatively set the createMarketBuyOrderRequiresPrice option to False and pass in the cost to spend into the amount parameterquoteQtyGTCr}  r  r  r  r  )r  rQ  upperr  safe_string_upperr  r  r"  rS  r!   r.   r"  r(   r  cost_to_precisionprice_to_precisionamount_to_precisionprivateSpotPostOrderr  r  parse_order)r  r   r  r  r  r}  r  rQ  r  r  r  r	  r~  r  amountStringpriceStringcostCalculated
amountCostr  r   s                       r  rI  xt.create_spot_orderF	  s   V$TlJJLJJL

 
!??vV
*4*@gv0	800NKu}''766248NN4<<Qtvz4{14}$,*477  6P  ,P  Q  Q'+'<'<V'D&*&;&;E&B.2 ,-4-?-?-ZN-1N.2.D.DV^.\
+*.*:J*.*@*@*TGJ'00NK#66vEGGFN"&":":6"JGJ!,,,T[[-IJ (B7v..r  c                    U R                  5         U R                  U5      nUS   U R                  X5      S.nU R                  US5      n	U	b  XS'   U R	                  USS5      n
US:X  a  U
(       a  SOSnXS	'   OU
(       a  SOSnXS	'   S nU R                  US
S5      nU R                  USS5      nU R                  USS5      nUS LnUS LnUS LnUb"  U(       d  U(       d  U R                  X5      US'   U(       a  U R                  USS5      US'   U R                  USS5      US'   UR                  5       US'   U R                  X5      US'   US:X  a  SOSnUUS'   U R                  US
5      nUS   (       a"  U R                  U R                  X5      5      nGOOUS   (       a   U R                  U R                  X5      5      nGO#U(       d  U(       a  U(       a  U R                  X5      US'   OU R                  X5      US'   U R                  USS/5      nUS   (       a!  U R                  U R                  X5      5      nOUS   (       a   U R                  U R                  X5      5      nO{UR                  5       US'   UR                  5       US'   US   (       a!  U R                  U R                  X5      5      nO*US   (       a   U R!                  U R                  X5      5      nU R#                  X5      $ )Nr.   )r   origQtyr  
reduceOnlyFr  SHORTLONGpositionSider  	stopPricestopLosstriggerStopPrice
takeProfittriggerProfitPricer}  rN  r  LATEST_PRICEr  rQ  STOP_MARKETSTOPentrustTyper   r   r  )r  rQ  rS  rP  r  r  rR  r  rO  r  /privateLinearPostFutureTradeV1EntrustCreatePlanr  0privateInversePostFutureTradeV1EntrustCreatePlan1privateLinearPostFutureTradeV1EntrustCreateProfit2privateInversePostFutureTradeV1EntrustCreateProfit)privateLinearPostFutureTradeV1OrderCreate*privateInversePostFutureTradeV1OrderCreaterU  )r  r   r  r  r  r}  r  rQ  r  r  r]  requestTyper  r  rb  rd  	isTrigger
isStopLossisTakeProfitri  s                       r  rJ  xt.create_contract_order|	  s   V$Tl//?
 ,,V]C"%0M"__V\5A
5=&0'vK&1N#%/&gK&1N#))&.+N%%fj:LM''>RS
!-	d*
"$.#'#:#:6#I %)%;%;FMSX%YGM"*.*:*:6CUWe*fG&'#'::<GK #'#:#:6#PGK ,0H,<-6K%0GM"YYv~6FhOOPTP[P[\cPlm	"PPQUQ\Q\]dQmn<.2.E.Ef.W*+040G0G0[,-YYv
L'ABFhQQRVR]R]^eRno	"RRSWS^S^_fSop#'::<GK #'::<GK hII$++V]Jfg	"JJ4;;W^Kgh 11r  r.   c                    U R                  5         SnUb  U R                  U5      n0 nSnSnSnU R                  SXC5      u  pcU R                  SXC5      u  psU R	                  US5      n	U R	                  US5      n
U	(       a  XS'   OU
(       a  XS'   OXS'   U	(       aZ  U R                  US5      nUS:X  a!  U R                  U R                  XS5      5      nOU R                  U R                  XS5      5      nOU
(       aZ  U R                  US5      nUS:X  a!  U R                  U R                  XS5      5      nOU R                  U R                  XS5      5      nOzUS:X  a!  U R                  U R                  XS5      5      nOSUS	:X  d  US
:X  d  US:X  a!  U R                  U R                  XS5      5      nO U R                  U R                  XS5      5      nU R	                  US0 5      nU R                  X5      $ )a  
fetches information on an order made by the user

https://doc.xt.com/#orderorderGet
https://doc.xt.com/#futures_ordergetById
https://doc.xt.com/#futures_entrustgetPlanById
https://doc.xt.com/#futures_entrustgetProfitById

: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 xt api endpoint
:param bool [params.trigger]: if the order is a trigger order or not
:param bool [params.stopLossTakeProfit]: if the order is a stop-loss or take-profit order
:returns dict: An `order structure <https://docs.ccxt.com/en/latest/manual.html#order-structure>`
Nrs   stopstopLossTakeProfit	entrustIdprofitIdr  r   r   r=   r>   r  )r  rQ  r  r  r  r  /privateInverseGetFutureTradeV1EntrustPlanDetailr  .privateLinearGetFutureTradeV1EntrustPlanDetail1privateInverseGetFutureTradeV1EntrustProfitDetail0privateLinearGetFutureTradeV1EntrustProfitDetail)privateInverseGetFutureTradeV1OrderDetail(privateLinearGetFutureTradeV1OrderDetailprivateSpotGetOrderOrderIdrU  )r  r.   r   r  rQ  r  r  r  r  r  rw  r   s               r  fetch_orderxt.fetch_order	  s     	[[(F99,W99,W//&&1!__V5IJ#%K "$J!#IYYvv.F)#OOPTP[P[\cPlmNNt{{[bOklYYv';<F)#QQRVR]R]^eRnoPPQUQ\Q\]dQmn	!EEdkkRYFbcH!tv~48;KDDT[[QXEabH66t{{77STHl (B7..r  c                 l   U R                  5         0 nSnUb  U R                  U5      nUS   US'   Ub  X%S'   Ub  X5S'   SnSnSn	U R                  SXd5      u  ptU R                  SXd5      u  pU R	                  USS5      n
U
(       a\  U R                  USS/5      nUS	:X  a!  U R                  U R                  XT5      5      n	OU R                  U R                  XT5      5      n	OUS	:X  a!  U R                  U R                  XT5      5      n	OtUS
:X  d  US:X  d  US:X  a!  U R                  U R                  XT5      5      n	OASnU R                  SU5      u  pUb  SOSnXS'   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  
fetches information on multiple orders made by the user

https://doc.xt.com/#orderhistoryOrderGet
https://doc.xt.com/#futures_ordergetHistory
https://doc.xt.com/#futures_entrustgetPlanHistory

:param str [symbol]: unified market symbol of the market the orders were made in
:param int [since]: timestamp in ms of the earliest order
:param int [limit]: the maximum number of order structures to retrieve
:param dict params: extra parameters specific to the xt api endpoint
:param bool [params.trigger]: if the order is a trigger order or not
:returns dict[]: a list of `order structures <https://docs.ccxt.com/en/latest/manual.html#order-structure>`
Nr.   r   r  r  rv   r  rv  r   r   r=   r>   rU  rT  r  r  r  )r  rQ  r  r  safe_value_2r  4privateInverseGetFutureTradeV1EntrustPlanListHistoryr  3privateLinearGetFutureTradeV1EntrustPlanListHistory.privateInverseGetFutureTradeV1OrderListHistory-privateLinearGetFutureTradeV1OrderListHistoryr  privateSpotGetHistoryOrderr  parse_orders)r  r   r  r  r  r  rQ  r  r  r  r  r  r	  r  orderss                  r  fetch_ordersxt.fetch_ordersj
  s    	[[(F &tGH#(K $G99-X99-X##FIv>YYv	6':;F)#TTUYU`U`ahUqrSSTXT_T_`gTpq	!JJ4;;W^KghH!tv~48;KII$++V]JfgHJ!%!C!CMSY!ZJ.8.D'6!4I66t{{77STH^ x26w3  >>r  c                 8   U R                  5         0 nS nUb  U R                  U5      nUS   US'   Ub  XFS'   Ub  X6S'   S nS n	S n
U R                  SXu5      u  pU R                  SXu5      u  pU R	                  USS5      nU R                  US5      nUS	:X  a   U(       d  U(       a  S
US'   OPUS:X  a  SUS'   ODUS:X  a  U(       d  U(       a  SUS'   O*SUS'   O$US:X  a  U(       d  U(       a  SUS'   O
SUS'   OXS'   U(       d  U(       d  U	c  US:X  d  US:X  a  Ub  X6S'   Ub  XFS'   U(       a^  U R                  USS/5      nU	S:X  a"  U R                  U R                  Xe5      5      n
GOcU R                  U R                  Xe5      5      n
GOAU(       a[  U R                  US5      nU	S:X  a"  U R                  U R                  Xe5      5      n
GO U R                  U R                  Xe5      5      n
OU	c  US:X  d  US:X  aH  U	S:X  a!  U R                  U R                  Xe5      5      n
OU R                  U R                  Xe5      5      n
OS nU R                  SU5      u  pUb  SOSnXS'   US	:w  aA  Ub  X6S'   Ub  U R                  US5      nXFS'   U R                  U R                  Xe5      5      n
O U R!                  U R                  Xe5      5      n
/ nU R#                  U
S5      nUb  U R%                  US/ 5      nOU R%                  U
S5      nU R'                  XX45      $ )Nr.   r   r  r  rw   rv  r  rw  r  NOT_TRIGGEREDrW  r=   
UNFINISHEDclosed	TRIGGEREDFILLEDcanceledUSER_REVOCATIONCANCELEDr>   r   rU  rT  r  r  r  r  )r  rQ  r  r  safe_bool_2r  r  -privateInverseGetFutureTradeV1EntrustPlanListr  ,privateLinearGetFutureTradeV1EntrustPlanList/privateInverseGetFutureTradeV1EntrustProfitList.privateLinearGetFutureTradeV1EntrustProfitList'privateInverseGetFutureTradeV1OrderList&privateLinearGetFutureTradeV1OrderListr  r  privateSpotGetOpenOrder	safe_dict	safe_listr  )r  statusr   r  r  r  r  rQ  r  r  r  r  rw  r  r	  r  
resultDicts                    r  fetch_orders_by_statusxt.fetch_orders_by_status  sA   [[(F &tGH#FO#(K 99:OQW`99:OQW`""669=!__V5IJV,#2 #/ x,#. #+ z!,#4 #- %G(W-@dfnZ^bjZj ',$ "'YYv	':;F)#MMdkkZaNjkLLT[[Y`MijYYv';<F)#OOPTP[P[\cPlmNNt{{[bOkl!tv~48;K)#GGT[HdeFFt{{SZGcdJ!%!C!CDY[a!bJ.8.D'6!4I$+0K($"ii8G',G$::4;;w;WX77G8TUf ^^Hh7
!^^J<F^^Hh7F  >>r  c                 (    U R                  SXX45      $ )a  
fetch all unfilled currently open orders

https://doc.xt.com/#orderopenOrderGet
https://doc.xt.com/#futures_ordergetOrders
https://doc.xt.com/#futures_entrustgetPlan
https://doc.xt.com/#futures_entrustgetProfit

:param str [symbol]: unified market symbol of the market the orders were made in
:param int [since]: timestamp in ms of the earliest order
:param int [limit]: the maximum number of open order structures to retrieve
:param dict params: extra parameters specific to the xt api endpoint
:param bool [params.trigger]: if the order is a trigger order or not
:param bool [params.stopLossTakeProfit]: if the order is a stop-loss or take-profit order
:returns dict[]: a list of `order structures <https://docs.ccxt.com/en/latest/manual.html#order-structure>`
r  r  r  r   r  r  r  s        r  fetch_open_ordersxt.fetch_open_orders  s    " **66%PPr  c                 (    U R                  SXX45      $ )a  
fetches information on multiple closed orders made by the user

https://doc.xt.com/#orderhistoryOrderGet
https://doc.xt.com/#futures_ordergetOrders
https://doc.xt.com/#futures_entrustgetPlan
https://doc.xt.com/#futures_entrustgetProfit

:param str [symbol]: unified market symbol of the market the orders were made in
:param int [since]: timestamp in ms of the earliest order
:param int [limit]: the maximum number of order structures to retrieve
:param dict params: extra parameters specific to the xt api endpoint
:param bool [params.trigger]: if the order is a trigger order or not
:param bool [params.stopLossTakeProfit]: if the order is a stop-loss or take-profit order
:returns dict[]: a list of `order structures <https://docs.ccxt.com/en/latest/manual.html#order-structure>`
r  r  r  s        r  fetch_closed_ordersxt.fetch_closed_orders  s    " **8VERRr  c                 (    U R                  SXX45      $ )a  
fetches information on multiple canceled orders made by the user

https://doc.xt.com/#orderhistoryOrderGet
https://doc.xt.com/#futures_ordergetOrders
https://doc.xt.com/#futures_entrustgetPlan
https://doc.xt.com/#futures_entrustgetProfit

:param str [symbol]: unified market symbol of the market the orders were made in
:param int [since]: timestamp in ms of the earliest order
:param int [limit]: the maximum number of order structures to retrieve
:param dict params: extra parameters specific to the xt api endpoint
:param bool [params.trigger]: if the order is a trigger order or not
:param bool [params.stopLossTakeProfit]: if the order is a stop-loss or take-profit order
:returns dict: a list of `order structures <https://docs.ccxt.com/en/latest/manual.html#order-structure>`
r  r  r  s        r  fetch_canceled_ordersxt.fetch_canceled_orders2  s    " **:veTTr  c                 >   U R                  5         SnUb  U R                  U5      n0 nSnSnSnU R                  SXC5      u  pcU R                  SXC5      u  psU R	                  USS5      n	U R                  US5      n
U	(       a  XS'   OU
(       a  XS'   OXS'   U	(       a\  U R                  USS/5      nUS	:X  a!  U R                  U R                  XS5      5      nOU R                  U R                  XS5      5      nOU
(       aZ  U R                  US5      nUS	:X  a!  U R                  U R                  XS5      5      nOU R                  U R                  XS5      5      nOzUS	:X  a!  U R                  U R                  XS5      5      nOSUS
:X  d  US:X  d  US:X  a!  U R                  U R                  XS5      5      nO U R                  U R                  XS5      5      nUSL=(       d    US:H  =(       d    US:H  nU(       a  UOU R                  US0 5      nU R                  X5      $ )ag  
cancels an open order

https://doc.xt.com/#orderorderDel
https://doc.xt.com/#futures_ordercancel
https://doc.xt.com/#futures_entrustcancelPlan
https://doc.xt.com/#futures_entrustcancelProfit

: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 xt api endpoint
:param bool [params.trigger]: if the order is a trigger order or not
:param bool [params.stopLossTakeProfit]: if the order is a stop-loss or take-profit order
:returns dict: An `order structure <https://docs.ccxt.com/en/latest/manual.html#order-structure>`
NrC   r  rv  rw  rx  ry  r  r   r   r=   r>   r  )r  rQ  r  r  r  r  r  0privateInversePostFutureTradeV1EntrustCancelPlanr  /privateLinearPostFutureTradeV1EntrustCancelPlan6privateInversePostFutureTradeV1EntrustCancelProfitStop5privateLinearPostFutureTradeV1EntrustCancelProfitStop*privateInversePostFutureTradeV1OrderCancel)privateLinearPostFutureTradeV1OrderCancelprivateSpotDeleteOrderOrderIdrU  )r  r.   r   r  rQ  r  r  r  r  r  rw  isContractResponser   s                r  cancel_orderxt.cancel_orderE  s     	[[(F99-X99-X##FIv>!__V5IJ#%K "$J!#IYYv	6':;F)#PPQUQ\Q\]dQmnOOPTP[P[\cPlmYYv';<F)#VVW[WbWbcjWstUUVZVaVabiVrs	!FFt{{SZGcdH!tv~48;KEEdkkRYFbcH99$++g:VWH,  'd2]]DT\L\.DOOHhXZ4[..r  c                    U R                  5         0 nSnUb  U R                  U5      nUS   US'   SnSnSnU R                  SXB5      u  pRU R                  SXB5      u  pbU R	                  USS5      nU R                  US5      n	U(       a]  U R                  USS/5      nUS:X  a"  U R                  U R                  X25      5      nGOU R                  U R                  X25      5      nOU	(       aZ  U R                  US5      nUS:X  a!  U R                  U R                  X25      5      nOU R                  U R                  X25      5      nOUS:X  a!  U R                  U R                  X25      5      nOtUS	:X  d  US
:X  d  US:X  a!  U R                  U R                  X25      5      nOASn
U R                  SU5      u  pU
b  SOSnXS'   U R                  U R                  X25      5      nU R!                  U5      /$ )a~  
cancel all open orders in a market

https://doc.xt.com/#orderopenOrderDel
https://doc.xt.com/#futures_ordercancelBatch
https://doc.xt.com/#futures_entrustcancelPlanBatch
https://doc.xt.com/#futures_entrustcancelProfitBatch

:param str [symbol]: unified market symbol of the market to cancel orders in
:param dict params: extra parameters specific to the xt api endpoint
:param bool [params.trigger]: if the order is a trigger order or not
:param bool [params.stopLossTakeProfit]: if the order is a stop-loss or take-profit order
:returns dict[]: a list of `order structures <https://docs.ccxt.com/en/latest/manual.html#order-structure>`
Nr.   r   rB   r  rv  rw  r   r   r=   r>   rU  rT  r  )r  rQ  r  r  r  r  r  3privateInversePostFutureTradeV1EntrustCancelAllPlanr  2privateLinearPostFutureTradeV1EntrustCancelAllPlan9privateInversePostFutureTradeV1EntrustCancelAllProfitStop8privateLinearPostFutureTradeV1EntrustCancelAllProfitStop-privateInversePostFutureTradeV1OrderCancelAll,privateLinearPostFutureTradeV1OrderCancelAllr  privateSpotDeleteOpenOrder
safe_order)r  r   r  r  rQ  r  r  r  r  rw  r  r	  s               r  cancel_all_ordersxt.cancel_all_orders  s    	[[(F &tGH99:KV\99:KV\##FIv>!__V5IJYYv	6':;F)#SSTXT_T_`gTpqRRSWS^S^_fSopYYv';<F)#YYZ^ZeZefmZvwXXY]YdYdelYuv	!II$++V]JfgH!tv~48;KHHU\IefHJ!%!C!CDUW]!^J.8.D'6!4I66t{{77STH* OOH%
 	
r  idsc                    U R                  5         SU0nSnUb  U R                  U5      nSnU R                  SXS5      u  pcUb  [        U R                  S-   5      eU R                  U R                  XC5      5      nU R                  U5      /$ )a[  
cancel multiple orders

https://doc.xt.com/#orderbatchOrderDel

:param str[] ids: order ids
:param str [symbol]: unified market symbol of the market to cancel orders in
:param dict params: extra parameters specific to the xt api endpoint
:returns dict[]: a list of `order structures <https://docs.ccxt.com/en/latest/manual.html#order-structure>`
orderIdsNrD   zV cancelOrders() does not support swap and future orders, only spot orders are accepted)r  rQ  r  r"   r.   privateSpotDeleteBatchOrderr  r  )r  r  r   r  r  rQ  r  r  s           r  cancel_ordersxt.cancel_orders  s     	
 [[(F99.&Ytww  *B   B  C  C33DKK4PQ OOH%
 	
r  c                    U R                  US5      nSU;   a  SU;   =(       d    SOSnU R                  X2S U5      nU R                  X2S U5      nU R                  USS5      nU R	                  US5      nUS:X  a  UO7[
        R                  " U R                  U5      U R                  US	   5      5      nU R	                  US
5      n	US:X  a  U	O7[
        R                  " U R                  U	5      U R                  US	   5      5      n
U R                  US5      nU R                  0 SU_SU R                  U/ SQ5      _SU R                  USS5      _SU_SU R                  U5      _SU_SU_SU_SU R                  USS5      _SU R                  US5      _SS _SU R                  USS5      _SU R	                  US5      _SU R	                  US5      _SU R	                  US5      _S U R	                  US!5      _S"U_U
U R	                  US#5      S U R	                  US$5      U R                  U R                  US%5      5      U R                  U R                  US&5      5      U R	                  US'5      S(.S S).EU5      $ )*Nr   r`  r  r   r;   r   createdTimer\  ry  executedQtyupdatedTimer	  r.   )r  r  cancelIdrx  ry  clientOrderIdclientModifyIdr  r  lastTradeTimestamplastUpdateTimestampr  r  r  postOnlyr  r  r}  r  ra  rb  rc  rd  re  r  
leavingQtyavgPricerW  r  r  r  )filled	remainingr~  r  r  r  r  )r  r  safe_symbolr  r!  r(   r  r"  r  r  r$  r  r  safe_string_lower_2parse_order_statusr  )r  r   rQ  r  r  r   r  r  r  filledQuantityr  lastUpdatedTimestamps               r  rU  xt.parse_order   s:   ~ ##E84;IU;Rh%'6JY_
!!(D*E!!(D*E''v}E	##E95(F29K9KDLaLabjLkmq  nC  nC  DJ  KY  DZ  n[  :\))%?$.&$8w?Q?QRVRgRghvRwy}  zO  zO  PV  We  Pf  zg  @h#00F  
E 
$$$U,fg 
 T//HXY 
 	 

 Y/ 
 !"6 
 "#7 
 f 
 D,,UFKH 
 4++E=A 
  
 D,,UFKH 
 T%%eW5 
 D,,UK@ 
 ((0BC 
  $**52FG! 
" f# 
$ ))%>''z:--d.>.>ug.NO 33D4D4DUM4Z[((6 7 
8 9 	r  c                 F    SSSSSSSSSSSSSS.nU R                  X!U5      $ )Nr  r  r  rejectedexpired)NEWPARTIALLY_FILLEDr  r  REJECTEDEXPIREDr  r  
TRIGGERINGr  r  PLATFORM_REVOCATIONHISTORYr  r  r  statusess      r  r  xt.parse_order_status  sE     &""  # !)#- 
 &99r  r  c                 "   U R                  5         0 nSnUb  U R                  U5      nUb  X%S'   Ub  X5S'   SnSnSn	U R                  SSU5      u  ptU R                  SSU5      u  pUS:X  a!  U R	                  U R                  XT5      5      n	OKUS:X  d  US:X  d  US:X  a!  U R                  U R                  XT5      5      n	O[        U R                  S	-   5      eU R                  U	S
0 5      n
U R                  U
S/ 5      nU R                  XX#5      $ )a  
fetch the history of changes, actions done by the user or operations that altered the balance of the user

https://doc.xt.com/#futures_usergetBalanceBill

:param str [code]: unified currency code
:param int [since]: timestamp in ms of the earliest ledger entry
:param int [limit]: max number of ledger entries to return
:param dict params: extra parameters specific to the xt api endpoint
:returns dict: a `ledger structure <https://docs.ccxt.com/en/latest/manual.html#ledger-structure>`
Nr  r  rg   r   r   r=   r>   zi fetchLedger() does not support spot transactions, only swap and future wallet transactions are supportedr  r  )r  r  r  r  )privateInverseGetFutureUserV1BalanceBillsr  (privateLinearGetFutureUserV1BalanceBillsr"   r.   r  parse_ledger)r  r  r  r  r  r  r  r  r  r  r  ledgers               r  fetch_ledgerxt.fetch_ledger  s0    	}}T*H#(K $G99-vV99-vViEEdkkRYFbcH!tv~48;KDDT[[QXEabHtww  *U   U  V  V0 x26w3  5@@r  c                    U R                  US5      nUS:X  a  SOSnU R                  US5      nU R                  XR5      nU R                  US5      nU R                  UU R                  US5      US S S U R	                  U R                  US5      5      U R                  XR5      U R                  US	5      UU R                  U5      S U R                  US
5      S S S S.S.U5      $ )Nr  ADDinoutr3  r  r.   r  r  afterAmountr  )r	  r.   	directionr?  referenceIdreferenceAccountr  r  r  r  r  beforeafterr  r  )r  safe_currencyr  safe_ledger_entryparse_ledger_entry_typer  r!  r  )r  itemr  r  r  r.  r  s          r  parse_ledger_entryxt.parse_ledger_entry  s     f-!U]D	%%dF3
%%j;%%dM:	%%""4." $001A1A$1OP//
E&&tX6"Y/%%dM: '
& ' 	r  c           	      <    SSSSSSSSS.nU R                  X!U5      $ )Nr   r   r  zauto-deleveraging)EXCHANGECLOSE_POSITION	TAKE_OVERMERGEQIANG_PING_MANAGERFUNDFEEADLr  )r  r  
ledgerTypes      r  r  xt.parse_ledger_entry_type  s6    "% "'&	

 
$77r  c                 N   U R                  5         SnU R                  U5      u  p2U R                  U5      nU R                  X15      nU R	                  SUS5        US   US.nU R                  U R                  Xb5      5      nU R                  US0 5      nU R                  X5      $ )a  
fetch the deposit address for a currency associated with self account

https://doc.xt.com/#deposit_withdrawaldepositAddressGet

:param str code: unified currency code
:param dict params: extra parameters specific to the xt api endpoint
:param str params['network']: required network id
:returns dict: an `address structure <https://docs.ccxt.com/en/latest/manual.html#address-structure>`
NrX   r
  r.   )r  r  r  )	r  handle_network_code_and_paramsr  network_code_to_idcheck_required_argumentprivateSpotGetDepositAddressr  r  parse_deposit_address)	r  r  r  r4  r  r3  r  r  r  s	            r  fetch_deposit_addressxt.fetch_deposit_address(  s     	"AA&I==&++K>	$$%:IyQ 
 44T[[5QR 8R8))&;;r  c                     U R                  US5      nU R                  U5        UU R                  S U5      S UU R                  US5      S.$ )Naddressmemo)r	  r  r
  r  tag)r  check_addressr  )r  depositAddressr  r  s       r  r  xt.parse_deposit_addressL  sW     "">9=7#"//h?##NF;
 	
r  c                 0   U R                  5         0 nSnUb  U R                  U5      nUS   US'   Ub  X%S'   Ub  X5S'   U R                  U R                  XT5      5      nU R	                  US0 5      nU R	                  US/ 5      n	U R                  XX#U5      $ )a  
fetch all deposits made to an account

https://doc.xt.com/#deposit_withdrawalhistoryDepositGet

: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 transaction structures to retrieve
:param dict params: extra parameters specific to the xt api endpoint
:returns dict[]: a list of `transaction structures <https://docs.ccxt.com/en/latest/manual.html#transaction-structure>`
Nr.   r  r  r  r  r  )r  r  privateSpotGetDepositHistoryr  r  parse_transactions)
r  r  r  r  r  r  r  r  r  depositss
             r  fetch_depositsxt.fetch_deposits]  s     	}}T*H"*4.GJ#(K $G44T[[5QR6 x26??4"5&&x5PPr  c                 0   U R                  5         0 nSnUb  U R                  U5      nUS   US'   Ub  X%S'   Ub  X5S'   U R                  U R                  XT5      5      nU R	                  US0 5      nU R	                  US/ 5      n	U R                  XX#U5      $ )a  
fetch all withdrawals made from an account

https://doc.xt.com/#deposit_withdrawalwithdrawHistory

: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 transaction structures to retrieve
:param dict params: extra parameters specific to the xt api endpoint
:returns dict[]: a list of `transaction structures <https://docs.ccxt.com/en/latest/manual.html#transaction-structure>`
Nr.   r  r  r  r  r  )r  r  privateSpotGetWithdrawHistoryr  r  r!  )
r  r  r  r  r  r  r  r  r  withdrawalss
             r  fetch_withdrawalsxt.fetch_withdrawals  s     	}}T*H"*4.GJ#(K $G55dkk'6RS6 x26oodGR8&&{eFSSr  r  r  c                    U R                  U5        U R                  5         U R                  U5      nU R                  XE5      u  pESnU R	                  U5      u  puU R                  U R                  S0 5      nU R                  XX5      n	US   U	U R                  X5      US.n
Ub  XJS'   U R                  U R                  X5      5      nU R                  US0 5      nU R                  X5      $ )a  
make a withdrawal

https://doc.xt.com/#deposit_withdrawalwithdraw

: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 xt api endpoint
:returns dict: a `transaction structure <https://docs.ccxt.com/en/latest/manual.html#transaction-structure>`
Nr  r.   )r  r  r  r  r  r  )r  r  r  handle_withdraw_tag_and_paramsr  r  rS  r  currency_to_precisionprivateSpotPostWithdrawr  parse_transaction)r  r  r  r  r  r  r  r4  networkIdsByCodesr3  r  r  r  s                r  r   xt.withdraw  s     	7#==&99#F"AA&I OODLL*bI&&'8tR	 00>	
 ?!FO//G0LM 8R8%%f77r  transactionr  c                    SU;   a  SOSnU R                  US5      nU R                  US5      nU R                  US5      nU R                  U R                  US5      U5      nU R                  US5      nUb  UOS n	U R                  US	5      n
0 S
U_SU R                  US5      _SU R                  US5      _SU_SU R	                  U5      _SS _SU R                  US5      _SU_SU_SS _SS _SU_SU_SU R                  US5      _SU_SU R                  X5      _SU R                  U R                  US5      5      _UU	US S.S S.E$ )NfromAddrr  r   r  r  r  r  r  r  r	  r.   txidtransactionIdr  r  updatedaddressFrom	addressTotagFromtagTor  r  r  r
  r  )r  r~  rate)commentr  internal)r  r  r  r!  r  r   parse_transaction_status)r  r1  r  r  r  r  r  currencyCoder  r  r3  s              r  r.  xt.parse_transaction  s   P (;6yZ%%k=A	"";	:V4..t/?/?Z/XZbc{E2'*lT$$[':	
K
$"";5
 D$$[/B
 	

 Y/
 t
 4++KD
 
 w
 t
 T
 4
 D
 d&&{H=
 
  t..yG!
" d33D4D4D[RZ4[\#
$ '
 1
 	
r  c                 :    SSSSSSSS.nU R                  X!U5      $ )Npendingr  failedok)SUBMITREVIEWAUDITEDPENDINGCANCELFAILSUCCESSr  r  s      r  r>  xt.parse_transaction_status=  s3       
 &99r  rY  c                 ,   Uc  [        U R                  S-   5      eU R                  US5      nU R                  SUSSS/5        US:  d  US:  a  [	        U R                  S	-   5      eU R                  5         U R                  U5      nUS
   (       d  [        U R                  S-   5      eUS   UUS.nSnU R                  SXS5      u  psSnUS:X  a"  U R                  U R                  Xc5      5      nU$ U R                  U R                  Xc5      5      nU$ )aR  
set the level of leverage for a market

https://doc.xt.com/#futures_useradjustLeverage

:param float leverage: the rate of leverage
:param str symbol: unified market symbol
:param dict params: extra parameters specific to the xt api endpoint
:param str params['positionSide']: 'LONG' or 'SHORT'
:returns dict: response from the exchange
Nz) setLeverage() requires a symbol argumentr`  r   r_  r^  r   }   z3 setLeverage() leverage should be between 1 and 125r   z- setLeverage() supports contract markets onlyr.   )r   r`  rY  r   )r   r.   r  r  r   r  rQ  r   r  4privateInversePostFutureUserV1PositionAdjustLeverager  3privateLinearPostFutureUserV1PositionAdjustLeverage)	r  rY  r   r  r`  rQ  r  r  r  s	            r  set_leveragext.set_leverageI  s*    >#DGG.Y$YZZ''?$$]L.SY[bRcdqLhnTWW'\\]]V$z"DGG&UUVVTl( 

 99-XiPPQUQ\Q\]dQmnH  OOPTP[P[\cPlmH r  c                 (    U R                  XSU5      $ )ap  
add margin to a position

https://doc.xt.com/#futures_useradjustMargin

:param str symbol: unified market symbol
:param float amount: amount of margin to add
:param dict params: extra parameters specific to the xt api endpoint
:param str params['positionSide']: 'LONG' or 'SHORT'
:returns dict: a `margin structure <https://docs.ccxt.com/#/?id=add-margin-structure>`
r  modify_margin_helperr  r   r  r  s       r  
add_marginxt.add_marginu       ((GGr  c                 (    U R                  XSU5      $ )a  
remove margin from a position

https://doc.xt.com/#futures_useradjustMargin

:param str symbol: unified market symbol
:param float amount: the amount of margin to remove
:param dict params: extra parameters specific to the xt api endpoint
:param str params['positionSide']: 'LONG' or 'SHORT'
:returns dict: a `margin structure <https://docs.ccxt.com/#/?id=reduce-margin-structure>`
SUBrT  rV  s       r  reduce_marginxt.reduce_margin  rY  r  c                    U R                  US5      nU R                  SUSSS/5        U R                  5         U R                  U5      nUS   UUUS.nS nU R	                  SXd5      u  pS n	US:X  a!  U R                  U R                  Xt5      5      n	O U R                  U R                  Xt5      5      n	U R                  X5      $ )	Nr`  r   r_  r^  r.   )r   r<   r  r`  modifyMarginHelperr   )	r  r  r  rQ  r  ,privateInversePostFutureUserV1PositionMarginr  +privateLinearPostFutureUserV1PositionMarginparse_margin_modification)
r  r   r  addOrReducer  r`  rQ  r  r  r  s
             r  rU  xt.modify_margin_helper  s    ''?$$]L.SY[bRcdV$Tl(	
 99:NPV_iHHU\IefHGGT[HdeH --h??r  c                 <    US S S U R                  S U5      S S S S S S.
$ )N)
r	  r  r  r  r   r  r  r>  r  r  )r  )r  r  rQ  s      r  rb  xt.parse_margin_modification  s7    &&tV4
 	
r  c                    U R                  5         SnU R                  SSU5      u  p2SnUS:X  a  U R                  U5      nOU R                  U5      nU R	                  US/ 5      nU R                  U5      nU R                  XQS5      $ )an  
retrieve information on the maximum leverage for different trade sizes

https://doc.xt.com/#futures_quotesgetLeverageBrackets

:param str [symbols]: a list of unified market symbols
:param dict params: extra parameters specific to the xt api endpoint
:returns dict: a dictionary of `leverage tiers structures <https://docs.ccxt.com/#/?id=leverage-tiers-structure>`
Nrj   r   r  r   )r  r  7publicInverseGetFutureMarketV1PublicLeverageBracketList6publicLinearGetFutureMarketV1PublicLeverageBracketListr  r  parse_leverage_tiers)r  rD  r  r  r  r  s         r  fetch_leverage_tiersxt.fetch_leverage_tiers  s     	99:NPTV\]iSSTZ[HRRSYZH2 x26%%g.((AAr  c                 D   0 n[        S[        U5      5       H  nX   nU R                  US5      nU R                  US SS5      nU R	                  Xx5      n	Ub-  U R                  X5      (       a  U R                  Xh5      XI'   Ml  Mn  U R                  X   U5      XI'   M     U$ )Nr   r   r  r   )r  r  r  r  r  in_arrayparse_market_leverage_tiers)
r  r  rD  marketIdKeyr  r,  r-  r  rQ  r   s
             r  rj  xt.parse_leverage_tiers  s    $ q#h-(AKE''x8H%%hc:FF%%h7F"==11%)%E%Ee%TFN 2 "&!A!A(+v!V ) r  c                 X   U R                  5         U R                  U5      nSUS   0nSnU R                  SX25      u  pRSnUS:X  a!  U R                  U R	                  XB5      5      nO U R                  U R	                  XB5      5      nU R                  US0 5      nU R                  Xs5      $ )ac  
retrieve information on the maximum leverage for different trade sizes of a single market

https://doc.xt.com/#futures_quotesgetLeverageBracket

:param str symbol: unified market symbol
:param dict params: extra parameters specific to the xt api endpoint
:returns dict: a `leverage tiers structure <https://docs.ccxt.com/#/?id=leverage-tiers-structure>`
r   r.   Nrk   r   r  )r  rQ  r  9publicInverseGetFutureMarketV1PublicLeverageBracketDetailr  8publicLinearGetFutureMarketV1PublicLeverageBracketDetailr  ro  )r  r   r  rQ  r  r  r  r  s           r  fetch_market_leverage_tiersxt.fetch_market_leverage_tiers  s     	V$fTl
 99:TV\eiUUVZVaVabiVrsHTTUYU`U`ahUqrH. x26//==r  c                    / nU R                  US/ 5      n[        S[        U5      5       H  nXE   nU R                  US5      nU R	                  XrSS5      nUR                  U R                  US5      U R                  XrSS5      US   U R                  XES-
     S	S5      U R                  US	5      U R                  US
5      U R                  US5      US.5        M     U$ )NleverageBracketsr   r   r  r   bracketrs  r   maxNominalValuemaintMarginRatemaxLeverage)tierr   r  ri  rj  maintenanceMarginRater|  r	  )	r  r  r  r  r  rN  r  r  r!  )r  r	  rQ  r   bracketsr,  r}  r  s           r  ro  xt.parse_market_leverage_tiers7  s    $ ??4);R@q#h-(A;D''h7H%%hZHFLL))$	:**8S*M"8,#//QARTUV#//6GH)-)9)9$@Q)R#//mD	 		 ) r  c                    Uc  [        U R                  S-   5      eU R                  5         SnU R                  USS5      u  pTU(       a  U R	                  SXX4SSSS5	      $ U R                  U5      nUS	   (       d  [        U R                  S
-   5      eSUS   0nUb  X7S'   OSUS'   SnU R                  SXd5      u  pSn	US:X  a!  U R                  U R                  Xt5      5      n	O U R                  U R                  Xt5      5      n	U R                  U	S0 5      n
U R                  U
S/ 5      n/ n[        S[        U5      5       Hr  nX   nU R                  US5      nU R                  X5      nU R!                  US5      nUR#                  UUU R%                  US5      UU R'                  U5      S.5        Mt     U R)                  US5      nU R+                  UUS   X#5      $ )a  
fetches historical funding rates

https://doc.xt.com/#futures_quotesgetFundingRateRecord

:param str [symbol]: unified symbol of the market to fetch the funding rate history for
:param int [since]: timestamp in ms of the earliest funding rate to fetch
:param int [limit]: the maximum amount of [funding rate structures] to fetch
:param dict params: extra parameters specific to the xt api endpoint
:param bool params['paginate']: True/false whether to use the pagination helper to aumatically paginate through the results
:returns dict[]: a list of `funding rate structures <https://docs.ccxt.com/en/latest/manual.html?#funding-rate-history-structure>`
Nz5 fetchFundingRateHistory() requires a symbol argumentFrc   r  r.   r      r=   z7 fetchFundingRateHistory() supports swap contracts onlyr   r  r   r  r  r   r  fundingRate)r	  r   r  r  r  r  )r   r.   r  r  fetch_paginated_call_cursorrQ  r   r  6publicInverseGetFutureMarketV1PublicQFundingRateRecordr  5publicLinearGetFutureMarketV1PublicQFundingRateRecordr  r  r  r  r  r  rN  r!  r  sort_byfilter_by_symbol_since_limit)r  r   r  r  r  r  rQ  r  r  r  r  r  ratesr,  r-  r  symbolInnerr  sorteds                      r  fetch_funding_rate_historyxt.fetch_funding_rate_history[  s    >#DGG.e$eff88AZ\fg334Mv^cmqswyz|  A  AV$f~DGG&__``fTl
 $G"GG99:SU[diRRSWS^S^_fSopHQQRVR]R]^eRnoH* 8R84q#e*%AHE''x8H**8<K))%?ILL%#//}E& LL3  & e[1009I5XXr  c                 $    U R                  X5      $ )a1  
fetch the current funding rate interval

https://doc.xt.com/#futures_quotesgetFundingRate

: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>`
)fetch_funding_rate)r  r   r  s      r  fetch_funding_intervalxt.fetch_funding_interval  s     &&v66r  c                    U R                  5         U R                  U5      nUS   (       d  [        U R                  S-   5      eSUS   0nSnU R	                  SX25      u  pRSnUS:X  a!  U R                  U R                  XB5      5      nO U R                  U R                  XB5      5      nU R                  US0 5      nU R                  Xs5      $ )	a   
fetch the current funding rate

https://doc.xt.com/#futures_quotesgetFundingRate

:param str symbol: unified market symbol
:param dict params: extra parameters specific to the xt api endpoint
:returns dict: a `funding rate structure <https://docs.ccxt.com/#/?id=funding-rate-structure>`
r=   z0 fetchFundingRate() supports swap contracts onlyr   r.   Nrb   r   r  )
r  rQ  r   r.   r  0publicInverseGetFutureMarketV1PublicQFundingRater  /publicLinearGetFutureMarketV1PublicQFundingRater  parse_funding_rate)r  r   r  rQ  r  r  r  r  s           r  r  xt.fetch_funding_rate  s     	V$f~DGG&XXYYfTl
 99:Lf]iLLT[[Y`MijHKKDKKX_LhiH 8R8&&v66r  c                 T   U R                  US5      nU R                  X2SS5      nU R                  US5      nU R                  US5      nUb  US-   n0 SU_SU_SS _S	S _S
S _SS _SS _SS _SU R                  US5      _SU_SU R	                  U5      _SS _SS _SS _SS _SS _SS _SU0E$ )Nr   r  r=   nextCollectionTimecollectionInternalr  r	  	markPrice
indexPriceinterestRateestimatedSettlePricer  r  r  fundingTimestampfundingDatetimenextFundingRatenextFundingTimestampnextFundingDatetimepreviousFundingRatepreviousFundingTimestamppreviousFundingDatetimer  )r  r  r  r!  r  )r  r   rQ  r  r   r  r  s          r  r  xt.parse_funding_rate  sS    ##Hh7!!(C@%%h0DE	##H.BC#~H
H
f
 
 $	

 D
 #D
 
 
 4++HmD
 	
 t||I6
 t
 #D
 "4
 "4
  '!
" &t#
$ %
 	
r  c                    U R                  5         U R                  U5      nUS   (       d  [        U R                  S-   5      eSUS   0nUb  X&S'   Ub  X6S'   SnU R	                  SXT5      u  ptSnUS	:X  a!  U R                  U R                  Xd5      5      nO U R                  U R                  Xd5      5      nU R                  US
0 5      n	U R                  U	S/ 5      n
/ n[        S[        U
5      5       H'  nX   nUR                  U R                  X5      5        M)     U R                  US5      nU R                  XU5      $ )a  
fetch the funding history

https://doc.xt.com/#futures_usergetFunding

:param str symbol: unified market symbol
:param int [since]: the starting timestamp in milliseconds
:param int [limit]: the number of entries to return
:param dict params: extra parameters specific to the xt api endpoint
:returns dict[]: a list of `funding history structures <https://docs.ccxt.com/#/?id=funding-history-structure>`
r=   z3 fetchFundingHistory() supports swap contracts onlyr   r.   Nr  r  r_   r   r  r  r   r  )r  rQ  r   r.   r  3privateInverseGetFutureUserV1BalanceFundingRateListr  2privateLinearGetFutureUserV1BalanceFundingRateListr  r  r  rN  parse_funding_historyr  filter_by_since_limit)r  r   r  r  r  rQ  r  r  r  r  r  r  r,  r-  r  s                  r  fetch_funding_historyxt.fetch_funding_history  sJ    	V$f~DGG&[[\\fTl
 #(K $G99:OQW`iOOPTP[P[\cPlmHNNt{{[bOklH, x26gr2q#e*%AHEMM$44UCD & fk2))&??r  c           
      (   U R                  US5      nU R                  X2SS5      nU R                  US5      nU R                  U5      nU R                  US5      nUUUUU R	                  U5      U R                  US5      U R                  US5      S.$ )	Nr   r  r=   r3  r  r.   cast)r	  r   r  r  r  r.   r  )r  r  r  r  r  r!  )r  r   rQ  r  r   r.  r  r  s           r  r  xt.parse_funding_history:  s     ##Hh7!!(C@%%h7
&&z2%%h>	"Y/""8T2&&x8
 	
r  c                    U R                  5         U R                  U5      nSUS   0nSnU R                  SX25      u  pRSnUS:X  a!  U R                  U R	                  XB5      5      nO U R                  U R	                  XB5      5      nU R                  US/ 5      n[        S[        U5      5       HX  nXx   n	U R                  U	S5      n
U R                  U
SSS5      nU R                  U	S	5      nUS
:w  d  MG  U R                  X5      s  $    g)aN  
fetch data on a single open contract trade position

https://doc.xt.com/#futures_usergetPosition

:param str symbol: unified market symbol of the market the position is held in
:param dict params: extra parameters specific to the xt api endpoint
:returns dict: a `position structure <https://docs.ccxt.com/#/?id=position-structure>`
r   r.   Nry   r   r  r   r   positionSizer   )r  rQ  r  )privateInverseGetFutureUserV1PositionListr  (privateLinearGetFutureUserV1PositionListr  r  r  r  r  parse_position)r  r   r  rQ  r  r  r  	positionsr,  r-  r  marketInnerr  s                r  fetch_positionxt.fetch_positionT  s    	V$fTl
 99/6ZiEEdkkRYFbcHDDT[[QXEabH4 OOHh;	q#i.)ALE''x8H**8T4LK++E>BLs"**5>> * r  c                    U R                  5         SnU R                  SSU5      u  p2SnUS:X  a  U R                  U5      nOU R                  U5      nU R	                  US/ 5      n/ n[        S[        U5      5       HM  nXW   nU R                  US5      n	U R                  U	SSS5      n
UR                  U R                  X5      5        MO     U R                  USUS5      $ )	a:  
fetch all open positions

https://doc.xt.com/#futures_usergetPosition

:param str [symbols]: list of unified market symbols, not supported with xt
:param dict params: extra parameters specific to the xt api endpoint
:returns dict[]: a list of `position structure <https://docs.ccxt.com/#/?id=position-structure>`
Nrz   r   r  r   r   r   F)r  r  r  r  r  r  r  r  r  rN  r  filter_by_array_positions)r  rD  r  r  r  r  r  r,  r-  r  r  s              r  fetch_positionsxt.fetch_positions  s     	99:JDRXYiEEfMHDDVLH4 OOHh;	q#i.)ALE''x8H**8T4LKMM$--eAB	 *
 --fhOOr  c           
         U R                  US5      nU R                  X2S S5      nU R                  X2S S5      nU R                  US5      nUS:X  a  SOSnU R                  US5      nU R	                  0 SU_S	S _SU_S
S _SS _SS _SU R                  US5      _SU R                  US5      _SUS   _SU R                  US5      _SS _SS _SU R                  US5      _SU_SU_SS _SS _S S S US S S.E5      $ )Nr   r   positionTypeCROSSEDcrossisolatedr:  r	  r.   r  r  r  r  r`  	contractsr  ry  
entryPricer  notionalrY  
collateralinitialMarginmaintenanceMargininitialMarginPercentage)maintenanceMarginPercentageunrealizedPnlliquidationPricer  r   marginRatio)r  r  r  r!  safe_positionr   r  )r  positionrQ  r  r   r  r  r  s           r  r  xt.parse_position  s   & ##Hh7!!(D*E!!(D*E''.A!-!:W
%%h0@A
!! #
H#
$#
 f#
 	#

 #
 d#
 D**8^D#
 ))(NC#
 F>2#
 $**8\B#
 #
 #
 ))(J?#
 *#
 Z#
   !#
" &t##
$ ,0! $$/#
  	r  fromAccount	toAccountc                 z   U R                  5         U R                  U5      nU R                  U R                  S5      nU R	                  XsU5      nU R	                  XtU5      n	U R                  X5      n
U R                  5       US   U
UU	S.nU R                  U R                  X5      5      nU R                  X5      $ )a   
transfer currency internally between wallets on the same account

https://doc.xt.com/#transfersubTransferPost

:param str code: unified currency code
:param float amount: amount to transfer
:param str fromAccount: account to transfer from -  spot, swap, leverage, finance
:param str toAccount: account to transfer to - spot, swap, leverage, finance
:param dict params: extra parameters specific to the whitebit api endpoint
:returns dict: a `transfer structure <https://docs.ccxt.com/#/?id=transfer-structure>`
r  r.   )bizIdr  r  fromto)
r  r  r  rS  r  r,  uuidprivateSpotPostBalanceTransferr  parse_transfer)r  r  r  r  r  r  r  accountsByTypefromAccountIdtoAccountIdrV  r  r  s                r  r   xt.transfer  s     	==&~F((kR&&~)L11$?YY[ "!
 66t{{77ST ""866r  c           
      :    UU R                  US5      S S S S S S S S.	$ )Nr  )	r	  r.   r  r  r  r  r  r  r  r  )r  r   r  s      r  r  xt.parse_transfer  s4    ""8X6

 
	
r  r  c                    Uc  [        U R                  S-   5      eU R                  5         U R                  U5      nUS   (       a  [	        U R                  S-   5      eUR                  5       nUS:w  a  US:w  a  [        U R                  S-   5      eUS:X  a  SnOSnU R                  US	5      nUc  [        U R                  S
-   5      eUUUS   S.nU R                  U R                  Xc5      5      nU$ )a`  
set margin mode to 'cross' or 'isolated'

https://doc.xt.com/#futures_userchangePositionType

:param str marginMode: 'cross' or 'isolated'
:param str [symbol]: required
:param dict [params]: extra parameters specific to the exchange API endpoint
:param str [params.positionSide]: *required* "long" or "short"
:returns dict: response from the exchange
z+ setMarginMode() requires a symbol argumentr;   z/ setMarginMode() supports contract markets onlyr  r  z@ setMarginMode() marginMode argument should be isolated or crossr  ISOLATEDr`  zL setMarginMode() requires a positionSide parameter, either "LONG" or "SHORT"r.   )r  r`  r   )
r   r.   r  rQ  r   lowerr   rP  /privateLinearPostFutureUserV1PositionChangeTyper  )r  r  r   r  rQ  posSider  r  s           r  set_margin_modext.set_margin_mode+  s     >#DGG.[$[\\V$&>DGG&WWXX%%'
#
g(=TWW'iijj "J#J((@?#DGG.|$|}}&#Tl

 GGT[Hde r  c                 D   Uc  [        U R                  S-   5      eU R                  5         U R                  U5      n0 n	U R	                  USS5      n
U R	                  USS5      nU R                  USS/5      nU
SLnUSLnU(       d  U(       a  XS'   OXS'   U R                  X&5      U	S	'   SnUS
   (       Ga  U(       a  U R                  X*5      U	S'   O,Ub  U R                  X+5      U	S'   OU R                  X%5      U	S'   SnU R                  SX5      u  pUS:X  aP  U(       d  U(       a!  U R                  U R                  X5      5      nOU R                  U R                  X5      5      nOU(       d  U(       a!  U R                  U R                  X5      5      nOUU R                  U R                  X5      5      nO4U R                  X%5      U	S'   U R                  U R                  X5      5      nUS
   (       a  UOU R                  US0 5      nU R!                  UU5      $ )ag  
cancels an order and places a new order

https://doc.xt.com/#orderorderUpdate
https://doc.xt.com/#futures_orderupdate
https://doc.xt.com/#futures_entrustupdateProfit

:param str id: order id
: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 the currency you want to trade in units of the 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
:param float [params.stopLoss]: price to set a stop-loss on an open position
:param float [params.takeProfit]: price to set a take-profit on an open position
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
Nz( editOrder() requires an amount argumentrb  rc  rd  re  ry  r  r}  r=   r\  rK   r   r  r  )r   r.   r  rQ  r  r  rR  rS  r  6privateInversePostFutureTradeV1EntrustUpdateProfitStopr  *privateInversePostFutureTradeV1OrderUpdate5privateLinearPostFutureTradeV1EntrustUpdateProfitStop)privateLinearPostFutureTradeV1OrderUpdateprivateSpotPutOrderOrderIdr  rU  )r  r.   r   r  r  r  r}  r  rQ  r  rb  rd  rr  rs  r  r  r  s                    r  
edit_orderxt.edit_orderZ  s   & >#DGG.X$XYYV$%%fj:LM''>RS
6J#=>d*
"$."$J!#I#66vEGG&>>.2.E.Ef.W*+'040G0G0[,-%)%=%=f%M	"G"==k6ZOG)##ZZ[_[f[fgn[wxH#NNt{{[bOklH #YYZ^ZeZefmZvwH#MMdkkZaNjkH #'":":6"JGJ66t{{77STH %Vn4>>(HVX3Y//r  c
                    U R                  USS5      n
U
b  U
S:w  a  U R                  S-   U-   nU R                  US0 5      nU R                  US5      nU R                  USU5      nU R                  US5      nU R                  USU5      nU R	                  U R
                  S   X5        U R                  U R
                  S	   UU5        [        U5      eg )
NmsgInfomcrK   errorr  msgrB  rC  )safe_string_upper_2r.   r  r  throw_exactly_matched_exceptionr   throw_broadly_matched_exceptionr   )r  r  reasonurlmethodheadersbodyr  requestHeadersrequestBodyr  feedbackr  spotErrorCode	errorCodespotMessagemessages                    r  handle_errorsxt.handle_errors  s    j ))(ItD&I"5ww}t+HOOHgr:E ,,Xt<M((FI**8Y?K&&ue[AG001I9_001I7T\]))r  GETc                 (   US   S:H  nUS   nSU R                  X5      -   n	S n
US:X  d  US:X  a0  U(       a  SU R                  -   U	-   n
OSU R                  -   S-   U	-   n
OU	n
U R                  S   U   U
-   nU R                  X@R	                  U5      5      nU R                  U R                  U5      5      nS	S
0nU(       Ga=  U R                  5         U R                  U R                  S5      nU R                  USU5      nU R                  U R                  5       5      nUnU
S:X  d  U
S:X  d  U
S:X  d  U
S:X  d  U
S:X  a"  SnU
R                  S5      S:  a  UUS'   OUUS'   US:H  =(       d    US:H  =(       d    US:H  nUS:X  a  US:X  a  SnU(       a  S OU R                  U5      nS nUS:X  d  US:X  a  SU R                  -   S-   U-   S-   S-   U-   nU(       aQ  U(       a;  USU-   -  nUS U-   S -   U
-   S -   U R                  U R                  U5      5      -   -  nO#US U-   S -   U
-   -  nOUS U-   S -   U
-   S -   U-   -  nS!US"'   XS#'   OSS$U R                  -   S-   S-   U-   nUS:X  a'  U(       a  USU-   -  nUS U
-   S -   U-   -  nOUS U
-   -  nOUS U
-   S -   U-   -  nU R!                  U R#                  U5      U R#                  U R$                  5      [&        R(                  5      nU R                  US%'   UUS&'   UUS''   OU(       a  USU-   -  nXXeS(.$ ))Nr   r   r   rX  r;   r   z/publicr   zContent-Typezapplication/jsonr  z	/v4/orderz/future/trade/v1/order/createz$/future/trade/v1/entrust/create-planz&/future/trade/v1/entrust/create-profitz#/future/trade/v1/order/create-batchCCXTr>   clientMediamediar  r   r   PUTFz5xt-validate-algorithms=HmacSHA256&xt-validate-appkey=z&xt-validate-recvwindow=z&xt-validate-tz	imestamp=?#
HmacSHA256zxt-validate-algorithmszxt-validate-recvwindowzxt-validate-appkey=zxt-validate-appkeyzxt-validate-timestampzxt-validate-signature)r  r  r  r  )implode_paramsr5   r   r  extract_params	urlencodekeysortcheck_required_credentialsr  rS  r"  r  findjsonapiKey	rawencodehmacencodesecrethashlibsha256)r  pathr   r  r  r  r  signedendpointr  payloadr  query
urlencodeddefaultRecvWindowr  r  r.   isUndefinedBodypayloadString	signatures                        r  signxt.sign  s   Q9$q6++D99H$6,w6,y87BGiix(72		&"5"5d";<^^DLL$78
.
 ++- $ 0 0| L))%?PQJ--djjl;ID;&G7V,V\c  hN  ]N  T[  _G  TG  MT  X}  M}<<)B.*,D'$&DM &%gT=N5NgTX\fTfO%h&&8"'*4		$D MF"F(: WZ^ZeZe e  iC  !C  FP  !P  Sc  !c  fq  !q  t}  !}"!sZ//%v);g)E)Kdnn]a]i]ijo]pNq)qq%v);g)EE!S6\C%7'%AC%G$%NNM4@014>01 5 CFV VYd dgp pU?!sZ//%w)<z)II%w6!S7]S%84%??M		$++m"<dkk$++>VX_XfXfgI,0KKG()/8G+,/8G+,sZ''dOOr   )N)NN)f__name__
__module____qualname____firstlineno__r   r  r  r	   r  r   r6  r   r   rA  r:  r;  rF  dictrO  strr  listr  r  r  r   r  r  r  r  r
  r'  r0  r.  floatrF  r   r   r   rE  rI  rJ  r  r  r  r  r  r  r  r  r   r  rU  r  r   r
   r  r  r  r   r  r  r#  r(  r   r   r   r.  r>  intrQ  rW  r\  r   rU  rb  r   rk  rj  r   ru  ro  r  r   r  r  r  r  r  r  r   r  r  r   r   r  r  r  r  r(  __static_attributes____classcell__)r  s   @r  r*   r*      sL   Q# QfD !# 5s 5. ') HZ HT $& D$v, D* )+ 8+t 46 A8Fs4 sF sj 9=4^bkm UJ# UJ# UJS UJX[ UJn$
 $
4 $
L :>b Us U3 Un 02 H13 H1T 26b R?T#Y R?W R?h 48 '4tCy '4RN` 6:UW C13 C1s C1# C1J -1tRV_a e?c e? e?C e?NbH $& I,V+)Z RT K K5 K" gksu Y3 Yi Yy YRW Y`c Y@ HLTV 4/ 4/l LPXZ @2C @2D 26b j/c j/3 j/X *.Dt\^ _?3 _?c _? _?B <@daenp ?S ? ?[^ ?B /3TXac Q Q3 Qc Q& 154VZce S# SS SPS S& 37TX\eg UC Us URU U& 37r K/s K/C K/Z /32 G
 G
R ;?r #
c #
C #
dSXk #
JeN:$ (,$TZ\ 9A 9AC 9As 9Aaefqar 9Av% %N8 79 "<# "<^ "<H
n 
" *.Dt\^ 3Q3 3Qc 3Q 3Qj -1tRV_a 3Tc 3T 3TC 3Tj KOWY )8S )8% )8# )8C )8^i )8VI
T I
X I
Q\ I
V
: 9=R *S *# *X =? H He H @B HC H H MO @3 @Se @8
>P 
 9=R ,BDI ,BM ,B\P] > ?A -># ->T,EW ->^"\@R "H 8<$]ajl IY IYC IYWZ IYV :< 
7S 
7 
7 68 &7 &7K &7P"
; "
H 37TX\eg :@C :@s :@RU :@x
4 24 7S 7r 48 2PtCy 2PtH~ 2Ph1f [] (7S (7% (7c (7c (7an (7T
 >B" -# -s -^ `drv  @B V0S V0# V0Y V0i V0Y\ V0lo V0  GL V0p@D  b$T @P @Pr  r*   )/ccxt.base.exchanger   ccxt.abstract.xtr   r  ccxt.base.typesr   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=     sx    ( (  t  t  t  t  t  t  * 0 - . ' & . ) ) ) . * + 4 %XLP; XLPr  