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