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
@@ -1024,65 +1024,76 @@ class woo extends woo$1["default"] {
1024
1024
  const tokensById = this.groupBy(tokenRows, 'balance_token');
1025
1025
  const currencyIds = Object.keys(tokensById);
1026
1026
  for (let i = 0; i < currencyIds.length; i++) {
1027
- const currencyId = currencyIds[i];
1028
- const code = this.safeCurrencyCode(currencyId);
1029
- const tokensByNetworkId = this.indexBy(tokensById[currencyId], 'network');
1030
- const chainsByNetworkId = this.indexBy(networksById[currencyId], 'network');
1031
- const keys = Object.keys(chainsByNetworkId);
1032
- const resultingNetworks = {};
1033
- for (let j = 0; j < keys.length; j++) {
1034
- const networkId = keys[j];
1035
- const tokenEntry = this.safeDict(tokensByNetworkId, networkId, {});
1036
- const networkEntry = this.safeDict(chainsByNetworkId, networkId, {});
1037
- const networkCode = this.networkIdToCode(networkId, code);
1038
- const specialNetworkId = this.safeString(tokenEntry, 'token');
1039
- resultingNetworks[networkCode] = {
1040
- 'id': networkId,
1041
- 'currencyNetworkId': specialNetworkId,
1042
- 'network': networkCode,
1043
- 'active': undefined,
1044
- 'deposit': this.safeString(networkEntry, 'allow_deposit') === '1',
1045
- 'withdraw': this.safeString(networkEntry, 'allow_withdraw') === '1',
1046
- 'fee': this.safeNumber(networkEntry, 'withdrawal_fee'),
1047
- 'precision': this.parseNumber(this.parsePrecision(this.safeString(tokenEntry, 'decimals'))),
1048
- 'limits': {
1049
- 'withdraw': {
1050
- 'min': this.safeNumber(networkEntry, 'minimum_withdrawal'),
1051
- 'max': undefined,
1052
- },
1053
- 'deposit': {
1054
- 'min': undefined,
1055
- 'max': undefined,
1056
- },
1057
- },
1058
- 'info': [networkEntry, tokenEntry],
1059
- };
1060
- }
1061
- result[code] = this.safeCurrencyStructure({
1062
- 'id': currencyId,
1063
- 'name': undefined,
1064
- 'code': code,
1065
- 'precision': undefined,
1027
+ const id = currencyIds[i];
1028
+ const customCurrency = {
1029
+ '_coin_id': id,
1030
+ '_tokens_by_id': tokensById[id],
1031
+ '_networks_by_id': networksById[id],
1032
+ };
1033
+ const parsed = this.parseCurrency(customCurrency);
1034
+ const code = parsed['code'];
1035
+ result[code] = parsed;
1036
+ }
1037
+ return result;
1038
+ }
1039
+ parseCurrency(rawCurrency) {
1040
+ const currencyId = this.safeString(rawCurrency, '_coin_id');
1041
+ const code = this.safeCurrencyCode(currencyId);
1042
+ const tokensByNetworkId = this.indexBy(rawCurrency['_tokens_by_id'], 'network');
1043
+ const chainsByNetworkId = this.indexBy(rawCurrency['_networks_by_id'], 'network');
1044
+ const keys = Object.keys(chainsByNetworkId);
1045
+ const resultingNetworks = {};
1046
+ for (let j = 0; j < keys.length; j++) {
1047
+ const networkId = keys[j];
1048
+ const tokenEntry = this.safeDict(tokensByNetworkId, networkId, {});
1049
+ const networkEntry = this.safeDict(chainsByNetworkId, networkId, {});
1050
+ const networkCode = this.networkIdToCode(networkId, code);
1051
+ const specialNetworkId = this.safeString(tokenEntry, 'token');
1052
+ resultingNetworks[networkCode] = {
1053
+ 'id': networkId,
1054
+ 'currencyNetworkId': specialNetworkId,
1055
+ 'network': networkCode,
1066
1056
  'active': undefined,
1067
- 'fee': undefined,
1068
- 'networks': resultingNetworks,
1069
- 'deposit': undefined,
1070
- 'withdraw': undefined,
1071
- 'type': 'crypto',
1057
+ 'deposit': this.safeString(networkEntry, 'allow_deposit') === '1',
1058
+ 'withdraw': this.safeString(networkEntry, 'allow_withdraw') === '1',
1059
+ 'fee': this.safeNumber(networkEntry, 'withdrawal_fee'),
1060
+ 'precision': this.parseNumber(this.parsePrecision(this.safeString(tokenEntry, 'decimals'))),
1072
1061
  'limits': {
1073
- 'deposit': {
1074
- 'min': undefined,
1062
+ 'withdraw': {
1063
+ 'min': this.safeNumber(networkEntry, 'minimum_withdrawal'),
1075
1064
  'max': undefined,
1076
1065
  },
1077
- 'withdraw': {
1066
+ 'deposit': {
1078
1067
  'min': undefined,
1079
1068
  'max': undefined,
1080
1069
  },
1081
1070
  },
1082
- 'info': [tokensByNetworkId, chainsByNetworkId],
1083
- });
1071
+ 'info': { 'network': networkEntry, 'token': tokenEntry },
1072
+ };
1084
1073
  }
1085
- return result;
1074
+ return this.safeCurrencyStructure({
1075
+ 'id': currencyId,
1076
+ 'name': undefined,
1077
+ 'code': code,
1078
+ 'precision': undefined,
1079
+ 'active': undefined,
1080
+ 'fee': undefined,
1081
+ 'networks': resultingNetworks,
1082
+ 'deposit': undefined,
1083
+ 'withdraw': undefined,
1084
+ 'type': 'crypto',
1085
+ 'limits': {
1086
+ 'deposit': {
1087
+ 'min': undefined,
1088
+ 'max': undefined,
1089
+ },
1090
+ 'withdraw': {
1091
+ 'min': undefined,
1092
+ 'max': undefined,
1093
+ },
1094
+ },
1095
+ 'info': rawCurrency,
1096
+ });
1086
1097
  }
1087
1098
  /**
1088
1099
  * @method
@@ -1911,7 +1922,7 @@ class woo extends woo$1["default"] {
1911
1922
  'fok': 'FOK',
1912
1923
  'post_only': 'PO',
1913
1924
  };
1914
- return this.safeString(timeInForces, timeInForce, undefined);
1925
+ return this.safeString(timeInForces, timeInForce);
1915
1926
  }
1916
1927
  parseOrder(order, market = undefined) {
1917
1928
  //
@@ -2482,7 +2493,7 @@ class woo extends woo$1["default"] {
2482
2493
  [networkCode, params] = this.handleNetworkCodeAndParams(params);
2483
2494
  const request = {
2484
2495
  'token': currency['id'],
2485
- 'network': this.networkCodeToId(networkCode),
2496
+ 'network': this.networkCodeToId(networkCode, currency['code']),
2486
2497
  };
2487
2498
  const response = await this.v3PrivateGetAssetWalletDeposit(this.extend(request, params));
2488
2499
  //
@@ -2532,7 +2543,7 @@ class woo extends woo$1["default"] {
2532
2543
  let networkCode = undefined;
2533
2544
  [networkCode, params] = this.handleNetworkCodeAndParams(params);
2534
2545
  if (networkCode !== undefined) {
2535
- request['network'] = this.networkCodeToId(networkCode);
2546
+ request['network'] = this.networkCodeToId(networkCode, currency['code']);
2536
2547
  }
2537
2548
  if (since !== undefined) {
2538
2549
  request['startTime'] = since;
@@ -2781,7 +2792,7 @@ class woo extends woo$1["default"] {
2781
2792
  'comment': undefined,
2782
2793
  'internal': undefined,
2783
2794
  'fee': fee,
2784
- 'network': this.networkIdToCode(this.safeString(transaction, 'network')),
2795
+ 'network': this.networkIdToCode(this.safeString(transaction, 'network'), code),
2785
2796
  };
2786
2797
  }
2787
2798
  parseTransactionStatus(status) {
@@ -3004,7 +3015,7 @@ class woo extends woo$1["default"] {
3004
3015
  }
3005
3016
  params = this.omit(params, 'network');
3006
3017
  request['token'] = currency['id'];
3007
- request['network'] = this.networkCodeToId(network);
3018
+ request['network'] = this.networkCodeToId(network, currency['code']);
3008
3019
  const response = await this.v3PrivatePostAssetWalletWithdraw(this.extend(request, params));
3009
3020
  //
3010
3021
  // {
@@ -690,61 +690,67 @@ class woofipro extends woofipro$1["default"] {
690
690
  const indexedChains = this.indexBy(chainRows, 'chain_id');
691
691
  for (let i = 0; i < tokenRows.length; i++) {
692
692
  const token = tokenRows[i];
693
- const currencyId = this.safeString(token, 'token');
694
- const networks = this.safeList(token, 'chain_details');
695
- const code = this.safeCurrencyCode(currencyId);
696
- const resultingNetworks = {};
697
- for (let j = 0; j < networks.length; j++) {
698
- const networkEntry = networks[j];
699
- const networkId = this.safeString(networkEntry, 'chain_id');
700
- const networkRow = this.safeDict(indexedChains, networkId);
701
- const networkName = this.safeString(networkRow, 'name');
702
- const networkCode = this.networkIdToCode(networkName, code);
703
- resultingNetworks[networkCode] = {
704
- 'id': networkId,
705
- 'network': networkCode,
706
- 'limits': {
707
- 'withdraw': {
708
- 'min': undefined,
709
- 'max': undefined,
710
- },
711
- 'deposit': {
712
- 'min': undefined,
713
- 'max': undefined,
714
- },
715
- },
716
- 'active': undefined,
717
- 'deposit': undefined,
718
- 'withdraw': undefined,
719
- 'fee': this.safeNumber(networkEntry, 'withdrawal_fee'),
720
- 'precision': this.parseNumber(this.parsePrecision(this.safeString(networkEntry, 'decimals'))),
721
- 'info': [networkEntry, networkRow],
722
- };
723
- }
724
- result[code] = this.safeCurrencyStructure({
725
- 'id': currencyId,
726
- 'name': undefined,
727
- 'code': code,
728
- 'precision': undefined,
729
- 'active': undefined,
730
- 'fee': undefined,
731
- 'networks': resultingNetworks,
732
- 'deposit': undefined,
733
- 'withdraw': undefined,
693
+ const parsed = this.parseCurrency({ '_token': token, '_indexedChains': indexedChains });
694
+ result[parsed['code']] = parsed;
695
+ }
696
+ return result;
697
+ }
698
+ parseCurrency(rawCurrency) {
699
+ const token = this.safeDict(rawCurrency, '_token', {});
700
+ const currencyId = this.safeString(token, 'token');
701
+ const networks = this.safeList(token, 'chain_details');
702
+ const code = this.safeCurrencyCode(currencyId);
703
+ const indexedChains = this.safeDict(rawCurrency, '_indexedChains', {});
704
+ const resultingNetworks = {};
705
+ for (let j = 0; j < networks.length; j++) {
706
+ const networkEntry = networks[j];
707
+ const networkId = this.safeString(networkEntry, 'chain_id');
708
+ const networkRow = this.safeDict(indexedChains, networkId);
709
+ const networkName = this.safeString(networkRow, 'name');
710
+ const networkCode = this.networkIdToCode(networkName, code);
711
+ resultingNetworks[networkCode] = {
712
+ 'id': networkId,
713
+ 'network': networkCode,
734
714
  'limits': {
735
- 'deposit': {
715
+ 'withdraw': {
736
716
  'min': undefined,
737
717
  'max': undefined,
738
718
  },
739
- 'withdraw': {
740
- 'min': this.safeNumber(token, 'minimum_withdraw_amount'),
719
+ 'deposit': {
720
+ 'min': undefined,
741
721
  'max': undefined,
742
722
  },
743
723
  },
744
- 'info': token,
745
- });
724
+ 'active': undefined,
725
+ 'deposit': undefined,
726
+ 'withdraw': undefined,
727
+ 'fee': this.safeNumber(networkEntry, 'withdrawal_fee'),
728
+ 'precision': this.parseNumber(this.parsePrecision(this.safeString(networkEntry, 'decimals'))),
729
+ 'info': { 'network': networkEntry, 'networkRow': networkRow },
730
+ };
746
731
  }
747
- return result;
732
+ return this.safeCurrencyStructure({
733
+ 'id': currencyId,
734
+ 'name': undefined,
735
+ 'code': code,
736
+ 'precision': undefined,
737
+ 'active': undefined,
738
+ 'fee': undefined,
739
+ 'networks': resultingNetworks,
740
+ 'deposit': undefined,
741
+ 'withdraw': undefined,
742
+ 'limits': {
743
+ 'deposit': {
744
+ 'min': undefined,
745
+ 'max': undefined,
746
+ },
747
+ 'withdraw': {
748
+ 'min': this.safeNumber(token, 'minimum_withdraw_amount'),
749
+ 'max': undefined,
750
+ },
751
+ },
752
+ 'info': token,
753
+ });
748
754
  }
749
755
  parseTokenAndFeeTemp(item, feeTokenKey, feeAmountKey) {
750
756
  const feeCost = this.safeString(item, feeAmountKey);
@@ -1434,7 +1440,7 @@ class woofipro extends woofipro$1["default"] {
1434
1440
  'fok': 'FOK',
1435
1441
  'post_only': 'PO',
1436
1442
  };
1437
- return this.safeString(timeInForces, timeInForce, undefined);
1443
+ return this.safeString(timeInForces, timeInForce);
1438
1444
  }
1439
1445
  parseOrderStatus(status) {
1440
1446
  if (status !== undefined) {
@@ -569,10 +569,10 @@ class xt extends xt$1["default"] {
569
569
  'networks': {
570
570
  'ERC20': 'Ethereum',
571
571
  'TRC20': 'Tron',
572
+ 'TRX': 'Tron',
572
573
  'BEP20': 'BNB Smart Chain',
573
574
  'BEP2': 'BNB-BEP2',
574
575
  'ETH': 'Ethereum',
575
- 'TRON': 'Tron',
576
576
  'BNB': 'BNB Smart Chain',
577
577
  'AVAX': 'AVAX C-Chain',
578
578
  'GAL': 'GAL(FT)',
@@ -4389,11 +4389,12 @@ class xt extends xt$1["default"] {
4389
4389
  const tier = brackets[i];
4390
4390
  const marketId = this.safeString(info, 'symbol');
4391
4391
  market = this.safeMarket(marketId, market, '_', 'contract');
4392
+ const minNotional = this.safeNumber(brackets[i - 1], 'maxNominalValue', 0);
4392
4393
  tiers.push({
4393
4394
  'tier': this.safeInteger(tier, 'bracket'),
4394
4395
  'symbol': this.safeSymbol(marketId, market, '_', 'contract'),
4395
4396
  'currency': market['settle'],
4396
- 'minNotional': this.safeNumber(brackets[i - 1], 'maxNominalValue', 0),
4397
+ 'minNotional': minNotional,
4397
4398
  'maxNotional': this.safeNumber(tier, 'maxNominalValue'),
4398
4399
  'maintenanceMarginRate': this.safeNumber(tier, 'maintMarginRate'),
4399
4400
  'maxLeverage': this.safeNumber(tier, 'maxLeverage'),
@@ -579,7 +579,8 @@ class yobit extends yobit$1["default"] {
579
579
  await this.loadMarkets();
580
580
  let ids = undefined;
581
581
  if (symbols === undefined) {
582
- ids = this.ids.join('-');
582
+ const allIds = this.ids;
583
+ ids = allIds.join('-');
583
584
  // max URL length is 2083 symbols, including http schema, hostname, tld, etc...
584
585
  if (ids.length > 2048) {
585
586
  const numIds = this.ids.length;
@@ -1116,8 +1117,9 @@ class yobit extends yobit$1["default"] {
1116
1117
  */
1117
1118
  async fetchOrder(id, symbol = undefined, params = {}) {
1118
1119
  await this.loadMarkets();
1120
+ const intId = parseInt(id);
1119
1121
  const request = {
1120
- 'order_id': parseInt(id),
1122
+ 'order_id': intId,
1121
1123
  };
1122
1124
  const response = await this.privatePostOrderInfo(this.extend(request, params));
1123
1125
  id = id.toString();
@@ -368,89 +368,87 @@ class zebpay extends zebpay$1["default"] {
368
368
  // }
369
369
  //
370
370
  const rows = this.safeList(response, 'data', []);
371
- const result = {};
372
- for (let i = 0; i < rows.length; i++) {
373
- const currency = rows[i];
374
- const currencyId = this.safeString(currency, 'currency');
375
- const code = this.safeCurrencyCode(currencyId);
376
- const name = this.safeString(currency, 'name');
377
- const precision = this.parseNumber(this.parsePrecision(this.safeString(currency, 'precision')));
378
- const chains = this.safeList(currency, 'chains', []);
379
- const networks = {};
380
- let minWithdrawFeeString = undefined;
381
- let minWithdrawString = undefined;
382
- let minDepositString = undefined;
383
- let deposit = false;
384
- let withdraw = false;
385
- for (let j = 0; j < chains.length; j++) {
386
- const chain = chains[j];
387
- const networkId = this.safeString(chain, 'chainId');
388
- const networkCode = this.networkIdToCode(networkId);
389
- const depositAllowed = this.safeBool(chain, 'isDepositEnabled') === true;
390
- deposit = (depositAllowed) ? depositAllowed : deposit;
391
- const withdrawAllowed = this.safeBool(chain, 'isWithdrawEnabled') === true;
392
- withdraw = (withdrawAllowed) ? withdrawAllowed : withdraw;
393
- const withdrawFeeString = this.safeString(chain, 'withdrawalFee');
394
- if (withdrawFeeString !== undefined) {
395
- minWithdrawFeeString = (minWithdrawFeeString === undefined) ? withdrawFeeString : Precise["default"].stringMin(withdrawFeeString, minWithdrawFeeString);
396
- }
397
- const minNetworkWithdrawString = this.safeString(chain, 'withdrawalMinSize');
398
- if (minNetworkWithdrawString !== undefined) {
399
- minWithdrawString = (minWithdrawString === undefined) ? minNetworkWithdrawString : Precise["default"].stringMin(minNetworkWithdrawString, minWithdrawString);
400
- }
401
- const minNetworkDepositString = this.safeString(chain, 'depositMinSize');
402
- if (minNetworkDepositString !== undefined) {
403
- minDepositString = (minDepositString === undefined) ? minNetworkDepositString : Precise["default"].stringMin(minNetworkDepositString, minDepositString);
404
- }
405
- networks[networkCode] = {
406
- 'info': chain,
407
- 'id': networkId,
408
- 'network': networkCode,
409
- 'active': depositAllowed && withdrawAllowed,
410
- 'deposit': depositAllowed,
411
- 'withdraw': withdrawAllowed,
412
- 'fee': this.parseNumber(withdrawFeeString),
413
- 'precision': precision,
414
- 'limits': {
415
- 'withdraw': {
416
- 'min': this.parseNumber(minNetworkWithdrawString),
417
- 'max': undefined,
418
- },
419
- 'deposit': {
420
- 'min': this.parseNumber(minNetworkDepositString),
421
- 'max': undefined,
422
- },
423
- },
424
- };
371
+ return this.parseCurrencies(rows);
372
+ }
373
+ parseCurrency(rawCurrency) {
374
+ const currencyId = this.safeString(rawCurrency, 'currency');
375
+ const code = this.safeCurrencyCode(currencyId);
376
+ const name = this.safeString(rawCurrency, 'name');
377
+ const precision = this.parseNumber(this.parsePrecision(this.safeString(rawCurrency, 'precision')));
378
+ const chains = this.safeList(rawCurrency, 'chains', []);
379
+ const networks = {};
380
+ let minWithdrawFeeString = undefined;
381
+ let minWithdrawString = undefined;
382
+ let minDepositString = undefined;
383
+ let deposit = false;
384
+ let withdraw = false;
385
+ for (let j = 0; j < chains.length; j++) {
386
+ const chain = chains[j];
387
+ const networkId = this.safeString(chain, 'chainId');
388
+ const networkCode = this.networkIdToCode(networkId, code);
389
+ const depositAllowed = this.safeBool(chain, 'isDepositEnabled') === true;
390
+ deposit = (depositAllowed) ? depositAllowed : deposit;
391
+ const withdrawAllowed = this.safeBool(chain, 'isWithdrawEnabled') === true;
392
+ withdraw = (withdrawAllowed) ? withdrawAllowed : withdraw;
393
+ const withdrawFeeString = this.safeString(chain, 'withdrawalFee');
394
+ if (withdrawFeeString !== undefined) {
395
+ minWithdrawFeeString = (minWithdrawFeeString === undefined) ? withdrawFeeString : Precise["default"].stringMin(withdrawFeeString, minWithdrawFeeString);
396
+ }
397
+ const minNetworkWithdrawString = this.safeString(chain, 'withdrawalMinSize');
398
+ if (minNetworkWithdrawString !== undefined) {
399
+ minWithdrawString = (minWithdrawString === undefined) ? minNetworkWithdrawString : Precise["default"].stringMin(minNetworkWithdrawString, minWithdrawString);
400
+ }
401
+ const minNetworkDepositString = this.safeString(chain, 'depositMinSize');
402
+ if (minNetworkDepositString !== undefined) {
403
+ minDepositString = (minDepositString === undefined) ? minNetworkDepositString : Precise["default"].stringMin(minNetworkDepositString, minDepositString);
425
404
  }
426
- result[code] = this.safeCurrencyStructure({
427
- 'info': currency,
428
- 'code': code,
429
- 'id': currencyId,
430
- 'name': name,
431
- 'active': deposit && withdraw,
432
- 'deposit': deposit,
433
- 'withdraw': withdraw,
434
- 'fee': this.parseNumber(minWithdrawFeeString),
405
+ networks[networkCode] = {
406
+ 'info': chain,
407
+ 'id': networkId,
408
+ 'network': networkCode,
409
+ 'active': depositAllowed && withdrawAllowed,
410
+ 'deposit': depositAllowed,
411
+ 'withdraw': withdrawAllowed,
412
+ 'fee': this.parseNumber(withdrawFeeString),
435
413
  'precision': precision,
436
414
  'limits': {
437
- 'amount': {
438
- 'min': undefined,
439
- 'max': undefined,
440
- },
441
415
  'withdraw': {
442
- 'min': this.parseNumber(minWithdrawString),
416
+ 'min': this.parseNumber(minNetworkWithdrawString),
443
417
  'max': undefined,
444
418
  },
445
419
  'deposit': {
446
- 'min': this.parseNumber(minDepositString),
420
+ 'min': this.parseNumber(minNetworkDepositString),
447
421
  'max': undefined,
448
422
  },
449
423
  },
450
- 'networks': networks,
451
- });
424
+ };
452
425
  }
453
- return result;
426
+ return this.safeCurrencyStructure({
427
+ 'info': rawCurrency,
428
+ 'code': code,
429
+ 'id': currencyId,
430
+ 'name': name,
431
+ 'active': deposit && withdraw,
432
+ 'deposit': deposit,
433
+ 'withdraw': withdraw,
434
+ 'fee': this.parseNumber(minWithdrawFeeString),
435
+ 'precision': precision,
436
+ 'limits': {
437
+ 'amount': {
438
+ 'min': undefined,
439
+ 'max': undefined,
440
+ },
441
+ 'withdraw': {
442
+ 'min': this.parseNumber(minWithdrawString),
443
+ 'max': undefined,
444
+ },
445
+ 'deposit': {
446
+ 'min': this.parseNumber(minDepositString),
447
+ 'max': undefined,
448
+ },
449
+ },
450
+ 'networks': networks,
451
+ });
454
452
  }
455
453
  /**
456
454
  * @method
@@ -1791,11 +1789,11 @@ class zebpay extends zebpay$1["default"] {
1791
1789
  // }
1792
1790
  // ]
1793
1791
  //
1794
- const timestamp = this.safeInteger2(ticker, 'timestamp', 'ts', undefined);
1792
+ const timestamp = this.safeInteger2(ticker, 'timestamp', 'ts');
1795
1793
  const marketId = this.safeString(ticker, 'symbol');
1796
1794
  market = this.safeMarket(marketId);
1797
- const close = this.safeString(ticker, 'close', undefined);
1798
- const last = this.safeString(ticker, 'last', undefined);
1795
+ const close = this.safeString(ticker, 'close');
1796
+ const last = this.safeString(ticker, 'last');
1799
1797
  const percentage = this.safeString(ticker, 'percentage');
1800
1798
  const bidVolume = this.safeString(ticker, 'bidVolume');
1801
1799
  const askVolume = this.safeString(ticker, 'askVolume');