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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (546) hide show
  1. ccxt/__init__.py +36 -14
  2. ccxt/abstract/alpaca.py +4 -0
  3. ccxt/abstract/bigone.py +1 -1
  4. ccxt/abstract/binance.py +112 -48
  5. ccxt/abstract/binancecoinm.py +112 -48
  6. ccxt/abstract/binanceus.py +147 -83
  7. ccxt/abstract/binanceusdm.py +112 -48
  8. ccxt/abstract/bingx.py +133 -78
  9. ccxt/abstract/bitbank.py +5 -0
  10. ccxt/abstract/bitfinex.py +136 -65
  11. ccxt/abstract/bitfinex1.py +69 -0
  12. ccxt/abstract/bitflyer.py +1 -0
  13. ccxt/abstract/bitget.py +8 -1
  14. ccxt/abstract/bitmart.py +13 -1
  15. ccxt/abstract/bitopro.py +1 -0
  16. ccxt/abstract/bitpanda.py +0 -12
  17. ccxt/abstract/bitrue.py +3 -3
  18. ccxt/abstract/bitstamp.py +26 -3
  19. ccxt/abstract/blofin.py +24 -0
  20. ccxt/abstract/btcbox.py +1 -0
  21. ccxt/abstract/bybit.py +29 -14
  22. ccxt/abstract/cex.py +28 -29
  23. ccxt/abstract/coinbase.py +6 -0
  24. ccxt/abstract/coinbaseadvanced.py +94 -0
  25. ccxt/abstract/{coinbasepro.py → coinbaseexchange.py} +1 -0
  26. ccxt/abstract/coinbaseinternational.py +1 -1
  27. ccxt/abstract/coincatch.py +94 -0
  28. ccxt/abstract/coinex.py +233 -123
  29. ccxt/abstract/coinmetro.py +1 -0
  30. ccxt/abstract/cryptocom.py +14 -0
  31. ccxt/abstract/defx.py +69 -0
  32. ccxt/abstract/deribit.py +1 -0
  33. ccxt/abstract/digifinex.py +1 -0
  34. ccxt/abstract/ellipx.py +25 -0
  35. ccxt/abstract/gate.py +20 -0
  36. ccxt/abstract/gateio.py +20 -0
  37. ccxt/abstract/gemini.py +1 -0
  38. ccxt/abstract/hashkey.py +67 -0
  39. ccxt/abstract/hyperliquid.py +1 -1
  40. ccxt/abstract/independentreserve.py +6 -0
  41. ccxt/abstract/kraken.py +4 -3
  42. ccxt/abstract/krakenfutures.py +4 -0
  43. ccxt/abstract/kucoin.py +24 -0
  44. ccxt/abstract/kucoinfutures.py +34 -0
  45. ccxt/abstract/luno.py +2 -0
  46. ccxt/abstract/mexc.py +4 -0
  47. ccxt/abstract/myokx.py +340 -0
  48. ccxt/abstract/oceanex.py +5 -0
  49. ccxt/abstract/okx.py +30 -0
  50. ccxt/abstract/onetrading.py +0 -12
  51. ccxt/abstract/oxfun.py +34 -0
  52. ccxt/abstract/paradex.py +40 -0
  53. ccxt/abstract/phemex.py +1 -0
  54. ccxt/abstract/upbit.py +4 -0
  55. ccxt/abstract/vertex.py +19 -0
  56. ccxt/abstract/whitebit.py +31 -1
  57. ccxt/abstract/woo.py +6 -2
  58. ccxt/abstract/woofipro.py +119 -0
  59. ccxt/abstract/xt.py +153 -0
  60. ccxt/abstract/zonda.py +6 -0
  61. ccxt/ace.py +164 -60
  62. ccxt/alpaca.py +727 -63
  63. ccxt/ascendex.py +395 -249
  64. ccxt/async_support/__init__.py +36 -14
  65. ccxt/async_support/ace.py +164 -60
  66. ccxt/async_support/alpaca.py +727 -63
  67. ccxt/async_support/ascendex.py +396 -249
  68. ccxt/async_support/base/exchange.py +531 -155
  69. ccxt/async_support/base/ws/aiohttp_client.py +28 -5
  70. ccxt/async_support/base/ws/cache.py +3 -2
  71. ccxt/async_support/base/ws/client.py +26 -5
  72. ccxt/async_support/base/ws/fast_client.py +4 -3
  73. ccxt/async_support/base/ws/functions.py +1 -1
  74. ccxt/async_support/base/ws/future.py +40 -31
  75. ccxt/async_support/base/ws/order_book_side.py +3 -0
  76. ccxt/async_support/bequant.py +1 -1
  77. ccxt/async_support/bigone.py +329 -202
  78. ccxt/async_support/binance.py +3030 -1087
  79. ccxt/async_support/binancecoinm.py +2 -1
  80. ccxt/async_support/binanceus.py +12 -1
  81. ccxt/async_support/binanceusdm.py +3 -1
  82. ccxt/async_support/bingx.py +3205 -937
  83. ccxt/async_support/bit2c.py +119 -38
  84. ccxt/async_support/bitbank.py +215 -76
  85. ccxt/async_support/bitbns.py +124 -53
  86. ccxt/async_support/bitfinex.py +3236 -1078
  87. ccxt/async_support/bitfinex1.py +1711 -0
  88. ccxt/async_support/bitflyer.py +238 -49
  89. ccxt/async_support/bitget.py +1525 -573
  90. ccxt/async_support/bithumb.py +199 -65
  91. ccxt/async_support/bitmart.py +1320 -435
  92. ccxt/async_support/bitmex.py +308 -111
  93. ccxt/async_support/bitopro.py +256 -96
  94. ccxt/async_support/bitrue.py +365 -233
  95. ccxt/async_support/bitso.py +201 -89
  96. ccxt/async_support/bitstamp.py +438 -269
  97. ccxt/async_support/bitteam.py +179 -73
  98. ccxt/async_support/bitvavo.py +180 -70
  99. ccxt/async_support/bl3p.py +92 -25
  100. ccxt/async_support/blockchaincom.py +193 -79
  101. ccxt/async_support/blofin.py +392 -148
  102. ccxt/async_support/btcalpha.py +161 -55
  103. ccxt/async_support/btcbox.py +250 -34
  104. ccxt/async_support/btcmarkets.py +232 -85
  105. ccxt/async_support/btcturk.py +159 -60
  106. ccxt/async_support/bybit.py +2231 -1193
  107. ccxt/async_support/cex.py +1409 -1329
  108. ccxt/async_support/coinbase.py +1454 -287
  109. ccxt/async_support/coinbaseadvanced.py +17 -0
  110. ccxt/async_support/{coinbasepro.py → coinbaseexchange.py} +233 -99
  111. ccxt/async_support/coinbaseinternational.py +428 -88
  112. ccxt/async_support/coincatch.py +5152 -0
  113. ccxt/async_support/coincheck.py +121 -38
  114. ccxt/async_support/coinex.py +4020 -3339
  115. ccxt/async_support/coinlist.py +273 -116
  116. ccxt/async_support/coinmate.py +204 -97
  117. ccxt/async_support/coinmetro.py +203 -110
  118. ccxt/async_support/coinone.py +142 -68
  119. ccxt/async_support/coinsph.py +223 -97
  120. ccxt/async_support/coinspot.py +137 -62
  121. ccxt/async_support/cryptocom.py +515 -185
  122. ccxt/async_support/currencycom.py +203 -85
  123. ccxt/async_support/defx.py +2066 -0
  124. ccxt/async_support/delta.py +404 -109
  125. ccxt/async_support/deribit.py +639 -323
  126. ccxt/async_support/digifinex.py +465 -233
  127. ccxt/async_support/ellipx.py +1887 -0
  128. ccxt/async_support/exmo.py +317 -128
  129. ccxt/async_support/gate.py +1472 -463
  130. ccxt/async_support/gemini.py +206 -84
  131. ccxt/async_support/hashkey.py +4164 -0
  132. ccxt/async_support/hitbtc.py +433 -178
  133. ccxt/async_support/hollaex.py +207 -83
  134. ccxt/async_support/htx.py +1095 -563
  135. ccxt/async_support/huobijp.py +178 -56
  136. ccxt/async_support/hyperliquid.py +1678 -292
  137. ccxt/async_support/idex.py +219 -95
  138. ccxt/async_support/independentreserve.py +300 -31
  139. ccxt/async_support/indodax.py +226 -62
  140. ccxt/async_support/kraken.py +871 -354
  141. ccxt/async_support/krakenfutures.py +324 -100
  142. ccxt/async_support/kucoin.py +917 -357
  143. ccxt/async_support/kucoinfutures.py +1004 -149
  144. ccxt/async_support/kuna.py +198 -107
  145. ccxt/async_support/latoken.py +199 -79
  146. ccxt/async_support/lbank.py +360 -113
  147. ccxt/async_support/luno.py +185 -62
  148. ccxt/async_support/lykke.py +168 -55
  149. ccxt/async_support/mercado.py +101 -29
  150. ccxt/async_support/mexc.py +995 -429
  151. ccxt/async_support/myokx.py +53 -0
  152. ccxt/async_support/ndax.py +234 -82
  153. ccxt/async_support/novadax.py +195 -75
  154. ccxt/async_support/oceanex.py +244 -59
  155. ccxt/async_support/okcoin.py +301 -165
  156. ccxt/async_support/okx.py +1776 -454
  157. ccxt/async_support/onetrading.py +198 -414
  158. ccxt/async_support/oxfun.py +2898 -0
  159. ccxt/async_support/p2b.py +142 -52
  160. ccxt/async_support/paradex.py +2085 -0
  161. ccxt/async_support/paymium.py +56 -32
  162. ccxt/async_support/phemex.py +572 -196
  163. ccxt/async_support/poloniex.py +218 -95
  164. ccxt/async_support/poloniexfutures.py +260 -92
  165. ccxt/async_support/probit.py +143 -110
  166. ccxt/async_support/timex.py +123 -70
  167. ccxt/async_support/tokocrypto.py +129 -93
  168. ccxt/async_support/tradeogre.py +39 -25
  169. ccxt/async_support/upbit.py +322 -113
  170. ccxt/async_support/vertex.py +2983 -0
  171. ccxt/async_support/wavesexchange.py +227 -173
  172. ccxt/async_support/wazirx.py +145 -65
  173. ccxt/async_support/whitebit.py +533 -138
  174. ccxt/async_support/woo.py +1137 -296
  175. ccxt/async_support/woofipro.py +2716 -0
  176. ccxt/async_support/xt.py +4628 -0
  177. ccxt/async_support/yobit.py +160 -92
  178. ccxt/async_support/zaif.py +80 -33
  179. ccxt/async_support/zonda.py +140 -69
  180. ccxt/base/errors.py +51 -20
  181. ccxt/base/exchange.py +1722 -480
  182. ccxt/base/precise.py +10 -0
  183. ccxt/base/types.py +223 -4
  184. ccxt/bequant.py +1 -1
  185. ccxt/bigone.py +329 -202
  186. ccxt/binance.py +3030 -1087
  187. ccxt/binancecoinm.py +2 -1
  188. ccxt/binanceus.py +12 -1
  189. ccxt/binanceusdm.py +3 -1
  190. ccxt/bingx.py +3205 -937
  191. ccxt/bit2c.py +119 -38
  192. ccxt/bitbank.py +215 -76
  193. ccxt/bitbns.py +124 -53
  194. ccxt/bitfinex.py +3235 -1078
  195. ccxt/bitfinex1.py +1710 -0
  196. ccxt/bitflyer.py +238 -49
  197. ccxt/bitget.py +1525 -573
  198. ccxt/bithumb.py +198 -65
  199. ccxt/bitmart.py +1320 -435
  200. ccxt/bitmex.py +308 -111
  201. ccxt/bitopro.py +256 -96
  202. ccxt/bitrue.py +365 -233
  203. ccxt/bitso.py +201 -89
  204. ccxt/bitstamp.py +438 -269
  205. ccxt/bitteam.py +179 -73
  206. ccxt/bitvavo.py +180 -70
  207. ccxt/bl3p.py +92 -25
  208. ccxt/blockchaincom.py +193 -79
  209. ccxt/blofin.py +392 -148
  210. ccxt/btcalpha.py +161 -55
  211. ccxt/btcbox.py +250 -34
  212. ccxt/btcmarkets.py +232 -85
  213. ccxt/btcturk.py +159 -60
  214. ccxt/bybit.py +2231 -1193
  215. ccxt/cex.py +1408 -1329
  216. ccxt/coinbase.py +1454 -287
  217. ccxt/coinbaseadvanced.py +17 -0
  218. ccxt/{coinbasepro.py → coinbaseexchange.py} +233 -99
  219. ccxt/coinbaseinternational.py +428 -88
  220. ccxt/coincatch.py +5152 -0
  221. ccxt/coincheck.py +121 -38
  222. ccxt/coinex.py +4020 -3339
  223. ccxt/coinlist.py +273 -116
  224. ccxt/coinmate.py +204 -97
  225. ccxt/coinmetro.py +203 -110
  226. ccxt/coinone.py +142 -68
  227. ccxt/coinsph.py +223 -97
  228. ccxt/coinspot.py +137 -62
  229. ccxt/cryptocom.py +515 -185
  230. ccxt/currencycom.py +203 -85
  231. ccxt/defx.py +2065 -0
  232. ccxt/delta.py +404 -109
  233. ccxt/deribit.py +639 -323
  234. ccxt/digifinex.py +465 -233
  235. ccxt/ellipx.py +1887 -0
  236. ccxt/exmo.py +317 -128
  237. ccxt/gate.py +1472 -463
  238. ccxt/gemini.py +206 -84
  239. ccxt/hashkey.py +4164 -0
  240. ccxt/hitbtc.py +433 -178
  241. ccxt/hollaex.py +207 -83
  242. ccxt/htx.py +1095 -563
  243. ccxt/huobijp.py +178 -56
  244. ccxt/hyperliquid.py +1677 -292
  245. ccxt/idex.py +219 -95
  246. ccxt/independentreserve.py +299 -31
  247. ccxt/indodax.py +226 -62
  248. ccxt/kraken.py +871 -354
  249. ccxt/krakenfutures.py +324 -100
  250. ccxt/kucoin.py +917 -357
  251. ccxt/kucoinfutures.py +1004 -149
  252. ccxt/kuna.py +198 -107
  253. ccxt/latoken.py +199 -79
  254. ccxt/lbank.py +360 -113
  255. ccxt/luno.py +185 -62
  256. ccxt/lykke.py +168 -55
  257. ccxt/mercado.py +101 -29
  258. ccxt/mexc.py +994 -429
  259. ccxt/myokx.py +53 -0
  260. ccxt/ndax.py +234 -82
  261. ccxt/novadax.py +195 -75
  262. ccxt/oceanex.py +244 -59
  263. ccxt/okcoin.py +301 -165
  264. ccxt/okx.py +1776 -454
  265. ccxt/onetrading.py +198 -414
  266. ccxt/oxfun.py +2897 -0
  267. ccxt/p2b.py +142 -52
  268. ccxt/paradex.py +2085 -0
  269. ccxt/paymium.py +56 -32
  270. ccxt/phemex.py +572 -196
  271. ccxt/poloniex.py +218 -95
  272. ccxt/poloniexfutures.py +260 -92
  273. ccxt/pro/__init__.py +29 -5
  274. ccxt/pro/alpaca.py +32 -17
  275. ccxt/pro/ascendex.py +62 -14
  276. ccxt/pro/bequant.py +4 -0
  277. ccxt/pro/binance.py +1596 -329
  278. ccxt/pro/binancecoinm.py +1 -0
  279. ccxt/pro/binanceus.py +2 -9
  280. ccxt/pro/binanceusdm.py +2 -0
  281. ccxt/pro/bingx.py +527 -134
  282. ccxt/pro/bitcoincom.py +4 -1
  283. ccxt/pro/bitfinex.py +731 -266
  284. ccxt/pro/bitfinex1.py +635 -0
  285. ccxt/pro/bitget.py +726 -357
  286. ccxt/pro/bithumb.py +380 -0
  287. ccxt/pro/bitmart.py +143 -39
  288. ccxt/pro/bitmex.py +199 -40
  289. ccxt/pro/bitopro.py +25 -13
  290. ccxt/pro/bitrue.py +31 -32
  291. ccxt/pro/bitstamp.py +7 -6
  292. ccxt/pro/bitvavo.py +203 -81
  293. ccxt/pro/blockchaincom.py +30 -17
  294. ccxt/pro/blofin.py +692 -0
  295. ccxt/pro/bybit.py +791 -82
  296. ccxt/pro/cex.py +99 -51
  297. ccxt/pro/coinbase.py +220 -30
  298. ccxt/{async_support/hitbtc3.py → pro/coinbaseadvanced.py} +5 -5
  299. ccxt/pro/{coinbasepro.py → coinbaseexchange.py} +19 -19
  300. ccxt/pro/coinbaseinternational.py +193 -30
  301. ccxt/pro/coincatch.py +1464 -0
  302. ccxt/pro/coincheck.py +11 -6
  303. ccxt/pro/coinex.py +965 -665
  304. ccxt/pro/coinone.py +17 -10
  305. ccxt/pro/cryptocom.py +446 -66
  306. ccxt/pro/currencycom.py +11 -10
  307. ccxt/pro/defx.py +832 -0
  308. ccxt/pro/deribit.py +167 -31
  309. ccxt/pro/exmo.py +252 -20
  310. ccxt/pro/gate.py +729 -64
  311. ccxt/pro/gemini.py +44 -26
  312. ccxt/pro/hashkey.py +802 -0
  313. ccxt/pro/hitbtc.py +208 -103
  314. ccxt/pro/hollaex.py +25 -9
  315. ccxt/pro/htx.py +83 -39
  316. ccxt/pro/huobijp.py +17 -16
  317. ccxt/pro/hyperliquid.py +502 -31
  318. ccxt/pro/idex.py +28 -13
  319. ccxt/pro/independentreserve.py +21 -16
  320. ccxt/pro/kraken.py +298 -51
  321. ccxt/pro/krakenfutures.py +166 -75
  322. ccxt/pro/kucoin.py +395 -77
  323. ccxt/pro/kucoinfutures.py +400 -99
  324. ccxt/pro/lbank.py +52 -31
  325. ccxt/pro/luno.py +12 -10
  326. ccxt/pro/mexc.py +400 -50
  327. ccxt/pro/myokx.py +28 -0
  328. ccxt/pro/ndax.py +25 -12
  329. ccxt/pro/okcoin.py +28 -9
  330. ccxt/pro/okx.py +935 -124
  331. ccxt/pro/onetrading.py +41 -24
  332. ccxt/pro/oxfun.py +1054 -0
  333. ccxt/pro/p2b.py +100 -24
  334. ccxt/pro/paradex.py +352 -0
  335. ccxt/pro/phemex.py +92 -33
  336. ccxt/pro/poloniex.py +128 -49
  337. ccxt/pro/poloniexfutures.py +53 -32
  338. ccxt/pro/probit.py +92 -85
  339. ccxt/pro/upbit.py +401 -8
  340. ccxt/pro/vertex.py +943 -0
  341. ccxt/pro/wazirx.py +46 -28
  342. ccxt/pro/whitebit.py +65 -12
  343. ccxt/pro/woo.py +437 -65
  344. ccxt/pro/woofipro.py +1271 -0
  345. ccxt/pro/xt.py +1067 -0
  346. ccxt/probit.py +143 -110
  347. ccxt/static_dependencies/__init__.py +1 -1
  348. ccxt/static_dependencies/lark/__init__.py +38 -0
  349. ccxt/static_dependencies/lark/__pyinstaller/__init__.py +6 -0
  350. ccxt/static_dependencies/lark/__pyinstaller/hook-lark.py +14 -0
  351. ccxt/static_dependencies/lark/ast_utils.py +59 -0
  352. ccxt/static_dependencies/lark/common.py +86 -0
  353. ccxt/static_dependencies/lark/exceptions.py +292 -0
  354. ccxt/static_dependencies/lark/grammar.py +130 -0
  355. ccxt/static_dependencies/lark/grammars/__init__.py +0 -0
  356. ccxt/static_dependencies/lark/indenter.py +143 -0
  357. ccxt/static_dependencies/lark/lark.py +658 -0
  358. ccxt/static_dependencies/lark/lexer.py +678 -0
  359. ccxt/static_dependencies/lark/load_grammar.py +1428 -0
  360. ccxt/static_dependencies/lark/parse_tree_builder.py +391 -0
  361. ccxt/static_dependencies/lark/parser_frontends.py +257 -0
  362. ccxt/static_dependencies/lark/parsers/__init__.py +0 -0
  363. ccxt/static_dependencies/lark/parsers/cyk.py +340 -0
  364. ccxt/static_dependencies/lark/parsers/earley.py +314 -0
  365. ccxt/static_dependencies/lark/parsers/earley_common.py +42 -0
  366. ccxt/static_dependencies/lark/parsers/earley_forest.py +801 -0
  367. ccxt/static_dependencies/lark/parsers/grammar_analysis.py +203 -0
  368. ccxt/static_dependencies/lark/parsers/lalr_analysis.py +332 -0
  369. ccxt/static_dependencies/lark/parsers/lalr_interactive_parser.py +158 -0
  370. ccxt/static_dependencies/lark/parsers/lalr_parser.py +122 -0
  371. ccxt/static_dependencies/lark/parsers/lalr_parser_state.py +110 -0
  372. ccxt/static_dependencies/lark/parsers/xearley.py +165 -0
  373. ccxt/static_dependencies/lark/py.typed +0 -0
  374. ccxt/static_dependencies/lark/reconstruct.py +107 -0
  375. ccxt/static_dependencies/lark/tools/__init__.py +70 -0
  376. ccxt/static_dependencies/lark/tools/nearley.py +202 -0
  377. ccxt/static_dependencies/lark/tools/serialize.py +32 -0
  378. ccxt/static_dependencies/lark/tools/standalone.py +196 -0
  379. ccxt/static_dependencies/lark/tree.py +267 -0
  380. ccxt/static_dependencies/lark/tree_matcher.py +186 -0
  381. ccxt/static_dependencies/lark/tree_templates.py +180 -0
  382. ccxt/static_dependencies/lark/utils.py +343 -0
  383. ccxt/static_dependencies/lark/visitors.py +596 -0
  384. ccxt/static_dependencies/marshmallow/__init__.py +81 -0
  385. ccxt/static_dependencies/marshmallow/base.py +65 -0
  386. ccxt/static_dependencies/marshmallow/class_registry.py +94 -0
  387. ccxt/static_dependencies/marshmallow/decorators.py +231 -0
  388. ccxt/static_dependencies/marshmallow/error_store.py +60 -0
  389. ccxt/static_dependencies/marshmallow/exceptions.py +71 -0
  390. ccxt/static_dependencies/marshmallow/fields.py +2114 -0
  391. ccxt/static_dependencies/marshmallow/orderedset.py +89 -0
  392. ccxt/static_dependencies/marshmallow/py.typed +0 -0
  393. ccxt/static_dependencies/marshmallow/schema.py +1228 -0
  394. ccxt/static_dependencies/marshmallow/types.py +12 -0
  395. ccxt/static_dependencies/marshmallow/utils.py +378 -0
  396. ccxt/static_dependencies/marshmallow/validate.py +678 -0
  397. ccxt/static_dependencies/marshmallow/warnings.py +2 -0
  398. ccxt/static_dependencies/marshmallow_dataclass/__init__.py +1047 -0
  399. ccxt/static_dependencies/marshmallow_dataclass/collection_field.py +51 -0
  400. ccxt/static_dependencies/marshmallow_dataclass/lazy_class_attribute.py +45 -0
  401. ccxt/static_dependencies/marshmallow_dataclass/mypy.py +71 -0
  402. ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
  403. ccxt/static_dependencies/marshmallow_dataclass/typing.py +14 -0
  404. ccxt/static_dependencies/marshmallow_dataclass/union_field.py +82 -0
  405. ccxt/static_dependencies/marshmallow_oneofschema/__init__.py +1 -0
  406. ccxt/static_dependencies/marshmallow_oneofschema/one_of_schema.py +193 -0
  407. ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
  408. ccxt/static_dependencies/starknet/__init__.py +0 -0
  409. ccxt/static_dependencies/starknet/cairo/__init__.py +0 -0
  410. ccxt/static_dependencies/starknet/cairo/data_types.py +123 -0
  411. ccxt/static_dependencies/starknet/cairo/deprecated_parse/__init__.py +0 -0
  412. ccxt/static_dependencies/starknet/cairo/deprecated_parse/cairo_types.py +77 -0
  413. ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser.py +46 -0
  414. ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser_transformer.py +138 -0
  415. ccxt/static_dependencies/starknet/cairo/felt.py +64 -0
  416. ccxt/static_dependencies/starknet/cairo/type_parser.py +121 -0
  417. ccxt/static_dependencies/starknet/cairo/v1/__init__.py +0 -0
  418. ccxt/static_dependencies/starknet/cairo/v1/type_parser.py +59 -0
  419. ccxt/static_dependencies/starknet/cairo/v2/__init__.py +0 -0
  420. ccxt/static_dependencies/starknet/cairo/v2/type_parser.py +77 -0
  421. ccxt/static_dependencies/starknet/ccxt_utils.py +7 -0
  422. ccxt/static_dependencies/starknet/common.py +15 -0
  423. ccxt/static_dependencies/starknet/constants.py +39 -0
  424. ccxt/static_dependencies/starknet/hash/__init__.py +0 -0
  425. ccxt/static_dependencies/starknet/hash/address.py +79 -0
  426. ccxt/static_dependencies/starknet/hash/compiled_class_hash_objects.py +111 -0
  427. ccxt/static_dependencies/starknet/hash/selector.py +16 -0
  428. ccxt/static_dependencies/starknet/hash/storage.py +12 -0
  429. ccxt/static_dependencies/starknet/hash/utils.py +78 -0
  430. ccxt/static_dependencies/starknet/models/__init__.py +0 -0
  431. ccxt/static_dependencies/starknet/models/typed_data.py +45 -0
  432. ccxt/static_dependencies/starknet/serialization/__init__.py +24 -0
  433. ccxt/static_dependencies/starknet/serialization/_calldata_reader.py +40 -0
  434. ccxt/static_dependencies/starknet/serialization/_context.py +142 -0
  435. ccxt/static_dependencies/starknet/serialization/data_serializers/__init__.py +10 -0
  436. ccxt/static_dependencies/starknet/serialization/data_serializers/_common.py +82 -0
  437. ccxt/static_dependencies/starknet/serialization/data_serializers/array_serializer.py +43 -0
  438. ccxt/static_dependencies/starknet/serialization/data_serializers/bool_serializer.py +37 -0
  439. ccxt/static_dependencies/starknet/serialization/data_serializers/byte_array_serializer.py +66 -0
  440. ccxt/static_dependencies/starknet/serialization/data_serializers/cairo_data_serializer.py +71 -0
  441. ccxt/static_dependencies/starknet/serialization/data_serializers/enum_serializer.py +71 -0
  442. ccxt/static_dependencies/starknet/serialization/data_serializers/felt_serializer.py +50 -0
  443. ccxt/static_dependencies/starknet/serialization/data_serializers/named_tuple_serializer.py +58 -0
  444. ccxt/static_dependencies/starknet/serialization/data_serializers/option_serializer.py +43 -0
  445. ccxt/static_dependencies/starknet/serialization/data_serializers/output_serializer.py +40 -0
  446. ccxt/static_dependencies/starknet/serialization/data_serializers/payload_serializer.py +72 -0
  447. ccxt/static_dependencies/starknet/serialization/data_serializers/struct_serializer.py +36 -0
  448. ccxt/static_dependencies/starknet/serialization/data_serializers/tuple_serializer.py +36 -0
  449. ccxt/static_dependencies/starknet/serialization/data_serializers/uint256_serializer.py +76 -0
  450. ccxt/static_dependencies/starknet/serialization/data_serializers/uint_serializer.py +100 -0
  451. ccxt/static_dependencies/starknet/serialization/data_serializers/unit_serializer.py +32 -0
  452. ccxt/static_dependencies/starknet/serialization/errors.py +10 -0
  453. ccxt/static_dependencies/starknet/serialization/factory.py +229 -0
  454. ccxt/static_dependencies/starknet/serialization/function_serialization_adapter.py +110 -0
  455. ccxt/static_dependencies/starknet/serialization/tuple_dataclass.py +59 -0
  456. ccxt/static_dependencies/starknet/utils/__init__.py +0 -0
  457. ccxt/static_dependencies/starknet/utils/constructor_args_translator.py +86 -0
  458. ccxt/static_dependencies/starknet/utils/iterable.py +13 -0
  459. ccxt/static_dependencies/starknet/utils/schema.py +13 -0
  460. ccxt/static_dependencies/starknet/utils/typed_data.py +182 -0
  461. ccxt/static_dependencies/starkware/__init__.py +0 -0
  462. ccxt/static_dependencies/starkware/crypto/__init__.py +0 -0
  463. ccxt/static_dependencies/starkware/crypto/fast_pedersen_hash.py +50 -0
  464. ccxt/static_dependencies/starkware/crypto/math_utils.py +78 -0
  465. ccxt/static_dependencies/starkware/crypto/signature.py +2344 -0
  466. ccxt/static_dependencies/starkware/crypto/utils.py +63 -0
  467. ccxt/static_dependencies/sympy/__init__.py +0 -0
  468. ccxt/static_dependencies/sympy/core/__init__.py +0 -0
  469. ccxt/static_dependencies/sympy/core/intfunc.py +35 -0
  470. ccxt/static_dependencies/sympy/external/__init__.py +0 -0
  471. ccxt/static_dependencies/sympy/external/gmpy.py +345 -0
  472. ccxt/static_dependencies/sympy/external/importtools.py +187 -0
  473. ccxt/static_dependencies/sympy/external/ntheory.py +637 -0
  474. ccxt/static_dependencies/sympy/external/pythonmpq.py +341 -0
  475. ccxt/static_dependencies/typing_inspect/__init__.py +0 -0
  476. ccxt/static_dependencies/typing_inspect/typing_inspect.py +851 -0
  477. ccxt/test/{test_async.py → tests_async.py} +456 -391
  478. ccxt/test/tests_helpers.py +285 -0
  479. ccxt/test/tests_init.py +39 -0
  480. ccxt/test/{test_sync.py → tests_sync.py} +456 -393
  481. ccxt/timex.py +123 -70
  482. ccxt/tokocrypto.py +129 -93
  483. ccxt/tradeogre.py +39 -25
  484. ccxt/upbit.py +322 -113
  485. ccxt/vertex.py +2983 -0
  486. ccxt/wavesexchange.py +227 -173
  487. ccxt/wazirx.py +145 -65
  488. ccxt/whitebit.py +533 -138
  489. ccxt/woo.py +1137 -296
  490. ccxt/woofipro.py +2716 -0
  491. ccxt/xt.py +4627 -0
  492. ccxt/yobit.py +159 -92
  493. ccxt/zaif.py +80 -33
  494. ccxt/zonda.py +140 -69
  495. ccxt-4.4.49.dist-info/LICENSE.txt +21 -0
  496. ccxt-4.4.49.dist-info/METADATA +646 -0
  497. ccxt-4.4.49.dist-info/RECORD +669 -0
  498. {ccxt-4.2.77.dist-info → ccxt-4.4.49.dist-info}/WHEEL +1 -1
  499. ccxt/abstract/bitbay.py +0 -47
  500. ccxt/abstract/bitfinex2.py +0 -139
  501. ccxt/abstract/hitbtc3.py +0 -115
  502. ccxt/async_support/bitbay.py +0 -17
  503. ccxt/async_support/bitfinex2.py +0 -3496
  504. ccxt/async_support/flowbtc.py +0 -34
  505. ccxt/bitbay.py +0 -17
  506. ccxt/bitfinex2.py +0 -3496
  507. ccxt/flowbtc.py +0 -34
  508. ccxt/hitbtc3.py +0 -16
  509. ccxt/pro/bitfinex2.py +0 -1081
  510. ccxt/test/base/__init__.py +0 -28
  511. ccxt/test/base/test_account.py +0 -26
  512. ccxt/test/base/test_balance.py +0 -56
  513. ccxt/test/base/test_borrow_interest.py +0 -35
  514. ccxt/test/base/test_borrow_rate.py +0 -32
  515. ccxt/test/base/test_calculate_fee.py +0 -51
  516. ccxt/test/base/test_crypto.py +0 -127
  517. ccxt/test/base/test_currency.py +0 -76
  518. ccxt/test/base/test_datetime.py +0 -103
  519. ccxt/test/base/test_decimal_to_precision.py +0 -392
  520. ccxt/test/base/test_deep_extend.py +0 -68
  521. ccxt/test/base/test_deposit_withdrawal.py +0 -50
  522. ccxt/test/base/test_exchange_datetime_functions.py +0 -76
  523. ccxt/test/base/test_funding_rate_history.py +0 -29
  524. ccxt/test/base/test_last_price.py +0 -32
  525. ccxt/test/base/test_ledger_entry.py +0 -45
  526. ccxt/test/base/test_ledger_item.py +0 -48
  527. ccxt/test/base/test_leverage_tier.py +0 -33
  528. ccxt/test/base/test_margin_mode.py +0 -24
  529. ccxt/test/base/test_margin_modification.py +0 -35
  530. ccxt/test/base/test_market.py +0 -190
  531. ccxt/test/base/test_number.py +0 -411
  532. ccxt/test/base/test_ohlcv.py +0 -32
  533. ccxt/test/base/test_open_interest.py +0 -32
  534. ccxt/test/base/test_order.py +0 -64
  535. ccxt/test/base/test_order_book.py +0 -63
  536. ccxt/test/base/test_position.py +0 -60
  537. ccxt/test/base/test_shared_methods.py +0 -345
  538. ccxt/test/base/test_status.py +0 -24
  539. ccxt/test/base/test_throttle.py +0 -126
  540. ccxt/test/base/test_ticker.py +0 -86
  541. ccxt/test/base/test_trade.py +0 -47
  542. ccxt/test/base/test_trading_fee.py +0 -26
  543. ccxt/test/base/test_transaction.py +0 -39
  544. ccxt-4.2.77.dist-info/METADATA +0 -626
  545. ccxt-4.2.77.dist-info/RECORD +0 -534
  546. {ccxt-4.2.77.dist-info → ccxt-4.4.49.dist-info}/top_level.txt +0 -0
@@ -7,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,
@@ -76,7 +78,7 @@ class kuna(Exchange, ImplicitAPI):
76
78
  'fetchMarkets': True,
77
79
  'fetchMarkOHLCV': False,
78
80
  'fetchMyTrades': True,
79
- 'fetchOHLCV': 'emulated',
81
+ 'fetchOHLCV': False,
80
82
  'fetchOpenInterest': False,
81
83
  'fetchOpenInterestHistory': False,
82
84
  'fetchOpenOrders': True,
@@ -361,6 +363,65 @@ class kuna(Exchange, ImplicitAPI):
361
363
  ],
362
364
  },
363
365
  },
366
+ 'features': {
367
+ 'spot': {
368
+ 'sandbox': False,
369
+ 'createOrder': {
370
+ 'marginMode': False,
371
+ 'triggerPrice': True,
372
+ 'triggerPriceType': None,
373
+ 'triggerDirection': False,
374
+ 'stopLossPrice': False, # todo
375
+ 'takeProfitPrice': False, # todo
376
+ 'attachedStopLossTakeProfit': None,
377
+ 'timeInForce': {
378
+ 'IOC': False,
379
+ 'FOK': False,
380
+ 'PO': False,
381
+ 'GTD': False,
382
+ },
383
+ 'hedged': False,
384
+ 'selfTradePrevention': False,
385
+ 'trailing': False,
386
+ 'leverage': False,
387
+ 'marketBuyByCost': True,
388
+ 'marketBuyRequiresPrice': False,
389
+ 'iceberg': False,
390
+ },
391
+ 'createOrders': None,
392
+ 'fetchMyTrades': None, # todo implement
393
+ 'fetchOrder': {
394
+ 'marginMode': False,
395
+ 'trigger': False,
396
+ 'trailing': False,
397
+ },
398
+ 'fetchOpenOrders': {
399
+ 'marginMode': False,
400
+ 'limit': 100,
401
+ 'trigger': False,
402
+ 'trailing': False,
403
+ },
404
+ 'fetchOrders': None,
405
+ 'fetchClosedOrders': {
406
+ 'marginMode': False,
407
+ 'limit': 100,
408
+ 'daysBack': 100000, # todo
409
+ 'daysBackCanceled': 1,
410
+ 'untilDays': 14,
411
+ 'trigger': False,
412
+ 'trailing': False,
413
+ },
414
+ 'fetchOHLCV': None,
415
+ },
416
+ 'swap': {
417
+ 'linear': None,
418
+ 'inverse': None,
419
+ },
420
+ 'future': {
421
+ 'linear': None,
422
+ 'inverse': None,
423
+ },
424
+ },
364
425
  'fees': {
365
426
  'trading': {
366
427
  'tierBased': False,
@@ -409,7 +470,9 @@ class kuna(Exchange, ImplicitAPI):
409
470
  async def fetch_time(self, params={}):
410
471
  """
411
472
  fetches the current integer timestamp in milliseconds from the exchange server
412
- :see: https://docs.kuna.io/docs/get-time-on-the-server
473
+
474
+ https://docs.kuna.io/docs/get-time-on-the-server
475
+
413
476
  :param dict [params]: extra parameters specific to the exchange API endpoint
414
477
  :returns int: the current integer timestamp in milliseconds from the exchange server
415
478
  """
@@ -425,10 +488,12 @@ class kuna(Exchange, ImplicitAPI):
425
488
  data = self.safe_value(response, 'data', {})
426
489
  return self.safe_integer(data, 'timestamp_miliseconds')
427
490
 
428
- async def fetch_currencies(self, params={}):
491
+ async def fetch_currencies(self, params={}) -> Currencies:
429
492
  """
430
493
  fetches all available currencies on an exchange
431
- :see: https://docs.kuna.io/docs/get-information-about-available-currencies
494
+
495
+ https://docs.kuna.io/docs/get-information-about-available-currencies
496
+
432
497
  :param dict [params]: extra parameters specific to the exchange API endpoint
433
498
  :returns dict: an associative dictionary of currencies
434
499
  """
@@ -460,15 +525,7 @@ class kuna(Exchange, ImplicitAPI):
460
525
  data = self.safe_value(response, 'data', [])
461
526
  return self.parse_currencies(data)
462
527
 
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):
528
+ def parse_currency(self, currency: dict) -> Currency:
472
529
  #
473
530
  # {
474
531
  # "code": "BTC",
@@ -492,7 +549,7 @@ class kuna(Exchange, ImplicitAPI):
492
549
  currencyId = self.safe_string(currency, 'code')
493
550
  precision = self.safe_string(currency, 'precision')
494
551
  tradePrecision = self.safe_string(currency, 'tradePrecision')
495
- return {
552
+ return self.safe_currency_structure({
496
553
  'info': currency,
497
554
  'id': currencyId,
498
555
  'code': self.safe_currency_code(currencyId),
@@ -503,7 +560,7 @@ class kuna(Exchange, ImplicitAPI):
503
560
  'deposit': None,
504
561
  'withdraw': None,
505
562
  'fee': None,
506
- 'precision': Precise.string_min(precision, tradePrecision),
563
+ 'precision': self.parse_number(Precise.string_min(precision, tradePrecision)),
507
564
  'limits': {
508
565
  'amount': {
509
566
  'min': None,
@@ -515,12 +572,14 @@ class kuna(Exchange, ImplicitAPI):
515
572
  },
516
573
  },
517
574
  'networks': {},
518
- }
575
+ })
519
576
 
520
- async def fetch_markets(self, params={}):
577
+ async def fetch_markets(self, params={}) -> List[Market]:
521
578
  """
522
579
  retrieves data on all markets for kuna
523
- :see: https://docs.kuna.io/docs/get-all-traded-markets
580
+
581
+ https://docs.kuna.io/docs/get-all-traded-markets
582
+
524
583
  :param dict [params]: extra parameters specific to the exchange API endpoint
525
584
  :returns dict[]: an array of objects representing market data
526
585
  """
@@ -610,7 +669,9 @@ class kuna(Exchange, ImplicitAPI):
610
669
  async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
611
670
  """
612
671
  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
672
+
673
+ https://docs.kuna.io/docs/get-public-orders-book
674
+
614
675
  :param str symbol: unified symbol of the market to fetch the order book for
615
676
  :param int [limit]: 5, 10, 20, 50, 100, 500, or 1000(default)
616
677
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -618,7 +679,7 @@ class kuna(Exchange, ImplicitAPI):
618
679
  """
619
680
  await self.load_markets()
620
681
  market = self.market(symbol)
621
- request = {
682
+ request: dict = {
622
683
  'pairs': market['id'],
623
684
  }
624
685
  if limit is not None:
@@ -650,10 +711,10 @@ class kuna(Exchange, ImplicitAPI):
650
711
  # }
651
712
  # }
652
713
  #
653
- data = self.safe_value(response, 'data', {})
714
+ data = self.safe_dict(response, 'data', {})
654
715
  return self.parse_order_book(data, market['symbol'], None, 'bids', 'asks', 0, 1)
655
716
 
656
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
717
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
657
718
  #
658
719
  # {
659
720
  # "pair": "BTC_USDT", # Traded pair
@@ -694,7 +755,9 @@ class kuna(Exchange, ImplicitAPI):
694
755
  async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
695
756
  """
696
757
  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
758
+
759
+ https://docs.kuna.io/docs/get-market-info-by-tickers
760
+
698
761
  :param str[] [symbols]: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
699
762
  :param dict [params]: extra parameters specific to the exchange API endpoint
700
763
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -704,7 +767,7 @@ class kuna(Exchange, ImplicitAPI):
704
767
  raise ArgumentsRequired(self.id + ' fetchTickers() requires a symbols argument')
705
768
  symbols = self.market_symbols(symbols)
706
769
  marketIds = self.market_ids(symbols)
707
- request = {
770
+ request: dict = {
708
771
  'pairs': ','.join(marketIds),
709
772
  }
710
773
  response = await self.v4PublicGetMarketsPublicTickersPairsPairs(self.extend(request, params))
@@ -728,20 +791,22 @@ class kuna(Exchange, ImplicitAPI):
728
791
  # ]
729
792
  # }
730
793
  #
731
- data = self.safe_value(response, 'data', [])
794
+ data = self.safe_list(response, 'data', [])
732
795
  return self.parse_tickers(data, symbols, params)
733
796
 
734
797
  async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
735
798
  """
736
799
  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
800
+
801
+ https://docs.kuna.io/docs/get-market-info-by-tickers
802
+
738
803
  :param str symbol: unified symbol of the market to fetch the ticker for
739
804
  :param dict [params]: extra parameters specific to the exchange API endpoint
740
805
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
741
806
  """
742
807
  await self.load_markets()
743
808
  market = self.market(symbol)
744
- request = {
809
+ request: dict = {
745
810
  'pairs': market['id'],
746
811
  }
747
812
  response = await self.v4PublicGetMarketsPublicTickersPairsPairs(self.extend(request, params))
@@ -766,12 +831,12 @@ class kuna(Exchange, ImplicitAPI):
766
831
  # }
767
832
  #
768
833
  data = self.safe_value(response, 'data', [])
769
- ticker = self.safe_value(data, 0)
834
+ ticker = self.safe_dict(data, 0)
770
835
  return self.parse_ticker(ticker, market)
771
836
 
772
837
  async def fetch_l3_order_book(self, symbol: str, limit: Int = None, params={}):
773
838
  """
774
- * TODO: double check
839
+ TODO: double check
775
840
  fetches level 3 information on open orders with bid(buy) and ask(sell) prices, volumes and other data
776
841
  :param str symbol: unified market symbol
777
842
  :param int [limit]: max number of orders to return, default is None
@@ -783,7 +848,9 @@ class kuna(Exchange, ImplicitAPI):
783
848
  async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
784
849
  """
785
850
  get the list of most recent trades for a particular symbol
786
- :see: https://docs.kuna.io/docs/get-public-trades-book
851
+
852
+ https://docs.kuna.io/docs/get-public-trades-book
853
+
787
854
  :param str symbol: unified symbol of the market to fetch trades for
788
855
  :param int [since]: timestamp in ms of the earliest trade to fetch
789
856
  :param int [limit]: between 1 and 100, 25 by default
@@ -792,7 +859,7 @@ class kuna(Exchange, ImplicitAPI):
792
859
  """
793
860
  await self.load_markets()
794
861
  market = self.market(symbol)
795
- request = {
862
+ request: dict = {
796
863
  'pairs': market['id'],
797
864
  }
798
865
  if limit is not None:
@@ -817,7 +884,7 @@ class kuna(Exchange, ImplicitAPI):
817
884
  data = self.safe_list(response, 'data', [])
818
885
  return self.parse_trades(data, market, since, limit)
819
886
 
820
- def parse_trade(self, trade, market: Market = None) -> Trade:
887
+ def parse_trade(self, trade: dict, market: Market = None) -> Trade:
821
888
  #
822
889
  # fetchTrades(public)
823
890
  #
@@ -870,7 +937,6 @@ class kuna(Exchange, ImplicitAPI):
870
937
  'fee': {
871
938
  'cost': self.safe_string(trade, 'fee'),
872
939
  'currency': self.safe_currency_code(self.safe_string(trade, 'feeCurrency')),
873
- 'rate': None,
874
940
  },
875
941
  }, market)
876
942
 
@@ -885,7 +951,7 @@ class kuna(Exchange, ImplicitAPI):
885
951
  # ...
886
952
  # ]
887
953
  #
888
- result = {'info': response}
954
+ result: dict = {'info': response}
889
955
  for i in range(0, len(response)):
890
956
  balance = response[i]
891
957
  currencyId = self.safe_string(balance, 'currency')
@@ -919,16 +985,18 @@ class kuna(Exchange, ImplicitAPI):
919
985
  async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
920
986
  """
921
987
  create a trade order
922
- :see: https://docs.kuna.io/docs/create-a-new-order-private
988
+
989
+ https://docs.kuna.io/docs/create-a-new-order-private
990
+
923
991
  :param str symbol: unified symbol of the market to create an order in
924
992
  :param str type: 'market' or 'limit'
925
993
  :param str side: 'buy' or 'sell'
926
994
  :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
995
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
928
996
  :param dict [params]: extra parameters specific to the exchange API endpoint
929
997
  :param float [params.triggerPrice]: the price at which a trigger order is triggered at
930
- *
931
- * EXCHANGE SPECIFIC PARAMETERS
998
+
999
+ EXCHANGE SPECIFIC PARAMETERS
932
1000
  :param str [params.id]: id must be a UUID format, if you do not specify id, it will be generated automatically.
933
1001
  :param float [params.quoteQuantity]: the max quantity of the quote asset to use for selling/buying
934
1002
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
@@ -938,7 +1006,7 @@ class kuna(Exchange, ImplicitAPI):
938
1006
  triggerPrice = self.safe_string_2(params, 'triggerPrice', 'stopPrice')
939
1007
  params = self.omit(params, ['triggerPrice', 'stopPrice'])
940
1008
  capitalizedType = self.capitalize(type)
941
- request = {
1009
+ request: dict = {
942
1010
  'pair': market['id'],
943
1011
  'orderSide': 'Bid' if (side == 'buy') else 'Ask',
944
1012
  'quantity': self.number_to_string(amount),
@@ -968,7 +1036,7 @@ class kuna(Exchange, ImplicitAPI):
968
1036
  # }
969
1037
  # }
970
1038
  #
971
- data = self.safe_value(response, 'data', {})
1039
+ data = self.safe_dict(response, 'data', {})
972
1040
  return self.parse_order(data, market)
973
1041
 
974
1042
  async def cancel_order(self, id: str, symbol: Str = None, params={}):
@@ -980,7 +1048,7 @@ class kuna(Exchange, ImplicitAPI):
980
1048
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
981
1049
  """
982
1050
  await self.load_markets()
983
- request = {
1051
+ request: dict = {
984
1052
  'orderId': id,
985
1053
  }
986
1054
  response = await self.v4PrivatePostOrderPrivateCancel(self.extend(request, params))
@@ -1008,7 +1076,7 @@ class kuna(Exchange, ImplicitAPI):
1008
1076
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1009
1077
  """
1010
1078
  await self.load_markets()
1011
- request = {
1079
+ request: dict = {
1012
1080
  'orderIds': ids,
1013
1081
  }
1014
1082
  response = await self.v4PrivatePostOrderPrivateCancelMulti(self.extend(request, params))
@@ -1023,11 +1091,11 @@ class kuna(Exchange, ImplicitAPI):
1023
1091
  # ]
1024
1092
  # }
1025
1093
  #
1026
- data = self.safe_value(response, 'data', [])
1094
+ data = self.safe_list(response, 'data', [])
1027
1095
  return self.parse_orders(data)
1028
1096
 
1029
- def parse_order_status(self, status):
1030
- statuses = {
1097
+ def parse_order_status(self, status: Str):
1098
+ statuses: dict = {
1031
1099
  'Canceled': 'canceled',
1032
1100
  'Closed': 'filled',
1033
1101
  'Pending': 'open',
@@ -1038,7 +1106,7 @@ class kuna(Exchange, ImplicitAPI):
1038
1106
  }
1039
1107
  return self.safe_string(statuses, status, status)
1040
1108
 
1041
- def parse_order(self, order, market: Market = None) -> Order:
1109
+ def parse_order(self, order: dict, market: Market = None) -> Order:
1042
1110
  #
1043
1111
  # createOrder, fetchOrder, fetchOpenOrders, fetchOrdersByStatus
1044
1112
  #
@@ -1082,7 +1150,6 @@ class kuna(Exchange, ImplicitAPI):
1082
1150
  #
1083
1151
  marketId = self.safe_string(order, 'pair')
1084
1152
  datetime = self.safe_string(order, 'createdAt')
1085
- triggerPrice = self.safe_string(order, 'stopPrice')
1086
1153
  side = self.safe_string(order, 'side')
1087
1154
  if side == 'Bid':
1088
1155
  side = 'buy'
@@ -1103,8 +1170,7 @@ class kuna(Exchange, ImplicitAPI):
1103
1170
  'postOnly': None,
1104
1171
  'side': side,
1105
1172
  'price': self.safe_string(order, 'price'),
1106
- 'stopPrice': triggerPrice,
1107
- 'triggerPrice': triggerPrice,
1173
+ 'triggerPrice': self.safe_string(order, 'stopPrice'),
1108
1174
  'amount': self.safe_string(order, 'quantity'),
1109
1175
  'filled': self.safe_string(order, 'executedQuantity'),
1110
1176
  'remaining': None,
@@ -1117,16 +1183,19 @@ class kuna(Exchange, ImplicitAPI):
1117
1183
  async def fetch_order(self, id: str, symbol: Str = None, params={}):
1118
1184
  """
1119
1185
  fetches information on an order made by the user
1120
- :see: https://docs.kuna.io/docs/get-order-details-by-id
1186
+
1187
+ https://docs.kuna.io/docs/get-order-details-by-id
1188
+
1189
+ :param str id: order id
1121
1190
  :param str symbol: not used by kuna fetchOrder
1122
1191
  :param dict [params]: extra parameters specific to the exchange API endpoint
1123
- *
1124
- * EXCHANGE SPECIFIC PARAMETERS
1192
+
1193
+ EXCHANGE SPECIFIC PARAMETERS
1125
1194
  :param boolean [params.withTrades]: default is True, specify if the response should include trades associated with the order
1126
1195
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1127
1196
  """
1128
1197
  await self.load_markets()
1129
- request = {
1198
+ request: dict = {
1130
1199
  'id': id,
1131
1200
  'withTrades': True,
1132
1201
  }
@@ -1165,20 +1234,22 @@ class kuna(Exchange, ImplicitAPI):
1165
1234
  # }
1166
1235
  # }
1167
1236
  #
1168
- data = self.safe_value(response, 'data', {})
1237
+ data = self.safe_dict(response, 'data', {})
1169
1238
  return self.parse_order(data)
1170
1239
 
1171
1240
  async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1172
1241
  """
1173
1242
  fetch all unfilled currently open orders
1174
- :see: https://docs.kuna.io/docs/get-active-client-orders-private
1243
+
1244
+ https://docs.kuna.io/docs/get-active-client-orders-private
1245
+
1175
1246
  :param str symbol: unified market symbol
1176
1247
  :param int [since]: the earliest time in ms to fetch open orders for
1177
1248
  :param int [limit]: 1-100, the maximum number of open orders structures to retrieve
1178
1249
  :param dict [params]: extra parameters specific to the exchange API endpoint
1179
1250
  :param int [params.until]: the latest timestamp(ms) to fetch orders for
1180
- *
1181
- * EXCHANGE SPECIFIC PARAMETERS
1251
+
1252
+ EXCHANGE SPECIFIC PARAMETERS
1182
1253
  :param str [params.sort]: asc(oldest-on-top) or desc(newest-on-top)
1183
1254
  :returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
1184
1255
  """
@@ -1186,7 +1257,7 @@ class kuna(Exchange, ImplicitAPI):
1186
1257
  until = self.safe_integer(params, 'until')
1187
1258
  params = self.omit(params, ['until'])
1188
1259
  market = None
1189
- request = {
1260
+ request: dict = {
1190
1261
  }
1191
1262
  if symbol is not None:
1192
1263
  market = self.market(symbol)
@@ -1219,20 +1290,22 @@ class kuna(Exchange, ImplicitAPI):
1219
1290
  # ]
1220
1291
  # }
1221
1292
  #
1222
- data = self.safe_value(response, 'data', [])
1293
+ data = self.safe_list(response, 'data', [])
1223
1294
  return self.parse_orders(data, market, since, limit)
1224
1295
 
1225
1296
  async def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1226
1297
  """
1227
1298
  fetches information on multiple closed orders made by the user
1228
- :see: https://docs.kuna.io/docs/get-private-orders-history
1299
+
1300
+ https://docs.kuna.io/docs/get-private-orders-history
1301
+
1229
1302
  :param str symbol: unified market symbol of the market orders were made in
1230
1303
  :param int [since]: the earliest time in ms to fetch orders for
1231
1304
  :param int [limit]: the maximum number of order structures to retrieve
1232
1305
  :param dict [params]: extra parameters specific to the exchange API endpoint
1233
1306
  :param int [params.until]: the latest time in ms to fetch orders for
1234
- *
1235
- * EXCHANGE SPECIFIC PARAMETERS
1307
+
1308
+ EXCHANGE SPECIFIC PARAMETERS
1236
1309
  :param str [params.sort]: asc(oldest-on-top) or desc(newest-on-top)
1237
1310
  :returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
1238
1311
  """
@@ -1241,15 +1314,17 @@ class kuna(Exchange, ImplicitAPI):
1241
1314
  async def fetch_orders_by_status(self, status, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
1242
1315
  """
1243
1316
  fetch a list of orders
1244
- :see: https://docs.kuna.io/docs/get-private-orders-history
1317
+
1318
+ https://docs.kuna.io/docs/get-private-orders-history
1319
+
1245
1320
  :param str status: canceled, closed, expired, open, pending, rejected, or waitStop
1246
1321
  :param str symbol: unified market symbol of the market orders were made in
1247
1322
  :param int [since]: the earliest time in ms to fetch orders for
1248
1323
  :param int [limit]: 1-100, the maximum number of open orders structures to retrieve
1249
1324
  :param dict [params]: extra parameters specific to the exchange API endpoint
1250
1325
  :param int [params.until]: the latest timestamp(ms) to fetch orders for
1251
- *
1252
- * EXCHANGE SPECIFIC PARAMETERS
1326
+
1327
+ EXCHANGE SPECIFIC PARAMETERS
1253
1328
  :param str [params.sort]: asc(oldest-on-top) or desc(newest-on-top)
1254
1329
  :returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
1255
1330
  """
@@ -1259,7 +1334,7 @@ class kuna(Exchange, ImplicitAPI):
1259
1334
  until = self.safe_integer(params, 'until')
1260
1335
  params = self.omit(params, ['until'])
1261
1336
  market = None
1262
- request = {
1337
+ request: dict = {
1263
1338
  'status': self.capitalize(status),
1264
1339
  }
1265
1340
  if symbol is not None:
@@ -1294,26 +1369,28 @@ class kuna(Exchange, ImplicitAPI):
1294
1369
  # ]
1295
1370
  # }
1296
1371
  #
1297
- data = self.safe_value(response, 'data', [])
1372
+ data = self.safe_list(response, 'data', [])
1298
1373
  return self.parse_orders(data, market, since, limit)
1299
1374
 
1300
1375
  async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
1301
1376
  """
1302
1377
  fetch all trades made by the user
1303
- :see: https://docs.kuna.io/docs/get-private-trades-history
1378
+
1379
+ https://docs.kuna.io/docs/get-private-trades-history
1380
+
1304
1381
  :param str symbol: unified market symbol
1305
1382
  :param int [since]: not used by kuna fetchMyTrades
1306
1383
  :param int [limit]: not used by kuna fetchMyTrades
1307
1384
  :param dict [params]: extra parameters specific to the exchange API endpoint
1308
- *
1309
- * EXCHANGE SPECIFIC PARAMETERS
1385
+
1386
+ EXCHANGE SPECIFIC PARAMETERS
1310
1387
  :param str [params.orderId]: UUID of an order, to receive trades for self order only
1311
1388
  :param str [params.sort]: asc(oldest-on-top) or desc(newest-on-top)
1312
1389
  :returns Trade[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
1313
1390
  """
1314
1391
  await self.load_markets()
1315
1392
  market = None
1316
- request = {}
1393
+ request: dict = {}
1317
1394
  if symbol is not None:
1318
1395
  market = self.market(symbol)
1319
1396
  request['pair'] = market['id']
@@ -1337,21 +1414,23 @@ class kuna(Exchange, ImplicitAPI):
1337
1414
  # ]
1338
1415
  # }
1339
1416
  #
1340
- data = self.safe_value(response, 'data')
1417
+ data = self.safe_list(response, 'data')
1341
1418
  return self.parse_trades(data, market, since, limit)
1342
1419
 
1343
- async def withdraw(self, code: str, amount: float, address, tag=None, params={}):
1420
+ async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
1344
1421
  """
1345
1422
  make a withdrawal
1346
- :see: https://docs.kuna.io/docs/create-a-withdraw
1423
+
1424
+ https://docs.kuna.io/docs/create-a-withdraw
1425
+
1347
1426
  :param str code: unified currency code
1348
1427
  :param float amount: the amount to withdraw
1349
1428
  :param str address: the address to withdraw to
1350
1429
  :param str tag:
1351
1430
  :param dict [params]: extra parameters specific to the exchange API endpoint
1352
1431
  :param str [params.chain]: the chain to withdraw to
1353
- *
1354
- * EXCHANGE SPECIFIC PARAMETERS
1432
+
1433
+ EXCHANGE SPECIFIC PARAMETERS
1355
1434
  :param str [params.id]: id must be a uuid format, if you do not specify id, it will be generated automatically
1356
1435
  :param boolean [params.withdrawAll]: self field says that the amount should also include a fee
1357
1436
  :returns dict: a `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
@@ -1367,7 +1446,7 @@ class kuna(Exchange, ImplicitAPI):
1367
1446
  else:
1368
1447
  chain = currency['id'].upper()
1369
1448
  networkId = self.network_code_to_id(chain)
1370
- request = {
1449
+ request: dict = {
1371
1450
  'currency': networkId,
1372
1451
  'amount': amount,
1373
1452
  'address': address,
@@ -1384,20 +1463,22 @@ class kuna(Exchange, ImplicitAPI):
1384
1463
  # }
1385
1464
  # }
1386
1465
  #
1387
- data = self.safe_value(response, 'data', {})
1466
+ data = self.safe_dict(response, 'data', {})
1388
1467
  return self.parse_transaction(data, currency)
1389
1468
 
1390
1469
  async def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1391
1470
  """
1392
1471
  fetch all withdrawals made to an account
1393
- :see: https://docs.kuna.io/docs/get-withdraw-history
1472
+
1473
+ https://docs.kuna.io/docs/get-withdraw-history
1474
+
1394
1475
  :param str code: unified currency code
1395
1476
  :param int [since]: the earliest time in ms to fetch withdrawals for
1396
1477
  :param int [limit]: the maximum number of withdrawals structures to retrieve
1397
1478
  :param dict [params]: extra parameters specific to the exchange API endpoint
1398
1479
  :param int [params.until]: the latest time in ms to fetch deposits for
1399
- *
1400
- * EXCHANGE SPECIFIC PARAMETERS
1480
+
1481
+ EXCHANGE SPECIFIC PARAMETERS
1401
1482
  :param str [params.status]: Created, Canceled, PartiallyProcessed, Processing, Processed, WaitForConfirmation, Pending, AmlChecking
1402
1483
  :param str [params.sortField]: amount(sorting by time), createdAt(sorting by date)
1403
1484
  :param str [params.sortOrder]: asc(oldest-on-top), or desc(newest-on-top, default)
@@ -1411,7 +1492,7 @@ class kuna(Exchange, ImplicitAPI):
1411
1492
  currency = None
1412
1493
  if code is not None:
1413
1494
  currency = self.currency(code)
1414
- request = {}
1495
+ request: dict = {}
1415
1496
  if code is not None:
1416
1497
  request['currency'] = code
1417
1498
  if since is not None:
@@ -1445,20 +1526,22 @@ class kuna(Exchange, ImplicitAPI):
1445
1526
  # ]
1446
1527
  # }
1447
1528
  #
1448
- data = self.safe_value(response, 'data', [])
1529
+ data = self.safe_list(response, 'data', [])
1449
1530
  return self.parse_transactions(data, currency)
1450
1531
 
1451
1532
  async def fetch_withdrawal(self, id: str, code: Str = None, params={}):
1452
1533
  """
1453
1534
  fetch data on a currency withdrawal via the withdrawal id
1454
- :see: https://docs.kuna.io/docs/get-withdraw-details-by-id
1535
+
1536
+ https://docs.kuna.io/docs/get-withdraw-details-by-id
1537
+
1455
1538
  :param str id: withdrawal id
1456
1539
  :param str code: not used by kuna.fetchWithdrawal
1457
1540
  :param dict [params]: extra parameters specific to the exchange API endpoint
1458
1541
  :returns dict: a `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
1459
1542
  """
1460
1543
  await self.load_markets()
1461
- request = {
1544
+ request: dict = {
1462
1545
  'withdrawId': id,
1463
1546
  }
1464
1547
  response = await self.v4PrivateGetWithdrawPrivateDetailsWithdrawId(self.extend(request, params))
@@ -1483,20 +1566,22 @@ class kuna(Exchange, ImplicitAPI):
1483
1566
  # }
1484
1567
  # }
1485
1568
  #
1486
- data = self.safe_value(response, 'data', {})
1569
+ data = self.safe_dict(response, 'data', {})
1487
1570
  return self.parse_transaction(data)
1488
1571
 
1489
1572
  async def create_deposit_address(self, code: str, params={}):
1490
1573
  """
1491
1574
  create a currency deposit address
1492
- :see: https://docs.kuna.io/docs/generate-a-constant-crypto-address-for-deposit
1575
+
1576
+ https://docs.kuna.io/docs/generate-a-constant-crypto-address-for-deposit
1577
+
1493
1578
  :param str code: unified currency code of the currency for the deposit address
1494
1579
  :param dict [params]: extra parameters specific to the exchange API endpoint
1495
1580
  :returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
1496
1581
  """
1497
1582
  await self.load_markets()
1498
1583
  currency = self.currency(code)
1499
- request = {
1584
+ request: dict = {
1500
1585
  'source': currency['id'],
1501
1586
  }
1502
1587
  response = await self.v4PrivatePostDepositPrivateCryptoGenerateAddress(self.extend(request, params))
@@ -1509,20 +1594,22 @@ class kuna(Exchange, ImplicitAPI):
1509
1594
  # }
1510
1595
  # }
1511
1596
  #
1512
- data = self.safe_value(response, 'data', {})
1597
+ data = self.safe_dict(response, 'data', {})
1513
1598
  return self.parse_deposit_address(data, currency)
1514
1599
 
1515
- async def fetch_deposit_address(self, code: str, params={}):
1600
+ async def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
1516
1601
  """
1517
1602
  fetch the deposit address for a currency associated with self account
1518
- :see: https://docs.kuna.io/docs/find-crypto-address-for-deposit
1603
+
1604
+ https://docs.kuna.io/docs/find-crypto-address-for-deposit
1605
+
1519
1606
  :param str code: unified currency code
1520
1607
  :param dict [params]: extra parameters specific to the exchange API endpoint
1521
1608
  :returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
1522
1609
  """
1523
1610
  await self.load_markets()
1524
1611
  currency = self.currency(code)
1525
- request = {
1612
+ request: dict = {
1526
1613
  'source': currency['id'].upper(),
1527
1614
  }
1528
1615
  response = await self.v4PrivateGetDepositPrivateCryptoAddress(self.extend(request, params))
@@ -1535,10 +1622,10 @@ class kuna(Exchange, ImplicitAPI):
1535
1622
  # }
1536
1623
  # }
1537
1624
  #
1538
- data = self.safe_value(response, 'data', {})
1625
+ data = self.safe_dict(response, 'data', {})
1539
1626
  return self.parse_deposit_address(data, currency)
1540
1627
 
1541
- def parse_deposit_address(self, depositAddress, currency: Currency = None):
1628
+ def parse_deposit_address(self, depositAddress, currency: Currency = None) -> DepositAddress:
1542
1629
  #
1543
1630
  # {
1544
1631
  # "id": "c52b6646-fb91-4760-b147-a4f952e8652c", # ID of the address.
@@ -1555,8 +1642,8 @@ class kuna(Exchange, ImplicitAPI):
1555
1642
  'tag': None,
1556
1643
  }
1557
1644
 
1558
- def parse_transaction_status(self, status):
1559
- statuses = {
1645
+ def parse_transaction_status(self, status: Str):
1646
+ statuses: dict = {
1560
1647
  'Created': 'pending',
1561
1648
  'Canceled': 'canceled',
1562
1649
  'PartiallyProcessed': 'pending',
@@ -1571,14 +1658,16 @@ class kuna(Exchange, ImplicitAPI):
1571
1658
  async def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1572
1659
  """
1573
1660
  fetch all deposits made to an account
1574
- :see: https://docs.kuna.io/docs/get-deposit-history
1661
+
1662
+ https://docs.kuna.io/docs/get-deposit-history
1663
+
1575
1664
  :param str code: unified currency code
1576
1665
  :param int [since]: the earliest time in ms to fetch deposits for
1577
1666
  :param int [limit]: the maximum number of deposits structures to retrieve
1578
1667
  :param dict [params]: extra parameters specific to the exchange API endpoint
1579
1668
  :param int [params.until]: the latest time in ms to fetch deposits for
1580
- *
1581
- * EXCHANGE SPECIFIC PARAMETERS
1669
+
1670
+ EXCHANGE SPECIFIC PARAMETERS
1582
1671
  :param str [params.status]: Created, Canceled, PartiallyProcessed, Processing, Processed, WaitForConfirmation, Pending, AmlChecking
1583
1672
  :param str [params.sortField]: amount(sorting by time), createdAt(sorting by date)
1584
1673
  :param str [params.sortOrder]: asc(oldest-on-top), or desc(newest-on-top, default)
@@ -1592,7 +1681,7 @@ class kuna(Exchange, ImplicitAPI):
1592
1681
  currency = None
1593
1682
  if code is not None:
1594
1683
  currency = self.currency(code)
1595
- request = {}
1684
+ request: dict = {}
1596
1685
  if code is not None:
1597
1686
  request['currency'] = code
1598
1687
  if since is not None:
@@ -1626,13 +1715,15 @@ class kuna(Exchange, ImplicitAPI):
1626
1715
  # ]
1627
1716
  # }
1628
1717
  #
1629
- data = self.safe_value(response, 'data', [])
1718
+ data = self.safe_list(response, 'data', [])
1630
1719
  return self.parse_transactions(data, currency)
1631
1720
 
1632
1721
  async def fetch_deposit(self, id: str, code: Str = None, params={}):
1633
1722
  """
1634
1723
  fetch data on a currency deposit via the deposit id
1635
- :see: https://docs.kuna.io/docs/get-deposit-details-by-id
1724
+
1725
+ https://docs.kuna.io/docs/get-deposit-details-by-id
1726
+
1636
1727
  :param str id: deposit id
1637
1728
  :param str code: filter by currency code
1638
1729
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1642,7 +1733,7 @@ class kuna(Exchange, ImplicitAPI):
1642
1733
  currency = None
1643
1734
  if code is not None:
1644
1735
  currency = self.currency(code)
1645
- request = {
1736
+ request: dict = {
1646
1737
  'depositId': id,
1647
1738
  }
1648
1739
  response = await self.v4PrivateGetDepositPrivateDetailsDepositId(self.extend(request, params))
@@ -1667,10 +1758,10 @@ class kuna(Exchange, ImplicitAPI):
1667
1758
  # }
1668
1759
  # }
1669
1760
  #
1670
- data = self.safe_value(response, 'data', {})
1761
+ data = self.safe_dict(response, 'data', {})
1671
1762
  return self.parse_transaction(data, currency)
1672
1763
 
1673
- def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
1764
+ def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
1674
1765
  #
1675
1766
  # {
1676
1767
  # "id": "a201cb3c-5830-57ac-ad2c-f6a588dd55eb", # Unique ID of deposit
@@ -1814,7 +1905,7 @@ class kuna(Exchange, ImplicitAPI):
1814
1905
  body = json.dumps(body)
1815
1906
  return {'url': url, 'method': method, 'body': body, 'headers': headers}
1816
1907
 
1817
- def handle_errors(self, code, reason, url, method, headers, body, response, requestHeaders, requestBody):
1908
+ def handle_errors(self, code: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
1818
1909
  #
1819
1910
  # {
1820
1911
  # "errors": [