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
ccxt/pro/wazirx.py CHANGED
@@ -22,6 +22,7 @@ class wazirx(ccxt.async_support.wazirx):
22
22
  'watchTicker': True,
23
23
  'watchTickers': True,
24
24
  'watchTrades': True,
25
+ 'watchTradesForSymbols': False,
25
26
  'watchMyTrades': True,
26
27
  'watchOrders': True,
27
28
  'watchOrderBook': True,
@@ -50,7 +51,9 @@ class wazirx(ccxt.async_support.wazirx):
50
51
  async def watch_balance(self, params={}) -> Balances:
51
52
  """
52
53
  watch balance and get the amount of funds available for trading or funds locked in orders
53
- :see: https://docs.wazirx.com/#account-update
54
+
55
+ https://docs.wazirx.com/#account-update
56
+
54
57
  :param dict [params]: extra parameters specific to the exchange API endpoint
55
58
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
56
59
  """
@@ -58,7 +61,7 @@ class wazirx(ccxt.async_support.wazirx):
58
61
  token = await self.authenticate(params)
59
62
  messageHash = 'balance'
60
63
  url = self.urls['api']['ws']
61
- subscribe = {
64
+ subscribe: dict = {
62
65
  'event': 'subscribe',
63
66
  'streams': ['outboundAccountPosition'],
64
67
  'auth_key': token,
@@ -166,7 +169,9 @@ class wazirx(ccxt.async_support.wazirx):
166
169
  async def watch_ticker(self, symbol: str, params={}) -> Ticker:
167
170
  """
168
171
  watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
169
- :see: https://docs.wazirx.com/#all-market-tickers-stream
172
+
173
+ https://docs.wazirx.com/#all-market-tickers-stream
174
+
170
175
  :param str symbol: unified symbol of the market to fetch the ticker for
171
176
  :param dict [params]: extra parameters specific to the exchange API endpoint
172
177
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -177,7 +182,7 @@ class wazirx(ccxt.async_support.wazirx):
177
182
  messageHash = 'ticker:' + market['symbol']
178
183
  subscribeHash = 'tickers'
179
184
  stream = '!' + 'ticker@arr'
180
- subscribe = {
185
+ subscribe: dict = {
181
186
  'event': 'subscribe',
182
187
  'streams': [stream],
183
188
  }
@@ -187,7 +192,9 @@ class wazirx(ccxt.async_support.wazirx):
187
192
  async def watch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
188
193
  """
189
194
  watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
190
- :see: https://docs.wazirx.com/#all-market-tickers-stream
195
+
196
+ https://docs.wazirx.com/#all-market-tickers-stream
197
+
191
198
  :param str[] symbols: unified symbol of the market to fetch the ticker for
192
199
  :param dict [params]: extra parameters specific to the exchange API endpoint
193
200
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -197,7 +204,7 @@ class wazirx(ccxt.async_support.wazirx):
197
204
  url = self.urls['api']['ws']
198
205
  messageHash = 'tickers'
199
206
  stream = '!' + 'ticker@arr'
200
- subscribe = {
207
+ subscribe: dict = {
201
208
  'event': 'subscribe',
202
209
  'streams': [stream],
203
210
  }
@@ -283,6 +290,9 @@ class wazirx(ccxt.async_support.wazirx):
283
290
  async def watch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
284
291
  """
285
292
  get the list of most recent trades for a particular symbol
293
+
294
+ https://docs.wazirx.com/#trade-streams
295
+
286
296
  :param str symbol: unified symbol of the market to fetch trades for
287
297
  :param int [since]: timestamp in ms of the earliest trade to fetch
288
298
  :param int [limit]: the maximum amount of trades to fetch
@@ -294,7 +304,7 @@ class wazirx(ccxt.async_support.wazirx):
294
304
  symbol = market['symbol']
295
305
  messageHash = market['id'] + '@trades'
296
306
  url = self.urls['api']['ws']
297
- message = {
307
+ message: dict = {
298
308
  'event': 'subscribe',
299
309
  'streams': [messageHash],
300
310
  }
@@ -343,7 +353,9 @@ class wazirx(ccxt.async_support.wazirx):
343
353
  async def watch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
344
354
  """
345
355
  watch trades by user
346
- :see: https://docs.wazirx.com/#trade-update
356
+
357
+ https://docs.wazirx.com/#trade-update
358
+
347
359
  :param str symbol: unified symbol of the market to fetch trades for
348
360
  :param int [since]: timestamp in ms of the earliest trade to fetch
349
361
  :param int [limit]: the maximum amount of trades to fetch
@@ -357,7 +369,7 @@ class wazirx(ccxt.async_support.wazirx):
357
369
  symbol = market['symbol']
358
370
  url = self.urls['api']['ws']
359
371
  messageHash = 'myTrades'
360
- message = {
372
+ message: dict = {
361
373
  'event': 'subscribe',
362
374
  'streams': ['ownTrade'],
363
375
  'auth_key': token,
@@ -371,6 +383,9 @@ class wazirx(ccxt.async_support.wazirx):
371
383
  async def watch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
372
384
  """
373
385
  watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
386
+
387
+ https://docs.wazirx.com/#kline-candlestick-stream
388
+
374
389
  :param str symbol: unified symbol of the market to fetch OHLCV data for
375
390
  :param str timeframe: the length of time each candle represents
376
391
  :param int [since]: timestamp in ms of the earliest candle to fetch
@@ -384,7 +399,7 @@ class wazirx(ccxt.async_support.wazirx):
384
399
  url = self.urls['api']['ws']
385
400
  messageHash = 'ohlcv:' + symbol + ':' + timeframe
386
401
  stream = market['id'] + '@kline_' + timeframe
387
- message = {
402
+ message: dict = {
388
403
  'event': 'subscribe',
389
404
  'streams': [stream],
390
405
  }
@@ -455,7 +470,9 @@ class wazirx(ccxt.async_support.wazirx):
455
470
  async def watch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
456
471
  """
457
472
  watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
458
- :see: https://docs.wazirx.com/#depth-stream
473
+
474
+ https://docs.wazirx.com/#depth-stream
475
+
459
476
  :param str symbol: unified symbol of the market to fetch the order book for
460
477
  :param int [limit]: the maximum amount of order book entries to return
461
478
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -467,7 +484,7 @@ class wazirx(ccxt.async_support.wazirx):
467
484
  url = self.urls['api']['ws']
468
485
  messageHash = 'orderbook:' + symbol
469
486
  stream = market['id'] + '@depth'
470
- subscribe = {
487
+ subscribe: dict = {
471
488
  'event': 'subscribe',
472
489
  'streams': [stream],
473
490
  }
@@ -505,20 +522,20 @@ class wazirx(ccxt.async_support.wazirx):
505
522
  market = self.safe_market(marketId)
506
523
  symbol = market['symbol']
507
524
  messageHash = 'orderbook:' + symbol
508
- currentOrderBook = self.safe_value(self.orderbooks, symbol)
509
- if currentOrderBook is None:
525
+ # currentOrderBook = self.safe_value(self.orderbooks, symbol)
526
+ if not (symbol in self.orderbooks):
510
527
  snapshot = self.parse_order_book(data, symbol, timestamp, 'b', 'a')
511
- orderBook = self.order_book(snapshot)
512
- self.orderbooks[symbol] = orderBook
528
+ self.orderbooks[symbol] = self.order_book(snapshot)
513
529
  else:
514
- asks = self.safe_value(data, 'a', [])
515
- bids = self.safe_value(data, 'b', [])
516
- self.handle_deltas(currentOrderBook['asks'], asks)
517
- self.handle_deltas(currentOrderBook['bids'], bids)
518
- currentOrderBook['nonce'] = timestamp
519
- currentOrderBook['timestamp'] = timestamp
520
- currentOrderBook['datetime'] = self.iso8601(timestamp)
521
- self.orderbooks[symbol] = currentOrderBook
530
+ orderbook = self.orderbooks[symbol]
531
+ asks = self.safe_list(data, 'a', [])
532
+ bids = self.safe_list(data, 'b', [])
533
+ self.handle_deltas(orderbook['asks'], asks)
534
+ self.handle_deltas(orderbook['bids'], bids)
535
+ orderbook['nonce'] = timestamp
536
+ orderbook['timestamp'] = timestamp
537
+ orderbook['datetime'] = self.iso8601(timestamp)
538
+ self.orderbooks[symbol] = orderbook
522
539
  client.resolve(self.orderbooks[symbol], messageHash)
523
540
 
524
541
  async def watch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
@@ -528,7 +545,7 @@ class wazirx(ccxt.async_support.wazirx):
528
545
  symbol = market['symbol']
529
546
  token = await self.authenticate(params)
530
547
  messageHash = 'orders'
531
- message = {
548
+ message: dict = {
532
549
  'event': 'subscribe',
533
550
  'streams': ['orderUpdate'],
534
551
  'auth_key': token,
@@ -701,7 +718,7 @@ class wazirx(ccxt.async_support.wazirx):
701
718
  self.handle_error(client, message)
702
719
  return
703
720
  event = self.safe_string(message, 'event')
704
- eventHandlers = {
721
+ eventHandlers: dict = {
705
722
  'error': self.handle_error,
706
723
  'connected': self.handle_connected,
707
724
  'subscribed': self.handle_subscribed,
@@ -711,7 +728,7 @@ class wazirx(ccxt.async_support.wazirx):
711
728
  eventHandler(client, message)
712
729
  return
713
730
  stream = self.safe_string(message, 'stream', '')
714
- streamHandlers = {
731
+ streamHandlers: dict = {
715
732
  'ticker@arr': self.handle_ticker,
716
733
  '@depth': self.handle_order_book,
717
734
  '@kline': self.handle_ohlcv,
@@ -722,7 +739,8 @@ class wazirx(ccxt.async_support.wazirx):
722
739
  }
723
740
  streams = list(streamHandlers.keys())
724
741
  for i in range(0, len(streams)):
725
- if self.in_array(streams[i], stream):
742
+ streamContains = stream.find(streams[i]) > -1
743
+ if streamContains:
726
744
  handler = streamHandlers[streams[i]]
727
745
  handler(client, message)
728
746
  return
ccxt/pro/whitebit.py CHANGED
@@ -5,12 +5,12 @@
5
5
 
6
6
  import ccxt.async_support
7
7
  from ccxt.async_support.base.ws.cache import ArrayCache, ArrayCacheBySymbolById, ArrayCacheByTimestamp
8
- from ccxt.base.types import Balances, Int, Order, OrderBook, Str, Ticker, Trade
8
+ from ccxt.base.types import Balances, Int, Order, OrderBook, Str, Strings, Ticker, Tickers, Trade
9
9
  from ccxt.async_support.base.ws.client import Client
10
10
  from typing import List
11
+ from ccxt.base.errors import AuthenticationError
11
12
  from ccxt.base.errors import ArgumentsRequired
12
13
  from ccxt.base.errors import BadRequest
13
- from ccxt.base.errors import AuthenticationError
14
14
  from ccxt.base.precise import Precise
15
15
 
16
16
 
@@ -26,7 +26,9 @@ class whitebit(ccxt.async_support.whitebit):
26
26
  'watchOrderBook': True,
27
27
  'watchOrders': True,
28
28
  'watchTicker': True,
29
+ 'watchTickers': True,
29
30
  'watchTrades': True,
31
+ 'watchTradesForSymbols': False,
30
32
  },
31
33
  'urls': {
32
34
  'api': {
@@ -67,6 +69,9 @@ class whitebit(ccxt.async_support.whitebit):
67
69
  async def watch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
68
70
  """
69
71
  watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
72
+
73
+ https://docs.whitebit.com/public/websocket/#kline
74
+
70
75
  :param str symbol: unified symbol of the market to fetch OHLCV data for
71
76
  :param str timeframe: the length of time each candle represents
72
77
  :param int [since]: timestamp in ms of the earliest candle to fetch
@@ -135,6 +140,9 @@ class whitebit(ccxt.async_support.whitebit):
135
140
  async def watch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
136
141
  """
137
142
  watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
143
+
144
+ https://docs.whitebit.com/public/websocket/#market-depth
145
+
138
146
  :param str symbol: unified symbol of the market to fetch the order book for
139
147
  :param int [limit]: the maximum amount of order book entries to return
140
148
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -233,6 +241,9 @@ class whitebit(ccxt.async_support.whitebit):
233
241
  async def watch_ticker(self, symbol: str, params={}) -> Ticker:
234
242
  """
235
243
  watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
244
+
245
+ https://docs.whitebit.com/public/websocket/#market-statistics
246
+
236
247
  :param str symbol: unified symbol of the market to fetch the ticker for
237
248
  :param dict [params]: extra parameters specific to the exchange API endpoint
238
249
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -245,6 +256,35 @@ class whitebit(ccxt.async_support.whitebit):
245
256
  # every time we want to subscribe to another market we have to "re-subscribe" sending it all again
246
257
  return await self.watch_multiple_subscription(messageHash, method, symbol, False, params)
247
258
 
259
+ async def watch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
260
+ """
261
+ watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
262
+
263
+ https://docs.whitebit.com/public/websocket/#market-statistics
264
+
265
+ :param str[] [symbols]: unified symbol of the market to fetch the ticker for
266
+ :param dict [params]: extra parameters specific to the exchange API endpoint
267
+ :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
268
+ """
269
+ await self.load_markets()
270
+ symbols = self.market_symbols(symbols, None, False)
271
+ method = 'market_subscribe'
272
+ url = self.urls['api']['ws']
273
+ id = self.nonce()
274
+ messageHashes = []
275
+ args = []
276
+ for i in range(0, len(symbols)):
277
+ market = self.market(symbols[i])
278
+ messageHashes.append('ticker:' + market['symbol'])
279
+ args.append(market['id'])
280
+ request: dict = {
281
+ 'id': id,
282
+ 'method': method,
283
+ 'params': args,
284
+ }
285
+ await self.watch_multiple(url, messageHashes, self.extend(request, params), messageHashes)
286
+ return self.filter_by_array(self.tickers, 'symbol', symbols)
287
+
248
288
  def handle_ticker(self, client: Client, message):
249
289
  #
250
290
  # {
@@ -295,6 +335,9 @@ class whitebit(ccxt.async_support.whitebit):
295
335
  async def watch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
296
336
  """
297
337
  get the list of most recent trades for a particular symbol
338
+
339
+ https://docs.whitebit.com/public/websocket/#market-trades
340
+
298
341
  :param str symbol: unified symbol of the market to fetch trades for
299
342
  :param int [since]: timestamp in ms of the earliest trade to fetch
300
343
  :param int [limit]: the maximum amount of trades to fetch
@@ -356,6 +399,9 @@ class whitebit(ccxt.async_support.whitebit):
356
399
  async def watch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
357
400
  """
358
401
  watches trades made by the user
402
+
403
+ https://docs.whitebit.com/private/websocket/#deals
404
+
359
405
  :param str symbol: unified market symbol
360
406
  :param int [since]: the earliest time in ms to fetch trades for
361
407
  :param int [limit]: the maximum number of trades structures to retrieve
@@ -449,11 +495,14 @@ class whitebit(ccxt.async_support.whitebit):
449
495
  async def watch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
450
496
  """
451
497
  watches information on multiple orders made by the user
498
+
499
+ https://docs.whitebit.com/private/websocket/#orders-pending
500
+
452
501
  :param str symbol: unified market symbol of the market orders were made in
453
502
  :param int [since]: the earliest time in ms to fetch orders for
454
503
  :param int [limit]: the maximum number of order structures to retrieve
455
504
  :param dict [params]: extra parameters specific to the exchange API endpoint
456
- :returns dict[]: a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure
505
+ :returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
457
506
  """
458
507
  if symbol is None:
459
508
  raise ArgumentsRequired(self.id + ' watchOrders() requires a symbol argument')
@@ -596,7 +645,7 @@ class whitebit(ccxt.async_support.whitebit):
596
645
  }, market)
597
646
 
598
647
  def parse_ws_order_type(self, status):
599
- statuses = {
648
+ statuses: dict = {
600
649
  '1': 'limit',
601
650
  '2': 'market',
602
651
  '202': 'market',
@@ -612,6 +661,10 @@ class whitebit(ccxt.async_support.whitebit):
612
661
  async def watch_balance(self, params={}) -> Balances:
613
662
  """
614
663
  watch balance and get the amount of funds available for trading or funds locked in orders
664
+
665
+ https://docs.whitebit.com/private/websocket/#balance-spot
666
+ https://docs.whitebit.com/private/websocket/#balance-margin
667
+
615
668
  :param dict [params]: extra parameters specific to the exchange API endpoint
616
669
  :param str [params.type]: spot or contract if not provided self.options['defaultType'] is used
617
670
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
@@ -668,7 +721,7 @@ class whitebit(ccxt.async_support.whitebit):
668
721
  async def watch_public(self, messageHash, method, reqParams=[], params={}):
669
722
  url = self.urls['api']['ws']
670
723
  id = self.nonce()
671
- request = {
724
+ request: dict = {
672
725
  'id': id,
673
726
  'method': method,
674
727
  'params': reqParams,
@@ -684,7 +737,7 @@ class whitebit(ccxt.async_support.whitebit):
684
737
  request = None
685
738
  marketIds = []
686
739
  if client is None:
687
- subscription = {}
740
+ subscription: dict = {}
688
741
  market = self.market(symbol)
689
742
  marketId = market['id']
690
743
  subscription[marketId] = True
@@ -716,7 +769,7 @@ class whitebit(ccxt.async_support.whitebit):
716
769
  marketIdsNew = list(subscription.keys())
717
770
  if isNested:
718
771
  marketIdsNew = [marketIdsNew]
719
- resubRequest = {
772
+ resubRequest: dict = {
720
773
  'id': id,
721
774
  'method': method,
722
775
  'params': marketIdsNew,
@@ -730,7 +783,7 @@ class whitebit(ccxt.async_support.whitebit):
730
783
  await self.authenticate()
731
784
  url = self.urls['api']['ws']
732
785
  id = self.nonce()
733
- request = {
786
+ request: dict = {
734
787
  'id': id,
735
788
  'method': method,
736
789
  'params': reqParams,
@@ -754,7 +807,7 @@ class whitebit(ccxt.async_support.whitebit):
754
807
  #
755
808
  token = self.safe_string(authToken, 'websocket_token')
756
809
  id = self.nonce()
757
- request = {
810
+ request: dict = {
758
811
  'id': id,
759
812
  'method': 'authorize',
760
813
  'params': [
@@ -762,7 +815,7 @@ class whitebit(ccxt.async_support.whitebit):
762
815
  'public',
763
816
  ],
764
817
  }
765
- subscription = {
818
+ subscription: dict = {
766
819
  'id': id,
767
820
  'method': self.handle_authenticate,
768
821
  }
@@ -821,7 +874,7 @@ class whitebit(ccxt.async_support.whitebit):
821
874
  if id is not None:
822
875
  self.handle_subscription_status(client, message, id)
823
876
  return
824
- methods = {
877
+ methods: dict = {
825
878
  'market_update': self.handle_ticker,
826
879
  'trades_update': self.handle_trades,
827
880
  'depth_update': self.handle_order_book,
@@ -856,7 +909,7 @@ class whitebit(ccxt.async_support.whitebit):
856
909
  client.lastPong = self.milliseconds()
857
910
  return message
858
911
 
859
- def ping(self, client):
912
+ def ping(self, client: Client):
860
913
  return {
861
914
  'id': 0,
862
915
  'method': 'ping',