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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (546) hide show
  1. ccxt/__init__.py +36 -14
  2. ccxt/abstract/alpaca.py +4 -0
  3. ccxt/abstract/bigone.py +1 -1
  4. ccxt/abstract/binance.py +112 -48
  5. ccxt/abstract/binancecoinm.py +112 -48
  6. ccxt/abstract/binanceus.py +147 -83
  7. ccxt/abstract/binanceusdm.py +112 -48
  8. ccxt/abstract/bingx.py +133 -78
  9. ccxt/abstract/bitbank.py +5 -0
  10. ccxt/abstract/bitfinex.py +136 -65
  11. ccxt/abstract/bitfinex1.py +69 -0
  12. ccxt/abstract/bitflyer.py +1 -0
  13. ccxt/abstract/bitget.py +8 -1
  14. ccxt/abstract/bitmart.py +13 -1
  15. ccxt/abstract/bitopro.py +1 -0
  16. ccxt/abstract/bitpanda.py +0 -12
  17. ccxt/abstract/bitrue.py +3 -3
  18. ccxt/abstract/bitstamp.py +26 -3
  19. ccxt/abstract/blofin.py +24 -0
  20. ccxt/abstract/btcbox.py +1 -0
  21. ccxt/abstract/bybit.py +29 -14
  22. ccxt/abstract/cex.py +28 -29
  23. ccxt/abstract/coinbase.py +6 -0
  24. ccxt/abstract/coinbaseadvanced.py +94 -0
  25. ccxt/abstract/{coinbasepro.py → coinbaseexchange.py} +1 -0
  26. ccxt/abstract/coinbaseinternational.py +1 -1
  27. ccxt/abstract/coincatch.py +94 -0
  28. ccxt/abstract/coinex.py +233 -123
  29. ccxt/abstract/coinmetro.py +1 -0
  30. ccxt/abstract/cryptocom.py +14 -0
  31. ccxt/abstract/defx.py +69 -0
  32. ccxt/abstract/deribit.py +1 -0
  33. ccxt/abstract/digifinex.py +1 -0
  34. ccxt/abstract/ellipx.py +25 -0
  35. ccxt/abstract/gate.py +20 -0
  36. ccxt/abstract/gateio.py +20 -0
  37. ccxt/abstract/gemini.py +1 -0
  38. ccxt/abstract/hashkey.py +67 -0
  39. ccxt/abstract/hyperliquid.py +1 -1
  40. ccxt/abstract/independentreserve.py +6 -0
  41. ccxt/abstract/kraken.py +4 -3
  42. ccxt/abstract/krakenfutures.py +4 -0
  43. ccxt/abstract/kucoin.py +24 -0
  44. ccxt/abstract/kucoinfutures.py +34 -0
  45. ccxt/abstract/luno.py +2 -0
  46. ccxt/abstract/mexc.py +4 -0
  47. ccxt/abstract/myokx.py +340 -0
  48. ccxt/abstract/oceanex.py +5 -0
  49. ccxt/abstract/okx.py +30 -0
  50. ccxt/abstract/onetrading.py +0 -12
  51. ccxt/abstract/oxfun.py +34 -0
  52. ccxt/abstract/paradex.py +40 -0
  53. ccxt/abstract/phemex.py +1 -0
  54. ccxt/abstract/upbit.py +4 -0
  55. ccxt/abstract/vertex.py +19 -0
  56. ccxt/abstract/whitebit.py +31 -1
  57. ccxt/abstract/woo.py +6 -2
  58. ccxt/abstract/woofipro.py +119 -0
  59. ccxt/abstract/xt.py +153 -0
  60. ccxt/abstract/zonda.py +6 -0
  61. ccxt/ace.py +164 -60
  62. ccxt/alpaca.py +727 -63
  63. ccxt/ascendex.py +395 -249
  64. ccxt/async_support/__init__.py +36 -14
  65. ccxt/async_support/ace.py +164 -60
  66. ccxt/async_support/alpaca.py +727 -63
  67. ccxt/async_support/ascendex.py +396 -249
  68. ccxt/async_support/base/exchange.py +531 -155
  69. ccxt/async_support/base/ws/aiohttp_client.py +28 -5
  70. ccxt/async_support/base/ws/cache.py +3 -2
  71. ccxt/async_support/base/ws/client.py +26 -5
  72. ccxt/async_support/base/ws/fast_client.py +4 -3
  73. ccxt/async_support/base/ws/functions.py +1 -1
  74. ccxt/async_support/base/ws/future.py +40 -31
  75. ccxt/async_support/base/ws/order_book_side.py +3 -0
  76. ccxt/async_support/bequant.py +1 -1
  77. ccxt/async_support/bigone.py +329 -202
  78. ccxt/async_support/binance.py +3030 -1087
  79. ccxt/async_support/binancecoinm.py +2 -1
  80. ccxt/async_support/binanceus.py +12 -1
  81. ccxt/async_support/binanceusdm.py +3 -1
  82. ccxt/async_support/bingx.py +3104 -880
  83. ccxt/async_support/bit2c.py +119 -38
  84. ccxt/async_support/bitbank.py +215 -76
  85. ccxt/async_support/bitbns.py +124 -53
  86. ccxt/async_support/bitfinex.py +3236 -1078
  87. ccxt/async_support/bitfinex1.py +1711 -0
  88. ccxt/async_support/bitflyer.py +238 -49
  89. ccxt/async_support/bitget.py +1513 -563
  90. ccxt/async_support/bithumb.py +199 -65
  91. ccxt/async_support/bitmart.py +1320 -435
  92. ccxt/async_support/bitmex.py +308 -111
  93. ccxt/async_support/bitopro.py +256 -96
  94. ccxt/async_support/bitrue.py +365 -233
  95. ccxt/async_support/bitso.py +201 -89
  96. ccxt/async_support/bitstamp.py +438 -269
  97. ccxt/async_support/bitteam.py +179 -73
  98. ccxt/async_support/bitvavo.py +180 -70
  99. ccxt/async_support/bl3p.py +92 -25
  100. ccxt/async_support/blockchaincom.py +193 -79
  101. ccxt/async_support/blofin.py +392 -148
  102. ccxt/async_support/btcalpha.py +161 -55
  103. ccxt/async_support/btcbox.py +250 -34
  104. ccxt/async_support/btcmarkets.py +232 -85
  105. ccxt/async_support/btcturk.py +159 -60
  106. ccxt/async_support/bybit.py +2231 -1193
  107. ccxt/async_support/cex.py +1409 -1329
  108. ccxt/async_support/coinbase.py +1454 -287
  109. ccxt/async_support/coinbaseadvanced.py +17 -0
  110. ccxt/async_support/{coinbasepro.py → coinbaseexchange.py} +233 -99
  111. ccxt/async_support/coinbaseinternational.py +428 -88
  112. ccxt/async_support/coincatch.py +5152 -0
  113. ccxt/async_support/coincheck.py +121 -38
  114. ccxt/async_support/coinex.py +4020 -3339
  115. ccxt/async_support/coinlist.py +273 -116
  116. ccxt/async_support/coinmate.py +204 -97
  117. ccxt/async_support/coinmetro.py +203 -110
  118. ccxt/async_support/coinone.py +142 -68
  119. ccxt/async_support/coinsph.py +206 -89
  120. ccxt/async_support/coinspot.py +137 -62
  121. ccxt/async_support/cryptocom.py +515 -185
  122. ccxt/async_support/currencycom.py +203 -85
  123. ccxt/async_support/defx.py +2066 -0
  124. ccxt/async_support/delta.py +404 -109
  125. ccxt/async_support/deribit.py +557 -323
  126. ccxt/async_support/digifinex.py +340 -223
  127. ccxt/async_support/ellipx.py +1826 -0
  128. ccxt/async_support/exmo.py +259 -128
  129. ccxt/async_support/gate.py +1472 -463
  130. ccxt/async_support/gemini.py +206 -84
  131. ccxt/async_support/hashkey.py +4164 -0
  132. ccxt/async_support/hitbtc.py +334 -178
  133. ccxt/async_support/hollaex.py +134 -83
  134. ccxt/async_support/htx.py +1095 -563
  135. ccxt/async_support/huobijp.py +105 -56
  136. ccxt/async_support/hyperliquid.py +1633 -268
  137. ccxt/async_support/idex.py +148 -95
  138. ccxt/async_support/independentreserve.py +236 -31
  139. ccxt/async_support/indodax.py +165 -62
  140. ccxt/async_support/kraken.py +871 -354
  141. ccxt/async_support/krakenfutures.py +324 -100
  142. ccxt/async_support/kucoin.py +917 -357
  143. ccxt/async_support/kucoinfutures.py +1004 -149
  144. ccxt/async_support/kuna.py +138 -106
  145. ccxt/async_support/latoken.py +135 -79
  146. ccxt/async_support/lbank.py +290 -113
  147. ccxt/async_support/luno.py +112 -62
  148. ccxt/async_support/lykke.py +104 -55
  149. ccxt/async_support/mercado.py +36 -29
  150. ccxt/async_support/mexc.py +995 -429
  151. ccxt/async_support/myokx.py +43 -0
  152. ccxt/async_support/ndax.py +163 -82
  153. ccxt/async_support/novadax.py +121 -75
  154. ccxt/async_support/oceanex.py +175 -59
  155. ccxt/async_support/okcoin.py +222 -163
  156. ccxt/async_support/okx.py +1776 -454
  157. ccxt/async_support/onetrading.py +132 -414
  158. ccxt/async_support/oxfun.py +2832 -0
  159. ccxt/async_support/p2b.py +79 -51
  160. ccxt/async_support/paradex.py +2017 -0
  161. ccxt/async_support/paymium.py +56 -32
  162. ccxt/async_support/phemex.py +572 -196
  163. ccxt/async_support/poloniex.py +218 -95
  164. ccxt/async_support/poloniexfutures.py +260 -92
  165. ccxt/async_support/probit.py +143 -110
  166. ccxt/async_support/timex.py +123 -70
  167. ccxt/async_support/tokocrypto.py +129 -93
  168. ccxt/async_support/tradeogre.py +39 -25
  169. ccxt/async_support/upbit.py +322 -113
  170. ccxt/async_support/vertex.py +2983 -0
  171. ccxt/async_support/wavesexchange.py +227 -173
  172. ccxt/async_support/wazirx.py +145 -65
  173. ccxt/async_support/whitebit.py +533 -138
  174. ccxt/async_support/woo.py +1137 -296
  175. ccxt/async_support/woofipro.py +2716 -0
  176. ccxt/async_support/xt.py +4628 -0
  177. ccxt/async_support/yobit.py +160 -92
  178. ccxt/async_support/zaif.py +80 -33
  179. ccxt/async_support/zonda.py +140 -69
  180. ccxt/base/errors.py +51 -20
  181. ccxt/base/exchange.py +1722 -480
  182. ccxt/base/precise.py +10 -0
  183. ccxt/base/types.py +223 -4
  184. ccxt/bequant.py +1 -1
  185. ccxt/bigone.py +329 -202
  186. ccxt/binance.py +3030 -1087
  187. ccxt/binancecoinm.py +2 -1
  188. ccxt/binanceus.py +12 -1
  189. ccxt/binanceusdm.py +3 -1
  190. ccxt/bingx.py +3104 -880
  191. ccxt/bit2c.py +119 -38
  192. ccxt/bitbank.py +215 -76
  193. ccxt/bitbns.py +124 -53
  194. ccxt/bitfinex.py +3235 -1078
  195. ccxt/bitfinex1.py +1710 -0
  196. ccxt/bitflyer.py +238 -49
  197. ccxt/bitget.py +1513 -563
  198. ccxt/bithumb.py +198 -65
  199. ccxt/bitmart.py +1320 -435
  200. ccxt/bitmex.py +308 -111
  201. ccxt/bitopro.py +256 -96
  202. ccxt/bitrue.py +365 -233
  203. ccxt/bitso.py +201 -89
  204. ccxt/bitstamp.py +438 -269
  205. ccxt/bitteam.py +179 -73
  206. ccxt/bitvavo.py +180 -70
  207. ccxt/bl3p.py +92 -25
  208. ccxt/blockchaincom.py +193 -79
  209. ccxt/blofin.py +392 -148
  210. ccxt/btcalpha.py +161 -55
  211. ccxt/btcbox.py +250 -34
  212. ccxt/btcmarkets.py +232 -85
  213. ccxt/btcturk.py +159 -60
  214. ccxt/bybit.py +2231 -1193
  215. ccxt/cex.py +1408 -1329
  216. ccxt/coinbase.py +1454 -287
  217. ccxt/coinbaseadvanced.py +17 -0
  218. ccxt/{coinbasepro.py → coinbaseexchange.py} +233 -99
  219. ccxt/coinbaseinternational.py +428 -88
  220. ccxt/coincatch.py +5152 -0
  221. ccxt/coincheck.py +121 -38
  222. ccxt/coinex.py +4020 -3339
  223. ccxt/coinlist.py +273 -116
  224. ccxt/coinmate.py +204 -97
  225. ccxt/coinmetro.py +203 -110
  226. ccxt/coinone.py +142 -68
  227. ccxt/coinsph.py +206 -89
  228. ccxt/coinspot.py +137 -62
  229. ccxt/cryptocom.py +515 -185
  230. ccxt/currencycom.py +203 -85
  231. ccxt/defx.py +2065 -0
  232. ccxt/delta.py +404 -109
  233. ccxt/deribit.py +557 -323
  234. ccxt/digifinex.py +340 -223
  235. ccxt/ellipx.py +1826 -0
  236. ccxt/exmo.py +259 -128
  237. ccxt/gate.py +1472 -463
  238. ccxt/gemini.py +206 -84
  239. ccxt/hashkey.py +4164 -0
  240. ccxt/hitbtc.py +334 -178
  241. ccxt/hollaex.py +134 -83
  242. ccxt/htx.py +1095 -563
  243. ccxt/huobijp.py +105 -56
  244. ccxt/hyperliquid.py +1632 -268
  245. ccxt/idex.py +148 -95
  246. ccxt/independentreserve.py +235 -31
  247. ccxt/indodax.py +165 -62
  248. ccxt/kraken.py +871 -354
  249. ccxt/krakenfutures.py +324 -100
  250. ccxt/kucoin.py +917 -357
  251. ccxt/kucoinfutures.py +1004 -149
  252. ccxt/kuna.py +138 -106
  253. ccxt/latoken.py +135 -79
  254. ccxt/lbank.py +290 -113
  255. ccxt/luno.py +112 -62
  256. ccxt/lykke.py +104 -55
  257. ccxt/mercado.py +36 -29
  258. ccxt/mexc.py +994 -429
  259. ccxt/myokx.py +43 -0
  260. ccxt/ndax.py +163 -82
  261. ccxt/novadax.py +121 -75
  262. ccxt/oceanex.py +175 -59
  263. ccxt/okcoin.py +222 -163
  264. ccxt/okx.py +1776 -454
  265. ccxt/onetrading.py +132 -414
  266. ccxt/oxfun.py +2831 -0
  267. ccxt/p2b.py +79 -51
  268. ccxt/paradex.py +2017 -0
  269. ccxt/paymium.py +56 -32
  270. ccxt/phemex.py +572 -196
  271. ccxt/poloniex.py +218 -95
  272. ccxt/poloniexfutures.py +260 -92
  273. ccxt/pro/__init__.py +29 -5
  274. ccxt/pro/alpaca.py +32 -17
  275. ccxt/pro/ascendex.py +62 -14
  276. ccxt/pro/bequant.py +4 -0
  277. ccxt/pro/binance.py +1596 -329
  278. ccxt/pro/binancecoinm.py +1 -0
  279. ccxt/pro/binanceus.py +2 -9
  280. ccxt/pro/binanceusdm.py +2 -0
  281. ccxt/pro/bingx.py +527 -134
  282. ccxt/pro/bitcoincom.py +4 -1
  283. ccxt/pro/bitfinex.py +731 -266
  284. ccxt/pro/bitfinex1.py +635 -0
  285. ccxt/pro/bitget.py +726 -357
  286. ccxt/pro/bithumb.py +380 -0
  287. ccxt/pro/bitmart.py +138 -39
  288. ccxt/pro/bitmex.py +199 -40
  289. ccxt/pro/bitopro.py +25 -13
  290. ccxt/pro/bitrue.py +31 -32
  291. ccxt/pro/bitstamp.py +7 -6
  292. ccxt/pro/bitvavo.py +203 -81
  293. ccxt/pro/blockchaincom.py +30 -17
  294. ccxt/pro/blofin.py +692 -0
  295. ccxt/pro/bybit.py +791 -82
  296. ccxt/pro/cex.py +99 -51
  297. ccxt/pro/coinbase.py +220 -30
  298. ccxt/{async_support/hitbtc3.py → pro/coinbaseadvanced.py} +5 -5
  299. ccxt/pro/{coinbasepro.py → coinbaseexchange.py} +19 -19
  300. ccxt/pro/coinbaseinternational.py +193 -30
  301. ccxt/pro/coincatch.py +1464 -0
  302. ccxt/pro/coincheck.py +11 -6
  303. ccxt/pro/coinex.py +965 -665
  304. ccxt/pro/coinone.py +17 -10
  305. ccxt/pro/cryptocom.py +446 -66
  306. ccxt/pro/currencycom.py +11 -10
  307. ccxt/pro/defx.py +832 -0
  308. ccxt/pro/deribit.py +167 -31
  309. ccxt/pro/exmo.py +252 -20
  310. ccxt/pro/gate.py +729 -64
  311. ccxt/pro/gemini.py +44 -26
  312. ccxt/pro/hashkey.py +802 -0
  313. ccxt/pro/hitbtc.py +208 -103
  314. ccxt/pro/hollaex.py +25 -9
  315. ccxt/pro/htx.py +83 -39
  316. ccxt/pro/huobijp.py +17 -16
  317. ccxt/pro/hyperliquid.py +502 -31
  318. ccxt/pro/idex.py +28 -13
  319. ccxt/pro/independentreserve.py +21 -16
  320. ccxt/pro/kraken.py +298 -51
  321. ccxt/pro/krakenfutures.py +166 -75
  322. ccxt/pro/kucoin.py +395 -77
  323. ccxt/pro/kucoinfutures.py +400 -99
  324. ccxt/pro/lbank.py +52 -31
  325. ccxt/pro/luno.py +12 -10
  326. ccxt/pro/mexc.py +400 -50
  327. ccxt/pro/myokx.py +28 -0
  328. ccxt/pro/ndax.py +25 -12
  329. ccxt/pro/okcoin.py +28 -9
  330. ccxt/pro/okx.py +935 -124
  331. ccxt/pro/onetrading.py +41 -24
  332. ccxt/pro/oxfun.py +1054 -0
  333. ccxt/pro/p2b.py +100 -24
  334. ccxt/pro/paradex.py +352 -0
  335. ccxt/pro/phemex.py +92 -33
  336. ccxt/pro/poloniex.py +128 -49
  337. ccxt/pro/poloniexfutures.py +53 -32
  338. ccxt/pro/probit.py +92 -85
  339. ccxt/pro/upbit.py +401 -8
  340. ccxt/pro/vertex.py +943 -0
  341. ccxt/pro/wazirx.py +46 -28
  342. ccxt/pro/whitebit.py +65 -12
  343. ccxt/pro/woo.py +437 -65
  344. ccxt/pro/woofipro.py +1271 -0
  345. ccxt/pro/xt.py +1067 -0
  346. ccxt/probit.py +143 -110
  347. ccxt/static_dependencies/__init__.py +1 -1
  348. ccxt/static_dependencies/lark/__init__.py +38 -0
  349. ccxt/static_dependencies/lark/__pyinstaller/__init__.py +6 -0
  350. ccxt/static_dependencies/lark/__pyinstaller/hook-lark.py +14 -0
  351. ccxt/static_dependencies/lark/ast_utils.py +59 -0
  352. ccxt/static_dependencies/lark/common.py +86 -0
  353. ccxt/static_dependencies/lark/exceptions.py +292 -0
  354. ccxt/static_dependencies/lark/grammar.py +130 -0
  355. ccxt/static_dependencies/lark/grammars/__init__.py +0 -0
  356. ccxt/static_dependencies/lark/indenter.py +143 -0
  357. ccxt/static_dependencies/lark/lark.py +658 -0
  358. ccxt/static_dependencies/lark/lexer.py +678 -0
  359. ccxt/static_dependencies/lark/load_grammar.py +1428 -0
  360. ccxt/static_dependencies/lark/parse_tree_builder.py +391 -0
  361. ccxt/static_dependencies/lark/parser_frontends.py +257 -0
  362. ccxt/static_dependencies/lark/parsers/__init__.py +0 -0
  363. ccxt/static_dependencies/lark/parsers/cyk.py +340 -0
  364. ccxt/static_dependencies/lark/parsers/earley.py +314 -0
  365. ccxt/static_dependencies/lark/parsers/earley_common.py +42 -0
  366. ccxt/static_dependencies/lark/parsers/earley_forest.py +801 -0
  367. ccxt/static_dependencies/lark/parsers/grammar_analysis.py +203 -0
  368. ccxt/static_dependencies/lark/parsers/lalr_analysis.py +332 -0
  369. ccxt/static_dependencies/lark/parsers/lalr_interactive_parser.py +158 -0
  370. ccxt/static_dependencies/lark/parsers/lalr_parser.py +122 -0
  371. ccxt/static_dependencies/lark/parsers/lalr_parser_state.py +110 -0
  372. ccxt/static_dependencies/lark/parsers/xearley.py +165 -0
  373. ccxt/static_dependencies/lark/py.typed +0 -0
  374. ccxt/static_dependencies/lark/reconstruct.py +107 -0
  375. ccxt/static_dependencies/lark/tools/__init__.py +70 -0
  376. ccxt/static_dependencies/lark/tools/nearley.py +202 -0
  377. ccxt/static_dependencies/lark/tools/serialize.py +32 -0
  378. ccxt/static_dependencies/lark/tools/standalone.py +196 -0
  379. ccxt/static_dependencies/lark/tree.py +267 -0
  380. ccxt/static_dependencies/lark/tree_matcher.py +186 -0
  381. ccxt/static_dependencies/lark/tree_templates.py +180 -0
  382. ccxt/static_dependencies/lark/utils.py +343 -0
  383. ccxt/static_dependencies/lark/visitors.py +596 -0
  384. ccxt/static_dependencies/marshmallow/__init__.py +81 -0
  385. ccxt/static_dependencies/marshmallow/base.py +65 -0
  386. ccxt/static_dependencies/marshmallow/class_registry.py +94 -0
  387. ccxt/static_dependencies/marshmallow/decorators.py +231 -0
  388. ccxt/static_dependencies/marshmallow/error_store.py +60 -0
  389. ccxt/static_dependencies/marshmallow/exceptions.py +71 -0
  390. ccxt/static_dependencies/marshmallow/fields.py +2114 -0
  391. ccxt/static_dependencies/marshmallow/orderedset.py +89 -0
  392. ccxt/static_dependencies/marshmallow/py.typed +0 -0
  393. ccxt/static_dependencies/marshmallow/schema.py +1228 -0
  394. ccxt/static_dependencies/marshmallow/types.py +12 -0
  395. ccxt/static_dependencies/marshmallow/utils.py +378 -0
  396. ccxt/static_dependencies/marshmallow/validate.py +678 -0
  397. ccxt/static_dependencies/marshmallow/warnings.py +2 -0
  398. ccxt/static_dependencies/marshmallow_dataclass/__init__.py +1047 -0
  399. ccxt/static_dependencies/marshmallow_dataclass/collection_field.py +51 -0
  400. ccxt/static_dependencies/marshmallow_dataclass/lazy_class_attribute.py +45 -0
  401. ccxt/static_dependencies/marshmallow_dataclass/mypy.py +71 -0
  402. ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
  403. ccxt/static_dependencies/marshmallow_dataclass/typing.py +14 -0
  404. ccxt/static_dependencies/marshmallow_dataclass/union_field.py +82 -0
  405. ccxt/static_dependencies/marshmallow_oneofschema/__init__.py +1 -0
  406. ccxt/static_dependencies/marshmallow_oneofschema/one_of_schema.py +193 -0
  407. ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
  408. ccxt/static_dependencies/starknet/__init__.py +0 -0
  409. ccxt/static_dependencies/starknet/cairo/__init__.py +0 -0
  410. ccxt/static_dependencies/starknet/cairo/data_types.py +123 -0
  411. ccxt/static_dependencies/starknet/cairo/deprecated_parse/__init__.py +0 -0
  412. ccxt/static_dependencies/starknet/cairo/deprecated_parse/cairo_types.py +77 -0
  413. ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser.py +46 -0
  414. ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser_transformer.py +138 -0
  415. ccxt/static_dependencies/starknet/cairo/felt.py +64 -0
  416. ccxt/static_dependencies/starknet/cairo/type_parser.py +121 -0
  417. ccxt/static_dependencies/starknet/cairo/v1/__init__.py +0 -0
  418. ccxt/static_dependencies/starknet/cairo/v1/type_parser.py +59 -0
  419. ccxt/static_dependencies/starknet/cairo/v2/__init__.py +0 -0
  420. ccxt/static_dependencies/starknet/cairo/v2/type_parser.py +77 -0
  421. ccxt/static_dependencies/starknet/ccxt_utils.py +7 -0
  422. ccxt/static_dependencies/starknet/common.py +15 -0
  423. ccxt/static_dependencies/starknet/constants.py +39 -0
  424. ccxt/static_dependencies/starknet/hash/__init__.py +0 -0
  425. ccxt/static_dependencies/starknet/hash/address.py +79 -0
  426. ccxt/static_dependencies/starknet/hash/compiled_class_hash_objects.py +111 -0
  427. ccxt/static_dependencies/starknet/hash/selector.py +16 -0
  428. ccxt/static_dependencies/starknet/hash/storage.py +12 -0
  429. ccxt/static_dependencies/starknet/hash/utils.py +78 -0
  430. ccxt/static_dependencies/starknet/models/__init__.py +0 -0
  431. ccxt/static_dependencies/starknet/models/typed_data.py +45 -0
  432. ccxt/static_dependencies/starknet/serialization/__init__.py +24 -0
  433. ccxt/static_dependencies/starknet/serialization/_calldata_reader.py +40 -0
  434. ccxt/static_dependencies/starknet/serialization/_context.py +142 -0
  435. ccxt/static_dependencies/starknet/serialization/data_serializers/__init__.py +10 -0
  436. ccxt/static_dependencies/starknet/serialization/data_serializers/_common.py +82 -0
  437. ccxt/static_dependencies/starknet/serialization/data_serializers/array_serializer.py +43 -0
  438. ccxt/static_dependencies/starknet/serialization/data_serializers/bool_serializer.py +37 -0
  439. ccxt/static_dependencies/starknet/serialization/data_serializers/byte_array_serializer.py +66 -0
  440. ccxt/static_dependencies/starknet/serialization/data_serializers/cairo_data_serializer.py +71 -0
  441. ccxt/static_dependencies/starknet/serialization/data_serializers/enum_serializer.py +71 -0
  442. ccxt/static_dependencies/starknet/serialization/data_serializers/felt_serializer.py +50 -0
  443. ccxt/static_dependencies/starknet/serialization/data_serializers/named_tuple_serializer.py +58 -0
  444. ccxt/static_dependencies/starknet/serialization/data_serializers/option_serializer.py +43 -0
  445. ccxt/static_dependencies/starknet/serialization/data_serializers/output_serializer.py +40 -0
  446. ccxt/static_dependencies/starknet/serialization/data_serializers/payload_serializer.py +72 -0
  447. ccxt/static_dependencies/starknet/serialization/data_serializers/struct_serializer.py +36 -0
  448. ccxt/static_dependencies/starknet/serialization/data_serializers/tuple_serializer.py +36 -0
  449. ccxt/static_dependencies/starknet/serialization/data_serializers/uint256_serializer.py +76 -0
  450. ccxt/static_dependencies/starknet/serialization/data_serializers/uint_serializer.py +100 -0
  451. ccxt/static_dependencies/starknet/serialization/data_serializers/unit_serializer.py +32 -0
  452. ccxt/static_dependencies/starknet/serialization/errors.py +10 -0
  453. ccxt/static_dependencies/starknet/serialization/factory.py +229 -0
  454. ccxt/static_dependencies/starknet/serialization/function_serialization_adapter.py +110 -0
  455. ccxt/static_dependencies/starknet/serialization/tuple_dataclass.py +59 -0
  456. ccxt/static_dependencies/starknet/utils/__init__.py +0 -0
  457. ccxt/static_dependencies/starknet/utils/constructor_args_translator.py +86 -0
  458. ccxt/static_dependencies/starknet/utils/iterable.py +13 -0
  459. ccxt/static_dependencies/starknet/utils/schema.py +13 -0
  460. ccxt/static_dependencies/starknet/utils/typed_data.py +182 -0
  461. ccxt/static_dependencies/starkware/__init__.py +0 -0
  462. ccxt/static_dependencies/starkware/crypto/__init__.py +0 -0
  463. ccxt/static_dependencies/starkware/crypto/fast_pedersen_hash.py +50 -0
  464. ccxt/static_dependencies/starkware/crypto/math_utils.py +78 -0
  465. ccxt/static_dependencies/starkware/crypto/signature.py +2344 -0
  466. ccxt/static_dependencies/starkware/crypto/utils.py +63 -0
  467. ccxt/static_dependencies/sympy/__init__.py +0 -0
  468. ccxt/static_dependencies/sympy/core/__init__.py +0 -0
  469. ccxt/static_dependencies/sympy/core/intfunc.py +35 -0
  470. ccxt/static_dependencies/sympy/external/__init__.py +0 -0
  471. ccxt/static_dependencies/sympy/external/gmpy.py +345 -0
  472. ccxt/static_dependencies/sympy/external/importtools.py +187 -0
  473. ccxt/static_dependencies/sympy/external/ntheory.py +637 -0
  474. ccxt/static_dependencies/sympy/external/pythonmpq.py +341 -0
  475. ccxt/static_dependencies/typing_inspect/__init__.py +0 -0
  476. ccxt/static_dependencies/typing_inspect/typing_inspect.py +851 -0
  477. ccxt/test/{test_async.py → tests_async.py} +456 -391
  478. ccxt/test/tests_helpers.py +285 -0
  479. ccxt/test/tests_init.py +39 -0
  480. ccxt/test/{test_sync.py → tests_sync.py} +456 -393
  481. ccxt/timex.py +123 -70
  482. ccxt/tokocrypto.py +129 -93
  483. ccxt/tradeogre.py +39 -25
  484. ccxt/upbit.py +322 -113
  485. ccxt/vertex.py +2983 -0
  486. ccxt/wavesexchange.py +227 -173
  487. ccxt/wazirx.py +145 -65
  488. ccxt/whitebit.py +533 -138
  489. ccxt/woo.py +1137 -296
  490. ccxt/woofipro.py +2716 -0
  491. ccxt/xt.py +4627 -0
  492. ccxt/yobit.py +159 -92
  493. ccxt/zaif.py +80 -33
  494. ccxt/zonda.py +140 -69
  495. ccxt-4.4.48.dist-info/LICENSE.txt +21 -0
  496. ccxt-4.4.48.dist-info/METADATA +646 -0
  497. ccxt-4.4.48.dist-info/RECORD +669 -0
  498. {ccxt-4.2.77.dist-info → ccxt-4.4.48.dist-info}/WHEEL +1 -1
  499. ccxt/abstract/bitbay.py +0 -47
  500. ccxt/abstract/bitfinex2.py +0 -139
  501. ccxt/abstract/hitbtc3.py +0 -115
  502. ccxt/async_support/bitbay.py +0 -17
  503. ccxt/async_support/bitfinex2.py +0 -3496
  504. ccxt/async_support/flowbtc.py +0 -34
  505. ccxt/bitbay.py +0 -17
  506. ccxt/bitfinex2.py +0 -3496
  507. ccxt/flowbtc.py +0 -34
  508. ccxt/hitbtc3.py +0 -16
  509. ccxt/pro/bitfinex2.py +0 -1081
  510. ccxt/test/base/__init__.py +0 -28
  511. ccxt/test/base/test_account.py +0 -26
  512. ccxt/test/base/test_balance.py +0 -56
  513. ccxt/test/base/test_borrow_interest.py +0 -35
  514. ccxt/test/base/test_borrow_rate.py +0 -32
  515. ccxt/test/base/test_calculate_fee.py +0 -51
  516. ccxt/test/base/test_crypto.py +0 -127
  517. ccxt/test/base/test_currency.py +0 -76
  518. ccxt/test/base/test_datetime.py +0 -103
  519. ccxt/test/base/test_decimal_to_precision.py +0 -392
  520. ccxt/test/base/test_deep_extend.py +0 -68
  521. ccxt/test/base/test_deposit_withdrawal.py +0 -50
  522. ccxt/test/base/test_exchange_datetime_functions.py +0 -76
  523. ccxt/test/base/test_funding_rate_history.py +0 -29
  524. ccxt/test/base/test_last_price.py +0 -32
  525. ccxt/test/base/test_ledger_entry.py +0 -45
  526. ccxt/test/base/test_ledger_item.py +0 -48
  527. ccxt/test/base/test_leverage_tier.py +0 -33
  528. ccxt/test/base/test_margin_mode.py +0 -24
  529. ccxt/test/base/test_margin_modification.py +0 -35
  530. ccxt/test/base/test_market.py +0 -190
  531. ccxt/test/base/test_number.py +0 -411
  532. ccxt/test/base/test_ohlcv.py +0 -32
  533. ccxt/test/base/test_open_interest.py +0 -32
  534. ccxt/test/base/test_order.py +0 -64
  535. ccxt/test/base/test_order_book.py +0 -63
  536. ccxt/test/base/test_position.py +0 -60
  537. ccxt/test/base/test_shared_methods.py +0 -345
  538. ccxt/test/base/test_status.py +0 -24
  539. ccxt/test/base/test_throttle.py +0 -126
  540. ccxt/test/base/test_ticker.py +0 -86
  541. ccxt/test/base/test_trade.py +0 -47
  542. ccxt/test/base/test_trading_fee.py +0 -26
  543. ccxt/test/base/test_transaction.py +0 -39
  544. ccxt-4.2.77.dist-info/METADATA +0 -626
  545. ccxt-4.2.77.dist-info/RECORD +0 -534
  546. {ccxt-4.2.77.dist-info → ccxt-4.4.48.dist-info}/top_level.txt +0 -0
@@ -6,15 +6,15 @@
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.bitbank import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Ticker, Trade, Transaction
9
+ from ccxt.base.types import Balances, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Ticker, Trade, TradingFees, Transaction
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
+ from ccxt.base.errors import AuthenticationError
12
13
  from ccxt.base.errors import PermissionDenied
13
14
  from ccxt.base.errors import InsufficientFunds
14
15
  from ccxt.base.errors import InvalidOrder
15
16
  from ccxt.base.errors import OrderNotFound
16
17
  from ccxt.base.errors import InvalidNonce
17
- from ccxt.base.errors import AuthenticationError
18
18
  from ccxt.base.decimal_to_precision import TICK_SIZE
19
19
 
20
20
 
@@ -46,6 +46,8 @@ class bitbank(Exchange, ImplicitAPI):
46
46
  'fetchCrossBorrowRate': False,
47
47
  'fetchCrossBorrowRates': False,
48
48
  'fetchDepositAddress': True,
49
+ 'fetchDepositAddresses': False,
50
+ 'fetchDepositAddressesByNetwork': False,
49
51
  'fetchFundingHistory': False,
50
52
  'fetchFundingRate': False,
51
53
  'fetchFundingRateHistory': False,
@@ -64,8 +66,11 @@ class bitbank(Exchange, ImplicitAPI):
64
66
  'fetchOrder': True,
65
67
  'fetchOrderBook': True,
66
68
  'fetchPosition': False,
69
+ 'fetchPositionHistory': False,
67
70
  'fetchPositionMode': False,
68
71
  'fetchPositions': False,
72
+ 'fetchPositionsForSymbol': False,
73
+ 'fetchPositionsHistory': False,
69
74
  'fetchPositionsRisk': False,
70
75
  'fetchPremiumIndexOHLCV': False,
71
76
  'fetchTicker': True,
@@ -95,7 +100,7 @@ class bitbank(Exchange, ImplicitAPI):
95
100
  },
96
101
  'hostname': 'bitbank.cc',
97
102
  'urls': {
98
- 'logo': 'https://user-images.githubusercontent.com/1294454/37808081-b87f2d9c-2e59-11e8-894d-c1900b7584fe.jpg',
103
+ 'logo': 'https://github.com/user-attachments/assets/9d616de0-8a88-4468-8e38-d269acab0348',
99
104
  'api': {
100
105
  'public': 'https://public.{hostname}',
101
106
  'private': 'https://api.{hostname}',
@@ -123,8 +128,11 @@ class bitbank(Exchange, ImplicitAPI):
123
128
  'user/assets',
124
129
  'user/spot/order',
125
130
  'user/spot/active_orders',
131
+ 'user/margin/positions',
126
132
  'user/spot/trade_history',
127
133
  'user/deposit_history',
134
+ 'user/unconfirmed_deposits',
135
+ 'user/deposit_originators',
128
136
  'user/withdrawal_account',
129
137
  'user/withdrawal_history',
130
138
  'spot/status',
@@ -135,6 +143,8 @@ class bitbank(Exchange, ImplicitAPI):
135
143
  'user/spot/cancel_order',
136
144
  'user/spot/cancel_orders',
137
145
  'user/spot/orders_info',
146
+ 'user/confirm_deposits',
147
+ 'user/confirm_deposits_all',
138
148
  'user/request_withdrawal',
139
149
  ],
140
150
  },
@@ -144,30 +154,92 @@ class bitbank(Exchange, ImplicitAPI):
144
154
  ],
145
155
  },
146
156
  },
157
+ 'features': {
158
+ 'spot': {
159
+ 'sandbox': False,
160
+ 'createOrder': {
161
+ 'marginMode': False,
162
+ 'triggerPrice': True, # todo implement
163
+ 'triggerPriceType': None,
164
+ 'triggerDirection': False,
165
+ 'stopLossPrice': False,
166
+ 'takeProfitPrice': False,
167
+ 'attachedStopLossTakeProfit': None,
168
+ 'timeInForce': {
169
+ 'IOC': False,
170
+ 'FOK': False,
171
+ 'PO': True, # todo: implement
172
+ 'GTD': False,
173
+ },
174
+ 'hedged': False,
175
+ 'trailing': False,
176
+ 'leverage': False,
177
+ 'marketBuyRequiresPrice': False,
178
+ 'marketBuyByCost': False,
179
+ 'selfTradePrevention': False,
180
+ 'iceberg': False,
181
+ },
182
+ 'createOrders': None,
183
+ 'fetchMyTrades': {
184
+ 'marginMode': False,
185
+ 'limit': 1000,
186
+ 'daysBack': None,
187
+ 'untilDays': None,
188
+ },
189
+ 'fetchOrder': {
190
+ 'marginMode': False,
191
+ 'trigger': False,
192
+ 'trailing': False,
193
+ },
194
+ 'fetchOpenOrders': {
195
+ 'marginMode': False,
196
+ 'limit': 1000,
197
+ 'trigger': False,
198
+ 'trailing': False,
199
+ },
200
+ 'fetchOrders': None,
201
+ 'fetchClosedOrders': None,
202
+ 'fetchOHLCV': {
203
+ 'limit': 1000,
204
+ },
205
+ },
206
+ 'swap': {
207
+ 'linear': None,
208
+ 'inverse': None,
209
+ },
210
+ 'future': {
211
+ 'linear': None,
212
+ 'inverse': None,
213
+ },
214
+ },
147
215
  'precisionMode': TICK_SIZE,
148
216
  'exceptions': {
149
- '20001': AuthenticationError,
150
- '20002': AuthenticationError,
151
- '20003': AuthenticationError,
152
- '20005': AuthenticationError,
153
- '20004': InvalidNonce,
154
- '40020': InvalidOrder,
155
- '40021': InvalidOrder,
156
- '40025': ExchangeError,
157
- '40013': OrderNotFound,
158
- '40014': OrderNotFound,
159
- '50008': PermissionDenied,
160
- '50009': OrderNotFound,
161
- '50010': OrderNotFound,
162
- '60001': InsufficientFunds,
163
- '60005': InvalidOrder,
217
+ 'exact': {
218
+ '20001': AuthenticationError,
219
+ '20002': AuthenticationError,
220
+ '20003': AuthenticationError,
221
+ '20005': AuthenticationError,
222
+ '20004': InvalidNonce,
223
+ '40020': InvalidOrder,
224
+ '40021': InvalidOrder,
225
+ '40025': ExchangeError,
226
+ '40013': OrderNotFound,
227
+ '40014': OrderNotFound,
228
+ '50008': PermissionDenied,
229
+ '50009': OrderNotFound,
230
+ '50010': OrderNotFound,
231
+ '60001': InsufficientFunds,
232
+ '60005': InvalidOrder,
233
+ },
164
234
  },
165
235
  })
166
236
 
167
- async def fetch_markets(self, params={}):
237
+ async def fetch_markets(self, params={}) -> List[Market]:
168
238
  """
169
239
  retrieves data on all markets for bitbank
170
- :see: https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#get-all-pairs-info
240
+
241
+ https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#get-all-pairs-info
242
+
171
243
  :param dict [params]: extra parameters specific to the exchange API endpoint
172
244
  :returns dict[]: an array of objects representing market data
173
245
  """
@@ -261,7 +333,7 @@ class bitbank(Exchange, ImplicitAPI):
261
333
  'info': entry,
262
334
  }
263
335
 
264
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
336
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
265
337
  symbol = self.safe_symbol(None, market)
266
338
  timestamp = self.safe_integer(ticker, 'timestamp')
267
339
  last = self.safe_string(ticker, 'last')
@@ -291,24 +363,28 @@ class bitbank(Exchange, ImplicitAPI):
291
363
  async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
292
364
  """
293
365
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
294
- :see: https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/public-api.md#ticker
366
+
367
+ https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/public-api.md#ticker
368
+
295
369
  :param str symbol: unified symbol of the market to fetch the ticker for
296
370
  :param dict [params]: extra parameters specific to the exchange API endpoint
297
371
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
298
372
  """
299
373
  await self.load_markets()
300
374
  market = self.market(symbol)
301
- request = {
375
+ request: dict = {
302
376
  'pair': market['id'],
303
377
  }
304
378
  response = await self.publicGetPairTicker(self.extend(request, params))
305
- data = self.safe_value(response, 'data', {})
379
+ data = self.safe_dict(response, 'data', {})
306
380
  return self.parse_ticker(data, market)
307
381
 
308
382
  async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
309
383
  """
310
384
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
311
- :see: https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/public-api.md#depth
385
+
386
+ https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/public-api.md#depth
387
+
312
388
  :param str symbol: unified symbol of the market to fetch the order book for
313
389
  :param int [limit]: the maximum amount of order book entries to return
314
390
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -316,7 +392,7 @@ class bitbank(Exchange, ImplicitAPI):
316
392
  """
317
393
  await self.load_markets()
318
394
  market = self.market(symbol)
319
- request = {
395
+ request: dict = {
320
396
  'pair': market['id'],
321
397
  }
322
398
  response = await self.publicGetPairDepth(self.extend(request, params))
@@ -324,7 +400,7 @@ class bitbank(Exchange, ImplicitAPI):
324
400
  timestamp = self.safe_integer(orderbook, 'timestamp')
325
401
  return self.parse_order_book(orderbook, market['symbol'], timestamp)
326
402
 
327
- def parse_trade(self, trade, market: Market = None) -> Trade:
403
+ def parse_trade(self, trade: dict, market: Market = None) -> Trade:
328
404
  #
329
405
  # fetchTrades
330
406
  #
@@ -371,7 +447,9 @@ class bitbank(Exchange, ImplicitAPI):
371
447
  async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
372
448
  """
373
449
  get the list of most recent trades for a particular symbol
374
- :see: https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/public-api.md#transactions
450
+
451
+ https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/public-api.md#transactions
452
+
375
453
  :param str symbol: unified symbol of the market to fetch trades for
376
454
  :param int [since]: timestamp in ms of the earliest trade to fetch
377
455
  :param int [limit]: the maximum amount of trades to fetch
@@ -380,18 +458,20 @@ class bitbank(Exchange, ImplicitAPI):
380
458
  """
381
459
  await self.load_markets()
382
460
  market = self.market(symbol)
383
- request = {
461
+ request: dict = {
384
462
  'pair': market['id'],
385
463
  }
386
464
  response = await self.publicGetPairTransactions(self.extend(request, params))
387
465
  data = self.safe_value(response, 'data', {})
388
- trades = self.safe_value(data, 'transactions', [])
466
+ trades = self.safe_list(data, 'transactions', [])
389
467
  return self.parse_trades(trades, market, since, limit)
390
468
 
391
- async def fetch_trading_fees(self, params={}):
469
+ async def fetch_trading_fees(self, params={}) -> TradingFees:
392
470
  """
393
471
  fetch the trading fees for multiple markets
394
- :see: https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#get-all-pairs-info
472
+
473
+ https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#get-all-pairs-info
474
+
395
475
  :param dict [params]: extra parameters specific to the exchange API endpoint
396
476
  :returns dict: a dictionary of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>` indexed by market symbols
397
477
  """
@@ -427,7 +507,7 @@ class bitbank(Exchange, ImplicitAPI):
427
507
  #
428
508
  data = self.safe_value(response, 'data', {})
429
509
  pairs = self.safe_value(data, 'pairs', [])
430
- result = {}
510
+ result: dict = {}
431
511
  for i in range(0, len(pairs)):
432
512
  pair = pairs[i]
433
513
  marketId = self.safe_string(pair, 'name')
@@ -466,7 +546,9 @@ class bitbank(Exchange, ImplicitAPI):
466
546
  async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
467
547
  """
468
548
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
469
- :see: https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/public-api.md#candlestick
549
+
550
+ https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/public-api.md#candlestick
551
+
470
552
  :param str symbol: unified symbol of the market to fetch OHLCV data for
471
553
  :param str timeframe: the length of time each candle represents
472
554
  :param int [since]: timestamp in ms of the earliest candle to fetch
@@ -481,7 +563,7 @@ class bitbank(Exchange, ImplicitAPI):
481
563
  since = self.milliseconds() - duration * 1000 * limit
482
564
  await self.load_markets()
483
565
  market = self.market(symbol)
484
- request = {
566
+ request: dict = {
485
567
  'pair': market['id'],
486
568
  'candletype': self.safe_string(self.timeframes, timeframe, timeframe),
487
569
  'yyyymmdd': self.yyyymmdd(since, ''),
@@ -508,11 +590,11 @@ class bitbank(Exchange, ImplicitAPI):
508
590
  data = self.safe_value(response, 'data', {})
509
591
  candlestick = self.safe_value(data, 'candlestick', [])
510
592
  first = self.safe_value(candlestick, 0, {})
511
- ohlcv = self.safe_value(first, 'ohlcv', [])
593
+ ohlcv = self.safe_list(first, 'ohlcv', [])
512
594
  return self.parse_ohlcvs(ohlcv, market, timeframe, since, limit)
513
595
 
514
596
  def parse_balance(self, response) -> Balances:
515
- result = {
597
+ result: dict = {
516
598
  'info': response,
517
599
  'timestamp': None,
518
600
  'datetime': None,
@@ -533,7 +615,9 @@ class bitbank(Exchange, ImplicitAPI):
533
615
  async def fetch_balance(self, params={}) -> Balances:
534
616
  """
535
617
  query for balance and get the amount of funds available for trading or funds locked in orders
536
- :see: https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#assets
618
+
619
+ https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#assets
620
+
537
621
  :param dict [params]: extra parameters specific to the exchange API endpoint
538
622
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
539
623
  """
@@ -574,8 +658,8 @@ class bitbank(Exchange, ImplicitAPI):
574
658
  #
575
659
  return self.parse_balance(response)
576
660
 
577
- def parse_order_status(self, status):
578
- statuses = {
661
+ def parse_order_status(self, status: Str):
662
+ statuses: dict = {
579
663
  'UNFILLED': 'open',
580
664
  'PARTIALLY_FILLED': 'open',
581
665
  'FULLY_FILLED': 'closed',
@@ -584,7 +668,7 @@ class bitbank(Exchange, ImplicitAPI):
584
668
  }
585
669
  return self.safe_string(statuses, status, status)
586
670
 
587
- def parse_order(self, order, market: Market = None) -> Order:
671
+ def parse_order(self, order: dict, market: Market = None) -> Order:
588
672
  id = self.safe_string(order, 'order_id')
589
673
  marketId = self.safe_string(order, 'pair')
590
674
  market = self.safe_market(marketId, market)
@@ -610,7 +694,6 @@ class bitbank(Exchange, ImplicitAPI):
610
694
  'postOnly': None,
611
695
  'side': side,
612
696
  'price': price,
613
- 'stopPrice': None,
614
697
  'triggerPrice': None,
615
698
  'cost': None,
616
699
  'average': average,
@@ -625,18 +708,20 @@ class bitbank(Exchange, ImplicitAPI):
625
708
  async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
626
709
  """
627
710
  create a trade order
628
- :see: https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#create-new-order
711
+
712
+ https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#create-new-order
713
+
629
714
  :param str symbol: unified symbol of the market to create an order in
630
715
  :param str type: 'market' or 'limit'
631
716
  :param str side: 'buy' or 'sell'
632
717
  :param float amount: how much of currency you want to trade in units of base currency
633
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
718
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
634
719
  :param dict [params]: extra parameters specific to the exchange API endpoint
635
720
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
636
721
  """
637
722
  await self.load_markets()
638
723
  market = self.market(symbol)
639
- request = {
724
+ request: dict = {
640
725
  'pair': market['id'],
641
726
  'amount': self.amount_to_precision(symbol, amount),
642
727
  'side': side,
@@ -645,13 +730,15 @@ class bitbank(Exchange, ImplicitAPI):
645
730
  if type == 'limit':
646
731
  request['price'] = self.price_to_precision(symbol, price)
647
732
  response = await self.privatePostUserSpotOrder(self.extend(request, params))
648
- data = self.safe_value(response, 'data')
733
+ data = self.safe_dict(response, 'data')
649
734
  return self.parse_order(data, market)
650
735
 
651
736
  async def cancel_order(self, id: str, symbol: Str = None, params={}):
652
737
  """
653
738
  cancels an open order
654
- :see: https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#cancel-order
739
+
740
+ https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#cancel-order
741
+
655
742
  :param str id: order id
656
743
  :param str symbol: unified symbol of the market the order was made in
657
744
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -659,36 +746,86 @@ class bitbank(Exchange, ImplicitAPI):
659
746
  """
660
747
  await self.load_markets()
661
748
  market = self.market(symbol)
662
- request = {
749
+ request: dict = {
663
750
  'order_id': id,
664
751
  'pair': market['id'],
665
752
  }
666
753
  response = await self.privatePostUserSpotCancelOrder(self.extend(request, params))
754
+ #
755
+ # {
756
+ # "success": 1,
757
+ # "data": {
758
+ # "order_id": 0,
759
+ # "pair": "string",
760
+ # "side": "string",
761
+ # "type": "string",
762
+ # "start_amount": "string",
763
+ # "remaining_amount": "string",
764
+ # "executed_amount": "string",
765
+ # "price": "string",
766
+ # "post_only": False,
767
+ # "average_price": "string",
768
+ # "ordered_at": 0,
769
+ # "expire_at": 0,
770
+ # "canceled_at": 0,
771
+ # "triggered_at": 0,
772
+ # "trigger_price": "string",
773
+ # "status": "string"
774
+ # }
775
+ # }
776
+ #
667
777
  data = self.safe_value(response, 'data')
668
- return data
778
+ return self.parse_order(data)
669
779
 
670
780
  async def fetch_order(self, id: str, symbol: Str = None, params={}):
671
781
  """
672
782
  fetches information on an order made by the user
673
- :see: https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#fetch-order-information
783
+
784
+ https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#fetch-order-information
785
+
786
+ :param str id: the order id
674
787
  :param str symbol: unified symbol of the market the order was made in
675
788
  :param dict [params]: extra parameters specific to the exchange API endpoint
676
789
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
677
790
  """
678
791
  await self.load_markets()
679
792
  market = self.market(symbol)
680
- request = {
793
+ request: dict = {
681
794
  'order_id': id,
682
795
  'pair': market['id'],
683
796
  }
684
797
  response = await self.privateGetUserSpotOrder(self.extend(request, params))
685
- data = self.safe_value(response, 'data')
798
+ #
799
+ # {
800
+ # "success": 1,
801
+ # "data": {
802
+ # "order_id": 0,
803
+ # "pair": "string",
804
+ # "side": "string",
805
+ # "type": "string",
806
+ # "start_amount": "string",
807
+ # "remaining_amount": "string",
808
+ # "executed_amount": "string",
809
+ # "price": "string",
810
+ # "post_only": False,
811
+ # "average_price": "string",
812
+ # "ordered_at": 0,
813
+ # "expire_at": 0,
814
+ # "triggered_at": 0,
815
+ # "triger_price": "string",
816
+ # "status": "string"
817
+ # }
818
+ # }
819
+ #
820
+ data = self.safe_dict(response, 'data')
686
821
  return self.parse_order(data, market)
687
822
 
688
823
  async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
689
824
  """
690
825
  fetch all unfilled currently open orders
691
- :see: https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#fetch-active-orders
826
+
827
+ https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#fetch-active-orders
828
+
692
829
  :param str symbol: unified market symbol
693
830
  :param int [since]: the earliest time in ms to fetch open orders for
694
831
  :param int [limit]: the maximum number of open orders structures to retrieve
@@ -697,7 +834,7 @@ class bitbank(Exchange, ImplicitAPI):
697
834
  """
698
835
  await self.load_markets()
699
836
  market = self.market(symbol)
700
- request = {
837
+ request: dict = {
701
838
  'pair': market['id'],
702
839
  }
703
840
  if limit is not None:
@@ -706,13 +843,15 @@ class bitbank(Exchange, ImplicitAPI):
706
843
  request['since'] = self.parse_to_int(since / 1000)
707
844
  response = await self.privateGetUserSpotActiveOrders(self.extend(request, params))
708
845
  data = self.safe_value(response, 'data', {})
709
- orders = self.safe_value(data, 'orders', [])
846
+ orders = self.safe_list(data, 'orders', [])
710
847
  return self.parse_orders(orders, market, since, limit)
711
848
 
712
849
  async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
713
850
  """
714
851
  fetch all trades made by the user
715
- :see: https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#fetch-trade-history
852
+
853
+ https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#fetch-trade-history
854
+
716
855
  :param str symbol: unified market symbol
717
856
  :param int [since]: the earliest time in ms to fetch trades for
718
857
  :param int [limit]: the maximum number of trades structures to retrieve
@@ -720,7 +859,7 @@ class bitbank(Exchange, ImplicitAPI):
720
859
  :returns Trade[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
721
860
  """
722
861
  await self.load_markets()
723
- request = {}
862
+ request: dict = {}
724
863
  market = None
725
864
  if symbol is not None:
726
865
  market = self.market(symbol)
@@ -731,20 +870,22 @@ class bitbank(Exchange, ImplicitAPI):
731
870
  request['since'] = self.parse_to_int(since / 1000)
732
871
  response = await self.privateGetUserSpotTradeHistory(self.extend(request, params))
733
872
  data = self.safe_value(response, 'data', {})
734
- trades = self.safe_value(data, 'trades', [])
873
+ trades = self.safe_list(data, 'trades', [])
735
874
  return self.parse_trades(trades, market, since, limit)
736
875
 
737
- async def fetch_deposit_address(self, code: str, params={}):
876
+ async def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
738
877
  """
739
878
  fetch the deposit address for a currency associated with self account
740
- :see: https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#get-withdrawal-accounts
879
+
880
+ https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#get-withdrawal-accounts
881
+
741
882
  :param str code: unified currency code
742
883
  :param dict [params]: extra parameters specific to the exchange API endpoint
743
884
  :returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
744
885
  """
745
886
  await self.load_markets()
746
887
  currency = self.currency(code)
747
- request = {
888
+ request: dict = {
748
889
  'asset': currency['id'],
749
890
  }
750
891
  response = await self.privateGetUserWithdrawalAccount(self.extend(request, params))
@@ -754,17 +895,19 @@ class bitbank(Exchange, ImplicitAPI):
754
895
  firstAccount = self.safe_value(accounts, 0, {})
755
896
  address = self.safe_string(firstAccount, 'address')
756
897
  return {
898
+ 'info': response,
757
899
  'currency': currency,
900
+ 'network': None,
758
901
  'address': address,
759
902
  'tag': None,
760
- 'network': None,
761
- 'info': response,
762
903
  }
763
904
 
764
- async def withdraw(self, code: str, amount: float, address, tag=None, params={}):
905
+ async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
765
906
  """
766
907
  make a withdrawal
767
- :see: https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#new-withdrawal-request
908
+
909
+ https://github.com/bitbankinc/bitbank-api-docs/blob/38d6d7c6f486c793872fd4b4087a0d090a04cd0a/rest-api.md#new-withdrawal-request
910
+
768
911
  :param str code: unified currency code
769
912
  :param float amount: the amount to withdraw
770
913
  :param str address: the address to withdraw to
@@ -777,7 +920,7 @@ class bitbank(Exchange, ImplicitAPI):
777
920
  raise ExchangeError(self.id + ' uuid is required for withdrawal')
778
921
  await self.load_markets()
779
922
  currency = self.currency(code)
780
- request = {
923
+ request: dict = {
781
924
  'asset': currency['id'],
782
925
  'amount': amount,
783
926
  }
@@ -799,10 +942,10 @@ class bitbank(Exchange, ImplicitAPI):
799
942
  # }
800
943
  # }
801
944
  #
802
- data = self.safe_value(response, 'data', {})
945
+ data = self.safe_dict(response, 'data', {})
803
946
  return self.parse_transaction(data, currency)
804
947
 
805
- def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
948
+ def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
806
949
  #
807
950
  # withdraw
808
951
  #
@@ -876,13 +1019,13 @@ class bitbank(Exchange, ImplicitAPI):
876
1019
  }
877
1020
  return {'url': url, 'method': method, 'body': body, 'headers': headers}
878
1021
 
879
- def handle_errors(self, httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody):
1022
+ def handle_errors(self, httpCode: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
880
1023
  if response is None:
881
1024
  return None
882
1025
  success = self.safe_integer(response, 'success')
883
1026
  data = self.safe_value(response, 'data')
884
1027
  if not success or not data:
885
- errorMessages = {
1028
+ errorMessages: dict = {
886
1029
  '10000': 'URL does not exist',
887
1030
  '10001': 'A system error occurred. Please contact support',
888
1031
  '10002': 'Invalid JSON format. Please check the contents of transmission',
@@ -944,12 +1087,8 @@ class bitbank(Exchange, ImplicitAPI):
944
1087
  '70009': 'We are currently temporarily restricting orders to be carried out. Please use the limit order.',
945
1088
  '70010': 'We are temporarily raising the minimum order quantity system load is now rising.',
946
1089
  }
947
- errorClasses = self.exceptions
948
1090
  code = self.safe_string(data, 'code')
949
1091
  message = self.safe_string(errorMessages, code, 'Error')
950
- ErrorClass = self.safe_value(errorClasses, code)
951
- if ErrorClass is not None:
952
- raise errorClasses[code](message)
953
- else:
954
- raise ExchangeError(self.id + ' ' + self.json(response))
1092
+ self.throw_exactly_matched_exception(self.exceptions['exact'], code, message)
1093
+ raise ExchangeError(self.id + ' ' + self.json(response))
955
1094
  return None