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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (546) hide show
  1. ccxt/__init__.py +36 -14
  2. ccxt/abstract/alpaca.py +4 -0
  3. ccxt/abstract/bigone.py +1 -1
  4. ccxt/abstract/binance.py +112 -48
  5. ccxt/abstract/binancecoinm.py +112 -48
  6. ccxt/abstract/binanceus.py +147 -83
  7. ccxt/abstract/binanceusdm.py +112 -48
  8. ccxt/abstract/bingx.py +133 -78
  9. ccxt/abstract/bitbank.py +5 -0
  10. ccxt/abstract/bitfinex.py +136 -65
  11. ccxt/abstract/bitfinex1.py +69 -0
  12. ccxt/abstract/bitflyer.py +1 -0
  13. ccxt/abstract/bitget.py +8 -1
  14. ccxt/abstract/bitmart.py +13 -1
  15. ccxt/abstract/bitopro.py +1 -0
  16. ccxt/abstract/bitpanda.py +0 -12
  17. ccxt/abstract/bitrue.py +3 -3
  18. ccxt/abstract/bitstamp.py +26 -3
  19. ccxt/abstract/blofin.py +24 -0
  20. ccxt/abstract/btcbox.py +1 -0
  21. ccxt/abstract/bybit.py +29 -14
  22. ccxt/abstract/cex.py +28 -29
  23. ccxt/abstract/coinbase.py +6 -0
  24. ccxt/abstract/coinbaseadvanced.py +94 -0
  25. ccxt/abstract/{coinbasepro.py → coinbaseexchange.py} +1 -0
  26. ccxt/abstract/coinbaseinternational.py +1 -1
  27. ccxt/abstract/coincatch.py +94 -0
  28. ccxt/abstract/coinex.py +233 -123
  29. ccxt/abstract/coinmetro.py +1 -0
  30. ccxt/abstract/cryptocom.py +14 -0
  31. ccxt/abstract/defx.py +69 -0
  32. ccxt/abstract/deribit.py +1 -0
  33. ccxt/abstract/digifinex.py +1 -0
  34. ccxt/abstract/ellipx.py +25 -0
  35. ccxt/abstract/gate.py +20 -0
  36. ccxt/abstract/gateio.py +20 -0
  37. ccxt/abstract/gemini.py +1 -0
  38. ccxt/abstract/hashkey.py +67 -0
  39. ccxt/abstract/hyperliquid.py +1 -1
  40. ccxt/abstract/independentreserve.py +6 -0
  41. ccxt/abstract/kraken.py +4 -3
  42. ccxt/abstract/krakenfutures.py +4 -0
  43. ccxt/abstract/kucoin.py +24 -0
  44. ccxt/abstract/kucoinfutures.py +34 -0
  45. ccxt/abstract/luno.py +2 -0
  46. ccxt/abstract/mexc.py +4 -0
  47. ccxt/abstract/myokx.py +340 -0
  48. ccxt/abstract/oceanex.py +5 -0
  49. ccxt/abstract/okx.py +30 -0
  50. ccxt/abstract/onetrading.py +0 -12
  51. ccxt/abstract/oxfun.py +34 -0
  52. ccxt/abstract/paradex.py +40 -0
  53. ccxt/abstract/phemex.py +1 -0
  54. ccxt/abstract/upbit.py +4 -0
  55. ccxt/abstract/vertex.py +19 -0
  56. ccxt/abstract/whitebit.py +31 -1
  57. ccxt/abstract/woo.py +6 -2
  58. ccxt/abstract/woofipro.py +119 -0
  59. ccxt/abstract/xt.py +153 -0
  60. ccxt/abstract/zonda.py +6 -0
  61. ccxt/ace.py +164 -60
  62. ccxt/alpaca.py +727 -63
  63. ccxt/ascendex.py +395 -249
  64. ccxt/async_support/__init__.py +36 -14
  65. ccxt/async_support/ace.py +164 -60
  66. ccxt/async_support/alpaca.py +727 -63
  67. ccxt/async_support/ascendex.py +396 -249
  68. ccxt/async_support/base/exchange.py +531 -155
  69. ccxt/async_support/base/ws/aiohttp_client.py +28 -5
  70. ccxt/async_support/base/ws/cache.py +3 -2
  71. ccxt/async_support/base/ws/client.py +26 -5
  72. ccxt/async_support/base/ws/fast_client.py +4 -3
  73. ccxt/async_support/base/ws/functions.py +1 -1
  74. ccxt/async_support/base/ws/future.py +40 -31
  75. ccxt/async_support/base/ws/order_book_side.py +3 -0
  76. ccxt/async_support/bequant.py +1 -1
  77. ccxt/async_support/bigone.py +329 -202
  78. ccxt/async_support/binance.py +3030 -1087
  79. ccxt/async_support/binancecoinm.py +2 -1
  80. ccxt/async_support/binanceus.py +12 -1
  81. ccxt/async_support/binanceusdm.py +3 -1
  82. ccxt/async_support/bingx.py +3205 -937
  83. ccxt/async_support/bit2c.py +119 -38
  84. ccxt/async_support/bitbank.py +215 -76
  85. ccxt/async_support/bitbns.py +124 -53
  86. ccxt/async_support/bitfinex.py +3236 -1078
  87. ccxt/async_support/bitfinex1.py +1711 -0
  88. ccxt/async_support/bitflyer.py +238 -49
  89. ccxt/async_support/bitget.py +1525 -573
  90. ccxt/async_support/bithumb.py +199 -65
  91. ccxt/async_support/bitmart.py +1320 -435
  92. ccxt/async_support/bitmex.py +308 -111
  93. ccxt/async_support/bitopro.py +256 -96
  94. ccxt/async_support/bitrue.py +365 -233
  95. ccxt/async_support/bitso.py +201 -89
  96. ccxt/async_support/bitstamp.py +438 -269
  97. ccxt/async_support/bitteam.py +179 -73
  98. ccxt/async_support/bitvavo.py +180 -70
  99. ccxt/async_support/bl3p.py +92 -25
  100. ccxt/async_support/blockchaincom.py +193 -79
  101. ccxt/async_support/blofin.py +392 -148
  102. ccxt/async_support/btcalpha.py +161 -55
  103. ccxt/async_support/btcbox.py +250 -34
  104. ccxt/async_support/btcmarkets.py +232 -85
  105. ccxt/async_support/btcturk.py +159 -60
  106. ccxt/async_support/bybit.py +2231 -1193
  107. ccxt/async_support/cex.py +1409 -1329
  108. ccxt/async_support/coinbase.py +1454 -287
  109. ccxt/async_support/coinbaseadvanced.py +17 -0
  110. ccxt/async_support/{coinbasepro.py → coinbaseexchange.py} +233 -99
  111. ccxt/async_support/coinbaseinternational.py +428 -88
  112. ccxt/async_support/coincatch.py +5152 -0
  113. ccxt/async_support/coincheck.py +121 -38
  114. ccxt/async_support/coinex.py +4020 -3339
  115. ccxt/async_support/coinlist.py +273 -116
  116. ccxt/async_support/coinmate.py +204 -97
  117. ccxt/async_support/coinmetro.py +203 -110
  118. ccxt/async_support/coinone.py +142 -68
  119. ccxt/async_support/coinsph.py +223 -97
  120. ccxt/async_support/coinspot.py +137 -62
  121. ccxt/async_support/cryptocom.py +515 -185
  122. ccxt/async_support/currencycom.py +203 -85
  123. ccxt/async_support/defx.py +2066 -0
  124. ccxt/async_support/delta.py +404 -109
  125. ccxt/async_support/deribit.py +639 -323
  126. ccxt/async_support/digifinex.py +465 -233
  127. ccxt/async_support/ellipx.py +1887 -0
  128. ccxt/async_support/exmo.py +317 -128
  129. ccxt/async_support/gate.py +1472 -463
  130. ccxt/async_support/gemini.py +206 -84
  131. ccxt/async_support/hashkey.py +4164 -0
  132. ccxt/async_support/hitbtc.py +433 -178
  133. ccxt/async_support/hollaex.py +207 -83
  134. ccxt/async_support/htx.py +1095 -563
  135. ccxt/async_support/huobijp.py +178 -56
  136. ccxt/async_support/hyperliquid.py +1678 -292
  137. ccxt/async_support/idex.py +219 -95
  138. ccxt/async_support/independentreserve.py +300 -31
  139. ccxt/async_support/indodax.py +226 -62
  140. ccxt/async_support/kraken.py +871 -354
  141. ccxt/async_support/krakenfutures.py +324 -100
  142. ccxt/async_support/kucoin.py +917 -357
  143. ccxt/async_support/kucoinfutures.py +1004 -149
  144. ccxt/async_support/kuna.py +198 -107
  145. ccxt/async_support/latoken.py +199 -79
  146. ccxt/async_support/lbank.py +360 -113
  147. ccxt/async_support/luno.py +185 -62
  148. ccxt/async_support/lykke.py +168 -55
  149. ccxt/async_support/mercado.py +101 -29
  150. ccxt/async_support/mexc.py +995 -429
  151. ccxt/async_support/myokx.py +53 -0
  152. ccxt/async_support/ndax.py +234 -82
  153. ccxt/async_support/novadax.py +195 -75
  154. ccxt/async_support/oceanex.py +244 -59
  155. ccxt/async_support/okcoin.py +301 -165
  156. ccxt/async_support/okx.py +1776 -454
  157. ccxt/async_support/onetrading.py +198 -414
  158. ccxt/async_support/oxfun.py +2898 -0
  159. ccxt/async_support/p2b.py +142 -52
  160. ccxt/async_support/paradex.py +2085 -0
  161. ccxt/async_support/paymium.py +56 -32
  162. ccxt/async_support/phemex.py +572 -196
  163. ccxt/async_support/poloniex.py +218 -95
  164. ccxt/async_support/poloniexfutures.py +260 -92
  165. ccxt/async_support/probit.py +143 -110
  166. ccxt/async_support/timex.py +123 -70
  167. ccxt/async_support/tokocrypto.py +129 -93
  168. ccxt/async_support/tradeogre.py +39 -25
  169. ccxt/async_support/upbit.py +322 -113
  170. ccxt/async_support/vertex.py +2983 -0
  171. ccxt/async_support/wavesexchange.py +227 -173
  172. ccxt/async_support/wazirx.py +145 -65
  173. ccxt/async_support/whitebit.py +533 -138
  174. ccxt/async_support/woo.py +1137 -296
  175. ccxt/async_support/woofipro.py +2716 -0
  176. ccxt/async_support/xt.py +4628 -0
  177. ccxt/async_support/yobit.py +160 -92
  178. ccxt/async_support/zaif.py +80 -33
  179. ccxt/async_support/zonda.py +140 -69
  180. ccxt/base/errors.py +51 -20
  181. ccxt/base/exchange.py +1722 -480
  182. ccxt/base/precise.py +10 -0
  183. ccxt/base/types.py +223 -4
  184. ccxt/bequant.py +1 -1
  185. ccxt/bigone.py +329 -202
  186. ccxt/binance.py +3030 -1087
  187. ccxt/binancecoinm.py +2 -1
  188. ccxt/binanceus.py +12 -1
  189. ccxt/binanceusdm.py +3 -1
  190. ccxt/bingx.py +3205 -937
  191. ccxt/bit2c.py +119 -38
  192. ccxt/bitbank.py +215 -76
  193. ccxt/bitbns.py +124 -53
  194. ccxt/bitfinex.py +3235 -1078
  195. ccxt/bitfinex1.py +1710 -0
  196. ccxt/bitflyer.py +238 -49
  197. ccxt/bitget.py +1525 -573
  198. ccxt/bithumb.py +198 -65
  199. ccxt/bitmart.py +1320 -435
  200. ccxt/bitmex.py +308 -111
  201. ccxt/bitopro.py +256 -96
  202. ccxt/bitrue.py +365 -233
  203. ccxt/bitso.py +201 -89
  204. ccxt/bitstamp.py +438 -269
  205. ccxt/bitteam.py +179 -73
  206. ccxt/bitvavo.py +180 -70
  207. ccxt/bl3p.py +92 -25
  208. ccxt/blockchaincom.py +193 -79
  209. ccxt/blofin.py +392 -148
  210. ccxt/btcalpha.py +161 -55
  211. ccxt/btcbox.py +250 -34
  212. ccxt/btcmarkets.py +232 -85
  213. ccxt/btcturk.py +159 -60
  214. ccxt/bybit.py +2231 -1193
  215. ccxt/cex.py +1408 -1329
  216. ccxt/coinbase.py +1454 -287
  217. ccxt/coinbaseadvanced.py +17 -0
  218. ccxt/{coinbasepro.py → coinbaseexchange.py} +233 -99
  219. ccxt/coinbaseinternational.py +428 -88
  220. ccxt/coincatch.py +5152 -0
  221. ccxt/coincheck.py +121 -38
  222. ccxt/coinex.py +4020 -3339
  223. ccxt/coinlist.py +273 -116
  224. ccxt/coinmate.py +204 -97
  225. ccxt/coinmetro.py +203 -110
  226. ccxt/coinone.py +142 -68
  227. ccxt/coinsph.py +223 -97
  228. ccxt/coinspot.py +137 -62
  229. ccxt/cryptocom.py +515 -185
  230. ccxt/currencycom.py +203 -85
  231. ccxt/defx.py +2065 -0
  232. ccxt/delta.py +404 -109
  233. ccxt/deribit.py +639 -323
  234. ccxt/digifinex.py +465 -233
  235. ccxt/ellipx.py +1887 -0
  236. ccxt/exmo.py +317 -128
  237. ccxt/gate.py +1472 -463
  238. ccxt/gemini.py +206 -84
  239. ccxt/hashkey.py +4164 -0
  240. ccxt/hitbtc.py +433 -178
  241. ccxt/hollaex.py +207 -83
  242. ccxt/htx.py +1095 -563
  243. ccxt/huobijp.py +178 -56
  244. ccxt/hyperliquid.py +1677 -292
  245. ccxt/idex.py +219 -95
  246. ccxt/independentreserve.py +299 -31
  247. ccxt/indodax.py +226 -62
  248. ccxt/kraken.py +871 -354
  249. ccxt/krakenfutures.py +324 -100
  250. ccxt/kucoin.py +917 -357
  251. ccxt/kucoinfutures.py +1004 -149
  252. ccxt/kuna.py +198 -107
  253. ccxt/latoken.py +199 -79
  254. ccxt/lbank.py +360 -113
  255. ccxt/luno.py +185 -62
  256. ccxt/lykke.py +168 -55
  257. ccxt/mercado.py +101 -29
  258. ccxt/mexc.py +994 -429
  259. ccxt/myokx.py +53 -0
  260. ccxt/ndax.py +234 -82
  261. ccxt/novadax.py +195 -75
  262. ccxt/oceanex.py +244 -59
  263. ccxt/okcoin.py +301 -165
  264. ccxt/okx.py +1776 -454
  265. ccxt/onetrading.py +198 -414
  266. ccxt/oxfun.py +2897 -0
  267. ccxt/p2b.py +142 -52
  268. ccxt/paradex.py +2085 -0
  269. ccxt/paymium.py +56 -32
  270. ccxt/phemex.py +572 -196
  271. ccxt/poloniex.py +218 -95
  272. ccxt/poloniexfutures.py +260 -92
  273. ccxt/pro/__init__.py +29 -5
  274. ccxt/pro/alpaca.py +32 -17
  275. ccxt/pro/ascendex.py +62 -14
  276. ccxt/pro/bequant.py +4 -0
  277. ccxt/pro/binance.py +1596 -329
  278. ccxt/pro/binancecoinm.py +1 -0
  279. ccxt/pro/binanceus.py +2 -9
  280. ccxt/pro/binanceusdm.py +2 -0
  281. ccxt/pro/bingx.py +527 -134
  282. ccxt/pro/bitcoincom.py +4 -1
  283. ccxt/pro/bitfinex.py +731 -266
  284. ccxt/pro/bitfinex1.py +635 -0
  285. ccxt/pro/bitget.py +726 -357
  286. ccxt/pro/bithumb.py +380 -0
  287. ccxt/pro/bitmart.py +143 -39
  288. ccxt/pro/bitmex.py +199 -40
  289. ccxt/pro/bitopro.py +25 -13
  290. ccxt/pro/bitrue.py +31 -32
  291. ccxt/pro/bitstamp.py +7 -6
  292. ccxt/pro/bitvavo.py +203 -81
  293. ccxt/pro/blockchaincom.py +30 -17
  294. ccxt/pro/blofin.py +692 -0
  295. ccxt/pro/bybit.py +791 -82
  296. ccxt/pro/cex.py +99 -51
  297. ccxt/pro/coinbase.py +220 -30
  298. ccxt/{async_support/hitbtc3.py → pro/coinbaseadvanced.py} +5 -5
  299. ccxt/pro/{coinbasepro.py → coinbaseexchange.py} +19 -19
  300. ccxt/pro/coinbaseinternational.py +193 -30
  301. ccxt/pro/coincatch.py +1464 -0
  302. ccxt/pro/coincheck.py +11 -6
  303. ccxt/pro/coinex.py +965 -665
  304. ccxt/pro/coinone.py +17 -10
  305. ccxt/pro/cryptocom.py +446 -66
  306. ccxt/pro/currencycom.py +11 -10
  307. ccxt/pro/defx.py +832 -0
  308. ccxt/pro/deribit.py +167 -31
  309. ccxt/pro/exmo.py +252 -20
  310. ccxt/pro/gate.py +729 -64
  311. ccxt/pro/gemini.py +44 -26
  312. ccxt/pro/hashkey.py +802 -0
  313. ccxt/pro/hitbtc.py +208 -103
  314. ccxt/pro/hollaex.py +25 -9
  315. ccxt/pro/htx.py +83 -39
  316. ccxt/pro/huobijp.py +17 -16
  317. ccxt/pro/hyperliquid.py +502 -31
  318. ccxt/pro/idex.py +28 -13
  319. ccxt/pro/independentreserve.py +21 -16
  320. ccxt/pro/kraken.py +298 -51
  321. ccxt/pro/krakenfutures.py +166 -75
  322. ccxt/pro/kucoin.py +395 -77
  323. ccxt/pro/kucoinfutures.py +400 -99
  324. ccxt/pro/lbank.py +52 -31
  325. ccxt/pro/luno.py +12 -10
  326. ccxt/pro/mexc.py +400 -50
  327. ccxt/pro/myokx.py +28 -0
  328. ccxt/pro/ndax.py +25 -12
  329. ccxt/pro/okcoin.py +28 -9
  330. ccxt/pro/okx.py +935 -124
  331. ccxt/pro/onetrading.py +41 -24
  332. ccxt/pro/oxfun.py +1054 -0
  333. ccxt/pro/p2b.py +100 -24
  334. ccxt/pro/paradex.py +352 -0
  335. ccxt/pro/phemex.py +92 -33
  336. ccxt/pro/poloniex.py +128 -49
  337. ccxt/pro/poloniexfutures.py +53 -32
  338. ccxt/pro/probit.py +92 -85
  339. ccxt/pro/upbit.py +401 -8
  340. ccxt/pro/vertex.py +943 -0
  341. ccxt/pro/wazirx.py +46 -28
  342. ccxt/pro/whitebit.py +65 -12
  343. ccxt/pro/woo.py +437 -65
  344. ccxt/pro/woofipro.py +1271 -0
  345. ccxt/pro/xt.py +1067 -0
  346. ccxt/probit.py +143 -110
  347. ccxt/static_dependencies/__init__.py +1 -1
  348. ccxt/static_dependencies/lark/__init__.py +38 -0
  349. ccxt/static_dependencies/lark/__pyinstaller/__init__.py +6 -0
  350. ccxt/static_dependencies/lark/__pyinstaller/hook-lark.py +14 -0
  351. ccxt/static_dependencies/lark/ast_utils.py +59 -0
  352. ccxt/static_dependencies/lark/common.py +86 -0
  353. ccxt/static_dependencies/lark/exceptions.py +292 -0
  354. ccxt/static_dependencies/lark/grammar.py +130 -0
  355. ccxt/static_dependencies/lark/grammars/__init__.py +0 -0
  356. ccxt/static_dependencies/lark/indenter.py +143 -0
  357. ccxt/static_dependencies/lark/lark.py +658 -0
  358. ccxt/static_dependencies/lark/lexer.py +678 -0
  359. ccxt/static_dependencies/lark/load_grammar.py +1428 -0
  360. ccxt/static_dependencies/lark/parse_tree_builder.py +391 -0
  361. ccxt/static_dependencies/lark/parser_frontends.py +257 -0
  362. ccxt/static_dependencies/lark/parsers/__init__.py +0 -0
  363. ccxt/static_dependencies/lark/parsers/cyk.py +340 -0
  364. ccxt/static_dependencies/lark/parsers/earley.py +314 -0
  365. ccxt/static_dependencies/lark/parsers/earley_common.py +42 -0
  366. ccxt/static_dependencies/lark/parsers/earley_forest.py +801 -0
  367. ccxt/static_dependencies/lark/parsers/grammar_analysis.py +203 -0
  368. ccxt/static_dependencies/lark/parsers/lalr_analysis.py +332 -0
  369. ccxt/static_dependencies/lark/parsers/lalr_interactive_parser.py +158 -0
  370. ccxt/static_dependencies/lark/parsers/lalr_parser.py +122 -0
  371. ccxt/static_dependencies/lark/parsers/lalr_parser_state.py +110 -0
  372. ccxt/static_dependencies/lark/parsers/xearley.py +165 -0
  373. ccxt/static_dependencies/lark/py.typed +0 -0
  374. ccxt/static_dependencies/lark/reconstruct.py +107 -0
  375. ccxt/static_dependencies/lark/tools/__init__.py +70 -0
  376. ccxt/static_dependencies/lark/tools/nearley.py +202 -0
  377. ccxt/static_dependencies/lark/tools/serialize.py +32 -0
  378. ccxt/static_dependencies/lark/tools/standalone.py +196 -0
  379. ccxt/static_dependencies/lark/tree.py +267 -0
  380. ccxt/static_dependencies/lark/tree_matcher.py +186 -0
  381. ccxt/static_dependencies/lark/tree_templates.py +180 -0
  382. ccxt/static_dependencies/lark/utils.py +343 -0
  383. ccxt/static_dependencies/lark/visitors.py +596 -0
  384. ccxt/static_dependencies/marshmallow/__init__.py +81 -0
  385. ccxt/static_dependencies/marshmallow/base.py +65 -0
  386. ccxt/static_dependencies/marshmallow/class_registry.py +94 -0
  387. ccxt/static_dependencies/marshmallow/decorators.py +231 -0
  388. ccxt/static_dependencies/marshmallow/error_store.py +60 -0
  389. ccxt/static_dependencies/marshmallow/exceptions.py +71 -0
  390. ccxt/static_dependencies/marshmallow/fields.py +2114 -0
  391. ccxt/static_dependencies/marshmallow/orderedset.py +89 -0
  392. ccxt/static_dependencies/marshmallow/py.typed +0 -0
  393. ccxt/static_dependencies/marshmallow/schema.py +1228 -0
  394. ccxt/static_dependencies/marshmallow/types.py +12 -0
  395. ccxt/static_dependencies/marshmallow/utils.py +378 -0
  396. ccxt/static_dependencies/marshmallow/validate.py +678 -0
  397. ccxt/static_dependencies/marshmallow/warnings.py +2 -0
  398. ccxt/static_dependencies/marshmallow_dataclass/__init__.py +1047 -0
  399. ccxt/static_dependencies/marshmallow_dataclass/collection_field.py +51 -0
  400. ccxt/static_dependencies/marshmallow_dataclass/lazy_class_attribute.py +45 -0
  401. ccxt/static_dependencies/marshmallow_dataclass/mypy.py +71 -0
  402. ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
  403. ccxt/static_dependencies/marshmallow_dataclass/typing.py +14 -0
  404. ccxt/static_dependencies/marshmallow_dataclass/union_field.py +82 -0
  405. ccxt/static_dependencies/marshmallow_oneofschema/__init__.py +1 -0
  406. ccxt/static_dependencies/marshmallow_oneofschema/one_of_schema.py +193 -0
  407. ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
  408. ccxt/static_dependencies/starknet/__init__.py +0 -0
  409. ccxt/static_dependencies/starknet/cairo/__init__.py +0 -0
  410. ccxt/static_dependencies/starknet/cairo/data_types.py +123 -0
  411. ccxt/static_dependencies/starknet/cairo/deprecated_parse/__init__.py +0 -0
  412. ccxt/static_dependencies/starknet/cairo/deprecated_parse/cairo_types.py +77 -0
  413. ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser.py +46 -0
  414. ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser_transformer.py +138 -0
  415. ccxt/static_dependencies/starknet/cairo/felt.py +64 -0
  416. ccxt/static_dependencies/starknet/cairo/type_parser.py +121 -0
  417. ccxt/static_dependencies/starknet/cairo/v1/__init__.py +0 -0
  418. ccxt/static_dependencies/starknet/cairo/v1/type_parser.py +59 -0
  419. ccxt/static_dependencies/starknet/cairo/v2/__init__.py +0 -0
  420. ccxt/static_dependencies/starknet/cairo/v2/type_parser.py +77 -0
  421. ccxt/static_dependencies/starknet/ccxt_utils.py +7 -0
  422. ccxt/static_dependencies/starknet/common.py +15 -0
  423. ccxt/static_dependencies/starknet/constants.py +39 -0
  424. ccxt/static_dependencies/starknet/hash/__init__.py +0 -0
  425. ccxt/static_dependencies/starknet/hash/address.py +79 -0
  426. ccxt/static_dependencies/starknet/hash/compiled_class_hash_objects.py +111 -0
  427. ccxt/static_dependencies/starknet/hash/selector.py +16 -0
  428. ccxt/static_dependencies/starknet/hash/storage.py +12 -0
  429. ccxt/static_dependencies/starknet/hash/utils.py +78 -0
  430. ccxt/static_dependencies/starknet/models/__init__.py +0 -0
  431. ccxt/static_dependencies/starknet/models/typed_data.py +45 -0
  432. ccxt/static_dependencies/starknet/serialization/__init__.py +24 -0
  433. ccxt/static_dependencies/starknet/serialization/_calldata_reader.py +40 -0
  434. ccxt/static_dependencies/starknet/serialization/_context.py +142 -0
  435. ccxt/static_dependencies/starknet/serialization/data_serializers/__init__.py +10 -0
  436. ccxt/static_dependencies/starknet/serialization/data_serializers/_common.py +82 -0
  437. ccxt/static_dependencies/starknet/serialization/data_serializers/array_serializer.py +43 -0
  438. ccxt/static_dependencies/starknet/serialization/data_serializers/bool_serializer.py +37 -0
  439. ccxt/static_dependencies/starknet/serialization/data_serializers/byte_array_serializer.py +66 -0
  440. ccxt/static_dependencies/starknet/serialization/data_serializers/cairo_data_serializer.py +71 -0
  441. ccxt/static_dependencies/starknet/serialization/data_serializers/enum_serializer.py +71 -0
  442. ccxt/static_dependencies/starknet/serialization/data_serializers/felt_serializer.py +50 -0
  443. ccxt/static_dependencies/starknet/serialization/data_serializers/named_tuple_serializer.py +58 -0
  444. ccxt/static_dependencies/starknet/serialization/data_serializers/option_serializer.py +43 -0
  445. ccxt/static_dependencies/starknet/serialization/data_serializers/output_serializer.py +40 -0
  446. ccxt/static_dependencies/starknet/serialization/data_serializers/payload_serializer.py +72 -0
  447. ccxt/static_dependencies/starknet/serialization/data_serializers/struct_serializer.py +36 -0
  448. ccxt/static_dependencies/starknet/serialization/data_serializers/tuple_serializer.py +36 -0
  449. ccxt/static_dependencies/starknet/serialization/data_serializers/uint256_serializer.py +76 -0
  450. ccxt/static_dependencies/starknet/serialization/data_serializers/uint_serializer.py +100 -0
  451. ccxt/static_dependencies/starknet/serialization/data_serializers/unit_serializer.py +32 -0
  452. ccxt/static_dependencies/starknet/serialization/errors.py +10 -0
  453. ccxt/static_dependencies/starknet/serialization/factory.py +229 -0
  454. ccxt/static_dependencies/starknet/serialization/function_serialization_adapter.py +110 -0
  455. ccxt/static_dependencies/starknet/serialization/tuple_dataclass.py +59 -0
  456. ccxt/static_dependencies/starknet/utils/__init__.py +0 -0
  457. ccxt/static_dependencies/starknet/utils/constructor_args_translator.py +86 -0
  458. ccxt/static_dependencies/starknet/utils/iterable.py +13 -0
  459. ccxt/static_dependencies/starknet/utils/schema.py +13 -0
  460. ccxt/static_dependencies/starknet/utils/typed_data.py +182 -0
  461. ccxt/static_dependencies/starkware/__init__.py +0 -0
  462. ccxt/static_dependencies/starkware/crypto/__init__.py +0 -0
  463. ccxt/static_dependencies/starkware/crypto/fast_pedersen_hash.py +50 -0
  464. ccxt/static_dependencies/starkware/crypto/math_utils.py +78 -0
  465. ccxt/static_dependencies/starkware/crypto/signature.py +2344 -0
  466. ccxt/static_dependencies/starkware/crypto/utils.py +63 -0
  467. ccxt/static_dependencies/sympy/__init__.py +0 -0
  468. ccxt/static_dependencies/sympy/core/__init__.py +0 -0
  469. ccxt/static_dependencies/sympy/core/intfunc.py +35 -0
  470. ccxt/static_dependencies/sympy/external/__init__.py +0 -0
  471. ccxt/static_dependencies/sympy/external/gmpy.py +345 -0
  472. ccxt/static_dependencies/sympy/external/importtools.py +187 -0
  473. ccxt/static_dependencies/sympy/external/ntheory.py +637 -0
  474. ccxt/static_dependencies/sympy/external/pythonmpq.py +341 -0
  475. ccxt/static_dependencies/typing_inspect/__init__.py +0 -0
  476. ccxt/static_dependencies/typing_inspect/typing_inspect.py +851 -0
  477. ccxt/test/{test_async.py → tests_async.py} +456 -391
  478. ccxt/test/tests_helpers.py +285 -0
  479. ccxt/test/tests_init.py +39 -0
  480. ccxt/test/{test_sync.py → tests_sync.py} +456 -393
  481. ccxt/timex.py +123 -70
  482. ccxt/tokocrypto.py +129 -93
  483. ccxt/tradeogre.py +39 -25
  484. ccxt/upbit.py +322 -113
  485. ccxt/vertex.py +2983 -0
  486. ccxt/wavesexchange.py +227 -173
  487. ccxt/wazirx.py +145 -65
  488. ccxt/whitebit.py +533 -138
  489. ccxt/woo.py +1137 -296
  490. ccxt/woofipro.py +2716 -0
  491. ccxt/xt.py +4627 -0
  492. ccxt/yobit.py +159 -92
  493. ccxt/zaif.py +80 -33
  494. ccxt/zonda.py +140 -69
  495. ccxt-4.4.49.dist-info/LICENSE.txt +21 -0
  496. ccxt-4.4.49.dist-info/METADATA +646 -0
  497. ccxt-4.4.49.dist-info/RECORD +669 -0
  498. {ccxt-4.2.77.dist-info → ccxt-4.4.49.dist-info}/WHEEL +1 -1
  499. ccxt/abstract/bitbay.py +0 -47
  500. ccxt/abstract/bitfinex2.py +0 -139
  501. ccxt/abstract/hitbtc3.py +0 -115
  502. ccxt/async_support/bitbay.py +0 -17
  503. ccxt/async_support/bitfinex2.py +0 -3496
  504. ccxt/async_support/flowbtc.py +0 -34
  505. ccxt/bitbay.py +0 -17
  506. ccxt/bitfinex2.py +0 -3496
  507. ccxt/flowbtc.py +0 -34
  508. ccxt/hitbtc3.py +0 -16
  509. ccxt/pro/bitfinex2.py +0 -1081
  510. ccxt/test/base/__init__.py +0 -28
  511. ccxt/test/base/test_account.py +0 -26
  512. ccxt/test/base/test_balance.py +0 -56
  513. ccxt/test/base/test_borrow_interest.py +0 -35
  514. ccxt/test/base/test_borrow_rate.py +0 -32
  515. ccxt/test/base/test_calculate_fee.py +0 -51
  516. ccxt/test/base/test_crypto.py +0 -127
  517. ccxt/test/base/test_currency.py +0 -76
  518. ccxt/test/base/test_datetime.py +0 -103
  519. ccxt/test/base/test_decimal_to_precision.py +0 -392
  520. ccxt/test/base/test_deep_extend.py +0 -68
  521. ccxt/test/base/test_deposit_withdrawal.py +0 -50
  522. ccxt/test/base/test_exchange_datetime_functions.py +0 -76
  523. ccxt/test/base/test_funding_rate_history.py +0 -29
  524. ccxt/test/base/test_last_price.py +0 -32
  525. ccxt/test/base/test_ledger_entry.py +0 -45
  526. ccxt/test/base/test_ledger_item.py +0 -48
  527. ccxt/test/base/test_leverage_tier.py +0 -33
  528. ccxt/test/base/test_margin_mode.py +0 -24
  529. ccxt/test/base/test_margin_modification.py +0 -35
  530. ccxt/test/base/test_market.py +0 -190
  531. ccxt/test/base/test_number.py +0 -411
  532. ccxt/test/base/test_ohlcv.py +0 -32
  533. ccxt/test/base/test_open_interest.py +0 -32
  534. ccxt/test/base/test_order.py +0 -64
  535. ccxt/test/base/test_order_book.py +0 -63
  536. ccxt/test/base/test_position.py +0 -60
  537. ccxt/test/base/test_shared_methods.py +0 -345
  538. ccxt/test/base/test_status.py +0 -24
  539. ccxt/test/base/test_throttle.py +0 -126
  540. ccxt/test/base/test_ticker.py +0 -86
  541. ccxt/test/base/test_trade.py +0 -47
  542. ccxt/test/base/test_trading_fee.py +0 -26
  543. ccxt/test/base/test_transaction.py +0 -39
  544. ccxt-4.2.77.dist-info/METADATA +0 -626
  545. ccxt-4.2.77.dist-info/RECORD +0 -534
  546. {ccxt-4.2.77.dist-info → ccxt-4.4.49.dist-info}/top_level.txt +0 -0
@@ -7,16 +7,16 @@ from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.btcbox import ImplicitAPI
8
8
  import hashlib
9
9
  import json
10
- from ccxt.base.types import Balances, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Ticker, Trade
10
+ from ccxt.base.types import Balances, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade
11
11
  from typing import List
12
12
  from ccxt.base.errors import ExchangeError
13
+ from ccxt.base.errors import AuthenticationError
13
14
  from ccxt.base.errors import PermissionDenied
14
15
  from ccxt.base.errors import InsufficientFunds
15
16
  from ccxt.base.errors import InvalidOrder
16
17
  from ccxt.base.errors import OrderNotFound
17
18
  from ccxt.base.errors import DDoSProtection
18
19
  from ccxt.base.errors import InvalidNonce
19
- from ccxt.base.errors import AuthenticationError
20
20
  from ccxt.base.decimal_to_precision import TICK_SIZE
21
21
  from ccxt.base.precise import Precise
22
22
 
@@ -65,12 +65,15 @@ class btcbox(Exchange, ImplicitAPI):
65
65
  'fetchOrderBook': True,
66
66
  'fetchOrders': True,
67
67
  'fetchPosition': False,
68
+ 'fetchPositionHistory': False,
68
69
  'fetchPositionMode': False,
69
70
  'fetchPositions': False,
71
+ 'fetchPositionsForSymbol': False,
72
+ 'fetchPositionsHistory': False,
70
73
  'fetchPositionsRisk': False,
71
74
  'fetchPremiumIndexOHLCV': False,
72
75
  'fetchTicker': True,
73
- 'fetchTickers': False,
76
+ 'fetchTickers': True,
74
77
  'fetchTrades': True,
75
78
  'fetchTransfer': False,
76
79
  'fetchTransfers': False,
@@ -85,7 +88,7 @@ class btcbox(Exchange, ImplicitAPI):
85
88
  'ws': False,
86
89
  },
87
90
  'urls': {
88
- 'logo': 'https://user-images.githubusercontent.com/51840849/87327317-98c55400-c53c-11ea-9a11-81f7d951cc74.jpg',
91
+ 'logo': 'https://github.com/user-attachments/assets/1e2cb499-8d0f-4f8f-9464-3c015cfbc76b',
89
92
  'api': {
90
93
  'rest': 'https://www.btcbox.co.jp/api',
91
94
  },
@@ -99,6 +102,7 @@ class btcbox(Exchange, ImplicitAPI):
99
102
  'depth',
100
103
  'orders',
101
104
  'ticker',
105
+ 'tickers',
102
106
  ],
103
107
  },
104
108
  'private': {
@@ -112,11 +116,63 @@ class btcbox(Exchange, ImplicitAPI):
112
116
  ],
113
117
  },
114
118
  },
115
- 'markets': {
116
- 'BTC/JPY': self.safe_market_structure({'id': 'btc', 'symbol': 'BTC/JPY', 'base': 'BTC', 'quote': 'JPY', 'baseId': 'btc', 'quoteId': 'jpy', 'taker': self.parse_number('0.0005'), 'maker': self.parse_number('0.0005'), 'type': 'spot', 'spot': True}),
117
- 'ETH/JPY': self.safe_market_structure({'id': 'eth', 'symbol': 'ETH/JPY', 'base': 'ETH', 'quote': 'JPY', 'baseId': 'eth', 'quoteId': 'jpy', 'taker': self.parse_number('0.0010'), 'maker': self.parse_number('0.0010'), 'type': 'spot', 'spot': True}),
118
- 'LTC/JPY': self.safe_market_structure({'id': 'ltc', 'symbol': 'LTC/JPY', 'base': 'LTC', 'quote': 'JPY', 'baseId': 'ltc', 'quoteId': 'jpy', 'taker': self.parse_number('0.0010'), 'maker': self.parse_number('0.0010'), 'type': 'spot', 'spot': True}),
119
- 'BCH/JPY': self.safe_market_structure({'id': 'bch', 'symbol': 'BCH/JPY', 'base': 'BCH', 'quote': 'JPY', 'baseId': 'bch', 'quoteId': 'jpy', 'taker': self.parse_number('0.0010'), 'maker': self.parse_number('0.0010'), 'type': 'spot', 'spot': True}),
119
+ 'features': {
120
+ 'spot': {
121
+ 'sandbox': False,
122
+ 'createOrder': {
123
+ 'marginMode': False,
124
+ 'triggerPrice': False,
125
+ 'triggerPriceType': None,
126
+ 'triggerDirection': False,
127
+ 'stopLossPrice': False,
128
+ 'takeProfitPrice': False,
129
+ 'attachedStopLossTakeProfit': None,
130
+ 'timeInForce': {
131
+ 'IOC': False,
132
+ 'FOK': False,
133
+ 'PO': False,
134
+ 'GTD': False,
135
+ },
136
+ 'hedged': False,
137
+ 'leverage': False,
138
+ 'marketBuyRequiresPrice': False,
139
+ 'marketBuyByCost': False,
140
+ 'selfTradePrevention': False,
141
+ 'trailing': False,
142
+ 'iceberg': False,
143
+ },
144
+ 'createOrders': None,
145
+ 'fetchMyTrades': None,
146
+ 'fetchOrder': {
147
+ 'marginMode': False,
148
+ 'trigger': False,
149
+ 'trailing': False,
150
+ },
151
+ 'fetchOpenOrders': {
152
+ 'marginMode': False,
153
+ 'limit': 100,
154
+ 'trigger': False,
155
+ 'trailing': False,
156
+ },
157
+ 'fetchOrders': {
158
+ 'marginMode': False,
159
+ 'limit': 100,
160
+ 'daysBack': None,
161
+ 'untilDays': None,
162
+ 'trigger': False,
163
+ 'trailing': False,
164
+ },
165
+ 'fetchClosedOrders': None,
166
+ 'fetchOHLCV': None,
167
+ },
168
+ 'swap': {
169
+ 'linear': None,
170
+ 'inverse': None,
171
+ },
172
+ 'future': {
173
+ 'linear': None,
174
+ 'inverse': None,
175
+ },
120
176
  },
121
177
  'precisionMode': TICK_SIZE,
122
178
  'exceptions': {
@@ -133,8 +189,139 @@ class btcbox(Exchange, ImplicitAPI):
133
189
  },
134
190
  })
135
191
 
192
+ async def fetch_markets(self, params={}) -> List[Market]:
193
+ """
194
+ retrieves data on all markets for ace
195
+ :param dict [params]: extra parameters specific to the exchange API endpoint
196
+ :returns dict[]: an array of objects representing market data
197
+ """
198
+ response = await self.publicGetTickers()
199
+ #
200
+ marketIds = list(response.keys())
201
+ markets = []
202
+ for i in range(0, len(marketIds)):
203
+ marketId = marketIds[i]
204
+ symbolParts = marketId.split('_')
205
+ baseCurr = self.safe_string(symbolParts, 0)
206
+ quote = self.safe_string(symbolParts, 1)
207
+ quoteId = quote.lower()
208
+ id = baseCurr.lower()
209
+ res = response[marketId]
210
+ symbol = baseCurr + '/' + quote
211
+ fee = self.parse_number('0.0005') if (id == 'BTC') else self.parse_number('0.0010')
212
+ markets.append(self.safe_market_structure({
213
+ 'id': id,
214
+ 'uppercaseId': None,
215
+ 'symbol': symbol,
216
+ 'base': baseCurr,
217
+ 'baseId': id,
218
+ 'quote': quote,
219
+ 'quoteId': quoteId,
220
+ 'settle': None,
221
+ 'settleId': None,
222
+ 'type': 'spot',
223
+ 'spot': True,
224
+ 'margin': False,
225
+ 'swap': False,
226
+ 'future': False,
227
+ 'option': False,
228
+ 'taker': fee,
229
+ 'maker': fee,
230
+ 'contract': False,
231
+ 'linear': None,
232
+ 'inverse': None,
233
+ 'contractSize': None,
234
+ 'expiry': None,
235
+ 'expiryDatetime': None,
236
+ 'strike': None,
237
+ 'optionType': None,
238
+ 'limits': {
239
+ 'amount': {
240
+ 'min': None,
241
+ 'max': None,
242
+ },
243
+ 'price': {
244
+ 'min': None,
245
+ 'max': None,
246
+ },
247
+ 'cost': {
248
+ 'min': None,
249
+ 'max': None,
250
+ },
251
+ 'leverage': {
252
+ 'min': None,
253
+ 'max': None,
254
+ },
255
+ },
256
+ 'precision': {
257
+ 'price': None,
258
+ 'amount': None,
259
+ },
260
+ 'active': None,
261
+ 'created': None,
262
+ 'info': res,
263
+ }))
264
+ return markets
265
+
266
+ def parse_market(self, market: dict) -> Market:
267
+ baseId = self.safe_string(market, 'base')
268
+ base = self.safe_currency_code(baseId)
269
+ quoteId = self.safe_string(market, 'quote')
270
+ quote = self.safe_currency_code(quoteId)
271
+ symbol = base + '/' + quote
272
+ return {
273
+ 'id': self.safe_string(market, 'symbol'),
274
+ 'uppercaseId': None,
275
+ 'symbol': symbol,
276
+ 'base': base,
277
+ 'baseId': baseId,
278
+ 'quote': quote,
279
+ 'quoteId': quoteId,
280
+ 'settle': None,
281
+ 'settleId': None,
282
+ 'type': 'spot',
283
+ 'spot': True,
284
+ 'margin': False,
285
+ 'swap': False,
286
+ 'future': False,
287
+ 'option': False,
288
+ 'contract': False,
289
+ 'linear': None,
290
+ 'inverse': None,
291
+ 'contractSize': None,
292
+ 'expiry': None,
293
+ 'expiryDatetime': None,
294
+ 'strike': None,
295
+ 'optionType': None,
296
+ 'limits': {
297
+ 'amount': {
298
+ 'min': self.safe_number(market, 'minLimitBaseAmount'),
299
+ 'max': self.safe_number(market, 'maxLimitBaseAmount'),
300
+ },
301
+ 'price': {
302
+ 'min': None,
303
+ 'max': None,
304
+ },
305
+ 'cost': {
306
+ 'min': None,
307
+ 'max': None,
308
+ },
309
+ 'leverage': {
310
+ 'min': None,
311
+ 'max': None,
312
+ },
313
+ },
314
+ 'precision': {
315
+ 'price': self.parse_number(self.parse_precision(self.safe_string(market, 'quotePrecision'))),
316
+ 'amount': self.parse_number(self.parse_precision(self.safe_string(market, 'basePrecision'))),
317
+ },
318
+ 'active': None,
319
+ 'created': None,
320
+ 'info': market,
321
+ }
322
+
136
323
  def parse_balance(self, response) -> Balances:
137
- result = {'info': response}
324
+ result: dict = {'info': response}
138
325
  codes = list(self.currencies.keys())
139
326
  for i in range(0, len(codes)):
140
327
  code = codes[i]
@@ -152,7 +339,9 @@ class btcbox(Exchange, ImplicitAPI):
152
339
  async def fetch_balance(self, params={}) -> Balances:
153
340
  """
154
341
  query for balance and get the amount of funds available for trading or funds locked in orders
155
- :see: https://blog.btcbox.jp/en/archives/8762#toc13
342
+
343
+ https://blog.btcbox.jp/en/archives/8762#toc13
344
+
156
345
  :param dict [params]: extra parameters specific to the exchange API endpoint
157
346
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
158
347
  """
@@ -163,7 +352,9 @@ class btcbox(Exchange, ImplicitAPI):
163
352
  async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
164
353
  """
165
354
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
166
- :see: https://blog.btcbox.jp/en/archives/8762#toc6
355
+
356
+ https://blog.btcbox.jp/en/archives/8762#toc6
357
+
167
358
  :param str symbol: unified symbol of the market to fetch the order book for
168
359
  :param int [limit]: the maximum amount of order book entries to return
169
360
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -171,14 +362,14 @@ class btcbox(Exchange, ImplicitAPI):
171
362
  """
172
363
  await self.load_markets()
173
364
  market = self.market(symbol)
174
- request = {}
365
+ request: dict = {}
175
366
  numSymbols = len(self.symbols)
176
367
  if numSymbols > 1:
177
368
  request['coin'] = market['baseId']
178
369
  response = await self.publicGetDepth(self.extend(request, params))
179
370
  return self.parse_order_book(response, market['symbol'])
180
371
 
181
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
372
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
182
373
  symbol = self.safe_symbol(None, market)
183
374
  last = self.safe_string(ticker, 'last')
184
375
  return self.safe_ticker({
@@ -207,21 +398,34 @@ class btcbox(Exchange, ImplicitAPI):
207
398
  async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
208
399
  """
209
400
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
210
- :see: https://blog.btcbox.jp/en/archives/8762#toc5
401
+
402
+ https://blog.btcbox.jp/en/archives/8762#toc5
403
+
211
404
  :param str symbol: unified symbol of the market to fetch the ticker for
212
405
  :param dict [params]: extra parameters specific to the exchange API endpoint
213
406
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
214
407
  """
215
408
  await self.load_markets()
216
409
  market = self.market(symbol)
217
- request = {}
410
+ request: dict = {}
218
411
  numSymbols = len(self.symbols)
219
412
  if numSymbols > 1:
220
413
  request['coin'] = market['baseId']
221
414
  response = await self.publicGetTicker(self.extend(request, params))
222
415
  return self.parse_ticker(response, market)
223
416
 
224
- def parse_trade(self, trade, market: Market = None) -> Trade:
417
+ async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
418
+ """
419
+ fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
420
+ :param str[] [symbols]: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
421
+ :param dict [params]: extra parameters specific to the exchange API endpoint
422
+ :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
423
+ """
424
+ await self.load_markets()
425
+ response = await self.publicGetTickers(params)
426
+ return self.parse_tickers(response, symbols)
427
+
428
+ def parse_trade(self, trade: dict, market: Market = None) -> Trade:
225
429
  #
226
430
  # fetchTrades(public)
227
431
  #
@@ -259,7 +463,9 @@ class btcbox(Exchange, ImplicitAPI):
259
463
  async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
260
464
  """
261
465
  get the list of most recent trades for a particular symbol
262
- :see: https://blog.btcbox.jp/en/archives/8762#toc7
466
+
467
+ https://blog.btcbox.jp/en/archives/8762#toc7
468
+
263
469
  :param str symbol: unified symbol of the market to fetch trades for
264
470
  :param int [since]: timestamp in ms of the earliest trade to fetch
265
471
  :param int [limit]: the maximum amount of trades to fetch
@@ -268,7 +474,7 @@ class btcbox(Exchange, ImplicitAPI):
268
474
  """
269
475
  await self.load_markets()
270
476
  market = self.market(symbol)
271
- request = {}
477
+ request: dict = {}
272
478
  numSymbols = len(self.symbols)
273
479
  if numSymbols > 1:
274
480
  request['coin'] = market['baseId']
@@ -289,18 +495,20 @@ class btcbox(Exchange, ImplicitAPI):
289
495
  async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
290
496
  """
291
497
  create a trade order
292
- :see: https://blog.btcbox.jp/en/archives/8762#toc18
498
+
499
+ https://blog.btcbox.jp/en/archives/8762#toc18
500
+
293
501
  :param str symbol: unified symbol of the market to create an order in
294
502
  :param str type: 'market' or 'limit'
295
503
  :param str side: 'buy' or 'sell'
296
504
  :param float amount: how much of currency you want to trade in units of base currency
297
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
505
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
298
506
  :param dict [params]: extra parameters specific to the exchange API endpoint
299
507
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
300
508
  """
301
509
  await self.load_markets()
302
510
  market = self.market(symbol)
303
- request = {
511
+ request: dict = {
304
512
  'amount': amount,
305
513
  'price': price,
306
514
  'type': side,
@@ -318,7 +526,9 @@ class btcbox(Exchange, ImplicitAPI):
318
526
  async def cancel_order(self, id: str, symbol: Str = None, params={}):
319
527
  """
320
528
  cancels an open order
321
- :see: https://blog.btcbox.jp/en/archives/8762#toc17
529
+
530
+ https://blog.btcbox.jp/en/archives/8762#toc17
531
+
322
532
  :param str id: order id
323
533
  :param str symbol: unified symbol of the market the order was made in
324
534
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -329,7 +539,7 @@ class btcbox(Exchange, ImplicitAPI):
329
539
  if symbol is None:
330
540
  symbol = 'BTC/JPY'
331
541
  market = self.market(symbol)
332
- request = {
542
+ request: dict = {
333
543
  'id': id,
334
544
  'coin': market['baseId'],
335
545
  }
@@ -339,8 +549,8 @@ class btcbox(Exchange, ImplicitAPI):
339
549
  #
340
550
  return self.parse_order(response, market)
341
551
 
342
- def parse_order_status(self, status):
343
- statuses = {
552
+ def parse_order_status(self, status: Str):
553
+ statuses: dict = {
344
554
  # TODO: complete list
345
555
  'part': 'open', # partially or not at all executed
346
556
  'all': 'closed', # fully executed
@@ -350,7 +560,7 @@ class btcbox(Exchange, ImplicitAPI):
350
560
  }
351
561
  return self.safe_string(statuses, status, status)
352
562
 
353
- def parse_order(self, order, market: Market = None) -> Order:
563
+ def parse_order(self, order: dict, market: Market = None) -> Order:
354
564
  #
355
565
  # {
356
566
  # "id":11,
@@ -396,7 +606,6 @@ class btcbox(Exchange, ImplicitAPI):
396
606
  'status': status,
397
607
  'symbol': market['symbol'],
398
608
  'price': price,
399
- 'stopPrice': None,
400
609
  'triggerPrice': None,
401
610
  'cost': None,
402
611
  'trades': trades,
@@ -408,7 +617,10 @@ class btcbox(Exchange, ImplicitAPI):
408
617
  async def fetch_order(self, id: str, symbol: Str = None, params={}):
409
618
  """
410
619
  fetches information on an order made by the user
411
- :see: https://blog.btcbox.jp/en/archives/8762#toc16
620
+
621
+ https://blog.btcbox.jp/en/archives/8762#toc16
622
+
623
+ :param str id: the order id
412
624
  :param str symbol: unified symbol of the market the order was made in
413
625
  :param dict [params]: extra parameters specific to the exchange API endpoint
414
626
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
@@ -443,7 +655,7 @@ class btcbox(Exchange, ImplicitAPI):
443
655
  if symbol is None:
444
656
  symbol = 'BTC/JPY'
445
657
  market = self.market(symbol)
446
- request = {
658
+ request: dict = {
447
659
  'type': type, # 'open' or 'all'
448
660
  'coin': market['baseId'],
449
661
  }
@@ -471,7 +683,9 @@ class btcbox(Exchange, ImplicitAPI):
471
683
  async def fetch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
472
684
  """
473
685
  fetches information on multiple orders made by the user
474
- :see: https://blog.btcbox.jp/en/archives/8762#toc15
686
+
687
+ https://blog.btcbox.jp/en/archives/8762#toc15
688
+
475
689
  :param str symbol: unified market symbol of the market orders were made in
476
690
  :param int [since]: the earliest time in ms to fetch orders for
477
691
  :param int [limit]: the maximum number of order structures to retrieve
@@ -483,7 +697,9 @@ class btcbox(Exchange, ImplicitAPI):
483
697
  async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
484
698
  """
485
699
  fetch all unfilled currently open orders
486
- :see: https://blog.btcbox.jp/en/archives/8762#toc15
700
+
701
+ https://blog.btcbox.jp/en/archives/8762#toc15
702
+
487
703
  :param str symbol: unified market symbol
488
704
  :param int [since]: the earliest time in ms to fetch open orders for
489
705
  :param int [limit]: the maximum number of open orders structures to retrieve
@@ -508,7 +724,7 @@ class btcbox(Exchange, ImplicitAPI):
508
724
  'nonce': nonce,
509
725
  }, params)
510
726
  request = self.urlencode(query)
511
- secret = self.hash(self.encode(self.secret), 'sha256')
727
+ secret = self.hash(self.encode(self.secret), 'md5')
512
728
  query['signature'] = self.hmac(self.encode(request), self.encode(secret), hashlib.sha256)
513
729
  body = self.urlencode(query)
514
730
  headers = {
@@ -516,7 +732,7 @@ class btcbox(Exchange, ImplicitAPI):
516
732
  }
517
733
  return {'url': url, 'method': method, 'body': body, 'headers': headers}
518
734
 
519
- def handle_errors(self, httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody):
735
+ def handle_errors(self, httpCode: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
520
736
  if response is None:
521
737
  return None # resort to defaultErrorHandler
522
738
  # typical error response: {"result":false,"code":"401"}