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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (546) hide show
  1. ccxt/__init__.py +36 -14
  2. ccxt/abstract/alpaca.py +4 -0
  3. ccxt/abstract/bigone.py +1 -1
  4. ccxt/abstract/binance.py +112 -48
  5. ccxt/abstract/binancecoinm.py +112 -48
  6. ccxt/abstract/binanceus.py +147 -83
  7. ccxt/abstract/binanceusdm.py +112 -48
  8. ccxt/abstract/bingx.py +133 -78
  9. ccxt/abstract/bitbank.py +5 -0
  10. ccxt/abstract/bitfinex.py +136 -65
  11. ccxt/abstract/bitfinex1.py +69 -0
  12. ccxt/abstract/bitflyer.py +1 -0
  13. ccxt/abstract/bitget.py +8 -1
  14. ccxt/abstract/bitmart.py +13 -1
  15. ccxt/abstract/bitopro.py +1 -0
  16. ccxt/abstract/bitpanda.py +0 -12
  17. ccxt/abstract/bitrue.py +3 -3
  18. ccxt/abstract/bitstamp.py +26 -3
  19. ccxt/abstract/blofin.py +24 -0
  20. ccxt/abstract/btcbox.py +1 -0
  21. ccxt/abstract/bybit.py +29 -14
  22. ccxt/abstract/cex.py +28 -29
  23. ccxt/abstract/coinbase.py +6 -0
  24. ccxt/abstract/coinbaseadvanced.py +94 -0
  25. ccxt/abstract/{coinbasepro.py → coinbaseexchange.py} +1 -0
  26. ccxt/abstract/coinbaseinternational.py +1 -1
  27. ccxt/abstract/coincatch.py +94 -0
  28. ccxt/abstract/coinex.py +233 -123
  29. ccxt/abstract/coinmetro.py +1 -0
  30. ccxt/abstract/cryptocom.py +14 -0
  31. ccxt/abstract/defx.py +69 -0
  32. ccxt/abstract/deribit.py +1 -0
  33. ccxt/abstract/digifinex.py +1 -0
  34. ccxt/abstract/ellipx.py +25 -0
  35. ccxt/abstract/gate.py +20 -0
  36. ccxt/abstract/gateio.py +20 -0
  37. ccxt/abstract/gemini.py +1 -0
  38. ccxt/abstract/hashkey.py +67 -0
  39. ccxt/abstract/hyperliquid.py +1 -1
  40. ccxt/abstract/independentreserve.py +6 -0
  41. ccxt/abstract/kraken.py +4 -3
  42. ccxt/abstract/krakenfutures.py +4 -0
  43. ccxt/abstract/kucoin.py +24 -0
  44. ccxt/abstract/kucoinfutures.py +34 -0
  45. ccxt/abstract/luno.py +2 -0
  46. ccxt/abstract/mexc.py +4 -0
  47. ccxt/abstract/myokx.py +340 -0
  48. ccxt/abstract/oceanex.py +5 -0
  49. ccxt/abstract/okx.py +30 -0
  50. ccxt/abstract/onetrading.py +0 -12
  51. ccxt/abstract/oxfun.py +34 -0
  52. ccxt/abstract/paradex.py +40 -0
  53. ccxt/abstract/phemex.py +1 -0
  54. ccxt/abstract/upbit.py +4 -0
  55. ccxt/abstract/vertex.py +19 -0
  56. ccxt/abstract/whitebit.py +31 -1
  57. ccxt/abstract/woo.py +6 -2
  58. ccxt/abstract/woofipro.py +119 -0
  59. ccxt/abstract/xt.py +153 -0
  60. ccxt/abstract/zonda.py +6 -0
  61. ccxt/ace.py +164 -60
  62. ccxt/alpaca.py +727 -63
  63. ccxt/ascendex.py +395 -249
  64. ccxt/async_support/__init__.py +36 -14
  65. ccxt/async_support/ace.py +164 -60
  66. ccxt/async_support/alpaca.py +727 -63
  67. ccxt/async_support/ascendex.py +396 -249
  68. ccxt/async_support/base/exchange.py +531 -155
  69. ccxt/async_support/base/ws/aiohttp_client.py +28 -5
  70. ccxt/async_support/base/ws/cache.py +3 -2
  71. ccxt/async_support/base/ws/client.py +26 -5
  72. ccxt/async_support/base/ws/fast_client.py +4 -3
  73. ccxt/async_support/base/ws/functions.py +1 -1
  74. ccxt/async_support/base/ws/future.py +40 -31
  75. ccxt/async_support/base/ws/order_book_side.py +3 -0
  76. ccxt/async_support/bequant.py +1 -1
  77. ccxt/async_support/bigone.py +329 -202
  78. ccxt/async_support/binance.py +3030 -1087
  79. ccxt/async_support/binancecoinm.py +2 -1
  80. ccxt/async_support/binanceus.py +12 -1
  81. ccxt/async_support/binanceusdm.py +3 -1
  82. ccxt/async_support/bingx.py +3104 -880
  83. ccxt/async_support/bit2c.py +119 -38
  84. ccxt/async_support/bitbank.py +215 -76
  85. ccxt/async_support/bitbns.py +124 -53
  86. ccxt/async_support/bitfinex.py +3236 -1078
  87. ccxt/async_support/bitfinex1.py +1711 -0
  88. ccxt/async_support/bitflyer.py +238 -49
  89. ccxt/async_support/bitget.py +1513 -563
  90. ccxt/async_support/bithumb.py +199 -65
  91. ccxt/async_support/bitmart.py +1320 -435
  92. ccxt/async_support/bitmex.py +308 -111
  93. ccxt/async_support/bitopro.py +256 -96
  94. ccxt/async_support/bitrue.py +365 -233
  95. ccxt/async_support/bitso.py +201 -89
  96. ccxt/async_support/bitstamp.py +438 -269
  97. ccxt/async_support/bitteam.py +179 -73
  98. ccxt/async_support/bitvavo.py +180 -70
  99. ccxt/async_support/bl3p.py +92 -25
  100. ccxt/async_support/blockchaincom.py +193 -79
  101. ccxt/async_support/blofin.py +392 -148
  102. ccxt/async_support/btcalpha.py +161 -55
  103. ccxt/async_support/btcbox.py +250 -34
  104. ccxt/async_support/btcmarkets.py +232 -85
  105. ccxt/async_support/btcturk.py +159 -60
  106. ccxt/async_support/bybit.py +2231 -1193
  107. ccxt/async_support/cex.py +1409 -1329
  108. ccxt/async_support/coinbase.py +1454 -287
  109. ccxt/async_support/coinbaseadvanced.py +17 -0
  110. ccxt/async_support/{coinbasepro.py → coinbaseexchange.py} +233 -99
  111. ccxt/async_support/coinbaseinternational.py +428 -88
  112. ccxt/async_support/coincatch.py +5152 -0
  113. ccxt/async_support/coincheck.py +121 -38
  114. ccxt/async_support/coinex.py +4020 -3339
  115. ccxt/async_support/coinlist.py +273 -116
  116. ccxt/async_support/coinmate.py +204 -97
  117. ccxt/async_support/coinmetro.py +203 -110
  118. ccxt/async_support/coinone.py +142 -68
  119. ccxt/async_support/coinsph.py +206 -89
  120. ccxt/async_support/coinspot.py +137 -62
  121. ccxt/async_support/cryptocom.py +515 -185
  122. ccxt/async_support/currencycom.py +203 -85
  123. ccxt/async_support/defx.py +2066 -0
  124. ccxt/async_support/delta.py +404 -109
  125. ccxt/async_support/deribit.py +557 -323
  126. ccxt/async_support/digifinex.py +340 -223
  127. ccxt/async_support/ellipx.py +1826 -0
  128. ccxt/async_support/exmo.py +259 -128
  129. ccxt/async_support/gate.py +1472 -463
  130. ccxt/async_support/gemini.py +206 -84
  131. ccxt/async_support/hashkey.py +4164 -0
  132. ccxt/async_support/hitbtc.py +334 -178
  133. ccxt/async_support/hollaex.py +134 -83
  134. ccxt/async_support/htx.py +1095 -563
  135. ccxt/async_support/huobijp.py +105 -56
  136. ccxt/async_support/hyperliquid.py +1633 -268
  137. ccxt/async_support/idex.py +148 -95
  138. ccxt/async_support/independentreserve.py +236 -31
  139. ccxt/async_support/indodax.py +165 -62
  140. ccxt/async_support/kraken.py +871 -354
  141. ccxt/async_support/krakenfutures.py +324 -100
  142. ccxt/async_support/kucoin.py +917 -357
  143. ccxt/async_support/kucoinfutures.py +1004 -149
  144. ccxt/async_support/kuna.py +138 -106
  145. ccxt/async_support/latoken.py +135 -79
  146. ccxt/async_support/lbank.py +290 -113
  147. ccxt/async_support/luno.py +112 -62
  148. ccxt/async_support/lykke.py +104 -55
  149. ccxt/async_support/mercado.py +36 -29
  150. ccxt/async_support/mexc.py +995 -429
  151. ccxt/async_support/myokx.py +43 -0
  152. ccxt/async_support/ndax.py +163 -82
  153. ccxt/async_support/novadax.py +121 -75
  154. ccxt/async_support/oceanex.py +175 -59
  155. ccxt/async_support/okcoin.py +222 -163
  156. ccxt/async_support/okx.py +1776 -454
  157. ccxt/async_support/onetrading.py +132 -414
  158. ccxt/async_support/oxfun.py +2832 -0
  159. ccxt/async_support/p2b.py +79 -51
  160. ccxt/async_support/paradex.py +2017 -0
  161. ccxt/async_support/paymium.py +56 -32
  162. ccxt/async_support/phemex.py +572 -196
  163. ccxt/async_support/poloniex.py +218 -95
  164. ccxt/async_support/poloniexfutures.py +260 -92
  165. ccxt/async_support/probit.py +143 -110
  166. ccxt/async_support/timex.py +123 -70
  167. ccxt/async_support/tokocrypto.py +129 -93
  168. ccxt/async_support/tradeogre.py +39 -25
  169. ccxt/async_support/upbit.py +322 -113
  170. ccxt/async_support/vertex.py +2983 -0
  171. ccxt/async_support/wavesexchange.py +227 -173
  172. ccxt/async_support/wazirx.py +145 -65
  173. ccxt/async_support/whitebit.py +533 -138
  174. ccxt/async_support/woo.py +1137 -296
  175. ccxt/async_support/woofipro.py +2716 -0
  176. ccxt/async_support/xt.py +4628 -0
  177. ccxt/async_support/yobit.py +160 -92
  178. ccxt/async_support/zaif.py +80 -33
  179. ccxt/async_support/zonda.py +140 -69
  180. ccxt/base/errors.py +51 -20
  181. ccxt/base/exchange.py +1722 -480
  182. ccxt/base/precise.py +10 -0
  183. ccxt/base/types.py +223 -4
  184. ccxt/bequant.py +1 -1
  185. ccxt/bigone.py +329 -202
  186. ccxt/binance.py +3030 -1087
  187. ccxt/binancecoinm.py +2 -1
  188. ccxt/binanceus.py +12 -1
  189. ccxt/binanceusdm.py +3 -1
  190. ccxt/bingx.py +3104 -880
  191. ccxt/bit2c.py +119 -38
  192. ccxt/bitbank.py +215 -76
  193. ccxt/bitbns.py +124 -53
  194. ccxt/bitfinex.py +3235 -1078
  195. ccxt/bitfinex1.py +1710 -0
  196. ccxt/bitflyer.py +238 -49
  197. ccxt/bitget.py +1513 -563
  198. ccxt/bithumb.py +198 -65
  199. ccxt/bitmart.py +1320 -435
  200. ccxt/bitmex.py +308 -111
  201. ccxt/bitopro.py +256 -96
  202. ccxt/bitrue.py +365 -233
  203. ccxt/bitso.py +201 -89
  204. ccxt/bitstamp.py +438 -269
  205. ccxt/bitteam.py +179 -73
  206. ccxt/bitvavo.py +180 -70
  207. ccxt/bl3p.py +92 -25
  208. ccxt/blockchaincom.py +193 -79
  209. ccxt/blofin.py +392 -148
  210. ccxt/btcalpha.py +161 -55
  211. ccxt/btcbox.py +250 -34
  212. ccxt/btcmarkets.py +232 -85
  213. ccxt/btcturk.py +159 -60
  214. ccxt/bybit.py +2231 -1193
  215. ccxt/cex.py +1408 -1329
  216. ccxt/coinbase.py +1454 -287
  217. ccxt/coinbaseadvanced.py +17 -0
  218. ccxt/{coinbasepro.py → coinbaseexchange.py} +233 -99
  219. ccxt/coinbaseinternational.py +428 -88
  220. ccxt/coincatch.py +5152 -0
  221. ccxt/coincheck.py +121 -38
  222. ccxt/coinex.py +4020 -3339
  223. ccxt/coinlist.py +273 -116
  224. ccxt/coinmate.py +204 -97
  225. ccxt/coinmetro.py +203 -110
  226. ccxt/coinone.py +142 -68
  227. ccxt/coinsph.py +206 -89
  228. ccxt/coinspot.py +137 -62
  229. ccxt/cryptocom.py +515 -185
  230. ccxt/currencycom.py +203 -85
  231. ccxt/defx.py +2065 -0
  232. ccxt/delta.py +404 -109
  233. ccxt/deribit.py +557 -323
  234. ccxt/digifinex.py +340 -223
  235. ccxt/ellipx.py +1826 -0
  236. ccxt/exmo.py +259 -128
  237. ccxt/gate.py +1472 -463
  238. ccxt/gemini.py +206 -84
  239. ccxt/hashkey.py +4164 -0
  240. ccxt/hitbtc.py +334 -178
  241. ccxt/hollaex.py +134 -83
  242. ccxt/htx.py +1095 -563
  243. ccxt/huobijp.py +105 -56
  244. ccxt/hyperliquid.py +1632 -268
  245. ccxt/idex.py +148 -95
  246. ccxt/independentreserve.py +235 -31
  247. ccxt/indodax.py +165 -62
  248. ccxt/kraken.py +871 -354
  249. ccxt/krakenfutures.py +324 -100
  250. ccxt/kucoin.py +917 -357
  251. ccxt/kucoinfutures.py +1004 -149
  252. ccxt/kuna.py +138 -106
  253. ccxt/latoken.py +135 -79
  254. ccxt/lbank.py +290 -113
  255. ccxt/luno.py +112 -62
  256. ccxt/lykke.py +104 -55
  257. ccxt/mercado.py +36 -29
  258. ccxt/mexc.py +994 -429
  259. ccxt/myokx.py +43 -0
  260. ccxt/ndax.py +163 -82
  261. ccxt/novadax.py +121 -75
  262. ccxt/oceanex.py +175 -59
  263. ccxt/okcoin.py +222 -163
  264. ccxt/okx.py +1776 -454
  265. ccxt/onetrading.py +132 -414
  266. ccxt/oxfun.py +2831 -0
  267. ccxt/p2b.py +79 -51
  268. ccxt/paradex.py +2017 -0
  269. ccxt/paymium.py +56 -32
  270. ccxt/phemex.py +572 -196
  271. ccxt/poloniex.py +218 -95
  272. ccxt/poloniexfutures.py +260 -92
  273. ccxt/pro/__init__.py +29 -5
  274. ccxt/pro/alpaca.py +32 -17
  275. ccxt/pro/ascendex.py +62 -14
  276. ccxt/pro/bequant.py +4 -0
  277. ccxt/pro/binance.py +1596 -329
  278. ccxt/pro/binancecoinm.py +1 -0
  279. ccxt/pro/binanceus.py +2 -9
  280. ccxt/pro/binanceusdm.py +2 -0
  281. ccxt/pro/bingx.py +527 -134
  282. ccxt/pro/bitcoincom.py +4 -1
  283. ccxt/pro/bitfinex.py +731 -266
  284. ccxt/pro/bitfinex1.py +635 -0
  285. ccxt/pro/bitget.py +726 -357
  286. ccxt/pro/bithumb.py +380 -0
  287. ccxt/pro/bitmart.py +138 -39
  288. ccxt/pro/bitmex.py +199 -40
  289. ccxt/pro/bitopro.py +25 -13
  290. ccxt/pro/bitrue.py +31 -32
  291. ccxt/pro/bitstamp.py +7 -6
  292. ccxt/pro/bitvavo.py +203 -81
  293. ccxt/pro/blockchaincom.py +30 -17
  294. ccxt/pro/blofin.py +692 -0
  295. ccxt/pro/bybit.py +791 -82
  296. ccxt/pro/cex.py +99 -51
  297. ccxt/pro/coinbase.py +220 -30
  298. ccxt/{async_support/hitbtc3.py → pro/coinbaseadvanced.py} +5 -5
  299. ccxt/pro/{coinbasepro.py → coinbaseexchange.py} +19 -19
  300. ccxt/pro/coinbaseinternational.py +193 -30
  301. ccxt/pro/coincatch.py +1464 -0
  302. ccxt/pro/coincheck.py +11 -6
  303. ccxt/pro/coinex.py +965 -665
  304. ccxt/pro/coinone.py +17 -10
  305. ccxt/pro/cryptocom.py +446 -66
  306. ccxt/pro/currencycom.py +11 -10
  307. ccxt/pro/defx.py +832 -0
  308. ccxt/pro/deribit.py +167 -31
  309. ccxt/pro/exmo.py +252 -20
  310. ccxt/pro/gate.py +729 -64
  311. ccxt/pro/gemini.py +44 -26
  312. ccxt/pro/hashkey.py +802 -0
  313. ccxt/pro/hitbtc.py +208 -103
  314. ccxt/pro/hollaex.py +25 -9
  315. ccxt/pro/htx.py +83 -39
  316. ccxt/pro/huobijp.py +17 -16
  317. ccxt/pro/hyperliquid.py +502 -31
  318. ccxt/pro/idex.py +28 -13
  319. ccxt/pro/independentreserve.py +21 -16
  320. ccxt/pro/kraken.py +298 -51
  321. ccxt/pro/krakenfutures.py +166 -75
  322. ccxt/pro/kucoin.py +395 -77
  323. ccxt/pro/kucoinfutures.py +400 -99
  324. ccxt/pro/lbank.py +52 -31
  325. ccxt/pro/luno.py +12 -10
  326. ccxt/pro/mexc.py +400 -50
  327. ccxt/pro/myokx.py +28 -0
  328. ccxt/pro/ndax.py +25 -12
  329. ccxt/pro/okcoin.py +28 -9
  330. ccxt/pro/okx.py +935 -124
  331. ccxt/pro/onetrading.py +41 -24
  332. ccxt/pro/oxfun.py +1054 -0
  333. ccxt/pro/p2b.py +100 -24
  334. ccxt/pro/paradex.py +352 -0
  335. ccxt/pro/phemex.py +92 -33
  336. ccxt/pro/poloniex.py +128 -49
  337. ccxt/pro/poloniexfutures.py +53 -32
  338. ccxt/pro/probit.py +92 -85
  339. ccxt/pro/upbit.py +401 -8
  340. ccxt/pro/vertex.py +943 -0
  341. ccxt/pro/wazirx.py +46 -28
  342. ccxt/pro/whitebit.py +65 -12
  343. ccxt/pro/woo.py +437 -65
  344. ccxt/pro/woofipro.py +1271 -0
  345. ccxt/pro/xt.py +1067 -0
  346. ccxt/probit.py +143 -110
  347. ccxt/static_dependencies/__init__.py +1 -1
  348. ccxt/static_dependencies/lark/__init__.py +38 -0
  349. ccxt/static_dependencies/lark/__pyinstaller/__init__.py +6 -0
  350. ccxt/static_dependencies/lark/__pyinstaller/hook-lark.py +14 -0
  351. ccxt/static_dependencies/lark/ast_utils.py +59 -0
  352. ccxt/static_dependencies/lark/common.py +86 -0
  353. ccxt/static_dependencies/lark/exceptions.py +292 -0
  354. ccxt/static_dependencies/lark/grammar.py +130 -0
  355. ccxt/static_dependencies/lark/grammars/__init__.py +0 -0
  356. ccxt/static_dependencies/lark/indenter.py +143 -0
  357. ccxt/static_dependencies/lark/lark.py +658 -0
  358. ccxt/static_dependencies/lark/lexer.py +678 -0
  359. ccxt/static_dependencies/lark/load_grammar.py +1428 -0
  360. ccxt/static_dependencies/lark/parse_tree_builder.py +391 -0
  361. ccxt/static_dependencies/lark/parser_frontends.py +257 -0
  362. ccxt/static_dependencies/lark/parsers/__init__.py +0 -0
  363. ccxt/static_dependencies/lark/parsers/cyk.py +340 -0
  364. ccxt/static_dependencies/lark/parsers/earley.py +314 -0
  365. ccxt/static_dependencies/lark/parsers/earley_common.py +42 -0
  366. ccxt/static_dependencies/lark/parsers/earley_forest.py +801 -0
  367. ccxt/static_dependencies/lark/parsers/grammar_analysis.py +203 -0
  368. ccxt/static_dependencies/lark/parsers/lalr_analysis.py +332 -0
  369. ccxt/static_dependencies/lark/parsers/lalr_interactive_parser.py +158 -0
  370. ccxt/static_dependencies/lark/parsers/lalr_parser.py +122 -0
  371. ccxt/static_dependencies/lark/parsers/lalr_parser_state.py +110 -0
  372. ccxt/static_dependencies/lark/parsers/xearley.py +165 -0
  373. ccxt/static_dependencies/lark/py.typed +0 -0
  374. ccxt/static_dependencies/lark/reconstruct.py +107 -0
  375. ccxt/static_dependencies/lark/tools/__init__.py +70 -0
  376. ccxt/static_dependencies/lark/tools/nearley.py +202 -0
  377. ccxt/static_dependencies/lark/tools/serialize.py +32 -0
  378. ccxt/static_dependencies/lark/tools/standalone.py +196 -0
  379. ccxt/static_dependencies/lark/tree.py +267 -0
  380. ccxt/static_dependencies/lark/tree_matcher.py +186 -0
  381. ccxt/static_dependencies/lark/tree_templates.py +180 -0
  382. ccxt/static_dependencies/lark/utils.py +343 -0
  383. ccxt/static_dependencies/lark/visitors.py +596 -0
  384. ccxt/static_dependencies/marshmallow/__init__.py +81 -0
  385. ccxt/static_dependencies/marshmallow/base.py +65 -0
  386. ccxt/static_dependencies/marshmallow/class_registry.py +94 -0
  387. ccxt/static_dependencies/marshmallow/decorators.py +231 -0
  388. ccxt/static_dependencies/marshmallow/error_store.py +60 -0
  389. ccxt/static_dependencies/marshmallow/exceptions.py +71 -0
  390. ccxt/static_dependencies/marshmallow/fields.py +2114 -0
  391. ccxt/static_dependencies/marshmallow/orderedset.py +89 -0
  392. ccxt/static_dependencies/marshmallow/py.typed +0 -0
  393. ccxt/static_dependencies/marshmallow/schema.py +1228 -0
  394. ccxt/static_dependencies/marshmallow/types.py +12 -0
  395. ccxt/static_dependencies/marshmallow/utils.py +378 -0
  396. ccxt/static_dependencies/marshmallow/validate.py +678 -0
  397. ccxt/static_dependencies/marshmallow/warnings.py +2 -0
  398. ccxt/static_dependencies/marshmallow_dataclass/__init__.py +1047 -0
  399. ccxt/static_dependencies/marshmallow_dataclass/collection_field.py +51 -0
  400. ccxt/static_dependencies/marshmallow_dataclass/lazy_class_attribute.py +45 -0
  401. ccxt/static_dependencies/marshmallow_dataclass/mypy.py +71 -0
  402. ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
  403. ccxt/static_dependencies/marshmallow_dataclass/typing.py +14 -0
  404. ccxt/static_dependencies/marshmallow_dataclass/union_field.py +82 -0
  405. ccxt/static_dependencies/marshmallow_oneofschema/__init__.py +1 -0
  406. ccxt/static_dependencies/marshmallow_oneofschema/one_of_schema.py +193 -0
  407. ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
  408. ccxt/static_dependencies/starknet/__init__.py +0 -0
  409. ccxt/static_dependencies/starknet/cairo/__init__.py +0 -0
  410. ccxt/static_dependencies/starknet/cairo/data_types.py +123 -0
  411. ccxt/static_dependencies/starknet/cairo/deprecated_parse/__init__.py +0 -0
  412. ccxt/static_dependencies/starknet/cairo/deprecated_parse/cairo_types.py +77 -0
  413. ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser.py +46 -0
  414. ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser_transformer.py +138 -0
  415. ccxt/static_dependencies/starknet/cairo/felt.py +64 -0
  416. ccxt/static_dependencies/starknet/cairo/type_parser.py +121 -0
  417. ccxt/static_dependencies/starknet/cairo/v1/__init__.py +0 -0
  418. ccxt/static_dependencies/starknet/cairo/v1/type_parser.py +59 -0
  419. ccxt/static_dependencies/starknet/cairo/v2/__init__.py +0 -0
  420. ccxt/static_dependencies/starknet/cairo/v2/type_parser.py +77 -0
  421. ccxt/static_dependencies/starknet/ccxt_utils.py +7 -0
  422. ccxt/static_dependencies/starknet/common.py +15 -0
  423. ccxt/static_dependencies/starknet/constants.py +39 -0
  424. ccxt/static_dependencies/starknet/hash/__init__.py +0 -0
  425. ccxt/static_dependencies/starknet/hash/address.py +79 -0
  426. ccxt/static_dependencies/starknet/hash/compiled_class_hash_objects.py +111 -0
  427. ccxt/static_dependencies/starknet/hash/selector.py +16 -0
  428. ccxt/static_dependencies/starknet/hash/storage.py +12 -0
  429. ccxt/static_dependencies/starknet/hash/utils.py +78 -0
  430. ccxt/static_dependencies/starknet/models/__init__.py +0 -0
  431. ccxt/static_dependencies/starknet/models/typed_data.py +45 -0
  432. ccxt/static_dependencies/starknet/serialization/__init__.py +24 -0
  433. ccxt/static_dependencies/starknet/serialization/_calldata_reader.py +40 -0
  434. ccxt/static_dependencies/starknet/serialization/_context.py +142 -0
  435. ccxt/static_dependencies/starknet/serialization/data_serializers/__init__.py +10 -0
  436. ccxt/static_dependencies/starknet/serialization/data_serializers/_common.py +82 -0
  437. ccxt/static_dependencies/starknet/serialization/data_serializers/array_serializer.py +43 -0
  438. ccxt/static_dependencies/starknet/serialization/data_serializers/bool_serializer.py +37 -0
  439. ccxt/static_dependencies/starknet/serialization/data_serializers/byte_array_serializer.py +66 -0
  440. ccxt/static_dependencies/starknet/serialization/data_serializers/cairo_data_serializer.py +71 -0
  441. ccxt/static_dependencies/starknet/serialization/data_serializers/enum_serializer.py +71 -0
  442. ccxt/static_dependencies/starknet/serialization/data_serializers/felt_serializer.py +50 -0
  443. ccxt/static_dependencies/starknet/serialization/data_serializers/named_tuple_serializer.py +58 -0
  444. ccxt/static_dependencies/starknet/serialization/data_serializers/option_serializer.py +43 -0
  445. ccxt/static_dependencies/starknet/serialization/data_serializers/output_serializer.py +40 -0
  446. ccxt/static_dependencies/starknet/serialization/data_serializers/payload_serializer.py +72 -0
  447. ccxt/static_dependencies/starknet/serialization/data_serializers/struct_serializer.py +36 -0
  448. ccxt/static_dependencies/starknet/serialization/data_serializers/tuple_serializer.py +36 -0
  449. ccxt/static_dependencies/starknet/serialization/data_serializers/uint256_serializer.py +76 -0
  450. ccxt/static_dependencies/starknet/serialization/data_serializers/uint_serializer.py +100 -0
  451. ccxt/static_dependencies/starknet/serialization/data_serializers/unit_serializer.py +32 -0
  452. ccxt/static_dependencies/starknet/serialization/errors.py +10 -0
  453. ccxt/static_dependencies/starknet/serialization/factory.py +229 -0
  454. ccxt/static_dependencies/starknet/serialization/function_serialization_adapter.py +110 -0
  455. ccxt/static_dependencies/starknet/serialization/tuple_dataclass.py +59 -0
  456. ccxt/static_dependencies/starknet/utils/__init__.py +0 -0
  457. ccxt/static_dependencies/starknet/utils/constructor_args_translator.py +86 -0
  458. ccxt/static_dependencies/starknet/utils/iterable.py +13 -0
  459. ccxt/static_dependencies/starknet/utils/schema.py +13 -0
  460. ccxt/static_dependencies/starknet/utils/typed_data.py +182 -0
  461. ccxt/static_dependencies/starkware/__init__.py +0 -0
  462. ccxt/static_dependencies/starkware/crypto/__init__.py +0 -0
  463. ccxt/static_dependencies/starkware/crypto/fast_pedersen_hash.py +50 -0
  464. ccxt/static_dependencies/starkware/crypto/math_utils.py +78 -0
  465. ccxt/static_dependencies/starkware/crypto/signature.py +2344 -0
  466. ccxt/static_dependencies/starkware/crypto/utils.py +63 -0
  467. ccxt/static_dependencies/sympy/__init__.py +0 -0
  468. ccxt/static_dependencies/sympy/core/__init__.py +0 -0
  469. ccxt/static_dependencies/sympy/core/intfunc.py +35 -0
  470. ccxt/static_dependencies/sympy/external/__init__.py +0 -0
  471. ccxt/static_dependencies/sympy/external/gmpy.py +345 -0
  472. ccxt/static_dependencies/sympy/external/importtools.py +187 -0
  473. ccxt/static_dependencies/sympy/external/ntheory.py +637 -0
  474. ccxt/static_dependencies/sympy/external/pythonmpq.py +341 -0
  475. ccxt/static_dependencies/typing_inspect/__init__.py +0 -0
  476. ccxt/static_dependencies/typing_inspect/typing_inspect.py +851 -0
  477. ccxt/test/{test_async.py → tests_async.py} +456 -391
  478. ccxt/test/tests_helpers.py +285 -0
  479. ccxt/test/tests_init.py +39 -0
  480. ccxt/test/{test_sync.py → tests_sync.py} +456 -393
  481. ccxt/timex.py +123 -70
  482. ccxt/tokocrypto.py +129 -93
  483. ccxt/tradeogre.py +39 -25
  484. ccxt/upbit.py +322 -113
  485. ccxt/vertex.py +2983 -0
  486. ccxt/wavesexchange.py +227 -173
  487. ccxt/wazirx.py +145 -65
  488. ccxt/whitebit.py +533 -138
  489. ccxt/woo.py +1137 -296
  490. ccxt/woofipro.py +2716 -0
  491. ccxt/xt.py +4627 -0
  492. ccxt/yobit.py +159 -92
  493. ccxt/zaif.py +80 -33
  494. ccxt/zonda.py +140 -69
  495. ccxt-4.4.48.dist-info/LICENSE.txt +21 -0
  496. ccxt-4.4.48.dist-info/METADATA +646 -0
  497. ccxt-4.4.48.dist-info/RECORD +669 -0
  498. {ccxt-4.2.77.dist-info → ccxt-4.4.48.dist-info}/WHEEL +1 -1
  499. ccxt/abstract/bitbay.py +0 -47
  500. ccxt/abstract/bitfinex2.py +0 -139
  501. ccxt/abstract/hitbtc3.py +0 -115
  502. ccxt/async_support/bitbay.py +0 -17
  503. ccxt/async_support/bitfinex2.py +0 -3496
  504. ccxt/async_support/flowbtc.py +0 -34
  505. ccxt/bitbay.py +0 -17
  506. ccxt/bitfinex2.py +0 -3496
  507. ccxt/flowbtc.py +0 -34
  508. ccxt/hitbtc3.py +0 -16
  509. ccxt/pro/bitfinex2.py +0 -1081
  510. ccxt/test/base/__init__.py +0 -28
  511. ccxt/test/base/test_account.py +0 -26
  512. ccxt/test/base/test_balance.py +0 -56
  513. ccxt/test/base/test_borrow_interest.py +0 -35
  514. ccxt/test/base/test_borrow_rate.py +0 -32
  515. ccxt/test/base/test_calculate_fee.py +0 -51
  516. ccxt/test/base/test_crypto.py +0 -127
  517. ccxt/test/base/test_currency.py +0 -76
  518. ccxt/test/base/test_datetime.py +0 -103
  519. ccxt/test/base/test_decimal_to_precision.py +0 -392
  520. ccxt/test/base/test_deep_extend.py +0 -68
  521. ccxt/test/base/test_deposit_withdrawal.py +0 -50
  522. ccxt/test/base/test_exchange_datetime_functions.py +0 -76
  523. ccxt/test/base/test_funding_rate_history.py +0 -29
  524. ccxt/test/base/test_last_price.py +0 -32
  525. ccxt/test/base/test_ledger_entry.py +0 -45
  526. ccxt/test/base/test_ledger_item.py +0 -48
  527. ccxt/test/base/test_leverage_tier.py +0 -33
  528. ccxt/test/base/test_margin_mode.py +0 -24
  529. ccxt/test/base/test_margin_modification.py +0 -35
  530. ccxt/test/base/test_market.py +0 -190
  531. ccxt/test/base/test_number.py +0 -411
  532. ccxt/test/base/test_ohlcv.py +0 -32
  533. ccxt/test/base/test_open_interest.py +0 -32
  534. ccxt/test/base/test_order.py +0 -64
  535. ccxt/test/base/test_order_book.py +0 -63
  536. ccxt/test/base/test_position.py +0 -60
  537. ccxt/test/base/test_shared_methods.py +0 -345
  538. ccxt/test/base/test_status.py +0 -24
  539. ccxt/test/base/test_throttle.py +0 -126
  540. ccxt/test/base/test_ticker.py +0 -86
  541. ccxt/test/base/test_trade.py +0 -47
  542. ccxt/test/base/test_trading_fee.py +0 -26
  543. ccxt/test/base/test_transaction.py +0 -39
  544. ccxt-4.2.77.dist-info/METADATA +0 -626
  545. ccxt-4.2.77.dist-info/RECORD +0 -534
  546. {ccxt-4.2.77.dist-info → ccxt-4.4.48.dist-info}/top_level.txt +0 -0
@@ -5,10 +5,12 @@
5
5
 
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.yobit import ImplicitAPI
8
+ import asyncio
8
9
  import hashlib
9
- from ccxt.base.types import Balances, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade
10
+ from ccxt.base.types import Balances, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction
10
11
  from typing import List
11
12
  from ccxt.base.errors import ExchangeError
13
+ from ccxt.base.errors import AuthenticationError
12
14
  from ccxt.base.errors import ArgumentsRequired
13
15
  from ccxt.base.errors import InsufficientFunds
14
16
  from ccxt.base.errors import InvalidOrder
@@ -17,7 +19,6 @@ from ccxt.base.errors import DDoSProtection
17
19
  from ccxt.base.errors import RateLimitExceeded
18
20
  from ccxt.base.errors import ExchangeNotAvailable
19
21
  from ccxt.base.errors import InvalidNonce
20
- from ccxt.base.errors import AuthenticationError
21
22
  from ccxt.base.decimal_to_precision import TICK_SIZE
22
23
  from ccxt.base.precise import Precise
23
24
 
@@ -51,35 +52,60 @@ class yobit(Exchange, ImplicitAPI):
51
52
  'createStopMarketOrder': False,
52
53
  'createStopOrder': False,
53
54
  'fetchBalance': True,
55
+ 'fetchBorrowInterest': False,
56
+ 'fetchBorrowRate': False,
54
57
  'fetchBorrowRateHistories': False,
55
58
  'fetchBorrowRateHistory': False,
59
+ 'fetchBorrowRates': False,
60
+ 'fetchBorrowRatesPerSymbol': False,
56
61
  'fetchCrossBorrowRate': False,
57
62
  'fetchCrossBorrowRates': False,
58
63
  'fetchDepositAddress': True,
64
+ 'fetchDepositAddresses': False,
65
+ 'fetchDepositAddressesByNetwork': False,
59
66
  'fetchDeposits': False,
60
67
  'fetchFundingHistory': False,
68
+ 'fetchFundingInterval': False,
69
+ 'fetchFundingIntervals': False,
61
70
  'fetchFundingRate': False,
62
71
  'fetchFundingRateHistory': False,
63
72
  'fetchFundingRates': False,
73
+ 'fetchGreeks': False,
64
74
  'fetchIndexOHLCV': False,
65
75
  'fetchIsolatedBorrowRate': False,
66
76
  'fetchIsolatedBorrowRates': False,
77
+ 'fetchIsolatedPositions': False,
67
78
  'fetchLeverage': False,
79
+ 'fetchLeverages': False,
68
80
  'fetchLeverageTiers': False,
81
+ 'fetchLiquidations': False,
82
+ 'fetchMarginAdjustmentHistory': False,
69
83
  'fetchMarginMode': False,
84
+ 'fetchMarginModes': False,
85
+ 'fetchMarketLeverageTiers': False,
70
86
  'fetchMarkets': True,
71
87
  'fetchMarkOHLCV': False,
88
+ 'fetchMarkPrices': False,
89
+ 'fetchMyLiquidations': False,
90
+ 'fetchMySettlementHistory': False,
72
91
  'fetchMyTrades': True,
92
+ 'fetchOpenInterest': False,
73
93
  'fetchOpenInterestHistory': False,
74
94
  'fetchOpenOrders': True,
95
+ 'fetchOption': False,
96
+ 'fetchOptionChain': False,
75
97
  'fetchOrder': True,
76
98
  'fetchOrderBook': True,
77
99
  'fetchOrderBooks': True,
78
100
  'fetchPosition': False,
101
+ 'fetchPositionHistory': False,
79
102
  'fetchPositionMode': False,
80
103
  'fetchPositions': False,
104
+ 'fetchPositionsForSymbol': False,
105
+ 'fetchPositionsHistory': False,
81
106
  'fetchPositionsRisk': False,
82
107
  'fetchPremiumIndexOHLCV': False,
108
+ 'fetchSettlementHistory': False,
83
109
  'fetchTicker': True,
84
110
  'fetchTickers': True,
85
111
  'fetchTrades': True,
@@ -88,9 +114,14 @@ class yobit(Exchange, ImplicitAPI):
88
114
  'fetchTransactions': False,
89
115
  'fetchTransfer': False,
90
116
  'fetchTransfers': False,
117
+ 'fetchUnderlyingAssets': False,
118
+ 'fetchVolatilityHistory': False,
91
119
  'fetchWithdrawals': False,
92
120
  'reduceMargin': False,
121
+ 'repayCrossMargin': False,
122
+ 'repayIsolatedMargin': False,
93
123
  'setLeverage': False,
124
+ 'setMargin': False,
94
125
  'setMarginMode': False,
95
126
  'setPositionMode': False,
96
127
  'transfer': False,
@@ -245,6 +276,7 @@ class yobit(Exchange, ImplicitAPI):
245
276
  'XIN': 'XINCoin',
246
277
  'XMT': 'SummitCoin',
247
278
  'XRA': 'Ratecoin',
279
+ 'BCHN': 'BSV',
248
280
  },
249
281
  'options': {
250
282
  'maxUrlLength': 2048,
@@ -294,7 +326,7 @@ class yobit(Exchange, ImplicitAPI):
294
326
  def parse_balance(self, response) -> Balances:
295
327
  balances = self.safe_dict(response, 'return', {})
296
328
  timestamp = self.safe_integer(balances, 'server_time')
297
- result = {
329
+ result: dict = {
298
330
  'info': response,
299
331
  'timestamp': timestamp,
300
332
  'datetime': self.iso8601(timestamp),
@@ -313,7 +345,9 @@ class yobit(Exchange, ImplicitAPI):
313
345
 
314
346
  async def fetch_balance(self, params={}) -> Balances:
315
347
  """
316
- :see: https://yobit.net/en/api
348
+
349
+ https://yobit.net/en/api
350
+
317
351
  query for balance and get the amount of funds available for trading or funds locked in orders
318
352
  :param dict [params]: extra parameters specific to the exchange API endpoint
319
353
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
@@ -347,9 +381,11 @@ class yobit(Exchange, ImplicitAPI):
347
381
  #
348
382
  return self.parse_balance(response)
349
383
 
350
- async def fetch_markets(self, params={}):
384
+ async def fetch_markets(self, params={}) -> List[Market]:
351
385
  """
352
- :see: https://yobit.net/en/api
386
+
387
+ https://yobit.net/en/api
388
+
353
389
  retrieves data on all markets for yobit
354
390
  :param dict [params]: extra parameters specific to the exchange API endpoint
355
391
  :returns dict[]: an array of objects representing market data
@@ -443,7 +479,9 @@ class yobit(Exchange, ImplicitAPI):
443
479
 
444
480
  async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
445
481
  """
446
- :see: https://yobit.net/en/api
482
+
483
+ https://yobit.net/en/api
484
+
447
485
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
448
486
  :param str symbol: unified symbol of the market to fetch the order book for
449
487
  :param int [limit]: the maximum amount of order book entries to return
@@ -452,7 +490,7 @@ class yobit(Exchange, ImplicitAPI):
452
490
  """
453
491
  await self.load_markets()
454
492
  market = self.market(symbol)
455
- request = {
493
+ request: dict = {
456
494
  'pair': market['id'],
457
495
  }
458
496
  if limit is not None:
@@ -466,7 +504,9 @@ class yobit(Exchange, ImplicitAPI):
466
504
 
467
505
  async def fetch_order_books(self, symbols: Strings = None, limit: Int = None, params={}):
468
506
  """
469
- :see: https://yobit.net/en/api
507
+
508
+ https://yobit.net/en/api
509
+
470
510
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data for multiple markets
471
511
  :param str[]|None symbols: list of unified market symbols, all symbols fetched if None, default is None
472
512
  :param int [limit]: max number of entries per orderbook to return, default is None
@@ -484,14 +524,14 @@ class yobit(Exchange, ImplicitAPI):
484
524
  else:
485
525
  ids = self.market_ids(symbols)
486
526
  ids = '-'.join(ids)
487
- request = {
527
+ request: dict = {
488
528
  'pair': ids,
489
529
  # 'ignore_invalid': True,
490
530
  }
491
531
  if limit is not None:
492
532
  request['limit'] = limit
493
533
  response = await self.publicGetDepthPair(self.extend(request, params))
494
- result = {}
534
+ result: dict = {}
495
535
  ids = list(response.keys())
496
536
  for i in range(0, len(ids)):
497
537
  id = ids[i]
@@ -499,7 +539,7 @@ class yobit(Exchange, ImplicitAPI):
499
539
  result[symbol] = self.parse_order_book(response[id], symbol)
500
540
  return result
501
541
 
502
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
542
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
503
543
  #
504
544
  # {
505
545
  # "high": 0.03497582,
@@ -538,36 +578,12 @@ class yobit(Exchange, ImplicitAPI):
538
578
  'info': ticker,
539
579
  }, market)
540
580
 
541
- async 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
- await 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 = {
581
+ async def fetch_tickers_helper(self, idsString: str, params={}) -> Tickers:
582
+ request: dict = {
567
583
  'pair': idsString,
568
584
  }
569
585
  tickers = await self.publicGetTickerPair(self.extend(request, params))
570
- result = {}
586
+ result: dict = {}
571
587
  keys = list(tickers.keys())
572
588
  for k in range(0, len(keys)):
573
589
  id = keys[k]
@@ -575,11 +591,61 @@ class yobit(Exchange, ImplicitAPI):
575
591
  market = self.safe_market(id)
576
592
  symbol = market['symbol']
577
593
  result[symbol] = self.parse_ticker(ticker, market)
578
- return self.filter_by_array_tickers(result, 'symbol', symbols)
594
+ return result
595
+
596
+ async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
597
+ """
598
+
599
+ https://yobit.net/en/api
600
+
601
+ fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
602
+ :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
603
+ :param dict [params]: extra parameters specific to the exchange API endpoint
604
+ :param dict [params.all]: you can set to `true` for convenience to fetch all tickers from self exchange by sending multiple requests
605
+ :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
606
+ """
607
+ allSymbols = None
608
+ allSymbols, params = self.handle_param_bool(params, 'all', False)
609
+ if symbols is None and not allSymbols:
610
+ raise ArgumentsRequired(self.id + ' fetchTickers() requires "symbols" argument or use `params["all"] = True` to send multiple requests for all markets')
611
+ await self.load_markets()
612
+ promises = []
613
+ maxLength = self.safe_integer(self.options, 'maxUrlLength', 2048)
614
+ # max URL length is 2048 symbols, including http schema, hostname, tld, etc...
615
+ lenghtOfBaseUrl = 40 # safe space for the url including api-base and endpoint dir is 30 chars
616
+ if allSymbols:
617
+ symbols = self.symbols
618
+ ids = ''
619
+ for i in range(0, len(self.ids)):
620
+ id = self.ids[i]
621
+ prefix = '' if (ids == '') else '-'
622
+ ids += prefix + id
623
+ if len(ids) > maxLength:
624
+ promises.append(self.fetch_tickers_helper(ids, params))
625
+ ids = ''
626
+ if ids != '':
627
+ promises.append(self.fetch_tickers_helper(ids, params))
628
+ else:
629
+ symbols = self.market_symbols(symbols)
630
+ ids = self.market_ids(symbols)
631
+ idsLength: number = len(ids)
632
+ idsString = '-'.join(ids)
633
+ actualLength = len(idsString) + lenghtOfBaseUrl
634
+ if actualLength > maxLength:
635
+ 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')
636
+ promises.append(self.fetch_tickers_helper(idsString, params))
637
+ resultAll = await asyncio.gather(*promises)
638
+ finalResult = {}
639
+ for i in range(0, len(resultAll)):
640
+ result = self.filter_by_array_tickers(resultAll[i], 'symbol', symbols)
641
+ finalResult = self.extend(finalResult, result)
642
+ return finalResult
579
643
 
580
644
  async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
581
645
  """
582
- :see: https://yobit.net/en/api
646
+
647
+ https://yobit.net/en/api
648
+
583
649
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
584
650
  :param str symbol: unified symbol of the market to fetch the ticker for
585
651
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -588,7 +654,7 @@ class yobit(Exchange, ImplicitAPI):
588
654
  tickers = await self.fetch_tickers([symbol], params)
589
655
  return tickers[symbol]
590
656
 
591
- def parse_trade(self, trade, market: Market = None) -> Trade:
657
+ def parse_trade(self, trade: dict, market: Market = None) -> Trade:
592
658
  #
593
659
  # fetchTrades(public)
594
660
  #
@@ -664,7 +730,9 @@ class yobit(Exchange, ImplicitAPI):
664
730
 
665
731
  async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
666
732
  """
667
- :see: https://yobit.net/en/api
733
+
734
+ https://yobit.net/en/api
735
+
668
736
  get the list of most recent trades for a particular symbol
669
737
  :param str symbol: unified symbol of the market to fetch trades for
670
738
  :param int [since]: timestamp in ms of the earliest trade to fetch
@@ -674,7 +742,7 @@ class yobit(Exchange, ImplicitAPI):
674
742
  """
675
743
  await self.load_markets()
676
744
  market = self.market(symbol)
677
- request = {
745
+ request: dict = {
678
746
  'pair': market['id'],
679
747
  }
680
748
  if limit is not None:
@@ -700,9 +768,11 @@ class yobit(Exchange, ImplicitAPI):
700
768
  result = self.safe_list(response, market['id'], [])
701
769
  return self.parse_trades(result, market, since, limit)
702
770
 
703
- async def fetch_trading_fees(self, params={}):
771
+ async def fetch_trading_fees(self, params={}) -> TradingFees:
704
772
  """
705
- :see: https://yobit.net/en/api
773
+
774
+ https://yobit.net/en/api
775
+
706
776
  fetch the trading fees for multiple markets
707
777
  :param dict [params]: extra parameters specific to the exchange API endpoint
708
778
  :returns dict: a dictionary of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>` indexed by market symbols
@@ -730,7 +800,7 @@ class yobit(Exchange, ImplicitAPI):
730
800
  #
731
801
  pairs = self.safe_dict(response, 'pairs', {})
732
802
  marketIds = list(pairs.keys())
733
- result = {}
803
+ result: dict = {}
734
804
  for i in range(0, len(marketIds)):
735
805
  marketId = marketIds[i]
736
806
  pair = self.safe_dict(pairs, marketId, {})
@@ -751,13 +821,15 @@ class yobit(Exchange, ImplicitAPI):
751
821
 
752
822
  async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
753
823
  """
754
- :see: https://yobit.net/en/api
824
+
825
+ https://yobit.net/en/api
826
+
755
827
  create a trade order
756
828
  :param str symbol: unified symbol of the market to create an order in
757
829
  :param str type: must be 'limit'
758
830
  :param str side: 'buy' or 'sell'
759
831
  :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
832
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
761
833
  :param dict [params]: extra parameters specific to the exchange API endpoint
762
834
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
763
835
  """
@@ -765,7 +837,7 @@ class yobit(Exchange, ImplicitAPI):
765
837
  raise ExchangeError(self.id + ' createOrder() allows limit orders only')
766
838
  await self.load_markets()
767
839
  market = self.market(symbol)
768
- request = {
840
+ request: dict = {
769
841
  'pair': market['id'],
770
842
  'type': side,
771
843
  'amount': self.amount_to_precision(symbol, amount),
@@ -798,7 +870,9 @@ class yobit(Exchange, ImplicitAPI):
798
870
 
799
871
  async def cancel_order(self, id: str, symbol: Str = None, params={}):
800
872
  """
801
- :see: https://yobit.net/en/api
873
+
874
+ https://yobit.net/en/api
875
+
802
876
  cancels an open order
803
877
  :param str id: order id
804
878
  :param str symbol: not used by yobit cancelOrder()
@@ -806,7 +880,7 @@ class yobit(Exchange, ImplicitAPI):
806
880
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
807
881
  """
808
882
  await self.load_markets()
809
- request = {
883
+ request: dict = {
810
884
  'order_id': int(id),
811
885
  }
812
886
  response = await self.privatePostCancelOrder(self.extend(request, params))
@@ -832,8 +906,8 @@ class yobit(Exchange, ImplicitAPI):
832
906
  result = self.safe_dict(response, 'return', {})
833
907
  return self.parse_order(result)
834
908
 
835
- def parse_order_status(self, status):
836
- statuses = {
909
+ def parse_order_status(self, status: Str):
910
+ statuses: dict = {
837
911
  '0': 'open',
838
912
  '1': 'closed',
839
913
  '2': 'canceled',
@@ -841,7 +915,7 @@ class yobit(Exchange, ImplicitAPI):
841
915
  }
842
916
  return self.safe_string(statuses, status, status)
843
917
 
844
- def parse_order(self, order, market: Market = None) -> Order:
918
+ def parse_order(self, order: dict, market: Market = None) -> Order:
845
919
  #
846
920
  # createOrder(private)
847
921
  #
@@ -931,7 +1005,6 @@ class yobit(Exchange, ImplicitAPI):
931
1005
  'postOnly': None,
932
1006
  'side': side,
933
1007
  'price': price,
934
- 'stopPrice': None,
935
1008
  'triggerPrice': None,
936
1009
  'cost': None,
937
1010
  'amount': amount,
@@ -945,14 +1018,17 @@ class yobit(Exchange, ImplicitAPI):
945
1018
 
946
1019
  async def fetch_order(self, id: str, symbol: Str = None, params={}):
947
1020
  """
948
- :see: https://yobit.net/en/api
1021
+
1022
+ https://yobit.net/en/api
1023
+
949
1024
  fetches information on an order made by the user
1025
+ :param str id: order id
950
1026
  :param str symbol: not used by yobit fetchOrder
951
1027
  :param dict [params]: extra parameters specific to the exchange API endpoint
952
1028
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
953
1029
  """
954
1030
  await self.load_markets()
955
- request = {
1031
+ request: dict = {
956
1032
  'order_id': int(id),
957
1033
  }
958
1034
  response = await self.privatePostOrderInfo(self.extend(request, params))
@@ -978,7 +1054,9 @@ class yobit(Exchange, ImplicitAPI):
978
1054
 
979
1055
  async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
980
1056
  """
981
- :see: https://yobit.net/en/api
1057
+
1058
+ https://yobit.net/en/api
1059
+
982
1060
  fetch all unfilled currently open orders
983
1061
  :param str symbol: unified market symbol
984
1062
  :param int [since]: the earliest time in ms to fetch open orders for
@@ -989,7 +1067,7 @@ class yobit(Exchange, ImplicitAPI):
989
1067
  if symbol is None:
990
1068
  raise ArgumentsRequired(self.id + ' fetchOpenOrders() requires a symbol argument')
991
1069
  await self.load_markets()
992
- request = {}
1070
+ request: dict = {}
993
1071
  market = None
994
1072
  if symbol is not None:
995
1073
  marketInner = self.market(symbol)
@@ -1023,7 +1101,9 @@ class yobit(Exchange, ImplicitAPI):
1023
1101
 
1024
1102
  async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
1025
1103
  """
1026
- :see: https://yobit.net/en/api
1104
+
1105
+ https://yobit.net/en/api
1106
+
1027
1107
  fetch all trades made by the user
1028
1108
  :param str symbol: unified market symbol
1029
1109
  :param int [since]: the earliest time in ms to fetch trades for
@@ -1036,7 +1116,7 @@ class yobit(Exchange, ImplicitAPI):
1036
1116
  await self.load_markets()
1037
1117
  market = self.market(symbol)
1038
1118
  # some derived classes use camelcase notation for request fields
1039
- request = {
1119
+ request: dict = {
1040
1120
  # 'from': 123456789, # trade ID, from which the display starts numerical 0(test result: liqui ignores self field)
1041
1121
  # 'count': 1000, # the number of trades for display numerical, default = 1000
1042
1122
  # 'from_id': trade ID, from which the display starts numerical 0
@@ -1071,7 +1151,7 @@ class yobit(Exchange, ImplicitAPI):
1071
1151
  ids = list(trades.keys())
1072
1152
  result = []
1073
1153
  for i in range(0, len(ids)):
1074
- id = ids[i]
1154
+ id = self.safe_string(ids, i)
1075
1155
  trade = self.parse_trade(self.extend(trades[id], {
1076
1156
  'trade_id': id,
1077
1157
  }), market)
@@ -1080,13 +1160,15 @@ class yobit(Exchange, ImplicitAPI):
1080
1160
 
1081
1161
  async def create_deposit_address(self, code: str, params={}):
1082
1162
  """
1083
- :see: https://yobit.net/en/api
1163
+
1164
+ https://yobit.net/en/api
1165
+
1084
1166
  create a currency deposit address
1085
1167
  :param str code: unified currency code of the currency for the deposit address
1086
1168
  :param dict [params]: extra parameters specific to the exchange API endpoint
1087
1169
  :returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
1088
1170
  """
1089
- request = {
1171
+ request: dict = {
1090
1172
  'need_new': 1,
1091
1173
  }
1092
1174
  response = await self.fetch_deposit_address(code, self.extend(request, params))
@@ -1099,10 +1181,12 @@ class yobit(Exchange, ImplicitAPI):
1099
1181
  'info': response['info'],
1100
1182
  }
1101
1183
 
1102
- async def fetch_deposit_address(self, code: str, params={}):
1184
+ async def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
1103
1185
  """
1104
- :see: https://yobit.net/en/api
1105
1186
  fetch the deposit address for a currency associated with self account
1187
+
1188
+ https://yobit.net/en/api
1189
+
1106
1190
  :param str code: unified currency code
1107
1191
  :param dict [params]: extra parameters specific to the exchange API endpoint
1108
1192
  :returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
@@ -1117,7 +1201,7 @@ class yobit(Exchange, ImplicitAPI):
1117
1201
  if network != 'ERC20':
1118
1202
  currencyId = currencyId + network.lower()
1119
1203
  params = self.omit(params, 'network')
1120
- request = {
1204
+ request: dict = {
1121
1205
  'coinName': currencyId,
1122
1206
  'need_new': 0,
1123
1207
  }
@@ -1125,34 +1209,18 @@ class yobit(Exchange, ImplicitAPI):
1125
1209
  address = self.safe_string(response['return'], 'address')
1126
1210
  self.check_address(address)
1127
1211
  return {
1128
- 'id': None,
1212
+ 'info': response,
1129
1213
  'currency': code,
1214
+ 'network': None,
1130
1215
  'address': address,
1131
1216
  '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
1217
  }
1152
1218
 
1153
- async def withdraw(self, code: str, amount: float, address, tag=None, params={}):
1219
+ async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
1154
1220
  """
1155
- :see: https://yobit.net/en/api
1221
+
1222
+ https://yobit.net/en/api
1223
+
1156
1224
  make a withdrawal
1157
1225
  :param str code: unified currency code
1158
1226
  :param float amount: the amount to withdraw
@@ -1165,7 +1233,7 @@ class yobit(Exchange, ImplicitAPI):
1165
1233
  self.check_address(address)
1166
1234
  await self.load_markets()
1167
1235
  currency = self.currency(code)
1168
- request = {
1236
+ request: dict = {
1169
1237
  'coinName': currency['id'],
1170
1238
  'amount': amount,
1171
1239
  'address': address,
@@ -1233,7 +1301,7 @@ class yobit(Exchange, ImplicitAPI):
1233
1301
  }
1234
1302
  return {'url': url, 'method': method, 'body': body, 'headers': headers}
1235
1303
 
1236
- def handle_errors(self, httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody):
1304
+ def handle_errors(self, httpCode: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
1237
1305
  if response is None:
1238
1306
  return None # fallback to default error handler
1239
1307
  if 'success' in response: