
    E#iVX                       S SK Jr  S SKJr  S SKrS SKrS SKJrJrJ	r	J
r
JrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJr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!J0r0  S SK!J1r1  S SK!J2r2  S SK!J3r3  S SK4J5r5  S SK4J6r6  S SK7J8r8   " S S\\5      r9g)    )Exchange)ImplicitAPIN)AnyBalances
CurrenciesCurrencyDepositAddress	IndexTypeIntLedgerEntryMarketNumOrder	OrderBookOrderRequest	OrderSide	OrderTypePositionStrStringsTickerTickersTradeTradingFeeInterfaceTransactionTransferEntry)List)ExchangeError)AuthenticationError)PermissionDenied)AccountSuspended)ArgumentsRequired)
BadRequest)	BadSymbol)InsufficientFunds)InvalidAddress)InvalidOrder)OrderNotFound)NotSupported)DDoSProtection)RateLimitExceeded)ExchangeNotAvailable)OnMaintenance)InvalidNonce)CancelPending)TRUNCATE)	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 jr
0 4S\4S jjrSrS	\S
\S\4U 4S jjjr0 4S\S\4S jjrS rSsS\S\S\4S jjrS0 4S\S\S\4S jjrSrS\S\S\4S jjrS0 4S\S\4S jjr0 4S\S\4S jjrSrS\S\ 4S jjr!SSS0 4S\S\S\S\S\\    4
S jjr"S  r#SrS!\S
\S\$4S" jjr%SSS0 4S#\S\S\S\\$   4S$ jjr&S0 4S#\4S% jjr'S0 4S&\S#\S\$4S' jjr(SrS(\S\S\)4S) jjr*SS0 4S\S\S\S\\)   4S* jjr+S\,4S+ jr-0 4S\,4S, jjr.0 4S\S-\/S.\04S/ jjr10 4S\S.\04S0 jjr2S0 4S\S1\3S-\/S2\0S3\44
S4 jjr50 4S5\\6   4S6 jjr7S7 r8S8 r9S9\4S: jr:S; r;SrS<\S\S\<4S= jjr=S0 4S>\S\S1\S?\S2\4S3\44S@ jjr>SS0 4S&\S\S1\3S-\/S2\4S3\44SA jjr?S0 4S&\S\4SB jjr@SSS0 4S&\S\S\S\4SC jjrAS0 4S\4SD jjrBSSS0 4S\S\S\4SE jjrCS0 4S&\S\4SF jjrDS0 4SG\\   S\4SH jjrES0 4S\4SI jjrF0 4SJ\4SK jjrGSSS0 4S\S\S\S\\<   4SL jjrHSSS0 4S\S\S\S\\<   4SM jjrIS9\4SN jrJSO rKSrSP\S
\S\L4SQ jjrMStS#\S\S\4SR jjrNSSS0 4S#\S\S\S\\L   4SS jjrO0 4S\4ST jjrPSSS0 4S#\S\S\S\\L   4SU jjrQSV rR0 4S#\S\S4SW jjrT0 4S#\4SX jjrU0 4S#\S\S4SY jjrVSrS
\S\S4SZ jjrWS0 4S#\S2\0S[\S\\S\L4
S] jjrXS0 4S\S\\Y   4S^ jjrZSrS_\S\4S` jjr[Sa r\0 4S#\4Sb jjr]0 4S#\S2\0Sc\Sd\S\^4
Se jjr_SrSf\S
\S\^4Sg jjr`ShSi0 SS4Sj jraSk rbS#\cSl\Sm\S>\Sn\So\4Sp jrdSqreU =rf$ )ukraken#   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_SESF_SGS_SHS_SIS_SJS_SKS_SLS_SMS_SNS_SOS_SPS_SQS_SRS_SSS_STS_E_SUSVSWSXSYSZS[S\S]S^S_.	_S`SaSbSbScSd.SeSfSgSh._SiSjSSU R	                  Sk5      U R	                  Sl5      U R	                  S5      U R	                  Sk5      /U R	                  Sm5      U R	                  Sn5      /U R	                  So5      U R	                  Sp5      /U R	                  Sq5      U R	                  Sr5      /U R	                  Ss5      U R	                  St5      /U R	                  Su5      U R	                  Sl5      /U R	                  Sv5      U R	                  Sw5      /U R	                  Sx5      U R	                  Sy5      /U R	                  Sz5      U R	                  S{5      //	U R	                  S5      U R	                  Sl5      /U R	                  Sm5      U R	                  Sw5      /U R	                  So5      U R	                  Sy5      /U R	                  Sq5      U R	                  S|5      /U R	                  Ss5      U R	                  S}5      /U R	                  Su5      U R	                  S~5      /U R	                  Sv5      U R	                  S5      /U R	                  Sx5      U R	                  S5      /U R	                  Sz5      U R	                  S5      //	S.S.0_SS_SSSS/0SSVSVSSSVSVSVSVSS.	0S0 SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_0 SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_ESSSSSSSSSS.	E0S._S0 SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SSSSSSSSS.E_SSS0 0 / SQSSS.0 SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_0 SS_GS GS_GSGS_GSGS_GSGS_GSGS	_SGS
_GSGS_GSGS_GSGS_GSGS_SGS_SGS_GSGS_SGS_GSGS_GSGS_E0 GSGS_GSGS_GSGS_GSGS _GS!GS"_GS#GS$_GS%GS&_GS'GS(_GS)GS*_GS+GS,_GS-GS._GS/GS0_GS1GS2_GS3GS4_SGS5_GS6GS6_GS7GS8_E0 GS9GS:_GS;GS<_GS=GS>_SS_GS?GS@_GSAGSA_GSBGSB_GSCGSD_GSEGSE_GSFGSG_GSHGSI_GSJGSK_GSLGSM_GSNGSO_GSPGSP_GSQGSR_GSSGST_E0 GSUGSV_SGSW_SS_GSXGSY_GSZGS[_GS\GS]_GS^GS__GS`GSa_GSbGSc_GSdGSe_GSfGSg_GShGSi_GSjGSk_GSlGSl_GSmGSm_GSnGSo_GSpGSq_EGSrGSsGStGSuGSvGSwGSxGSyGSzGS{.	E0 GS|GS|_SS_GS}S_GS5S_GS
S_GS~S_GSS_GSGS_GSGS7_GSGS_GSGS_GSGS_GSS_GSS_GSuS_GSkS_GS_GS^_0 GSGS_SS_GSS_GSGSP_GSGSw_SS_GSGSA_GS[GSZ_GS4GS3_GSrGS_GSGS_SS_GSGS7_GSGS_GSGS_GS&GS%_GSGS_E0 GS,GS+_GSGS_GSGS_GS:GS9_GSGS_GSGS#_GSGS?_GSGS\_GSGSN_GSS_GSGS_GSS_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SSGSGSGSGSGSGSGSGSGSGSGSGS.EGSGS/G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.GSSXSGS.SS S S SGS.SSSSGS.SS SSSGS.S SS S S GSSSSGS.GSGS0GS.	S S GS.S S GS.GS._GS[
        _GS0 GS[        _GS[        _GS[        _GS[        _GS[        _GS[        _GS[        _GS[        _GS[        _GS[        _GS[        _GS[        _GS[        _GS[        _GS[        _GS[        _GS[        _[        [        [        [        [        [        [         [        ["        GS.	E[        [        [        [        [        [$        [&        GS.GS.0E5      $ (  Nidr4   nameKraken	countriesUSversion0	rateLimit  	certifiedFproThasCORSspotmarginswapfutureoption	addMargincancelAllOrderscancelAllOrdersAftercancelOrdercancelOrderscreateDepositAddresscreateMarketBuyOrderWithCostcreateMarketOrderWithCostcreateMarketSellOrderWithCostcreateOrdercreateOrderscreateStopLimitOrdercreateStopMarketOrdercreateStopOrdercreateTrailingAmountOrdercreateTrailingPercentOrder	editOrderfetchBalancefetchBorrowInterestfetchBorrowRateHistoriesfetchBorrowRateHistoryfetchClosedOrdersfetchCrossBorrowRatefetchCrossBorrowRatesfetchCurrenciesfetchDepositAddressfetchDepositAddressesfetchDepositAddressesByNetworkfetchDepositsfetchFundingHistoryfetchFundingRatefetchFundingRateHistoryfetchFundingRatesfetchIndexOHLCVfetchIsolatedBorrowRatefetchIsolatedBorrowRatesfetchLedgerfetchLedgerEntryfetchLeverageTiersfetchMarketsfetchMarkOHLCVfetchMyTrades
fetchOHLCVfetchOpenInterestHistoryfetchOpenOrders
fetchOrderfetchOrderBookfetchOrderTradesemulatedfetchPositionsfetchPremiumIndexOHLCVfetchStatusfetchTickerfetchTickers	fetchTimefetchTradesfetchTradingFeefetchTradingFeesfetchWithdrawalssetLeveragesetMarginModetransferwithdraw
timeframes            <      i  i`'  i`T  )	1m5m15m30m1h4h1d1w2wurlszdhttps://user-images.githubusercontent.com/51840849/76173629-fc67fb00-61b1-11ea-84fe-f2de582f58a3.jpgzhttps://api.kraken.comz<https://kraken.zendesk.com/api/v2/help_center/en-us/articles)publicprivatezendeskzhttps://www.kraken.comzhttps://docs.kraken.com/rest/z2https://www.kraken.com/en-us/features/fee-schedule)logoapiwwwdocfeesr   tradingz0.0026z0.001650000z0.0024100000z0.0022250000z0.0020500000z0.001810000002500000z0.00145000000z0.001210000000z0.0001z0.0010z0.0008z0.0006z0.0004z0.0002z0.0)takermaker)	tierBased
percentager   r   tiershandleContentTypeApplicationZipr   get360000292886	201893608g333333?)	Assets
AssetPairsDepthOHLCSpreadSystemStatusr   TimeTradespostAddOrderr   AddOrderBatch	AddExport   
AmendOrderBalance	CancelAllCancelAllOrdersAfterCancelOrderCancelOrderBatchClosedOrdersDepositAddressesDepositMethodsDepositStatus	EditOrderExportStatusGetWebSocketsTokenLedgers   
OpenOrdersOpenPositionsQueryLedgersQueryOrdersQueryTradesRetrieveExportRemoveExport	BalanceExTradeBalanceTradesHistoryTradeVolumeWithdrawWithdrawCancelWithdrawInfoWithdrawMethodsWithdrawAddressesWithdrawStatus)	WalletTransferCreateSubaccountAccountTransferzEarn/AllocatezEarn/DeallocatezEarn/AllocateStatuszEarn/DeallocateStatuszEarn/StrategieszEarn/Allocations)r   r   r   commonCurrenciesLUNALUNCLUNA2REPV2REPREPV1USTUSTCXBTBTCXDGDOGEFEEKFEEXETCETCXETHETHXLTCLTCXMLNMLNXREPXXBTXXDGXXLMXLMXXMRXMRXRPZECAUDCADEURGBPJPYUSD)XXRPXZECZAUDZCADZEURZGBPZJPYZUSDoptions)r  r	  r  r  ERC20TRC20)r   TRX1INCHz1inch (1INCH)AAVEAaveADAALGOAlgorandANKRzANKR (ANKR)ANTzAragon (ANT)ATOMCosmosAXSzAxie Infinity Shards (AXS)BADGERzBager DAO (BADGER)BALzBalancer (BAL)BANDzBand Protocol (BAND)BATBCHzBitcoin CashBNCzBifrost (BNC)BNTzBancor (BNT)BitcoinCHZzChiliz (CHZ)COMPzCompound (COMP)CQTz	Covalent Query Token (CQT)CRVzCurve DAO Token (CRV)CTSIzCartesi (CTSI)DAIDaiDASHDashDogecoinDOTPolkadotDYDXzdYdX (DYDX)ENJzEnjin Coin (ENJ)EOSzEther Classic (Hex)zEther (Hex)EWTzEnergy Web TokenzKraken Fee CreditFILFilecoinFLOWFlowGHSTzAavegotchi (GHST)GNOGRTICXIconINJzInjective Protocol (INJ)KARzKarura (KAR)KAVAKavaKEEPzKeep Token (KEEP)KNCzKyber Network (KNC)KSMKusamaLINKLinkLPTzLivepeer Token (LPT)LRCzLoopring (LRC)LSKLiskLitecoinMANAMATICzPolygon (MATIC)MINAMinaMIRzMirror Protocol (MIR)MKRzMaker (MKR)MOVRzMoonriver (MOVR)NANOOCEANOGNzOrigin Protocol (OGN)OMGOXTzOrchid (OXT)OXYzOxygen (OXY)PAXGz
PAX (Gold)PERPzPerpetual Protocol (PERP)PHAzPhala (PHA)QTUMRARIzRarible (RARI)RAYzRaydium (RAY)RENzRen Protocol (REN)REPv2SANDzThe Sandbox (SAND)SCSiacoinSDNzShiden (SDN)SOLSolanaSNXzSynthetix  Network (SNX)SRMSerumSTORJzStorj (STORJ)SUSHIzSushiswap (SUSHI)TBTCtBTCr  TronUNIUSDCUSDTzTether USD (ERC20)z
USDT-TRC20zTether USD (TRC20)WaveszWrapped Bitcoin (WBTC)zStellar XLMMoneroz
Ripple XRPXTZYFIzZcash (Transparent)z0x (ZRX))	WAVESWBTCr   r  r  ry  rz  r  ZRX	LightningRippleStellarEthereumzArbitrum OneArbitrumPolygonzArbitrum NovaOptimismz
zkSync ErazkSynczEthereum ClassicZcashCardanoQtumTezosNanor{  ICONzPolygon - USDC.ezArbitrum One - USDC.ez
Energy WebEW
CentrifugeCFGKarura	MoonriverShidenKhalazBifrost KusamaSongbirdSGBzTerra classicKILTBasiliskBSXFlareFLRzAvalanche C-ChainAVAXKintsugiKINTAltairAIRMoonbeamGLMRAcalaACAAstarASTRAkashAKT
RobonomicsXRTFantomFTMElrondEGLD	THORchainRUNESecretSCRTNearNEARzInternet Computer ProtocolICPPicassoPICAzCrust ShadowCSM
IntegriteeTEERzParallel FinancePARAHydraDXHDXINTRFETNYMJUNONODLSTXETHWAPTSUIGENSAVTSEIOTPTIA)InterlayzFetch.air  z	Terra 2.0JunoNodleStackszEthereum PoWAptosSuiGenshiroAventusSeiOriginTrailCelestiamarketsByAltnamedelistedMarketsById)	timeDifferenceadjustForTimeDifferencer  r  inactiveCurrenciesnetworksdepositMethodswithdrawMethodsmarketHelperPropsfeatures)IOCFOKPOGTD)
marginModetriggerPricetriggerPriceTypetriggerDirectionstopLossPricetakeProfitPriceattachedStopLossTakeProfittimeInForcehedgedtrailingleveragemarketBuyByCostmarketBuyRequiresPriceselfTradePreventioniceberg   )minmaxsameSymbolOnly)r  limitdaysBack	untilDayssymbolRequired)r  triggerr  r  )r  r  r  r  r  i )r  r  r  daysBackCanceledr  r  r  r  r    )	sandboxrS   rT   rs   rw   rv   fetchOrdersr_   rt   )linearinverserE   rG   rH   precisionMode
exceptionszEQuery:Invalid asset pairzEAPI:Invalid keyzEFunding:Unknown withdraw keyzEFunding:Invalid amountzEService:UnavailablezEDatabase:Internal errorzEService:BusyzEQuery:Unknown assetzEAPI:Rate limit exceededzEOrder:Rate limit exceededzEGeneral:Internal errorzEGeneral:Temporary lockoutzEGeneral:Permission deniedz EGeneral:Invalid arguments:priceEOrder:Unknown orderz+EOrder:Invalid price:Invalid price argumentzEOrder:Order minimum not met)	zEOrder:Insufficient fundszEGeneral:Invalid argumentszESession:Invalid sessionzEAPI:Invalid noncezEFunding:No funding methodzEFunding:Unknown assetz!EService:Market in post_only modezEGeneral:Too many requestszETrade:User Locked)z:Invalid orderz:Invalid arguments:volumez:Invalid arguments:viqcz:Invalid noncez:IInsufficient fundsz:Cancel pendingz:Rate limit exceeded)exactbroad)deep_extendsuperr4   describeparse_numberr1   r$   r   r&   r%   r,   r*   r    r'   r#   r.   r-   r!   r/   r+   )self	__class__s    S/home/james-whalen/.local/lib/python3.13/site-packages/ccxt/async_support/kraken.pyr	  kraken.describe%   s   fd < > aA
(aA
HaA
 $aA
 s	aA
 aA
 aA
 4aA
  EEE $E 	E
 %E %E UE "4E 'E tE E 'E /E ,UE 0E  t!E" #E$ '%E& ('E( "4)E* ,T+E, -d-E. T/E0 1E2 &u3E4 +E5E6 )%7E8 $T9E: ';E< (=E> "4?E@ &tAEB (CED 1%EEF  GEH &uIEJ #EKEL *5MEN $UOEP "5QER *5SET +EUEV tWEX #DYEZ %e[E\ ]E^ !%_E`  aEb dcEd +EeEf "4gEh diEj !$kEl #JmEn !$oEp )%qEr tsEt tuEv wEx TyEz t{E| "4}E~ #EE@ #DAEB uCED  EEF DGEH DIEaA
b 
caA
x ~67]
 06L
yaA
N !%"&!..x8!..x8 "..s3T5F5Fx5PQ!..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
" "..s3T5F5Fx5PQ!..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<Me<TU
"OaA
N .tOaA
P  '#	 "#&'!$ #"#()"# !"%  ."A.'. $Q. %a	.
 "1. $Q. /. &q. +A. '. +A. )!. (. $Q. '.  -a!." "1#.$ %a%.& ('.( ').* &q+., &q-.. )!/.0 '1.2 $Q3.4 '5.6 (7.8 &q9.: #A;.< )!=.> '?.@ *1A.B ,QC.D )!E.F +,,-+,)*+,/012+,,-[.0/HQaA
b  !! ! 	!
 w! v! u! v! v! ! ! ! ! ! !  !!" #!$ %!& 5!caA
Z "#+0$&')&B""_#6_#F_# 5_# J	_#
 3_# 3_# H_# A_# <_# 5_# <_# 5_# >_# 4_# 3_#  9!_#" 3#_#$ 7%_#& C'_#( <)_#* 6+_#, 5-_#. F/_#0 J1_#2 :3_#4 35_#6 77_#8 59_#: :;_#< 2=_#> -?_#@ .A_#B :C_#D FE_#F 9G_#H 5I_#J 5K_#L 6M_#N ?O_#P 3Q_#R FS_#T 9U_#V :W_#X 8Y_#Z F[_#\ ;]_#^ 5__#` 6a_#b :c_#d Fe_#f 8g_#h Fi_#j <k_#l 2m_#n 5o_#p 8q_#r Fs_#t Wu_#v <w_#x 5y_#z 3{_#| 3}_#~ 2_#@ AA_#B 2C_#D FE_#F 6G_#H 4I_#J 9K_#L 7M_#N UO_#P :Q_#R )S_#T 3U_#V 8W_#X ?Y_#Z 7[_#\ 6]_#^ :__#` Fa_#b 6c_#d 5e_#f Fg_#h :i_#j !"@k_#l %>(#'  :/}_#@T$T$uT$ eT$ 	T$
 T$ uT$ T$ #JT$ wT$ $ZT$ 
T$ !(T$ 'T$ UT$ eT$  G!T$" e#T$$ 5%T$& #E'T$( u)T$* F+T$, U-T$. f/T$0 F1T$2 t3T$4 E5T$6 W7T$8 E9T$: ;T$< '=T$> ,Z?T$@ AT$B FCT$D ET$F eGT$H FIT$J !$KT$L FMT$N !%OT$P eQT$R  ST$T eUT$V UWT$X %eYT$Z [T$\ $V]T$^ F_T$` aT$b UcT$d (eT$f gT$h eiT$j kT$l UmT$n VoT$p UqT$r !%sT$t euT$v fwT$x  yT$z f{T$| F}T$~ 1%T$@ vAT$B #ECT$D !&ET$F 'GT$H uIT$J !' % !("##$*"  &$ #( %gT$j '9:O%PAA[aA
^ $&+(-,0,1)-+/6:#'#'"&#(	( #($($)+/27/3#')$.  !!*.% ',!%$(%)*/& ',#($)*/	# ',!%#($)*/( $(&+!%$(,0%+#($)*/	*  #y?B ##
 ##KI_aA
r YsaA
t /&(; 4^ ./@	
 +,@ /0D $%9 +I / 1. ./C 1. 12B 7 +L  B<!" 3L#$ 2C2<0C*62<.79F2@*:5: '31=/;&2,='4,=;&uaA
 a a	    c                 l    U R                  U[        U R                  U   S   S   U R                  5      $ )N	precisionamount)decimal_to_precisionr0   marketsr  )r  symbolfees      r  fee_to_precisionkraken.fee_to_precisionI  s4    ((hV8L[8YZb8ceiewewxxr  c                 T  #    / nUR                  U R                  U5      5        U R                  S   (       a  UR                  U R                  5       5        [        R
                  " U6 I Sh  vN nUS   nU R                  US0 5      nU R                  U R                  S0 5      n[        UR                  5       5      n/ n[        S[        U5      5       GH  n	Xy   n
XZ   nU R                  US5      nU R                  US5      nU R                  U5      nU R                  U5      nUnUnU R                  US/ 5      nU R                  US/ 5      nU R                  US	5      nSnUb&  U R                  [        R                   " US
5      5      nU R                  US/ 5      nU R                  US/ 5      nU R                  US	5      nSnUb&  U R                  [        R                   " US
5      5      nU R                  US/ 5      n[        U5      nU R                  U R#                  U R                  US5      5      5      nU R                  U R#                  U R                  US5      5      5      nSnU(       a%  UU;   a  UU   nU R%                  US5      n U U:  a  U nU R                  US5      n!U!S:H  n"UR                  0 SU
_SU R                  US5      _SUS-   U-   _SU_SU_SS_SU_SU_SS_SUS   _SS_SU_SUS:  _S S!_S"S!_S#S!_S$U"_S!SSUUSSSSSUUS%.U R                  S&5      U R%                  UUS	-
  S	5      S'.U R%                  US(5      SS'.SSS'.U R%                  US)5      SS'.S*.SUS+.E5        GM     U R'                  US5      U R                  S,'   U$  GN77f)-a
  
retrieves data on all markets for kraken

https://docs.kraken.com/rest/#tag/Spot-Market-Data/operation/getTradableAssetPairs

:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict[]: an array of objects representing market data
r  Nr   resultcachedCurrenciesbasequote
fees_makerr   100r   leverage_buypair_decimalslot_decimalsTr  statusonliner8   wsIdwsnamer  /settlebaseIdquoteIdsettleIdaltnametyperE   rF   rG   FrH   rI   active)r  price1r  r  ordermincostmin)r  r  r/  cost)contractr  r   r   r   contractSizeexpiryexpiryDatetimestrike
optionTyper  limitscreatedinfor  )appendpublicGetAssetPairsr  load_time_differenceasynciogather	safe_dictlistkeysrangelensafe_stringsafe_currency_code	safe_listr
  r2   
string_divparse_precisionsafe_numberindex_by)#r  paramspromises	responsesassetsResponser  r  rE  r  ir8   market	baseIdRaw
quoteIdRawr)  r*  r  r  	makerFeesfirstMakerFeefirstMakerFeeRater   	takerFeesfirstTakerFeefirstTakerFeeRater   leverageBuyleverageBuyLengthprecisionPriceprecisionAmountrE   currencycurrencyPrecisionr#  isActives#                                      r  fetch_marketskraken.fetch_marketsL  sl     0089<<12OOD5578!..(33	"1` ..2>>>$,,8JBOGLLN#q#d)$AB[F((8I))&':J,,Y7F--j9GDEv|R@I NN9a<M $ 0 0 BE ,))'*<*<=NPU*VWvvr:I NN9a<M $ 0 0 BE ,))'*<*<=NPU*VW..DK #K 0!..t/C/CDDTDTU[]lDm/noN"//0D0DTEUEUV\^lEm0noOD!11+D1$($4$4X{$K!$6&7O%%fh7F)HMM 4b4((:4 $*u,4 	4
 4 $4 &4 74 D4 6),4 4 4 ,q04 4 %4  %!4" (#4$ " $"&"-+  $005#//=NQR=RTUV!
  $//
C#
  $#
  $//	B#$  g4 4G %p ,0==+K'(] 4s   A,N(.N%/L7N(c                    #    U R                  U5      I Sh  vN nU R                  US5      nU R                  US5      nUS:X  a  SOSSSSUS.$  N87f)a.  
the latest known information on the availability of the exchange API

https://docs.kraken.com/api/docs/rest-api/get-system-status/

:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: a `status structure <https://docs.ccxt.com/#/?id=exchange-status-structure>`
Nr  r#  r$  okmaintenance)r#  updatedetaurlr=  )publicGetSystemStatusrC  rH  )r  rO  responser  	statusRaws        r  fetch_statuskraken.fetch_status  se      33F;; (3$$VX6	(H4d=
 	
 <s   AA9Ac                 P  #    U R                  U5      I Sh  vN nU R                  US0 5      n[        UR                  5       5      n0 n[	        S[        U5      5       GH=  nXF   nX7   nU R                  U5      n	UR                  S5      S:  at  U R                  US5      n
Xz:w  aL  UR                  S5      (       d  UR                  S5      (       a   U R                  U
5      n	XR                  U'   OU R                  U5      n	U	R                  S5      S:  nU R                  UU	UU R                  US5      U R                  US	5      S
:H  U(       a  SOSSSSU R                  U R                  U R                  US5      5      5      SSS.SSS.S.0 S.5      XY'   GM@     U$  GN7f)a  
fetches all available currencies on an exchange

https://docs.kraken.com/rest/#tag/Spot-Market-Data/operation/getAssetInfo

:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: an associative dictionary of currencies
Nr  r   .r,  XZz.HOLDr#  enabledfiatcryptodecimalsr1  )r  r   )r8   coder=  r9   r.  r-  depositr   r  r  r;  r  )publicGetAssets
safe_valuerD  rE  rF  rG  rI  findrH  
startswithr   safe_currency_structurer
  rL  )r  rO  rm  
currenciesidsr  rS  r8   ra  ry  altNameisFiats               r  fetch_currencieskraken.fetch_currencies  s     --f55n __Xx<
:??$%q#c(#AB!~H **2.Dwws|a**8Y? =bmmC&8&8BMM#<N<N227;D04))"-2226DYYw'1,F77 ((9=**8X>)K"(h !..t/C/CDDTDTU]_iDj/kl  $#
  $#!	 +9 FL; $h ] 6s   F&F#FF&N
currencyIdra  c                    > Uc  U$ UR                  S5      S:  aN  UR                  S5      nU R                  US5      nU R                  US5      n[        [        U ]  XB5      S-   U-   $ [        [        U ]  X5      $ )Nrr  r   r   )r}  splitrH  r  r4   rI  )r  r  ra  parts	firstPart
secondPartr  s         r  rI  kraken.safe_currency_code|  s    ??3!#$$S)E((2I))%3J9)NQTTWaaaVT5jKKr  r  c                   #    U R                  5       I Sh  vN   U R                  U5      nUS   SS.nU R                  U R                  XB5      5      I Sh  vN nU R	                  US0 5      nU R                  Xc5      $  Ni N*7f)a2  
fetch the trading fees for a market

https://docs.kraken.com/rest/#tag/Account-Data/operation/getTradeVolume

:param str symbol: unified market symbol
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: a `fee structure <https://docs.ccxt.com/#/?id=fee-structure>`
Nr8   T)pairzfee-infor  )load_marketsrT  privatePostTradeVolumeextendr|  parse_trading_fee)r  r  rO  rT  requestrm  r  s          r  fetch_trading_feekraken.fetch_trading_fee  s      !!!V$4L
 44T[[5QRR< 8R8%%f55K 	" Ss"   BB A BB)BBc                    U R                  US0 5      nU R                  US0 5      nU R                  X2S   0 5      nU R                  XBS   0 5      nUUS   U R                  [        R                  " U R	                  US5      S5      5      U R                  [        R                  " U R	                  US5      S5      5      SSS.$ )	Nr  r   r8   r  r  r  T)r=  r  r   r   r   r   )r|  r
  r2   rK  rH  )r  rm  rT  rW  rZ  symbolMakerFeesymbolTakerFees          r  r  kraken.parse_trading_fee  s    OOHlB?	OOHfb9	4L"E4L"EX&&&w'9'9$:J:J>[`:ach'ij&&w'9'9$:J:J>[`:ach'ij
 	
r  priceKey	amountKeycountOrIdKeyc                 r    U R                  X5      nU R                  X5      nU R                  US5      nXVU/$ )Nr  )rM  safe_integer)r  bidaskr  r  r  r/  r  	timestamps           r  parse_bid_askkraken.parse_bid_ask  s?      2!!&4%%fa0	y))r  r  c                   #    U R                  5       I Sh  vN   U R                  U5      nSUS   0nUb  X%S'   U R                  U R                  XS5      5      I Sh  vN nU R	                  US0 5      nU R	                  XtS   5      nU R	                  US0 5      n	U R	                  U	S5      n
U
b  U R	                  XzU5      nU R                  X5      $  N Nx7f)a  
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data

https://docs.kraken.com/rest/#tag/Spot-Market-Data/operation/getOrderBook

:param str symbol: unified symbol of the market to fetch the order book for
:param int [limit]: the maximum amount of order book entries to return
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: A dictionary of `order book structures <https://docs.ccxt.com/#/?id=order-book-structure>` indexed by market symbols
Nr  r8   countr  r=  r&  )r  rT  publicGetDepthr  r|  parse_order_book)r  r  r  rO  rT  r  rm  r  	orderbook
marketInfowsNames              r  fetch_order_bookkraken.fetch_order_book  s      !!!V$F4L
 $G,,T[[-IJJ( 8R8OOF4L9	 __VVR8
X6	BI$$Y77G 	" Ks#   CCACCA7CCtickerrT  c                 >   U R                  S U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[        R                  " XW5      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U R                  US	/ 5      nU R                  0 S
U_SS _SS _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U_SU R                  US5      _SU
_SU
_SS _SS _SS _SS _UUUS.EU5      $ )Nvr   pcr   hlbar  r  datetimehighlowbid	bidVolumer  ask	askVolumevwapopenocloselastpreviousClosechanger   average)
baseVolumequoteVolumer=  )safe_symbolr|  rH  r2   
string_mulsafe_ticker)r  r  rT  r  r  r  r  r  r  r  r  r  r  r  r  s                  r  parse_tickerkraken.parse_ticker  s*    !!$/OOFC,%%a+
OOFC,1%((:OOFC,1%vsB/oofc2.oofc2.oofc2. !
f!
!
 !
 D$$T1-	!

 4##C+!
 4##C+!
 ))#q1!
 4##C+!
 ))#q1!
 D!
 D$$VS1!
 T!
 D!
 T!
 d!
  $!!
" t#!
$ %&)!
* + 	r  symbolsc                   #    U R                  5       I Sh  vN   0 nUbv  U R                  U5      n/ n[        S[        U5      5       H6  nX   nU R                  U   nUS   (       d  M"  UR                  US   5        M8     SR                  U5      US'   U R                  U R                  X25      5      I Sh  vN nUS   n	[        U	R                  5       5      n
0 n[        S[        U
5      5       H4  nX   nU R                  U5      nUS   nX   nU R                  X5      X'   M6     U R                  USU5      $  GN( N7f)	a  
fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market

https://docs.kraken.com/rest/#tag/Spot-Market-Data/operation/getTickerInformation

:param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
Nr   r.  r8   ,r  r  r  )r  market_symbolsrF  rG  r  r>  joinpublicGetTickerr  rD  rE  safe_marketr  filter_by_array_tickers)r  r  rO  r  	marketIdsrS  r  rT  rm  tickersr  r  r8   r  s                 r  fetch_tickerskraken.fetch_tickers-  s@     !!!))'2GI1c'l+ f-(##$$VD\2	 ,
 "hhy1GFO--dkk'.JKK8$7<<>"q#c(#AB%%b)FH%F[F!..v>FN $ ++FHgFF+ 	" Ls*   ED>AE*AE9E:BEEc                    #    U R                  5       I Sh  vN   U R                  U5      nSUS   0nU R                  U R                  XB5      5      I Sh  vN nUS   US      nU R	                  Xc5      $  N` N"7f)a  
fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market

https://docs.kraken.com/rest/#tag/Spot-Market-Data/operation/getTickerInformation

:param str symbol: unified symbol of the market to fetch the ticker for
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
Nr  r8   r  )r  rT  r  r  r  )r  r  rO  rT  r  rm  r  s          r  fetch_tickerkraken.fetch_tickerN  s      !!!V$F4L
 --dkk'.JKK(#F4L1  00 	"
 Ls!   A;A7?A;A9!A;9A;c           	          U R                  US5      U R                  US5      U R                  US5      U R                  US5      U R                  US5      U R                  US5      /$ )Nr   r   r  r      r   )safe_timestamprM  )r  ohlcvrT  s      r  parse_ohlcvkraken.parse_ohlcva  sn     q)UA&UA&UA&UA&UA&
 	
r  r   	timeframesincec           	      h  #    U R                  5       I Sh  vN   SnU R                  USS5      u  peU(       a  U R                  SXXBUS5      I Sh  vN $ U R                  U5      nU R	                  U R
                  U5      nSUS   0n	Ub  XS'   OX)S'   Ub/  U R                  US	-  5      n
US
-  nU R                  X-
  5      U	S'   U R                  U R                  X5      5      I Sh  vN nU R                  US0 5      nU R                  XS   / 5      nU R                  XX#U5      $  GN N ND7f)a5  
fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market

https://docs.kraken.com/api/docs/rest-api/get-ohlc-data

:param str symbol: unified symbol of the market to fetch OHLCV data for
:param str timeframe: the length of time each candle represents
:param int [since]: timestamp in ms of the earliest candle to fetch
:param int [limit]: the maximum amount of candles to fetch
:param dict [params]: extra parameters specific to the exchange API endpoint
:param boolean [params.paginate]: default False, when True will automatically paginate by calling self endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
:returns int[][]: A list of candles ordered, open, high, low, close, volume
NFrt   paginater  r  r8   intervalr@   r   r  r  )r  handle_option_and_params"fetch_paginated_call_deterministicrT  r  r   parse_to_intnumber_to_stringpublicGetOHLCr  r|  rJ  parse_ohlcvs)r  r  r  r  r  rO  r  rT  parsedTimeframer  scaledSincetimeFrameInSecondsrm  r  ohlcvss                  r  fetch_ohlcvkraken.fetch_ohlcvw  sK     !!!88zZ@@v^cpvx{|||V$++DOOYGF4L
 &"1J"+J++EDL9K!02!5#44[5UVGG++DKK,HII 8R8tb9  5IIE 	" } Js5   D2D+:D2D.BD2+D0,A D2.D20D2c                 6    SSSSSS.nU R                  X!U5      $ )Ntradetransactionr   rF   )r  
withdrawalrz  r   rF   rH  )r  r-  typess      r  parse_ledger_entry_typekraken.parse_ledger_entry_type  s-    '$"
 T22r  itemc                 ~   U R                  US5      nS nS nU R                  US5      nS nU R                  U R                  US5      5      nU R                  US5      n	U R                  X5      n
U R                  X5      nU R                  US5      n[        R
                  " US5      (       a  Sn[        R                  " U5      nOSnU R                  US	S
5      nU R                  UUUUUUUU
U R                  U5      S U R                  US5      SUU R                  U5      U R                  US5      U
S.S.U5      $ )Nr8   refidr-  assetr  r>   outintimer@   balancerg  r  r4  ra  )r=  r8   	directionaccountreferenceIdreferenceAccountr-  ra  r  beforeafterr#  r  r  r  )rH  r  rI  safe_currencyr2   	string_lt
string_abssafe_integer_productsafe_ledger_entryr
  rM  iso8601)r  r  ra  r8   r  r  r  r  r-  r  ry  r  r  s                r  parse_ledger_entrykraken.parse_ledger_entry  sZ     dD)	&&tW5++D,<,<T6,JK%%dG4
&&z<%%j;!!$1VS))I''/FI--dFDA	%%"& 0''/%%dI6"Y/((u5 '
& ' 	r  ry  c                   #    U R                  5       I Sh  vN   0 nSnUb  U R                  U5      nUS   US'   Ub  U R                  US-  5      US'   U R                  USS/5      nUbT  U R	                  USS/5      n[
        R                  " US5      nU R                  [
        R                  " US	5      5      US
'   U R                  U R                  XT5      5      I Sh  vN n	U R                  U	S0 5      n
U R                  U
S0 5      n[        UR                  5       5      n/ n[        S[        U5      5       H!  nX   nX   nUUS'   UR                  U5        M#     U R!                  XX#5      $  GN_ N7f)a  
fetch the history of changes, actions done by the user or operations that altered the balance of the user

https://docs.kraken.com/rest/#tag/Account-Data/operation/getLedgers

:param str [code]: unified currency code, default is None
:param int [since]: timestamp in ms of the earliest ledger entry, default is None
:param int [limit]: max number of ledger entries to return, default is None
:param dict [params]: extra parameters specific to the exchange API endpoint
:param int [params.until]: timestamp in ms of the latest ledger entry
:param int [params.end]: timestamp in seconds of the latest ledger entry
:returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger>`
Nr8   r  r@   startuntiltill1000r0  endr  ledgerr   )r  ra  r  safe_string_nomitr2   rK  
string_addprivatePostLedgersr  r|  rD  rE  rF  rG  r>  parse_ledger)r  ry  r  r  rO  r  ra  r  untilDividedrm  r  r  rE  itemsrS  keyvalues                    r  fetch_ledgerkraken.fetch_ledger  sz     !!!}}T*H'~GG#00>GG""6GV+<=YYv'89F"--eV<L!..w/A/A,PS/TUGEN00W1MNN 8R826FKKM"q#d)$A'CKEE$KLL	 %
   %??A 	" Os#   E:E5CE:#E8$BE:8E:c                   #    U R                  5       I S h  vN   SR                  U5      nU R                  SU0U5      nU R                  U5      I S h  vN nUS   n[	        UR                  5       5      n/ n[        S[        U5      5       H   n	Xy   n
Xj   nXS'   UR                  U5        M"     U R                  U5      $  N Np7f)Nr  r8   r  r   )
r  r  r  privatePostQueryLedgersrD  rE  rF  rG  r>  r  )r  r  ry  rO  r  rm  r  rE  r  rS  r  r  s               r  fetch_ledger_entries_by_ids"kraken.fetch_ledger_entries_by_ids  s     !!!hhsm++#
 55g>> (#FKKM"q#d)$A'CKE$KLL	 %
   ''/ 	"
 ?s"   CC=CCA/CCr8   c                 N   #    U R                  U/X#5      I S h  vN nUS   $  N	7f)Nr   )r$  )r  r8   ry  rO  r  s        r  fetch_ledger_entrykraken.fetch_ledger_entry4  s+     66tTJJQx Ks   %#
%r  c                 @   S nS nS nS nS nS nS n	S n
S nS n[        U[        5      (       au  U R                  US5      nUS   S:X  a  SOSnUS   S:X  a  SOS	nU R                  US
5      nU R                  US5      n[	        U5      nUS:  a  U R                  US5      n	GO[        U[
        5      (       a  Un	GOfSU;   a  U R                  US5      nU R                  U5      nUb  UnOUb  U R                  U5      nU R                  US5      n
U R                  US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U R                  US5      nSU;   a  S nUb  US   nU R                  US5      US.nO~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U R                  US5      nU R                  US5      nUb  US   nU R                  US5      nU R                  US 5      nS nUb  U(       a  S OS!nUc  U R                  U5      nOU R                  U5      nU R                  U	U
UUUUUUUUUUUS".U5      $ )#Nr  r   ssellbuyr  r  r  rT  r   r   r   	ordertxidr  r8   postxidr  r-  	ordertyper/  volr  r  r  r  r  trade_idsideord_typeqtyr4  r   r   )r8   orderr=  r  r  r  r-  r2  takerOrMakerr/  r  r4  r  )
isinstancerD  r  rH  rG  strfind_market_by_altname_or_idget_delisted_market_by_idsafe_string_2	safe_boolr  	parse8601
safe_trade)r  r  rT  r  r  r2  r-  r/  r  r8   orderIdr  r  tradeLengthmarketIdfoundMarketra  r4  r   r6  s                       r  parse_tradekraken.parse_trade8  s   ~ 	eT""++E15I#Ah#o6ED$Qx37XD$$UA.E%%eQ/Fe*KQ%%eQ/s##BE!''v6H;;HEK&$%77A&&uk:G##E4;B++E6:I##E62D##E;7D$$UG4E%%eU3F~%%gH ,,UE: (
 %%eX6F''{;H!!%4B##E62D##E:6D$$UG4E%%eU3FH%Fv.ug.&+7L||I.Hx0I" ( 
  	r  c                   #    U R                  5       I Sh  vN   U R                  U5      nUS   nSU0nUb&  U R                  U R                  US-  5      5      US'   Ub  X7S'   U R	                  U R                  Xt5      5      I Sh  vN nUS   n	X   n
[        U
5      nUS::  a  / $ XS	-
     nU R                  U	S
5      nUR                  U5        XUS	-
  '   U R                  XX#5      $  N Ne7f)a  
get the list of most recent trades for a particular symbol

https://docs.kraken.com/rest/#tag/Spot-Market-Data/operation/getRecentTrades

:param str symbol: unified symbol of the market to fetch trades for
:param int [since]: timestamp in ms of the earliest trade to fetch
:param int [limit]: the maximum amount of trades to fetch
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns Trade[]: a list of `trade structures <https://docs.ccxt.com/#/?id=public-trades>`
Nr8   r  r@   r  r  r  r   r   r  )
r  rT  r  r  publicGetTradesr  rG  rH  r>  parse_trades)r  r  r  r  rO  rT  r8   r  rm  r  tradeslength	lastTradelastTradeIds                 r  fetch_tradeskraken.fetch_trades  s     !!!V$D\B

 #44T5F5Fut|5TUGG$G--dkk'.JKK (#VQ;IA:&	&&vv6%&vz  >>E 	" Ls#   C0C,A1C0C.	A$C0.C0c                    U R                  US0 5      nUS S S.n[        UR                  5       5      n[        S[	        U5      5       Hh  nXE   nU R                  U5      nU R                  X&0 5      nU R                  5       n	U R                  US5      U	S'   U R                  US5      U	S'   XU'   Mj     U R                  U5      $ )Nr  )r=  r  r  r   
hold_tradeusedr   total)	r|  rD  rE  rF  rG  rI  r  rH  safe_balance)
r  rm  balancesr  currencyIdsrS  r  ry  r   r  s
             r  parse_balancekraken.parse_balance  s    ??8Xr:

 8==?+q#k*+A$J**:6DoohB?GllnG"..wEGFO#//CGG"4L ,   ((r  c                    #    U R                  5       I Sh  vN   U R                  U5      I Sh  vN nU R                  U5      $  N. N7f)aO  
query for balance and get the amount of funds available for trading or funds locked in orders

https://docs.kraken.com/rest/#tag/Account-Data/operation/getExtendedBalance

:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
N)r  privatePostBalanceExrU  )r  rO  rm  s      r  fetch_balancekraken.fetch_balance  sG      !!!226::  !!(++# 	":s   A	AA	AA	A	r2  r4  c                    #    U R                  5       I Sh  vN   SU0nU R                  USX#SU R                  XT5      5      I Sh  vN $  N4 N7f)a  
create a market order by providing the symbol, side and cost

https://docs.kraken.com/rest/#tag/Spot-Trading/operation/addOrder

:param str symbol: unified symbol of the market to create an order in(only USD markets are supported)
:param str side: 'buy' or 'sell'
: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>`
Nr4  rT  )r  create_orderr  )r  r  r2  r4  rO  reqs         r  create_market_order_with_cost$kraken.create_market_order_with_cost$  sZ      !!! D
 &&vxT4;;WZKcddd 	"
 es!   AA/AAAAc                 x   #    U R                  5       I Sh  vN   U R                  USX#5      I Sh  vN $  N N7f)a  
create a market buy order by providing the symbol, side and cost

https://docs.kraken.com/rest/#tag/Spot-Trading/operation/addOrder

: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>`
Nr,  )r  r^  )r  r  r4  rO  s       r  !create_market_buy_order_with_cost(kraken.create_market_buy_order_with_cost7  s9      !!!77tTTT 	"Ts   :6:8::r-  r  r/  c           	        #    U R                  5       I Sh  vN   U R                  U5      nUS   UUU R                  X5      S.nU R                  SXXXV5      n	U R	                  U	S   SS5      n
U
R                  S5      S	:  nU R                  U R                  U	S   U	S
   5      5      I Sh  vN nU R                  US5      nXS'   U R                  U5      $  N N-7f)a  
create a trade order

https://docs.kraken.com/api/docs/rest-api/add-order

:param str symbol: unified symbol of the market to create an order in
:param str type: 'market' or 'limit'
:param str side: 'buy' or 'sell'
:param float amount: how much of currency you want to trade in units of base currency
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
:param dict [params]: extra parameters specific to the exchange API endpoint
:param bool [params.postOnly]: if True, the order will only be posted to the order book and not executed immediately
:param bool [params.reduceOnly]: *margin only* indicates if self order is to reduce the size of a position
:param float [params.stopLossPrice]: *margin only* the price that a stop loss order is triggered at
:param float [params.takeProfitPrice]: *margin only* the price that a take profit order is triggered at
:param str [params.trailingAmount]: *margin only* the quote amount to trail away from the current market price
:param str [params.trailingPercent]: *margin only* the percent to trail away from the current market price
:param str [params.trailingLimitAmount]: *margin only* the quote amount away from the trailingAmount
:param str [params.trailingLimitPercent]: *margin only* the percent away from the trailingAmount
:param str [params.offset]: *margin only* '+' or '-' whether you want the trailingLimitAmount value to be positive or negative, default is negative '-'
:param str [params.trigger]: *margin only* the activation price type, 'last' or 'index', default is 'last'
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
Nr8   )r  r-  r/  volumerS   r   oflags viqcr   r  	usingCost)
r  rT  amount_to_precisionorder_requestrH  r}  privatePostAddOrderr  rC  parse_order)r  r  r-  r2  r  r/  rO  rT  r  orderRequestflagsisUsingCostrm  r  s                 r  r\  kraken.create_orderE  s     0 !!!V$4L..v>	
 ))-wX]f  a(B?jj(2-11$++l1o|\]2_`` (3){ ''5 	" as"   CCBC-C.,CCordersc           
      v  #    U R                  5       I Sh  vN   / n/ nSnSn[        S[        U5      5       H  nX   nU R                  US5      n	Uc  U	nOXY:w  a  [	        U R
                  S-   5      eU R                  U	5      nUR                  U	5        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	0 5      nUU
U R                  US   U5      S
.nU R                  SXXX5      nUR                  US   5        M     U R                  USSSS5      nSnUUS   S.nU R                  UU5      nU R                  U5      I Sh  vN nU R                  US0 5      nU R                  U R!                  US5      5      $  GN N;7f)a  
create a list of trade orders

https://docs.kraken.com/api/docs/rest-api/add-order-batch/

:param Array orders: list of orders to create, each object should contain the parameters required by createOrder, namely symbol, type, side, amount, price and params
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
Nr   r  z; createOrders() requires all orders to have the same symbolr-  r2  r  r/  rO  )r-  r/  rd  rT   FTr8   )rr  r  r  rr  )r  rF  rG  rH  r#   r8   rT  r>  r|  rC  rj  rk  r  r  privatePostAddOrderBatchparse_ordersrJ  )r  rr  rO  ordersRequestsorderSymbolsr  rT  rS  rawOrderrA  r-  r2  r  r/  orderParamsr]  rn  rm  r  r  s                       r  create_orderskraken.create_ordersy  s     !!!q#f+&AyH''(;H~!%$TWW/l%lmm[[*F)##Hf5D##Hf5D__Xx8FOOHg6E..8R@K!226(3CVLC
  --nhc[`nL!!,q/2+ ', **<udDQ$4L
 ++gv.66w??, (B7  !ABBs 	"D @s"   F9F4E$F9;F7<9F97F9c                 p    U R                  U R                  S0 5      nX;   a  X!   $ U R                  U5      $ )Nr  )r|  r  r  )r  r8   r  s      r  r9  #kraken.find_market_by_altname_or_id  s:    ??4<<9KRP!#''##B''r  c                 T   Uc  U$ U R                  U R                  S   U5      nUb  U$ SnSnSnSn[        U5      S:X  a  SnSnSnO[        U5      S:X  a  SnSnSnXU nXU nU R                  U5      n	U R                  U5      n
U	S-   U
-   nUU	U
UUS	.nX R                  S   U'   U$ )
Nr  r   r   r      r     r'  )r  r  r  r)  r*  )r|  r  rG  rI  )r  r8   rT  baseIdStart	baseIdEndquoteIdStart
quoteIdEndr)  r*  r  r  r  s               r  r:   kraken.get_delisted_market_by_id  s    :I.C!DbIM	
r7a<ILJW\ILJ	**-&&v.''0e#
 39*+B/r  r#  c           
      >    SSSSSSSSSS.	nU R                  X!U5      $ )Nr  closedcanceledexpired)	pendingr  pending_newnewpartially_filledfilledr  r  r  r  r  r#  statusess      r  parse_order_statuskraken.parse_order_status  s9    ! &" 

 &99r  c                 6    SSSSSS.nU R                  X!U5      $ )NrT  r  )take-profit	stop-lossstop-loss-limittake-profit-limittrailing-stop-limitr  r  s      r  parse_order_typekraken.parse_order_type  s/     $!&!(#*
 &99r  r5  c                 ^   U R                  USS5      nU R                  US5      nU R                  US0 5      nU R                  US5      nS nUb  U R                  US5      nOU R                  US5      nS nS nS n	S n
S nS nS nUb  UR	                  S5      nU R                  US5      nU(       d  U R                  US5      nO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S:X  d  US:X  a  UnOUS-   U-   nUS:X  d  US:X  a%  U R                  US5      nU R                  US5      n
OUS:X  a  U R                  US
5      n
U R                  USU5      nU R                  USU5      nU R                  USU	5      n	U R                  U	5      nS nUb  UnOU	b  U R                  U	5      nU R                  US5      nU R                  USU5      nU R                  US5      nS nU R                  USU
5      n
U
bP  U
R                  S5      (       d8  [        R                  " U
S5      (       d  [        R                  " U
S5      (       a  S n
U
c&  U R                  US5      n
U R                  USSU
5      n
U R                  USS5      nUR                  S5      S :  nU R                  US5      nUb]  US!   nS"U;   aR  U R                  US"5      nUS S#.nUR                  S$5      S:  a	  US%   US&'   OUR                  S'5      S:  a  US(   US&'   U R                  U R                  US)5      5      nU R                  U/ S*Q5      nUb  UR!                  S+5      (       a$  U R#                  US,5      nU R                  US5      nU R                  US-5      nU R                  US.U5      nU R%                  US// 5      n/ n ['        S[)        U5      5       HU  n!UU!   n"[+        U"[,        5      (       a'  U R/                  U R1                  U"UU0 S0.5      5        MD  U R/                  U"5        MW     S n#S n$Ub  UR!                  S15      (       a4  U R                  US5      n$U R3                  U R                  US5      5      n
O[UR!                  S25      (       a4  U R                  US5      n#U R3                  U R                  US5      5      n
OUS:X  a  Un$OUS:X  a  Un#U R5                  U5      n%U R7                  U%SS/5      (       a  U
c  SOSn%U R                  US35      n&U&b  S nU R9                  0 S4U_S5U_S6U_S7U_S8U R;                  U5      _S9S _S)U_S!U_SU%_S:S _S;U_S<U_SU
_S=U_S>U$_S?U#_S@U_UUUS U R=                  USASB5      UU SC.EU5      $ )DNri  Fdescrr5   r   r   r  r  r   r  rT  z	stop lossztake profitr   	   r-  r/  r  opentmr0  vol_execr/  %z0.00000r>   price2
limitpricere  rf  r   rh  r  r  )r4  ratefciqr  ra  fcibr  r#  )r8   txidorder_idamend_id[r  userref	cl_ord_idrH  )r8   r?  r  r=  r  r  r  r8   clientOrderIdr=  r  r  lastTradeTimestampr  postOnlyr2  r  r  r  r4  
reduceOnlyreduce_only)r  r  r  	remainingr  r  rH  )r<  r  rC  rH  r  r9  r:  r  endswithr2   string_equalsr;  r}  rM  r  r  r~  rJ  r|  rF  rG  r7  r8  r>  r>  	omit_zeror  in_array
safe_orderr  safe_bool_2)'r  r5  rT  rp  descriptionorderDescriptionObjorderDescriptionr2  rawTyperA  r/  r  r4  r  r  part4part5rB  r  r  r  r  ro  
isPostOnlyr  feeCostr#  r8   r  r  r  	rawTradesrH  rS  rawTrader  r  	finalTypeamendIds'                                          r  rm  kraken.parse_order  s   F nnUK?		%-nnUGR8"nnUG<*#//0CWM#//w?'$**3/E##E1-D))%3''q1''q1H$$UA.E$$UA.E5H#4#+-+%M)A#//q9((2G#((2VT:"";WE##KB77A" F!33H=F''x8	!!%7!!%4   gu=ENN3$7$77;P;PQVXa;b;bfmf{f{  }B  DG  gH  gHE=$$[(;E&&ulGUKE  "5ZZ'",
""5'2H%F~**5%8#  ::f%*&,WoC
OZZ'1,&,VnC
O(()9)9%)JK'MNJBMM#..>>%0D!!$*B""5)4((WEOOE8R8	q#i.)A |H(C((dooX"X^hj.klmh' *  !!-00"&"2"2;"Ht'7'7X'NO##K00 $ 0 0g Ft'7'7X'NOM)".K' ,))'2	 ==[-$@AA%*]I""5*5J  
" 
] 
 E 
 	 

 Y/ 
 !$ 
 f 
 f 
 I 
 4 
 
 
 D 
 U 
 L 
  
  ]! 
" D# 
$ **5,N1 
2 3 	r  methodr  c                 \   U R                  US5      nU R                  US/5      nUb  XS'   U R                  US5      n	U R                  US5      n
U	S LnU
S LnU=(       d    U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S LnUS LnUR                  S	5      nUS
:H  nU R                  US5      nU R                  US5      nU R                  USS/5      nUS L=(       a    UR                  S5      S:  nU(       aY  Uc  U(       aO  Uc'  Ub$  U R	                  X R                  U5      5      US'   OU R	                  UU5      US'   Ub  US-   OSnUUS'   O)U(       a"  U(       d  U(       d  U R                  X&5      US'   U R                  USS5      nU(       aw  U(       a'  U R                  X)5      US'   U(       a  SUS'   O3SUS'   O-U(       a&  U R                  X*5      US'   U(       a  SUS'   OSUS'   U(       a  U R                  X&5      US'   OU(       d  U(       a  S nUb#  UR                  S5      (       a  SU-   OSU-   S-   nUb  SU-   OS nU R                  USS5      nUb  UU R                  U5      -   OS nU R                  USS5      nUUS'   U(       d  Uc  UbD  S US'   Ub.  UR                  S5      (       a  UU-   OUU-   S-   n UUS'   U US'   O!Ub
  UUS'   UUS'   OS!US'   Ub  UUS'   OUUS'   U(       a  US":X  a  S#US'   OS$US'   U R                  US%5      n!U!bk  U R                  0 U!5      n!U R                  U!S5      n"U"b  U R                  UU"5      U!S'   U R                  U!S5      n#U#b  U R                  UU#5      U!S'   U!US%'   U R                  US&S'5      n$U$b  U$US''   US
:H  n%S n&U R                  U%S(U5      u  n&nU&(       a  Ub  US)-   OS*n'U'US'   Ub  SU;  a  UUS'   U R                  U/ S+Q5      nXG/$ ),Nr  r  r  r  trailingAmounttrailingPercenttrailingLimitAmounttrailingLimitPercentr  rT  r4  re  rg  rh  rd  z,viqcr/  r  r  r  r/  r  r  r  r  r  +offset-r  r  r  ztrailing-stopcreateOrderWsTtruer  r  timeinforceFz,postr   )	r  r  r  r  r  r  r  r  r  )rH  r  r  r}  cost_to_precisionr  price_to_precisionr  rC  r  r|  r;  handle_post_only)(r  r  r  r-  r  r  r/  rO  r  stopLossTriggerPricetakeProfitTriggerPriceisStopLossTriggerOrderisTakeProfitTriggerOrderisStopLossOrTakeProfitTriggerr  r  r  r  isTrailingAmountOrderisTrailingPercentOrderisLimitOrderisMarketOrderr4  ro  isViqcOrderextendedOflagsr  trailingPercentStringtrailingAmountStringr  trailingLimitAmountStringtrailingActivationPriceTypetrailingLimitPercentStringr  
closePriceclosePrice2r  isMarketr  extendedPostFlagss(                                           r  rk  kraken.order_request  s
   ((A6O#45$#0K #//H!%!1!1&:K!L!5T!A#9#E (>(ZBZ%))&2BC**63DE"..v7LM#//8NO .d :!0!<}}W-(/  26FH#56D(Guzz&/AB/Fd.+|!3$($:$:6CXCXY_C`$a!$($:$:64$H!161BUW_N .GH"7@V#66vEGG%%flMJ
(%#'#:#:6#X +<GK(+6GK()#'#:#:6#Z +>GK(+8GK($($;$;F$J!"&<$(!*DSD\D\]`DaDa)>ilo~i~  BE  jE%<J<V3#7]a %%fh<F`s`1F1FGZ1[([  GK%*.*:*:69f*U'!<GI 3 ?EYEe'<$'3UiUrUrsvUwUw&;O2O  @F  I]  @]  `c  @c.'<GG$(BGH%(4';GG$(AGH%'6$".'<GG$';GG$()-&)/&vw/KKE*E8J%!%!8!8!Lg//%:K&"&"9"9&+"Nh$GG((N"%0GM"H$005&I&494EF 1GHG(; %GH6  $C  D  r  c                 D  #    U R                  5       I Sh  vN   U R                  U5      nUS   (       d!  [        U R                  S-   US   -   S-   5      eSU0n	U R	                  USS5      n
U
b*  XS'   U R                  USS/5      nU R                  U	S5      n	US	:H  nSnU R                  US
U5      u  pU(       a  SU	S'   Ub  U R                  X%5      U	S'   Ub  U R                  X&5      U	S'   U R                  U/ SQ5      nUbF  U R                  US5      nU R                  U/ SQ5      nUb	  X-   nXS'   OU R                  X-5      U	S'   U R                  U R                  X5      5      I Sh  vN nU R                  US0 5      nU R                  UU5      $  GN N,7f)a  
edit a trade order

https://docs.kraken.com/api/docs/rest-api/amend-order

: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.stopLossPrice]: the price that a stop loss order is triggered at
:param float [params.takeProfitPrice]: the price that a take profit order is triggered at
:param str [params.trailingAmount]: the quote amount to trail away from the current market price
:param str [params.trailingPercent]: the percent to trail away from the current market price
:param str [params.trailingLimitAmount]: the quote amount away from the trailingAmount
:param str [params.trailingLimitPercent]: the percent away from the trailingAmount
:param str [params.offset]: '+' or '-' whether you want the trailingLimitAmount value to be positive or negative
:param boolean [params.postOnly]: if True, the order will only be posted to the order book and not executed immediately
:param str [params.clientOrderId]: the orders client order id
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
NrE   z editOrder() does not support r-  z& orders, only spot orders are acceptedr  r  r  rT  Fr  	post_only	order_qtylimit_price)r  r  r  r  r  r  r  )r  r  r  r  r  r  r  trigger_pricer  )r  rT  r)   r8   r;  r  r  rj  r  r  rH  privatePostAmendOrderr  rC  rm  )r  r8   r  r-  r2  r  r/  rO  rT  r  r  r  r  allTriggerPricesr  rm  r  s                    r  
edit_orderkraken.edit_orderS  s    0 !!!V$f~tww)IIFSYNZ  ^F   F  G  GB
 **6?KP$#0K YYv'EFFii0GH$005&I#)GK #'#;#;F#KGK %)%<%<V%KGM"--f  7o  p'%%fh7FYYv  (j  kF!#)#< +;(+/+B+B6+\(33DKK4PQQ (B7//Q 	"< Rs"   F FEF 1F2*F F c                   #    U R                  5       I Sh  vN   U R                  USS5      nSUS.nUnUb  XES'   U R                  USS/5      nU R                  U R	                  XV5      5      I Sh  vN nU R                  US/ 5      nX;  a  [        U R                  S-   U-   5      eU R                  U R	                  SU0X   5      5      $  N N^7f)	ac  
fetches information on an order made by the user

https://docs.kraken.com/rest/#tag/Account-Data/operation/getOrdersInfo

:param str id: order id
:param str symbol: not used by kraken fetchOrder
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
Nr  r  TrH  r  r  z& fetchOrder() could not find order id r8   )	r  safe_value_2r  privatePostQueryOrdersr  r|  r(   r8   rm  )	r  r8   r  rO  r  r  queryrm  r  s	            r  fetch_orderkraken.fetch_order  s      !!!))&)_M

 $!.IIIfy/&BCE44T[[5PQQL 8R8*R RUW WXXT2J
 CDDi 	" Rs#   CCAC3C4ACCc                 n  #    U R                  US5      n/ nUc  [        U R                  S-   5      e[        S[	        U5      5       HC  nXh   n	[        U	[        5      (       a  UR                  U	5        M/  UR                  U	S   5        ME     U R                  5       I Sh  vN   Ub  U R                  U5      nU R                  U R                  S0 5      n
U R                  U
SS5      n[	        U5      nU R                  X-  5      nU R                  US	5      n/ n[        SU5       GH  n/ n[        SU5       H3  nU R                  X-  U5      nUU:  d  M  UR                  UU   5        M5     S
SR                  U5      0nU R                  U5      I Sh  vN nU R                  US5      n[!        UR#                  5       5      n[        S[	        U5      5       H  nUU   UUU      S'   M     U R%                  USX45      nU R'                  UU5      nU R)                  UU5      nGM     U$  GN N7f)a  
fetch all the trades made from a single order

https://docs.kraken.com/rest/#tag/Account-Data/operation/getTradesInfo

:param str id: order id
:param str symbol: unified market symbol
:param int [since]: the earliest time in ms to fetch trades for
:param int [limit]: the maximum number of trades to retrieve
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
rH  Nz fetchOrderTrades() requires a unified order structure in the params argument or a 'trades' param(an array of trade id strings)r   r8   ry   	batchSize   r   r  r  r  )r|  r"   r8   rF  rG  r7  r8  r>  r  r  r  r  r  sumr  privatePostQueryTradesrD  rE  rG  filter_by_symbolarray_concat)r  r8   r  r  r  rO  orderTradestradeIdsrS  
orderTrader  r  numTradeIds
numBatchesr  j
requestIdskindexr  rm  r  r  rH  tradesFilteredBySymbols                            r  fetch_order_tradeskraken.fetch_order_trades  s+     oofh7#DGG  /p  %p  q  q1c+./(^
j#..OOJ/OOJt$45 0 !!![[(F//$,,0BBG%%g{B?	(m&&{'>?
XXj!,
q*%AJ1i(2;&%%huo6 )
 ,G "88AAH, (;Iy~~'(C1c#h'*-a&	#a&!$' (&&y$EF%)%:%:66%J"&&v/EFFK &L _ 	"$ Bs,   BH5!H0"B3H5?H5H3BH53H5c                   #    U R                  5       I Sh  vN   U R                  U R                  SSR                  U5      S.U5      5      I Sh  vN nU R	                  US0 5      n/ n[        UR                  5       5      n[        S[        U5      5       H?  nXx   n	XY   n
U R                  U R                  SU	0U
5      5      nUR                  U5        MA     U$  N N7f)al  
fetch orders by the list of order id

https://docs.kraken.com/rest/#tag/Account-Data/operation/getClosedOrders

:param str[] [ids]: list of order id
:param str [symbol]: unified ccxt market symbol
:param dict [params]: extra parameters specific to the kraken api endpoint
:returns dict[]: a list of `order structure <https://docs.ccxt.com/#/?id=order-structure>`
NTr  r  r  r   r8   )r  r  r  r  r|  rD  rE  rF  rG  rm  r>  )r  r  r  rO  rm  r  rr  orderIdsrS  r8   r  r5  s               r  fetch_orders_by_idskraken.fetch_orders_by_ids	  s      !!!44T[[HHSMB
 6   8R8&q#h-(AB:D$$T[[$T%BCEMM% 	 )
  	"s"   C"C:C"C BC" C"c                   #    U R                  5       I Sh  vN   0 nUb  U R                  US-  5      US'   U R                  USS/5      nUbT  U R                  USS/5      n[        R
                  " US5      nU R                  [        R                  " US5      5      US'   U R                  U R                  XT5      5      I Sh  vN nUS	   S
   n	[        U	R                  5       5      n
[        S[        U
5      5       H  nX   XU      S'   M     SnUb  U R                  U5      nU R                  XX#5      $  GN% Nx7f)aI  
fetch all trades made by the user

https://docs.kraken.com/api/docs/rest-api/get-trade-history

:param str symbol: unified market symbol
:param int [since]: the earliest time in ms to fetch trades for
:param int [limit]: the maximum number of trades structures to retrieve
:param dict [params]: extra parameters specific to the exchange API endpoint
:param int [params.until]: timestamp in ms of the latest trade entry
:param int [params.end]: timestamp in seconds of the latest trade entry
:returns Trade[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
Nr@   r  r  r  r  r0  r  r  rH  r   r8   )r  r  r  r  r2   rK  r  privatePostTradesHistoryr  rD  rE  rF  rG  rT  rG  )r  r  r  r  rO  r  r  r  rm  rH  r  rS  rT  s                r  fetch_my_tradeskraken.fetch_my_trades9	  sC     !!!
 #00>GG""6GV+<=YYv'89F"--eV<L!..w/A/A,PS/TUGEN66t{{77STT: (#H-6;;=!q#c(#A#&6Fq6N4  $[[(F  >>g 	" Us#   E D;B.E D>A6E >E c                 b  #    U R                  5       I Sh  vN   SnU R                  USU5      nU R                  US5      nSU0nU R                  USS5      nUb*  XvS'   U R                  USS/5      nU R                  US5      n U R	                  U R                  Xc5      5      I Sh  vN nU R                  S	U05      $  N N! [         a\  nU R                  (       aD  U R                  R                  S5      S:  a%  [        U R                  S-   U R                  -   5      eUeSnAff = f7f)
a  
cancels an open order

https://docs.kraken.com/api/docs/rest-api/cancel-order

:param str id: order id
:param str [symbol]: unified symbol of the market the order was made in
:param dict [params]: extra parameters specific to the exchange API endpoint
:param str [params.clientOrderId]: the orders client order id
:param int [params.userref]: the orders user reference id
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
Nr  r  r  r  r  r   z cancelOrder() error r=  )r  r|  r  r;  privatePostCancelOrderr  	Exceptionlast_http_responser}  r(   r8   r  )	r  r8   r  rO  rm  	requestIdr  r  es	            r  cancel_orderkraken.cancel_order|	  s7     !!!OOFIr:	69-I
 **6?KP$#0K YYv'EFFii0G	!88W9UVVH H 
  	7 	" W  	&&**//0FG1L'2I(IDLcLc(cddG		sG   D/CA/D/#C *C+C /D/C 
D,AD''D,,D/r  c                    #    SU0nU R                  U R                  XC5      5      I Sh  vN nU R                  SU05      /$  N7f)a  
cancel multiple orders

https://docs.kraken.com/rest/#tag/Spot-Trading/operation/cancelOrderBatch

:param str[] ids: open orders transaction ID(txid) or user reference(userref)
:param str symbol: unified market symbol
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: an list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
rr  Nr=  )privatePostCancelOrderBatchr  r  )r  r  r  rO  r  rm  s         r  cancel_orderskraken.cancel_orders	  sY      c
 99$++g:VWW OO 
 	
 Xs   (AAAc                    #    U R                  5       I Sh  vN   U R                  U5      I Sh  vN nU R                  SU05      /$  N1 N7f)ax  
cancel all open orders

https://docs.kraken.com/rest/#tag/Spot-Trading/operation/cancelAllOrders

:param str symbol: unified market symbol, not used by kraken cancelAllOrders(all open orders are cancelled)
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
Nr=  )r  privatePostCancelAllr  )r  r  rO  rm  s       r  cancel_all_orderskraken.cancel_all_orders	  sV      !!!226:: OO 
 	
 	":s   AAAA
A
Atimeoutc                   #    US:  a  [        U R                  S-   5      eU R                  5       I Sh  vN   SUS:  a  U R                  US-  5      OS0nU R	                  U R                  X25      5      I Sh  vN nU$  NL N7f)aD  
dead man's switch, cancel all orders after the given timeout

https://docs.kraken.com/rest/#tag/Spot-Trading/operation/cancelAllOrdersAfter

:param number timeout: time in milliseconds, 0 represents cancel the timer
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: the api result
i \&zG cancelAllOrdersAfter timeout should be less than 86400000 millisecondsNr%  r   r@   )r#   r8   r  r  privatePostCancelAllOrdersAfterr  )r  r%  rO  r  rm  s        r  cancel_all_orders_afterkraken.cancel_all_orders_after	  s      XTWW'ppqq!!!w{))'D.9QR
 ==dkk'>Z[[  	" \s"   2BBAB:B;BBc                   #    U R                  5       I Sh  vN   0 nUb  U R                  US-  5      US'   U R                  US5      nUb  XeS'   U R                  US5      nU R	                  US5      nUb  XuS'   U R                  US5      nU R                  U R                  XT5      5      I Sh  vN nSn	Ub  U R                  U5      n	U R                  US0 5      n
U R                  U
S0 5      n/ n[        UR                  5       5      n[        S	[        U5      5       H.  nX   nX   nUR                  U R                  S
U0U5      5        M0     U R                  XX#5      $  GNO N7f)aF  
fetch all unfilled currently open orders

https://docs.kraken.com/api/docs/rest-api/get-open-orders

:param str [symbol]: unified market symbol
:param int [since]: the earliest time in ms to fetch open orders for
:param int [limit]: the maximum number of  open orders structures to retrieve
:param dict [params]: extra parameters specific to the exchange API endpoint
:param str [params.clientOrderId]: the orders client order id
:param int [params.userref]: the orders user reference id
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
Nr@   r  r  r  r  r  r  r   r8   )r  r  r  r  rH  privatePostOpenOrdersr  rT  rC  rD  rE  rF  rG  r>  ru  )r  r  r  r  rO  r  r  r  rm  rT  r  r  rr  r  rS  r8   r  s                    r  fetch_open_orderskraken.fetch_open_orders	  sm     !!!#00>GG##FI6!(IYYvy1F((A$#0K YYv7F33DKK4PQQL [[(F(B7~~ffb1		$q#h-(AB8DMM$++tRj$78 )   >>{ 	" Rs#   E*E%BE*0E(1B5E*(E*c                    #    U R                  5       I Sh  vN   0 nUb  U R                  US-  5      US'   U R                  US5      nUb  XeS'   U R                  US5      nU R	                  US5      nUb  XuS'   U R                  US5      nU R                  SXT5      u  pTU R                  U R                  XT5      5      I Sh  vN nSn	Ub  U R                  U5      n	U R                  US0 5      n
U R                  U
S	0 5      n/ n[        UR                  5       5      n[        S
[        U5      5       H.  nX   nX   nUR                  U R                  SU0U5      5        M0     U R                  XX#5      $  GNc N7f)a  
fetches information on multiple closed orders made by the user

https://docs.kraken.com/api/docs/rest-api/get-closed-orders

:param str [symbol]: unified market symbol of the market orders were made in
:param int [since]: the earliest time in ms to fetch orders for
:param int [limit]: the maximum number of order structures to retrieve
:param dict [params]: extra parameters specific to the exchange API endpoint
:param int [params.until]: timestamp in ms of the latest entry
:param str [params.clientOrderId]: the orders client order id
:param int [params.userref]: the orders user reference id
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
Nr@   r  r  r  r  r  r  r  r   r8   )r  r  r  r  rH  handle_until_optionprivatePostClosedOrdersr  rT  rC  rD  rE  rF  rG  r>  ru  )r  r  r  r  rO  r  r  r  rm  rT  r  r  rr  r  rS  r8   r  s                    r  fetch_closed_orderskraken.fetch_closed_ordersH
  s     !!!#00>GG##FI6!(IYYvy1F((A$#0K YYv7F225'J55dkk'6RSSP [[(F(B7"5&q#h-(AB:DMM$++tRj$78 )   >>A 	" Ts#   E>E9B-E>E<B5E><E>c                 8    SSSSSSS.nU R                  X!U5      $ )Nr  rg  failed)InitialPendingSuccessSettledFailurePartialr  r  s      r  parse_transaction_statuskraken.parse_transaction_status
  s2     !  
 &99r  c                 `    U R                  U R                  S0 5      nU R                  X!U5      $ )Nr  )r|  r  rH  )r  networkr  s      r  parse_networkkraken.parse_network
  s,    //$,,8I2N'BBr  r  c                    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                  Xb5      nU R                  US5      nU R                  US5      n	U R	                  U R                  US5      5      n
U R                  US5      nUS	:H  nUS
:H  nUS:H  nU(       d  U(       d  U(       a  Sn
U R                  US5      nU R                  US5      nUc  US:X  a  Sn0 SU_SU_SU_SU	_SU R                  U R                  US5      5      _SU_SS _SS _SS _SS _SS _SU
_SU_SS _SU_SU_SU R                  U5      _S S UUS.S.E$ )Nr  r  r  r  r=  r  r#  zstatus-propzon-holdzcancel-pendingonholdr  r-  r  rz  r   r8   ra  r>  address	addressToaddressFromtagtagTotagFromri  r  r  )ra  r4  )commentinternalr  )rH  r  rI  rM  r;  r?  r  )r  r  ra  r8   r  r  r  ry  rC  r  r#  
statusPropisOnHoldDepositisCancellationRequestisOnHoldWithdrawalr-  r  s                    r  parse_transactionkraken.parse_transaction
  s    z k73V4''V<	%%k7;
&&z<"";7!!+x8..t/?/?X/VW%%k=A
$	1 *.> >'8337IFV4"";6?y 
K
"
 
 f	

 t))$*:*:;	*RS
 w
 
 4
 4
 T
 t
 f
 D
 t
 D
  !
" Y/#
$  )
 	
r  c                     / n[        S[        U5      5       H9  nU R                  U R                  SU0X'   5      5      nUR	                  U5        M;     U R                  XcXE5      $ )Nr   r-  )rF  rG  rO  r  r>  filter_by_currency_since_limit)	r  r-  transactionsry  r  r  r  rS  r  s	            r  parse_transactions_by_type!kraken.parse_transactions_by_type  sj    q#l+,A00>2  !K MM+&	 -
 226NNr  c                   #    U R                  5       I Sh  vN   0 nUb  U R                  U5      nUS   US'   Ub+  U R                  U5      n[        R                  " US5      US'   U R                  USS/5      nUbE  U R                  USS/5      n[        R                  " US5      n	[        R                  " U	S5      US	'   U R                  U R                  XT5      5      I Sh  vN n
U R                  S
U
S   XU5      $  N N7f)av  
fetch all deposits made to an account

https://docs.kraken.com/rest/#tag/Funding/operation/getStatusRecentDeposits

:param str code: unified currency code
:param int [since]: the earliest time in ms to fetch deposits for
:param int [limit]: the maximum number of deposits structures to retrieve
:param dict [params]: extra parameters specific to the exchange API endpoint
:param int [params.until]: timestamp in ms of the latest transaction entry
:param int [params.end]: timestamp in seconds of the latest transaction entry
:returns dict[]: a list of `transaction structures <https://docs.ccxt.com/#/?id=transaction-structure>`
Nr8   r  r  r  r  r  r0  r  rz  r  )r  ra  r  r2   rK  r  r  r  privatePostDepositStatusr  rT  )r  ry  r  r  rO  r  ra  sinceStringr  r  rm  s              r  fetch_depositskraken.fetch_deposits  s     !!!}}T*H'~GG//6K&11+vFGG""6GV+<=YYv'89F"--eV<L$//cBGEN66t{{77STT ..y(8:Ld[`aa7 	" Us"   DDCD&D'DDc                    #    U R                  U5      I Sh  vN nU R                  US0 5      nU R                  US5      $  N)7f)a?  
fetches the current integer timestamp in milliseconds from the exchange server

https://docs.kraken.com/rest/#tag/Spot-Market-Data/operation/getServerTime

:param dict [params]: extra parameters specific to the exchange API endpoint
:returns int: the current integer timestamp in milliseconds from the exchange server
Nr  unixtime)publicGetTimer|  r  )r  rO  rm  r  s       r  
fetch_timekraken.fetch_timeH  sF      ++F33 8R8""6:66 4s   AA*Ac           	      
  #    U R                  5       I Sh  vN   SnU R                  USS5      u  pTU(       a"  SUS'   U R                  SXX4SS5      I Sh  vN $ 0 nUb  U R                  U5      nUS   US	'   Ub+  U R	                  U5      n[
        R                  " US
5      US'   U R                  USS/5      n	U	bE  U R                  USS/5      n[
        R                  " U	S
5      n
[
        R                  " U
S5      US'   U R                  U R                  Xd5      5      I Sh  vN nSnU R                  US5      n[        U[        5      (       d  U R                  U5      nOUnU R!                  SXX#5      $  GNe GN( NZ7f)a  
fetch all withdrawals made from an account

https://docs.kraken.com/rest/#tag/Funding/operation/getStatusRecentWithdrawals

:param str code: unified currency code
:param int [since]: the earliest time in ms to fetch withdrawals for
:param int [limit]: the maximum number of withdrawals structures to retrieve
:param dict [params]: extra parameters specific to the exchange API endpoint
:param int [params.until]: timestamp in ms of the latest transaction entry
:param int [params.end]: timestamp in seconds of the latest transaction entry
:param boolean [params.paginate]: default False, when True will automatically paginate by calling self endpoint multiple times
:returns dict[]: a list of `transaction structures <https://docs.ccxt.com/#/?id=transaction-structure>`
NFr   r  Tcursornext_cursorr8   r  r  r  r  r  r0  r  r  r  )r  r  fetch_paginated_call_cursorra  r  r2   rK  r  r  r  privatePostWithdrawStatusr  r|  r7  rD  add_pagination_cursor_to_resultrT  )r  ry  r  r  rO  r  r  ra  rX  r  r  rm  rawWithdrawalsr  s                 r  fetch_withdrawalskraken.fetch_withdrawals_  s     !!!88ASU_`#F899:Ld[`jw  zB  C  C  C}}T*H'~GG//6K&11+vFGG""6GV+<=YYv'89F"--eV<L$//cBGEN77G8TUUN 84&$''!AA&IN#N..|^SX`` 	"
 C Vs5   FE;?FE>CF&F'AF>FFc                     U R                  US5      nU R                  US5      n[        U5      nUb  US:  a  X4S-
     nX%S'   XSUS-
  '   U$ )Nrb  withdrawalsr   r   )rH  r|  rG  )r  r  ra  data
dataLengthr  s         r  re  &kraken.add_pagination_cursor_to_result  s^    !!&-8v}5Y
*q.Q'D"(#'a r  c                 f   #    SS0nU R                  XR                  X25      5      I Sh  vN $  N7f)a_  
create a currency deposit address

https://docs.kraken.com/rest/#tag/Funding/operation/getDepositAddresses

:param str code: unified currency code of the currency for the deposit address
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
r  r  N)fetch_deposit_addressr  )r  ry  rO  r  s       r  create_deposit_addresskraken.create_deposit_address  s5      6
 //kk'6RSSSSs   (1/1c                    #    U R                  5       I Sh  vN   U R                  U5      nSUS   0nU R                  U R                  XB5      5      I Sh  vN nU R	                  US5      $  NV N7f)a  
fetch deposit methods for a currency associated with self account

https://docs.kraken.com/rest/#tag/Funding/operation/getDepositMethods

:param str code: unified currency code
:param dict [params]: extra parameters specific to the kraken api endpoint
:returns dict: of deposit methods
Nr  r8   r  )r  ra  privatePostDepositMethodsr  r|  )r  ry  rO  ra  r  rm  s         r  fetch_deposit_methodskraken.fetch_deposit_methods  ss      !!!==&Xd^
 77G8TUU0 x22; 	"
 Vs!   A1A-?A1A/A1/A1c                   #    U R                  5       I Sh  vN   U R                  U5      nU R                  US5      nU R                  U R                  S0 5      nU R                  XTU5      nU R                  US5      nUS:X  a  US:X  a  US-   U-   nU R                  U R                  S0 5      nU R                  Xa5      nU R                  USU5      nUc  U R                  U5      I Sh  vN n	UbI  [        S	[        U	5      5       H0  n
U R                  X   S5      nUR                  U5      S	:  d  M.  Un  O   Uc%  U R                  U	S	0 5      nU R                  US5      nUS
   US.nU R                  U R                  X5      5      I Sh  vN nU R                  US/ 5      nU R                  US	0 5      nUc  [        U R                  S-   U-   5      eU R                  UU5      $  GN GN N`7f)a[  
fetch the deposit address for a currency associated with self account

https://docs.kraken.com/rest/#tag/Funding/operation/getDepositAddresses

:param str code: unified currency code
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
Nr>  r  rv  r  r  r  r  r   r8   )r  r  r  z9 privatePostDepositAddresses() returned no addresses for )r  ra  safe_string_upperr|  r  rH  r  rt  rF  rG  r}  privatePostDepositAddressesr  r&   r8   parse_deposit_address)r  ry  rO  ra  r>  r  defaultDepositMethodsdefaultDepositMethoddepositMethodr  rS  entryfirstDepositMethodr  rm  r  firstResults                    r  ro  kraken.fetch_deposit_address  s     !!!==&((;??4<<R@""8g>69-FNG!3#:'D $>NPR S#//0EL((;OP  #'#=#=d#CCN"q#n"56A ,,^->IEzz'*a/(-	 7 $%)__^Q%K" $ 0 01CX Nd^#
 99$++g:VWW 8R8oofa4 +f!fim!mnn))+x@@W 	" D  Xs=   G2G*CG2+G-,AG26AG2G0AG2-G20G2c                     U R                  US5      nU R                  US5      nU R                  S U5      nUS   nU R                  U5        UUS UUS.$ )NrC  rF  ry  )r=  ra  r>  rC  rF  )rH  r  check_address)r  depositAddressra  rC  rF  ry  s         r  ry  kraken.parse_deposit_address(  sk     "">9=~u5%%dH57#"
 	
r  rC  rF  c                   #    U R                  XE5      u  pESU;   a  U R                  5       I Sh  vN   U R                  U5      nUS   US.nUb  US:w  a  X7S'   U R                  U5        U R	                  U R                  Xu5      5      I Sh  vN nU R                  US0 5      n	U R                  X5      $ [        U R                  S-   5      e N NB7f)	a  
make a withdrawal

https://docs.kraken.com/rest/#tag/Funding/operation/withdrawFunds

:param str code: unified currency code
:param float amount: the amount to withdraw
:param str address: the address to withdraw to, not required can be '' or None/none/None
:param str tag:
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: a `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
r  Nr8   )r  r  rf  rC  r  zO withdraw() requires a 'key' parameter(withdrawal key name, up on your account))
handle_withdraw_tag_and_paramsr  ra  r  privatePostWithdrawr  rC  rO  r   r8   )
r  ry  r  rC  rF  rO  ra  r  rm  r  s
             r  r   kraken.withdraw<  s      99#FF?##%%%}}T*H!$ G
 "w"}%,	"""7+!55dkk'6RSSH ^^Hh;F))&;;DGG&wwxx+ & Ts#   -CCACCACCc                 ,  #    U R                  5       I Sh  vN   SSS.nU R                  U R                  X25      5      I Sh  vN nU R                  U5      nU R	                  US5      nU R                  XQ5      nU R                  USUS5      $  Ny NN7f)aP  
fetch all open positions

https://docs.kraken.com/rest/#tag/Account-Data/operation/getOpenPositions

:param str[] [symbols]: not used by kraken fetchPositions()
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict[]: a list of `position structure <https://docs.ccxt.com/#/?id=position-structure>`
Nr  rT  )docalcsconsolidationr  r  F)r  privatePostOpenPositionsr  r  rJ  parse_positionsfilter_by_array_positions)r  r  rO  r  rm  r  resultss          r  fetch_positionskraken.fetch_positionsb  s      !!! %

 66t{{77STT\ %%g.(3&&v7--gx%PPo 	" Us"   BB,BBABBpositionc                    U R                  US5      nU R                  US5      nUS:X  a  SOSnU R                  0 SU_SS _SU R                  X25      _S	S _S
S _SS _SS _SU R                  US5      _SS _SS _SU R                  US5      _SS _SS _SS _SU_SS _SS _S S S S S U R                  US5      S U R                  US5      S S S S.E5      $ )Nr  r-  r,  longshortr=  r8   r  notionalr  liquidationPrice
entryPriceunrealizedPnlnetrealizedPnlr   	contractsr0  r6  	markPrice	lastPricer2  r  r  rF   r  )r  lastUpdateTimestampmaintenanceMarginmaintenanceMarginPercentage
collateralinitialMargininitialMarginPercentager  marginRatior  r  )rH  safe_positionr  rM  )r  r  rT  rA  rawSider2  s         r  parse_positionkraken.parse_position  s}    ##Hf5""8V4!U*v!! #
H#
$#
 d&&x8#
 	#

 $#
 #
 $#
 T--h>#
 4#
 $#
 ))(E:#
 D#
 #
 #
 D#
  d!#
" ##
$ #'!%+/!--hA'+((:>!#9#
  	r  c                 2    SSSS.nU R                  X!U5      $ )NSpot WalletzFutures Walletr  r  )r  r  accountByTypes      r  parse_account_typekraken.parse_account_type  s'    !$&

 @@r  c                 F   #    U R                  XSSU5      I Sh  vN $  N7f)aM  
transfer from spot wallet to futures wallet

https://docs.kraken.com/rest/#tag/User-Funding/operation/walletTransfer

:param str code: Unified currency code
:param float amount: Size of the transfer
:param dict [params]: Exchange specific parameters
:returns: a `transfer structure <https://docs.ccxt.com/#/?id=transfer-structure>`
rE   rG   N)r   )r  ry  r  rO  s       r  transfer_outkraken.transfer_out  s"      ]]4HHHHs   !!fromAccount	toAccountc                   #    U R                  5       I Sh  vN   U R                  U5      nU R                  U5      nU R                  U5      nU R                  X5      UUUS   S.nUS:w  a$  [	        U R
                  S-   U-   S-   U-   S-   5      eU R                  U R                  Xu5      5      I Sh  vN nU R                  X5      n	U R                  U	UUUS.5      $  N N-7f)	a  

https://docs.kraken.com/rest/#tag/User-Funding/operation/walletTransfer

transfers currencies between sub-accounts(only spot->swap direction is supported)
:param str code: Unified currency code
:param float amount: Size of the transfer
:param str fromAccount: 'spot' or 'Spot Wallet'
:param str toAccount: 'swap' or 'Futures Wallet'
:param dict [params]: Exchange specific parameters
:returns: a `transfer structure <https://docs.ccxt.com/#/?id=transfer-structure>`
Nr8   )r  fromtor  r  z transfer cannot transfer from z to zA. Use krakenfutures instead to transfer from the futures account.)r  r  r  )	r  ra  r  currency_to_precisionr#   r8   privatePostWalletTransferr  parse_transfer)
r  ry  r  r  r  rO  ra  r  rm  r   s
             r  r   kraken.transfer  s     !!!==&--k:++I6	00>d^	
 -'TWW'HH;VY__bkk  or  r  s  s77G8TUU &&x:{{8&"&
  	/ 	" Vs"   C$C BC$4C"5,C$"C$r   c           
          U R                  US0 5      nU R                  US5      nUUS S U R                  US5      S S S SS.	$ )Nr  r  ry  sucess)	r=  r8   r  r  ra  r  r  r  r#  )r|  rH  )r  r   ra  r  r  s        r  r  kraken.parse_transfer  sZ     8R8  1((6:

 
	
r  r   GETc                    SU R                   -   S-   U-   S-   U-   nUS:X  a   U(       a  USU R                  U5      -   -  nGOUS:X  Gau  U R                  US5      nSn	Ub  UR                  S5      (       a  SOSn	US	:H  n
US
:H  nU R	                  5         [        U R                  5       5      nU
(       d  U	(       d  U(       a$  U R                  U R                  SU0U5      5      nO#U R                  U R                  SU0U5      5      nU R                  X-   5      nU R                  USS5      nU R                  U5      nU R                  X5      nU R                  U R                  5      nU R                  UU[        R                   S5      nU R"                  US.nU
(       d  U	(       d  U(       a  SUS'   OSUS'   OSU-   nU R$                  S   U   U-   nXsXeS.$ )Nr'  r   ?r   r/  Fr  Tr   r   noncesha256binarybase64)zAPI-KeyzAPI-Signzapplication/jsonzContent-Typez!application/x-www-form-urlencodedr   )rk  r  bodyheaders)r=   urlencode_nestedrH  r  check_required_credentialsr8  r  jsonr  encodehashbinary_concatbase64_to_binarysecrethmachashlibsha512apiKeyr   )r  pathr   r  rO  r  r  rk  r/  isTriggerPercentisCancelOrderBatchisBatchOrderr  authr  r  binhashr  	signatures                      r  signkraken.sign.  s   DLL 3&,s2T9(?sT226:::I$$VW5E$ ,1NN3,?,?4e "&*<"< O3L++-

%E!%5yygu-=v!FG,,T[['59I6-RS;;u|,D99T8X6D[[%F((6G**4;;7F		'67>>8LI;;%G "%5*<'*M'*Ciis#c)dOOr  c                 B    U R                  5       U R                  S   -
  $ )Nr  )millisecondsr  )r  s    r  r  kraken.nonceU  s       "T\\2B%CCCr  reasonrk  r  r  c
                 F   US:X  a*  [        U R                  S-   [        U5      -   S-   U-   5      eUc  g US   S:X  Gac  [        U[        5      (       GdM  U R                  S-   U-   n
SU;   a  [	        US   5      nU(       ap  [        S[	        US   5      5       HI  nUS   U   nU R                  U R                  S   X5        U R                  U R                  S   X5        MK     [        U
5      eSU;   a  U R                  US0 5      nS	U;   a  U R                  US	/ 5      n[        S[	        U5      5       He  nX   nU R                  US5      nUc  M  U R                  U R                  S   X5        U R                  U R                  S   X5        [        U
5      e   g )
Ni  r  r   {errorr  r  r  rr  )r,   r8   r8  r7  rG  rF  throw_exactly_matched_exceptionr  throw_broadly_matched_exceptionr   rC  rJ  rH  )r  ry  r  rk  r  r  r  rm  requestHeadersrequestBodymessage	numErrorsrS  r  r  rr  r5  s                    r  handle_errorskraken.handle_errorsX  s   3;&tww}s4y'@3'F'OPP7c>h,,''C-$.h& #HW$5 6I !&q#hw.?*@!AA$,W$5a$8E @@QXAY[`j @@QXAY[`j "B ,G44x'!^^HhCF6)!%"!E!&q#f+!6A$*IE$($4$4UG$DE$0 $ D DT__U\E]_d n $ D DT__U\E]_d n&3G&< < "7 r   )N)r   r   r  )NNN)g__name__
__module____qualname____firstlineno__r   r	  r  r   r   rd  ro  r   r  r   r   rI  r8  r   r  r  r
   r  r   r   r  dictr   r  r   r   r  r  rD  r  r  r  r   r  r   r$  r'  r   rC  rL  r   rU  rY  r   floatr^  ra  r   r   r\  r   rz  r9  r:  r  r  r   rm  rk  r  r  r  r  r  r  r  r#  r(  r,  r1  r;  r?  r   rO  rT  rY  r^  rg  re  r	   rp  rt  ro  ry  r   r   r  r  r  r  r   r   r  r  r  intr  __static_attributes____classcell__)r  s   @r  r4   r4   #   s   b# bHy *, [V [z )+ 
4 -/ w: wr	LS 	LH 	LPS 	L 	L ;= /6c /6AT /6b
*i *	 *en * @DB .8S .8 .8S\ .8`/4 / /6 /b 6:" G7 G GB 68 1 1F 1&
 
4 
, ?CQUdhqs 0J 0J 0J3 0J^a 0Jx|  ~B  yC 0Jd33t 3x 3; 3j .2SW`b /@s /@# /@S /@gklwgx /@b BFb (3 (6 =A 3 c P[ L Lv L L\ <@d[] .? .?S .? .?bfglbm .?`) )$ *, , ,8 eg e# eY eV[ e& XZ Uc U U mqy{ 2( 2(I 2(Y 2(X] 2(fi 2(h FH CC$|*< CCJ(B: :	:n nv n n` kowy b!C b! b!C b!$ b!X[ b!dg b!H fjx|  FH @03 @0 @09 @0I @0_b @0ru @0D 8<B ?EC ?E ?EB ?CQUdhqs G3 G G3 G^a GR <@ S 4 37TX\eg A?C A?s A?RU A?F 9=R *S *# *X AER 
tCy 
# 
: 59 
c 
4 BD S 8 59tZ^gi K?c K? K?TW K?nrsxny K?Z 7;\`ik O? O?3 O?VY O?ptuzp{ O?b
:s 
:Ch
T h
X h
Q\ h
TO3 OVY Oil O 04$UYbd *b *bC *bs *bimnyiz *bX ') 7S 7. 37TX\eg NaC Nas NaRU Nalpq|l} Na` >@ T TN T =? '3 '3R =? 5A 5A> 5An
h 
R` 
( QU]_ $y3 $y $y $y# $ydo $yL 8<B AQW AQ4PX> AQF.t .V .`A <> Is I ac (3 ( (C (TW (gt (T
t 
x 
= 
4 &eBSW %PND# s  c TX `c  r  r4   ): ccxt.async_support.base.exchanger   ccxt.abstract.krakenr   rA  r  ccxt.base.typesr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   typingr   ccxt.base.errorsr   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   ccxt.base.decimal_to_precisionr0   r1   ccxt.base.preciser2   r4   r  r  r  <module>r     s    6 ,   Q  Q  Q  Q  Q  Q  Q  * 0 - - . ' & . + ) * ) + . 1 * ) * 3 4 %Q5X{ Q5r  