ccxt-ir 4.3.46.0.2__py2.py3-none-any.whl → 4.5.0__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 (528) hide show
  1. ccxt/__init__.py +39 -35
  2. ccxt/abantether.py +9 -9
  3. ccxt/abstract/alpaca.py +4 -0
  4. ccxt/abstract/apex.py +31 -0
  5. ccxt/abstract/bigone.py +1 -1
  6. ccxt/abstract/binance.py +106 -48
  7. ccxt/abstract/binancecoinm.py +106 -48
  8. ccxt/abstract/binanceus.py +141 -83
  9. ccxt/abstract/binanceusdm.py +106 -48
  10. ccxt/abstract/bingx.py +50 -1
  11. ccxt/abstract/bitbank.py +5 -0
  12. ccxt/abstract/bitfinex.py +136 -65
  13. ccxt/abstract/bitflyer.py +1 -0
  14. ccxt/abstract/bitget.py +67 -0
  15. ccxt/abstract/bitmart.py +19 -1
  16. ccxt/abstract/bitopro.py +1 -0
  17. ccxt/abstract/bitrue.py +68 -68
  18. ccxt/abstract/bitstamp.py +1 -0
  19. ccxt/abstract/blofin.py +30 -0
  20. ccxt/abstract/btcbox.py +2 -0
  21. ccxt/abstract/bybit.py +28 -13
  22. ccxt/abstract/cex.py +28 -29
  23. ccxt/abstract/coinbaseexchange.py +1 -0
  24. ccxt/abstract/coinbaseinternational.py +1 -1
  25. ccxt/abstract/cryptocom.py +16 -0
  26. ccxt/abstract/cryptomus.py +20 -0
  27. ccxt/abstract/defx.py +69 -0
  28. ccxt/abstract/deribit.py +1 -0
  29. ccxt/abstract/derive.py +117 -0
  30. ccxt/abstract/digifinex.py +1 -0
  31. ccxt/abstract/ellipx.py +25 -0
  32. ccxt/abstract/foxbit.py +26 -0
  33. ccxt/abstract/gate.py +19 -0
  34. ccxt/abstract/gateio.py +19 -0
  35. ccxt/abstract/gemini.py +1 -0
  36. ccxt/abstract/hibachi.py +26 -0
  37. ccxt/abstract/hyperliquid.py +1 -1
  38. ccxt/abstract/independentreserve.py +6 -0
  39. ccxt/abstract/kraken.py +1 -0
  40. ccxt/abstract/krakenfutures.py +4 -0
  41. ccxt/abstract/kucoin.py +10 -0
  42. ccxt/abstract/kucoinfutures.py +18 -0
  43. ccxt/abstract/lbank.py +2 -1
  44. ccxt/abstract/luno.py +1 -0
  45. ccxt/abstract/mexc.py +2 -0
  46. ccxt/abstract/modetrade.py +119 -0
  47. ccxt/abstract/myokx.py +349 -0
  48. ccxt/abstract/oceanex.py +5 -0
  49. ccxt/abstract/okx.py +25 -0
  50. ccxt/abstract/okxus.py +349 -0
  51. ccxt/abstract/onetrading.py +0 -12
  52. ccxt/abstract/paradex.py +23 -0
  53. ccxt/abstract/phemex.py +2 -0
  54. ccxt/abstract/poloniex.py +36 -0
  55. ccxt/abstract/tradeogre.py +3 -1
  56. ccxt/abstract/upbit.py +51 -34
  57. ccxt/abstract/whitebit.py +16 -0
  58. ccxt/abstract/woo.py +64 -6
  59. ccxt/abstract/xt.py +10 -5
  60. ccxt/afratether.py +7 -7
  61. ccxt/alpaca.py +828 -51
  62. ccxt/apex.py +1875 -0
  63. ccxt/arzinja.py +7 -7
  64. ccxt/arzplus.py +9 -9
  65. ccxt/ascendex.py +501 -306
  66. ccxt/async_support/__init__.py +39 -35
  67. ccxt/async_support/abantether.py +10 -10
  68. ccxt/async_support/afratether.py +9 -9
  69. ccxt/async_support/alpaca.py +828 -51
  70. ccxt/async_support/apex.py +1875 -0
  71. ccxt/async_support/arzinja.py +10 -10
  72. ccxt/async_support/arzplus.py +12 -12
  73. ccxt/async_support/ascendex.py +502 -306
  74. ccxt/async_support/base/exchange.py +303 -89
  75. ccxt/async_support/base/ws/cache.py +9 -3
  76. ccxt/async_support/base/ws/client.py +173 -38
  77. ccxt/async_support/base/ws/future.py +25 -37
  78. ccxt/async_support/bequant.py +5 -3
  79. ccxt/async_support/bigone.py +279 -144
  80. ccxt/async_support/binance.py +2347 -1158
  81. ccxt/async_support/binancecoinm.py +9 -3
  82. ccxt/async_support/binanceus.py +17 -3
  83. ccxt/async_support/binanceusdm.py +9 -4
  84. ccxt/async_support/bingx.py +2962 -920
  85. ccxt/async_support/bit2c.py +147 -27
  86. ccxt/async_support/bitbank.py +151 -23
  87. ccxt/async_support/bitbns.py +104 -30
  88. ccxt/async_support/bitfinex.py +3291 -1113
  89. ccxt/async_support/bitflyer.py +202 -27
  90. ccxt/async_support/bitget.py +3683 -1538
  91. ccxt/async_support/bithumb.py +195 -38
  92. ccxt/async_support/bitimen.py +12 -12
  93. ccxt/async_support/bitir.py +38 -38
  94. ccxt/async_support/bitmart.py +1288 -350
  95. ccxt/async_support/bitmex.py +260 -75
  96. ccxt/async_support/bitopro.py +262 -62
  97. ccxt/async_support/bitpin.py +17 -16
  98. ccxt/async_support/bitrue.py +459 -290
  99. ccxt/async_support/bitso.py +199 -54
  100. ccxt/async_support/bitstamp.py +230 -96
  101. ccxt/async_support/bitteam.py +167 -25
  102. ccxt/async_support/{huobijp.py → bittrade.py} +158 -30
  103. ccxt/async_support/bitvavo.py +213 -49
  104. ccxt/async_support/blockchaincom.py +160 -46
  105. ccxt/async_support/blofin.py +502 -120
  106. ccxt/async_support/btcalpha.py +169 -31
  107. ccxt/async_support/btcbox.py +292 -23
  108. ccxt/async_support/btcmarkets.py +211 -58
  109. ccxt/async_support/btcturk.py +161 -38
  110. ccxt/async_support/bybit.py +1775 -1030
  111. ccxt/async_support/cex.py +1440 -1303
  112. ccxt/async_support/coinbase.py +724 -212
  113. ccxt/async_support/coinbaseadvanced.py +2 -1
  114. ccxt/async_support/coinbaseexchange.py +388 -89
  115. ccxt/async_support/coinbaseinternational.py +412 -57
  116. ccxt/async_support/coincatch.py +177 -78
  117. ccxt/async_support/coincheck.py +135 -19
  118. ccxt/async_support/coinex.py +606 -232
  119. ccxt/async_support/coinmate.py +189 -63
  120. ccxt/async_support/coinmetro.py +195 -54
  121. ccxt/async_support/coinone.py +158 -51
  122. ccxt/async_support/coinsph.py +336 -61
  123. ccxt/async_support/coinspot.py +151 -52
  124. ccxt/async_support/cryptocom.py +661 -111
  125. ccxt/async_support/cryptomus.py +1137 -0
  126. ccxt/async_support/defx.py +2071 -0
  127. ccxt/async_support/delta.py +299 -99
  128. ccxt/async_support/deribit.py +348 -126
  129. ccxt/async_support/derive.py +2572 -0
  130. ccxt/async_support/digifinex.py +430 -214
  131. ccxt/async_support/ellipx.py +2029 -0
  132. ccxt/async_support/eterex.py +10 -10
  133. ccxt/async_support/excoino.py +31 -31
  134. ccxt/async_support/exir.py +14 -14
  135. ccxt/async_support/exmo.py +344 -131
  136. ccxt/async_support/exnovin.py +10 -10
  137. ccxt/async_support/farhadexchange.py +12 -12
  138. ccxt/async_support/fmfwio.py +2 -1
  139. ccxt/async_support/foxbit.py +1935 -0
  140. ccxt/async_support/gate.py +1351 -529
  141. ccxt/async_support/gateio.py +2 -1
  142. ccxt/async_support/gemini.py +144 -39
  143. ccxt/async_support/hashkey.py +152 -109
  144. ccxt/async_support/hibachi.py +2080 -0
  145. ccxt/async_support/hitbtc.py +395 -167
  146. ccxt/async_support/hitobit.py +12 -12
  147. ccxt/async_support/hollaex.py +307 -119
  148. ccxt/async_support/htx.py +851 -383
  149. ccxt/async_support/huobi.py +2 -1
  150. ccxt/async_support/hyperliquid.py +1848 -536
  151. ccxt/async_support/independentreserve.py +288 -15
  152. ccxt/async_support/indodax.py +190 -33
  153. ccxt/async_support/jibitex.py +12 -12
  154. ccxt/async_support/kraken.py +795 -351
  155. ccxt/async_support/krakenfutures.py +214 -62
  156. ccxt/async_support/kucoin.py +715 -396
  157. ccxt/async_support/kucoinfutures.py +652 -89
  158. ccxt/async_support/latoken.py +217 -113
  159. ccxt/async_support/lbank.py +425 -97
  160. ccxt/async_support/luno.py +382 -35
  161. ccxt/async_support/mercado.py +113 -6
  162. ccxt/async_support/mexc.py +874 -437
  163. ccxt/async_support/modetrade.py +2818 -0
  164. ccxt/async_support/myokx.py +54 -0
  165. ccxt/async_support/ndax.py +221 -64
  166. ccxt/async_support/nobitex.py +31 -37
  167. ccxt/async_support/novadax.py +190 -34
  168. ccxt/async_support/oceanex.py +217 -28
  169. ccxt/async_support/okcoin.py +253 -145
  170. ccxt/async_support/okexchange.py +11 -11
  171. ccxt/async_support/okx.py +1088 -351
  172. ccxt/async_support/okxus.py +54 -0
  173. ccxt/async_support/ompfinex.py +25 -24
  174. ccxt/async_support/onetrading.py +213 -392
  175. ccxt/async_support/oxfun.py +245 -166
  176. ccxt/async_support/p2b.py +151 -29
  177. ccxt/async_support/paradex.py +562 -49
  178. ccxt/async_support/paymium.py +82 -19
  179. ccxt/async_support/phemex.py +713 -172
  180. ccxt/async_support/poloniex.py +1602 -283
  181. ccxt/async_support/probit.py +224 -95
  182. ccxt/async_support/ramzinex.py +30 -27
  183. ccxt/async_support/sarmayex.py +9 -9
  184. ccxt/async_support/sarrafex.py +13 -13
  185. ccxt/async_support/tabdeal.py +14 -13
  186. ccxt/async_support/tetherland.py +9 -9
  187. ccxt/async_support/timex.py +210 -51
  188. ccxt/async_support/tokocrypto.py +167 -47
  189. ccxt/async_support/tradeogre.py +266 -31
  190. ccxt/async_support/twox.py +9 -9
  191. ccxt/async_support/ubitex.py +12 -12
  192. ccxt/async_support/upbit.py +568 -165
  193. ccxt/async_support/vertex.py +160 -32
  194. ccxt/async_support/wallex.py +12 -12
  195. ccxt/async_support/wavesexchange.py +165 -30
  196. ccxt/async_support/whitebit.py +975 -127
  197. ccxt/async_support/woo.py +1918 -1016
  198. ccxt/async_support/woofipro.py +433 -141
  199. ccxt/async_support/xt.py +649 -193
  200. ccxt/async_support/yobit.py +195 -70
  201. ccxt/async_support/zaif.py +91 -15
  202. ccxt/async_support/zonda.py +151 -36
  203. ccxt/base/decimal_to_precision.py +14 -10
  204. ccxt/base/errors.py +49 -18
  205. ccxt/base/exchange.py +1556 -450
  206. ccxt/base/precise.py +10 -0
  207. ccxt/base/types.py +114 -6
  208. ccxt/bequant.py +5 -3
  209. ccxt/bigone.py +279 -144
  210. ccxt/binance.py +2347 -1158
  211. ccxt/binancecoinm.py +9 -3
  212. ccxt/binanceus.py +17 -3
  213. ccxt/binanceusdm.py +9 -4
  214. ccxt/bingx.py +2962 -920
  215. ccxt/bit2c.py +147 -27
  216. ccxt/bitbank.py +151 -23
  217. ccxt/bitbns.py +104 -30
  218. ccxt/bitfinex.py +3290 -1113
  219. ccxt/bitflyer.py +202 -27
  220. ccxt/bitget.py +3683 -1538
  221. ccxt/bithumb.py +194 -38
  222. ccxt/bitimen.py +9 -9
  223. ccxt/bitir.py +35 -35
  224. ccxt/bitmart.py +1288 -350
  225. ccxt/bitmex.py +260 -75
  226. ccxt/bitopro.py +262 -62
  227. ccxt/bitpin.py +15 -14
  228. ccxt/bitrue.py +459 -290
  229. ccxt/bitso.py +199 -54
  230. ccxt/bitstamp.py +230 -96
  231. ccxt/bitteam.py +167 -25
  232. ccxt/{huobijp.py → bittrade.py} +158 -30
  233. ccxt/bitvavo.py +213 -49
  234. ccxt/blockchaincom.py +160 -46
  235. ccxt/blofin.py +502 -120
  236. ccxt/btcalpha.py +169 -31
  237. ccxt/btcbox.py +291 -23
  238. ccxt/btcmarkets.py +211 -58
  239. ccxt/btcturk.py +161 -38
  240. ccxt/bybit.py +1775 -1030
  241. ccxt/cex.py +1439 -1303
  242. ccxt/coinbase.py +724 -212
  243. ccxt/coinbaseadvanced.py +2 -1
  244. ccxt/coinbaseexchange.py +388 -89
  245. ccxt/coinbaseinternational.py +412 -57
  246. ccxt/coincatch.py +177 -78
  247. ccxt/coincheck.py +135 -19
  248. ccxt/coinex.py +606 -232
  249. ccxt/coinmate.py +189 -63
  250. ccxt/coinmetro.py +194 -54
  251. ccxt/coinone.py +158 -51
  252. ccxt/coinsph.py +336 -61
  253. ccxt/coinspot.py +151 -52
  254. ccxt/cryptocom.py +661 -111
  255. ccxt/cryptomus.py +1137 -0
  256. ccxt/defx.py +2070 -0
  257. ccxt/delta.py +299 -99
  258. ccxt/deribit.py +348 -126
  259. ccxt/derive.py +2571 -0
  260. ccxt/digifinex.py +430 -214
  261. ccxt/ellipx.py +2029 -0
  262. ccxt/eterex.py +7 -7
  263. ccxt/excoino.py +29 -29
  264. ccxt/exir.py +11 -11
  265. ccxt/exmo.py +343 -131
  266. ccxt/exnovin.py +8 -8
  267. ccxt/farhadexchange.py +10 -10
  268. ccxt/fmfwio.py +2 -1
  269. ccxt/foxbit.py +1935 -0
  270. ccxt/gate.py +1351 -529
  271. ccxt/gateio.py +2 -1
  272. ccxt/gemini.py +144 -39
  273. ccxt/hashkey.py +152 -109
  274. ccxt/hibachi.py +2079 -0
  275. ccxt/hitbtc.py +395 -167
  276. ccxt/hitobit.py +9 -9
  277. ccxt/hollaex.py +307 -119
  278. ccxt/htx.py +851 -383
  279. ccxt/huobi.py +2 -1
  280. ccxt/hyperliquid.py +1848 -536
  281. ccxt/independentreserve.py +287 -15
  282. ccxt/indodax.py +190 -33
  283. ccxt/jibitex.py +9 -9
  284. ccxt/kraken.py +794 -351
  285. ccxt/krakenfutures.py +214 -62
  286. ccxt/kucoin.py +715 -396
  287. ccxt/kucoinfutures.py +652 -89
  288. ccxt/latoken.py +217 -113
  289. ccxt/lbank.py +425 -97
  290. ccxt/luno.py +382 -35
  291. ccxt/mercado.py +113 -6
  292. ccxt/mexc.py +873 -437
  293. ccxt/modetrade.py +2818 -0
  294. ccxt/myokx.py +54 -0
  295. ccxt/ndax.py +221 -64
  296. ccxt/nobitex.py +29 -35
  297. ccxt/novadax.py +190 -34
  298. ccxt/oceanex.py +217 -28
  299. ccxt/okcoin.py +253 -145
  300. ccxt/okexchange.py +9 -9
  301. ccxt/okx.py +1088 -351
  302. ccxt/okxus.py +54 -0
  303. ccxt/ompfinex.py +22 -21
  304. ccxt/onetrading.py +213 -392
  305. ccxt/oxfun.py +245 -166
  306. ccxt/p2b.py +151 -29
  307. ccxt/paradex.py +562 -49
  308. ccxt/paymium.py +82 -19
  309. ccxt/phemex.py +712 -172
  310. ccxt/poloniex.py +1601 -283
  311. ccxt/pro/__init__.py +76 -17
  312. ccxt/pro/alpaca.py +21 -6
  313. ccxt/pro/apex.py +984 -0
  314. ccxt/pro/ascendex.py +58 -10
  315. ccxt/pro/bequant.py +6 -1
  316. ccxt/pro/binance.py +728 -156
  317. ccxt/pro/binancecoinm.py +6 -2
  318. ccxt/pro/binanceus.py +8 -4
  319. ccxt/pro/binanceusdm.py +7 -2
  320. ccxt/pro/bingx.py +333 -142
  321. ccxt/pro/bitfinex.py +727 -262
  322. ccxt/pro/bitget.py +570 -79
  323. ccxt/pro/bithumb.py +20 -6
  324. ccxt/pro/bitmart.py +216 -87
  325. ccxt/pro/bitmex.py +47 -9
  326. ccxt/pro/bitopro.py +26 -14
  327. ccxt/pro/bitrue.py +22 -22
  328. ccxt/pro/bitstamp.py +54 -21
  329. ccxt/pro/{huobijp.py → bittrade.py} +7 -6
  330. ccxt/pro/bitvavo.py +191 -67
  331. ccxt/pro/blockchaincom.py +21 -8
  332. ccxt/pro/blofin.py +9 -1
  333. ccxt/pro/bybit.py +632 -245
  334. ccxt/pro/cex.py +59 -24
  335. ccxt/pro/coinbase.py +102 -73
  336. ccxt/pro/coinbaseadvanced.py +2 -1
  337. ccxt/pro/coinbaseexchange.py +8 -8
  338. ccxt/pro/coinbaseinternational.py +181 -25
  339. ccxt/pro/coincatch.py +6 -7
  340. ccxt/pro/coincheck.py +11 -6
  341. ccxt/pro/coinex.py +967 -665
  342. ccxt/pro/coinone.py +16 -9
  343. ccxt/pro/cryptocom.py +448 -45
  344. ccxt/pro/defx.py +831 -0
  345. ccxt/pro/deribit.py +150 -14
  346. ccxt/pro/derive.py +704 -0
  347. ccxt/pro/exmo.py +239 -6
  348. ccxt/pro/gate.py +623 -65
  349. ccxt/pro/gateio.py +2 -1
  350. ccxt/pro/gemini.py +27 -11
  351. ccxt/pro/hashkey.py +2 -2
  352. ccxt/pro/hitbtc.py +196 -91
  353. ccxt/pro/hollaex.py +23 -7
  354. ccxt/pro/htx.py +51 -14
  355. ccxt/pro/huobi.py +2 -1
  356. ccxt/pro/hyperliquid.py +591 -27
  357. ccxt/pro/independentreserve.py +9 -6
  358. ccxt/pro/kraken.py +640 -320
  359. ccxt/pro/krakenfutures.py +62 -35
  360. ccxt/pro/kucoin.py +267 -46
  361. ccxt/pro/kucoinfutures.py +165 -21
  362. ccxt/pro/lbank.py +102 -21
  363. ccxt/pro/luno.py +12 -8
  364. ccxt/pro/mexc.py +877 -111
  365. ccxt/pro/modetrade.py +1271 -0
  366. ccxt/pro/myokx.py +38 -0
  367. ccxt/pro/ndax.py +15 -2
  368. ccxt/pro/okcoin.py +23 -4
  369. ccxt/pro/okx.py +573 -98
  370. ccxt/pro/okxus.py +38 -0
  371. ccxt/pro/onetrading.py +30 -13
  372. ccxt/pro/oxfun.py +131 -27
  373. ccxt/pro/p2b.py +88 -22
  374. ccxt/pro/paradex.py +3 -3
  375. ccxt/pro/phemex.py +75 -21
  376. ccxt/pro/poloniex.py +124 -41
  377. ccxt/pro/probit.py +87 -80
  378. ccxt/pro/tradeogre.py +272 -0
  379. ccxt/pro/upbit.py +152 -12
  380. ccxt/pro/vertex.py +8 -3
  381. ccxt/pro/whitebit.py +58 -5
  382. ccxt/pro/woo.py +228 -37
  383. ccxt/pro/woofipro.py +106 -18
  384. ccxt/pro/xt.py +111 -5
  385. ccxt/probit.py +224 -95
  386. ccxt/protobuf/__init__.py +0 -0
  387. ccxt/protobuf/mexc/PrivateAccountV3Api_pb2.py +37 -0
  388. ccxt/protobuf/mexc/PrivateDealsV3Api_pb2.py +37 -0
  389. ccxt/protobuf/mexc/PrivateOrdersV3Api_pb2.py +37 -0
  390. ccxt/protobuf/mexc/PublicAggreBookTickerV3Api_pb2.py +37 -0
  391. ccxt/protobuf/mexc/PublicAggreDealsV3Api_pb2.py +39 -0
  392. ccxt/protobuf/mexc/PublicAggreDepthsV3Api_pb2.py +39 -0
  393. ccxt/protobuf/mexc/PublicBookTickerBatchV3Api_pb2.py +38 -0
  394. ccxt/protobuf/mexc/PublicBookTickerV3Api_pb2.py +37 -0
  395. ccxt/protobuf/mexc/PublicDealsV3Api_pb2.py +39 -0
  396. ccxt/protobuf/mexc/PublicIncreaseDepthsBatchV3Api_pb2.py +38 -0
  397. ccxt/protobuf/mexc/PublicIncreaseDepthsV3Api_pb2.py +39 -0
  398. ccxt/protobuf/mexc/PublicLimitDepthsV3Api_pb2.py +39 -0
  399. ccxt/protobuf/mexc/PublicMiniTickerV3Api_pb2.py +37 -0
  400. ccxt/protobuf/mexc/PublicMiniTickersV3Api_pb2.py +38 -0
  401. ccxt/protobuf/mexc/PublicSpotKlineV3Api_pb2.py +37 -0
  402. ccxt/protobuf/mexc/PushDataV3ApiWrapper_pb2.py +52 -0
  403. ccxt/protobuf/mexc/__init__.py +0 -0
  404. ccxt/ramzinex.py +28 -25
  405. ccxt/sarmayex.py +7 -7
  406. ccxt/sarrafex.py +10 -10
  407. ccxt/static_dependencies/__init__.py +1 -1
  408. ccxt/static_dependencies/lark/py.typed +0 -0
  409. ccxt/static_dependencies/marshmallow/py.typed +0 -0
  410. ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
  411. ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
  412. ccxt/tabdeal.py +12 -11
  413. ccxt/test/tests_async.py +261 -57
  414. ccxt/test/tests_helpers.py +1 -3
  415. ccxt/test/tests_init.py +4 -3
  416. ccxt/test/tests_sync.py +261 -57
  417. ccxt/tetherland.py +7 -7
  418. ccxt/timex.py +210 -51
  419. ccxt/tokocrypto.py +167 -47
  420. ccxt/tradeogre.py +266 -31
  421. ccxt/twox.py +7 -7
  422. ccxt/ubitex.py +9 -9
  423. ccxt/upbit.py +568 -165
  424. ccxt/vertex.py +160 -32
  425. ccxt/wallex.py +9 -9
  426. ccxt/wavesexchange.py +165 -30
  427. ccxt/whitebit.py +975 -127
  428. ccxt/woo.py +1917 -1016
  429. ccxt/woofipro.py +432 -141
  430. ccxt/xt.py +649 -193
  431. ccxt/yobit.py +194 -70
  432. ccxt/zaif.py +91 -15
  433. ccxt/zonda.py +151 -36
  434. {ccxt_ir-4.3.46.0.2.dist-info → ccxt_ir-4.5.0.dist-info}/METADATA +225 -73
  435. ccxt_ir-4.5.0.dist-info/RECORD +743 -0
  436. {ccxt_ir-4.3.46.0.2.dist-info → ccxt_ir-4.5.0.dist-info}/WHEEL +1 -1
  437. ccxt/abstract/ace.py +0 -15
  438. ccxt/abstract/bitbay.py +0 -53
  439. ccxt/abstract/bitcoincom.py +0 -115
  440. ccxt/abstract/bitfinex2.py +0 -139
  441. ccxt/abstract/bitpanda.py +0 -35
  442. ccxt/abstract/bl3p.py +0 -19
  443. ccxt/abstract/coinlist.py +0 -54
  444. ccxt/abstract/currencycom.py +0 -68
  445. ccxt/abstract/hitbtc3.py +0 -115
  446. ccxt/abstract/idex.py +0 -26
  447. ccxt/abstract/kuna.py +0 -182
  448. ccxt/abstract/lykke.py +0 -29
  449. ccxt/abstract/poloniexfutures.py +0 -48
  450. ccxt/abstract/wazirx.py +0 -30
  451. ccxt/ace.py +0 -1012
  452. ccxt/async_support/ace.py +0 -1012
  453. ccxt/async_support/base/ws/aiohttp_client.py +0 -125
  454. ccxt/async_support/base/ws/fast_client.py +0 -96
  455. ccxt/async_support/bitbay.py +0 -17
  456. ccxt/async_support/bitcoincom.py +0 -17
  457. ccxt/async_support/bitfinex2.py +0 -3552
  458. ccxt/async_support/bitpanda.py +0 -16
  459. ccxt/async_support/bl3p.py +0 -485
  460. ccxt/async_support/coinlist.py +0 -2243
  461. ccxt/async_support/currencycom.py +0 -1950
  462. ccxt/async_support/hitbtc3.py +0 -16
  463. ccxt/async_support/idex.py +0 -1766
  464. ccxt/async_support/kuna.py +0 -1841
  465. ccxt/async_support/lykke.py +0 -1270
  466. ccxt/async_support/poloniexfutures.py +0 -1717
  467. ccxt/async_support/wazirx.py +0 -1224
  468. ccxt/bitbay.py +0 -17
  469. ccxt/bitcoincom.py +0 -17
  470. ccxt/bitfinex2.py +0 -3552
  471. ccxt/bitpanda.py +0 -16
  472. ccxt/bl3p.py +0 -485
  473. ccxt/coinlist.py +0 -2243
  474. ccxt/currencycom.py +0 -1950
  475. ccxt/hitbtc3.py +0 -16
  476. ccxt/idex.py +0 -1766
  477. ccxt/kuna.py +0 -1841
  478. ccxt/lykke.py +0 -1270
  479. ccxt/poloniexfutures.py +0 -1717
  480. ccxt/pro/bitcoincom.py +0 -34
  481. ccxt/pro/bitfinex2.py +0 -1083
  482. ccxt/pro/bitpanda.py +0 -15
  483. ccxt/pro/currencycom.py +0 -536
  484. ccxt/pro/idex.py +0 -672
  485. ccxt/pro/poloniexfutures.py +0 -990
  486. ccxt/pro/wazirx.py +0 -749
  487. ccxt/test/base/__init__.py +0 -29
  488. ccxt/test/base/test_account.py +0 -26
  489. ccxt/test/base/test_balance.py +0 -56
  490. ccxt/test/base/test_borrow_interest.py +0 -35
  491. ccxt/test/base/test_borrow_rate.py +0 -32
  492. ccxt/test/base/test_calculate_fee.py +0 -51
  493. ccxt/test/base/test_crypto.py +0 -127
  494. ccxt/test/base/test_currency.py +0 -76
  495. ccxt/test/base/test_datetime.py +0 -109
  496. ccxt/test/base/test_decimal_to_precision.py +0 -392
  497. ccxt/test/base/test_deep_extend.py +0 -68
  498. ccxt/test/base/test_deposit_withdrawal.py +0 -50
  499. ccxt/test/base/test_exchange_datetime_functions.py +0 -76
  500. ccxt/test/base/test_funding_rate_history.py +0 -29
  501. ccxt/test/base/test_last_price.py +0 -31
  502. ccxt/test/base/test_ledger_entry.py +0 -45
  503. ccxt/test/base/test_ledger_item.py +0 -48
  504. ccxt/test/base/test_leverage_tier.py +0 -33
  505. ccxt/test/base/test_liquidation.py +0 -50
  506. ccxt/test/base/test_margin_mode.py +0 -24
  507. ccxt/test/base/test_margin_modification.py +0 -35
  508. ccxt/test/base/test_market.py +0 -193
  509. ccxt/test/base/test_number.py +0 -411
  510. ccxt/test/base/test_ohlcv.py +0 -33
  511. ccxt/test/base/test_open_interest.py +0 -32
  512. ccxt/test/base/test_order.py +0 -64
  513. ccxt/test/base/test_order_book.py +0 -69
  514. ccxt/test/base/test_position.py +0 -60
  515. ccxt/test/base/test_shared_methods.py +0 -353
  516. ccxt/test/base/test_status.py +0 -24
  517. ccxt/test/base/test_throttle.py +0 -126
  518. ccxt/test/base/test_ticker.py +0 -92
  519. ccxt/test/base/test_trade.py +0 -47
  520. ccxt/test/base/test_trading_fee.py +0 -26
  521. ccxt/test/base/test_transaction.py +0 -39
  522. ccxt/test/test_async.py +0 -1649
  523. ccxt/test/test_sync.py +0 -1648
  524. ccxt/wazirx.py +0 -1224
  525. ccxt_ir-4.3.46.0.2.dist-info/RECORD +0 -772
  526. /ccxt/abstract/{huobijp.py → bittrade.py} +0 -0
  527. {ccxt_ir-4.3.46.0.2.dist-info → ccxt_ir-4.5.0.dist-info/licenses}/LICENSE.txt +0 -0
  528. {ccxt_ir-4.3.46.0.2.dist-info → ccxt_ir-4.5.0.dist-info}/top_level.txt +0 -0
@@ -8,7 +8,7 @@ from ccxt.abstract.coincatch import ImplicitAPI
8
8
  import hashlib
9
9
  import math
10
10
  import json
11
- from ccxt.base.types import Balances, Bool, Currencies, Currency, DepositAddress, Int, LedgerEntry, Leverage, MarginMode, MarginModification, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, FundingRate, Trade, Transaction, TransferEntry
11
+ from ccxt.base.types import Any, Balances, Bool, Currencies, Currency, DepositAddress, Int, LedgerEntry, Leverage, MarginMode, MarginModification, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, FundingRate, Trade, Transaction, TransferEntry
12
12
  from typing import List
13
13
  from ccxt.base.errors import ExchangeError
14
14
  from ccxt.base.errors import AuthenticationError
@@ -30,7 +30,7 @@ from ccxt.base.precise import Precise
30
30
 
31
31
  class coincatch(Exchange, ImplicitAPI):
32
32
 
33
- def describe(self):
33
+ def describe(self) -> Any:
34
34
  return self.deep_extend(super(coincatch, self).describe(), {
35
35
  'id': 'coincatch',
36
36
  'name': 'CoinCatch',
@@ -90,6 +90,7 @@ class coincatch(Exchange, ImplicitAPI):
90
90
  'fetchDepositAddress': True,
91
91
  'fetchDeposits': True,
92
92
  'fetchDepositsWithdrawals': False,
93
+ 'fetchDepositWithdrawFees': True,
93
94
  'fetchFundingHistory': False,
94
95
  'fetchFundingRate': True,
95
96
  'fetchFundingRateHistory': True,
@@ -374,59 +375,109 @@ class coincatch(Exchange, ImplicitAPI):
374
375
  'CRO': 'CronosChain',
375
376
  },
376
377
  'networksById': {
377
- 'BITCOIN': 'BTC',
378
- 'ERC20': 'ERC20',
379
378
  'TRC20': 'TRC20',
380
379
  'TRX(TRC20)': 'TRC20',
381
- 'BEP20': 'BEP20',
382
380
  'ArbitrumOne': 'ARB', # todo check
383
- 'Optimism': 'OPTIMISM',
384
- 'LTC': 'LTC',
385
- 'BCH': 'BCH',
386
- 'ETC': 'ETC',
387
- 'SOL': 'SOL',
388
- 'NEO3': 'NEO3',
389
- 'stacks': 'STX',
390
- 'Elrond': 'EGLD',
391
- 'NEARProtocol': 'NEAR',
392
- 'AcalaToken': 'ACA',
393
- 'Klaytn': 'KLAY',
394
- 'Fantom': 'FTM',
395
- 'Terra': 'TERRA',
396
- 'WAVES': 'WAVES',
397
- 'TAO': 'TAO',
398
- 'SUI': 'SUI',
399
- 'SEI': 'SEI',
400
381
  'THORChain': 'RUNE', # todo check
401
- 'ZIL': 'ZIL',
402
382
  'Solar': 'SXP', # todo check
403
- 'FET': 'FET',
404
383
  'C-Chain': 'AVAX', # todo check
405
- 'XRP': 'XRP',
406
- 'EOS': 'EOS',
407
- 'DOGECOIN': 'DOGE',
408
384
  'CAP20': 'CAP20', # todo check
409
- 'Polygon': 'MATIC',
410
- 'CSPR': 'CSPR',
411
- 'Moonbeam': 'GLMR',
412
- 'MINA': 'MINA',
413
385
  'CFXeSpace': 'CFX', # todo check
414
386
  'CFX': 'CFX',
415
387
  'StratisEVM': 'STRAT', # todo check
416
- 'Celestia': 'TIA',
417
388
  'ChilizChain': 'ChilizChain', # todo check
418
- 'Aptos': 'APT',
419
- 'Ontology': 'ONT',
420
- 'ICP': 'ICP',
421
- 'Cardano': 'ADA',
422
- 'FIL': 'FIL',
423
- 'CELO': 'CELO',
424
- 'DOT': 'DOT',
425
389
  'StellarLumens': 'XLM', # todo check
426
- 'ATOM': 'ATOM',
427
390
  'CronosChain': 'CRO', # todo check
428
391
  },
429
392
  },
393
+ 'features': {
394
+ 'default': {
395
+ 'sandbox': False,
396
+ 'createOrder': {
397
+ 'marginMode': False,
398
+ 'triggerPrice': True,
399
+ 'triggerPriceType': {
400
+ 'last': True,
401
+ 'mark': True,
402
+ 'index': False,
403
+ },
404
+ 'triggerDirection': False,
405
+ 'stopLossPrice': False, # todo
406
+ 'takeProfitPrice': False, # todo
407
+ 'attachedStopLossTakeProfit': None,
408
+ 'timeInForce': {
409
+ 'IOC': True,
410
+ 'FOK': True,
411
+ 'PO': True,
412
+ 'GTD': False,
413
+ },
414
+ 'hedged': False,
415
+ 'trailing': False,
416
+ 'leverage': False,
417
+ 'marketBuyByCost': True,
418
+ 'marketBuyRequiresPrice': False,
419
+ 'selfTradePrevention': False,
420
+ 'iceberg': False,
421
+ },
422
+ 'createOrders': {
423
+ 'max': 50,
424
+ },
425
+ 'fetchMyTrades': {
426
+ 'marginMode': False,
427
+ 'limit': 500,
428
+ 'daysBack': 100000, # todo implement
429
+ 'untilDays': 100000, # todo implement
430
+ 'symbolRequired': True,
431
+ },
432
+ 'fetchOrder': {
433
+ 'marginMode': False,
434
+ 'trigger': False,
435
+ 'trailing': False,
436
+ 'symbolRequired': False,
437
+ },
438
+ 'fetchOpenOrders': {
439
+ 'marginMode': False,
440
+ 'limit': 100,
441
+ 'trigger': True,
442
+ 'trailing': False,
443
+ 'marketType': True,
444
+ 'symbolRequired': False,
445
+ },
446
+ 'fetchOrders': None,
447
+ 'fetchClosedOrders': None, # todo implement
448
+ 'fetchOHLCV': {
449
+ 'limit': 1000,
450
+ },
451
+ },
452
+ 'spot': {
453
+ 'extends': 'default',
454
+ },
455
+ 'forDerivatives': {
456
+ 'extends': 'default',
457
+ 'createOrder': {
458
+ # todo check
459
+ 'attachedStopLossTakeProfit': {
460
+ 'triggerPriceType': None,
461
+ 'price': False,
462
+ },
463
+ },
464
+ 'fetchMyTrades': {
465
+ 'limit': 100,
466
+ },
467
+ },
468
+ 'swap': {
469
+ 'linear': {
470
+ 'extends': 'forDerivatives',
471
+ },
472
+ 'inverse': {
473
+ 'extends': 'forDerivatives',
474
+ },
475
+ },
476
+ 'future': {
477
+ 'linear': None,
478
+ 'inverse': None,
479
+ },
480
+ },
430
481
  'commonCurrencies': {},
431
482
  'exceptions': {
432
483
  'exact': {
@@ -498,7 +549,7 @@ class coincatch(Exchange, ImplicitAPI):
498
549
  else:
499
550
  return cost
500
551
 
501
- async def fetch_time(self, params={}):
552
+ async def fetch_time(self, params={}) -> Int:
502
553
  """
503
554
  fetches the current integer timestamp in milliseconds from the exchange server
504
555
 
@@ -567,75 +618,125 @@ class coincatch(Exchange, ImplicitAPI):
567
618
  currencyId = self.safe_string(currecy, 'coinName')
568
619
  currenciesIds.append(currencyId)
569
620
  code = self.safe_currency_code(currencyId)
570
- allowDeposit = False
571
- allowWithdraw = False
572
- minDeposit: Str = None
573
- minWithdraw: Str = None
574
621
  networks = self.safe_list(currecy, 'chains')
575
- networksById = self.safe_dict(self.options, 'networksById')
576
622
  parsedNetworks: dict = {}
577
623
  for j in range(0, len(networks)):
578
624
  network = networks[j]
579
625
  networkId = self.safe_string(network, 'chain')
580
- networkName = self.safe_string(networksById, networkId, networkId)
581
- networkDepositString = self.safe_string(network, 'rechargeable')
582
- networkDeposit = networkDepositString == 'true'
583
- networkWithdrawString = self.safe_string(network, 'withdrawable')
584
- networkWithdraw = networkWithdrawString == 'true'
585
- networkMinDeposit = self.safe_string(network, 'minDepositAmount')
586
- networkMinWithdraw = self.safe_string(network, 'minWithdrawAmount')
626
+ networkCode = self.network_code_to_id(networkId)
587
627
  parsedNetworks[networkId] = {
588
628
  'id': networkId,
589
- 'network': networkName,
629
+ 'network': networkCode,
590
630
  'limits': {
591
631
  'deposit': {
592
- 'min': self.parse_number(networkMinDeposit),
632
+ 'min': self.safe_number(network, 'minDepositAmount'),
593
633
  'max': None,
594
634
  },
595
635
  'withdraw': {
596
- 'min': self.parse_number(networkMinWithdraw),
636
+ 'min': self.safe_number(network, 'minWithdrawAmount'),
597
637
  'max': None,
598
638
  },
599
639
  },
600
- 'active': networkDeposit and networkWithdraw,
601
- 'deposit': networkDeposit,
602
- 'withdraw': networkWithdraw,
640
+ 'active': None,
641
+ 'deposit': self.safe_string(network, 'rechargeable') == 'true',
642
+ 'withdraw': self.safe_string(network, 'withdrawable') == 'true',
603
643
  'fee': self.safe_number(network, 'withdrawFee'),
604
644
  'precision': None,
605
645
  'info': network,
606
646
  }
607
- allowDeposit = allowDeposit if allowDeposit else networkDeposit
608
- allowWithdraw = allowWithdraw if allowWithdraw else networkWithdraw
609
- minDeposit = Precise.string_min(networkMinDeposit, minDeposit) if minDeposit else networkMinDeposit
610
- minWithdraw = Precise.string_min(networkMinWithdraw, minWithdraw) if minWithdraw else networkMinWithdraw
611
- result[code] = {
647
+ result[code] = self.safe_currency_structure({
612
648
  'id': currencyId,
613
649
  'numericId': self.safe_integer(currecy, 'coinId'),
614
650
  'code': code,
615
651
  'precision': None,
616
652
  'type': None,
617
653
  'name': None,
618
- 'active': allowWithdraw and allowDeposit,
619
- 'deposit': allowDeposit,
620
- 'withdraw': allowWithdraw,
654
+ 'active': None,
655
+ 'deposit': None,
656
+ 'withdraw': None,
621
657
  'fee': None,
622
658
  'limits': {
623
659
  'deposit': {
624
- 'min': self.parse_number(minDeposit),
660
+ 'min': None,
625
661
  'max': None,
626
662
  },
627
663
  'withdraw': {
628
- 'min': self.parse_number(minWithdraw),
664
+ 'min': None,
629
665
  'max': None,
630
666
  },
631
667
  },
632
668
  'networks': parsedNetworks,
633
669
  'info': currecy,
634
- }
670
+ })
635
671
  if self.safe_list(self.options, 'currencyIdsListForParseMarket') is None:
636
672
  self.options['currencyIdsListForParseMarket'] = currenciesIds
637
673
  return result
638
674
 
675
+ async def fetch_deposit_withdraw_fees(self, codes: Strings = None, params={}):
676
+ """
677
+ fetch deposit and withdraw fees
678
+
679
+ https://coincatch.github.io/github.io/en/spot/#get-coin-list
680
+
681
+ :param str[] [codes]: list of unified currency codes
682
+ :param dict [params]: extra parameters specific to the exchange API endpoint
683
+ :returns dict: a list of `fee structures <https://docs.ccxt.com/#/?id=fee-structure>`
684
+ """
685
+ await self.load_markets()
686
+ response = await self.publicGetApiSpotV1PublicCurrencies(params)
687
+ data = self.safe_list(response, 'data', [])
688
+ return self.parse_deposit_withdraw_fees(data, codes, 'coinName')
689
+
690
+ def parse_deposit_withdraw_fee(self, fee, currency: Currency = None):
691
+ #
692
+ # {
693
+ # "coinId":"1",
694
+ # "coinName":"BTC",
695
+ # "transfer":"true",
696
+ # "chains":[
697
+ # {
698
+ # "chain":null,
699
+ # "needTag":"false",
700
+ # "withdrawable":"true",
701
+ # "rechargeAble":"true",
702
+ # "withdrawFee":"0.005",
703
+ # "depositConfirm":"1",
704
+ # "withdrawConfirm":"1",
705
+ # "minDepositAmount":"0.001",
706
+ # "minWithdrawAmount":"0.001",
707
+ # "browserUrl":"https://blockchair.com/bitcoin/testnet/transaction/"
708
+ # }
709
+ # ]
710
+ # }
711
+ #
712
+ chains = self.safe_list(fee, 'chains', [])
713
+ chainsLength = len(chains)
714
+ result: dict = {
715
+ 'info': fee,
716
+ 'withdraw': {
717
+ 'fee': None,
718
+ 'percentage': None,
719
+ },
720
+ 'deposit': {
721
+ 'fee': None,
722
+ 'percentage': None,
723
+ },
724
+ 'networks': {},
725
+ }
726
+ for i in range(0, chainsLength):
727
+ chain = chains[i]
728
+ networkId = self.safe_string(chain, 'chain')
729
+ currencyCode = self.safe_string(currency, 'code')
730
+ networkCode = self.network_id_to_code(networkId, currencyCode)
731
+ result['networks'][networkCode] = {
732
+ 'deposit': {'fee': None, 'percentage': None},
733
+ 'withdraw': {'fee': self.safe_number(chain, 'withdrawFee'), 'percentage': False},
734
+ }
735
+ if chainsLength == 1:
736
+ result['withdraw']['fee'] = self.safe_number(chain, 'withdrawFee')
737
+ result['withdraw']['percentage'] = False
738
+ return result
739
+
639
740
  async def fetch_markets(self, params={}) -> List[Market]:
640
741
  """
641
742
  retrieves data on all markets for the exchange
@@ -848,8 +949,8 @@ class coincatch(Exchange, ImplicitAPI):
848
949
  settleId = self.safe_string(supportMarginCoins, 0)
849
950
  settle = self.safe_currency_code(settleId)
850
951
  suffix = ':' + settle
851
- isLinear = baseId == settleId # todo check
852
- isInverse = quoteId == settleId # todo check
952
+ isLinear = quoteId == settleId # todo check
953
+ isInverse = baseId == settleId # todo check
853
954
  if isLinear:
854
955
  subType = 'linear'
855
956
  elif isInverse:
@@ -1984,7 +2085,7 @@ class coincatch(Exchange, ImplicitAPI):
1984
2085
  data = self.safe_list(response, 'data', [])
1985
2086
  return self.parse_transactions(data, currency, since, limit)
1986
2087
 
1987
- async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
2088
+ async def withdraw(self, code: str, amount: float, address: str, tag: Str = None, params={}) -> Transaction:
1988
2089
  """
1989
2090
  make a withdrawal
1990
2091
 
@@ -2528,8 +2629,7 @@ class coincatch(Exchange, ImplicitAPI):
2528
2629
  """
2529
2630
  create a list of trade orders(all orders should be of the same symbol)
2530
2631
 
2531
- https://hashkeyglobal-apidoc.readme.io/reference/create-multiple-orders
2532
- https://hashkeyglobal-apidoc.readme.io/reference/batch-create-new-futures-order
2632
+ https://coincatch.github.io/github.io/en/spot/#batch-order
2533
2633
 
2534
2634
  :param Array orders: list of orders to create, each object should contain the parameters required by createOrder, namely symbol, type, side, amount, price and params(max 50 entries)
2535
2635
  :param dict [params]: extra parameters specific to the api endpoint
@@ -3907,7 +4007,6 @@ class coincatch(Exchange, ImplicitAPI):
3907
4007
  'amount': amount,
3908
4008
  'filled': self.safe_string_2(order, 'fillQuantity', 'filledQty'),
3909
4009
  'remaining': None,
3910
- 'stopPrice': None,
3911
4010
  'triggerPrice': triggerPrice,
3912
4011
  'takeProfitPrice': takeProfitPrice,
3913
4012
  'stopLossPrice': stopLossPrice,
@@ -4348,7 +4447,7 @@ class coincatch(Exchange, ImplicitAPI):
4348
4447
  data = self.safe_dict(response, 'data', {})
4349
4448
  return self.parse_leverage(data, market)
4350
4449
 
4351
- async def set_leverage(self, leverage: Int, symbol: Str = None, params={}):
4450
+ async def set_leverage(self, leverage: int, symbol: Str = None, params={}):
4352
4451
  """
4353
4452
  set the level of leverage for a market
4354
4453
 
@@ -4783,7 +4882,7 @@ class coincatch(Exchange, ImplicitAPI):
4783
4882
  :param str [params.business]: *swap only*
4784
4883
  :param str [params.lastEndId]: *swap only*
4785
4884
  :param bool [params.next]: *swap only*
4786
- :returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger-structure>`
4885
+ :returns dict: a `ledger structure <https://docs.ccxt.com/#/?id=ledger>`
4787
4886
  """
4788
4887
  methodName = 'fetchLedger'
4789
4888
  await self.load_markets()