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/bitvavo.py CHANGED
@@ -6,9 +6,10 @@
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.bitvavo 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
9
+ from ccxt.base.types import Balances, Currencies, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction
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 OrderNotFound
21
22
  from ccxt.base.errors import RateLimitExceeded
22
23
  from ccxt.base.errors import ExchangeNotAvailable
23
24
  from ccxt.base.errors import OnMaintenance
24
- from ccxt.base.errors import AuthenticationError
25
25
  from ccxt.base.decimal_to_precision import ROUND
26
26
  from ccxt.base.decimal_to_precision import TRUNCATE
27
27
  from ccxt.base.decimal_to_precision import DECIMAL_PLACES
@@ -65,6 +65,8 @@ class bitvavo(Exchange, ImplicitAPI):
65
65
  'fetchCrossBorrowRates': False,
66
66
  'fetchCurrencies': True,
67
67
  'fetchDepositAddress': True,
68
+ 'fetchDepositAddresses': False,
69
+ 'fetchDepositAddressesByNetwork': False,
68
70
  'fetchDeposits': True,
69
71
  'fetchDepositWithdrawFee': 'emulated',
70
72
  'fetchDepositWithdrawFees': True,
@@ -88,8 +90,11 @@ class bitvavo(Exchange, ImplicitAPI):
88
90
  'fetchOrderBook': True,
89
91
  'fetchOrders': True,
90
92
  'fetchPosition': False,
93
+ 'fetchPositionHistory': False,
91
94
  'fetchPositionMode': False,
92
95
  'fetchPositions': False,
96
+ 'fetchPositionsForSymbol': False,
97
+ 'fetchPositionsHistory': False,
93
98
  'fetchPositionsRisk': False,
94
99
  'fetchPremiumIndexOHLCV': False,
95
100
  'fetchTicker': True,
@@ -122,7 +127,7 @@ class bitvavo(Exchange, ImplicitAPI):
122
127
  '1d': '1d',
123
128
  },
124
129
  'urls': {
125
- 'logo': 'https://user-images.githubusercontent.com/1294454/169202626-bd130fc5-fcf9-41bb-8d97-6093225c73cd.jpg',
130
+ 'logo': 'https://github.com/user-attachments/assets/d213155c-8c71-4701-9bd5-45351febc2a8',
126
131
  'api': {
127
132
  'public': 'https://api.bitvavo.com',
128
133
  'private': 'https://api.bitvavo.com',
@@ -207,6 +212,71 @@ class bitvavo(Exchange, ImplicitAPI):
207
212
  'apiKey': True,
208
213
  'secret': True,
209
214
  },
215
+ 'features': {
216
+ 'spot': {
217
+ 'sandbox': False,
218
+ 'createOrder': {
219
+ 'marginMode': False,
220
+ 'triggerPrice': True,
221
+ 'triggerPriceType': None,
222
+ 'triggerDirection': None,
223
+ 'stopLossPrice': True,
224
+ 'takeProfitPrice': True,
225
+ 'attachedStopLossTakeProfit': None,
226
+ 'timeInForce': {
227
+ 'IOC': True,
228
+ 'FOK': True,
229
+ 'PO': True,
230
+ 'GTD': False,
231
+ },
232
+ 'hedged': False,
233
+ 'trailing': False,
234
+ 'leverage': False,
235
+ 'marketBuyRequiresPrice': False,
236
+ 'marketBuyByCost': True,
237
+ 'selfTradePrevention': True, # todo implement
238
+ 'iceberg': False,
239
+ },
240
+ 'createOrders': None,
241
+ 'fetchMyTrades': {
242
+ 'marginMode': False,
243
+ 'limit': 1000,
244
+ 'daysBack': 100000,
245
+ 'untilDays': 100000,
246
+ },
247
+ 'fetchOrder': {
248
+ 'marginMode': False,
249
+ 'trigger': False,
250
+ 'trailing': False,
251
+ },
252
+ 'fetchOpenOrders': {
253
+ 'marginMode': False,
254
+ 'limit': None,
255
+ 'trigger': False,
256
+ 'trailing': False,
257
+ },
258
+ 'fetchOrders': {
259
+ 'marginMode': True,
260
+ 'limit': 1000,
261
+ 'daysBack': 100000,
262
+ 'untilDays': 100000,
263
+ 'trigger': False,
264
+ 'trailing': False,
265
+ },
266
+ 'fetchClosedOrders': None,
267
+ 'fetchOHLCV': {
268
+ 'limit': 1440,
269
+ },
270
+ },
271
+ 'swap': {
272
+ 'linear': None,
273
+ 'inverse': None,
274
+ },
275
+ 'future': {
276
+ 'linear': None,
277
+ 'inverse': None,
278
+ },
279
+ },
210
280
  'exceptions': {
211
281
  'exact': {
212
282
  '101': ExchangeError, # Unknown error. Operation may or may not have succeeded.
@@ -281,6 +351,7 @@ class bitvavo(Exchange, ImplicitAPI):
281
351
  },
282
352
  },
283
353
  'options': {
354
+ 'currencyToPrecisionRoundingMode': TRUNCATE,
284
355
  'BITVAVO-ACCESS-WINDOW': 10000, # default 10 sec
285
356
  'networks': {
286
357
  'ERC20': 'ETH',
@@ -293,9 +364,6 @@ class bitvavo(Exchange, ImplicitAPI):
293
364
  },
294
365
  })
295
366
 
296
- def currency_to_precision(self, code, fee, networkCode=None):
297
- return self.decimal_to_precision(fee, 0, self.currencies[code]['precision'], DECIMAL_PLACES)
298
-
299
367
  def amount_to_precision(self, symbol, amount):
300
368
  # https://docs.bitfinex.com/docs/introduction#amount-precision
301
369
  # The amount field allows up to 8 decimals.
@@ -322,9 +390,11 @@ class bitvavo(Exchange, ImplicitAPI):
322
390
  #
323
391
  return self.safe_integer(response, 'time')
324
392
 
325
- def fetch_markets(self, params={}):
393
+ def fetch_markets(self, params={}) -> List[Market]:
326
394
  """
327
- :see: https://docs.bitvavo.com/#tag/General/paths/~1markets/get
395
+
396
+ https://docs.bitvavo.com/#tag/General/paths/~1markets/get
397
+
328
398
  retrieves data on all markets for bitvavo
329
399
  :param dict [params]: extra parameters specific to the exchange API endpoint
330
400
  :returns dict[]: an array of objects representing market data
@@ -414,9 +484,11 @@ class bitvavo(Exchange, ImplicitAPI):
414
484
  }))
415
485
  return result
416
486
 
417
- def fetch_currencies(self, params={}):
487
+ def fetch_currencies(self, params={}) -> Currencies:
418
488
  """
419
- :see: https://docs.bitvavo.com/#tag/General/paths/~1assets/get
489
+
490
+ https://docs.bitvavo.com/#tag/General/paths/~1assets/get
491
+
420
492
  fetches all available currencies on an exchange
421
493
  :param dict [params]: extra parameters specific to the exchange API endpoint
422
494
  :returns dict: an associative dictionary of currencies
@@ -455,9 +527,9 @@ class bitvavo(Exchange, ImplicitAPI):
455
527
  # },
456
528
  # ]
457
529
  #
458
- return self.parse_currencies(response)
530
+ return self.parse_currencies_custom(response)
459
531
 
460
- def parse_currencies(self, currencies):
532
+ def parse_currencies_custom(self, currencies):
461
533
  #
462
534
  # [
463
535
  # {
@@ -491,12 +563,12 @@ class bitvavo(Exchange, ImplicitAPI):
491
563
  # },
492
564
  # ]
493
565
  #
494
- result = {}
566
+ result: dict = {}
495
567
  for i in range(0, len(currencies)):
496
568
  currency = currencies[i]
497
569
  id = self.safe_string(currency, 'symbol')
498
570
  code = self.safe_currency_code(id)
499
- networks = {}
571
+ networks: dict = {}
500
572
  networksArray = self.safe_value(currency, 'networks', [])
501
573
  networksLength = len(networksArray)
502
574
  isOneNetwork = (networksLength == 1)
@@ -558,7 +630,9 @@ class bitvavo(Exchange, ImplicitAPI):
558
630
 
559
631
  def fetch_ticker(self, symbol: str, params={}) -> Ticker:
560
632
  """
561
- :see: https://docs.bitvavo.com/#tag/Market-Data/paths/~1ticker~124h/get
633
+
634
+ https://docs.bitvavo.com/#tag/Market-Data/paths/~1ticker~124h/get
635
+
562
636
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
563
637
  :param str symbol: unified symbol of the market to fetch the ticker for
564
638
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -566,7 +640,7 @@ class bitvavo(Exchange, ImplicitAPI):
566
640
  """
567
641
  self.load_markets()
568
642
  market = self.market(symbol)
569
- request = {
643
+ request: dict = {
570
644
  'market': market['id'],
571
645
  }
572
646
  response = self.publicGetTicker24h(self.extend(request, params))
@@ -588,7 +662,7 @@ class bitvavo(Exchange, ImplicitAPI):
588
662
  #
589
663
  return self.parse_ticker(response, market)
590
664
 
591
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
665
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
592
666
  #
593
667
  # fetchTicker
594
668
  #
@@ -668,7 +742,9 @@ class bitvavo(Exchange, ImplicitAPI):
668
742
 
669
743
  def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
670
744
  """
671
- :see: https://docs.bitvavo.com/#tag/Market-Data/paths/~1{market}~1trades/get
745
+
746
+ https://docs.bitvavo.com/#tag/Market-Data/paths/~1{market}~1trades/get
747
+
672
748
  get the list of most recent trades for a particular symbol
673
749
  :param str symbol: unified symbol of the market to fetch trades for
674
750
  :param int [since]: timestamp in ms of the earliest trade to fetch
@@ -684,7 +760,7 @@ class bitvavo(Exchange, ImplicitAPI):
684
760
  paginate, params = self.handle_option_and_params(params, 'fetchTrades', 'paginate')
685
761
  if paginate:
686
762
  return self.fetch_paginated_call_dynamic('fetchTrades', symbol, since, limit, params)
687
- request = {
763
+ request: dict = {
688
764
  'market': market['id'],
689
765
  # "limit": 500, # default 500, max 1000
690
766
  # "start": since,
@@ -711,7 +787,7 @@ class bitvavo(Exchange, ImplicitAPI):
711
787
  #
712
788
  return self.parse_trades(response, market, since, limit)
713
789
 
714
- def parse_trade(self, trade, market: Market = None) -> Trade:
790
+ def parse_trade(self, trade: dict, market: Market = None) -> Trade:
715
791
  #
716
792
  # fetchTrades(public)
717
793
  #
@@ -805,9 +881,11 @@ class bitvavo(Exchange, ImplicitAPI):
805
881
  'fee': fee,
806
882
  }, market)
807
883
 
808
- def fetch_trading_fees(self, params={}):
884
+ def fetch_trading_fees(self, params={}) -> TradingFees:
809
885
  """
810
- :see: https://docs.bitvavo.com/#tag/Account/paths/~1account/get
886
+
887
+ https://docs.bitvavo.com/#tag/Account/paths/~1account/get
888
+
811
889
  fetch the trading fees for multiple markets
812
890
  :param dict [params]: extra parameters specific to the exchange API endpoint
813
891
  :returns dict: a dictionary of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>` indexed by market symbols
@@ -838,7 +916,7 @@ class bitvavo(Exchange, ImplicitAPI):
838
916
  feesValue = self.safe_value(fees, 'fees')
839
917
  maker = self.safe_number(feesValue, 'maker')
840
918
  taker = self.safe_number(feesValue, 'taker')
841
- result = {}
919
+ result: dict = {}
842
920
  for i in range(0, len(self.symbols)):
843
921
  symbol = self.symbols[i]
844
922
  result[symbol] = {
@@ -853,7 +931,9 @@ class bitvavo(Exchange, ImplicitAPI):
853
931
 
854
932
  def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
855
933
  """
856
- :see: https://docs.bitvavo.com/#tag/Market-Data/paths/~1{market}~1book/get
934
+
935
+ https://docs.bitvavo.com/#tag/Market-Data/paths/~1{market}~1book/get
936
+
857
937
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
858
938
  :param str symbol: unified symbol of the market to fetch the order book for
859
939
  :param int [limit]: the maximum amount of order book entries to return
@@ -862,7 +942,7 @@ class bitvavo(Exchange, ImplicitAPI):
862
942
  """
863
943
  self.load_markets()
864
944
  market = self.market(symbol)
865
- request = {
945
+ request: dict = {
866
946
  'market': market['id'],
867
947
  }
868
948
  if limit is not None:
@@ -910,7 +990,7 @@ class bitvavo(Exchange, ImplicitAPI):
910
990
 
911
991
  def fetch_ohlcv_request(self, symbol: Str, timeframe='1m', since: Int = None, limit: Int = None, params={}):
912
992
  market = self.market(symbol)
913
- request = {
993
+ request: dict = {
914
994
  'market': market['id'],
915
995
  'interval': self.safe_string(self.timeframes, timeframe, timeframe),
916
996
  # "limit": 1440, # default 1440, max 1440
@@ -923,6 +1003,8 @@ class bitvavo(Exchange, ImplicitAPI):
923
1003
  request['start'] = since
924
1004
  if limit is None:
925
1005
  limit = 1440
1006
+ else:
1007
+ limit = min(limit, 1440)
926
1008
  request['end'] = self.sum(since, limit * duration * 1000)
927
1009
  request, params = self.handle_until_option('end', request, params)
928
1010
  if limit is not None:
@@ -931,7 +1013,9 @@ class bitvavo(Exchange, ImplicitAPI):
931
1013
 
932
1014
  def fetch_ohlcv(self, symbol: Str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
933
1015
  """
934
- :see: https://docs.bitvavo.com/#tag/Market-Data/paths/~1{market}~1candles/get
1016
+
1017
+ https://docs.bitvavo.com/#tag/Market-Data/paths/~1{market}~1candles/get
1018
+
935
1019
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
936
1020
  :param str symbol: unified symbol of the market to fetch OHLCV data for
937
1021
  :param str timeframe: the length of time each candle represents
@@ -960,7 +1044,7 @@ class bitvavo(Exchange, ImplicitAPI):
960
1044
  return self.parse_ohlcvs(response, market, timeframe, since, limit)
961
1045
 
962
1046
  def parse_balance(self, response) -> Balances:
963
- result = {
1047
+ result: dict = {
964
1048
  'info': response,
965
1049
  'timestamp': None,
966
1050
  'datetime': None,
@@ -977,7 +1061,9 @@ class bitvavo(Exchange, ImplicitAPI):
977
1061
 
978
1062
  def fetch_balance(self, params={}) -> Balances:
979
1063
  """
980
- :see: https://docs.bitvavo.com/#tag/Account/paths/~1balance/get
1064
+
1065
+ https://docs.bitvavo.com/#tag/Account/paths/~1balance/get
1066
+
981
1067
  query for balance and get the amount of funds available for trading or funds locked in orders
982
1068
  :param dict [params]: extra parameters specific to the exchange API endpoint
983
1069
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
@@ -995,7 +1081,7 @@ class bitvavo(Exchange, ImplicitAPI):
995
1081
  #
996
1082
  return self.parse_balance(response)
997
1083
 
998
- def fetch_deposit_address(self, code: str, params={}):
1084
+ def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
999
1085
  """
1000
1086
  fetch the deposit address for a currency associated with self account
1001
1087
  :param str code: unified currency code
@@ -1004,7 +1090,7 @@ class bitvavo(Exchange, ImplicitAPI):
1004
1090
  """
1005
1091
  self.load_markets()
1006
1092
  currency = self.currency(code)
1007
- request = {
1093
+ request: dict = {
1008
1094
  'symbol': currency['id'],
1009
1095
  }
1010
1096
  response = self.privateGetDeposit(self.extend(request, params))
@@ -1018,16 +1104,16 @@ class bitvavo(Exchange, ImplicitAPI):
1018
1104
  tag = self.safe_string(response, 'paymentId')
1019
1105
  self.check_address(address)
1020
1106
  return {
1107
+ 'info': response,
1021
1108
  'currency': code,
1109
+ 'network': None,
1022
1110
  'address': address,
1023
1111
  'tag': tag,
1024
- 'network': None,
1025
- 'info': response,
1026
1112
  }
1027
1113
 
1028
1114
  def create_order_request(self, symbol: Str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
1029
1115
  market = self.market(symbol)
1030
- request = {
1116
+ request: dict = {
1031
1117
  'market': market['id'],
1032
1118
  'side': side,
1033
1119
  'orderType': type,
@@ -1081,15 +1167,17 @@ class bitvavo(Exchange, ImplicitAPI):
1081
1167
  def create_order(self, symbol: Str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
1082
1168
  """
1083
1169
  create a trade order
1084
- :see: https://docs.bitvavo.com/#tag/Orders/paths/~1order/post
1170
+
1171
+ https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1order/post
1172
+
1085
1173
  :param str symbol: unified symbol of the market to create an order in
1086
1174
  :param str type: 'market' or 'limit'
1087
1175
  :param str side: 'buy' or 'sell'
1088
1176
  :param float amount: how much of currency you want to trade in units of base currency
1089
- :param float price: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
1177
+ :param float price: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1090
1178
  :param dict [params]: extra parameters specific to the bitvavo api endpoint
1091
1179
  :param str [params.timeInForce]: "GTC", "IOC", or "PO"
1092
- :param float [params.stopPrice]: The price at which a trigger order is triggered at
1180
+ :param float [params.stopPrice]: Alias for triggerPrice
1093
1181
  :param float [params.triggerPrice]: The price at which a trigger order is triggered at
1094
1182
  :param bool [params.postOnly]: If True, the order will only be posted to the order book and not executed immediately
1095
1183
  :param float [params.stopLossPrice]: The price at which a stop loss order is triggered at
@@ -1148,7 +1236,7 @@ class bitvavo(Exchange, ImplicitAPI):
1148
1236
  return self.parse_order(response, market)
1149
1237
 
1150
1238
  def edit_order_request(self, id: str, symbol, type, side, amount=None, price=None, params={}):
1151
- request = {}
1239
+ request: dict = {}
1152
1240
  market = self.market(symbol)
1153
1241
  amountRemaining = self.safe_number(params, 'amountRemaining')
1154
1242
  triggerPrice = self.safe_string_n(params, ['triggerPrice', 'stopPrice', 'triggerAmount'])
@@ -1173,13 +1261,15 @@ class bitvavo(Exchange, ImplicitAPI):
1173
1261
  def edit_order(self, id: str, symbol: str, type: OrderType, side: OrderSide, amount: Num = None, price: Num = None, params={}):
1174
1262
  """
1175
1263
  edit a trade order
1176
- :see: https://docs.bitvavo.com/#tag/Orders/paths/~1order/put
1264
+
1265
+ https://docs.bitvavo.com/#tag/Orders/paths/~1order/put
1266
+
1177
1267
  :param str id: cancel order id
1178
1268
  :param str symbol: unified symbol of the market to create an order in
1179
1269
  :param str type: 'market' or 'limit'
1180
1270
  :param str side: 'buy' or 'sell'
1181
1271
  :param float [amount]: how much of currency you want to trade in units of base currency
1182
- :param float [price]: the price at which the order is to be fullfilled, in units of the base currency, ignored in market orders
1272
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1183
1273
  :param dict [params]: extra parameters specific to the bitvavo api endpoint
1184
1274
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1185
1275
  """
@@ -1193,7 +1283,7 @@ class bitvavo(Exchange, ImplicitAPI):
1193
1283
  if symbol is None:
1194
1284
  raise ArgumentsRequired(self.id + ' cancelOrder() requires a symbol argument')
1195
1285
  market = self.market(symbol)
1196
- request = {
1286
+ request: dict = {
1197
1287
  'market': market['id'],
1198
1288
  }
1199
1289
  clientOrderId = self.safe_string(params, 'clientOrderId')
@@ -1203,9 +1293,13 @@ class bitvavo(Exchange, ImplicitAPI):
1203
1293
 
1204
1294
  def cancel_order(self, id: str, symbol: Str = None, params={}):
1205
1295
  """
1206
- :see: https://docs.bitvavo.com/#tag/Orders/paths/~1order/delete
1296
+
1297
+ https://docs.bitvavo.com/#tag/Orders/paths/~1order/delete
1298
+
1207
1299
  cancels an open order
1208
- :see: https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1order/delete
1300
+
1301
+ https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1order/delete
1302
+
1209
1303
  :param str id: order id
1210
1304
  :param str symbol: unified symbol of the market the order was made in
1211
1305
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1224,14 +1318,16 @@ class bitvavo(Exchange, ImplicitAPI):
1224
1318
 
1225
1319
  def cancel_all_orders(self, symbol: Str = None, params={}):
1226
1320
  """
1227
- :see: https://docs.bitvavo.com/#tag/Orders/paths/~1orders/delete
1321
+
1322
+ https://docs.bitvavo.com/#tag/Orders/paths/~1orders/delete
1323
+
1228
1324
  cancel all open orders
1229
1325
  :param str symbol: unified market symbol, only orders in the market of self symbol are cancelled when symbol is not None
1230
1326
  :param dict [params]: extra parameters specific to the exchange API endpoint
1231
1327
  :returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
1232
1328
  """
1233
1329
  self.load_markets()
1234
- request = {}
1330
+ request: dict = {}
1235
1331
  market = None
1236
1332
  if symbol is not None:
1237
1333
  market = self.market(symbol)
@@ -1249,7 +1345,10 @@ class bitvavo(Exchange, ImplicitAPI):
1249
1345
  def fetch_order(self, id: str, symbol: Str = None, params={}):
1250
1346
  """
1251
1347
  fetches information on an order made by the user
1252
- :see: https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1order/get
1348
+
1349
+ https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1order/get
1350
+
1351
+ :param str id: the order id
1253
1352
  :param str symbol: unified symbol of the market the order was made in
1254
1353
  :param dict [params]: extra parameters specific to the exchange API endpoint
1255
1354
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
@@ -1258,7 +1357,7 @@ class bitvavo(Exchange, ImplicitAPI):
1258
1357
  raise ArgumentsRequired(self.id + ' fetchOrder() requires a symbol argument')
1259
1358
  self.load_markets()
1260
1359
  market = self.market(symbol)
1261
- request = {
1360
+ request: dict = {
1262
1361
  'market': market['id'],
1263
1362
  }
1264
1363
  clientOrderId = self.safe_string(params, 'clientOrderId')
@@ -1303,7 +1402,7 @@ class bitvavo(Exchange, ImplicitAPI):
1303
1402
 
1304
1403
  def fetch_orders_request(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
1305
1404
  market = self.market(symbol)
1306
- request = {
1405
+ request: dict = {
1307
1406
  'market': market['id'],
1308
1407
  # "limit": 500,
1309
1408
  # "start": since,
@@ -1320,7 +1419,9 @@ class bitvavo(Exchange, ImplicitAPI):
1320
1419
 
1321
1420
  def fetch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1322
1421
  """
1323
- :see: https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1orders/get
1422
+
1423
+ https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1orders/get
1424
+
1324
1425
  fetches information on multiple orders made by the user
1325
1426
  :param str symbol: unified market symbol of the market orders were made in
1326
1427
  :param int [since]: the earliest time in ms to fetch orders for
@@ -1380,6 +1481,9 @@ class bitvavo(Exchange, ImplicitAPI):
1380
1481
 
1381
1482
  def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
1382
1483
  """
1484
+
1485
+ https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1ordersOpen/get
1486
+
1383
1487
  fetch all unfilled currently open orders
1384
1488
  :param str symbol: unified market symbol
1385
1489
  :param int [since]: the earliest time in ms to fetch open orders for
@@ -1388,7 +1492,7 @@ class bitvavo(Exchange, ImplicitAPI):
1388
1492
  :returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
1389
1493
  """
1390
1494
  self.load_markets()
1391
- request = {
1495
+ request: dict = {
1392
1496
  # "market": market["id"], # rate limit 25 without a market, 1 with market specified
1393
1497
  }
1394
1498
  market = None
@@ -1434,8 +1538,8 @@ class bitvavo(Exchange, ImplicitAPI):
1434
1538
  #
1435
1539
  return self.parse_orders(response, market, since, limit)
1436
1540
 
1437
- def parse_order_status(self, status):
1438
- statuses = {
1541
+ def parse_order_status(self, status: Str):
1542
+ statuses: dict = {
1439
1543
  'new': 'open',
1440
1544
  'canceled': 'canceled',
1441
1545
  'canceledAuction': 'canceled',
@@ -1452,7 +1556,7 @@ class bitvavo(Exchange, ImplicitAPI):
1452
1556
  }
1453
1557
  return self.safe_string(statuses, status, status)
1454
1558
 
1455
- def parse_order(self, order, market: Market = None) -> Order:
1559
+ def parse_order(self, order: dict, market: Market = None) -> Order:
1456
1560
  #
1457
1561
  # cancelOrder, cancelAllOrders
1458
1562
  #
@@ -1528,7 +1632,6 @@ class bitvavo(Exchange, ImplicitAPI):
1528
1632
  timeInForce = self.safe_string(order, 'timeInForce')
1529
1633
  postOnly = self.safe_value(order, 'postOnly')
1530
1634
  # https://github.com/ccxt/ccxt/issues/8489
1531
- stopPrice = self.safe_number(order, 'triggerPrice')
1532
1635
  return self.safe_order({
1533
1636
  'info': order,
1534
1637
  'id': id,
@@ -1542,8 +1645,7 @@ class bitvavo(Exchange, ImplicitAPI):
1542
1645
  'postOnly': postOnly,
1543
1646
  'side': side,
1544
1647
  'price': price,
1545
- 'stopPrice': stopPrice,
1546
- 'triggerPrice': stopPrice,
1648
+ 'triggerPrice': self.safe_number(order, 'triggerPrice'),
1547
1649
  'amount': amount,
1548
1650
  'cost': cost,
1549
1651
  'average': None,
@@ -1556,7 +1658,7 @@ class bitvavo(Exchange, ImplicitAPI):
1556
1658
 
1557
1659
  def fetch_my_trades_request(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
1558
1660
  market = self.market(symbol)
1559
- request = {
1661
+ request: dict = {
1560
1662
  'market': market['id'],
1561
1663
  # "limit": 500,
1562
1664
  # "start": since,
@@ -1573,7 +1675,9 @@ class bitvavo(Exchange, ImplicitAPI):
1573
1675
 
1574
1676
  def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
1575
1677
  """
1576
- :see: https://docs.bitvavo.com/#tag/Trades/paths/~1trades/get
1678
+
1679
+ https://docs.bitvavo.com/#tag/Trading-endpoints/paths/~1trades/get
1680
+
1577
1681
  fetch all trades made by the user
1578
1682
  :param str symbol: unified market symbol
1579
1683
  :param int [since]: the earliest time in ms to fetch trades for
@@ -1614,7 +1718,7 @@ class bitvavo(Exchange, ImplicitAPI):
1614
1718
 
1615
1719
  def withdraw_request(self, code: Str, amount, address, tag=None, params={}):
1616
1720
  currency = self.currency(code)
1617
- request = {
1721
+ request: dict = {
1618
1722
  'symbol': currency['id'],
1619
1723
  'amount': self.currency_to_precision(code, amount),
1620
1724
  'address': address, # address or IBAN
@@ -1625,7 +1729,7 @@ class bitvavo(Exchange, ImplicitAPI):
1625
1729
  request['paymentId'] = tag
1626
1730
  return self.extend(request, params)
1627
1731
 
1628
- def withdraw(self, code: str, amount: float, address, tag=None, params={}):
1732
+ def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
1629
1733
  """
1630
1734
  make a withdrawal
1631
1735
  :param str code: unified currency code
@@ -1651,7 +1755,7 @@ class bitvavo(Exchange, ImplicitAPI):
1651
1755
  return self.parse_transaction(response, currency)
1652
1756
 
1653
1757
  def fetch_withdrawals_request(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
1654
- request = {
1758
+ request: dict = {
1655
1759
  # 'symbol': currency['id'],
1656
1760
  # 'limit': 500, # default 500, max 1000
1657
1761
  # 'start': since,
@@ -1669,7 +1773,9 @@ class bitvavo(Exchange, ImplicitAPI):
1669
1773
 
1670
1774
  def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1671
1775
  """
1672
- :see: https://docs.bitvavo.com/#tag/Account/paths/~1withdrawalHistory/get
1776
+
1777
+ https://docs.bitvavo.com/#tag/Account/paths/~1withdrawalHistory/get
1778
+
1673
1779
  fetch all withdrawals made from an account
1674
1780
  :param str code: unified currency code
1675
1781
  :param int [since]: the earliest time in ms to fetch withdrawals for
@@ -1700,7 +1806,7 @@ class bitvavo(Exchange, ImplicitAPI):
1700
1806
  return self.parse_transactions(response, currency, since, limit, {'type': 'withdrawal'})
1701
1807
 
1702
1808
  def fetch_deposits_request(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
1703
- request = {
1809
+ request: dict = {
1704
1810
  # 'symbol': currency['id'],
1705
1811
  # 'limit': 500, # default 500, max 1000
1706
1812
  # 'start': since,
@@ -1718,7 +1824,9 @@ class bitvavo(Exchange, ImplicitAPI):
1718
1824
 
1719
1825
  def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
1720
1826
  """
1721
- :see: https://docs.bitvavo.com/#tag/Account/paths/~1depositHistory/get
1827
+
1828
+ https://docs.bitvavo.com/#tag/Account/paths/~1depositHistory/get
1829
+
1722
1830
  fetch all deposits made to an account
1723
1831
  :param str code: unified currency code
1724
1832
  :param int [since]: the earliest time in ms to fetch deposits for
@@ -1746,8 +1854,8 @@ class bitvavo(Exchange, ImplicitAPI):
1746
1854
  #
1747
1855
  return self.parse_transactions(response, currency, since, limit, {'type': 'deposit'})
1748
1856
 
1749
- def parse_transaction_status(self, status):
1750
- statuses = {
1857
+ def parse_transaction_status(self, status: Str):
1858
+ statuses: dict = {
1751
1859
  'awaiting_processing': 'pending',
1752
1860
  'awaiting_email_confirmation': 'pending',
1753
1861
  'awaiting_bitvavo_inspection': 'pending',
@@ -1760,7 +1868,7 @@ class bitvavo(Exchange, ImplicitAPI):
1760
1868
  }
1761
1869
  return self.safe_string(statuses, status, status)
1762
1870
 
1763
- def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
1871
+ def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
1764
1872
  #
1765
1873
  # withdraw
1766
1874
  #
@@ -1856,7 +1964,7 @@ class bitvavo(Exchange, ImplicitAPI):
1856
1964
  # "message": ""
1857
1965
  # }
1858
1966
  #
1859
- result = {
1967
+ result: dict = {
1860
1968
  'info': fee,
1861
1969
  'withdraw': {
1862
1970
  'fee': self.safe_number(fee, 'withdrawalFee'),
@@ -1883,7 +1991,9 @@ class bitvavo(Exchange, ImplicitAPI):
1883
1991
  def fetch_deposit_withdraw_fees(self, codes: Strings = None, params={}):
1884
1992
  """
1885
1993
  fetch deposit and withdraw fees
1886
- :see: https://docs.bitvavo.com/#tag/General/paths/~1assets/get
1994
+
1995
+ https://docs.bitvavo.com/#tag/General/paths/~1assets/get
1996
+
1887
1997
  :param str[]|None codes: list of unified currency codes
1888
1998
  :param dict [params]: extra parameters specific to the exchange API endpoint
1889
1999
  :returns dict: a list of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>`
@@ -1940,7 +2050,7 @@ class bitvavo(Exchange, ImplicitAPI):
1940
2050
  url = self.urls['api'][api] + url
1941
2051
  return {'url': url, 'method': method, 'body': body, 'headers': headers}
1942
2052
 
1943
- def handle_errors(self, httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody):
2053
+ def handle_errors(self, httpCode: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
1944
2054
  if response is None:
1945
2055
  return None # fallback to default error handler
1946
2056
  #