ccxt 4.5.56 → 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 (261) hide show
  1. package/README.md +10 -9
  2. package/dist/ccxt.browser.min.js +10 -10
  3. package/dist/cjs/ccxt.js +6 -11
  4. package/dist/cjs/src/apex.js +1 -1
  5. package/dist/cjs/src/arkham.js +3 -3
  6. package/dist/cjs/src/ascendex.js +2 -2
  7. package/dist/cjs/src/aster.js +7 -4
  8. package/dist/cjs/src/backpack.js +4 -4
  9. package/dist/cjs/src/base/Exchange.js +69 -32
  10. package/dist/cjs/src/base/functions/io.js +25 -0
  11. package/dist/cjs/src/base/functions.js +1 -0
  12. package/dist/cjs/src/bigone.js +3 -3
  13. package/dist/cjs/src/binance.js +192 -194
  14. package/dist/cjs/src/bingx.js +3 -3
  15. package/dist/cjs/src/bitfinex.js +71 -58
  16. package/dist/cjs/src/bitget.js +2 -2
  17. package/dist/cjs/src/bitmart.js +13 -6
  18. package/dist/cjs/src/bitmex.js +1 -1
  19. package/dist/cjs/src/bitopro.js +1 -1
  20. package/dist/cjs/src/bitrue.js +2 -2
  21. package/dist/cjs/src/bitso.js +1 -1
  22. package/dist/cjs/src/bitstamp.js +2 -1
  23. package/dist/cjs/src/bitteam.js +1 -1
  24. package/dist/cjs/src/bittrade.js +0 -1
  25. package/dist/cjs/src/bitvavo.js +457 -34
  26. package/dist/cjs/src/blofin.js +26 -3
  27. package/dist/cjs/src/bullish.js +6 -5
  28. package/dist/cjs/src/bydfi.js +1 -1
  29. package/dist/cjs/src/cex.js +3 -3
  30. package/dist/cjs/src/coinbase.js +75 -65
  31. package/dist/cjs/src/coinbaseexchange.js +2 -2
  32. package/dist/cjs/src/coinbaseinternational.js +2 -1
  33. package/dist/cjs/src/coinex.js +74 -74
  34. package/dist/cjs/src/coinmetro.js +1 -1
  35. package/dist/cjs/src/coinsph.js +1 -1
  36. package/dist/cjs/src/cryptocom.js +46 -48
  37. package/dist/cjs/src/cryptomus.js +43 -39
  38. package/dist/cjs/src/deepcoin.js +3 -2
  39. package/dist/cjs/src/delta.js +51 -52
  40. package/dist/cjs/src/deribit.js +31 -33
  41. package/dist/cjs/src/derive.js +26 -28
  42. package/dist/cjs/src/digifinex.js +43 -44
  43. package/dist/cjs/src/exmo.js +92 -83
  44. package/dist/cjs/src/extended.js +3497 -0
  45. package/dist/cjs/src/foxbit.js +71 -75
  46. package/dist/cjs/src/gate.js +53 -53
  47. package/dist/cjs/src/gemini.js +41 -43
  48. package/dist/cjs/src/grvt.js +4 -4
  49. package/dist/cjs/src/hashkey.js +52 -54
  50. package/dist/cjs/src/hitbtc.js +3 -13
  51. package/dist/cjs/src/hollaex.js +51 -54
  52. package/dist/cjs/src/htx.js +75 -67
  53. package/dist/cjs/src/hyperliquid.js +41 -42
  54. package/dist/cjs/src/indodax.js +2 -2
  55. package/dist/cjs/src/kraken.js +57 -58
  56. package/dist/cjs/src/kucoin.js +3 -2
  57. package/dist/cjs/src/latoken.js +30 -32
  58. package/dist/cjs/src/lbank.js +56 -56
  59. package/dist/cjs/src/lighter.js +35 -37
  60. package/dist/cjs/src/luno.js +35 -43
  61. package/dist/cjs/src/mexc.js +48 -49
  62. package/dist/cjs/src/modetrade.js +50 -52
  63. package/dist/cjs/src/ndax.js +35 -37
  64. package/dist/cjs/src/okx.js +17 -2
  65. package/dist/cjs/src/onetrading.js +21 -23
  66. package/dist/cjs/src/phemex.js +43 -45
  67. package/dist/cjs/src/poloniex.js +17 -12
  68. package/dist/cjs/src/pro/alpaca.js +1 -1
  69. package/dist/cjs/src/pro/apex.js +1 -1
  70. package/dist/cjs/src/pro/arkham.js +1 -1
  71. package/dist/cjs/src/pro/backpack.js +1 -1
  72. package/dist/cjs/src/pro/binance.js +3 -3
  73. package/dist/cjs/src/pro/bitget.js +1 -1
  74. package/dist/cjs/src/pro/bithumb.js +1 -1
  75. package/dist/cjs/src/pro/bitstamp.js +1 -1
  76. package/dist/cjs/src/pro/blockchaincom.js +1 -1
  77. package/dist/cjs/src/pro/bybit.js +1 -1
  78. package/dist/cjs/src/pro/cex.js +1 -1
  79. package/dist/cjs/src/pro/coinex.js +1 -1
  80. package/dist/cjs/src/pro/coinone.js +1 -1
  81. package/dist/cjs/src/pro/cryptocom.js +3 -1
  82. package/dist/cjs/src/pro/dydx.js +1 -1
  83. package/dist/cjs/src/pro/exmo.js +1 -1
  84. package/dist/cjs/src/pro/extended.js +865 -0
  85. package/dist/cjs/src/pro/gate.js +1 -1
  86. package/dist/cjs/src/pro/independentreserve.js +1 -1
  87. package/dist/cjs/src/pro/kucoin.js +1 -1
  88. package/dist/cjs/src/pro/luno.js +3 -3
  89. package/dist/cjs/src/pro/onetrading.js +1 -1
  90. package/dist/cjs/src/pro/toobit.js +1 -1
  91. package/dist/cjs/src/pro/weex.js +1 -1
  92. package/dist/cjs/src/static_dependencies/starknet/utils/hash/classHash.js +7 -7
  93. package/dist/cjs/src/tokocrypto.js +1 -1
  94. package/dist/cjs/src/toobit.js +2 -2
  95. package/dist/cjs/src/upbit.js +3 -3
  96. package/dist/cjs/src/weex.js +57 -62
  97. package/dist/cjs/src/whitebit.js +61 -63
  98. package/dist/cjs/src/woo.js +65 -54
  99. package/dist/cjs/src/woofipro.js +53 -47
  100. package/dist/cjs/src/xt.js +1 -1
  101. package/dist/cjs/src/zebpay.js +70 -72
  102. package/js/ccxt.d.ts +8 -14
  103. package/js/ccxt.js +6 -10
  104. package/js/src/abstract/bitvavo.d.ts +15 -7
  105. package/js/src/abstract/extended.d.ts +58 -0
  106. package/js/src/apex.js +1 -1
  107. package/js/src/arkham.js +3 -3
  108. package/js/src/ascendex.js +2 -2
  109. package/js/src/aster.js +7 -4
  110. package/js/src/backpack.js +4 -4
  111. package/js/src/base/Exchange.d.ts +10 -6
  112. package/js/src/base/Exchange.js +69 -32
  113. package/js/src/base/functions/io.d.ts +7 -0
  114. package/js/src/base/functions/io.js +24 -0
  115. package/js/src/bigone.js +3 -3
  116. package/js/src/binance.d.ts +2 -0
  117. package/js/src/binance.js +196 -198
  118. package/js/src/bingx.js +3 -3
  119. package/js/src/bitfinex.d.ts +2 -0
  120. package/js/src/bitfinex.js +71 -58
  121. package/js/src/bitget.js +2 -2
  122. package/js/src/bitmart.js +13 -6
  123. package/js/src/bitmex.js +1 -1
  124. package/js/src/bitopro.js +1 -1
  125. package/js/src/bitrue.js +2 -2
  126. package/js/src/bitso.js +1 -1
  127. package/js/src/bitstamp.js +2 -1
  128. package/js/src/bitteam.js +1 -1
  129. package/js/src/bittrade.js +0 -1
  130. package/js/src/bitvavo.d.ts +114 -21
  131. package/js/src/bitvavo.js +457 -34
  132. package/js/src/blofin.d.ts +1 -0
  133. package/js/src/blofin.js +26 -3
  134. package/js/src/bullish.js +6 -5
  135. package/js/src/bydfi.js +1 -1
  136. package/js/src/cex.js +3 -3
  137. package/js/src/coinbase.d.ts +63 -56
  138. package/js/src/coinbase.js +75 -65
  139. package/js/src/coinbaseexchange.js +2 -2
  140. package/js/src/coinbaseinternational.js +2 -1
  141. package/js/src/coinex.d.ts +1 -0
  142. package/js/src/coinex.js +74 -74
  143. package/js/src/coinmetro.d.ts +1 -1
  144. package/js/src/coinmetro.js +1 -1
  145. package/js/src/coinsph.js +1 -1
  146. package/js/src/cryptocom.d.ts +1 -0
  147. package/js/src/cryptocom.js +46 -48
  148. package/js/src/cryptomus.d.ts +2 -1
  149. package/js/src/cryptomus.js +43 -39
  150. package/js/src/deepcoin.js +3 -2
  151. package/js/src/delta.d.ts +1 -0
  152. package/js/src/delta.js +51 -52
  153. package/js/src/deribit.d.ts +1 -0
  154. package/js/src/deribit.js +31 -33
  155. package/js/src/derive.d.ts +1 -0
  156. package/js/src/derive.js +26 -28
  157. package/js/src/digifinex.d.ts +1 -0
  158. package/js/src/digifinex.js +43 -44
  159. package/js/src/exmo.d.ts +1 -0
  160. package/js/src/exmo.js +92 -83
  161. package/js/src/extended.d.ts +554 -0
  162. package/js/src/extended.js +3490 -0
  163. package/js/src/foxbit.d.ts +1 -0
  164. package/js/src/foxbit.js +71 -75
  165. package/js/src/gate.d.ts +1 -0
  166. package/js/src/gate.js +53 -53
  167. package/js/src/gemini.d.ts +2 -1
  168. package/js/src/gemini.js +41 -43
  169. package/js/src/grvt.js +4 -4
  170. package/js/src/hashkey.d.ts +1 -0
  171. package/js/src/hashkey.js +52 -54
  172. package/js/src/hitbtc.d.ts +0 -1
  173. package/js/src/hitbtc.js +3 -13
  174. package/js/src/hollaex.d.ts +1 -0
  175. package/js/src/hollaex.js +51 -54
  176. package/js/src/htx.d.ts +1 -0
  177. package/js/src/htx.js +75 -67
  178. package/js/src/hyperliquid.d.ts +1 -0
  179. package/js/src/hyperliquid.js +41 -42
  180. package/js/src/indodax.js +2 -2
  181. package/js/src/kraken.d.ts +2 -1
  182. package/js/src/kraken.js +57 -58
  183. package/js/src/kucoin.js +3 -2
  184. package/js/src/latoken.d.ts +1 -0
  185. package/js/src/latoken.js +30 -32
  186. package/js/src/lbank.d.ts +1 -0
  187. package/js/src/lbank.js +56 -56
  188. package/js/src/lighter.d.ts +1 -0
  189. package/js/src/lighter.js +35 -37
  190. package/js/src/luno.d.ts +1 -0
  191. package/js/src/luno.js +35 -43
  192. package/js/src/mexc.d.ts +2 -1
  193. package/js/src/mexc.js +48 -49
  194. package/js/src/modetrade.d.ts +1 -0
  195. package/js/src/modetrade.js +50 -52
  196. package/js/src/ndax.d.ts +1 -0
  197. package/js/src/ndax.js +35 -37
  198. package/js/src/okx.js +17 -2
  199. package/js/src/onetrading.d.ts +2 -1
  200. package/js/src/onetrading.js +21 -23
  201. package/js/src/phemex.d.ts +1 -0
  202. package/js/src/phemex.js +43 -45
  203. package/js/src/poloniex.js +17 -12
  204. package/js/src/pro/alpaca.js +1 -1
  205. package/js/src/pro/apex.js +1 -1
  206. package/js/src/pro/arkham.js +1 -1
  207. package/js/src/pro/backpack.js +1 -1
  208. package/js/src/pro/binance.js +3 -3
  209. package/js/src/pro/bitget.js +1 -1
  210. package/js/src/pro/bithumb.js +1 -1
  211. package/js/src/pro/bitstamp.js +1 -1
  212. package/js/src/pro/blockchaincom.js +1 -1
  213. package/js/src/pro/bybit.js +1 -1
  214. package/js/src/pro/cex.js +1 -1
  215. package/js/src/pro/coinex.js +1 -1
  216. package/js/src/pro/coinone.js +1 -1
  217. package/js/src/pro/cryptocom.js +3 -1
  218. package/js/src/pro/dydx.js +1 -1
  219. package/js/src/pro/exmo.js +1 -1
  220. package/js/src/pro/extended.d.ts +126 -0
  221. package/js/src/pro/extended.js +858 -0
  222. package/js/src/pro/gate.js +1 -1
  223. package/js/src/pro/independentreserve.js +1 -1
  224. package/js/src/pro/kucoin.js +1 -1
  225. package/js/src/pro/luno.d.ts +1 -1
  226. package/js/src/pro/luno.js +3 -3
  227. package/js/src/pro/onetrading.js +1 -1
  228. package/js/src/pro/toobit.js +1 -1
  229. package/js/src/pro/weex.js +1 -1
  230. package/js/src/tokocrypto.js +1 -1
  231. package/js/src/toobit.js +2 -2
  232. package/js/src/upbit.js +3 -3
  233. package/js/src/weex.d.ts +1 -0
  234. package/js/src/weex.js +57 -62
  235. package/js/src/whitebit.d.ts +1 -0
  236. package/js/src/whitebit.js +61 -63
  237. package/js/src/woo.d.ts +1 -0
  238. package/js/src/woo.js +65 -54
  239. package/js/src/woofipro.d.ts +1 -0
  240. package/js/src/woofipro.js +53 -47
  241. package/js/src/xt.js +1 -1
  242. package/js/src/zebpay.d.ts +2 -1
  243. package/js/src/zebpay.js +70 -72
  244. package/package.json +7 -7
  245. package/dist/cjs/src/gateio.js +0 -18
  246. package/dist/cjs/src/oxfun.js +0 -2933
  247. package/dist/cjs/src/pro/gateio.js +0 -18
  248. package/dist/cjs/src/pro/oxfun.js +0 -1113
  249. package/js/src/abstract/gateio.d.ts +0 -346
  250. package/js/src/abstract/gateio.js +0 -5
  251. package/js/src/abstract/oxfun.d.ts +0 -37
  252. package/js/src/gateio.d.ts +0 -4
  253. package/js/src/gateio.js +0 -11
  254. package/js/src/oxfun.d.ts +0 -442
  255. package/js/src/oxfun.js +0 -2926
  256. package/js/src/pro/gateio.d.ts +0 -4
  257. package/js/src/pro/gateio.js +0 -11
  258. package/js/src/pro/oxfun.d.ts +0 -234
  259. package/js/src/pro/oxfun.js +0 -1106
  260. /package/dist/cjs/src/abstract/{oxfun.js → extended.js} +0 -0
  261. /package/js/src/abstract/{oxfun.js → extended.js} +0 -0
@@ -636,7 +636,7 @@ class gate extends gate$1["default"] {
636
636
  for (let i = 0; i < bidAsks.length; i++) {
637
637
  const bidAsk = bidAsks[i];
638
638
  if (Array.isArray(bidAsk)) {
639
- bookSide.storeArray(this.parseBidAsk(bidAsk));
639
+ bookSide.storeArray(this.parseOrderBookBidAsk(bidAsk));
640
640
  }
641
641
  else {
642
642
  const price = this.safeFloat(bidAsk, 'p');
@@ -241,7 +241,7 @@ class independentreserve extends independentreserve$1["default"] {
241
241
  return result;
242
242
  }
243
243
  handleDelta(bookside, delta) {
244
- const bidAsk = this.parseBidAsk(delta, 'Price', 'Volume');
244
+ const bidAsk = this.parseOrderBookBidAsk(delta, 'Price', 'Volume');
245
245
  bookside.storeArray(bidAsk);
246
246
  }
247
247
  handleDeltas(bookside, deltas) {
@@ -1753,7 +1753,7 @@ class kucoin extends kucoin$1["default"] {
1753
1753
  }
1754
1754
  handleBidAsks(bookSide, bidAsks) {
1755
1755
  for (let i = 0; i < bidAsks.length; i++) {
1756
- const bidAsk = this.parseBidAsk(bidAsks[i]);
1756
+ const bidAsk = this.parseOrderBookBidAsk(bidAsks[i]);
1757
1757
  bookSide.storeArray(bidAsk);
1758
1758
  }
1759
1759
  }
@@ -214,8 +214,8 @@ class luno extends luno$1["default"] {
214
214
  client.resolve(orderbook, messageHash);
215
215
  }
216
216
  customParseOrderBook(orderbook, symbol, timestamp = undefined, bidsKey = 'bids', asksKey = 'asks', priceKey = 'price', amountKey = 'volume', countOrIdKey = 2) {
217
- const bids = this.parseBidsAsks(this.safeValue(orderbook, bidsKey, []), priceKey, amountKey, countOrIdKey);
218
- const asks = this.parseBidsAsks(this.safeValue(orderbook, asksKey, []), priceKey, amountKey, countOrIdKey);
217
+ const bids = this.parseOrderBookBidsAsks(this.safeValue(orderbook, bidsKey, []), priceKey, amountKey, countOrIdKey);
218
+ const asks = this.parseOrderBookBidsAsks(this.safeValue(orderbook, asksKey, []), priceKey, amountKey, countOrIdKey);
219
219
  return {
220
220
  'symbol': symbol,
221
221
  'bids': this.sortBy(bids, 0, true),
@@ -225,7 +225,7 @@ class luno extends luno$1["default"] {
225
225
  'nonce': undefined,
226
226
  };
227
227
  }
228
- parseBidsAsks(bidasks, priceKey = 'price', amountKey = 'volume', thirdKey = 2) {
228
+ parseOrderBookBidsAsks(bidasks, priceKey = 'price', amountKey = 'volume', thirdKey = 2) {
229
229
  bidasks = this.toArray(bidasks);
230
230
  const result = [];
231
231
  for (let i = 0; i < bidasks.length; i++) {
@@ -391,7 +391,7 @@ class onetrading extends onetrading$1["default"] {
391
391
  //
392
392
  // [ 'BUY', "0.053595", "0" ]
393
393
  //
394
- const bidAsk = this.parseBidAsk(delta, 1, 2);
394
+ const bidAsk = this.parseOrderBookBidAsk(delta, 1, 2);
395
395
  const type = this.safeString(delta, 0);
396
396
  if (type === 'BUY') {
397
397
  const bids = orderbook['bids'];
@@ -577,7 +577,7 @@ class toobit extends toobit$1["default"] {
577
577
  }
578
578
  }
579
579
  handleDelta(bookside, delta) {
580
- const bidAsk = this.parseBidAsk(delta);
580
+ const bidAsk = this.parseOrderBookBidAsk(delta);
581
581
  bookside.storeArray(bidAsk);
582
582
  }
583
583
  handleOrderBookPartialSnapshot(client, message) {
@@ -882,7 +882,7 @@ class weex extends weex$1["default"] {
882
882
  client.resolve(orderbook, messageHash);
883
883
  }
884
884
  handleDelta(bookside, delta) {
885
- const bidAsk = this.parseBidAsk(delta);
885
+ const bidAsk = this.parseOrderBookBidAsk(delta);
886
886
  bookside.storeArray(bidAsk);
887
887
  }
888
888
  /**
@@ -2,9 +2,9 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var index$1 = require('../../../scure-starknet/index.js');
5
+ var index = require('../../../scure-starknet/index.js');
6
6
  var constants = require('../../constants.js');
7
- var index = require('../calldata/index.js');
7
+ var index$1 = require('../calldata/index.js');
8
8
  var cairo = require('../calldata/cairo.js');
9
9
  require('../../../scure-base/index.js');
10
10
  var num = require('../num.js');
@@ -13,10 +13,10 @@ var num = require('../num.js');
13
13
  * Class Hash
14
14
  */
15
15
  function computePedersenHash(a, b) {
16
- return index$1.pedersen(BigInt(a), BigInt(b));
16
+ return index.pedersen(BigInt(a), BigInt(b));
17
17
  }
18
18
  function computePoseidonHash(a, b) {
19
- return num.toHex(index$1.poseidonHash(BigInt(a), BigInt(b)));
19
+ return num.toHex(index.poseidonHash(BigInt(a), BigInt(b)));
20
20
  }
21
21
  /**
22
22
  * Compute pedersen hash from data
@@ -24,19 +24,19 @@ function computePoseidonHash(a, b) {
24
24
  */
25
25
  function computeHashOnElements(data) {
26
26
  return [...data, data.length]
27
- .reduce((x, y) => index$1.pedersen(BigInt(x), BigInt(y)), 0)
27
+ .reduce((x, y) => index.pedersen(BigInt(x), BigInt(y)), 0)
28
28
  .toString();
29
29
  }
30
30
  const computePedersenHashOnElements = computeHashOnElements;
31
31
  function computePoseidonHashOnElements(data) {
32
- return num.toHex(index$1.poseidonHashMany(data.map((x) => BigInt(x))));
32
+ return num.toHex(index.poseidonHashMany(data.map((x) => BigInt(x))));
33
33
  }
34
34
  /**
35
35
  * Calculate contract address from class hash
36
36
  * @returns format: hex-string
37
37
  */
38
38
  function calculateContractAddressFromHash(salt, classHash, constructorCalldata, deployerAddress) {
39
- const compiledCalldata = index.CallData.compile(constructorCalldata);
39
+ const compiledCalldata = index$1.CallData.compile(constructorCalldata);
40
40
  const constructorCalldataHash = computeHashOnElements(compiledCalldata);
41
41
  const CONTRACT_ADDRESS_PREFIX = cairo.felt('0x535441524b4e45545f434f4e54524143545f41444452455353'); // Equivalent to 'STARKNET_CONTRACT_ADDRESS'
42
42
  const hash = computeHashOnElements([
@@ -2477,7 +2477,7 @@ class tokocrypto extends tokocrypto$1["default"] {
2477
2477
  request['addressTag'] = tag;
2478
2478
  }
2479
2479
  const [networkCode, query] = this.handleNetworkCodeAndParams(params);
2480
- const networkId = this.networkCodeToId(networkCode);
2480
+ const networkId = this.networkCodeToId(networkCode, code);
2481
2481
  if (networkId !== undefined) {
2482
2482
  request['network'] = networkId.toUpperCase();
2483
2483
  }
@@ -612,7 +612,7 @@ class toobit extends toobit$1["default"] {
612
612
  for (let j = 0; j < rawNetworks.length; j++) {
613
613
  const rawNetwork = rawNetworks[j];
614
614
  const networkId = this.safeString(rawNetwork, 'chainType');
615
- const networkCode = this.networkIdToCode(networkId);
615
+ const networkCode = this.networkIdToCode(networkId, code);
616
616
  networks[networkCode] = {
617
617
  'id': networkId,
618
618
  'network': networkCode,
@@ -2700,7 +2700,7 @@ class toobit extends toobit$1["default"] {
2700
2700
  if (networkCode === undefined) {
2701
2701
  throw new errors.ArgumentsRequired(this.id + ' fetchDepositAddress() : param["network"] is required');
2702
2702
  }
2703
- request['chainType'] = this.networkCodeToId(networkCode);
2703
+ request['chainType'] = this.networkCodeToId(networkCode, code);
2704
2704
  const response = await this.privateGetApiV1AccountDepositAddress(this.extend(request, paramsOmitted));
2705
2705
  //
2706
2706
  // {
@@ -680,8 +680,8 @@ class upbit extends upbit$1["default"] {
680
680
  const timestamp = this.safeInteger(orderbook, 'timestamp');
681
681
  result[symbol] = {
682
682
  'symbol': symbol,
683
- 'bids': this.sortBy(this.parseBidsAsks(orderbook['orderbook_units'], 'bid_price', 'bid_size'), 0, true),
684
- 'asks': this.sortBy(this.parseBidsAsks(orderbook['orderbook_units'], 'ask_price', 'ask_size'), 0),
683
+ 'bids': this.sortBy(this.parseOrderBookBidsAsks(orderbook['orderbook_units'], 'bid_price', 'bid_size'), 0, true),
684
+ 'asks': this.sortBy(this.parseOrderBookBidsAsks(orderbook['orderbook_units'], 'ask_price', 'ask_size'), 0),
685
685
  'timestamp': timestamp,
686
686
  'datetime': this.iso8601(timestamp),
687
687
  'nonce': undefined,
@@ -2170,7 +2170,7 @@ class upbit extends upbit$1["default"] {
2170
2170
  return {
2171
2171
  'info': depositAddress,
2172
2172
  'currency': code,
2173
- 'network': this.networkIdToCode(networkId),
2173
+ 'network': this.networkIdToCode(networkId, code),
2174
2174
  'address': address,
2175
2175
  'tag': tag,
2176
2176
  };
@@ -496,20 +496,17 @@ class weex extends weex$1["default"] {
496
496
  'ETH': 'ERC20',
497
497
  'POLYGON': 'POLYGON(MATIC)',
498
498
  'MATIC': 'POLYGON(MATIC)',
499
- 'ARBITRUM': 'ARBITRUM(ARB)',
500
- 'ARB': 'ARBITRUM(ARB)',
501
- 'SOLANA': 'SOLANA(SOL)',
499
+ 'ARBONE': 'ARBITRUM(ARB)',
502
500
  'SOL': 'SOLANA(SOL)',
503
501
  'OP': 'OPTIMISM(OP)',
504
502
  'OPTIMISM': 'OPTIMISM(OP)',
505
- 'AVALANCHEC': 'AVALANCHE_C(AVAX_C)',
506
503
  'AVAXC': 'AVALANCHE_C(AVAX_C)',
507
504
  },
508
505
  'networksById': {
509
506
  'BEP20(BSC)': 'BEP20',
510
507
  'ERC20': 'ERC20',
511
508
  'POLYGON(MATIC)': 'MATIC',
512
- 'ARBITRUM(ARB)': 'ARB',
509
+ 'ARBITRUM(ARB)': 'ARBONE',
513
510
  'SOLANA(SOL)': 'SOL',
514
511
  'OPTIMISM(OP)': 'OP',
515
512
  'AVALANCHE_C(AVAX_C)': 'AVAXC',
@@ -853,73 +850,71 @@ class weex extends weex$1["default"] {
853
850
  // }
854
851
  // ]
855
852
  //
856
- const result = {};
857
- for (let i = 0; i < response.length; i++) {
858
- const currency = this.safeDict(response, i);
859
- const currencyId = this.safeString(currency, 'coin');
860
- const code = this.safeCurrencyCode(currencyId);
861
- const name = this.safeString(currency, 'name');
862
- const networks = {};
863
- const chains = this.safeList(currency, 'networkList', []);
864
- for (let j = 0; j < chains.length; j++) {
865
- const chain = this.safeDict(chains, j);
866
- const networkId = this.safeString(chain, 'network');
867
- const networkCode = this.networkIdToCode(networkId);
868
- networks[networkCode] = {
869
- 'info': chain,
870
- 'id': networkId,
871
- 'network': networkCode,
872
- 'active': undefined,
873
- 'deposit': this.safeBool(chain, 'depositEnable'),
874
- 'withdraw': this.safeBool(chain, 'withdrawEnable'),
875
- 'fee': this.safeNumber(chain, 'withdrawFee'),
876
- 'precision': this.safeNumber(chain, 'withdrawIntegerMultiple'),
877
- 'isDefault': this.safeBool(chain, 'isDefault', false),
878
- 'limits': {
879
- 'withdraw': {
880
- 'min': this.safeNumber(chain, 'withdrawMin'),
881
- 'max': undefined,
882
- },
883
- 'deposit': {
884
- 'min': this.safeNumber(chain, 'depositDust'),
885
- 'max': undefined,
886
- },
887
- },
888
- };
889
- }
890
- const networkKeys = Object.keys(networks);
891
- const networksLength = networkKeys.length;
892
- const emptyChains = networksLength === 0; // non-functional coins
893
- const valueForEmpty = emptyChains ? false : undefined;
894
- result[code] = this.safeCurrencyStructure({
895
- 'info': currency,
896
- 'code': code,
897
- 'id': currencyId,
898
- 'type': 'crypto',
899
- 'name': name,
853
+ return this.parseCurrencies(response);
854
+ }
855
+ parseCurrency(rawCurrency) {
856
+ const currencyId = this.safeString(rawCurrency, 'coin');
857
+ const code = this.safeCurrencyCode(currencyId);
858
+ const name = this.safeString(rawCurrency, 'name');
859
+ const networks = {};
860
+ const chains = this.safeList(rawCurrency, 'networkList', []);
861
+ for (let j = 0; j < chains.length; j++) {
862
+ const chain = this.safeDict(chains, j);
863
+ const networkId = this.safeString(chain, 'network');
864
+ const networkCode = this.networkIdToCode(networkId, code);
865
+ networks[networkCode] = {
866
+ 'info': chain,
867
+ 'id': networkId,
868
+ 'network': networkCode,
900
869
  'active': undefined,
901
- 'deposit': valueForEmpty,
902
- 'withdraw': valueForEmpty,
903
- 'fee': undefined,
904
- 'precision': undefined,
870
+ 'deposit': this.safeBool(chain, 'depositEnable'),
871
+ 'withdraw': this.safeBool(chain, 'withdrawEnable'),
872
+ 'fee': this.safeNumber(chain, 'withdrawFee'),
873
+ 'precision': this.safeNumber(chain, 'withdrawIntegerMultiple'),
874
+ 'isDefault': this.safeBool(chain, 'isDefault', false),
905
875
  'limits': {
906
- 'amount': {
907
- 'min': undefined,
908
- 'max': undefined,
909
- },
910
876
  'withdraw': {
911
- 'min': undefined,
877
+ 'min': this.safeNumber(chain, 'withdrawMin'),
912
878
  'max': undefined,
913
879
  },
914
880
  'deposit': {
915
- 'min': undefined,
881
+ 'min': this.safeNumber(chain, 'depositDust'),
916
882
  'max': undefined,
917
883
  },
918
884
  },
919
- 'networks': networks,
920
- });
885
+ };
921
886
  }
922
- return result;
887
+ const networkKeys = Object.keys(networks);
888
+ const networksLength = networkKeys.length;
889
+ const emptyChains = networksLength === 0; // non-functional coins
890
+ const valueForEmpty = emptyChains ? false : undefined;
891
+ return this.safeCurrencyStructure({
892
+ 'info': rawCurrency,
893
+ 'code': code,
894
+ 'id': currencyId,
895
+ 'type': 'crypto',
896
+ 'name': name,
897
+ 'active': undefined,
898
+ 'deposit': valueForEmpty,
899
+ 'withdraw': valueForEmpty,
900
+ 'fee': undefined,
901
+ 'precision': undefined,
902
+ 'limits': {
903
+ 'amount': {
904
+ 'min': undefined,
905
+ 'max': undefined,
906
+ },
907
+ 'withdraw': {
908
+ 'min': undefined,
909
+ 'max': undefined,
910
+ },
911
+ 'deposit': {
912
+ 'min': undefined,
913
+ 'max': undefined,
914
+ },
915
+ },
916
+ 'networks': networks,
917
+ });
923
918
  }
924
919
  /**
925
920
  * @method
@@ -644,76 +644,74 @@ class whitebit extends whitebit$1["default"] {
644
644
  // }
645
645
  // }
646
646
  //
647
- const ids = Object.keys(response);
648
- const result = {};
649
- for (let i = 0; i < ids.length; i++) {
650
- const id = ids[i];
651
- const currency = response[id];
652
- // const name = this.safeString (currency, 'name'); // breaks down in Python due to utf8 encoding issues on the exchange side
653
- const code = this.safeCurrencyCode(id);
654
- const hasProvider = ('providers' in currency);
655
- const networks = {};
656
- const rawNetworks = this.safeDict(currency, 'networks', {});
657
- const depositsNetworks = this.safeList(rawNetworks, 'deposits', []);
658
- const withdrawsNetworks = this.safeList(rawNetworks, 'withdraws', []);
659
- const networkLimits = this.safeDict(currency, 'limits', {});
660
- const depositLimits = this.safeDict(networkLimits, 'deposit', {});
661
- const withdrawLimits = this.safeDict(networkLimits, 'withdraw', {});
662
- const allNetworks = this.arrayConcat(depositsNetworks, withdrawsNetworks);
663
- for (let j = 0; j < allNetworks.length; j++) {
664
- const networkId = allNetworks[j];
665
- const networkCode = this.networkIdToCode(networkId);
666
- const networkDepositLimits = this.safeDict(depositLimits, networkId, {});
667
- const networkWithdrawLimits = this.safeDict(withdrawLimits, networkId, {});
668
- networks[networkCode] = {
669
- 'id': networkId,
670
- 'network': networkCode,
671
- 'active': undefined,
672
- 'deposit': this.inArray(networkId, depositsNetworks),
673
- 'withdraw': this.inArray(networkId, withdrawsNetworks),
674
- 'fee': undefined,
675
- 'precision': undefined,
676
- 'limits': {
677
- 'deposit': {
678
- 'min': this.safeNumber(networkDepositLimits, 'min'),
679
- 'max': this.safeNumber(networkDepositLimits, 'max'),
680
- },
681
- 'withdraw': {
682
- 'min': this.safeNumber(networkWithdrawLimits, 'min'),
683
- 'max': this.safeNumber(networkWithdrawLimits, 'max'),
684
- },
685
- },
686
- };
687
- }
688
- result[code] = this.safeCurrencyStructure({
689
- 'id': id,
690
- 'code': code,
691
- 'info': currency,
692
- 'name': undefined,
647
+ const enhancedArray = this.addKeyInArrayItems(response, '_coin_id');
648
+ return this.parseCurrencies(enhancedArray);
649
+ }
650
+ parseCurrency(rawCurrency) {
651
+ // const name = this.safeString (currency, 'name'); // breaks down in Python due to utf8 encoding issues on the exchange side
652
+ const id = this.safeString(rawCurrency, '_coin_id');
653
+ const code = this.safeCurrencyCode(id);
654
+ const hasProvider = ('providers' in rawCurrency);
655
+ const networks = {};
656
+ const rawNetworks = this.safeDict(rawCurrency, 'networks', {});
657
+ const depositsNetworks = this.safeList(rawNetworks, 'deposits', []);
658
+ const withdrawsNetworks = this.safeList(rawNetworks, 'withdraws', []);
659
+ const networkLimits = this.safeDict(rawCurrency, 'limits', {});
660
+ const depositLimits = this.safeDict(networkLimits, 'deposit', {});
661
+ const withdrawLimits = this.safeDict(networkLimits, 'withdraw', {});
662
+ const allNetworks = this.arrayConcat(depositsNetworks, withdrawsNetworks);
663
+ for (let j = 0; j < allNetworks.length; j++) {
664
+ const networkId = allNetworks[j];
665
+ const networkCode = this.networkIdToCode(networkId, code);
666
+ const networkDepositLimits = this.safeDict(depositLimits, networkId, {});
667
+ const networkWithdrawLimits = this.safeDict(withdrawLimits, networkId, {});
668
+ networks[networkCode] = {
669
+ 'id': networkId,
670
+ 'network': networkCode,
693
671
  'active': undefined,
694
- 'deposit': this.safeBool(currency, 'can_deposit'),
695
- 'withdraw': this.safeBool(currency, 'can_withdraw'),
672
+ 'deposit': this.inArray(networkId, depositsNetworks),
673
+ 'withdraw': this.inArray(networkId, withdrawsNetworks),
696
674
  'fee': undefined,
697
- 'networks': networks,
698
- 'type': hasProvider ? 'fiat' : 'crypto',
699
- 'precision': this.parseNumber(this.parsePrecision(this.safeString(currency, 'currency_precision'))),
675
+ 'precision': undefined,
700
676
  'limits': {
701
- 'amount': {
702
- 'min': undefined,
703
- 'max': undefined,
677
+ 'deposit': {
678
+ 'min': this.safeNumber(networkDepositLimits, 'min'),
679
+ 'max': this.safeNumber(networkDepositLimits, 'max'),
704
680
  },
705
681
  'withdraw': {
706
- 'min': this.safeNumber(currency, 'min_withdraw'),
707
- 'max': this.safeNumber(currency, 'max_withdraw'),
708
- },
709
- 'deposit': {
710
- 'min': this.safeNumber(currency, 'min_deposit'),
711
- 'max': this.safeNumber(currency, 'max_deposit'),
682
+ 'min': this.safeNumber(networkWithdrawLimits, 'min'),
683
+ 'max': this.safeNumber(networkWithdrawLimits, 'max'),
712
684
  },
713
685
  },
714
- });
686
+ };
715
687
  }
716
- return result;
688
+ return this.safeCurrencyStructure({
689
+ 'id': id,
690
+ 'code': code,
691
+ 'info': rawCurrency,
692
+ 'name': undefined,
693
+ 'active': undefined,
694
+ 'deposit': this.safeBool(rawCurrency, 'can_deposit'),
695
+ 'withdraw': this.safeBool(rawCurrency, 'can_withdraw'),
696
+ 'fee': undefined,
697
+ 'networks': networks,
698
+ 'type': hasProvider ? 'fiat' : 'crypto',
699
+ 'precision': this.parseNumber(this.parsePrecision(this.safeString(rawCurrency, 'currency_precision'))),
700
+ 'limits': {
701
+ 'amount': {
702
+ 'min': undefined,
703
+ 'max': undefined,
704
+ },
705
+ 'withdraw': {
706
+ 'min': this.safeNumber(rawCurrency, 'min_withdraw'),
707
+ 'max': this.safeNumber(rawCurrency, 'max_withdraw'),
708
+ },
709
+ 'deposit': {
710
+ 'min': this.safeNumber(rawCurrency, 'min_deposit'),
711
+ 'max': this.safeNumber(rawCurrency, 'max_deposit'),
712
+ },
713
+ },
714
+ });
717
715
  }
718
716
  /**
719
717
  * @method
@@ -901,7 +899,7 @@ class whitebit extends whitebit$1["default"] {
901
899
  if (networkId !== undefined) {
902
900
  const networkLength = networkId.length;
903
901
  networkId = networkId.slice(1, networkLength - 1);
904
- const networkCode = this.networkIdToCode(networkId);
902
+ const networkCode = this.networkIdToCode(networkId, code);
905
903
  depositWithdrawFees[code]['networks'][networkCode] = {
906
904
  'withdraw': withdrawResult,
907
905
  'deposit': depositResult,
@@ -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
@@ -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
  // {