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
@@ -6,9 +6,10 @@
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.poloniex 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, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, 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
@@ -21,7 +22,6 @@ from ccxt.base.errors import NotSupported
21
22
  from ccxt.base.errors import ExchangeNotAvailable
22
23
  from ccxt.base.errors import OnMaintenance
23
24
  from ccxt.base.errors import RequestTimeout
24
- from ccxt.base.errors import AuthenticationError
25
25
  from ccxt.base.decimal_to_precision import TICK_SIZE
26
26
  from ccxt.base.precise import Precise
27
27
 
@@ -51,16 +51,25 @@ class poloniex(Exchange, ImplicitAPI):
51
51
  'createMarketOrderWithCost': False,
52
52
  'createMarketSellOrderWithCost': False,
53
53
  'createOrder': True,
54
+ 'createStopOrder': True,
55
+ 'createTriggerOrder': True,
54
56
  'editOrder': True,
55
57
  'fetchBalance': True,
56
58
  'fetchClosedOrder': False,
57
59
  'fetchCurrencies': True,
58
60
  'fetchDepositAddress': True,
61
+ 'fetchDepositAddresses': False,
62
+ 'fetchDepositAddressesByNetwork': False,
59
63
  'fetchDeposits': True,
60
64
  'fetchDepositsWithdrawals': True,
61
65
  'fetchDepositWithdrawFee': 'emulated',
62
66
  'fetchDepositWithdrawFees': True,
67
+ 'fetchFundingHistory': False,
68
+ 'fetchFundingInterval': False,
69
+ 'fetchFundingIntervals': False,
63
70
  'fetchFundingRate': False,
71
+ 'fetchFundingRateHistory': False,
72
+ 'fetchFundingRates': False,
64
73
  'fetchMarginMode': False,
65
74
  'fetchMarkets': True,
66
75
  'fetchMyTrades': True,
@@ -84,6 +93,7 @@ class poloniex(Exchange, ImplicitAPI):
84
93
  'fetchTransfer': False,
85
94
  'fetchTransfers': False,
86
95
  'fetchWithdrawals': True,
96
+ 'sandbox': True,
87
97
  'transfer': True,
88
98
  'withdraw': True,
89
99
  },
@@ -112,7 +122,7 @@ class poloniex(Exchange, ImplicitAPI):
112
122
  'rest': 'https://sand-spot-api-gateway.poloniex.com',
113
123
  },
114
124
  'www': 'https://www.poloniex.com',
115
- 'doc': 'https://docs.poloniex.com',
125
+ 'doc': 'https://api-docs.poloniex.com/spot/',
116
126
  'fees': 'https://poloniex.com/fees',
117
127
  'referral': 'https://poloniex.com/signup?c=UBFZJRPJ',
118
128
  },
@@ -276,6 +286,67 @@ class poloniex(Exchange, ImplicitAPI):
276
286
  'futures': 'future',
277
287
  },
278
288
  },
289
+ 'features': {
290
+ 'default': {
291
+ 'sandbox': True,
292
+ 'createOrder': {
293
+ 'marginMode': True, # todo
294
+ 'triggerPrice': True,
295
+ 'triggerPriceType': None,
296
+ 'triggerDirection': False,
297
+ 'stopLossPrice': False, # todo
298
+ 'takeProfitPrice': False, # todo
299
+ 'attachedStopLossTakeProfit': None,
300
+ 'timeInForce': {
301
+ 'IOC': True,
302
+ 'FOK': True,
303
+ 'PO': False,
304
+ 'GTD': False,
305
+ },
306
+ 'hedged': False,
307
+ 'leverage': False,
308
+ 'marketBuyByCost': True,
309
+ 'marketBuyRequiresPrice': False,
310
+ 'selfTradePrevention': True, # todo, only for non-trigger orders
311
+ 'trailing': False,
312
+ 'iceberg': False,
313
+ },
314
+ 'createOrders': None,
315
+ 'fetchMyTrades': {
316
+ 'marginMode': False,
317
+ 'limit': 1000,
318
+ 'daysBack': 100000,
319
+ 'untilDays': 100000,
320
+ },
321
+ 'fetchOrder': {
322
+ 'marginMode': False,
323
+ 'trigger': False,
324
+ 'trailing': False,
325
+ },
326
+ 'fetchOpenOrders': {
327
+ 'marginMode': False,
328
+ 'limit': 2000,
329
+ 'trigger': False,
330
+ 'trailing': False,
331
+ },
332
+ 'fetchOrders': None,
333
+ 'fetchClosedOrders': None, # todo implement
334
+ 'fetchOHLCV': {
335
+ 'limit': 500,
336
+ },
337
+ },
338
+ 'spot': {
339
+ 'extends': 'default',
340
+ },
341
+ 'swap': {
342
+ 'linear': None,
343
+ 'inverse': None,
344
+ },
345
+ 'future': {
346
+ 'linear': None,
347
+ 'inverse': None,
348
+ },
349
+ },
279
350
  'precisionMode': TICK_SIZE,
280
351
  'exceptions': {
281
352
  'exact': {
@@ -358,6 +429,7 @@ class poloniex(Exchange, ImplicitAPI):
358
429
  '21350': InvalidOrder, # Amount must be greater than 1 USDT
359
430
  '21355': ExchangeError, # Interval between startTime and endTime in trade/order history has exceeded 7 day limit
360
431
  '21356': BadRequest, # Order size would cause too much price movement. Reduce order size.
432
+ '21721': InsufficientFunds,
361
433
  '24101': BadSymbol, # Invalid symbol
362
434
  '24102': InvalidOrder, # Invalid K-line type
363
435
  '24103': InvalidOrder, # Invalid endTime
@@ -424,7 +496,9 @@ class poloniex(Exchange, ImplicitAPI):
424
496
  async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
425
497
  """
426
498
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
427
- :see: https://docs.poloniex.com/#public-endpoints-market-data-candles
499
+
500
+ https://api-docs.poloniex.com/spot/api/public/market-data#candles
501
+
428
502
  :param str symbol: unified symbol of the market to fetch OHLCV data for
429
503
  :param str timeframe: the length of time each candle represents
430
504
  :param int [since]: timestamp in ms of the earliest candle to fetch
@@ -440,7 +514,7 @@ class poloniex(Exchange, ImplicitAPI):
440
514
  if paginate:
441
515
  return await self.fetch_paginated_call_deterministic('fetchOHLCV', symbol, since, limit, timeframe, params, 500)
442
516
  market = self.market(symbol)
443
- request = {
517
+ request: dict = {
444
518
  'symbol': market['id'],
445
519
  'interval': self.safe_string(self.timeframes, timeframe, timeframe),
446
520
  }
@@ -480,10 +554,12 @@ class poloniex(Exchange, ImplicitAPI):
480
554
  self.options['currenciesByNumericId'] = self.index_by(self.currencies, 'numericId')
481
555
  return markets
482
556
 
483
- async def fetch_markets(self, params={}):
557
+ async def fetch_markets(self, params={}) -> List[Market]:
484
558
  """
485
559
  retrieves data on all markets for poloniex
486
- :see: https://docs.poloniex.com/#public-endpoints-reference-data-symbol-information
560
+
561
+ https://api-docs.poloniex.com/spot/api/public/reference-data#symbol-information
562
+
487
563
  :param dict [params]: extra parameters specific to the exchange API endpoint
488
564
  :returns dict[]: an array of objects representing market data
489
565
  """
@@ -513,7 +589,7 @@ class poloniex(Exchange, ImplicitAPI):
513
589
  #
514
590
  return self.parse_markets(markets)
515
591
 
516
- def parse_market(self, market) -> Market:
592
+ def parse_market(self, market: dict) -> Market:
517
593
  id = self.safe_string(market, 'symbol')
518
594
  baseId = self.safe_string(market, 'baseCurrencyName')
519
595
  quoteId = self.safe_string(market, 'quoteCurrencyName')
@@ -572,14 +648,16 @@ class poloniex(Exchange, ImplicitAPI):
572
648
  async def fetch_time(self, params={}):
573
649
  """
574
650
  fetches the current integer timestamp in milliseconds from the exchange server
575
- :see: https://docs.poloniex.com/#public-endpoints-reference-data-system-timestamp
651
+
652
+ https://api-docs.poloniex.com/spot/api/public/reference-data#system-timestamp
653
+
576
654
  :param dict [params]: extra parameters specific to the exchange API endpoint
577
655
  :returns int: the current integer timestamp in milliseconds from the exchange server
578
656
  """
579
657
  response = await self.publicGetTimestamp(params)
580
658
  return self.safe_integer(response, 'serverTime')
581
659
 
582
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
660
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
583
661
  #
584
662
  # {
585
663
  # "symbol" : "BTC_USDT",
@@ -631,13 +709,16 @@ class poloniex(Exchange, ImplicitAPI):
631
709
  'average': None,
632
710
  'baseVolume': self.safe_string(ticker, 'quantity'),
633
711
  'quoteVolume': self.safe_string(ticker, 'amount'),
712
+ 'markPrice': self.safe_string(ticker, 'markPrice'),
634
713
  'info': ticker,
635
714
  }, market)
636
715
 
637
716
  async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
638
717
  """
639
718
  fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
640
- :see: https://docs.poloniex.com/#public-endpoints-market-data-ticker
719
+
720
+ https://api-docs.poloniex.com/spot/api/public/market-data#ticker
721
+
641
722
  :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
642
723
  :param dict [params]: extra parameters specific to the exchange API endpoint
643
724
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -671,10 +752,12 @@ class poloniex(Exchange, ImplicitAPI):
671
752
  #
672
753
  return self.parse_tickers(response, symbols)
673
754
 
674
- async def fetch_currencies(self, params={}):
755
+ async def fetch_currencies(self, params={}) -> Currencies:
675
756
  """
676
757
  fetches all available currencies on an exchange
677
- :see: https://docs.poloniex.com/#public-endpoints-reference-data-currency-information
758
+
759
+ https://api-docs.poloniex.com/spot/api/public/reference-data#currency-information
760
+
678
761
  :param dict [params]: extra parameters specific to the exchange API endpoint
679
762
  :returns dict: an associative dictionary of currencies
680
763
  """
@@ -704,7 +787,7 @@ class poloniex(Exchange, ImplicitAPI):
704
787
  # }
705
788
  # ]
706
789
  #
707
- result = {}
790
+ result: dict = {}
708
791
  for i in range(0, len(response)):
709
792
  item = self.safe_value(response, i)
710
793
  ids = list(item.keys())
@@ -788,7 +871,7 @@ class poloniex(Exchange, ImplicitAPI):
788
871
  }
789
872
  result[code]['networks'] = networks
790
873
  info = self.safe_value(result[code], 'info', [])
791
- rawInfo = {}
874
+ rawInfo: dict = {}
792
875
  rawInfo[id] = currency
793
876
  info.append(rawInfo)
794
877
  result[code]['info'] = info
@@ -804,14 +887,16 @@ class poloniex(Exchange, ImplicitAPI):
804
887
  async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
805
888
  """
806
889
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
807
- :see: https://docs.poloniex.com/#public-endpoints-market-data-ticker
890
+
891
+ https://api-docs.poloniex.com/spot/api/public/market-data#ticker
892
+
808
893
  :param str symbol: unified symbol of the market to fetch the ticker for
809
894
  :param dict [params]: extra parameters specific to the exchange API endpoint
810
895
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
811
896
  """
812
897
  await self.load_markets()
813
898
  market = self.market(symbol)
814
- request = {
899
+ request: dict = {
815
900
  'symbol': market['id'],
816
901
  }
817
902
  response = await self.publicGetMarketsSymbolTicker24h(self.extend(request, params))
@@ -839,7 +924,7 @@ class poloniex(Exchange, ImplicitAPI):
839
924
  #
840
925
  return self.parse_ticker(response, market)
841
926
 
842
- def parse_trade(self, trade, market: Market = None) -> Trade:
927
+ def parse_trade(self, trade: dict, market: Market = None) -> Trade:
843
928
  #
844
929
  # fetchTrades
845
930
  #
@@ -932,7 +1017,9 @@ class poloniex(Exchange, ImplicitAPI):
932
1017
  async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
933
1018
  """
934
1019
  get the list of most recent trades for a particular symbol
935
- :see: https://docs.poloniex.com/#public-endpoints-market-data-trades
1020
+
1021
+ https://api-docs.poloniex.com/spot/api/public/market-data#trades
1022
+
936
1023
  :param str symbol: unified symbol of the market to fetch trades for
937
1024
  :param int [since]: timestamp in ms of the earliest trade to fetch
938
1025
  :param int [limit]: the maximum amount of trades to fetch
@@ -941,7 +1028,7 @@ class poloniex(Exchange, ImplicitAPI):
941
1028
  """
942
1029
  await self.load_markets()
943
1030
  market = self.market(symbol)
944
- request = {
1031
+ request: dict = {
945
1032
  'symbol': market['id'],
946
1033
  }
947
1034
  if limit is not None:
@@ -965,7 +1052,9 @@ class poloniex(Exchange, ImplicitAPI):
965
1052
  async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
966
1053
  """
967
1054
  fetch all trades made by the user
968
- :see: https://docs.poloniex.com/#authenticated-endpoints-trades-trade-history
1055
+
1056
+ https://api-docs.poloniex.com/spot/api/private/trade#trade-history
1057
+
969
1058
  :param str symbol: unified market symbol
970
1059
  :param int [since]: the earliest time in ms to fetch trades for
971
1060
  :param int [limit]: the maximum number of trades structures to retrieve
@@ -982,7 +1071,7 @@ class poloniex(Exchange, ImplicitAPI):
982
1071
  market: Market = None
983
1072
  if symbol is not None:
984
1073
  market = self.market(symbol)
985
- request = {
1074
+ request: dict = {
986
1075
  # 'from': 12345678, # A 'trade Id'. The query begins at ‘from'.
987
1076
  # 'direction': 'PRE', # PRE, NEXT The direction before or after ‘from'.
988
1077
  }
@@ -1016,8 +1105,8 @@ class poloniex(Exchange, ImplicitAPI):
1016
1105
  result = self.parse_trades(response, market, since, limit)
1017
1106
  return result
1018
1107
 
1019
- def parse_order_status(self, status):
1020
- statuses = {
1108
+ def parse_order_status(self, status: Str):
1109
+ statuses: dict = {
1021
1110
  'NEW': 'open',
1022
1111
  'PARTIALLY_FILLED': 'open',
1023
1112
  'FILLED': 'closed',
@@ -1028,7 +1117,7 @@ class poloniex(Exchange, ImplicitAPI):
1028
1117
  }
1029
1118
  return self.safe_string(statuses, status, status)
1030
1119
 
1031
- def parse_order(self, order, market: Market = None) -> Order:
1120
+ def parse_order(self, order: dict, market: Market = None) -> Order:
1032
1121
  #
1033
1122
  # fetchOpenOrder
1034
1123
  #
@@ -1086,8 +1175,9 @@ class poloniex(Exchange, ImplicitAPI):
1086
1175
  market = self.safe_market(marketId, market, '_')
1087
1176
  symbol = market['symbol']
1088
1177
  resultingTrades = self.safe_value(order, 'resultingTrades')
1089
- if not isinstance(resultingTrades, list):
1090
- resultingTrades = self.safe_value(resultingTrades, self.safe_string(market, 'id', marketId))
1178
+ if resultingTrades is not None:
1179
+ if not isinstance(resultingTrades, list):
1180
+ resultingTrades = self.safe_value(resultingTrades, self.safe_string(market, 'id', marketId))
1091
1181
  price = self.safe_string_2(order, 'price', 'rate')
1092
1182
  amount = self.safe_string(order, 'quantity')
1093
1183
  filled = self.safe_string(order, 'filledQuantity')
@@ -1114,7 +1204,6 @@ class poloniex(Exchange, ImplicitAPI):
1114
1204
  'currency': feeCurrencyCode,
1115
1205
  }
1116
1206
  clientOrderId = self.safe_string(order, 'clientOrderId')
1117
- triggerPrice = self.safe_string_2(order, 'triggerPrice', 'stopPrice')
1118
1207
  return self.safe_order({
1119
1208
  'info': order,
1120
1209
  'id': id,
@@ -1129,8 +1218,7 @@ class poloniex(Exchange, ImplicitAPI):
1129
1218
  'postOnly': None,
1130
1219
  'side': side,
1131
1220
  'price': price,
1132
- 'stopPrice': triggerPrice,
1133
- 'triggerPrice': triggerPrice,
1221
+ 'triggerPrice': self.safe_string_2(order, 'triggerPrice', 'stopPrice'),
1134
1222
  'cost': None,
1135
1223
  'average': self.safe_string(order, 'avgPrice'),
1136
1224
  'amount': amount,
@@ -1141,7 +1229,7 @@ class poloniex(Exchange, ImplicitAPI):
1141
1229
  }, market)
1142
1230
 
1143
1231
  def parse_order_type(self, status):
1144
- statuses = {
1232
+ statuses: dict = {
1145
1233
  'MARKET': 'market',
1146
1234
  'LIMIT': 'limit',
1147
1235
  'STOP-LIMIT': 'limit',
@@ -1164,18 +1252,20 @@ class poloniex(Exchange, ImplicitAPI):
1164
1252
  async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1165
1253
  """
1166
1254
  fetch all unfilled currently open orders
1167
- :see: https://docs.poloniex.com/#authenticated-endpoints-orders-open-orders
1168
- :see: https://docs.poloniex.com/#authenticated-endpoints-smart-orders-open-orders # trigger orders
1255
+
1256
+ https://api-docs.poloniex.com/spot/api/private/order#open-orders
1257
+ https://api-docs.poloniex.com/spot/api/private/smart-order#open-orders # trigger orders
1258
+
1169
1259
  :param str symbol: unified market symbol
1170
1260
  :param int [since]: the earliest time in ms to fetch open orders for
1171
1261
  :param int [limit]: the maximum number of open orders structures to retrieve
1172
1262
  :param dict [params]: extra parameters specific to the exchange API endpoint
1173
- :param boolean [params.stop]: set True to fetch trigger orders instead of regular orders
1263
+ :param boolean [params.trigger]: set True to fetch trigger orders instead of regular orders
1174
1264
  :returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
1175
1265
  """
1176
1266
  await self.load_markets()
1177
1267
  market: Market = None
1178
- request = {}
1268
+ request: dict = {}
1179
1269
  if symbol is not None:
1180
1270
  market = self.market(symbol)
1181
1271
  request['symbol'] = market['id']
@@ -1211,21 +1301,23 @@ class poloniex(Exchange, ImplicitAPI):
1211
1301
  # }
1212
1302
  # ]
1213
1303
  #
1214
- extension = {'status': 'open'}
1304
+ extension: dict = {'status': 'open'}
1215
1305
  return self.parse_orders(response, market, since, limit, extension)
1216
1306
 
1217
1307
  async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
1218
1308
  """
1219
1309
  create a trade order
1220
- :see: https://docs.poloniex.com/#authenticated-endpoints-orders-create-order
1221
- :see: https://docs.poloniex.com/#authenticated-endpoints-smart-orders-create-order # trigger orders
1310
+
1311
+ https://api-docs.poloniex.com/spot/api/private/order#create-order
1312
+ https://api-docs.poloniex.com/spot/api/private/smart-order#create-order # trigger orders
1313
+
1222
1314
  :param str symbol: unified symbol of the market to create an order in
1223
1315
  :param str type: 'market' or 'limit'
1224
1316
  :param str side: 'buy' or 'sell'
1225
1317
  :param float amount: how much of currency you want to trade in units of base currency
1226
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
1318
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1227
1319
  :param dict [params]: extra parameters specific to the exchange API endpoint
1228
- :param float [params.triggerPrice]: *spot only* The price at which a trigger order is triggered at
1320
+ :param float [params.triggerPrice]: the price at which a trigger order is triggered at
1229
1321
  :param float [params.cost]: *spot market buy only* the quote quantity that can be used alternative for the amount
1230
1322
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1231
1323
  """
@@ -1233,7 +1325,7 @@ class poloniex(Exchange, ImplicitAPI):
1233
1325
  market = self.market(symbol)
1234
1326
  if not market['spot']:
1235
1327
  raise NotSupported(self.id + ' createOrder() does not support ' + market['type'] + ' orders, only spot orders are accepted')
1236
- request = {
1328
+ request: dict = {
1237
1329
  'symbol': market['id'],
1238
1330
  'side': side,
1239
1331
  # 'timeInForce': timeInForce,
@@ -1254,7 +1346,8 @@ class poloniex(Exchange, ImplicitAPI):
1254
1346
  # }
1255
1347
  #
1256
1348
  response = self.extend(response, {
1257
- 'type': side,
1349
+ 'type': type,
1350
+ 'side': side,
1258
1351
  })
1259
1352
  return self.parse_order(response, market)
1260
1353
 
@@ -1305,14 +1398,16 @@ class poloniex(Exchange, ImplicitAPI):
1305
1398
  async def edit_order(self, id: str, symbol: str, type: OrderType, side: OrderSide, amount: Num = None, price: Num = None, params={}):
1306
1399
  """
1307
1400
  edit a trade order
1308
- :see: https://docs.poloniex.com/#authenticated-endpoints-orders-cancel-replace-order
1309
- :see: https://docs.poloniex.com/#authenticated-endpoints-smart-orders-cancel-replace-order
1401
+
1402
+ https://api-docs.poloniex.com/spot/api/private/order#cancel-replace-order
1403
+ https://api-docs.poloniex.com/spot/api/private/smart-order#cancel-replace-order
1404
+
1310
1405
  :param str id: order id
1311
1406
  :param str symbol: unified symbol of the market to create an order in
1312
1407
  :param str type: 'market' or 'limit'
1313
1408
  :param str side: 'buy' or 'sell'
1314
1409
  :param float [amount]: how much of the currency you want to trade in units of the base currency
1315
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
1410
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1316
1411
  :param dict [params]: extra parameters specific to the exchange API endpoint
1317
1412
  :param float [params.triggerPrice]: The price at which a trigger order is triggered at
1318
1413
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
@@ -1321,7 +1416,7 @@ class poloniex(Exchange, ImplicitAPI):
1321
1416
  market = self.market(symbol)
1322
1417
  if not market['spot']:
1323
1418
  raise NotSupported(self.id + ' editOrder() does not support ' + market['type'] + ' orders, only spot orders are accepted')
1324
- request = {
1419
+ request: dict = {
1325
1420
  'id': id,
1326
1421
  # 'timeInForce': timeInForce,
1327
1422
  }
@@ -1339,7 +1434,8 @@ class poloniex(Exchange, ImplicitAPI):
1339
1434
  # }
1340
1435
  #
1341
1436
  response = self.extend(response, {
1342
- 'type': side,
1437
+ 'side': side,
1438
+ 'type': type,
1343
1439
  })
1344
1440
  return self.parse_order(response, market)
1345
1441
 
@@ -1348,8 +1444,8 @@ class poloniex(Exchange, ImplicitAPI):
1348
1444
  # @method
1349
1445
  # @name poloniex#cancelOrder
1350
1446
  # @description cancels an open order
1351
- # @see https://docs.poloniex.com/#authenticated-endpoints-orders-cancel-order-by-id
1352
- # @see https://docs.poloniex.com/#authenticated-endpoints-smart-orders-cancel-order-by-id # trigger orders
1447
+ # @see https://api-docs.poloniex.com/spot/api/private/order#cancel-order-by-id
1448
+ # @see https://api-docs.poloniex.com/spot/api/private/smart-order#cancel-order-by-id # trigger orders
1353
1449
  # @param {string} id order id
1354
1450
  # @param {string} symbol unified symbol of the market the order was made in
1355
1451
  # @param {object} [params] extra parameters specific to the exchange API endpoint
@@ -1357,7 +1453,7 @@ class poloniex(Exchange, ImplicitAPI):
1357
1453
  # @returns {object} An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1358
1454
  #
1359
1455
  await self.load_markets()
1360
- request = {}
1456
+ request: dict = {}
1361
1457
  clientOrderId = self.safe_value(params, 'clientOrderId')
1362
1458
  if clientOrderId is not None:
1363
1459
  id = clientOrderId
@@ -1383,15 +1479,17 @@ class poloniex(Exchange, ImplicitAPI):
1383
1479
  async def cancel_all_orders(self, symbol: Str = None, params={}):
1384
1480
  """
1385
1481
  cancel all open orders
1386
- :see: https://docs.poloniex.com/#authenticated-endpoints-orders-cancel-all-orders
1387
- :see: https://docs.poloniex.com/#authenticated-endpoints-smart-orders-cancel-all-orders # trigger orders
1482
+
1483
+ https://api-docs.poloniex.com/spot/api/private/order#cancel-all-orders
1484
+ https://api-docs.poloniex.com/spot/api/private/smart-order#cancel-all-orders # trigger orders
1485
+
1388
1486
  :param str symbol: unified market symbol, only orders in the market of self symbol are cancelled when symbol is not None
1389
1487
  :param dict [params]: extra parameters specific to the exchange API endpoint
1390
1488
  :param boolean [params.trigger]: True if canceling trigger orders
1391
1489
  :returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
1392
1490
  """
1393
1491
  await self.load_markets()
1394
- request = {
1492
+ request: dict = {
1395
1493
  # 'accountTypes': 'SPOT',
1396
1494
  'symbols': [],
1397
1495
  }
@@ -1430,8 +1528,10 @@ class poloniex(Exchange, ImplicitAPI):
1430
1528
  async def fetch_order(self, id: str, symbol: Str = None, params={}):
1431
1529
  """
1432
1530
  fetch an order by it's id
1433
- :see: https://docs.poloniex.com/#authenticated-endpoints-orders-order-details
1434
- :see: https://docs.poloniex.com/#authenticated-endpoints-smart-orders-open-orders # trigger orders
1531
+
1532
+ https://api-docs.poloniex.com/spot/api/private/order#order-details
1533
+ https://api-docs.poloniex.com/spot/api/private/smart-order#open-orders # trigger orders
1534
+
1435
1535
  :param str id: order id
1436
1536
  :param str symbol: unified market symbol, default is None
1437
1537
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1440,7 +1540,7 @@ class poloniex(Exchange, ImplicitAPI):
1440
1540
  """
1441
1541
  await self.load_markets()
1442
1542
  id = str(id)
1443
- request = {
1543
+ request: dict = {
1444
1544
  'id': id,
1445
1545
  }
1446
1546
  isTrigger = self.safe_value_2(params, 'trigger', 'stop')
@@ -1485,7 +1585,9 @@ class poloniex(Exchange, ImplicitAPI):
1485
1585
  async def fetch_order_trades(self, id: str, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
1486
1586
  """
1487
1587
  fetch all the trades made from a single order
1488
- :see: https://docs.poloniex.com/#authenticated-endpoints-trades-trades-by-order-id
1588
+
1589
+ https://api-docs.poloniex.com/spot/api/private/trade#trades-by-order-id
1590
+
1489
1591
  :param str id: order id
1490
1592
  :param str symbol: unified market symbol
1491
1593
  :param int [since]: the earliest time in ms to fetch trades for
@@ -1494,7 +1596,7 @@ class poloniex(Exchange, ImplicitAPI):
1494
1596
  :returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
1495
1597
  """
1496
1598
  await self.load_markets()
1497
- request = {
1599
+ request: dict = {
1498
1600
  'id': id,
1499
1601
  }
1500
1602
  trades = await self.privateGetOrdersIdTrades(self.extend(request, params))
@@ -1522,7 +1624,7 @@ class poloniex(Exchange, ImplicitAPI):
1522
1624
  return self.parse_trades(trades)
1523
1625
 
1524
1626
  def parse_balance(self, response) -> Balances:
1525
- result = {
1627
+ result: dict = {
1526
1628
  'info': response,
1527
1629
  'timestamp': None,
1528
1630
  'datetime': None,
@@ -1543,12 +1645,14 @@ class poloniex(Exchange, ImplicitAPI):
1543
1645
  async def fetch_balance(self, params={}) -> Balances:
1544
1646
  """
1545
1647
  query for balance and get the amount of funds available for trading or funds locked in orders
1546
- :see: https://docs.poloniex.com/#authenticated-endpoints-accounts-all-account-balances
1648
+
1649
+ https://api-docs.poloniex.com/spot/api/private/account#all-account-balances
1650
+
1547
1651
  :param dict [params]: extra parameters specific to the exchange API endpoint
1548
1652
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
1549
1653
  """
1550
1654
  await self.load_markets()
1551
- request = {
1655
+ request: dict = {
1552
1656
  'accountType': 'SPOT',
1553
1657
  }
1554
1658
  response = await self.privateGetAccountsBalances(self.extend(request, params))
@@ -1570,10 +1674,12 @@ class poloniex(Exchange, ImplicitAPI):
1570
1674
  #
1571
1675
  return self.parse_balance(response)
1572
1676
 
1573
- async def fetch_trading_fees(self, params={}):
1677
+ async def fetch_trading_fees(self, params={}) -> TradingFees:
1574
1678
  """
1575
1679
  fetch the trading fees for multiple markets
1576
- :see: https://docs.poloniex.com/#authenticated-endpoints-accounts-fee-info
1680
+
1681
+ https://api-docs.poloniex.com/spot/api/private/account#fee-info
1682
+
1577
1683
  :param dict [params]: extra parameters specific to the exchange API endpoint
1578
1684
  :returns dict: a dictionary of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>` indexed by market symbols
1579
1685
  """
@@ -1587,7 +1693,7 @@ class poloniex(Exchange, ImplicitAPI):
1587
1693
  # "volume30D" : "0.00"
1588
1694
  # }
1589
1695
  #
1590
- result = {}
1696
+ result: dict = {}
1591
1697
  for i in range(0, len(self.symbols)):
1592
1698
  symbol = self.symbols[i]
1593
1699
  result[symbol] = {
@@ -1603,7 +1709,9 @@ class poloniex(Exchange, ImplicitAPI):
1603
1709
  async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
1604
1710
  """
1605
1711
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
1606
- :see: https://docs.poloniex.com/#public-endpoints-market-data-order-book
1712
+
1713
+ https://api-docs.poloniex.com/spot/api/public/market-data#order-book
1714
+
1607
1715
  :param str symbol: unified symbol of the market to fetch the order book for
1608
1716
  :param int [limit]: the maximum amount of order book entries to return
1609
1717
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1611,7 +1719,7 @@ class poloniex(Exchange, ImplicitAPI):
1611
1719
  """
1612
1720
  await self.load_markets()
1613
1721
  market = self.market(symbol)
1614
- request = {
1722
+ request: dict = {
1615
1723
  'symbol': market['id'],
1616
1724
  }
1617
1725
  if limit is not None:
@@ -1653,14 +1761,16 @@ class poloniex(Exchange, ImplicitAPI):
1653
1761
  async def create_deposit_address(self, code: str, params={}):
1654
1762
  """
1655
1763
  create a currency deposit address
1656
- :see: https://docs.poloniex.com/#authenticated-endpoints-wallets-deposit-addresses
1764
+
1765
+ https://api-docs.poloniex.com/spot/api/private/wallet#deposit-addresses
1766
+
1657
1767
  :param str code: unified currency code of the currency for the deposit address
1658
1768
  :param dict [params]: extra parameters specific to the exchange API endpoint
1659
1769
  :returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
1660
1770
  """
1661
1771
  await self.load_markets()
1662
1772
  currency = self.currency(code)
1663
- request = {
1773
+ request: dict = {
1664
1774
  'currency': currency['id'],
1665
1775
  }
1666
1776
  networks = self.safe_value(self.options, 'networks', {})
@@ -1694,17 +1804,19 @@ class poloniex(Exchange, ImplicitAPI):
1694
1804
  'info': response,
1695
1805
  }
1696
1806
 
1697
- async def fetch_deposit_address(self, code: str, params={}):
1807
+ async def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
1698
1808
  """
1699
1809
  fetch the deposit address for a currency associated with self account
1700
- :see: https://docs.poloniex.com/#authenticated-endpoints-wallets-deposit-addresses
1810
+
1811
+ https://api-docs.poloniex.com/spot/api/private/wallet#deposit-addresses
1812
+
1701
1813
  :param str code: unified currency code
1702
1814
  :param dict [params]: extra parameters specific to the exchange API endpoint
1703
1815
  :returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
1704
1816
  """
1705
1817
  await self.load_markets()
1706
1818
  currency = self.currency(code)
1707
- request = {
1819
+ request: dict = {
1708
1820
  'currency': currency['id'],
1709
1821
  }
1710
1822
  networks = self.safe_value(self.options, 'networks', {})
@@ -1731,17 +1843,19 @@ class poloniex(Exchange, ImplicitAPI):
1731
1843
  tag = address
1732
1844
  address = depositAddress
1733
1845
  return {
1846
+ 'info': response,
1734
1847
  'currency': code,
1848
+ 'network': network,
1735
1849
  'address': address,
1736
1850
  'tag': tag,
1737
- 'network': network,
1738
- 'info': response,
1739
1851
  }
1740
1852
 
1741
1853
  async def transfer(self, code: str, amount: float, fromAccount: str, toAccount: str, params={}) -> TransferEntry:
1742
1854
  """
1743
1855
  transfer currency internally between wallets on the same account
1744
- :see: https://docs.poloniex.com/#authenticated-endpoints-accounts-accounts-transfer
1856
+
1857
+ https://api-docs.poloniex.com/spot/api/private/account#accounts-transfer
1858
+
1745
1859
  :param str code: unified currency code
1746
1860
  :param float amount: amount to transfer
1747
1861
  :param str fromAccount: account to transfer from
@@ -1751,12 +1865,11 @@ class poloniex(Exchange, ImplicitAPI):
1751
1865
  """
1752
1866
  await self.load_markets()
1753
1867
  currency = self.currency(code)
1754
- amount = self.currency_to_precision(code, amount)
1755
1868
  accountsByType = self.safe_value(self.options, 'accountsByType', {})
1756
1869
  fromId = self.safe_string(accountsByType, fromAccount, fromAccount)
1757
1870
  toId = self.safe_string(accountsByType, toAccount, fromAccount)
1758
- request = {
1759
- 'amount': amount,
1871
+ request: dict = {
1872
+ 'amount': self.currency_to_precision(code, amount),
1760
1873
  'currency': currency['id'],
1761
1874
  'fromAccount': fromId,
1762
1875
  'toAccount': toId,
@@ -1769,7 +1882,7 @@ class poloniex(Exchange, ImplicitAPI):
1769
1882
  #
1770
1883
  return self.parse_transfer(response, currency)
1771
1884
 
1772
- def parse_transfer(self, transfer, currency: Currency = None):
1885
+ def parse_transfer(self, transfer: dict, currency: Currency = None) -> TransferEntry:
1773
1886
  #
1774
1887
  # {
1775
1888
  # "transferId" : "168041074"
@@ -1787,10 +1900,12 @@ class poloniex(Exchange, ImplicitAPI):
1787
1900
  'status': None,
1788
1901
  }
1789
1902
 
1790
- async def withdraw(self, code: str, amount: float, address, tag=None, params={}):
1903
+ async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
1791
1904
  """
1792
1905
  make a withdrawal
1793
- :see: https://docs.poloniex.com/#authenticated-endpoints-wallets-withdraw-currency
1906
+
1907
+ https://api-docs.poloniex.com/spot/api/private/wallet#withdraw-currency
1908
+
1794
1909
  :param str code: unified currency code
1795
1910
  :param float amount: the amount to withdraw
1796
1911
  :param str address: the address to withdraw to
@@ -1802,7 +1917,7 @@ class poloniex(Exchange, ImplicitAPI):
1802
1917
  self.check_address(address)
1803
1918
  await self.load_markets()
1804
1919
  currency = self.currency(code)
1805
- request = {
1920
+ request: dict = {
1806
1921
  'currency': currency['id'],
1807
1922
  'amount': amount,
1808
1923
  'address': address,
@@ -1830,7 +1945,7 @@ class poloniex(Exchange, ImplicitAPI):
1830
1945
  year = 31104000 # 60 * 60 * 24 * 30 * 12 = one year of history, why not
1831
1946
  now = self.seconds()
1832
1947
  start = self.parse_to_int(since / 1000) if (since is not None) else now - 10 * year
1833
- request = {
1948
+ request: dict = {
1834
1949
  'start': start, # UNIX timestamp, required
1835
1950
  'end': now, # UNIX timestamp, required
1836
1951
  }
@@ -1911,7 +2026,9 @@ class poloniex(Exchange, ImplicitAPI):
1911
2026
  async def fetch_deposits_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1912
2027
  """
1913
2028
  fetch history of deposits and withdrawals
1914
- :see: https://docs.poloniex.com/#authenticated-endpoints-wallets-wallets-activity-records
2029
+
2030
+ https://api-docs.poloniex.com/spot/api/private/wallet#wallets-activity-records
2031
+
1915
2032
  :param str [code]: unified currency code for the currency of the deposit/withdrawals, default is None
1916
2033
  :param int [since]: timestamp in ms of the earliest deposit/withdrawal, default is None
1917
2034
  :param int [limit]: max number of deposit/withdrawals to return, default is None
@@ -1933,7 +2050,9 @@ class poloniex(Exchange, ImplicitAPI):
1933
2050
  async def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1934
2051
  """
1935
2052
  fetch all withdrawals made from an account
1936
- :see: https://docs.poloniex.com/#authenticated-endpoints-wallets-wallets-activity-records
2053
+
2054
+ https://api-docs.poloniex.com/spot/api/private/wallet#wallets-activity-records
2055
+
1937
2056
  :param str code: unified currency code
1938
2057
  :param int [since]: the earliest time in ms to fetch withdrawals for
1939
2058
  :param int [limit]: the maximum number of withdrawals structures to retrieve
@@ -1951,7 +2070,9 @@ class poloniex(Exchange, ImplicitAPI):
1951
2070
  async def fetch_deposit_withdraw_fees(self, codes: Strings = None, params={}):
1952
2071
  """
1953
2072
  fetch deposit and withdraw fees
1954
- :see: https://docs.poloniex.com/#public-endpoints-reference-data-currency-information
2073
+
2074
+ https://api-docs.poloniex.com/spot/api/public/reference-data#currency-information
2075
+
1955
2076
  :param str[]|None codes: list of unified currency codes
1956
2077
  :param dict [params]: extra parameters specific to the exchange API endpoint
1957
2078
  :returns dict[]: a list of `fees structures <https://docs.ccxt.com/#/?id=fee-structure>`
@@ -1981,7 +2102,7 @@ class poloniex(Exchange, ImplicitAPI):
1981
2102
  # }
1982
2103
  # ]
1983
2104
  #
1984
- data = {}
2105
+ data: dict = {}
1985
2106
  for i in range(0, len(response)):
1986
2107
  entry = response[i]
1987
2108
  currencies = list(entry.keys())
@@ -2011,7 +2132,7 @@ class poloniex(Exchange, ImplicitAPI):
2011
2132
  # },
2012
2133
  # }
2013
2134
  #
2014
- depositWithdrawFees = {}
2135
+ depositWithdrawFees: dict = {}
2015
2136
  codes = self.market_codes(codes)
2016
2137
  responseKeys = list(response.keys())
2017
2138
  for i in range(0, len(responseKeys)):
@@ -2029,7 +2150,7 @@ class poloniex(Exchange, ImplicitAPI):
2029
2150
  networkId = networkId.replace(code, '')
2030
2151
  networkCode = self.network_id_to_code(networkId)
2031
2152
  networkInfo = self.safe_value(response, networkId)
2032
- networkObject = {}
2153
+ networkObject: dict = {}
2033
2154
  withdrawFee = self.safe_number(networkInfo, 'withdrawalFee')
2034
2155
  networkObject[networkCode] = {
2035
2156
  'withdraw': {
@@ -2049,11 +2170,11 @@ class poloniex(Exchange, ImplicitAPI):
2049
2170
  depositWithdrawFee['info'][currency['code']] = fee
2050
2171
  networkId = self.safe_string(fee, 'blockchain')
2051
2172
  withdrawFee = self.safe_number(fee, 'withdrawalFee')
2052
- withdrawResult = {
2173
+ withdrawResult: dict = {
2053
2174
  'fee': withdrawFee,
2054
2175
  'percentage': False if (withdrawFee is not None) else None,
2055
2176
  }
2056
- depositResult = {
2177
+ depositResult: dict = {
2057
2178
  'fee': None,
2058
2179
  'percentage': None,
2059
2180
  }
@@ -2069,7 +2190,9 @@ class poloniex(Exchange, ImplicitAPI):
2069
2190
  async def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
2070
2191
  """
2071
2192
  fetch all deposits made to an account
2072
- :see: https://docs.poloniex.com/#authenticated-endpoints-wallets-wallets-activity-records
2193
+
2194
+ https://api-docs.poloniex.com/spot/api/private/wallet#wallets-activity-records
2195
+
2073
2196
  :param str code: unified currency code
2074
2197
  :param int [since]: the earliest time in ms to fetch deposits for
2075
2198
  :param int [limit]: the maximum number of deposits structures to retrieve
@@ -2084,8 +2207,8 @@ class poloniex(Exchange, ImplicitAPI):
2084
2207
  transactions = self.parse_transactions(deposits, currency, since, limit)
2085
2208
  return self.filter_by_currency_since_limit(transactions, code, since, limit)
2086
2209
 
2087
- def parse_transaction_status(self, status):
2088
- statuses = {
2210
+ def parse_transaction_status(self, status: Str):
2211
+ statuses: dict = {
2089
2212
  'COMPLETE': 'ok',
2090
2213
  'COMPLETED': 'ok',
2091
2214
  'AWAITING APPROVAL': 'pending',
@@ -2097,7 +2220,7 @@ class poloniex(Exchange, ImplicitAPI):
2097
2220
  }
2098
2221
  return self.safe_string(statuses, status, status)
2099
2222
 
2100
- def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
2223
+ def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
2101
2224
  #
2102
2225
  # deposits
2103
2226
  #
@@ -2212,7 +2335,7 @@ class poloniex(Exchange, ImplicitAPI):
2212
2335
  }
2213
2336
  return {'url': url, 'method': method, 'body': body, 'headers': headers}
2214
2337
 
2215
- def handle_errors(self, code, reason, url, method, headers, body, response, requestHeaders, requestBody):
2338
+ def handle_errors(self, code: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
2216
2339
  if response is None:
2217
2340
  return None
2218
2341
  #