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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (546) hide show
  1. ccxt/__init__.py +36 -14
  2. ccxt/abstract/alpaca.py +4 -0
  3. ccxt/abstract/bigone.py +1 -1
  4. ccxt/abstract/binance.py +112 -48
  5. ccxt/abstract/binancecoinm.py +112 -48
  6. ccxt/abstract/binanceus.py +147 -83
  7. ccxt/abstract/binanceusdm.py +112 -48
  8. ccxt/abstract/bingx.py +133 -78
  9. ccxt/abstract/bitbank.py +5 -0
  10. ccxt/abstract/bitfinex.py +136 -65
  11. ccxt/abstract/bitfinex1.py +69 -0
  12. ccxt/abstract/bitflyer.py +1 -0
  13. ccxt/abstract/bitget.py +8 -1
  14. ccxt/abstract/bitmart.py +13 -1
  15. ccxt/abstract/bitopro.py +1 -0
  16. ccxt/abstract/bitpanda.py +0 -12
  17. ccxt/abstract/bitrue.py +3 -3
  18. ccxt/abstract/bitstamp.py +26 -3
  19. ccxt/abstract/blofin.py +24 -0
  20. ccxt/abstract/btcbox.py +1 -0
  21. ccxt/abstract/bybit.py +29 -14
  22. ccxt/abstract/cex.py +28 -29
  23. ccxt/abstract/coinbase.py +6 -0
  24. ccxt/abstract/coinbaseadvanced.py +94 -0
  25. ccxt/abstract/{coinbasepro.py → coinbaseexchange.py} +1 -0
  26. ccxt/abstract/coinbaseinternational.py +1 -1
  27. ccxt/abstract/coincatch.py +94 -0
  28. ccxt/abstract/coinex.py +233 -123
  29. ccxt/abstract/coinmetro.py +1 -0
  30. ccxt/abstract/cryptocom.py +14 -0
  31. ccxt/abstract/defx.py +69 -0
  32. ccxt/abstract/deribit.py +1 -0
  33. ccxt/abstract/digifinex.py +1 -0
  34. ccxt/abstract/ellipx.py +25 -0
  35. ccxt/abstract/gate.py +20 -0
  36. ccxt/abstract/gateio.py +20 -0
  37. ccxt/abstract/gemini.py +1 -0
  38. ccxt/abstract/hashkey.py +67 -0
  39. ccxt/abstract/hyperliquid.py +1 -1
  40. ccxt/abstract/independentreserve.py +6 -0
  41. ccxt/abstract/kraken.py +4 -3
  42. ccxt/abstract/krakenfutures.py +4 -0
  43. ccxt/abstract/kucoin.py +25 -0
  44. ccxt/abstract/kucoinfutures.py +35 -0
  45. ccxt/abstract/luno.py +2 -0
  46. ccxt/abstract/mexc.py +4 -0
  47. ccxt/abstract/myokx.py +340 -0
  48. ccxt/abstract/oceanex.py +5 -0
  49. ccxt/abstract/okx.py +30 -0
  50. ccxt/abstract/onetrading.py +0 -12
  51. ccxt/abstract/oxfun.py +34 -0
  52. ccxt/abstract/paradex.py +40 -0
  53. ccxt/abstract/phemex.py +1 -0
  54. ccxt/abstract/upbit.py +4 -0
  55. ccxt/abstract/vertex.py +19 -0
  56. ccxt/abstract/whitebit.py +31 -1
  57. ccxt/abstract/woo.py +6 -2
  58. ccxt/abstract/woofipro.py +119 -0
  59. ccxt/abstract/xt.py +153 -0
  60. ccxt/abstract/zonda.py +6 -0
  61. ccxt/ace.py +164 -60
  62. ccxt/alpaca.py +727 -63
  63. ccxt/ascendex.py +395 -249
  64. ccxt/async_support/__init__.py +36 -14
  65. ccxt/async_support/ace.py +164 -60
  66. ccxt/async_support/alpaca.py +727 -63
  67. ccxt/async_support/ascendex.py +396 -249
  68. ccxt/async_support/base/exchange.py +531 -155
  69. ccxt/async_support/base/ws/aiohttp_client.py +28 -5
  70. ccxt/async_support/base/ws/cache.py +3 -2
  71. ccxt/async_support/base/ws/client.py +26 -5
  72. ccxt/async_support/base/ws/fast_client.py +4 -3
  73. ccxt/async_support/base/ws/functions.py +1 -1
  74. ccxt/async_support/base/ws/future.py +40 -31
  75. ccxt/async_support/base/ws/order_book_side.py +3 -0
  76. ccxt/async_support/bequant.py +1 -1
  77. ccxt/async_support/bigone.py +329 -202
  78. ccxt/async_support/binance.py +3513 -1511
  79. ccxt/async_support/binancecoinm.py +2 -1
  80. ccxt/async_support/binanceus.py +12 -1
  81. ccxt/async_support/binanceusdm.py +3 -1
  82. ccxt/async_support/bingx.py +3105 -881
  83. ccxt/async_support/bit2c.py +119 -38
  84. ccxt/async_support/bitbank.py +215 -76
  85. ccxt/async_support/bitbns.py +124 -53
  86. ccxt/async_support/bitfinex.py +3236 -1078
  87. ccxt/async_support/bitfinex1.py +1711 -0
  88. ccxt/async_support/bitflyer.py +239 -50
  89. ccxt/async_support/bitget.py +1513 -563
  90. ccxt/async_support/bithumb.py +201 -67
  91. ccxt/async_support/bitmart.py +1320 -435
  92. ccxt/async_support/bitmex.py +308 -111
  93. ccxt/async_support/bitopro.py +256 -96
  94. ccxt/async_support/bitrue.py +365 -233
  95. ccxt/async_support/bitso.py +201 -89
  96. ccxt/async_support/bitstamp.py +438 -269
  97. ccxt/async_support/bitteam.py +179 -73
  98. ccxt/async_support/bitvavo.py +180 -70
  99. ccxt/async_support/bl3p.py +92 -25
  100. ccxt/async_support/blockchaincom.py +193 -79
  101. ccxt/async_support/blofin.py +403 -150
  102. ccxt/async_support/btcalpha.py +161 -55
  103. ccxt/async_support/btcbox.py +250 -34
  104. ccxt/async_support/btcmarkets.py +232 -85
  105. ccxt/async_support/btcturk.py +159 -60
  106. ccxt/async_support/bybit.py +2326 -1255
  107. ccxt/async_support/cex.py +1409 -1329
  108. ccxt/async_support/coinbase.py +1455 -288
  109. ccxt/async_support/coinbaseadvanced.py +17 -0
  110. ccxt/async_support/{coinbasepro.py → coinbaseexchange.py} +233 -99
  111. ccxt/async_support/coinbaseinternational.py +428 -88
  112. ccxt/async_support/coincatch.py +5152 -0
  113. ccxt/async_support/coincheck.py +121 -38
  114. ccxt/async_support/coinex.py +4020 -3339
  115. ccxt/async_support/coinlist.py +273 -116
  116. ccxt/async_support/coinmate.py +204 -97
  117. ccxt/async_support/coinmetro.py +203 -110
  118. ccxt/async_support/coinone.py +142 -68
  119. ccxt/async_support/coinsph.py +206 -89
  120. ccxt/async_support/coinspot.py +137 -62
  121. ccxt/async_support/cryptocom.py +515 -185
  122. ccxt/async_support/currencycom.py +203 -85
  123. ccxt/async_support/defx.py +2066 -0
  124. ccxt/async_support/delta.py +467 -158
  125. ccxt/async_support/deribit.py +558 -324
  126. ccxt/async_support/digifinex.py +340 -223
  127. ccxt/async_support/ellipx.py +1826 -0
  128. ccxt/async_support/exmo.py +259 -128
  129. ccxt/async_support/gate.py +1473 -464
  130. ccxt/async_support/gemini.py +206 -84
  131. ccxt/async_support/hashkey.py +4164 -0
  132. ccxt/async_support/hitbtc.py +334 -178
  133. ccxt/async_support/hollaex.py +134 -83
  134. ccxt/async_support/htx.py +1095 -563
  135. ccxt/async_support/huobijp.py +105 -56
  136. ccxt/async_support/hyperliquid.py +1634 -269
  137. ccxt/async_support/idex.py +148 -95
  138. ccxt/async_support/independentreserve.py +236 -31
  139. ccxt/async_support/indodax.py +165 -62
  140. ccxt/async_support/kraken.py +871 -354
  141. ccxt/async_support/krakenfutures.py +324 -100
  142. ccxt/async_support/kucoin.py +1050 -355
  143. ccxt/async_support/kucoinfutures.py +1004 -149
  144. ccxt/async_support/kuna.py +138 -106
  145. ccxt/async_support/latoken.py +135 -79
  146. ccxt/async_support/lbank.py +290 -113
  147. ccxt/async_support/luno.py +112 -62
  148. ccxt/async_support/lykke.py +104 -55
  149. ccxt/async_support/mercado.py +36 -29
  150. ccxt/async_support/mexc.py +995 -429
  151. ccxt/async_support/myokx.py +43 -0
  152. ccxt/async_support/ndax.py +163 -82
  153. ccxt/async_support/novadax.py +121 -75
  154. ccxt/async_support/oceanex.py +175 -59
  155. ccxt/async_support/okcoin.py +222 -163
  156. ccxt/async_support/okx.py +1777 -455
  157. ccxt/async_support/onetrading.py +132 -414
  158. ccxt/async_support/oxfun.py +2832 -0
  159. ccxt/async_support/p2b.py +79 -51
  160. ccxt/async_support/paradex.py +2017 -0
  161. ccxt/async_support/paymium.py +56 -32
  162. ccxt/async_support/phemex.py +572 -196
  163. ccxt/async_support/poloniex.py +218 -95
  164. ccxt/async_support/poloniexfutures.py +260 -92
  165. ccxt/async_support/probit.py +143 -110
  166. ccxt/async_support/timex.py +123 -70
  167. ccxt/async_support/tokocrypto.py +129 -93
  168. ccxt/async_support/tradeogre.py +39 -25
  169. ccxt/async_support/upbit.py +322 -113
  170. ccxt/async_support/vertex.py +2983 -0
  171. ccxt/async_support/wavesexchange.py +227 -173
  172. ccxt/async_support/wazirx.py +145 -65
  173. ccxt/async_support/whitebit.py +533 -138
  174. ccxt/async_support/woo.py +1155 -295
  175. ccxt/async_support/woofipro.py +2716 -0
  176. ccxt/async_support/xt.py +4628 -0
  177. ccxt/async_support/yobit.py +160 -92
  178. ccxt/async_support/zaif.py +80 -33
  179. ccxt/async_support/zonda.py +140 -69
  180. ccxt/base/errors.py +51 -20
  181. ccxt/base/exchange.py +1729 -482
  182. ccxt/base/precise.py +10 -0
  183. ccxt/base/types.py +223 -4
  184. ccxt/bequant.py +1 -1
  185. ccxt/bigone.py +329 -202
  186. ccxt/binance.py +3513 -1511
  187. ccxt/binancecoinm.py +2 -1
  188. ccxt/binanceus.py +12 -1
  189. ccxt/binanceusdm.py +3 -1
  190. ccxt/bingx.py +3105 -881
  191. ccxt/bit2c.py +119 -38
  192. ccxt/bitbank.py +215 -76
  193. ccxt/bitbns.py +124 -53
  194. ccxt/bitfinex.py +3235 -1078
  195. ccxt/bitfinex1.py +1710 -0
  196. ccxt/bitflyer.py +239 -50
  197. ccxt/bitget.py +1513 -563
  198. ccxt/bithumb.py +200 -67
  199. ccxt/bitmart.py +1320 -435
  200. ccxt/bitmex.py +308 -111
  201. ccxt/bitopro.py +256 -96
  202. ccxt/bitrue.py +365 -233
  203. ccxt/bitso.py +201 -89
  204. ccxt/bitstamp.py +438 -269
  205. ccxt/bitteam.py +179 -73
  206. ccxt/bitvavo.py +180 -70
  207. ccxt/bl3p.py +92 -25
  208. ccxt/blockchaincom.py +193 -79
  209. ccxt/blofin.py +403 -150
  210. ccxt/btcalpha.py +161 -55
  211. ccxt/btcbox.py +250 -34
  212. ccxt/btcmarkets.py +232 -85
  213. ccxt/btcturk.py +159 -60
  214. ccxt/bybit.py +2326 -1255
  215. ccxt/cex.py +1408 -1329
  216. ccxt/coinbase.py +1455 -288
  217. ccxt/coinbaseadvanced.py +17 -0
  218. ccxt/{coinbasepro.py → coinbaseexchange.py} +233 -99
  219. ccxt/coinbaseinternational.py +428 -88
  220. ccxt/coincatch.py +5152 -0
  221. ccxt/coincheck.py +121 -38
  222. ccxt/coinex.py +4020 -3339
  223. ccxt/coinlist.py +273 -116
  224. ccxt/coinmate.py +204 -97
  225. ccxt/coinmetro.py +203 -110
  226. ccxt/coinone.py +142 -68
  227. ccxt/coinsph.py +206 -89
  228. ccxt/coinspot.py +137 -62
  229. ccxt/cryptocom.py +515 -185
  230. ccxt/currencycom.py +203 -85
  231. ccxt/defx.py +2065 -0
  232. ccxt/delta.py +467 -158
  233. ccxt/deribit.py +558 -324
  234. ccxt/digifinex.py +340 -223
  235. ccxt/ellipx.py +1826 -0
  236. ccxt/exmo.py +259 -128
  237. ccxt/gate.py +1473 -464
  238. ccxt/gemini.py +206 -84
  239. ccxt/hashkey.py +4164 -0
  240. ccxt/hitbtc.py +334 -178
  241. ccxt/hollaex.py +134 -83
  242. ccxt/htx.py +1095 -563
  243. ccxt/huobijp.py +105 -56
  244. ccxt/hyperliquid.py +1633 -269
  245. ccxt/idex.py +148 -95
  246. ccxt/independentreserve.py +235 -31
  247. ccxt/indodax.py +165 -62
  248. ccxt/kraken.py +871 -354
  249. ccxt/krakenfutures.py +324 -100
  250. ccxt/kucoin.py +1050 -355
  251. ccxt/kucoinfutures.py +1004 -149
  252. ccxt/kuna.py +138 -106
  253. ccxt/latoken.py +135 -79
  254. ccxt/lbank.py +290 -113
  255. ccxt/luno.py +112 -62
  256. ccxt/lykke.py +104 -55
  257. ccxt/mercado.py +36 -29
  258. ccxt/mexc.py +994 -429
  259. ccxt/myokx.py +43 -0
  260. ccxt/ndax.py +163 -82
  261. ccxt/novadax.py +121 -75
  262. ccxt/oceanex.py +175 -59
  263. ccxt/okcoin.py +222 -163
  264. ccxt/okx.py +1777 -455
  265. ccxt/onetrading.py +132 -414
  266. ccxt/oxfun.py +2831 -0
  267. ccxt/p2b.py +79 -51
  268. ccxt/paradex.py +2017 -0
  269. ccxt/paymium.py +56 -32
  270. ccxt/phemex.py +572 -196
  271. ccxt/poloniex.py +218 -95
  272. ccxt/poloniexfutures.py +260 -92
  273. ccxt/pro/__init__.py +29 -5
  274. ccxt/pro/alpaca.py +32 -17
  275. ccxt/pro/ascendex.py +63 -15
  276. ccxt/pro/bequant.py +4 -0
  277. ccxt/pro/binance.py +1596 -329
  278. ccxt/pro/binancecoinm.py +1 -0
  279. ccxt/pro/binanceus.py +2 -9
  280. ccxt/pro/binanceusdm.py +2 -0
  281. ccxt/pro/bingx.py +527 -134
  282. ccxt/pro/bitcoincom.py +4 -1
  283. ccxt/pro/bitfinex.py +731 -266
  284. ccxt/pro/bitfinex1.py +635 -0
  285. ccxt/pro/bitget.py +726 -357
  286. ccxt/pro/bithumb.py +380 -0
  287. ccxt/pro/bitmart.py +138 -39
  288. ccxt/pro/bitmex.py +199 -40
  289. ccxt/pro/bitopro.py +25 -13
  290. ccxt/pro/bitrue.py +31 -32
  291. ccxt/pro/bitstamp.py +7 -6
  292. ccxt/pro/bitvavo.py +204 -82
  293. ccxt/pro/blockchaincom.py +30 -17
  294. ccxt/pro/blofin.py +692 -0
  295. ccxt/pro/bybit.py +791 -82
  296. ccxt/pro/cex.py +99 -51
  297. ccxt/pro/coinbase.py +220 -30
  298. ccxt/{async_support/hitbtc3.py → pro/coinbaseadvanced.py} +5 -5
  299. ccxt/pro/{coinbasepro.py → coinbaseexchange.py} +19 -19
  300. ccxt/pro/coinbaseinternational.py +193 -30
  301. ccxt/pro/coincatch.py +1464 -0
  302. ccxt/pro/coincheck.py +11 -6
  303. ccxt/pro/coinex.py +967 -661
  304. ccxt/pro/coinone.py +17 -10
  305. ccxt/pro/cryptocom.py +446 -66
  306. ccxt/pro/currencycom.py +11 -10
  307. ccxt/pro/defx.py +832 -0
  308. ccxt/pro/deribit.py +168 -32
  309. ccxt/pro/exmo.py +253 -21
  310. ccxt/pro/gate.py +729 -64
  311. ccxt/pro/gemini.py +44 -26
  312. ccxt/pro/hashkey.py +802 -0
  313. ccxt/pro/hitbtc.py +208 -103
  314. ccxt/pro/hollaex.py +25 -9
  315. ccxt/pro/htx.py +83 -39
  316. ccxt/pro/huobijp.py +17 -16
  317. ccxt/pro/hyperliquid.py +502 -31
  318. ccxt/pro/idex.py +28 -13
  319. ccxt/pro/independentreserve.py +21 -16
  320. ccxt/pro/kraken.py +298 -51
  321. ccxt/pro/krakenfutures.py +166 -75
  322. ccxt/pro/kucoin.py +395 -77
  323. ccxt/pro/kucoinfutures.py +400 -99
  324. ccxt/pro/lbank.py +52 -31
  325. ccxt/pro/luno.py +12 -10
  326. ccxt/pro/mexc.py +400 -50
  327. ccxt/pro/myokx.py +28 -0
  328. ccxt/pro/ndax.py +25 -12
  329. ccxt/pro/okcoin.py +28 -9
  330. ccxt/pro/okx.py +935 -124
  331. ccxt/pro/onetrading.py +41 -24
  332. ccxt/pro/oxfun.py +1054 -0
  333. ccxt/pro/p2b.py +100 -24
  334. ccxt/pro/paradex.py +352 -0
  335. ccxt/pro/phemex.py +93 -34
  336. ccxt/pro/poloniex.py +129 -50
  337. ccxt/pro/poloniexfutures.py +53 -32
  338. ccxt/pro/probit.py +93 -86
  339. ccxt/pro/upbit.py +401 -8
  340. ccxt/pro/vertex.py +943 -0
  341. ccxt/pro/wazirx.py +46 -28
  342. ccxt/pro/whitebit.py +65 -12
  343. ccxt/pro/woo.py +486 -70
  344. ccxt/pro/woofipro.py +1271 -0
  345. ccxt/pro/xt.py +1067 -0
  346. ccxt/probit.py +143 -110
  347. ccxt/static_dependencies/__init__.py +1 -1
  348. ccxt/static_dependencies/lark/__init__.py +38 -0
  349. ccxt/static_dependencies/lark/__pyinstaller/__init__.py +6 -0
  350. ccxt/static_dependencies/lark/__pyinstaller/hook-lark.py +14 -0
  351. ccxt/static_dependencies/lark/ast_utils.py +59 -0
  352. ccxt/static_dependencies/lark/common.py +86 -0
  353. ccxt/static_dependencies/lark/exceptions.py +292 -0
  354. ccxt/static_dependencies/lark/grammar.py +130 -0
  355. ccxt/static_dependencies/lark/grammars/__init__.py +0 -0
  356. ccxt/static_dependencies/lark/indenter.py +143 -0
  357. ccxt/static_dependencies/lark/lark.py +658 -0
  358. ccxt/static_dependencies/lark/lexer.py +678 -0
  359. ccxt/static_dependencies/lark/load_grammar.py +1428 -0
  360. ccxt/static_dependencies/lark/parse_tree_builder.py +391 -0
  361. ccxt/static_dependencies/lark/parser_frontends.py +257 -0
  362. ccxt/static_dependencies/lark/parsers/__init__.py +0 -0
  363. ccxt/static_dependencies/lark/parsers/cyk.py +340 -0
  364. ccxt/static_dependencies/lark/parsers/earley.py +314 -0
  365. ccxt/static_dependencies/lark/parsers/earley_common.py +42 -0
  366. ccxt/static_dependencies/lark/parsers/earley_forest.py +801 -0
  367. ccxt/static_dependencies/lark/parsers/grammar_analysis.py +203 -0
  368. ccxt/static_dependencies/lark/parsers/lalr_analysis.py +332 -0
  369. ccxt/static_dependencies/lark/parsers/lalr_interactive_parser.py +158 -0
  370. ccxt/static_dependencies/lark/parsers/lalr_parser.py +122 -0
  371. ccxt/static_dependencies/lark/parsers/lalr_parser_state.py +110 -0
  372. ccxt/static_dependencies/lark/parsers/xearley.py +165 -0
  373. ccxt/static_dependencies/lark/py.typed +0 -0
  374. ccxt/static_dependencies/lark/reconstruct.py +107 -0
  375. ccxt/static_dependencies/lark/tools/__init__.py +70 -0
  376. ccxt/static_dependencies/lark/tools/nearley.py +202 -0
  377. ccxt/static_dependencies/lark/tools/serialize.py +32 -0
  378. ccxt/static_dependencies/lark/tools/standalone.py +196 -0
  379. ccxt/static_dependencies/lark/tree.py +267 -0
  380. ccxt/static_dependencies/lark/tree_matcher.py +186 -0
  381. ccxt/static_dependencies/lark/tree_templates.py +180 -0
  382. ccxt/static_dependencies/lark/utils.py +343 -0
  383. ccxt/static_dependencies/lark/visitors.py +596 -0
  384. ccxt/static_dependencies/marshmallow/__init__.py +81 -0
  385. ccxt/static_dependencies/marshmallow/base.py +65 -0
  386. ccxt/static_dependencies/marshmallow/class_registry.py +94 -0
  387. ccxt/static_dependencies/marshmallow/decorators.py +231 -0
  388. ccxt/static_dependencies/marshmallow/error_store.py +60 -0
  389. ccxt/static_dependencies/marshmallow/exceptions.py +71 -0
  390. ccxt/static_dependencies/marshmallow/fields.py +2114 -0
  391. ccxt/static_dependencies/marshmallow/orderedset.py +89 -0
  392. ccxt/static_dependencies/marshmallow/py.typed +0 -0
  393. ccxt/static_dependencies/marshmallow/schema.py +1228 -0
  394. ccxt/static_dependencies/marshmallow/types.py +12 -0
  395. ccxt/static_dependencies/marshmallow/utils.py +378 -0
  396. ccxt/static_dependencies/marshmallow/validate.py +678 -0
  397. ccxt/static_dependencies/marshmallow/warnings.py +2 -0
  398. ccxt/static_dependencies/marshmallow_dataclass/__init__.py +1047 -0
  399. ccxt/static_dependencies/marshmallow_dataclass/collection_field.py +51 -0
  400. ccxt/static_dependencies/marshmallow_dataclass/lazy_class_attribute.py +45 -0
  401. ccxt/static_dependencies/marshmallow_dataclass/mypy.py +71 -0
  402. ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
  403. ccxt/static_dependencies/marshmallow_dataclass/typing.py +14 -0
  404. ccxt/static_dependencies/marshmallow_dataclass/union_field.py +82 -0
  405. ccxt/static_dependencies/marshmallow_oneofschema/__init__.py +1 -0
  406. ccxt/static_dependencies/marshmallow_oneofschema/one_of_schema.py +193 -0
  407. ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
  408. ccxt/static_dependencies/starknet/__init__.py +0 -0
  409. ccxt/static_dependencies/starknet/cairo/__init__.py +0 -0
  410. ccxt/static_dependencies/starknet/cairo/data_types.py +123 -0
  411. ccxt/static_dependencies/starknet/cairo/deprecated_parse/__init__.py +0 -0
  412. ccxt/static_dependencies/starknet/cairo/deprecated_parse/cairo_types.py +77 -0
  413. ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser.py +46 -0
  414. ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser_transformer.py +138 -0
  415. ccxt/static_dependencies/starknet/cairo/felt.py +64 -0
  416. ccxt/static_dependencies/starknet/cairo/type_parser.py +121 -0
  417. ccxt/static_dependencies/starknet/cairo/v1/__init__.py +0 -0
  418. ccxt/static_dependencies/starknet/cairo/v1/type_parser.py +59 -0
  419. ccxt/static_dependencies/starknet/cairo/v2/__init__.py +0 -0
  420. ccxt/static_dependencies/starknet/cairo/v2/type_parser.py +77 -0
  421. ccxt/static_dependencies/starknet/ccxt_utils.py +7 -0
  422. ccxt/static_dependencies/starknet/common.py +15 -0
  423. ccxt/static_dependencies/starknet/constants.py +39 -0
  424. ccxt/static_dependencies/starknet/hash/__init__.py +0 -0
  425. ccxt/static_dependencies/starknet/hash/address.py +79 -0
  426. ccxt/static_dependencies/starknet/hash/compiled_class_hash_objects.py +111 -0
  427. ccxt/static_dependencies/starknet/hash/selector.py +16 -0
  428. ccxt/static_dependencies/starknet/hash/storage.py +12 -0
  429. ccxt/static_dependencies/starknet/hash/utils.py +78 -0
  430. ccxt/static_dependencies/starknet/models/__init__.py +0 -0
  431. ccxt/static_dependencies/starknet/models/typed_data.py +45 -0
  432. ccxt/static_dependencies/starknet/serialization/__init__.py +24 -0
  433. ccxt/static_dependencies/starknet/serialization/_calldata_reader.py +40 -0
  434. ccxt/static_dependencies/starknet/serialization/_context.py +142 -0
  435. ccxt/static_dependencies/starknet/serialization/data_serializers/__init__.py +10 -0
  436. ccxt/static_dependencies/starknet/serialization/data_serializers/_common.py +82 -0
  437. ccxt/static_dependencies/starknet/serialization/data_serializers/array_serializer.py +43 -0
  438. ccxt/static_dependencies/starknet/serialization/data_serializers/bool_serializer.py +37 -0
  439. ccxt/static_dependencies/starknet/serialization/data_serializers/byte_array_serializer.py +66 -0
  440. ccxt/static_dependencies/starknet/serialization/data_serializers/cairo_data_serializer.py +71 -0
  441. ccxt/static_dependencies/starknet/serialization/data_serializers/enum_serializer.py +71 -0
  442. ccxt/static_dependencies/starknet/serialization/data_serializers/felt_serializer.py +50 -0
  443. ccxt/static_dependencies/starknet/serialization/data_serializers/named_tuple_serializer.py +58 -0
  444. ccxt/static_dependencies/starknet/serialization/data_serializers/option_serializer.py +43 -0
  445. ccxt/static_dependencies/starknet/serialization/data_serializers/output_serializer.py +40 -0
  446. ccxt/static_dependencies/starknet/serialization/data_serializers/payload_serializer.py +72 -0
  447. ccxt/static_dependencies/starknet/serialization/data_serializers/struct_serializer.py +36 -0
  448. ccxt/static_dependencies/starknet/serialization/data_serializers/tuple_serializer.py +36 -0
  449. ccxt/static_dependencies/starknet/serialization/data_serializers/uint256_serializer.py +76 -0
  450. ccxt/static_dependencies/starknet/serialization/data_serializers/uint_serializer.py +100 -0
  451. ccxt/static_dependencies/starknet/serialization/data_serializers/unit_serializer.py +32 -0
  452. ccxt/static_dependencies/starknet/serialization/errors.py +10 -0
  453. ccxt/static_dependencies/starknet/serialization/factory.py +229 -0
  454. ccxt/static_dependencies/starknet/serialization/function_serialization_adapter.py +110 -0
  455. ccxt/static_dependencies/starknet/serialization/tuple_dataclass.py +59 -0
  456. ccxt/static_dependencies/starknet/utils/__init__.py +0 -0
  457. ccxt/static_dependencies/starknet/utils/constructor_args_translator.py +86 -0
  458. ccxt/static_dependencies/starknet/utils/iterable.py +13 -0
  459. ccxt/static_dependencies/starknet/utils/schema.py +13 -0
  460. ccxt/static_dependencies/starknet/utils/typed_data.py +182 -0
  461. ccxt/static_dependencies/starkware/__init__.py +0 -0
  462. ccxt/static_dependencies/starkware/crypto/__init__.py +0 -0
  463. ccxt/static_dependencies/starkware/crypto/fast_pedersen_hash.py +50 -0
  464. ccxt/static_dependencies/starkware/crypto/math_utils.py +78 -0
  465. ccxt/static_dependencies/starkware/crypto/signature.py +2344 -0
  466. ccxt/static_dependencies/starkware/crypto/utils.py +63 -0
  467. ccxt/static_dependencies/sympy/__init__.py +0 -0
  468. ccxt/static_dependencies/sympy/core/__init__.py +0 -0
  469. ccxt/static_dependencies/sympy/core/intfunc.py +35 -0
  470. ccxt/static_dependencies/sympy/external/__init__.py +0 -0
  471. ccxt/static_dependencies/sympy/external/gmpy.py +345 -0
  472. ccxt/static_dependencies/sympy/external/importtools.py +187 -0
  473. ccxt/static_dependencies/sympy/external/ntheory.py +637 -0
  474. ccxt/static_dependencies/sympy/external/pythonmpq.py +341 -0
  475. ccxt/static_dependencies/typing_inspect/__init__.py +0 -0
  476. ccxt/static_dependencies/typing_inspect/typing_inspect.py +851 -0
  477. ccxt/test/{test_async.py → tests_async.py} +465 -407
  478. ccxt/test/tests_helpers.py +285 -0
  479. ccxt/test/tests_init.py +39 -0
  480. ccxt/test/{test_sync.py → tests_sync.py} +465 -409
  481. ccxt/timex.py +123 -70
  482. ccxt/tokocrypto.py +129 -93
  483. ccxt/tradeogre.py +39 -25
  484. ccxt/upbit.py +322 -113
  485. ccxt/vertex.py +2983 -0
  486. ccxt/wavesexchange.py +227 -173
  487. ccxt/wazirx.py +145 -65
  488. ccxt/whitebit.py +533 -138
  489. ccxt/woo.py +1155 -295
  490. ccxt/woofipro.py +2716 -0
  491. ccxt/xt.py +4627 -0
  492. ccxt/yobit.py +159 -92
  493. ccxt/zaif.py +80 -33
  494. ccxt/zonda.py +140 -69
  495. ccxt-4.4.48.dist-info/LICENSE.txt +21 -0
  496. ccxt-4.4.48.dist-info/METADATA +646 -0
  497. ccxt-4.4.48.dist-info/RECORD +669 -0
  498. {ccxt-4.2.76.dist-info → ccxt-4.4.48.dist-info}/WHEEL +1 -1
  499. ccxt/abstract/bitbay.py +0 -47
  500. ccxt/abstract/bitfinex2.py +0 -139
  501. ccxt/abstract/hitbtc3.py +0 -115
  502. ccxt/async_support/bitbay.py +0 -17
  503. ccxt/async_support/bitfinex2.py +0 -3496
  504. ccxt/async_support/flowbtc.py +0 -34
  505. ccxt/bitbay.py +0 -17
  506. ccxt/bitfinex2.py +0 -3496
  507. ccxt/flowbtc.py +0 -34
  508. ccxt/hitbtc3.py +0 -16
  509. ccxt/pro/bitfinex2.py +0 -1081
  510. ccxt/test/base/__init__.py +0 -28
  511. ccxt/test/base/test_account.py +0 -26
  512. ccxt/test/base/test_balance.py +0 -56
  513. ccxt/test/base/test_borrow_interest.py +0 -35
  514. ccxt/test/base/test_borrow_rate.py +0 -32
  515. ccxt/test/base/test_calculate_fee.py +0 -51
  516. ccxt/test/base/test_crypto.py +0 -127
  517. ccxt/test/base/test_currency.py +0 -76
  518. ccxt/test/base/test_datetime.py +0 -103
  519. ccxt/test/base/test_decimal_to_precision.py +0 -392
  520. ccxt/test/base/test_deep_extend.py +0 -68
  521. ccxt/test/base/test_deposit_withdrawal.py +0 -50
  522. ccxt/test/base/test_exchange_datetime_functions.py +0 -76
  523. ccxt/test/base/test_funding_rate_history.py +0 -29
  524. ccxt/test/base/test_last_price.py +0 -32
  525. ccxt/test/base/test_ledger_entry.py +0 -45
  526. ccxt/test/base/test_ledger_item.py +0 -48
  527. ccxt/test/base/test_leverage_tier.py +0 -33
  528. ccxt/test/base/test_margin_mode.py +0 -24
  529. ccxt/test/base/test_margin_modification.py +0 -35
  530. ccxt/test/base/test_market.py +0 -190
  531. ccxt/test/base/test_number.py +0 -411
  532. ccxt/test/base/test_ohlcv.py +0 -32
  533. ccxt/test/base/test_open_interest.py +0 -32
  534. ccxt/test/base/test_order.py +0 -64
  535. ccxt/test/base/test_order_book.py +0 -63
  536. ccxt/test/base/test_position.py +0 -60
  537. ccxt/test/base/test_shared_methods.py +0 -345
  538. ccxt/test/base/test_status.py +0 -24
  539. ccxt/test/base/test_throttle.py +0 -126
  540. ccxt/test/base/test_ticker.py +0 -86
  541. ccxt/test/base/test_trade.py +0 -47
  542. ccxt/test/base/test_trading_fee.py +0 -26
  543. ccxt/test/base/test_transaction.py +0 -39
  544. ccxt-4.2.76.dist-info/METADATA +0 -626
  545. ccxt-4.2.76.dist-info/RECORD +0 -534
  546. {ccxt-4.2.76.dist-info → ccxt-4.4.48.dist-info}/top_level.txt +0 -0
ccxt/latoken.py CHANGED
@@ -6,9 +6,10 @@
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.latoken import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
9
+ from ccxt.base.types import Balances, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, Transaction, TransferEntry
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
+ from ccxt.base.errors import AuthenticationError
12
13
  from ccxt.base.errors import PermissionDenied
13
14
  from ccxt.base.errors import AccountSuspended
14
15
  from ccxt.base.errors import ArgumentsRequired
@@ -20,7 +21,6 @@ from ccxt.base.errors import NotSupported
20
21
  from ccxt.base.errors import RateLimitExceeded
21
22
  from ccxt.base.errors import ExchangeNotAvailable
22
23
  from ccxt.base.errors import InvalidNonce
23
- from ccxt.base.errors import AuthenticationError
24
24
  from ccxt.base.decimal_to_precision import TICK_SIZE
25
25
 
26
26
 
@@ -60,6 +60,12 @@ class latoken(Exchange, ImplicitAPI):
60
60
  'fetchDepositAddressesByNetwork': False,
61
61
  'fetchDepositsWithdrawals': True,
62
62
  'fetchDepositWithdrawFees': False,
63
+ 'fetchFundingHistory': False,
64
+ 'fetchFundingInterval': False,
65
+ 'fetchFundingIntervals': False,
66
+ 'fetchFundingRate': False,
67
+ 'fetchFundingRateHistory': False,
68
+ 'fetchFundingRates': False,
63
69
  'fetchIsolatedBorrowRate': False,
64
70
  'fetchIsolatedBorrowRates': False,
65
71
  'fetchMarginMode': False,
@@ -69,7 +75,13 @@ class latoken(Exchange, ImplicitAPI):
69
75
  'fetchOrder': True,
70
76
  'fetchOrderBook': True,
71
77
  'fetchOrders': True,
78
+ 'fetchPosition': False,
79
+ 'fetchPositionHistory': False,
72
80
  'fetchPositionMode': False,
81
+ 'fetchPositions': False,
82
+ 'fetchPositionsForSymbol': False,
83
+ 'fetchPositionsHistory': False,
84
+ 'fetchPositionsRisk': False,
73
85
  'fetchTicker': True,
74
86
  'fetchTickers': True,
75
87
  'fetchTime': True,
@@ -244,7 +256,9 @@ class latoken(Exchange, ImplicitAPI):
244
256
  def fetch_time(self, params={}):
245
257
  """
246
258
  fetches the current integer timestamp in milliseconds from the exchange server
247
- :see: https://api.latoken.com/doc/v2/#tag/Time/operation/currentTime
259
+
260
+ https://api.latoken.com/doc/v2/#tag/Time/operation/currentTime
261
+
248
262
  :param dict [params]: extra parameters specific to the exchange API endpoint
249
263
  :returns int: the current integer timestamp in milliseconds from the exchange server
250
264
  """
@@ -256,10 +270,12 @@ class latoken(Exchange, ImplicitAPI):
256
270
  #
257
271
  return self.safe_integer(response, 'serverTime')
258
272
 
259
- def fetch_markets(self, params={}):
273
+ def fetch_markets(self, params={}) -> List[Market]:
260
274
  """
261
275
  retrieves data on all markets for latoken
262
- :see: https://api.latoken.com/doc/v2/#tag/Pair/operation/getActivePairs
276
+
277
+ https://api.latoken.com/doc/v2/#tag/Pair/operation/getActivePairs
278
+
263
279
  :param dict [params]: extra parameters specific to the exchange API endpoint
264
280
  :returns dict[]: an array of objects representing market data
265
281
  """
@@ -401,7 +417,7 @@ class latoken(Exchange, ImplicitAPI):
401
417
  })
402
418
  return self.safe_value(self.options['fetchCurrencies'], 'response')
403
419
 
404
- def fetch_currencies(self, params={}):
420
+ def fetch_currencies(self, params={}) -> Currencies:
405
421
  """
406
422
  fetches all available currencies on an exchange
407
423
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -440,7 +456,7 @@ class latoken(Exchange, ImplicitAPI):
440
456
  # },
441
457
  # ]
442
458
  #
443
- result = {}
459
+ result: dict = {}
444
460
  for i in range(0, len(response)):
445
461
  currency = response[i]
446
462
  id = self.safe_string(currency, 'id')
@@ -485,7 +501,9 @@ class latoken(Exchange, ImplicitAPI):
485
501
  def fetch_balance(self, params={}) -> Balances:
486
502
  """
487
503
  query for balance and get the amount of funds available for trading or funds locked in orders
488
- :see: https://api.latoken.com/doc/v2/#tag/Account/operation/getBalancesByUser
504
+
505
+ https://api.latoken.com/doc/v2/#tag/Account/operation/getBalancesByUser
506
+
489
507
  :param dict [params]: extra parameters specific to the exchange API endpoint
490
508
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
491
509
  """
@@ -513,7 +531,7 @@ class latoken(Exchange, ImplicitAPI):
513
531
  # }
514
532
  # ]
515
533
  #
516
- result = {
534
+ result: dict = {
517
535
  'info': response,
518
536
  'timestamp': None,
519
537
  'datetime': None,
@@ -546,7 +564,9 @@ class latoken(Exchange, ImplicitAPI):
546
564
  def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
547
565
  """
548
566
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
549
- :see: https://api.latoken.com/doc/v2/#tag/Order-Book/operation/getOrderBook
567
+
568
+ https://api.latoken.com/doc/v2/#tag/Order-Book/operation/getOrderBook
569
+
550
570
  :param str symbol: unified symbol of the market to fetch the order book for
551
571
  :param int [limit]: the maximum amount of order book entries to return
552
572
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -554,7 +574,7 @@ class latoken(Exchange, ImplicitAPI):
554
574
  """
555
575
  self.load_markets()
556
576
  market = self.market(symbol)
557
- request = {
577
+ request: dict = {
558
578
  'currency': market['baseId'],
559
579
  'quote': market['quoteId'],
560
580
  }
@@ -579,7 +599,7 @@ class latoken(Exchange, ImplicitAPI):
579
599
  #
580
600
  return self.parse_order_book(response, symbol, None, 'bid', 'ask', 'price', 'quantity')
581
601
 
582
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
602
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
583
603
  #
584
604
  # {
585
605
  # "symbol": "92151d82-df98-4d88-9a4d-284fa9eca49f/0c3a106d-bde3-4c13-a26e-3fd2394529e5",
@@ -602,7 +622,7 @@ class latoken(Exchange, ImplicitAPI):
602
622
  #
603
623
  marketId = self.safe_string(ticker, 'symbol')
604
624
  last = self.safe_string(ticker, 'lastPrice')
605
- timestamp = self.safe_integer(ticker, 'updateTimestamp')
625
+ timestamp = self.safe_integer_omit_zero(ticker, 'updateTimestamp') # sometimes latoken provided '0' ts from /ticker endpoint
606
626
  return self.safe_ticker({
607
627
  'symbol': self.safe_symbol(marketId, market),
608
628
  'timestamp': timestamp,
@@ -629,14 +649,16 @@ class latoken(Exchange, ImplicitAPI):
629
649
  def fetch_ticker(self, symbol: str, params={}) -> Ticker:
630
650
  """
631
651
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
632
- :see: https://api.latoken.com/doc/v2/#tag/Ticker/operation/getTicker
652
+
653
+ https://api.latoken.com/doc/v2/#tag/Ticker/operation/getTicker
654
+
633
655
  :param str symbol: unified symbol of the market to fetch the ticker for
634
656
  :param dict [params]: extra parameters specific to the exchange API endpoint
635
657
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
636
658
  """
637
659
  self.load_markets()
638
660
  market = self.market(symbol)
639
- request = {
661
+ request: dict = {
640
662
  'base': market['baseId'],
641
663
  'quote': market['quoteId'],
642
664
  }
@@ -666,7 +688,9 @@ class latoken(Exchange, ImplicitAPI):
666
688
  def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
667
689
  """
668
690
  fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
669
- :see: https://api.latoken.com/doc/v2/#tag/Ticker/operation/getAllTickers
691
+
692
+ https://api.latoken.com/doc/v2/#tag/Ticker/operation/getAllTickers
693
+
670
694
  :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
671
695
  :param dict [params]: extra parameters specific to the exchange API endpoint
672
696
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -697,7 +721,7 @@ class latoken(Exchange, ImplicitAPI):
697
721
  #
698
722
  return self.parse_tickers(response, symbols)
699
723
 
700
- def parse_trade(self, trade, market: Market = None) -> Trade:
724
+ def parse_trade(self, trade: dict, market: Market = None) -> Trade:
701
725
  #
702
726
  # fetchTrades(public)
703
727
  #
@@ -781,7 +805,9 @@ class latoken(Exchange, ImplicitAPI):
781
805
  def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
782
806
  """
783
807
  get the list of most recent trades for a particular symbol
784
- :see: https://api.latoken.com/doc/v2/#tag/Trade/operation/getTradesByPair
808
+
809
+ https://api.latoken.com/doc/v2/#tag/Trade/operation/getTradesByPair
810
+
785
811
  :param str symbol: unified symbol of the market to fetch trades for
786
812
  :param int [since]: timestamp in ms of the earliest trade to fetch
787
813
  :param int [limit]: the maximum amount of trades to fetch
@@ -790,7 +816,7 @@ class latoken(Exchange, ImplicitAPI):
790
816
  """
791
817
  self.load_markets()
792
818
  market = self.market(symbol)
793
- request = {
819
+ request: dict = {
794
820
  'currency': market['baseId'],
795
821
  'quote': market['quoteId'],
796
822
  # 'from': str(since), # milliseconds
@@ -808,11 +834,13 @@ class latoken(Exchange, ImplicitAPI):
808
834
  #
809
835
  return self.parse_trades(response, market, since, limit)
810
836
 
811
- def fetch_trading_fee(self, symbol: str, params={}):
837
+ def fetch_trading_fee(self, symbol: str, params={}) -> TradingFeeInterface:
812
838
  """
813
839
  fetch the trading fees for a market
814
- :see: https://api.latoken.com/doc/v2/#tag/Trade/operation/getFeeByPair
815
- :see: https://api.latoken.com/doc/v2/#tag/Trade/operation/getAuthFeeByPair
840
+
841
+ https://api.latoken.com/doc/v2/#tag/Trade/operation/getFeeByPair
842
+ https://api.latoken.com/doc/v2/#tag/Trade/operation/getAuthFeeByPair
843
+
816
844
  :param str symbol: unified market symbol
817
845
  :param dict [params]: extra parameters specific to the exchange API endpoint
818
846
  :returns dict: a `fee structure <https://docs.ccxt.com/#/?id=fee-structure>`
@@ -831,7 +859,7 @@ class latoken(Exchange, ImplicitAPI):
831
859
  def fetch_public_trading_fee(self, symbol: str, params={}):
832
860
  self.load_markets()
833
861
  market = self.market(symbol)
834
- request = {
862
+ request: dict = {
835
863
  'currency': market['baseId'],
836
864
  'quote': market['quoteId'],
837
865
  }
@@ -849,12 +877,14 @@ class latoken(Exchange, ImplicitAPI):
849
877
  'symbol': market['symbol'],
850
878
  'maker': self.safe_number(response, 'makerFee'),
851
879
  'taker': self.safe_number(response, 'takerFee'),
880
+ 'percentage': None,
881
+ 'tierBased': None,
852
882
  }
853
883
 
854
884
  def fetch_private_trading_fee(self, symbol: str, params={}):
855
885
  self.load_markets()
856
886
  market = self.market(symbol)
857
- request = {
887
+ request: dict = {
858
888
  'currency': market['baseId'],
859
889
  'quote': market['quoteId'],
860
890
  }
@@ -872,13 +902,17 @@ class latoken(Exchange, ImplicitAPI):
872
902
  'symbol': market['symbol'],
873
903
  'maker': self.safe_number(response, 'makerFee'),
874
904
  'taker': self.safe_number(response, 'takerFee'),
905
+ 'percentage': None,
906
+ 'tierBased': None,
875
907
  }
876
908
 
877
909
  def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
878
910
  """
879
911
  fetch all trades made by the user
880
- :see: https://api.latoken.com/doc/v2/#tag/Trade/operation/getTradesByTrader
881
- :see: https://api.latoken.com/doc/v2/#tag/Trade/operation/getTradesByAssetAndTrader
912
+
913
+ https://api.latoken.com/doc/v2/#tag/Trade/operation/getTradesByTrader
914
+ https://api.latoken.com/doc/v2/#tag/Trade/operation/getTradesByAssetAndTrader
915
+
882
916
  :param str symbol: unified market symbol
883
917
  :param int [since]: the earliest time in ms to fetch trades for
884
918
  :param int [limit]: the maximum number of trades structures to retrieve
@@ -886,7 +920,7 @@ class latoken(Exchange, ImplicitAPI):
886
920
  :returns Trade[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
887
921
  """
888
922
  self.load_markets()
889
- request = {
923
+ request: dict = {
890
924
  # 'currency': market['baseId'],
891
925
  # 'quote': market['quoteId'],
892
926
  # 'from': self.milliseconds(),
@@ -923,8 +957,8 @@ class latoken(Exchange, ImplicitAPI):
923
957
  #
924
958
  return self.parse_trades(response, market, since, limit)
925
959
 
926
- def parse_order_status(self, status):
927
- statuses = {
960
+ def parse_order_status(self, status: Str):
961
+ statuses: dict = {
928
962
  'ORDER_STATUS_PLACED': 'open',
929
963
  'ORDER_STATUS_CLOSED': 'closed',
930
964
  'ORDER_STATUS_CANCELLED': 'canceled',
@@ -932,21 +966,21 @@ class latoken(Exchange, ImplicitAPI):
932
966
  return self.safe_string(statuses, status, status)
933
967
 
934
968
  def parse_order_type(self, status):
935
- statuses = {
969
+ statuses: dict = {
936
970
  'ORDER_TYPE_MARKET': 'market',
937
971
  'ORDER_TYPE_LIMIT': 'limit',
938
972
  }
939
973
  return self.safe_string(statuses, status, status)
940
974
 
941
- def parse_time_in_force(self, timeInForce):
942
- timeInForces = {
975
+ def parse_time_in_force(self, timeInForce: Str):
976
+ timeInForces: dict = {
943
977
  'ORDER_CONDITION_GOOD_TILL_CANCELLED': 'GTC',
944
978
  'ORDER_CONDITION_IMMEDIATE_OR_CANCEL': 'IOC',
945
979
  'ORDER_CONDITION_FILL_OR_KILL': 'FOK',
946
980
  }
947
981
  return self.safe_string(timeInForces, timeInForce, timeInForce)
948
982
 
949
- def parse_order(self, order, market: Market = None) -> Order:
983
+ def parse_order(self, order: dict, market: Market = None) -> Order:
950
984
  #
951
985
  # createOrder
952
986
  #
@@ -1021,7 +1055,6 @@ class latoken(Exchange, ImplicitAPI):
1021
1055
  status = 'open'
1022
1056
  clientOrderId = self.safe_string(order, 'clientOrderId')
1023
1057
  timeInForce = self.parse_time_in_force(self.safe_string(order, 'condition'))
1024
- triggerPrice = self.safe_string(order, 'stopPrice')
1025
1058
  return self.safe_order({
1026
1059
  'id': id,
1027
1060
  'clientOrderId': clientOrderId,
@@ -1036,8 +1069,7 @@ class latoken(Exchange, ImplicitAPI):
1036
1069
  'postOnly': None,
1037
1070
  'side': side,
1038
1071
  'price': price,
1039
- 'stopPrice': triggerPrice,
1040
- 'triggerPrice': triggerPrice,
1072
+ 'triggerPrice': self.safe_string(order, 'stopPrice'),
1041
1073
  'cost': cost,
1042
1074
  'amount': amount,
1043
1075
  'filled': filled,
@@ -1050,8 +1082,10 @@ class latoken(Exchange, ImplicitAPI):
1050
1082
  def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1051
1083
  """
1052
1084
  fetch all unfilled currently open orders
1053
- :see: https://api.latoken.com/doc/v2/#tag/Order/operation/getMyActiveOrdersByPair
1054
- :see: https://api.latoken.com/doc/v2/#tag/StopOrder/operation/getMyActiveStopOrdersByPair # stop
1085
+
1086
+ https://api.latoken.com/doc/v2/#tag/Order/operation/getMyActiveOrdersByPair
1087
+ https://api.latoken.com/doc/v2/#tag/StopOrder/operation/getMyActiveStopOrdersByPair # stop
1088
+
1055
1089
  :param str symbol: unified market symbol
1056
1090
  :param int [since]: the earliest time in ms to fetch open orders for
1057
1091
  :param int [limit]: the maximum number of open orders structures to retrieve
@@ -1067,7 +1101,7 @@ class latoken(Exchange, ImplicitAPI):
1067
1101
  params = self.omit(params, 'stop')
1068
1102
  # privateGetAuthOrderActive doesn't work even though its listed at https://api.latoken.com/doc/v2/#tag/Order/operation/getMyActiveOrders
1069
1103
  market = self.market(symbol)
1070
- request = {
1104
+ request: dict = {
1071
1105
  'currency': market['baseId'],
1072
1106
  'quote': market['quoteId'],
1073
1107
  }
@@ -1102,10 +1136,12 @@ class latoken(Exchange, ImplicitAPI):
1102
1136
  def fetch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1103
1137
  """
1104
1138
  fetches information on multiple orders made by the user
1105
- :see: https://api.latoken.com/doc/v2/#tag/Order/operation/getMyOrders
1106
- :see: https://api.latoken.com/doc/v2/#tag/Order/operation/getMyOrdersByPair
1107
- :see: https://api.latoken.com/doc/v2/#tag/StopOrder/operation/getMyStopOrders # stop
1108
- :see: https://api.latoken.com/doc/v2/#tag/StopOrder/operation/getMyStopOrdersByPair # stop
1139
+
1140
+ https://api.latoken.com/doc/v2/#tag/Order/operation/getMyOrders
1141
+ https://api.latoken.com/doc/v2/#tag/Order/operation/getMyOrdersByPair
1142
+ https://api.latoken.com/doc/v2/#tag/StopOrder/operation/getMyStopOrders # stop
1143
+ https://api.latoken.com/doc/v2/#tag/StopOrder/operation/getMyStopOrdersByPair # stop
1144
+
1109
1145
  :param str symbol: unified market symbol of the market orders were made in
1110
1146
  :param int [since]: the earliest time in ms to fetch orders for
1111
1147
  :param int [limit]: the maximum number of order structures to retrieve
@@ -1114,7 +1150,7 @@ class latoken(Exchange, ImplicitAPI):
1114
1150
  :returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
1115
1151
  """
1116
1152
  self.load_markets()
1117
- request = {
1153
+ request: dict = {
1118
1154
  # 'currency': market['baseId'],
1119
1155
  # 'quote': market['quoteId'],
1120
1156
  # 'from': self.milliseconds(),
@@ -1166,15 +1202,18 @@ class latoken(Exchange, ImplicitAPI):
1166
1202
  def fetch_order(self, id: str, symbol: Str = None, params={}):
1167
1203
  """
1168
1204
  fetches information on an order made by the user
1169
- :see: https://api.latoken.com/doc/v2/#tag/Order/operation/getOrderById
1170
- :see: https://api.latoken.com/doc/v2/#tag/StopOrder/operation/getStopOrderById
1205
+
1206
+ https://api.latoken.com/doc/v2/#tag/Order/operation/getOrderById
1207
+ https://api.latoken.com/doc/v2/#tag/StopOrder/operation/getStopOrderById
1208
+
1209
+ :param str id: order id
1171
1210
  :param str [symbol]: not used by latoken fetchOrder
1172
1211
  :param dict [params]: extra parameters specific to the exchange API endpoint
1173
1212
  :param boolean [params.trigger]: True if fetching a trigger order
1174
1213
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1175
1214
  """
1176
1215
  self.load_markets()
1177
- request = {
1216
+ request: dict = {
1178
1217
  'id': id,
1179
1218
  }
1180
1219
  isTrigger = self.safe_value_2(params, 'trigger', 'stop')
@@ -1209,17 +1248,19 @@ class latoken(Exchange, ImplicitAPI):
1209
1248
  def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
1210
1249
  """
1211
1250
  create a trade order
1212
- :see: https://api.latoken.com/doc/v2/#tag/Order/operation/placeOrder
1213
- :see: https://api.latoken.com/doc/v2/#tag/StopOrder/operation/placeStopOrder # stop
1251
+
1252
+ https://api.latoken.com/doc/v2/#tag/Order/operation/placeOrder
1253
+ https://api.latoken.com/doc/v2/#tag/StopOrder/operation/placeStopOrder # stop
1254
+
1214
1255
  :param str symbol: unified symbol of the market to create an order in
1215
1256
  :param str type: 'market' or 'limit'
1216
1257
  :param str side: 'buy' or 'sell'
1217
1258
  :param float amount: how much of currency you want to trade in units of base currency
1218
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
1259
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1219
1260
  :param dict [params]: extra parameters specific to the exchange API endpoint
1220
1261
  :param float [params.triggerPrice]: the price at which a trigger order is triggered at
1221
- *
1222
- * EXCHANGE SPECIFIC PARAMETERS
1262
+
1263
+ EXCHANGE SPECIFIC PARAMETERS
1223
1264
  :param str [params.condition]: "GTC", "IOC", or "FOK"
1224
1265
  :param str [params.clientOrderId]: [0 .. 50] characters, client's custom order id(free field for your convenience)
1225
1266
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
@@ -1227,7 +1268,7 @@ class latoken(Exchange, ImplicitAPI):
1227
1268
  self.load_markets()
1228
1269
  market = self.market(symbol)
1229
1270
  uppercaseType = type.upper()
1230
- request = {
1271
+ request: dict = {
1231
1272
  'baseCurrency': market['baseId'],
1232
1273
  'quoteCurrency': market['quoteId'],
1233
1274
  'side': side.upper(), # "BUY", "BID", "SELL", "ASK"
@@ -1266,8 +1307,10 @@ class latoken(Exchange, ImplicitAPI):
1266
1307
  def cancel_order(self, id: str, symbol: Str = None, params={}):
1267
1308
  """
1268
1309
  cancels an open order
1269
- :see: https://api.latoken.com/doc/v2/#tag/Order/operation/cancelOrder
1270
- :see: https://api.latoken.com/doc/v2/#tag/StopOrder/operation/cancelStopOrder # stop
1310
+
1311
+ https://api.latoken.com/doc/v2/#tag/Order/operation/cancelOrder
1312
+ https://api.latoken.com/doc/v2/#tag/StopOrder/operation/cancelStopOrder # stop
1313
+
1271
1314
  :param str id: order id
1272
1315
  :param str symbol: not used by latoken cancelOrder()
1273
1316
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1275,7 +1318,7 @@ class latoken(Exchange, ImplicitAPI):
1275
1318
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1276
1319
  """
1277
1320
  self.load_markets()
1278
- request = {
1321
+ request: dict = {
1279
1322
  'id': id,
1280
1323
  }
1281
1324
  isTrigger = self.safe_value_2(params, 'trigger', 'stop')
@@ -1299,15 +1342,17 @@ class latoken(Exchange, ImplicitAPI):
1299
1342
  def cancel_all_orders(self, symbol: Str = None, params={}):
1300
1343
  """
1301
1344
  cancel all open orders in a market
1302
- :see: https://api.latoken.com/doc/v2/#tag/Order/operation/cancelAllOrders
1303
- :see: https://api.latoken.com/doc/v2/#tag/Order/operation/cancelAllOrdersByPair
1345
+
1346
+ https://api.latoken.com/doc/v2/#tag/Order/operation/cancelAllOrders
1347
+ https://api.latoken.com/doc/v2/#tag/Order/operation/cancelAllOrdersByPair
1348
+
1304
1349
  :param str symbol: unified market symbol of the market to cancel orders in
1305
1350
  :param dict [params]: extra parameters specific to the exchange API endpoint
1306
1351
  :param boolean [params.trigger]: True if cancelling trigger orders
1307
1352
  :returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
1308
1353
  """
1309
1354
  self.load_markets()
1310
- request = {
1355
+ request: dict = {
1311
1356
  # 'currency': market['baseId'],
1312
1357
  # 'quote': market['quoteId'],
1313
1358
  }
@@ -1334,13 +1379,19 @@ class latoken(Exchange, ImplicitAPI):
1334
1379
  # "status":"SUCCESS"
1335
1380
  # }
1336
1381
  #
1337
- return response
1382
+ return [
1383
+ self.safe_order({
1384
+ 'info': response,
1385
+ }),
1386
+ ]
1338
1387
 
1339
1388
  def fetch_transactions(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
1340
1389
  """
1341
- * @deprecated
1390
+ @deprecated
1342
1391
  use fetchDepositsWithdrawals instead
1343
- :see: https://api.latoken.com/doc/v2/#tag/Transaction/operation/getUserTransactions
1392
+
1393
+ https://api.latoken.com/doc/v2/#tag/Transaction/operation/getUserTransactions
1394
+
1344
1395
  :param str code: unified currency code for the currency of the transactions, default is None
1345
1396
  :param int [since]: timestamp in ms of the earliest transaction, default is None
1346
1397
  :param int [limit]: max number of transactions to return, default is None
@@ -1348,7 +1399,7 @@ class latoken(Exchange, ImplicitAPI):
1348
1399
  :returns dict: a list of `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
1349
1400
  """
1350
1401
  self.load_markets()
1351
- request = {
1402
+ request: dict = {
1352
1403
  # 'page': '1',
1353
1404
  # 'size': 100,
1354
1405
  }
@@ -1382,10 +1433,10 @@ class latoken(Exchange, ImplicitAPI):
1382
1433
  currency = None
1383
1434
  if code is not None:
1384
1435
  currency = self.currency(code)
1385
- content = self.safe_value(response, 'content', [])
1436
+ content = self.safe_list(response, 'content', [])
1386
1437
  return self.parse_transactions(content, currency, since, limit)
1387
1438
 
1388
- def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
1439
+ def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
1389
1440
  #
1390
1441
  # {
1391
1442
  # "id":"fbf7d0d1-2629-4ad8-9def-7a1dba423362",
@@ -1447,25 +1498,28 @@ class latoken(Exchange, ImplicitAPI):
1447
1498
  'fee': fee,
1448
1499
  }
1449
1500
 
1450
- def parse_transaction_status(self, status):
1451
- statuses = {
1501
+ def parse_transaction_status(self, status: Str):
1502
+ statuses: dict = {
1452
1503
  'TRANSACTION_STATUS_CONFIRMED': 'ok',
1453
1504
  'TRANSACTION_STATUS_EXECUTED': 'ok',
1505
+ 'TRANSACTION_STATUS_CHECKING': 'pending',
1454
1506
  'TRANSACTION_STATUS_CANCELLED': 'canceled',
1455
1507
  }
1456
1508
  return self.safe_string(statuses, status, status)
1457
1509
 
1458
1510
  def parse_transaction_type(self, type):
1459
- types = {
1511
+ types: dict = {
1460
1512
  'TRANSACTION_TYPE_DEPOSIT': 'deposit',
1461
1513
  'TRANSACTION_TYPE_WITHDRAWAL': 'withdrawal',
1462
1514
  }
1463
1515
  return self.safe_string(types, type, type)
1464
1516
 
1465
- def fetch_transfers(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
1517
+ def fetch_transfers(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[TransferEntry]:
1466
1518
  """
1467
1519
  fetch a history of internal transfers made on an account
1468
- :see: https://api.latoken.com/doc/v2/#tag/Transfer/operation/getUsersTransfers
1520
+
1521
+ https://api.latoken.com/doc/v2/#tag/Transfer/operation/getUsersTransfers
1522
+
1469
1523
  :param str code: unified currency code of the currency transferred
1470
1524
  :param int [since]: the earliest time in ms to fetch transfers for
1471
1525
  :param int [limit]: the maximum number of transfers structures to retrieve
@@ -1506,15 +1560,17 @@ class latoken(Exchange, ImplicitAPI):
1506
1560
  # "hasContent": True
1507
1561
  # }
1508
1562
  #
1509
- transfers = self.safe_value(response, 'content', [])
1563
+ transfers = self.safe_list(response, 'content', [])
1510
1564
  return self.parse_transfers(transfers, currency, since, limit)
1511
1565
 
1512
1566
  def transfer(self, code: str, amount: float, fromAccount: str, toAccount: str, params={}) -> TransferEntry:
1513
1567
  """
1514
1568
  transfer currency internally between wallets on the same account
1515
- :see: https://api.latoken.com/doc/v2/#tag/Transfer/operation/transferByEmail
1516
- :see: https://api.latoken.com/doc/v2/#tag/Transfer/operation/transferById
1517
- :see: https://api.latoken.com/doc/v2/#tag/Transfer/operation/transferByPhone
1569
+
1570
+ https://api.latoken.com/doc/v2/#tag/Transfer/operation/transferByEmail
1571
+ https://api.latoken.com/doc/v2/#tag/Transfer/operation/transferById
1572
+ https://api.latoken.com/doc/v2/#tag/Transfer/operation/transferByPhone
1573
+
1518
1574
  :param str code: unified currency code
1519
1575
  :param float amount: amount to transfer
1520
1576
  :param str fromAccount: account to transfer from
@@ -1524,7 +1580,7 @@ class latoken(Exchange, ImplicitAPI):
1524
1580
  """
1525
1581
  self.load_markets()
1526
1582
  currency = self.currency(code)
1527
- request = {
1583
+ request: dict = {
1528
1584
  'currency': currency['id'],
1529
1585
  'recipient': toAccount,
1530
1586
  'value': self.currency_to_precision(code, amount),
@@ -1560,7 +1616,7 @@ class latoken(Exchange, ImplicitAPI):
1560
1616
  #
1561
1617
  return self.parse_transfer(response)
1562
1618
 
1563
- def parse_transfer(self, transfer, currency: Currency = None):
1619
+ def parse_transfer(self, transfer: dict, currency: Currency = None) -> TransferEntry:
1564
1620
  #
1565
1621
  # {
1566
1622
  # "id": "e6fc4ace-7750-44e4-b7e9-6af038ac7107",
@@ -1598,8 +1654,8 @@ class latoken(Exchange, ImplicitAPI):
1598
1654
  'status': self.parse_transfer_status(status),
1599
1655
  }
1600
1656
 
1601
- def parse_transfer_status(self, status):
1602
- statuses = {
1657
+ def parse_transfer_status(self, status: Str) -> Str:
1658
+ statuses: dict = {
1603
1659
  'TRANSFER_STATUS_COMPLETED': 'ok',
1604
1660
  'TRANSFER_STATUS_PENDING': 'pending',
1605
1661
  'TRANSFER_STATUS_REJECTED': 'failed',
@@ -1631,7 +1687,7 @@ class latoken(Exchange, ImplicitAPI):
1631
1687
  url = self.urls['api']['rest'] + requestString
1632
1688
  return {'url': url, 'method': method, 'body': body, 'headers': headers}
1633
1689
 
1634
- def handle_errors(self, code, reason, url, method, headers, body, response, requestHeaders, requestBody):
1690
+ def handle_errors(self, code: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
1635
1691
  if not response:
1636
1692
  return None
1637
1693
  #