ccxt 4.2.77__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 +24 -0
  44. ccxt/abstract/kucoinfutures.py +34 -0
  45. ccxt/abstract/luno.py +2 -0
  46. ccxt/abstract/mexc.py +4 -0
  47. ccxt/abstract/myokx.py +340 -0
  48. ccxt/abstract/oceanex.py +5 -0
  49. ccxt/abstract/okx.py +30 -0
  50. ccxt/abstract/onetrading.py +0 -12
  51. ccxt/abstract/oxfun.py +34 -0
  52. ccxt/abstract/paradex.py +40 -0
  53. ccxt/abstract/phemex.py +1 -0
  54. ccxt/abstract/upbit.py +4 -0
  55. ccxt/abstract/vertex.py +19 -0
  56. ccxt/abstract/whitebit.py +31 -1
  57. ccxt/abstract/woo.py +6 -2
  58. ccxt/abstract/woofipro.py +119 -0
  59. ccxt/abstract/xt.py +153 -0
  60. ccxt/abstract/zonda.py +6 -0
  61. ccxt/ace.py +164 -60
  62. ccxt/alpaca.py +727 -63
  63. ccxt/ascendex.py +395 -249
  64. ccxt/async_support/__init__.py +36 -14
  65. ccxt/async_support/ace.py +164 -60
  66. ccxt/async_support/alpaca.py +727 -63
  67. ccxt/async_support/ascendex.py +396 -249
  68. ccxt/async_support/base/exchange.py +531 -155
  69. ccxt/async_support/base/ws/aiohttp_client.py +28 -5
  70. ccxt/async_support/base/ws/cache.py +3 -2
  71. ccxt/async_support/base/ws/client.py +26 -5
  72. ccxt/async_support/base/ws/fast_client.py +4 -3
  73. ccxt/async_support/base/ws/functions.py +1 -1
  74. ccxt/async_support/base/ws/future.py +40 -31
  75. ccxt/async_support/base/ws/order_book_side.py +3 -0
  76. ccxt/async_support/bequant.py +1 -1
  77. ccxt/async_support/bigone.py +329 -202
  78. ccxt/async_support/binance.py +3030 -1087
  79. ccxt/async_support/binancecoinm.py +2 -1
  80. ccxt/async_support/binanceus.py +12 -1
  81. ccxt/async_support/binanceusdm.py +3 -1
  82. ccxt/async_support/bingx.py +3104 -880
  83. ccxt/async_support/bit2c.py +119 -38
  84. ccxt/async_support/bitbank.py +215 -76
  85. ccxt/async_support/bitbns.py +124 -53
  86. ccxt/async_support/bitfinex.py +3236 -1078
  87. ccxt/async_support/bitfinex1.py +1711 -0
  88. ccxt/async_support/bitflyer.py +238 -49
  89. ccxt/async_support/bitget.py +1513 -563
  90. ccxt/async_support/bithumb.py +199 -65
  91. ccxt/async_support/bitmart.py +1320 -435
  92. ccxt/async_support/bitmex.py +308 -111
  93. ccxt/async_support/bitopro.py +256 -96
  94. ccxt/async_support/bitrue.py +365 -233
  95. ccxt/async_support/bitso.py +201 -89
  96. ccxt/async_support/bitstamp.py +438 -269
  97. ccxt/async_support/bitteam.py +179 -73
  98. ccxt/async_support/bitvavo.py +180 -70
  99. ccxt/async_support/bl3p.py +92 -25
  100. ccxt/async_support/blockchaincom.py +193 -79
  101. ccxt/async_support/blofin.py +392 -148
  102. ccxt/async_support/btcalpha.py +161 -55
  103. ccxt/async_support/btcbox.py +250 -34
  104. ccxt/async_support/btcmarkets.py +232 -85
  105. ccxt/async_support/btcturk.py +159 -60
  106. ccxt/async_support/bybit.py +2231 -1193
  107. ccxt/async_support/cex.py +1409 -1329
  108. ccxt/async_support/coinbase.py +1454 -287
  109. ccxt/async_support/coinbaseadvanced.py +17 -0
  110. ccxt/async_support/{coinbasepro.py → coinbaseexchange.py} +233 -99
  111. ccxt/async_support/coinbaseinternational.py +428 -88
  112. ccxt/async_support/coincatch.py +5152 -0
  113. ccxt/async_support/coincheck.py +121 -38
  114. ccxt/async_support/coinex.py +4020 -3339
  115. ccxt/async_support/coinlist.py +273 -116
  116. ccxt/async_support/coinmate.py +204 -97
  117. ccxt/async_support/coinmetro.py +203 -110
  118. ccxt/async_support/coinone.py +142 -68
  119. ccxt/async_support/coinsph.py +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 +404 -109
  125. ccxt/async_support/deribit.py +557 -323
  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 +1472 -463
  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 +1633 -268
  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 +917 -357
  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 +1776 -454
  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 +1137 -296
  175. ccxt/async_support/woofipro.py +2716 -0
  176. ccxt/async_support/xt.py +4628 -0
  177. ccxt/async_support/yobit.py +160 -92
  178. ccxt/async_support/zaif.py +80 -33
  179. ccxt/async_support/zonda.py +140 -69
  180. ccxt/base/errors.py +51 -20
  181. ccxt/base/exchange.py +1722 -480
  182. ccxt/base/precise.py +10 -0
  183. ccxt/base/types.py +223 -4
  184. ccxt/bequant.py +1 -1
  185. ccxt/bigone.py +329 -202
  186. ccxt/binance.py +3030 -1087
  187. ccxt/binancecoinm.py +2 -1
  188. ccxt/binanceus.py +12 -1
  189. ccxt/binanceusdm.py +3 -1
  190. ccxt/bingx.py +3104 -880
  191. ccxt/bit2c.py +119 -38
  192. ccxt/bitbank.py +215 -76
  193. ccxt/bitbns.py +124 -53
  194. ccxt/bitfinex.py +3235 -1078
  195. ccxt/bitfinex1.py +1710 -0
  196. ccxt/bitflyer.py +238 -49
  197. ccxt/bitget.py +1513 -563
  198. ccxt/bithumb.py +198 -65
  199. ccxt/bitmart.py +1320 -435
  200. ccxt/bitmex.py +308 -111
  201. ccxt/bitopro.py +256 -96
  202. ccxt/bitrue.py +365 -233
  203. ccxt/bitso.py +201 -89
  204. ccxt/bitstamp.py +438 -269
  205. ccxt/bitteam.py +179 -73
  206. ccxt/bitvavo.py +180 -70
  207. ccxt/bl3p.py +92 -25
  208. ccxt/blockchaincom.py +193 -79
  209. ccxt/blofin.py +392 -148
  210. ccxt/btcalpha.py +161 -55
  211. ccxt/btcbox.py +250 -34
  212. ccxt/btcmarkets.py +232 -85
  213. ccxt/btcturk.py +159 -60
  214. ccxt/bybit.py +2231 -1193
  215. ccxt/cex.py +1408 -1329
  216. ccxt/coinbase.py +1454 -287
  217. ccxt/coinbaseadvanced.py +17 -0
  218. ccxt/{coinbasepro.py → coinbaseexchange.py} +233 -99
  219. ccxt/coinbaseinternational.py +428 -88
  220. ccxt/coincatch.py +5152 -0
  221. ccxt/coincheck.py +121 -38
  222. ccxt/coinex.py +4020 -3339
  223. ccxt/coinlist.py +273 -116
  224. ccxt/coinmate.py +204 -97
  225. ccxt/coinmetro.py +203 -110
  226. ccxt/coinone.py +142 -68
  227. ccxt/coinsph.py +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 +404 -109
  233. ccxt/deribit.py +557 -323
  234. ccxt/digifinex.py +340 -223
  235. ccxt/ellipx.py +1826 -0
  236. ccxt/exmo.py +259 -128
  237. ccxt/gate.py +1472 -463
  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 +1632 -268
  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 +917 -357
  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 +1776 -454
  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 +62 -14
  276. ccxt/pro/bequant.py +4 -0
  277. ccxt/pro/binance.py +1596 -329
  278. ccxt/pro/binancecoinm.py +1 -0
  279. ccxt/pro/binanceus.py +2 -9
  280. ccxt/pro/binanceusdm.py +2 -0
  281. ccxt/pro/bingx.py +527 -134
  282. ccxt/pro/bitcoincom.py +4 -1
  283. ccxt/pro/bitfinex.py +731 -266
  284. ccxt/pro/bitfinex1.py +635 -0
  285. ccxt/pro/bitget.py +726 -357
  286. ccxt/pro/bithumb.py +380 -0
  287. ccxt/pro/bitmart.py +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 +203 -81
  293. ccxt/pro/blockchaincom.py +30 -17
  294. ccxt/pro/blofin.py +692 -0
  295. ccxt/pro/bybit.py +791 -82
  296. ccxt/pro/cex.py +99 -51
  297. ccxt/pro/coinbase.py +220 -30
  298. ccxt/{async_support/hitbtc3.py → pro/coinbaseadvanced.py} +5 -5
  299. ccxt/pro/{coinbasepro.py → coinbaseexchange.py} +19 -19
  300. ccxt/pro/coinbaseinternational.py +193 -30
  301. ccxt/pro/coincatch.py +1464 -0
  302. ccxt/pro/coincheck.py +11 -6
  303. ccxt/pro/coinex.py +965 -665
  304. ccxt/pro/coinone.py +17 -10
  305. ccxt/pro/cryptocom.py +446 -66
  306. ccxt/pro/currencycom.py +11 -10
  307. ccxt/pro/defx.py +832 -0
  308. ccxt/pro/deribit.py +167 -31
  309. ccxt/pro/exmo.py +252 -20
  310. ccxt/pro/gate.py +729 -64
  311. ccxt/pro/gemini.py +44 -26
  312. ccxt/pro/hashkey.py +802 -0
  313. ccxt/pro/hitbtc.py +208 -103
  314. ccxt/pro/hollaex.py +25 -9
  315. ccxt/pro/htx.py +83 -39
  316. ccxt/pro/huobijp.py +17 -16
  317. ccxt/pro/hyperliquid.py +502 -31
  318. ccxt/pro/idex.py +28 -13
  319. ccxt/pro/independentreserve.py +21 -16
  320. ccxt/pro/kraken.py +298 -51
  321. ccxt/pro/krakenfutures.py +166 -75
  322. ccxt/pro/kucoin.py +395 -77
  323. ccxt/pro/kucoinfutures.py +400 -99
  324. ccxt/pro/lbank.py +52 -31
  325. ccxt/pro/luno.py +12 -10
  326. ccxt/pro/mexc.py +400 -50
  327. ccxt/pro/myokx.py +28 -0
  328. ccxt/pro/ndax.py +25 -12
  329. ccxt/pro/okcoin.py +28 -9
  330. ccxt/pro/okx.py +935 -124
  331. ccxt/pro/onetrading.py +41 -24
  332. ccxt/pro/oxfun.py +1054 -0
  333. ccxt/pro/p2b.py +100 -24
  334. ccxt/pro/paradex.py +352 -0
  335. ccxt/pro/phemex.py +92 -33
  336. ccxt/pro/poloniex.py +128 -49
  337. ccxt/pro/poloniexfutures.py +53 -32
  338. ccxt/pro/probit.py +92 -85
  339. ccxt/pro/upbit.py +401 -8
  340. ccxt/pro/vertex.py +943 -0
  341. ccxt/pro/wazirx.py +46 -28
  342. ccxt/pro/whitebit.py +65 -12
  343. ccxt/pro/woo.py +437 -65
  344. ccxt/pro/woofipro.py +1271 -0
  345. ccxt/pro/xt.py +1067 -0
  346. ccxt/probit.py +143 -110
  347. ccxt/static_dependencies/__init__.py +1 -1
  348. ccxt/static_dependencies/lark/__init__.py +38 -0
  349. ccxt/static_dependencies/lark/__pyinstaller/__init__.py +6 -0
  350. ccxt/static_dependencies/lark/__pyinstaller/hook-lark.py +14 -0
  351. ccxt/static_dependencies/lark/ast_utils.py +59 -0
  352. ccxt/static_dependencies/lark/common.py +86 -0
  353. ccxt/static_dependencies/lark/exceptions.py +292 -0
  354. ccxt/static_dependencies/lark/grammar.py +130 -0
  355. ccxt/static_dependencies/lark/grammars/__init__.py +0 -0
  356. ccxt/static_dependencies/lark/indenter.py +143 -0
  357. ccxt/static_dependencies/lark/lark.py +658 -0
  358. ccxt/static_dependencies/lark/lexer.py +678 -0
  359. ccxt/static_dependencies/lark/load_grammar.py +1428 -0
  360. ccxt/static_dependencies/lark/parse_tree_builder.py +391 -0
  361. ccxt/static_dependencies/lark/parser_frontends.py +257 -0
  362. ccxt/static_dependencies/lark/parsers/__init__.py +0 -0
  363. ccxt/static_dependencies/lark/parsers/cyk.py +340 -0
  364. ccxt/static_dependencies/lark/parsers/earley.py +314 -0
  365. ccxt/static_dependencies/lark/parsers/earley_common.py +42 -0
  366. ccxt/static_dependencies/lark/parsers/earley_forest.py +801 -0
  367. ccxt/static_dependencies/lark/parsers/grammar_analysis.py +203 -0
  368. ccxt/static_dependencies/lark/parsers/lalr_analysis.py +332 -0
  369. ccxt/static_dependencies/lark/parsers/lalr_interactive_parser.py +158 -0
  370. ccxt/static_dependencies/lark/parsers/lalr_parser.py +122 -0
  371. ccxt/static_dependencies/lark/parsers/lalr_parser_state.py +110 -0
  372. ccxt/static_dependencies/lark/parsers/xearley.py +165 -0
  373. ccxt/static_dependencies/lark/py.typed +0 -0
  374. ccxt/static_dependencies/lark/reconstruct.py +107 -0
  375. ccxt/static_dependencies/lark/tools/__init__.py +70 -0
  376. ccxt/static_dependencies/lark/tools/nearley.py +202 -0
  377. ccxt/static_dependencies/lark/tools/serialize.py +32 -0
  378. ccxt/static_dependencies/lark/tools/standalone.py +196 -0
  379. ccxt/static_dependencies/lark/tree.py +267 -0
  380. ccxt/static_dependencies/lark/tree_matcher.py +186 -0
  381. ccxt/static_dependencies/lark/tree_templates.py +180 -0
  382. ccxt/static_dependencies/lark/utils.py +343 -0
  383. ccxt/static_dependencies/lark/visitors.py +596 -0
  384. ccxt/static_dependencies/marshmallow/__init__.py +81 -0
  385. ccxt/static_dependencies/marshmallow/base.py +65 -0
  386. ccxt/static_dependencies/marshmallow/class_registry.py +94 -0
  387. ccxt/static_dependencies/marshmallow/decorators.py +231 -0
  388. ccxt/static_dependencies/marshmallow/error_store.py +60 -0
  389. ccxt/static_dependencies/marshmallow/exceptions.py +71 -0
  390. ccxt/static_dependencies/marshmallow/fields.py +2114 -0
  391. ccxt/static_dependencies/marshmallow/orderedset.py +89 -0
  392. ccxt/static_dependencies/marshmallow/py.typed +0 -0
  393. ccxt/static_dependencies/marshmallow/schema.py +1228 -0
  394. ccxt/static_dependencies/marshmallow/types.py +12 -0
  395. ccxt/static_dependencies/marshmallow/utils.py +378 -0
  396. ccxt/static_dependencies/marshmallow/validate.py +678 -0
  397. ccxt/static_dependencies/marshmallow/warnings.py +2 -0
  398. ccxt/static_dependencies/marshmallow_dataclass/__init__.py +1047 -0
  399. ccxt/static_dependencies/marshmallow_dataclass/collection_field.py +51 -0
  400. ccxt/static_dependencies/marshmallow_dataclass/lazy_class_attribute.py +45 -0
  401. ccxt/static_dependencies/marshmallow_dataclass/mypy.py +71 -0
  402. ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
  403. ccxt/static_dependencies/marshmallow_dataclass/typing.py +14 -0
  404. ccxt/static_dependencies/marshmallow_dataclass/union_field.py +82 -0
  405. ccxt/static_dependencies/marshmallow_oneofschema/__init__.py +1 -0
  406. ccxt/static_dependencies/marshmallow_oneofschema/one_of_schema.py +193 -0
  407. ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
  408. ccxt/static_dependencies/starknet/__init__.py +0 -0
  409. ccxt/static_dependencies/starknet/cairo/__init__.py +0 -0
  410. ccxt/static_dependencies/starknet/cairo/data_types.py +123 -0
  411. ccxt/static_dependencies/starknet/cairo/deprecated_parse/__init__.py +0 -0
  412. ccxt/static_dependencies/starknet/cairo/deprecated_parse/cairo_types.py +77 -0
  413. ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser.py +46 -0
  414. ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser_transformer.py +138 -0
  415. ccxt/static_dependencies/starknet/cairo/felt.py +64 -0
  416. ccxt/static_dependencies/starknet/cairo/type_parser.py +121 -0
  417. ccxt/static_dependencies/starknet/cairo/v1/__init__.py +0 -0
  418. ccxt/static_dependencies/starknet/cairo/v1/type_parser.py +59 -0
  419. ccxt/static_dependencies/starknet/cairo/v2/__init__.py +0 -0
  420. ccxt/static_dependencies/starknet/cairo/v2/type_parser.py +77 -0
  421. ccxt/static_dependencies/starknet/ccxt_utils.py +7 -0
  422. ccxt/static_dependencies/starknet/common.py +15 -0
  423. ccxt/static_dependencies/starknet/constants.py +39 -0
  424. ccxt/static_dependencies/starknet/hash/__init__.py +0 -0
  425. ccxt/static_dependencies/starknet/hash/address.py +79 -0
  426. ccxt/static_dependencies/starknet/hash/compiled_class_hash_objects.py +111 -0
  427. ccxt/static_dependencies/starknet/hash/selector.py +16 -0
  428. ccxt/static_dependencies/starknet/hash/storage.py +12 -0
  429. ccxt/static_dependencies/starknet/hash/utils.py +78 -0
  430. ccxt/static_dependencies/starknet/models/__init__.py +0 -0
  431. ccxt/static_dependencies/starknet/models/typed_data.py +45 -0
  432. ccxt/static_dependencies/starknet/serialization/__init__.py +24 -0
  433. ccxt/static_dependencies/starknet/serialization/_calldata_reader.py +40 -0
  434. ccxt/static_dependencies/starknet/serialization/_context.py +142 -0
  435. ccxt/static_dependencies/starknet/serialization/data_serializers/__init__.py +10 -0
  436. ccxt/static_dependencies/starknet/serialization/data_serializers/_common.py +82 -0
  437. ccxt/static_dependencies/starknet/serialization/data_serializers/array_serializer.py +43 -0
  438. ccxt/static_dependencies/starknet/serialization/data_serializers/bool_serializer.py +37 -0
  439. ccxt/static_dependencies/starknet/serialization/data_serializers/byte_array_serializer.py +66 -0
  440. ccxt/static_dependencies/starknet/serialization/data_serializers/cairo_data_serializer.py +71 -0
  441. ccxt/static_dependencies/starknet/serialization/data_serializers/enum_serializer.py +71 -0
  442. ccxt/static_dependencies/starknet/serialization/data_serializers/felt_serializer.py +50 -0
  443. ccxt/static_dependencies/starknet/serialization/data_serializers/named_tuple_serializer.py +58 -0
  444. ccxt/static_dependencies/starknet/serialization/data_serializers/option_serializer.py +43 -0
  445. ccxt/static_dependencies/starknet/serialization/data_serializers/output_serializer.py +40 -0
  446. ccxt/static_dependencies/starknet/serialization/data_serializers/payload_serializer.py +72 -0
  447. ccxt/static_dependencies/starknet/serialization/data_serializers/struct_serializer.py +36 -0
  448. ccxt/static_dependencies/starknet/serialization/data_serializers/tuple_serializer.py +36 -0
  449. ccxt/static_dependencies/starknet/serialization/data_serializers/uint256_serializer.py +76 -0
  450. ccxt/static_dependencies/starknet/serialization/data_serializers/uint_serializer.py +100 -0
  451. ccxt/static_dependencies/starknet/serialization/data_serializers/unit_serializer.py +32 -0
  452. ccxt/static_dependencies/starknet/serialization/errors.py +10 -0
  453. ccxt/static_dependencies/starknet/serialization/factory.py +229 -0
  454. ccxt/static_dependencies/starknet/serialization/function_serialization_adapter.py +110 -0
  455. ccxt/static_dependencies/starknet/serialization/tuple_dataclass.py +59 -0
  456. ccxt/static_dependencies/starknet/utils/__init__.py +0 -0
  457. ccxt/static_dependencies/starknet/utils/constructor_args_translator.py +86 -0
  458. ccxt/static_dependencies/starknet/utils/iterable.py +13 -0
  459. ccxt/static_dependencies/starknet/utils/schema.py +13 -0
  460. ccxt/static_dependencies/starknet/utils/typed_data.py +182 -0
  461. ccxt/static_dependencies/starkware/__init__.py +0 -0
  462. ccxt/static_dependencies/starkware/crypto/__init__.py +0 -0
  463. ccxt/static_dependencies/starkware/crypto/fast_pedersen_hash.py +50 -0
  464. ccxt/static_dependencies/starkware/crypto/math_utils.py +78 -0
  465. ccxt/static_dependencies/starkware/crypto/signature.py +2344 -0
  466. ccxt/static_dependencies/starkware/crypto/utils.py +63 -0
  467. ccxt/static_dependencies/sympy/__init__.py +0 -0
  468. ccxt/static_dependencies/sympy/core/__init__.py +0 -0
  469. ccxt/static_dependencies/sympy/core/intfunc.py +35 -0
  470. ccxt/static_dependencies/sympy/external/__init__.py +0 -0
  471. ccxt/static_dependencies/sympy/external/gmpy.py +345 -0
  472. ccxt/static_dependencies/sympy/external/importtools.py +187 -0
  473. ccxt/static_dependencies/sympy/external/ntheory.py +637 -0
  474. ccxt/static_dependencies/sympy/external/pythonmpq.py +341 -0
  475. ccxt/static_dependencies/typing_inspect/__init__.py +0 -0
  476. ccxt/static_dependencies/typing_inspect/typing_inspect.py +851 -0
  477. ccxt/test/{test_async.py → tests_async.py} +456 -391
  478. ccxt/test/tests_helpers.py +285 -0
  479. ccxt/test/tests_init.py +39 -0
  480. ccxt/test/{test_sync.py → tests_sync.py} +456 -393
  481. ccxt/timex.py +123 -70
  482. ccxt/tokocrypto.py +129 -93
  483. ccxt/tradeogre.py +39 -25
  484. ccxt/upbit.py +322 -113
  485. ccxt/vertex.py +2983 -0
  486. ccxt/wavesexchange.py +227 -173
  487. ccxt/wazirx.py +145 -65
  488. ccxt/whitebit.py +533 -138
  489. ccxt/woo.py +1137 -296
  490. ccxt/woofipro.py +2716 -0
  491. ccxt/xt.py +4627 -0
  492. ccxt/yobit.py +159 -92
  493. ccxt/zaif.py +80 -33
  494. ccxt/zonda.py +140 -69
  495. ccxt-4.4.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.77.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.77.dist-info/METADATA +0 -626
  545. ccxt-4.2.77.dist-info/RECORD +0 -534
  546. {ccxt-4.2.77.dist-info → ccxt-4.4.48.dist-info}/top_level.txt +0 -0
ccxt/blockchaincom.py CHANGED
@@ -5,13 +5,13 @@
5
5
 
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.blockchaincom import ImplicitAPI
8
- from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
8
+ from ccxt.base.types import Balances, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction
9
9
  from typing import List
10
10
  from ccxt.base.errors import ExchangeError
11
+ from ccxt.base.errors import AuthenticationError
11
12
  from ccxt.base.errors import ArgumentsRequired
12
13
  from ccxt.base.errors import InsufficientFunds
13
14
  from ccxt.base.errors import OrderNotFound
14
- from ccxt.base.errors import AuthenticationError
15
15
  from ccxt.base.decimal_to_precision import TICK_SIZE
16
16
  from ccxt.base.precise import Precise
17
17
 
@@ -45,6 +45,8 @@ class blockchaincom(Exchange, ImplicitAPI):
45
45
  'fetchClosedOrders': True,
46
46
  'fetchDeposit': True,
47
47
  'fetchDepositAddress': True,
48
+ 'fetchDepositAddresses': False,
49
+ 'fetchDepositAddressesByNetwork': False,
48
50
  'fetchDeposits': True,
49
51
  'fetchFundingHistory': False,
50
52
  'fetchFundingRate': False,
@@ -80,7 +82,7 @@ class blockchaincom(Exchange, ImplicitAPI):
80
82
  },
81
83
  'timeframes': None,
82
84
  'urls': {
83
- 'logo': 'https://user-images.githubusercontent.com/1294454/147515585-1296e91b-7398-45e5-9d32-f6121538533f.jpeg',
85
+ 'logo': 'https://github.com/user-attachments/assets/975e3054-3399-4363-bcee-ec3c6d63d4e8',
84
86
  'test': {
85
87
  'public': 'https://testnet-api.delta.exchange',
86
88
  'private': 'https://testnet-api.delta.exchange',
@@ -140,9 +142,9 @@ class blockchaincom(Exchange, ImplicitAPI):
140
142
  'percentage': True,
141
143
  'tiers': {
142
144
  'taker': [
143
- [self.parse_number('0'), self.parse_number('0.004')],
144
- [self.parse_number('10000'), self.parse_number('0.0022')],
145
- [self.parse_number('50000'), self.parse_number('0.002')],
145
+ [self.parse_number('0'), self.parse_number('0.0045')],
146
+ [self.parse_number('10000'), self.parse_number('0.0035')],
147
+ [self.parse_number('50000'), self.parse_number('0.0018')],
146
148
  [self.parse_number('100000'), self.parse_number('0.0018')],
147
149
  [self.parse_number('500000'), self.parse_number('0.0018')],
148
150
  [self.parse_number('1000000'), self.parse_number('0.0018')],
@@ -154,11 +156,11 @@ class blockchaincom(Exchange, ImplicitAPI):
154
156
  [self.parse_number('1000000000'), self.parse_number('0.0006')],
155
157
  ],
156
158
  'maker': [
157
- [self.parse_number('0'), self.parse_number('0.002')],
158
- [self.parse_number('10000'), self.parse_number('0.0012')],
159
- [self.parse_number('50000'), self.parse_number('0.001')],
159
+ [self.parse_number('0'), self.parse_number('0.004')],
160
+ [self.parse_number('10000'), self.parse_number('0.0017')],
161
+ [self.parse_number('50000'), self.parse_number('0.0015')],
160
162
  [self.parse_number('100000'), self.parse_number('0.0008')],
161
- [self.parse_number('500000'), self.parse_number('0.0007000000000000001')],
163
+ [self.parse_number('500000'), self.parse_number('0.0007')],
162
164
  [self.parse_number('1000000'), self.parse_number('0.0006')],
163
165
  [self.parse_number('2500000'), self.parse_number('0.0005')],
164
166
  [self.parse_number('5000000'), self.parse_number('0.0004')],
@@ -217,6 +219,70 @@ class blockchaincom(Exchange, ImplicitAPI):
217
219
  # 'DIGITALGOLD': 'DGLD',
218
220
  },
219
221
  },
222
+ 'features': {
223
+ 'spot': {
224
+ 'sandbox': False,
225
+ 'createOrder': {
226
+ 'marginMode': False,
227
+ 'triggerPrice': True,
228
+ 'triggerPriceType': None,
229
+ 'triggerDirection': False,
230
+ 'stopLossPrice': False, # todo
231
+ 'takeProfitPrice': False, # todo
232
+ 'attachedStopLossTakeProfit': None,
233
+ 'timeInForce': {
234
+ 'IOC': True,
235
+ 'FOK': True,
236
+ 'PO': False,
237
+ 'GTD': True, # todo implementation
238
+ },
239
+ 'hedged': False,
240
+ 'leverage': False,
241
+ 'marketBuyRequiresPrice': False,
242
+ 'marketBuyByCost': False,
243
+ 'selfTradePrevention': False,
244
+ 'trailing': False,
245
+ 'iceberg': False,
246
+ },
247
+ 'createOrders': None,
248
+ 'fetchMyTrades': {
249
+ 'marginMode': False,
250
+ 'limit': 1000,
251
+ 'daysBack': 100000, # todo implementation
252
+ 'untilDays': 100000, # todo implementation
253
+ },
254
+ 'fetchOrder': {
255
+ 'marginMode': False,
256
+ 'trigger': False,
257
+ 'trailing': False,
258
+ },
259
+ 'fetchOpenOrders': {
260
+ 'marginMode': False,
261
+ 'limit': 1000,
262
+ 'trigger': False,
263
+ 'trailing': False,
264
+ },
265
+ 'fetchOrders': None, # todo implement
266
+ 'fetchClosedOrders': {
267
+ 'marginMode': False,
268
+ 'limit': 1000,
269
+ 'daysBack': 100000,
270
+ 'daysBackCanceled': 1,
271
+ 'untilDays': 100000,
272
+ 'trigger': False,
273
+ 'trailing': False,
274
+ },
275
+ 'fetchOHLCV': None, # todo webapi
276
+ },
277
+ 'swap': {
278
+ 'linear': None,
279
+ 'inverse': None,
280
+ },
281
+ 'future': {
282
+ 'linear': None,
283
+ 'inverse': None,
284
+ },
285
+ },
220
286
  'precisionMode': TICK_SIZE,
221
287
  'exceptions': {
222
288
  'exact': {
@@ -227,10 +293,12 @@ class blockchaincom(Exchange, ImplicitAPI):
227
293
  },
228
294
  })
229
295
 
230
- def fetch_markets(self, params={}):
296
+ def fetch_markets(self, params={}) -> List[Market]:
231
297
  """
232
298
  retrieves data on all markets for blockchaincom
233
- :see: https://api.blockchain.com/v3/#/unauthenticated/getSymbols
299
+
300
+ https://api.blockchain.com/v3/#getsymbols
301
+
234
302
  :param dict [params]: extra parameters specific to the exchange API endpoint
235
303
  :returns dict[]: an array of objects representing market data
236
304
  """
@@ -354,7 +422,9 @@ class blockchaincom(Exchange, ImplicitAPI):
354
422
  def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
355
423
  """
356
424
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
357
- :see: https://api.blockchain.com/v3/#/unauthenticated/getL3OrderBook
425
+
426
+ https://api.blockchain.com/v3/#getl3orderbook
427
+
358
428
  :param str symbol: unified symbol of the market to fetch the order book for
359
429
  :param int [limit]: the maximum amount of order book entries to return
360
430
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -365,7 +435,9 @@ class blockchaincom(Exchange, ImplicitAPI):
365
435
  def fetch_l3_order_book(self, symbol: str, limit: Int = None, params={}):
366
436
  """
367
437
  fetches level 3 information on open orders with bid(buy) and ask(sell) prices, volumes and other data
368
- :see: https://api.blockchain.com/v3/#/unauthenticated/getL3OrderBook
438
+
439
+ https://api.blockchain.com/v3/#getl3orderbook
440
+
369
441
  :param str symbol: unified market symbol
370
442
  :param int [limit]: max number of orders to return, default is None
371
443
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -373,7 +445,7 @@ class blockchaincom(Exchange, ImplicitAPI):
373
445
  """
374
446
  self.load_markets()
375
447
  market = self.market(symbol)
376
- request = {
448
+ request: dict = {
377
449
  'symbol': market['id'],
378
450
  }
379
451
  if limit is not None:
@@ -384,7 +456,7 @@ class blockchaincom(Exchange, ImplicitAPI):
384
456
  def fetch_l2_order_book(self, symbol: str, limit: Int = None, params={}):
385
457
  self.load_markets()
386
458
  market = self.market(symbol)
387
- request = {
459
+ request: dict = {
388
460
  'symbol': market['id'],
389
461
  }
390
462
  if limit is not None:
@@ -392,7 +464,7 @@ class blockchaincom(Exchange, ImplicitAPI):
392
464
  response = self.publicGetL2Symbol(self.extend(request, params))
393
465
  return self.parse_order_book(response, market['symbol'], None, 'bids', 'asks', 'px', 'qty')
394
466
 
395
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
467
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
396
468
  #
397
469
  # {
398
470
  # "symbol": "BTC-USD",
@@ -432,14 +504,16 @@ class blockchaincom(Exchange, ImplicitAPI):
432
504
  def fetch_ticker(self, symbol: str, params={}) -> Ticker:
433
505
  """
434
506
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
435
- :see: https://api.blockchain.com/v3/#/unauthenticated/getTickerBySymbol
507
+
508
+ https://api.blockchain.com/v3/#gettickerbysymbol
509
+
436
510
  :param str symbol: unified symbol of the market to fetch the ticker for
437
511
  :param dict [params]: extra parameters specific to the exchange API endpoint
438
512
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
439
513
  """
440
514
  self.load_markets()
441
515
  market = self.market(symbol)
442
- request = {
516
+ request: dict = {
443
517
  'symbol': market['id'],
444
518
  }
445
519
  response = self.publicGetTickersSymbol(self.extend(request, params))
@@ -448,7 +522,9 @@ class blockchaincom(Exchange, ImplicitAPI):
448
522
  def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
449
523
  """
450
524
  fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
451
- :see: https://api.blockchain.com/v3/#/unauthenticated/getTickers
525
+
526
+ https://api.blockchain.com/v3/#gettickers
527
+
452
528
  :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
453
529
  :param dict [params]: extra parameters specific to the exchange API endpoint
454
530
  :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -458,7 +534,7 @@ class blockchaincom(Exchange, ImplicitAPI):
458
534
  return self.parse_tickers(tickers, symbols)
459
535
 
460
536
  def parse_order_state(self, state):
461
- states = {
537
+ states: dict = {
462
538
  'OPEN': 'open',
463
539
  'REJECTED': 'rejected',
464
540
  'FILLED': 'closed',
@@ -468,7 +544,7 @@ class blockchaincom(Exchange, ImplicitAPI):
468
544
  }
469
545
  return self.safe_string(states, state, state)
470
546
 
471
- def parse_order(self, order, market: Market = None) -> Order:
547
+ def parse_order(self, order: dict, market: Market = None) -> Order:
472
548
  #
473
549
  # {
474
550
  # "clOrdId": "00001",
@@ -527,12 +603,14 @@ class blockchaincom(Exchange, ImplicitAPI):
527
603
  def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
528
604
  """
529
605
  create a trade order
530
- :see: https://api.blockchain.com/v3/#/trading/createOrder
606
+
607
+ https://api.blockchain.com/v3/#createorder
608
+
531
609
  :param str symbol: unified symbol of the market to create an order in
532
610
  :param str type: 'market' or 'limit'
533
611
  :param str side: 'buy' or 'sell'
534
612
  :param float amount: how much of currency you want to trade in units of base currency
535
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
613
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
536
614
  :param dict [params]: extra parameters specific to the exchange API endpoint
537
615
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
538
616
  """
@@ -542,7 +620,7 @@ class blockchaincom(Exchange, ImplicitAPI):
542
620
  uppercaseOrderType = orderType.upper()
543
621
  clientOrderId = self.safe_string_2(params, 'clientOrderId', 'clOrdId', self.uuid16())
544
622
  params = self.omit(params, ['ordType', 'clientOrderId', 'clOrdId'])
545
- request = {
623
+ request: dict = {
546
624
  # 'stopPx' : limit price
547
625
  # 'timeInForce' : "GTC" for Good Till Cancel, "IOC" for Immediate or Cancel, "FOK" for Fill or Kill, "GTD" Good Till Date
548
626
  # 'expireDate' : expiry date in the format YYYYMMDD
@@ -553,12 +631,12 @@ class blockchaincom(Exchange, ImplicitAPI):
553
631
  'orderQty': self.amount_to_precision(symbol, amount),
554
632
  'clOrdId': clientOrderId,
555
633
  }
556
- stopPrice = self.safe_value_2(params, 'stopPx', 'stopPrice')
557
- params = self.omit(params, ['stopPx', 'stopPrice'])
634
+ triggerPrice = self.safe_value_n(params, ['triggerPrice', 'stopPx', 'stopPrice'])
635
+ params = self.omit(params, ['triggerPrice', 'stopPx', 'stopPrice'])
558
636
  if uppercaseOrderType == 'STOP' or uppercaseOrderType == 'STOPLIMIT':
559
- if stopPrice is None:
560
- raise ArgumentsRequired(self.id + ' createOrder() requires a stopPx or stopPrice param for a ' + uppercaseOrderType + ' order')
561
- if stopPrice is not None:
637
+ if triggerPrice is None:
638
+ raise ArgumentsRequired(self.id + ' createOrder() requires a stopPx or triggerPrice param for a ' + uppercaseOrderType + ' order')
639
+ if triggerPrice is not None:
562
640
  if uppercaseOrderType == 'MARKET':
563
641
  request['ordType'] = 'STOP'
564
642
  elif uppercaseOrderType == 'LIMIT':
@@ -572,32 +650,36 @@ class blockchaincom(Exchange, ImplicitAPI):
572
650
  if priceRequired:
573
651
  request['price'] = self.price_to_precision(symbol, price)
574
652
  if stopPriceRequired:
575
- request['stopPx'] = self.price_to_precision(symbol, stopPrice)
653
+ request['stopPx'] = self.price_to_precision(symbol, triggerPrice)
576
654
  response = self.privatePostOrders(self.extend(request, params))
577
655
  return self.parse_order(response, market)
578
656
 
579
657
  def cancel_order(self, id: str, symbol: Str = None, params={}):
580
658
  """
581
659
  cancels an open order
582
- :see: https://api.blockchain.com/v3/#/trading/deleteOrder
660
+
661
+ https://api.blockchain.com/v3/#deleteorder
662
+
583
663
  :param str id: order id
584
664
  :param str symbol: unified symbol of the market the order was made in
585
665
  :param dict [params]: extra parameters specific to the exchange API endpoint
586
666
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
587
667
  """
588
- request = {
668
+ request: dict = {
589
669
  'orderId': id,
590
670
  }
591
671
  response = self.privateDeleteOrdersOrderId(self.extend(request, params))
592
- return {
672
+ return self.safe_order({
593
673
  'id': id,
594
674
  'info': response,
595
- }
675
+ })
596
676
 
597
677
  def cancel_all_orders(self, symbol: Str = None, params={}):
598
678
  """
599
679
  cancel all open orders
600
- :see: https://api.blockchain.com/v3/#/trading/deleteAllOrders
680
+
681
+ https://api.blockchain.com/v3/#deleteallorders
682
+
601
683
  :param str symbol: unified market symbol of the market to cancel orders in, all markets are used if None, default is None
602
684
  :param dict [params]: extra parameters specific to the exchange API endpoint
603
685
  :returns dict: an list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
@@ -605,22 +687,28 @@ class blockchaincom(Exchange, ImplicitAPI):
605
687
  # cancels all open orders if no symbol specified
606
688
  # cancels all open orders of specified symbol, if symbol is specified
607
689
  self.load_markets()
608
- request = {
690
+ request: dict = {
609
691
  # 'symbol': marketId,
610
692
  }
611
693
  if symbol is not None:
612
694
  marketId = self.market_id(symbol)
613
695
  request['symbol'] = marketId
614
696
  response = self.privateDeleteOrders(self.extend(request, params))
615
- return {
616
- 'symbol': symbol,
617
- 'info': response,
618
- }
697
+ #
698
+ # {}
699
+ #
700
+ return [
701
+ self.safe_order({
702
+ 'info': response,
703
+ }),
704
+ ]
619
705
 
620
- def fetch_trading_fees(self, params={}):
706
+ def fetch_trading_fees(self, params={}) -> TradingFees:
621
707
  """
622
708
  fetch the trading fees for multiple markets
623
- :see: https://api.blockchain.com/v3/#/trading/getFees
709
+
710
+ https://api.blockchain.com/v3/#getfees
711
+
624
712
  :param dict [params]: extra parameters specific to the exchange API endpoint
625
713
  :returns dict: a dictionary of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>` indexed by market symbols
626
714
  """
@@ -635,7 +723,7 @@ class blockchaincom(Exchange, ImplicitAPI):
635
723
  #
636
724
  makerFee = self.safe_number(response, 'makerRate')
637
725
  takerFee = self.safe_number(response, 'takerRate')
638
- result = {}
726
+ result: dict = {}
639
727
  for i in range(0, len(self.symbols)):
640
728
  symbol = self.symbols[i]
641
729
  result[symbol] = {
@@ -649,7 +737,9 @@ class blockchaincom(Exchange, ImplicitAPI):
649
737
  def fetch_canceled_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
650
738
  """
651
739
  fetches information on multiple canceled orders made by the user
652
- :see: https://api.blockchain.com/v3/#/trading/getOrders
740
+
741
+ https://api.blockchain.com/v3/#getorders
742
+
653
743
  :param str symbol: unified market symbol of the market orders were made in
654
744
  :param int [since]: timestamp in ms of the earliest order, default is None
655
745
  :param int [limit]: max number of orders to return, default is None
@@ -662,7 +752,9 @@ class blockchaincom(Exchange, ImplicitAPI):
662
752
  def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
663
753
  """
664
754
  fetches information on multiple closed orders made by the user
665
- :see: https://api.blockchain.com/v3/#/trading/getOrders
755
+
756
+ https://api.blockchain.com/v3/#getorders
757
+
666
758
  :param str symbol: unified market symbol of the market orders were made in
667
759
  :param int [since]: the earliest time in ms to fetch orders for
668
760
  :param int [limit]: the maximum number of order structures to retrieve
@@ -675,7 +767,9 @@ class blockchaincom(Exchange, ImplicitAPI):
675
767
  def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
676
768
  """
677
769
  fetch all unfilled currently open orders
678
- :see: https://api.blockchain.com/v3/#/trading/getOrders
770
+
771
+ https://api.blockchain.com/v3/#getorders
772
+
679
773
  :param str symbol: unified market symbol
680
774
  :param int [since]: the earliest time in ms to fetch open orders for
681
775
  :param int [limit]: the maximum number of open orders structures to retrieve
@@ -687,7 +781,7 @@ class blockchaincom(Exchange, ImplicitAPI):
687
781
 
688
782
  def fetch_orders_by_state(self, state, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
689
783
  self.load_markets()
690
- request = {
784
+ request: dict = {
691
785
  # 'to': unix epoch ms
692
786
  # 'from': unix epoch ms
693
787
  'status': state,
@@ -700,7 +794,7 @@ class blockchaincom(Exchange, ImplicitAPI):
700
794
  response = self.privateGetOrders(self.extend(request, params))
701
795
  return self.parse_orders(response, market, since, limit)
702
796
 
703
- def parse_trade(self, trade, market: Market = None) -> Trade:
797
+ def parse_trade(self, trade: dict, market: Market = None) -> Trade:
704
798
  #
705
799
  # {
706
800
  # "exOrdId":281685751028507,
@@ -748,7 +842,9 @@ class blockchaincom(Exchange, ImplicitAPI):
748
842
  def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
749
843
  """
750
844
  fetch all trades made by the user
751
- :see: https://api.blockchain.com/v3/#/trading/getFills
845
+
846
+ https://api.blockchain.com/v3/#getfills
847
+
752
848
  :param str symbol: unified market symbol
753
849
  :param int [since]: the earliest time in ms to fetch trades for
754
850
  :param int [limit]: the maximum number of trades structures to retrieve
@@ -756,7 +852,7 @@ class blockchaincom(Exchange, ImplicitAPI):
756
852
  :returns Trade[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
757
853
  """
758
854
  self.load_markets()
759
- request = {}
855
+ request: dict = {}
760
856
  if limit is not None:
761
857
  request['limit'] = limit
762
858
  market = None
@@ -766,17 +862,19 @@ class blockchaincom(Exchange, ImplicitAPI):
766
862
  trades = self.privateGetFills(self.extend(request, params))
767
863
  return self.parse_trades(trades, market, since, limit, params) # need to define
768
864
 
769
- def fetch_deposit_address(self, code: str, params={}):
865
+ def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
770
866
  """
771
867
  fetch the deposit address for a currency associated with self account
772
- :see: https://api.blockchain.com/v3/#/payments/getDepositAddress
868
+
869
+ https://api.blockchain.com/v3/#getdepositaddress
870
+
773
871
  :param str code: unified currency code
774
872
  :param dict [params]: extra parameters specific to the exchange API endpoint
775
873
  :returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
776
874
  """
777
875
  self.load_markets()
778
876
  currency = self.currency(code)
779
- request = {
877
+ request: dict = {
780
878
  'currency': currency['id'],
781
879
  }
782
880
  response = self.privatePostDepositsCurrency(self.extend(request, params))
@@ -788,15 +886,16 @@ class blockchaincom(Exchange, ImplicitAPI):
788
886
  # if a tag or memo is used it is separated by a colon in the 'address' value
789
887
  tag = self.safe_string(addressParts, 0)
790
888
  address = self.safe_string(addressParts, 1)
791
- result = {'info': response}
792
- result['currency'] = currency['code']
793
- result['address'] = address
794
- if tag is not None:
795
- result['tag'] = tag
796
- return result
889
+ return {
890
+ 'info': response,
891
+ 'currency': currency['code'],
892
+ 'network': None,
893
+ 'address': address,
894
+ 'tag': tag,
895
+ }
797
896
 
798
897
  def parse_transaction_state(self, state):
799
- states = {
898
+ states: dict = {
800
899
  'COMPLETED': 'ok', #
801
900
  'REJECTED': 'failed',
802
901
  'PENDING': 'pending',
@@ -805,7 +904,7 @@ class blockchaincom(Exchange, ImplicitAPI):
805
904
  }
806
905
  return self.safe_string(states, state, state)
807
906
 
808
- def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
907
+ def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
809
908
  #
810
909
  # deposit
811
910
  #
@@ -873,10 +972,12 @@ class blockchaincom(Exchange, ImplicitAPI):
873
972
  'fee': fee,
874
973
  }
875
974
 
876
- def withdraw(self, code: str, amount: float, address, tag=None, params={}):
975
+ def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
877
976
  """
878
977
  make a withdrawal
879
- :see: https://api.blockchain.com/v3/#/payments/createWithdrawal
978
+
979
+ https://api.blockchain.com/v3/#createwithdrawal
980
+
880
981
  :param str code: unified currency code
881
982
  :param float amount: the amount to withdraw
882
983
  :param str address: the address to withdraw to
@@ -886,7 +987,7 @@ class blockchaincom(Exchange, ImplicitAPI):
886
987
  """
887
988
  self.load_markets()
888
989
  currency = self.currency(code)
889
- request = {
990
+ request: dict = {
890
991
  'amount': amount,
891
992
  'currency': currency['id'],
892
993
  'beneficiary': address,
@@ -909,7 +1010,9 @@ class blockchaincom(Exchange, ImplicitAPI):
909
1010
  def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
910
1011
  """
911
1012
  fetch all withdrawals made from an account
912
- :see: https://api.blockchain.com/v3/#/payments/getWithdrawals
1013
+
1014
+ https://api.blockchain.com/v3/#getwithdrawals
1015
+
913
1016
  :param str code: unified currency code
914
1017
  :param int [since]: the earliest time in ms to fetch withdrawals for
915
1018
  :param int [limit]: the maximum number of withdrawals structures to retrieve
@@ -917,7 +1020,7 @@ class blockchaincom(Exchange, ImplicitAPI):
917
1020
  :returns dict[]: a list of `transaction structures <https://docs.ccxt.com/#/?id=transaction-structure>`
918
1021
  """
919
1022
  self.load_markets()
920
- request = {
1023
+ request: dict = {
921
1024
  # 'from' : integer timestamp in ms
922
1025
  # 'to' : integer timestamp in ms
923
1026
  }
@@ -932,14 +1035,16 @@ class blockchaincom(Exchange, ImplicitAPI):
932
1035
  def fetch_withdrawal(self, id: str, code: Str = None, params={}):
933
1036
  """
934
1037
  fetch data on a currency withdrawal via the withdrawal id
935
- :see: https://api.blockchain.com/v3/#/payments/getWithdrawalById
1038
+
1039
+ https://api.blockchain.com/v3/#getwithdrawalbyid
1040
+
936
1041
  :param str id: withdrawal id
937
1042
  :param str code: not used by blockchaincom.fetchWithdrawal
938
1043
  :param dict [params]: extra parameters specific to the exchange API endpoint
939
1044
  :returns dict: a `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
940
1045
  """
941
1046
  self.load_markets()
942
- request = {
1047
+ request: dict = {
943
1048
  'withdrawalId': id,
944
1049
  }
945
1050
  response = self.privateGetWithdrawalsWithdrawalId(self.extend(request, params))
@@ -948,7 +1053,9 @@ class blockchaincom(Exchange, ImplicitAPI):
948
1053
  def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
949
1054
  """
950
1055
  fetch all deposits made to an account
951
- :see: https://api.blockchain.com/v3/#/payments/getDeposits
1056
+
1057
+ https://api.blockchain.com/v3/#getdeposits
1058
+
952
1059
  :param str code: unified currency code
953
1060
  :param int [since]: the earliest time in ms to fetch deposits for
954
1061
  :param int [limit]: the maximum number of deposits structures to retrieve
@@ -956,7 +1063,7 @@ class blockchaincom(Exchange, ImplicitAPI):
956
1063
  :returns dict[]: a list of `transaction structures <https://docs.ccxt.com/#/?id=transaction-structure>`
957
1064
  """
958
1065
  self.load_markets()
959
- request = {
1066
+ request: dict = {
960
1067
  # 'from' : integer timestamp in ms
961
1068
  # 'to' : integer timestap in ms
962
1069
  }
@@ -971,7 +1078,9 @@ class blockchaincom(Exchange, ImplicitAPI):
971
1078
  def fetch_deposit(self, id: str, code: Str = None, params={}):
972
1079
  """
973
1080
  fetch information on a deposit
974
- :see: https://api.blockchain.com/v3/#/payments/getDepositById
1081
+
1082
+ https://api.blockchain.com/v3/#getdepositbyid
1083
+
975
1084
  :param str id: deposit id
976
1085
  :param str code: not used by blockchaincom fetchDeposit()
977
1086
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -979,7 +1088,7 @@ class blockchaincom(Exchange, ImplicitAPI):
979
1088
  """
980
1089
  self.load_markets()
981
1090
  depositId = self.safe_string(params, 'depositId', id)
982
- request = {
1091
+ request: dict = {
983
1092
  'depositId': depositId,
984
1093
  }
985
1094
  deposit = self.privateGetDepositsDepositId(self.extend(request, params))
@@ -988,14 +1097,16 @@ class blockchaincom(Exchange, ImplicitAPI):
988
1097
  def fetch_balance(self, params={}) -> Balances:
989
1098
  """
990
1099
  query for balance and get the amount of funds available for trading or funds locked in orders
991
- :see: https://api.blockchain.com/v3/#/payments/getAccounts
1100
+
1101
+ https://api.blockchain.com/v3/#getaccounts
1102
+
992
1103
  :param dict [params]: extra parameters specific to the exchange API endpoint
993
1104
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
994
1105
  """
995
1106
  self.load_markets()
996
1107
  accountName = self.safe_string(params, 'account', 'primary')
997
1108
  params = self.omit(params, 'account')
998
- request = {
1109
+ request: dict = {
999
1110
  'account': accountName,
1000
1111
  }
1001
1112
  response = self.privateGetAccounts(self.extend(request, params))
@@ -1017,7 +1128,7 @@ class blockchaincom(Exchange, ImplicitAPI):
1017
1128
  balances = self.safe_value(response, accountName)
1018
1129
  if balances is None:
1019
1130
  raise ExchangeError(self.id + ' fetchBalance() could not find the "' + accountName + '" account')
1020
- result = {'info': response}
1131
+ result: dict = {'info': response}
1021
1132
  for i in range(0, len(balances)):
1022
1133
  entry = balances[i]
1023
1134
  currencyId = self.safe_string(entry, 'currency')
@@ -1031,7 +1142,10 @@ class blockchaincom(Exchange, ImplicitAPI):
1031
1142
  def fetch_order(self, id: str, symbol: Str = None, params={}):
1032
1143
  """
1033
1144
  fetches information on an order made by the user
1034
- :see: https://api.blockchain.com/v3/#/trading/getOrderById
1145
+
1146
+ https://api.blockchain.com/v3/#getorderbyid
1147
+
1148
+ :param str id: the order id
1035
1149
  :param str symbol: not used by blockchaincom fetchOrder
1036
1150
  :param dict [params]: extra parameters specific to the exchange API endpoint
1037
1151
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
@@ -1039,7 +1153,7 @@ class blockchaincom(Exchange, ImplicitAPI):
1039
1153
  # note: only works with exchange-order-id
1040
1154
  # does not work with clientOrderId
1041
1155
  self.load_markets()
1042
- request = {
1156
+ request: dict = {
1043
1157
  'orderId': id,
1044
1158
  }
1045
1159
  response = self.privateGetOrdersOrderId(self.extend(request, params))
@@ -1083,7 +1197,7 @@ class blockchaincom(Exchange, ImplicitAPI):
1083
1197
  headers['Content-Type'] = 'application/json'
1084
1198
  return {'url': url, 'method': method, 'body': body, 'headers': headers}
1085
1199
 
1086
- def handle_errors(self, code, reason, url, method, headers, body, response, requestHeaders, requestBody):
1200
+ def handle_errors(self, code: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
1087
1201
  # {"timestamp":"2021-10-21T15:13:58.837+00:00","status":404,"error":"Not Found","message":"","path":"/orders/505050"
1088
1202
  if response is None:
1089
1203
  return None