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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (546) hide show
  1. ccxt/__init__.py +36 -14
  2. ccxt/abstract/alpaca.py +4 -0
  3. ccxt/abstract/bigone.py +1 -1
  4. ccxt/abstract/binance.py +112 -48
  5. ccxt/abstract/binancecoinm.py +112 -48
  6. ccxt/abstract/binanceus.py +147 -83
  7. ccxt/abstract/binanceusdm.py +112 -48
  8. ccxt/abstract/bingx.py +133 -78
  9. ccxt/abstract/bitbank.py +5 -0
  10. ccxt/abstract/bitfinex.py +136 -65
  11. ccxt/abstract/bitfinex1.py +69 -0
  12. ccxt/abstract/bitflyer.py +1 -0
  13. ccxt/abstract/bitget.py +8 -1
  14. ccxt/abstract/bitmart.py +13 -1
  15. ccxt/abstract/bitopro.py +1 -0
  16. ccxt/abstract/bitpanda.py +0 -12
  17. ccxt/abstract/bitrue.py +3 -3
  18. ccxt/abstract/bitstamp.py +26 -3
  19. ccxt/abstract/blofin.py +24 -0
  20. ccxt/abstract/btcbox.py +1 -0
  21. ccxt/abstract/bybit.py +29 -14
  22. ccxt/abstract/cex.py +28 -29
  23. ccxt/abstract/coinbase.py +6 -0
  24. ccxt/abstract/coinbaseadvanced.py +94 -0
  25. ccxt/abstract/{coinbasepro.py → coinbaseexchange.py} +1 -0
  26. ccxt/abstract/coinbaseinternational.py +1 -1
  27. ccxt/abstract/coincatch.py +94 -0
  28. ccxt/abstract/coinex.py +233 -123
  29. ccxt/abstract/coinmetro.py +1 -0
  30. ccxt/abstract/cryptocom.py +14 -0
  31. ccxt/abstract/defx.py +69 -0
  32. ccxt/abstract/deribit.py +1 -0
  33. ccxt/abstract/digifinex.py +1 -0
  34. ccxt/abstract/ellipx.py +25 -0
  35. ccxt/abstract/gate.py +20 -0
  36. ccxt/abstract/gateio.py +20 -0
  37. ccxt/abstract/gemini.py +1 -0
  38. ccxt/abstract/hashkey.py +67 -0
  39. ccxt/abstract/hyperliquid.py +1 -1
  40. ccxt/abstract/independentreserve.py +6 -0
  41. ccxt/abstract/kraken.py +4 -3
  42. ccxt/abstract/krakenfutures.py +4 -0
  43. ccxt/abstract/kucoin.py +25 -0
  44. ccxt/abstract/kucoinfutures.py +35 -0
  45. ccxt/abstract/luno.py +2 -0
  46. ccxt/abstract/mexc.py +4 -0
  47. ccxt/abstract/myokx.py +340 -0
  48. ccxt/abstract/oceanex.py +5 -0
  49. ccxt/abstract/okx.py +30 -0
  50. ccxt/abstract/onetrading.py +0 -12
  51. ccxt/abstract/oxfun.py +34 -0
  52. ccxt/abstract/paradex.py +40 -0
  53. ccxt/abstract/phemex.py +1 -0
  54. ccxt/abstract/upbit.py +4 -0
  55. ccxt/abstract/vertex.py +19 -0
  56. ccxt/abstract/whitebit.py +31 -1
  57. ccxt/abstract/woo.py +6 -2
  58. ccxt/abstract/woofipro.py +119 -0
  59. ccxt/abstract/xt.py +153 -0
  60. ccxt/abstract/zonda.py +6 -0
  61. ccxt/ace.py +164 -60
  62. ccxt/alpaca.py +727 -63
  63. ccxt/ascendex.py +395 -249
  64. ccxt/async_support/__init__.py +36 -14
  65. ccxt/async_support/ace.py +164 -60
  66. ccxt/async_support/alpaca.py +727 -63
  67. ccxt/async_support/ascendex.py +396 -249
  68. ccxt/async_support/base/exchange.py +531 -155
  69. ccxt/async_support/base/ws/aiohttp_client.py +28 -5
  70. ccxt/async_support/base/ws/cache.py +3 -2
  71. ccxt/async_support/base/ws/client.py +26 -5
  72. ccxt/async_support/base/ws/fast_client.py +4 -3
  73. ccxt/async_support/base/ws/functions.py +1 -1
  74. ccxt/async_support/base/ws/future.py +40 -31
  75. ccxt/async_support/base/ws/order_book_side.py +3 -0
  76. ccxt/async_support/bequant.py +1 -1
  77. ccxt/async_support/bigone.py +329 -202
  78. ccxt/async_support/binance.py +3513 -1511
  79. ccxt/async_support/binancecoinm.py +2 -1
  80. ccxt/async_support/binanceus.py +12 -1
  81. ccxt/async_support/binanceusdm.py +3 -1
  82. ccxt/async_support/bingx.py +3105 -881
  83. ccxt/async_support/bit2c.py +119 -38
  84. ccxt/async_support/bitbank.py +215 -76
  85. ccxt/async_support/bitbns.py +124 -53
  86. ccxt/async_support/bitfinex.py +3236 -1078
  87. ccxt/async_support/bitfinex1.py +1711 -0
  88. ccxt/async_support/bitflyer.py +239 -50
  89. ccxt/async_support/bitget.py +1513 -563
  90. ccxt/async_support/bithumb.py +201 -67
  91. ccxt/async_support/bitmart.py +1320 -435
  92. ccxt/async_support/bitmex.py +308 -111
  93. ccxt/async_support/bitopro.py +256 -96
  94. ccxt/async_support/bitrue.py +365 -233
  95. ccxt/async_support/bitso.py +201 -89
  96. ccxt/async_support/bitstamp.py +438 -269
  97. ccxt/async_support/bitteam.py +179 -73
  98. ccxt/async_support/bitvavo.py +180 -70
  99. ccxt/async_support/bl3p.py +92 -25
  100. ccxt/async_support/blockchaincom.py +193 -79
  101. ccxt/async_support/blofin.py +403 -150
  102. ccxt/async_support/btcalpha.py +161 -55
  103. ccxt/async_support/btcbox.py +250 -34
  104. ccxt/async_support/btcmarkets.py +232 -85
  105. ccxt/async_support/btcturk.py +159 -60
  106. ccxt/async_support/bybit.py +2326 -1255
  107. ccxt/async_support/cex.py +1409 -1329
  108. ccxt/async_support/coinbase.py +1455 -288
  109. ccxt/async_support/coinbaseadvanced.py +17 -0
  110. ccxt/async_support/{coinbasepro.py → coinbaseexchange.py} +233 -99
  111. ccxt/async_support/coinbaseinternational.py +428 -88
  112. ccxt/async_support/coincatch.py +5152 -0
  113. ccxt/async_support/coincheck.py +121 -38
  114. ccxt/async_support/coinex.py +4020 -3339
  115. ccxt/async_support/coinlist.py +273 -116
  116. ccxt/async_support/coinmate.py +204 -97
  117. ccxt/async_support/coinmetro.py +203 -110
  118. ccxt/async_support/coinone.py +142 -68
  119. ccxt/async_support/coinsph.py +206 -89
  120. ccxt/async_support/coinspot.py +137 -62
  121. ccxt/async_support/cryptocom.py +515 -185
  122. ccxt/async_support/currencycom.py +203 -85
  123. ccxt/async_support/defx.py +2066 -0
  124. ccxt/async_support/delta.py +467 -158
  125. ccxt/async_support/deribit.py +558 -324
  126. ccxt/async_support/digifinex.py +340 -223
  127. ccxt/async_support/ellipx.py +1826 -0
  128. ccxt/async_support/exmo.py +259 -128
  129. ccxt/async_support/gate.py +1473 -464
  130. ccxt/async_support/gemini.py +206 -84
  131. ccxt/async_support/hashkey.py +4164 -0
  132. ccxt/async_support/hitbtc.py +334 -178
  133. ccxt/async_support/hollaex.py +134 -83
  134. ccxt/async_support/htx.py +1095 -563
  135. ccxt/async_support/huobijp.py +105 -56
  136. ccxt/async_support/hyperliquid.py +1634 -269
  137. ccxt/async_support/idex.py +148 -95
  138. ccxt/async_support/independentreserve.py +236 -31
  139. ccxt/async_support/indodax.py +165 -62
  140. ccxt/async_support/kraken.py +871 -354
  141. ccxt/async_support/krakenfutures.py +324 -100
  142. ccxt/async_support/kucoin.py +1050 -355
  143. ccxt/async_support/kucoinfutures.py +1004 -149
  144. ccxt/async_support/kuna.py +138 -106
  145. ccxt/async_support/latoken.py +135 -79
  146. ccxt/async_support/lbank.py +290 -113
  147. ccxt/async_support/luno.py +112 -62
  148. ccxt/async_support/lykke.py +104 -55
  149. ccxt/async_support/mercado.py +36 -29
  150. ccxt/async_support/mexc.py +995 -429
  151. ccxt/async_support/myokx.py +43 -0
  152. ccxt/async_support/ndax.py +163 -82
  153. ccxt/async_support/novadax.py +121 -75
  154. ccxt/async_support/oceanex.py +175 -59
  155. ccxt/async_support/okcoin.py +222 -163
  156. ccxt/async_support/okx.py +1777 -455
  157. ccxt/async_support/onetrading.py +132 -414
  158. ccxt/async_support/oxfun.py +2832 -0
  159. ccxt/async_support/p2b.py +79 -51
  160. ccxt/async_support/paradex.py +2017 -0
  161. ccxt/async_support/paymium.py +56 -32
  162. ccxt/async_support/phemex.py +572 -196
  163. ccxt/async_support/poloniex.py +218 -95
  164. ccxt/async_support/poloniexfutures.py +260 -92
  165. ccxt/async_support/probit.py +143 -110
  166. ccxt/async_support/timex.py +123 -70
  167. ccxt/async_support/tokocrypto.py +129 -93
  168. ccxt/async_support/tradeogre.py +39 -25
  169. ccxt/async_support/upbit.py +322 -113
  170. ccxt/async_support/vertex.py +2983 -0
  171. ccxt/async_support/wavesexchange.py +227 -173
  172. ccxt/async_support/wazirx.py +145 -65
  173. ccxt/async_support/whitebit.py +533 -138
  174. ccxt/async_support/woo.py +1155 -295
  175. ccxt/async_support/woofipro.py +2716 -0
  176. ccxt/async_support/xt.py +4628 -0
  177. ccxt/async_support/yobit.py +160 -92
  178. ccxt/async_support/zaif.py +80 -33
  179. ccxt/async_support/zonda.py +140 -69
  180. ccxt/base/errors.py +51 -20
  181. ccxt/base/exchange.py +1729 -482
  182. ccxt/base/precise.py +10 -0
  183. ccxt/base/types.py +223 -4
  184. ccxt/bequant.py +1 -1
  185. ccxt/bigone.py +329 -202
  186. ccxt/binance.py +3513 -1511
  187. ccxt/binancecoinm.py +2 -1
  188. ccxt/binanceus.py +12 -1
  189. ccxt/binanceusdm.py +3 -1
  190. ccxt/bingx.py +3105 -881
  191. ccxt/bit2c.py +119 -38
  192. ccxt/bitbank.py +215 -76
  193. ccxt/bitbns.py +124 -53
  194. ccxt/bitfinex.py +3235 -1078
  195. ccxt/bitfinex1.py +1710 -0
  196. ccxt/bitflyer.py +239 -50
  197. ccxt/bitget.py +1513 -563
  198. ccxt/bithumb.py +200 -67
  199. ccxt/bitmart.py +1320 -435
  200. ccxt/bitmex.py +308 -111
  201. ccxt/bitopro.py +256 -96
  202. ccxt/bitrue.py +365 -233
  203. ccxt/bitso.py +201 -89
  204. ccxt/bitstamp.py +438 -269
  205. ccxt/bitteam.py +179 -73
  206. ccxt/bitvavo.py +180 -70
  207. ccxt/bl3p.py +92 -25
  208. ccxt/blockchaincom.py +193 -79
  209. ccxt/blofin.py +403 -150
  210. ccxt/btcalpha.py +161 -55
  211. ccxt/btcbox.py +250 -34
  212. ccxt/btcmarkets.py +232 -85
  213. ccxt/btcturk.py +159 -60
  214. ccxt/bybit.py +2326 -1255
  215. ccxt/cex.py +1408 -1329
  216. ccxt/coinbase.py +1455 -288
  217. ccxt/coinbaseadvanced.py +17 -0
  218. ccxt/{coinbasepro.py → coinbaseexchange.py} +233 -99
  219. ccxt/coinbaseinternational.py +428 -88
  220. ccxt/coincatch.py +5152 -0
  221. ccxt/coincheck.py +121 -38
  222. ccxt/coinex.py +4020 -3339
  223. ccxt/coinlist.py +273 -116
  224. ccxt/coinmate.py +204 -97
  225. ccxt/coinmetro.py +203 -110
  226. ccxt/coinone.py +142 -68
  227. ccxt/coinsph.py +206 -89
  228. ccxt/coinspot.py +137 -62
  229. ccxt/cryptocom.py +515 -185
  230. ccxt/currencycom.py +203 -85
  231. ccxt/defx.py +2065 -0
  232. ccxt/delta.py +467 -158
  233. ccxt/deribit.py +558 -324
  234. ccxt/digifinex.py +340 -223
  235. ccxt/ellipx.py +1826 -0
  236. ccxt/exmo.py +259 -128
  237. ccxt/gate.py +1473 -464
  238. ccxt/gemini.py +206 -84
  239. ccxt/hashkey.py +4164 -0
  240. ccxt/hitbtc.py +334 -178
  241. ccxt/hollaex.py +134 -83
  242. ccxt/htx.py +1095 -563
  243. ccxt/huobijp.py +105 -56
  244. ccxt/hyperliquid.py +1633 -269
  245. ccxt/idex.py +148 -95
  246. ccxt/independentreserve.py +235 -31
  247. ccxt/indodax.py +165 -62
  248. ccxt/kraken.py +871 -354
  249. ccxt/krakenfutures.py +324 -100
  250. ccxt/kucoin.py +1050 -355
  251. ccxt/kucoinfutures.py +1004 -149
  252. ccxt/kuna.py +138 -106
  253. ccxt/latoken.py +135 -79
  254. ccxt/lbank.py +290 -113
  255. ccxt/luno.py +112 -62
  256. ccxt/lykke.py +104 -55
  257. ccxt/mercado.py +36 -29
  258. ccxt/mexc.py +994 -429
  259. ccxt/myokx.py +43 -0
  260. ccxt/ndax.py +163 -82
  261. ccxt/novadax.py +121 -75
  262. ccxt/oceanex.py +175 -59
  263. ccxt/okcoin.py +222 -163
  264. ccxt/okx.py +1777 -455
  265. ccxt/onetrading.py +132 -414
  266. ccxt/oxfun.py +2831 -0
  267. ccxt/p2b.py +79 -51
  268. ccxt/paradex.py +2017 -0
  269. ccxt/paymium.py +56 -32
  270. ccxt/phemex.py +572 -196
  271. ccxt/poloniex.py +218 -95
  272. ccxt/poloniexfutures.py +260 -92
  273. ccxt/pro/__init__.py +29 -5
  274. ccxt/pro/alpaca.py +32 -17
  275. ccxt/pro/ascendex.py +63 -15
  276. ccxt/pro/bequant.py +4 -0
  277. ccxt/pro/binance.py +1596 -329
  278. ccxt/pro/binancecoinm.py +1 -0
  279. ccxt/pro/binanceus.py +2 -9
  280. ccxt/pro/binanceusdm.py +2 -0
  281. ccxt/pro/bingx.py +527 -134
  282. ccxt/pro/bitcoincom.py +4 -1
  283. ccxt/pro/bitfinex.py +731 -266
  284. ccxt/pro/bitfinex1.py +635 -0
  285. ccxt/pro/bitget.py +726 -357
  286. ccxt/pro/bithumb.py +380 -0
  287. ccxt/pro/bitmart.py +138 -39
  288. ccxt/pro/bitmex.py +199 -40
  289. ccxt/pro/bitopro.py +25 -13
  290. ccxt/pro/bitrue.py +31 -32
  291. ccxt/pro/bitstamp.py +7 -6
  292. ccxt/pro/bitvavo.py +204 -82
  293. ccxt/pro/blockchaincom.py +30 -17
  294. ccxt/pro/blofin.py +692 -0
  295. ccxt/pro/bybit.py +791 -82
  296. ccxt/pro/cex.py +99 -51
  297. ccxt/pro/coinbase.py +220 -30
  298. ccxt/{async_support/hitbtc3.py → pro/coinbaseadvanced.py} +5 -5
  299. ccxt/pro/{coinbasepro.py → coinbaseexchange.py} +19 -19
  300. ccxt/pro/coinbaseinternational.py +193 -30
  301. ccxt/pro/coincatch.py +1464 -0
  302. ccxt/pro/coincheck.py +11 -6
  303. ccxt/pro/coinex.py +967 -661
  304. ccxt/pro/coinone.py +17 -10
  305. ccxt/pro/cryptocom.py +446 -66
  306. ccxt/pro/currencycom.py +11 -10
  307. ccxt/pro/defx.py +832 -0
  308. ccxt/pro/deribit.py +168 -32
  309. ccxt/pro/exmo.py +253 -21
  310. ccxt/pro/gate.py +729 -64
  311. ccxt/pro/gemini.py +44 -26
  312. ccxt/pro/hashkey.py +802 -0
  313. ccxt/pro/hitbtc.py +208 -103
  314. ccxt/pro/hollaex.py +25 -9
  315. ccxt/pro/htx.py +83 -39
  316. ccxt/pro/huobijp.py +17 -16
  317. ccxt/pro/hyperliquid.py +502 -31
  318. ccxt/pro/idex.py +28 -13
  319. ccxt/pro/independentreserve.py +21 -16
  320. ccxt/pro/kraken.py +298 -51
  321. ccxt/pro/krakenfutures.py +166 -75
  322. ccxt/pro/kucoin.py +395 -77
  323. ccxt/pro/kucoinfutures.py +400 -99
  324. ccxt/pro/lbank.py +52 -31
  325. ccxt/pro/luno.py +12 -10
  326. ccxt/pro/mexc.py +400 -50
  327. ccxt/pro/myokx.py +28 -0
  328. ccxt/pro/ndax.py +25 -12
  329. ccxt/pro/okcoin.py +28 -9
  330. ccxt/pro/okx.py +935 -124
  331. ccxt/pro/onetrading.py +41 -24
  332. ccxt/pro/oxfun.py +1054 -0
  333. ccxt/pro/p2b.py +100 -24
  334. ccxt/pro/paradex.py +352 -0
  335. ccxt/pro/phemex.py +93 -34
  336. ccxt/pro/poloniex.py +129 -50
  337. ccxt/pro/poloniexfutures.py +53 -32
  338. ccxt/pro/probit.py +93 -86
  339. ccxt/pro/upbit.py +401 -8
  340. ccxt/pro/vertex.py +943 -0
  341. ccxt/pro/wazirx.py +46 -28
  342. ccxt/pro/whitebit.py +65 -12
  343. ccxt/pro/woo.py +486 -70
  344. ccxt/pro/woofipro.py +1271 -0
  345. ccxt/pro/xt.py +1067 -0
  346. ccxt/probit.py +143 -110
  347. ccxt/static_dependencies/__init__.py +1 -1
  348. ccxt/static_dependencies/lark/__init__.py +38 -0
  349. ccxt/static_dependencies/lark/__pyinstaller/__init__.py +6 -0
  350. ccxt/static_dependencies/lark/__pyinstaller/hook-lark.py +14 -0
  351. ccxt/static_dependencies/lark/ast_utils.py +59 -0
  352. ccxt/static_dependencies/lark/common.py +86 -0
  353. ccxt/static_dependencies/lark/exceptions.py +292 -0
  354. ccxt/static_dependencies/lark/grammar.py +130 -0
  355. ccxt/static_dependencies/lark/grammars/__init__.py +0 -0
  356. ccxt/static_dependencies/lark/indenter.py +143 -0
  357. ccxt/static_dependencies/lark/lark.py +658 -0
  358. ccxt/static_dependencies/lark/lexer.py +678 -0
  359. ccxt/static_dependencies/lark/load_grammar.py +1428 -0
  360. ccxt/static_dependencies/lark/parse_tree_builder.py +391 -0
  361. ccxt/static_dependencies/lark/parser_frontends.py +257 -0
  362. ccxt/static_dependencies/lark/parsers/__init__.py +0 -0
  363. ccxt/static_dependencies/lark/parsers/cyk.py +340 -0
  364. ccxt/static_dependencies/lark/parsers/earley.py +314 -0
  365. ccxt/static_dependencies/lark/parsers/earley_common.py +42 -0
  366. ccxt/static_dependencies/lark/parsers/earley_forest.py +801 -0
  367. ccxt/static_dependencies/lark/parsers/grammar_analysis.py +203 -0
  368. ccxt/static_dependencies/lark/parsers/lalr_analysis.py +332 -0
  369. ccxt/static_dependencies/lark/parsers/lalr_interactive_parser.py +158 -0
  370. ccxt/static_dependencies/lark/parsers/lalr_parser.py +122 -0
  371. ccxt/static_dependencies/lark/parsers/lalr_parser_state.py +110 -0
  372. ccxt/static_dependencies/lark/parsers/xearley.py +165 -0
  373. ccxt/static_dependencies/lark/py.typed +0 -0
  374. ccxt/static_dependencies/lark/reconstruct.py +107 -0
  375. ccxt/static_dependencies/lark/tools/__init__.py +70 -0
  376. ccxt/static_dependencies/lark/tools/nearley.py +202 -0
  377. ccxt/static_dependencies/lark/tools/serialize.py +32 -0
  378. ccxt/static_dependencies/lark/tools/standalone.py +196 -0
  379. ccxt/static_dependencies/lark/tree.py +267 -0
  380. ccxt/static_dependencies/lark/tree_matcher.py +186 -0
  381. ccxt/static_dependencies/lark/tree_templates.py +180 -0
  382. ccxt/static_dependencies/lark/utils.py +343 -0
  383. ccxt/static_dependencies/lark/visitors.py +596 -0
  384. ccxt/static_dependencies/marshmallow/__init__.py +81 -0
  385. ccxt/static_dependencies/marshmallow/base.py +65 -0
  386. ccxt/static_dependencies/marshmallow/class_registry.py +94 -0
  387. ccxt/static_dependencies/marshmallow/decorators.py +231 -0
  388. ccxt/static_dependencies/marshmallow/error_store.py +60 -0
  389. ccxt/static_dependencies/marshmallow/exceptions.py +71 -0
  390. ccxt/static_dependencies/marshmallow/fields.py +2114 -0
  391. ccxt/static_dependencies/marshmallow/orderedset.py +89 -0
  392. ccxt/static_dependencies/marshmallow/py.typed +0 -0
  393. ccxt/static_dependencies/marshmallow/schema.py +1228 -0
  394. ccxt/static_dependencies/marshmallow/types.py +12 -0
  395. ccxt/static_dependencies/marshmallow/utils.py +378 -0
  396. ccxt/static_dependencies/marshmallow/validate.py +678 -0
  397. ccxt/static_dependencies/marshmallow/warnings.py +2 -0
  398. ccxt/static_dependencies/marshmallow_dataclass/__init__.py +1047 -0
  399. ccxt/static_dependencies/marshmallow_dataclass/collection_field.py +51 -0
  400. ccxt/static_dependencies/marshmallow_dataclass/lazy_class_attribute.py +45 -0
  401. ccxt/static_dependencies/marshmallow_dataclass/mypy.py +71 -0
  402. ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
  403. ccxt/static_dependencies/marshmallow_dataclass/typing.py +14 -0
  404. ccxt/static_dependencies/marshmallow_dataclass/union_field.py +82 -0
  405. ccxt/static_dependencies/marshmallow_oneofschema/__init__.py +1 -0
  406. ccxt/static_dependencies/marshmallow_oneofschema/one_of_schema.py +193 -0
  407. ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
  408. ccxt/static_dependencies/starknet/__init__.py +0 -0
  409. ccxt/static_dependencies/starknet/cairo/__init__.py +0 -0
  410. ccxt/static_dependencies/starknet/cairo/data_types.py +123 -0
  411. ccxt/static_dependencies/starknet/cairo/deprecated_parse/__init__.py +0 -0
  412. ccxt/static_dependencies/starknet/cairo/deprecated_parse/cairo_types.py +77 -0
  413. ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser.py +46 -0
  414. ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser_transformer.py +138 -0
  415. ccxt/static_dependencies/starknet/cairo/felt.py +64 -0
  416. ccxt/static_dependencies/starknet/cairo/type_parser.py +121 -0
  417. ccxt/static_dependencies/starknet/cairo/v1/__init__.py +0 -0
  418. ccxt/static_dependencies/starknet/cairo/v1/type_parser.py +59 -0
  419. ccxt/static_dependencies/starknet/cairo/v2/__init__.py +0 -0
  420. ccxt/static_dependencies/starknet/cairo/v2/type_parser.py +77 -0
  421. ccxt/static_dependencies/starknet/ccxt_utils.py +7 -0
  422. ccxt/static_dependencies/starknet/common.py +15 -0
  423. ccxt/static_dependencies/starknet/constants.py +39 -0
  424. ccxt/static_dependencies/starknet/hash/__init__.py +0 -0
  425. ccxt/static_dependencies/starknet/hash/address.py +79 -0
  426. ccxt/static_dependencies/starknet/hash/compiled_class_hash_objects.py +111 -0
  427. ccxt/static_dependencies/starknet/hash/selector.py +16 -0
  428. ccxt/static_dependencies/starknet/hash/storage.py +12 -0
  429. ccxt/static_dependencies/starknet/hash/utils.py +78 -0
  430. ccxt/static_dependencies/starknet/models/__init__.py +0 -0
  431. ccxt/static_dependencies/starknet/models/typed_data.py +45 -0
  432. ccxt/static_dependencies/starknet/serialization/__init__.py +24 -0
  433. ccxt/static_dependencies/starknet/serialization/_calldata_reader.py +40 -0
  434. ccxt/static_dependencies/starknet/serialization/_context.py +142 -0
  435. ccxt/static_dependencies/starknet/serialization/data_serializers/__init__.py +10 -0
  436. ccxt/static_dependencies/starknet/serialization/data_serializers/_common.py +82 -0
  437. ccxt/static_dependencies/starknet/serialization/data_serializers/array_serializer.py +43 -0
  438. ccxt/static_dependencies/starknet/serialization/data_serializers/bool_serializer.py +37 -0
  439. ccxt/static_dependencies/starknet/serialization/data_serializers/byte_array_serializer.py +66 -0
  440. ccxt/static_dependencies/starknet/serialization/data_serializers/cairo_data_serializer.py +71 -0
  441. ccxt/static_dependencies/starknet/serialization/data_serializers/enum_serializer.py +71 -0
  442. ccxt/static_dependencies/starknet/serialization/data_serializers/felt_serializer.py +50 -0
  443. ccxt/static_dependencies/starknet/serialization/data_serializers/named_tuple_serializer.py +58 -0
  444. ccxt/static_dependencies/starknet/serialization/data_serializers/option_serializer.py +43 -0
  445. ccxt/static_dependencies/starknet/serialization/data_serializers/output_serializer.py +40 -0
  446. ccxt/static_dependencies/starknet/serialization/data_serializers/payload_serializer.py +72 -0
  447. ccxt/static_dependencies/starknet/serialization/data_serializers/struct_serializer.py +36 -0
  448. ccxt/static_dependencies/starknet/serialization/data_serializers/tuple_serializer.py +36 -0
  449. ccxt/static_dependencies/starknet/serialization/data_serializers/uint256_serializer.py +76 -0
  450. ccxt/static_dependencies/starknet/serialization/data_serializers/uint_serializer.py +100 -0
  451. ccxt/static_dependencies/starknet/serialization/data_serializers/unit_serializer.py +32 -0
  452. ccxt/static_dependencies/starknet/serialization/errors.py +10 -0
  453. ccxt/static_dependencies/starknet/serialization/factory.py +229 -0
  454. ccxt/static_dependencies/starknet/serialization/function_serialization_adapter.py +110 -0
  455. ccxt/static_dependencies/starknet/serialization/tuple_dataclass.py +59 -0
  456. ccxt/static_dependencies/starknet/utils/__init__.py +0 -0
  457. ccxt/static_dependencies/starknet/utils/constructor_args_translator.py +86 -0
  458. ccxt/static_dependencies/starknet/utils/iterable.py +13 -0
  459. ccxt/static_dependencies/starknet/utils/schema.py +13 -0
  460. ccxt/static_dependencies/starknet/utils/typed_data.py +182 -0
  461. ccxt/static_dependencies/starkware/__init__.py +0 -0
  462. ccxt/static_dependencies/starkware/crypto/__init__.py +0 -0
  463. ccxt/static_dependencies/starkware/crypto/fast_pedersen_hash.py +50 -0
  464. ccxt/static_dependencies/starkware/crypto/math_utils.py +78 -0
  465. ccxt/static_dependencies/starkware/crypto/signature.py +2344 -0
  466. ccxt/static_dependencies/starkware/crypto/utils.py +63 -0
  467. ccxt/static_dependencies/sympy/__init__.py +0 -0
  468. ccxt/static_dependencies/sympy/core/__init__.py +0 -0
  469. ccxt/static_dependencies/sympy/core/intfunc.py +35 -0
  470. ccxt/static_dependencies/sympy/external/__init__.py +0 -0
  471. ccxt/static_dependencies/sympy/external/gmpy.py +345 -0
  472. ccxt/static_dependencies/sympy/external/importtools.py +187 -0
  473. ccxt/static_dependencies/sympy/external/ntheory.py +637 -0
  474. ccxt/static_dependencies/sympy/external/pythonmpq.py +341 -0
  475. ccxt/static_dependencies/typing_inspect/__init__.py +0 -0
  476. ccxt/static_dependencies/typing_inspect/typing_inspect.py +851 -0
  477. ccxt/test/{test_async.py → tests_async.py} +465 -407
  478. ccxt/test/tests_helpers.py +285 -0
  479. ccxt/test/tests_init.py +39 -0
  480. ccxt/test/{test_sync.py → tests_sync.py} +465 -409
  481. ccxt/timex.py +123 -70
  482. ccxt/tokocrypto.py +129 -93
  483. ccxt/tradeogre.py +39 -25
  484. ccxt/upbit.py +322 -113
  485. ccxt/vertex.py +2983 -0
  486. ccxt/wavesexchange.py +227 -173
  487. ccxt/wazirx.py +145 -65
  488. ccxt/whitebit.py +533 -138
  489. ccxt/woo.py +1155 -295
  490. ccxt/woofipro.py +2716 -0
  491. ccxt/xt.py +4627 -0
  492. ccxt/yobit.py +159 -92
  493. ccxt/zaif.py +80 -33
  494. ccxt/zonda.py +140 -69
  495. ccxt-4.4.48.dist-info/LICENSE.txt +21 -0
  496. ccxt-4.4.48.dist-info/METADATA +646 -0
  497. ccxt-4.4.48.dist-info/RECORD +669 -0
  498. {ccxt-4.2.76.dist-info → ccxt-4.4.48.dist-info}/WHEEL +1 -1
  499. ccxt/abstract/bitbay.py +0 -47
  500. ccxt/abstract/bitfinex2.py +0 -139
  501. ccxt/abstract/hitbtc3.py +0 -115
  502. ccxt/async_support/bitbay.py +0 -17
  503. ccxt/async_support/bitfinex2.py +0 -3496
  504. ccxt/async_support/flowbtc.py +0 -34
  505. ccxt/bitbay.py +0 -17
  506. ccxt/bitfinex2.py +0 -3496
  507. ccxt/flowbtc.py +0 -34
  508. ccxt/hitbtc3.py +0 -16
  509. ccxt/pro/bitfinex2.py +0 -1081
  510. ccxt/test/base/__init__.py +0 -28
  511. ccxt/test/base/test_account.py +0 -26
  512. ccxt/test/base/test_balance.py +0 -56
  513. ccxt/test/base/test_borrow_interest.py +0 -35
  514. ccxt/test/base/test_borrow_rate.py +0 -32
  515. ccxt/test/base/test_calculate_fee.py +0 -51
  516. ccxt/test/base/test_crypto.py +0 -127
  517. ccxt/test/base/test_currency.py +0 -76
  518. ccxt/test/base/test_datetime.py +0 -103
  519. ccxt/test/base/test_decimal_to_precision.py +0 -392
  520. ccxt/test/base/test_deep_extend.py +0 -68
  521. ccxt/test/base/test_deposit_withdrawal.py +0 -50
  522. ccxt/test/base/test_exchange_datetime_functions.py +0 -76
  523. ccxt/test/base/test_funding_rate_history.py +0 -29
  524. ccxt/test/base/test_last_price.py +0 -32
  525. ccxt/test/base/test_ledger_entry.py +0 -45
  526. ccxt/test/base/test_ledger_item.py +0 -48
  527. ccxt/test/base/test_leverage_tier.py +0 -33
  528. ccxt/test/base/test_margin_mode.py +0 -24
  529. ccxt/test/base/test_margin_modification.py +0 -35
  530. ccxt/test/base/test_market.py +0 -190
  531. ccxt/test/base/test_number.py +0 -411
  532. ccxt/test/base/test_ohlcv.py +0 -32
  533. ccxt/test/base/test_open_interest.py +0 -32
  534. ccxt/test/base/test_order.py +0 -64
  535. ccxt/test/base/test_order_book.py +0 -63
  536. ccxt/test/base/test_position.py +0 -60
  537. ccxt/test/base/test_shared_methods.py +0 -345
  538. ccxt/test/base/test_status.py +0 -24
  539. ccxt/test/base/test_throttle.py +0 -126
  540. ccxt/test/base/test_ticker.py +0 -86
  541. ccxt/test/base/test_trade.py +0 -47
  542. ccxt/test/base/test_trading_fee.py +0 -26
  543. ccxt/test/base/test_transaction.py +0 -39
  544. ccxt-4.2.76.dist-info/METADATA +0 -626
  545. ccxt-4.2.76.dist-info/RECORD +0 -534
  546. {ccxt-4.2.76.dist-info → ccxt-4.4.48.dist-info}/top_level.txt +0 -0
ccxt/zonda.py CHANGED
@@ -6,9 +6,10 @@
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.zonda 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, TransferEntry
9
+ from ccxt.base.types import Balances, Currency, DepositAddress, Int, LedgerEntry, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
+ from ccxt.base.errors import AuthenticationError
12
13
  from ccxt.base.errors import PermissionDenied
13
14
  from ccxt.base.errors import AccountSuspended
14
15
  from ccxt.base.errors import BadRequest
@@ -20,7 +21,6 @@ from ccxt.base.errors import OrderImmediatelyFillable
20
21
  from ccxt.base.errors import RateLimitExceeded
21
22
  from ccxt.base.errors import OnMaintenance
22
23
  from ccxt.base.errors import InvalidNonce
23
- from ccxt.base.errors import AuthenticationError
24
24
  from ccxt.base.decimal_to_precision import TICK_SIZE
25
25
  from ccxt.base.precise import Precise
26
26
 
@@ -50,32 +50,52 @@ class zonda(Exchange, ImplicitAPI):
50
50
  'createOrder': True,
51
51
  'createReduceOnlyOrder': False,
52
52
  'fetchBalance': True,
53
+ 'fetchBorrowInterest': False,
54
+ 'fetchBorrowRate': False,
53
55
  'fetchBorrowRateHistories': False,
54
56
  'fetchBorrowRateHistory': False,
57
+ 'fetchBorrowRates': False,
58
+ 'fetchBorrowRatesPerSymbol': False,
55
59
  'fetchCrossBorrowRate': False,
56
60
  'fetchCrossBorrowRates': False,
57
61
  'fetchDeposit': False,
58
62
  'fetchDepositAddress': True,
59
63
  'fetchDepositAddresses': True,
64
+ 'fetchDepositAddressesByNetwork': False,
60
65
  'fetchDeposits': None,
61
66
  'fetchFundingHistory': False,
67
+ 'fetchFundingInterval': False,
68
+ 'fetchFundingIntervals': False,
62
69
  'fetchFundingRate': False,
63
70
  'fetchFundingRateHistory': False,
64
71
  'fetchFundingRates': False,
72
+ 'fetchGreeks': False,
65
73
  'fetchIndexOHLCV': False,
66
74
  'fetchIsolatedBorrowRate': False,
67
75
  'fetchIsolatedBorrowRates': False,
76
+ 'fetchIsolatedPositions': False,
68
77
  'fetchLedger': True,
69
78
  'fetchLeverage': False,
79
+ 'fetchLeverages': False,
70
80
  'fetchLeverageTiers': False,
81
+ 'fetchLiquidations': False,
82
+ 'fetchMarginAdjustmentHistory': False,
71
83
  'fetchMarginMode': False,
84
+ 'fetchMarginModes': False,
85
+ 'fetchMarketLeverageTiers': False,
72
86
  'fetchMarkets': True,
73
87
  'fetchMarkOHLCV': False,
88
+ 'fetchMarkPrices': False,
89
+ 'fetchMyLiquidations': False,
90
+ 'fetchMySettlementHistory': False,
74
91
  'fetchMyTrades': True,
75
92
  'fetchOHLCV': True,
93
+ 'fetchOpenInterest': False,
76
94
  'fetchOpenInterestHistory': False,
77
95
  'fetchOpenOrder': False,
78
96
  'fetchOpenOrders': True,
97
+ 'fetchOption': False,
98
+ 'fetchOptionChain': False,
79
99
  'fetchOrderBook': True,
80
100
  'fetchOrderBooks': False,
81
101
  'fetchPosition': False,
@@ -83,6 +103,7 @@ class zonda(Exchange, ImplicitAPI):
83
103
  'fetchPositions': False,
84
104
  'fetchPositionsRisk': False,
85
105
  'fetchPremiumIndexOHLCV': False,
106
+ 'fetchSettlementHistory': False,
86
107
  'fetchTicker': True,
87
108
  'fetchTickers': True,
88
109
  'fetchTime': False,
@@ -93,9 +114,13 @@ class zonda(Exchange, ImplicitAPI):
93
114
  'fetchTransactionFees': False,
94
115
  'fetchTransactions': None,
95
116
  'fetchTransfer': False,
117
+ 'fetchUnderlyingAssets': False,
118
+ 'fetchVolatilityHistory': False,
96
119
  'fetchWithdrawal': False,
97
120
  'fetchWithdrawals': None,
98
121
  'reduceMargin': False,
122
+ 'repayCrossMargin': False,
123
+ 'repayIsolatedMargin': False,
99
124
  'setLeverage': False,
100
125
  'setMargin': False,
101
126
  'setMarginMode': False,
@@ -183,6 +208,10 @@ class zonda(Exchange, ImplicitAPI):
183
208
  'balances/BITBAY/balance',
184
209
  'fiat_cantor/rate/{baseId}/{quoteId}',
185
210
  'fiat_cantor/history',
211
+ 'client_payments/v2/customer/crypto/{currency}/channels/deposit',
212
+ 'client_payments/v2/customer/crypto/{currency}/channels/withdrawal',
213
+ 'client_payments/v2/customer/crypto/deposit/fee',
214
+ 'client_payments/v2/customer/crypto/withdrawal/fee',
186
215
  ],
187
216
  'post': [
188
217
  'trading/offer/{symbol}',
@@ -193,6 +222,8 @@ class zonda(Exchange, ImplicitAPI):
193
222
  'fiat_cantor/exchange',
194
223
  'api_payments/withdrawals/crypto',
195
224
  'api_payments/withdrawals/fiat',
225
+ 'client_payments/v2/customer/crypto/deposit',
226
+ 'client_payments/v2/customer/crypto/withdrawal',
196
227
  ],
197
228
  'delete': [
198
229
  'trading/offer/{symbol}/{id}/{side}/{price}',
@@ -311,9 +342,11 @@ class zonda(Exchange, ImplicitAPI):
311
342
  },
312
343
  })
313
344
 
314
- def fetch_markets(self, params={}):
345
+ def fetch_markets(self, params={}) -> List[Market]:
315
346
  """
316
- :see: https://docs.zondacrypto.exchange/reference/ticker-1
347
+
348
+ https://docs.zondacrypto.exchange/reference/ticker-1
349
+
317
350
  retrieves data on all markets for zonda
318
351
  :param dict [params]: extra parameters specific to the exchange API endpoint
319
352
  :returns dict[]: an array of objects representing market data
@@ -410,7 +443,9 @@ class zonda(Exchange, ImplicitAPI):
410
443
 
411
444
  def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
412
445
  """
413
- :see: https://docs.zondacrypto.exchange/reference/active-orders
446
+
447
+ https://docs.zondacrypto.exchange/reference/active-orders
448
+
414
449
  fetch all unfilled currently open orders
415
450
  :param str symbol: not used by zonda fetchOpenOrders
416
451
  :param int [since]: the earliest time in ms to fetch open orders for
@@ -419,12 +454,12 @@ class zonda(Exchange, ImplicitAPI):
419
454
  :returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
420
455
  """
421
456
  self.load_markets()
422
- request = {}
457
+ request: dict = {}
423
458
  response = self.v1_01PrivateGetTradingOffer(self.extend(request, params))
424
- items = self.safe_value(response, 'items', [])
459
+ items = self.safe_list(response, 'items', [])
425
460
  return self.parse_orders(items, None, since, limit, {'status': 'open'})
426
461
 
427
- def parse_order(self, order, market: Market = None) -> Order:
462
+ def parse_order(self, order: dict, market: Market = None) -> Order:
428
463
  #
429
464
  # {
430
465
  # "market": "ETH-EUR",
@@ -443,6 +478,13 @@ class zonda(Exchange, ImplicitAPI):
443
478
  # "secondBalanceId": "ab43023b-4079-414c-b340-056e3430a3af"
444
479
  # }
445
480
  #
481
+ # cancelOrder
482
+ #
483
+ # {
484
+ # status: "Ok",
485
+ # errors: []
486
+ # }
487
+ #
446
488
  marketId = self.safe_string(order, 'market')
447
489
  symbol = self.safe_symbol(marketId, market, '-')
448
490
  timestamp = self.safe_integer(order, 'time')
@@ -463,7 +505,6 @@ class zonda(Exchange, ImplicitAPI):
463
505
  'postOnly': postOnly,
464
506
  'side': self.safe_string_lower(order, 'offerType'),
465
507
  'price': self.safe_string(order, 'rate'),
466
- 'stopPrice': None,
467
508
  'triggerPrice': None,
468
509
  'amount': amount,
469
510
  'cost': None,
@@ -476,7 +517,9 @@ class zonda(Exchange, ImplicitAPI):
476
517
 
477
518
  def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
478
519
  """
479
- :see: https://docs.zondacrypto.exchange/reference/transactions-history
520
+
521
+ https://docs.zondacrypto.exchange/reference/transactions-history
522
+
480
523
  fetch all trades made by the user
481
524
  :param str symbol: unified market symbol
482
525
  :param int [since]: the earliest time in ms to fetch trades for
@@ -485,12 +528,12 @@ class zonda(Exchange, ImplicitAPI):
485
528
  :returns Trade[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
486
529
  """
487
530
  self.load_markets()
488
- request = {}
531
+ request: dict = {}
489
532
  if symbol:
490
533
  markets = [self.market_id(symbol)]
491
534
  symbol = self.symbol(symbol)
492
535
  request['markets'] = markets
493
- query = {'query': self.json(self.extend(request, params))}
536
+ query: dict = {'query': self.json(self.extend(request, params))}
494
537
  response = self.v1_01PrivateGetTradingHistoryTransactions(query)
495
538
  #
496
539
  # {
@@ -522,7 +565,7 @@ class zonda(Exchange, ImplicitAPI):
522
565
  balances = self.safe_value(response, 'balances')
523
566
  if balances is None:
524
567
  raise ExchangeError(self.id + ' empty balance response ' + self.json(response))
525
- result = {'info': response}
568
+ result: dict = {'info': response}
526
569
  for i in range(0, len(balances)):
527
570
  balance = balances[i]
528
571
  currencyId = self.safe_string(balance, 'currency')
@@ -535,7 +578,9 @@ class zonda(Exchange, ImplicitAPI):
535
578
 
536
579
  def fetch_balance(self, params={}) -> Balances:
537
580
  """
538
- :see: https://docs.zondacrypto.exchange/reference/list-of-wallets
581
+
582
+ https://docs.zondacrypto.exchange/reference/list-of-wallets
583
+
539
584
  query for balance and get the amount of funds available for trading or funds locked in orders
540
585
  :param dict [params]: extra parameters specific to the exchange API endpoint
541
586
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
@@ -546,7 +591,9 @@ class zonda(Exchange, ImplicitAPI):
546
591
 
547
592
  def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
548
593
  """
549
- :see: https://docs.zondacrypto.exchange/reference/orderbook-2
594
+
595
+ https://docs.zondacrypto.exchange/reference/orderbook-2
596
+
550
597
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
551
598
  :param str symbol: unified symbol of the market to fetch the order book for
552
599
  :param int [limit]: the maximum amount of order book entries to return
@@ -555,7 +602,7 @@ class zonda(Exchange, ImplicitAPI):
555
602
  """
556
603
  self.load_markets()
557
604
  market = self.market(symbol)
558
- request = {
605
+ request: dict = {
559
606
  'symbol': market['id'],
560
607
  }
561
608
  response = self.v1_01PublicGetTradingOrderbookSymbol(self.extend(request, params))
@@ -588,7 +635,7 @@ class zonda(Exchange, ImplicitAPI):
588
635
  'nonce': self.safe_integer(response, 'seqNo'),
589
636
  }
590
637
 
591
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
638
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
592
639
  #
593
640
  # version 1
594
641
  #
@@ -657,7 +704,9 @@ class zonda(Exchange, ImplicitAPI):
657
704
  def fetch_ticker(self, symbol: str, params={}):
658
705
  """
659
706
  v1_01PublicGetTradingTickerSymbol retrieves timestamp, datetime, bid, ask, close, last, previousClose, v1_01PublicGetTradingStatsSymbol retrieves high, low, volume and opening price of an asset
660
- :see: https://docs.zondacrypto.exchange/reference/market-statistics
707
+
708
+ https://docs.zondacrypto.exchange/reference/market-statistics
709
+
661
710
  :param str symbol: unified symbol of the market to fetch the ticker for
662
711
  :param dict [params]: extra parameters specific to the exchange API endpoint
663
712
  :param str [params.method]: v1_01PublicGetTradingTickerSymbol(default) or v1_01PublicGetTradingStatsSymbol
@@ -665,7 +714,7 @@ class zonda(Exchange, ImplicitAPI):
665
714
  """
666
715
  self.load_markets()
667
716
  market = self.market(symbol)
668
- request = {
717
+ request: dict = {
669
718
  'symbol': market['id'],
670
719
  }
671
720
  method = 'v1_01PublicGetTradingTickerSymbol'
@@ -723,9 +772,11 @@ class zonda(Exchange, ImplicitAPI):
723
772
 
724
773
  def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
725
774
  """
726
- * @ignore
775
+ @ignore
727
776
  v1_01PublicGetTradingTicker retrieves timestamp, datetime, bid, ask, close, last, previousClose for each market, v1_01PublicGetTradingStats retrieves high, low, volume and opening price of each market
728
- :see: https://docs.zondacrypto.exchange/reference/market-statistics
777
+
778
+ https://docs.zondacrypto.exchange/reference/market-statistics
779
+
729
780
  :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
730
781
  :param dict [params]: extra parameters specific to the exchange API endpoint
731
782
  :param str [params.method]: v1_01PublicGetTradingTicker(default) or v1_01PublicGetTradingStats
@@ -788,24 +839,26 @@ class zonda(Exchange, ImplicitAPI):
788
839
  #
789
840
  else:
790
841
  raise BadRequest(self.id + ' fetchTickers params["method"] must be "v1_01PublicGetTradingTicker" or "v1_01PublicGetTradingStats"')
791
- items = self.safe_value(response, 'items')
842
+ items = self.safe_dict(response, 'items')
792
843
  return self.parse_tickers(items, symbols)
793
844
 
794
- def fetch_ledger(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
845
+ def fetch_ledger(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[LedgerEntry]:
795
846
  """
796
- :see: https://docs.zondacrypto.exchange/reference/operations-history
797
- fetch the history of changes, actions done by the user or operations that altered balance of the user
798
- :param str code: unified currency code, default is None
847
+ fetch the history of changes, actions done by the user or operations that altered the balance of the user
848
+
849
+ https://docs.zondacrypto.exchange/reference/operations-history
850
+
851
+ :param str [code]: unified currency code, default is None
799
852
  :param int [since]: timestamp in ms of the earliest ledger entry, default is None
800
- :param int [limit]: max number of ledger entrys to return, default is None
853
+ :param int [limit]: max number of ledger entries to return, default is None
801
854
  :param dict [params]: extra parameters specific to the exchange API endpoint
802
- :returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger-structure>`
855
+ :returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger>`
803
856
  """
804
857
  balanceCurrencies = []
805
858
  if code is not None:
806
859
  currency = self.currency(code)
807
860
  balanceCurrencies.append(currency['id'])
808
- request = {
861
+ request: dict = {
809
862
  'balanceCurrencies': balanceCurrencies,
810
863
  }
811
864
  if since is not None:
@@ -817,7 +870,7 @@ class zonda(Exchange, ImplicitAPI):
817
870
  items = response['items']
818
871
  return self.parse_ledger(items, None, since, limit)
819
872
 
820
- def parse_ledger_entry(self, item, currency: Currency = None):
873
+ def parse_ledger_entry(self, item: dict, currency: Currency = None) -> LedgerEntry:
821
874
  #
822
875
  # FUNDS_MIGRATION
823
876
  # {
@@ -1088,6 +1141,7 @@ class zonda(Exchange, ImplicitAPI):
1088
1141
  timestamp = self.safe_integer(item, 'time')
1089
1142
  balance = self.safe_value(item, 'balance', {})
1090
1143
  currencyId = self.safe_string(balance, 'currency')
1144
+ currency = self.safe_currency(currencyId, currency)
1091
1145
  change = self.safe_value(item, 'change', {})
1092
1146
  amount = self.safe_string(change, 'total')
1093
1147
  direction = 'in'
@@ -1098,7 +1152,7 @@ class zonda(Exchange, ImplicitAPI):
1098
1152
  # that can be used to enrich the transfers with txid, address etc(you need to use info.detailId parameter)
1099
1153
  fundsBefore = self.safe_value(item, 'fundsBefore', {})
1100
1154
  fundsAfter = self.safe_value(item, 'fundsAfter', {})
1101
- return {
1155
+ return self.safe_ledger_entry({
1102
1156
  'info': item,
1103
1157
  'id': self.safe_string(item, 'historyId'),
1104
1158
  'direction': direction,
@@ -1114,10 +1168,10 @@ class zonda(Exchange, ImplicitAPI):
1114
1168
  'timestamp': timestamp,
1115
1169
  'datetime': self.iso8601(timestamp),
1116
1170
  'fee': None,
1117
- }
1171
+ }, currency)
1118
1172
 
1119
1173
  def parse_ledger_entry_type(self, type):
1120
- types = {
1174
+ types: dict = {
1121
1175
  'ADD_FUNDS': 'transaction',
1122
1176
  'BITCOIN_GOLD_FORK': 'transaction',
1123
1177
  'CREATE_BALANCE': 'transaction',
@@ -1161,7 +1215,9 @@ class zonda(Exchange, ImplicitAPI):
1161
1215
 
1162
1216
  def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
1163
1217
  """
1164
- :see: https://docs.zondacrypto.exchange/reference/candles-chart
1218
+
1219
+ https://docs.zondacrypto.exchange/reference/candles-chart
1220
+
1165
1221
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
1166
1222
  :param str symbol: unified symbol of the market to fetch OHLCV data for
1167
1223
  :param str timeframe: the length of time each candle represents
@@ -1173,7 +1229,7 @@ class zonda(Exchange, ImplicitAPI):
1173
1229
  self.load_markets()
1174
1230
  market = self.market(symbol)
1175
1231
  tradingSymbol = market['baseId'] + '-' + market['quoteId']
1176
- request = {
1232
+ request: dict = {
1177
1233
  'symbol': tradingSymbol,
1178
1234
  'resolution': self.safe_string(self.timeframes, timeframe, timeframe),
1179
1235
  # 'from': 1574709092000, # unix timestamp in milliseconds, required
@@ -1181,6 +1237,8 @@ class zonda(Exchange, ImplicitAPI):
1181
1237
  }
1182
1238
  if limit is None:
1183
1239
  limit = 100
1240
+ else:
1241
+ limit = min(limit, 11000) # supports up to 11k candles diapason
1184
1242
  duration = self.parse_timeframe(timeframe)
1185
1243
  timerange = limit * duration * 1000
1186
1244
  if since is None:
@@ -1200,10 +1258,10 @@ class zonda(Exchange, ImplicitAPI):
1200
1258
  # ]
1201
1259
  # }
1202
1260
  #
1203
- items = self.safe_value(response, 'items', [])
1261
+ items = self.safe_list(response, 'items', [])
1204
1262
  return self.parse_ohlcvs(items, market, timeframe, since, limit)
1205
1263
 
1206
- def parse_trade(self, trade, market: Market = None) -> Trade:
1264
+ def parse_trade(self, trade: dict, market: Market = None) -> Trade:
1207
1265
  #
1208
1266
  # createOrder trades
1209
1267
  #
@@ -1279,7 +1337,9 @@ class zonda(Exchange, ImplicitAPI):
1279
1337
 
1280
1338
  def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
1281
1339
  """
1282
- :see: https://docs.zondacrypto.exchange/reference/last-transactions
1340
+
1341
+ https://docs.zondacrypto.exchange/reference/last-transactions
1342
+
1283
1343
  get the list of most recent trades for a particular symbol
1284
1344
  :param str symbol: unified symbol of the market to fetch trades for
1285
1345
  :param int [since]: timestamp in ms of the earliest trade to fetch
@@ -1290,7 +1350,7 @@ class zonda(Exchange, ImplicitAPI):
1290
1350
  self.load_markets()
1291
1351
  market = self.market(symbol)
1292
1352
  tradingSymbol = market['baseId'] + '-' + market['quoteId']
1293
- request = {
1353
+ request: dict = {
1294
1354
  'symbol': tradingSymbol,
1295
1355
  }
1296
1356
  if since is not None:
@@ -1298,7 +1358,7 @@ class zonda(Exchange, ImplicitAPI):
1298
1358
  if limit is not None:
1299
1359
  request['limit'] = limit # default - 10, max - 300
1300
1360
  response = self.v1_01PublicGetTradingTransactionsSymbol(self.extend(request, params))
1301
- items = self.safe_value(response, 'items')
1361
+ items = self.safe_list(response, 'items')
1302
1362
  return self.parse_trades(items, market, since, limit)
1303
1363
 
1304
1364
  def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
@@ -1308,7 +1368,7 @@ class zonda(Exchange, ImplicitAPI):
1308
1368
  :param str type: 'market' or 'limit'
1309
1369
  :param str side: 'buy' or 'sell'
1310
1370
  :param float amount: how much of currency you want to trade in units of base currency
1311
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
1371
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1312
1372
  :param dict [params]: extra parameters specific to the exchange API endpoint
1313
1373
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1314
1374
  """
@@ -1316,7 +1376,7 @@ class zonda(Exchange, ImplicitAPI):
1316
1376
  market = self.market(symbol)
1317
1377
  tradingSymbol = market['baseId'] + '-' + market['quoteId']
1318
1378
  amount = float(self.amount_to_precision(symbol, amount))
1319
- request = {
1379
+ request: dict = {
1320
1380
  'symbol': tradingSymbol,
1321
1381
  'offerType': side.upper(),
1322
1382
  'amount': amount,
@@ -1339,7 +1399,7 @@ class zonda(Exchange, ImplicitAPI):
1339
1399
  response = None
1340
1400
  if isStopOrder:
1341
1401
  if not isStopLossPrice:
1342
- raise ExchangeError(self.id + ' createOrder() zonda requires `triggerPrice` or `stopPrice` parameter for stop-limit or stop-market orders')
1402
+ raise ExchangeError(self.id + ' createOrder() zonda requires `triggerPrice` parameter for stop-limit or stop-market orders')
1343
1403
  request['stopRate'] = self.price_to_precision(symbol, stopLossPrice)
1344
1404
  response = self.v1_01PrivatePostTradingStopOfferSymbol(self.extend(request, params))
1345
1405
  else:
@@ -1425,7 +1485,9 @@ class zonda(Exchange, ImplicitAPI):
1425
1485
 
1426
1486
  def cancel_order(self, id: str, symbol: Str = None, params={}):
1427
1487
  """
1428
- :see: https://docs.zondacrypto.exchange/reference/cancel-order
1488
+
1489
+ https://docs.zondacrypto.exchange/reference/cancel-order
1490
+
1429
1491
  cancels an open order
1430
1492
  :param str id: order id
1431
1493
  :param str symbol: unified symbol of the market the order was made in
@@ -1441,25 +1503,26 @@ class zonda(Exchange, ImplicitAPI):
1441
1503
  self.load_markets()
1442
1504
  market = self.market(symbol)
1443
1505
  tradingSymbol = market['baseId'] + '-' + market['quoteId']
1444
- request = {
1506
+ request: dict = {
1445
1507
  'symbol': tradingSymbol,
1446
1508
  'id': id,
1447
1509
  'side': side,
1448
1510
  'price': price,
1449
1511
  }
1512
+ response = self.v1_01PrivateDeleteTradingOfferSymbolIdSidePrice(self.extend(request, params))
1450
1513
  # {status: "Fail", errors: ["NOT_RECOGNIZED_OFFER_TYPE"]} -- if required params are missing
1451
1514
  # {status: "Ok", errors: []}
1452
- return self.v1_01PrivateDeleteTradingOfferSymbolIdSidePrice(self.extend(request, params))
1515
+ return self.parse_order(response)
1453
1516
 
1454
- def is_fiat(self, currency):
1455
- fiatCurrencies = {
1517
+ def is_fiat(self, currency: str) -> bool:
1518
+ fiatCurrencies: dict = {
1456
1519
  'USD': True,
1457
1520
  'EUR': True,
1458
1521
  'PLN': True,
1459
1522
  }
1460
1523
  return self.safe_bool(fiatCurrencies, currency, False)
1461
1524
 
1462
- def parse_deposit_address(self, depositAddress, currency: Currency = None):
1525
+ def parse_deposit_address(self, depositAddress, currency: Currency = None) -> DepositAddress:
1463
1526
  #
1464
1527
  # {
1465
1528
  # "address": "33u5YAEhQbYfjHHPsfMfCoSdEjfwYjVcBE",
@@ -1473,16 +1536,18 @@ class zonda(Exchange, ImplicitAPI):
1473
1536
  address = self.safe_string(depositAddress, 'address')
1474
1537
  self.check_address(address)
1475
1538
  return {
1539
+ 'info': depositAddress,
1476
1540
  'currency': self.safe_currency_code(currencyId, currency),
1541
+ 'network': None,
1477
1542
  'address': address,
1478
1543
  'tag': self.safe_string(depositAddress, 'tag'),
1479
- 'network': None,
1480
- 'info': depositAddress,
1481
1544
  }
1482
1545
 
1483
- def fetch_deposit_address(self, code: str, params={}):
1546
+ def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
1484
1547
  """
1485
- :see: https://docs.zondacrypto.exchange/reference/deposit-addresses-for-crypto
1548
+
1549
+ https://docs.zondacrypto.exchange/reference/deposit-addresses-for-crypto
1550
+
1486
1551
  fetch the deposit address for a currency associated with self account
1487
1552
  :param str code: unified currency code
1488
1553
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1491,7 +1556,7 @@ class zonda(Exchange, ImplicitAPI):
1491
1556
  """
1492
1557
  self.load_markets()
1493
1558
  currency = self.currency(code)
1494
- request = {
1559
+ request: dict = {
1495
1560
  'currency': currency['id'],
1496
1561
  }
1497
1562
  response = self.v1_01PrivateGetApiPaymentsDepositsCryptoAddresses(self.extend(request, params))
@@ -1509,12 +1574,14 @@ class zonda(Exchange, ImplicitAPI):
1509
1574
  # }
1510
1575
  #
1511
1576
  data = self.safe_value(response, 'data')
1512
- first = self.safe_value(data, 0)
1577
+ first = self.safe_dict(data, 0)
1513
1578
  return self.parse_deposit_address(first, currency)
1514
1579
 
1515
- def fetch_deposit_addresses(self, codes: List[str] = None, params={}):
1580
+ def fetch_deposit_addresses(self, codes: Strings = None, params={}) -> List[DepositAddress]:
1516
1581
  """
1517
- :see: https://docs.zondacrypto.exchange/reference/deposit-addresses-for-crypto
1582
+
1583
+ https://docs.zondacrypto.exchange/reference/deposit-addresses-for-crypto
1584
+
1518
1585
  fetch deposit addresses for multiple currencies and chain types
1519
1586
  :param str[]|None codes: zonda does not support filtering filtering by multiple codes and will ignore self parameter.
1520
1587
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1535,12 +1602,14 @@ class zonda(Exchange, ImplicitAPI):
1535
1602
  # ]
1536
1603
  # }
1537
1604
  #
1538
- data = self.safe_value(response, 'data')
1605
+ data = self.safe_list(response, 'data')
1539
1606
  return self.parse_deposit_addresses(data, codes)
1540
1607
 
1541
1608
  def transfer(self, code: str, amount: float, fromAccount: str, toAccount: str, params={}) -> TransferEntry:
1542
1609
  """
1543
- :see: https://docs.zondacrypto.exchange/reference/internal-transfer
1610
+
1611
+ https://docs.zondacrypto.exchange/reference/internal-transfer
1612
+
1544
1613
  transfer currency internally between wallets on the same account
1545
1614
  :param str code: unified currency code
1546
1615
  :param float amount: amount to transfer
@@ -1551,7 +1620,7 @@ class zonda(Exchange, ImplicitAPI):
1551
1620
  """
1552
1621
  self.load_markets()
1553
1622
  currency = self.currency(code)
1554
- request = {
1623
+ request: dict = {
1555
1624
  'source': fromAccount,
1556
1625
  'destination': toAccount,
1557
1626
  'currency': code,
@@ -1593,7 +1662,7 @@ class zonda(Exchange, ImplicitAPI):
1593
1662
  transfer['amount'] = amount
1594
1663
  return transfer
1595
1664
 
1596
- def parse_transfer(self, transfer, currency: Currency = None):
1665
+ def parse_transfer(self, transfer: dict, currency: Currency = None) -> TransferEntry:
1597
1666
  #
1598
1667
  # {
1599
1668
  # "status": "Ok",
@@ -1640,16 +1709,18 @@ class zonda(Exchange, ImplicitAPI):
1640
1709
  'status': self.parse_transfer_status(status),
1641
1710
  }
1642
1711
 
1643
- def parse_transfer_status(self, status):
1644
- statuses = {
1712
+ def parse_transfer_status(self, status: Str) -> Str:
1713
+ statuses: dict = {
1645
1714
  'Ok': 'ok',
1646
1715
  'Fail': 'failed',
1647
1716
  }
1648
1717
  return self.safe_string(statuses, status, status)
1649
1718
 
1650
- def withdraw(self, code: str, amount: float, address, tag=None, params={}):
1719
+ def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
1651
1720
  """
1652
- :see: https://docs.zondacrypto.exchange/reference/crypto-withdrawal-1
1721
+
1722
+ https://docs.zondacrypto.exchange/reference/crypto-withdrawal-1
1723
+
1653
1724
  make a withdrawal
1654
1725
  :param str code: unified currency code
1655
1726
  :param float amount: the amount to withdraw
@@ -1663,7 +1734,7 @@ class zonda(Exchange, ImplicitAPI):
1663
1734
  self.load_markets()
1664
1735
  response = None
1665
1736
  currency = self.currency(code)
1666
- request = {
1737
+ request: dict = {
1667
1738
  'currency': currency['id'],
1668
1739
  'amount': amount,
1669
1740
  'address': address,
@@ -1684,10 +1755,10 @@ class zonda(Exchange, ImplicitAPI):
1684
1755
  # }
1685
1756
  # }
1686
1757
  #
1687
- data = self.safe_value(response, 'data')
1758
+ data = self.safe_dict(response, 'data')
1688
1759
  return self.parse_transaction(data, currency)
1689
1760
 
1690
- def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
1761
+ def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
1691
1762
  #
1692
1763
  # withdraw
1693
1764
  #
@@ -1764,7 +1835,7 @@ class zonda(Exchange, ImplicitAPI):
1764
1835
  }
1765
1836
  return {'url': url, 'method': method, 'body': body, 'headers': headers}
1766
1837
 
1767
- def handle_errors(self, httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody):
1838
+ def handle_errors(self, httpCode: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
1768
1839
  if response is None:
1769
1840
  return None # fallback to default error handler
1770
1841
  if 'code' in response:
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright © 2024 Igor Kroitor
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.