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,7 +6,7 @@
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.coinone import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Balances, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade
9
+ from ccxt.base.types import Balances, Currencies, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
  from ccxt.base.errors import ArgumentsRequired
@@ -25,8 +25,7 @@ class coinone(Exchange, ImplicitAPI):
25
25
  'id': 'coinone',
26
26
  'name': 'CoinOne',
27
27
  'countries': ['KR'], # Korea
28
- # 'enableRateLimit': False,
29
- 'rateLimit': 667,
28
+ 'rateLimit': 50,
30
29
  'version': 'v2',
31
30
  'pro': False,
32
31
  'has': {
@@ -53,7 +52,9 @@ class coinone(Exchange, ImplicitAPI):
53
52
  'fetchCrossBorrowRate': False,
54
53
  'fetchCrossBorrowRates': False,
55
54
  'fetchCurrencies': True,
55
+ 'fetchDepositAddress': False,
56
56
  'fetchDepositAddresses': True,
57
+ 'fetchDepositAddressesByNetwork': False,
57
58
  'fetchFundingHistory': False,
58
59
  'fetchFundingRate': False,
59
60
  'fetchFundingRateHistory': False,
@@ -72,8 +73,11 @@ class coinone(Exchange, ImplicitAPI):
72
73
  'fetchOrder': True,
73
74
  'fetchOrderBook': True,
74
75
  'fetchPosition': False,
76
+ 'fetchPositionHistory': False,
75
77
  'fetchPositionMode': False,
76
78
  'fetchPositions': False,
79
+ 'fetchPositionsForSymbol': False,
80
+ 'fetchPositionsHistory': False,
77
81
  'fetchPositionsRisk': False,
78
82
  'fetchPremiumIndexOHLCV': False,
79
83
  'fetchTicker': True,
@@ -193,22 +197,80 @@ class coinone(Exchange, ImplicitAPI):
193
197
  'maker': 0.002,
194
198
  },
195
199
  },
200
+ 'features': {
201
+ 'spot': {
202
+ 'sandbox': False,
203
+ 'createOrder': {
204
+ 'marginMode': False,
205
+ 'triggerPrice': False,
206
+ 'triggerPriceType': None,
207
+ 'triggerDirection': False,
208
+ 'stopLossPrice': False,
209
+ 'takeProfitPrice': False,
210
+ 'attachedStopLossTakeProfit': None,
211
+ 'timeInForce': {
212
+ 'IOC': False,
213
+ 'FOK': False,
214
+ 'PO': False,
215
+ 'GTD': False,
216
+ },
217
+ 'hedged': False,
218
+ 'trailing': False,
219
+ 'leverage': False,
220
+ 'marketBuyByCost': False,
221
+ 'marketBuyRequiresPrice': False,
222
+ 'selfTradePrevention': False,
223
+ 'iceberg': False,
224
+ },
225
+ 'createOrders': None,
226
+ 'fetchMyTrades': {
227
+ 'marginMode': False,
228
+ 'limit': 100, # todo implement
229
+ 'daysBack': 100000, # todo implement
230
+ 'untilDays': 100000, # todo implement
231
+ },
232
+ 'fetchOrder': {
233
+ 'marginMode': False,
234
+ 'trigger': False,
235
+ 'trailing': False,
236
+ },
237
+ 'fetchOpenOrders': {
238
+ 'marginMode': False,
239
+ 'limit': None,
240
+ 'trigger': False,
241
+ 'trailing': False,
242
+ },
243
+ 'fetchOrders': None,
244
+ 'fetchClosedOrders': None, # todo implement
245
+ 'fetchOHLCV': None, # todo implement
246
+ },
247
+ 'swap': {
248
+ 'linear': None,
249
+ 'inverse': None,
250
+ },
251
+ 'future': {
252
+ 'linear': None,
253
+ 'inverse': None,
254
+ },
255
+ },
196
256
  'precisionMode': TICK_SIZE,
197
257
  'exceptions': {
198
- '405': OnMaintenance, # {"errorCode":"405","status":"maintenance","result":"error"}
199
- '104': OrderNotFound, # {"errorCode":"104","errorMsg":"Order id is not exist","result":"error"}
200
- '108': BadSymbol, # {"errorCode":"108","errorMsg":"Unknown CryptoCurrency","result":"error"}
201
- '107': BadRequest, # {"errorCode":"107","errorMsg":"Parameter error","result":"error"}
258
+ '104': OrderNotFound,
259
+ '107': BadRequest,
260
+ '108': BadSymbol,
261
+ '405': OnMaintenance,
202
262
  },
203
263
  'commonCurrencies': {
204
264
  'SOC': 'Soda Coin',
205
265
  },
206
266
  })
207
267
 
208
- async def fetch_currencies(self, params={}):
268
+ async def fetch_currencies(self, params={}) -> Currencies:
209
269
  """
210
270
  fetches all available currencies on an exchange
211
- :see: https://docs.coinone.co.kr/reference/currencies
271
+
272
+ https://docs.coinone.co.kr/reference/currencies
273
+
212
274
  :param dict [params]: extra parameters specific to the exchange API endpoint
213
275
  :returns dict: an associative dictionary of currencies
214
276
  """
@@ -233,8 +295,8 @@ class coinone(Exchange, ImplicitAPI):
233
295
  # ]
234
296
  # }
235
297
  #
236
- result = {}
237
- currencies = self.safe_value(response, 'currencies', [])
298
+ result: dict = {}
299
+ currencies = self.safe_list(response, 'currencies', [])
238
300
  for i in range(0, len(currencies)):
239
301
  entry = currencies[i]
240
302
  id = self.safe_string(entry, 'symbol')
@@ -268,14 +330,16 @@ class coinone(Exchange, ImplicitAPI):
268
330
  }
269
331
  return result
270
332
 
271
- async def fetch_markets(self, params={}):
333
+ async def fetch_markets(self, params={}) -> List[Market]:
272
334
  """
273
335
  retrieves data on all markets for coinone
274
- :see: https://docs.coinone.co.kr/v1.0/reference/tickers
336
+
337
+ https://docs.coinone.co.kr/v1.0/reference/tickers
338
+
275
339
  :param dict [params]: extra parameters specific to the exchange API endpoint
276
340
  :returns dict[]: an array of objects representing market data
277
341
  """
278
- request = {
342
+ request: dict = {
279
343
  'quote_currency': 'KRW',
280
344
  }
281
345
  response = await self.v2PublicGetTickerNewQuoteCurrency(request)
@@ -312,7 +376,7 @@ class coinone(Exchange, ImplicitAPI):
312
376
  # ]
313
377
  # }
314
378
  #
315
- tickers = self.safe_value(response, 'tickers', [])
379
+ tickers = self.safe_list(response, 'tickers', [])
316
380
  result = []
317
381
  for i in range(0, len(tickers)):
318
382
  entry = self.safe_value(tickers, i)
@@ -374,7 +438,7 @@ class coinone(Exchange, ImplicitAPI):
374
438
  return result
375
439
 
376
440
  def parse_balance(self, response) -> Balances:
377
- result = {'info': response}
441
+ result: dict = {'info': response}
378
442
  balances = self.omit(response, [
379
443
  'errorCode',
380
444
  'result',
@@ -394,7 +458,9 @@ class coinone(Exchange, ImplicitAPI):
394
458
  async def fetch_balance(self, params={}) -> Balances:
395
459
  """
396
460
  query for balance and get the amount of funds available for trading or funds locked in orders
397
- :see: https://docs.coinone.co.kr/v1.0/reference/v21
461
+
462
+ https://docs.coinone.co.kr/v1.0/reference/v21
463
+
398
464
  :param dict [params]: extra parameters specific to the exchange API endpoint
399
465
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
400
466
  """
@@ -405,7 +471,9 @@ class coinone(Exchange, ImplicitAPI):
405
471
  async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
406
472
  """
407
473
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
408
- :see: https://docs.coinone.co.kr/v1.0/reference/orderbook
474
+
475
+ https://docs.coinone.co.kr/v1.0/reference/orderbook
476
+
409
477
  :param str symbol: unified symbol of the market to fetch the order book for
410
478
  :param int [limit]: the maximum amount of order book entries to return
411
479
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -413,7 +481,7 @@ class coinone(Exchange, ImplicitAPI):
413
481
  """
414
482
  await self.load_markets()
415
483
  market = self.market(symbol)
416
- request = {
484
+ request: dict = {
417
485
  'quote_currency': market['quote'],
418
486
  'target_currency': market['base'],
419
487
  }
@@ -449,15 +517,17 @@ class coinone(Exchange, ImplicitAPI):
449
517
  async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
450
518
  """
451
519
  fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
452
- :see: https://docs.coinone.co.kr/v1.0/reference/tickers
453
- :see: https://docs.coinone.co.kr/v1.0/reference/ticker
520
+
521
+ https://docs.coinone.co.kr/v1.0/reference/tickers
522
+ https://docs.coinone.co.kr/v1.0/reference/ticker
523
+
454
524
  :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
455
525
  :param dict [params]: extra parameters specific to the exchange API endpoint
456
526
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
457
527
  """
458
528
  await self.load_markets()
459
529
  symbols = self.market_symbols(symbols)
460
- request = {
530
+ request: dict = {
461
531
  'quote_currency': 'KRW',
462
532
  }
463
533
  market = None
@@ -503,20 +573,22 @@ class coinone(Exchange, ImplicitAPI):
503
573
  # ]
504
574
  # }
505
575
  #
506
- data = self.safe_value(response, 'tickers', [])
576
+ data = self.safe_list(response, 'tickers', [])
507
577
  return self.parse_tickers(data, symbols)
508
578
 
509
579
  async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
510
580
  """
511
581
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
512
- :see: https://docs.coinone.co.kr/v1.0/reference/ticker
582
+
583
+ https://docs.coinone.co.kr/v1.0/reference/ticker
584
+
513
585
  :param str symbol: unified symbol of the market to fetch the ticker for
514
586
  :param dict [params]: extra parameters specific to the exchange API endpoint
515
587
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
516
588
  """
517
589
  await self.load_markets()
518
590
  market = self.market(symbol)
519
- request = {
591
+ request: dict = {
520
592
  'quote_currency': market['quote'],
521
593
  'target_currency': market['base'],
522
594
  }
@@ -554,11 +626,11 @@ class coinone(Exchange, ImplicitAPI):
554
626
  # ]
555
627
  # }
556
628
  #
557
- data = self.safe_value(response, 'tickers', [])
558
- ticker = self.safe_value(data, 0, {})
629
+ data = self.safe_list(response, 'tickers', [])
630
+ ticker = self.safe_dict(data, 0, {})
559
631
  return self.parse_ticker(ticker, market)
560
632
 
561
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
633
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
562
634
  #
563
635
  # {
564
636
  # "quote_currency": "krw",
@@ -587,8 +659,8 @@ class coinone(Exchange, ImplicitAPI):
587
659
  #
588
660
  timestamp = self.safe_integer(ticker, 'timestamp')
589
661
  last = self.safe_string(ticker, 'last')
590
- asks = self.safe_value(ticker, 'best_asks')
591
- bids = self.safe_value(ticker, 'best_bids')
662
+ asks = self.safe_list(ticker, 'best_asks', [])
663
+ bids = self.safe_list(ticker, 'best_bids', [])
592
664
  baseId = self.safe_string(ticker, 'target_currency')
593
665
  quoteId = self.safe_string(ticker, 'quote_currency')
594
666
  base = self.safe_currency_code(baseId)
@@ -616,7 +688,7 @@ class coinone(Exchange, ImplicitAPI):
616
688
  'info': ticker,
617
689
  }, market)
618
690
 
619
- def parse_trade(self, trade, market: Market = None) -> Trade:
691
+ def parse_trade(self, trade: dict, market: Market = None) -> Trade:
620
692
  #
621
693
  # fetchTrades(public)
622
694
  #
@@ -642,7 +714,7 @@ class coinone(Exchange, ImplicitAPI):
642
714
  #
643
715
  timestamp = self.safe_integer(trade, 'timestamp')
644
716
  market = self.safe_market(None, market)
645
- isSellerMaker = self.safe_value(trade, 'is_seller_maker')
717
+ isSellerMaker = self.safe_bool(trade, 'is_seller_maker')
646
718
  side = None
647
719
  if isSellerMaker is not None:
648
720
  side = 'sell' if isSellerMaker else 'buy'
@@ -680,7 +752,9 @@ class coinone(Exchange, ImplicitAPI):
680
752
  async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
681
753
  """
682
754
  get the list of most recent trades for a particular symbol
683
- :see: https://docs.coinone.co.kr/v1.0/reference/recent-completed-orders
755
+
756
+ https://docs.coinone.co.kr/v1.0/reference/recent-completed-orders
757
+
684
758
  :param str symbol: unified symbol of the market to fetch trades for
685
759
  :param int [since]: timestamp in ms of the earliest trade to fetch
686
760
  :param int [limit]: the maximum amount of trades to fetch
@@ -689,7 +763,7 @@ class coinone(Exchange, ImplicitAPI):
689
763
  """
690
764
  await self.load_markets()
691
765
  market = self.market(symbol)
692
- request = {
766
+ request: dict = {
693
767
  'quote_currency': market['quote'],
694
768
  'target_currency': market['base'],
695
769
  }
@@ -714,19 +788,21 @@ class coinone(Exchange, ImplicitAPI):
714
788
  # ]
715
789
  # }
716
790
  #
717
- data = self.safe_value(response, 'transactions', [])
791
+ data = self.safe_list(response, 'transactions', [])
718
792
  return self.parse_trades(data, market, since, limit)
719
793
 
720
794
  async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
721
795
  """
722
796
  create a trade order
723
- :see: https://doc.coinone.co.kr/#tag/Order-V2/operation/v2_order_limit_buy
724
- :see: https://doc.coinone.co.kr/#tag/Order-V2/operation/v2_order_limit_sell
797
+
798
+ https://doc.coinone.co.kr/#tag/Order-V2/operation/v2_order_limit_buy
799
+ https://doc.coinone.co.kr/#tag/Order-V2/operation/v2_order_limit_sell
800
+
725
801
  :param str symbol: unified symbol of the market to create an order in
726
802
  :param str type: must be 'limit'
727
803
  :param str side: 'buy' or 'sell'
728
804
  :param float amount: how much of currency you want to trade in units of base currency
729
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
805
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
730
806
  :param dict [params]: extra parameters specific to the exchange API endpoint
731
807
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
732
808
  """
@@ -734,7 +810,7 @@ class coinone(Exchange, ImplicitAPI):
734
810
  raise ExchangeError(self.id + ' createOrder() allows limit orders only')
735
811
  await self.load_markets()
736
812
  market = self.market(symbol)
737
- request = {
813
+ request: dict = {
738
814
  'price': price,
739
815
  'currency': market['id'],
740
816
  'qty': amount,
@@ -753,6 +829,7 @@ class coinone(Exchange, ImplicitAPI):
753
829
  async def fetch_order(self, id: str, symbol: Str = None, params={}):
754
830
  """
755
831
  fetches information on an order made by the user
832
+ :param str id: order id
756
833
  :param str symbol: unified symbol of the market the order was made in
757
834
  :param dict [params]: extra parameters specific to the exchange API endpoint
758
835
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
@@ -761,7 +838,7 @@ class coinone(Exchange, ImplicitAPI):
761
838
  raise ArgumentsRequired(self.id + ' fetchOrder() requires a symbol argument')
762
839
  await self.load_markets()
763
840
  market = self.market(symbol)
764
- request = {
841
+ request: dict = {
765
842
  'order_id': id,
766
843
  'currency': market['id'],
767
844
  }
@@ -789,8 +866,8 @@ class coinone(Exchange, ImplicitAPI):
789
866
  #
790
867
  return self.parse_order(response, market)
791
868
 
792
- def parse_order_status(self, status):
793
- statuses = {
869
+ def parse_order_status(self, status: Str):
870
+ statuses: dict = {
794
871
  'live': 'open',
795
872
  'partially_filled': 'open',
796
873
  'partially_canceled': 'open',
@@ -799,7 +876,7 @@ class coinone(Exchange, ImplicitAPI):
799
876
  }
800
877
  return self.safe_string(statuses, status, status)
801
878
 
802
- def parse_order(self, order, market: Market = None) -> Order:
879
+ def parse_order(self, order: dict, market: Market = None) -> Order:
803
880
  #
804
881
  # createOrder
805
882
  #
@@ -894,7 +971,6 @@ class coinone(Exchange, ImplicitAPI):
894
971
  'postOnly': None,
895
972
  'side': side,
896
973
  'price': self.safe_string(order, 'price'),
897
- 'stopPrice': None,
898
974
  'triggerPrice': None,
899
975
  'cost': None,
900
976
  'average': self.safe_string(order, 'averageExecutedPrice'),
@@ -921,7 +997,7 @@ class coinone(Exchange, ImplicitAPI):
921
997
  raise ExchangeError(self.id + ' fetchOpenOrders() allows fetching closed orders with a specific symbol')
922
998
  await self.load_markets()
923
999
  market = self.market(symbol)
924
- request = {
1000
+ request: dict = {
925
1001
  'currency': market['id'],
926
1002
  }
927
1003
  response = await self.privatePostOrderLimitOrders(self.extend(request, params))
@@ -942,7 +1018,7 @@ class coinone(Exchange, ImplicitAPI):
942
1018
  # ]
943
1019
  # }
944
1020
  #
945
- limitOrders = self.safe_value(response, 'limitOrders', [])
1021
+ limitOrders = self.safe_list(response, 'limitOrders', [])
946
1022
  return self.parse_orders(limitOrders, market, since, limit)
947
1023
 
948
1024
  async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
@@ -958,7 +1034,7 @@ class coinone(Exchange, ImplicitAPI):
958
1034
  raise ArgumentsRequired(self.id + ' fetchMyTrades() requires a symbol argument')
959
1035
  await self.load_markets()
960
1036
  market = self.market(symbol)
961
- request = {
1037
+ request: dict = {
962
1038
  'currency': market['id'],
963
1039
  }
964
1040
  response = await self.v2PrivatePostOrderCompleteOrders(self.extend(request, params))
@@ -982,7 +1058,7 @@ class coinone(Exchange, ImplicitAPI):
982
1058
  # ]
983
1059
  # }
984
1060
  #
985
- completeOrders = self.safe_value(response, 'completeOrders', [])
1061
+ completeOrders = self.safe_list(response, 'completeOrders', [])
986
1062
  return self.parse_trades(completeOrders, market, since, limit)
987
1063
 
988
1064
  async def cancel_order(self, id: str, symbol: Str = None, params={}):
@@ -1003,7 +1079,7 @@ class coinone(Exchange, ImplicitAPI):
1003
1079
  # eslint-disable-next-line quotes
1004
1080
  raise ArgumentsRequired(self.id + " cancelOrder() requires {'price': 12345, 'qty': 1.2345, 'is_ask': 0} in the params argument.")
1005
1081
  await self.load_markets()
1006
- request = {
1082
+ request: dict = {
1007
1083
  'order_id': id,
1008
1084
  'price': price,
1009
1085
  'qty': qty,
@@ -1017,9 +1093,9 @@ class coinone(Exchange, ImplicitAPI):
1017
1093
  # "errorCode": "0"
1018
1094
  # }
1019
1095
  #
1020
- return response
1096
+ return self.safe_order(response)
1021
1097
 
1022
- async def fetch_deposit_addresses(self, codes: List[str] = None, params={}):
1098
+ async def fetch_deposit_addresses(self, codes: Strings = None, params={}) -> List[DepositAddress]:
1023
1099
  """
1024
1100
  fetch deposit addresses for multiple currencies and chain types
1025
1101
  :param str[]|None codes: list of unified currency codes, default is None
@@ -1042,9 +1118,9 @@ class coinone(Exchange, ImplicitAPI):
1042
1118
  # }
1043
1119
  # }
1044
1120
  #
1045
- walletAddress = self.safe_value(response, 'walletAddress', {})
1121
+ walletAddress = self.safe_dict(response, 'walletAddress', {})
1046
1122
  keys = list(walletAddress.keys())
1047
- result = {}
1123
+ result: dict = {}
1048
1124
  for i in range(0, len(keys)):
1049
1125
  key = keys[i]
1050
1126
  value = walletAddress[key]
@@ -1057,10 +1133,11 @@ class coinone(Exchange, ImplicitAPI):
1057
1133
  depositAddress = self.safe_value(result, code)
1058
1134
  if depositAddress is None:
1059
1135
  depositAddress = {
1136
+ 'info': value,
1060
1137
  'currency': code,
1138
+ 'network': None,
1061
1139
  'address': None,
1062
1140
  'tag': None,
1063
- 'info': value,
1064
1141
  }
1065
1142
  address = self.safe_string(depositAddress, 'address', value)
1066
1143
  self.check_address(address)
@@ -1106,19 +1183,16 @@ class coinone(Exchange, ImplicitAPI):
1106
1183
  }
1107
1184
  return {'url': url, 'method': method, 'body': body, 'headers': headers}
1108
1185
 
1109
- def handle_errors(self, code, reason, url, method, headers, body, response, requestHeaders, requestBody):
1186
+ def handle_errors(self, code: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
1110
1187
  if response is None:
1111
- return None
1112
- if 'result' in response:
1113
- result = response['result']
1114
- if result != 'success':
1115
- #
1116
- # { "errorCode": "405", "status": "maintenance", "result": "error"}
1117
- #
1118
- errorCode = self.safe_string(response, 'errorCode')
1119
- feedback = self.id + ' ' + body
1120
- self.throw_exactly_matched_exception(self.exceptions, errorCode, feedback)
1121
- raise ExchangeError(feedback)
1122
- else:
1123
- raise ExchangeError(self.id + ' ' + body)
1188
+ return None # fallback to default error handler
1189
+ #
1190
+ # {"result":"error","error_code":"107","error_msg":"Parameter value is wrong"}
1191
+ # {"result":"error","error_code":"108","error_msg":"Unknown CryptoCurrency"}
1192
+ #
1193
+ errorCode = self.safe_string(response, 'error_code')
1194
+ if errorCode is not None and errorCode != '0':
1195
+ feedback = self.id + ' ' + body
1196
+ self.throw_exactly_matched_exception(self.exceptions, errorCode, feedback)
1197
+ raise ExchangeError(feedback) # unknown message
1124
1198
  return None