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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (546) hide show
  1. ccxt/__init__.py +36 -14
  2. ccxt/abstract/alpaca.py +4 -0
  3. ccxt/abstract/bigone.py +1 -1
  4. ccxt/abstract/binance.py +112 -48
  5. ccxt/abstract/binancecoinm.py +112 -48
  6. ccxt/abstract/binanceus.py +147 -83
  7. ccxt/abstract/binanceusdm.py +112 -48
  8. ccxt/abstract/bingx.py +133 -78
  9. ccxt/abstract/bitbank.py +5 -0
  10. ccxt/abstract/bitfinex.py +136 -65
  11. ccxt/abstract/bitfinex1.py +69 -0
  12. ccxt/abstract/bitflyer.py +1 -0
  13. ccxt/abstract/bitget.py +8 -1
  14. ccxt/abstract/bitmart.py +13 -1
  15. ccxt/abstract/bitopro.py +1 -0
  16. ccxt/abstract/bitpanda.py +0 -12
  17. ccxt/abstract/bitrue.py +3 -3
  18. ccxt/abstract/bitstamp.py +26 -3
  19. ccxt/abstract/blofin.py +24 -0
  20. ccxt/abstract/btcbox.py +1 -0
  21. ccxt/abstract/bybit.py +29 -14
  22. ccxt/abstract/cex.py +28 -29
  23. ccxt/abstract/coinbase.py +6 -0
  24. ccxt/abstract/coinbaseadvanced.py +94 -0
  25. ccxt/abstract/{coinbasepro.py → coinbaseexchange.py} +1 -0
  26. ccxt/abstract/coinbaseinternational.py +1 -1
  27. ccxt/abstract/coincatch.py +94 -0
  28. ccxt/abstract/coinex.py +233 -123
  29. ccxt/abstract/coinmetro.py +1 -0
  30. ccxt/abstract/cryptocom.py +14 -0
  31. ccxt/abstract/defx.py +69 -0
  32. ccxt/abstract/deribit.py +1 -0
  33. ccxt/abstract/digifinex.py +1 -0
  34. ccxt/abstract/ellipx.py +25 -0
  35. ccxt/abstract/gate.py +20 -0
  36. ccxt/abstract/gateio.py +20 -0
  37. ccxt/abstract/gemini.py +1 -0
  38. ccxt/abstract/hashkey.py +67 -0
  39. ccxt/abstract/hyperliquid.py +1 -1
  40. ccxt/abstract/independentreserve.py +6 -0
  41. ccxt/abstract/kraken.py +4 -3
  42. ccxt/abstract/krakenfutures.py +4 -0
  43. ccxt/abstract/kucoin.py +25 -0
  44. ccxt/abstract/kucoinfutures.py +35 -0
  45. ccxt/abstract/luno.py +2 -0
  46. ccxt/abstract/mexc.py +4 -0
  47. ccxt/abstract/myokx.py +340 -0
  48. ccxt/abstract/oceanex.py +5 -0
  49. ccxt/abstract/okx.py +30 -0
  50. ccxt/abstract/onetrading.py +0 -12
  51. ccxt/abstract/oxfun.py +34 -0
  52. ccxt/abstract/paradex.py +40 -0
  53. ccxt/abstract/phemex.py +1 -0
  54. ccxt/abstract/upbit.py +4 -0
  55. ccxt/abstract/vertex.py +19 -0
  56. ccxt/abstract/whitebit.py +31 -1
  57. ccxt/abstract/woo.py +6 -2
  58. ccxt/abstract/woofipro.py +119 -0
  59. ccxt/abstract/xt.py +153 -0
  60. ccxt/abstract/zonda.py +6 -0
  61. ccxt/ace.py +164 -60
  62. ccxt/alpaca.py +727 -63
  63. ccxt/ascendex.py +395 -249
  64. ccxt/async_support/__init__.py +36 -14
  65. ccxt/async_support/ace.py +164 -60
  66. ccxt/async_support/alpaca.py +727 -63
  67. ccxt/async_support/ascendex.py +396 -249
  68. ccxt/async_support/base/exchange.py +531 -155
  69. ccxt/async_support/base/ws/aiohttp_client.py +28 -5
  70. ccxt/async_support/base/ws/cache.py +3 -2
  71. ccxt/async_support/base/ws/client.py +26 -5
  72. ccxt/async_support/base/ws/fast_client.py +4 -3
  73. ccxt/async_support/base/ws/functions.py +1 -1
  74. ccxt/async_support/base/ws/future.py +40 -31
  75. ccxt/async_support/base/ws/order_book_side.py +3 -0
  76. ccxt/async_support/bequant.py +1 -1
  77. ccxt/async_support/bigone.py +329 -202
  78. ccxt/async_support/binance.py +3513 -1511
  79. ccxt/async_support/binancecoinm.py +2 -1
  80. ccxt/async_support/binanceus.py +12 -1
  81. ccxt/async_support/binanceusdm.py +3 -1
  82. ccxt/async_support/bingx.py +3105 -881
  83. ccxt/async_support/bit2c.py +119 -38
  84. ccxt/async_support/bitbank.py +215 -76
  85. ccxt/async_support/bitbns.py +124 -53
  86. ccxt/async_support/bitfinex.py +3236 -1078
  87. ccxt/async_support/bitfinex1.py +1711 -0
  88. ccxt/async_support/bitflyer.py +239 -50
  89. ccxt/async_support/bitget.py +1513 -563
  90. ccxt/async_support/bithumb.py +201 -67
  91. ccxt/async_support/bitmart.py +1320 -435
  92. ccxt/async_support/bitmex.py +308 -111
  93. ccxt/async_support/bitopro.py +256 -96
  94. ccxt/async_support/bitrue.py +365 -233
  95. ccxt/async_support/bitso.py +201 -89
  96. ccxt/async_support/bitstamp.py +438 -269
  97. ccxt/async_support/bitteam.py +179 -73
  98. ccxt/async_support/bitvavo.py +180 -70
  99. ccxt/async_support/bl3p.py +92 -25
  100. ccxt/async_support/blockchaincom.py +193 -79
  101. ccxt/async_support/blofin.py +403 -150
  102. ccxt/async_support/btcalpha.py +161 -55
  103. ccxt/async_support/btcbox.py +250 -34
  104. ccxt/async_support/btcmarkets.py +232 -85
  105. ccxt/async_support/btcturk.py +159 -60
  106. ccxt/async_support/bybit.py +2326 -1255
  107. ccxt/async_support/cex.py +1409 -1329
  108. ccxt/async_support/coinbase.py +1455 -288
  109. ccxt/async_support/coinbaseadvanced.py +17 -0
  110. ccxt/async_support/{coinbasepro.py → coinbaseexchange.py} +233 -99
  111. ccxt/async_support/coinbaseinternational.py +428 -88
  112. ccxt/async_support/coincatch.py +5152 -0
  113. ccxt/async_support/coincheck.py +121 -38
  114. ccxt/async_support/coinex.py +4020 -3339
  115. ccxt/async_support/coinlist.py +273 -116
  116. ccxt/async_support/coinmate.py +204 -97
  117. ccxt/async_support/coinmetro.py +203 -110
  118. ccxt/async_support/coinone.py +142 -68
  119. ccxt/async_support/coinsph.py +206 -89
  120. ccxt/async_support/coinspot.py +137 -62
  121. ccxt/async_support/cryptocom.py +515 -185
  122. ccxt/async_support/currencycom.py +203 -85
  123. ccxt/async_support/defx.py +2066 -0
  124. ccxt/async_support/delta.py +467 -158
  125. ccxt/async_support/deribit.py +558 -324
  126. ccxt/async_support/digifinex.py +340 -223
  127. ccxt/async_support/ellipx.py +1826 -0
  128. ccxt/async_support/exmo.py +259 -128
  129. ccxt/async_support/gate.py +1473 -464
  130. ccxt/async_support/gemini.py +206 -84
  131. ccxt/async_support/hashkey.py +4164 -0
  132. ccxt/async_support/hitbtc.py +334 -178
  133. ccxt/async_support/hollaex.py +134 -83
  134. ccxt/async_support/htx.py +1095 -563
  135. ccxt/async_support/huobijp.py +105 -56
  136. ccxt/async_support/hyperliquid.py +1634 -269
  137. ccxt/async_support/idex.py +148 -95
  138. ccxt/async_support/independentreserve.py +236 -31
  139. ccxt/async_support/indodax.py +165 -62
  140. ccxt/async_support/kraken.py +871 -354
  141. ccxt/async_support/krakenfutures.py +324 -100
  142. ccxt/async_support/kucoin.py +1050 -355
  143. ccxt/async_support/kucoinfutures.py +1004 -149
  144. ccxt/async_support/kuna.py +138 -106
  145. ccxt/async_support/latoken.py +135 -79
  146. ccxt/async_support/lbank.py +290 -113
  147. ccxt/async_support/luno.py +112 -62
  148. ccxt/async_support/lykke.py +104 -55
  149. ccxt/async_support/mercado.py +36 -29
  150. ccxt/async_support/mexc.py +995 -429
  151. ccxt/async_support/myokx.py +43 -0
  152. ccxt/async_support/ndax.py +163 -82
  153. ccxt/async_support/novadax.py +121 -75
  154. ccxt/async_support/oceanex.py +175 -59
  155. ccxt/async_support/okcoin.py +222 -163
  156. ccxt/async_support/okx.py +1777 -455
  157. ccxt/async_support/onetrading.py +132 -414
  158. ccxt/async_support/oxfun.py +2832 -0
  159. ccxt/async_support/p2b.py +79 -51
  160. ccxt/async_support/paradex.py +2017 -0
  161. ccxt/async_support/paymium.py +56 -32
  162. ccxt/async_support/phemex.py +572 -196
  163. ccxt/async_support/poloniex.py +218 -95
  164. ccxt/async_support/poloniexfutures.py +260 -92
  165. ccxt/async_support/probit.py +143 -110
  166. ccxt/async_support/timex.py +123 -70
  167. ccxt/async_support/tokocrypto.py +129 -93
  168. ccxt/async_support/tradeogre.py +39 -25
  169. ccxt/async_support/upbit.py +322 -113
  170. ccxt/async_support/vertex.py +2983 -0
  171. ccxt/async_support/wavesexchange.py +227 -173
  172. ccxt/async_support/wazirx.py +145 -65
  173. ccxt/async_support/whitebit.py +533 -138
  174. ccxt/async_support/woo.py +1155 -295
  175. ccxt/async_support/woofipro.py +2716 -0
  176. ccxt/async_support/xt.py +4628 -0
  177. ccxt/async_support/yobit.py +160 -92
  178. ccxt/async_support/zaif.py +80 -33
  179. ccxt/async_support/zonda.py +140 -69
  180. ccxt/base/errors.py +51 -20
  181. ccxt/base/exchange.py +1729 -482
  182. ccxt/base/precise.py +10 -0
  183. ccxt/base/types.py +223 -4
  184. ccxt/bequant.py +1 -1
  185. ccxt/bigone.py +329 -202
  186. ccxt/binance.py +3513 -1511
  187. ccxt/binancecoinm.py +2 -1
  188. ccxt/binanceus.py +12 -1
  189. ccxt/binanceusdm.py +3 -1
  190. ccxt/bingx.py +3105 -881
  191. ccxt/bit2c.py +119 -38
  192. ccxt/bitbank.py +215 -76
  193. ccxt/bitbns.py +124 -53
  194. ccxt/bitfinex.py +3235 -1078
  195. ccxt/bitfinex1.py +1710 -0
  196. ccxt/bitflyer.py +239 -50
  197. ccxt/bitget.py +1513 -563
  198. ccxt/bithumb.py +200 -67
  199. ccxt/bitmart.py +1320 -435
  200. ccxt/bitmex.py +308 -111
  201. ccxt/bitopro.py +256 -96
  202. ccxt/bitrue.py +365 -233
  203. ccxt/bitso.py +201 -89
  204. ccxt/bitstamp.py +438 -269
  205. ccxt/bitteam.py +179 -73
  206. ccxt/bitvavo.py +180 -70
  207. ccxt/bl3p.py +92 -25
  208. ccxt/blockchaincom.py +193 -79
  209. ccxt/blofin.py +403 -150
  210. ccxt/btcalpha.py +161 -55
  211. ccxt/btcbox.py +250 -34
  212. ccxt/btcmarkets.py +232 -85
  213. ccxt/btcturk.py +159 -60
  214. ccxt/bybit.py +2326 -1255
  215. ccxt/cex.py +1408 -1329
  216. ccxt/coinbase.py +1455 -288
  217. ccxt/coinbaseadvanced.py +17 -0
  218. ccxt/{coinbasepro.py → coinbaseexchange.py} +233 -99
  219. ccxt/coinbaseinternational.py +428 -88
  220. ccxt/coincatch.py +5152 -0
  221. ccxt/coincheck.py +121 -38
  222. ccxt/coinex.py +4020 -3339
  223. ccxt/coinlist.py +273 -116
  224. ccxt/coinmate.py +204 -97
  225. ccxt/coinmetro.py +203 -110
  226. ccxt/coinone.py +142 -68
  227. ccxt/coinsph.py +206 -89
  228. ccxt/coinspot.py +137 -62
  229. ccxt/cryptocom.py +515 -185
  230. ccxt/currencycom.py +203 -85
  231. ccxt/defx.py +2065 -0
  232. ccxt/delta.py +467 -158
  233. ccxt/deribit.py +558 -324
  234. ccxt/digifinex.py +340 -223
  235. ccxt/ellipx.py +1826 -0
  236. ccxt/exmo.py +259 -128
  237. ccxt/gate.py +1473 -464
  238. ccxt/gemini.py +206 -84
  239. ccxt/hashkey.py +4164 -0
  240. ccxt/hitbtc.py +334 -178
  241. ccxt/hollaex.py +134 -83
  242. ccxt/htx.py +1095 -563
  243. ccxt/huobijp.py +105 -56
  244. ccxt/hyperliquid.py +1633 -269
  245. ccxt/idex.py +148 -95
  246. ccxt/independentreserve.py +235 -31
  247. ccxt/indodax.py +165 -62
  248. ccxt/kraken.py +871 -354
  249. ccxt/krakenfutures.py +324 -100
  250. ccxt/kucoin.py +1050 -355
  251. ccxt/kucoinfutures.py +1004 -149
  252. ccxt/kuna.py +138 -106
  253. ccxt/latoken.py +135 -79
  254. ccxt/lbank.py +290 -113
  255. ccxt/luno.py +112 -62
  256. ccxt/lykke.py +104 -55
  257. ccxt/mercado.py +36 -29
  258. ccxt/mexc.py +994 -429
  259. ccxt/myokx.py +43 -0
  260. ccxt/ndax.py +163 -82
  261. ccxt/novadax.py +121 -75
  262. ccxt/oceanex.py +175 -59
  263. ccxt/okcoin.py +222 -163
  264. ccxt/okx.py +1777 -455
  265. ccxt/onetrading.py +132 -414
  266. ccxt/oxfun.py +2831 -0
  267. ccxt/p2b.py +79 -51
  268. ccxt/paradex.py +2017 -0
  269. ccxt/paymium.py +56 -32
  270. ccxt/phemex.py +572 -196
  271. ccxt/poloniex.py +218 -95
  272. ccxt/poloniexfutures.py +260 -92
  273. ccxt/pro/__init__.py +29 -5
  274. ccxt/pro/alpaca.py +32 -17
  275. ccxt/pro/ascendex.py +63 -15
  276. ccxt/pro/bequant.py +4 -0
  277. ccxt/pro/binance.py +1596 -329
  278. ccxt/pro/binancecoinm.py +1 -0
  279. ccxt/pro/binanceus.py +2 -9
  280. ccxt/pro/binanceusdm.py +2 -0
  281. ccxt/pro/bingx.py +527 -134
  282. ccxt/pro/bitcoincom.py +4 -1
  283. ccxt/pro/bitfinex.py +731 -266
  284. ccxt/pro/bitfinex1.py +635 -0
  285. ccxt/pro/bitget.py +726 -357
  286. ccxt/pro/bithumb.py +380 -0
  287. ccxt/pro/bitmart.py +138 -39
  288. ccxt/pro/bitmex.py +199 -40
  289. ccxt/pro/bitopro.py +25 -13
  290. ccxt/pro/bitrue.py +31 -32
  291. ccxt/pro/bitstamp.py +7 -6
  292. ccxt/pro/bitvavo.py +204 -82
  293. ccxt/pro/blockchaincom.py +30 -17
  294. ccxt/pro/blofin.py +692 -0
  295. ccxt/pro/bybit.py +791 -82
  296. ccxt/pro/cex.py +99 -51
  297. ccxt/pro/coinbase.py +220 -30
  298. ccxt/{async_support/hitbtc3.py → pro/coinbaseadvanced.py} +5 -5
  299. ccxt/pro/{coinbasepro.py → coinbaseexchange.py} +19 -19
  300. ccxt/pro/coinbaseinternational.py +193 -30
  301. ccxt/pro/coincatch.py +1464 -0
  302. ccxt/pro/coincheck.py +11 -6
  303. ccxt/pro/coinex.py +967 -661
  304. ccxt/pro/coinone.py +17 -10
  305. ccxt/pro/cryptocom.py +446 -66
  306. ccxt/pro/currencycom.py +11 -10
  307. ccxt/pro/defx.py +832 -0
  308. ccxt/pro/deribit.py +168 -32
  309. ccxt/pro/exmo.py +253 -21
  310. ccxt/pro/gate.py +729 -64
  311. ccxt/pro/gemini.py +44 -26
  312. ccxt/pro/hashkey.py +802 -0
  313. ccxt/pro/hitbtc.py +208 -103
  314. ccxt/pro/hollaex.py +25 -9
  315. ccxt/pro/htx.py +83 -39
  316. ccxt/pro/huobijp.py +17 -16
  317. ccxt/pro/hyperliquid.py +502 -31
  318. ccxt/pro/idex.py +28 -13
  319. ccxt/pro/independentreserve.py +21 -16
  320. ccxt/pro/kraken.py +298 -51
  321. ccxt/pro/krakenfutures.py +166 -75
  322. ccxt/pro/kucoin.py +395 -77
  323. ccxt/pro/kucoinfutures.py +400 -99
  324. ccxt/pro/lbank.py +52 -31
  325. ccxt/pro/luno.py +12 -10
  326. ccxt/pro/mexc.py +400 -50
  327. ccxt/pro/myokx.py +28 -0
  328. ccxt/pro/ndax.py +25 -12
  329. ccxt/pro/okcoin.py +28 -9
  330. ccxt/pro/okx.py +935 -124
  331. ccxt/pro/onetrading.py +41 -24
  332. ccxt/pro/oxfun.py +1054 -0
  333. ccxt/pro/p2b.py +100 -24
  334. ccxt/pro/paradex.py +352 -0
  335. ccxt/pro/phemex.py +93 -34
  336. ccxt/pro/poloniex.py +129 -50
  337. ccxt/pro/poloniexfutures.py +53 -32
  338. ccxt/pro/probit.py +93 -86
  339. ccxt/pro/upbit.py +401 -8
  340. ccxt/pro/vertex.py +943 -0
  341. ccxt/pro/wazirx.py +46 -28
  342. ccxt/pro/whitebit.py +65 -12
  343. ccxt/pro/woo.py +486 -70
  344. ccxt/pro/woofipro.py +1271 -0
  345. ccxt/pro/xt.py +1067 -0
  346. ccxt/probit.py +143 -110
  347. ccxt/static_dependencies/__init__.py +1 -1
  348. ccxt/static_dependencies/lark/__init__.py +38 -0
  349. ccxt/static_dependencies/lark/__pyinstaller/__init__.py +6 -0
  350. ccxt/static_dependencies/lark/__pyinstaller/hook-lark.py +14 -0
  351. ccxt/static_dependencies/lark/ast_utils.py +59 -0
  352. ccxt/static_dependencies/lark/common.py +86 -0
  353. ccxt/static_dependencies/lark/exceptions.py +292 -0
  354. ccxt/static_dependencies/lark/grammar.py +130 -0
  355. ccxt/static_dependencies/lark/grammars/__init__.py +0 -0
  356. ccxt/static_dependencies/lark/indenter.py +143 -0
  357. ccxt/static_dependencies/lark/lark.py +658 -0
  358. ccxt/static_dependencies/lark/lexer.py +678 -0
  359. ccxt/static_dependencies/lark/load_grammar.py +1428 -0
  360. ccxt/static_dependencies/lark/parse_tree_builder.py +391 -0
  361. ccxt/static_dependencies/lark/parser_frontends.py +257 -0
  362. ccxt/static_dependencies/lark/parsers/__init__.py +0 -0
  363. ccxt/static_dependencies/lark/parsers/cyk.py +340 -0
  364. ccxt/static_dependencies/lark/parsers/earley.py +314 -0
  365. ccxt/static_dependencies/lark/parsers/earley_common.py +42 -0
  366. ccxt/static_dependencies/lark/parsers/earley_forest.py +801 -0
  367. ccxt/static_dependencies/lark/parsers/grammar_analysis.py +203 -0
  368. ccxt/static_dependencies/lark/parsers/lalr_analysis.py +332 -0
  369. ccxt/static_dependencies/lark/parsers/lalr_interactive_parser.py +158 -0
  370. ccxt/static_dependencies/lark/parsers/lalr_parser.py +122 -0
  371. ccxt/static_dependencies/lark/parsers/lalr_parser_state.py +110 -0
  372. ccxt/static_dependencies/lark/parsers/xearley.py +165 -0
  373. ccxt/static_dependencies/lark/py.typed +0 -0
  374. ccxt/static_dependencies/lark/reconstruct.py +107 -0
  375. ccxt/static_dependencies/lark/tools/__init__.py +70 -0
  376. ccxt/static_dependencies/lark/tools/nearley.py +202 -0
  377. ccxt/static_dependencies/lark/tools/serialize.py +32 -0
  378. ccxt/static_dependencies/lark/tools/standalone.py +196 -0
  379. ccxt/static_dependencies/lark/tree.py +267 -0
  380. ccxt/static_dependencies/lark/tree_matcher.py +186 -0
  381. ccxt/static_dependencies/lark/tree_templates.py +180 -0
  382. ccxt/static_dependencies/lark/utils.py +343 -0
  383. ccxt/static_dependencies/lark/visitors.py +596 -0
  384. ccxt/static_dependencies/marshmallow/__init__.py +81 -0
  385. ccxt/static_dependencies/marshmallow/base.py +65 -0
  386. ccxt/static_dependencies/marshmallow/class_registry.py +94 -0
  387. ccxt/static_dependencies/marshmallow/decorators.py +231 -0
  388. ccxt/static_dependencies/marshmallow/error_store.py +60 -0
  389. ccxt/static_dependencies/marshmallow/exceptions.py +71 -0
  390. ccxt/static_dependencies/marshmallow/fields.py +2114 -0
  391. ccxt/static_dependencies/marshmallow/orderedset.py +89 -0
  392. ccxt/static_dependencies/marshmallow/py.typed +0 -0
  393. ccxt/static_dependencies/marshmallow/schema.py +1228 -0
  394. ccxt/static_dependencies/marshmallow/types.py +12 -0
  395. ccxt/static_dependencies/marshmallow/utils.py +378 -0
  396. ccxt/static_dependencies/marshmallow/validate.py +678 -0
  397. ccxt/static_dependencies/marshmallow/warnings.py +2 -0
  398. ccxt/static_dependencies/marshmallow_dataclass/__init__.py +1047 -0
  399. ccxt/static_dependencies/marshmallow_dataclass/collection_field.py +51 -0
  400. ccxt/static_dependencies/marshmallow_dataclass/lazy_class_attribute.py +45 -0
  401. ccxt/static_dependencies/marshmallow_dataclass/mypy.py +71 -0
  402. ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
  403. ccxt/static_dependencies/marshmallow_dataclass/typing.py +14 -0
  404. ccxt/static_dependencies/marshmallow_dataclass/union_field.py +82 -0
  405. ccxt/static_dependencies/marshmallow_oneofschema/__init__.py +1 -0
  406. ccxt/static_dependencies/marshmallow_oneofschema/one_of_schema.py +193 -0
  407. ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
  408. ccxt/static_dependencies/starknet/__init__.py +0 -0
  409. ccxt/static_dependencies/starknet/cairo/__init__.py +0 -0
  410. ccxt/static_dependencies/starknet/cairo/data_types.py +123 -0
  411. ccxt/static_dependencies/starknet/cairo/deprecated_parse/__init__.py +0 -0
  412. ccxt/static_dependencies/starknet/cairo/deprecated_parse/cairo_types.py +77 -0
  413. ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser.py +46 -0
  414. ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser_transformer.py +138 -0
  415. ccxt/static_dependencies/starknet/cairo/felt.py +64 -0
  416. ccxt/static_dependencies/starknet/cairo/type_parser.py +121 -0
  417. ccxt/static_dependencies/starknet/cairo/v1/__init__.py +0 -0
  418. ccxt/static_dependencies/starknet/cairo/v1/type_parser.py +59 -0
  419. ccxt/static_dependencies/starknet/cairo/v2/__init__.py +0 -0
  420. ccxt/static_dependencies/starknet/cairo/v2/type_parser.py +77 -0
  421. ccxt/static_dependencies/starknet/ccxt_utils.py +7 -0
  422. ccxt/static_dependencies/starknet/common.py +15 -0
  423. ccxt/static_dependencies/starknet/constants.py +39 -0
  424. ccxt/static_dependencies/starknet/hash/__init__.py +0 -0
  425. ccxt/static_dependencies/starknet/hash/address.py +79 -0
  426. ccxt/static_dependencies/starknet/hash/compiled_class_hash_objects.py +111 -0
  427. ccxt/static_dependencies/starknet/hash/selector.py +16 -0
  428. ccxt/static_dependencies/starknet/hash/storage.py +12 -0
  429. ccxt/static_dependencies/starknet/hash/utils.py +78 -0
  430. ccxt/static_dependencies/starknet/models/__init__.py +0 -0
  431. ccxt/static_dependencies/starknet/models/typed_data.py +45 -0
  432. ccxt/static_dependencies/starknet/serialization/__init__.py +24 -0
  433. ccxt/static_dependencies/starknet/serialization/_calldata_reader.py +40 -0
  434. ccxt/static_dependencies/starknet/serialization/_context.py +142 -0
  435. ccxt/static_dependencies/starknet/serialization/data_serializers/__init__.py +10 -0
  436. ccxt/static_dependencies/starknet/serialization/data_serializers/_common.py +82 -0
  437. ccxt/static_dependencies/starknet/serialization/data_serializers/array_serializer.py +43 -0
  438. ccxt/static_dependencies/starknet/serialization/data_serializers/bool_serializer.py +37 -0
  439. ccxt/static_dependencies/starknet/serialization/data_serializers/byte_array_serializer.py +66 -0
  440. ccxt/static_dependencies/starknet/serialization/data_serializers/cairo_data_serializer.py +71 -0
  441. ccxt/static_dependencies/starknet/serialization/data_serializers/enum_serializer.py +71 -0
  442. ccxt/static_dependencies/starknet/serialization/data_serializers/felt_serializer.py +50 -0
  443. ccxt/static_dependencies/starknet/serialization/data_serializers/named_tuple_serializer.py +58 -0
  444. ccxt/static_dependencies/starknet/serialization/data_serializers/option_serializer.py +43 -0
  445. ccxt/static_dependencies/starknet/serialization/data_serializers/output_serializer.py +40 -0
  446. ccxt/static_dependencies/starknet/serialization/data_serializers/payload_serializer.py +72 -0
  447. ccxt/static_dependencies/starknet/serialization/data_serializers/struct_serializer.py +36 -0
  448. ccxt/static_dependencies/starknet/serialization/data_serializers/tuple_serializer.py +36 -0
  449. ccxt/static_dependencies/starknet/serialization/data_serializers/uint256_serializer.py +76 -0
  450. ccxt/static_dependencies/starknet/serialization/data_serializers/uint_serializer.py +100 -0
  451. ccxt/static_dependencies/starknet/serialization/data_serializers/unit_serializer.py +32 -0
  452. ccxt/static_dependencies/starknet/serialization/errors.py +10 -0
  453. ccxt/static_dependencies/starknet/serialization/factory.py +229 -0
  454. ccxt/static_dependencies/starknet/serialization/function_serialization_adapter.py +110 -0
  455. ccxt/static_dependencies/starknet/serialization/tuple_dataclass.py +59 -0
  456. ccxt/static_dependencies/starknet/utils/__init__.py +0 -0
  457. ccxt/static_dependencies/starknet/utils/constructor_args_translator.py +86 -0
  458. ccxt/static_dependencies/starknet/utils/iterable.py +13 -0
  459. ccxt/static_dependencies/starknet/utils/schema.py +13 -0
  460. ccxt/static_dependencies/starknet/utils/typed_data.py +182 -0
  461. ccxt/static_dependencies/starkware/__init__.py +0 -0
  462. ccxt/static_dependencies/starkware/crypto/__init__.py +0 -0
  463. ccxt/static_dependencies/starkware/crypto/fast_pedersen_hash.py +50 -0
  464. ccxt/static_dependencies/starkware/crypto/math_utils.py +78 -0
  465. ccxt/static_dependencies/starkware/crypto/signature.py +2344 -0
  466. ccxt/static_dependencies/starkware/crypto/utils.py +63 -0
  467. ccxt/static_dependencies/sympy/__init__.py +0 -0
  468. ccxt/static_dependencies/sympy/core/__init__.py +0 -0
  469. ccxt/static_dependencies/sympy/core/intfunc.py +35 -0
  470. ccxt/static_dependencies/sympy/external/__init__.py +0 -0
  471. ccxt/static_dependencies/sympy/external/gmpy.py +345 -0
  472. ccxt/static_dependencies/sympy/external/importtools.py +187 -0
  473. ccxt/static_dependencies/sympy/external/ntheory.py +637 -0
  474. ccxt/static_dependencies/sympy/external/pythonmpq.py +341 -0
  475. ccxt/static_dependencies/typing_inspect/__init__.py +0 -0
  476. ccxt/static_dependencies/typing_inspect/typing_inspect.py +851 -0
  477. ccxt/test/{test_async.py → tests_async.py} +465 -407
  478. ccxt/test/tests_helpers.py +285 -0
  479. ccxt/test/tests_init.py +39 -0
  480. ccxt/test/{test_sync.py → tests_sync.py} +465 -409
  481. ccxt/timex.py +123 -70
  482. ccxt/tokocrypto.py +129 -93
  483. ccxt/tradeogre.py +39 -25
  484. ccxt/upbit.py +322 -113
  485. ccxt/vertex.py +2983 -0
  486. ccxt/wavesexchange.py +227 -173
  487. ccxt/wazirx.py +145 -65
  488. ccxt/whitebit.py +533 -138
  489. ccxt/woo.py +1155 -295
  490. ccxt/woofipro.py +2716 -0
  491. ccxt/xt.py +4627 -0
  492. ccxt/yobit.py +159 -92
  493. ccxt/zaif.py +80 -33
  494. ccxt/zonda.py +140 -69
  495. ccxt-4.4.48.dist-info/LICENSE.txt +21 -0
  496. ccxt-4.4.48.dist-info/METADATA +646 -0
  497. ccxt-4.4.48.dist-info/RECORD +669 -0
  498. {ccxt-4.2.76.dist-info → ccxt-4.4.48.dist-info}/WHEEL +1 -1
  499. ccxt/abstract/bitbay.py +0 -47
  500. ccxt/abstract/bitfinex2.py +0 -139
  501. ccxt/abstract/hitbtc3.py +0 -115
  502. ccxt/async_support/bitbay.py +0 -17
  503. ccxt/async_support/bitfinex2.py +0 -3496
  504. ccxt/async_support/flowbtc.py +0 -34
  505. ccxt/bitbay.py +0 -17
  506. ccxt/bitfinex2.py +0 -3496
  507. ccxt/flowbtc.py +0 -34
  508. ccxt/hitbtc3.py +0 -16
  509. ccxt/pro/bitfinex2.py +0 -1081
  510. ccxt/test/base/__init__.py +0 -28
  511. ccxt/test/base/test_account.py +0 -26
  512. ccxt/test/base/test_balance.py +0 -56
  513. ccxt/test/base/test_borrow_interest.py +0 -35
  514. ccxt/test/base/test_borrow_rate.py +0 -32
  515. ccxt/test/base/test_calculate_fee.py +0 -51
  516. ccxt/test/base/test_crypto.py +0 -127
  517. ccxt/test/base/test_currency.py +0 -76
  518. ccxt/test/base/test_datetime.py +0 -103
  519. ccxt/test/base/test_decimal_to_precision.py +0 -392
  520. ccxt/test/base/test_deep_extend.py +0 -68
  521. ccxt/test/base/test_deposit_withdrawal.py +0 -50
  522. ccxt/test/base/test_exchange_datetime_functions.py +0 -76
  523. ccxt/test/base/test_funding_rate_history.py +0 -29
  524. ccxt/test/base/test_last_price.py +0 -32
  525. ccxt/test/base/test_ledger_entry.py +0 -45
  526. ccxt/test/base/test_ledger_item.py +0 -48
  527. ccxt/test/base/test_leverage_tier.py +0 -33
  528. ccxt/test/base/test_margin_mode.py +0 -24
  529. ccxt/test/base/test_margin_modification.py +0 -35
  530. ccxt/test/base/test_market.py +0 -190
  531. ccxt/test/base/test_number.py +0 -411
  532. ccxt/test/base/test_ohlcv.py +0 -32
  533. ccxt/test/base/test_open_interest.py +0 -32
  534. ccxt/test/base/test_order.py +0 -64
  535. ccxt/test/base/test_order_book.py +0 -63
  536. ccxt/test/base/test_position.py +0 -60
  537. ccxt/test/base/test_shared_methods.py +0 -345
  538. ccxt/test/base/test_status.py +0 -24
  539. ccxt/test/base/test_throttle.py +0 -126
  540. ccxt/test/base/test_ticker.py +0 -86
  541. ccxt/test/base/test_trade.py +0 -47
  542. ccxt/test/base/test_trading_fee.py +0 -26
  543. ccxt/test/base/test_transaction.py +0 -39
  544. ccxt-4.2.76.dist-info/METADATA +0 -626
  545. ccxt-4.2.76.dist-info/RECORD +0 -534
  546. {ccxt-4.2.76.dist-info → ccxt-4.4.48.dist-info}/top_level.txt +0 -0
@@ -9,6 +9,7 @@ import hashlib
9
9
  from ccxt.base.types import Account, Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
+ from ccxt.base.errors import AuthenticationError
12
13
  from ccxt.base.errors import PermissionDenied
13
14
  from ccxt.base.errors import AccountNotEnabled
14
15
  from ccxt.base.errors import AccountSuspended
@@ -18,10 +19,9 @@ from ccxt.base.errors import BadSymbol
18
19
  from ccxt.base.errors import InsufficientFunds
19
20
  from ccxt.base.errors import InvalidOrder
20
21
  from ccxt.base.errors import OrderNotFound
21
- from ccxt.base.errors import CancelPending
22
22
  from ccxt.base.errors import RateLimitExceeded
23
23
  from ccxt.base.errors import OnMaintenance
24
- from ccxt.base.errors import AuthenticationError
24
+ from ccxt.base.errors import CancelPending
25
25
  from ccxt.base.decimal_to_precision import TICK_SIZE
26
26
  from ccxt.base.precise import Precise
27
27
 
@@ -89,7 +89,11 @@ class novadax(Exchange, ImplicitAPI):
89
89
  'fetchOrders': True,
90
90
  'fetchOrderTrades': True,
91
91
  'fetchPosition': False,
92
+ 'fetchPositionHistory': False,
93
+ 'fetchPositionMode': False,
92
94
  'fetchPositions': False,
95
+ 'fetchPositionsForSymbol': False,
96
+ 'fetchPositionsHistory': False,
93
97
  'fetchPositionsRisk': False,
94
98
  'fetchPremiumIndexOHLCV': False,
95
99
  'fetchTicker': True,
@@ -224,7 +228,9 @@ class novadax(Exchange, ImplicitAPI):
224
228
  async def fetch_time(self, params={}):
225
229
  """
226
230
  fetches the current integer timestamp in milliseconds from the exchange server
227
- :see: https://doc.novadax.com/en-US/#get-current-system-time
231
+
232
+ https://doc.novadax.com/en-US/#get-current-system-time
233
+
228
234
  :param dict [params]: extra parameters specific to the exchange API endpoint
229
235
  :returns int: the current integer timestamp in milliseconds from the exchange server
230
236
  """
@@ -238,10 +244,12 @@ class novadax(Exchange, ImplicitAPI):
238
244
  #
239
245
  return self.safe_integer(response, 'data')
240
246
 
241
- async def fetch_markets(self, params={}):
247
+ async def fetch_markets(self, params={}) -> List[Market]:
242
248
  """
243
249
  retrieves data on all markets for novadax
244
- :see: https://doc.novadax.com/en-US/#get-all-supported-trading-symbol
250
+
251
+ https://doc.novadax.com/en-US/#get-all-supported-trading-symbol
252
+
245
253
  :param dict [params]: extra parameters specific to the exchange API endpoint
246
254
  :returns dict[]: an array of objects representing market data
247
255
  """
@@ -268,7 +276,7 @@ class novadax(Exchange, ImplicitAPI):
268
276
  data = self.safe_value(response, 'data', [])
269
277
  return self.parse_markets(data)
270
278
 
271
- def parse_market(self, market) -> Market:
279
+ def parse_market(self, market: dict) -> Market:
272
280
  baseId = self.safe_string(market, 'baseCurrency')
273
281
  quoteId = self.safe_string(market, 'quoteCurrency')
274
282
  id = self.safe_string(market, 'symbol')
@@ -326,7 +334,7 @@ class novadax(Exchange, ImplicitAPI):
326
334
  'info': market,
327
335
  }
328
336
 
329
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
337
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
330
338
  #
331
339
  # fetchTicker, fetchTickers
332
340
  #
@@ -376,14 +384,16 @@ class novadax(Exchange, ImplicitAPI):
376
384
  async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
377
385
  """
378
386
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
379
- :see: https://doc.novadax.com/en-US/#get-latest-ticker-for-specific-pair
387
+
388
+ https://doc.novadax.com/en-US/#get-latest-ticker-for-specific-pair
389
+
380
390
  :param str symbol: unified symbol of the market to fetch the ticker for
381
391
  :param dict [params]: extra parameters specific to the exchange API endpoint
382
392
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
383
393
  """
384
394
  await self.load_markets()
385
395
  market = self.market(symbol)
386
- request = {
396
+ request: dict = {
387
397
  'symbol': market['id'],
388
398
  }
389
399
  response = await self.publicGetMarketTicker(self.extend(request, params))
@@ -405,13 +415,15 @@ class novadax(Exchange, ImplicitAPI):
405
415
  # "message":"Success"
406
416
  # }
407
417
  #
408
- data = self.safe_value(response, 'data', {})
418
+ data = self.safe_dict(response, 'data', {})
409
419
  return self.parse_ticker(data, market)
410
420
 
411
421
  async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
412
422
  """
413
423
  fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
414
- :see: https://doc.novadax.com/en-US/#get-latest-tickers-for-all-trading-pairs
424
+
425
+ https://doc.novadax.com/en-US/#get-latest-tickers-for-all-trading-pairs
426
+
415
427
  :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
416
428
  :param dict [params]: extra parameters specific to the exchange API endpoint
417
429
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -440,7 +452,7 @@ class novadax(Exchange, ImplicitAPI):
440
452
  # }
441
453
  #
442
454
  data = self.safe_value(response, 'data', [])
443
- result = {}
455
+ result: dict = {}
444
456
  for i in range(0, len(data)):
445
457
  ticker = self.parse_ticker(data[i])
446
458
  symbol = ticker['symbol']
@@ -450,7 +462,9 @@ class novadax(Exchange, ImplicitAPI):
450
462
  async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
451
463
  """
452
464
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
453
- :see: https://doc.novadax.com/en-US/#get-market-depth
465
+
466
+ https://doc.novadax.com/en-US/#get-market-depth
467
+
454
468
  :param str symbol: unified symbol of the market to fetch the order book for
455
469
  :param int [limit]: the maximum amount of order book entries to return
456
470
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -458,7 +472,7 @@ class novadax(Exchange, ImplicitAPI):
458
472
  """
459
473
  await self.load_markets()
460
474
  market = self.market(symbol)
461
- request = {
475
+ request: dict = {
462
476
  'symbol': market['id'],
463
477
  }
464
478
  if limit is not None:
@@ -487,7 +501,7 @@ class novadax(Exchange, ImplicitAPI):
487
501
  timestamp = self.safe_integer(data, 'timestamp')
488
502
  return self.parse_order_book(data, market['symbol'], timestamp, 'bids', 'asks')
489
503
 
490
- def parse_trade(self, trade, market: Market = None) -> Trade:
504
+ def parse_trade(self, trade: dict, market: Market = None) -> Trade:
491
505
  #
492
506
  # public fetchTrades
493
507
  #
@@ -567,7 +581,9 @@ class novadax(Exchange, ImplicitAPI):
567
581
  async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
568
582
  """
569
583
  get the list of most recent trades for a particular symbol
570
- :see: https://doc.novadax.com/en-US/#get-recent-trades
584
+
585
+ https://doc.novadax.com/en-US/#get-recent-trades
586
+
571
587
  :param str symbol: unified symbol of the market to fetch trades for
572
588
  :param int [since]: timestamp in ms of the earliest trade to fetch
573
589
  :param int [limit]: the maximum amount of trades to fetch
@@ -576,7 +592,7 @@ class novadax(Exchange, ImplicitAPI):
576
592
  """
577
593
  await self.load_markets()
578
594
  market = self.market(symbol)
579
- request = {
595
+ request: dict = {
580
596
  'symbol': market['id'],
581
597
  }
582
598
  if limit is not None:
@@ -593,13 +609,15 @@ class novadax(Exchange, ImplicitAPI):
593
609
  # "message":"Success"
594
610
  # }
595
611
  #
596
- data = self.safe_value(response, 'data', [])
612
+ data = self.safe_list(response, 'data', [])
597
613
  return self.parse_trades(data, market, since, limit)
598
614
 
599
615
  async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
600
616
  """
601
617
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
602
- :see: https://doc.novadax.com/en-US/#get-kline-data
618
+
619
+ https://doc.novadax.com/en-US/#get-kline-data
620
+
603
621
  :param str symbol: unified symbol of the market to fetch OHLCV data for
604
622
  :param str timeframe: the length of time each candle represents
605
623
  :param int [since]: timestamp in ms of the earliest candle to fetch
@@ -609,7 +627,7 @@ class novadax(Exchange, ImplicitAPI):
609
627
  """
610
628
  await self.load_markets()
611
629
  market = self.market(symbol)
612
- request = {
630
+ request: dict = {
613
631
  'symbol': market['id'],
614
632
  'unit': self.safe_string(self.timeframes, timeframe, timeframe),
615
633
  }
@@ -644,7 +662,7 @@ class novadax(Exchange, ImplicitAPI):
644
662
  # "message": "Success"
645
663
  # }
646
664
  #
647
- data = self.safe_value(response, 'data', [])
665
+ data = self.safe_list(response, 'data', [])
648
666
  return self.parse_ohlcvs(data, market, timeframe, since, limit)
649
667
 
650
668
  def parse_ohlcv(self, ohlcv, market: Market = None) -> list:
@@ -674,7 +692,7 @@ class novadax(Exchange, ImplicitAPI):
674
692
 
675
693
  def parse_balance(self, response) -> Balances:
676
694
  data = self.safe_value(response, 'data', [])
677
- result = {
695
+ result: dict = {
678
696
  'info': response,
679
697
  'timestamp': None,
680
698
  'datetime': None,
@@ -693,7 +711,9 @@ class novadax(Exchange, ImplicitAPI):
693
711
  async def fetch_balance(self, params={}) -> Balances:
694
712
  """
695
713
  query for balance and get the amount of funds available for trading or funds locked in orders
696
- :see: https://doc.novadax.com/en-US/#get-account-balance
714
+
715
+ https://doc.novadax.com/en-US/#get-account-balance
716
+
697
717
  :param dict [params]: extra parameters specific to the exchange API endpoint
698
718
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
699
719
  """
@@ -718,12 +738,14 @@ class novadax(Exchange, ImplicitAPI):
718
738
  async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
719
739
  """
720
740
  create a trade order
721
- :see: https://doc.novadax.com/en-US/#order-introduction
741
+
742
+ https://doc.novadax.com/en-US/#order-introduction
743
+
722
744
  :param str symbol: unified symbol of the market to create an order in
723
745
  :param str type: 'market' or 'limit'
724
746
  :param str side: 'buy' or 'sell'
725
747
  :param float amount: how much you want to trade in units of the base currency
726
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
748
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
727
749
  :param dict [params]: extra parameters specific to the exchange API endpoint
728
750
  :param float [params.cost]: for spot market buy orders, the quote quantity that can be used alternative for the amount
729
751
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
@@ -732,7 +754,7 @@ class novadax(Exchange, ImplicitAPI):
732
754
  market = self.market(symbol)
733
755
  uppercaseType = type.upper()
734
756
  uppercaseSide = side.upper()
735
- request = {
757
+ request: dict = {
736
758
  'symbol': market['id'],
737
759
  'side': uppercaseSide, # or SELL
738
760
  # "amount": self.amount_to_precision(symbol, amount),
@@ -741,8 +763,8 @@ class novadax(Exchange, ImplicitAPI):
741
763
  # "stopPrice": self.price_to_precision(symbol, stopPrice),
742
764
  # "accountId": "...", # subaccount id, optional
743
765
  }
744
- stopPrice = self.safe_value_2(params, 'triggerPrice', 'stopPrice')
745
- if stopPrice is None:
766
+ triggerPrice = self.safe_value_2(params, 'triggerPrice', 'stopPrice')
767
+ if triggerPrice is None:
746
768
  if (uppercaseType == 'STOP_LIMIT') or (uppercaseType == 'STOP_MARKET'):
747
769
  raise ArgumentsRequired(self.id + ' createOrder() requires a stopPrice parameter for ' + uppercaseType + ' orders')
748
770
  else:
@@ -752,7 +774,7 @@ class novadax(Exchange, ImplicitAPI):
752
774
  uppercaseType = 'STOP_MARKET'
753
775
  defaultOperator = 'LTE' if (uppercaseSide == 'BUY') else 'GTE'
754
776
  request['operator'] = self.safe_string(params, 'operator', defaultOperator)
755
- request['stopPrice'] = self.price_to_precision(symbol, stopPrice)
777
+ request['stopPrice'] = self.price_to_precision(symbol, triggerPrice)
756
778
  params = self.omit(params, ['triggerPrice', 'stopPrice'])
757
779
  if (uppercaseType == 'LIMIT') or (uppercaseType == 'STOP_LIMIT'):
758
780
  request['price'] = self.price_to_precision(symbol, price)
@@ -804,20 +826,22 @@ class novadax(Exchange, ImplicitAPI):
804
826
  # "message": "Success"
805
827
  # }
806
828
  #
807
- data = self.safe_value(response, 'data', {})
829
+ data = self.safe_dict(response, 'data', {})
808
830
  return self.parse_order(data, market)
809
831
 
810
832
  async def cancel_order(self, id: str, symbol: Str = None, params={}):
811
833
  """
812
834
  cancels an open order
813
- :see: https://doc.novadax.com/en-US/#cancel-an-order
835
+
836
+ https://doc.novadax.com/en-US/#cancel-an-order
837
+
814
838
  :param str id: order id
815
839
  :param str symbol: not used by novadax cancelOrder()
816
840
  :param dict [params]: extra parameters specific to the exchange API endpoint
817
841
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
818
842
  """
819
843
  await self.load_markets()
820
- request = {
844
+ request: dict = {
821
845
  'id': id,
822
846
  }
823
847
  response = await self.privatePostOrdersCancel(self.extend(request, params))
@@ -830,19 +854,22 @@ class novadax(Exchange, ImplicitAPI):
830
854
  # "message": "Success"
831
855
  # }
832
856
  #
833
- data = self.safe_value(response, 'data', {})
857
+ data = self.safe_dict(response, 'data', {})
834
858
  return self.parse_order(data)
835
859
 
836
860
  async def fetch_order(self, id: str, symbol: Str = None, params={}):
837
861
  """
838
862
  fetches information on an order made by the user
839
- :see: https://doc.novadax.com/en-US/#get-order-details
863
+
864
+ https://doc.novadax.com/en-US/#get-order-details
865
+
866
+ :param str id: order id
840
867
  :param str symbol: not used by novadax fetchOrder
841
868
  :param dict [params]: extra parameters specific to the exchange API endpoint
842
869
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
843
870
  """
844
871
  await self.load_markets()
845
- request = {
872
+ request: dict = {
846
873
  'id': id,
847
874
  }
848
875
  response = await self.privateGetOrdersGet(self.extend(request, params))
@@ -867,13 +894,15 @@ class novadax(Exchange, ImplicitAPI):
867
894
  # "message": "Success"
868
895
  # }
869
896
  #
870
- data = self.safe_value(response, 'data', {})
897
+ data = self.safe_dict(response, 'data', {})
871
898
  return self.parse_order(data)
872
899
 
873
900
  async def fetch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
874
901
  """
875
902
  fetches information on multiple orders made by the user
876
- :see: https://doc.novadax.com/en-US/#get-order-history
903
+
904
+ https://doc.novadax.com/en-US/#get-order-history
905
+
877
906
  :param str symbol: unified market symbol of the market orders were made in
878
907
  :param int [since]: the earliest time in ms to fetch orders for
879
908
  :param int [limit]: the maximum number of order structures to retrieve
@@ -881,7 +910,7 @@ class novadax(Exchange, ImplicitAPI):
881
910
  :returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
882
911
  """
883
912
  await self.load_markets()
884
- request = {
913
+ request: dict = {
885
914
  # 'symbol': market['id'],
886
915
  # 'status': 'SUBMITTED,PROCESSING', # SUBMITTED, PROCESSING, PARTIAL_FILLED, CANCELING, FILLED, CANCELED, REJECTED
887
916
  # 'fromId': '...', # order id to begin with
@@ -922,20 +951,22 @@ class novadax(Exchange, ImplicitAPI):
922
951
  # "message": "Success"
923
952
  # }
924
953
  #
925
- data = self.safe_value(response, 'data', [])
954
+ data = self.safe_list(response, 'data', [])
926
955
  return self.parse_orders(data, market, since, limit)
927
956
 
928
957
  async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
929
958
  """
930
959
  fetch all unfilled currently open orders
931
- :see: https://doc.novadax.com/en-US/#get-order-history
960
+
961
+ https://doc.novadax.com/en-US/#get-order-history
962
+
932
963
  :param str symbol: unified market symbol
933
964
  :param int [since]: the earliest time in ms to fetch open orders for
934
965
  :param int [limit]: the maximum number of open orders structures to retrieve
935
966
  :param dict [params]: extra parameters specific to the exchange API endpoint
936
967
  :returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
937
968
  """
938
- request = {
969
+ request: dict = {
939
970
  'status': 'SUBMITTED,PROCESSING,PARTIAL_FILLED,CANCELING',
940
971
  }
941
972
  return await self.fetch_orders(symbol, since, limit, self.extend(request, params))
@@ -943,14 +974,16 @@ class novadax(Exchange, ImplicitAPI):
943
974
  async def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
944
975
  """
945
976
  fetches information on multiple closed orders made by the user
946
- :see: https://doc.novadax.com/en-US/#get-order-history
977
+
978
+ https://doc.novadax.com/en-US/#get-order-history
979
+
947
980
  :param str symbol: unified market symbol of the market orders were made in
948
981
  :param int [since]: the earliest time in ms to fetch orders for
949
982
  :param int [limit]: the maximum number of order structures to retrieve
950
983
  :param dict [params]: extra parameters specific to the exchange API endpoint
951
984
  :returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
952
985
  """
953
- request = {
986
+ request: dict = {
954
987
  'status': 'FILLED,CANCELED,REJECTED',
955
988
  }
956
989
  return await self.fetch_orders(symbol, since, limit, self.extend(request, params))
@@ -958,7 +991,9 @@ class novadax(Exchange, ImplicitAPI):
958
991
  async def fetch_order_trades(self, id: str, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
959
992
  """
960
993
  fetch all the trades made from a single order
961
- :see: https://doc.novadax.com/en-US/#get-order-match-details
994
+
995
+ https://doc.novadax.com/en-US/#get-order-match-details
996
+
962
997
  :param str id: order id
963
998
  :param str symbol: unified market symbol
964
999
  :param int [since]: the earliest time in ms to fetch trades for
@@ -967,7 +1002,7 @@ class novadax(Exchange, ImplicitAPI):
967
1002
  :returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
968
1003
  """
969
1004
  await self.load_markets()
970
- request = {
1005
+ request: dict = {
971
1006
  'id': id,
972
1007
  }
973
1008
  response = await self.privateGetOrdersFill(self.extend(request, params))
@@ -998,8 +1033,8 @@ class novadax(Exchange, ImplicitAPI):
998
1033
  #
999
1034
  return self.parse_trades(data, market, since, limit)
1000
1035
 
1001
- def parse_order_status(self, status):
1002
- statuses = {
1036
+ def parse_order_status(self, status: Str):
1037
+ statuses: dict = {
1003
1038
  'SUBMITTED': 'open',
1004
1039
  'PROCESSING': 'open',
1005
1040
  'PARTIAL_FILLED': 'open',
@@ -1010,7 +1045,7 @@ class novadax(Exchange, ImplicitAPI):
1010
1045
  }
1011
1046
  return self.safe_string(statuses, status, status)
1012
1047
 
1013
- def parse_order(self, order, market: Market = None) -> Order:
1048
+ def parse_order(self, order: dict, market: Market = None) -> Order:
1014
1049
  #
1015
1050
  # createOrder, fetchOrders, fetchOrder
1016
1051
  #
@@ -1057,7 +1092,6 @@ class novadax(Exchange, ImplicitAPI):
1057
1092
  }
1058
1093
  marketId = self.safe_string(order, 'symbol')
1059
1094
  symbol = self.safe_symbol(marketId, market, '_')
1060
- stopPrice = self.safe_number(order, 'stopPrice')
1061
1095
  return self.safe_order({
1062
1096
  'id': id,
1063
1097
  'clientOrderId': None,
@@ -1071,8 +1105,7 @@ class novadax(Exchange, ImplicitAPI):
1071
1105
  'postOnly': None,
1072
1106
  'side': side,
1073
1107
  'price': price,
1074
- 'stopPrice': stopPrice,
1075
- 'triggerPrice': stopPrice,
1108
+ 'triggerPrice': self.safe_number(order, 'stopPrice'),
1076
1109
  'amount': amount,
1077
1110
  'cost': cost,
1078
1111
  'average': average,
@@ -1086,7 +1119,9 @@ class novadax(Exchange, ImplicitAPI):
1086
1119
  async def transfer(self, code: str, amount: float, fromAccount: str, toAccount: str, params={}) -> TransferEntry:
1087
1120
  """
1088
1121
  transfer currency internally between wallets on the same account
1089
- :see: https://doc.novadax.com/en-US/#get-sub-account-transfer
1122
+
1123
+ https://doc.novadax.com/en-US/#get-sub-account-transfer
1124
+
1090
1125
  :param str code: unified currency code
1091
1126
  :param float amount: amount to transfer
1092
1127
  :param str fromAccount: account to transfer from
@@ -1101,7 +1136,7 @@ class novadax(Exchange, ImplicitAPI):
1101
1136
  # master-transfer-in = from master account to subaccount
1102
1137
  # master-transfer-out = from subaccount to master account
1103
1138
  type = 'master-transfer-in' if (fromAccount == 'main') else 'master-transfer-out'
1104
- request = {
1139
+ request: dict = {
1105
1140
  'transferAmount': self.currency_to_precision(code, amount),
1106
1141
  'currency': currency['id'],
1107
1142
  'subId': toAccount if (type == 'master-transfer-in') else fromAccount,
@@ -1124,7 +1159,7 @@ class novadax(Exchange, ImplicitAPI):
1124
1159
  transfer['amount'] = amount
1125
1160
  return transfer
1126
1161
 
1127
- def parse_transfer(self, transfer, currency: Currency = None):
1162
+ def parse_transfer(self, transfer: dict, currency: Currency = None) -> TransferEntry:
1128
1163
  #
1129
1164
  # {
1130
1165
  # "code":"A10000",
@@ -1139,7 +1174,6 @@ class novadax(Exchange, ImplicitAPI):
1139
1174
  'info': transfer,
1140
1175
  'id': id,
1141
1176
  'amount': None,
1142
- 'code': currencyCode, # kept here for backward-compatibility, but will be removed soon
1143
1177
  'currency': currencyCode,
1144
1178
  'fromAccount': None,
1145
1179
  'toAccount': None,
@@ -1148,16 +1182,18 @@ class novadax(Exchange, ImplicitAPI):
1148
1182
  'status': status,
1149
1183
  }
1150
1184
 
1151
- def parse_transfer_status(self, status):
1152
- statuses = {
1185
+ def parse_transfer_status(self, status: Str) -> Str:
1186
+ statuses: dict = {
1153
1187
  'SUCCESS': 'pending',
1154
1188
  }
1155
1189
  return self.safe_string(statuses, status, 'failed')
1156
1190
 
1157
- async def withdraw(self, code: str, amount: float, address, tag=None, params={}):
1191
+ async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
1158
1192
  """
1159
1193
  make a withdrawal
1160
- :see: https://doc.novadax.com/en-US/#send-cryptocurrencies
1194
+
1195
+ https://doc.novadax.com/en-US/#send-cryptocurrencies
1196
+
1161
1197
  :param str code: unified currency code
1162
1198
  :param float amount: the amount to withdraw
1163
1199
  :param str address: the address to withdraw to
@@ -1168,7 +1204,7 @@ class novadax(Exchange, ImplicitAPI):
1168
1204
  tag, params = self.handle_withdraw_tag_and_params(tag, params)
1169
1205
  await self.load_markets()
1170
1206
  currency = self.currency(code)
1171
- request = {
1207
+ request: dict = {
1172
1208
  'code': currency['id'],
1173
1209
  'amount': self.currency_to_precision(code, amount),
1174
1210
  'wallet': address,
@@ -1188,7 +1224,9 @@ class novadax(Exchange, ImplicitAPI):
1188
1224
  async def fetch_accounts(self, params={}) -> List[Account]:
1189
1225
  """
1190
1226
  fetch all the accounts associated with a profile
1191
- :see: https://doc.novadax.com/en-US/#get-sub-account-list
1227
+
1228
+ https://doc.novadax.com/en-US/#get-sub-account-list
1229
+
1192
1230
  :param dict [params]: extra parameters specific to the exchange API endpoint
1193
1231
  :returns dict: a dictionary of `account structures <https://docs.ccxt.com/#/?id=account-structure>` indexed by the account type
1194
1232
  """
@@ -1224,14 +1262,16 @@ class novadax(Exchange, ImplicitAPI):
1224
1262
  async def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1225
1263
  """
1226
1264
  fetch all deposits made to an account
1227
- :see: https://doc.novadax.com/en-US/#wallet-records-of-deposits-and-withdraws
1265
+
1266
+ https://doc.novadax.com/en-US/#wallet-records-of-deposits-and-withdraws
1267
+
1228
1268
  :param str code: unified currency code
1229
1269
  :param int [since]: the earliest time in ms to fetch deposits for
1230
1270
  :param int [limit]: the maximum number of deposits structures to retrieve
1231
1271
  :param dict [params]: extra parameters specific to the exchange API endpoint
1232
1272
  :returns dict[]: a list of `transaction structures <https://docs.ccxt.com/#/?id=transaction-structure>`
1233
1273
  """
1234
- request = {
1274
+ request: dict = {
1235
1275
  'type': 'coin_in',
1236
1276
  }
1237
1277
  return await self.fetch_deposits_withdrawals(code, since, limit, self.extend(request, params))
@@ -1239,14 +1279,16 @@ class novadax(Exchange, ImplicitAPI):
1239
1279
  async def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1240
1280
  """
1241
1281
  fetch all withdrawals made from an account
1242
- :see: https://doc.novadax.com/en-US/#wallet-records-of-deposits-and-withdraws
1282
+
1283
+ https://doc.novadax.com/en-US/#wallet-records-of-deposits-and-withdraws
1284
+
1243
1285
  :param str code: unified currency code
1244
1286
  :param int [since]: the earliest time in ms to fetch withdrawals for
1245
1287
  :param int [limit]: the maximum number of withdrawals structures to retrieve
1246
1288
  :param dict [params]: extra parameters specific to the exchange API endpoint
1247
1289
  :returns dict[]: a list of `transaction structures <https://docs.ccxt.com/#/?id=transaction-structure>`
1248
1290
  """
1249
- request = {
1291
+ request: dict = {
1250
1292
  'type': 'coin_out',
1251
1293
  }
1252
1294
  return await self.fetch_deposits_withdrawals(code, since, limit, self.extend(request, params))
@@ -1254,7 +1296,9 @@ class novadax(Exchange, ImplicitAPI):
1254
1296
  async def fetch_deposits_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1255
1297
  """
1256
1298
  fetch history of deposits and withdrawals
1257
- :see: https://doc.novadax.com/en-US/#wallet-records-of-deposits-and-withdraws
1299
+
1300
+ https://doc.novadax.com/en-US/#wallet-records-of-deposits-and-withdraws
1301
+
1258
1302
  :param str [code]: unified currency code for the currency of the deposit/withdrawals, default is None
1259
1303
  :param int [since]: timestamp in ms of the earliest deposit/withdrawal, default is None
1260
1304
  :param int [limit]: max number of deposit/withdrawals to return, default is None
@@ -1262,7 +1306,7 @@ class novadax(Exchange, ImplicitAPI):
1262
1306
  :returns dict: a list of `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
1263
1307
  """
1264
1308
  await self.load_markets()
1265
- request = {
1309
+ request: dict = {
1266
1310
  # 'currency': currency['id'],
1267
1311
  # 'type': 'coin_in', # 'coin_out'
1268
1312
  # 'direct': 'asc', # 'desc'
@@ -1297,17 +1341,17 @@ class novadax(Exchange, ImplicitAPI):
1297
1341
  # "message": "Success"
1298
1342
  # }
1299
1343
  #
1300
- data = self.safe_value(response, 'data', [])
1344
+ data = self.safe_list(response, 'data', [])
1301
1345
  return self.parse_transactions(data, currency, since, limit)
1302
1346
 
1303
- def parse_transaction_status(self, status):
1347
+ def parse_transaction_status(self, status: Str):
1304
1348
  # Pending the record is wait broadcast to chain
1305
1349
  # x/M confirming the comfirming state of tx, the M is total confirmings needed
1306
1350
  # SUCCESS the record is success full
1307
1351
  # FAIL the record failed
1308
1352
  parts = status.split(' ')
1309
1353
  status = self.safe_string(parts, 1, status)
1310
- statuses = {
1354
+ statuses: dict = {
1311
1355
  'Pending': 'pending',
1312
1356
  'confirming': 'pending',
1313
1357
  'SUCCESS': 'ok',
@@ -1315,7 +1359,7 @@ class novadax(Exchange, ImplicitAPI):
1315
1359
  }
1316
1360
  return self.safe_string(statuses, status, status)
1317
1361
 
1318
- def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
1362
+ def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
1319
1363
  #
1320
1364
  # withdraw
1321
1365
  #
@@ -1387,7 +1431,9 @@ class novadax(Exchange, ImplicitAPI):
1387
1431
  async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
1388
1432
  """
1389
1433
  fetch all trades made by the user
1390
- :see: https://doc.novadax.com/en-US/#get-order-history
1434
+
1435
+ https://doc.novadax.com/en-US/#get-order-history
1436
+
1391
1437
  :param str symbol: unified market symbol
1392
1438
  :param int [since]: the earliest time in ms to fetch trades for
1393
1439
  :param int [limit]: the maximum number of trades structures to retrieve
@@ -1395,7 +1441,7 @@ class novadax(Exchange, ImplicitAPI):
1395
1441
  :returns Trade[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
1396
1442
  """
1397
1443
  await self.load_markets()
1398
- request = {
1444
+ request: dict = {
1399
1445
  # 'orderId': id, # Order ID, string
1400
1446
  # 'symbol': market['id'], # The trading symbol, like BTC_BRL, string
1401
1447
  # 'fromId': fromId, # Search fill id to begin with, string
@@ -1435,7 +1481,7 @@ class novadax(Exchange, ImplicitAPI):
1435
1481
  # "message": "Success"
1436
1482
  # }
1437
1483
  #
1438
- data = self.safe_value(response, 'data', [])
1484
+ data = self.safe_list(response, 'data', [])
1439
1485
  return self.parse_trades(data, market, since, limit)
1440
1486
 
1441
1487
  def sign(self, path, api='public', method='GET', params={}, headers=None, body=None):
@@ -1465,7 +1511,7 @@ class novadax(Exchange, ImplicitAPI):
1465
1511
  headers['X-Nova-Signature'] = self.hmac(self.encode(auth), self.encode(self.secret), hashlib.sha256)
1466
1512
  return {'url': url, 'method': method, 'body': body, 'headers': headers}
1467
1513
 
1468
- def handle_errors(self, code, reason, url, method, headers, body, response, requestHeaders, requestBody):
1514
+ def handle_errors(self, code: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
1469
1515
  if response is None:
1470
1516
  return None
1471
1517
  #