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
@@ -7,7 +7,7 @@ from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.kuna import ImplicitAPI
8
8
  import hashlib
9
9
  import json
10
- from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
10
+ from ccxt.base.types import Balances, Currencies, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
11
11
  from typing import List
12
12
  from ccxt.base.errors import ExchangeError
13
13
  from ccxt.base.errors import ArgumentsRequired
@@ -58,6 +58,8 @@ class kuna(Exchange, ImplicitAPI):
58
58
  'fetchCurrencies': True,
59
59
  'fetchDeposit': True,
60
60
  'fetchDepositAddress': True,
61
+ 'fetchDepositAddresses': False,
62
+ 'fetchDepositAddressesByNetwork': False,
61
63
  'fetchDeposits': True,
62
64
  'fetchDepositsWithdrawals': False,
63
65
  'fetchFundingHistory': False,
@@ -409,7 +411,9 @@ class kuna(Exchange, ImplicitAPI):
409
411
  async def fetch_time(self, params={}):
410
412
  """
411
413
  fetches the current integer timestamp in milliseconds from the exchange server
412
- :see: https://docs.kuna.io/docs/get-time-on-the-server
414
+
415
+ https://docs.kuna.io/docs/get-time-on-the-server
416
+
413
417
  :param dict [params]: extra parameters specific to the exchange API endpoint
414
418
  :returns int: the current integer timestamp in milliseconds from the exchange server
415
419
  """
@@ -425,10 +429,12 @@ class kuna(Exchange, ImplicitAPI):
425
429
  data = self.safe_value(response, 'data', {})
426
430
  return self.safe_integer(data, 'timestamp_miliseconds')
427
431
 
428
- async def fetch_currencies(self, params={}):
432
+ async def fetch_currencies(self, params={}) -> Currencies:
429
433
  """
430
434
  fetches all available currencies on an exchange
431
- :see: https://docs.kuna.io/docs/get-information-about-available-currencies
435
+
436
+ https://docs.kuna.io/docs/get-information-about-available-currencies
437
+
432
438
  :param dict [params]: extra parameters specific to the exchange API endpoint
433
439
  :returns dict: an associative dictionary of currencies
434
440
  """
@@ -460,15 +466,7 @@ class kuna(Exchange, ImplicitAPI):
460
466
  data = self.safe_value(response, 'data', [])
461
467
  return self.parse_currencies(data)
462
468
 
463
- def parse_currencies(self, currencies, params={}):
464
- currencies = self.to_array(currencies)
465
- result = {}
466
- for i in range(0, len(currencies)):
467
- currency = self.parse_currency(currencies[i])
468
- result[currency['code']] = currency
469
- return result
470
-
471
- def parse_currency(self, currency):
469
+ def parse_currency(self, currency: dict) -> Currency:
472
470
  #
473
471
  # {
474
472
  # "code": "BTC",
@@ -492,7 +490,7 @@ class kuna(Exchange, ImplicitAPI):
492
490
  currencyId = self.safe_string(currency, 'code')
493
491
  precision = self.safe_string(currency, 'precision')
494
492
  tradePrecision = self.safe_string(currency, 'tradePrecision')
495
- return {
493
+ return self.safe_currency_structure({
496
494
  'info': currency,
497
495
  'id': currencyId,
498
496
  'code': self.safe_currency_code(currencyId),
@@ -503,7 +501,7 @@ class kuna(Exchange, ImplicitAPI):
503
501
  'deposit': None,
504
502
  'withdraw': None,
505
503
  'fee': None,
506
- 'precision': Precise.string_min(precision, tradePrecision),
504
+ 'precision': self.parse_number(Precise.string_min(precision, tradePrecision)),
507
505
  'limits': {
508
506
  'amount': {
509
507
  'min': None,
@@ -515,12 +513,14 @@ class kuna(Exchange, ImplicitAPI):
515
513
  },
516
514
  },
517
515
  'networks': {},
518
- }
516
+ })
519
517
 
520
- async def fetch_markets(self, params={}):
518
+ async def fetch_markets(self, params={}) -> List[Market]:
521
519
  """
522
520
  retrieves data on all markets for kuna
523
- :see: https://docs.kuna.io/docs/get-all-traded-markets
521
+
522
+ https://docs.kuna.io/docs/get-all-traded-markets
523
+
524
524
  :param dict [params]: extra parameters specific to the exchange API endpoint
525
525
  :returns dict[]: an array of objects representing market data
526
526
  """
@@ -610,7 +610,9 @@ class kuna(Exchange, ImplicitAPI):
610
610
  async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
611
611
  """
612
612
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
613
- :see: https://docs.kuna.io/docs/get-public-orders-book
613
+
614
+ https://docs.kuna.io/docs/get-public-orders-book
615
+
614
616
  :param str symbol: unified symbol of the market to fetch the order book for
615
617
  :param int [limit]: 5, 10, 20, 50, 100, 500, or 1000(default)
616
618
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -618,7 +620,7 @@ class kuna(Exchange, ImplicitAPI):
618
620
  """
619
621
  await self.load_markets()
620
622
  market = self.market(symbol)
621
- request = {
623
+ request: dict = {
622
624
  'pairs': market['id'],
623
625
  }
624
626
  if limit is not None:
@@ -650,10 +652,10 @@ class kuna(Exchange, ImplicitAPI):
650
652
  # }
651
653
  # }
652
654
  #
653
- data = self.safe_value(response, 'data', {})
655
+ data = self.safe_dict(response, 'data', {})
654
656
  return self.parse_order_book(data, market['symbol'], None, 'bids', 'asks', 0, 1)
655
657
 
656
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
658
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
657
659
  #
658
660
  # {
659
661
  # "pair": "BTC_USDT", # Traded pair
@@ -694,7 +696,9 @@ class kuna(Exchange, ImplicitAPI):
694
696
  async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
695
697
  """
696
698
  fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market. The average is not returned in the response, but the median can be accessed via response['info']['price']
697
- :see: https://docs.kuna.io/docs/get-market-info-by-tickers
699
+
700
+ https://docs.kuna.io/docs/get-market-info-by-tickers
701
+
698
702
  :param str[] [symbols]: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
699
703
  :param dict [params]: extra parameters specific to the exchange API endpoint
700
704
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -704,7 +708,7 @@ class kuna(Exchange, ImplicitAPI):
704
708
  raise ArgumentsRequired(self.id + ' fetchTickers() requires a symbols argument')
705
709
  symbols = self.market_symbols(symbols)
706
710
  marketIds = self.market_ids(symbols)
707
- request = {
711
+ request: dict = {
708
712
  'pairs': ','.join(marketIds),
709
713
  }
710
714
  response = await self.v4PublicGetMarketsPublicTickersPairsPairs(self.extend(request, params))
@@ -728,20 +732,22 @@ class kuna(Exchange, ImplicitAPI):
728
732
  # ]
729
733
  # }
730
734
  #
731
- data = self.safe_value(response, 'data', [])
735
+ data = self.safe_list(response, 'data', [])
732
736
  return self.parse_tickers(data, symbols, params)
733
737
 
734
738
  async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
735
739
  """
736
740
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
737
- :see: https://docs.kuna.io/docs/get-market-info-by-tickers
741
+
742
+ https://docs.kuna.io/docs/get-market-info-by-tickers
743
+
738
744
  :param str symbol: unified symbol of the market to fetch the ticker for
739
745
  :param dict [params]: extra parameters specific to the exchange API endpoint
740
746
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
741
747
  """
742
748
  await self.load_markets()
743
749
  market = self.market(symbol)
744
- request = {
750
+ request: dict = {
745
751
  'pairs': market['id'],
746
752
  }
747
753
  response = await self.v4PublicGetMarketsPublicTickersPairsPairs(self.extend(request, params))
@@ -766,12 +772,12 @@ class kuna(Exchange, ImplicitAPI):
766
772
  # }
767
773
  #
768
774
  data = self.safe_value(response, 'data', [])
769
- ticker = self.safe_value(data, 0)
775
+ ticker = self.safe_dict(data, 0)
770
776
  return self.parse_ticker(ticker, market)
771
777
 
772
778
  async def fetch_l3_order_book(self, symbol: str, limit: Int = None, params={}):
773
779
  """
774
- * TODO: double check
780
+ TODO: double check
775
781
  fetches level 3 information on open orders with bid(buy) and ask(sell) prices, volumes and other data
776
782
  :param str symbol: unified market symbol
777
783
  :param int [limit]: max number of orders to return, default is None
@@ -783,7 +789,9 @@ class kuna(Exchange, ImplicitAPI):
783
789
  async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
784
790
  """
785
791
  get the list of most recent trades for a particular symbol
786
- :see: https://docs.kuna.io/docs/get-public-trades-book
792
+
793
+ https://docs.kuna.io/docs/get-public-trades-book
794
+
787
795
  :param str symbol: unified symbol of the market to fetch trades for
788
796
  :param int [since]: timestamp in ms of the earliest trade to fetch
789
797
  :param int [limit]: between 1 and 100, 25 by default
@@ -792,7 +800,7 @@ class kuna(Exchange, ImplicitAPI):
792
800
  """
793
801
  await self.load_markets()
794
802
  market = self.market(symbol)
795
- request = {
803
+ request: dict = {
796
804
  'pairs': market['id'],
797
805
  }
798
806
  if limit is not None:
@@ -817,7 +825,7 @@ class kuna(Exchange, ImplicitAPI):
817
825
  data = self.safe_list(response, 'data', [])
818
826
  return self.parse_trades(data, market, since, limit)
819
827
 
820
- def parse_trade(self, trade, market: Market = None) -> Trade:
828
+ def parse_trade(self, trade: dict, market: Market = None) -> Trade:
821
829
  #
822
830
  # fetchTrades(public)
823
831
  #
@@ -870,7 +878,6 @@ class kuna(Exchange, ImplicitAPI):
870
878
  'fee': {
871
879
  'cost': self.safe_string(trade, 'fee'),
872
880
  'currency': self.safe_currency_code(self.safe_string(trade, 'feeCurrency')),
873
- 'rate': None,
874
881
  },
875
882
  }, market)
876
883
 
@@ -885,7 +892,7 @@ class kuna(Exchange, ImplicitAPI):
885
892
  # ...
886
893
  # ]
887
894
  #
888
- result = {'info': response}
895
+ result: dict = {'info': response}
889
896
  for i in range(0, len(response)):
890
897
  balance = response[i]
891
898
  currencyId = self.safe_string(balance, 'currency')
@@ -919,16 +926,18 @@ class kuna(Exchange, ImplicitAPI):
919
926
  async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
920
927
  """
921
928
  create a trade order
922
- :see: https://docs.kuna.io/docs/create-a-new-order-private
929
+
930
+ https://docs.kuna.io/docs/create-a-new-order-private
931
+
923
932
  :param str symbol: unified symbol of the market to create an order in
924
933
  :param str type: 'market' or 'limit'
925
934
  :param str side: 'buy' or 'sell'
926
935
  :param float amount: how much of currency you want to trade in units of base currency
927
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
936
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
928
937
  :param dict [params]: extra parameters specific to the exchange API endpoint
929
938
  :param float [params.triggerPrice]: the price at which a trigger order is triggered at
930
- *
931
- * EXCHANGE SPECIFIC PARAMETERS
939
+
940
+ EXCHANGE SPECIFIC PARAMETERS
932
941
  :param str [params.id]: id must be a UUID format, if you do not specify id, it will be generated automatically.
933
942
  :param float [params.quoteQuantity]: the max quantity of the quote asset to use for selling/buying
934
943
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
@@ -938,7 +947,7 @@ class kuna(Exchange, ImplicitAPI):
938
947
  triggerPrice = self.safe_string_2(params, 'triggerPrice', 'stopPrice')
939
948
  params = self.omit(params, ['triggerPrice', 'stopPrice'])
940
949
  capitalizedType = self.capitalize(type)
941
- request = {
950
+ request: dict = {
942
951
  'pair': market['id'],
943
952
  'orderSide': 'Bid' if (side == 'buy') else 'Ask',
944
953
  'quantity': self.number_to_string(amount),
@@ -968,7 +977,7 @@ class kuna(Exchange, ImplicitAPI):
968
977
  # }
969
978
  # }
970
979
  #
971
- data = self.safe_value(response, 'data', {})
980
+ data = self.safe_dict(response, 'data', {})
972
981
  return self.parse_order(data, market)
973
982
 
974
983
  async def cancel_order(self, id: str, symbol: Str = None, params={}):
@@ -980,7 +989,7 @@ class kuna(Exchange, ImplicitAPI):
980
989
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
981
990
  """
982
991
  await self.load_markets()
983
- request = {
992
+ request: dict = {
984
993
  'orderId': id,
985
994
  }
986
995
  response = await self.v4PrivatePostOrderPrivateCancel(self.extend(request, params))
@@ -1008,7 +1017,7 @@ class kuna(Exchange, ImplicitAPI):
1008
1017
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1009
1018
  """
1010
1019
  await self.load_markets()
1011
- request = {
1020
+ request: dict = {
1012
1021
  'orderIds': ids,
1013
1022
  }
1014
1023
  response = await self.v4PrivatePostOrderPrivateCancelMulti(self.extend(request, params))
@@ -1023,11 +1032,11 @@ class kuna(Exchange, ImplicitAPI):
1023
1032
  # ]
1024
1033
  # }
1025
1034
  #
1026
- data = self.safe_value(response, 'data', [])
1035
+ data = self.safe_list(response, 'data', [])
1027
1036
  return self.parse_orders(data)
1028
1037
 
1029
- def parse_order_status(self, status):
1030
- statuses = {
1038
+ def parse_order_status(self, status: Str):
1039
+ statuses: dict = {
1031
1040
  'Canceled': 'canceled',
1032
1041
  'Closed': 'filled',
1033
1042
  'Pending': 'open',
@@ -1038,7 +1047,7 @@ class kuna(Exchange, ImplicitAPI):
1038
1047
  }
1039
1048
  return self.safe_string(statuses, status, status)
1040
1049
 
1041
- def parse_order(self, order, market: Market = None) -> Order:
1050
+ def parse_order(self, order: dict, market: Market = None) -> Order:
1042
1051
  #
1043
1052
  # createOrder, fetchOrder, fetchOpenOrders, fetchOrdersByStatus
1044
1053
  #
@@ -1082,7 +1091,6 @@ class kuna(Exchange, ImplicitAPI):
1082
1091
  #
1083
1092
  marketId = self.safe_string(order, 'pair')
1084
1093
  datetime = self.safe_string(order, 'createdAt')
1085
- triggerPrice = self.safe_string(order, 'stopPrice')
1086
1094
  side = self.safe_string(order, 'side')
1087
1095
  if side == 'Bid':
1088
1096
  side = 'buy'
@@ -1103,8 +1111,7 @@ class kuna(Exchange, ImplicitAPI):
1103
1111
  'postOnly': None,
1104
1112
  'side': side,
1105
1113
  'price': self.safe_string(order, 'price'),
1106
- 'stopPrice': triggerPrice,
1107
- 'triggerPrice': triggerPrice,
1114
+ 'triggerPrice': self.safe_string(order, 'stopPrice'),
1108
1115
  'amount': self.safe_string(order, 'quantity'),
1109
1116
  'filled': self.safe_string(order, 'executedQuantity'),
1110
1117
  'remaining': None,
@@ -1117,16 +1124,19 @@ class kuna(Exchange, ImplicitAPI):
1117
1124
  async def fetch_order(self, id: str, symbol: Str = None, params={}):
1118
1125
  """
1119
1126
  fetches information on an order made by the user
1120
- :see: https://docs.kuna.io/docs/get-order-details-by-id
1127
+
1128
+ https://docs.kuna.io/docs/get-order-details-by-id
1129
+
1130
+ :param str id: order id
1121
1131
  :param str symbol: not used by kuna fetchOrder
1122
1132
  :param dict [params]: extra parameters specific to the exchange API endpoint
1123
- *
1124
- * EXCHANGE SPECIFIC PARAMETERS
1133
+
1134
+ EXCHANGE SPECIFIC PARAMETERS
1125
1135
  :param boolean [params.withTrades]: default is True, specify if the response should include trades associated with the order
1126
1136
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1127
1137
  """
1128
1138
  await self.load_markets()
1129
- request = {
1139
+ request: dict = {
1130
1140
  'id': id,
1131
1141
  'withTrades': True,
1132
1142
  }
@@ -1165,20 +1175,22 @@ class kuna(Exchange, ImplicitAPI):
1165
1175
  # }
1166
1176
  # }
1167
1177
  #
1168
- data = self.safe_value(response, 'data', {})
1178
+ data = self.safe_dict(response, 'data', {})
1169
1179
  return self.parse_order(data)
1170
1180
 
1171
1181
  async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1172
1182
  """
1173
1183
  fetch all unfilled currently open orders
1174
- :see: https://docs.kuna.io/docs/get-active-client-orders-private
1184
+
1185
+ https://docs.kuna.io/docs/get-active-client-orders-private
1186
+
1175
1187
  :param str symbol: unified market symbol
1176
1188
  :param int [since]: the earliest time in ms to fetch open orders for
1177
1189
  :param int [limit]: 1-100, the maximum number of open orders structures to retrieve
1178
1190
  :param dict [params]: extra parameters specific to the exchange API endpoint
1179
1191
  :param int [params.until]: the latest timestamp(ms) to fetch orders for
1180
- *
1181
- * EXCHANGE SPECIFIC PARAMETERS
1192
+
1193
+ EXCHANGE SPECIFIC PARAMETERS
1182
1194
  :param str [params.sort]: asc(oldest-on-top) or desc(newest-on-top)
1183
1195
  :returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
1184
1196
  """
@@ -1186,7 +1198,7 @@ class kuna(Exchange, ImplicitAPI):
1186
1198
  until = self.safe_integer(params, 'until')
1187
1199
  params = self.omit(params, ['until'])
1188
1200
  market = None
1189
- request = {
1201
+ request: dict = {
1190
1202
  }
1191
1203
  if symbol is not None:
1192
1204
  market = self.market(symbol)
@@ -1219,20 +1231,22 @@ class kuna(Exchange, ImplicitAPI):
1219
1231
  # ]
1220
1232
  # }
1221
1233
  #
1222
- data = self.safe_value(response, 'data', [])
1234
+ data = self.safe_list(response, 'data', [])
1223
1235
  return self.parse_orders(data, market, since, limit)
1224
1236
 
1225
1237
  async def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1226
1238
  """
1227
1239
  fetches information on multiple closed orders made by the user
1228
- :see: https://docs.kuna.io/docs/get-private-orders-history
1240
+
1241
+ https://docs.kuna.io/docs/get-private-orders-history
1242
+
1229
1243
  :param str symbol: unified market symbol of the market orders were made in
1230
1244
  :param int [since]: the earliest time in ms to fetch orders for
1231
1245
  :param int [limit]: the maximum number of order structures to retrieve
1232
1246
  :param dict [params]: extra parameters specific to the exchange API endpoint
1233
1247
  :param int [params.until]: the latest time in ms to fetch orders for
1234
- *
1235
- * EXCHANGE SPECIFIC PARAMETERS
1248
+
1249
+ EXCHANGE SPECIFIC PARAMETERS
1236
1250
  :param str [params.sort]: asc(oldest-on-top) or desc(newest-on-top)
1237
1251
  :returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
1238
1252
  """
@@ -1241,15 +1255,17 @@ class kuna(Exchange, ImplicitAPI):
1241
1255
  async def fetch_orders_by_status(self, status, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
1242
1256
  """
1243
1257
  fetch a list of orders
1244
- :see: https://docs.kuna.io/docs/get-private-orders-history
1258
+
1259
+ https://docs.kuna.io/docs/get-private-orders-history
1260
+
1245
1261
  :param str status: canceled, closed, expired, open, pending, rejected, or waitStop
1246
1262
  :param str symbol: unified market symbol of the market orders were made in
1247
1263
  :param int [since]: the earliest time in ms to fetch orders for
1248
1264
  :param int [limit]: 1-100, the maximum number of open orders structures to retrieve
1249
1265
  :param dict [params]: extra parameters specific to the exchange API endpoint
1250
1266
  :param int [params.until]: the latest timestamp(ms) to fetch orders for
1251
- *
1252
- * EXCHANGE SPECIFIC PARAMETERS
1267
+
1268
+ EXCHANGE SPECIFIC PARAMETERS
1253
1269
  :param str [params.sort]: asc(oldest-on-top) or desc(newest-on-top)
1254
1270
  :returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
1255
1271
  """
@@ -1259,7 +1275,7 @@ class kuna(Exchange, ImplicitAPI):
1259
1275
  until = self.safe_integer(params, 'until')
1260
1276
  params = self.omit(params, ['until'])
1261
1277
  market = None
1262
- request = {
1278
+ request: dict = {
1263
1279
  'status': self.capitalize(status),
1264
1280
  }
1265
1281
  if symbol is not None:
@@ -1294,26 +1310,28 @@ class kuna(Exchange, ImplicitAPI):
1294
1310
  # ]
1295
1311
  # }
1296
1312
  #
1297
- data = self.safe_value(response, 'data', [])
1313
+ data = self.safe_list(response, 'data', [])
1298
1314
  return self.parse_orders(data, market, since, limit)
1299
1315
 
1300
1316
  async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
1301
1317
  """
1302
1318
  fetch all trades made by the user
1303
- :see: https://docs.kuna.io/docs/get-private-trades-history
1319
+
1320
+ https://docs.kuna.io/docs/get-private-trades-history
1321
+
1304
1322
  :param str symbol: unified market symbol
1305
1323
  :param int [since]: not used by kuna fetchMyTrades
1306
1324
  :param int [limit]: not used by kuna fetchMyTrades
1307
1325
  :param dict [params]: extra parameters specific to the exchange API endpoint
1308
- *
1309
- * EXCHANGE SPECIFIC PARAMETERS
1326
+
1327
+ EXCHANGE SPECIFIC PARAMETERS
1310
1328
  :param str [params.orderId]: UUID of an order, to receive trades for self order only
1311
1329
  :param str [params.sort]: asc(oldest-on-top) or desc(newest-on-top)
1312
1330
  :returns Trade[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
1313
1331
  """
1314
1332
  await self.load_markets()
1315
1333
  market = None
1316
- request = {}
1334
+ request: dict = {}
1317
1335
  if symbol is not None:
1318
1336
  market = self.market(symbol)
1319
1337
  request['pair'] = market['id']
@@ -1337,21 +1355,23 @@ class kuna(Exchange, ImplicitAPI):
1337
1355
  # ]
1338
1356
  # }
1339
1357
  #
1340
- data = self.safe_value(response, 'data')
1358
+ data = self.safe_list(response, 'data')
1341
1359
  return self.parse_trades(data, market, since, limit)
1342
1360
 
1343
- async def withdraw(self, code: str, amount: float, address, tag=None, params={}):
1361
+ async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
1344
1362
  """
1345
1363
  make a withdrawal
1346
- :see: https://docs.kuna.io/docs/create-a-withdraw
1364
+
1365
+ https://docs.kuna.io/docs/create-a-withdraw
1366
+
1347
1367
  :param str code: unified currency code
1348
1368
  :param float amount: the amount to withdraw
1349
1369
  :param str address: the address to withdraw to
1350
1370
  :param str tag:
1351
1371
  :param dict [params]: extra parameters specific to the exchange API endpoint
1352
1372
  :param str [params.chain]: the chain to withdraw to
1353
- *
1354
- * EXCHANGE SPECIFIC PARAMETERS
1373
+
1374
+ EXCHANGE SPECIFIC PARAMETERS
1355
1375
  :param str [params.id]: id must be a uuid format, if you do not specify id, it will be generated automatically
1356
1376
  :param boolean [params.withdrawAll]: self field says that the amount should also include a fee
1357
1377
  :returns dict: a `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
@@ -1367,7 +1387,7 @@ class kuna(Exchange, ImplicitAPI):
1367
1387
  else:
1368
1388
  chain = currency['id'].upper()
1369
1389
  networkId = self.network_code_to_id(chain)
1370
- request = {
1390
+ request: dict = {
1371
1391
  'currency': networkId,
1372
1392
  'amount': amount,
1373
1393
  'address': address,
@@ -1384,20 +1404,22 @@ class kuna(Exchange, ImplicitAPI):
1384
1404
  # }
1385
1405
  # }
1386
1406
  #
1387
- data = self.safe_value(response, 'data', {})
1407
+ data = self.safe_dict(response, 'data', {})
1388
1408
  return self.parse_transaction(data, currency)
1389
1409
 
1390
1410
  async def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1391
1411
  """
1392
1412
  fetch all withdrawals made to an account
1393
- :see: https://docs.kuna.io/docs/get-withdraw-history
1413
+
1414
+ https://docs.kuna.io/docs/get-withdraw-history
1415
+
1394
1416
  :param str code: unified currency code
1395
1417
  :param int [since]: the earliest time in ms to fetch withdrawals for
1396
1418
  :param int [limit]: the maximum number of withdrawals structures to retrieve
1397
1419
  :param dict [params]: extra parameters specific to the exchange API endpoint
1398
1420
  :param int [params.until]: the latest time in ms to fetch deposits for
1399
- *
1400
- * EXCHANGE SPECIFIC PARAMETERS
1421
+
1422
+ EXCHANGE SPECIFIC PARAMETERS
1401
1423
  :param str [params.status]: Created, Canceled, PartiallyProcessed, Processing, Processed, WaitForConfirmation, Pending, AmlChecking
1402
1424
  :param str [params.sortField]: amount(sorting by time), createdAt(sorting by date)
1403
1425
  :param str [params.sortOrder]: asc(oldest-on-top), or desc(newest-on-top, default)
@@ -1411,7 +1433,7 @@ class kuna(Exchange, ImplicitAPI):
1411
1433
  currency = None
1412
1434
  if code is not None:
1413
1435
  currency = self.currency(code)
1414
- request = {}
1436
+ request: dict = {}
1415
1437
  if code is not None:
1416
1438
  request['currency'] = code
1417
1439
  if since is not None:
@@ -1445,20 +1467,22 @@ class kuna(Exchange, ImplicitAPI):
1445
1467
  # ]
1446
1468
  # }
1447
1469
  #
1448
- data = self.safe_value(response, 'data', [])
1470
+ data = self.safe_list(response, 'data', [])
1449
1471
  return self.parse_transactions(data, currency)
1450
1472
 
1451
1473
  async def fetch_withdrawal(self, id: str, code: Str = None, params={}):
1452
1474
  """
1453
1475
  fetch data on a currency withdrawal via the withdrawal id
1454
- :see: https://docs.kuna.io/docs/get-withdraw-details-by-id
1476
+
1477
+ https://docs.kuna.io/docs/get-withdraw-details-by-id
1478
+
1455
1479
  :param str id: withdrawal id
1456
1480
  :param str code: not used by kuna.fetchWithdrawal
1457
1481
  :param dict [params]: extra parameters specific to the exchange API endpoint
1458
1482
  :returns dict: a `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
1459
1483
  """
1460
1484
  await self.load_markets()
1461
- request = {
1485
+ request: dict = {
1462
1486
  'withdrawId': id,
1463
1487
  }
1464
1488
  response = await self.v4PrivateGetWithdrawPrivateDetailsWithdrawId(self.extend(request, params))
@@ -1483,20 +1507,22 @@ class kuna(Exchange, ImplicitAPI):
1483
1507
  # }
1484
1508
  # }
1485
1509
  #
1486
- data = self.safe_value(response, 'data', {})
1510
+ data = self.safe_dict(response, 'data', {})
1487
1511
  return self.parse_transaction(data)
1488
1512
 
1489
1513
  async def create_deposit_address(self, code: str, params={}):
1490
1514
  """
1491
1515
  create a currency deposit address
1492
- :see: https://docs.kuna.io/docs/generate-a-constant-crypto-address-for-deposit
1516
+
1517
+ https://docs.kuna.io/docs/generate-a-constant-crypto-address-for-deposit
1518
+
1493
1519
  :param str code: unified currency code of the currency for the deposit address
1494
1520
  :param dict [params]: extra parameters specific to the exchange API endpoint
1495
1521
  :returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
1496
1522
  """
1497
1523
  await self.load_markets()
1498
1524
  currency = self.currency(code)
1499
- request = {
1525
+ request: dict = {
1500
1526
  'source': currency['id'],
1501
1527
  }
1502
1528
  response = await self.v4PrivatePostDepositPrivateCryptoGenerateAddress(self.extend(request, params))
@@ -1509,20 +1535,22 @@ class kuna(Exchange, ImplicitAPI):
1509
1535
  # }
1510
1536
  # }
1511
1537
  #
1512
- data = self.safe_value(response, 'data', {})
1538
+ data = self.safe_dict(response, 'data', {})
1513
1539
  return self.parse_deposit_address(data, currency)
1514
1540
 
1515
- async def fetch_deposit_address(self, code: str, params={}):
1541
+ async def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
1516
1542
  """
1517
1543
  fetch the deposit address for a currency associated with self account
1518
- :see: https://docs.kuna.io/docs/find-crypto-address-for-deposit
1544
+
1545
+ https://docs.kuna.io/docs/find-crypto-address-for-deposit
1546
+
1519
1547
  :param str code: unified currency code
1520
1548
  :param dict [params]: extra parameters specific to the exchange API endpoint
1521
1549
  :returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
1522
1550
  """
1523
1551
  await self.load_markets()
1524
1552
  currency = self.currency(code)
1525
- request = {
1553
+ request: dict = {
1526
1554
  'source': currency['id'].upper(),
1527
1555
  }
1528
1556
  response = await self.v4PrivateGetDepositPrivateCryptoAddress(self.extend(request, params))
@@ -1535,10 +1563,10 @@ class kuna(Exchange, ImplicitAPI):
1535
1563
  # }
1536
1564
  # }
1537
1565
  #
1538
- data = self.safe_value(response, 'data', {})
1566
+ data = self.safe_dict(response, 'data', {})
1539
1567
  return self.parse_deposit_address(data, currency)
1540
1568
 
1541
- def parse_deposit_address(self, depositAddress, currency: Currency = None):
1569
+ def parse_deposit_address(self, depositAddress, currency: Currency = None) -> DepositAddress:
1542
1570
  #
1543
1571
  # {
1544
1572
  # "id": "c52b6646-fb91-4760-b147-a4f952e8652c", # ID of the address.
@@ -1555,8 +1583,8 @@ class kuna(Exchange, ImplicitAPI):
1555
1583
  'tag': None,
1556
1584
  }
1557
1585
 
1558
- def parse_transaction_status(self, status):
1559
- statuses = {
1586
+ def parse_transaction_status(self, status: Str):
1587
+ statuses: dict = {
1560
1588
  'Created': 'pending',
1561
1589
  'Canceled': 'canceled',
1562
1590
  'PartiallyProcessed': 'pending',
@@ -1571,14 +1599,16 @@ class kuna(Exchange, ImplicitAPI):
1571
1599
  async def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1572
1600
  """
1573
1601
  fetch all deposits made to an account
1574
- :see: https://docs.kuna.io/docs/get-deposit-history
1602
+
1603
+ https://docs.kuna.io/docs/get-deposit-history
1604
+
1575
1605
  :param str code: unified currency code
1576
1606
  :param int [since]: the earliest time in ms to fetch deposits for
1577
1607
  :param int [limit]: the maximum number of deposits structures to retrieve
1578
1608
  :param dict [params]: extra parameters specific to the exchange API endpoint
1579
1609
  :param int [params.until]: the latest time in ms to fetch deposits for
1580
- *
1581
- * EXCHANGE SPECIFIC PARAMETERS
1610
+
1611
+ EXCHANGE SPECIFIC PARAMETERS
1582
1612
  :param str [params.status]: Created, Canceled, PartiallyProcessed, Processing, Processed, WaitForConfirmation, Pending, AmlChecking
1583
1613
  :param str [params.sortField]: amount(sorting by time), createdAt(sorting by date)
1584
1614
  :param str [params.sortOrder]: asc(oldest-on-top), or desc(newest-on-top, default)
@@ -1592,7 +1622,7 @@ class kuna(Exchange, ImplicitAPI):
1592
1622
  currency = None
1593
1623
  if code is not None:
1594
1624
  currency = self.currency(code)
1595
- request = {}
1625
+ request: dict = {}
1596
1626
  if code is not None:
1597
1627
  request['currency'] = code
1598
1628
  if since is not None:
@@ -1626,13 +1656,15 @@ class kuna(Exchange, ImplicitAPI):
1626
1656
  # ]
1627
1657
  # }
1628
1658
  #
1629
- data = self.safe_value(response, 'data', [])
1659
+ data = self.safe_list(response, 'data', [])
1630
1660
  return self.parse_transactions(data, currency)
1631
1661
 
1632
1662
  async def fetch_deposit(self, id: str, code: Str = None, params={}):
1633
1663
  """
1634
1664
  fetch data on a currency deposit via the deposit id
1635
- :see: https://docs.kuna.io/docs/get-deposit-details-by-id
1665
+
1666
+ https://docs.kuna.io/docs/get-deposit-details-by-id
1667
+
1636
1668
  :param str id: deposit id
1637
1669
  :param str code: filter by currency code
1638
1670
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1642,7 +1674,7 @@ class kuna(Exchange, ImplicitAPI):
1642
1674
  currency = None
1643
1675
  if code is not None:
1644
1676
  currency = self.currency(code)
1645
- request = {
1677
+ request: dict = {
1646
1678
  'depositId': id,
1647
1679
  }
1648
1680
  response = await self.v4PrivateGetDepositPrivateDetailsDepositId(self.extend(request, params))
@@ -1667,10 +1699,10 @@ class kuna(Exchange, ImplicitAPI):
1667
1699
  # }
1668
1700
  # }
1669
1701
  #
1670
- data = self.safe_value(response, 'data', {})
1702
+ data = self.safe_dict(response, 'data', {})
1671
1703
  return self.parse_transaction(data, currency)
1672
1704
 
1673
- def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
1705
+ def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
1674
1706
  #
1675
1707
  # {
1676
1708
  # "id": "a201cb3c-5830-57ac-ad2c-f6a588dd55eb", # Unique ID of deposit
@@ -1814,7 +1846,7 @@ class kuna(Exchange, ImplicitAPI):
1814
1846
  body = json.dumps(body)
1815
1847
  return {'url': url, 'method': method, 'body': body, 'headers': headers}
1816
1848
 
1817
- def handle_errors(self, code, reason, url, method, headers, body, response, requestHeaders, requestBody):
1849
+ def handle_errors(self, code: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
1818
1850
  #
1819
1851
  # {
1820
1852
  # "errors": [