ccxt 4.2.77__py2.py3-none-any.whl → 4.4.49__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 +3205 -937
  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 +1525 -573
  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 +223 -97
  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 +639 -323
  126. ccxt/async_support/digifinex.py +465 -233
  127. ccxt/async_support/ellipx.py +1887 -0
  128. ccxt/async_support/exmo.py +317 -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 +433 -178
  133. ccxt/async_support/hollaex.py +207 -83
  134. ccxt/async_support/htx.py +1095 -563
  135. ccxt/async_support/huobijp.py +178 -56
  136. ccxt/async_support/hyperliquid.py +1678 -292
  137. ccxt/async_support/idex.py +219 -95
  138. ccxt/async_support/independentreserve.py +300 -31
  139. ccxt/async_support/indodax.py +226 -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 +198 -107
  145. ccxt/async_support/latoken.py +199 -79
  146. ccxt/async_support/lbank.py +360 -113
  147. ccxt/async_support/luno.py +185 -62
  148. ccxt/async_support/lykke.py +168 -55
  149. ccxt/async_support/mercado.py +101 -29
  150. ccxt/async_support/mexc.py +995 -429
  151. ccxt/async_support/myokx.py +53 -0
  152. ccxt/async_support/ndax.py +234 -82
  153. ccxt/async_support/novadax.py +195 -75
  154. ccxt/async_support/oceanex.py +244 -59
  155. ccxt/async_support/okcoin.py +301 -165
  156. ccxt/async_support/okx.py +1776 -454
  157. ccxt/async_support/onetrading.py +198 -414
  158. ccxt/async_support/oxfun.py +2898 -0
  159. ccxt/async_support/p2b.py +142 -52
  160. ccxt/async_support/paradex.py +2085 -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 +3205 -937
  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 +1525 -573
  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 +223 -97
  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 +639 -323
  234. ccxt/digifinex.py +465 -233
  235. ccxt/ellipx.py +1887 -0
  236. ccxt/exmo.py +317 -128
  237. ccxt/gate.py +1472 -463
  238. ccxt/gemini.py +206 -84
  239. ccxt/hashkey.py +4164 -0
  240. ccxt/hitbtc.py +433 -178
  241. ccxt/hollaex.py +207 -83
  242. ccxt/htx.py +1095 -563
  243. ccxt/huobijp.py +178 -56
  244. ccxt/hyperliquid.py +1677 -292
  245. ccxt/idex.py +219 -95
  246. ccxt/independentreserve.py +299 -31
  247. ccxt/indodax.py +226 -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 +198 -107
  253. ccxt/latoken.py +199 -79
  254. ccxt/lbank.py +360 -113
  255. ccxt/luno.py +185 -62
  256. ccxt/lykke.py +168 -55
  257. ccxt/mercado.py +101 -29
  258. ccxt/mexc.py +994 -429
  259. ccxt/myokx.py +53 -0
  260. ccxt/ndax.py +234 -82
  261. ccxt/novadax.py +195 -75
  262. ccxt/oceanex.py +244 -59
  263. ccxt/okcoin.py +301 -165
  264. ccxt/okx.py +1776 -454
  265. ccxt/onetrading.py +198 -414
  266. ccxt/oxfun.py +2897 -0
  267. ccxt/p2b.py +142 -52
  268. ccxt/paradex.py +2085 -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 +143 -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.49.dist-info/LICENSE.txt +21 -0
  496. ccxt-4.4.49.dist-info/METADATA +646 -0
  497. ccxt-4.4.49.dist-info/RECORD +669 -0
  498. {ccxt-4.2.77.dist-info → ccxt-4.4.49.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.49.dist-info}/top_level.txt +0 -0
ccxt/pro/deribit.py CHANGED
@@ -6,7 +6,7 @@
6
6
  import ccxt.async_support
7
7
  from ccxt.async_support.base.ws.cache import ArrayCache, ArrayCacheBySymbolById, ArrayCacheByTimestamp
8
8
  import hashlib
9
- from ccxt.base.types import Balances, Int, Order, OrderBook, Str, Ticker, Trade
9
+ from ccxt.base.types import Balances, Int, Order, OrderBook, Str, Strings, Ticker, Tickers, Trade
10
10
  from ccxt.async_support.base.ws.client import Client
11
11
  from typing import List
12
12
  from ccxt.base.errors import ExchangeError
@@ -22,7 +22,8 @@ class deribit(ccxt.async_support.deribit):
22
22
  'ws': True,
23
23
  'watchBalance': True,
24
24
  'watchTicker': True,
25
- 'watchTickers': False,
25
+ 'watchTickers': True,
26
+ 'watchBidsAsks': True,
26
27
  'watchTrades': True,
27
28
  'watchTradesForSymbols': True,
28
29
  'watchMyTrades': True,
@@ -82,7 +83,9 @@ class deribit(ccxt.async_support.deribit):
82
83
 
83
84
  async def watch_balance(self, params={}) -> Balances:
84
85
  """
85
- :see: https://docs.deribit.com/#user-portfolio-currency
86
+
87
+ https://docs.deribit.com/#user-portfolio-currency
88
+
86
89
  watch balance and get the amount of funds available for trading or funds locked in orders
87
90
  :param dict [params]: extra parameters specific to the exchange API endpoint
88
91
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
@@ -95,7 +98,7 @@ class deribit(ccxt.async_support.deribit):
95
98
  for i in range(0, len(currencies)):
96
99
  currencyCode = currencies[i]
97
100
  channels.append('user.portfolio.' + currencyCode)
98
- subscribe = {
101
+ subscribe: dict = {
99
102
  'jsonrpc': '2.0',
100
103
  'method': 'private/subscribe',
101
104
  'params': {
@@ -162,7 +165,9 @@ class deribit(ccxt.async_support.deribit):
162
165
 
163
166
  async def watch_ticker(self, symbol: str, params={}) -> Ticker:
164
167
  """
165
- :see: https://docs.deribit.com/#ticker-instrument_name-interval
168
+
169
+ https://docs.deribit.com/#ticker-instrument_name-interval
170
+
166
171
  watches a price ticker, a statistical calculation with the information for a specific market.
167
172
  :param str symbol: unified symbol of the market to fetch the ticker for
168
173
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -178,7 +183,7 @@ class deribit(ccxt.async_support.deribit):
178
183
  if interval == 'raw':
179
184
  await self.authenticate()
180
185
  channel = 'ticker.' + market['id'] + '.' + interval
181
- message = {
186
+ message: dict = {
182
187
  'jsonrpc': '2.0',
183
188
  'method': 'public/subscribe',
184
189
  'params': {
@@ -189,6 +194,45 @@ class deribit(ccxt.async_support.deribit):
189
194
  request = self.deep_extend(message, params)
190
195
  return await self.watch(url, channel, request, channel, request)
191
196
 
197
+ async def watch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
198
+ """
199
+
200
+ https://docs.deribit.com/#ticker-instrument_name-interval
201
+
202
+ watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
203
+ :param str[] [symbols]: unified symbol of the market to fetch the ticker for
204
+ :param dict [params]: extra parameters specific to the exchange API endpoint
205
+ :param str [params.interval]: specify aggregation and frequency of notifications. Possible values: 100ms, raw
206
+ :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
207
+ """
208
+ await self.load_markets()
209
+ symbols = self.market_symbols(symbols, None, False)
210
+ url = self.urls['api']['ws']
211
+ interval = self.safe_string(params, 'interval', '100ms')
212
+ params = self.omit(params, 'interval')
213
+ await self.load_markets()
214
+ if interval == 'raw':
215
+ await self.authenticate()
216
+ channels = []
217
+ for i in range(0, len(symbols)):
218
+ market = self.market(symbols[i])
219
+ channels.append('ticker.' + market['id'] + '.' + interval)
220
+ message: dict = {
221
+ 'jsonrpc': '2.0',
222
+ 'method': 'public/subscribe',
223
+ 'params': {
224
+ 'channels': channels,
225
+ },
226
+ 'id': self.request_id(),
227
+ }
228
+ request = self.deep_extend(message, params)
229
+ newTickers = await self.watch_multiple(url, channels, request, channels, request)
230
+ if self.newUpdates:
231
+ tickers: dict = {}
232
+ tickers[newTickers['symbol']] = newTickers
233
+ return tickers
234
+ return self.filter_by_array(self.tickers, 'symbol', symbols)
235
+
192
236
  def handle_ticker(self, client: Client, message):
193
237
  #
194
238
  # {
@@ -228,10 +272,87 @@ class deribit(ccxt.async_support.deribit):
228
272
  self.tickers[symbol] = ticker
229
273
  client.resolve(ticker, messageHash)
230
274
 
275
+ async def watch_bids_asks(self, symbols: Strings = None, params={}) -> Tickers:
276
+ """
277
+
278
+ https://docs.deribit.com/#quote-instrument_name
279
+
280
+ watches best bid & ask for symbols
281
+ :param str[] [symbols]: unified symbol of the market to fetch the ticker for
282
+ :param dict [params]: extra parameters specific to the exchange API endpoint
283
+ :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
284
+ """
285
+ await self.load_markets()
286
+ symbols = self.market_symbols(symbols, None, False)
287
+ url = self.urls['api']['ws']
288
+ channels = []
289
+ for i in range(0, len(symbols)):
290
+ market = self.market(symbols[i])
291
+ channels.append('quote.' + market['id'])
292
+ message: dict = {
293
+ 'jsonrpc': '2.0',
294
+ 'method': 'public/subscribe',
295
+ 'params': {
296
+ 'channels': channels,
297
+ },
298
+ 'id': self.request_id(),
299
+ }
300
+ request = self.deep_extend(message, params)
301
+ newTickers = await self.watch_multiple(url, channels, request, channels, request)
302
+ if self.newUpdates:
303
+ tickers: dict = {}
304
+ tickers[newTickers['symbol']] = newTickers
305
+ return tickers
306
+ return self.filter_by_array(self.bidsasks, 'symbol', symbols)
307
+
308
+ def handle_bid_ask(self, client: Client, message):
309
+ #
310
+ # {
311
+ # "jsonrpc": "2.0",
312
+ # "method": "subscription",
313
+ # "params": {
314
+ # "channel": "quote.BTC_USDT",
315
+ # "data": {
316
+ # "best_bid_amount": 0.026,
317
+ # "best_ask_amount": 0.026,
318
+ # "best_bid_price": 63908,
319
+ # "best_ask_price": 63940,
320
+ # "instrument_name": "BTC_USDT",
321
+ # "timestamp": 1727765131750
322
+ # }
323
+ # }
324
+ # }
325
+ #
326
+ params = self.safe_dict(message, 'params', {})
327
+ data = self.safe_dict(params, 'data', {})
328
+ ticker = self.parse_ws_bid_ask(data)
329
+ symbol = ticker['symbol']
330
+ self.bidsasks[symbol] = ticker
331
+ messageHash = self.safe_string(params, 'channel')
332
+ client.resolve(ticker, messageHash)
333
+
334
+ def parse_ws_bid_ask(self, ticker, market=None):
335
+ marketId = self.safe_string(ticker, 'instrument_name')
336
+ market = self.safe_market(marketId, market)
337
+ symbol = self.safe_string(market, 'symbol')
338
+ timestamp = self.safe_integer(ticker, 'timestamp')
339
+ return self.safe_ticker({
340
+ 'symbol': symbol,
341
+ 'timestamp': timestamp,
342
+ 'datetime': self.iso8601(timestamp),
343
+ 'ask': self.safe_string(ticker, 'best_ask_price'),
344
+ 'askVolume': self.safe_string(ticker, 'best_ask_amount'),
345
+ 'bid': self.safe_string(ticker, 'best_bid_price'),
346
+ 'bidVolume': self.safe_string(ticker, 'best_bid_amount'),
347
+ 'info': ticker,
348
+ }, market)
349
+
231
350
  async def watch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
232
351
  """
233
352
  get the list of most recent trades for a particular symbol
234
- :see: https://docs.deribit.com/#trades-instrument_name-interval
353
+
354
+ https://docs.deribit.com/#trades-instrument_name-interval
355
+
235
356
  :param str symbol: unified symbol of the market to fetch trades for
236
357
  :param int [since]: timestamp in ms of the earliest trade to fetch
237
358
  :param int [limit]: the maximum amount of trades to fetch
@@ -245,7 +366,9 @@ class deribit(ccxt.async_support.deribit):
245
366
  async def watch_trades_for_symbols(self, symbols: List[str], since: Int = None, limit: Int = None, params={}) -> List[Trade]:
246
367
  """
247
368
  get the list of most recent trades for a list of symbols
248
- :see: https://docs.deribit.com/#trades-instrument_name-interval
369
+
370
+ https://docs.deribit.com/#trades-instrument_name-interval
371
+
249
372
  :param str[] symbols: unified symbol of the market to fetch trades for
250
373
  :param int [since]: timestamp in ms of the earliest trade to fetch
251
374
  :param int [limit]: the maximum amount of trades to fetch
@@ -308,7 +431,9 @@ class deribit(ccxt.async_support.deribit):
308
431
  async def watch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
309
432
  """
310
433
  get the list of trades associated with the user
311
- :see: https://docs.deribit.com/#user-trades-instrument_name-interval
434
+
435
+ https://docs.deribit.com/#user-trades-instrument_name-interval
436
+
312
437
  :param str symbol: unified symbol of the market to fetch trades for. Use 'any' to watch all trades
313
438
  :param int [since]: timestamp in ms of the earliest trade to fetch
314
439
  :param int [limit]: the maximum amount of trades to fetch
@@ -324,7 +449,7 @@ class deribit(ccxt.async_support.deribit):
324
449
  interval = self.safe_string(params, 'interval', 'raw')
325
450
  params = self.omit(params, 'interval')
326
451
  channel = 'user.trades.any.any.' + interval
327
- message = {
452
+ message: dict = {
328
453
  'jsonrpc': '2.0',
329
454
  'method': 'private/subscribe',
330
455
  'params': {
@@ -377,7 +502,7 @@ class deribit(ccxt.async_support.deribit):
377
502
  limit = self.safe_integer(self.options, 'tradesLimit', 1000)
378
503
  cachedTrades = ArrayCacheBySymbolById(limit)
379
504
  parsed = self.parse_trades(trades)
380
- marketIds = {}
505
+ marketIds: dict = {}
381
506
  for i in range(0, len(parsed)):
382
507
  trade = parsed[i]
383
508
  cachedTrades.append(trade)
@@ -387,7 +512,9 @@ class deribit(ccxt.async_support.deribit):
387
512
 
388
513
  async def watch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
389
514
  """
390
- :see: https://docs.deribit.com/#book-instrument_name-group-depth-interval
515
+
516
+ https://docs.deribit.com/#book-instrument_name-group-depth-interval
517
+
391
518
  watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
392
519
  :param str symbol: unified symbol of the market to fetch the order book for
393
520
  :param int [limit]: the maximum amount of order book entries to return
@@ -401,7 +528,9 @@ class deribit(ccxt.async_support.deribit):
401
528
  async def watch_order_book_for_symbols(self, symbols: List[str], limit: Int = None, params={}) -> OrderBook:
402
529
  """
403
530
  watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
404
- :see: https://docs.deribit.com/#book-instrument_name-group-depth-interval
531
+
532
+ https://docs.deribit.com/#book-instrument_name-group-depth-interval
533
+
405
534
  :param str[] symbols: unified array of symbols
406
535
  :param int [limit]: the maximum amount of order book entries to return
407
536
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -489,11 +618,11 @@ class deribit(ccxt.async_support.deribit):
489
618
  marketId = self.safe_string(data, 'instrument_name')
490
619
  symbol = self.safe_symbol(marketId)
491
620
  timestamp = self.safe_integer(data, 'timestamp')
492
- storedOrderBook = self.safe_value(self.orderbooks, symbol)
493
- if storedOrderBook is None:
494
- storedOrderBook = self.counted_order_book()
495
- asks = self.safe_value(data, 'asks', [])
496
- bids = self.safe_value(data, 'bids', [])
621
+ if not (symbol in self.orderbooks):
622
+ self.orderbooks[symbol] = self.counted_order_book()
623
+ storedOrderBook = self.orderbooks[symbol]
624
+ asks = self.safe_list(data, 'asks', [])
625
+ bids = self.safe_list(data, 'bids', [])
497
626
  self.handle_deltas(storedOrderBook['asks'], asks)
498
627
  self.handle_deltas(storedOrderBook['bids'], bids)
499
628
  storedOrderBook['nonce'] = timestamp
@@ -505,8 +634,8 @@ class deribit(ccxt.async_support.deribit):
505
634
  client.resolve(storedOrderBook, messageHash)
506
635
 
507
636
  def clean_order_book(self, data):
508
- bids = self.safe_value(data, 'bids', [])
509
- asks = self.safe_value(data, 'asks', [])
637
+ bids = self.safe_list(data, 'bids', [])
638
+ asks = self.safe_list(data, 'asks', [])
510
639
  cleanedBids = []
511
640
  for i in range(0, len(bids)):
512
641
  cleanedBids.append([bids[i][1], bids[i][2]])
@@ -521,9 +650,9 @@ class deribit(ccxt.async_support.deribit):
521
650
  price = delta[1]
522
651
  amount = delta[2]
523
652
  if delta[0] == 'new' or delta[0] == 'change':
524
- bookside.store(price, amount, 1)
653
+ bookside.storeArray([price, amount, 1])
525
654
  elif delta[0] == 'delete':
526
- bookside.store(price, amount, 0)
655
+ bookside.storeArray([price, amount, 0])
527
656
 
528
657
  def handle_deltas(self, bookside, deltas):
529
658
  for i in range(0, len(deltas)):
@@ -531,13 +660,15 @@ class deribit(ccxt.async_support.deribit):
531
660
 
532
661
  async def watch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
533
662
  """
534
- :see: https://docs.deribit.com/#user-orders-instrument_name-raw
663
+
664
+ https://docs.deribit.com/#user-orders-instrument_name-raw
665
+
535
666
  watches information on multiple orders made by the user
536
667
  :param str symbol: unified market symbol of the market orders were made in
537
668
  :param int [since]: the earliest time in ms to fetch orders for
538
669
  :param int [limit]: the maximum number of order structures to retrieve
539
670
  :param dict [params]: extra parameters specific to the exchange API endpoint
540
- :returns dict[]: a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure
671
+ :returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
541
672
  """
542
673
  await self.load_markets()
543
674
  await self.authenticate(params)
@@ -549,7 +680,7 @@ class deribit(ccxt.async_support.deribit):
549
680
  kind = self.safe_string(params, 'kind', 'any')
550
681
  params = self.omit(params, 'interval', 'currency', 'kind')
551
682
  channel = 'user.orders.' + kind + '.' + currency + '.' + interval
552
- message = {
683
+ message: dict = {
553
684
  'jsonrpc': '2.0',
554
685
  'method': 'private/subscribe',
555
686
  'params': {
@@ -617,7 +748,9 @@ class deribit(ccxt.async_support.deribit):
617
748
 
618
749
  async def watch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
619
750
  """
620
- :see: https://docs.deribit.com/#chart-trades-instrument_name-resolution
751
+
752
+ https://docs.deribit.com/#chart-trades-instrument_name-resolution
753
+
621
754
  watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
622
755
  :param str symbol: unified symbol of the market to fetch OHLCV data for
623
756
  :param str timeframe: the length of time each candle represents
@@ -634,7 +767,9 @@ class deribit(ccxt.async_support.deribit):
634
767
  async def watch_ohlcv_for_symbols(self, symbolsAndTimeframes: List[List[str]], since: Int = None, limit: Int = None, params={}):
635
768
  """
636
769
  watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
637
- :see: https://docs.deribit.com/#chart-trades-instrument_name-resolution
770
+
771
+ https://docs.deribit.com/#chart-trades-instrument_name-resolution
772
+
638
773
  :param str[][] symbolsAndTimeframes: array of arrays containing unified symbols and timeframes to fetch OHLCV data for, example [['BTC/USDT', '1m'], ['LTC/USDT', '5m']]
639
774
  :param int [since]: timestamp in ms of the earliest candle to fetch
640
775
  :param int [limit]: the maximum amount of candles to fetch
@@ -735,7 +870,7 @@ class deribit(ccxt.async_support.deribit):
735
870
  message = channelName + '.' + market['id'] + '.' + channelDescriptor
736
871
  rawSubscriptions.append(message)
737
872
  messageHashes.append(channelName + '|' + market['symbol'] + '|' + channelDescriptor)
738
- request = {
873
+ request: dict = {
739
874
  'jsonrpc': '2.0',
740
875
  'method': 'public/subscribe',
741
876
  'params': {
@@ -818,13 +953,14 @@ class deribit(ccxt.async_support.deribit):
818
953
  if channel is not None:
819
954
  parts = channel.split('.')
820
955
  channelId = self.safe_string(parts, 0)
821
- userHandlers = {
956
+ userHandlers: dict = {
822
957
  'trades': self.handle_my_trades,
823
958
  'portfolio': self.handle_balance,
824
959
  'orders': self.handle_orders,
825
960
  }
826
- handlers = {
961
+ handlers: dict = {
827
962
  'ticker': self.handle_ticker,
963
+ 'quote': self.handle_bid_ask,
828
964
  'book': self.handle_order_book,
829
965
  'trades': self.handle_trades,
830
966
  'chart': self.handle_ohlcv,
@@ -874,7 +1010,7 @@ class deribit(ccxt.async_support.deribit):
874
1010
  self.check_required_credentials()
875
1011
  requestId = self.request_id()
876
1012
  signature = self.hmac(self.encode(timeString + '\n' + nonce + '\n'), self.encode(self.secret), hashlib.sha256)
877
- request = {
1013
+ request: dict = {
878
1014
  'jsonrpc': '2.0',
879
1015
  'id': requestId,
880
1016
  'method': 'public/auth',