ccxt 4.2.77__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 +24 -0
  44. ccxt/abstract/kucoinfutures.py +34 -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 +3030 -1087
  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 +3104 -880
  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 +238 -49
  89. ccxt/async_support/bitget.py +1513 -563
  90. ccxt/async_support/bithumb.py +199 -65
  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 +392 -148
  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 +2231 -1193
  107. ccxt/async_support/cex.py +1409 -1329
  108. ccxt/async_support/coinbase.py +1454 -287
  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 +404 -109
  125. ccxt/async_support/deribit.py +557 -323
  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 +1472 -463
  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 +1633 -268
  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 +917 -357
  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 +1776 -454
  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 +1137 -296
  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 +1722 -480
  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 +3030 -1087
  187. ccxt/binancecoinm.py +2 -1
  188. ccxt/binanceus.py +12 -1
  189. ccxt/binanceusdm.py +3 -1
  190. ccxt/bingx.py +3104 -880
  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 +238 -49
  197. ccxt/bitget.py +1513 -563
  198. ccxt/bithumb.py +198 -65
  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 +392 -148
  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 +2231 -1193
  215. ccxt/cex.py +1408 -1329
  216. ccxt/coinbase.py +1454 -287
  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 +404 -109
  233. ccxt/deribit.py +557 -323
  234. ccxt/digifinex.py +340 -223
  235. ccxt/ellipx.py +1826 -0
  236. ccxt/exmo.py +259 -128
  237. ccxt/gate.py +1472 -463
  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 +1632 -268
  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 +917 -357
  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 +1776 -454
  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 +62 -14
  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 +203 -81
  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 +965 -665
  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 +167 -31
  309. ccxt/pro/exmo.py +252 -20
  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 +92 -33
  336. ccxt/pro/poloniex.py +128 -49
  337. ccxt/pro/poloniexfutures.py +53 -32
  338. ccxt/pro/probit.py +92 -85
  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 +437 -65
  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} +456 -391
  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} +456 -393
  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 +1137 -296
  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.77.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.77.dist-info/METADATA +0 -626
  545. ccxt-4.2.77.dist-info/RECORD +0 -534
  546. {ccxt-4.2.77.dist-info → ccxt-4.4.48.dist-info}/top_level.txt +0 -0
@@ -6,9 +6,10 @@
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.huobijp import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Account, Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
9
+ from ccxt.base.types import Account, Balances, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, 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
@@ -21,7 +22,6 @@ from ccxt.base.errors import NetworkError
21
22
  from ccxt.base.errors import ExchangeNotAvailable
22
23
  from ccxt.base.errors import OnMaintenance
23
24
  from ccxt.base.errors import RequestTimeout
24
- from ccxt.base.errors import AuthenticationError
25
25
  from ccxt.base.decimal_to_precision import TRUNCATE
26
26
  from ccxt.base.decimal_to_precision import TICK_SIZE
27
27
  from ccxt.base.precise import Precise
@@ -323,6 +323,7 @@ class huobijp(Exchange, ImplicitAPI):
323
323
  'fetchMarketsMethod': 'publicGetCommonSymbols',
324
324
  'fetchBalanceMethod': 'privateGetAccountAccountsIdBalance',
325
325
  'createOrderMethod': 'privatePostOrderOrdersPlace',
326
+ 'currencyToPrecisionRoundingMode': TRUNCATE,
326
327
  'language': 'en-US',
327
328
  'broker': {
328
329
  'id': 'AA03022abc',
@@ -361,14 +362,14 @@ class huobijp(Exchange, ImplicitAPI):
361
362
  await self.load_markets()
362
363
  if symbols is None:
363
364
  symbols = self.symbols
364
- result = {}
365
+ result: dict = {}
365
366
  for i in range(0, len(symbols)):
366
367
  symbol = symbols[i]
367
368
  result[symbol] = await self.fetch_trading_limits_by_id(self.market_id(symbol), params)
368
369
  return result
369
370
 
370
371
  async def fetch_trading_limits_by_id(self, id: str, params={}):
371
- request = {
372
+ request: dict = {
372
373
  'symbol': id,
373
374
  }
374
375
  response = await self.publicGetCommonExchange(self.extend(request, params))
@@ -419,7 +420,7 @@ class huobijp(Exchange, ImplicitAPI):
419
420
  def cost_to_precision(self, symbol, cost):
420
421
  return self.decimal_to_precision(cost, TRUNCATE, self.markets[symbol]['precision']['cost'], self.precisionMode)
421
422
 
422
- async def fetch_markets(self, params={}):
423
+ async def fetch_markets(self, params={}) -> List[Market]:
423
424
  """
424
425
  retrieves data on all markets for huobijp
425
426
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -530,7 +531,7 @@ class huobijp(Exchange, ImplicitAPI):
530
531
  })
531
532
  return result
532
533
 
533
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
534
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
534
535
  #
535
536
  # fetchTicker
536
537
  #
@@ -621,7 +622,7 @@ class huobijp(Exchange, ImplicitAPI):
621
622
  """
622
623
  await self.load_markets()
623
624
  market = self.market(symbol)
624
- request = {
625
+ request: dict = {
625
626
  'symbol': market['id'],
626
627
  'type': 'step0',
627
628
  }
@@ -666,7 +667,7 @@ class huobijp(Exchange, ImplicitAPI):
666
667
  """
667
668
  await self.load_markets()
668
669
  market = self.market(symbol)
669
- request = {
670
+ request: dict = {
670
671
  'symbol': market['id'],
671
672
  }
672
673
  response = await self.marketGetDetailMerged(self.extend(request, params))
@@ -708,7 +709,7 @@ class huobijp(Exchange, ImplicitAPI):
708
709
  response = await self.marketGetTickers(params)
709
710
  tickers = self.safe_value(response, 'data', [])
710
711
  timestamp = self.safe_integer(response, 'ts')
711
- result = {}
712
+ result: dict = {}
712
713
  for i in range(0, len(tickers)):
713
714
  marketId = self.safe_string(tickers[i], 'symbol')
714
715
  market = self.safe_market(marketId)
@@ -719,7 +720,7 @@ class huobijp(Exchange, ImplicitAPI):
719
720
  result[symbol] = ticker
720
721
  return self.filter_by_array_tickers(result, 'symbol', symbols)
721
722
 
722
- def parse_trade(self, trade, market: Market = None) -> Trade:
723
+ def parse_trade(self, trade: dict, market: Market = None) -> Trade:
723
724
  #
724
725
  # fetchTrades(public)
725
726
  #
@@ -808,7 +809,7 @@ class huobijp(Exchange, ImplicitAPI):
808
809
  :returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
809
810
  """
810
811
  await self.load_markets()
811
- request = {
812
+ request: dict = {
812
813
  'id': id,
813
814
  }
814
815
  response = await self.privateGetOrderOrdersIdMatchresults(self.extend(request, params))
@@ -825,7 +826,7 @@ class huobijp(Exchange, ImplicitAPI):
825
826
  """
826
827
  await self.load_markets()
827
828
  market = None
828
- request = {}
829
+ request: dict = {}
829
830
  if symbol is not None:
830
831
  market = self.market(symbol)
831
832
  request['symbol'] = market['id']
@@ -848,7 +849,7 @@ class huobijp(Exchange, ImplicitAPI):
848
849
  """
849
850
  await self.load_markets()
850
851
  market = self.market(symbol)
851
- request = {
852
+ request: dict = {
852
853
  'symbol': market['id'],
853
854
  }
854
855
  if limit is not None:
@@ -922,12 +923,12 @@ class huobijp(Exchange, ImplicitAPI):
922
923
  """
923
924
  await self.load_markets()
924
925
  market = self.market(symbol)
925
- request = {
926
+ request: dict = {
926
927
  'symbol': market['id'],
927
928
  'period': self.safe_string(self.timeframes, timeframe, timeframe),
928
929
  }
929
930
  if limit is not None:
930
- request['size'] = limit
931
+ request['size'] = min(limit, 2000)
931
932
  response = await self.marketGetHistoryKline(self.extend(request, params))
932
933
  #
933
934
  # {
@@ -941,7 +942,7 @@ class huobijp(Exchange, ImplicitAPI):
941
942
  # ]
942
943
  # }
943
944
  #
944
- data = self.safe_value(response, 'data', [])
945
+ data = self.safe_list(response, 'data', [])
945
946
  return self.parse_ohlcvs(data, market, timeframe, since, limit)
946
947
 
947
948
  async def fetch_accounts(self, params={}) -> List[Account]:
@@ -954,13 +955,13 @@ class huobijp(Exchange, ImplicitAPI):
954
955
  response = await self.privateGetAccountAccounts(params)
955
956
  return response['data']
956
957
 
957
- async def fetch_currencies(self, params={}):
958
+ async def fetch_currencies(self, params={}) -> Currencies:
958
959
  """
959
960
  fetches all available currencies on an exchange
960
961
  :param dict [params]: extra parameters specific to the exchange API endpoint
961
962
  :returns dict: an associative dictionary of currencies
962
963
  """
963
- request = {
964
+ request: dict = {
964
965
  'language': self.options['language'],
965
966
  }
966
967
  response = await self.publicGetSettingsCurrencys(self.extend(request, params))
@@ -1005,7 +1006,7 @@ class huobijp(Exchange, ImplicitAPI):
1005
1006
  # }
1006
1007
  #
1007
1008
  currencies = self.safe_value(response, 'data', [])
1008
- result = {}
1009
+ result: dict = {}
1009
1010
  for i in range(0, len(currencies)):
1010
1011
  currency = currencies[i]
1011
1012
  id = self.safe_value(currency, 'name')
@@ -1051,7 +1052,7 @@ class huobijp(Exchange, ImplicitAPI):
1051
1052
 
1052
1053
  def parse_balance(self, response) -> Balances:
1053
1054
  balances = self.safe_value(response['data'], 'list', [])
1054
- result = {'info': response}
1055
+ result: dict = {'info': response}
1055
1056
  for i in range(0, len(balances)):
1056
1057
  balance = balances[i]
1057
1058
  currencyId = self.safe_string(balance, 'currency')
@@ -1077,7 +1078,7 @@ class huobijp(Exchange, ImplicitAPI):
1077
1078
  await self.load_markets()
1078
1079
  await self.load_accounts()
1079
1080
  method = self.options['fetchBalanceMethod']
1080
- request = {
1081
+ request: dict = {
1081
1082
  'id': self.accounts[0]['id'],
1082
1083
  }
1083
1084
  response = await getattr(self, method)(self.extend(request, params))
@@ -1085,7 +1086,7 @@ class huobijp(Exchange, ImplicitAPI):
1085
1086
 
1086
1087
  async def fetch_orders_by_states(self, states, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
1087
1088
  await self.load_markets()
1088
- request = {
1089
+ request: dict = {
1089
1090
  'states': states,
1090
1091
  }
1091
1092
  market = None
@@ -1116,16 +1117,17 @@ class huobijp(Exchange, ImplicitAPI):
1116
1117
  async def fetch_order(self, id: str, symbol: Str = None, params={}):
1117
1118
  """
1118
1119
  fetches information on an order made by the user
1120
+ :param str id: order id
1119
1121
  :param str symbol: unified symbol of the market the order was made in
1120
1122
  :param dict [params]: extra parameters specific to the exchange API endpoint
1121
1123
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1122
1124
  """
1123
1125
  await self.load_markets()
1124
- request = {
1126
+ request: dict = {
1125
1127
  'id': id,
1126
1128
  }
1127
1129
  response = await self.privateGetOrderOrdersId(self.extend(request, params))
1128
- order = self.safe_value(response, 'data')
1130
+ order = self.safe_dict(response, 'data')
1129
1131
  return self.parse_order(order)
1130
1132
 
1131
1133
  async def fetch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
@@ -1169,7 +1171,7 @@ class huobijp(Exchange, ImplicitAPI):
1169
1171
 
1170
1172
  async def fetch_open_orders_v2(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
1171
1173
  await self.load_markets()
1172
- request = {}
1174
+ request: dict = {}
1173
1175
  market = None
1174
1176
  if symbol is not None:
1175
1177
  market = self.market(symbol)
@@ -1210,11 +1212,11 @@ class huobijp(Exchange, ImplicitAPI):
1210
1212
  # ]
1211
1213
  # }
1212
1214
  #
1213
- data = self.safe_value(response, 'data', [])
1215
+ data = self.safe_list(response, 'data', [])
1214
1216
  return self.parse_orders(data, market, since, limit)
1215
1217
 
1216
- def parse_order_status(self, status):
1217
- statuses = {
1218
+ def parse_order_status(self, status: Str):
1219
+ statuses: dict = {
1218
1220
  'partial-filled': 'open',
1219
1221
  'partial-canceled': 'canceled',
1220
1222
  'filled': 'closed',
@@ -1223,7 +1225,7 @@ class huobijp(Exchange, ImplicitAPI):
1223
1225
  }
1224
1226
  return self.safe_string(statuses, status, status)
1225
1227
 
1226
- def parse_order(self, order, market: Market = None) -> Order:
1228
+ def parse_order(self, order: dict, market: Market = None) -> Order:
1227
1229
  #
1228
1230
  # { id: 13997833014,
1229
1231
  # "symbol": "ethbtc",
@@ -1293,7 +1295,6 @@ class huobijp(Exchange, ImplicitAPI):
1293
1295
  'postOnly': None,
1294
1296
  'side': side,
1295
1297
  'price': price,
1296
- 'stopPrice': None,
1297
1298
  'triggerPrice': None,
1298
1299
  'average': None,
1299
1300
  'cost': cost,
@@ -1327,14 +1328,14 @@ class huobijp(Exchange, ImplicitAPI):
1327
1328
  :param str type: 'market' or 'limit'
1328
1329
  :param str side: 'buy' or 'sell'
1329
1330
  :param float amount: how much of currency you want to trade in units of base currency
1330
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
1331
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1331
1332
  :param dict [params]: extra parameters specific to the exchange API endpoint
1332
1333
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1333
1334
  """
1334
1335
  await self.load_markets()
1335
1336
  await self.load_accounts()
1336
1337
  market = self.market(symbol)
1337
- request = {
1338
+ request: dict = {
1338
1339
  'account-id': self.accounts[0]['id'],
1339
1340
  'symbol': market['id'],
1340
1341
  'type': side + '-' + type,
@@ -1430,7 +1431,7 @@ class huobijp(Exchange, ImplicitAPI):
1430
1431
  await self.load_markets()
1431
1432
  clientOrderIds = self.safe_value_2(params, 'clientOrderIds', 'client-order-ids')
1432
1433
  params = self.omit(params, ['clientOrderIds', 'client-order-ids'])
1433
- request = {}
1434
+ request: dict = {}
1434
1435
  if clientOrderIds is None:
1435
1436
  request['order-ids'] = ids
1436
1437
  else:
@@ -1468,7 +1469,61 @@ class huobijp(Exchange, ImplicitAPI):
1468
1469
  # }
1469
1470
  # }
1470
1471
  #
1471
- return response
1472
+ return self.parse_cancel_orders(response)
1473
+
1474
+ def parse_cancel_orders(self, orders):
1475
+ #
1476
+ # {
1477
+ # "success": [
1478
+ # "5983466"
1479
+ # ],
1480
+ # "failed": [
1481
+ # {
1482
+ # "err-msg": "Incorrect order state",
1483
+ # "order-state": 7,
1484
+ # "order-id": "",
1485
+ # "err-code": "order-orderstate-error",
1486
+ # "client-order-id": "first"
1487
+ # },
1488
+ # ...
1489
+ # ]
1490
+ # }
1491
+ #
1492
+ # {
1493
+ # "errors": [
1494
+ # {
1495
+ # "order_id": "769206471845261312",
1496
+ # "err_code": 1061,
1497
+ # "err_msg": "This order doesnt exist."
1498
+ # }
1499
+ # ],
1500
+ # "successes": "1258075374411399168,1258075393254871040"
1501
+ # }
1502
+ #
1503
+ successes = self.safe_string(orders, 'successes')
1504
+ success = None
1505
+ if successes is not None:
1506
+ success = successes.split(',')
1507
+ else:
1508
+ success = self.safe_list(orders, 'success', [])
1509
+ failed = self.safe_list_2(orders, 'errors', 'failed', [])
1510
+ result = []
1511
+ for i in range(0, len(success)):
1512
+ order = success[i]
1513
+ result.append(self.safe_order({
1514
+ 'info': order,
1515
+ 'id': order,
1516
+ 'status': 'canceled',
1517
+ }))
1518
+ for i in range(0, len(failed)):
1519
+ order = failed[i]
1520
+ result.append(self.safe_order({
1521
+ 'info': order,
1522
+ 'id': self.safe_string_2(order, 'order-id', 'order_id'),
1523
+ 'status': 'failed',
1524
+ 'clientOrderId': self.safe_string(order, 'client-order-id'),
1525
+ }))
1526
+ return result
1472
1527
 
1473
1528
  async def cancel_all_orders(self, symbol: Str = None, params={}):
1474
1529
  """
@@ -1478,7 +1533,7 @@ class huobijp(Exchange, ImplicitAPI):
1478
1533
  :returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
1479
1534
  """
1480
1535
  await self.load_markets()
1481
- request = {
1536
+ request: dict = {
1482
1537
  # 'account-id' string False NA The account id used for self cancel Refer to GET /v1/account/accounts
1483
1538
  # 'symbol': market['id'], # a list of comma-separated symbols, all symbols by default
1484
1539
  # 'types' 'string', buy-market, sell-market, buy-limit, sell-limit, buy-ioc, sell-ioc, buy-stop-limit, sell-stop-limit, buy-limit-fok, sell-limit-fok, buy-stop-limit-fok, sell-stop-limit-fok
@@ -1500,18 +1555,12 @@ class huobijp(Exchange, ImplicitAPI):
1500
1555
  # }
1501
1556
  # }
1502
1557
  #
1503
- return response
1504
-
1505
- def currency_to_precision(self, code, fee, networkCode=None):
1506
- return self.decimal_to_precision(fee, 0, self.currencies[code]['precision'], self.precisionMode)
1507
-
1508
- def safe_network(self, networkId):
1509
- lastCharacterIndex = len(networkId) - 1
1510
- lastCharacter = networkId[lastCharacterIndex]
1511
- if lastCharacter == '1':
1512
- networkId = networkId[0:lastCharacterIndex]
1513
- networksById = {}
1514
- return self.safe_string(networksById, networkId, networkId)
1558
+ data = self.safe_dict(response, 'data', {})
1559
+ return [
1560
+ self.safe_order({
1561
+ 'info': data,
1562
+ }),
1563
+ ]
1515
1564
 
1516
1565
  def parse_deposit_address(self, depositAddress, currency: Currency = None):
1517
1566
  #
@@ -1556,7 +1605,7 @@ class huobijp(Exchange, ImplicitAPI):
1556
1605
  currency = None
1557
1606
  if code is not None:
1558
1607
  currency = self.currency(code)
1559
- request = {
1608
+ request: dict = {
1560
1609
  'type': 'deposit',
1561
1610
  'from': 0, # From 'id' ... if you want to get results after a particular transaction id, pass the id in params.from
1562
1611
  }
@@ -1583,7 +1632,7 @@ class huobijp(Exchange, ImplicitAPI):
1583
1632
  currency = None
1584
1633
  if code is not None:
1585
1634
  currency = self.currency(code)
1586
- request = {
1635
+ request: dict = {
1587
1636
  'type': 'withdraw',
1588
1637
  'from': 0, # From 'id' ... if you want to get results after a particular transaction id, pass the id in params.from
1589
1638
  }
@@ -1595,7 +1644,7 @@ class huobijp(Exchange, ImplicitAPI):
1595
1644
  # return response
1596
1645
  return self.parse_transactions(response['data'], currency, since, limit)
1597
1646
 
1598
- def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
1647
+ def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
1599
1648
  #
1600
1649
  # fetchDeposits
1601
1650
  #
@@ -1673,8 +1722,8 @@ class huobijp(Exchange, ImplicitAPI):
1673
1722
  },
1674
1723
  }
1675
1724
 
1676
- def parse_transaction_status(self, status):
1677
- statuses = {
1725
+ def parse_transaction_status(self, status: Str):
1726
+ statuses: dict = {
1678
1727
  # deposit statuses
1679
1728
  'unknown': 'failed',
1680
1729
  'confirming': 'pending',
@@ -1696,7 +1745,7 @@ class huobijp(Exchange, ImplicitAPI):
1696
1745
  }
1697
1746
  return self.safe_string(statuses, status, status)
1698
1747
 
1699
- async def withdraw(self, code: str, amount: float, address, tag=None, params={}):
1748
+ async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
1700
1749
  """
1701
1750
  make a withdrawal
1702
1751
  :param str code: unified currency code
@@ -1710,7 +1759,7 @@ class huobijp(Exchange, ImplicitAPI):
1710
1759
  await self.load_markets()
1711
1760
  self.check_address(address)
1712
1761
  currency = self.currency(code)
1713
- request = {
1762
+ request: dict = {
1714
1763
  'address': address, # only supports existing addresses in your withdraw address list
1715
1764
  'amount': amount,
1716
1765
  'currency': currency['id'].lower(),
@@ -1749,7 +1798,7 @@ class huobijp(Exchange, ImplicitAPI):
1749
1798
  if api == 'private' or api == 'v2Private':
1750
1799
  self.check_required_credentials()
1751
1800
  timestamp = self.ymdhms(self.milliseconds(), 'T')
1752
- request = {
1801
+ request: dict = {
1753
1802
  'SignatureMethod': 'HmacSHA256',
1754
1803
  'SignatureVersion': '2',
1755
1804
  'AccessKeyId': self.apiKey,
@@ -1782,7 +1831,7 @@ class huobijp(Exchange, ImplicitAPI):
1782
1831
  }) + url
1783
1832
  return {'url': url, 'method': method, 'body': body, 'headers': headers}
1784
1833
 
1785
- def handle_errors(self, httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody):
1834
+ def handle_errors(self, httpCode: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
1786
1835
  if response is None:
1787
1836
  return None # fallback to default error handler
1788
1837
  if 'status' in response: