ccxt 4.2.16 → 4.2.18

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 (53) hide show
  1. package/README.md +4 -4
  2. package/dist/ccxt.browser.js +546 -276
  3. package/dist/ccxt.browser.min.js +3 -3
  4. package/dist/cjs/ccxt.js +1 -1
  5. package/dist/cjs/js/ccxt.js +3 -1
  6. package/dist/cjs/js/src/base/Exchange.js +5 -2
  7. package/dist/cjs/js/src/binance.js +7 -0
  8. package/dist/cjs/js/src/bingx.js +26 -0
  9. package/dist/cjs/js/src/bybit.js +21 -47
  10. package/dist/cjs/js/src/coincheck.js +1 -0
  11. package/dist/cjs/js/src/coinlist.js +10 -2
  12. package/dist/cjs/js/src/coinsph.js +2 -2
  13. package/dist/cjs/js/src/deribit.js +5 -1
  14. package/dist/cjs/js/src/kraken.js +1 -1
  15. package/dist/cjs/js/src/pro/binance.js +3 -3
  16. package/dist/cjs/js/src/pro/bitget.js +1 -1
  17. package/dist/cjs/js/src/pro/coincheck.js +208 -0
  18. package/dist/cjs/js/src/pro/hitbtc.js +5 -4
  19. package/dist/cjs/js/src/pro/kucoin.js +46 -36
  20. package/dist/cjs/js/src/pro/kucoinfutures.js +45 -37
  21. package/dist/cjs/js/src/pro/poloniex.js +2 -2
  22. package/dist/cjs/js/src/pro/poloniexfutures.js +43 -35
  23. package/dist/cjs/js/src/whitebit.js +1 -0
  24. package/js/ccxt.d.ts +4 -1
  25. package/js/ccxt.js +3 -1
  26. package/js/src/abstract/binance.d.ts +1 -0
  27. package/js/src/abstract/binancecoinm.d.ts +1 -0
  28. package/js/src/abstract/binanceus.d.ts +1 -0
  29. package/js/src/abstract/binanceusdm.d.ts +1 -0
  30. package/js/src/abstract/coinlist.d.ts +8 -0
  31. package/js/src/base/Exchange.d.ts +2 -3
  32. package/js/src/base/Exchange.js +5 -2
  33. package/js/src/binance.js +7 -0
  34. package/js/src/bingx.d.ts +1 -0
  35. package/js/src/bingx.js +26 -0
  36. package/js/src/bybit.js +21 -47
  37. package/js/src/coincheck.js +1 -0
  38. package/js/src/coinlist.js +10 -2
  39. package/js/src/coinsph.js +2 -2
  40. package/js/src/deribit.js +5 -1
  41. package/js/src/kraken.js +1 -1
  42. package/js/src/pro/binance.js +3 -3
  43. package/js/src/pro/bitget.js +1 -1
  44. package/js/src/pro/coincheck.d.ts +12 -0
  45. package/js/src/pro/coincheck.js +209 -0
  46. package/js/src/pro/hitbtc.js +5 -4
  47. package/js/src/pro/kucoin.js +46 -36
  48. package/js/src/pro/kucoinfutures.js +45 -37
  49. package/js/src/pro/poloniex.js +2 -2
  50. package/js/src/pro/poloniexfutures.js +43 -35
  51. package/js/src/whitebit.js +1 -0
  52. package/package.json +1 -1
  53. package/skip-tests.json +12 -1
@@ -7431,7 +7431,7 @@ class Exchange {
7431
7431
  'fetchPositionsForSymbol': undefined,
7432
7432
  'fetchPositionsRisk': undefined,
7433
7433
  'fetchPremiumIndexOHLCV': undefined,
7434
- 'fetchStatus': 'emulated',
7434
+ 'fetchStatus': undefined,
7435
7435
  'fetchTicker': true,
7436
7436
  'fetchTickers': undefined,
7437
7437
  'fetchTime': undefined,
@@ -8013,7 +8013,10 @@ class Exchange {
8013
8013
  }
8014
8014
  spawn(method, ...args) {
8015
8015
  const future = (0,_ws_Future_js__WEBPACK_IMPORTED_MODULE_4__/* .Future */ .o)();
8016
- method.apply(this, args).then(future.resolve).catch(future.reject);
8016
+ // using setTimeout 0 to force the execution to run after the future is returned
8017
+ setTimeout(() => {
8018
+ method.apply(this, args).then(future.resolve).catch(future.reject);
8019
+ }, 0);
8017
8020
  return future;
8018
8021
  }
8019
8022
  delay(timeout, method, ...args) {
@@ -17929,6 +17932,7 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
17929
17932
  'margin/allPairs': 0.1,
17930
17933
  'margin/priceIndex': 1,
17931
17934
  // these endpoints require this.apiKey + this.secret
17935
+ 'spot/delist-schedule': 10,
17932
17936
  'asset/assetDividend': 1,
17933
17937
  'asset/dribblet': 0.1,
17934
17938
  'asset/transfer': 0.1,
@@ -23286,6 +23290,7 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
23286
23290
  * @param {int} [since] the earliest time in ms to fetch my dust trades for
23287
23291
  * @param {int} [limit] the maximum number of dust trades to retrieve
23288
23292
  * @param {object} [params] extra parameters specific to the exchange API endpoint
23293
+ * @param {string} [params.type] 'spot' or 'margin', default spot
23289
23294
  * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
23290
23295
  */
23291
23296
  //
@@ -23300,6 +23305,11 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
23300
23305
  request['startTime'] = since;
23301
23306
  request['endTime'] = this.sum(since, 7776000000);
23302
23307
  }
23308
+ const accountType = this.safeStringUpper(params, 'type');
23309
+ params = this.omit(params, 'type');
23310
+ if (accountType !== undefined) {
23311
+ request['accountType'] = accountType;
23312
+ }
23303
23313
  const response = await this.sapiGetAssetDribblet(this.extend(request, params));
23304
23314
  // {
23305
23315
  // "total": "4",
@@ -27825,6 +27835,7 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
27825
27835
  'fetchDepositWithdrawFee': 'emulated',
27826
27836
  'fetchDepositWithdrawFees': true,
27827
27837
  'fetchFundingRate': true,
27838
+ 'fetchFundingRates': true,
27828
27839
  'fetchFundingRateHistory': true,
27829
27840
  'fetchLeverage': true,
27830
27841
  'fetchLiquidations': false,
@@ -28885,6 +28896,31 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
28885
28896
  const data = this.safeValue(response, 'data', {});
28886
28897
  return this.parseFundingRate(data, market);
28887
28898
  }
28899
+ async fetchFundingRates(symbols = undefined, params = {}) {
28900
+ /**
28901
+ * @method
28902
+ * @name bingx#fetchFundingRate
28903
+ * @description fetch the current funding rate
28904
+ * @see https://bingx-api.github.io/docs/#/swapV2/market-api.html#Current%20Funding%20Rate
28905
+ * @param {string[]} [symbols] list of unified market symbols
28906
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
28907
+ * @returns {object} a [funding rate structure]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
28908
+ */
28909
+ await this.loadMarkets();
28910
+ symbols = this.marketSymbols(symbols, 'swap', true);
28911
+ const response = await this.swapV2PublicGetQuotePremiumIndex(this.extend(params));
28912
+ const data = this.safeValue(response, 'data', []);
28913
+ const filteredResponse = [];
28914
+ for (let i = 0; i < data.length; i++) {
28915
+ const item = data[i];
28916
+ const marketId = this.safeString(item, 'symbol');
28917
+ const market = this.safeMarket(marketId, undefined, undefined, 'swap');
28918
+ if ((symbols === undefined) || this.inArray(market['symbol'], symbols)) {
28919
+ filteredResponse.push(this.parseFundingRate(item, market));
28920
+ }
28921
+ }
28922
+ return filteredResponse;
28923
+ }
28888
28924
  parseFundingRate(contract, market = undefined) {
28889
28925
  //
28890
28926
  // {
@@ -82752,7 +82788,7 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
82752
82788
  response = await this.privatePostOptionUsdcOpenapiPrivateV1ReplaceOrder(this.extend(request, params));
82753
82789
  }
82754
82790
  else {
82755
- const isStop = this.safeValue(params, 'stop', false);
82791
+ const isStop = this.safeValue2(params, 'stop', 'trigger', false);
82756
82792
  const triggerPrice = this.safeValue2(params, 'stopPrice', 'triggerPrice');
82757
82793
  const stopLossPrice = this.safeValue(params, 'stopLossPrice');
82758
82794
  const isStopLossOrder = stopLossPrice !== undefined;
@@ -82931,8 +82967,8 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
82931
82967
  // 'orderLinkId': 'string', // one of order_id, stop_order_id or order_link_id is required
82932
82968
  // 'orderId': id,
82933
82969
  };
82934
- const isStop = this.safeValue(params, 'stop', false);
82935
- params = this.omit(params, ['stop']);
82970
+ const isStop = this.safeValue2(params, 'stop', 'trigger', false);
82971
+ params = this.omit(params, ['stop', 'trigger']);
82936
82972
  if (id !== undefined) { // The user can also use argument params["order_link_id"]
82937
82973
  request['orderId'] = id;
82938
82974
  }
@@ -82993,9 +83029,9 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
82993
83029
  };
82994
83030
  if (market['spot']) {
82995
83031
  // only works for spot market
82996
- const isStop = this.safeValue(params, 'stop', false);
82997
- params = this.omit(params, ['stop']);
82998
- request['orderFilter'] = isStop ? 'tpslOrder' : 'Order';
83032
+ const isStop = this.safeValue2(params, 'stop', 'trigger', false);
83033
+ params = this.omit(params, ['stop', 'trigger']);
83034
+ request['orderFilter'] = isStop ? 'StopOrder' : 'Order';
82999
83035
  }
83000
83036
  if (id !== undefined) { // The user can also use argument params["orderLinkId"]
83001
83037
  request['orderId'] = id;
@@ -83042,14 +83078,14 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
83042
83078
  response = await this.privatePostOptionUsdcOpenapiPrivateV1CancelAll(this.extend(request, params));
83043
83079
  }
83044
83080
  else {
83045
- const isStop = this.safeValue(params, 'stop', false);
83081
+ const isStop = this.safeValue2(params, 'stop', 'trigger', false);
83046
83082
  if (isStop) {
83047
83083
  request['orderFilter'] = 'StopOrder';
83048
83084
  }
83049
83085
  else {
83050
83086
  request['orderFilter'] = 'Order';
83051
83087
  }
83052
- params = this.omit(params, ['stop']);
83088
+ params = this.omit(params, ['stop', 'trigger']);
83053
83089
  response = await this.privatePostPerpetualUsdcOpenapiPrivateV1CancelAll(this.extend(request, params));
83054
83090
  }
83055
83091
  //
@@ -83116,10 +83152,10 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
83116
83152
  request['settleCoin'] = this.safeString(params, 'settleCoin', defaultSettle);
83117
83153
  }
83118
83154
  }
83119
- const isStop = this.safeValue(params, 'stop', false);
83120
- params = this.omit(params, ['stop']);
83155
+ const isStop = this.safeValue2(params, 'stop', 'trigger', false);
83156
+ params = this.omit(params, ['stop', 'trigger']);
83121
83157
  if (isStop) {
83122
- request['orderFilter'] = 'tpslOrder';
83158
+ request['orderFilter'] = 'StopOrder';
83123
83159
  }
83124
83160
  const response = await this.privatePostV5OrderCancelAll(this.extend(request, params));
83125
83161
  //
@@ -83184,8 +83220,8 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
83184
83220
  else {
83185
83221
  request['category'] = 'OPTION';
83186
83222
  }
83187
- const isStop = this.safeValue(params, 'stop', false);
83188
- params = this.omit(params, ['stop']);
83223
+ const isStop = this.safeValue2(params, 'stop', 'trigger', false);
83224
+ params = this.omit(params, ['stop', 'trigger']);
83189
83225
  if (isStop) {
83190
83226
  request['orderFilter'] = 'StopOrder';
83191
83227
  }
@@ -83287,12 +83323,7 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
83287
83323
  const isStop = this.safeValueN(params, ['trigger', 'stop'], false);
83288
83324
  params = this.omit(params, ['trigger', 'stop']);
83289
83325
  if (isStop) {
83290
- if (type === 'spot') {
83291
- request['orderFilter'] = 'tpslOrder';
83292
- }
83293
- else {
83294
- request['orderFilter'] = 'StopOrder';
83295
- }
83326
+ request['orderFilter'] = 'StopOrder';
83296
83327
  }
83297
83328
  if (limit !== undefined) {
83298
83329
  request['limit'] = limit;
@@ -83451,7 +83482,7 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
83451
83482
  * @param {int} [since] the earliest time in ms to fetch open orders for
83452
83483
  * @param {int} [limit] the maximum number of open orders structures to retrieve
83453
83484
  * @param {object} [params] extra parameters specific to the exchange API endpoint
83454
- * @param {boolean} [params.stop] true if stop order
83485
+ * @param {boolean} [params.stop] set to true for fetching open stop orders
83455
83486
  * @param {string} [params.type] market type, ['swap', 'option', 'spot']
83456
83487
  * @param {string} [params.subType] market subType, ['linear', 'inverse']
83457
83488
  * @param {string} [params.baseCoin] Base coin. Supports linear, inverse & option
@@ -83485,15 +83516,10 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
83485
83516
  return await this.fetchUsdcOpenOrders(symbol, since, limit, params);
83486
83517
  }
83487
83518
  request['category'] = type;
83488
- const isStop = this.safeValue(params, 'stop', false);
83489
- params = this.omit(params, ['stop']);
83519
+ const isStop = this.safeValue2(params, 'stop', 'trigger', false);
83520
+ params = this.omit(params, ['stop', 'trigger']);
83490
83521
  if (isStop) {
83491
- if (type === 'spot') {
83492
- request['orderFilter'] = 'tpslOrder';
83493
- }
83494
- else {
83495
- request['orderFilter'] = 'StopOrder';
83496
- }
83522
+ request['orderFilter'] = 'StopOrder';
83497
83523
  }
83498
83524
  if (limit !== undefined) {
83499
83525
  request['limit'] = limit;
@@ -83625,12 +83651,11 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
83625
83651
  * @method
83626
83652
  * @name bybit#fetchMyTrades
83627
83653
  * @description fetch all trades made by the user
83628
- * @see https://bybit-exchange.github.io/docs/v5/position/execution
83654
+ * @see https://bybit-exchange.github.io/docs/api-explorer/v5/position/execution
83629
83655
  * @param {string} symbol unified market symbol
83630
83656
  * @param {int} [since] the earliest time in ms to fetch trades for
83631
83657
  * @param {int} [limit] the maximum number of trades structures to retrieve
83632
83658
  * @param {object} [params] extra parameters specific to the exchange API endpoint
83633
- * @param {boolean} [params.stop] true if stop order
83634
83659
  * @param {string} [params.type] market type, ['swap', 'option', 'spot']
83635
83660
  * @param {string} [params.subType] market subType, ['linear', 'inverse']
83636
83661
  * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
@@ -83644,7 +83669,7 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
83644
83669
  }
83645
83670
  const [enableUnifiedMargin, enableUnifiedAccount] = await this.isUnifiedEnabled();
83646
83671
  const isUnifiedAccount = (enableUnifiedMargin || enableUnifiedAccount);
83647
- const request = {};
83672
+ let request = {};
83648
83673
  let market = undefined;
83649
83674
  let isUsdcSettled = false;
83650
83675
  if (symbol !== undefined) {
@@ -83658,28 +83683,13 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
83658
83683
  return await this.fetchMyUsdcTrades(symbol, since, limit, params);
83659
83684
  }
83660
83685
  request['category'] = type;
83661
- const isStop = this.safeValue(params, 'stop', false);
83662
- params = this.omit(params, ['stop', 'type']);
83663
- if (isStop) {
83664
- if (type === 'spot') {
83665
- request['orderFilter'] = 'tpslOrder';
83666
- }
83667
- else {
83668
- request['orderFilter'] = 'StopOrder';
83669
- }
83670
- }
83671
83686
  if (limit !== undefined) {
83672
83687
  request['limit'] = limit;
83673
83688
  }
83674
83689
  if (since !== undefined) {
83675
83690
  request['startTime'] = since;
83676
83691
  }
83677
- const until = this.safeInteger2(params, 'until', 'till'); // unified in milliseconds
83678
- const endTime = this.safeInteger(params, 'endTime', until); // exchange-specific in milliseconds
83679
- params = this.omit(params, ['endTime', 'till', 'until']);
83680
- if (endTime !== undefined) {
83681
- request['endTime'] = endTime;
83682
- }
83692
+ [request, params] = this.handleUntilOption('endTime', request, params);
83683
83693
  const response = await this.privateGetV5ExecutionList(this.extend(request, params));
83684
83694
  //
83685
83695
  // {
@@ -93530,6 +93540,7 @@ class coincheck extends _abstract_coincheck_js__WEBPACK_IMPORTED_MODULE_0__/* ["
93530
93540
  'setLeverage': false,
93531
93541
  'setMarginMode': false,
93532
93542
  'setPositionMode': false,
93543
+ 'ws': true,
93533
93544
  },
93534
93545
  'urls': {
93535
93546
  'logo': 'https://user-images.githubusercontent.com/51840849/87182088-1d6d6380-c2ec-11ea-9c64-8ab9f9b289f5.jpg',
@@ -99894,6 +99905,9 @@ class coinlist extends _abstract_coinlist_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
99894
99905
  'v1/symbols/{symbol}/auctions/{auction_code}': 1,
99895
99906
  'v1/time': 1,
99896
99907
  'v1/assets': 1,
99908
+ 'v1/leaderboard': 1,
99909
+ 'v1/affiliate/{competition_code}': 1,
99910
+ 'v1/competition/{competition_id}': 1,
99897
99911
  },
99898
99912
  },
99899
99913
  'private': {
@@ -99901,6 +99915,7 @@ class coinlist extends _abstract_coinlist_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
99901
99915
  'v1/fees': 1,
99902
99916
  'v1/accounts': 1,
99903
99917
  'v1/accounts/{trader_id}': 1,
99918
+ 'v1/accounts/{trader_id}/alias': 1,
99904
99919
  'v1/accounts/{trader_id}/ledger': 1,
99905
99920
  'v1/accounts/{trader_id}/wallets': 1,
99906
99921
  'v1/accounts/{trader_id}/wallet-ledger': 1,
@@ -99913,7 +99928,9 @@ class coinlist extends _abstract_coinlist_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
99913
99928
  'v1/balances': 1,
99914
99929
  'v1/transfers': 1,
99915
99930
  'v1/user': 1,
99916
- 'v1/credits': 1, // not unified
99931
+ 'v1/credits': 1,
99932
+ 'v1/positions': 1,
99933
+ 'v1/accounts/{trader_id}/competitions': 1,
99917
99934
  },
99918
99935
  'post': {
99919
99936
  'v1/keys': 1,
@@ -99924,7 +99941,9 @@ class coinlist extends _abstract_coinlist_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
99924
99941
  'v1/transfers/from-wallet': 1,
99925
99942
  'v1/transfers/internal-transfer': 1,
99926
99943
  'v1/transfers/withdrawal-request': 1,
99927
- 'v1/orders/bulk': 1, // not unified
99944
+ 'v1/orders/bulk': 1,
99945
+ 'v1/accounts/{trader_id}/competitions': 1,
99946
+ 'v1/accounts/{trader_id}/create-competition': 1,
99928
99947
  },
99929
99948
  'patch': {
99930
99949
  'v1/orders/{order_id}': 1,
@@ -105275,10 +105294,10 @@ class coinsph extends _abstract_coinsph_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
105275
105294
  'currency': this.safeCurrencyCode(feeCurrencyId),
105276
105295
  };
105277
105296
  }
105278
- const isBuyer = this.safeString2(trade, 'isBuyer', 'isBuyerMaker', undefined);
105297
+ const isBuyer = this.safeValue2(trade, 'isBuyer', 'isBuyerMaker', undefined);
105279
105298
  let side = undefined;
105280
105299
  if (isBuyer !== undefined) {
105281
- side = (isBuyer === 'true') ? 'buy' : 'sell';
105300
+ side = (isBuyer === true) ? 'buy' : 'sell';
105282
105301
  }
105283
105302
  const isMaker = this.safeString2(trade, 'isMaker', undefined);
105284
105303
  let takerOrMaker = undefined;
@@ -116778,6 +116797,10 @@ class deribit extends _abstract_deribit_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
116778
116797
  const request = {
116779
116798
  'order_id': id,
116780
116799
  };
116800
+ let market = undefined;
116801
+ if (symbol !== undefined) {
116802
+ market = this.market(symbol);
116803
+ }
116781
116804
  const response = await this.privateGetGetOrderState(this.extend(request, params));
116782
116805
  //
116783
116806
  // {
@@ -116808,7 +116831,7 @@ class deribit extends _abstract_deribit_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
116808
116831
  // }
116809
116832
  //
116810
116833
  const result = this.safeValue(response, 'result');
116811
- return this.parseOrder(result);
116834
+ return this.parseOrder(result, market);
116812
116835
  }
116813
116836
  async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
116814
116837
  /**
@@ -154826,7 +154849,7 @@ class kraken extends _abstract_kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
154826
154849
  'zendesk': 'https://kraken.zendesk.com/api/v2/help_center/en-us/articles', // use the public zendesk api to receive article bodies and bypass new anti-spam protections
154827
154850
  },
154828
154851
  'www': 'https://www.kraken.com',
154829
- 'doc': 'https://www.kraken.com/features/api',
154852
+ 'doc': 'https://docs.kraken.com/rest/',
154830
154853
  'fees': 'https://www.kraken.com/en-us/features/fee-schedule',
154831
154854
  },
154832
154855
  'fees': {
@@ -210438,7 +210461,7 @@ class binance extends _binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
210438
210461
  }
210439
210462
  const subscriptionsByStream = this.safeInteger(this.options['numSubscriptionsByStream'], stream, 0);
210440
210463
  const newNumSubscriptions = subscriptionsByStream + numSubscriptions;
210441
- const subscriptionLimitByStream = this.safeInteger(this.options, 'subscriptionLimitByStream', 200);
210464
+ const subscriptionLimitByStream = this.safeInteger(this.options['subscriptionLimitByStream'], type, 200);
210442
210465
  if (newNumSubscriptions > subscriptionLimitByStream) {
210443
210466
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.BadRequest(this.id + ' reached the limit of subscriptions by stream. Increase the number of streams, or increase the stream limit or subscription limit by stream if the exchange allows.');
210444
210467
  }
@@ -211377,7 +211400,7 @@ class binance extends _binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
211377
211400
  const isSpot = ((client.url.indexOf('/stream') > -1) || (client.url.indexOf('/testnet.binance') > -1));
211378
211401
  const marketType = (isSpot) ? 'spot' : 'contract';
211379
211402
  let rawTickers = [];
211380
- const newTickers = [];
211403
+ const newTickers = {};
211381
211404
  if (Array.isArray(message)) {
211382
211405
  rawTickers = message;
211383
211406
  }
@@ -211389,7 +211412,7 @@ class binance extends _binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
211389
211412
  const result = this.parseWsTicker(ticker, marketType);
211390
211413
  const symbol = result['symbol'];
211391
211414
  this.tickers[symbol] = result;
211392
- newTickers.push(result);
211415
+ newTickers[symbol] = result;
211393
211416
  }
211394
211417
  const messageHashes = this.findMessageHashes(client, 'tickers::');
211395
211418
  for (let i = 0; i < messageHashes.length; i++) {
@@ -216512,7 +216535,7 @@ class bitget extends _bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
216512
216535
  symbols = this.marketSymbols(symbols);
216513
216536
  let channel = 'books';
216514
216537
  let incrementalFeed = true;
216515
- if ((limit === 5) || (limit === 15)) {
216538
+ if ((limit === 1) || (limit === 5) || (limit === 15)) {
216516
216539
  channel += limit.toString();
216517
216540
  incrementalFeed = false;
216518
216541
  }
@@ -230021,6 +230044,222 @@ class coinbasepro extends _coinbasepro_js__WEBPACK_IMPORTED_MODULE_0__/* ["defau
230021
230044
  }
230022
230045
 
230023
230046
 
230047
+ /***/ }),
230048
+
230049
+ /***/ 7891:
230050
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
230051
+
230052
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
230053
+ /* harmony export */ Z: () => (/* binding */ coincheck)
230054
+ /* harmony export */ });
230055
+ /* harmony import */ var _coincheck_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2117);
230056
+ /* harmony import */ var _base_errors_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6689);
230057
+ /* harmony import */ var _base_ws_Cache_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3020);
230058
+ // ---------------------------------------------------------------------------
230059
+
230060
+
230061
+
230062
+ // ---------------------------------------------------------------------------
230063
+ class coincheck extends _coincheck_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
230064
+ describe() {
230065
+ return this.deepExtend(super.describe(), {
230066
+ 'has': {
230067
+ 'ws': true,
230068
+ 'watchOrderBook': true,
230069
+ 'watchOrders': false,
230070
+ 'watchTrades': true,
230071
+ 'watchOHLCV': false,
230072
+ 'watchTicker': false,
230073
+ 'watchTickers': false,
230074
+ },
230075
+ 'urls': {
230076
+ 'api': {
230077
+ 'ws': 'wss://ws-api.coincheck.com/',
230078
+ },
230079
+ },
230080
+ 'options': {
230081
+ 'expiresIn': '',
230082
+ 'userId': '',
230083
+ 'wsSessionToken': '',
230084
+ 'watchOrderBook': {
230085
+ 'snapshotDelay': 6,
230086
+ 'snapshotMaxRetries': 3,
230087
+ },
230088
+ 'tradesLimit': 1000,
230089
+ 'OHLCVLimit': 1000,
230090
+ },
230091
+ 'exceptions': {
230092
+ 'exact': {
230093
+ '4009': _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.AuthenticationError,
230094
+ },
230095
+ },
230096
+ });
230097
+ }
230098
+ async watchOrderBook(symbol, limit = undefined, params = {}) {
230099
+ /**
230100
+ * @method
230101
+ * @name coincheck#watchOrderBook
230102
+ * @description watches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
230103
+ * @see https://coincheck.com/documents/exchange/api#websocket-order-book
230104
+ * @param {string} symbol unified symbol of the market to fetch the order book for
230105
+ * @param {int} [limit] the maximum amount of order book entries to return
230106
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
230107
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
230108
+ */
230109
+ await this.loadMarkets();
230110
+ const market = this.market(symbol);
230111
+ const messageHash = 'orderbook:' + market['symbol'];
230112
+ const url = this.urls['api']['ws'];
230113
+ const request = {
230114
+ 'type': 'subscribe',
230115
+ 'channel': market['id'] + '-orderbook',
230116
+ };
230117
+ const message = this.extend(request, params);
230118
+ const orderbook = await this.watch(url, messageHash, message, messageHash);
230119
+ return orderbook.limit();
230120
+ }
230121
+ handleOrderBook(client, message) {
230122
+ //
230123
+ // [
230124
+ // "btc_jpy",
230125
+ // {
230126
+ // "bids": [
230127
+ // [
230128
+ // "6288279.0",
230129
+ // "0"
230130
+ // ]
230131
+ // ],
230132
+ // "asks": [
230133
+ // [
230134
+ // "6290314.0",
230135
+ // "0"
230136
+ // ]
230137
+ // ],
230138
+ // "last_update_at": "1705396097"
230139
+ // }
230140
+ // ]
230141
+ //
230142
+ const symbol = this.symbol(this.safeString(message, 0));
230143
+ const data = this.safeValue(message, 1, {});
230144
+ const timestamp = this.safeTimestamp(data, 'last_update_at');
230145
+ const snapshot = this.parseOrderBook(data, symbol, timestamp);
230146
+ let orderbook = this.safeValue(this.orderbooks, symbol);
230147
+ if (orderbook === undefined) {
230148
+ orderbook = this.orderBook(snapshot);
230149
+ this.orderbooks[symbol] = orderbook;
230150
+ }
230151
+ else {
230152
+ orderbook = this.orderbooks[symbol];
230153
+ orderbook.reset(snapshot);
230154
+ }
230155
+ const messageHash = 'orderbook:' + symbol;
230156
+ client.resolve(orderbook, messageHash);
230157
+ }
230158
+ async watchTrades(symbol, since = undefined, limit = undefined, params = {}) {
230159
+ /**
230160
+ * @method
230161
+ * @name coincheck#watchTrades
230162
+ * @description watches information on multiple trades made in a market
230163
+ * @see https://coincheck.com/documents/exchange/api#websocket-trades
230164
+ * @param {string} symbol unified market symbol of the market trades were made in
230165
+ * @param {int} [since] the earliest time in ms to fetch trades for
230166
+ * @param {int} [limit] the maximum number of trade structures to retrieve
230167
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
230168
+ * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure
230169
+ */
230170
+ await this.loadMarkets();
230171
+ const market = this.market(symbol);
230172
+ symbol = market['symbol'];
230173
+ const messageHash = 'trade:' + market['symbol'];
230174
+ const url = this.urls['api']['ws'];
230175
+ const request = {
230176
+ 'type': 'subscribe',
230177
+ 'channel': market['id'] + '-trades',
230178
+ };
230179
+ const message = this.extend(request, params);
230180
+ const trades = await this.watch(url, messageHash, message, messageHash);
230181
+ if (this.newUpdates) {
230182
+ limit = trades.getLimit(symbol, limit);
230183
+ }
230184
+ return this.filterBySinceLimit(trades, since, limit, 'timestamp', true);
230185
+ }
230186
+ handleTrades(client, message) {
230187
+ //
230188
+ // [
230189
+ // [
230190
+ // "1663318663", // transaction timestamp (unix time)
230191
+ // "2357062", // transaction ID
230192
+ // "btc_jpy", // pair
230193
+ // "2820896.0", // transaction rate
230194
+ // "5.0", // transaction amount
230195
+ // "sell", // order side
230196
+ // "1193401", // ID of the Taker
230197
+ // "2078767" // ID of the Maker
230198
+ // ]
230199
+ // ]
230200
+ //
230201
+ const first = this.safeValue(message, 0, []);
230202
+ const symbol = this.symbol(this.safeString(first, 2));
230203
+ let stored = this.safeValue(this.trades, symbol);
230204
+ if (stored === undefined) {
230205
+ const limit = this.safeInteger(this.options, 'tradesLimit', 1000);
230206
+ stored = new _base_ws_Cache_js__WEBPACK_IMPORTED_MODULE_2__/* .ArrayCache */ .ZL(limit);
230207
+ this.trades[symbol] = stored;
230208
+ }
230209
+ for (let i = 0; i < message.length; i++) {
230210
+ const data = this.safeValue(message, i);
230211
+ const trade = this.parseWsTrade(data);
230212
+ stored.append(trade);
230213
+ }
230214
+ const messageHash = 'trade:' + symbol;
230215
+ client.resolve(stored, messageHash);
230216
+ }
230217
+ parseWsTrade(trade, market = undefined) {
230218
+ //
230219
+ // [
230220
+ // "1663318663", // transaction timestamp (unix time)
230221
+ // "2357062", // transaction ID
230222
+ // "btc_jpy", // pair
230223
+ // "2820896.0", // transaction rate
230224
+ // "5.0", // transaction amount
230225
+ // "sell", // order side
230226
+ // "1193401", // ID of the Taker
230227
+ // "2078767" // ID of the Maker
230228
+ // ]
230229
+ //
230230
+ const symbol = this.symbol(this.safeString(trade, 2));
230231
+ const timestamp = this.safeTimestamp(trade, 0);
230232
+ const side = this.safeString(trade, 5);
230233
+ const priceString = this.safeString(trade, 3);
230234
+ const amountString = this.safeString(trade, 4);
230235
+ return this.safeTrade({
230236
+ 'id': this.safeString(trade, 1),
230237
+ 'info': trade,
230238
+ 'timestamp': timestamp,
230239
+ 'datetime': this.iso8601(timestamp),
230240
+ 'order': undefined,
230241
+ 'symbol': symbol,
230242
+ 'type': undefined,
230243
+ 'side': side,
230244
+ 'takerOrMaker': undefined,
230245
+ 'price': priceString,
230246
+ 'amount': amountString,
230247
+ 'cost': undefined,
230248
+ 'fee': undefined,
230249
+ }, market);
230250
+ }
230251
+ handleMessage(client, message) {
230252
+ const data = this.safeValue(message, 0);
230253
+ if (!Array.isArray(data)) {
230254
+ this.handleOrderBook(client, message);
230255
+ }
230256
+ else {
230257
+ this.handleTrades(client, message);
230258
+ }
230259
+ }
230260
+ }
230261
+
230262
+
230024
230263
  /***/ }),
230025
230264
 
230026
230265
  /***/ 204:
@@ -236973,7 +237212,8 @@ class hitbtc extends _hitbtc_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
236973
237212
  'symbols': [market['id']],
236974
237213
  },
236975
237214
  };
236976
- return await this.subscribePublic(name, [symbol], this.deepExtend(request, params));
237215
+ const result = await this.subscribePublic(name, [symbol], this.deepExtend(request, params));
237216
+ return this.safeValue(result, symbol);
236977
237217
  }
236978
237218
  async watchTickers(symbols = undefined, params = {}) {
236979
237219
  /**
@@ -237056,16 +237296,16 @@ class hitbtc extends _hitbtc_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
237056
237296
  const data = this.safeValue(message, 'data', {});
237057
237297
  const marketIds = Object.keys(data);
237058
237298
  const channel = this.safeString(message, 'ch');
237059
- const newTickers = [];
237299
+ const newTickers = {};
237060
237300
  for (let i = 0; i < marketIds.length; i++) {
237061
237301
  const marketId = marketIds[i];
237062
237302
  const market = this.safeMarket(marketId);
237063
237303
  const symbol = market['symbol'];
237064
237304
  const ticker = this.parseWsTicker(data[marketId], market);
237065
237305
  this.tickers[symbol] = ticker;
237066
- newTickers.push(ticker);
237306
+ newTickers[symbol] = ticker;
237067
237307
  const messageHash = channel + '::' + symbol;
237068
- client.resolve(this.tickers[symbol], messageHash);
237308
+ client.resolve(newTickers, messageHash);
237069
237309
  }
237070
237310
  const messageHashes = this.findMessageHashes(client, channel + '::');
237071
237311
  for (let i = 0; i < messageHashes.length; i++) {
@@ -245571,43 +245811,51 @@ class kucoin extends _kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
245571
245811
  async negotiateHelper(privateChannel, params = {}) {
245572
245812
  let response = undefined;
245573
245813
  const connectId = privateChannel ? 'private' : 'public';
245574
- if (privateChannel) {
245575
- response = await this.privatePostBulletPrivate(params);
245576
- //
245577
- // {
245578
- // "code": "200000",
245579
- // "data": {
245580
- // "instanceServers": [
245581
- // {
245582
- // "pingInterval": 50000,
245583
- // "endpoint": "wss://push-private.kucoin.com/endpoint",
245584
- // "protocol": "websocket",
245585
- // "encrypt": true,
245586
- // "pingTimeout": 10000
245587
- // }
245588
- // ],
245589
- // "token": "2neAiuYvAU61ZDXANAGAsiL4-iAExhsBXZxftpOeh_55i3Ysy2q2LEsEWU64mdzUOPusi34M_wGoSf7iNyEWJ1UQy47YbpY4zVdzilNP-Bj3iXzrjjGlWtiYB9J6i9GjsxUuhPw3BlrzazF6ghq4Lzf7scStOz3KkxjwpsOBCH4=.WNQmhZQeUKIkh97KYgU0Lg=="
245590
- // }
245591
- // }
245592
- //
245814
+ try {
245815
+ if (privateChannel) {
245816
+ response = await this.privatePostBulletPrivate(params);
245817
+ //
245818
+ // {
245819
+ // "code": "200000",
245820
+ // "data": {
245821
+ // "instanceServers": [
245822
+ // {
245823
+ // "pingInterval": 50000,
245824
+ // "endpoint": "wss://push-private.kucoin.com/endpoint",
245825
+ // "protocol": "websocket",
245826
+ // "encrypt": true,
245827
+ // "pingTimeout": 10000
245828
+ // }
245829
+ // ],
245830
+ // "token": "2neAiuYvAU61ZDXANAGAsiL4-iAExhsBXZxftpOeh_55i3Ysy2q2LEsEWU64mdzUOPusi34M_wGoSf7iNyEWJ1UQy47YbpY4zVdzilNP-Bj3iXzrjjGlWtiYB9J6i9GjsxUuhPw3BlrzazF6ghq4Lzf7scStOz3KkxjwpsOBCH4=.WNQmhZQeUKIkh97KYgU0Lg=="
245831
+ // }
245832
+ // }
245833
+ //
245834
+ }
245835
+ else {
245836
+ response = await this.publicPostBulletPublic(params);
245837
+ }
245838
+ const data = this.safeValue(response, 'data', {});
245839
+ const instanceServers = this.safeValue(data, 'instanceServers', []);
245840
+ const firstInstanceServer = this.safeValue(instanceServers, 0);
245841
+ const pingInterval = this.safeInteger(firstInstanceServer, 'pingInterval');
245842
+ const endpoint = this.safeString(firstInstanceServer, 'endpoint');
245843
+ const token = this.safeString(data, 'token');
245844
+ const result = endpoint + '?' + this.urlencode({
245845
+ 'token': token,
245846
+ 'privateChannel': privateChannel,
245847
+ 'connectId': connectId,
245848
+ });
245849
+ const client = this.client(result);
245850
+ client.keepAlive = pingInterval;
245851
+ return result;
245593
245852
  }
245594
- else {
245595
- response = await this.publicPostBulletPublic(params);
245853
+ catch (e) {
245854
+ const future = this.safeValue(this.options['urls'], connectId);
245855
+ future.reject(e);
245856
+ delete this.options['urls'][connectId];
245596
245857
  }
245597
- const data = this.safeValue(response, 'data', {});
245598
- const instanceServers = this.safeValue(data, 'instanceServers', []);
245599
- const firstInstanceServer = this.safeValue(instanceServers, 0);
245600
- const pingInterval = this.safeInteger(firstInstanceServer, 'pingInterval');
245601
- const endpoint = this.safeString(firstInstanceServer, 'endpoint');
245602
- const token = this.safeString(data, 'token');
245603
- const result = endpoint + '?' + this.urlencode({
245604
- 'token': token,
245605
- 'privateChannel': privateChannel,
245606
- 'connectId': connectId,
245607
- });
245608
- const client = this.client(result);
245609
- client.keepAlive = pingInterval;
245610
- return result;
245858
+ return undefined;
245611
245859
  }
245612
245860
  requestId() {
245613
245861
  const requestId = this.sum(this.safeInteger(this.options, 'requestId', 0), 1);
@@ -245765,7 +246013,9 @@ class kucoin extends _kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
245765
246013
  const messageHash = 'ticker:' + symbol;
245766
246014
  client.resolve(ticker, messageHash);
245767
246015
  // watchTickers
245768
- client.resolve(ticker, 'tickers');
246016
+ const allTickers = {};
246017
+ allTickers[symbol] = ticker;
246018
+ client.resolve(allTickers, 'tickers');
245769
246019
  const messageHashes = this.findMessageHashes(client, 'tickers::');
245770
246020
  for (let i = 0; i < messageHashes.length; i++) {
245771
246021
  const currentMessageHash = messageHashes[i];
@@ -246641,43 +246891,51 @@ class kucoinfutures extends _kucoinfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
246641
246891
  async negotiateHelper(privateChannel, params = {}) {
246642
246892
  let response = undefined;
246643
246893
  const connectId = privateChannel ? 'private' : 'public';
246644
- if (privateChannel) {
246645
- response = await this.futuresPrivatePostBulletPrivate(params);
246646
- //
246647
- // {
246648
- // "code": "200000",
246649
- // "data": {
246650
- // "instanceServers": [
246651
- // {
246652
- // "pingInterval": 50000,
246653
- // "endpoint": "wss://push-private.kucoin.com/endpoint",
246654
- // "protocol": "websocket",
246655
- // "encrypt": true,
246656
- // "pingTimeout": 10000
246657
- // }
246658
- // ],
246659
- // "token": "2neAiuYvAU61ZDXANAGAsiL4-iAExhsBXZxftpOeh_55i3Ysy2q2LEsEWU64mdzUOPusi34M_wGoSf7iNyEWJ1UQy47YbpY4zVdzilNP-Bj3iXzrjjGlWtiYB9J6i9GjsxUuhPw3BlrzazF6ghq4Lzf7scStOz3KkxjwpsOBCH4=.WNQmhZQeUKIkh97KYgU0Lg=="
246660
- // }
246661
- // }
246662
- //
246894
+ try {
246895
+ if (privateChannel) {
246896
+ response = await this.futuresPrivatePostBulletPrivate(params);
246897
+ //
246898
+ // {
246899
+ // "code": "200000",
246900
+ // "data": {
246901
+ // "instanceServers": [
246902
+ // {
246903
+ // "pingInterval": 50000,
246904
+ // "endpoint": "wss://push-private.kucoin.com/endpoint",
246905
+ // "protocol": "websocket",
246906
+ // "encrypt": true,
246907
+ // "pingTimeout": 10000
246908
+ // }
246909
+ // ],
246910
+ // "token": "2neAiuYvAU61ZDXANAGAsiL4-iAExhsBXZxftpOeh_55i3Ysy2q2LEsEWU64mdzUOPusi34M_wGoSf7iNyEWJ1UQy47YbpY4zVdzilNP-Bj3iXzrjjGlWtiYB9J6i9GjsxUuhPw3BlrzazF6ghq4Lzf7scStOz3KkxjwpsOBCH4=.WNQmhZQeUKIkh97KYgU0Lg=="
246911
+ // }
246912
+ // }
246913
+ //
246914
+ }
246915
+ else {
246916
+ response = await this.futuresPublicPostBulletPublic(params);
246917
+ }
246918
+ const data = this.safeValue(response, 'data', {});
246919
+ const instanceServers = this.safeValue(data, 'instanceServers', []);
246920
+ const firstInstanceServer = this.safeValue(instanceServers, 0);
246921
+ const pingInterval = this.safeInteger(firstInstanceServer, 'pingInterval');
246922
+ const endpoint = this.safeString(firstInstanceServer, 'endpoint');
246923
+ const token = this.safeString(data, 'token');
246924
+ const result = endpoint + '?' + this.urlencode({
246925
+ 'token': token,
246926
+ 'privateChannel': privateChannel,
246927
+ 'connectId': connectId,
246928
+ });
246929
+ const client = this.client(result);
246930
+ client.keepAlive = pingInterval;
246931
+ return result;
246663
246932
  }
246664
- else {
246665
- response = await this.futuresPublicPostBulletPublic(params);
246933
+ catch (e) {
246934
+ const future = this.safeValue(this.options['urls'], connectId);
246935
+ future.reject(e);
246936
+ delete this.options['urls'][connectId];
246666
246937
  }
246667
- const data = this.safeValue(response, 'data', {});
246668
- const instanceServers = this.safeValue(data, 'instanceServers', []);
246669
- const firstInstanceServer = this.safeValue(instanceServers, 0);
246670
- const pingInterval = this.safeInteger(firstInstanceServer, 'pingInterval');
246671
- const endpoint = this.safeString(firstInstanceServer, 'endpoint');
246672
- const token = this.safeString(data, 'token');
246673
- const result = endpoint + '?' + this.urlencode({
246674
- 'token': token,
246675
- 'privateChannel': privateChannel,
246676
- 'connectId': connectId,
246677
- });
246678
- const client = this.client(result);
246679
- client.keepAlive = pingInterval;
246680
- return result;
246938
+ return undefined;
246681
246939
  }
246682
246940
  requestId() {
246683
246941
  const requestId = this.sum(this.safeInteger(this.options, 'requestId', 0), 1);
@@ -254465,7 +254723,7 @@ class poloniex extends _poloniex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] *
254465
254723
  // }
254466
254724
  //
254467
254725
  const data = this.safeValue(message, 'data', []);
254468
- const newTickers = [];
254726
+ const newTickers = {};
254469
254727
  for (let i = 0; i < data.length; i++) {
254470
254728
  const item = data[i];
254471
254729
  const marketId = this.safeString(item, 'symbol');
@@ -254473,7 +254731,7 @@ class poloniex extends _poloniex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] *
254473
254731
  const ticker = this.parseTicker(item);
254474
254732
  const symbol = ticker['symbol'];
254475
254733
  this.tickers[symbol] = ticker;
254476
- newTickers.push(ticker);
254734
+ newTickers[symbol] = ticker;
254477
254735
  }
254478
254736
  }
254479
254737
  const messageHashes = this.findMessageHashes(client, 'ticker::');
@@ -254863,43 +255121,51 @@ class poloniexfutures extends _poloniexfutures_js__WEBPACK_IMPORTED_MODULE_0__/*
254863
255121
  async negotiateHelper(privateChannel, params = {}) {
254864
255122
  let response = undefined;
254865
255123
  const connectId = privateChannel ? 'private' : 'public';
254866
- if (privateChannel) {
254867
- response = await this.privatePostBulletPrivate(params);
254868
- //
254869
- // {
254870
- // "code": "200000",
254871
- // "data": {
254872
- // "instanceServers": [
254873
- // {
254874
- // "pingInterval": 50000,
254875
- // "endpoint": "wss://push-private.kucoin.com/endpoint",
254876
- // "protocol": "websocket",
254877
- // "encrypt": true,
254878
- // "pingTimeout": 10000
254879
- // }
254880
- // ],
254881
- // "token": "2neAiuYvAU61ZDXANAGAsiL4-iAExhsBXZxftpOeh_55i3Ysy2q2LEsEWU64mdzUOPusi34M_wGoSf7iNyEWJ1UQy47YbpY4zVdzilNP-Bj3iXzrjjGlWtiYB9J6i9GjsxUuhPw3BlrzazF6ghq4Lzf7scStOz3KkxjwpsOBCH4=.WNQmhZQeUKIkh97KYgU0Lg=="
254882
- // }
254883
- // }
254884
- //
255124
+ try {
255125
+ if (privateChannel) {
255126
+ response = await this.privatePostBulletPrivate(params);
255127
+ //
255128
+ // {
255129
+ // "code": "200000",
255130
+ // "data": {
255131
+ // "instanceServers": [
255132
+ // {
255133
+ // "pingInterval": 50000,
255134
+ // "endpoint": "wss://push-private.kucoin.com/endpoint",
255135
+ // "protocol": "websocket",
255136
+ // "encrypt": true,
255137
+ // "pingTimeout": 10000
255138
+ // }
255139
+ // ],
255140
+ // "token": "2neAiuYvAU61ZDXANAGAsiL4-iAExhsBXZxftpOeh_55i3Ysy2q2LEsEWU64mdzUOPusi34M_wGoSf7iNyEWJ1UQy47YbpY4zVdzilNP-Bj3iXzrjjGlWtiYB9J6i9GjsxUuhPw3BlrzazF6ghq4Lzf7scStOz3KkxjwpsOBCH4=.WNQmhZQeUKIkh97KYgU0Lg=="
255141
+ // }
255142
+ // }
255143
+ //
255144
+ }
255145
+ else {
255146
+ response = await this.publicPostBulletPublic(params);
255147
+ }
255148
+ const data = this.safeValue(response, 'data', {});
255149
+ const instanceServers = this.safeValue(data, 'instanceServers', []);
255150
+ const firstInstanceServer = this.safeValue(instanceServers, 0);
255151
+ const pingInterval = this.safeInteger(firstInstanceServer, 'pingInterval');
255152
+ const endpoint = this.safeString(firstInstanceServer, 'endpoint');
255153
+ const token = this.safeString(data, 'token');
255154
+ const result = endpoint + '?' + this.urlencode({
255155
+ 'token': token,
255156
+ 'privateChannel': privateChannel,
255157
+ 'connectId': connectId,
255158
+ });
255159
+ const client = this.client(result);
255160
+ client.keepAlive = pingInterval;
255161
+ return result;
254885
255162
  }
254886
- else {
254887
- response = await this.publicPostBulletPublic(params);
255163
+ catch (e) {
255164
+ const future = this.safeValue(this.options['urls'], connectId);
255165
+ future.reject(e);
255166
+ delete this.options['urls'][connectId];
254888
255167
  }
254889
- const data = this.safeValue(response, 'data', {});
254890
- const instanceServers = this.safeValue(data, 'instanceServers', []);
254891
- const firstInstanceServer = this.safeValue(instanceServers, 0);
254892
- const pingInterval = this.safeInteger(firstInstanceServer, 'pingInterval');
254893
- const endpoint = this.safeString(firstInstanceServer, 'endpoint');
254894
- const token = this.safeString(data, 'token');
254895
- const result = endpoint + '?' + this.urlencode({
254896
- 'token': token,
254897
- 'privateChannel': privateChannel,
254898
- 'connectId': connectId,
254899
- });
254900
- const client = this.client(result);
254901
- client.keepAlive = pingInterval;
254902
- return result;
255168
+ return undefined;
254903
255169
  }
254904
255170
  requestId() {
254905
255171
  const requestId = this.sum(this.safeInteger(this.options, 'requestId', 0), 1);
@@ -279706,6 +279972,7 @@ class whitebit extends _abstract_whitebit_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
279706
279972
  'fetchOrderTrades': true,
279707
279973
  'fetchPositionMode': false,
279708
279974
  'fetchPremiumIndexOHLCV': false,
279975
+ 'fetchStatus': true,
279709
279976
  'fetchTicker': true,
279710
279977
  'fetchTickers': true,
279711
279978
  'fetchTime': true,
@@ -293914,39 +294181,39 @@ var __webpack_exports__ = {};
293914
294181
  (() => {
293915
294182
  __webpack_require__.r(__webpack_exports__);
293916
294183
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
293917
- /* harmony export */ AccountNotEnabled: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_158__.AccountNotEnabled),
293918
- /* harmony export */ AccountSuspended: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_158__.AccountSuspended),
293919
- /* harmony export */ AddressPending: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_158__.AddressPending),
293920
- /* harmony export */ ArgumentsRequired: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_158__.ArgumentsRequired),
293921
- /* harmony export */ AuthenticationError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_158__.AuthenticationError),
293922
- /* harmony export */ BadRequest: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_158__.BadRequest),
293923
- /* harmony export */ BadResponse: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_158__.BadResponse),
293924
- /* harmony export */ BadSymbol: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_158__.BadSymbol),
293925
- /* harmony export */ BaseError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_158__.BaseError),
293926
- /* harmony export */ CancelPending: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_158__.CancelPending),
293927
- /* harmony export */ DDoSProtection: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_158__.DDoSProtection),
293928
- /* harmony export */ DuplicateOrderId: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_158__.DuplicateOrderId),
294184
+ /* harmony export */ AccountNotEnabled: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_159__.AccountNotEnabled),
294185
+ /* harmony export */ AccountSuspended: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_159__.AccountSuspended),
294186
+ /* harmony export */ AddressPending: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_159__.AddressPending),
294187
+ /* harmony export */ ArgumentsRequired: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_159__.ArgumentsRequired),
294188
+ /* harmony export */ AuthenticationError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_159__.AuthenticationError),
294189
+ /* harmony export */ BadRequest: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_159__.BadRequest),
294190
+ /* harmony export */ BadResponse: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_159__.BadResponse),
294191
+ /* harmony export */ BadSymbol: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_159__.BadSymbol),
294192
+ /* harmony export */ BaseError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_159__.BaseError),
294193
+ /* harmony export */ CancelPending: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_159__.CancelPending),
294194
+ /* harmony export */ DDoSProtection: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_159__.DDoSProtection),
294195
+ /* harmony export */ DuplicateOrderId: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_159__.DuplicateOrderId),
293929
294196
  /* harmony export */ Exchange: () => (/* reexport safe */ _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__.e),
293930
- /* harmony export */ ExchangeError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_158__.ExchangeError),
293931
- /* harmony export */ ExchangeNotAvailable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_158__.ExchangeNotAvailable),
293932
- /* harmony export */ InsufficientFunds: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_158__.InsufficientFunds),
293933
- /* harmony export */ InvalidAddress: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_158__.InvalidAddress),
293934
- /* harmony export */ InvalidNonce: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_158__.InvalidNonce),
293935
- /* harmony export */ InvalidOrder: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_158__.InvalidOrder),
293936
- /* harmony export */ MarginModeAlreadySet: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_158__.MarginModeAlreadySet),
293937
- /* harmony export */ NetworkError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_158__.NetworkError),
293938
- /* harmony export */ NoChange: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_158__.NoChange),
293939
- /* harmony export */ NotSupported: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_158__.NotSupported),
293940
- /* harmony export */ NullResponse: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_158__.NullResponse),
293941
- /* harmony export */ OnMaintenance: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_158__.OnMaintenance),
293942
- /* harmony export */ OrderImmediatelyFillable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_158__.OrderImmediatelyFillable),
293943
- /* harmony export */ OrderNotCached: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_158__.OrderNotCached),
293944
- /* harmony export */ OrderNotFillable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_158__.OrderNotFillable),
293945
- /* harmony export */ OrderNotFound: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_158__.OrderNotFound),
293946
- /* harmony export */ PermissionDenied: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_158__.PermissionDenied),
293947
- /* harmony export */ Precise: () => (/* reexport safe */ _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_156__.O),
293948
- /* harmony export */ RateLimitExceeded: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_158__.RateLimitExceeded),
293949
- /* harmony export */ RequestTimeout: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_158__.RequestTimeout),
294197
+ /* harmony export */ ExchangeError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_159__.ExchangeError),
294198
+ /* harmony export */ ExchangeNotAvailable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_159__.ExchangeNotAvailable),
294199
+ /* harmony export */ InsufficientFunds: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_159__.InsufficientFunds),
294200
+ /* harmony export */ InvalidAddress: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_159__.InvalidAddress),
294201
+ /* harmony export */ InvalidNonce: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_159__.InvalidNonce),
294202
+ /* harmony export */ InvalidOrder: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_159__.InvalidOrder),
294203
+ /* harmony export */ MarginModeAlreadySet: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_159__.MarginModeAlreadySet),
294204
+ /* harmony export */ NetworkError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_159__.NetworkError),
294205
+ /* harmony export */ NoChange: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_159__.NoChange),
294206
+ /* harmony export */ NotSupported: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_159__.NotSupported),
294207
+ /* harmony export */ NullResponse: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_159__.NullResponse),
294208
+ /* harmony export */ OnMaintenance: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_159__.OnMaintenance),
294209
+ /* harmony export */ OrderImmediatelyFillable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_159__.OrderImmediatelyFillable),
294210
+ /* harmony export */ OrderNotCached: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_159__.OrderNotCached),
294211
+ /* harmony export */ OrderNotFillable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_159__.OrderNotFillable),
294212
+ /* harmony export */ OrderNotFound: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_159__.OrderNotFound),
294213
+ /* harmony export */ PermissionDenied: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_159__.PermissionDenied),
294214
+ /* harmony export */ Precise: () => (/* reexport safe */ _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_157__.O),
294215
+ /* harmony export */ RateLimitExceeded: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_159__.RateLimitExceeded),
294216
+ /* harmony export */ RequestTimeout: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_159__.RequestTimeout),
293950
294217
  /* harmony export */ ace: () => (/* reexport safe */ _src_ace_js__WEBPACK_IMPORTED_MODULE_1__.Z),
293951
294218
  /* harmony export */ alpaca: () => (/* reexport safe */ _src_alpaca_js__WEBPACK_IMPORTED_MODULE_2__.Z),
293952
294219
  /* harmony export */ ascendex: () => (/* reexport safe */ _src_ascendex_js__WEBPACK_IMPORTED_MODULE_3__.Z),
@@ -294000,11 +294267,11 @@ __webpack_require__.r(__webpack_exports__);
294000
294267
  /* harmony export */ delta: () => (/* reexport safe */ _src_delta_js__WEBPACK_IMPORTED_MODULE_50__.Z),
294001
294268
  /* harmony export */ deribit: () => (/* reexport safe */ _src_deribit_js__WEBPACK_IMPORTED_MODULE_51__.Z),
294002
294269
  /* harmony export */ digifinex: () => (/* reexport safe */ _src_digifinex_js__WEBPACK_IMPORTED_MODULE_52__.Z),
294003
- /* harmony export */ errors: () => (/* reexport module object */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_158__),
294270
+ /* harmony export */ errors: () => (/* reexport module object */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_159__),
294004
294271
  /* harmony export */ exchanges: () => (/* binding */ exchanges),
294005
294272
  /* harmony export */ exmo: () => (/* reexport safe */ _src_exmo_js__WEBPACK_IMPORTED_MODULE_53__.Z),
294006
294273
  /* harmony export */ fmfwio: () => (/* reexport safe */ _src_fmfwio_js__WEBPACK_IMPORTED_MODULE_54__.Z),
294007
- /* harmony export */ functions: () => (/* reexport module object */ _src_base_functions_js__WEBPACK_IMPORTED_MODULE_157__),
294274
+ /* harmony export */ functions: () => (/* reexport module object */ _src_base_functions_js__WEBPACK_IMPORTED_MODULE_158__),
294008
294275
  /* harmony export */ gate: () => (/* reexport safe */ _src_gate_js__WEBPACK_IMPORTED_MODULE_55__.Z),
294009
294276
  /* harmony export */ gateio: () => (/* reexport safe */ _src_gateio_js__WEBPACK_IMPORTED_MODULE_56__.Z),
294010
294277
  /* harmony export */ gemini: () => (/* reexport safe */ _src_gemini_js__WEBPACK_IMPORTED_MODULE_57__.Z),
@@ -294053,9 +294320,9 @@ __webpack_require__.r(__webpack_exports__);
294053
294320
  /* harmony export */ zonda: () => (/* reexport safe */ _src_zonda_js__WEBPACK_IMPORTED_MODULE_98__.Z)
294054
294321
  /* harmony export */ });
294055
294322
  /* harmony import */ var _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3043);
294056
- /* harmony import */ var _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_156__ = __webpack_require__(2194);
294057
- /* harmony import */ var _src_base_functions_js__WEBPACK_IMPORTED_MODULE_157__ = __webpack_require__(7100);
294058
- /* harmony import */ var _src_base_errors_js__WEBPACK_IMPORTED_MODULE_158__ = __webpack_require__(6689);
294323
+ /* harmony import */ var _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_157__ = __webpack_require__(2194);
294324
+ /* harmony import */ var _src_base_functions_js__WEBPACK_IMPORTED_MODULE_158__ = __webpack_require__(7100);
294325
+ /* harmony import */ var _src_base_errors_js__WEBPACK_IMPORTED_MODULE_159__ = __webpack_require__(6689);
294059
294326
  /* harmony import */ var _src_ace_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9869);
294060
294327
  /* harmony import */ var _src_alpaca_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5660);
294061
294328
  /* harmony import */ var _src_ascendex_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9612);
@@ -294178,39 +294445,40 @@ __webpack_require__.r(__webpack_exports__);
294178
294445
  /* harmony import */ var _src_pro_cex_js__WEBPACK_IMPORTED_MODULE_120__ = __webpack_require__(5272);
294179
294446
  /* harmony import */ var _src_pro_coinbase_js__WEBPACK_IMPORTED_MODULE_121__ = __webpack_require__(3414);
294180
294447
  /* harmony import */ var _src_pro_coinbasepro_js__WEBPACK_IMPORTED_MODULE_122__ = __webpack_require__(8368);
294181
- /* harmony import */ var _src_pro_coinex_js__WEBPACK_IMPORTED_MODULE_123__ = __webpack_require__(204);
294182
- /* harmony import */ var _src_pro_coinone_js__WEBPACK_IMPORTED_MODULE_124__ = __webpack_require__(5208);
294183
- /* harmony import */ var _src_pro_cryptocom_js__WEBPACK_IMPORTED_MODULE_125__ = __webpack_require__(6820);
294184
- /* harmony import */ var _src_pro_currencycom_js__WEBPACK_IMPORTED_MODULE_126__ = __webpack_require__(2952);
294185
- /* harmony import */ var _src_pro_deribit_js__WEBPACK_IMPORTED_MODULE_127__ = __webpack_require__(1788);
294186
- /* harmony import */ var _src_pro_exmo_js__WEBPACK_IMPORTED_MODULE_128__ = __webpack_require__(9004);
294187
- /* harmony import */ var _src_pro_gate_js__WEBPACK_IMPORTED_MODULE_129__ = __webpack_require__(8335);
294188
- /* harmony import */ var _src_pro_gateio_js__WEBPACK_IMPORTED_MODULE_130__ = __webpack_require__(1465);
294189
- /* harmony import */ var _src_pro_gemini_js__WEBPACK_IMPORTED_MODULE_131__ = __webpack_require__(9488);
294190
- /* harmony import */ var _src_pro_hitbtc_js__WEBPACK_IMPORTED_MODULE_132__ = __webpack_require__(5189);
294191
- /* harmony import */ var _src_pro_hollaex_js__WEBPACK_IMPORTED_MODULE_133__ = __webpack_require__(8559);
294192
- /* harmony import */ var _src_pro_htx_js__WEBPACK_IMPORTED_MODULE_134__ = __webpack_require__(7474);
294193
- /* harmony import */ var _src_pro_huobi_js__WEBPACK_IMPORTED_MODULE_135__ = __webpack_require__(8384);
294194
- /* harmony import */ var _src_pro_huobijp_js__WEBPACK_IMPORTED_MODULE_136__ = __webpack_require__(9021);
294195
- /* harmony import */ var _src_pro_idex_js__WEBPACK_IMPORTED_MODULE_137__ = __webpack_require__(3484);
294196
- /* harmony import */ var _src_pro_independentreserve_js__WEBPACK_IMPORTED_MODULE_138__ = __webpack_require__(1311);
294197
- /* harmony import */ var _src_pro_kraken_js__WEBPACK_IMPORTED_MODULE_139__ = __webpack_require__(736);
294198
- /* harmony import */ var _src_pro_krakenfutures_js__WEBPACK_IMPORTED_MODULE_140__ = __webpack_require__(449);
294199
- /* harmony import */ var _src_pro_kucoin_js__WEBPACK_IMPORTED_MODULE_141__ = __webpack_require__(2387);
294200
- /* harmony import */ var _src_pro_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_142__ = __webpack_require__(7181);
294201
- /* harmony import */ var _src_pro_luno_js__WEBPACK_IMPORTED_MODULE_143__ = __webpack_require__(627);
294202
- /* harmony import */ var _src_pro_mexc_js__WEBPACK_IMPORTED_MODULE_144__ = __webpack_require__(6484);
294203
- /* harmony import */ var _src_pro_ndax_js__WEBPACK_IMPORTED_MODULE_145__ = __webpack_require__(8080);
294204
- /* harmony import */ var _src_pro_okcoin_js__WEBPACK_IMPORTED_MODULE_146__ = __webpack_require__(7105);
294205
- /* harmony import */ var _src_pro_okx_js__WEBPACK_IMPORTED_MODULE_147__ = __webpack_require__(2214);
294206
- /* harmony import */ var _src_pro_phemex_js__WEBPACK_IMPORTED_MODULE_148__ = __webpack_require__(4360);
294207
- /* harmony import */ var _src_pro_poloniex_js__WEBPACK_IMPORTED_MODULE_149__ = __webpack_require__(7924);
294208
- /* harmony import */ var _src_pro_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_150__ = __webpack_require__(3541);
294209
- /* harmony import */ var _src_pro_probit_js__WEBPACK_IMPORTED_MODULE_151__ = __webpack_require__(9782);
294210
- /* harmony import */ var _src_pro_upbit_js__WEBPACK_IMPORTED_MODULE_152__ = __webpack_require__(7614);
294211
- /* harmony import */ var _src_pro_wazirx_js__WEBPACK_IMPORTED_MODULE_153__ = __webpack_require__(4828);
294212
- /* harmony import */ var _src_pro_whitebit_js__WEBPACK_IMPORTED_MODULE_154__ = __webpack_require__(5630);
294213
- /* harmony import */ var _src_pro_woo_js__WEBPACK_IMPORTED_MODULE_155__ = __webpack_require__(3910);
294448
+ /* harmony import */ var _src_pro_coincheck_js__WEBPACK_IMPORTED_MODULE_123__ = __webpack_require__(7891);
294449
+ /* harmony import */ var _src_pro_coinex_js__WEBPACK_IMPORTED_MODULE_124__ = __webpack_require__(204);
294450
+ /* harmony import */ var _src_pro_coinone_js__WEBPACK_IMPORTED_MODULE_125__ = __webpack_require__(5208);
294451
+ /* harmony import */ var _src_pro_cryptocom_js__WEBPACK_IMPORTED_MODULE_126__ = __webpack_require__(6820);
294452
+ /* harmony import */ var _src_pro_currencycom_js__WEBPACK_IMPORTED_MODULE_127__ = __webpack_require__(2952);
294453
+ /* harmony import */ var _src_pro_deribit_js__WEBPACK_IMPORTED_MODULE_128__ = __webpack_require__(1788);
294454
+ /* harmony import */ var _src_pro_exmo_js__WEBPACK_IMPORTED_MODULE_129__ = __webpack_require__(9004);
294455
+ /* harmony import */ var _src_pro_gate_js__WEBPACK_IMPORTED_MODULE_130__ = __webpack_require__(8335);
294456
+ /* harmony import */ var _src_pro_gateio_js__WEBPACK_IMPORTED_MODULE_131__ = __webpack_require__(1465);
294457
+ /* harmony import */ var _src_pro_gemini_js__WEBPACK_IMPORTED_MODULE_132__ = __webpack_require__(9488);
294458
+ /* harmony import */ var _src_pro_hitbtc_js__WEBPACK_IMPORTED_MODULE_133__ = __webpack_require__(5189);
294459
+ /* harmony import */ var _src_pro_hollaex_js__WEBPACK_IMPORTED_MODULE_134__ = __webpack_require__(8559);
294460
+ /* harmony import */ var _src_pro_htx_js__WEBPACK_IMPORTED_MODULE_135__ = __webpack_require__(7474);
294461
+ /* harmony import */ var _src_pro_huobi_js__WEBPACK_IMPORTED_MODULE_136__ = __webpack_require__(8384);
294462
+ /* harmony import */ var _src_pro_huobijp_js__WEBPACK_IMPORTED_MODULE_137__ = __webpack_require__(9021);
294463
+ /* harmony import */ var _src_pro_idex_js__WEBPACK_IMPORTED_MODULE_138__ = __webpack_require__(3484);
294464
+ /* harmony import */ var _src_pro_independentreserve_js__WEBPACK_IMPORTED_MODULE_139__ = __webpack_require__(1311);
294465
+ /* harmony import */ var _src_pro_kraken_js__WEBPACK_IMPORTED_MODULE_140__ = __webpack_require__(736);
294466
+ /* harmony import */ var _src_pro_krakenfutures_js__WEBPACK_IMPORTED_MODULE_141__ = __webpack_require__(449);
294467
+ /* harmony import */ var _src_pro_kucoin_js__WEBPACK_IMPORTED_MODULE_142__ = __webpack_require__(2387);
294468
+ /* harmony import */ var _src_pro_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_143__ = __webpack_require__(7181);
294469
+ /* harmony import */ var _src_pro_luno_js__WEBPACK_IMPORTED_MODULE_144__ = __webpack_require__(627);
294470
+ /* harmony import */ var _src_pro_mexc_js__WEBPACK_IMPORTED_MODULE_145__ = __webpack_require__(6484);
294471
+ /* harmony import */ var _src_pro_ndax_js__WEBPACK_IMPORTED_MODULE_146__ = __webpack_require__(8080);
294472
+ /* harmony import */ var _src_pro_okcoin_js__WEBPACK_IMPORTED_MODULE_147__ = __webpack_require__(7105);
294473
+ /* harmony import */ var _src_pro_okx_js__WEBPACK_IMPORTED_MODULE_148__ = __webpack_require__(2214);
294474
+ /* harmony import */ var _src_pro_phemex_js__WEBPACK_IMPORTED_MODULE_149__ = __webpack_require__(4360);
294475
+ /* harmony import */ var _src_pro_poloniex_js__WEBPACK_IMPORTED_MODULE_150__ = __webpack_require__(7924);
294476
+ /* harmony import */ var _src_pro_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_151__ = __webpack_require__(3541);
294477
+ /* harmony import */ var _src_pro_probit_js__WEBPACK_IMPORTED_MODULE_152__ = __webpack_require__(9782);
294478
+ /* harmony import */ var _src_pro_upbit_js__WEBPACK_IMPORTED_MODULE_153__ = __webpack_require__(7614);
294479
+ /* harmony import */ var _src_pro_wazirx_js__WEBPACK_IMPORTED_MODULE_154__ = __webpack_require__(4828);
294480
+ /* harmony import */ var _src_pro_whitebit_js__WEBPACK_IMPORTED_MODULE_155__ = __webpack_require__(5630);
294481
+ /* harmony import */ var _src_pro_woo_js__WEBPACK_IMPORTED_MODULE_156__ = __webpack_require__(3910);
294214
294482
  /*
294215
294483
 
294216
294484
  MIT License
@@ -294245,7 +294513,7 @@ SOFTWARE.
294245
294513
 
294246
294514
  //-----------------------------------------------------------------------------
294247
294515
  // this is updated by vss.js when building
294248
- const version = '4.2.16';
294516
+ const version = '4.2.18';
294249
294517
  _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e.ccxtVersion = version;
294250
294518
  //-----------------------------------------------------------------------------
294251
294519
 
@@ -294402,6 +294670,7 @@ _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e.ccxtVersion
294402
294670
 
294403
294671
 
294404
294672
 
294673
+
294405
294674
 
294406
294675
 
294407
294676
  const exchanges = {
@@ -294529,39 +294798,40 @@ const pro = {
294529
294798
  'cex': _src_pro_cex_js__WEBPACK_IMPORTED_MODULE_120__/* ["default"] */ .Z,
294530
294799
  'coinbase': _src_pro_coinbase_js__WEBPACK_IMPORTED_MODULE_121__/* ["default"] */ .Z,
294531
294800
  'coinbasepro': _src_pro_coinbasepro_js__WEBPACK_IMPORTED_MODULE_122__/* ["default"] */ .Z,
294532
- 'coinex': _src_pro_coinex_js__WEBPACK_IMPORTED_MODULE_123__/* ["default"] */ .Z,
294533
- 'coinone': _src_pro_coinone_js__WEBPACK_IMPORTED_MODULE_124__/* ["default"] */ .Z,
294534
- 'cryptocom': _src_pro_cryptocom_js__WEBPACK_IMPORTED_MODULE_125__/* ["default"] */ .Z,
294535
- 'currencycom': _src_pro_currencycom_js__WEBPACK_IMPORTED_MODULE_126__/* ["default"] */ .Z,
294536
- 'deribit': _src_pro_deribit_js__WEBPACK_IMPORTED_MODULE_127__/* ["default"] */ .Z,
294537
- 'exmo': _src_pro_exmo_js__WEBPACK_IMPORTED_MODULE_128__/* ["default"] */ .Z,
294538
- 'gate': _src_pro_gate_js__WEBPACK_IMPORTED_MODULE_129__/* ["default"] */ .Z,
294539
- 'gateio': _src_pro_gateio_js__WEBPACK_IMPORTED_MODULE_130__/* ["default"] */ .Z,
294540
- 'gemini': _src_pro_gemini_js__WEBPACK_IMPORTED_MODULE_131__/* ["default"] */ .Z,
294541
- 'hitbtc': _src_pro_hitbtc_js__WEBPACK_IMPORTED_MODULE_132__/* ["default"] */ .Z,
294542
- 'hollaex': _src_pro_hollaex_js__WEBPACK_IMPORTED_MODULE_133__/* ["default"] */ .Z,
294543
- 'htx': _src_pro_htx_js__WEBPACK_IMPORTED_MODULE_134__/* ["default"] */ .Z,
294544
- 'huobi': _src_pro_huobi_js__WEBPACK_IMPORTED_MODULE_135__/* ["default"] */ .Z,
294545
- 'huobijp': _src_pro_huobijp_js__WEBPACK_IMPORTED_MODULE_136__/* ["default"] */ .Z,
294546
- 'idex': _src_pro_idex_js__WEBPACK_IMPORTED_MODULE_137__/* ["default"] */ .Z,
294547
- 'independentreserve': _src_pro_independentreserve_js__WEBPACK_IMPORTED_MODULE_138__/* ["default"] */ .Z,
294548
- 'kraken': _src_pro_kraken_js__WEBPACK_IMPORTED_MODULE_139__/* ["default"] */ .Z,
294549
- 'krakenfutures': _src_pro_krakenfutures_js__WEBPACK_IMPORTED_MODULE_140__/* ["default"] */ .Z,
294550
- 'kucoin': _src_pro_kucoin_js__WEBPACK_IMPORTED_MODULE_141__/* ["default"] */ .Z,
294551
- 'kucoinfutures': _src_pro_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_142__/* ["default"] */ .Z,
294552
- 'luno': _src_pro_luno_js__WEBPACK_IMPORTED_MODULE_143__/* ["default"] */ .Z,
294553
- 'mexc': _src_pro_mexc_js__WEBPACK_IMPORTED_MODULE_144__/* ["default"] */ .Z,
294554
- 'ndax': _src_pro_ndax_js__WEBPACK_IMPORTED_MODULE_145__/* ["default"] */ .Z,
294555
- 'okcoin': _src_pro_okcoin_js__WEBPACK_IMPORTED_MODULE_146__/* ["default"] */ .Z,
294556
- 'okx': _src_pro_okx_js__WEBPACK_IMPORTED_MODULE_147__/* ["default"] */ .Z,
294557
- 'phemex': _src_pro_phemex_js__WEBPACK_IMPORTED_MODULE_148__/* ["default"] */ .Z,
294558
- 'poloniex': _src_pro_poloniex_js__WEBPACK_IMPORTED_MODULE_149__/* ["default"] */ .Z,
294559
- 'poloniexfutures': _src_pro_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_150__/* ["default"] */ .Z,
294560
- 'probit': _src_pro_probit_js__WEBPACK_IMPORTED_MODULE_151__/* ["default"] */ .Z,
294561
- 'upbit': _src_pro_upbit_js__WEBPACK_IMPORTED_MODULE_152__/* ["default"] */ .Z,
294562
- 'wazirx': _src_pro_wazirx_js__WEBPACK_IMPORTED_MODULE_153__/* ["default"] */ .Z,
294563
- 'whitebit': _src_pro_whitebit_js__WEBPACK_IMPORTED_MODULE_154__/* ["default"] */ .Z,
294564
- 'woo': _src_pro_woo_js__WEBPACK_IMPORTED_MODULE_155__/* ["default"] */ .Z,
294801
+ 'coincheck': _src_pro_coincheck_js__WEBPACK_IMPORTED_MODULE_123__/* ["default"] */ .Z,
294802
+ 'coinex': _src_pro_coinex_js__WEBPACK_IMPORTED_MODULE_124__/* ["default"] */ .Z,
294803
+ 'coinone': _src_pro_coinone_js__WEBPACK_IMPORTED_MODULE_125__/* ["default"] */ .Z,
294804
+ 'cryptocom': _src_pro_cryptocom_js__WEBPACK_IMPORTED_MODULE_126__/* ["default"] */ .Z,
294805
+ 'currencycom': _src_pro_currencycom_js__WEBPACK_IMPORTED_MODULE_127__/* ["default"] */ .Z,
294806
+ 'deribit': _src_pro_deribit_js__WEBPACK_IMPORTED_MODULE_128__/* ["default"] */ .Z,
294807
+ 'exmo': _src_pro_exmo_js__WEBPACK_IMPORTED_MODULE_129__/* ["default"] */ .Z,
294808
+ 'gate': _src_pro_gate_js__WEBPACK_IMPORTED_MODULE_130__/* ["default"] */ .Z,
294809
+ 'gateio': _src_pro_gateio_js__WEBPACK_IMPORTED_MODULE_131__/* ["default"] */ .Z,
294810
+ 'gemini': _src_pro_gemini_js__WEBPACK_IMPORTED_MODULE_132__/* ["default"] */ .Z,
294811
+ 'hitbtc': _src_pro_hitbtc_js__WEBPACK_IMPORTED_MODULE_133__/* ["default"] */ .Z,
294812
+ 'hollaex': _src_pro_hollaex_js__WEBPACK_IMPORTED_MODULE_134__/* ["default"] */ .Z,
294813
+ 'htx': _src_pro_htx_js__WEBPACK_IMPORTED_MODULE_135__/* ["default"] */ .Z,
294814
+ 'huobi': _src_pro_huobi_js__WEBPACK_IMPORTED_MODULE_136__/* ["default"] */ .Z,
294815
+ 'huobijp': _src_pro_huobijp_js__WEBPACK_IMPORTED_MODULE_137__/* ["default"] */ .Z,
294816
+ 'idex': _src_pro_idex_js__WEBPACK_IMPORTED_MODULE_138__/* ["default"] */ .Z,
294817
+ 'independentreserve': _src_pro_independentreserve_js__WEBPACK_IMPORTED_MODULE_139__/* ["default"] */ .Z,
294818
+ 'kraken': _src_pro_kraken_js__WEBPACK_IMPORTED_MODULE_140__/* ["default"] */ .Z,
294819
+ 'krakenfutures': _src_pro_krakenfutures_js__WEBPACK_IMPORTED_MODULE_141__/* ["default"] */ .Z,
294820
+ 'kucoin': _src_pro_kucoin_js__WEBPACK_IMPORTED_MODULE_142__/* ["default"] */ .Z,
294821
+ 'kucoinfutures': _src_pro_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_143__/* ["default"] */ .Z,
294822
+ 'luno': _src_pro_luno_js__WEBPACK_IMPORTED_MODULE_144__/* ["default"] */ .Z,
294823
+ 'mexc': _src_pro_mexc_js__WEBPACK_IMPORTED_MODULE_145__/* ["default"] */ .Z,
294824
+ 'ndax': _src_pro_ndax_js__WEBPACK_IMPORTED_MODULE_146__/* ["default"] */ .Z,
294825
+ 'okcoin': _src_pro_okcoin_js__WEBPACK_IMPORTED_MODULE_147__/* ["default"] */ .Z,
294826
+ 'okx': _src_pro_okx_js__WEBPACK_IMPORTED_MODULE_148__/* ["default"] */ .Z,
294827
+ 'phemex': _src_pro_phemex_js__WEBPACK_IMPORTED_MODULE_149__/* ["default"] */ .Z,
294828
+ 'poloniex': _src_pro_poloniex_js__WEBPACK_IMPORTED_MODULE_150__/* ["default"] */ .Z,
294829
+ 'poloniexfutures': _src_pro_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_151__/* ["default"] */ .Z,
294830
+ 'probit': _src_pro_probit_js__WEBPACK_IMPORTED_MODULE_152__/* ["default"] */ .Z,
294831
+ 'upbit': _src_pro_upbit_js__WEBPACK_IMPORTED_MODULE_153__/* ["default"] */ .Z,
294832
+ 'wazirx': _src_pro_wazirx_js__WEBPACK_IMPORTED_MODULE_154__/* ["default"] */ .Z,
294833
+ 'whitebit': _src_pro_whitebit_js__WEBPACK_IMPORTED_MODULE_155__/* ["default"] */ .Z,
294834
+ 'woo': _src_pro_woo_js__WEBPACK_IMPORTED_MODULE_156__/* ["default"] */ .Z,
294565
294835
  };
294566
294836
  for (const exchange in pro) {
294567
294837
  // const ccxtExchange = exchanges[exchange]
@@ -294574,7 +294844,7 @@ for (const exchange in pro) {
294574
294844
  pro.exchanges = Object.keys(pro);
294575
294845
  pro['Exchange'] = _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e; // now the same for rest and ts
294576
294846
  //-----------------------------------------------------------------------------
294577
- const ccxt = Object.assign({ version, Exchange: _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e, Precise: _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_156__/* .Precise */ .O, 'exchanges': Object.keys(exchanges), 'pro': pro }, exchanges, _src_base_functions_js__WEBPACK_IMPORTED_MODULE_157__, _src_base_errors_js__WEBPACK_IMPORTED_MODULE_158__);
294847
+ const ccxt = Object.assign({ version, Exchange: _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e, Precise: _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_157__/* .Precise */ .O, 'exchanges': Object.keys(exchanges), 'pro': pro }, exchanges, _src_base_functions_js__WEBPACK_IMPORTED_MODULE_158__, _src_base_errors_js__WEBPACK_IMPORTED_MODULE_159__);
294578
294848
 
294579
294849
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ccxt);
294580
294850
  //-----------------------------------------------------------------------------