ccxt 4.2.76__py2.py3-none-any.whl → 4.4.48__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (546) hide show
  1. ccxt/__init__.py +36 -14
  2. ccxt/abstract/alpaca.py +4 -0
  3. ccxt/abstract/bigone.py +1 -1
  4. ccxt/abstract/binance.py +112 -48
  5. ccxt/abstract/binancecoinm.py +112 -48
  6. ccxt/abstract/binanceus.py +147 -83
  7. ccxt/abstract/binanceusdm.py +112 -48
  8. ccxt/abstract/bingx.py +133 -78
  9. ccxt/abstract/bitbank.py +5 -0
  10. ccxt/abstract/bitfinex.py +136 -65
  11. ccxt/abstract/bitfinex1.py +69 -0
  12. ccxt/abstract/bitflyer.py +1 -0
  13. ccxt/abstract/bitget.py +8 -1
  14. ccxt/abstract/bitmart.py +13 -1
  15. ccxt/abstract/bitopro.py +1 -0
  16. ccxt/abstract/bitpanda.py +0 -12
  17. ccxt/abstract/bitrue.py +3 -3
  18. ccxt/abstract/bitstamp.py +26 -3
  19. ccxt/abstract/blofin.py +24 -0
  20. ccxt/abstract/btcbox.py +1 -0
  21. ccxt/abstract/bybit.py +29 -14
  22. ccxt/abstract/cex.py +28 -29
  23. ccxt/abstract/coinbase.py +6 -0
  24. ccxt/abstract/coinbaseadvanced.py +94 -0
  25. ccxt/abstract/{coinbasepro.py → coinbaseexchange.py} +1 -0
  26. ccxt/abstract/coinbaseinternational.py +1 -1
  27. ccxt/abstract/coincatch.py +94 -0
  28. ccxt/abstract/coinex.py +233 -123
  29. ccxt/abstract/coinmetro.py +1 -0
  30. ccxt/abstract/cryptocom.py +14 -0
  31. ccxt/abstract/defx.py +69 -0
  32. ccxt/abstract/deribit.py +1 -0
  33. ccxt/abstract/digifinex.py +1 -0
  34. ccxt/abstract/ellipx.py +25 -0
  35. ccxt/abstract/gate.py +20 -0
  36. ccxt/abstract/gateio.py +20 -0
  37. ccxt/abstract/gemini.py +1 -0
  38. ccxt/abstract/hashkey.py +67 -0
  39. ccxt/abstract/hyperliquid.py +1 -1
  40. ccxt/abstract/independentreserve.py +6 -0
  41. ccxt/abstract/kraken.py +4 -3
  42. ccxt/abstract/krakenfutures.py +4 -0
  43. ccxt/abstract/kucoin.py +25 -0
  44. ccxt/abstract/kucoinfutures.py +35 -0
  45. ccxt/abstract/luno.py +2 -0
  46. ccxt/abstract/mexc.py +4 -0
  47. ccxt/abstract/myokx.py +340 -0
  48. ccxt/abstract/oceanex.py +5 -0
  49. ccxt/abstract/okx.py +30 -0
  50. ccxt/abstract/onetrading.py +0 -12
  51. ccxt/abstract/oxfun.py +34 -0
  52. ccxt/abstract/paradex.py +40 -0
  53. ccxt/abstract/phemex.py +1 -0
  54. ccxt/abstract/upbit.py +4 -0
  55. ccxt/abstract/vertex.py +19 -0
  56. ccxt/abstract/whitebit.py +31 -1
  57. ccxt/abstract/woo.py +6 -2
  58. ccxt/abstract/woofipro.py +119 -0
  59. ccxt/abstract/xt.py +153 -0
  60. ccxt/abstract/zonda.py +6 -0
  61. ccxt/ace.py +164 -60
  62. ccxt/alpaca.py +727 -63
  63. ccxt/ascendex.py +395 -249
  64. ccxt/async_support/__init__.py +36 -14
  65. ccxt/async_support/ace.py +164 -60
  66. ccxt/async_support/alpaca.py +727 -63
  67. ccxt/async_support/ascendex.py +396 -249
  68. ccxt/async_support/base/exchange.py +531 -155
  69. ccxt/async_support/base/ws/aiohttp_client.py +28 -5
  70. ccxt/async_support/base/ws/cache.py +3 -2
  71. ccxt/async_support/base/ws/client.py +26 -5
  72. ccxt/async_support/base/ws/fast_client.py +4 -3
  73. ccxt/async_support/base/ws/functions.py +1 -1
  74. ccxt/async_support/base/ws/future.py +40 -31
  75. ccxt/async_support/base/ws/order_book_side.py +3 -0
  76. ccxt/async_support/bequant.py +1 -1
  77. ccxt/async_support/bigone.py +329 -202
  78. ccxt/async_support/binance.py +3513 -1511
  79. ccxt/async_support/binancecoinm.py +2 -1
  80. ccxt/async_support/binanceus.py +12 -1
  81. ccxt/async_support/binanceusdm.py +3 -1
  82. ccxt/async_support/bingx.py +3105 -881
  83. ccxt/async_support/bit2c.py +119 -38
  84. ccxt/async_support/bitbank.py +215 -76
  85. ccxt/async_support/bitbns.py +124 -53
  86. ccxt/async_support/bitfinex.py +3236 -1078
  87. ccxt/async_support/bitfinex1.py +1711 -0
  88. ccxt/async_support/bitflyer.py +239 -50
  89. ccxt/async_support/bitget.py +1513 -563
  90. ccxt/async_support/bithumb.py +201 -67
  91. ccxt/async_support/bitmart.py +1320 -435
  92. ccxt/async_support/bitmex.py +308 -111
  93. ccxt/async_support/bitopro.py +256 -96
  94. ccxt/async_support/bitrue.py +365 -233
  95. ccxt/async_support/bitso.py +201 -89
  96. ccxt/async_support/bitstamp.py +438 -269
  97. ccxt/async_support/bitteam.py +179 -73
  98. ccxt/async_support/bitvavo.py +180 -70
  99. ccxt/async_support/bl3p.py +92 -25
  100. ccxt/async_support/blockchaincom.py +193 -79
  101. ccxt/async_support/blofin.py +403 -150
  102. ccxt/async_support/btcalpha.py +161 -55
  103. ccxt/async_support/btcbox.py +250 -34
  104. ccxt/async_support/btcmarkets.py +232 -85
  105. ccxt/async_support/btcturk.py +159 -60
  106. ccxt/async_support/bybit.py +2326 -1255
  107. ccxt/async_support/cex.py +1409 -1329
  108. ccxt/async_support/coinbase.py +1455 -288
  109. ccxt/async_support/coinbaseadvanced.py +17 -0
  110. ccxt/async_support/{coinbasepro.py → coinbaseexchange.py} +233 -99
  111. ccxt/async_support/coinbaseinternational.py +428 -88
  112. ccxt/async_support/coincatch.py +5152 -0
  113. ccxt/async_support/coincheck.py +121 -38
  114. ccxt/async_support/coinex.py +4020 -3339
  115. ccxt/async_support/coinlist.py +273 -116
  116. ccxt/async_support/coinmate.py +204 -97
  117. ccxt/async_support/coinmetro.py +203 -110
  118. ccxt/async_support/coinone.py +142 -68
  119. ccxt/async_support/coinsph.py +206 -89
  120. ccxt/async_support/coinspot.py +137 -62
  121. ccxt/async_support/cryptocom.py +515 -185
  122. ccxt/async_support/currencycom.py +203 -85
  123. ccxt/async_support/defx.py +2066 -0
  124. ccxt/async_support/delta.py +467 -158
  125. ccxt/async_support/deribit.py +558 -324
  126. ccxt/async_support/digifinex.py +340 -223
  127. ccxt/async_support/ellipx.py +1826 -0
  128. ccxt/async_support/exmo.py +259 -128
  129. ccxt/async_support/gate.py +1473 -464
  130. ccxt/async_support/gemini.py +206 -84
  131. ccxt/async_support/hashkey.py +4164 -0
  132. ccxt/async_support/hitbtc.py +334 -178
  133. ccxt/async_support/hollaex.py +134 -83
  134. ccxt/async_support/htx.py +1095 -563
  135. ccxt/async_support/huobijp.py +105 -56
  136. ccxt/async_support/hyperliquid.py +1634 -269
  137. ccxt/async_support/idex.py +148 -95
  138. ccxt/async_support/independentreserve.py +236 -31
  139. ccxt/async_support/indodax.py +165 -62
  140. ccxt/async_support/kraken.py +871 -354
  141. ccxt/async_support/krakenfutures.py +324 -100
  142. ccxt/async_support/kucoin.py +1050 -355
  143. ccxt/async_support/kucoinfutures.py +1004 -149
  144. ccxt/async_support/kuna.py +138 -106
  145. ccxt/async_support/latoken.py +135 -79
  146. ccxt/async_support/lbank.py +290 -113
  147. ccxt/async_support/luno.py +112 -62
  148. ccxt/async_support/lykke.py +104 -55
  149. ccxt/async_support/mercado.py +36 -29
  150. ccxt/async_support/mexc.py +995 -429
  151. ccxt/async_support/myokx.py +43 -0
  152. ccxt/async_support/ndax.py +163 -82
  153. ccxt/async_support/novadax.py +121 -75
  154. ccxt/async_support/oceanex.py +175 -59
  155. ccxt/async_support/okcoin.py +222 -163
  156. ccxt/async_support/okx.py +1777 -455
  157. ccxt/async_support/onetrading.py +132 -414
  158. ccxt/async_support/oxfun.py +2832 -0
  159. ccxt/async_support/p2b.py +79 -51
  160. ccxt/async_support/paradex.py +2017 -0
  161. ccxt/async_support/paymium.py +56 -32
  162. ccxt/async_support/phemex.py +572 -196
  163. ccxt/async_support/poloniex.py +218 -95
  164. ccxt/async_support/poloniexfutures.py +260 -92
  165. ccxt/async_support/probit.py +143 -110
  166. ccxt/async_support/timex.py +123 -70
  167. ccxt/async_support/tokocrypto.py +129 -93
  168. ccxt/async_support/tradeogre.py +39 -25
  169. ccxt/async_support/upbit.py +322 -113
  170. ccxt/async_support/vertex.py +2983 -0
  171. ccxt/async_support/wavesexchange.py +227 -173
  172. ccxt/async_support/wazirx.py +145 -65
  173. ccxt/async_support/whitebit.py +533 -138
  174. ccxt/async_support/woo.py +1155 -295
  175. ccxt/async_support/woofipro.py +2716 -0
  176. ccxt/async_support/xt.py +4628 -0
  177. ccxt/async_support/yobit.py +160 -92
  178. ccxt/async_support/zaif.py +80 -33
  179. ccxt/async_support/zonda.py +140 -69
  180. ccxt/base/errors.py +51 -20
  181. ccxt/base/exchange.py +1729 -482
  182. ccxt/base/precise.py +10 -0
  183. ccxt/base/types.py +223 -4
  184. ccxt/bequant.py +1 -1
  185. ccxt/bigone.py +329 -202
  186. ccxt/binance.py +3513 -1511
  187. ccxt/binancecoinm.py +2 -1
  188. ccxt/binanceus.py +12 -1
  189. ccxt/binanceusdm.py +3 -1
  190. ccxt/bingx.py +3105 -881
  191. ccxt/bit2c.py +119 -38
  192. ccxt/bitbank.py +215 -76
  193. ccxt/bitbns.py +124 -53
  194. ccxt/bitfinex.py +3235 -1078
  195. ccxt/bitfinex1.py +1710 -0
  196. ccxt/bitflyer.py +239 -50
  197. ccxt/bitget.py +1513 -563
  198. ccxt/bithumb.py +200 -67
  199. ccxt/bitmart.py +1320 -435
  200. ccxt/bitmex.py +308 -111
  201. ccxt/bitopro.py +256 -96
  202. ccxt/bitrue.py +365 -233
  203. ccxt/bitso.py +201 -89
  204. ccxt/bitstamp.py +438 -269
  205. ccxt/bitteam.py +179 -73
  206. ccxt/bitvavo.py +180 -70
  207. ccxt/bl3p.py +92 -25
  208. ccxt/blockchaincom.py +193 -79
  209. ccxt/blofin.py +403 -150
  210. ccxt/btcalpha.py +161 -55
  211. ccxt/btcbox.py +250 -34
  212. ccxt/btcmarkets.py +232 -85
  213. ccxt/btcturk.py +159 -60
  214. ccxt/bybit.py +2326 -1255
  215. ccxt/cex.py +1408 -1329
  216. ccxt/coinbase.py +1455 -288
  217. ccxt/coinbaseadvanced.py +17 -0
  218. ccxt/{coinbasepro.py → coinbaseexchange.py} +233 -99
  219. ccxt/coinbaseinternational.py +428 -88
  220. ccxt/coincatch.py +5152 -0
  221. ccxt/coincheck.py +121 -38
  222. ccxt/coinex.py +4020 -3339
  223. ccxt/coinlist.py +273 -116
  224. ccxt/coinmate.py +204 -97
  225. ccxt/coinmetro.py +203 -110
  226. ccxt/coinone.py +142 -68
  227. ccxt/coinsph.py +206 -89
  228. ccxt/coinspot.py +137 -62
  229. ccxt/cryptocom.py +515 -185
  230. ccxt/currencycom.py +203 -85
  231. ccxt/defx.py +2065 -0
  232. ccxt/delta.py +467 -158
  233. ccxt/deribit.py +558 -324
  234. ccxt/digifinex.py +340 -223
  235. ccxt/ellipx.py +1826 -0
  236. ccxt/exmo.py +259 -128
  237. ccxt/gate.py +1473 -464
  238. ccxt/gemini.py +206 -84
  239. ccxt/hashkey.py +4164 -0
  240. ccxt/hitbtc.py +334 -178
  241. ccxt/hollaex.py +134 -83
  242. ccxt/htx.py +1095 -563
  243. ccxt/huobijp.py +105 -56
  244. ccxt/hyperliquid.py +1633 -269
  245. ccxt/idex.py +148 -95
  246. ccxt/independentreserve.py +235 -31
  247. ccxt/indodax.py +165 -62
  248. ccxt/kraken.py +871 -354
  249. ccxt/krakenfutures.py +324 -100
  250. ccxt/kucoin.py +1050 -355
  251. ccxt/kucoinfutures.py +1004 -149
  252. ccxt/kuna.py +138 -106
  253. ccxt/latoken.py +135 -79
  254. ccxt/lbank.py +290 -113
  255. ccxt/luno.py +112 -62
  256. ccxt/lykke.py +104 -55
  257. ccxt/mercado.py +36 -29
  258. ccxt/mexc.py +994 -429
  259. ccxt/myokx.py +43 -0
  260. ccxt/ndax.py +163 -82
  261. ccxt/novadax.py +121 -75
  262. ccxt/oceanex.py +175 -59
  263. ccxt/okcoin.py +222 -163
  264. ccxt/okx.py +1777 -455
  265. ccxt/onetrading.py +132 -414
  266. ccxt/oxfun.py +2831 -0
  267. ccxt/p2b.py +79 -51
  268. ccxt/paradex.py +2017 -0
  269. ccxt/paymium.py +56 -32
  270. ccxt/phemex.py +572 -196
  271. ccxt/poloniex.py +218 -95
  272. ccxt/poloniexfutures.py +260 -92
  273. ccxt/pro/__init__.py +29 -5
  274. ccxt/pro/alpaca.py +32 -17
  275. ccxt/pro/ascendex.py +63 -15
  276. ccxt/pro/bequant.py +4 -0
  277. ccxt/pro/binance.py +1596 -329
  278. ccxt/pro/binancecoinm.py +1 -0
  279. ccxt/pro/binanceus.py +2 -9
  280. ccxt/pro/binanceusdm.py +2 -0
  281. ccxt/pro/bingx.py +527 -134
  282. ccxt/pro/bitcoincom.py +4 -1
  283. ccxt/pro/bitfinex.py +731 -266
  284. ccxt/pro/bitfinex1.py +635 -0
  285. ccxt/pro/bitget.py +726 -357
  286. ccxt/pro/bithumb.py +380 -0
  287. ccxt/pro/bitmart.py +138 -39
  288. ccxt/pro/bitmex.py +199 -40
  289. ccxt/pro/bitopro.py +25 -13
  290. ccxt/pro/bitrue.py +31 -32
  291. ccxt/pro/bitstamp.py +7 -6
  292. ccxt/pro/bitvavo.py +204 -82
  293. ccxt/pro/blockchaincom.py +30 -17
  294. ccxt/pro/blofin.py +692 -0
  295. ccxt/pro/bybit.py +791 -82
  296. ccxt/pro/cex.py +99 -51
  297. ccxt/pro/coinbase.py +220 -30
  298. ccxt/{async_support/hitbtc3.py → pro/coinbaseadvanced.py} +5 -5
  299. ccxt/pro/{coinbasepro.py → coinbaseexchange.py} +19 -19
  300. ccxt/pro/coinbaseinternational.py +193 -30
  301. ccxt/pro/coincatch.py +1464 -0
  302. ccxt/pro/coincheck.py +11 -6
  303. ccxt/pro/coinex.py +967 -661
  304. ccxt/pro/coinone.py +17 -10
  305. ccxt/pro/cryptocom.py +446 -66
  306. ccxt/pro/currencycom.py +11 -10
  307. ccxt/pro/defx.py +832 -0
  308. ccxt/pro/deribit.py +168 -32
  309. ccxt/pro/exmo.py +253 -21
  310. ccxt/pro/gate.py +729 -64
  311. ccxt/pro/gemini.py +44 -26
  312. ccxt/pro/hashkey.py +802 -0
  313. ccxt/pro/hitbtc.py +208 -103
  314. ccxt/pro/hollaex.py +25 -9
  315. ccxt/pro/htx.py +83 -39
  316. ccxt/pro/huobijp.py +17 -16
  317. ccxt/pro/hyperliquid.py +502 -31
  318. ccxt/pro/idex.py +28 -13
  319. ccxt/pro/independentreserve.py +21 -16
  320. ccxt/pro/kraken.py +298 -51
  321. ccxt/pro/krakenfutures.py +166 -75
  322. ccxt/pro/kucoin.py +395 -77
  323. ccxt/pro/kucoinfutures.py +400 -99
  324. ccxt/pro/lbank.py +52 -31
  325. ccxt/pro/luno.py +12 -10
  326. ccxt/pro/mexc.py +400 -50
  327. ccxt/pro/myokx.py +28 -0
  328. ccxt/pro/ndax.py +25 -12
  329. ccxt/pro/okcoin.py +28 -9
  330. ccxt/pro/okx.py +935 -124
  331. ccxt/pro/onetrading.py +41 -24
  332. ccxt/pro/oxfun.py +1054 -0
  333. ccxt/pro/p2b.py +100 -24
  334. ccxt/pro/paradex.py +352 -0
  335. ccxt/pro/phemex.py +93 -34
  336. ccxt/pro/poloniex.py +129 -50
  337. ccxt/pro/poloniexfutures.py +53 -32
  338. ccxt/pro/probit.py +93 -86
  339. ccxt/pro/upbit.py +401 -8
  340. ccxt/pro/vertex.py +943 -0
  341. ccxt/pro/wazirx.py +46 -28
  342. ccxt/pro/whitebit.py +65 -12
  343. ccxt/pro/woo.py +486 -70
  344. ccxt/pro/woofipro.py +1271 -0
  345. ccxt/pro/xt.py +1067 -0
  346. ccxt/probit.py +143 -110
  347. ccxt/static_dependencies/__init__.py +1 -1
  348. ccxt/static_dependencies/lark/__init__.py +38 -0
  349. ccxt/static_dependencies/lark/__pyinstaller/__init__.py +6 -0
  350. ccxt/static_dependencies/lark/__pyinstaller/hook-lark.py +14 -0
  351. ccxt/static_dependencies/lark/ast_utils.py +59 -0
  352. ccxt/static_dependencies/lark/common.py +86 -0
  353. ccxt/static_dependencies/lark/exceptions.py +292 -0
  354. ccxt/static_dependencies/lark/grammar.py +130 -0
  355. ccxt/static_dependencies/lark/grammars/__init__.py +0 -0
  356. ccxt/static_dependencies/lark/indenter.py +143 -0
  357. ccxt/static_dependencies/lark/lark.py +658 -0
  358. ccxt/static_dependencies/lark/lexer.py +678 -0
  359. ccxt/static_dependencies/lark/load_grammar.py +1428 -0
  360. ccxt/static_dependencies/lark/parse_tree_builder.py +391 -0
  361. ccxt/static_dependencies/lark/parser_frontends.py +257 -0
  362. ccxt/static_dependencies/lark/parsers/__init__.py +0 -0
  363. ccxt/static_dependencies/lark/parsers/cyk.py +340 -0
  364. ccxt/static_dependencies/lark/parsers/earley.py +314 -0
  365. ccxt/static_dependencies/lark/parsers/earley_common.py +42 -0
  366. ccxt/static_dependencies/lark/parsers/earley_forest.py +801 -0
  367. ccxt/static_dependencies/lark/parsers/grammar_analysis.py +203 -0
  368. ccxt/static_dependencies/lark/parsers/lalr_analysis.py +332 -0
  369. ccxt/static_dependencies/lark/parsers/lalr_interactive_parser.py +158 -0
  370. ccxt/static_dependencies/lark/parsers/lalr_parser.py +122 -0
  371. ccxt/static_dependencies/lark/parsers/lalr_parser_state.py +110 -0
  372. ccxt/static_dependencies/lark/parsers/xearley.py +165 -0
  373. ccxt/static_dependencies/lark/py.typed +0 -0
  374. ccxt/static_dependencies/lark/reconstruct.py +107 -0
  375. ccxt/static_dependencies/lark/tools/__init__.py +70 -0
  376. ccxt/static_dependencies/lark/tools/nearley.py +202 -0
  377. ccxt/static_dependencies/lark/tools/serialize.py +32 -0
  378. ccxt/static_dependencies/lark/tools/standalone.py +196 -0
  379. ccxt/static_dependencies/lark/tree.py +267 -0
  380. ccxt/static_dependencies/lark/tree_matcher.py +186 -0
  381. ccxt/static_dependencies/lark/tree_templates.py +180 -0
  382. ccxt/static_dependencies/lark/utils.py +343 -0
  383. ccxt/static_dependencies/lark/visitors.py +596 -0
  384. ccxt/static_dependencies/marshmallow/__init__.py +81 -0
  385. ccxt/static_dependencies/marshmallow/base.py +65 -0
  386. ccxt/static_dependencies/marshmallow/class_registry.py +94 -0
  387. ccxt/static_dependencies/marshmallow/decorators.py +231 -0
  388. ccxt/static_dependencies/marshmallow/error_store.py +60 -0
  389. ccxt/static_dependencies/marshmallow/exceptions.py +71 -0
  390. ccxt/static_dependencies/marshmallow/fields.py +2114 -0
  391. ccxt/static_dependencies/marshmallow/orderedset.py +89 -0
  392. ccxt/static_dependencies/marshmallow/py.typed +0 -0
  393. ccxt/static_dependencies/marshmallow/schema.py +1228 -0
  394. ccxt/static_dependencies/marshmallow/types.py +12 -0
  395. ccxt/static_dependencies/marshmallow/utils.py +378 -0
  396. ccxt/static_dependencies/marshmallow/validate.py +678 -0
  397. ccxt/static_dependencies/marshmallow/warnings.py +2 -0
  398. ccxt/static_dependencies/marshmallow_dataclass/__init__.py +1047 -0
  399. ccxt/static_dependencies/marshmallow_dataclass/collection_field.py +51 -0
  400. ccxt/static_dependencies/marshmallow_dataclass/lazy_class_attribute.py +45 -0
  401. ccxt/static_dependencies/marshmallow_dataclass/mypy.py +71 -0
  402. ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
  403. ccxt/static_dependencies/marshmallow_dataclass/typing.py +14 -0
  404. ccxt/static_dependencies/marshmallow_dataclass/union_field.py +82 -0
  405. ccxt/static_dependencies/marshmallow_oneofschema/__init__.py +1 -0
  406. ccxt/static_dependencies/marshmallow_oneofschema/one_of_schema.py +193 -0
  407. ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
  408. ccxt/static_dependencies/starknet/__init__.py +0 -0
  409. ccxt/static_dependencies/starknet/cairo/__init__.py +0 -0
  410. ccxt/static_dependencies/starknet/cairo/data_types.py +123 -0
  411. ccxt/static_dependencies/starknet/cairo/deprecated_parse/__init__.py +0 -0
  412. ccxt/static_dependencies/starknet/cairo/deprecated_parse/cairo_types.py +77 -0
  413. ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser.py +46 -0
  414. ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser_transformer.py +138 -0
  415. ccxt/static_dependencies/starknet/cairo/felt.py +64 -0
  416. ccxt/static_dependencies/starknet/cairo/type_parser.py +121 -0
  417. ccxt/static_dependencies/starknet/cairo/v1/__init__.py +0 -0
  418. ccxt/static_dependencies/starknet/cairo/v1/type_parser.py +59 -0
  419. ccxt/static_dependencies/starknet/cairo/v2/__init__.py +0 -0
  420. ccxt/static_dependencies/starknet/cairo/v2/type_parser.py +77 -0
  421. ccxt/static_dependencies/starknet/ccxt_utils.py +7 -0
  422. ccxt/static_dependencies/starknet/common.py +15 -0
  423. ccxt/static_dependencies/starknet/constants.py +39 -0
  424. ccxt/static_dependencies/starknet/hash/__init__.py +0 -0
  425. ccxt/static_dependencies/starknet/hash/address.py +79 -0
  426. ccxt/static_dependencies/starknet/hash/compiled_class_hash_objects.py +111 -0
  427. ccxt/static_dependencies/starknet/hash/selector.py +16 -0
  428. ccxt/static_dependencies/starknet/hash/storage.py +12 -0
  429. ccxt/static_dependencies/starknet/hash/utils.py +78 -0
  430. ccxt/static_dependencies/starknet/models/__init__.py +0 -0
  431. ccxt/static_dependencies/starknet/models/typed_data.py +45 -0
  432. ccxt/static_dependencies/starknet/serialization/__init__.py +24 -0
  433. ccxt/static_dependencies/starknet/serialization/_calldata_reader.py +40 -0
  434. ccxt/static_dependencies/starknet/serialization/_context.py +142 -0
  435. ccxt/static_dependencies/starknet/serialization/data_serializers/__init__.py +10 -0
  436. ccxt/static_dependencies/starknet/serialization/data_serializers/_common.py +82 -0
  437. ccxt/static_dependencies/starknet/serialization/data_serializers/array_serializer.py +43 -0
  438. ccxt/static_dependencies/starknet/serialization/data_serializers/bool_serializer.py +37 -0
  439. ccxt/static_dependencies/starknet/serialization/data_serializers/byte_array_serializer.py +66 -0
  440. ccxt/static_dependencies/starknet/serialization/data_serializers/cairo_data_serializer.py +71 -0
  441. ccxt/static_dependencies/starknet/serialization/data_serializers/enum_serializer.py +71 -0
  442. ccxt/static_dependencies/starknet/serialization/data_serializers/felt_serializer.py +50 -0
  443. ccxt/static_dependencies/starknet/serialization/data_serializers/named_tuple_serializer.py +58 -0
  444. ccxt/static_dependencies/starknet/serialization/data_serializers/option_serializer.py +43 -0
  445. ccxt/static_dependencies/starknet/serialization/data_serializers/output_serializer.py +40 -0
  446. ccxt/static_dependencies/starknet/serialization/data_serializers/payload_serializer.py +72 -0
  447. ccxt/static_dependencies/starknet/serialization/data_serializers/struct_serializer.py +36 -0
  448. ccxt/static_dependencies/starknet/serialization/data_serializers/tuple_serializer.py +36 -0
  449. ccxt/static_dependencies/starknet/serialization/data_serializers/uint256_serializer.py +76 -0
  450. ccxt/static_dependencies/starknet/serialization/data_serializers/uint_serializer.py +100 -0
  451. ccxt/static_dependencies/starknet/serialization/data_serializers/unit_serializer.py +32 -0
  452. ccxt/static_dependencies/starknet/serialization/errors.py +10 -0
  453. ccxt/static_dependencies/starknet/serialization/factory.py +229 -0
  454. ccxt/static_dependencies/starknet/serialization/function_serialization_adapter.py +110 -0
  455. ccxt/static_dependencies/starknet/serialization/tuple_dataclass.py +59 -0
  456. ccxt/static_dependencies/starknet/utils/__init__.py +0 -0
  457. ccxt/static_dependencies/starknet/utils/constructor_args_translator.py +86 -0
  458. ccxt/static_dependencies/starknet/utils/iterable.py +13 -0
  459. ccxt/static_dependencies/starknet/utils/schema.py +13 -0
  460. ccxt/static_dependencies/starknet/utils/typed_data.py +182 -0
  461. ccxt/static_dependencies/starkware/__init__.py +0 -0
  462. ccxt/static_dependencies/starkware/crypto/__init__.py +0 -0
  463. ccxt/static_dependencies/starkware/crypto/fast_pedersen_hash.py +50 -0
  464. ccxt/static_dependencies/starkware/crypto/math_utils.py +78 -0
  465. ccxt/static_dependencies/starkware/crypto/signature.py +2344 -0
  466. ccxt/static_dependencies/starkware/crypto/utils.py +63 -0
  467. ccxt/static_dependencies/sympy/__init__.py +0 -0
  468. ccxt/static_dependencies/sympy/core/__init__.py +0 -0
  469. ccxt/static_dependencies/sympy/core/intfunc.py +35 -0
  470. ccxt/static_dependencies/sympy/external/__init__.py +0 -0
  471. ccxt/static_dependencies/sympy/external/gmpy.py +345 -0
  472. ccxt/static_dependencies/sympy/external/importtools.py +187 -0
  473. ccxt/static_dependencies/sympy/external/ntheory.py +637 -0
  474. ccxt/static_dependencies/sympy/external/pythonmpq.py +341 -0
  475. ccxt/static_dependencies/typing_inspect/__init__.py +0 -0
  476. ccxt/static_dependencies/typing_inspect/typing_inspect.py +851 -0
  477. ccxt/test/{test_async.py → tests_async.py} +465 -407
  478. ccxt/test/tests_helpers.py +285 -0
  479. ccxt/test/tests_init.py +39 -0
  480. ccxt/test/{test_sync.py → tests_sync.py} +465 -409
  481. ccxt/timex.py +123 -70
  482. ccxt/tokocrypto.py +129 -93
  483. ccxt/tradeogre.py +39 -25
  484. ccxt/upbit.py +322 -113
  485. ccxt/vertex.py +2983 -0
  486. ccxt/wavesexchange.py +227 -173
  487. ccxt/wazirx.py +145 -65
  488. ccxt/whitebit.py +533 -138
  489. ccxt/woo.py +1155 -295
  490. ccxt/woofipro.py +2716 -0
  491. ccxt/xt.py +4627 -0
  492. ccxt/yobit.py +159 -92
  493. ccxt/zaif.py +80 -33
  494. ccxt/zonda.py +140 -69
  495. ccxt-4.4.48.dist-info/LICENSE.txt +21 -0
  496. ccxt-4.4.48.dist-info/METADATA +646 -0
  497. ccxt-4.4.48.dist-info/RECORD +669 -0
  498. {ccxt-4.2.76.dist-info → ccxt-4.4.48.dist-info}/WHEEL +1 -1
  499. ccxt/abstract/bitbay.py +0 -47
  500. ccxt/abstract/bitfinex2.py +0 -139
  501. ccxt/abstract/hitbtc3.py +0 -115
  502. ccxt/async_support/bitbay.py +0 -17
  503. ccxt/async_support/bitfinex2.py +0 -3496
  504. ccxt/async_support/flowbtc.py +0 -34
  505. ccxt/bitbay.py +0 -17
  506. ccxt/bitfinex2.py +0 -3496
  507. ccxt/flowbtc.py +0 -34
  508. ccxt/hitbtc3.py +0 -16
  509. ccxt/pro/bitfinex2.py +0 -1081
  510. ccxt/test/base/__init__.py +0 -28
  511. ccxt/test/base/test_account.py +0 -26
  512. ccxt/test/base/test_balance.py +0 -56
  513. ccxt/test/base/test_borrow_interest.py +0 -35
  514. ccxt/test/base/test_borrow_rate.py +0 -32
  515. ccxt/test/base/test_calculate_fee.py +0 -51
  516. ccxt/test/base/test_crypto.py +0 -127
  517. ccxt/test/base/test_currency.py +0 -76
  518. ccxt/test/base/test_datetime.py +0 -103
  519. ccxt/test/base/test_decimal_to_precision.py +0 -392
  520. ccxt/test/base/test_deep_extend.py +0 -68
  521. ccxt/test/base/test_deposit_withdrawal.py +0 -50
  522. ccxt/test/base/test_exchange_datetime_functions.py +0 -76
  523. ccxt/test/base/test_funding_rate_history.py +0 -29
  524. ccxt/test/base/test_last_price.py +0 -32
  525. ccxt/test/base/test_ledger_entry.py +0 -45
  526. ccxt/test/base/test_ledger_item.py +0 -48
  527. ccxt/test/base/test_leverage_tier.py +0 -33
  528. ccxt/test/base/test_margin_mode.py +0 -24
  529. ccxt/test/base/test_margin_modification.py +0 -35
  530. ccxt/test/base/test_market.py +0 -190
  531. ccxt/test/base/test_number.py +0 -411
  532. ccxt/test/base/test_ohlcv.py +0 -32
  533. ccxt/test/base/test_open_interest.py +0 -32
  534. ccxt/test/base/test_order.py +0 -64
  535. ccxt/test/base/test_order_book.py +0 -63
  536. ccxt/test/base/test_position.py +0 -60
  537. ccxt/test/base/test_shared_methods.py +0 -345
  538. ccxt/test/base/test_status.py +0 -24
  539. ccxt/test/base/test_throttle.py +0 -126
  540. ccxt/test/base/test_ticker.py +0 -86
  541. ccxt/test/base/test_trade.py +0 -47
  542. ccxt/test/base/test_trading_fee.py +0 -26
  543. ccxt/test/base/test_transaction.py +0 -39
  544. ccxt-4.2.76.dist-info/METADATA +0 -626
  545. ccxt-4.2.76.dist-info/RECORD +0 -534
  546. {ccxt-4.2.76.dist-info → ccxt-4.4.48.dist-info}/top_level.txt +0 -0
@@ -6,14 +6,14 @@
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.coinsph import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
9
+ from ccxt.base.types import Balances, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
+ from ccxt.base.errors import AuthenticationError
12
13
  from ccxt.base.errors import PermissionDenied
13
14
  from ccxt.base.errors import ArgumentsRequired
14
15
  from ccxt.base.errors import BadRequest
15
16
  from ccxt.base.errors import BadSymbol
16
- from ccxt.base.errors import BadResponse
17
17
  from ccxt.base.errors import InsufficientFunds
18
18
  from ccxt.base.errors import InvalidAddress
19
19
  from ccxt.base.errors import InvalidOrder
@@ -23,7 +23,7 @@ from ccxt.base.errors import DuplicateOrderId
23
23
  from ccxt.base.errors import NotSupported
24
24
  from ccxt.base.errors import RateLimitExceeded
25
25
  from ccxt.base.errors import ExchangeNotAvailable
26
- from ccxt.base.errors import AuthenticationError
26
+ from ccxt.base.errors import BadResponse
27
27
  from ccxt.base.decimal_to_precision import TICK_SIZE
28
28
  from ccxt.base.precise import Precise
29
29
 
@@ -108,7 +108,11 @@ class coinsph(Exchange, ImplicitAPI):
108
108
  'fetchOrders': False,
109
109
  'fetchOrderTrades': True,
110
110
  'fetchPosition': False,
111
+ 'fetchPositionHistory': False,
112
+ 'fetchPositionMode': False,
111
113
  'fetchPositions': False,
114
+ 'fetchPositionsForSymbol': False,
115
+ 'fetchPositionsHistory': False,
112
116
  'fetchPositionsRisk': False,
113
117
  'fetchPremiumIndexOHLCV': False,
114
118
  'fetchStatus': True,
@@ -309,6 +313,72 @@ class coinsph(Exchange, ImplicitAPI):
309
313
  'ARB': 'ARBITRUM',
310
314
  },
311
315
  },
316
+ 'features': {
317
+ 'spot': {
318
+ 'sandbox': False,
319
+ 'createOrder': {
320
+ 'marginMode': False,
321
+ 'triggerPrice': True,
322
+ 'triggerPriceType': None,
323
+ 'triggerDirection': False,
324
+ 'stopLossPrice': False, # todo
325
+ 'takeProfitPrice': False, # todo
326
+ 'attachedStopLossTakeProfit': None,
327
+ 'timeInForce': {
328
+ 'IOC': True,
329
+ 'FOK': True,
330
+ 'PO': False,
331
+ 'GTD': False,
332
+ },
333
+ 'hedged': False,
334
+ 'trailing': False,
335
+ 'leverage': False,
336
+ 'marketBuyByCost': True,
337
+ 'marketBuyRequiresPrice': False,
338
+ 'selfTradePrevention': True, # todo implement
339
+ 'iceberg': False,
340
+ },
341
+ 'createOrders': None,
342
+ 'fetchMyTrades': {
343
+ 'marginMode': False,
344
+ 'limit': 1000,
345
+ 'daysBack': 100000,
346
+ 'untilDays': 100000, # todo implement
347
+ },
348
+ 'fetchOrder': {
349
+ 'marginMode': False,
350
+ 'trigger': False,
351
+ 'trailing': False,
352
+ },
353
+ 'fetchOpenOrders': {
354
+ 'marginMode': False,
355
+ 'limit': None,
356
+ 'trigger': False,
357
+ 'trailing': False,
358
+ },
359
+ 'fetchOrders': None,
360
+ 'fetchClosedOrders': {
361
+ 'marginMode': False,
362
+ 'limit': 1000,
363
+ 'daysBack': 100000,
364
+ 'daysBackCanceled': 1,
365
+ 'untilDays': 100000,
366
+ 'trigger': False,
367
+ 'trailing': False,
368
+ },
369
+ 'fetchOHLCV': {
370
+ 'limit': 1000,
371
+ },
372
+ },
373
+ 'swap': {
374
+ 'linear': None,
375
+ 'inverse': None,
376
+ },
377
+ 'future': {
378
+ 'linear': None,
379
+ 'inverse': None,
380
+ },
381
+ },
312
382
  # https://coins-docs.github.io/errors/
313
383
  'exceptions': {
314
384
  'exact': {
@@ -452,7 +522,9 @@ class coinsph(Exchange, ImplicitAPI):
452
522
  async def fetch_status(self, params={}):
453
523
  """
454
524
  the latest known information on the availability of the exchange API
455
- :see: https://coins-docs.github.io/rest-api/#test-connectivity
525
+
526
+ https://coins-docs.github.io/rest-api/#test-connectivity
527
+
456
528
  :param dict [params]: extra parameters specific to the exchange API endpoint
457
529
  :returns dict: a `status structure <https://docs.ccxt.com/#/?id=exchange-status-structure>`
458
530
  """
@@ -468,7 +540,9 @@ class coinsph(Exchange, ImplicitAPI):
468
540
  async def fetch_time(self, params={}):
469
541
  """
470
542
  fetches the current integer timestamp in milliseconds from the exchange server
471
- :see: https://coins-docs.github.io/rest-api/#check-server-time
543
+
544
+ https://coins-docs.github.io/rest-api/#check-server-time
545
+
472
546
  :param dict [params]: extra parameters specific to the exchange API endpoint
473
547
  :returns int: the current integer timestamp in milliseconds from the exchange server
474
548
  """
@@ -478,10 +552,12 @@ class coinsph(Exchange, ImplicitAPI):
478
552
  #
479
553
  return self.safe_integer(response, 'serverTime')
480
554
 
481
- async def fetch_markets(self, params={}):
555
+ async def fetch_markets(self, params={}) -> List[Market]:
482
556
  """
483
557
  retrieves data on all markets for coinsph
484
- :see: https://coins-docs.github.io/rest-api/#exchange-information
558
+
559
+ https://coins-docs.github.io/rest-api/#exchange-information
560
+
485
561
  :param dict [params]: extra parameters specific to the exchange API endpoint
486
562
  :returns dict[]: an array of objects representing market data
487
563
  """
@@ -545,7 +621,7 @@ class coinsph(Exchange, ImplicitAPI):
545
621
  # ]
546
622
  # }
547
623
  #
548
- markets = self.safe_value(response, 'symbols')
624
+ markets = self.safe_list(response, 'symbols', [])
549
625
  result = []
550
626
  for i in range(0, len(markets)):
551
627
  market = markets[i]
@@ -554,7 +630,7 @@ class coinsph(Exchange, ImplicitAPI):
554
630
  quoteId = self.safe_string(market, 'quoteAsset')
555
631
  base = self.safe_currency_code(baseId)
556
632
  quote = self.safe_currency_code(quoteId)
557
- limits = self.index_by(self.safe_value(market, 'filters'), 'filterType')
633
+ limits = self.index_by(self.safe_list(market, 'filters', []), 'filterType')
558
634
  amountLimits = self.safe_value(limits, 'LOT_SIZE', {})
559
635
  priceLimits = self.safe_value(limits, 'PRICE_FILTER', {})
560
636
  costLimits = self.safe_value(limits, 'NOTIONAL', {})
@@ -615,15 +691,17 @@ class coinsph(Exchange, ImplicitAPI):
615
691
  async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
616
692
  """
617
693
  fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
618
- :see: https://coins-docs.github.io/rest-api/#24hr-ticker-price-change-statistics
619
- :see: https://coins-docs.github.io/rest-api/#symbol-price-ticker
620
- :see: https://coins-docs.github.io/rest-api/#symbol-order-book-ticker
694
+
695
+ https://coins-docs.github.io/rest-api/#24hr-ticker-price-change-statistics
696
+ https://coins-docs.github.io/rest-api/#symbol-price-ticker
697
+ https://coins-docs.github.io/rest-api/#symbol-order-book-ticker
698
+
621
699
  :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
622
700
  :param dict [params]: extra parameters specific to the exchange API endpoint
623
701
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
624
702
  """
625
703
  await self.load_markets()
626
- request = {}
704
+ request: dict = {}
627
705
  if symbols is not None:
628
706
  ids = []
629
707
  for i in range(0, len(symbols)):
@@ -632,7 +710,7 @@ class coinsph(Exchange, ImplicitAPI):
632
710
  ids.append(id)
633
711
  request['symbols'] = ids
634
712
  defaultMethod = 'publicGetOpenapiQuoteV1Ticker24hr'
635
- options = self.safe_value(self.options, 'fetchTickers', {})
713
+ options = self.safe_dict(self.options, 'fetchTickers', {})
636
714
  method = self.safe_string(options, 'method', defaultMethod)
637
715
  tickers = None
638
716
  if method == 'publicGetOpenapiQuoteV1TickerPrice':
@@ -646,20 +724,22 @@ class coinsph(Exchange, ImplicitAPI):
646
724
  async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
647
725
  """
648
726
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
649
- :see: https://coins-docs.github.io/rest-api/#24hr-ticker-price-change-statistics
650
- :see: https://coins-docs.github.io/rest-api/#symbol-price-ticker
651
- :see: https://coins-docs.github.io/rest-api/#symbol-order-book-ticker
727
+
728
+ https://coins-docs.github.io/rest-api/#24hr-ticker-price-change-statistics
729
+ https://coins-docs.github.io/rest-api/#symbol-price-ticker
730
+ https://coins-docs.github.io/rest-api/#symbol-order-book-ticker
731
+
652
732
  :param str symbol: unified symbol of the market to fetch the ticker for
653
733
  :param dict [params]: extra parameters specific to the exchange API endpoint
654
734
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
655
735
  """
656
736
  await self.load_markets()
657
737
  market = self.market(symbol)
658
- request = {
738
+ request: dict = {
659
739
  'symbol': market['id'],
660
740
  }
661
741
  defaultMethod = 'publicGetOpenapiQuoteV1Ticker24hr'
662
- options = self.safe_value(self.options, 'fetchTicker', {})
742
+ options = self.safe_dict(self.options, 'fetchTicker', {})
663
743
  method = self.safe_string(options, 'method', defaultMethod)
664
744
  ticker = None
665
745
  if method == 'publicGetOpenapiQuoteV1TickerPrice':
@@ -670,7 +750,7 @@ class coinsph(Exchange, ImplicitAPI):
670
750
  ticker = await self.publicGetOpenapiQuoteV1Ticker24hr(self.extend(request, params))
671
751
  return self.parse_ticker(ticker, market)
672
752
 
673
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
753
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
674
754
  #
675
755
  # publicGetOpenapiQuoteV1Ticker24hr
676
756
  # {
@@ -751,7 +831,9 @@ class coinsph(Exchange, ImplicitAPI):
751
831
  async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
752
832
  """
753
833
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
754
- :see: https://coins-docs.github.io/rest-api/#order-book
834
+
835
+ https://coins-docs.github.io/rest-api/#order-book
836
+
755
837
  :param str symbol: unified symbol of the market to fetch the order book for
756
838
  :param int [limit]: the maximum amount of order book entries to return(default 100, max 200)
757
839
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -759,7 +841,7 @@ class coinsph(Exchange, ImplicitAPI):
759
841
  """
760
842
  await self.load_markets()
761
843
  market = self.market(symbol)
762
- request = {
844
+ request: dict = {
763
845
  'symbol': market['id'],
764
846
  }
765
847
  if limit is not None:
@@ -785,7 +867,9 @@ class coinsph(Exchange, ImplicitAPI):
785
867
  async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
786
868
  """
787
869
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
788
- :see: https://coins-docs.github.io/rest-api/#klinecandlestick-data
870
+
871
+ https://coins-docs.github.io/rest-api/#klinecandlestick-data
872
+
789
873
  :param str symbol: unified symbol of the market to fetch OHLCV data for
790
874
  :param str timeframe: the length of time each candle represents
791
875
  :param int [since]: timestamp in ms of the earliest candle to fetch
@@ -796,7 +880,7 @@ class coinsph(Exchange, ImplicitAPI):
796
880
  await self.load_markets()
797
881
  market = self.market(symbol)
798
882
  interval = self.safe_string(self.timeframes, timeframe)
799
- request = {
883
+ request: dict = {
800
884
  'symbol': market['id'],
801
885
  'interval': interval,
802
886
  }
@@ -845,7 +929,9 @@ class coinsph(Exchange, ImplicitAPI):
845
929
  async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
846
930
  """
847
931
  get the list of most recent trades for a particular symbol
848
- :see: https://coins-docs.github.io/rest-api/#recent-trades-list
932
+
933
+ https://coins-docs.github.io/rest-api/#recent-trades-list
934
+
849
935
  :param str symbol: unified symbol of the market to fetch trades for
850
936
  :param int [since]: timestamp in ms of the earliest trade to fetch
851
937
  :param int [limit]: the maximum amount of trades to fetch(default 500, max 1000)
@@ -854,7 +940,7 @@ class coinsph(Exchange, ImplicitAPI):
854
940
  """
855
941
  await self.load_markets()
856
942
  market = self.market(symbol)
857
- request = {
943
+ request: dict = {
858
944
  'symbol': market['id'],
859
945
  }
860
946
  if since is not None:
@@ -882,7 +968,9 @@ class coinsph(Exchange, ImplicitAPI):
882
968
  async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
883
969
  """
884
970
  fetch all trades made by the user
885
- :see: https://coins-docs.github.io/rest-api/#account-trade-list-user_data
971
+
972
+ https://coins-docs.github.io/rest-api/#account-trade-list-user_data
973
+
886
974
  :param str symbol: unified market symbol
887
975
  :param int [since]: the earliest time in ms to fetch trades for
888
976
  :param int [limit]: the maximum number of trades structures to retrieve(default 500, max 1000)
@@ -893,7 +981,7 @@ class coinsph(Exchange, ImplicitAPI):
893
981
  raise ArgumentsRequired(self.id + ' fetchMyTrades() requires a symbol argument')
894
982
  await self.load_markets()
895
983
  market = self.market(symbol)
896
- request = {
984
+ request: dict = {
897
985
  'symbol': market['id'],
898
986
  }
899
987
  if since is not None:
@@ -908,7 +996,9 @@ class coinsph(Exchange, ImplicitAPI):
908
996
  async def fetch_order_trades(self, id: str, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
909
997
  """
910
998
  fetch all the trades made from a single order
911
- :see: https://coins-docs.github.io/rest-api/#account-trade-list-user_data
999
+
1000
+ https://coins-docs.github.io/rest-api/#account-trade-list-user_data
1001
+
912
1002
  :param str id: order id
913
1003
  :param str symbol: unified market symbol
914
1004
  :param int [since]: the earliest time in ms to fetch trades for
@@ -918,12 +1008,12 @@ class coinsph(Exchange, ImplicitAPI):
918
1008
  """
919
1009
  if symbol is None:
920
1010
  raise ArgumentsRequired(self.id + ' fetchOrderTrades() requires a symbol argument')
921
- request = {
1011
+ request: dict = {
922
1012
  'orderId': id,
923
1013
  }
924
1014
  return await self.fetch_my_trades(symbol, since, limit, self.extend(request, params))
925
1015
 
926
- def parse_trade(self, trade, market: Market = None) -> Trade:
1016
+ def parse_trade(self, trade: dict, market: Market = None) -> Trade:
927
1017
  #
928
1018
  # fetchTrades
929
1019
  # {
@@ -978,7 +1068,7 @@ class coinsph(Exchange, ImplicitAPI):
978
1068
  'cost': feeCost,
979
1069
  'currency': self.safe_currency_code(feeCurrencyId),
980
1070
  }
981
- isBuyer = self.safe_value_2(trade, 'isBuyer', 'isBuyerMaker', None)
1071
+ isBuyer = self.safe_bool_2(trade, 'isBuyer', 'isBuyerMaker', None)
982
1072
  side = None
983
1073
  if isBuyer is not None:
984
1074
  side = 'buy' if (isBuyer is True) else 'sell'
@@ -1008,7 +1098,9 @@ class coinsph(Exchange, ImplicitAPI):
1008
1098
  async def fetch_balance(self, params={}) -> Balances:
1009
1099
  """
1010
1100
  query for balance and get the amount of funds available for trading or funds locked in orders
1011
- :see: https://coins-docs.github.io/rest-api/#accept-the-quote
1101
+
1102
+ https://coins-docs.github.io/rest-api/#accept-the-quote
1103
+
1012
1104
  :param dict [params]: extra parameters specific to the exchange API endpoint
1013
1105
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
1014
1106
  """
@@ -1038,8 +1130,8 @@ class coinsph(Exchange, ImplicitAPI):
1038
1130
  return self.parse_balance(response)
1039
1131
 
1040
1132
  def parse_balance(self, response) -> Balances:
1041
- balances = self.safe_value(response, 'balances', [])
1042
- result = {
1133
+ balances = self.safe_list(response, 'balances', [])
1134
+ result: dict = {
1043
1135
  'info': response,
1044
1136
  'timestamp': None,
1045
1137
  'datetime': None,
@@ -1057,12 +1149,14 @@ class coinsph(Exchange, ImplicitAPI):
1057
1149
  async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
1058
1150
  """
1059
1151
  create a trade order
1060
- :see: https://coins-docs.github.io/rest-api/#new-order--trade
1152
+
1153
+ https://coins-docs.github.io/rest-api/#new-order--trade
1154
+
1061
1155
  :param str symbol: unified symbol of the market to create an order in
1062
1156
  :param str type: 'market', 'limit', 'stop_loss', 'take_profit', 'stop_loss_limit', 'take_profit_limit' or 'limit_maker'
1063
1157
  :param str side: 'buy' or 'sell'
1064
1158
  :param float amount: how much of currency you want to trade in units of base currency
1065
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
1159
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1066
1160
  :param dict [params]: extra parameters specific to the exchange API endpoint
1067
1161
  :param float [params.cost]: the quote quantity that can be used alternative for the amount for market buy orders
1068
1162
  :param bool [params.test]: set to True to test an order, no order will be created but the request will be validated
@@ -1077,7 +1171,7 @@ class coinsph(Exchange, ImplicitAPI):
1077
1171
  orderType = self.encode_order_type(orderType)
1078
1172
  params = self.omit(params, 'type')
1079
1173
  orderSide = self.encode_order_side(side)
1080
- request = {
1174
+ request: dict = {
1081
1175
  'symbol': market['id'],
1082
1176
  'type': orderType,
1083
1177
  'side': orderSide,
@@ -1118,10 +1212,10 @@ class coinsph(Exchange, ImplicitAPI):
1118
1212
  quoteAmount = self.cost_to_precision(symbol, amount)
1119
1213
  request['quoteOrderQty'] = quoteAmount
1120
1214
  if orderType == 'STOP_LOSS' or orderType == 'STOP_LOSS_LIMIT' or orderType == 'TAKE_PROFIT' or orderType == 'TAKE_PROFIT_LIMIT':
1121
- stopPrice = self.safe_string_2(params, 'triggerPrice', 'stopPrice')
1122
- if stopPrice is None:
1215
+ triggerPrice = self.safe_string_2(params, 'triggerPrice', 'stopPrice')
1216
+ if triggerPrice is None:
1123
1217
  raise InvalidOrder(self.id + ' createOrder() requires a triggerPrice or stopPrice param for stop_loss, take_profit, stop_loss_limit, and take_profit_limit orders')
1124
- request['stopPrice'] = self.price_to_precision(symbol, stopPrice)
1218
+ request['stopPrice'] = self.price_to_precision(symbol, triggerPrice)
1125
1219
  request['newOrderRespType'] = newOrderRespType
1126
1220
  params = self.omit(params, 'price', 'stopPrice', 'triggerPrice', 'quantity', 'quoteOrderQty')
1127
1221
  response = None
@@ -1161,14 +1255,16 @@ class coinsph(Exchange, ImplicitAPI):
1161
1255
  async def fetch_order(self, id: str, symbol: Str = None, params={}):
1162
1256
  """
1163
1257
  fetches information on an order made by the user
1164
- :see: https://coins-docs.github.io/rest-api/#query-order-user_data
1258
+
1259
+ https://coins-docs.github.io/rest-api/#query-order-user_data
1260
+
1165
1261
  :param int|str id: order id
1166
1262
  :param str symbol: not used by coinsph fetchOrder()
1167
1263
  :param dict [params]: extra parameters specific to the exchange API endpoint
1168
1264
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1169
1265
  """
1170
1266
  await self.load_markets()
1171
- request = {}
1267
+ request: dict = {}
1172
1268
  clientOrderId = self.safe_value_2(params, 'origClientOrderId', 'clientOrderId')
1173
1269
  if clientOrderId is not None:
1174
1270
  request['origClientOrderId'] = clientOrderId
@@ -1181,7 +1277,9 @@ class coinsph(Exchange, ImplicitAPI):
1181
1277
  async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1182
1278
  """
1183
1279
  fetch all unfilled currently open orders
1184
- :see: https://coins-docs.github.io/rest-api/#query-order-user_data
1280
+
1281
+ https://coins-docs.github.io/rest-api/#current-open-orders-user_data
1282
+
1185
1283
  :param str symbol: unified market symbol
1186
1284
  :param int [since]: the earliest time in ms to fetch open orders for
1187
1285
  :param int [limit]: the maximum number of open orders structures to retrieve
@@ -1190,7 +1288,7 @@ class coinsph(Exchange, ImplicitAPI):
1190
1288
  """
1191
1289
  await self.load_markets()
1192
1290
  market = None
1193
- request = {}
1291
+ request: dict = {}
1194
1292
  if symbol is not None:
1195
1293
  market = self.market(symbol)
1196
1294
  request['symbol'] = market['id']
@@ -1200,7 +1298,9 @@ class coinsph(Exchange, ImplicitAPI):
1200
1298
  async def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1201
1299
  """
1202
1300
  fetches information on multiple closed orders made by the user
1203
- :see: https://coins-docs.github.io/rest-api/#history-orders-user_data
1301
+
1302
+ https://coins-docs.github.io/rest-api/#history-orders-user_data
1303
+
1204
1304
  :param str symbol: unified market symbol of the market orders were made in
1205
1305
  :param int [since]: the earliest time in ms to fetch orders for
1206
1306
  :param int [limit]: the maximum number of order structures to retrieve(default 500, max 1000)
@@ -1211,7 +1311,7 @@ class coinsph(Exchange, ImplicitAPI):
1211
1311
  raise ArgumentsRequired(self.id + ' fetchClosedOrders() requires a symbol argument')
1212
1312
  await self.load_markets()
1213
1313
  market = self.market(symbol)
1214
- request = {
1314
+ request: dict = {
1215
1315
  'symbol': market['id'],
1216
1316
  }
1217
1317
  if since is not None:
@@ -1226,14 +1326,16 @@ class coinsph(Exchange, ImplicitAPI):
1226
1326
  async def cancel_order(self, id: str, symbol: Str = None, params={}):
1227
1327
  """
1228
1328
  cancels an open order
1229
- :see: https://coins-docs.github.io/rest-api/#cancel-order-trade
1329
+
1330
+ https://coins-docs.github.io/rest-api/#cancel-order-trade
1331
+
1230
1332
  :param str id: order id
1231
1333
  :param str symbol: not used by coinsph cancelOrder()
1232
1334
  :param dict [params]: extra parameters specific to the exchange API endpoint
1233
1335
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1234
1336
  """
1235
1337
  await self.load_markets()
1236
- request = {}
1338
+ request: dict = {}
1237
1339
  clientOrderId = self.safe_value_2(params, 'origClientOrderId', 'clientOrderId')
1238
1340
  if clientOrderId is not None:
1239
1341
  request['origClientOrderId'] = clientOrderId
@@ -1246,7 +1348,9 @@ class coinsph(Exchange, ImplicitAPI):
1246
1348
  async def cancel_all_orders(self, symbol: Str = None, params={}):
1247
1349
  """
1248
1350
  cancel open orders of market
1249
- :see: https://coins-docs.github.io/rest-api/#cancel-all-open-orders-on-a-symbol-trade
1351
+
1352
+ https://coins-docs.github.io/rest-api/#cancel-all-open-orders-on-a-symbol-trade
1353
+
1250
1354
  :param str symbol: unified market symbol
1251
1355
  :param dict [params]: extra parameters specific to the exchange API endpoint
1252
1356
  :returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
@@ -1255,14 +1359,14 @@ class coinsph(Exchange, ImplicitAPI):
1255
1359
  raise ArgumentsRequired(self.id + ' cancelAllOrders() requires a symbol argument')
1256
1360
  await self.load_markets()
1257
1361
  market = None
1258
- request = {}
1362
+ request: dict = {}
1259
1363
  if symbol is not None:
1260
1364
  market = self.market(symbol)
1261
1365
  request['symbol'] = market['id']
1262
1366
  response = await self.privateDeleteOpenapiV1OpenOrders(self.extend(request, params))
1263
1367
  return self.parse_orders(response, market)
1264
1368
 
1265
- def parse_order(self, order, market: Market = None) -> Order:
1369
+ def parse_order(self, order: dict, market: Market = None) -> Order:
1266
1370
  #
1267
1371
  # createOrder POST /openapi/v1/order
1268
1372
  # {
@@ -1336,9 +1440,9 @@ class coinsph(Exchange, ImplicitAPI):
1336
1440
  market = self.safe_market(marketId, market)
1337
1441
  timestamp = self.safe_integer_2(order, 'time', 'transactTime')
1338
1442
  trades = self.safe_value(order, 'fills', None)
1339
- stopPrice = self.safe_string(order, 'stopPrice')
1340
- if Precise.string_eq(stopPrice, '0'):
1341
- stopPrice = None
1443
+ triggerPrice = self.safe_string(order, 'stopPrice')
1444
+ if Precise.string_eq(triggerPrice, '0'):
1445
+ triggerPrice = None
1342
1446
  return self.safe_order({
1343
1447
  'id': id,
1344
1448
  'clientOrderId': self.safe_string(order, 'clientOrderId'),
@@ -1351,8 +1455,7 @@ class coinsph(Exchange, ImplicitAPI):
1351
1455
  'timeInForce': self.parse_order_time_in_force(self.safe_string(order, 'timeInForce')),
1352
1456
  'side': self.parse_order_side(self.safe_string(order, 'side')),
1353
1457
  'price': self.safe_string(order, 'price'),
1354
- 'stopPrice': stopPrice,
1355
- 'triggerPrice': stopPrice,
1458
+ 'triggerPrice': triggerPrice,
1356
1459
  'average': None,
1357
1460
  'amount': self.safe_string(order, 'origQty'),
1358
1461
  'cost': self.safe_string(order, 'cummulativeQuoteQty'),
@@ -1365,21 +1468,21 @@ class coinsph(Exchange, ImplicitAPI):
1365
1468
  }, market)
1366
1469
 
1367
1470
  def parse_order_side(self, status):
1368
- statuses = {
1471
+ statuses: dict = {
1369
1472
  'BUY': 'buy',
1370
1473
  'SELL': 'sell',
1371
1474
  }
1372
1475
  return self.safe_string(statuses, status, status)
1373
1476
 
1374
1477
  def encode_order_side(self, status):
1375
- statuses = {
1478
+ statuses: dict = {
1376
1479
  'buy': 'BUY',
1377
1480
  'sell': 'SELL',
1378
1481
  }
1379
1482
  return self.safe_string(statuses, status, status)
1380
1483
 
1381
1484
  def parse_order_type(self, status):
1382
- statuses = {
1485
+ statuses: dict = {
1383
1486
  'MARKET': 'market',
1384
1487
  'LIMIT': 'limit',
1385
1488
  'LIMIT_MAKER': 'limit',
@@ -1391,7 +1494,7 @@ class coinsph(Exchange, ImplicitAPI):
1391
1494
  return self.safe_string(statuses, status, status)
1392
1495
 
1393
1496
  def encode_order_type(self, status):
1394
- statuses = {
1497
+ statuses: dict = {
1395
1498
  'market': 'MARKET',
1396
1499
  'limit': 'LIMIT',
1397
1500
  'limit_maker': 'LIMIT_MAKER',
@@ -1402,8 +1505,8 @@ class coinsph(Exchange, ImplicitAPI):
1402
1505
  }
1403
1506
  return self.safe_string(statuses, status, status)
1404
1507
 
1405
- def parse_order_status(self, status):
1406
- statuses = {
1508
+ def parse_order_status(self, status: Str):
1509
+ statuses: dict = {
1407
1510
  'NEW': 'open',
1408
1511
  'FILLED': 'closed',
1409
1512
  'CANCELED': 'canceled',
@@ -1414,24 +1517,26 @@ class coinsph(Exchange, ImplicitAPI):
1414
1517
  return self.safe_string(statuses, status, status)
1415
1518
 
1416
1519
  def parse_order_time_in_force(self, status):
1417
- statuses = {
1520
+ statuses: dict = {
1418
1521
  'GTC': 'GTC',
1419
1522
  'FOK': 'FOK',
1420
1523
  'IOC': 'IOC',
1421
1524
  }
1422
1525
  return self.safe_string(statuses, status, status)
1423
1526
 
1424
- async def fetch_trading_fee(self, symbol: str, params={}):
1527
+ async def fetch_trading_fee(self, symbol: str, params={}) -> TradingFeeInterface:
1425
1528
  """
1426
1529
  fetch the trading fees for a market
1427
- :see: https://coins-docs.github.io/rest-api/#trade-fee-user_data
1530
+
1531
+ https://coins-docs.github.io/rest-api/#trade-fee-user_data
1532
+
1428
1533
  :param str symbol: unified market symbol
1429
1534
  :param dict [params]: extra parameters specific to the exchange API endpoint
1430
1535
  :returns dict: a `fee structure <https://docs.ccxt.com/#/?id=fee-structure>`
1431
1536
  """
1432
1537
  await self.load_markets()
1433
1538
  market = self.market(symbol)
1434
- request = {
1539
+ request: dict = {
1435
1540
  'symbol': market['id'],
1436
1541
  }
1437
1542
  response = await self.privateGetOpenapiV1AssetTradeFee(self.extend(request, params))
@@ -1444,13 +1549,15 @@ class coinsph(Exchange, ImplicitAPI):
1444
1549
  # }
1445
1550
  # ]
1446
1551
  #
1447
- tradingFee = self.safe_value(response, 0, {})
1552
+ tradingFee = self.safe_dict(response, 0, {})
1448
1553
  return self.parse_trading_fee(tradingFee, market)
1449
1554
 
1450
- async def fetch_trading_fees(self, params={}):
1555
+ async def fetch_trading_fees(self, params={}) -> TradingFees:
1451
1556
  """
1452
1557
  fetch the trading fees for multiple markets
1453
- :see: https://coins-docs.github.io/rest-api/#trade-fee-user_data
1558
+
1559
+ https://coins-docs.github.io/rest-api/#trade-fee-user_data
1560
+
1454
1561
  :param dict [params]: extra parameters specific to the exchange API endpoint
1455
1562
  :returns dict: a dictionary of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>` indexed by market symbols
1456
1563
  """
@@ -1470,14 +1577,14 @@ class coinsph(Exchange, ImplicitAPI):
1470
1577
  # },
1471
1578
  # ]
1472
1579
  #
1473
- result = {}
1580
+ result: dict = {}
1474
1581
  for i in range(0, len(response)):
1475
1582
  fee = self.parse_trading_fee(response[i])
1476
1583
  symbol = fee['symbol']
1477
1584
  result[symbol] = fee
1478
1585
  return result
1479
1586
 
1480
- def parse_trading_fee(self, fee, market: Market = None):
1587
+ def parse_trading_fee(self, fee: dict, market: Market = None) -> TradingFeeInterface:
1481
1588
  #
1482
1589
  # {
1483
1590
  # "symbol": "ETHUSDT",
@@ -1493,12 +1600,16 @@ class coinsph(Exchange, ImplicitAPI):
1493
1600
  'symbol': symbol,
1494
1601
  'maker': self.safe_number(fee, 'makerCommission'),
1495
1602
  'taker': self.safe_number(fee, 'takerCommission'),
1603
+ 'percentage': None,
1604
+ 'tierBased': None,
1496
1605
  }
1497
1606
 
1498
- async def withdraw(self, code: str, amount: float, address, tag=None, params={}):
1607
+ async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
1499
1608
  """
1500
1609
  make a withdrawal to coins_ph account
1501
- :see: https://coins-docs.github.io/rest-api/#withdrawuser_data
1610
+
1611
+ https://coins-docs.github.io/rest-api/#withdrawuser_data
1612
+
1502
1613
  :param str code: unified currency code
1503
1614
  :param float amount: the amount to withdraw
1504
1615
  :param str address: not used by coinsph withdraw()
@@ -1516,7 +1627,7 @@ class coinsph(Exchange, ImplicitAPI):
1516
1627
  raise BadRequest(self.id + ' withdraw() require network parameter')
1517
1628
  await self.load_markets()
1518
1629
  currency = self.currency(code)
1519
- request = {
1630
+ request: dict = {
1520
1631
  'coin': currency['id'],
1521
1632
  'amount': self.number_to_string(amount),
1522
1633
  'network': networkId,
@@ -1531,7 +1642,9 @@ class coinsph(Exchange, ImplicitAPI):
1531
1642
  async def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1532
1643
  """
1533
1644
  fetch all deposits made to an account
1534
- :see: https://coins-docs.github.io/rest-api/#deposit-history-user_data
1645
+
1646
+ https://coins-docs.github.io/rest-api/#deposit-history-user_data
1647
+
1535
1648
  :param str code: unified currency code
1536
1649
  :param int [since]: the earliest time in ms to fetch deposits for
1537
1650
  :param int [limit]: the maximum number of deposits structures to retrieve
@@ -1541,7 +1654,7 @@ class coinsph(Exchange, ImplicitAPI):
1541
1654
  # todo: returns an empty array - find out why
1542
1655
  await self.load_markets()
1543
1656
  currency = None
1544
- request = {}
1657
+ request: dict = {}
1545
1658
  if code is not None:
1546
1659
  currency = self.currency(code)
1547
1660
  request['coin'] = currency['id']
@@ -1583,7 +1696,9 @@ class coinsph(Exchange, ImplicitAPI):
1583
1696
  async def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1584
1697
  """
1585
1698
  fetch all withdrawals made from an account
1586
- :see: https://coins-docs.github.io/rest-api/#withdraw-history-user_data
1699
+
1700
+ https://coins-docs.github.io/rest-api/#withdraw-history-user_data
1701
+
1587
1702
  :param str code: unified currency code
1588
1703
  :param int [since]: the earliest time in ms to fetch withdrawals for
1589
1704
  :param int [limit]: the maximum number of withdrawals structures to retrieve
@@ -1593,7 +1708,7 @@ class coinsph(Exchange, ImplicitAPI):
1593
1708
  # todo: returns an empty array - find out why
1594
1709
  await self.load_markets()
1595
1710
  currency = None
1596
- request = {}
1711
+ request: dict = {}
1597
1712
  if code is not None:
1598
1713
  currency = self.currency(code)
1599
1714
  request['coin'] = currency['id']
@@ -1638,7 +1753,7 @@ class coinsph(Exchange, ImplicitAPI):
1638
1753
  #
1639
1754
  return self.parse_transactions(response, currency, since, limit)
1640
1755
 
1641
- def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
1756
+ def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
1642
1757
  #
1643
1758
  # fetchDeposits
1644
1759
  # {
@@ -1725,8 +1840,8 @@ class coinsph(Exchange, ImplicitAPI):
1725
1840
  'fee': fee,
1726
1841
  }
1727
1842
 
1728
- def parse_transaction_status(self, status):
1729
- statuses = {
1843
+ def parse_transaction_status(self, status: Str):
1844
+ statuses: dict = {
1730
1845
  '0': 'pending',
1731
1846
  '1': 'ok',
1732
1847
  '2': 'failed',
@@ -1734,10 +1849,12 @@ class coinsph(Exchange, ImplicitAPI):
1734
1849
  }
1735
1850
  return self.safe_string(statuses, status, status)
1736
1851
 
1737
- async def fetch_deposit_address(self, code: str, params={}):
1852
+ async def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
1738
1853
  """
1739
1854
  fetch the deposit address for a currency associated with self account
1740
- :see: https://coins-docs.github.io/rest-api/#deposit-address-user_data
1855
+
1856
+ https://coins-docs.github.io/rest-api/#deposit-address-user_data
1857
+
1741
1858
  :param str code: unified currency code
1742
1859
  :param dict [params]: extra parameters specific to the exchange API endpoint
1743
1860
  :param str [params.network]: network for fetch deposit address
@@ -1749,7 +1866,7 @@ class coinsph(Exchange, ImplicitAPI):
1749
1866
  raise BadRequest(self.id + ' fetchDepositAddress() require network parameter')
1750
1867
  await self.load_markets()
1751
1868
  currency = self.currency(code)
1752
- request = {
1869
+ request: dict = {
1753
1870
  'coin': currency['id'],
1754
1871
  'network': networkId,
1755
1872
  }
@@ -1764,7 +1881,7 @@ class coinsph(Exchange, ImplicitAPI):
1764
1881
  #
1765
1882
  return self.parse_deposit_address(response, currency)
1766
1883
 
1767
- def parse_deposit_address(self, depositAddress, currency: Currency = None):
1884
+ def parse_deposit_address(self, depositAddress, currency: Currency = None) -> DepositAddress:
1768
1885
  #
1769
1886
  # {
1770
1887
  # "coin": "ETH",
@@ -1775,11 +1892,11 @@ class coinsph(Exchange, ImplicitAPI):
1775
1892
  currencyId = self.safe_string(depositAddress, 'coin')
1776
1893
  parsedCurrency = self.safe_currency_code(currencyId, currency)
1777
1894
  return {
1895
+ 'info': depositAddress,
1778
1896
  'currency': parsedCurrency,
1897
+ 'network': None,
1779
1898
  'address': self.safe_string(depositAddress, 'address'),
1780
1899
  'tag': self.safe_string(depositAddress, 'addressTag'),
1781
- 'network': None,
1782
- 'info': depositAddress,
1783
1900
  }
1784
1901
 
1785
1902
  def url_encode_query(self, query={}):
@@ -1832,7 +1949,7 @@ class coinsph(Exchange, ImplicitAPI):
1832
1949
  url += '?' + query
1833
1950
  return {'url': url, 'method': method, 'body': body, 'headers': headers}
1834
1951
 
1835
- def handle_errors(self, code, reason, url, method, headers, body, response, requestHeaders, requestBody):
1952
+ def handle_errors(self, code: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
1836
1953
  if response is None:
1837
1954
  return None
1838
1955
  responseCode = self.safe_string(response, 'code', None)