ccxt-ir 4.3.46.0.3__py2.py3-none-any.whl → 4.5.1__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 (529) hide show
  1. ccxt/__init__.py +39 -35
  2. ccxt/abantether.py +8 -8
  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 +8 -8
  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 +8 -8
  68. ccxt/async_support/afratether.py +10 -10
  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 +32 -38
  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 +32 -27
  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 +34 -30
  183. ccxt/async_support/sarmayex.py +9 -9
  184. ccxt/async_support/sarrafex.py +13 -13
  185. ccxt/async_support/tabdeal.py +15 -14
  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 +30 -36
  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 +29 -24
  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 +32 -28
  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 +13 -12
  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.3.dist-info → ccxt_ir-4.5.1.dist-info}/METADATA +225 -73
  435. ccxt_ir-4.5.1.dist-info/RECORD +743 -0
  436. {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.1.dist-info}/WHEEL +1 -1
  437. ccxt/__test__.py +0 -7
  438. ccxt/abstract/ace.py +0 -15
  439. ccxt/abstract/bitbay.py +0 -53
  440. ccxt/abstract/bitcoincom.py +0 -115
  441. ccxt/abstract/bitfinex2.py +0 -139
  442. ccxt/abstract/bitpanda.py +0 -35
  443. ccxt/abstract/bl3p.py +0 -19
  444. ccxt/abstract/coinlist.py +0 -54
  445. ccxt/abstract/currencycom.py +0 -68
  446. ccxt/abstract/hitbtc3.py +0 -115
  447. ccxt/abstract/idex.py +0 -26
  448. ccxt/abstract/kuna.py +0 -182
  449. ccxt/abstract/lykke.py +0 -29
  450. ccxt/abstract/poloniexfutures.py +0 -48
  451. ccxt/abstract/wazirx.py +0 -30
  452. ccxt/ace.py +0 -1012
  453. ccxt/async_support/ace.py +0 -1012
  454. ccxt/async_support/base/ws/aiohttp_client.py +0 -125
  455. ccxt/async_support/base/ws/fast_client.py +0 -96
  456. ccxt/async_support/bitbay.py +0 -17
  457. ccxt/async_support/bitcoincom.py +0 -17
  458. ccxt/async_support/bitfinex2.py +0 -3552
  459. ccxt/async_support/bitpanda.py +0 -16
  460. ccxt/async_support/bl3p.py +0 -485
  461. ccxt/async_support/coinlist.py +0 -2243
  462. ccxt/async_support/currencycom.py +0 -1950
  463. ccxt/async_support/hitbtc3.py +0 -16
  464. ccxt/async_support/idex.py +0 -1766
  465. ccxt/async_support/kuna.py +0 -1841
  466. ccxt/async_support/lykke.py +0 -1270
  467. ccxt/async_support/poloniexfutures.py +0 -1717
  468. ccxt/async_support/wazirx.py +0 -1224
  469. ccxt/bitbay.py +0 -17
  470. ccxt/bitcoincom.py +0 -17
  471. ccxt/bitfinex2.py +0 -3552
  472. ccxt/bitpanda.py +0 -16
  473. ccxt/bl3p.py +0 -485
  474. ccxt/coinlist.py +0 -2243
  475. ccxt/currencycom.py +0 -1950
  476. ccxt/hitbtc3.py +0 -16
  477. ccxt/idex.py +0 -1766
  478. ccxt/kuna.py +0 -1841
  479. ccxt/lykke.py +0 -1270
  480. ccxt/poloniexfutures.py +0 -1717
  481. ccxt/pro/bitcoincom.py +0 -34
  482. ccxt/pro/bitfinex2.py +0 -1083
  483. ccxt/pro/bitpanda.py +0 -15
  484. ccxt/pro/currencycom.py +0 -536
  485. ccxt/pro/idex.py +0 -672
  486. ccxt/pro/poloniexfutures.py +0 -990
  487. ccxt/pro/wazirx.py +0 -749
  488. ccxt/test/base/__init__.py +0 -29
  489. ccxt/test/base/test_account.py +0 -26
  490. ccxt/test/base/test_balance.py +0 -56
  491. ccxt/test/base/test_borrow_interest.py +0 -35
  492. ccxt/test/base/test_borrow_rate.py +0 -32
  493. ccxt/test/base/test_calculate_fee.py +0 -51
  494. ccxt/test/base/test_crypto.py +0 -127
  495. ccxt/test/base/test_currency.py +0 -76
  496. ccxt/test/base/test_datetime.py +0 -109
  497. ccxt/test/base/test_decimal_to_precision.py +0 -392
  498. ccxt/test/base/test_deep_extend.py +0 -68
  499. ccxt/test/base/test_deposit_withdrawal.py +0 -50
  500. ccxt/test/base/test_exchange_datetime_functions.py +0 -76
  501. ccxt/test/base/test_funding_rate_history.py +0 -29
  502. ccxt/test/base/test_last_price.py +0 -31
  503. ccxt/test/base/test_ledger_entry.py +0 -45
  504. ccxt/test/base/test_ledger_item.py +0 -48
  505. ccxt/test/base/test_leverage_tier.py +0 -33
  506. ccxt/test/base/test_liquidation.py +0 -50
  507. ccxt/test/base/test_margin_mode.py +0 -24
  508. ccxt/test/base/test_margin_modification.py +0 -35
  509. ccxt/test/base/test_market.py +0 -193
  510. ccxt/test/base/test_number.py +0 -411
  511. ccxt/test/base/test_ohlcv.py +0 -33
  512. ccxt/test/base/test_open_interest.py +0 -32
  513. ccxt/test/base/test_order.py +0 -64
  514. ccxt/test/base/test_order_book.py +0 -69
  515. ccxt/test/base/test_position.py +0 -60
  516. ccxt/test/base/test_shared_methods.py +0 -353
  517. ccxt/test/base/test_status.py +0 -24
  518. ccxt/test/base/test_throttle.py +0 -126
  519. ccxt/test/base/test_ticker.py +0 -92
  520. ccxt/test/base/test_trade.py +0 -47
  521. ccxt/test/base/test_trading_fee.py +0 -26
  522. ccxt/test/base/test_transaction.py +0 -39
  523. ccxt/test/test_async.py +0 -1649
  524. ccxt/test/test_sync.py +0 -1648
  525. ccxt/wazirx.py +0 -1224
  526. ccxt_ir-4.3.46.0.3.dist-info/RECORD +0 -773
  527. /ccxt/abstract/{huobijp.py → bittrade.py} +0 -0
  528. {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.1.dist-info/licenses}/LICENSE.txt +0 -0
  529. {ccxt_ir-4.3.46.0.3.dist-info → ccxt_ir-4.5.1.dist-info}/top_level.txt +0 -0
@@ -5,16 +5,18 @@
5
5
 
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.independentreserve import ImplicitAPI
8
+ import asyncio
8
9
  import hashlib
9
- from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Ticker, Trade, TradingFees
10
+ from ccxt.base.types import Any, Balances, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Ticker, Trade, TradingFees, Transaction
10
11
  from typing import List
12
+ from ccxt.base.errors import BadRequest
11
13
  from ccxt.base.decimal_to_precision import TICK_SIZE
12
14
  from ccxt.base.precise import Precise
13
15
 
14
16
 
15
17
  class independentreserve(Exchange, ImplicitAPI):
16
18
 
17
- def describe(self):
19
+ def describe(self) -> Any:
18
20
  return self.deep_extend(super(independentreserve, self).describe(), {
19
21
  'id': 'independentreserve',
20
22
  'name': 'Independent Reserve',
@@ -29,6 +31,9 @@ class independentreserve(Exchange, ImplicitAPI):
29
31
  'future': False,
30
32
  'option': False,
31
33
  'addMargin': False,
34
+ 'borrowCrossMargin': False,
35
+ 'borrowIsolatedMargin': False,
36
+ 'borrowMargin': False,
32
37
  'cancelOrder': True,
33
38
  'closeAllPositions': False,
34
39
  'closePosition': False,
@@ -37,9 +42,14 @@ class independentreserve(Exchange, ImplicitAPI):
37
42
  'createStopLimitOrder': False,
38
43
  'createStopMarketOrder': False,
39
44
  'createStopOrder': False,
45
+ 'fetchAllGreeks': False,
40
46
  'fetchBalance': True,
47
+ 'fetchBorrowInterest': False,
48
+ 'fetchBorrowRate': False,
41
49
  'fetchBorrowRateHistories': False,
42
50
  'fetchBorrowRateHistory': False,
51
+ 'fetchBorrowRates': False,
52
+ 'fetchBorrowRatesPerSymbol': False,
43
53
  'fetchClosedOrders': True,
44
54
  'fetchCrossBorrowRate': False,
45
55
  'fetchCrossBorrowRates': False,
@@ -47,38 +57,66 @@ class independentreserve(Exchange, ImplicitAPI):
47
57
  'fetchDepositAddresses': False,
48
58
  'fetchDepositAddressesByNetwork': False,
49
59
  'fetchFundingHistory': False,
60
+ 'fetchFundingInterval': False,
61
+ 'fetchFundingIntervals': False,
50
62
  'fetchFundingRate': False,
51
63
  'fetchFundingRateHistory': False,
52
64
  'fetchFundingRates': False,
65
+ 'fetchGreeks': False,
53
66
  'fetchIndexOHLCV': False,
54
67
  'fetchIsolatedBorrowRate': False,
55
68
  'fetchIsolatedBorrowRates': False,
69
+ 'fetchIsolatedPositions': False,
56
70
  'fetchLeverage': False,
71
+ 'fetchLeverages': False,
57
72
  'fetchLeverageTiers': False,
73
+ 'fetchLiquidations': False,
74
+ 'fetchLongShortRatio': False,
75
+ 'fetchLongShortRatioHistory': False,
76
+ 'fetchMarginAdjustmentHistory': False,
58
77
  'fetchMarginMode': False,
78
+ 'fetchMarginModes': False,
79
+ 'fetchMarketLeverageTiers': False,
59
80
  'fetchMarkets': True,
60
81
  'fetchMarkOHLCV': False,
82
+ 'fetchMarkPrice': False,
83
+ 'fetchMarkPrices': False,
84
+ 'fetchMyLiquidations': False,
85
+ 'fetchMySettlementHistory': False,
61
86
  'fetchMyTrades': True,
87
+ 'fetchOpenInterest': False,
62
88
  'fetchOpenInterestHistory': False,
89
+ 'fetchOpenInterests': False,
63
90
  'fetchOpenOrders': True,
91
+ 'fetchOption': False,
92
+ 'fetchOptionChain': False,
64
93
  'fetchOrder': True,
65
94
  'fetchOrderBook': True,
66
95
  'fetchPosition': False,
96
+ 'fetchPositionForSymbolWs': False,
67
97
  'fetchPositionHistory': False,
68
98
  'fetchPositionMode': False,
69
99
  'fetchPositions': False,
70
100
  'fetchPositionsForSymbol': False,
101
+ 'fetchPositionsForSymbolWs': False,
71
102
  'fetchPositionsHistory': False,
72
103
  'fetchPositionsRisk': False,
73
104
  'fetchPremiumIndexOHLCV': False,
105
+ 'fetchSettlementHistory': False,
74
106
  'fetchTicker': True,
75
107
  'fetchTrades': True,
76
108
  'fetchTradingFee': False,
77
109
  'fetchTradingFees': True,
110
+ 'fetchUnderlyingAssets': False,
111
+ 'fetchVolatilityHistory': False,
78
112
  'reduceMargin': False,
113
+ 'repayCrossMargin': False,
114
+ 'repayIsolatedMargin': False,
79
115
  'setLeverage': False,
116
+ 'setMargin': False,
80
117
  'setMarginMode': False,
81
118
  'setPositionMode': False,
119
+ 'withdraw': True,
82
120
  },
83
121
  'urls': {
84
122
  'logo': 'https://user-images.githubusercontent.com/51840849/87182090-1e9e9080-c2ec-11ea-8e49-563db9a38f37.jpg',
@@ -105,7 +143,10 @@ class independentreserve(Exchange, ImplicitAPI):
105
143
  'GetRecentTrades',
106
144
  'GetFxRates',
107
145
  'GetOrderMinimumVolumes',
108
- 'GetCryptoWithdrawalFees',
146
+ 'GetCryptoWithdrawalFees', # deprecated - replaced by GetCryptoWithdrawalFees2(docs removed)
147
+ 'GetCryptoWithdrawalFees2',
148
+ 'GetNetworks',
149
+ 'GetPrimaryCurrencyConfig2',
109
150
  ],
110
151
  },
111
152
  'private': {
@@ -117,8 +158,10 @@ class independentreserve(Exchange, ImplicitAPI):
117
158
  'GetAccounts',
118
159
  'GetTransactions',
119
160
  'GetFiatBankAccounts',
120
- 'GetDigitalCurrencyDepositAddress',
121
- 'GetDigitalCurrencyDepositAddresses',
161
+ 'GetDigitalCurrencyDepositAddress', # deprecated - replaced by GetDigitalCurrencyDepositAddress2(docs removed)
162
+ 'GetDigitalCurrencyDepositAddress2',
163
+ 'GetDigitalCurrencyDepositAddresses', # deprecated - replaced by GetDigitalCurrencyDepositAddresses2(docs removed)
164
+ 'GetDigitalCurrencyDepositAddresses2',
122
165
  'GetTrades',
123
166
  'GetBrokerageFees',
124
167
  'GetDigitalCurrencyWithdrawal',
@@ -128,7 +171,8 @@ class independentreserve(Exchange, ImplicitAPI):
128
171
  'SynchDigitalCurrencyDepositAddressWithBlockchain',
129
172
  'RequestFiatWithdrawal',
130
173
  'WithdrawFiatCurrency',
131
- 'WithdrawDigitalCurrency',
174
+ 'WithdrawDigitalCurrency', # deprecated - replaced by WithdrawCrypto(docs removed)
175
+ 'WithdrawCrypto',
132
176
  ],
133
177
  },
134
178
  },
@@ -140,10 +184,132 @@ class independentreserve(Exchange, ImplicitAPI):
140
184
  'tierBased': False,
141
185
  },
142
186
  },
187
+ 'features': {
188
+ 'spot': {
189
+ 'sandbox': False,
190
+ 'createOrder': {
191
+ 'marginMode': False,
192
+ 'triggerPrice': False,
193
+ 'triggerPriceType': None,
194
+ 'triggerDirection': False,
195
+ 'stopLossPrice': False,
196
+ 'takeProfitPrice': False,
197
+ 'attachedStopLossTakeProfit': None,
198
+ 'timeInForce': {
199
+ 'IOC': False,
200
+ 'FOK': False,
201
+ 'PO': False,
202
+ 'GTD': False,
203
+ },
204
+ 'hedged': False,
205
+ 'selfTradePrevention': False,
206
+ 'trailing': False,
207
+ 'leverage': False,
208
+ 'marketBuyByCost': False,
209
+ 'marketBuyRequiresPrice': False,
210
+ 'iceberg': False,
211
+ },
212
+ 'createOrders': None,
213
+ 'fetchMyTrades': {
214
+ 'marginMode': False,
215
+ 'limit': 100, # todo
216
+ 'daysBack': None,
217
+ 'untilDays': None,
218
+ 'symbolRequired': False,
219
+ },
220
+ 'fetchOrder': {
221
+ 'marginMode': False,
222
+ 'trigger': False,
223
+ 'trailing': False,
224
+ 'symbolRequired': False,
225
+ },
226
+ 'fetchOpenOrders': {
227
+ 'marginMode': False,
228
+ 'limit': 100, # todo
229
+ 'trigger': False,
230
+ 'trailing': False,
231
+ 'symbolRequired': False,
232
+ },
233
+ 'fetchOrders': None,
234
+ 'fetchClosedOrders': {
235
+ 'marginMode': False,
236
+ 'limit': 100, # todo
237
+ 'daysBack': None,
238
+ 'daysBackCanceled': None,
239
+ 'untilDays': None,
240
+ 'trigger': False,
241
+ 'trailing': False,
242
+ 'symbolRequired': False,
243
+ },
244
+ 'fetchOHLCV': None,
245
+ },
246
+ 'swap': {
247
+ 'linear': None,
248
+ 'inverse': None,
249
+ },
250
+ 'future': {
251
+ 'linear': None,
252
+ 'inverse': None,
253
+ },
254
+ },
143
255
  'commonCurrencies': {
144
256
  'PLA': 'PlayChip',
145
257
  },
146
258
  'precisionMode': TICK_SIZE,
259
+ 'options': {
260
+ 'defaultNetworks': {
261
+ 'USDT': 'Ethereum',
262
+ 'USDC': 'Ethereum',
263
+ 'BTC': 'Bitcoin',
264
+ 'BCH': 'BitcoinCash',
265
+ 'ETH': 'Ethereum',
266
+ 'LTC': 'Litecoin',
267
+ 'XRP': 'XrpLedger',
268
+ 'ZRX': 'Ethereum',
269
+ 'EOS': 'EosIo',
270
+ 'XLM': 'Stellar',
271
+ 'BAT': 'Ethereum',
272
+ 'ETC': 'EthereumClassic',
273
+ 'LINK': 'Ethereum',
274
+ 'MKR': 'Ethereum',
275
+ 'DAI': 'Ethereum',
276
+ 'COMP': 'Ethereum',
277
+ 'SNX': 'Ethereum',
278
+ 'YFI': 'Ethereum',
279
+ 'AAVE': 'Ethereum',
280
+ 'GRT': 'Ethereum',
281
+ 'DOT': 'Polkadot',
282
+ 'UNI': 'Ethereum',
283
+ 'ADA': 'Cardano',
284
+ 'MATIC': 'Ethereum',
285
+ 'DOGE': 'Dogecoin',
286
+ 'SOL': 'Solana',
287
+ 'MANA': 'Ethereum',
288
+ 'SAND': 'Ethereum',
289
+ 'SHIB': 'Ethereum',
290
+ 'TRX': 'Tron',
291
+ 'RENDER': 'Solana',
292
+ 'WIF': 'Solana',
293
+ 'RLUSD': 'Ethereum',
294
+ 'PEPE': 'Ethereum',
295
+ },
296
+ 'networks': {
297
+ 'BTC': 'Bitcoin',
298
+ 'ETH': 'Ethereum',
299
+ 'BCH': 'BitcoinCash',
300
+ 'LTC': 'Litecoin',
301
+ 'XRP': 'XrpLedger',
302
+ 'EOS': 'EosIo',
303
+ 'XLM': 'Stellar',
304
+ 'ETC': 'EthereumClassic',
305
+ 'BSV': 'BitcoinSV',
306
+ 'DOGE': 'Dogecoin',
307
+ 'DOT': 'Polkadot',
308
+ 'ADA': 'Cardano',
309
+ 'SOL': 'Solana',
310
+ 'TRX': 'Tron',
311
+ },
312
+ },
147
313
  })
148
314
 
149
315
  async def fetch_markets(self, params={}) -> List[Market]:
@@ -152,11 +318,12 @@ class independentreserve(Exchange, ImplicitAPI):
152
318
  :param dict [params]: extra parameters specific to the exchange API endpoint
153
319
  :returns dict[]: an array of objects representing market data
154
320
  """
155
- baseCurrencies = await self.publicGetGetValidPrimaryCurrencyCodes(params)
321
+ baseCurrenciesPromise = self.publicGetGetValidPrimaryCurrencyCodes(params)
156
322
  # ['Xbt', 'Eth', 'Usdt', ...]
157
- quoteCurrencies = await self.publicGetGetValidSecondaryCurrencyCodes(params)
323
+ quoteCurrenciesPromise = self.publicGetGetValidSecondaryCurrencyCodes(params)
158
324
  # ['Aud', 'Usd', 'Nzd', 'Sgd']
159
- limits = await self.publicGetGetOrderMinimumVolumes(params)
325
+ limitsPromise = self.publicGetGetOrderMinimumVolumes(params)
326
+ baseCurrencies, quoteCurrencies, limits = await asyncio.gather(*[baseCurrenciesPromise, quoteCurrenciesPromise, limitsPromise])
160
327
  #
161
328
  # {
162
329
  # "Xbt": 0.0001,
@@ -433,7 +600,6 @@ class independentreserve(Exchange, ImplicitAPI):
433
600
  'postOnly': None,
434
601
  'side': side,
435
602
  'price': self.safe_string(order, 'Price'),
436
- 'stopPrice': None,
437
603
  'triggerPrice': None,
438
604
  'cost': self.safe_string(order, 'Value'),
439
605
  'average': self.safe_string(order, 'AvgPrice'),
@@ -464,6 +630,7 @@ class independentreserve(Exchange, ImplicitAPI):
464
630
  async def fetch_order(self, id: str, symbol: Str = None, params={}):
465
631
  """
466
632
  fetches information on an order made by the user
633
+ :param str id: order id
467
634
  :param str symbol: unified symbol of the market the order was made in
468
635
  :param dict [params]: extra parameters specific to the exchange API endpoint
469
636
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
@@ -653,7 +820,7 @@ class independentreserve(Exchange, ImplicitAPI):
653
820
  :param str type: 'market' or 'limit'
654
821
  :param str side: 'buy' or 'sell'
655
822
  :param float amount: how much of currency you want to trade in units of base currency
656
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
823
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
657
824
  :param dict [params]: extra parameters specific to the exchange API endpoint
658
825
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
659
826
  """
@@ -681,7 +848,9 @@ class independentreserve(Exchange, ImplicitAPI):
681
848
  async def cancel_order(self, id: str, symbol: Str = None, params={}):
682
849
  """
683
850
  cancels an open order
684
- :see: https://www.independentreserve.com/features/api#CancelOrder
851
+
852
+ https://www.independentreserve.com/features/api#CancelOrder
853
+
685
854
  :param str id: order id
686
855
  :param str symbol: unified symbol of the market the order was made in
687
856
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -709,10 +878,12 @@ class independentreserve(Exchange, ImplicitAPI):
709
878
  #
710
879
  return self.parse_order(response)
711
880
 
712
- async def fetch_deposit_address(self, code: str, params={}):
881
+ async def fetch_deposit_address(self, code: str, params={}) -> DepositAddress:
713
882
  """
714
883
  fetch the deposit address for a currency associated with self account
715
- :see: https://www.independentreserve.com/features/api#GetDigitalCurrencyDepositAddress
884
+
885
+ https://www.independentreserve.com/features/api#GetDigitalCurrencyDepositAddress
886
+
716
887
  :param str code: unified currency code
717
888
  :param dict [params]: extra parameters specific to the exchange API endpoint
718
889
  :returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
@@ -733,7 +904,7 @@ class independentreserve(Exchange, ImplicitAPI):
733
904
  #
734
905
  return self.parse_deposit_address(response)
735
906
 
736
- def parse_deposit_address(self, depositAddress, currency: Currency = None):
907
+ def parse_deposit_address(self, depositAddress, currency: Currency = None) -> DepositAddress:
737
908
  #
738
909
  # {
739
910
  # Tag: '3307446684',
@@ -747,9 +918,111 @@ class independentreserve(Exchange, ImplicitAPI):
747
918
  return {
748
919
  'info': depositAddress,
749
920
  'currency': self.safe_string(currency, 'code'),
921
+ 'network': None,
750
922
  'address': address,
751
923
  'tag': self.safe_string(depositAddress, 'Tag'),
924
+ }
925
+
926
+ async def withdraw(self, code: str, amount: float, address: str, tag: Str = None, params={}) -> Transaction:
927
+ """
928
+ make a withdrawal
929
+
930
+ https://www.independentreserve.com/features/api#WithdrawDigitalCurrency
931
+
932
+ :param str code: unified currency code
933
+ :param float amount: the amount to withdraw
934
+ :param str address: the address to withdraw to
935
+ :param str tag:
936
+ :param dict [params]: extra parameters specific to the exchange API endpoint
937
+
938
+ EXCHANGE SPECIFIC PARAMETERS
939
+ :param dict [params.comment]: withdrawal comment, should not exceed 500 characters
940
+ :returns dict: a `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
941
+ """
942
+ tag, params = self.handle_withdraw_tag_and_params(tag, params)
943
+ await self.load_markets()
944
+ currency = self.currency(code)
945
+ request: dict = {
946
+ 'primaryCurrencyCode': currency['id'],
947
+ 'withdrawalAddress': address,
948
+ 'amount': self.currency_to_precision(code, amount),
949
+ }
950
+ if tag is not None:
951
+ request['destinationTag'] = tag
952
+ networkCode = None
953
+ networkCode, params = self.handle_network_code_and_params(params)
954
+ if networkCode is not None:
955
+ raise BadRequest(self.id + ' withdraw() does not accept params["networkCode"]')
956
+ response = await self.privatePostWithdrawDigitalCurrency(self.extend(request, params))
957
+ #
958
+ # {
959
+ # "TransactionGuid": "dc932e19-562b-4c50-821e-a73fd048b93b",
960
+ # "PrimaryCurrencyCode": "Bch",
961
+ # "CreatedTimestampUtc": "2020-04-01T05:26:30.5093622+00:00",
962
+ # "Amount": {
963
+ # "Total": 0.1231,
964
+ # "Fee": 0.0001
965
+ # },
966
+ # "Destination": {
967
+ # "Address": "bc1qhpqxkjpvgkckw530yfmxyr53c94q8f4273a7ez",
968
+ # "Tag": null
969
+ # },
970
+ # "Status": "Pending",
971
+ # "Transaction": null
972
+ # }
973
+ #
974
+ return self.parse_transaction(response, currency)
975
+
976
+ def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
977
+ #
978
+ # {
979
+ # "TransactionGuid": "dc932e19-562b-4c50-821e-a73fd048b93b",
980
+ # "PrimaryCurrencyCode": "Bch",
981
+ # "CreatedTimestampUtc": "2020-04-01T05:26:30.5093622+00:00",
982
+ # "Amount": {
983
+ # "Total": 0.1231,
984
+ # "Fee": 0.0001
985
+ # },
986
+ # "Destination": {
987
+ # "Address": "bc1qhpqxkjpvgkckw530yfmxyr53c94q8f4273a7ez",
988
+ # "Tag": null
989
+ # },
990
+ # "Status": "Pending",
991
+ # "Transaction": null
992
+ # }
993
+ #
994
+ amount = self.safe_dict(transaction, 'Amount')
995
+ destination = self.safe_dict(transaction, 'Destination')
996
+ currencyId = self.safe_string(transaction, 'PrimaryCurrencyCode')
997
+ datetime = self.safe_string(transaction, 'CreatedTimestampUtc')
998
+ address = self.safe_string(destination, 'Address')
999
+ tag = self.safe_string(destination, 'Tag')
1000
+ code = self.safe_currency_code(currencyId, currency)
1001
+ return {
1002
+ 'info': transaction,
1003
+ 'id': self.safe_string(transaction, 'TransactionGuid'),
1004
+ 'txid': None,
1005
+ 'type': 'withdraw',
1006
+ 'currency': code,
752
1007
  'network': None,
1008
+ 'amount': self.safe_number(amount, 'Total'),
1009
+ 'status': self.safe_string(transaction, 'Status'),
1010
+ 'timestamp': self.parse8601(datetime),
1011
+ 'datetime': datetime,
1012
+ 'address': address,
1013
+ 'addressFrom': None,
1014
+ 'addressTo': address,
1015
+ 'tag': tag,
1016
+ 'tagFrom': None,
1017
+ 'tagTo': tag,
1018
+ 'updated': None,
1019
+ 'comment': None,
1020
+ 'fee': {
1021
+ 'currency': code,
1022
+ 'cost': self.safe_number(amount, 'Fee'),
1023
+ 'rate': None,
1024
+ },
1025
+ 'internal': False,
753
1026
  }
754
1027
 
755
1028
  def sign(self, path, api='public', method='GET', params={}, headers=None, body=None):