ccxt 4.5.55 → 4.5.57

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 (321) hide show
  1. package/README.md +215 -10
  2. package/dist/ccxt.browser.min.js +10 -10
  3. package/dist/cjs/ccxt.js +6 -11
  4. package/dist/cjs/src/aftermath.js +10 -5
  5. package/dist/cjs/src/alpaca.js +2 -2
  6. package/dist/cjs/src/apex.js +26 -17
  7. package/dist/cjs/src/arkham.js +10 -7
  8. package/dist/cjs/src/ascendex.js +8 -5
  9. package/dist/cjs/src/aster.js +7 -4
  10. package/dist/cjs/src/backpack.js +4 -4
  11. package/dist/cjs/src/base/Exchange.js +72 -35
  12. package/dist/cjs/src/base/functions/io.js +25 -0
  13. package/dist/cjs/src/base/functions.js +1 -0
  14. package/dist/cjs/src/bigone.js +10 -7
  15. package/dist/cjs/src/binance.js +196 -198
  16. package/dist/cjs/src/bingx.js +7 -7
  17. package/dist/cjs/src/bitfinex.js +71 -58
  18. package/dist/cjs/src/bitflyer.js +2 -1
  19. package/dist/cjs/src/bitget.js +16 -5
  20. package/dist/cjs/src/bitmart.js +18 -10
  21. package/dist/cjs/src/bitmex.js +8 -5
  22. package/dist/cjs/src/bitopro.js +2 -2
  23. package/dist/cjs/src/bitrue.js +4 -3
  24. package/dist/cjs/src/bitso.js +7 -4
  25. package/dist/cjs/src/bitstamp.js +7 -4
  26. package/dist/cjs/src/bitteam.js +1 -1
  27. package/dist/cjs/src/bittrade.js +2 -2
  28. package/dist/cjs/src/bitvavo.js +457 -34
  29. package/dist/cjs/src/blofin.js +28 -4
  30. package/dist/cjs/src/bullish.js +6 -5
  31. package/dist/cjs/src/bybit.js +19 -17
  32. package/dist/cjs/src/bybiteu.js +1 -0
  33. package/dist/cjs/src/bydfi.js +1 -1
  34. package/dist/cjs/src/cex.js +3 -3
  35. package/dist/cjs/src/coinbase.js +75 -65
  36. package/dist/cjs/src/coinbaseexchange.js +4 -3
  37. package/dist/cjs/src/coinbaseinternational.js +17 -10
  38. package/dist/cjs/src/coinex.js +79 -77
  39. package/dist/cjs/src/coinmetro.js +1 -1
  40. package/dist/cjs/src/coinsph.js +5 -5
  41. package/dist/cjs/src/cryptocom.js +52 -54
  42. package/dist/cjs/src/cryptomus.js +43 -39
  43. package/dist/cjs/src/deepcoin.js +9 -5
  44. package/dist/cjs/src/delta.js +53 -53
  45. package/dist/cjs/src/deribit.js +35 -35
  46. package/dist/cjs/src/derive.js +31 -31
  47. package/dist/cjs/src/digifinex.js +45 -45
  48. package/dist/cjs/src/exmo.js +104 -122
  49. package/dist/cjs/src/extended.js +3497 -0
  50. package/dist/cjs/src/foxbit.js +72 -76
  51. package/dist/cjs/src/gate.js +53 -53
  52. package/dist/cjs/src/gemini.js +45 -45
  53. package/dist/cjs/src/grvt.js +17 -11
  54. package/dist/cjs/src/hashkey.js +56 -58
  55. package/dist/cjs/src/hibachi.js +1 -1
  56. package/dist/cjs/src/hitbtc.js +5 -14
  57. package/dist/cjs/src/hollaex.js +51 -54
  58. package/dist/cjs/src/htx.js +84 -72
  59. package/dist/cjs/src/hyperliquid.js +60 -55
  60. package/dist/cjs/src/indodax.js +4 -3
  61. package/dist/cjs/src/kraken.js +71 -71
  62. package/dist/cjs/src/krakenfutures.js +2 -1
  63. package/dist/cjs/src/kucoin.js +3 -2
  64. package/dist/cjs/src/latoken.js +30 -32
  65. package/dist/cjs/src/lbank.js +64 -60
  66. package/dist/cjs/src/lighter.js +36 -38
  67. package/dist/cjs/src/luno.js +36 -44
  68. package/dist/cjs/src/mercado.js +2 -1
  69. package/dist/cjs/src/mexc.js +72 -63
  70. package/dist/cjs/src/modetrade.js +51 -53
  71. package/dist/cjs/src/ndax.js +35 -37
  72. package/dist/cjs/src/okx.js +23 -5
  73. package/dist/cjs/src/onetrading.js +21 -23
  74. package/dist/cjs/src/p2b.js +8 -4
  75. package/dist/cjs/src/paradex.js +3 -2
  76. package/dist/cjs/src/phemex.js +47 -47
  77. package/dist/cjs/src/poloniex.js +19 -13
  78. package/dist/cjs/src/pro/alpaca.js +1 -1
  79. package/dist/cjs/src/pro/apex.js +11 -2
  80. package/dist/cjs/src/pro/arkham.js +1 -1
  81. package/dist/cjs/src/pro/aster.js +10 -9
  82. package/dist/cjs/src/pro/backpack.js +1 -1
  83. package/dist/cjs/src/pro/binance.js +6 -6
  84. package/dist/cjs/src/pro/bingx.js +7 -2
  85. package/dist/cjs/src/pro/bitget.js +1 -1
  86. package/dist/cjs/src/pro/bithumb.js +1 -1
  87. package/dist/cjs/src/pro/bitmart.js +10 -0
  88. package/dist/cjs/src/pro/bitmex.js +1 -1
  89. package/dist/cjs/src/pro/bitstamp.js +1 -1
  90. package/dist/cjs/src/pro/blockchaincom.js +1 -1
  91. package/dist/cjs/src/pro/bybit.js +1 -1
  92. package/dist/cjs/src/pro/cex.js +1 -1
  93. package/dist/cjs/src/pro/coinex.js +1 -1
  94. package/dist/cjs/src/pro/coinone.js +1 -1
  95. package/dist/cjs/src/pro/cryptocom.js +3 -1
  96. package/dist/cjs/src/pro/dydx.js +1 -1
  97. package/dist/cjs/src/pro/exmo.js +1 -1
  98. package/dist/cjs/src/pro/extended.js +865 -0
  99. package/dist/cjs/src/pro/gate.js +1 -1
  100. package/dist/cjs/src/pro/grvt.js +8 -0
  101. package/dist/cjs/src/pro/htx.js +4 -4
  102. package/dist/cjs/src/pro/independentreserve.js +1 -1
  103. package/dist/cjs/src/pro/krakenfutures.js +16 -4
  104. package/dist/cjs/src/pro/kucoin.js +1 -1
  105. package/dist/cjs/src/pro/luno.js +3 -3
  106. package/dist/cjs/src/pro/modetrade.js +3 -3
  107. package/dist/cjs/src/pro/okx.js +4 -4
  108. package/dist/cjs/src/pro/onetrading.js +1 -1
  109. package/dist/cjs/src/pro/toobit.js +1 -1
  110. package/dist/cjs/src/pro/weex.js +1 -1
  111. package/dist/cjs/src/pro/woo.js +4 -4
  112. package/dist/cjs/src/pro/woofipro.js +3 -3
  113. package/dist/cjs/src/pro/xt.js +1 -1
  114. package/dist/cjs/src/static_dependencies/starknet/utils/hash/classHash.js +7 -7
  115. package/dist/cjs/src/tokocrypto.js +1 -1
  116. package/dist/cjs/src/toobit.js +3 -3
  117. package/dist/cjs/src/upbit.js +3 -3
  118. package/dist/cjs/src/weex.js +57 -62
  119. package/dist/cjs/src/whitebit.js +61 -63
  120. package/dist/cjs/src/woo.js +66 -55
  121. package/dist/cjs/src/woofipro.js +54 -48
  122. package/dist/cjs/src/xt.js +3 -2
  123. package/dist/cjs/src/yobit.js +4 -2
  124. package/dist/cjs/src/zebpay.js +73 -75
  125. package/js/ccxt.d.ts +8 -14
  126. package/js/ccxt.js +6 -10
  127. package/js/src/abstract/bitvavo.d.ts +15 -7
  128. package/js/src/abstract/extended.d.ts +58 -0
  129. package/js/src/abstract/mexc.d.ts +1 -0
  130. package/js/src/aftermath.js +10 -5
  131. package/js/src/alpaca.js +2 -2
  132. package/js/src/apex.d.ts +1 -1
  133. package/js/src/apex.js +26 -17
  134. package/js/src/arkham.js +10 -7
  135. package/js/src/ascendex.js +8 -5
  136. package/js/src/aster.js +7 -4
  137. package/js/src/backpack.js +4 -4
  138. package/js/src/base/Exchange.d.ts +10 -6
  139. package/js/src/base/Exchange.js +72 -35
  140. package/js/src/base/functions/io.d.ts +7 -0
  141. package/js/src/base/functions/io.js +24 -0
  142. package/js/src/bigone.js +10 -7
  143. package/js/src/binance.d.ts +2 -0
  144. package/js/src/binance.js +200 -202
  145. package/js/src/bingx.js +7 -7
  146. package/js/src/bitfinex.d.ts +2 -0
  147. package/js/src/bitfinex.js +71 -58
  148. package/js/src/bitflyer.js +2 -1
  149. package/js/src/bitget.js +16 -5
  150. package/js/src/bitmart.js +18 -10
  151. package/js/src/bitmex.js +8 -5
  152. package/js/src/bitopro.js +2 -2
  153. package/js/src/bitrue.js +4 -3
  154. package/js/src/bitso.js +7 -4
  155. package/js/src/bitstamp.js +7 -4
  156. package/js/src/bitteam.js +1 -1
  157. package/js/src/bittrade.js +2 -2
  158. package/js/src/bitvavo.d.ts +114 -21
  159. package/js/src/bitvavo.js +457 -34
  160. package/js/src/blofin.d.ts +1 -0
  161. package/js/src/blofin.js +28 -4
  162. package/js/src/bullish.js +6 -5
  163. package/js/src/bybit.d.ts +1 -1
  164. package/js/src/bybit.js +19 -17
  165. package/js/src/bybiteu.js +1 -0
  166. package/js/src/bydfi.js +1 -1
  167. package/js/src/cex.js +3 -3
  168. package/js/src/coinbase.d.ts +63 -56
  169. package/js/src/coinbase.js +75 -65
  170. package/js/src/coinbaseexchange.js +4 -3
  171. package/js/src/coinbaseinternational.d.ts +1 -1
  172. package/js/src/coinbaseinternational.js +17 -10
  173. package/js/src/coinex.d.ts +2 -1
  174. package/js/src/coinex.js +79 -77
  175. package/js/src/coinmetro.d.ts +1 -1
  176. package/js/src/coinmetro.js +1 -1
  177. package/js/src/coinsph.js +5 -5
  178. package/js/src/cryptocom.d.ts +1 -0
  179. package/js/src/cryptocom.js +52 -54
  180. package/js/src/cryptomus.d.ts +2 -1
  181. package/js/src/cryptomus.js +43 -39
  182. package/js/src/deepcoin.js +9 -5
  183. package/js/src/delta.d.ts +1 -0
  184. package/js/src/delta.js +53 -53
  185. package/js/src/deribit.d.ts +1 -0
  186. package/js/src/deribit.js +35 -35
  187. package/js/src/derive.d.ts +1 -0
  188. package/js/src/derive.js +31 -31
  189. package/js/src/digifinex.d.ts +1 -0
  190. package/js/src/digifinex.js +45 -45
  191. package/js/src/exmo.d.ts +1 -0
  192. package/js/src/exmo.js +104 -122
  193. package/js/src/extended.d.ts +554 -0
  194. package/js/src/extended.js +3490 -0
  195. package/js/src/foxbit.d.ts +1 -0
  196. package/js/src/foxbit.js +72 -76
  197. package/js/src/gate.d.ts +1 -0
  198. package/js/src/gate.js +53 -53
  199. package/js/src/gemini.d.ts +2 -1
  200. package/js/src/gemini.js +45 -45
  201. package/js/src/grvt.d.ts +1 -1
  202. package/js/src/grvt.js +17 -11
  203. package/js/src/hashkey.d.ts +1 -0
  204. package/js/src/hashkey.js +56 -58
  205. package/js/src/hibachi.d.ts +1 -1
  206. package/js/src/hibachi.js +1 -1
  207. package/js/src/hitbtc.d.ts +0 -1
  208. package/js/src/hitbtc.js +5 -14
  209. package/js/src/hollaex.d.ts +1 -0
  210. package/js/src/hollaex.js +51 -54
  211. package/js/src/htx.d.ts +1 -0
  212. package/js/src/htx.js +84 -72
  213. package/js/src/hyperliquid.d.ts +5 -4
  214. package/js/src/hyperliquid.js +60 -55
  215. package/js/src/indodax.js +4 -3
  216. package/js/src/kraken.d.ts +2 -1
  217. package/js/src/kraken.js +71 -71
  218. package/js/src/krakenfutures.js +2 -1
  219. package/js/src/kucoin.js +3 -2
  220. package/js/src/latoken.d.ts +1 -0
  221. package/js/src/latoken.js +30 -32
  222. package/js/src/lbank.d.ts +1 -0
  223. package/js/src/lbank.js +64 -60
  224. package/js/src/lighter.d.ts +2 -1
  225. package/js/src/lighter.js +36 -38
  226. package/js/src/luno.d.ts +1 -0
  227. package/js/src/luno.js +36 -44
  228. package/js/src/mercado.js +2 -1
  229. package/js/src/mexc.d.ts +4 -3
  230. package/js/src/mexc.js +72 -63
  231. package/js/src/modetrade.d.ts +1 -0
  232. package/js/src/modetrade.js +51 -53
  233. package/js/src/ndax.d.ts +1 -0
  234. package/js/src/ndax.js +35 -37
  235. package/js/src/okx.js +23 -5
  236. package/js/src/onetrading.d.ts +2 -1
  237. package/js/src/onetrading.js +21 -23
  238. package/js/src/p2b.js +8 -4
  239. package/js/src/paradex.js +3 -2
  240. package/js/src/phemex.d.ts +1 -0
  241. package/js/src/phemex.js +47 -47
  242. package/js/src/poloniex.js +19 -13
  243. package/js/src/pro/alpaca.js +1 -1
  244. package/js/src/pro/apex.js +11 -2
  245. package/js/src/pro/arkham.js +1 -1
  246. package/js/src/pro/aster.js +10 -9
  247. package/js/src/pro/backpack.js +1 -1
  248. package/js/src/pro/binance.d.ts +1 -1
  249. package/js/src/pro/binance.js +6 -6
  250. package/js/src/pro/bingx.js +7 -2
  251. package/js/src/pro/bitget.js +1 -1
  252. package/js/src/pro/bithumb.js +1 -1
  253. package/js/src/pro/bitmart.js +10 -0
  254. package/js/src/pro/bitmex.js +1 -1
  255. package/js/src/pro/bitstamp.js +1 -1
  256. package/js/src/pro/blockchaincom.js +1 -1
  257. package/js/src/pro/bybit.js +1 -1
  258. package/js/src/pro/cex.js +1 -1
  259. package/js/src/pro/coinex.js +1 -1
  260. package/js/src/pro/coinone.js +1 -1
  261. package/js/src/pro/cryptocom.js +3 -1
  262. package/js/src/pro/dydx.js +1 -1
  263. package/js/src/pro/exmo.js +1 -1
  264. package/js/src/pro/extended.d.ts +126 -0
  265. package/js/src/pro/extended.js +858 -0
  266. package/js/src/pro/gate.js +1 -1
  267. package/js/src/pro/grvt.js +8 -0
  268. package/js/src/pro/htx.d.ts +4 -4
  269. package/js/src/pro/htx.js +4 -4
  270. package/js/src/pro/independentreserve.js +1 -1
  271. package/js/src/pro/krakenfutures.d.ts +4 -4
  272. package/js/src/pro/krakenfutures.js +16 -4
  273. package/js/src/pro/kucoin.js +1 -1
  274. package/js/src/pro/luno.d.ts +1 -1
  275. package/js/src/pro/luno.js +3 -3
  276. package/js/src/pro/modetrade.d.ts +3 -3
  277. package/js/src/pro/modetrade.js +3 -3
  278. package/js/src/pro/okx.d.ts +4 -4
  279. package/js/src/pro/okx.js +4 -4
  280. package/js/src/pro/onetrading.js +1 -1
  281. package/js/src/pro/toobit.js +1 -1
  282. package/js/src/pro/weex.js +1 -1
  283. package/js/src/pro/woo.d.ts +4 -4
  284. package/js/src/pro/woo.js +4 -4
  285. package/js/src/pro/woofipro.d.ts +3 -3
  286. package/js/src/pro/woofipro.js +3 -3
  287. package/js/src/pro/xt.js +1 -1
  288. package/js/src/tokocrypto.js +1 -1
  289. package/js/src/toobit.d.ts +1 -1
  290. package/js/src/toobit.js +3 -3
  291. package/js/src/upbit.js +3 -3
  292. package/js/src/weex.d.ts +1 -0
  293. package/js/src/weex.js +57 -62
  294. package/js/src/whitebit.d.ts +1 -0
  295. package/js/src/whitebit.js +61 -63
  296. package/js/src/woo.d.ts +1 -0
  297. package/js/src/woo.js +66 -55
  298. package/js/src/woofipro.d.ts +1 -0
  299. package/js/src/woofipro.js +54 -48
  300. package/js/src/xt.js +3 -2
  301. package/js/src/yobit.js +4 -2
  302. package/js/src/zebpay.d.ts +2 -1
  303. package/js/src/zebpay.js +73 -75
  304. package/package.json +25 -11
  305. package/dist/cjs/src/gateio.js +0 -18
  306. package/dist/cjs/src/oxfun.js +0 -2931
  307. package/dist/cjs/src/pro/gateio.js +0 -18
  308. package/dist/cjs/src/pro/oxfun.js +0 -1113
  309. package/js/src/abstract/gateio.d.ts +0 -346
  310. package/js/src/abstract/gateio.js +0 -5
  311. package/js/src/abstract/oxfun.d.ts +0 -37
  312. package/js/src/gateio.d.ts +0 -4
  313. package/js/src/gateio.js +0 -11
  314. package/js/src/oxfun.d.ts +0 -442
  315. package/js/src/oxfun.js +0 -2924
  316. package/js/src/pro/gateio.d.ts +0 -4
  317. package/js/src/pro/gateio.js +0 -11
  318. package/js/src/pro/oxfun.d.ts +0 -234
  319. package/js/src/pro/oxfun.js +0 -1106
  320. /package/dist/cjs/src/abstract/{oxfun.js → extended.js} +0 -0
  321. /package/js/src/abstract/{oxfun.js → extended.js} +0 -0
@@ -409,7 +409,7 @@ export default class digifinex extends Exchange {
409
409
  'OTC': '3',
410
410
  },
411
411
  'networks': {
412
- 'ARBITRUM': 'Arbitrum',
412
+ 'ARBONE': 'Arbitrum',
413
413
  'AVALANCEC': 'AVAX-CCHAIN',
414
414
  'AVALANCEX': 'AVAX-XCHAIN',
415
415
  'BEP20': 'BEP20',
@@ -426,20 +426,19 @@ export default class digifinex extends Exchange {
426
426
  'ETHW': 'ETHW',
427
427
  'IOTA': 'MIOTA',
428
428
  'KLAYTN': 'KLAY',
429
- 'MATIC': 'Polygon',
430
429
  'METIS': 'MetisDAO',
431
430
  'MOONBEAM': 'GLMR',
432
431
  'MOONRIVER': 'Moonriver',
433
432
  'OPTIMISM': 'OPETH',
434
433
  'POLYGON': 'Polygon',
434
+ 'MATIC': 'Polygon',
435
435
  'RIPPLE': 'XRP',
436
- 'SOLANA': 'SOL',
437
- 'STELLAR': 'Stella',
436
+ 'SOL': 'SOL',
437
+ 'XLM': 'Stella',
438
438
  'TERRACLASSIC': 'TerraClassic',
439
439
  'TERRA': 'Terra',
440
440
  'TON': 'Ton',
441
441
  'TRC20': 'TRC20',
442
- 'TRON': 'TRC20',
443
442
  'TRX': 'TRC20',
444
443
  'VECHAIN': 'Vechain', // VET
445
444
  },
@@ -514,46 +513,46 @@ export default class digifinex extends Exchange {
514
513
  //
515
514
  const data = this.safeList(response, 'data', []);
516
515
  const groupedById = this.groupBy(data, 'currency');
517
- const keys = Object.keys(groupedById);
518
- const result = {};
519
- for (let i = 0; i < keys.length; i++) {
520
- const id = keys[i];
521
- const networkEntries = groupedById[id];
522
- const code = this.safeCurrencyCode(id);
523
- const networks = {};
524
- for (let j = 0; j < networkEntries.length; j++) {
525
- const networkEntry = networkEntries[j];
526
- const networkId = this.safeString2(networkEntry, 'chain', 'currency');
527
- const networkCode = this.networkIdToCode(networkId);
528
- networks[networkCode] = {
529
- 'id': networkId,
530
- 'network': networkCode,
531
- 'active': undefined,
532
- 'deposit': this.safeInteger(networkEntry, 'deposit_status') === 1,
533
- 'withdraw': this.safeInteger(networkEntry, 'withdraw_status') === 1,
534
- 'fee': this.safeNumber(networkEntry, 'min_withdraw_fee'),
535
- 'precision': undefined,
536
- 'limits': {
537
- 'withdraw': {
538
- 'min': this.safeNumber(networkEntry, 'min_withdraw_amount'),
539
- 'max': undefined,
540
- },
541
- 'deposit': {
542
- 'min': this.safeNumber(networkEntry, 'min_deposit_amount'),
543
- 'max': undefined,
544
- },
516
+ const values = Object.values(groupedById);
517
+ return this.parseCurrencies(values);
518
+ }
519
+ parseCurrency(rawCurrency) {
520
+ const networkEntries = rawCurrency;
521
+ const firstEntry = this.safeDict(networkEntries, 0, {}); // it must have at least one entry
522
+ const id = this.safeString(firstEntry, 'currency');
523
+ const code = this.safeCurrencyCode(id);
524
+ const networks = {};
525
+ for (let j = 0; j < networkEntries.length; j++) {
526
+ const networkEntry = networkEntries[j];
527
+ const networkId = this.safeString2(networkEntry, 'chain', 'currency');
528
+ const networkCode = this.networkIdToCode(networkId, code);
529
+ networks[networkCode] = {
530
+ 'id': networkId,
531
+ 'network': networkCode,
532
+ 'active': undefined,
533
+ 'deposit': this.safeInteger(networkEntry, 'deposit_status') === 1,
534
+ 'withdraw': this.safeInteger(networkEntry, 'withdraw_status') === 1,
535
+ 'fee': this.safeNumber(networkEntry, 'min_withdraw_fee'),
536
+ 'precision': undefined,
537
+ 'limits': {
538
+ 'withdraw': {
539
+ 'min': this.safeNumber(networkEntry, 'min_withdraw_amount'),
540
+ 'max': undefined,
545
541
  },
546
- 'info': networkEntry,
547
- };
548
- }
549
- result[code] = this.safeCurrencyStructure({
550
- 'id': id,
551
- 'code': code,
552
- 'info': networkEntries,
553
- 'networks': networks,
554
- });
542
+ 'deposit': {
543
+ 'min': this.safeNumber(networkEntry, 'min_deposit_amount'),
544
+ 'max': undefined,
545
+ },
546
+ },
547
+ 'info': networkEntry,
548
+ };
555
549
  }
556
- return result;
550
+ return this.safeCurrencyStructure({
551
+ 'id': id,
552
+ 'code': code,
553
+ 'info': networkEntries,
554
+ 'networks': networks,
555
+ });
557
556
  }
558
557
  /**
559
558
  * @method
@@ -677,6 +676,7 @@ export default class digifinex extends Exchange {
677
676
  isAllowed = 1;
678
677
  }
679
678
  }
679
+ const isActive = isAllowed ? true : false;
680
680
  result.push({
681
681
  'id': id,
682
682
  'symbol': symbol,
@@ -692,7 +692,7 @@ export default class digifinex extends Exchange {
692
692
  'swap': swap,
693
693
  'future': false,
694
694
  'option': false,
695
- 'active': isAllowed ? true : false,
695
+ 'active': isActive,
696
696
  'contract': swap,
697
697
  'linear': isLinear,
698
698
  'inverse': isInverse,
@@ -4170,7 +4170,7 @@ export default class digifinex extends Exchange {
4170
4170
  'percentage': undefined,
4171
4171
  };
4172
4172
  if (networkId !== undefined) {
4173
- const networkCode = this.networkIdToCode(networkId);
4173
+ const networkCode = this.networkIdToCode(networkId, code);
4174
4174
  depositWithdrawFees[code]['networks'][networkCode] = {
4175
4175
  'withdraw': withdrawResult,
4176
4176
  'deposit': depositResult,
package/js/src/exmo.d.ts CHANGED
@@ -75,6 +75,7 @@ export default class exmo extends Exchange {
75
75
  * @returns {object} an associative dictionary of currencies
76
76
  */
77
77
  fetchCurrencies(params?: {}): Promise<Currencies>;
78
+ parseCurrency(rawCurrency: Dict): Currency;
78
79
  /**
79
80
  * @method
80
81
  * @name exmo#fetchMarkets
package/js/src/exmo.js CHANGED
@@ -385,9 +385,7 @@ export default class exmo extends Exchange {
385
385
  if (method === 'fetchPrivateTradingFees') {
386
386
  return await this.fetchPrivateTradingFees(params);
387
387
  }
388
- else {
389
- return await this.fetchPublicTradingFees(params);
390
- }
388
+ return await this.fetchPublicTradingFees(params);
391
389
  }
392
390
  async fetchPrivateTradingFees(params = {}) {
393
391
  await this.loadMarkets();
@@ -628,7 +626,10 @@ export default class exmo extends Exchange {
628
626
  const provider = fee[i];
629
627
  const type = this.safeString(provider, 'type');
630
628
  const networkId = this.safeString(provider, 'name');
631
- const networkCode = this.networkIdToCode(networkId, this.safeString(currency, 'code'));
629
+ const currencyId = this.safeString(provider, 'currency_name');
630
+ currency = this.safeCurrency(currencyId, currency);
631
+ const code = this.safeString(currency, 'code');
632
+ const networkCode = this.networkIdToCode(networkId, code);
632
633
  const commissionDesc = this.safeString(provider, 'commission_desc');
633
634
  let splitCommissionDesc = [];
634
635
  let percentage = undefined;
@@ -706,97 +707,103 @@ export default class exmo extends Exchange {
706
707
  const responses = await Promise.all(promises);
707
708
  const currencyList = responses[0];
708
709
  const cryptoList = responses[1];
709
- const result = {};
710
+ const newArray = [];
710
711
  for (let i = 0; i < currencyList.length; i++) {
711
712
  const currency = currencyList[i];
712
713
  const currencyId = this.safeString(currency, 'name');
713
- const code = this.safeCurrencyCode(currencyId);
714
- let type = 'crypto';
715
- const networks = {};
716
714
  const providers = this.safeList(cryptoList, currencyId);
717
- if (providers === undefined) {
718
- type = 'fiat';
719
- }
720
- else {
721
- for (let j = 0; j < providers.length; j++) {
722
- const provider = providers[j];
723
- const name = this.safeString(provider, 'name');
724
- // get network-id by removing extra things
725
- let networkId = name.replace(currencyId + ' ', '');
726
- networkId = networkId.replace('(', '');
727
- const replaceChar = ')'; // transpiler trick
728
- networkId = networkId.replace(replaceChar, '');
729
- const networkCode = this.networkIdToCode(networkId);
730
- if (!(networkCode in networks)) {
731
- networks[networkCode] = {
732
- 'id': networkId,
733
- 'network': networkCode,
734
- 'active': undefined,
735
- 'deposit': undefined,
736
- 'withdraw': undefined,
737
- 'fee': undefined,
738
- 'limits': {
739
- 'withdraw': {
740
- 'min': undefined,
741
- 'max': undefined,
742
- },
743
- 'deposit': {
744
- 'min': undefined,
745
- 'max': undefined,
746
- },
715
+ newArray.push({ 'currency': currency, 'providers': providers });
716
+ }
717
+ return this.parseCurrencies(newArray);
718
+ }
719
+ parseCurrency(rawCurrency) {
720
+ const currency = this.safeDict(rawCurrency, 'currency', {});
721
+ const providers = this.safeList(rawCurrency, 'providers', []);
722
+ const currencyId = this.safeString(currency, 'name');
723
+ const code = this.safeCurrencyCode(currencyId);
724
+ let type = 'crypto';
725
+ const networks = {};
726
+ if (providers === undefined) {
727
+ type = 'fiat';
728
+ }
729
+ else {
730
+ for (let j = 0; j < providers.length; j++) {
731
+ const provider = providers[j];
732
+ const name = this.safeString(provider, 'name');
733
+ // get network-id by removing extra things
734
+ let networkId = name.replace(currencyId + ' ', '');
735
+ networkId = networkId.replace('(', '');
736
+ const replaceChar = ')'; // transpiler trick
737
+ networkId = networkId.replace(replaceChar, '');
738
+ const networkCode = this.networkIdToCode(networkId, code);
739
+ if (!(networkCode in networks)) {
740
+ networks[networkCode] = {
741
+ 'id': networkId,
742
+ 'network': networkCode,
743
+ 'active': undefined,
744
+ 'deposit': undefined,
745
+ 'withdraw': undefined,
746
+ 'fee': undefined,
747
+ 'limits': {
748
+ 'withdraw': {
749
+ 'min': undefined,
750
+ 'max': undefined,
747
751
  },
748
- 'info': [], // set as array, because of multiple network sub-entries
749
- };
750
- }
751
- const typeInner = this.safeString(provider, 'type');
752
- const minValue = this.safeString(provider, 'min');
753
- const maxValue = this.safeString(provider, 'max');
754
- const activeProvider = this.safeBool(provider, 'enabled');
755
- const networkEntry = networks[networkCode];
756
- if (typeInner === 'deposit') {
757
- networkEntry['deposit'] = activeProvider;
758
- networkEntry['limits']['deposit']['min'] = minValue;
759
- networkEntry['limits']['deposit']['max'] = maxValue;
760
- }
761
- else if (typeInner === 'withdraw') {
762
- networkEntry['withdraw'] = activeProvider;
763
- networkEntry['limits']['withdraw']['min'] = minValue;
764
- networkEntry['limits']['withdraw']['max'] = maxValue;
765
- }
766
- const info = this.safeList(networkEntry, 'info');
767
- info.push(provider);
768
- networkEntry['info'] = info;
769
- networks[networkCode] = networkEntry;
752
+ 'deposit': {
753
+ 'min': undefined,
754
+ 'max': undefined,
755
+ },
756
+ },
757
+ 'info': [], // set as array, because of multiple network sub-entries
758
+ };
759
+ }
760
+ const typeInner = this.safeString(provider, 'type');
761
+ const minValue = this.safeString(provider, 'min');
762
+ const maxValue = this.safeString(provider, 'max');
763
+ const activeProvider = this.safeBool(provider, 'enabled');
764
+ const networkEntry = networks[networkCode];
765
+ if (typeInner === 'deposit') {
766
+ networkEntry['deposit'] = activeProvider;
767
+ networkEntry['limits']['deposit']['min'] = minValue;
768
+ networkEntry['limits']['deposit']['max'] = maxValue;
769
+ }
770
+ else if (typeInner === 'withdraw') {
771
+ networkEntry['withdraw'] = activeProvider;
772
+ networkEntry['limits']['withdraw']['min'] = minValue;
773
+ networkEntry['limits']['withdraw']['max'] = maxValue;
770
774
  }
775
+ const info = this.safeList(networkEntry, 'info');
776
+ info.push(provider);
777
+ networkEntry['info'] = info;
778
+ networks[networkCode] = networkEntry;
771
779
  }
772
- result[code] = this.safeCurrencyStructure({
773
- 'id': currencyId,
774
- 'code': code,
775
- 'name': this.safeString(currency, 'description'),
776
- 'type': type,
777
- 'active': undefined,
778
- 'deposit': undefined,
779
- 'withdraw': undefined,
780
- 'fee': undefined,
781
- 'precision': this.parseNumber('1e-8'),
782
- 'limits': {
783
- 'withdraw': {
784
- 'min': undefined,
785
- 'max': undefined,
786
- },
787
- 'deposit': {
788
- 'min': undefined,
789
- 'max': undefined,
790
- },
780
+ }
781
+ return this.safeCurrencyStructure({
782
+ 'id': currencyId,
783
+ 'code': code,
784
+ 'name': this.safeString(currency, 'description'),
785
+ 'type': type,
786
+ 'active': undefined,
787
+ 'deposit': undefined,
788
+ 'withdraw': undefined,
789
+ 'fee': undefined,
790
+ 'precision': this.parseNumber('1e-8'),
791
+ 'limits': {
792
+ 'withdraw': {
793
+ 'min': undefined,
794
+ 'max': undefined,
791
795
  },
792
- 'info': {
793
- 'currency': currency,
794
- 'providers': providers,
796
+ 'deposit': {
797
+ 'min': undefined,
798
+ 'max': undefined,
795
799
  },
796
- 'networks': networks,
797
- });
798
- }
799
- return result;
800
+ },
801
+ 'info': {
802
+ 'currency': currency,
803
+ 'providers': providers,
804
+ },
805
+ 'networks': networks,
806
+ });
800
807
  }
801
808
  /**
802
809
  * @method
@@ -1140,7 +1147,8 @@ export default class exmo extends Exchange {
1140
1147
  await this.loadMarkets();
1141
1148
  let ids = undefined;
1142
1149
  if (symbols === undefined) {
1143
- ids = this.ids.join(',');
1150
+ const allIds = this.ids;
1151
+ ids = allIds.join(',');
1144
1152
  // max URL length is 2083 symbols, including http schema, hostname, tld, etc...
1145
1153
  if (ids.length > 2048) {
1146
1154
  const numIds = this.ids.length;
@@ -2163,43 +2171,17 @@ export default class exmo extends Exchange {
2163
2171
  });
2164
2172
  return this.parseOrders(response, market, since, limit, params);
2165
2173
  }
2166
- else {
2167
- const responseSwap = await this.privatePostMarginUserOrderHistory(this.extend(request, params));
2168
- //
2169
- // {
2170
- // "items": [
2171
- // {
2172
- // "event_id": "692862104574106858",
2173
- // "event_time": "1694116400173489405",
2174
- // "event_type": "OrderCancelStarted",
2175
- // "order_id": "692862104561289319",
2176
- // "order_type": "stop_limit_sell",
2177
- // "order_status": "cancel_started",
2178
- // "trade_id": "0",
2179
- // "trade_type":"",
2180
- // "trade_quantity": "0",
2181
- // "trade_price": "0",
2182
- // "pair": "ADA_USDT",
2183
- // "quantity": "12",
2184
- // "price": "0.23",
2185
- // "stop_price": "0.22",
2186
- // "distance": "0"
2187
- // }
2188
- // ...
2189
- // ]
2190
- // }
2191
- //
2192
- const items = this.safeValue(responseSwap, 'items');
2193
- const orders = this.parseOrders(items, market, since, limit, params);
2194
- const result = [];
2195
- for (let i = 0; i < orders.length; i++) {
2196
- const order = orders[i];
2197
- if (order['status'] === 'canceled') {
2198
- result.push(order);
2199
- }
2174
+ const responseSwap = await this.privatePostMarginUserOrderHistory(this.extend(request, params));
2175
+ const items = this.safeValue(responseSwap, 'items');
2176
+ const orders = this.parseOrders(items, market, since, limit, params);
2177
+ const result = [];
2178
+ for (let i = 0; i < orders.length; i++) {
2179
+ const order = orders[i];
2180
+ if (order['status'] === 'canceled') {
2181
+ result.push(order);
2200
2182
  }
2201
- return result;
2202
2183
  }
2184
+ return result;
2203
2185
  }
2204
2186
  /**
2205
2187
  * @method