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
ccxt/yobit.py CHANGED
@@ -6,9 +6,10 @@
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.yobit 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, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
+ from ccxt.base.errors import AuthenticationError
12
13
  from ccxt.base.errors import ArgumentsRequired
13
14
  from ccxt.base.errors import InsufficientFunds
14
15
  from ccxt.base.errors import InvalidOrder
@@ -17,7 +18,6 @@ from ccxt.base.errors import DDoSProtection
17
18
  from ccxt.base.errors import RateLimitExceeded
18
19
  from ccxt.base.errors import ExchangeNotAvailable
19
20
  from ccxt.base.errors import InvalidNonce
20
- from ccxt.base.errors import AuthenticationError
21
21
  from ccxt.base.decimal_to_precision import TICK_SIZE
22
22
  from ccxt.base.precise import Precise
23
23
 
@@ -51,35 +51,60 @@ class yobit(Exchange, ImplicitAPI):
51
51
  'createStopMarketOrder': False,
52
52
  'createStopOrder': False,
53
53
  'fetchBalance': True,
54
+ 'fetchBorrowInterest': False,
55
+ 'fetchBorrowRate': False,
54
56
  'fetchBorrowRateHistories': False,
55
57
  'fetchBorrowRateHistory': False,
58
+ 'fetchBorrowRates': False,
59
+ 'fetchBorrowRatesPerSymbol': False,
56
60
  'fetchCrossBorrowRate': False,
57
61
  'fetchCrossBorrowRates': False,
58
62
  'fetchDepositAddress': True,
63
+ 'fetchDepositAddresses': False,
64
+ 'fetchDepositAddressesByNetwork': False,
59
65
  'fetchDeposits': False,
60
66
  'fetchFundingHistory': False,
67
+ 'fetchFundingInterval': False,
68
+ 'fetchFundingIntervals': False,
61
69
  'fetchFundingRate': False,
62
70
  'fetchFundingRateHistory': False,
63
71
  'fetchFundingRates': False,
72
+ 'fetchGreeks': False,
64
73
  'fetchIndexOHLCV': False,
65
74
  'fetchIsolatedBorrowRate': False,
66
75
  'fetchIsolatedBorrowRates': False,
76
+ 'fetchIsolatedPositions': False,
67
77
  'fetchLeverage': False,
78
+ 'fetchLeverages': False,
68
79
  'fetchLeverageTiers': False,
80
+ 'fetchLiquidations': False,
81
+ 'fetchMarginAdjustmentHistory': False,
69
82
  'fetchMarginMode': False,
83
+ 'fetchMarginModes': False,
84
+ 'fetchMarketLeverageTiers': False,
70
85
  'fetchMarkets': True,
71
86
  'fetchMarkOHLCV': False,
87
+ 'fetchMarkPrices': False,
88
+ 'fetchMyLiquidations': False,
89
+ 'fetchMySettlementHistory': False,
72
90
  'fetchMyTrades': True,
91
+ 'fetchOpenInterest': False,
73
92
  'fetchOpenInterestHistory': False,
74
93
  'fetchOpenOrders': True,
94
+ 'fetchOption': False,
95
+ 'fetchOptionChain': False,
75
96
  'fetchOrder': True,
76
97
  'fetchOrderBook': True,
77
98
  'fetchOrderBooks': True,
78
99
  'fetchPosition': False,
100
+ 'fetchPositionHistory': False,
79
101
  'fetchPositionMode': False,
80
102
  'fetchPositions': False,
103
+ 'fetchPositionsForSymbol': False,
104
+ 'fetchPositionsHistory': False,
81
105
  'fetchPositionsRisk': False,
82
106
  'fetchPremiumIndexOHLCV': False,
107
+ 'fetchSettlementHistory': False,
83
108
  'fetchTicker': True,
84
109
  'fetchTickers': True,
85
110
  'fetchTrades': True,
@@ -88,9 +113,14 @@ class yobit(Exchange, ImplicitAPI):
88
113
  'fetchTransactions': False,
89
114
  'fetchTransfer': False,
90
115
  'fetchTransfers': False,
116
+ 'fetchUnderlyingAssets': False,
117
+ 'fetchVolatilityHistory': False,
91
118
  'fetchWithdrawals': False,
92
119
  'reduceMargin': False,
120
+ 'repayCrossMargin': False,
121
+ 'repayIsolatedMargin': False,
93
122
  'setLeverage': False,
123
+ 'setMargin': False,
94
124
  'setMarginMode': False,
95
125
  'setPositionMode': False,
96
126
  'transfer': False,
@@ -245,6 +275,7 @@ class yobit(Exchange, ImplicitAPI):
245
275
  'XIN': 'XINCoin',
246
276
  'XMT': 'SummitCoin',
247
277
  'XRA': 'Ratecoin',
278
+ 'BCHN': 'BSV',
248
279
  },
249
280
  'options': {
250
281
  'maxUrlLength': 2048,
@@ -294,7 +325,7 @@ class yobit(Exchange, ImplicitAPI):
294
325
  def parse_balance(self, response) -> Balances:
295
326
  balances = self.safe_dict(response, 'return', {})
296
327
  timestamp = self.safe_integer(balances, 'server_time')
297
- result = {
328
+ result: dict = {
298
329
  'info': response,
299
330
  'timestamp': timestamp,
300
331
  'datetime': self.iso8601(timestamp),
@@ -313,7 +344,9 @@ class yobit(Exchange, ImplicitAPI):
313
344
 
314
345
  def fetch_balance(self, params={}) -> Balances:
315
346
  """
316
- :see: https://yobit.net/en/api
347
+
348
+ https://yobit.net/en/api
349
+
317
350
  query for balance and get the amount of funds available for trading or funds locked in orders
318
351
  :param dict [params]: extra parameters specific to the exchange API endpoint
319
352
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
@@ -347,9 +380,11 @@ class yobit(Exchange, ImplicitAPI):
347
380
  #
348
381
  return self.parse_balance(response)
349
382
 
350
- def fetch_markets(self, params={}):
383
+ def fetch_markets(self, params={}) -> List[Market]:
351
384
  """
352
- :see: https://yobit.net/en/api
385
+
386
+ https://yobit.net/en/api
387
+
353
388
  retrieves data on all markets for yobit
354
389
  :param dict [params]: extra parameters specific to the exchange API endpoint
355
390
  :returns dict[]: an array of objects representing market data
@@ -443,7 +478,9 @@ class yobit(Exchange, ImplicitAPI):
443
478
 
444
479
  def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
445
480
  """
446
- :see: https://yobit.net/en/api
481
+
482
+ https://yobit.net/en/api
483
+
447
484
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
448
485
  :param str symbol: unified symbol of the market to fetch the order book for
449
486
  :param int [limit]: the maximum amount of order book entries to return
@@ -452,7 +489,7 @@ class yobit(Exchange, ImplicitAPI):
452
489
  """
453
490
  self.load_markets()
454
491
  market = self.market(symbol)
455
- request = {
492
+ request: dict = {
456
493
  'pair': market['id'],
457
494
  }
458
495
  if limit is not None:
@@ -466,7 +503,9 @@ class yobit(Exchange, ImplicitAPI):
466
503
 
467
504
  def fetch_order_books(self, symbols: Strings = None, limit: Int = None, params={}):
468
505
  """
469
- :see: https://yobit.net/en/api
506
+
507
+ https://yobit.net/en/api
508
+
470
509
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data for multiple markets
471
510
  :param str[]|None symbols: list of unified market symbols, all symbols fetched if None, default is None
472
511
  :param int [limit]: max number of entries per orderbook to return, default is None
@@ -484,14 +523,14 @@ class yobit(Exchange, ImplicitAPI):
484
523
  else:
485
524
  ids = self.market_ids(symbols)
486
525
  ids = '-'.join(ids)
487
- request = {
526
+ request: dict = {
488
527
  'pair': ids,
489
528
  # 'ignore_invalid': True,
490
529
  }
491
530
  if limit is not None:
492
531
  request['limit'] = limit
493
532
  response = self.publicGetDepthPair(self.extend(request, params))
494
- result = {}
533
+ result: dict = {}
495
534
  ids = list(response.keys())
496
535
  for i in range(0, len(ids)):
497
536
  id = ids[i]
@@ -499,7 +538,7 @@ class yobit(Exchange, ImplicitAPI):
499
538
  result[symbol] = self.parse_order_book(response[id], symbol)
500
539
  return result
501
540
 
502
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
541
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
503
542
  #
504
543
  # {
505
544
  # "high": 0.03497582,
@@ -538,36 +577,12 @@ class yobit(Exchange, ImplicitAPI):
538
577
  'info': ticker,
539
578
  }, market)
540
579
 
541
- def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
542
- """
543
- :see: https://yobit.net/en/api
544
- fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
545
- :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
546
- :param dict [params]: extra parameters specific to the exchange API endpoint
547
- :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
548
- """
549
- if symbols is None:
550
- raise ArgumentsRequired(self.id + ' fetchTickers() requires "symbols" argument')
551
- self.load_markets()
552
- symbols = self.market_symbols(symbols)
553
- ids = None
554
- if symbols is None:
555
- ids = self.ids
556
- else:
557
- ids = self.market_ids(symbols)
558
- idsLength = len(ids)
559
- idsString = '-'.join(ids)
560
- maxLength = self.safe_integer(self.options, 'maxUrlLength', 2048)
561
- # max URL length is 2048 symbols, including http schema, hostname, tld, etc...
562
- lenghtOfBaseUrl = 30 # the url including api-base and endpoint dir is 30 chars
563
- actualLength = len(idsString) + lenghtOfBaseUrl
564
- if actualLength > maxLength:
565
- raise ArgumentsRequired(self.id + ' fetchTickers() is being requested for ' + str(idsLength) + ' markets(which has an URL length of ' + str(actualLength) + ' characters), but it exceedes max URL length(' + str(maxLength) + '), please pass limisted symbols array to fetchTickers to fit in one request')
566
- request = {
580
+ def fetch_tickers_helper(self, idsString: str, params={}) -> Tickers:
581
+ request: dict = {
567
582
  'pair': idsString,
568
583
  }
569
584
  tickers = self.publicGetTickerPair(self.extend(request, params))
570
- result = {}
585
+ result: dict = {}
571
586
  keys = list(tickers.keys())
572
587
  for k in range(0, len(keys)):
573
588
  id = keys[k]
@@ -575,11 +590,61 @@ class yobit(Exchange, ImplicitAPI):
575
590
  market = self.safe_market(id)
576
591
  symbol = market['symbol']
577
592
  result[symbol] = self.parse_ticker(ticker, market)
578
- return self.filter_by_array_tickers(result, 'symbol', symbols)
593
+ return result
594
+
595
+ def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
596
+ """
597
+
598
+ https://yobit.net/en/api
599
+
600
+ fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
601
+ :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
602
+ :param dict [params]: extra parameters specific to the exchange API endpoint
603
+ :param dict [params.all]: you can set to `true` for convenience to fetch all tickers from self exchange by sending multiple requests
604
+ :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
605
+ """
606
+ allSymbols = None
607
+ allSymbols, params = self.handle_param_bool(params, 'all', False)
608
+ if symbols is None and not allSymbols:
609
+ raise ArgumentsRequired(self.id + ' fetchTickers() requires "symbols" argument or use `params["all"] = True` to send multiple requests for all markets')
610
+ self.load_markets()
611
+ promises = []
612
+ maxLength = self.safe_integer(self.options, 'maxUrlLength', 2048)
613
+ # max URL length is 2048 symbols, including http schema, hostname, tld, etc...
614
+ lenghtOfBaseUrl = 40 # safe space for the url including api-base and endpoint dir is 30 chars
615
+ if allSymbols:
616
+ symbols = self.symbols
617
+ ids = ''
618
+ for i in range(0, len(self.ids)):
619
+ id = self.ids[i]
620
+ prefix = '' if (ids == '') else '-'
621
+ ids += prefix + id
622
+ if len(ids) > maxLength:
623
+ promises.append(self.fetch_tickers_helper(ids, params))
624
+ ids = ''
625
+ if ids != '':
626
+ promises.append(self.fetch_tickers_helper(ids, params))
627
+ else:
628
+ symbols = self.market_symbols(symbols)
629
+ ids = self.market_ids(symbols)
630
+ idsLength: number = len(ids)
631
+ idsString = '-'.join(ids)
632
+ actualLength = len(idsString) + lenghtOfBaseUrl
633
+ if actualLength > maxLength:
634
+ raise ArgumentsRequired(self.id + ' fetchTickers() is being requested for ' + str(idsLength) + ' markets(which has an URL length of ' + str(actualLength) + ' characters), but it exceedes max URL length(' + str(maxLength) + '), please pass limisted symbols array to fetchTickers to fit in one request')
635
+ promises.append(self.fetch_tickers_helper(idsString, params))
636
+ resultAll = promises
637
+ finalResult = {}
638
+ for i in range(0, len(resultAll)):
639
+ result = self.filter_by_array_tickers(resultAll[i], 'symbol', symbols)
640
+ finalResult = self.extend(finalResult, result)
641
+ return finalResult
579
642
 
580
643
  def fetch_ticker(self, symbol: str, params={}) -> Ticker:
581
644
  """
582
- :see: https://yobit.net/en/api
645
+
646
+ https://yobit.net/en/api
647
+
583
648
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
584
649
  :param str symbol: unified symbol of the market to fetch the ticker for
585
650
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -588,7 +653,7 @@ class yobit(Exchange, ImplicitAPI):
588
653
  tickers = self.fetch_tickers([symbol], params)
589
654
  return tickers[symbol]
590
655
 
591
- def parse_trade(self, trade, market: Market = None) -> Trade:
656
+ def parse_trade(self, trade: dict, market: Market = None) -> Trade:
592
657
  #
593
658
  # fetchTrades(public)
594
659
  #
@@ -664,7 +729,9 @@ class yobit(Exchange, ImplicitAPI):
664
729
 
665
730
  def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
666
731
  """
667
- :see: https://yobit.net/en/api
732
+
733
+ https://yobit.net/en/api
734
+
668
735
  get the list of most recent trades for a particular symbol
669
736
  :param str symbol: unified symbol of the market to fetch trades for
670
737
  :param int [since]: timestamp in ms of the earliest trade to fetch
@@ -674,7 +741,7 @@ class yobit(Exchange, ImplicitAPI):
674
741
  """
675
742
  self.load_markets()
676
743
  market = self.market(symbol)
677
- request = {
744
+ request: dict = {
678
745
  'pair': market['id'],
679
746
  }
680
747
  if limit is not None:
@@ -700,9 +767,11 @@ class yobit(Exchange, ImplicitAPI):
700
767
  result = self.safe_list(response, market['id'], [])
701
768
  return self.parse_trades(result, market, since, limit)
702
769
 
703
- def fetch_trading_fees(self, params={}):
770
+ def fetch_trading_fees(self, params={}) -> TradingFees:
704
771
  """
705
- :see: https://yobit.net/en/api
772
+
773
+ https://yobit.net/en/api
774
+
706
775
  fetch the trading fees for multiple markets
707
776
  :param dict [params]: extra parameters specific to the exchange API endpoint
708
777
  :returns dict: a dictionary of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>` indexed by market symbols
@@ -730,7 +799,7 @@ class yobit(Exchange, ImplicitAPI):
730
799
  #
731
800
  pairs = self.safe_dict(response, 'pairs', {})
732
801
  marketIds = list(pairs.keys())
733
- result = {}
802
+ result: dict = {}
734
803
  for i in range(0, len(marketIds)):
735
804
  marketId = marketIds[i]
736
805
  pair = self.safe_dict(pairs, marketId, {})
@@ -751,13 +820,15 @@ class yobit(Exchange, ImplicitAPI):
751
820
 
752
821
  def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
753
822
  """
754
- :see: https://yobit.net/en/api
823
+
824
+ https://yobit.net/en/api
825
+
755
826
  create a trade order
756
827
  :param str symbol: unified symbol of the market to create an order in
757
828
  :param str type: must be 'limit'
758
829
  :param str side: 'buy' or 'sell'
759
830
  :param float amount: how much of currency you want to trade in units of base currency
760
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
831
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
761
832
  :param dict [params]: extra parameters specific to the exchange API endpoint
762
833
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
763
834
  """
@@ -765,7 +836,7 @@ class yobit(Exchange, ImplicitAPI):
765
836
  raise ExchangeError(self.id + ' createOrder() allows limit orders only')
766
837
  self.load_markets()
767
838
  market = self.market(symbol)
768
- request = {
839
+ request: dict = {
769
840
  'pair': market['id'],
770
841
  'type': side,
771
842
  'amount': self.amount_to_precision(symbol, amount),
@@ -798,7 +869,9 @@ class yobit(Exchange, ImplicitAPI):
798
869
 
799
870
  def cancel_order(self, id: str, symbol: Str = None, params={}):
800
871
  """
801
- :see: https://yobit.net/en/api
872
+
873
+ https://yobit.net/en/api
874
+
802
875
  cancels an open order
803
876
  :param str id: order id
804
877
  :param str symbol: not used by yobit cancelOrder()
@@ -806,7 +879,7 @@ class yobit(Exchange, ImplicitAPI):
806
879
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
807
880
  """
808
881
  self.load_markets()
809
- request = {
882
+ request: dict = {
810
883
  'order_id': int(id),
811
884
  }
812
885
  response = self.privatePostCancelOrder(self.extend(request, params))
@@ -832,8 +905,8 @@ class yobit(Exchange, ImplicitAPI):
832
905
  result = self.safe_dict(response, 'return', {})
833
906
  return self.parse_order(result)
834
907
 
835
- def parse_order_status(self, status):
836
- statuses = {
908
+ def parse_order_status(self, status: Str):
909
+ statuses: dict = {
837
910
  '0': 'open',
838
911
  '1': 'closed',
839
912
  '2': 'canceled',
@@ -841,7 +914,7 @@ class yobit(Exchange, ImplicitAPI):
841
914
  }
842
915
  return self.safe_string(statuses, status, status)
843
916
 
844
- def parse_order(self, order, market: Market = None) -> Order:
917
+ def parse_order(self, order: dict, market: Market = None) -> Order:
845
918
  #
846
919
  # createOrder(private)
847
920
  #
@@ -931,7 +1004,6 @@ class yobit(Exchange, ImplicitAPI):
931
1004
  'postOnly': None,
932
1005
  'side': side,
933
1006
  'price': price,
934
- 'stopPrice': None,
935
1007
  'triggerPrice': None,
936
1008
  'cost': None,
937
1009
  'amount': amount,
@@ -945,14 +1017,17 @@ class yobit(Exchange, ImplicitAPI):
945
1017
 
946
1018
  def fetch_order(self, id: str, symbol: Str = None, params={}):
947
1019
  """
948
- :see: https://yobit.net/en/api
1020
+
1021
+ https://yobit.net/en/api
1022
+
949
1023
  fetches information on an order made by the user
1024
+ :param str id: order id
950
1025
  :param str symbol: not used by yobit fetchOrder
951
1026
  :param dict [params]: extra parameters specific to the exchange API endpoint
952
1027
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
953
1028
  """
954
1029
  self.load_markets()
955
- request = {
1030
+ request: dict = {
956
1031
  'order_id': int(id),
957
1032
  }
958
1033
  response = self.privatePostOrderInfo(self.extend(request, params))
@@ -978,7 +1053,9 @@ class yobit(Exchange, ImplicitAPI):
978
1053
 
979
1054
  def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
980
1055
  """
981
- :see: https://yobit.net/en/api
1056
+
1057
+ https://yobit.net/en/api
1058
+
982
1059
  fetch all unfilled currently open orders
983
1060
  :param str symbol: unified market symbol
984
1061
  :param int [since]: the earliest time in ms to fetch open orders for
@@ -989,7 +1066,7 @@ class yobit(Exchange, ImplicitAPI):
989
1066
  if symbol is None:
990
1067
  raise ArgumentsRequired(self.id + ' fetchOpenOrders() requires a symbol argument')
991
1068
  self.load_markets()
992
- request = {}
1069
+ request: dict = {}
993
1070
  market = None
994
1071
  if symbol is not None:
995
1072
  marketInner = self.market(symbol)
@@ -1023,7 +1100,9 @@ class yobit(Exchange, ImplicitAPI):
1023
1100
 
1024
1101
  def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
1025
1102
  """
1026
- :see: https://yobit.net/en/api
1103
+
1104
+ https://yobit.net/en/api
1105
+
1027
1106
  fetch all trades made by the user
1028
1107
  :param str symbol: unified market symbol
1029
1108
  :param int [since]: the earliest time in ms to fetch trades for
@@ -1036,7 +1115,7 @@ class yobit(Exchange, ImplicitAPI):
1036
1115
  self.load_markets()
1037
1116
  market = self.market(symbol)
1038
1117
  # some derived classes use camelcase notation for request fields
1039
- request = {
1118
+ request: dict = {
1040
1119
  # 'from': 123456789, # trade ID, from which the display starts numerical 0(test result: liqui ignores self field)
1041
1120
  # 'count': 1000, # the number of trades for display numerical, default = 1000
1042
1121
  # 'from_id': trade ID, from which the display starts numerical 0
@@ -1071,7 +1150,7 @@ class yobit(Exchange, ImplicitAPI):
1071
1150
  ids = list(trades.keys())
1072
1151
  result = []
1073
1152
  for i in range(0, len(ids)):
1074
- id = ids[i]
1153
+ id = self.safe_string(ids, i)
1075
1154
  trade = self.parse_trade(self.extend(trades[id], {
1076
1155
  'trade_id': id,
1077
1156
  }), market)
@@ -1080,13 +1159,15 @@ class yobit(Exchange, ImplicitAPI):
1080
1159
 
1081
1160
  def create_deposit_address(self, code: str, params={}):
1082
1161
  """
1083
- :see: https://yobit.net/en/api
1162
+
1163
+ https://yobit.net/en/api
1164
+
1084
1165
  create a currency deposit address
1085
1166
  :param str code: unified currency code of the currency for the deposit address
1086
1167
  :param dict [params]: extra parameters specific to the exchange API endpoint
1087
1168
  :returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
1088
1169
  """
1089
- request = {
1170
+ request: dict = {
1090
1171
  'need_new': 1,
1091
1172
  }
1092
1173
  response = self.fetch_deposit_address(code, self.extend(request, params))
@@ -1099,10 +1180,12 @@ class yobit(Exchange, ImplicitAPI):
1099
1180
  'info': response['info'],
1100
1181
  }
1101
1182
 
1102
- def fetch_deposit_address(self, code: str, params={}):
1183
+ def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
1103
1184
  """
1104
- :see: https://yobit.net/en/api
1105
1185
  fetch the deposit address for a currency associated with self account
1186
+
1187
+ https://yobit.net/en/api
1188
+
1106
1189
  :param str code: unified currency code
1107
1190
  :param dict [params]: extra parameters specific to the exchange API endpoint
1108
1191
  :returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
@@ -1117,7 +1200,7 @@ class yobit(Exchange, ImplicitAPI):
1117
1200
  if network != 'ERC20':
1118
1201
  currencyId = currencyId + network.lower()
1119
1202
  params = self.omit(params, 'network')
1120
- request = {
1203
+ request: dict = {
1121
1204
  'coinName': currencyId,
1122
1205
  'need_new': 0,
1123
1206
  }
@@ -1125,34 +1208,18 @@ class yobit(Exchange, ImplicitAPI):
1125
1208
  address = self.safe_string(response['return'], 'address')
1126
1209
  self.check_address(address)
1127
1210
  return {
1128
- 'id': None,
1211
+ 'info': response,
1129
1212
  'currency': code,
1213
+ 'network': None,
1130
1214
  'address': address,
1131
1215
  'tag': None,
1132
- 'network': None,
1133
- 'info': response,
1134
- 'txid': None,
1135
- 'type': None,
1136
- 'amount': None,
1137
- 'status': None,
1138
- 'timestamp': None,
1139
- 'datetime': None,
1140
- 'addressFrom': None,
1141
- 'addressTo': None,
1142
- 'tagFrom': None,
1143
- 'tagTo': None,
1144
- 'updated': None,
1145
- 'comment': None,
1146
- 'fee': {
1147
- 'currency': None,
1148
- 'cost': None,
1149
- 'rate': None,
1150
- },
1151
1216
  }
1152
1217
 
1153
- def withdraw(self, code: str, amount: float, address, tag=None, params={}):
1218
+ def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
1154
1219
  """
1155
- :see: https://yobit.net/en/api
1220
+
1221
+ https://yobit.net/en/api
1222
+
1156
1223
  make a withdrawal
1157
1224
  :param str code: unified currency code
1158
1225
  :param float amount: the amount to withdraw
@@ -1165,7 +1232,7 @@ class yobit(Exchange, ImplicitAPI):
1165
1232
  self.check_address(address)
1166
1233
  self.load_markets()
1167
1234
  currency = self.currency(code)
1168
- request = {
1235
+ request: dict = {
1169
1236
  'coinName': currency['id'],
1170
1237
  'amount': amount,
1171
1238
  'address': address,
@@ -1233,7 +1300,7 @@ class yobit(Exchange, ImplicitAPI):
1233
1300
  }
1234
1301
  return {'url': url, 'method': method, 'body': body, 'headers': headers}
1235
1302
 
1236
- def handle_errors(self, httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody):
1303
+ def handle_errors(self, httpCode: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
1237
1304
  if response is None:
1238
1305
  return None # fallback to default error handler
1239
1306
  if 'success' in response: