
    E#i7                    x   S SK Jr  S SKJr  S SKrS SKJrJrJrJ	r	J
r
JrJrJrJrJrJrJrJrJrJrJrJrJrJrJr  S SKJr  S SKJr  S SKJr  S SKJr  S S	KJ r   S S
KJ!r!  S SKJ"r"  S SKJ#r#  S SKJ$r$  S SKJ%r%  S SKJ&r&  S SKJ'r'  S SKJ(r(  S SKJ)r)  S SKJ*r*  S SKJ+r+  S SKJ,r,  S SK-J.r.  S SK/J0r0   " S S\\5      r1g)    )Exchange)ImplicitAPIN)AnyBalances
CurrenciesCurrencyDepositAddressIntMarketNumOrder	OrderBook	OrderSide	OrderTypeStrStringsTickerTickersTradeTradingFeeInterfaceTradingFeesTransaction)List)ExchangeError)AuthenticationError)PermissionDenied)ArgumentsRequired)
BadRequest)	BadSymbol)InsufficientFunds)InvalidAddress)InvalidOrder)OrderNotFound)OrderImmediatelyFillable)DuplicateOrderId)NotSupported)RateLimitExceeded)ExchangeNotAvailable)BadResponse)	TICK_SIZE)Precisec                   X  ^  \ rS rSrS\4U 4S jjr0 4S\4S jjr0 4S jr0 4S jr	0 4S\
4S jjr0 4S\\   4S jjrS	0 4S
\S\4S jjr0 4S\S\4S jjrSOS\S\S\4S jjrS	0 4S\S\
S\4S jjrSS	S	0 4S\S\S\
S\
S\\   4
S jjrSOS\S\4S jjrS	S	0 4S\S\
S\
S\\   4S jjrS	S	S	0 4S\S\
S\
4S jjrS	S	S	0 4S\S\S\
S\
4S jjr SOS\S\S\4S jjr!0 4S\"4S jjr#S\"4S jr$S	0 4S\S \%S!\&S"\'S#\(4
S$ jjr)S	0 4S\S\4S% jjr*S	S	S	0 4S\S\
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\S\4S( jjr.S	0 4S\4S) jjr/SOS*\S\S\+4S+ jjr0S, r1S- r2S. r3S/ r4S0\4S1 jr5S2 r60 4S\S\74S3 jjr80 4S\94S4 jjr:SOS5\S\S\74S6 jjr;S	0 4S7\S"\'S8\S9\S\<4
S: jjr=S	S	S	0 4S7\S\
S\
S\\<   4S; jjr>S	S	S	0 4S7\S\
S\
S\\<   4S< jjr?SOS=\S>\@S\<4S? jjrAS0\4S@ jrB0 4S7\S\C4SA jjrDSOS>\@S\C4SB jjrE0 4SC jrFSD rGSESF0 S	S	4SG jrHS7\ISH\SI\SJ\SK\SL\4SM jrJSNrKU =rL$ )Pcoinsph   returnc                 Z  > U R                  [        [        U ]  5       0 SS_SS_SS/_SS_S	S
_SS_SS_S0 SS _SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_S S_0 S!S_S"S_S#S_S$S_S%S_S&S_S'S_S(S_S)S_S*S_S+S_S,S_S-S_S.S_S/S_S0S_S1S_E0 S2S_S3S_S4S_S5S_S6S_S7S_S8S_S9S_S:S_S;S_S<S _S=S_S>S_S?S_S@S_SAS_SBS_E0 SCS_SDS_SES_SFS_SGS_SHS_SIS_SJS_SKS_SLS_SMS_SNS_SOS_SPS_SQS_SRS_SSS_E0 STS_SUS_SVS_SWS_SXS_SYS_SZS_S[S_S\S_S]S_S^S_S_S_S`S_SaS_SbS_ScS_SdS _E0 SeS_SfS_SgS_ShS_SiS_SjS_SkS_SlS_SmS_SnS_SoS_SpS_SqS_SrS_SsS_StS_SuS_E0 SvS_SwS_SxS_SyS_SzS_S{S_S|S_S}S_S~S_SS_SS_SS_SS_SS _SS_SS_SS_ESSSSSSSSSSSS.E_SSSSSSSSSSSSSSSSS._SSSSS.SS/SS._SSSSSSSS/SS/SS//S.SSS.SSS.SSSS/SS//S.SSSSS.00 SS_SS_SS_SS_SS_SSSS._SS_SS_SSSS._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_SSSS.ESSSS.S.S._SSSSSU R	                  S5      U R	                  S5      U R	                  S5      U R	                  S5      /U R	                  S5      U R	                  S5      /U R	                  S5      U R	                  S5      /U R	                  S5      U R	                  S5      /U R	                  S5      U R	                  S5      /U R	                  S5      U R	                  S5      /U R	                  S5      U R	                  S5      /U R	                  S5      U R	                  S5      /U R	                  S5      U R	                  S5      /U R	                  S5      U R	                  S5      //
U R	                  S5      U R	                  S5      /U R	                  S5      U R	                  S5      /U R	                  S5      U R	                  S5      /U R	                  S5      U R	                  S5      /U R	                  S5      U R	                  S5      /U R	                  S5      U R	                  S5      /U R	                  S5      U R	                  S5      /U R	                  S5      U R	                  S5      /U R	                  S5      U R	                  S5      /U R	                  S5      U R	                  S5      //
S.S.0_S[
        _SSSS0SS0SSSS.S.SS0SS0SSSSS.GS ._GSSGSS0SSS SSSS SSSSGS.SSSSSSSGS.S SGSGSGSSGS.SSSSGS.SS SSSGS	.S SGSGSSGSSSSGS
.GSGS0GS.
S S GS.S S GS.GS._GS0 GS[        _GS[        _GS[        _GS[        _GS[        _GS[        _GS[        _GS[        _GS[        _GS[        _GS[        _GS[        _GS[        _GS[        _GS[        _GS[        _GS [        _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S0[        _GS1[        _E0 GS2[        _GS3[        _GS4[        _GS5[        _GS6[        _GS7[        _GS8[        _GS9[        _GS:[        _GS;[        _GS<[        _GS=[        _GS>[        _GS?[        _GS@[        _GSA[        _GSB[        _E0 GSC[         _GSD[        _GSE[        _GSF[        _GSG[        _GSH[        _GSI[        _GSJ[        _GSK[        _GSL[        _GSM[        _GSN[        _GSO[        _GSP[        _GSQ[        _GSR[        _GSS[        _E0 GST[        _GSU[        _GSV[        _GSW[         _GSX[        _GSY[        _GSZ[        _GS[[        _GS\[        _GS][        _GS^[        _GS_[        _GS`[        _GSa[        _GSb[        _GSc["        _E0 GSd[         _GSe[        _GSf[        _GSg[        _GSh[        _GSi[        _GSj[        _GSk[        _GSl[        _GSm[        _GSn[        _GSo[        _GSp[$        _GSq[        _GSr[        _GSs[        _GSt[&        _[        [        [        [        [        [        [        [        GSu.EGSv._5      $ (w  Nidr-   namezCoins.ph	countriesPHversionv1	rateLimit2   	certifiedFprohasCORSspotTmarginswapfutureoption	addMarginborrowCrossMarginborrowIsolatedMarginborrowMargincancelAllOrderscancelOrdercancelOrderscloseAllPositionsclosePositioncreateDepositAddresscreateMarketBuyOrderWithCostcreateMarketOrderWithCostcreateMarketSellOrderWithCostcreateOrder$createOrderWithTakeProfitAndStopLoss&createOrderWithTakeProfitAndStopLossWscreatePostOnlyOrdercreateReduceOnlyOrdercreateStopLimitOrdercreateStopMarketOrdercreateStopOrderdeposit	editOrderfetchAccountsfetchBalancefetchBidsAsksfetchBorrowInterestfetchBorrowRatefetchBorrowRateHistoriesfetchBorrowRateHistoryfetchBorrowRatesfetchBorrowRatesPerSymbolfetchCanceledOrdersfetchClosedOrderfetchClosedOrdersfetchCrossBorrowRatefetchCrossBorrowRatesfetchCurrenciesfetchDepositfetchDepositAddressfetchDepositAddressesfetchDepositAddressesByNetworkfetchDepositsfetchDepositWithdrawFeefetchDepositWithdrawFeesfetchFundingHistoryfetchFundingIntervalfetchFundingIntervalsfetchFundingRatefetchFundingRateHistoryfetchFundingRatesfetchGreeksfetchIndexOHLCVfetchIsolatedBorrowRatefetchIsolatedBorrowRatesfetchIsolatedPositionsfetchL3OrderBookfetchLedgerfetchLeveragefetchLeveragesfetchLeverageTiersfetchLiquidationsfetchLongShortRatiofetchLongShortRatioHistoryfetchMarginAdjustmentHistoryfetchMarginModefetchMarginModesfetchMarketLeverageTiersfetchMarketsfetchMarkOHLCVfetchMarkPricesfetchMyLiquidationsfetchMySettlementHistoryfetchMyTrades
fetchOHLCVfetchOpenInterestfetchOpenInterestHistoryfetchOpenInterestsfetchOpenOrderfetchOpenOrdersfetchOptionfetchOptionChain
fetchOrderfetchOrderBookfetchOrderBooksfetchOrdersfetchOrderTradesfetchPositionfetchPositionHistoryfetchPositionModefetchPositionsfetchPositionsForSymbolfetchPositionsHistoryfetchPositionsRiskfetchPremiumIndexOHLCVfetchSettlementHistoryfetchStatusfetchTickerfetchTickers	fetchTimefetchTradesfetchTradingFeefetchTradingFeesfetchTradingLimitsfetchTransactionFeefetchTransactionFeesfetchTransactionsfetchTransfersfetchVolatilityHistoryfetchWithdrawalfetchWithdrawalsfetchWithdrawalWhitelistreduceMargin)repayCrossMarginrepayIsolatedMarginrepayMarginsetLeverage	setMarginsetMarginModesetPositionModesignIntransferwithdrawws
timeframes1m3m5m15m30m1h2h4h6h8h12h1d3d1w1M)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   urlszdhttps://user-images.githubusercontent.com/1294454/225719995-48ab2026-4ddb-496c-9da7-0d7566617c9b.jpgzhttps://api.pro.coins.ph)publicprivatezhttps://coins.ph/z%https://coins-docs.github.io/rest-apizDhttps://support.coins.ph/hc/en-us/sections/4407198694681-Limits-Fees)logoapiwwwdocfeesr   get   (   e         r   )costnoSymbolAndNoSymbolsbyNumberOfSymbols   )r   noSymbol
      )r   byLimit)zopenapi/v1/pingzopenapi/v1/timezopenapi/quote/v1/ticker/24hrzopenapi/quote/v1/ticker/pricez"openapi/quote/v1/ticker/bookTickerzopenapi/v1/exchangeInfozopenapi/quote/v1/depthzopenapi/quote/v1/klineszopenapi/quote/v1/tradeszopenapi/v1/pairszopenapi/quote/v1/avgPricezopenapi/wallet/v1/config/getallz!openapi/wallet/v1/deposit/addressz!openapi/wallet/v1/deposit/historyz"openapi/wallet/v1/withdraw/historyzopenapi/v1/accountopenapi/v1/openOrders   zopenapi/v1/asset/tradeFeeopenapi/v1/orderzopenapi/v1/historyOrderszopenapi/v1/myTradesz"openapi/v1/capital/deposit/historyz#openapi/v1/capital/withdraw/historyz.openapi/v3/payment-request/get-payment-requestzmerchant-api/v1/get-invoicesz"openapi/account/v3/crypto-accountsz"openapi/transfer/v3/transfers/{id}z openapi/wallet/v1/withdraw/applyiX  zopenapi/v1/order/testz!openapi/v1/capital/withdraw/applyz openapi/v1/capital/deposit/applyz+openapi/v3/payment-request/payment-requestsz1openapi/v3/payment-request/delete-payment-requestz3openapi/v3/payment-request/payment-request-reminderopenapi/v1/userDataStreamzmerchant-api/v1/invoiceszmerchant-api/v1/invoices-cancelz.openapi/convert/v1/get-supported-trading-pairszopenapi/convert/v1/get-quotezopenapi/convert/v1/accpet-quotezopenapi/fiat/v1/support-channelzopenapi/fiat/v1/cash-outzopenapi/fiat/v1/history)zopenapi/migration/v4/sellorderz#openapi/migration/v4/validate-fieldzopenapi/transfer/v3/transfers)r   r   r   )r   postdeleter   tradingz0.0025z0.0030500000z0.00271000000z0.00242500000z0.0025000000z0.001810000000z0.0015	100000000z0.0012	500000000z0.0009
1000000000z0.0007
2500000000z0.0005z0.0022z0.001z0.0008z0.0006)takermaker)feeSide	tierBased
percentager   r   tiersprecisionModeoptionswarningGTCFULL)marketlimit)timeInForcenewOrderRespTypemethod!publicGetOpenapiQuoteV1Ticker24hrTRXETHBSCARBITRUM)TRC20ERC20BEP20ARB)!createMarketBuyOrderRequiresPricer   rW   rO   r   r   networksfeaturesr   )IOCFOKPOGTD)
marginModetriggerPricetriggerPriceTypetriggerDirectionstopLossPricetakeProfitPriceattachedStopLossTakeProfitr  hedgedtrailingleveragemarketBuyByCostmarketBuyRequiresPriceselfTradePreventioniceberg  i )r  r  daysBack	untilDayssymbolRequired)r  triggerr  r&  )r  r  r'  r  r&  )r  r  r$  daysBackCanceledr%  r'  r  r&  r  )
sandboxrg   rO   createOrdersr   r   r   r   rd   r   )linearinverse)r=   r?   r@   
exceptionsz-1000z-1001z-1002z-1003z-1004z-1006z-1007z-1014z-1015z-1016z-1020z-1021z-1022z-1023z-1024z-1025z-1030z-1100z-1101z-1102z-1103z-1104z-1105z-1106z-1111z-1112z-1114z-1115z-1116z-1117z-1118z-1119z-1120z-1121z-1122z-1125z-1127z-1128z-1130z-1131z-1132z-1133z-1134z-1135z-1136z-1137z-1138z-1139z-1140z-1141z-1142z-1143z-1144z-1145z-1146z-1147z-1148z-1149z-1150z-1151z-1152z-1153z-1154z-1155z-1156z-1157z-1158z-1159z-1160z-1161z-2010z-2013z-2011z-2014z-2015z-2016z-3126z-3127z-4001z-100011z-100012z-30008z-30036403zUnknown order sentzDuplicate order sentzMarket is closedz5Account has insufficient balance for requested actionz/Market orders are not supported for self symbolz0Iceberg orders are not supported for self symbolz2Stop loss orders are not supported for self symbolz8Stop loss limit orders are not supported for self symbolz4Take profit orders are not supported for self symbolz:Take profit limit orders are not supported for self symbolzPrice* QTY is zero or lesszIcebergQty exceeds QTYz'This action disabled is on self accountzUnsupported order combinationzOrder would trigger immediatelyz6Cancel order is invalid. Check origClOrdId and orderIdz&Order would immediately match and take)PRICE_FILTERLOT_SIZEMIN_NOTIONALMAX_NUM_ORDERSMAX_ALGO_ORDERSBROKER_MAX_NUM_ORDERSBROKER_MAX_ALGO_ORDERSICEBERG_PARTS)exactbroad)deep_extendsuperr-   describeparse_numberr*   r   r   r'   r"   r)   r&   r   r   r    r%   r#   r(   r   r$   )self	__class__s    F/home/james-whalen/.local/lib/python3.13/site-packages/ccxt/coinsph.pyr;  coinsph.describe!   sX   gt = ? tB
)tB
JtB
 $tB
 t	tB

 tB
 tB
 5tB
  CCC %C 	C
 %C %C UC $UC 'C C "4C tC C $UC  C  '!C" /#C$ ,U%C& 0'C( t)C* 7+C, 9%-C. &u/C0 (1C2 '3C4 (5C6 "47C8 49C: U;C<  =C> ?C@  ACB &uCCD "5ECF +EGCH )%ICJ #EKCL ,UMCN &uOCP #EQCR $TSCT 'UCV (WCX "4YCZ [C\ &t]C^ (_C` 1%aCb  cCd *5eCf +EgCh &uiCj 'kCl (mCn #EoCp *5qCr $UsCt uuCv "5wCx *5yCz +E{C| )%}C~ #EC@ uACB  CCD !%ECF %eGCH $UICJ &uKCL -eMCN /OCP "5QCR #ESCT +EUCV WCX !%YCZ "5[C\ &u]C^ +E_C`  aCb dcCd $UeCf +EgCh %eiCj !$kCl "4mCn uoCp #EqCr dsCt !$uCv "5wCx uyCz #D{C|  }C~ 'C@ $UACB !%CCD *5ECF (GCH %eICJ )%KCL )%MCN tOCP tQCR SCT TUCV tWCX "4YCZ #D[C\ %e]C^ &u_C` 'aCb $UcCd !%eCf )%gCh "4iCj #DkCl +EmCn oCp %*',$$"!&#(! ECtB
X YtB
z ~89 +; _{tB
R +,+, BC\^wz|~v  CE  GI  BJ  MN  PQ  LR  vS  9T CDQR9S HIVW>X35;<3PQ(UVXYTZI[2\3434,-56'092;R <Q =a	
 -b 0!1L 4Q +A 3RR4P .r =a >q I!  7!" =a#$ =a%(:C/ +A <Q	
 ;A Fq LQ Nq 4Q 3A :1 I! 7 :1 :1  3A!" 21#$ ;<?@9:). -.1256W01IStB
f $!%"&!..x8!..w7 "..s3T5F5Fw5OP!..x8$:K:KH:UV!..y94;L;LX;VW!..y94;L;LW;UV!..y94;L;LX;VW!..z:D<M<Mh<WX!..{;T=N=Nx=XY!..{;T=N=Nx=XY!..|<d>O>OPX>YZ!..|<d>O>OPX>YZ" "..s3T5F5Fx5PQ!..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<Mg<VW!..{;T=N=Nx=XY!..{;T=N=Nx=XY!..|<d>O>OPX>YZ!..|<d>O>OPX>YZ" #gtB
n YotB
r 59u u $)"(!')  A  A! #""%+stB
n	 $!4( ',(,,0,1).+06:#'#'"'#(	( #($)$)+/27/3#()$, %)&+!%$*%+*.& ',#($)*/	# ',!%#($)*/( $(&+!%$*,-%+#($)*.	*  #w>@ ##
 ##IHo	tB
B UZUZU 0U .	U
 \U [U [U \U .U \U \U ZU ZU 0U ZU  Z!U" ]#U$ Z%U& Z'U( Z)U* Z+U, Z-U. Z/U0 Z1U2 Z3U4 [5U6 Z7U8 \9U: \;U< \=U> \?U@ \AUB ZCUD YEUF \GUH ZIUJ ZKUL ZMUN ZOUP .QUR \SUT \UUV \WUX \YUZ \[U\ \]U^ \_U` \aUb \cUd -eUf \gUh ]iUj \kUl \mUn \oUp \qUr \sUt \uUv \wUx YyUz \{U| 0}U~ ZU@ ZAUB \CUD YEUF \GUH \IUJ ZKUL ZMUN \OUP ]QUR ZSUT ZUUV 0WUX [YUZ \[U\ \]U^ Z_U` yaUb ycUd /eUf /gUh /iUl(-*,< '	 LM^	
 Fy G	 I) OPY KI QR[ 1* -j >?O 4\ 6|  Ml!" =>V#$ %1 ,$0&2'3-9.:%/3orCtB
 t t	    c                    U R                  S5      (       d  0 $ U R                  U5      n0 n[        S[        U5      5       GH  nX$   nU R	                  US5      nU R                  U5      nU R                  US5      nU R                  US/ 5      n	0 n
[        S[        U	5      5       H  nX   nU R	                  US5      nU R                  U5      nUUUS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      S.SSS.S.S.	X'   M     U R                  UU R	                  US5      UU(       a  SOSU R                  U R                  U R	                  US5      5      5      USU R                  US5      U R                  US5      U
SS0 S.5      X7'   GM     U$ )z
fetches all available currencies on an exchange

https://docs.coins.ph/rest-api/#all-coins-information-user_data

:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: an associative dictionary of currencies
Fr   coinisLegalMoneynetworkListnetworkNdepositEnablewithdrawEnablewithdrawFeewithdrawIntegerMultiplewithdrawMinwithdrawMaxminmax)r   rW   )	infor1   rF  activerW   r   fee	precisionlimitsr2   fiatcryptotransferPrecisiondepositAllEnablewithdrawAllEnable)r1   r2   codetyperS  rP  rQ  rW   r   r  rR  r   rT  )check_required_credentials%privateGetOpenapiWalletV1ConfigGetallrangelensafe_stringsafe_currency_code	safe_bool	safe_listnetwork_id_to_codesafe_numbersafe_currency_structurer<  parse_precision)r=  paramsresponseresultientryr1   rZ  isFiatrE  r  jnetworkItemrF  networkCodes                  r?  fetch_currenciescoinsph.fetch_currencies  s    ..u55I==fE| q#h-(AKE!!%0B**2.D^^E>:F..rBKH1c+./)n**;	B"55g>'!*"#~~k?K ${<L M++KG!%!1!1+?X!Y $(#3#3K#O#'#3#3K#O%
 $(#'$	)%	 00  77((7"(h!..t/C/CDDTDTUZ\oDp/qr>>%1CD NN52EF$9 FL? )\ rA  c                    SU;   a  SU;  a  US   $ SU;   a  SU;  a  SU;  a  US   $ SU;   aK  SU;   aE  US   n[        U5      nUS   n[        S[        U5      5       H  n	X   n
XzS   :  d  M  U
S   s  $    OESU;   a?  S	U;   a9  US	   nUS   n[        S[        U5      5       H  n	X   n
XS   :  d  M  U
S   s  $    U R                  US
S5      $ )Nr   symbolr   symbolsr   r   r   r   r  r   )r_  r^  
safe_value)r=  r   r  pathrh  configru  symbolsAmountr   rk  rl  r  r   s                r?  calculate_rate_limiter_cost#coinsph.calculate_rate_limiter_cost  s   & 8v+=*%%$.V9KV_ciVi011!V+)v2EY'GLM &': ;1c"345), !H, 8O 6 6!6(97OEY'G1c'l+
!H$ 8O , vvq11rA  c                 4    U R                  U5      nSSSSUS.$ )a*  
the latest known information on the availability of the exchange API

https://coins-docs.github.io/rest-api/#test-connectivity

:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: a `status structure <https://docs.ccxt.com/#/?id=exchange-status-structure>`
okN)statusupdatedetaurlrP  )publicGetOpenapiV1Pingr=  rh  ri  s      r?  fetch_statuscoinsph.fetch_status  s-     ..v6
 	
rA  c                 H    U R                  U5      nU R                  US5      $ )a-  
fetches the current integer timestamp in milliseconds from the exchange server

https://coins-docs.github.io/rest-api/#check-server-time

:param dict [params]: extra parameters specific to the exchange API endpoint
:returns int: the current integer timestamp in milliseconds from the exchange server

serverTime)publicGetOpenapiV1Timesafe_integerr  s      r?  
fetch_timecoinsph.fetch_time  s)     ..v6   <88rA  c                    U R                  U5      nU R                  US/ 5      n/ n[        S[        U5      5       GH  nX5   nU R	                  US5      nU R	                  US5      nU R	                  US5      n	U R                  U5      n
U R                  U	5      nU R                  U R                  US/ 5      S5      nU R                  US0 5      nU R                  US	0 5      nU R                  US
0 5      nUR                  0 SU_SU
S-   U-   _SU
_SU_SS_SU_SU	_SS_SS_SS_SS_SS_SS_SS_SU R                  US5      S:H  _SS_S S_SSSSSSSSU R                  U R	                  US!5      5      U R                  U R	                  US"5      5      S#.SSS$.U R                  U R	                  US%5      5      U R                  U R	                  US&5      5      S$.U R                  U R	                  US'5      5      U R                  U R	                  US(5      5      S$.U R                  U R	                  US)5      5      SS$.S*.SUS+.E5        GM     U R                  U5        U$ ),z
retrieves data on all markets for coinsph

https://coins-docs.github.io/rest-api/#exchange-information

:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict[]: an array of objects representing market data
ru  r   rt  	baseAsset
quoteAssetfilters
filterTyper0  r/  NOTIONALr1   /basequotesettleNbaseIdquoteIdsettleIdr[  r=   Tr>   Fr?   r@   rA   rQ  r~  r   contractr+  stepSizetickSize)amountpricerM  minQtymaxQtyminPricemaxPriceminNotional)r  r  r  r   )r,  r   r   contractSizeexpiryexpiryDatetimestrike
optionTyperS  rT  createdrP  )publicGetOpenapiV1ExchangeInforc  r^  r_  r`  ra  index_byrv  appendsafe_string_lowerr<  set_markets)r=  rh  ri  marketsrj  rk  r   r1   r  r  r  r  rT  amountLimitspriceLimits
costLimitss                   r?  fetch_marketscoinsph.fetch_markets  s    66v>x ..9b9q#g,'AZF!!&(3B%%fk:F&&v|<G**62D++G4E]]4>>&)R#H,WF??6:rBL//&."EKR@JMM 2b2$*u,2 2 	2
 $2 &2 72 D2 2 2 %2 2 %2 %2 $00BiO2  E!2" $#2$   $"&""//0@0@z0Z[!..t/?/?Z/XY  $#!
  $001A1A,PX1YZ#001A1A,PX1YZ
  $001A1A+z1Z[#001A1A+z1Z[
  $001A1A*m1\]#$  c2 2 (| 	 rA  Nru  c                 *   U R                  5         0 nUbK  / n[        S[        U5      5       H,  nU R                  X   5      nUS   nUR	                  U5        M.     XCS'   SnU R                  U R                  S0 5      n	U R                  U	SU5      n
SnU
S:X  a!  U R                  U R                  X25      5      nOGU
S	:X  a!  U R                  U R                  X25      5      nO U R                  U R                  X25      5      nU R                  XU5      $ )
aq  
fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market

https://coins-docs.github.io/rest-api/#24hr-ticker-price-change-statistics
https://coins-docs.github.io/rest-api/#symbol-price-ticker
https://coins-docs.github.io/rest-api/#symbol-order-book-ticker

: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   r1   ru  r  r   r  "publicGetOpenapiQuoteV1TickerPrice'publicGetOpenapiQuoteV1TickerBookTicker)load_marketsr^  r_  r   r  	safe_dictr   r`  r  extendr  r  parse_tickers)r=  ru  rh  requestidsrk  r   r1   defaultMethodr   r  tickerss               r?  fetch_tickerscoinsph.fetch_tickersQ  s    	C1c'l+WZ0D\

2 , "%I;..~rB!!'8]C99==dkk'>Z[G@@BB4;;wC_`G<<T[[=YZG!!'F;;rA  rt  c                    U R                  5         U R                  U5      nSUS   0nSnU R                  U R                  S0 5      nU R	                  USU5      nSnUS:X  a!  U R                  U R                  XB5      5      nOGUS:X  a!  U R                  U R                  XB5      5      nO U R                  U R                  XB5      5      nU R                  X5      $ )	a0  
fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market

https://coins-docs.github.io/rest-api/#24hr-ticker-price-change-statistics
https://coins-docs.github.io/rest-api/#symbol-price-ticker
https://coins-docs.github.io/rest-api/#symbol-order-book-ticker

: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>`
rt  r1   r  r   r  Nr  r  )
r  r   r  r   r`  r  r  r  r  parse_ticker)	r=  rt  rh  r   r  r  r   r  tickers	            r?  fetch_tickercoinsph.fetch_tickerr  s     	V$fTl
 <..}bA!!'8]C99<<T[[=YZF@@AA$++gB^_F;;DKK<XYF  00rA  r  r   c           	      H   U R                  US5      nU R                  X25      nU R                  US5      nU R                  US5      nU R                  US5      nU R                  US5      nU R                  US5      n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 R                  US5      nU R                  US5      n[        R                  " US5      nU R                  0 SUS   _SU_SU R                  U5      _SU_SU_SU_SU R                  USS5      _SU_SU_SU_SU_SU_SU_SU_S U_S!S _S"U	_U
US#.EU5      $ )$Nrt  	closeTimebidPriceaskPricebidQtyaskQtyvolumequoteVolume	openPrice	highPricelowPriceprevClosePriceweightedAvgPricepriceChangepriceChangePercent100	timestampdatetimeopenhighlowclose	lastPricer  bid	bidVolumeask	askVolumevwappreviousClosechanger   average
baseVolume)r  rP  )r`  safe_marketr  r+   
string_mulsafe_tickeriso8601safe_string_2)r=  r  r   marketIdr  r  r  r  r  r  r  r  r  r  	prevCloser  changeValue
changePcnts                     r?  r  coinsph.parse_ticker  sG   N ##FH5!!(3%%fk:	vz2vz2$$VX6	$$VX6	%%fh7
&&v}=44vz2$$V-=>	(:;&&v}=%%f.BC
''
E:
 !
fX&!
!
 Y/!
 D	!

 D!
 3!
 T''WE!
 3!
 !
 3!
 !
 D!
 Y!
 k!
 *!
  t!!
" *#!
$ ''!
( ) 	rA  r  c                     U R                  5         U R                  U5      nSUS   0nUb  X%S'   U R                  U R                  XS5      5      nU R	                  Xa5      nU R                  US5      US'   U$ )a  
fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data

https://coins-docs.github.io/rest-api/#order-book

: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(default 100, max 200)
: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
rt  r1   r  lastUpdateIdnonce)r  r   publicGetOpenapiQuoteV1Depthr  parse_order_bookr  )r=  rt  r  rh  r   r  ri  	orderbooks           r?  fetch_order_bookcoinsph.fetch_order_book  s     	V$fTl
 $G44T[[5QR ))(;	!..xH	'rA  r   	timeframesincec                 N   U R                  5         U R                  U5      nU R                  U R                  U5      nU R	                  US5      nUS   US.n	Uc  SnUbV  X9S'   Ub  XS'   OrU R                  U5      S-  n
U R                  X:US-
  -  5      nU R                  5       n[        X5      U	S'   O(Ub%  XS'   U R                  U5      S-  n
XUS-
  -  -
  U	S'   XIS'   U R                  US5      nU R                  U R                  X5      5      nU R                  XX#U5      $ )	a  
fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market

https://coins-docs.github.io/rest-api/#klinecandlestick-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(default 500, max 1000)
:param dict [params]: extra parameters specific to the exchange API endpoint
:param int [params.until]: timestamp in ms of the latest candle to fetch
:returns int[][]: A list of candles ordered, open, high, low, close, volume
untilr1   )rt  intervalr#  	startTimeendTimer   r  )r  r   r`  r   r  parse_timeframesummillisecondsrN  omitpublicGetOpenapiQuoteV1Klinesr  parse_ohlcvs)r=  rt  r  r  r  rh  r   r  r  r  durationendTimeByLimitnowri  s                 r?  fetch_ohlcvcoinsph.fetch_ohlcv  sI    	V$##DOOY?!!&'2Tl 
 =E#(K  %*	"//	:TA!%%UQY1G!H'')%(%=	"!&I++I6=H#(	,B#CGK  67+55dkk'6RS$   9UKKrA  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   )r  re  )r=  ohlcvr   s      r?  parse_ohlcvcoinsph.parse_ohlcv>  sl    eQ'UA&UA&UA&UA&UA&
 	
rA  c                     U R                  5         U R                  U5      nSUS   0nUb  SUS'   OUb  X6S'   U R                  U R                  Xd5      5      nU R	                  XuX#5      $ )a  
get the list of most recent trades for a particular symbol

https://coins-docs.github.io/rest-api/#recent-trades-list

:param str symbol: unified symbol of the market to fetch trades for
:param int [since]: timestamp in ms of the earliest trade to fetch
:param int [limit]: the maximum amount of trades to fetch(default 500, max 1000)
: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>`
rt  r1   r#  r  )r  r   publicGetOpenapiQuoteV1Tradesr  parse_tradesr=  rt  r  r  rh  r   r  ri  s           r?  fetch_tradescoinsph.fetch_tradesH  s|     	V$fTl
 #GG #( 55dkk'6RS   5@@rA  c                    Uc  [        U R                  S-   5      eU R                  5         U R                  U5      nSUS   0nUb
  X&S'   SUS'   OUb  X6S'   U R	                  U R                  Xd5      5      nU R                  XuX#5      $ )a  
fetch all trades made by the user

https://coins-docs.github.io/rest-api/#account-trade-list-user_data

: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(default 500, max 1000)
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns Trade[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
z+ fetchMyTrades() requires a symbol argumentrt  r1   r  r#  r  )r   r1   r  r   privateGetOpenapiV1MyTradesr  r  r  s           r?  fetch_my_tradescoinsph.fetch_my_tradeso  s     >#DGG.[$[\\V$fTl
 #(K #GG$G33DKK4PQ  5@@rA  r1   c           	          Uc  [        U R                  S-   5      eSU0nU R                  X#X@R                  Xe5      5      $ )a  
fetch all the trades made from a single order

https://coins-docs.github.io/rest-api/#account-trade-list-user_data

: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>`
z. fetchOrderTrades() requires a symbol argumentorderId)r   r1   r  r  )r=  r1   rt  r  r  rh  r  s          r?  fetch_order_tradescoinsph.fetch_order_trades  sH     >#DGG.^$^__r
 ##F5++g:VWWrA  tradec                    U R                  US5      nU R                  X25      nUS   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	S n
S nU R                  US5      nUb&  U R                  US	5      nUU R	                  U5      S
.nU R                  USSS 5      nS nUb	  USL a  SOSnU R                  USS 5      nS nUb
  US:X  a  SOSnS nUb  U R                  US5      nU R                  UUUU R                  U5      UU
UUUU	UUUS.U5      $ )Nrt  r1   tradeIdr  timer  qty
commissioncommissionAsset)r   currencyisBuyerisBuyerMakerTbuysellisMakertruer   r   quoteQty)r1   orderr  r  rt  r[  sidetakerOrMakerr  r  r   rR  rP  )r`  r  r  r  ra  safe_bool_2
safe_trader  )r=  r  r   r  rt  r1   r  r  priceStringamountStringr[  rR  feeCostfeeCurrencyIdr%  r-  r)  r.  
costStrings                      r?  parse_tradecoinsph.parse_trade  s   L ##E84!!(3!tY7""5)4%%eV4	&&ug6''u5""5,7 ,,U4EFM 33MBC ""5)^TJ$_56D$$UIt<'.&'87wL
))%<J"Y/( " 
  	rA  c                 f    U R                  5         U R                  U5      nU R                  U5      $ )a;  
query for balance and get the amount of funds available for trading or funds locked in orders

https://coins-docs.github.io/rest-api/#accept-the-quote

:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
)r  privateGetOpenapiV1Accountparse_balancer  s      r?  fetch_balancecoinsph.fetch_balance  s3     	226:, !!(++rA  c                 X   U R                  US/ 5      nUS S S.n[        S[        U5      5       Hh  nX$   nU R                  US5      nU R	                  U5      nU R                  5       nU R                  US5      US'   U R                  US5      US'   XU'   Mj     U R                  U5      $ )Nbalances)rP  r  r  r   assetfreelockedused)rc  r^  r_  r`  ra  accountsafe_balance)	r=  ri  r>  rj  rk  balance
currencyIdrZ  rC  s	            r?  r:  coinsph.parse_balance  s    >>(J;

 q#h-(AkG))'7;J**:6DllnG"..w?GFO"..wAGFO"4L )   ((rA  r[  r-  r  r  c                    U R                  5         U R                  U5      nU R                  USS5      nU R                  US5      nU R	                  USU5      n	U R                  U	5      n	U R                  US5      nU R                  U5      n
US   U	U
S.nU R                  U R                  S0 5      nU R                  US0 5      nU	S:X  d  U	S	:X  d  U	S
:X  d  U	S:X  az  Uc  [        U R                  S-   U-   S-   5      eU R	                  USS5      nU R                  X5      US'   U R                  X5      US'   U	S:w  a  U R	                  USS5      US'   GOU	S:X  d  U	S:X  d  U	S:X  Ga  U R	                  USS5      nU
S:X  a  U R                  X5      US'   OU
S:X  a  SnSnU R                  USSS5      u  pU R                  USS5      nU R                  US5      nUb  U R                  UU5      nOU(       ag  Uc  [!        U R                  S-   5      eU R#                  U5      nU R#                  U5      n[$        R&                  " UU5      nU R                  UU5      nOU R                  X5      nXS'   U	S:X  d  U	S	:X  d  U	S:X  d  U	S
:X  aC  U R)                  US S!5      nUc  [!        U R                  S"-   5      eU R                  UU5      US!'   XS'   U R                  USS!S SS5      nSnU(       a!  U R+                  U R-                  X5      5      nO U R/                  U R-                  X5      5      nU R1                  UU5      $ )#a  
create a trade order

https://coins-docs.github.io/rest-api/#new-order--trade

:param str symbol: unified symbol of the market to create an order in
:param str type: 'market', 'limit', 'stop_loss', 'take_profit', 'stop_loss_limit', 'take_profit_limit' or 'limit_maker'
: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 float [params.cost]: the quote quantity that can be used alternative for the amount for market buy orders
:param bool [params.test]: set to True to test an order, no order will be created but the request will be validated
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
testFr[  r1   )rt  r[  r-  rO   r  LIMITSTOP_LOSS_LIMITTAKE_PROFIT_LIMITLIMIT_MAKERNz/ createOrder() requires a price argument for a z orderr  r   r  quantityr  r   MARKET	STOP_LOSSTAKE_PROFITr   SELLBUYTr  r   quoteOrderQtyz createOrder() requires the price argument for market buy orders to calculate the total cost to spend(amount * price), alternatively set the createMarketBuyOrderRequiresPrice option or param to False and pass the cost to spend in the amount argumentr  	stopPricez createOrder() requires a triggerPrice or stopPrice param for stop_loss, take_profit, stop_loss_limit, and take_profit_limit orders)r  r   rb  r  r`  encode_order_typeencode_order_siderv  r   r   r1   price_to_precisionamount_to_precisionhandle_option_and_paramssafe_number_2cost_to_precisionr"   number_to_stringr+   r  r  privatePostOpenapiV1OrderTestr  privatePostOpenapiV1Orderparse_order)r=  rt  r[  r-  r  r  rh  r   	testOrder	orderType	orderSider  r   r  quoteAmountr  r   r2  r1  costRequestr  ri  s                         r?  create_ordercoinsph.create_order$  s   " 	V$NN6659	66*$$VVT:	**95	66***40	Tl

 //$,,rB??74FK90A#AYReEeir  wD  jD}'2c(cfj(jmu(uvv#//0@'6R#66vEGG"&":":6"JGJM))-)9)9'=RW)X&("i;&>)}B\#//0@(FSF"&*&>&>v&N
#e#"481<@<Y<YZ`bo  rU  W[  =\91))&&/J662#"&"8"8"FK6}*477  6q  ,q  r  r'+'<'<V'D&*&;&;E&B&-&8&8{&S&*&<&<V[&Q"&"8"8"HK+6(#y4E'EVcIcgp  uH  hH--fnkRL#"477  .s  $s  t  t#'#:#:6<#PGK &6"#67KUde99$++g:VWH55dkk'6RSH8 &11rA  c                     U R                  5         0 nU R                  USS5      nUb  XTS'   OXS'   U R                  USS/5      nU R                  U R	                  XC5      5      nU R                  U5      $ )a`  
fetches information on an order made by the user

https://coins-docs.github.io/rest-api/#query-order-user_data

:param int|str id: order id
:param str symbol: not used by coinsph fetchOrder()
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
origClientOrderIdclientOrderIdr  )r  safe_value_2r  privateGetOpenapiV1Orderr  r`  r=  r1   rt  rh  r  rj  ri  s          r?  fetch_ordercoinsph.fetch_order  s     	))&2EW$+8'(!#I6O5H#IJ00W1MN))rA  c                     U R                  5         Sn0 nUb  U R                  U5      nUS   US'   U R                  U R                  Xd5      5      nU R	                  XuX#5      $ )a  
fetch all unfilled currently open orders

https://coins-docs.github.io/rest-api/#current-open-orders-user_data

: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
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
Nr1   rt  )r  r   privateGetOpenapiV1OpenOrdersr  parse_ordersr  s           r?  fetch_open_orderscoinsph.fetch_open_orders  sh     	[[(F &tGH55dkk'6RS  5@@rA  c                    Uc  [        U R                  S-   5      eU R                  5         U R                  U5      nSUS   0nUb
  X&S'   SUS'   OUb  X6S'   U R	                  U R                  Xd5      5      nU R                  XuX#5      $ )a  
fetches information on multiple closed orders made by the user

https://coins-docs.github.io/rest-api/#history-orders-user_data

: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(default 500, max 1000)
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
z/ fetchClosedOrders() requires a symbol argumentrt  r1   r  r#  r  )r   r1   r  r    privateGetOpenapiV1HistoryOrdersr  rr  r  s           r?  fetch_closed_orderscoinsph.fetch_closed_orders  s     >#DGG._$_``V$fTl
 #(K #GG$G88W9UV  5@@rA  c                     U R                  5         0 nU R                  USS5      nUb  XTS'   OXS'   U R                  USS/5      nU R                  U R	                  XC5      5      nU R                  U5      $ )a?  
cancels an open order

https://coins-docs.github.io/rest-api/#cancel-order-trade

:param str id: order id
:param str symbol: not used by coinsph cancelOrder()
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
ri  rj  r  )r  rk  r  privateDeleteOpenapiV1Orderr  r`  rm  s          r?  cancel_ordercoinsph.cancel_order  s     	))&2EW$+8'(!#I6O5H#IJ33DKK4PQ))rA  c                     Uc  [        U R                  S-   5      eU R                  5         Sn0 nUb  U R                  U5      nUS   US'   U R	                  U R                  XB5      5      nU R                  XS5      $ )aB  
cancel open orders of market

https://coins-docs.github.io/rest-api/#cancel-all-open-orders-on-a-symbol-trade

:param str symbol: unified market symbol
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
Nz- cancelAllOrders() requires a symbol argumentr1   rt  )r   r1   r  r    privateDeleteOpenapiV1OpenOrdersr  rr  )r=  rt  rh  r   r  ri  s         r?  cancel_all_orderscoinsph.cancel_all_orders  s     >#DGG.]$]^^[[(F &tGH88W9UV  22rA  r,  c           
      l   U R                  US5      nU R                  US5      nU R                  XB5      nU R                  USS5      nU R                  USS 5      nU R                  US5      n[        R
                  " US5      (       a  S nU R                  0 SU_S	U R                  US	5      _S
U_SU R                  U5      _SS _SU R                  U R                  US5      5      _SUS   _SU R                  U R                  US5      5      _SU R                  U R                  US5      5      _SU R                  U R                  US5      5      _SU R                  US5      _SU_SS _SU R                  US5      _SU R                  US5      _SU R                  US5      _SS _S S UUS.EU5      $ )Nr  rt  r   transactTimefillsrU  r   r1   rj  r  r  lastTradeTimestampr~  r[  r  r-  r  r  r  r  origQtyr   cummulativeQuoteQtyfilledexecutedQty	remaining)rR  r   tradesrP  )r`  r  safe_integer_2rv  r+   	string_eq
safe_orderr  parse_order_statusparse_order_typeparse_order_time_in_forceparse_order_side)r=  r,  r   r1   r  r  r  r  s           r?  r`  coinsph.parse_order   s0   J eY/##E84!!(3''v~F	6''{;\3//L  
" 
T--e_E 
  
 Y/	 

 !$ 
 d--d.>.>uh.OP 
 fX& 
 D))$*:*:5&*IJ 
 499$:J:J5R_:`a 
 D))$*:*:5&*IJ 
 T%%eW5 
 L 
 t 
 d&&ui8 
 D$$U,AB 
  d&&um<! 
" # 
$ + 
, - 	rA  c                 0    SSS.nU R                  X!U5      $ )Nr'  r(  )rS  rR  r`  r=  r~  statusess      r?  r  coinsph.parse_order_sidee  $    
 &99rA  c                 0    SSS.nU R                  X!U5      $ )NrS  rR  )r'  r(  r  r  s      r?  rW  coinsph.encode_order_sidel  r  rA  c                 :    SSSSSSSS.nU R                  X!U5      $ )Nr   r  )rO  rJ  rM  rP  rK  rQ  rL  r  r  s      r?  r  coinsph.parse_order_types  s3    "!&#!(
 &99rA  c                 :    SSSSSSSS.nU R                  X!U5      $ )	NrO  rJ  rM  rP  rK  rQ  rL  )r   r  limit_maker	stop_lossstop_loss_limittake_profittake_profit_limitr  r  s      r?  rV  coinsph.encode_order_type  s3    ($0(!4
 &99rA  r~  c                 8    SSSSSSS.nU R                  X!U5      $ )Nr  closedcanceledrejected)NEWFILLEDCANCELEDPARTIALLY_FILLEDPARTIALLY_CANCELEDREJECTEDr  r  s      r?  r  coinsph.parse_order_status  s0    " &","
 &99rA  c                 2    SSSS.nU R                  X!U5      $ )Nr   r  r  )r   r  r  r  r  s      r?  r  !coinsph.parse_order_time_in_force  s'    

 &99rA  c                     U R                  5         U R                  U5      nSUS   0nU R                  U R                  XB5      5      nU R	                  US0 5      nU R                  Xc5      $ )a%  
fetch the trading fees for a market

https://coins-docs.github.io/rest-api/#trade-fee-user_data

: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>`
rt  r1   r   )r  r    privateGetOpenapiV1AssetTradeFeer  r  parse_trading_fee)r=  rt  rh  r   r  ri  
tradingFees          r?  fetch_trading_feecoinsph.fetch_trading_fee  sn     	V$fTl
 88W9UV ^^Ha4
%%j99rA  c                     U R                  5         U R                  U5      n0 n[        S[        U5      5       H  nU R	                  X$   5      nUS   nXSU'   M!     U$ )a-  
fetch the trading fees for multiple markets

https://coins-docs.github.io/rest-api/#trade-fee-user_data

:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: a dictionary of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>` indexed by market symbols
r   rt  )r  r  r^  r_  r  )r=  rh  ri  rj  rk  rR  rt  s          r?  fetch_trading_feescoinsph.fetch_trading_fees  se     	88@ q#h-(A((5C]F 6N ) rA  rR  c                     U R                  US5      nU R                  X25      nUS   nUUU R                  US5      U R                  US5      S S S.$ )Nrt  makerCommissiontakerCommission)rP  rt  r   r   r   r   )r`  r  re  )r=  rR  r   r  rt  s        r?  r  coinsph.parse_trading_fee  sh     ##C2!!(3!%%c+<=%%c+<=
 	
rA  rZ  addresstagc                 "   U R                  U R                  S5      nU R                  USS5      nU(       a  [        U R                  S-   5      eU R                  US5      nU R                  X5      n	U	c  [        U R                  S-   5      eU R                  5         U R                  U5      n
U
S   U R                  U5      U	US.nUb  XKS	'   U R                  US5      nU R                  U R                  X5      5      nU R                  X5      $ )
a  
make a withdrawal to coins_ph account

https://coins-docs.github.io/rest-api/#withdrawuser_data

:param str code: unified currency code
:param float amount: the amount to withdraw
:param str address: not used by coinsph withdraw()
:param str tag:
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict: a `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
r   r   Tz withdraw() makes a withdrawals only to coins_ph account, add .options['withdraw']['warning'] = False to make a withdrawal to your coins_ph accountrF  z% withdraw() require network parameterr1   )rC  r  rF  r  withdrawOrderId)rv  r   rb  r!   r1   r`  network_code_to_idr   r  r$  r]  r  'privatePostOpenapiWalletV1WithdrawApplyr  parse_transaction)r=  rZ  r  r  r  rh  r   r   rp  	networkIdr$  r  ri  s                r?  r   coinsph.withdraw  s    //$,,
;..)T:   ,A  "A  B  B&&vy9++K>	TWW'NNOO==&TN++F3 	
 ?),%&69-??G@\]%%h99rA  c                     U R                  5         Sn0 nUb  U R                  U5      nUS   US'   Ub  X&S'   Ub  X6S'   U R                  U R                  Xd5      5      nU R	                  XuX#5      $ )a  
fetch all deposits made to an account

https://coins-docs.github.io/rest-api/#deposit-history-user_data

:param str code: unified currency code
:param int [since]: the earliest time in ms to fetch deposits for
:param int [limit]: the maximum number of deposits structures to retrieve
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict[]: a list of `transaction structures <https://docs.ccxt.com/#/?id=transaction-structure>`
Nr1   rC  r  r  )r  r$  'privateGetOpenapiWalletV1DepositHistoryr  parse_transactionsr=  rZ  r  r  rh  r$  r  ri  s           r?  fetch_depositscoinsph.fetch_deposits  s     	}}T*H&tnGFO#(K $G??G@\]: &&x5HHrA  c                     U R                  5         Sn0 nUb  U R                  U5      nUS   US'   Ub  X&S'   Ub  X6S'   U R                  U R                  Xd5      5      nU R	                  XuX#5      $ )a  
fetch all withdrawals made from an account

https://coins-docs.github.io/rest-api/#withdraw-history-user_data

:param str code: unified currency code
:param int [since]: the earliest time in ms to fetch withdrawals for
:param int [limit]: the maximum number of withdrawals structures to retrieve
:param dict [params]: extra parameters specific to the exchange API endpoint
:returns dict[]: a list of `transaction structures <https://docs.ccxt.com/#/?id=transaction-structure>`
Nr1   rC  r  r  )r  r$  (privateGetOpenapiWalletV1WithdrawHistoryr  r  r  s           r?  fetch_withdrawalscoinsph.fetch_withdrawalsG  s     	}}T*H&tnGFO#(K $G@@WA]^F &&x5HHrA  transactionr$  c                    U R                  US5      nU R                  US5      nU R                  US5      nUb  [        U5      S:  a  S nU R                  US5      nU R                  US5      nU R                  Xr5      nS n	U R                  USS5      n	S n
S nU R                  US	5      nU R                  US
5      nUb  SnOUb  SnU R	                  U R                  US5      5      nU R                  US5      nU R                  US5      nS nUb  UUS.nU R                  US5      nUS:H  n0 SU_SU_SU_SU	_SU R                  U	5      _SU_SU_SU_SS _SU_SU_SS _SU_SU_SU_SU_SU
_US US.E$ ) Nr1   r  
addressTagr   txIdrC  
insertTime	applyTimer  depositOrderId
withdrawalrW   r~  r  transactionFee)r$  r   rF  InternalrP  txidr  r  	addressToaddressFromr  tagTotagFromr[  r$  r  )internalcommentrR  )r`  r_  ra  r  parse_transaction_statusre  r  )r=  r  r$  r1   r  r  r  rF  rZ  r  r  r[  r  r  r~  r  r3  rR  rF  r  s                       r?  r  coinsph.parse_transaction  sA   J k40"";	:{L9?3x!|V4%%k6:
&&z<	''\;O	**;8IJ))+7GH&D'D..t/?/?X/VW!!+x8"";0@A#W5C"";	:j(
K
"
 D
 	

 Y/
 w
 w
 
 4
 3
 S
 t
 D
 f
 
  f!
" w#
$ !)
 	
rA  c                 4    SSSSS.nU R                  X!U5      $ )Npendingr}  failed)r   123r  r  s      r?  r   coinsph.parse_transaction_status  s*    	
 &99rA  c                 V   U R                  US5      nU R                  X15      nUc  [        U R                  S-   5      eU R	                  5         U R                  U5      nUS   US.nU R                  US5      nU R                  U R                  Xb5      5      nU R                  Xu5      $ )a  
fetch the deposit address for a currency associated with self account

https://coins-docs.github.io/rest-api/#deposit-address-user_data

:param str code: unified currency code
:param dict [params]: extra parameters specific to the exchange API endpoint
:param str [params.network]: network for fetch deposit address
:returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
rF  z0 fetchDepositAddress() require network parameterr1   )rC  rF  )
r`  r  r   r1   r  r$  r  'privateGetOpenapiWalletV1DepositAddressr  parse_deposit_address)r=  rZ  rh  rp  r  r$  r  ri  s           r?  fetch_deposit_addresscoinsph.fetch_deposit_address  s     &&vy9++K>	TWW'YYZZ==&TN 
 69-??G@\] ))(==rA  c                     U R                  US5      nU R                  X25      nUUS U R                  US5      U R                  US5      S.$ )NrC  r  r  )rP  r$  rF  r  r  )r`  ra  )r=  depositAddressr$  rF  parsedCurrencys        r?  r  coinsph.parse_deposit_address  sY     %%nf=
00F"&''	B##NLA
 	
rA  c                 h   Sn[        UR                  5       5      n[        S[        U5      5       HU  nX4   n[	        X   [         5      (       d  M   US:w  a  US-  nX   nU R                  X5      nU R                  Xe5      nX'-  nMW     U R                  U5      n[        U5      S:w  a  US-   U-   $ U$ )N r   &)listkeysr^  r_  
isinstancer  parse_array_param	urlencode)	r=  queryencodedArrayParamsr  rk  key
innerArrayencodedArrayParamencodedQuerys	            r?  url_encode_querycoinsph.url_encode_query  s    EJJL!q#d)$A'C%*d++6&#-&"Z
		%-$($:$::$K!"7" % ~~e,|!#%(:::%%rA  c                     U R                  U5      nUR                  SS5      nUR                  SS5      nUS-   U-   nU$ )N[z%5B]z%5D=)jsonreplace)r=  arrayr  stringifiedArrayurlEncodedParams        r?  r  coinsph.parse_array_param'  sL    99U++33C?+33C?)&66rA  r   GETc                    U R                   S   U   nU R                  X@R                  U5      5      nU R                  X5      n	US-   U	-   nUS:X  a  U R	                  5         U R                  5       US'   U R                  US5      n
U
c#  U R                  U R                  S5      nUb  XS'   U R                  U5      nU R                  U R                  U5      U R                  U R                  5      [        R                  5      nUS-   U-   S-   U-   nSU R                  0nO(U R                  U5      n[        U5      S	:w  a  USU-   -  nXsXeS
.$ )Nr   r  r   r  
recvWindow?z&signature=zX-COINS-APIKEYr   )r  r  bodyheaders)r   r  extract_paramsimplode_paramsr\  r  r  r   r  hmacencodesecrethashlibsha256apiKeyr_  )r=  rw  r   r  rh  r  r  r  r  endpointr  defaultRecvWindow	signatures                r?  signcoinsph.sign.  sM   iis#		&"5"5d";<&&t4Ci(")++-!%!2!2!4E+**5,?J!$($5$5dllL$Q!$0*;,'))%0E		$++e"4dkk$++6NPWP^P^_I)e#m3i?C $++G ))%0E5zQsU{"dOOrA  reasonr  r  r  r  c
                    Uc  g U R                  USS 5      n
U
bg  U
S:w  aa  U
S:w  a[  U R                  S-   U-   nU R                  U R                  S   Xk5        U R	                  U R                  S   X5        [        U5      eg )NrZ  200r    r8  r7  )r`  r1   throw_broadly_matched_exceptionr-  throw_exactly_matched_exceptionr   )r=  rZ  r!  r  r  r  r  ri  requestHeadersrequestBodyresponseCodefeedbacks               r?  handle_errorscoinsph.handle_errorsG  s    ''&$?$<5+@|WZGZww}t+H001I4Z001I<b))rA   )N)M__name__
__module____qualname____firstlineno__r   r;  r   rq  rz  r  r
   r  r   r   r  r   r   r  strr   r  dictr  r   r  r  r  r  r   r  r   r  r  r6  r   r;  r:  r   r   floatr   rf  rn  r   rs  rw  r{  r  r`  r  rW  r  rV  r  r  r   r  r   r  r  r   r   r  r  r   r  r  r	   r  r  r  r  r  intr+  __static_attributes____classcell__)r>  s   @r?  r-   r-      s   u# un ') xZ xt MO 2, #% 
$ !# 9s 9 $& F$v, FP 04B <W <7 <B 02 13 1f 1:L4 L L6 L\ :>b "s "3 "Y "H 9=4^bkm ;L# ;L# ;LS ;LX[ ;Lrvw{r| ;Lz
 
4 
 6:UW %A3 %As %A# %A\`af\g %AN -1tRV_a Ac A AC A8 9=4^bkm XS X# XS XX[ X(P Pv P Pd $&  ,(  ,D) )" gksu h23 h2i h2y h2RW h2`c h2T 26b *c *3 *, /3TXac A A3 Ac Ahlmrhs A* 154VZce A# AS APS Ajnotju A8 37r *s *C *, /32 3 3*c cv c cJ::
:
:	: 	:: 57 : :;N :8 )+ { @
T 
6 
EX 
( KOWY !:S !:% !:# !:C !:^i !:F *.Dt\^ 4I3 4Ic 4I 4Icghsct 4Il -1tRV_a :Ic :I :IC :Ifjkvfw :IxU
T U
X U
Q\ U
n:s : 79 ># >^ >@
h 
R` 
$ &( &$ &eBSW P2	# 	s 	 	c 	TX 	`c 	 	rA  r-   )2ccxt.base.exchanger   ccxt.abstract.coinsphr   r  ccxt.base.typesr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   typingr   ccxt.base.errorsr   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   ccxt.base.decimal_to_precisionr*   ccxt.base.preciser+   r-   r-  rA  r?  <module>r?     s}    ( -  _  _  _  _  _  _  * 0 - . ' & . + ) * 5 - ) . 1 ( 4 %q h q rA  