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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (546) hide show
  1. ccxt/__init__.py +36 -14
  2. ccxt/abstract/alpaca.py +4 -0
  3. ccxt/abstract/bigone.py +1 -1
  4. ccxt/abstract/binance.py +112 -48
  5. ccxt/abstract/binancecoinm.py +112 -48
  6. ccxt/abstract/binanceus.py +147 -83
  7. ccxt/abstract/binanceusdm.py +112 -48
  8. ccxt/abstract/bingx.py +133 -78
  9. ccxt/abstract/bitbank.py +5 -0
  10. ccxt/abstract/bitfinex.py +136 -65
  11. ccxt/abstract/bitfinex1.py +69 -0
  12. ccxt/abstract/bitflyer.py +1 -0
  13. ccxt/abstract/bitget.py +8 -1
  14. ccxt/abstract/bitmart.py +13 -1
  15. ccxt/abstract/bitopro.py +1 -0
  16. ccxt/abstract/bitpanda.py +0 -12
  17. ccxt/abstract/bitrue.py +3 -3
  18. ccxt/abstract/bitstamp.py +26 -3
  19. ccxt/abstract/blofin.py +24 -0
  20. ccxt/abstract/btcbox.py +1 -0
  21. ccxt/abstract/bybit.py +29 -14
  22. ccxt/abstract/cex.py +28 -29
  23. ccxt/abstract/coinbase.py +6 -0
  24. ccxt/abstract/coinbaseadvanced.py +94 -0
  25. ccxt/abstract/{coinbasepro.py → coinbaseexchange.py} +1 -0
  26. ccxt/abstract/coinbaseinternational.py +1 -1
  27. ccxt/abstract/coincatch.py +94 -0
  28. ccxt/abstract/coinex.py +233 -123
  29. ccxt/abstract/coinmetro.py +1 -0
  30. ccxt/abstract/cryptocom.py +14 -0
  31. ccxt/abstract/defx.py +69 -0
  32. ccxt/abstract/deribit.py +1 -0
  33. ccxt/abstract/digifinex.py +1 -0
  34. ccxt/abstract/ellipx.py +25 -0
  35. ccxt/abstract/gate.py +20 -0
  36. ccxt/abstract/gateio.py +20 -0
  37. ccxt/abstract/gemini.py +1 -0
  38. ccxt/abstract/hashkey.py +67 -0
  39. ccxt/abstract/hyperliquid.py +1 -1
  40. ccxt/abstract/independentreserve.py +6 -0
  41. ccxt/abstract/kraken.py +4 -3
  42. ccxt/abstract/krakenfutures.py +4 -0
  43. ccxt/abstract/kucoin.py +24 -0
  44. ccxt/abstract/kucoinfutures.py +34 -0
  45. ccxt/abstract/luno.py +2 -0
  46. ccxt/abstract/mexc.py +4 -0
  47. ccxt/abstract/myokx.py +340 -0
  48. ccxt/abstract/oceanex.py +5 -0
  49. ccxt/abstract/okx.py +30 -0
  50. ccxt/abstract/onetrading.py +0 -12
  51. ccxt/abstract/oxfun.py +34 -0
  52. ccxt/abstract/paradex.py +40 -0
  53. ccxt/abstract/phemex.py +1 -0
  54. ccxt/abstract/upbit.py +4 -0
  55. ccxt/abstract/vertex.py +19 -0
  56. ccxt/abstract/whitebit.py +31 -1
  57. ccxt/abstract/woo.py +6 -2
  58. ccxt/abstract/woofipro.py +119 -0
  59. ccxt/abstract/xt.py +153 -0
  60. ccxt/abstract/zonda.py +6 -0
  61. ccxt/ace.py +164 -60
  62. ccxt/alpaca.py +727 -63
  63. ccxt/ascendex.py +395 -249
  64. ccxt/async_support/__init__.py +36 -14
  65. ccxt/async_support/ace.py +164 -60
  66. ccxt/async_support/alpaca.py +727 -63
  67. ccxt/async_support/ascendex.py +396 -249
  68. ccxt/async_support/base/exchange.py +531 -155
  69. ccxt/async_support/base/ws/aiohttp_client.py +28 -5
  70. ccxt/async_support/base/ws/cache.py +3 -2
  71. ccxt/async_support/base/ws/client.py +26 -5
  72. ccxt/async_support/base/ws/fast_client.py +4 -3
  73. ccxt/async_support/base/ws/functions.py +1 -1
  74. ccxt/async_support/base/ws/future.py +40 -31
  75. ccxt/async_support/base/ws/order_book_side.py +3 -0
  76. ccxt/async_support/bequant.py +1 -1
  77. ccxt/async_support/bigone.py +329 -202
  78. ccxt/async_support/binance.py +3030 -1087
  79. ccxt/async_support/binancecoinm.py +2 -1
  80. ccxt/async_support/binanceus.py +12 -1
  81. ccxt/async_support/binanceusdm.py +3 -1
  82. ccxt/async_support/bingx.py +3205 -937
  83. ccxt/async_support/bit2c.py +119 -38
  84. ccxt/async_support/bitbank.py +215 -76
  85. ccxt/async_support/bitbns.py +124 -53
  86. ccxt/async_support/bitfinex.py +3236 -1078
  87. ccxt/async_support/bitfinex1.py +1711 -0
  88. ccxt/async_support/bitflyer.py +238 -49
  89. ccxt/async_support/bitget.py +1525 -573
  90. ccxt/async_support/bithumb.py +199 -65
  91. ccxt/async_support/bitmart.py +1320 -435
  92. ccxt/async_support/bitmex.py +308 -111
  93. ccxt/async_support/bitopro.py +256 -96
  94. ccxt/async_support/bitrue.py +365 -233
  95. ccxt/async_support/bitso.py +201 -89
  96. ccxt/async_support/bitstamp.py +438 -269
  97. ccxt/async_support/bitteam.py +179 -73
  98. ccxt/async_support/bitvavo.py +180 -70
  99. ccxt/async_support/bl3p.py +92 -25
  100. ccxt/async_support/blockchaincom.py +193 -79
  101. ccxt/async_support/blofin.py +392 -148
  102. ccxt/async_support/btcalpha.py +161 -55
  103. ccxt/async_support/btcbox.py +250 -34
  104. ccxt/async_support/btcmarkets.py +232 -85
  105. ccxt/async_support/btcturk.py +159 -60
  106. ccxt/async_support/bybit.py +2231 -1193
  107. ccxt/async_support/cex.py +1409 -1329
  108. ccxt/async_support/coinbase.py +1454 -287
  109. ccxt/async_support/coinbaseadvanced.py +17 -0
  110. ccxt/async_support/{coinbasepro.py → coinbaseexchange.py} +233 -99
  111. ccxt/async_support/coinbaseinternational.py +428 -88
  112. ccxt/async_support/coincatch.py +5152 -0
  113. ccxt/async_support/coincheck.py +121 -38
  114. ccxt/async_support/coinex.py +4020 -3339
  115. ccxt/async_support/coinlist.py +273 -116
  116. ccxt/async_support/coinmate.py +204 -97
  117. ccxt/async_support/coinmetro.py +203 -110
  118. ccxt/async_support/coinone.py +142 -68
  119. ccxt/async_support/coinsph.py +223 -97
  120. ccxt/async_support/coinspot.py +137 -62
  121. ccxt/async_support/cryptocom.py +515 -185
  122. ccxt/async_support/currencycom.py +203 -85
  123. ccxt/async_support/defx.py +2066 -0
  124. ccxt/async_support/delta.py +404 -109
  125. ccxt/async_support/deribit.py +639 -323
  126. ccxt/async_support/digifinex.py +465 -233
  127. ccxt/async_support/ellipx.py +1887 -0
  128. ccxt/async_support/exmo.py +317 -128
  129. ccxt/async_support/gate.py +1472 -463
  130. ccxt/async_support/gemini.py +206 -84
  131. ccxt/async_support/hashkey.py +4164 -0
  132. ccxt/async_support/hitbtc.py +433 -178
  133. ccxt/async_support/hollaex.py +207 -83
  134. ccxt/async_support/htx.py +1095 -563
  135. ccxt/async_support/huobijp.py +178 -56
  136. ccxt/async_support/hyperliquid.py +1678 -292
  137. ccxt/async_support/idex.py +219 -95
  138. ccxt/async_support/independentreserve.py +300 -31
  139. ccxt/async_support/indodax.py +226 -62
  140. ccxt/async_support/kraken.py +871 -354
  141. ccxt/async_support/krakenfutures.py +324 -100
  142. ccxt/async_support/kucoin.py +917 -357
  143. ccxt/async_support/kucoinfutures.py +1004 -149
  144. ccxt/async_support/kuna.py +198 -107
  145. ccxt/async_support/latoken.py +199 -79
  146. ccxt/async_support/lbank.py +360 -113
  147. ccxt/async_support/luno.py +185 -62
  148. ccxt/async_support/lykke.py +168 -55
  149. ccxt/async_support/mercado.py +101 -29
  150. ccxt/async_support/mexc.py +995 -429
  151. ccxt/async_support/myokx.py +53 -0
  152. ccxt/async_support/ndax.py +234 -82
  153. ccxt/async_support/novadax.py +195 -75
  154. ccxt/async_support/oceanex.py +244 -59
  155. ccxt/async_support/okcoin.py +301 -165
  156. ccxt/async_support/okx.py +1776 -454
  157. ccxt/async_support/onetrading.py +198 -414
  158. ccxt/async_support/oxfun.py +2898 -0
  159. ccxt/async_support/p2b.py +142 -52
  160. ccxt/async_support/paradex.py +2085 -0
  161. ccxt/async_support/paymium.py +56 -32
  162. ccxt/async_support/phemex.py +572 -196
  163. ccxt/async_support/poloniex.py +218 -95
  164. ccxt/async_support/poloniexfutures.py +260 -92
  165. ccxt/async_support/probit.py +143 -110
  166. ccxt/async_support/timex.py +123 -70
  167. ccxt/async_support/tokocrypto.py +129 -93
  168. ccxt/async_support/tradeogre.py +39 -25
  169. ccxt/async_support/upbit.py +322 -113
  170. ccxt/async_support/vertex.py +2983 -0
  171. ccxt/async_support/wavesexchange.py +227 -173
  172. ccxt/async_support/wazirx.py +145 -65
  173. ccxt/async_support/whitebit.py +533 -138
  174. ccxt/async_support/woo.py +1137 -296
  175. ccxt/async_support/woofipro.py +2716 -0
  176. ccxt/async_support/xt.py +4628 -0
  177. ccxt/async_support/yobit.py +160 -92
  178. ccxt/async_support/zaif.py +80 -33
  179. ccxt/async_support/zonda.py +140 -69
  180. ccxt/base/errors.py +51 -20
  181. ccxt/base/exchange.py +1722 -480
  182. ccxt/base/precise.py +10 -0
  183. ccxt/base/types.py +223 -4
  184. ccxt/bequant.py +1 -1
  185. ccxt/bigone.py +329 -202
  186. ccxt/binance.py +3030 -1087
  187. ccxt/binancecoinm.py +2 -1
  188. ccxt/binanceus.py +12 -1
  189. ccxt/binanceusdm.py +3 -1
  190. ccxt/bingx.py +3205 -937
  191. ccxt/bit2c.py +119 -38
  192. ccxt/bitbank.py +215 -76
  193. ccxt/bitbns.py +124 -53
  194. ccxt/bitfinex.py +3235 -1078
  195. ccxt/bitfinex1.py +1710 -0
  196. ccxt/bitflyer.py +238 -49
  197. ccxt/bitget.py +1525 -573
  198. ccxt/bithumb.py +198 -65
  199. ccxt/bitmart.py +1320 -435
  200. ccxt/bitmex.py +308 -111
  201. ccxt/bitopro.py +256 -96
  202. ccxt/bitrue.py +365 -233
  203. ccxt/bitso.py +201 -89
  204. ccxt/bitstamp.py +438 -269
  205. ccxt/bitteam.py +179 -73
  206. ccxt/bitvavo.py +180 -70
  207. ccxt/bl3p.py +92 -25
  208. ccxt/blockchaincom.py +193 -79
  209. ccxt/blofin.py +392 -148
  210. ccxt/btcalpha.py +161 -55
  211. ccxt/btcbox.py +250 -34
  212. ccxt/btcmarkets.py +232 -85
  213. ccxt/btcturk.py +159 -60
  214. ccxt/bybit.py +2231 -1193
  215. ccxt/cex.py +1408 -1329
  216. ccxt/coinbase.py +1454 -287
  217. ccxt/coinbaseadvanced.py +17 -0
  218. ccxt/{coinbasepro.py → coinbaseexchange.py} +233 -99
  219. ccxt/coinbaseinternational.py +428 -88
  220. ccxt/coincatch.py +5152 -0
  221. ccxt/coincheck.py +121 -38
  222. ccxt/coinex.py +4020 -3339
  223. ccxt/coinlist.py +273 -116
  224. ccxt/coinmate.py +204 -97
  225. ccxt/coinmetro.py +203 -110
  226. ccxt/coinone.py +142 -68
  227. ccxt/coinsph.py +223 -97
  228. ccxt/coinspot.py +137 -62
  229. ccxt/cryptocom.py +515 -185
  230. ccxt/currencycom.py +203 -85
  231. ccxt/defx.py +2065 -0
  232. ccxt/delta.py +404 -109
  233. ccxt/deribit.py +639 -323
  234. ccxt/digifinex.py +465 -233
  235. ccxt/ellipx.py +1887 -0
  236. ccxt/exmo.py +317 -128
  237. ccxt/gate.py +1472 -463
  238. ccxt/gemini.py +206 -84
  239. ccxt/hashkey.py +4164 -0
  240. ccxt/hitbtc.py +433 -178
  241. ccxt/hollaex.py +207 -83
  242. ccxt/htx.py +1095 -563
  243. ccxt/huobijp.py +178 -56
  244. ccxt/hyperliquid.py +1677 -292
  245. ccxt/idex.py +219 -95
  246. ccxt/independentreserve.py +299 -31
  247. ccxt/indodax.py +226 -62
  248. ccxt/kraken.py +871 -354
  249. ccxt/krakenfutures.py +324 -100
  250. ccxt/kucoin.py +917 -357
  251. ccxt/kucoinfutures.py +1004 -149
  252. ccxt/kuna.py +198 -107
  253. ccxt/latoken.py +199 -79
  254. ccxt/lbank.py +360 -113
  255. ccxt/luno.py +185 -62
  256. ccxt/lykke.py +168 -55
  257. ccxt/mercado.py +101 -29
  258. ccxt/mexc.py +994 -429
  259. ccxt/myokx.py +53 -0
  260. ccxt/ndax.py +234 -82
  261. ccxt/novadax.py +195 -75
  262. ccxt/oceanex.py +244 -59
  263. ccxt/okcoin.py +301 -165
  264. ccxt/okx.py +1776 -454
  265. ccxt/onetrading.py +198 -414
  266. ccxt/oxfun.py +2897 -0
  267. ccxt/p2b.py +142 -52
  268. ccxt/paradex.py +2085 -0
  269. ccxt/paymium.py +56 -32
  270. ccxt/phemex.py +572 -196
  271. ccxt/poloniex.py +218 -95
  272. ccxt/poloniexfutures.py +260 -92
  273. ccxt/pro/__init__.py +29 -5
  274. ccxt/pro/alpaca.py +32 -17
  275. ccxt/pro/ascendex.py +62 -14
  276. ccxt/pro/bequant.py +4 -0
  277. ccxt/pro/binance.py +1596 -329
  278. ccxt/pro/binancecoinm.py +1 -0
  279. ccxt/pro/binanceus.py +2 -9
  280. ccxt/pro/binanceusdm.py +2 -0
  281. ccxt/pro/bingx.py +527 -134
  282. ccxt/pro/bitcoincom.py +4 -1
  283. ccxt/pro/bitfinex.py +731 -266
  284. ccxt/pro/bitfinex1.py +635 -0
  285. ccxt/pro/bitget.py +726 -357
  286. ccxt/pro/bithumb.py +380 -0
  287. ccxt/pro/bitmart.py +143 -39
  288. ccxt/pro/bitmex.py +199 -40
  289. ccxt/pro/bitopro.py +25 -13
  290. ccxt/pro/bitrue.py +31 -32
  291. ccxt/pro/bitstamp.py +7 -6
  292. ccxt/pro/bitvavo.py +203 -81
  293. ccxt/pro/blockchaincom.py +30 -17
  294. ccxt/pro/blofin.py +692 -0
  295. ccxt/pro/bybit.py +791 -82
  296. ccxt/pro/cex.py +99 -51
  297. ccxt/pro/coinbase.py +220 -30
  298. ccxt/{async_support/hitbtc3.py → pro/coinbaseadvanced.py} +5 -5
  299. ccxt/pro/{coinbasepro.py → coinbaseexchange.py} +19 -19
  300. ccxt/pro/coinbaseinternational.py +193 -30
  301. ccxt/pro/coincatch.py +1464 -0
  302. ccxt/pro/coincheck.py +11 -6
  303. ccxt/pro/coinex.py +965 -665
  304. ccxt/pro/coinone.py +17 -10
  305. ccxt/pro/cryptocom.py +446 -66
  306. ccxt/pro/currencycom.py +11 -10
  307. ccxt/pro/defx.py +832 -0
  308. ccxt/pro/deribit.py +167 -31
  309. ccxt/pro/exmo.py +252 -20
  310. ccxt/pro/gate.py +729 -64
  311. ccxt/pro/gemini.py +44 -26
  312. ccxt/pro/hashkey.py +802 -0
  313. ccxt/pro/hitbtc.py +208 -103
  314. ccxt/pro/hollaex.py +25 -9
  315. ccxt/pro/htx.py +83 -39
  316. ccxt/pro/huobijp.py +17 -16
  317. ccxt/pro/hyperliquid.py +502 -31
  318. ccxt/pro/idex.py +28 -13
  319. ccxt/pro/independentreserve.py +21 -16
  320. ccxt/pro/kraken.py +298 -51
  321. ccxt/pro/krakenfutures.py +166 -75
  322. ccxt/pro/kucoin.py +395 -77
  323. ccxt/pro/kucoinfutures.py +400 -99
  324. ccxt/pro/lbank.py +52 -31
  325. ccxt/pro/luno.py +12 -10
  326. ccxt/pro/mexc.py +400 -50
  327. ccxt/pro/myokx.py +28 -0
  328. ccxt/pro/ndax.py +25 -12
  329. ccxt/pro/okcoin.py +28 -9
  330. ccxt/pro/okx.py +935 -124
  331. ccxt/pro/onetrading.py +41 -24
  332. ccxt/pro/oxfun.py +1054 -0
  333. ccxt/pro/p2b.py +100 -24
  334. ccxt/pro/paradex.py +352 -0
  335. ccxt/pro/phemex.py +92 -33
  336. ccxt/pro/poloniex.py +128 -49
  337. ccxt/pro/poloniexfutures.py +53 -32
  338. ccxt/pro/probit.py +92 -85
  339. ccxt/pro/upbit.py +401 -8
  340. ccxt/pro/vertex.py +943 -0
  341. ccxt/pro/wazirx.py +46 -28
  342. ccxt/pro/whitebit.py +65 -12
  343. ccxt/pro/woo.py +437 -65
  344. ccxt/pro/woofipro.py +1271 -0
  345. ccxt/pro/xt.py +1067 -0
  346. ccxt/probit.py +143 -110
  347. ccxt/static_dependencies/__init__.py +1 -1
  348. ccxt/static_dependencies/lark/__init__.py +38 -0
  349. ccxt/static_dependencies/lark/__pyinstaller/__init__.py +6 -0
  350. ccxt/static_dependencies/lark/__pyinstaller/hook-lark.py +14 -0
  351. ccxt/static_dependencies/lark/ast_utils.py +59 -0
  352. ccxt/static_dependencies/lark/common.py +86 -0
  353. ccxt/static_dependencies/lark/exceptions.py +292 -0
  354. ccxt/static_dependencies/lark/grammar.py +130 -0
  355. ccxt/static_dependencies/lark/grammars/__init__.py +0 -0
  356. ccxt/static_dependencies/lark/indenter.py +143 -0
  357. ccxt/static_dependencies/lark/lark.py +658 -0
  358. ccxt/static_dependencies/lark/lexer.py +678 -0
  359. ccxt/static_dependencies/lark/load_grammar.py +1428 -0
  360. ccxt/static_dependencies/lark/parse_tree_builder.py +391 -0
  361. ccxt/static_dependencies/lark/parser_frontends.py +257 -0
  362. ccxt/static_dependencies/lark/parsers/__init__.py +0 -0
  363. ccxt/static_dependencies/lark/parsers/cyk.py +340 -0
  364. ccxt/static_dependencies/lark/parsers/earley.py +314 -0
  365. ccxt/static_dependencies/lark/parsers/earley_common.py +42 -0
  366. ccxt/static_dependencies/lark/parsers/earley_forest.py +801 -0
  367. ccxt/static_dependencies/lark/parsers/grammar_analysis.py +203 -0
  368. ccxt/static_dependencies/lark/parsers/lalr_analysis.py +332 -0
  369. ccxt/static_dependencies/lark/parsers/lalr_interactive_parser.py +158 -0
  370. ccxt/static_dependencies/lark/parsers/lalr_parser.py +122 -0
  371. ccxt/static_dependencies/lark/parsers/lalr_parser_state.py +110 -0
  372. ccxt/static_dependencies/lark/parsers/xearley.py +165 -0
  373. ccxt/static_dependencies/lark/py.typed +0 -0
  374. ccxt/static_dependencies/lark/reconstruct.py +107 -0
  375. ccxt/static_dependencies/lark/tools/__init__.py +70 -0
  376. ccxt/static_dependencies/lark/tools/nearley.py +202 -0
  377. ccxt/static_dependencies/lark/tools/serialize.py +32 -0
  378. ccxt/static_dependencies/lark/tools/standalone.py +196 -0
  379. ccxt/static_dependencies/lark/tree.py +267 -0
  380. ccxt/static_dependencies/lark/tree_matcher.py +186 -0
  381. ccxt/static_dependencies/lark/tree_templates.py +180 -0
  382. ccxt/static_dependencies/lark/utils.py +343 -0
  383. ccxt/static_dependencies/lark/visitors.py +596 -0
  384. ccxt/static_dependencies/marshmallow/__init__.py +81 -0
  385. ccxt/static_dependencies/marshmallow/base.py +65 -0
  386. ccxt/static_dependencies/marshmallow/class_registry.py +94 -0
  387. ccxt/static_dependencies/marshmallow/decorators.py +231 -0
  388. ccxt/static_dependencies/marshmallow/error_store.py +60 -0
  389. ccxt/static_dependencies/marshmallow/exceptions.py +71 -0
  390. ccxt/static_dependencies/marshmallow/fields.py +2114 -0
  391. ccxt/static_dependencies/marshmallow/orderedset.py +89 -0
  392. ccxt/static_dependencies/marshmallow/py.typed +0 -0
  393. ccxt/static_dependencies/marshmallow/schema.py +1228 -0
  394. ccxt/static_dependencies/marshmallow/types.py +12 -0
  395. ccxt/static_dependencies/marshmallow/utils.py +378 -0
  396. ccxt/static_dependencies/marshmallow/validate.py +678 -0
  397. ccxt/static_dependencies/marshmallow/warnings.py +2 -0
  398. ccxt/static_dependencies/marshmallow_dataclass/__init__.py +1047 -0
  399. ccxt/static_dependencies/marshmallow_dataclass/collection_field.py +51 -0
  400. ccxt/static_dependencies/marshmallow_dataclass/lazy_class_attribute.py +45 -0
  401. ccxt/static_dependencies/marshmallow_dataclass/mypy.py +71 -0
  402. ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
  403. ccxt/static_dependencies/marshmallow_dataclass/typing.py +14 -0
  404. ccxt/static_dependencies/marshmallow_dataclass/union_field.py +82 -0
  405. ccxt/static_dependencies/marshmallow_oneofschema/__init__.py +1 -0
  406. ccxt/static_dependencies/marshmallow_oneofschema/one_of_schema.py +193 -0
  407. ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
  408. ccxt/static_dependencies/starknet/__init__.py +0 -0
  409. ccxt/static_dependencies/starknet/cairo/__init__.py +0 -0
  410. ccxt/static_dependencies/starknet/cairo/data_types.py +123 -0
  411. ccxt/static_dependencies/starknet/cairo/deprecated_parse/__init__.py +0 -0
  412. ccxt/static_dependencies/starknet/cairo/deprecated_parse/cairo_types.py +77 -0
  413. ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser.py +46 -0
  414. ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser_transformer.py +138 -0
  415. ccxt/static_dependencies/starknet/cairo/felt.py +64 -0
  416. ccxt/static_dependencies/starknet/cairo/type_parser.py +121 -0
  417. ccxt/static_dependencies/starknet/cairo/v1/__init__.py +0 -0
  418. ccxt/static_dependencies/starknet/cairo/v1/type_parser.py +59 -0
  419. ccxt/static_dependencies/starknet/cairo/v2/__init__.py +0 -0
  420. ccxt/static_dependencies/starknet/cairo/v2/type_parser.py +77 -0
  421. ccxt/static_dependencies/starknet/ccxt_utils.py +7 -0
  422. ccxt/static_dependencies/starknet/common.py +15 -0
  423. ccxt/static_dependencies/starknet/constants.py +39 -0
  424. ccxt/static_dependencies/starknet/hash/__init__.py +0 -0
  425. ccxt/static_dependencies/starknet/hash/address.py +79 -0
  426. ccxt/static_dependencies/starknet/hash/compiled_class_hash_objects.py +111 -0
  427. ccxt/static_dependencies/starknet/hash/selector.py +16 -0
  428. ccxt/static_dependencies/starknet/hash/storage.py +12 -0
  429. ccxt/static_dependencies/starknet/hash/utils.py +78 -0
  430. ccxt/static_dependencies/starknet/models/__init__.py +0 -0
  431. ccxt/static_dependencies/starknet/models/typed_data.py +45 -0
  432. ccxt/static_dependencies/starknet/serialization/__init__.py +24 -0
  433. ccxt/static_dependencies/starknet/serialization/_calldata_reader.py +40 -0
  434. ccxt/static_dependencies/starknet/serialization/_context.py +142 -0
  435. ccxt/static_dependencies/starknet/serialization/data_serializers/__init__.py +10 -0
  436. ccxt/static_dependencies/starknet/serialization/data_serializers/_common.py +82 -0
  437. ccxt/static_dependencies/starknet/serialization/data_serializers/array_serializer.py +43 -0
  438. ccxt/static_dependencies/starknet/serialization/data_serializers/bool_serializer.py +37 -0
  439. ccxt/static_dependencies/starknet/serialization/data_serializers/byte_array_serializer.py +66 -0
  440. ccxt/static_dependencies/starknet/serialization/data_serializers/cairo_data_serializer.py +71 -0
  441. ccxt/static_dependencies/starknet/serialization/data_serializers/enum_serializer.py +71 -0
  442. ccxt/static_dependencies/starknet/serialization/data_serializers/felt_serializer.py +50 -0
  443. ccxt/static_dependencies/starknet/serialization/data_serializers/named_tuple_serializer.py +58 -0
  444. ccxt/static_dependencies/starknet/serialization/data_serializers/option_serializer.py +43 -0
  445. ccxt/static_dependencies/starknet/serialization/data_serializers/output_serializer.py +40 -0
  446. ccxt/static_dependencies/starknet/serialization/data_serializers/payload_serializer.py +72 -0
  447. ccxt/static_dependencies/starknet/serialization/data_serializers/struct_serializer.py +36 -0
  448. ccxt/static_dependencies/starknet/serialization/data_serializers/tuple_serializer.py +36 -0
  449. ccxt/static_dependencies/starknet/serialization/data_serializers/uint256_serializer.py +76 -0
  450. ccxt/static_dependencies/starknet/serialization/data_serializers/uint_serializer.py +100 -0
  451. ccxt/static_dependencies/starknet/serialization/data_serializers/unit_serializer.py +32 -0
  452. ccxt/static_dependencies/starknet/serialization/errors.py +10 -0
  453. ccxt/static_dependencies/starknet/serialization/factory.py +229 -0
  454. ccxt/static_dependencies/starknet/serialization/function_serialization_adapter.py +110 -0
  455. ccxt/static_dependencies/starknet/serialization/tuple_dataclass.py +59 -0
  456. ccxt/static_dependencies/starknet/utils/__init__.py +0 -0
  457. ccxt/static_dependencies/starknet/utils/constructor_args_translator.py +86 -0
  458. ccxt/static_dependencies/starknet/utils/iterable.py +13 -0
  459. ccxt/static_dependencies/starknet/utils/schema.py +13 -0
  460. ccxt/static_dependencies/starknet/utils/typed_data.py +182 -0
  461. ccxt/static_dependencies/starkware/__init__.py +0 -0
  462. ccxt/static_dependencies/starkware/crypto/__init__.py +0 -0
  463. ccxt/static_dependencies/starkware/crypto/fast_pedersen_hash.py +50 -0
  464. ccxt/static_dependencies/starkware/crypto/math_utils.py +78 -0
  465. ccxt/static_dependencies/starkware/crypto/signature.py +2344 -0
  466. ccxt/static_dependencies/starkware/crypto/utils.py +63 -0
  467. ccxt/static_dependencies/sympy/__init__.py +0 -0
  468. ccxt/static_dependencies/sympy/core/__init__.py +0 -0
  469. ccxt/static_dependencies/sympy/core/intfunc.py +35 -0
  470. ccxt/static_dependencies/sympy/external/__init__.py +0 -0
  471. ccxt/static_dependencies/sympy/external/gmpy.py +345 -0
  472. ccxt/static_dependencies/sympy/external/importtools.py +187 -0
  473. ccxt/static_dependencies/sympy/external/ntheory.py +637 -0
  474. ccxt/static_dependencies/sympy/external/pythonmpq.py +341 -0
  475. ccxt/static_dependencies/typing_inspect/__init__.py +0 -0
  476. ccxt/static_dependencies/typing_inspect/typing_inspect.py +851 -0
  477. ccxt/test/{test_async.py → tests_async.py} +456 -391
  478. ccxt/test/tests_helpers.py +285 -0
  479. ccxt/test/tests_init.py +39 -0
  480. ccxt/test/{test_sync.py → tests_sync.py} +456 -393
  481. ccxt/timex.py +123 -70
  482. ccxt/tokocrypto.py +129 -93
  483. ccxt/tradeogre.py +39 -25
  484. ccxt/upbit.py +322 -113
  485. ccxt/vertex.py +2983 -0
  486. ccxt/wavesexchange.py +227 -173
  487. ccxt/wazirx.py +145 -65
  488. ccxt/whitebit.py +533 -138
  489. ccxt/woo.py +1137 -296
  490. ccxt/woofipro.py +2716 -0
  491. ccxt/xt.py +4627 -0
  492. ccxt/yobit.py +159 -92
  493. ccxt/zaif.py +80 -33
  494. ccxt/zonda.py +140 -69
  495. ccxt-4.4.49.dist-info/LICENSE.txt +21 -0
  496. ccxt-4.4.49.dist-info/METADATA +646 -0
  497. ccxt-4.4.49.dist-info/RECORD +669 -0
  498. {ccxt-4.2.77.dist-info → ccxt-4.4.49.dist-info}/WHEEL +1 -1
  499. ccxt/abstract/bitbay.py +0 -47
  500. ccxt/abstract/bitfinex2.py +0 -139
  501. ccxt/abstract/hitbtc3.py +0 -115
  502. ccxt/async_support/bitbay.py +0 -17
  503. ccxt/async_support/bitfinex2.py +0 -3496
  504. ccxt/async_support/flowbtc.py +0 -34
  505. ccxt/bitbay.py +0 -17
  506. ccxt/bitfinex2.py +0 -3496
  507. ccxt/flowbtc.py +0 -34
  508. ccxt/hitbtc3.py +0 -16
  509. ccxt/pro/bitfinex2.py +0 -1081
  510. ccxt/test/base/__init__.py +0 -28
  511. ccxt/test/base/test_account.py +0 -26
  512. ccxt/test/base/test_balance.py +0 -56
  513. ccxt/test/base/test_borrow_interest.py +0 -35
  514. ccxt/test/base/test_borrow_rate.py +0 -32
  515. ccxt/test/base/test_calculate_fee.py +0 -51
  516. ccxt/test/base/test_crypto.py +0 -127
  517. ccxt/test/base/test_currency.py +0 -76
  518. ccxt/test/base/test_datetime.py +0 -103
  519. ccxt/test/base/test_decimal_to_precision.py +0 -392
  520. ccxt/test/base/test_deep_extend.py +0 -68
  521. ccxt/test/base/test_deposit_withdrawal.py +0 -50
  522. ccxt/test/base/test_exchange_datetime_functions.py +0 -76
  523. ccxt/test/base/test_funding_rate_history.py +0 -29
  524. ccxt/test/base/test_last_price.py +0 -32
  525. ccxt/test/base/test_ledger_entry.py +0 -45
  526. ccxt/test/base/test_ledger_item.py +0 -48
  527. ccxt/test/base/test_leverage_tier.py +0 -33
  528. ccxt/test/base/test_margin_mode.py +0 -24
  529. ccxt/test/base/test_margin_modification.py +0 -35
  530. ccxt/test/base/test_market.py +0 -190
  531. ccxt/test/base/test_number.py +0 -411
  532. ccxt/test/base/test_ohlcv.py +0 -32
  533. ccxt/test/base/test_open_interest.py +0 -32
  534. ccxt/test/base/test_order.py +0 -64
  535. ccxt/test/base/test_order_book.py +0 -63
  536. ccxt/test/base/test_position.py +0 -60
  537. ccxt/test/base/test_shared_methods.py +0 -345
  538. ccxt/test/base/test_status.py +0 -24
  539. ccxt/test/base/test_throttle.py +0 -126
  540. ccxt/test/base/test_ticker.py +0 -86
  541. ccxt/test/base/test_trade.py +0 -47
  542. ccxt/test/base/test_trading_fee.py +0 -26
  543. ccxt/test/base/test_transaction.py +0 -39
  544. ccxt-4.2.77.dist-info/METADATA +0 -626
  545. ccxt-4.2.77.dist-info/RECORD +0 -534
  546. {ccxt-4.2.77.dist-info → ccxt-4.4.49.dist-info}/top_level.txt +0 -0
ccxt/hollaex.py CHANGED
@@ -6,15 +6,15 @@
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.hollaex import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
9
+ from ccxt.base.types import Balances, Currencies, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction
10
10
  from typing import List
11
+ from ccxt.base.errors import AuthenticationError
11
12
  from ccxt.base.errors import ArgumentsRequired
12
13
  from ccxt.base.errors import BadRequest
13
14
  from ccxt.base.errors import InsufficientFunds
14
15
  from ccxt.base.errors import OrderNotFound
15
16
  from ccxt.base.errors import OrderImmediatelyFillable
16
17
  from ccxt.base.errors import NetworkError
17
- from ccxt.base.errors import AuthenticationError
18
18
  from ccxt.base.decimal_to_precision import TICK_SIZE
19
19
  from ccxt.base.precise import Precise
20
20
 
@@ -59,6 +59,7 @@ class hollaex(Exchange, ImplicitAPI):
59
59
  'fetchCurrencies': True,
60
60
  'fetchDepositAddress': 'emulated',
61
61
  'fetchDepositAddresses': True,
62
+ 'fetchDepositAddressesByNetwork': False,
62
63
  'fetchDeposits': True,
63
64
  'fetchFundingHistory': False,
64
65
  'fetchFundingRate': False,
@@ -96,6 +97,7 @@ class hollaex(Exchange, ImplicitAPI):
96
97
  'fetchWithdrawal': True,
97
98
  'fetchWithdrawals': True,
98
99
  'reduceMargin': False,
100
+ 'sandbox': True,
99
101
  'setLeverage': False,
100
102
  'setMarginMode': False,
101
103
  'setPositionMode': False,
@@ -172,6 +174,79 @@ class hollaex(Exchange, ImplicitAPI):
172
174
  },
173
175
  },
174
176
  },
177
+ 'features': {
178
+ 'spot': {
179
+ 'sandbox': True,
180
+ 'createOrder': {
181
+ 'marginMode': False,
182
+ 'triggerPrice': True,
183
+ 'triggerPriceType': None,
184
+ 'triggerDirection': False,
185
+ 'stopLossPrice': False, # todo
186
+ 'takeProfitPrice': False, # todo
187
+ 'attachedStopLossTakeProfit': None,
188
+ 'timeInForce': {
189
+ 'IOC': False,
190
+ 'FOK': False,
191
+ 'PO': True,
192
+ 'GTD': False,
193
+ },
194
+ 'hedged': False,
195
+ 'selfTradePrevention': False,
196
+ 'trailing': False,
197
+ 'leverage': False,
198
+ 'marketBuyByCost': False,
199
+ 'marketBuyRequiresPrice': False,
200
+ 'iceberg': False,
201
+ },
202
+ 'createOrders': None,
203
+ 'fetchMyTrades': {
204
+ 'marginMode': False,
205
+ 'limit': 100,
206
+ 'daysBack': 100000,
207
+ 'untilDays': 100000, # todo implement
208
+ },
209
+ 'fetchOrder': {
210
+ 'marginMode': False,
211
+ 'trigger': False,
212
+ 'trailing': False,
213
+ },
214
+ 'fetchOpenOrders': {
215
+ 'marginMode': False,
216
+ 'limit': 100,
217
+ 'trigger': False,
218
+ 'trailing': False,
219
+ },
220
+ 'fetchOrders': {
221
+ 'marginMode': False,
222
+ 'limit': 100,
223
+ 'daysBack': 100000, # todo
224
+ 'untilDays': 100000, # todo
225
+ 'trigger': False,
226
+ 'trailing': False,
227
+ },
228
+ 'fetchClosedOrders': {
229
+ 'marginMode': False,
230
+ 'limit': 100,
231
+ 'daysBack': 100000, # todo
232
+ 'daysBackCanceled': 1, # todo
233
+ 'untilDays': 100000, # todo
234
+ 'trigger': False,
235
+ 'trailing': False,
236
+ },
237
+ 'fetchOHLCV': {
238
+ 'limit': 1000, # todo: no limit in request
239
+ },
240
+ },
241
+ 'swap': {
242
+ 'linear': None,
243
+ 'inverse': None,
244
+ },
245
+ 'future': {
246
+ 'linear': None,
247
+ 'inverse': None,
248
+ },
249
+ },
175
250
  'fees': {
176
251
  'trading': {
177
252
  'tierBased': True,
@@ -215,10 +290,12 @@ class hollaex(Exchange, ImplicitAPI):
215
290
  },
216
291
  })
217
292
 
218
- def fetch_markets(self, params={}):
293
+ def fetch_markets(self, params={}) -> List[Market]:
219
294
  """
220
295
  retrieves data on all markets for hollaex
221
- :see: https://apidocs.hollaex.com/#constants
296
+
297
+ https://apidocs.hollaex.com/#constants
298
+
222
299
  :param dict [params]: extra parameters specific to the exchange API endpoint
223
300
  :returns dict[]: an array of objects representing market data
224
301
  """
@@ -328,10 +405,12 @@ class hollaex(Exchange, ImplicitAPI):
328
405
  })
329
406
  return result
330
407
 
331
- def fetch_currencies(self, params={}):
408
+ def fetch_currencies(self, params={}) -> Currencies:
332
409
  """
333
410
  fetches all available currencies on an exchange
334
- :see: https://apidocs.hollaex.com/#constants
411
+
412
+ https://apidocs.hollaex.com/#constants
413
+
335
414
  :param dict [params]: extra parameters specific to the exchange API endpoint
336
415
  :returns dict: an associative dictionary of currencies
337
416
  """
@@ -347,7 +426,7 @@ class hollaex(Exchange, ImplicitAPI):
347
426
  # "verified":true,
348
427
  # "allow_deposit":true,
349
428
  # "allow_withdrawal":true,
350
- # "withdrawal_fee":0.0001,
429
+ # "withdrawal_fee":0.0002,
351
430
  # "min":0.001,
352
431
  # "max":100000,
353
432
  # "increment_unit":0.001,
@@ -373,7 +452,7 @@ class hollaex(Exchange, ImplicitAPI):
373
452
  #
374
453
  coins = self.safe_value(response, 'coins', {})
375
454
  keys = list(coins.keys())
376
- result = {}
455
+ result: dict = {}
377
456
  for i in range(0, len(keys)):
378
457
  key = keys[i]
379
458
  currency = coins[key]
@@ -415,7 +494,9 @@ class hollaex(Exchange, ImplicitAPI):
415
494
  def fetch_order_books(self, symbols: Strings = None, limit: Int = None, params={}):
416
495
  """
417
496
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data for multiple markets
418
- :see: https://apidocs.hollaex.com/#orderbooks
497
+
498
+ https://apidocs.hollaex.com/#orderbooks
499
+
419
500
  :param str[]|None symbols: not used by hollaex fetchOrderBooks()
420
501
  :param int [limit]: not used by hollaex fetchOrderBooks()
421
502
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -423,7 +504,7 @@ class hollaex(Exchange, ImplicitAPI):
423
504
  """
424
505
  self.load_markets()
425
506
  response = self.publicGetOrderbooks(params)
426
- result = {}
507
+ result: dict = {}
427
508
  marketIds = list(response.keys())
428
509
  for i in range(0, len(marketIds)):
429
510
  marketId = marketIds[i]
@@ -436,7 +517,9 @@ class hollaex(Exchange, ImplicitAPI):
436
517
  def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
437
518
  """
438
519
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
439
- :see: https://apidocs.hollaex.com/#orderbook
520
+
521
+ https://apidocs.hollaex.com/#orderbook
522
+
440
523
  :param str symbol: unified symbol of the market to fetch the order book for
441
524
  :param int [limit]: the maximum amount of order book entries to return
442
525
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -444,7 +527,7 @@ class hollaex(Exchange, ImplicitAPI):
444
527
  """
445
528
  self.load_markets()
446
529
  market = self.market(symbol)
447
- request = {
530
+ request: dict = {
448
531
  'symbol': market['id'],
449
532
  }
450
533
  response = self.publicGetOrderbook(self.extend(request, params))
@@ -474,14 +557,16 @@ class hollaex(Exchange, ImplicitAPI):
474
557
  def fetch_ticker(self, symbol: str, params={}) -> Ticker:
475
558
  """
476
559
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
477
- :see: https://apidocs.hollaex.com/#ticker
560
+
561
+ https://apidocs.hollaex.com/#ticker
562
+
478
563
  :param str symbol: unified symbol of the market to fetch the ticker for
479
564
  :param dict [params]: extra parameters specific to the exchange API endpoint
480
565
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
481
566
  """
482
567
  self.load_markets()
483
568
  market = self.market(symbol)
484
- request = {
569
+ request: dict = {
485
570
  'symbol': market['id'],
486
571
  }
487
572
  response = self.publicGetTicker(self.extend(request, params))
@@ -501,7 +586,9 @@ class hollaex(Exchange, ImplicitAPI):
501
586
  def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
502
587
  """
503
588
  fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
504
- :see: https://apidocs.hollaex.com/#tickers
589
+
590
+ https://apidocs.hollaex.com/#tickers
591
+
505
592
  :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
506
593
  :param dict [params]: extra parameters specific to the exchange API endpoint
507
594
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -526,19 +613,19 @@ class hollaex(Exchange, ImplicitAPI):
526
613
  #
527
614
  return self.parse_tickers(response, symbols)
528
615
 
529
- def parse_tickers(self, response, symbols: Strings = None, params={}):
530
- result = {}
531
- keys = list(response.keys())
616
+ def parse_tickers(self, tickers, symbols: Strings = None, params={}) -> Tickers:
617
+ result: dict = {}
618
+ keys = list(tickers.keys())
532
619
  for i in range(0, len(keys)):
533
620
  key = keys[i]
534
- ticker = response[key]
621
+ ticker = tickers[key]
535
622
  marketId = self.safe_string(ticker, 'symbol', key)
536
623
  market = self.safe_market(marketId, None, '-')
537
624
  symbol = market['symbol']
538
625
  result[symbol] = self.extend(self.parse_ticker(ticker, market), params)
539
626
  return self.filter_by_array_tickers(result, 'symbol', symbols)
540
627
 
541
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
628
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
542
629
  #
543
630
  # fetchTicker
544
631
  #
@@ -596,7 +683,9 @@ class hollaex(Exchange, ImplicitAPI):
596
683
  def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
597
684
  """
598
685
  get the list of most recent trades for a particular symbol
599
- :see: https://apidocs.hollaex.com/#trades
686
+
687
+ https://apidocs.hollaex.com/#trades
688
+
600
689
  :param str symbol: unified symbol of the market to fetch trades for
601
690
  :param int [since]: timestamp in ms of the earliest trade to fetch
602
691
  :param int [limit]: the maximum amount of trades to fetch
@@ -605,7 +694,7 @@ class hollaex(Exchange, ImplicitAPI):
605
694
  """
606
695
  self.load_markets()
607
696
  market = self.market(symbol)
608
- request = {
697
+ request: dict = {
609
698
  'symbol': market['id'],
610
699
  }
611
700
  response = self.publicGetTrades(self.extend(request, params))
@@ -622,10 +711,10 @@ class hollaex(Exchange, ImplicitAPI):
622
711
  # ]
623
712
  # }
624
713
  #
625
- trades = self.safe_value(response, market['id'], [])
714
+ trades = self.safe_list(response, market['id'], [])
626
715
  return self.parse_trades(trades, market, since, limit)
627
716
 
628
- def parse_trade(self, trade, market: Market = None) -> Trade:
717
+ def parse_trade(self, trade: dict, market: Market = None) -> Trade:
629
718
  #
630
719
  # fetchTrades(public)
631
720
  #
@@ -679,10 +768,12 @@ class hollaex(Exchange, ImplicitAPI):
679
768
  'fee': fee,
680
769
  }, market)
681
770
 
682
- def fetch_trading_fees(self, params={}):
771
+ def fetch_trading_fees(self, params={}) -> TradingFees:
683
772
  """
684
773
  fetch the trading fees for multiple markets
685
- :see: https://apidocs.hollaex.com/#tiers
774
+
775
+ https://apidocs.hollaex.com/#tiers
776
+
686
777
  :param dict [params]: extra parameters specific to the exchange API endpoint
687
778
  :returns dict: a dictionary of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>` indexed by market symbols
688
779
  """
@@ -720,7 +811,7 @@ class hollaex(Exchange, ImplicitAPI):
720
811
  fees = self.safe_value(firstTier, 'fees', {})
721
812
  makerFees = self.safe_value(fees, 'maker', {})
722
813
  takerFees = self.safe_value(fees, 'taker', {})
723
- result = {}
814
+ result: dict = {}
724
815
  for i in range(0, len(self.symbols)):
725
816
  symbol = self.symbols[i]
726
817
  market = self.market(symbol)
@@ -739,7 +830,9 @@ class hollaex(Exchange, ImplicitAPI):
739
830
  def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
740
831
  """
741
832
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
742
- :see: https://apidocs.hollaex.com/#chart
833
+
834
+ https://apidocs.hollaex.com/#chart
835
+
743
836
  :param str symbol: unified symbol of the market to fetch OHLCV data for
744
837
  :param str timeframe: the length of time each candle represents
745
838
  :param int [since]: timestamp in ms of the earliest candle to fetch
@@ -749,7 +842,7 @@ class hollaex(Exchange, ImplicitAPI):
749
842
  """
750
843
  self.load_markets()
751
844
  market = self.market(symbol)
752
- request = {
845
+ request: dict = {
753
846
  'symbol': market['id'],
754
847
  'resolution': self.safe_string(self.timeframes, timeframe, timeframe),
755
848
  }
@@ -808,7 +901,7 @@ class hollaex(Exchange, ImplicitAPI):
808
901
 
809
902
  def parse_balance(self, response) -> Balances:
810
903
  timestamp = self.parse8601(self.safe_string(response, 'updated_at'))
811
- result = {
904
+ result: dict = {
812
905
  'info': response,
813
906
  'timestamp': timestamp,
814
907
  'datetime': self.iso8601(timestamp),
@@ -826,7 +919,9 @@ class hollaex(Exchange, ImplicitAPI):
826
919
  def fetch_balance(self, params={}) -> Balances:
827
920
  """
828
921
  query for balance and get the amount of funds available for trading or funds locked in orders
829
- :see: https://apidocs.hollaex.com/#get-balance
922
+
923
+ https://apidocs.hollaex.com/#get-balance
924
+
830
925
  :param dict [params]: extra parameters specific to the exchange API endpoint
831
926
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
832
927
  """
@@ -849,14 +944,16 @@ class hollaex(Exchange, ImplicitAPI):
849
944
  def fetch_open_order(self, id: str, symbol: Str = None, params={}):
850
945
  """
851
946
  fetch an open order by it's id
852
- :see: https://apidocs.hollaex.com/#get-order
947
+
948
+ https://apidocs.hollaex.com/#get-order
949
+
853
950
  :param str id: order id
854
951
  :param str symbol: not used by hollaex fetchOpenOrder()
855
952
  :param dict [params]: extra parameters specific to the exchange API endpoint
856
953
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
857
954
  """
858
955
  self.load_markets()
859
- request = {
956
+ request: dict = {
860
957
  'order_id': id,
861
958
  }
862
959
  response = self.privateGetOrder(self.extend(request, params))
@@ -889,14 +986,16 @@ class hollaex(Exchange, ImplicitAPI):
889
986
  def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
890
987
  """
891
988
  fetch all unfilled currently open orders
892
- :see: https://apidocs.hollaex.com/#get-all-orders
989
+
990
+ https://apidocs.hollaex.com/#get-all-orders
991
+
893
992
  :param str symbol: unified market symbol
894
993
  :param int [since]: the earliest time in ms to fetch open orders for
895
994
  :param int [limit]: the maximum number of open orders structures to retrieve
896
995
  :param dict [params]: extra parameters specific to the exchange API endpoint
897
996
  :returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
898
997
  """
899
- request = {
998
+ request: dict = {
900
999
  'open': True,
901
1000
  }
902
1001
  return self.fetch_orders(symbol, since, limit, self.extend(request, params))
@@ -904,14 +1003,16 @@ class hollaex(Exchange, ImplicitAPI):
904
1003
  def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
905
1004
  """
906
1005
  fetches information on multiple closed orders made by the user
907
- :see: https://apidocs.hollaex.com/#get-all-orders
1006
+
1007
+ https://apidocs.hollaex.com/#get-all-orders
1008
+
908
1009
  :param str symbol: unified market symbol of the market orders were made in
909
1010
  :param int [since]: the earliest time in ms to fetch orders for
910
1011
  :param int [limit]: the maximum number of order structures to retrieve
911
1012
  :param dict [params]: extra parameters specific to the exchange API endpoint
912
1013
  :returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
913
1014
  """
914
- request = {
1015
+ request: dict = {
915
1016
  'open': False,
916
1017
  }
917
1018
  return self.fetch_orders(symbol, since, limit, self.extend(request, params))
@@ -919,13 +1020,16 @@ class hollaex(Exchange, ImplicitAPI):
919
1020
  def fetch_order(self, id: str, symbol: Str = None, params={}):
920
1021
  """
921
1022
  fetches information on an order made by the user
922
- :see: https://apidocs.hollaex.com/#get-order
1023
+
1024
+ https://apidocs.hollaex.com/#get-order
1025
+
1026
+ :param str id:
923
1027
  :param str symbol: unified symbol of the market the order was made in
924
1028
  :param dict [params]: extra parameters specific to the exchange API endpoint
925
1029
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
926
1030
  """
927
1031
  self.load_markets()
928
- request = {
1032
+ request: dict = {
929
1033
  'order_id': id,
930
1034
  }
931
1035
  response = self.privateGetOrder(self.extend(request, params))
@@ -959,7 +1063,9 @@ class hollaex(Exchange, ImplicitAPI):
959
1063
  def fetch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
960
1064
  """
961
1065
  fetches information on multiple orders made by the user
962
- :see: https://apidocs.hollaex.com/#get-all-orders
1066
+
1067
+ https://apidocs.hollaex.com/#get-all-orders
1068
+
963
1069
  :param str symbol: unified market symbol of the market orders were made in
964
1070
  :param int [since]: the earliest time in ms to fetch orders for
965
1071
  :param int [limit]: the maximum number of order structures to retrieve
@@ -968,7 +1074,7 @@ class hollaex(Exchange, ImplicitAPI):
968
1074
  """
969
1075
  self.load_markets()
970
1076
  market = None
971
- request = {
1077
+ request: dict = {
972
1078
  # 'symbol': market['id'],
973
1079
  # 'side': 'buy', # 'sell'
974
1080
  # 'status': 'new', # 'filled', 'pfilled', 'canceled'
@@ -1017,11 +1123,11 @@ class hollaex(Exchange, ImplicitAPI):
1017
1123
  # ]
1018
1124
  # }
1019
1125
  #
1020
- data = self.safe_value(response, 'data', [])
1126
+ data = self.safe_list(response, 'data', [])
1021
1127
  return self.parse_orders(data, market, since, limit)
1022
1128
 
1023
- def parse_order_status(self, status):
1024
- statuses = {
1129
+ def parse_order_status(self, status: Str):
1130
+ statuses: dict = {
1025
1131
  'new': 'open',
1026
1132
  'pfilled': 'open',
1027
1133
  'filled': 'closed',
@@ -1029,7 +1135,7 @@ class hollaex(Exchange, ImplicitAPI):
1029
1135
  }
1030
1136
  return self.safe_string(statuses, status, status)
1031
1137
 
1032
- def parse_order(self, order, market: Market = None) -> Order:
1138
+ def parse_order(self, order: dict, market: Market = None) -> Order:
1033
1139
  #
1034
1140
  # createOrder, fetchOpenOrder, fetchOpenOrders
1035
1141
  #
@@ -1065,7 +1171,6 @@ class hollaex(Exchange, ImplicitAPI):
1065
1171
  type = self.safe_string(order, 'type')
1066
1172
  side = self.safe_string(order, 'side')
1067
1173
  price = self.safe_string(order, 'price')
1068
- stopPrice = self.safe_string(order, 'stop')
1069
1174
  amount = self.safe_string(order, 'size')
1070
1175
  filled = self.safe_string(order, 'filled')
1071
1176
  status = self.parse_order_status(self.safe_string(order, 'status'))
@@ -1084,8 +1189,7 @@ class hollaex(Exchange, ImplicitAPI):
1084
1189
  'postOnly': postOnly,
1085
1190
  'side': side,
1086
1191
  'price': price,
1087
- 'stopPrice': stopPrice,
1088
- 'triggerPrice': stopPrice,
1192
+ 'triggerPrice': self.safe_string(order, 'stop'),
1089
1193
  'amount': amount,
1090
1194
  'filled': filled,
1091
1195
  'remaining': None,
@@ -1099,12 +1203,14 @@ class hollaex(Exchange, ImplicitAPI):
1099
1203
  def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
1100
1204
  """
1101
1205
  create a trade order
1102
- :see: https://apidocs.hollaex.com/#create-order
1206
+
1207
+ https://apidocs.hollaex.com/#create-order
1208
+
1103
1209
  :param str symbol: unified symbol of the market to create an order in
1104
1210
  :param str type: 'market' or 'limit'
1105
1211
  :param str side: 'buy' or 'sell'
1106
1212
  :param float amount: how much of currency you want to trade in units of base currency
1107
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
1213
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1108
1214
  :param dict [params]: extra parameters specific to the exchange API endpoint
1109
1215
  :param float [params.triggerPrice]: the price at which a trigger order is triggered at
1110
1216
  :param bool [params.postOnly]: if True, the order will only be posted to the order book and not executed immediately
@@ -1113,7 +1219,7 @@ class hollaex(Exchange, ImplicitAPI):
1113
1219
  self.load_markets()
1114
1220
  market = self.market(symbol)
1115
1221
  convertedAmount = float(self.amount_to_precision(symbol, amount))
1116
- request = {
1222
+ request: dict = {
1117
1223
  'symbol': market['id'],
1118
1224
  'side': side,
1119
1225
  'size': self.normalize_number_if_needed(convertedAmount),
@@ -1121,7 +1227,7 @@ class hollaex(Exchange, ImplicitAPI):
1121
1227
  # 'stop': float(self.price_to_precision(symbol, stopPrice)),
1122
1228
  # 'meta': {}, # other options such
1123
1229
  }
1124
- stopPrice = self.safe_number_n(params, ['triggerPrice', 'stopPrice', 'stop'])
1230
+ triggerPrice = self.safe_number_n(params, ['triggerPrice', 'stopPrice', 'stop'])
1125
1231
  meta = self.safe_value(params, 'meta', {})
1126
1232
  exchangeSpecificParam = self.safe_bool(meta, 'post_only', False)
1127
1233
  isMarketOrder = type == 'market'
@@ -1129,8 +1235,8 @@ class hollaex(Exchange, ImplicitAPI):
1129
1235
  if not isMarketOrder:
1130
1236
  convertedPrice = float(self.price_to_precision(symbol, price))
1131
1237
  request['price'] = self.normalize_number_if_needed(convertedPrice)
1132
- if stopPrice is not None:
1133
- request['stop'] = self.normalize_number_if_needed(float(self.price_to_precision(symbol, stopPrice)))
1238
+ if triggerPrice is not None:
1239
+ request['stop'] = self.normalize_number_if_needed(float(self.price_to_precision(symbol, triggerPrice)))
1134
1240
  if postOnly:
1135
1241
  request['meta'] = {'post_only': True}
1136
1242
  params = self.omit(params, ['postOnly', 'timeInForce', 'stopPrice', 'triggerPrice', 'stop'])
@@ -1163,14 +1269,16 @@ class hollaex(Exchange, ImplicitAPI):
1163
1269
  def cancel_order(self, id: str, symbol: Str = None, params={}):
1164
1270
  """
1165
1271
  cancels an open order
1166
- :see: https://apidocs.hollaex.com/#cancel-order
1272
+
1273
+ https://apidocs.hollaex.com/#cancel-order
1274
+
1167
1275
  :param str id: order id
1168
1276
  :param str symbol: unified symbol of the market the order was made in
1169
1277
  :param dict [params]: extra parameters specific to the exchange API endpoint
1170
1278
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1171
1279
  """
1172
1280
  self.load_markets()
1173
- request = {
1281
+ request: dict = {
1174
1282
  'order_id': id,
1175
1283
  }
1176
1284
  response = self.privateDeleteOrder(self.extend(request, params))
@@ -1192,7 +1300,9 @@ class hollaex(Exchange, ImplicitAPI):
1192
1300
  def cancel_all_orders(self, symbol: Str = None, params={}):
1193
1301
  """
1194
1302
  cancel all open orders in a market
1195
- :see: https://apidocs.hollaex.com/#cancel-all-orders
1303
+
1304
+ https://apidocs.hollaex.com/#cancel-all-orders
1305
+
1196
1306
  :param str symbol: unified market symbol of the market to cancel orders in
1197
1307
  :param dict [params]: extra parameters specific to the exchange API endpoint
1198
1308
  :returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
@@ -1200,7 +1310,7 @@ class hollaex(Exchange, ImplicitAPI):
1200
1310
  if symbol is None:
1201
1311
  raise ArgumentsRequired(self.id + ' cancelAllOrders() requires a symbol argument')
1202
1312
  self.load_markets()
1203
- request = {}
1313
+ request: dict = {}
1204
1314
  market = None
1205
1315
  market = self.market(symbol)
1206
1316
  request['symbol'] = market['id']
@@ -1225,7 +1335,9 @@ class hollaex(Exchange, ImplicitAPI):
1225
1335
  def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
1226
1336
  """
1227
1337
  fetch all trades made by the user
1228
- :see: https://apidocs.hollaex.com/#get-trades
1338
+
1339
+ https://apidocs.hollaex.com/#get-trades
1340
+
1229
1341
  :param str symbol: unified market symbol
1230
1342
  :param int [since]: the earliest time in ms to fetch trades for
1231
1343
  :param int [limit]: the maximum number of trades structures to retrieve
@@ -1233,7 +1345,7 @@ class hollaex(Exchange, ImplicitAPI):
1233
1345
  :returns Trade[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
1234
1346
  """
1235
1347
  self.load_markets()
1236
- request = {
1348
+ request: dict = {
1237
1349
  # 'symbol': market['id'],
1238
1350
  # 'limit': 50, # default 50, max 100
1239
1351
  # 'page': 1, # page of data to retrieve
@@ -1266,10 +1378,10 @@ class hollaex(Exchange, ImplicitAPI):
1266
1378
  # ]
1267
1379
  # }
1268
1380
  #
1269
- data = self.safe_value(response, 'data', [])
1381
+ data = self.safe_list(response, 'data', [])
1270
1382
  return self.parse_trades(data, market, since, limit)
1271
1383
 
1272
- def parse_deposit_address(self, depositAddress, currency: Currency = None):
1384
+ def parse_deposit_address(self, depositAddress, currency: Currency = None) -> DepositAddress:
1273
1385
  #
1274
1386
  # {
1275
1387
  # "currency":"usdt",
@@ -1291,17 +1403,19 @@ class hollaex(Exchange, ImplicitAPI):
1291
1403
  currency = self.safe_currency(currencyId, currency)
1292
1404
  network = self.safe_string(depositAddress, 'network')
1293
1405
  return {
1406
+ 'info': depositAddress,
1294
1407
  'currency': currency['code'],
1408
+ 'network': network,
1295
1409
  'address': address,
1296
1410
  'tag': tag,
1297
- 'network': network,
1298
- 'info': depositAddress,
1299
1411
  }
1300
1412
 
1301
- def fetch_deposit_addresses(self, codes: List[str] = None, params={}):
1413
+ def fetch_deposit_addresses(self, codes: Strings = None, params={}) -> List[DepositAddress]:
1302
1414
  """
1303
1415
  fetch deposit addresses for multiple currencies and chain types
1304
- :see: https://apidocs.hollaex.com/#get-user
1416
+
1417
+ https://apidocs.hollaex.com/#get-user
1418
+
1305
1419
  :param str[]|None codes: list of unified currency codes, default is None
1306
1420
  :param dict [params]: extra parameters specific to the exchange API endpoint
1307
1421
  :returns dict: a list of `address structures <https://docs.ccxt.com/#/?id=address-structure>`
@@ -1362,7 +1476,9 @@ class hollaex(Exchange, ImplicitAPI):
1362
1476
  def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1363
1477
  """
1364
1478
  fetch all deposits made to an account
1365
- :see: https://apidocs.hollaex.com/#get-deposits
1479
+
1480
+ https://apidocs.hollaex.com/#get-deposits
1481
+
1366
1482
  :param str code: unified currency code
1367
1483
  :param int [since]: the earliest time in ms to fetch deposits for
1368
1484
  :param int [limit]: the maximum number of deposits structures to retrieve
@@ -1370,7 +1486,7 @@ class hollaex(Exchange, ImplicitAPI):
1370
1486
  :returns dict[]: a list of `transaction structures <https://docs.ccxt.com/#/?id=transaction-structure>`
1371
1487
  """
1372
1488
  self.load_markets()
1373
- request = {
1489
+ request: dict = {
1374
1490
  # 'currency': currency['id'],
1375
1491
  # 'limit': 50, # default 50, max 100
1376
1492
  # 'page': 1, # page of data to retrieve
@@ -1411,20 +1527,22 @@ class hollaex(Exchange, ImplicitAPI):
1411
1527
  # ]
1412
1528
  # }
1413
1529
  #
1414
- data = self.safe_value(response, 'data', [])
1530
+ data = self.safe_list(response, 'data', [])
1415
1531
  return self.parse_transactions(data, currency, since, limit)
1416
1532
 
1417
1533
  def fetch_withdrawal(self, id: str, code: Str = None, params={}):
1418
1534
  """
1419
1535
  fetch data on a currency withdrawal via the withdrawal id
1420
- :see: https://apidocs.hollaex.com/#get-withdrawals
1536
+
1537
+ https://apidocs.hollaex.com/#get-withdrawals
1538
+
1421
1539
  :param str id: withdrawal id
1422
1540
  :param str code: unified currency code of the currency withdrawn, default is None
1423
1541
  :param dict [params]: extra parameters specific to the exchange API endpoint
1424
1542
  :returns dict: a `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
1425
1543
  """
1426
1544
  self.load_markets()
1427
- request = {
1545
+ request: dict = {
1428
1546
  'transaction_id': id,
1429
1547
  }
1430
1548
  currency = None
@@ -1456,13 +1574,15 @@ class hollaex(Exchange, ImplicitAPI):
1456
1574
  # }
1457
1575
  #
1458
1576
  data = self.safe_value(response, 'data', [])
1459
- transaction = self.safe_value(data, 0, {})
1577
+ transaction = self.safe_dict(data, 0, {})
1460
1578
  return self.parse_transaction(transaction, currency)
1461
1579
 
1462
1580
  def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1463
1581
  """
1464
1582
  fetch all withdrawals made from an account
1465
- :see: https://apidocs.hollaex.com/#get-withdrawals
1583
+
1584
+ https://apidocs.hollaex.com/#get-withdrawals
1585
+
1466
1586
  :param str code: unified currency code
1467
1587
  :param int [since]: the earliest time in ms to fetch withdrawals for
1468
1588
  :param int [limit]: the maximum number of withdrawals structures to retrieve
@@ -1470,7 +1590,7 @@ class hollaex(Exchange, ImplicitAPI):
1470
1590
  :returns dict[]: a list of `transaction structures <https://docs.ccxt.com/#/?id=transaction-structure>`
1471
1591
  """
1472
1592
  self.load_markets()
1473
- request = {
1593
+ request: dict = {
1474
1594
  # 'currency': currency['id'],
1475
1595
  # 'limit': 50, # default 50, max 100
1476
1596
  # 'page': 1, # page of data to retrieve
@@ -1511,10 +1631,10 @@ class hollaex(Exchange, ImplicitAPI):
1511
1631
  # ]
1512
1632
  # }
1513
1633
  #
1514
- data = self.safe_value(response, 'data', [])
1634
+ data = self.safe_list(response, 'data', [])
1515
1635
  return self.parse_transactions(data, currency, since, limit)
1516
1636
 
1517
- def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
1637
+ def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
1518
1638
  #
1519
1639
  # fetchWithdrawals, fetchDeposits
1520
1640
  #
@@ -1609,10 +1729,12 @@ class hollaex(Exchange, ImplicitAPI):
1609
1729
  'fee': fee,
1610
1730
  }
1611
1731
 
1612
- def withdraw(self, code: str, amount: float, address, tag=None, params={}):
1732
+ def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
1613
1733
  """
1614
1734
  make a withdrawal
1615
- :see: https://apidocs.hollaex.com/#withdrawal
1735
+
1736
+ https://apidocs.hollaex.com/#withdrawal
1737
+
1616
1738
  :param str code: unified currency code
1617
1739
  :param float amount: the amount to withdraw
1618
1740
  :param str address: the address to withdraw to
@@ -1630,7 +1752,7 @@ class hollaex(Exchange, ImplicitAPI):
1630
1752
  if network is None:
1631
1753
  raise ArgumentsRequired(self.id + ' withdraw() requires a network parameter')
1632
1754
  params = self.omit(params, 'network')
1633
- request = {
1755
+ request: dict = {
1634
1756
  'currency': currency['id'],
1635
1757
  'amount': amount,
1636
1758
  'address': address,
@@ -1680,7 +1802,7 @@ class hollaex(Exchange, ImplicitAPI):
1680
1802
  # "owner_id":1
1681
1803
  # }
1682
1804
  #
1683
- result = {
1805
+ result: dict = {
1684
1806
  'info': fee,
1685
1807
  'withdraw': {
1686
1808
  'fee': None,
@@ -1716,7 +1838,9 @@ class hollaex(Exchange, ImplicitAPI):
1716
1838
  def fetch_deposit_withdraw_fees(self, codes: Strings = None, params={}):
1717
1839
  """
1718
1840
  fetch deposit and withdraw fees
1719
- :see: https://apidocs.hollaex.com/#constants
1841
+
1842
+ https://apidocs.hollaex.com/#constants
1843
+
1720
1844
  :param str[]|None codes: list of unified currency codes
1721
1845
  :param dict [params]: extra parameters specific to the exchange API endpoint
1722
1846
  :returns dict: a list of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>`
@@ -1757,7 +1881,7 @@ class hollaex(Exchange, ImplicitAPI):
1757
1881
  # "network":"https://api.hollaex.network"
1758
1882
  # }
1759
1883
  #
1760
- coins = self.safe_value(response, 'coins')
1884
+ coins = self.safe_list(response, 'coins')
1761
1885
  return self.parse_deposit_withdraw_fees(coins, codes, 'symbol')
1762
1886
 
1763
1887
  def normalize_number_if_needed(self, number):
@@ -1791,7 +1915,7 @@ class hollaex(Exchange, ImplicitAPI):
1791
1915
  headers['api-signature'] = signature
1792
1916
  return {'url': url, 'method': method, 'body': body, 'headers': headers}
1793
1917
 
1794
- def handle_errors(self, code, reason, url, method, headers, body, response, requestHeaders, requestBody):
1918
+ def handle_errors(self, code: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
1795
1919
  if response is None:
1796
1920
  return None
1797
1921
  if (code >= 400) and (code <= 503):