ccxt 4.2.82 → 4.2.83

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 (126) hide show
  1. package/README.md +4 -4
  2. package/dist/ccxt.browser.js +794 -183
  3. package/dist/ccxt.browser.min.js +2 -2
  4. package/dist/cjs/ccxt.js +3 -1
  5. package/dist/cjs/src/bitget.js +1 -0
  6. package/dist/cjs/src/bithumb.js +1 -0
  7. package/dist/cjs/src/bitstamp.js +42 -15
  8. package/dist/cjs/src/deribit.js +19 -1
  9. package/dist/cjs/src/gemini.js +2 -1
  10. package/dist/cjs/src/hyperliquid.js +5 -4
  11. package/dist/cjs/src/kucoinfutures.js +147 -8
  12. package/dist/cjs/src/pro/bithumb.js +388 -0
  13. package/dist/cjs/src/pro/bitmart.js +1 -1
  14. package/dist/cjs/src/pro/bybit.js +1 -1
  15. package/dist/cjs/src/pro/cex.js +18 -5
  16. package/dist/cjs/src/pro/okx.js +2 -1
  17. package/dist/cjs/src/pro/p2b.js +14 -4
  18. package/dist/cjs/src/pro/woo.js +1 -1
  19. package/js/ccxt.d.ts +4 -1
  20. package/js/ccxt.js +3 -1
  21. package/js/src/abstract/bitstamp.d.ts +1 -1
  22. package/js/src/ace.d.ts +1 -1
  23. package/js/src/alpaca.d.ts +1 -1
  24. package/js/src/ascendex.d.ts +1 -1
  25. package/js/src/bigone.d.ts +1 -1
  26. package/js/src/binance.d.ts +1 -1
  27. package/js/src/bingx.d.ts +1 -1
  28. package/js/src/bitbank.d.ts +1 -1
  29. package/js/src/bitbns.d.ts +1 -1
  30. package/js/src/bitfinex.d.ts +1 -1
  31. package/js/src/bitfinex2.d.ts +1 -1
  32. package/js/src/bitflyer.d.ts +1 -1
  33. package/js/src/bitget.d.ts +1 -1
  34. package/js/src/bitget.js +1 -0
  35. package/js/src/bithumb.d.ts +1 -1
  36. package/js/src/bithumb.js +1 -0
  37. package/js/src/bitmart.d.ts +1 -1
  38. package/js/src/bitmex.d.ts +1 -1
  39. package/js/src/bitopro.d.ts +1 -1
  40. package/js/src/bitrue.d.ts +1 -1
  41. package/js/src/bitso.d.ts +1 -1
  42. package/js/src/bitstamp.d.ts +1 -1
  43. package/js/src/bitstamp.js +42 -15
  44. package/js/src/bitteam.d.ts +1 -1
  45. package/js/src/bitvavo.d.ts +1 -1
  46. package/js/src/blockchaincom.d.ts +1 -1
  47. package/js/src/blofin.d.ts +1 -1
  48. package/js/src/btcalpha.d.ts +1 -1
  49. package/js/src/btcmarkets.d.ts +1 -1
  50. package/js/src/btcturk.d.ts +1 -1
  51. package/js/src/bybit.d.ts +1 -1
  52. package/js/src/cex.d.ts +1 -1
  53. package/js/src/coinbase.d.ts +1 -1
  54. package/js/src/coinbaseinternational.d.ts +1 -1
  55. package/js/src/coinbasepro.d.ts +1 -1
  56. package/js/src/coinex.d.ts +1 -1
  57. package/js/src/coinlist.d.ts +1 -1
  58. package/js/src/coinmate.d.ts +1 -1
  59. package/js/src/coinmetro.d.ts +1 -1
  60. package/js/src/coinone.d.ts +1 -1
  61. package/js/src/coinsph.d.ts +1 -1
  62. package/js/src/cryptocom.d.ts +1 -1
  63. package/js/src/currencycom.d.ts +1 -1
  64. package/js/src/delta.d.ts +1 -1
  65. package/js/src/deribit.d.ts +1 -1
  66. package/js/src/deribit.js +19 -1
  67. package/js/src/digifinex.d.ts +1 -1
  68. package/js/src/exmo.d.ts +1 -1
  69. package/js/src/gate.d.ts +1 -1
  70. package/js/src/gemini.d.ts +1 -1
  71. package/js/src/gemini.js +2 -1
  72. package/js/src/hitbtc.d.ts +1 -1
  73. package/js/src/hollaex.d.ts +1 -1
  74. package/js/src/htx.d.ts +1 -1
  75. package/js/src/huobijp.d.ts +1 -1
  76. package/js/src/hyperliquid.d.ts +1 -1
  77. package/js/src/hyperliquid.js +5 -4
  78. package/js/src/idex.d.ts +1 -1
  79. package/js/src/independentreserve.d.ts +1 -1
  80. package/js/src/indodax.d.ts +1 -1
  81. package/js/src/kraken.d.ts +1 -1
  82. package/js/src/krakenfutures.d.ts +1 -1
  83. package/js/src/kucoin.d.ts +1 -1
  84. package/js/src/kucoinfutures.d.ts +3 -2
  85. package/js/src/kucoinfutures.js +147 -8
  86. package/js/src/kuna.d.ts +1 -1
  87. package/js/src/latoken.d.ts +1 -1
  88. package/js/src/lbank.d.ts +1 -1
  89. package/js/src/luno.d.ts +1 -1
  90. package/js/src/lykke.d.ts +1 -1
  91. package/js/src/mercado.d.ts +1 -1
  92. package/js/src/mexc.d.ts +1 -1
  93. package/js/src/ndax.d.ts +1 -1
  94. package/js/src/novadax.d.ts +1 -1
  95. package/js/src/oceanex.d.ts +1 -1
  96. package/js/src/okcoin.d.ts +1 -1
  97. package/js/src/okx.d.ts +1 -1
  98. package/js/src/onetrading.d.ts +1 -1
  99. package/js/src/p2b.d.ts +1 -1
  100. package/js/src/phemex.d.ts +1 -1
  101. package/js/src/poloniex.d.ts +1 -1
  102. package/js/src/poloniexfutures.d.ts +1 -1
  103. package/js/src/pro/bithumb.d.ts +19 -0
  104. package/js/src/pro/bithumb.js +389 -0
  105. package/js/src/pro/bitmart.js +1 -1
  106. package/js/src/pro/bybit.js +1 -1
  107. package/js/src/pro/cex.js +18 -5
  108. package/js/src/pro/okx.js +2 -1
  109. package/js/src/pro/p2b.d.ts +2 -0
  110. package/js/src/pro/p2b.js +14 -4
  111. package/js/src/pro/woo.js +1 -1
  112. package/js/src/probit.d.ts +1 -1
  113. package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +1 -1
  114. package/js/src/timex.d.ts +1 -1
  115. package/js/src/tokocrypto.d.ts +1 -1
  116. package/js/src/tradeogre.d.ts +1 -1
  117. package/js/src/upbit.d.ts +1 -1
  118. package/js/src/wavesexchange.d.ts +1 -1
  119. package/js/src/wazirx.d.ts +1 -1
  120. package/js/src/whitebit.d.ts +1 -1
  121. package/js/src/woo.d.ts +1 -1
  122. package/js/src/yobit.d.ts +1 -1
  123. package/js/src/zaif.d.ts +1 -1
  124. package/js/src/zonda.d.ts +1 -1
  125. package/package.json +1 -1
  126. package/skip-tests.json +17 -4
@@ -46627,6 +46627,7 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
46627
46627
  'precisionMode': _base_functions_number_js__WEBPACK_IMPORTED_MODULE_2__/* .TICK_SIZE */ .sh,
46628
46628
  'commonCurrencies': {
46629
46629
  'JADE': 'Jade Protocol',
46630
+ 'DEGEN': 'DegenReborn',
46630
46631
  },
46631
46632
  'options': {
46632
46633
  'timeframes': {
@@ -53868,6 +53869,7 @@ class bithumb extends _abstract_bithumb_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
53868
53869
  'name': 'Bithumb',
53869
53870
  'countries': ['KR'],
53870
53871
  'rateLimit': 500,
53872
+ 'pro': true,
53871
53873
  'has': {
53872
53874
  'CORS': true,
53873
53875
  'spot': true,
@@ -69380,7 +69382,7 @@ class bitstamp extends _abstract_bitstamp_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
69380
69382
  'transfer-from-main/': 1,
69381
69383
  'my_trading_pairs/': 1,
69382
69384
  'fees/trading/': 1,
69383
- 'fees/trading/{pair}': 1,
69385
+ 'fees/trading/{market_symbol}': 1,
69384
69386
  'fees/withdrawal/': 1,
69385
69387
  'fees/withdrawal/{currency}/': 1,
69386
69388
  'withdrawal-requests/': 1,
@@ -70380,7 +70382,7 @@ class bitstamp extends _abstract_bitstamp_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
70380
70382
  * @method
70381
70383
  * @name bitstamp#fetchTradingFee
70382
70384
  * @description fetch the trading fees for a market
70383
- * @see https://www.bitstamp.net/api/#tag/Fees/operation/GetAllTradingFees
70385
+ * @see https://www.bitstamp.net/api/#tag/Fees/operation/GetTradingFeesForCurrency
70384
70386
  * @param {string} symbol unified market symbol
70385
70387
  * @param {object} [params] extra parameters specific to the exchange API endpoint
70386
70388
  * @returns {object} a [fee structure]{@link https://docs.ccxt.com/#/?id=fee-structure}
@@ -70388,21 +70390,35 @@ class bitstamp extends _abstract_bitstamp_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
70388
70390
  await this.loadMarkets();
70389
70391
  const market = this.market(symbol);
70390
70392
  const request = {
70391
- 'pair': market['id'],
70393
+ 'market_symbol': market['id'],
70392
70394
  };
70393
- const response = await this.privatePostBalancePair(this.extend(request, params));
70394
- return this.parseTradingFee(response, market);
70395
+ const response = await this.privatePostFeesTrading(this.extend(request, params));
70396
+ //
70397
+ // [
70398
+ // {
70399
+ // "currency_pair": "btcusd",
70400
+ // "fees":
70401
+ // {
70402
+ // "maker": "0.15000",
70403
+ // "taker": "0.16000"
70404
+ // },
70405
+ // "market": "btcusd"
70406
+ // }
70407
+ // ...
70408
+ // ]
70409
+ //
70410
+ const tradingFeesByMarketId = this.indexBy(response, 'currency_pair');
70411
+ const tradingFee = this.safeDict(tradingFeesByMarketId, market['id']);
70412
+ return this.parseTradingFee(tradingFee, market);
70395
70413
  }
70396
70414
  parseTradingFee(fee, market = undefined) {
70397
- market = this.safeMarket(undefined, market);
70398
- const feeString = this.safeString(fee, market['id'] + '_fee');
70399
- const dividedFeeString = _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise */ .O.stringDiv(feeString, '100');
70400
- const tradeFee = this.parseNumber(dividedFeeString);
70415
+ const marketId = this.safeString(fee, 'market');
70416
+ const fees = this.safeDict(fee, 'fees', {});
70401
70417
  return {
70402
70418
  'info': fee,
70403
- 'symbol': market['symbol'],
70404
- 'maker': tradeFee,
70405
- 'taker': tradeFee,
70419
+ 'symbol': this.safeSymbol(marketId, market),
70420
+ 'maker': this.safeNumber(fees, 'maker'),
70421
+ 'taker': this.safeNumber(fees, 'taker'),
70406
70422
  };
70407
70423
  }
70408
70424
  parseTradingFees(fees) {
@@ -70410,8 +70426,7 @@ class bitstamp extends _abstract_bitstamp_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
70410
70426
  const symbols = this.symbols;
70411
70427
  for (let i = 0; i < symbols.length; i++) {
70412
70428
  const symbol = symbols[i];
70413
- const market = this.market(symbol);
70414
- const fee = this.parseTradingFee(fees, market);
70429
+ const fee = this.parseTradingFee(fees[i]);
70415
70430
  result[symbol] = fee;
70416
70431
  }
70417
70432
  return result;
@@ -70426,7 +70441,21 @@ class bitstamp extends _abstract_bitstamp_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
70426
70441
  * @returns {object} a dictionary of [fee structures]{@link https://docs.ccxt.com/#/?id=fee-structure} indexed by market symbols
70427
70442
  */
70428
70443
  await this.loadMarkets();
70429
- const response = await this.privatePostBalance(params);
70444
+ const response = await this.privatePostFeesTrading(params);
70445
+ //
70446
+ // [
70447
+ // {
70448
+ // "currency_pair": "btcusd",
70449
+ // "fees":
70450
+ // {
70451
+ // "maker": "0.15000",
70452
+ // "taker": "0.16000"
70453
+ // },
70454
+ // "market": "btcusd"
70455
+ // }
70456
+ // ...
70457
+ // ]
70458
+ //
70430
70459
  return this.parseTradingFees(response);
70431
70460
  }
70432
70461
  async fetchTransactionFees(codes = undefined, params = {}) {
@@ -127151,9 +127180,16 @@ class deribit extends _abstract_deribit_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
127151
127180
  * @param {int} [since] timestamp in ms of the earliest candle to fetch
127152
127181
  * @param {int} [limit] the maximum amount of candles to fetch
127153
127182
  * @param {object} [params] extra parameters specific to the exchange API endpoint
127183
+ * @param {boolean} [params.paginate] whether to paginate the results, set to false by default
127184
+ * @param {int} [params.until] the latest time in ms to fetch ohlcv for
127154
127185
  * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
127155
127186
  */
127156
127187
  await this.loadMarkets();
127188
+ let paginate = false;
127189
+ [paginate, params] = this.handleOptionAndParams(params, 'fetchOHLCV', 'paginate');
127190
+ if (paginate) {
127191
+ return await this.fetchPaginatedCallDeterministic('fetchOHLCV', symbol, since, limit, timeframe, params, 5000);
127192
+ }
127157
127193
  const market = this.market(symbol);
127158
127194
  const request = {
127159
127195
  'instrument_name': market['id'],
@@ -127178,6 +127214,11 @@ class deribit extends _abstract_deribit_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
127178
127214
  request['end_timestamp'] = this.sum(since, limit * duration * 1000);
127179
127215
  }
127180
127216
  }
127217
+ const until = this.safeInteger(params, 'until');
127218
+ if (until !== undefined) {
127219
+ params = this.omit(params, 'until');
127220
+ request['end_timestamp'] = until;
127221
+ }
127181
127222
  const response = await this.publicGetGetTradingviewChartData(this.extend(request, params));
127182
127223
  //
127183
127224
  // {
@@ -127302,6 +127343,7 @@ class deribit extends _abstract_deribit_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
127302
127343
  * @param {int} [since] timestamp in ms of the earliest trade to fetch
127303
127344
  * @param {int} [limit] the maximum amount of trades to fetch
127304
127345
  * @param {object} [params] extra parameters specific to the exchange API endpoint
127346
+ * @param {int} [params.until] the latest time in ms to fetch trades for
127305
127347
  * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
127306
127348
  */
127307
127349
  await this.loadMarkets();
@@ -127316,8 +127358,13 @@ class deribit extends _abstract_deribit_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
127316
127358
  if (limit !== undefined) {
127317
127359
  request['count'] = Math.min(limit, 1000); // default 10
127318
127360
  }
127361
+ const until = this.safeInteger2(params, 'until', 'end_timestamp');
127362
+ if (until !== undefined) {
127363
+ params = this.omit(params, ['until']);
127364
+ request['end_timestamp'] = until;
127365
+ }
127319
127366
  let response = undefined;
127320
- if (since === undefined) {
127367
+ if ((since === undefined) && !('end_timestamp' in request)) {
127321
127368
  response = await this.publicGetGetLastTradesByInstrument(this.extend(request, params));
127322
127369
  }
127323
127370
  else {
@@ -144254,7 +144301,8 @@ class gemini extends _abstract_gemini_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
144254
144301
  },
144255
144302
  'broad': {
144256
144303
  'The Gemini Exchange is currently undergoing maintenance.': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OnMaintenance,
144257
- 'We are investigating technical issues with the Gemini Exchange.': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeNotAvailable, // We are investigating technical issues with the Gemini Exchange. Please check https://status.gemini.com/ for more information.
144304
+ 'We are investigating technical issues with the Gemini Exchange.': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeNotAvailable,
144305
+ 'Internal Server Error': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeNotAvailable,
144258
144306
  },
144259
144307
  },
144260
144308
  'options': {
@@ -164502,7 +164550,7 @@ class hyperliquid extends _abstract_hyperliquid_js__WEBPACK_IMPORTED_MODULE_0__/
164502
164550
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.ArgumentsRequired(this.id + ' setMarginMode() requires a leverage parameter');
164503
164551
  }
164504
164552
  const asset = this.parseToInt(market['baseId']);
164505
- const isCross = (marginMode === 'isolated');
164553
+ const isCross = (marginMode === 'cross');
164506
164554
  const nonce = this.milliseconds();
164507
164555
  params = this.omit(params, ['leverage']);
164508
164556
  const updateAction = {
@@ -164518,9 +164566,10 @@ class hyperliquid extends _abstract_hyperliquid_js__WEBPACK_IMPORTED_MODULE_0__/
164518
164566
  vaultAddress = vaultAddress.replace('0x', '');
164519
164567
  }
164520
164568
  }
164521
- const signature = this.signL1Action(updateAction, nonce, vaultAddress);
164569
+ const extendedAction = this.extend(updateAction, params);
164570
+ const signature = this.signL1Action(extendedAction, nonce, vaultAddress);
164522
164571
  const request = {
164523
- 'action': updateAction,
164572
+ 'action': extendedAction,
164524
164573
  'nonce': nonce,
164525
164574
  'signature': signature,
164526
164575
  // 'vaultAddress': vaultAddress,
@@ -164528,7 +164577,7 @@ class hyperliquid extends _abstract_hyperliquid_js__WEBPACK_IMPORTED_MODULE_0__/
164528
164577
  if (vaultAddress !== undefined) {
164529
164578
  request['vaultAddress'] = vaultAddress;
164530
164579
  }
164531
- const response = await this.privatePostExchange(this.extend(request, params));
164580
+ const response = await this.privatePostExchange(request);
164532
164581
  //
164533
164582
  // {
164534
164583
  // 'response': {
@@ -179294,7 +179343,7 @@ class kucoinfutures extends _abstract_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_
179294
179343
  'fetchPremiumIndexOHLCV': false,
179295
179344
  'fetchStatus': true,
179296
179345
  'fetchTicker': true,
179297
- 'fetchTickers': false,
179346
+ 'fetchTickers': true,
179298
179347
  'fetchTime': true,
179299
179348
  'fetchTrades': true,
179300
179349
  'fetchTransactionFee': false,
@@ -179965,6 +180014,85 @@ class kucoinfutures extends _abstract_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_
179965
180014
  //
179966
180015
  return this.parseTicker(response['data'], market);
179967
180016
  }
180017
+ async fetchTickers(symbols = undefined, params = {}) {
180018
+ /**
180019
+ * @method
180020
+ * @name kucoinfutures#fetchTickers
180021
+ * @description fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
180022
+ * @see https://www.kucoin.com/docs/rest/futures-trading/market-data/get-symbols-list
180023
+ * @param {string[]} [symbols] unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
180024
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
180025
+ * @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
180026
+ */
180027
+ await this.loadMarkets();
180028
+ symbols = this.marketSymbols(symbols);
180029
+ const response = await this.futuresPublicGetContractsActive(params);
180030
+ //
180031
+ // {
180032
+ // "code": "200000",
180033
+ // "data": {
180034
+ // "symbol": "ETHUSDTM",
180035
+ // "rootSymbol": "USDT",
180036
+ // "type": "FFWCSX",
180037
+ // "firstOpenDate": 1591086000000,
180038
+ // "expireDate": null,
180039
+ // "settleDate": null,
180040
+ // "baseCurrency": "ETH",
180041
+ // "quoteCurrency": "USDT",
180042
+ // "settleCurrency": "USDT",
180043
+ // "maxOrderQty": 1000000,
180044
+ // "maxPrice": 1000000.0000000000,
180045
+ // "lotSize": 1,
180046
+ // "tickSize": 0.05,
180047
+ // "indexPriceTickSize": 0.01,
180048
+ // "multiplier": 0.01,
180049
+ // "initialMargin": 0.01,
180050
+ // "maintainMargin": 0.005,
180051
+ // "maxRiskLimit": 1000000,
180052
+ // "minRiskLimit": 1000000,
180053
+ // "riskStep": 500000,
180054
+ // "makerFeeRate": 0.00020,
180055
+ // "takerFeeRate": 0.00060,
180056
+ // "takerFixFee": 0.0000000000,
180057
+ // "makerFixFee": 0.0000000000,
180058
+ // "settlementFee": null,
180059
+ // "isDeleverage": true,
180060
+ // "isQuanto": true,
180061
+ // "isInverse": false,
180062
+ // "markMethod": "FairPrice",
180063
+ // "fairMethod": "FundingRate",
180064
+ // "fundingBaseSymbol": ".ETHINT8H",
180065
+ // "fundingQuoteSymbol": ".USDTINT8H",
180066
+ // "fundingRateSymbol": ".ETHUSDTMFPI8H",
180067
+ // "indexSymbol": ".KETHUSDT",
180068
+ // "settlementSymbol": "",
180069
+ // "status": "Open",
180070
+ // "fundingFeeRate": 0.000535,
180071
+ // "predictedFundingFeeRate": 0.002197,
180072
+ // "openInterest": "8724443",
180073
+ // "turnoverOf24h": 341156641.03354263,
180074
+ // "volumeOf24h": 74833.54000000,
180075
+ // "markPrice": 4534.07,
180076
+ // "indexPrice":4531.92,
180077
+ // "lastTradePrice": 4545.4500000000,
180078
+ // "nextFundingRateTime": 25481884,
180079
+ // "maxLeverage": 100,
180080
+ // "sourceExchanges": [ "huobi", "Okex", "Binance", "Kucoin", "Poloniex", "Hitbtc" ],
180081
+ // "premiumsSymbol1M": ".ETHUSDTMPI",
180082
+ // "premiumsSymbol8H": ".ETHUSDTMPI8H",
180083
+ // "fundingBaseSymbol1M": ".ETHINT",
180084
+ // "fundingQuoteSymbol1M": ".USDTINT",
180085
+ // "lowPrice": 4456.90,
180086
+ // "highPrice": 4674.25,
180087
+ // "priceChgPct": 0.0046,
180088
+ // "priceChg": 21.15
180089
+ // }
180090
+ // }
180091
+ //
180092
+ const data = this.safeList(response, 'data', []);
180093
+ const tickers = this.parseTickers(data, symbols);
180094
+ return this.filterByArrayTickers(tickers, 'symbol', symbols);
180095
+ }
179968
180096
  parseTicker(ticker, market = undefined) {
179969
180097
  //
179970
180098
  // {
@@ -179984,16 +180112,76 @@ class kucoinfutures extends _abstract_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_
179984
180112
  // }
179985
180113
  // }
179986
180114
  //
179987
- const last = this.safeString(ticker, 'price');
180115
+ // from fetchTickers
180116
+ //
180117
+ // {
180118
+ // symbol: "XBTUSDTM",
180119
+ // rootSymbol: "USDT",
180120
+ // type: "FFWCSX",
180121
+ // firstOpenDate: 1585555200000,
180122
+ // expireDate: null,
180123
+ // settleDate: null,
180124
+ // baseCurrency: "XBT",
180125
+ // quoteCurrency: "USDT",
180126
+ // settleCurrency: "USDT",
180127
+ // maxOrderQty: 1000000,
180128
+ // maxPrice: 1000000,
180129
+ // lotSize: 1,
180130
+ // tickSize: 0.1,
180131
+ // indexPriceTickSize: 0.01,
180132
+ // multiplier: 0.001,
180133
+ // initialMargin: 0.008,
180134
+ // maintainMargin: 0.004,
180135
+ // maxRiskLimit: 100000,
180136
+ // minRiskLimit: 100000,
180137
+ // riskStep: 50000,
180138
+ // makerFeeRate: 0.0002,
180139
+ // takerFeeRate: 0.0006,
180140
+ // takerFixFee: 0,
180141
+ // makerFixFee: 0,
180142
+ // settlementFee: null,
180143
+ // isDeleverage: true,
180144
+ // isQuanto: true,
180145
+ // isInverse: false,
180146
+ // markMethod: "FairPrice",
180147
+ // fairMethod: "FundingRate",
180148
+ // fundingBaseSymbol: ".XBTINT8H",
180149
+ // fundingQuoteSymbol: ".USDTINT8H",
180150
+ // fundingRateSymbol: ".XBTUSDTMFPI8H",
180151
+ // indexSymbol: ".KXBTUSDT",
180152
+ // settlementSymbol: "",
180153
+ // status: "Open",
180154
+ // fundingFeeRate: 0.000297,
180155
+ // predictedFundingFeeRate: 0.000327,
180156
+ // fundingRateGranularity: 28800000,
180157
+ // openInterest: "8033200",
180158
+ // turnoverOf24h: 659795309.2524643,
180159
+ // volumeOf24h: 9998.54,
180160
+ // markPrice: 67193.51,
180161
+ // indexPrice: 67184.81,
180162
+ // lastTradePrice: 67191.8,
180163
+ // nextFundingRateTime: 20022985,
180164
+ // maxLeverage: 125,
180165
+ // premiumsSymbol1M: ".XBTUSDTMPI",
180166
+ // premiumsSymbol8H: ".XBTUSDTMPI8H",
180167
+ // fundingBaseSymbol1M: ".XBTINT",
180168
+ // fundingQuoteSymbol1M: ".USDTINT",
180169
+ // lowPrice: 64041.6,
180170
+ // highPrice: 67737.3,
180171
+ // priceChgPct: 0.0447,
180172
+ // priceChg: 2878.7
180173
+ // }
180174
+ //
179988
180175
  const marketId = this.safeString(ticker, 'symbol');
179989
180176
  market = this.safeMarket(marketId, market, '-');
180177
+ const last = this.safeString2(ticker, 'price', 'lastTradePrice');
179990
180178
  const timestamp = this.safeIntegerProduct(ticker, 'ts', 0.000001);
179991
180179
  return this.safeTicker({
179992
180180
  'symbol': market['symbol'],
179993
180181
  'timestamp': timestamp,
179994
180182
  'datetime': this.iso8601(timestamp),
179995
- 'high': undefined,
179996
- 'low': undefined,
180183
+ 'high': this.safeString(ticker, 'highPrice'),
180184
+ 'low': this.safeString(ticker, 'lowPrice'),
179997
180185
  'bid': this.safeString(ticker, 'bestBidPrice'),
179998
180186
  'bidVolume': this.safeString(ticker, 'bestBidSize'),
179999
180187
  'ask': this.safeString(ticker, 'bestAskPrice'),
@@ -180003,11 +180191,11 @@ class kucoinfutures extends _abstract_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_
180003
180191
  'close': last,
180004
180192
  'last': last,
180005
180193
  'previousClose': undefined,
180006
- 'change': undefined,
180007
- 'percentage': undefined,
180194
+ 'change': this.safeString(ticker, 'priceChg'),
180195
+ 'percentage': this.safeString(ticker, 'priceChgPct'),
180008
180196
  'average': undefined,
180009
- 'baseVolume': undefined,
180010
- 'quoteVolume': undefined,
180197
+ 'baseVolume': this.safeString(ticker, 'volumeOf24h'),
180198
+ 'quoteVolume': this.safeString(ticker, 'turnoverOf24h'),
180011
180199
  'info': ticker,
180012
180200
  }, market);
180013
180201
  }
@@ -235645,6 +235833,402 @@ class bitget extends _bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
235645
235833
  }
235646
235834
 
235647
235835
 
235836
+ /***/ }),
235837
+
235838
+ /***/ 4922:
235839
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
235840
+
235841
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
235842
+ /* harmony export */ Z: () => (/* binding */ bithumb)
235843
+ /* harmony export */ });
235844
+ /* harmony import */ var _bithumb_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5305);
235845
+ /* harmony import */ var _base_ws_Cache_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3020);
235846
+ /* harmony import */ var _base_errors_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6689);
235847
+ // ---------------------------------------------------------------------------
235848
+
235849
+
235850
+
235851
+ // ---------------------------------------------------------------------------
235852
+ class bithumb extends _bithumb_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
235853
+ describe() {
235854
+ return this.deepExtend(super.describe(), {
235855
+ 'has': {
235856
+ 'ws': true,
235857
+ 'watchBalance': false,
235858
+ 'watchTicker': true,
235859
+ 'watchTickers': true,
235860
+ 'watchTrades': true,
235861
+ 'watchOrderBook': true,
235862
+ 'watchOHLCV': false,
235863
+ },
235864
+ 'urls': {
235865
+ 'api': {
235866
+ 'ws': 'wss://pubwss.bithumb.com/pub/ws',
235867
+ },
235868
+ },
235869
+ 'options': {},
235870
+ 'streaming': {},
235871
+ 'exceptions': {},
235872
+ });
235873
+ }
235874
+ async watchTicker(symbol, params = {}) {
235875
+ /**
235876
+ * @method
235877
+ * @name bithumb#watchTicker
235878
+ * @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
235879
+ * @param {string} symbol unified symbol of the market to fetch the ticker for
235880
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
235881
+ * @param {string} [params.channel] the channel to subscribe to, tickers by default. Can be tickers, sprd-tickers, index-tickers, block-tickers
235882
+ * @returns {object} a [ticker structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#ticker-structure}
235883
+ */
235884
+ const url = this.urls['api']['ws'];
235885
+ await this.loadMarkets();
235886
+ const market = this.market(symbol);
235887
+ const messageHash = 'ticker:' + market['symbol'];
235888
+ const request = {
235889
+ 'type': 'ticker',
235890
+ 'symbols': [market['base'] + '_' + market['quote']],
235891
+ 'tickTypes': [this.safeString(params, 'tickTypes', '24H')],
235892
+ };
235893
+ return await this.watch(url, messageHash, this.extend(request, params), messageHash);
235894
+ }
235895
+ async watchTickers(symbols = undefined, params = {}) {
235896
+ /**
235897
+ * @method
235898
+ * @name binance#watchTickers
235899
+ * @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
235900
+ * @param {string[]} symbols unified symbol of the market to fetch the ticker for
235901
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
235902
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
235903
+ */
235904
+ await this.loadMarkets();
235905
+ const url = this.urls['api']['ws'];
235906
+ const marketIds = [];
235907
+ const messageHashes = [];
235908
+ symbols = this.marketSymbols(symbols, undefined, false, true, true);
235909
+ for (let i = 0; i < symbols.length; i++) {
235910
+ const symbol = symbols[i];
235911
+ const market = this.market(symbol);
235912
+ marketIds.push(market['base'] + '_' + market['quote']);
235913
+ messageHashes.push('ticker:' + market['symbol']);
235914
+ }
235915
+ const request = {
235916
+ 'type': 'ticker',
235917
+ 'symbols': marketIds,
235918
+ 'tickTypes': [this.safeString(params, 'tickTypes', '24H')],
235919
+ };
235920
+ const message = this.extend(request, params);
235921
+ const newTicker = await this.watchMultiple(url, messageHashes, message, messageHashes);
235922
+ if (this.newUpdates) {
235923
+ const result = {};
235924
+ result[newTicker['symbol']] = newTicker;
235925
+ return result;
235926
+ }
235927
+ return this.filterByArray(this.tickers, 'symbol', symbols);
235928
+ }
235929
+ handleTicker(client, message) {
235930
+ //
235931
+ // {
235932
+ // "type" : "ticker",
235933
+ // "content" : {
235934
+ // "symbol" : "BTC_KRW", // 통화코드
235935
+ // "tickType" : "24H", // 변동 기준시간- 30M, 1H, 12H, 24H, MID
235936
+ // "date" : "20200129", // 일자
235937
+ // "time" : "121844", // 시간
235938
+ // "openPrice" : "2302", // 시가
235939
+ // "closePrice" : "2317", // 종가
235940
+ // "lowPrice" : "2272", // 저가
235941
+ // "highPrice" : "2344", // 고가
235942
+ // "value" : "2831915078.07065789", // 누적거래금액
235943
+ // "volume" : "1222314.51355788", // 누적거래량
235944
+ // "sellVolume" : "760129.34079004", // 매도누적거래량
235945
+ // "buyVolume" : "462185.17276784", // 매수누적거래량
235946
+ // "prevClosePrice" : "2326", // 전일종가
235947
+ // "chgRate" : "0.65", // 변동률
235948
+ // "chgAmt" : "15", // 변동금액
235949
+ // "volumePower" : "60.80" // 체결강도
235950
+ // }
235951
+ // }
235952
+ //
235953
+ const content = this.safeDict(message, 'content', {});
235954
+ const marketId = this.safeString(content, 'symbol');
235955
+ const symbol = this.safeSymbol(marketId, undefined, '_');
235956
+ const ticker = this.parseWsTicker(content);
235957
+ const messageHash = 'ticker:' + symbol;
235958
+ this.tickers[symbol] = ticker;
235959
+ client.resolve(this.tickers[symbol], messageHash);
235960
+ }
235961
+ parseWsTicker(ticker, market = undefined) {
235962
+ //
235963
+ // {
235964
+ // "symbol" : "BTC_KRW", // 통화코드
235965
+ // "tickType" : "24H", // 변동 기준시간- 30M, 1H, 12H, 24H, MID
235966
+ // "date" : "20200129", // 일자
235967
+ // "time" : "121844", // 시간
235968
+ // "openPrice" : "2302", // 시가
235969
+ // "closePrice" : "2317", // 종가
235970
+ // "lowPrice" : "2272", // 저가
235971
+ // "highPrice" : "2344", // 고가
235972
+ // "value" : "2831915078.07065789", // 누적거래금액
235973
+ // "volume" : "1222314.51355788", // 누적거래량
235974
+ // "sellVolume" : "760129.34079004", // 매도누적거래량
235975
+ // "buyVolume" : "462185.17276784", // 매수누적거래량
235976
+ // "prevClosePrice" : "2326", // 전일종가
235977
+ // "chgRate" : "0.65", // 변동률
235978
+ // "chgAmt" : "15", // 변동금액
235979
+ // "volumePower" : "60.80" // 체결강도
235980
+ // }
235981
+ //
235982
+ const date = this.safeString(ticker, 'date', '');
235983
+ const time = this.safeString(ticker, 'time', '');
235984
+ const datetime = date.slice(0, 4) + '-' + date.slice(4, 6) + '-' + date.slice(6, 8) + 'T' + time.slice(0, 2) + ':' + time.slice(2, 4) + ':' + time.slice(4, 6);
235985
+ const marketId = this.safeString(ticker, 'symbol');
235986
+ return this.safeTicker({
235987
+ 'symbol': this.safeSymbol(marketId, market, '_'),
235988
+ 'timestamp': this.parse8601(datetime),
235989
+ 'datetime': datetime,
235990
+ 'high': this.safeString(ticker, 'highPrice'),
235991
+ 'low': this.safeString(ticker, 'lowPrice'),
235992
+ 'bid': undefined,
235993
+ 'bidVolume': this.safeString(ticker, 'buyVolume'),
235994
+ 'ask': undefined,
235995
+ 'askVolume': this.safeString(ticker, 'sellVolume'),
235996
+ 'vwap': undefined,
235997
+ 'open': this.safeString(ticker, 'openPrice'),
235998
+ 'close': this.safeString(ticker, 'closePrice'),
235999
+ 'last': undefined,
236000
+ 'previousClose': this.safeString(ticker, 'prevClosePrice'),
236001
+ 'change': this.safeString(ticker, 'chgAmt'),
236002
+ 'percentage': this.safeString(ticker, 'chgRate'),
236003
+ 'average': undefined,
236004
+ 'baseVolume': this.safeString(ticker, 'volume'),
236005
+ 'quoteVolume': this.safeString(ticker, 'value'),
236006
+ 'info': ticker,
236007
+ }, market);
236008
+ }
236009
+ async watchOrderBook(symbol, limit = undefined, params = {}) {
236010
+ /**
236011
+ * @method
236012
+ * @name bithumb#watchOrderBook
236013
+ * @description watches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
236014
+ * @param {string} symbol unified symbol of the market to fetch the order book for
236015
+ * @param {int} [limit] the maximum amount of order book entries to return
236016
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
236017
+ * @returns {object} A dictionary of [order book structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-book-structure} indexed by market symbols
236018
+ */
236019
+ await this.loadMarkets();
236020
+ const url = this.urls['api']['ws'];
236021
+ const market = this.market(symbol);
236022
+ symbol = market['symbol'];
236023
+ const messageHash = 'orderbook' + ':' + symbol;
236024
+ const request = {
236025
+ 'type': 'orderbookdepth',
236026
+ 'symbols': [market['base'] + '_' + market['quote']],
236027
+ };
236028
+ const orderbook = await this.watch(url, messageHash, this.extend(request, params), messageHash);
236029
+ return orderbook.limit();
236030
+ }
236031
+ handleOrderBook(client, message) {
236032
+ //
236033
+ // {
236034
+ // "type" : "orderbookdepth",
236035
+ // "content" : {
236036
+ // "list" : [
236037
+ // {
236038
+ // "symbol" : "BTC_KRW",
236039
+ // "orderType" : "ask", // 주문타입 – bid / ask
236040
+ // "price" : "10593000", // 호가
236041
+ // "quantity" : "1.11223318", // 잔량
236042
+ // "total" : "3" // 건수
236043
+ // },
236044
+ // {"symbol" : "BTC_KRW", "orderType" : "ask", "price" : "10596000", "quantity" : "0.5495", "total" : "8"},
236045
+ // {"symbol" : "BTC_KRW", "orderType" : "ask", "price" : "10598000", "quantity" : "18.2085", "total" : "10"},
236046
+ // {"symbol" : "BTC_KRW", "orderType" : "bid", "price" : "10532000", "quantity" : "0", "total" : "0"},
236047
+ // {"symbol" : "BTC_KRW", "orderType" : "bid", "price" : "10572000", "quantity" : "2.3324", "total" : "4"},
236048
+ // {"symbol" : "BTC_KRW", "orderType" : "bid", "price" : "10571000", "quantity" : "1.469", "total" : "3"},
236049
+ // {"symbol" : "BTC_KRW", "orderType" : "bid", "price" : "10569000", "quantity" : "0.5152", "total" : "2"}
236050
+ // ],
236051
+ // "datetime":1580268255864325 // 일시
236052
+ // }
236053
+ // }
236054
+ //
236055
+ const content = this.safeDict(message, 'content', {});
236056
+ const list = this.safeList(content, 'list', []);
236057
+ const first = this.safeDict(list, 0, {});
236058
+ const marketId = this.safeString(first, 'symbol');
236059
+ const symbol = this.safeSymbol(marketId, undefined, '_');
236060
+ const timestampStr = this.safeString(content, 'datetime');
236061
+ const timestamp = this.parseToInt(timestampStr.slice(0, 13));
236062
+ if (!(symbol in this.orderbooks)) {
236063
+ const ob = this.orderBook();
236064
+ ob['symbol'] = symbol;
236065
+ this.orderbooks[symbol] = ob;
236066
+ }
236067
+ const orderbook = this.orderbooks[symbol];
236068
+ this.handleDeltas(orderbook, list);
236069
+ orderbook['timestamp'] = timestamp;
236070
+ orderbook['datetime'] = this.iso8601(timestamp);
236071
+ const messageHash = 'orderbook' + ':' + symbol;
236072
+ client.resolve(orderbook, messageHash);
236073
+ }
236074
+ handleDelta(orderbook, delta) {
236075
+ //
236076
+ // {
236077
+ // symbol: "ETH_BTC",
236078
+ // orderType: "bid",
236079
+ // price: "0.07349517",
236080
+ // quantity: "0",
236081
+ // total: "0",
236082
+ // }
236083
+ //
236084
+ const sideId = this.safeString(delta, 'orderType');
236085
+ const side = (sideId === 'bid') ? 'bids' : 'asks';
236086
+ const bidAsk = this.parseBidAsk(delta, 'price', 'quantity');
236087
+ const orderbookSide = orderbook[side];
236088
+ orderbookSide.storeArray(bidAsk);
236089
+ }
236090
+ handleDeltas(orderbook, deltas) {
236091
+ for (let i = 0; i < deltas.length; i++) {
236092
+ this.handleDelta(orderbook, deltas[i]);
236093
+ }
236094
+ }
236095
+ async watchTrades(symbol, since = undefined, limit = undefined, params = {}) {
236096
+ /**
236097
+ * @method
236098
+ * @name bithumb#watchTrades
236099
+ * @description get the list of most recent trades for a particular symbol
236100
+ * @param {string} symbol unified symbol of the market to fetch trades for
236101
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch
236102
+ * @param {int} [limit] the maximum amount of trades to fetch
236103
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
236104
+ * @returns {object[]} a list of [trade structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#public-trades}
236105
+ */
236106
+ await this.loadMarkets();
236107
+ const url = this.urls['api']['ws'];
236108
+ const market = this.market(symbol);
236109
+ symbol = market['symbol'];
236110
+ const messageHash = 'trade:' + symbol;
236111
+ const request = {
236112
+ 'type': 'transaction',
236113
+ 'symbols': [market['base'] + '_' + market['quote']],
236114
+ };
236115
+ const trades = await this.watch(url, messageHash, this.extend(request, params), messageHash);
236116
+ if (this.newUpdates) {
236117
+ limit = trades.getLimit(symbol, limit);
236118
+ }
236119
+ return this.filterBySinceLimit(trades, since, limit, 'timestamp', true);
236120
+ }
236121
+ handleTrades(client, message) {
236122
+ //
236123
+ // {
236124
+ // "type" : "transaction",
236125
+ // "content" : {
236126
+ // "list" : [
236127
+ // {
236128
+ // "symbol" : "BTC_KRW",
236129
+ // "buySellGb" : "1",
236130
+ // "contPrice" : "10579000",
236131
+ // "contQty" : "0.01",
236132
+ // "contAmt" : "105790.00",
236133
+ // "contDtm" : "2020-01-29 12:24:18.830039",
236134
+ // "updn" : "dn"
236135
+ // }
236136
+ // ]
236137
+ // }
236138
+ // }
236139
+ //
236140
+ const content = this.safeDict(message, 'content', {});
236141
+ const rawTrades = this.safeList(content, 'list', []);
236142
+ for (let i = 0; i < rawTrades.length; i++) {
236143
+ const rawTrade = rawTrades[i];
236144
+ const marketId = this.safeString(rawTrade, 'symbol');
236145
+ const symbol = this.safeSymbol(marketId, undefined, '_');
236146
+ if (!(symbol in this.trades)) {
236147
+ const limit = this.safeInteger(this.options, 'tradesLimit', 1000);
236148
+ const stored = new _base_ws_Cache_js__WEBPACK_IMPORTED_MODULE_1__/* .ArrayCache */ .ZL(limit);
236149
+ this.trades[symbol] = stored;
236150
+ }
236151
+ const trades = this.trades[symbol];
236152
+ const parsed = this.parseWsTrade(rawTrade);
236153
+ trades.append(parsed);
236154
+ const messageHash = 'trade' + ':' + symbol;
236155
+ client.resolve(trades, messageHash);
236156
+ }
236157
+ }
236158
+ parseWsTrade(trade, market = undefined) {
236159
+ //
236160
+ // {
236161
+ // "symbol" : "BTC_KRW",
236162
+ // "buySellGb" : "1",
236163
+ // "contPrice" : "10579000",
236164
+ // "contQty" : "0.01",
236165
+ // "contAmt" : "105790.00",
236166
+ // "contDtm" : "2020-01-29 12:24:18.830039",
236167
+ // "updn" : "dn"
236168
+ // }
236169
+ //
236170
+ const marketId = this.safeString(trade, 'symbol');
236171
+ const datetime = this.safeString(trade, 'contDtm');
236172
+ const sideId = this.safeString(trade, 'buySellGb');
236173
+ return this.safeTrade({
236174
+ 'id': undefined,
236175
+ 'info': trade,
236176
+ 'timestamp': this.parse8601(datetime),
236177
+ 'datetime': datetime,
236178
+ 'symbol': this.safeSymbol(marketId, market, '_'),
236179
+ 'order': undefined,
236180
+ 'type': undefined,
236181
+ 'side': (sideId === '1') ? 'buy' : 'sell',
236182
+ 'takerOrMaker': undefined,
236183
+ 'price': this.safeString(trade, 'contPrice'),
236184
+ 'amount': this.safeString(trade, 'contQty'),
236185
+ 'cost': this.safeString(trade, 'contAmt'),
236186
+ 'fee': undefined,
236187
+ }, market);
236188
+ }
236189
+ handleErrorMessage(client, message) {
236190
+ //
236191
+ // {
236192
+ // "status" : "5100",
236193
+ // "resmsg" : "Invalid Filter Syntax"
236194
+ // }
236195
+ //
236196
+ if (!('status' in message)) {
236197
+ return true;
236198
+ }
236199
+ const errorCode = this.safeString(message, 'status');
236200
+ try {
236201
+ if (errorCode !== '0000') {
236202
+ const msg = this.safeString(message, 'resmsg');
236203
+ throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError(this.id + ' ' + msg);
236204
+ }
236205
+ return true;
236206
+ }
236207
+ catch (e) {
236208
+ client.reject(e);
236209
+ }
236210
+ return true;
236211
+ }
236212
+ handleMessage(client, message) {
236213
+ if (!this.handleErrorMessage(client, message)) {
236214
+ return;
236215
+ }
236216
+ const topic = this.safeString(message, 'type');
236217
+ if (topic !== undefined) {
236218
+ const methods = {
236219
+ 'ticker': this.handleTicker,
236220
+ 'orderbookdepth': this.handleOrderBook,
236221
+ 'transaction': this.handleTrades,
236222
+ };
236223
+ const method = this.safeValue(methods, topic);
236224
+ if (method !== undefined) {
236225
+ method.call(this, client, message);
236226
+ }
236227
+ }
236228
+ }
236229
+ }
236230
+
236231
+
235648
236232
  /***/ }),
235649
236233
 
235650
236234
  /***/ 7504:
@@ -236361,10 +236945,10 @@ class bitmart extends _bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
236361
236945
  // }
236362
236946
  //
236363
236947
  const data = this.safeValue(message, 'data', []);
236364
- const cache = this.positions;
236365
236948
  if (this.positions === undefined) {
236366
236949
  this.positions = new _base_ws_Cache_js__WEBPACK_IMPORTED_MODULE_2__/* .ArrayCacheBySymbolBySide */ .tU();
236367
236950
  }
236951
+ const cache = this.positions;
236368
236952
  const newPositions = [];
236369
236953
  for (let i = 0; i < data.length; i++) {
236370
236954
  const rawPosition = data[i];
@@ -242723,7 +243307,7 @@ class bybit extends _bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
242723
243307
  /**
242724
243308
  * @method
242725
243309
  * @name bybit#watchTickers
242726
- * @description n watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
243310
+ * @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
242727
243311
  * @see https://bybit-exchange.github.io/docs/v5/websocket/public/ticker
242728
243312
  * @see https://bybit-exchange.github.io/docs/v5/websocket/public/etp-ticker
242729
243313
  * @param {string[]} symbols unified symbol of the market to fetch the ticker for
@@ -244532,6 +245116,7 @@ class cex extends _cex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
244532
245116
  const url = this.urls['api']['ws'];
244533
245117
  const messageHash = 'trades';
244534
245118
  const subscriptionHash = 'old:' + symbol;
245119
+ this.options['currentWatchTradeSymbol'] = symbol; // exchange supports only 1 symbol for this watchTrades channel
244535
245120
  const client = this.safeValue(this.clients, url);
244536
245121
  if (client !== undefined) {
244537
245122
  const subscriptionKeys = Object.keys(client.subscriptions);
@@ -244573,11 +245158,16 @@ class cex extends _cex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
244573
245158
  const data = this.safeList(message, 'data', []);
244574
245159
  const limit = this.safeInteger(this.options, 'tradesLimit', 1000);
244575
245160
  const stored = new _base_ws_Cache_js__WEBPACK_IMPORTED_MODULE_2__/* .ArrayCache */ .ZL(limit);
245161
+ const symbol = this.safeString(this.options, 'currentWatchTradeSymbol');
245162
+ if (symbol === undefined) {
245163
+ return;
245164
+ }
245165
+ const market = this.market(symbol);
244576
245166
  const dataLength = data.length;
244577
245167
  for (let i = 0; i < dataLength; i++) {
244578
245168
  const index = dataLength - 1 - i;
244579
245169
  const rawTrade = data[index];
244580
- const parsed = this.parseWsOldTrade(rawTrade);
245170
+ const parsed = this.parseWsOldTrade(rawTrade, market);
244581
245171
  stored.append(parsed);
244582
245172
  }
244583
245173
  const messageHash = 'trades';
@@ -244604,7 +245194,7 @@ class cex extends _cex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
244604
245194
  'id': id,
244605
245195
  'timestamp': timestamp,
244606
245196
  'datetime': this.iso8601(timestamp),
244607
- 'symbol': undefined,
245197
+ 'symbol': this.safeString(market, 'symbol'),
244608
245198
  'type': undefined,
244609
245199
  'side': side,
244610
245200
  'order': undefined,
@@ -244626,8 +245216,10 @@ class cex extends _cex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
244626
245216
  //
244627
245217
  const data = this.safeValue(message, 'data', []);
244628
245218
  const stored = this.trades; // to do fix this, this.trades is not meant to be used like this
244629
- for (let i = 0; i < data.length; i++) {
244630
- const rawTrade = data[i];
245219
+ const dataLength = data.length;
245220
+ for (let i = 0; i < dataLength; i++) {
245221
+ const index = dataLength - 1 - i;
245222
+ const rawTrade = data[index];
244631
245223
  const parsed = this.parseWsOldTrade(rawTrade);
244632
245224
  stored.append(parsed);
244633
245225
  }
@@ -244743,12 +245335,17 @@ class cex extends _cex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
244743
245335
  const data = this.safeValue(message, 'data', {});
244744
245336
  const ticker = this.parseWsTicker(data);
244745
245337
  const symbol = ticker['symbol'];
245338
+ if (symbol === undefined) {
245339
+ return;
245340
+ }
244746
245341
  this.tickers[symbol] = ticker;
244747
245342
  let messageHash = 'ticker:' + symbol;
244748
245343
  client.resolve(ticker, messageHash);
244749
245344
  client.resolve(ticker, 'tickers');
244750
245345
  messageHash = this.safeString(message, 'oid');
244751
- client.resolve(ticker, messageHash);
245346
+ if (messageHash !== undefined) {
245347
+ client.resolve(ticker, messageHash);
245348
+ }
244752
245349
  }
244753
245350
  parseWsTicker(ticker, market = undefined) {
244754
245351
  //
@@ -271996,7 +272593,8 @@ class okx extends _okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
271996
272593
  this.handleErrors(undefined, undefined, client.url, method, undefined, stringMsg, stringMsg, undefined, undefined);
271997
272594
  }
271998
272595
  const orders = this.parseOrders(args, undefined, undefined, undefined);
271999
- client.resolve(orders, messageHash);
272596
+ const first = this.safeDict(orders, 0, {});
272597
+ client.resolve(first, messageHash);
272000
272598
  }
272001
272599
  async editOrderWs(id, symbol, type, side, amount, price = undefined, params = {}) {
272002
272600
  /**
@@ -273715,6 +274313,7 @@ class p2b extends _p2b_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
273715
274313
  'watchTickers': {
273716
274314
  'name': 'state', // or 'price'
273717
274315
  },
274316
+ 'tickerSubs': this.createSafeDictionary(),
273718
274317
  },
273719
274318
  'streaming': {
273720
274319
  'ping': this.ping,
@@ -273785,13 +274384,14 @@ class p2b extends _p2b_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
273785
274384
  * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
273786
274385
  */
273787
274386
  await this.loadMarkets();
273788
- const watchTickerOptions = this.safeValue(this.options, 'watchTicker');
274387
+ const watchTickerOptions = this.safeDict(this.options, 'watchTicker');
273789
274388
  let name = this.safeString(watchTickerOptions, 'name', 'state'); // or price
273790
274389
  [name, params] = this.handleOptionAndParams(params, 'method', 'name', name);
273791
274390
  const market = this.market(symbol);
273792
- const request = [
273793
- market['id'],
273794
- ];
274391
+ symbol = market['symbol'];
274392
+ this.options['tickerSubs'][market['id']] = true; // we need to re-subscribe to all tickers upon watching a new ticker
274393
+ const tickerSubs = this.options['tickerSubs'];
274394
+ const request = Object.keys(tickerSubs);
273795
274395
  const messageHash = name + '::' + market['symbol'];
273796
274396
  return await this.subscribe(name + '.subscribe', messageHash, request, params);
273797
274397
  }
@@ -274094,6 +274694,14 @@ class p2b extends _p2b_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
274094
274694
  client.lastPong = this.safeInteger(message, 'id');
274095
274695
  return message;
274096
274696
  }
274697
+ onError(client, error) {
274698
+ this.options['tickerSubs'] = this.createSafeDictionary();
274699
+ this.onError(client, error);
274700
+ }
274701
+ onClose(client, error) {
274702
+ this.options['tickerSubs'] = this.createSafeDictionary();
274703
+ this.onClose(client, error);
274704
+ }
274097
274705
  }
274098
274706
 
274099
274707
 
@@ -280734,7 +281342,7 @@ class woo extends _woo_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
280734
281342
  /**
280735
281343
  * @method
280736
281344
  * @name woo#watchTickers
280737
- * @description n watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
281345
+ * @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
280738
281346
  * @param {string[]} symbols unified symbol of the market to fetch the ticker for
280739
281347
  * @param {object} [params] extra parameters specific to the exchange API endpoint
280740
281348
  * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
@@ -322897,39 +323505,39 @@ var __webpack_exports__ = {};
322897
323505
  (() => {
322898
323506
  __webpack_require__.r(__webpack_exports__);
322899
323507
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
322900
- /* harmony export */ AccountNotEnabled: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.AccountNotEnabled),
322901
- /* harmony export */ AccountSuspended: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.AccountSuspended),
322902
- /* harmony export */ AddressPending: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.AddressPending),
322903
- /* harmony export */ ArgumentsRequired: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.ArgumentsRequired),
322904
- /* harmony export */ AuthenticationError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.AuthenticationError),
322905
- /* harmony export */ BadRequest: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.BadRequest),
322906
- /* harmony export */ BadResponse: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.BadResponse),
322907
- /* harmony export */ BadSymbol: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.BadSymbol),
322908
- /* harmony export */ BaseError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.BaseError),
322909
- /* harmony export */ CancelPending: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.CancelPending),
322910
- /* harmony export */ DDoSProtection: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.DDoSProtection),
322911
- /* harmony export */ DuplicateOrderId: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.DuplicateOrderId),
323508
+ /* harmony export */ AccountNotEnabled: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_170__.AccountNotEnabled),
323509
+ /* harmony export */ AccountSuspended: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_170__.AccountSuspended),
323510
+ /* harmony export */ AddressPending: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_170__.AddressPending),
323511
+ /* harmony export */ ArgumentsRequired: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_170__.ArgumentsRequired),
323512
+ /* harmony export */ AuthenticationError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_170__.AuthenticationError),
323513
+ /* harmony export */ BadRequest: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_170__.BadRequest),
323514
+ /* harmony export */ BadResponse: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_170__.BadResponse),
323515
+ /* harmony export */ BadSymbol: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_170__.BadSymbol),
323516
+ /* harmony export */ BaseError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_170__.BaseError),
323517
+ /* harmony export */ CancelPending: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_170__.CancelPending),
323518
+ /* harmony export */ DDoSProtection: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_170__.DDoSProtection),
323519
+ /* harmony export */ DuplicateOrderId: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_170__.DuplicateOrderId),
322912
323520
  /* harmony export */ Exchange: () => (/* reexport safe */ _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__.e),
322913
- /* harmony export */ ExchangeError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.ExchangeError),
322914
- /* harmony export */ ExchangeNotAvailable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.ExchangeNotAvailable),
322915
- /* harmony export */ InsufficientFunds: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.InsufficientFunds),
322916
- /* harmony export */ InvalidAddress: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.InvalidAddress),
322917
- /* harmony export */ InvalidNonce: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.InvalidNonce),
322918
- /* harmony export */ InvalidOrder: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.InvalidOrder),
322919
- /* harmony export */ MarginModeAlreadySet: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.MarginModeAlreadySet),
322920
- /* harmony export */ NetworkError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.NetworkError),
322921
- /* harmony export */ NoChange: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.NoChange),
322922
- /* harmony export */ NotSupported: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.NotSupported),
322923
- /* harmony export */ NullResponse: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.NullResponse),
322924
- /* harmony export */ OnMaintenance: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.OnMaintenance),
322925
- /* harmony export */ OrderImmediatelyFillable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.OrderImmediatelyFillable),
322926
- /* harmony export */ OrderNotCached: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.OrderNotCached),
322927
- /* harmony export */ OrderNotFillable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.OrderNotFillable),
322928
- /* harmony export */ OrderNotFound: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.OrderNotFound),
322929
- /* harmony export */ PermissionDenied: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.PermissionDenied),
322930
- /* harmony export */ Precise: () => (/* reexport safe */ _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_167__.O),
322931
- /* harmony export */ RateLimitExceeded: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.RateLimitExceeded),
322932
- /* harmony export */ RequestTimeout: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.RequestTimeout),
323521
+ /* harmony export */ ExchangeError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_170__.ExchangeError),
323522
+ /* harmony export */ ExchangeNotAvailable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_170__.ExchangeNotAvailable),
323523
+ /* harmony export */ InsufficientFunds: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_170__.InsufficientFunds),
323524
+ /* harmony export */ InvalidAddress: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_170__.InvalidAddress),
323525
+ /* harmony export */ InvalidNonce: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_170__.InvalidNonce),
323526
+ /* harmony export */ InvalidOrder: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_170__.InvalidOrder),
323527
+ /* harmony export */ MarginModeAlreadySet: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_170__.MarginModeAlreadySet),
323528
+ /* harmony export */ NetworkError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_170__.NetworkError),
323529
+ /* harmony export */ NoChange: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_170__.NoChange),
323530
+ /* harmony export */ NotSupported: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_170__.NotSupported),
323531
+ /* harmony export */ NullResponse: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_170__.NullResponse),
323532
+ /* harmony export */ OnMaintenance: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_170__.OnMaintenance),
323533
+ /* harmony export */ OrderImmediatelyFillable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_170__.OrderImmediatelyFillable),
323534
+ /* harmony export */ OrderNotCached: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_170__.OrderNotCached),
323535
+ /* harmony export */ OrderNotFillable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_170__.OrderNotFillable),
323536
+ /* harmony export */ OrderNotFound: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_170__.OrderNotFound),
323537
+ /* harmony export */ PermissionDenied: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_170__.PermissionDenied),
323538
+ /* harmony export */ Precise: () => (/* reexport safe */ _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_168__.O),
323539
+ /* harmony export */ RateLimitExceeded: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_170__.RateLimitExceeded),
323540
+ /* harmony export */ RequestTimeout: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_170__.RequestTimeout),
322933
323541
  /* harmony export */ ace: () => (/* reexport safe */ _src_ace_js__WEBPACK_IMPORTED_MODULE_1__.Z),
322934
323542
  /* harmony export */ alpaca: () => (/* reexport safe */ _src_alpaca_js__WEBPACK_IMPORTED_MODULE_2__.Z),
322935
323543
  /* harmony export */ ascendex: () => (/* reexport safe */ _src_ascendex_js__WEBPACK_IMPORTED_MODULE_3__.Z),
@@ -322985,11 +323593,11 @@ __webpack_require__.r(__webpack_exports__);
322985
323593
  /* harmony export */ delta: () => (/* reexport safe */ _src_delta_js__WEBPACK_IMPORTED_MODULE_52__.Z),
322986
323594
  /* harmony export */ deribit: () => (/* reexport safe */ _src_deribit_js__WEBPACK_IMPORTED_MODULE_53__.Z),
322987
323595
  /* harmony export */ digifinex: () => (/* reexport safe */ _src_digifinex_js__WEBPACK_IMPORTED_MODULE_54__.Z),
322988
- /* harmony export */ errors: () => (/* reexport module object */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__),
323596
+ /* harmony export */ errors: () => (/* reexport module object */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_170__),
322989
323597
  /* harmony export */ exchanges: () => (/* binding */ exchanges),
322990
323598
  /* harmony export */ exmo: () => (/* reexport safe */ _src_exmo_js__WEBPACK_IMPORTED_MODULE_55__.Z),
322991
323599
  /* harmony export */ fmfwio: () => (/* reexport safe */ _src_fmfwio_js__WEBPACK_IMPORTED_MODULE_56__.Z),
322992
- /* harmony export */ functions: () => (/* reexport module object */ _src_base_functions_js__WEBPACK_IMPORTED_MODULE_168__),
323600
+ /* harmony export */ functions: () => (/* reexport module object */ _src_base_functions_js__WEBPACK_IMPORTED_MODULE_169__),
322993
323601
  /* harmony export */ gate: () => (/* reexport safe */ _src_gate_js__WEBPACK_IMPORTED_MODULE_57__.Z),
322994
323602
  /* harmony export */ gateio: () => (/* reexport safe */ _src_gateio_js__WEBPACK_IMPORTED_MODULE_58__.Z),
322995
323603
  /* harmony export */ gemini: () => (/* reexport safe */ _src_gemini_js__WEBPACK_IMPORTED_MODULE_59__.Z),
@@ -323041,9 +323649,9 @@ __webpack_require__.r(__webpack_exports__);
323041
323649
  /* harmony export */ zonda: () => (/* reexport safe */ _src_zonda_js__WEBPACK_IMPORTED_MODULE_103__.Z)
323042
323650
  /* harmony export */ });
323043
323651
  /* harmony import */ var _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3043);
323044
- /* harmony import */ var _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_167__ = __webpack_require__(2194);
323045
- /* harmony import */ var _src_base_functions_js__WEBPACK_IMPORTED_MODULE_168__ = __webpack_require__(7100);
323046
- /* harmony import */ var _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__ = __webpack_require__(6689);
323652
+ /* harmony import */ var _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_168__ = __webpack_require__(2194);
323653
+ /* harmony import */ var _src_base_functions_js__WEBPACK_IMPORTED_MODULE_169__ = __webpack_require__(7100);
323654
+ /* harmony import */ var _src_base_errors_js__WEBPACK_IMPORTED_MODULE_170__ = __webpack_require__(6689);
323047
323655
  /* harmony import */ var _src_ace_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9869);
323048
323656
  /* harmony import */ var _src_alpaca_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5660);
323049
323657
  /* harmony import */ var _src_ascendex_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9612);
@@ -323159,57 +323767,58 @@ __webpack_require__.r(__webpack_exports__);
323159
323767
  /* harmony import */ var _src_pro_bitfinex_js__WEBPACK_IMPORTED_MODULE_113__ = __webpack_require__(9772);
323160
323768
  /* harmony import */ var _src_pro_bitfinex2_js__WEBPACK_IMPORTED_MODULE_114__ = __webpack_require__(588);
323161
323769
  /* harmony import */ var _src_pro_bitget_js__WEBPACK_IMPORTED_MODULE_115__ = __webpack_require__(1885);
323162
- /* harmony import */ var _src_pro_bitmart_js__WEBPACK_IMPORTED_MODULE_116__ = __webpack_require__(7504);
323163
- /* harmony import */ var _src_pro_bitmex_js__WEBPACK_IMPORTED_MODULE_117__ = __webpack_require__(2302);
323164
- /* harmony import */ var _src_pro_bitopro_js__WEBPACK_IMPORTED_MODULE_118__ = __webpack_require__(2191);
323165
- /* harmony import */ var _src_pro_bitpanda_js__WEBPACK_IMPORTED_MODULE_119__ = __webpack_require__(1297);
323166
- /* harmony import */ var _src_pro_bitrue_js__WEBPACK_IMPORTED_MODULE_120__ = __webpack_require__(3005);
323167
- /* harmony import */ var _src_pro_bitstamp_js__WEBPACK_IMPORTED_MODULE_121__ = __webpack_require__(2317);
323168
- /* harmony import */ var _src_pro_bitvavo_js__WEBPACK_IMPORTED_MODULE_122__ = __webpack_require__(6977);
323169
- /* harmony import */ var _src_pro_blockchaincom_js__WEBPACK_IMPORTED_MODULE_123__ = __webpack_require__(2519);
323170
- /* harmony import */ var _src_pro_bybit_js__WEBPACK_IMPORTED_MODULE_124__ = __webpack_require__(5030);
323171
- /* harmony import */ var _src_pro_cex_js__WEBPACK_IMPORTED_MODULE_125__ = __webpack_require__(5272);
323172
- /* harmony import */ var _src_pro_coinbase_js__WEBPACK_IMPORTED_MODULE_126__ = __webpack_require__(3414);
323173
- /* harmony import */ var _src_pro_coinbaseinternational_js__WEBPACK_IMPORTED_MODULE_127__ = __webpack_require__(6541);
323174
- /* harmony import */ var _src_pro_coinbasepro_js__WEBPACK_IMPORTED_MODULE_128__ = __webpack_require__(8368);
323175
- /* harmony import */ var _src_pro_coincheck_js__WEBPACK_IMPORTED_MODULE_129__ = __webpack_require__(7891);
323176
- /* harmony import */ var _src_pro_coinex_js__WEBPACK_IMPORTED_MODULE_130__ = __webpack_require__(204);
323177
- /* harmony import */ var _src_pro_coinone_js__WEBPACK_IMPORTED_MODULE_131__ = __webpack_require__(5208);
323178
- /* harmony import */ var _src_pro_cryptocom_js__WEBPACK_IMPORTED_MODULE_132__ = __webpack_require__(6820);
323179
- /* harmony import */ var _src_pro_currencycom_js__WEBPACK_IMPORTED_MODULE_133__ = __webpack_require__(2952);
323180
- /* harmony import */ var _src_pro_deribit_js__WEBPACK_IMPORTED_MODULE_134__ = __webpack_require__(1788);
323181
- /* harmony import */ var _src_pro_exmo_js__WEBPACK_IMPORTED_MODULE_135__ = __webpack_require__(9004);
323182
- /* harmony import */ var _src_pro_gate_js__WEBPACK_IMPORTED_MODULE_136__ = __webpack_require__(8335);
323183
- /* harmony import */ var _src_pro_gateio_js__WEBPACK_IMPORTED_MODULE_137__ = __webpack_require__(1465);
323184
- /* harmony import */ var _src_pro_gemini_js__WEBPACK_IMPORTED_MODULE_138__ = __webpack_require__(9488);
323185
- /* harmony import */ var _src_pro_hitbtc_js__WEBPACK_IMPORTED_MODULE_139__ = __webpack_require__(5189);
323186
- /* harmony import */ var _src_pro_hollaex_js__WEBPACK_IMPORTED_MODULE_140__ = __webpack_require__(8559);
323187
- /* harmony import */ var _src_pro_htx_js__WEBPACK_IMPORTED_MODULE_141__ = __webpack_require__(7474);
323188
- /* harmony import */ var _src_pro_huobi_js__WEBPACK_IMPORTED_MODULE_142__ = __webpack_require__(8384);
323189
- /* harmony import */ var _src_pro_huobijp_js__WEBPACK_IMPORTED_MODULE_143__ = __webpack_require__(9021);
323190
- /* harmony import */ var _src_pro_hyperliquid_js__WEBPACK_IMPORTED_MODULE_144__ = __webpack_require__(8354);
323191
- /* harmony import */ var _src_pro_idex_js__WEBPACK_IMPORTED_MODULE_145__ = __webpack_require__(3484);
323192
- /* harmony import */ var _src_pro_independentreserve_js__WEBPACK_IMPORTED_MODULE_146__ = __webpack_require__(1311);
323193
- /* harmony import */ var _src_pro_kraken_js__WEBPACK_IMPORTED_MODULE_147__ = __webpack_require__(736);
323194
- /* harmony import */ var _src_pro_krakenfutures_js__WEBPACK_IMPORTED_MODULE_148__ = __webpack_require__(449);
323195
- /* harmony import */ var _src_pro_kucoin_js__WEBPACK_IMPORTED_MODULE_149__ = __webpack_require__(2387);
323196
- /* harmony import */ var _src_pro_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_150__ = __webpack_require__(7181);
323197
- /* harmony import */ var _src_pro_lbank_js__WEBPACK_IMPORTED_MODULE_151__ = __webpack_require__(1267);
323198
- /* harmony import */ var _src_pro_luno_js__WEBPACK_IMPORTED_MODULE_152__ = __webpack_require__(627);
323199
- /* harmony import */ var _src_pro_mexc_js__WEBPACK_IMPORTED_MODULE_153__ = __webpack_require__(6484);
323200
- /* harmony import */ var _src_pro_ndax_js__WEBPACK_IMPORTED_MODULE_154__ = __webpack_require__(8080);
323201
- /* harmony import */ var _src_pro_okcoin_js__WEBPACK_IMPORTED_MODULE_155__ = __webpack_require__(7105);
323202
- /* harmony import */ var _src_pro_okx_js__WEBPACK_IMPORTED_MODULE_156__ = __webpack_require__(2214);
323203
- /* harmony import */ var _src_pro_onetrading_js__WEBPACK_IMPORTED_MODULE_157__ = __webpack_require__(9419);
323204
- /* harmony import */ var _src_pro_p2b_js__WEBPACK_IMPORTED_MODULE_158__ = __webpack_require__(8516);
323205
- /* harmony import */ var _src_pro_phemex_js__WEBPACK_IMPORTED_MODULE_159__ = __webpack_require__(4360);
323206
- /* harmony import */ var _src_pro_poloniex_js__WEBPACK_IMPORTED_MODULE_160__ = __webpack_require__(7924);
323207
- /* harmony import */ var _src_pro_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_161__ = __webpack_require__(3541);
323208
- /* harmony import */ var _src_pro_probit_js__WEBPACK_IMPORTED_MODULE_162__ = __webpack_require__(9782);
323209
- /* harmony import */ var _src_pro_upbit_js__WEBPACK_IMPORTED_MODULE_163__ = __webpack_require__(7614);
323210
- /* harmony import */ var _src_pro_wazirx_js__WEBPACK_IMPORTED_MODULE_164__ = __webpack_require__(4828);
323211
- /* harmony import */ var _src_pro_whitebit_js__WEBPACK_IMPORTED_MODULE_165__ = __webpack_require__(5630);
323212
- /* harmony import */ var _src_pro_woo_js__WEBPACK_IMPORTED_MODULE_166__ = __webpack_require__(3910);
323770
+ /* harmony import */ var _src_pro_bithumb_js__WEBPACK_IMPORTED_MODULE_116__ = __webpack_require__(4922);
323771
+ /* harmony import */ var _src_pro_bitmart_js__WEBPACK_IMPORTED_MODULE_117__ = __webpack_require__(7504);
323772
+ /* harmony import */ var _src_pro_bitmex_js__WEBPACK_IMPORTED_MODULE_118__ = __webpack_require__(2302);
323773
+ /* harmony import */ var _src_pro_bitopro_js__WEBPACK_IMPORTED_MODULE_119__ = __webpack_require__(2191);
323774
+ /* harmony import */ var _src_pro_bitpanda_js__WEBPACK_IMPORTED_MODULE_120__ = __webpack_require__(1297);
323775
+ /* harmony import */ var _src_pro_bitrue_js__WEBPACK_IMPORTED_MODULE_121__ = __webpack_require__(3005);
323776
+ /* harmony import */ var _src_pro_bitstamp_js__WEBPACK_IMPORTED_MODULE_122__ = __webpack_require__(2317);
323777
+ /* harmony import */ var _src_pro_bitvavo_js__WEBPACK_IMPORTED_MODULE_123__ = __webpack_require__(6977);
323778
+ /* harmony import */ var _src_pro_blockchaincom_js__WEBPACK_IMPORTED_MODULE_124__ = __webpack_require__(2519);
323779
+ /* harmony import */ var _src_pro_bybit_js__WEBPACK_IMPORTED_MODULE_125__ = __webpack_require__(5030);
323780
+ /* harmony import */ var _src_pro_cex_js__WEBPACK_IMPORTED_MODULE_126__ = __webpack_require__(5272);
323781
+ /* harmony import */ var _src_pro_coinbase_js__WEBPACK_IMPORTED_MODULE_127__ = __webpack_require__(3414);
323782
+ /* harmony import */ var _src_pro_coinbaseinternational_js__WEBPACK_IMPORTED_MODULE_128__ = __webpack_require__(6541);
323783
+ /* harmony import */ var _src_pro_coinbasepro_js__WEBPACK_IMPORTED_MODULE_129__ = __webpack_require__(8368);
323784
+ /* harmony import */ var _src_pro_coincheck_js__WEBPACK_IMPORTED_MODULE_130__ = __webpack_require__(7891);
323785
+ /* harmony import */ var _src_pro_coinex_js__WEBPACK_IMPORTED_MODULE_131__ = __webpack_require__(204);
323786
+ /* harmony import */ var _src_pro_coinone_js__WEBPACK_IMPORTED_MODULE_132__ = __webpack_require__(5208);
323787
+ /* harmony import */ var _src_pro_cryptocom_js__WEBPACK_IMPORTED_MODULE_133__ = __webpack_require__(6820);
323788
+ /* harmony import */ var _src_pro_currencycom_js__WEBPACK_IMPORTED_MODULE_134__ = __webpack_require__(2952);
323789
+ /* harmony import */ var _src_pro_deribit_js__WEBPACK_IMPORTED_MODULE_135__ = __webpack_require__(1788);
323790
+ /* harmony import */ var _src_pro_exmo_js__WEBPACK_IMPORTED_MODULE_136__ = __webpack_require__(9004);
323791
+ /* harmony import */ var _src_pro_gate_js__WEBPACK_IMPORTED_MODULE_137__ = __webpack_require__(8335);
323792
+ /* harmony import */ var _src_pro_gateio_js__WEBPACK_IMPORTED_MODULE_138__ = __webpack_require__(1465);
323793
+ /* harmony import */ var _src_pro_gemini_js__WEBPACK_IMPORTED_MODULE_139__ = __webpack_require__(9488);
323794
+ /* harmony import */ var _src_pro_hitbtc_js__WEBPACK_IMPORTED_MODULE_140__ = __webpack_require__(5189);
323795
+ /* harmony import */ var _src_pro_hollaex_js__WEBPACK_IMPORTED_MODULE_141__ = __webpack_require__(8559);
323796
+ /* harmony import */ var _src_pro_htx_js__WEBPACK_IMPORTED_MODULE_142__ = __webpack_require__(7474);
323797
+ /* harmony import */ var _src_pro_huobi_js__WEBPACK_IMPORTED_MODULE_143__ = __webpack_require__(8384);
323798
+ /* harmony import */ var _src_pro_huobijp_js__WEBPACK_IMPORTED_MODULE_144__ = __webpack_require__(9021);
323799
+ /* harmony import */ var _src_pro_hyperliquid_js__WEBPACK_IMPORTED_MODULE_145__ = __webpack_require__(8354);
323800
+ /* harmony import */ var _src_pro_idex_js__WEBPACK_IMPORTED_MODULE_146__ = __webpack_require__(3484);
323801
+ /* harmony import */ var _src_pro_independentreserve_js__WEBPACK_IMPORTED_MODULE_147__ = __webpack_require__(1311);
323802
+ /* harmony import */ var _src_pro_kraken_js__WEBPACK_IMPORTED_MODULE_148__ = __webpack_require__(736);
323803
+ /* harmony import */ var _src_pro_krakenfutures_js__WEBPACK_IMPORTED_MODULE_149__ = __webpack_require__(449);
323804
+ /* harmony import */ var _src_pro_kucoin_js__WEBPACK_IMPORTED_MODULE_150__ = __webpack_require__(2387);
323805
+ /* harmony import */ var _src_pro_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_151__ = __webpack_require__(7181);
323806
+ /* harmony import */ var _src_pro_lbank_js__WEBPACK_IMPORTED_MODULE_152__ = __webpack_require__(1267);
323807
+ /* harmony import */ var _src_pro_luno_js__WEBPACK_IMPORTED_MODULE_153__ = __webpack_require__(627);
323808
+ /* harmony import */ var _src_pro_mexc_js__WEBPACK_IMPORTED_MODULE_154__ = __webpack_require__(6484);
323809
+ /* harmony import */ var _src_pro_ndax_js__WEBPACK_IMPORTED_MODULE_155__ = __webpack_require__(8080);
323810
+ /* harmony import */ var _src_pro_okcoin_js__WEBPACK_IMPORTED_MODULE_156__ = __webpack_require__(7105);
323811
+ /* harmony import */ var _src_pro_okx_js__WEBPACK_IMPORTED_MODULE_157__ = __webpack_require__(2214);
323812
+ /* harmony import */ var _src_pro_onetrading_js__WEBPACK_IMPORTED_MODULE_158__ = __webpack_require__(9419);
323813
+ /* harmony import */ var _src_pro_p2b_js__WEBPACK_IMPORTED_MODULE_159__ = __webpack_require__(8516);
323814
+ /* harmony import */ var _src_pro_phemex_js__WEBPACK_IMPORTED_MODULE_160__ = __webpack_require__(4360);
323815
+ /* harmony import */ var _src_pro_poloniex_js__WEBPACK_IMPORTED_MODULE_161__ = __webpack_require__(7924);
323816
+ /* harmony import */ var _src_pro_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_162__ = __webpack_require__(3541);
323817
+ /* harmony import */ var _src_pro_probit_js__WEBPACK_IMPORTED_MODULE_163__ = __webpack_require__(9782);
323818
+ /* harmony import */ var _src_pro_upbit_js__WEBPACK_IMPORTED_MODULE_164__ = __webpack_require__(7614);
323819
+ /* harmony import */ var _src_pro_wazirx_js__WEBPACK_IMPORTED_MODULE_165__ = __webpack_require__(4828);
323820
+ /* harmony import */ var _src_pro_whitebit_js__WEBPACK_IMPORTED_MODULE_166__ = __webpack_require__(5630);
323821
+ /* harmony import */ var _src_pro_woo_js__WEBPACK_IMPORTED_MODULE_167__ = __webpack_require__(3910);
323213
323822
  /*
323214
323823
 
323215
323824
  MIT License
@@ -323244,7 +323853,7 @@ SOFTWARE.
323244
323853
 
323245
323854
  //-----------------------------------------------------------------------------
323246
323855
  // this is updated by vss.js when building
323247
- const version = '4.2.82';
323856
+ const version = '4.2.83';
323248
323857
  _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e.ccxtVersion = version;
323249
323858
  //-----------------------------------------------------------------------------
323250
323859
 
@@ -323412,6 +324021,7 @@ _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e.ccxtVersion
323412
324021
 
323413
324022
 
323414
324023
 
324024
+
323415
324025
 
323416
324026
 
323417
324027
  const exchanges = {
@@ -323532,57 +324142,58 @@ const pro = {
323532
324142
  'bitfinex': _src_pro_bitfinex_js__WEBPACK_IMPORTED_MODULE_113__/* ["default"] */ .Z,
323533
324143
  'bitfinex2': _src_pro_bitfinex2_js__WEBPACK_IMPORTED_MODULE_114__/* ["default"] */ .Z,
323534
324144
  'bitget': _src_pro_bitget_js__WEBPACK_IMPORTED_MODULE_115__/* ["default"] */ .Z,
323535
- 'bitmart': _src_pro_bitmart_js__WEBPACK_IMPORTED_MODULE_116__/* ["default"] */ .Z,
323536
- 'bitmex': _src_pro_bitmex_js__WEBPACK_IMPORTED_MODULE_117__/* ["default"] */ .Z,
323537
- 'bitopro': _src_pro_bitopro_js__WEBPACK_IMPORTED_MODULE_118__/* ["default"] */ .Z,
323538
- 'bitpanda': _src_pro_bitpanda_js__WEBPACK_IMPORTED_MODULE_119__/* ["default"] */ .Z,
323539
- 'bitrue': _src_pro_bitrue_js__WEBPACK_IMPORTED_MODULE_120__/* ["default"] */ .Z,
323540
- 'bitstamp': _src_pro_bitstamp_js__WEBPACK_IMPORTED_MODULE_121__/* ["default"] */ .Z,
323541
- 'bitvavo': _src_pro_bitvavo_js__WEBPACK_IMPORTED_MODULE_122__/* ["default"] */ .Z,
323542
- 'blockchaincom': _src_pro_blockchaincom_js__WEBPACK_IMPORTED_MODULE_123__/* ["default"] */ .Z,
323543
- 'bybit': _src_pro_bybit_js__WEBPACK_IMPORTED_MODULE_124__/* ["default"] */ .Z,
323544
- 'cex': _src_pro_cex_js__WEBPACK_IMPORTED_MODULE_125__/* ["default"] */ .Z,
323545
- 'coinbase': _src_pro_coinbase_js__WEBPACK_IMPORTED_MODULE_126__/* ["default"] */ .Z,
323546
- 'coinbaseinternational': _src_pro_coinbaseinternational_js__WEBPACK_IMPORTED_MODULE_127__/* ["default"] */ .Z,
323547
- 'coinbasepro': _src_pro_coinbasepro_js__WEBPACK_IMPORTED_MODULE_128__/* ["default"] */ .Z,
323548
- 'coincheck': _src_pro_coincheck_js__WEBPACK_IMPORTED_MODULE_129__/* ["default"] */ .Z,
323549
- 'coinex': _src_pro_coinex_js__WEBPACK_IMPORTED_MODULE_130__/* ["default"] */ .Z,
323550
- 'coinone': _src_pro_coinone_js__WEBPACK_IMPORTED_MODULE_131__/* ["default"] */ .Z,
323551
- 'cryptocom': _src_pro_cryptocom_js__WEBPACK_IMPORTED_MODULE_132__/* ["default"] */ .Z,
323552
- 'currencycom': _src_pro_currencycom_js__WEBPACK_IMPORTED_MODULE_133__/* ["default"] */ .Z,
323553
- 'deribit': _src_pro_deribit_js__WEBPACK_IMPORTED_MODULE_134__/* ["default"] */ .Z,
323554
- 'exmo': _src_pro_exmo_js__WEBPACK_IMPORTED_MODULE_135__/* ["default"] */ .Z,
323555
- 'gate': _src_pro_gate_js__WEBPACK_IMPORTED_MODULE_136__/* ["default"] */ .Z,
323556
- 'gateio': _src_pro_gateio_js__WEBPACK_IMPORTED_MODULE_137__/* ["default"] */ .Z,
323557
- 'gemini': _src_pro_gemini_js__WEBPACK_IMPORTED_MODULE_138__/* ["default"] */ .Z,
323558
- 'hitbtc': _src_pro_hitbtc_js__WEBPACK_IMPORTED_MODULE_139__/* ["default"] */ .Z,
323559
- 'hollaex': _src_pro_hollaex_js__WEBPACK_IMPORTED_MODULE_140__/* ["default"] */ .Z,
323560
- 'htx': _src_pro_htx_js__WEBPACK_IMPORTED_MODULE_141__/* ["default"] */ .Z,
323561
- 'huobi': _src_pro_huobi_js__WEBPACK_IMPORTED_MODULE_142__/* ["default"] */ .Z,
323562
- 'huobijp': _src_pro_huobijp_js__WEBPACK_IMPORTED_MODULE_143__/* ["default"] */ .Z,
323563
- 'hyperliquid': _src_pro_hyperliquid_js__WEBPACK_IMPORTED_MODULE_144__/* ["default"] */ .Z,
323564
- 'idex': _src_pro_idex_js__WEBPACK_IMPORTED_MODULE_145__/* ["default"] */ .Z,
323565
- 'independentreserve': _src_pro_independentreserve_js__WEBPACK_IMPORTED_MODULE_146__/* ["default"] */ .Z,
323566
- 'kraken': _src_pro_kraken_js__WEBPACK_IMPORTED_MODULE_147__/* ["default"] */ .Z,
323567
- 'krakenfutures': _src_pro_krakenfutures_js__WEBPACK_IMPORTED_MODULE_148__/* ["default"] */ .Z,
323568
- 'kucoin': _src_pro_kucoin_js__WEBPACK_IMPORTED_MODULE_149__/* ["default"] */ .Z,
323569
- 'kucoinfutures': _src_pro_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_150__/* ["default"] */ .Z,
323570
- 'lbank': _src_pro_lbank_js__WEBPACK_IMPORTED_MODULE_151__/* ["default"] */ .Z,
323571
- 'luno': _src_pro_luno_js__WEBPACK_IMPORTED_MODULE_152__/* ["default"] */ .Z,
323572
- 'mexc': _src_pro_mexc_js__WEBPACK_IMPORTED_MODULE_153__/* ["default"] */ .Z,
323573
- 'ndax': _src_pro_ndax_js__WEBPACK_IMPORTED_MODULE_154__/* ["default"] */ .Z,
323574
- 'okcoin': _src_pro_okcoin_js__WEBPACK_IMPORTED_MODULE_155__/* ["default"] */ .Z,
323575
- 'okx': _src_pro_okx_js__WEBPACK_IMPORTED_MODULE_156__/* ["default"] */ .Z,
323576
- 'onetrading': _src_pro_onetrading_js__WEBPACK_IMPORTED_MODULE_157__/* ["default"] */ .Z,
323577
- 'p2b': _src_pro_p2b_js__WEBPACK_IMPORTED_MODULE_158__/* ["default"] */ .Z,
323578
- 'phemex': _src_pro_phemex_js__WEBPACK_IMPORTED_MODULE_159__/* ["default"] */ .Z,
323579
- 'poloniex': _src_pro_poloniex_js__WEBPACK_IMPORTED_MODULE_160__/* ["default"] */ .Z,
323580
- 'poloniexfutures': _src_pro_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_161__/* ["default"] */ .Z,
323581
- 'probit': _src_pro_probit_js__WEBPACK_IMPORTED_MODULE_162__/* ["default"] */ .Z,
323582
- 'upbit': _src_pro_upbit_js__WEBPACK_IMPORTED_MODULE_163__/* ["default"] */ .Z,
323583
- 'wazirx': _src_pro_wazirx_js__WEBPACK_IMPORTED_MODULE_164__/* ["default"] */ .Z,
323584
- 'whitebit': _src_pro_whitebit_js__WEBPACK_IMPORTED_MODULE_165__/* ["default"] */ .Z,
323585
- 'woo': _src_pro_woo_js__WEBPACK_IMPORTED_MODULE_166__/* ["default"] */ .Z,
324145
+ 'bithumb': _src_pro_bithumb_js__WEBPACK_IMPORTED_MODULE_116__/* ["default"] */ .Z,
324146
+ 'bitmart': _src_pro_bitmart_js__WEBPACK_IMPORTED_MODULE_117__/* ["default"] */ .Z,
324147
+ 'bitmex': _src_pro_bitmex_js__WEBPACK_IMPORTED_MODULE_118__/* ["default"] */ .Z,
324148
+ 'bitopro': _src_pro_bitopro_js__WEBPACK_IMPORTED_MODULE_119__/* ["default"] */ .Z,
324149
+ 'bitpanda': _src_pro_bitpanda_js__WEBPACK_IMPORTED_MODULE_120__/* ["default"] */ .Z,
324150
+ 'bitrue': _src_pro_bitrue_js__WEBPACK_IMPORTED_MODULE_121__/* ["default"] */ .Z,
324151
+ 'bitstamp': _src_pro_bitstamp_js__WEBPACK_IMPORTED_MODULE_122__/* ["default"] */ .Z,
324152
+ 'bitvavo': _src_pro_bitvavo_js__WEBPACK_IMPORTED_MODULE_123__/* ["default"] */ .Z,
324153
+ 'blockchaincom': _src_pro_blockchaincom_js__WEBPACK_IMPORTED_MODULE_124__/* ["default"] */ .Z,
324154
+ 'bybit': _src_pro_bybit_js__WEBPACK_IMPORTED_MODULE_125__/* ["default"] */ .Z,
324155
+ 'cex': _src_pro_cex_js__WEBPACK_IMPORTED_MODULE_126__/* ["default"] */ .Z,
324156
+ 'coinbase': _src_pro_coinbase_js__WEBPACK_IMPORTED_MODULE_127__/* ["default"] */ .Z,
324157
+ 'coinbaseinternational': _src_pro_coinbaseinternational_js__WEBPACK_IMPORTED_MODULE_128__/* ["default"] */ .Z,
324158
+ 'coinbasepro': _src_pro_coinbasepro_js__WEBPACK_IMPORTED_MODULE_129__/* ["default"] */ .Z,
324159
+ 'coincheck': _src_pro_coincheck_js__WEBPACK_IMPORTED_MODULE_130__/* ["default"] */ .Z,
324160
+ 'coinex': _src_pro_coinex_js__WEBPACK_IMPORTED_MODULE_131__/* ["default"] */ .Z,
324161
+ 'coinone': _src_pro_coinone_js__WEBPACK_IMPORTED_MODULE_132__/* ["default"] */ .Z,
324162
+ 'cryptocom': _src_pro_cryptocom_js__WEBPACK_IMPORTED_MODULE_133__/* ["default"] */ .Z,
324163
+ 'currencycom': _src_pro_currencycom_js__WEBPACK_IMPORTED_MODULE_134__/* ["default"] */ .Z,
324164
+ 'deribit': _src_pro_deribit_js__WEBPACK_IMPORTED_MODULE_135__/* ["default"] */ .Z,
324165
+ 'exmo': _src_pro_exmo_js__WEBPACK_IMPORTED_MODULE_136__/* ["default"] */ .Z,
324166
+ 'gate': _src_pro_gate_js__WEBPACK_IMPORTED_MODULE_137__/* ["default"] */ .Z,
324167
+ 'gateio': _src_pro_gateio_js__WEBPACK_IMPORTED_MODULE_138__/* ["default"] */ .Z,
324168
+ 'gemini': _src_pro_gemini_js__WEBPACK_IMPORTED_MODULE_139__/* ["default"] */ .Z,
324169
+ 'hitbtc': _src_pro_hitbtc_js__WEBPACK_IMPORTED_MODULE_140__/* ["default"] */ .Z,
324170
+ 'hollaex': _src_pro_hollaex_js__WEBPACK_IMPORTED_MODULE_141__/* ["default"] */ .Z,
324171
+ 'htx': _src_pro_htx_js__WEBPACK_IMPORTED_MODULE_142__/* ["default"] */ .Z,
324172
+ 'huobi': _src_pro_huobi_js__WEBPACK_IMPORTED_MODULE_143__/* ["default"] */ .Z,
324173
+ 'huobijp': _src_pro_huobijp_js__WEBPACK_IMPORTED_MODULE_144__/* ["default"] */ .Z,
324174
+ 'hyperliquid': _src_pro_hyperliquid_js__WEBPACK_IMPORTED_MODULE_145__/* ["default"] */ .Z,
324175
+ 'idex': _src_pro_idex_js__WEBPACK_IMPORTED_MODULE_146__/* ["default"] */ .Z,
324176
+ 'independentreserve': _src_pro_independentreserve_js__WEBPACK_IMPORTED_MODULE_147__/* ["default"] */ .Z,
324177
+ 'kraken': _src_pro_kraken_js__WEBPACK_IMPORTED_MODULE_148__/* ["default"] */ .Z,
324178
+ 'krakenfutures': _src_pro_krakenfutures_js__WEBPACK_IMPORTED_MODULE_149__/* ["default"] */ .Z,
324179
+ 'kucoin': _src_pro_kucoin_js__WEBPACK_IMPORTED_MODULE_150__/* ["default"] */ .Z,
324180
+ 'kucoinfutures': _src_pro_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_151__/* ["default"] */ .Z,
324181
+ 'lbank': _src_pro_lbank_js__WEBPACK_IMPORTED_MODULE_152__/* ["default"] */ .Z,
324182
+ 'luno': _src_pro_luno_js__WEBPACK_IMPORTED_MODULE_153__/* ["default"] */ .Z,
324183
+ 'mexc': _src_pro_mexc_js__WEBPACK_IMPORTED_MODULE_154__/* ["default"] */ .Z,
324184
+ 'ndax': _src_pro_ndax_js__WEBPACK_IMPORTED_MODULE_155__/* ["default"] */ .Z,
324185
+ 'okcoin': _src_pro_okcoin_js__WEBPACK_IMPORTED_MODULE_156__/* ["default"] */ .Z,
324186
+ 'okx': _src_pro_okx_js__WEBPACK_IMPORTED_MODULE_157__/* ["default"] */ .Z,
324187
+ 'onetrading': _src_pro_onetrading_js__WEBPACK_IMPORTED_MODULE_158__/* ["default"] */ .Z,
324188
+ 'p2b': _src_pro_p2b_js__WEBPACK_IMPORTED_MODULE_159__/* ["default"] */ .Z,
324189
+ 'phemex': _src_pro_phemex_js__WEBPACK_IMPORTED_MODULE_160__/* ["default"] */ .Z,
324190
+ 'poloniex': _src_pro_poloniex_js__WEBPACK_IMPORTED_MODULE_161__/* ["default"] */ .Z,
324191
+ 'poloniexfutures': _src_pro_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_162__/* ["default"] */ .Z,
324192
+ 'probit': _src_pro_probit_js__WEBPACK_IMPORTED_MODULE_163__/* ["default"] */ .Z,
324193
+ 'upbit': _src_pro_upbit_js__WEBPACK_IMPORTED_MODULE_164__/* ["default"] */ .Z,
324194
+ 'wazirx': _src_pro_wazirx_js__WEBPACK_IMPORTED_MODULE_165__/* ["default"] */ .Z,
324195
+ 'whitebit': _src_pro_whitebit_js__WEBPACK_IMPORTED_MODULE_166__/* ["default"] */ .Z,
324196
+ 'woo': _src_pro_woo_js__WEBPACK_IMPORTED_MODULE_167__/* ["default"] */ .Z,
323586
324197
  };
323587
324198
  for (const exchange in pro) {
323588
324199
  // const ccxtExchange = exchanges[exchange]
@@ -323595,7 +324206,7 @@ for (const exchange in pro) {
323595
324206
  pro.exchanges = Object.keys(pro);
323596
324207
  pro['Exchange'] = _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e; // now the same for rest and ts
323597
324208
  //-----------------------------------------------------------------------------
323598
- const ccxt = Object.assign({ version, Exchange: _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e, Precise: _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_167__/* .Precise */ .O, 'exchanges': Object.keys(exchanges), 'pro': pro }, exchanges, _src_base_functions_js__WEBPACK_IMPORTED_MODULE_168__, _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__);
324209
+ const ccxt = Object.assign({ version, Exchange: _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e, Precise: _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_168__/* .Precise */ .O, 'exchanges': Object.keys(exchanges), 'pro': pro }, exchanges, _src_base_functions_js__WEBPACK_IMPORTED_MODULE_169__, _src_base_errors_js__WEBPACK_IMPORTED_MODULE_170__);
323599
324210
 
323600
324211
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ccxt);
323601
324212
  //-----------------------------------------------------------------------------