ccxt 4.1.87 → 4.1.89

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 (101) hide show
  1. package/CHANGELOG.md +8309 -5710
  2. package/README.md +10 -9
  3. package/changelog.js +101 -0
  4. package/dist/ccxt.browser.js +8628 -4849
  5. package/dist/ccxt.browser.min.js +3 -3
  6. package/dist/cjs/ccxt.js +6 -1
  7. package/dist/cjs/src/base/Exchange.js +95 -27
  8. package/dist/cjs/src/base/ws/Client.js +3 -3
  9. package/dist/cjs/src/base/ws/Future.js +9 -2
  10. package/dist/cjs/src/base/ws/WsClient.js +1 -1
  11. package/dist/cjs/src/bigone.js +8 -1
  12. package/dist/cjs/src/binance.js +4 -105
  13. package/dist/cjs/src/bit2c.js +8 -2
  14. package/dist/cjs/src/bitget.js +3455 -2480
  15. package/dist/cjs/src/bitmart.js +35 -9
  16. package/dist/cjs/src/coinbase.js +2 -0
  17. package/dist/cjs/src/coinbasepro.js +0 -43
  18. package/dist/cjs/src/coinex.js +14 -1
  19. package/dist/cjs/src/coinsph.js +0 -29
  20. package/dist/cjs/src/cryptocom.js +22 -10
  21. package/dist/cjs/src/gate.js +37 -39
  22. package/dist/cjs/src/gemini.js +1 -0
  23. package/dist/cjs/src/novadax.js +28 -16
  24. package/dist/cjs/src/okcoin.js +80 -21
  25. package/dist/cjs/src/phemex.js +105 -29
  26. package/dist/cjs/src/pro/binance.js +18 -215
  27. package/dist/cjs/src/pro/bitget.js +780 -736
  28. package/dist/cjs/src/pro/bitmart.js +8 -10
  29. package/dist/cjs/src/pro/bitmex.js +9 -34
  30. package/dist/cjs/src/pro/bitpanda.js +4 -4
  31. package/dist/cjs/src/pro/bybit.js +21 -97
  32. package/dist/cjs/src/pro/coinbasepro.js +36 -40
  33. package/dist/cjs/src/pro/cryptocom.js +10 -26
  34. package/dist/cjs/src/pro/gate.js +20 -17
  35. package/dist/cjs/src/pro/kucoin.js +39 -39
  36. package/dist/cjs/src/pro/kucoinfutures.js +40 -36
  37. package/dist/cjs/src/pro/okx.js +16 -29
  38. package/dist/cjs/src/tokocrypto.js +28 -14
  39. package/dist/cjs/src/woo.js +41 -14
  40. package/js/ccxt.d.ts +8 -2
  41. package/js/ccxt.js +6 -2
  42. package/js/src/abstract/bitget.d.ts +1 -1
  43. package/js/src/abstract/coinbasepro.d.ts +69 -0
  44. package/js/src/abstract/coinbasepro.js +11 -0
  45. package/js/src/abstract/phemex.d.ts +1 -0
  46. package/js/src/base/Exchange.d.ts +2 -3
  47. package/js/src/base/Exchange.js +96 -28
  48. package/js/src/base/ws/Client.d.ts +2 -2
  49. package/js/src/base/ws/Client.js +4 -4
  50. package/js/src/base/ws/Future.d.ts +5 -2
  51. package/js/src/base/ws/Future.js +8 -2
  52. package/js/src/base/ws/WsClient.d.ts +1 -1
  53. package/js/src/base/ws/WsClient.js +2 -2
  54. package/js/src/bigone.js +9 -2
  55. package/js/src/binance.d.ts +0 -9
  56. package/js/src/binance.js +4 -105
  57. package/js/src/bit2c.js +8 -2
  58. package/js/src/bitget.d.ts +13 -11
  59. package/js/src/bitget.js +3455 -2480
  60. package/js/src/bitmart.js +35 -9
  61. package/js/src/coinbase.js +2 -0
  62. package/js/src/coinbasepro.d.ts +0 -4
  63. package/js/src/coinbasepro.js +1 -44
  64. package/js/src/coinex.js +14 -1
  65. package/js/src/coinsph.d.ts +0 -1
  66. package/js/src/coinsph.js +0 -29
  67. package/js/src/cryptocom.js +22 -10
  68. package/js/src/gate.js +37 -39
  69. package/js/src/gemini.js +1 -0
  70. package/js/src/novadax.js +28 -16
  71. package/js/src/okcoin.d.ts +1 -0
  72. package/js/src/okcoin.js +81 -22
  73. package/js/src/phemex.d.ts +2 -108
  74. package/js/src/phemex.js +105 -29
  75. package/js/src/pro/binance.d.ts +0 -2
  76. package/js/src/pro/binance.js +19 -216
  77. package/js/src/pro/bitget.d.ts +3 -5
  78. package/js/src/pro/bitget.js +780 -736
  79. package/js/src/pro/bitmart.js +8 -10
  80. package/js/src/pro/bitmex.js +9 -34
  81. package/js/src/pro/bitpanda.d.ts +1 -1
  82. package/js/src/pro/bitpanda.js +4 -4
  83. package/js/src/pro/bybit.d.ts +1 -2
  84. package/js/src/pro/bybit.js +21 -97
  85. package/js/src/pro/coinbasepro.d.ts +2 -2
  86. package/js/src/pro/coinbasepro.js +36 -40
  87. package/js/src/pro/cryptocom.d.ts +1 -1
  88. package/js/src/pro/cryptocom.js +10 -26
  89. package/js/src/pro/gate.d.ts +1 -0
  90. package/js/src/pro/gate.js +20 -17
  91. package/js/src/pro/kucoin.d.ts +1 -0
  92. package/js/src/pro/kucoin.js +39 -39
  93. package/js/src/pro/kucoinfutures.d.ts +2 -1
  94. package/js/src/pro/kucoinfutures.js +40 -36
  95. package/js/src/pro/okx.d.ts +1 -1
  96. package/js/src/pro/okx.js +16 -29
  97. package/js/src/tokocrypto.js +28 -14
  98. package/js/src/woo.d.ts +1 -0
  99. package/js/src/woo.js +42 -15
  100. package/package.json +2 -2
  101. package/skip-tests.json +3 -14
@@ -7,7 +7,7 @@
7
7
  // ----------------------------------------------------------------------------
8
8
  import binanceRest from '../binance.js';
9
9
  import { Precise } from '../base/Precise.js';
10
- import { ExchangeError, ArgumentsRequired, BadRequest, NotSupported } from '../base/errors.js';
10
+ import { ExchangeError, ArgumentsRequired, BadRequest } from '../base/errors.js';
11
11
  import { ArrayCache, ArrayCacheByTimestamp, ArrayCacheBySymbolById, ArrayCacheBySymbolBySide } from '../base/ws/Cache.js';
12
12
  import { sha256 } from '../static_dependencies/noble-hashes/sha256.js';
13
13
  import { rsa } from '../base/functions/rsa.js';
@@ -152,24 +152,6 @@ export default class binance extends binanceRest {
152
152
  // valid <levels> are 5, 10, or 20
153
153
  //
154
154
  // default 100, max 1000, valid limits 5, 10, 20, 50, 100, 500, 1000
155
- await this.loadMarkets();
156
- const market = this.market(symbol);
157
- if (limit !== undefined) {
158
- if (market['contract']) {
159
- if ((limit !== 5) && (limit !== 10) && (limit !== 20) && (limit !== 50) && (limit !== 100) && (limit !== 500) && (limit !== 1000)) {
160
- throw new ExchangeError(this.id + ' watchOrderBook limit argument must be undefined, 5, 10, 20, 50, 100, 500 or 1000');
161
- }
162
- }
163
- else {
164
- if (limit > 5000) {
165
- throw new ExchangeError(this.id + ' watchOrderBook limit argument must be less than or equal to 5000');
166
- }
167
- }
168
- }
169
- let type = market['type'];
170
- if (market['contract']) {
171
- type = market['linear'] ? 'future' : 'delivery';
172
- }
173
155
  //
174
156
  // notice the differences between trading futures and spot trading
175
157
  // the algorithms use different urls in step 1
@@ -201,32 +183,7 @@ export default class binance extends binanceRest {
201
183
  // 8. If the quantity is 0, remove the price level.
202
184
  // 9. Receiving an event that removes a price level that is not in your local order book can happen and is normal.
203
185
  //
204
- const name = 'depth';
205
- const messageHash = market['lowercaseId'] + '@' + name;
206
- const url = this.urls['api']['ws'][type] + '/' + this.stream(type, messageHash);
207
- const requestId = this.requestId(url);
208
- const watchOrderBookRate = this.safeString(this.options, 'watchOrderBookRate', '100');
209
- const request = {
210
- 'method': 'SUBSCRIBE',
211
- 'params': [
212
- messageHash + '@' + watchOrderBookRate + 'ms',
213
- ],
214
- 'id': requestId,
215
- };
216
- const subscription = {
217
- 'id': requestId.toString(),
218
- 'messageHash': messageHash,
219
- 'name': name,
220
- 'symbol': market['symbol'],
221
- 'method': this.handleOrderBookSubscription,
222
- 'limit': limit,
223
- 'type': type,
224
- 'params': params,
225
- };
226
- const message = this.extend(request, params);
227
- // 1. Open a stream to wss://stream.binance.com:9443/ws/bnbbtc@depth.
228
- const orderbook = await this.watch(url, messageHash, message, messageHash, subscription);
229
- return orderbook.limit();
186
+ return await this.watchOrderBookForSymbols([symbol], limit, params);
230
187
  }
231
188
  async watchOrderBookForSymbols(symbols, limit = undefined, params = {}) {
232
189
  /**
@@ -246,15 +203,17 @@ export default class binance extends binanceRest {
246
203
  type = firstMarket['linear'] ? 'future' : 'delivery';
247
204
  }
248
205
  const name = 'depth';
249
- const messageHash = 'multipleOrderbook::' + symbols.join(',');
250
206
  const url = this.urls['api']['ws'][type] + '/' + this.stream(type, 'multipleOrderbook');
251
207
  const requestId = this.requestId(url);
252
208
  const watchOrderBookRate = this.safeString(this.options, 'watchOrderBookRate', '100');
253
209
  const subParams = [];
210
+ const messageHashes = [];
254
211
  for (let i = 0; i < symbols.length; i++) {
255
212
  const symbol = symbols[i];
256
213
  const market = this.market(symbol);
257
- const symbolHash = market['lowercaseId'] + '@' + name + '@' + watchOrderBookRate + 'ms';
214
+ const messageHash = market['lowercaseId'] + '@' + name;
215
+ messageHashes.push(messageHash);
216
+ const symbolHash = messageHash + '@' + watchOrderBookRate + 'ms';
258
217
  subParams.push(symbolHash);
259
218
  }
260
219
  const request = {
@@ -264,7 +223,6 @@ export default class binance extends binanceRest {
264
223
  };
265
224
  const subscription = {
266
225
  'id': requestId.toString(),
267
- 'messageHash': messageHash,
268
226
  'name': name,
269
227
  'symbols': symbols,
270
228
  'method': this.handleOrderBookSubscription,
@@ -273,12 +231,14 @@ export default class binance extends binanceRest {
273
231
  'params': params,
274
232
  };
275
233
  const message = this.extend(request, params);
276
- const orderbook = await this.watch(url, messageHash, message, messageHash, subscription);
234
+ const orderbook = await this.watchMultiple(url, messageHashes, message, messageHashes, subscription);
277
235
  return orderbook.limit();
278
236
  }
279
237
  async fetchOrderBookSnapshot(client, message, subscription) {
280
- const messageHash = this.safeString(subscription, 'messageHash');
238
+ const name = this.safeString(subscription, 'name');
281
239
  const symbol = this.safeString(subscription, 'symbol');
240
+ const market = this.market(symbol);
241
+ const messageHash = market['lowercaseId'] + '@' + name;
282
242
  try {
283
243
  const defaultLimit = this.safeInteger(this.options, 'watchOrderBookLimit', 1000);
284
244
  const type = this.safeValue(subscription, 'type');
@@ -418,8 +378,6 @@ export default class binance extends binanceRest {
418
378
  this.handleOrderBookMessage(client, message, orderbook);
419
379
  if (nonce < orderbook['nonce']) {
420
380
  client.resolve(orderbook, messageHash);
421
- // watchOrderBookForSymbols part (dry logic)
422
- this.resolvePromiseIfMessagehashMatches(client, 'multipleOrderbook::', symbol, orderbook);
423
381
  }
424
382
  }
425
383
  else {
@@ -438,8 +396,6 @@ export default class binance extends binanceRest {
438
396
  this.handleOrderBookMessage(client, message, orderbook);
439
397
  if (nonce <= orderbook['nonce']) {
440
398
  client.resolve(orderbook, messageHash);
441
- // watchOrderBookForSymbols part (dry logic)
442
- this.resolvePromiseIfMessagehashMatches(client, 'multipleOrderbook::', symbol, orderbook);
443
399
  }
444
400
  }
445
401
  else {
@@ -517,9 +473,8 @@ export default class binance extends binanceRest {
517
473
  const currentMessageHash = market['lowercaseId'] + '@' + name;
518
474
  subParams.push(currentMessageHash);
519
475
  }
520
- const messageHash = 'multipleTrades::' + symbols.join(',');
521
476
  const query = this.omit(params, 'type');
522
- const url = this.urls['api']['ws'][type] + '/' + this.stream(type, messageHash);
477
+ const url = this.urls['api']['ws'][type] + '/' + this.stream(type, 'multipleTrades');
523
478
  const requestId = this.requestId(url);
524
479
  const request = {
525
480
  'method': 'SUBSCRIBE',
@@ -529,7 +484,7 @@ export default class binance extends binanceRest {
529
484
  const subscribe = {
530
485
  'id': requestId,
531
486
  };
532
- const trades = await this.watch(url, messageHash, this.extend(request, query), messageHash, subscribe);
487
+ const trades = await this.watch(url, subParams, this.extend(request, query), subParams, subscribe);
533
488
  if (this.newUpdates) {
534
489
  const first = this.safeValue(trades, 0);
535
490
  const tradeSymbol = this.safeString(first, 'symbol');
@@ -548,33 +503,7 @@ export default class binance extends binanceRest {
548
503
  * @param {object} [params] extra parameters specific to the exchange API endpoint
549
504
  * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
550
505
  */
551
- await this.loadMarkets();
552
- const market = this.market(symbol);
553
- const options = this.safeValue(this.options, 'watchTrades', {});
554
- const name = this.safeString(options, 'name', 'trade');
555
- const messageHash = market['lowercaseId'] + '@' + name;
556
- let type = market['type'];
557
- if (market['contract']) {
558
- type = market['linear'] ? 'future' : 'delivery';
559
- }
560
- const query = this.omit(params, 'type');
561
- const url = this.urls['api']['ws'][type] + '/' + this.stream(type, messageHash);
562
- const requestId = this.requestId(url);
563
- const request = {
564
- 'method': 'SUBSCRIBE',
565
- 'params': [
566
- messageHash,
567
- ],
568
- 'id': requestId,
569
- };
570
- const subscribe = {
571
- 'id': requestId,
572
- };
573
- const trades = await this.watch(url, messageHash, this.extend(request, query), messageHash, subscribe);
574
- if (this.newUpdates) {
575
- limit = trades.getLimit(market['symbol'], limit);
576
- }
577
- return this.filterBySinceLimit(trades, since, limit, 'timestamp', true);
506
+ return await this.watchTradesForSymbols([symbol], since, limit, params);
578
507
  }
579
508
  parseTrade(trade, market = undefined) {
580
509
  //
@@ -758,8 +687,6 @@ export default class binance extends binanceRest {
758
687
  tradesArray.append(trade);
759
688
  this.trades[symbol] = tradesArray;
760
689
  client.resolve(tradesArray, messageHash);
761
- // watchTradesForSymbols part
762
- this.resolvePromiseIfMessagehashMatches(client, 'multipleTrades::', symbol, tradesArray);
763
690
  }
764
691
  async watchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
765
692
  /**
@@ -808,62 +735,6 @@ export default class binance extends binanceRest {
808
735
  }
809
736
  return this.filterBySinceLimit(ohlcv, since, limit, 0, true);
810
737
  }
811
- async watchOHLCVForSymbols(symbolsAndTimeframes, since = undefined, limit = undefined, params = {}) {
812
- /**
813
- * @method
814
- * @name binance#watchOHLCVForSymbols
815
- * @description watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
816
- * @param {string[][]} symbolsAndTimeframes array of arrays containing unified symbols and timeframes to fetch OHLCV data for, example [['BTC/USDT', '1m'], ['LTC/USDT', '5m']]
817
- * @param {int} [since] timestamp in ms of the earliest candle to fetch
818
- * @param {int} [limit] the maximum amount of candles to fetch
819
- * @param {object} [params] extra parameters specific to the exchange API endpoint
820
- * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
821
- */
822
- await this.loadMarkets();
823
- const options = this.safeValue(this.options, 'watchOHLCV', {});
824
- const nameOption = this.safeString(options, 'name', 'kline');
825
- const name = this.safeString(params, 'name', nameOption);
826
- params = this.omit(params, 'name');
827
- const firstMarket = this.market(symbolsAndTimeframes[0][0]);
828
- let type = firstMarket['type'];
829
- if (firstMarket['contract']) {
830
- type = firstMarket['linear'] ? 'future' : 'delivery';
831
- }
832
- const subParams = [];
833
- const hashes = [];
834
- for (let i = 0; i < symbolsAndTimeframes.length; i++) {
835
- const data = symbolsAndTimeframes[i];
836
- const symbolString = data[0];
837
- const timeframeString = data[1];
838
- const interval = this.safeString(this.timeframes, timeframeString, timeframeString);
839
- const market = this.market(symbolString);
840
- let marketId = market['lowercaseId'];
841
- if (name === 'indexPriceKline') {
842
- // weird behavior for index price kline we can't use the perp suffix
843
- marketId = marketId.replace('_perp', '');
844
- }
845
- const topic = marketId + '@' + name + '_' + interval;
846
- subParams.push(topic);
847
- hashes.push(symbolString + '#' + timeframeString);
848
- }
849
- const messageHash = 'multipleOHLCV::' + hashes.join(',');
850
- const url = this.urls['api']['ws'][type] + '/' + this.stream(type, messageHash);
851
- const requestId = this.requestId(url);
852
- const request = {
853
- 'method': 'SUBSCRIBE',
854
- 'params': subParams,
855
- 'id': requestId,
856
- };
857
- const subscribe = {
858
- 'id': requestId,
859
- };
860
- const [symbol, timeframe, stored] = await this.watch(url, messageHash, this.extend(request, params), messageHash, subscribe);
861
- if (this.newUpdates) {
862
- limit = stored.getLimit(symbol, limit);
863
- }
864
- const filtered = this.filterBySinceLimit(stored, since, limit, 0, true);
865
- return this.createOHLCVObject(symbol, timeframe, filtered);
866
- }
867
738
  handleOHLCV(client, message) {
868
739
  //
869
740
  // {
@@ -928,8 +799,6 @@ export default class binance extends binanceRest {
928
799
  }
929
800
  stored.append(parsed);
930
801
  client.resolve(stored, messageHash);
931
- // watchOHLCVForSymbols part
932
- this.resolveMultipleOHLCV(client, 'multipleOHLCV::', symbol, timeframe, stored);
933
802
  }
934
803
  async watchTicker(symbol, params = {}) {
935
804
  /**
@@ -998,10 +867,7 @@ export default class binance extends binanceRest {
998
867
  name = this.safeString(params, 'name', name);
999
868
  params = this.omit(params, 'name');
1000
869
  let wsParams = [];
1001
- let messageHash = 'tickers';
1002
- if (symbols !== undefined) {
1003
- messageHash = 'tickers::' + symbols.join(',');
1004
- }
870
+ const messageHash = 'tickers';
1005
871
  if (name === 'bookTicker') {
1006
872
  if (marketIds === undefined) {
1007
873
  throw new ArgumentsRequired(this.id + ' watchTickers() requires symbols for bookTicker');
@@ -1195,19 +1061,6 @@ export default class binance extends binanceRest {
1195
1061
  this.tickers[symbol] = result;
1196
1062
  newTickers.push(result);
1197
1063
  }
1198
- const messageHashes = this.findMessageHashes(client, 'tickers::');
1199
- for (let i = 0; i < messageHashes.length; i++) {
1200
- const messageHash = messageHashes[i];
1201
- const parts = messageHash.split('::');
1202
- const symbolsString = parts[1];
1203
- const symbols = symbolsString.split(',');
1204
- const tickers = this.filterByArray(newTickers, 'symbol', symbols);
1205
- const tickersSymbols = Object.keys(tickers);
1206
- const numTickers = tickersSymbols.length;
1207
- if (numTickers > 0) {
1208
- client.resolve(tickers, messageHash);
1209
- }
1210
- }
1211
1064
  client.resolve(newTickers, 'tickers');
1212
1065
  }
1213
1066
  signParams(params = {}) {
@@ -2088,7 +1941,7 @@ export default class binance extends binanceRest {
2088
1941
  if (symbol !== undefined) {
2089
1942
  market = this.market(symbol);
2090
1943
  symbol = market['symbol'];
2091
- messageHash += '::' + symbol;
1944
+ messageHash += ':' + symbol;
2092
1945
  }
2093
1946
  let type = undefined;
2094
1947
  [type, params] = this.handleMarketTypeAndParams('watchOrders', market, params);
@@ -2117,58 +1970,6 @@ export default class binance extends binanceRest {
2117
1970
  }
2118
1971
  return this.filterBySymbolSinceLimit(this.orders, symbol, since, limit, true);
2119
1972
  }
2120
- async watchOrdersForSymbols(symbols = undefined, since = undefined, limit = undefined, params = {}) {
2121
- /**
2122
- * @method
2123
- * @name binance#watchOrdersForSymbols
2124
- * @see https://binance-docs.github.io/apidocs/spot/en/#payload-order-update
2125
- * @description watches information on multiple orders made by the user
2126
- * @param {string[]} symbols unified symbol of the market to fetch orders for
2127
- * @param {int} [since] the earliest time in ms to fetch orders for
2128
- * @param {int} [limit] the maximum number of trade structures to retrieve
2129
- * @param {object} [params] extra parameters specific to the exchange API endpoint
2130
- * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
2131
- */
2132
- let marginMode = undefined;
2133
- [marginMode, params] = this.handleMarginModeAndParams('authenticate', params);
2134
- const isIsolatedMargin = (marginMode === 'isolated');
2135
- if (isIsolatedMargin) {
2136
- throw new NotSupported(this.id + ' watchOrdersForSymbols does not support isolated margin markets, use watchOrders instead');
2137
- }
2138
- await this.loadMarkets();
2139
- let type = undefined;
2140
- const market = this.getMarketFromSymbols(symbols);
2141
- [type, params] = this.handleMarketTypeAndParams('watchOrdersForSymbols', market, params);
2142
- symbols = this.marketSymbols(symbols, type, true, true, true);
2143
- let messageHash = 'orders';
2144
- if (symbols !== undefined) {
2145
- messageHash = messageHash + '::' + symbols.join(',');
2146
- }
2147
- let subType = undefined;
2148
- [subType, params] = this.handleSubTypeAndParams('watchOrdersForSymbols', market, params);
2149
- if (this.isLinear(type, subType)) {
2150
- type = 'future';
2151
- }
2152
- else if (this.isInverse(type, subType)) {
2153
- type = 'delivery';
2154
- }
2155
- params = this.extend(params, { 'type': type });
2156
- await this.authenticate(params);
2157
- let urlType = type;
2158
- if (type === 'margin') {
2159
- urlType = 'spot'; // spot-margin shares the same stream as regular spot
2160
- }
2161
- const url = this.urls['api']['ws'][urlType] + '/' + this.options[type]['listenKey'];
2162
- const client = this.client(url);
2163
- this.setBalanceCache(client, type);
2164
- this.setPositionsCache(client, type);
2165
- const message = undefined;
2166
- const newOrders = await this.watch(url, messageHash, message, type);
2167
- if (this.newUpdates) {
2168
- return newOrders;
2169
- }
2170
- return this.filterBySymbolsSinceLimit(this.orders, symbols, since, limit, true);
2171
- }
2172
1973
  parseWsOrder(order, market = undefined) {
2173
1974
  //
2174
1975
  // spot
@@ -2826,8 +2627,10 @@ export default class binance extends binanceRest {
2826
2627
  }
2827
2628
  }
2828
2629
  cachedOrders.append(parsed);
2829
- this.resolvePromiseIfMessagehashMatches(client, 'orders::', symbol, parsed);
2830
- client.resolve(parsed, 'orders');
2630
+ const messageHash = 'orders';
2631
+ const symbolSpecificMessageHash = 'orders:' + symbol;
2632
+ client.resolve(parsed, messageHash);
2633
+ client.resolve(parsed, symbolSpecificMessageHash);
2831
2634
  }
2832
2635
  }
2833
2636
  handleAcountUpdate(client, message) {
@@ -8,14 +8,12 @@ import Client from '../base/ws/Client.js';
8
8
  */
9
9
  export default class bitget extends bitgetRest {
10
10
  describe(): any;
11
- getWsMarketId(market: any): any;
12
- getMarketIdFromArg(arg: any): string;
11
+ getInstType(market: any, params?: {}): any[];
13
12
  watchTicker(symbol: string, params?: {}): Promise<Ticker>;
14
13
  watchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
15
- handleTicker(client: Client, message: any): any;
14
+ handleTicker(client: Client, message: any): void;
16
15
  parseWsTicker(message: any, market?: any): Ticker;
17
16
  watchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
18
- watchOHLCVForSymbols(symbolsAndTimeframes: string[][], since?: Int, limit?: Int, params?: {}): Promise<import("../base/types.js").Dictionary<import("../base/types.js").Dictionary<OHLCV[]>>>;
19
17
  handleOHLCV(client: Client, message: any): void;
20
18
  parseWsOHLCV(ohlcv: any, market?: any): OHLCV;
21
19
  watchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
@@ -40,7 +38,7 @@ export default class bitget extends bitgetRest {
40
38
  watchBalance(params?: {}): Promise<Balances>;
41
39
  handleBalance(client: Client, message: any): void;
42
40
  watchPublic(messageHash: any, args: any, params?: {}): Promise<any>;
43
- watchPublicMultiple(messageHash: any, argsArray: any, params?: {}): Promise<any>;
41
+ watchPublicMultiple(messageHashes: any, argsArray: any, params?: {}): Promise<any>;
44
42
  authenticate(params?: {}): Promise<any>;
45
43
  watchPrivate(messageHash: any, subscriptionHash: any, args: any, params?: {}): Promise<any>;
46
44
  handleAuthenticate(client: Client, message: any): void;