ccxt 4.3.57 → 4.3.59

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 (82) hide show
  1. package/README.md +4 -4
  2. package/dist/ccxt.browser.min.js +3 -3
  3. package/dist/cjs/ccxt.js +4 -2
  4. package/dist/cjs/src/alpaca.js +5 -1
  5. package/dist/cjs/src/base/Exchange.js +4 -4
  6. package/dist/cjs/src/base/errors.js +22 -22
  7. package/dist/cjs/src/bigone.js +21 -1
  8. package/dist/cjs/src/bingx.js +131 -26
  9. package/dist/cjs/src/bitmart.js +1 -0
  10. package/dist/cjs/src/btcbox.js +149 -7
  11. package/dist/cjs/src/bybit.js +2 -2
  12. package/dist/cjs/src/coinmate.js +28 -35
  13. package/dist/cjs/src/coinone.js +1 -1
  14. package/dist/cjs/src/deribit.js +15 -1
  15. package/dist/cjs/src/digifinex.js +32 -7
  16. package/dist/cjs/src/gate.js +24 -18
  17. package/dist/cjs/src/htx.js +10 -8
  18. package/dist/cjs/src/hyperliquid.js +107 -1
  19. package/dist/cjs/src/kucoin.js +3 -0
  20. package/dist/cjs/src/latoken.js +5 -1
  21. package/dist/cjs/src/mexc.js +11 -11
  22. package/dist/cjs/src/okx.js +3 -0
  23. package/dist/cjs/src/pro/binance.js +11 -13
  24. package/dist/cjs/src/pro/bingx.js +11 -8
  25. package/dist/cjs/src/pro/okx.js +3 -3
  26. package/dist/cjs/src/pro/xt.js +1108 -0
  27. package/dist/cjs/src/upbit.js +148 -49
  28. package/dist/cjs/src/woo.js +1 -1
  29. package/dist/cjs/src/xt.js +72 -7
  30. package/js/ccxt.d.ts +6 -3
  31. package/js/ccxt.js +5 -3
  32. package/js/src/abstract/bitmart.d.ts +1 -0
  33. package/js/src/abstract/btcbox.d.ts +1 -0
  34. package/js/src/abstract/kucoin.d.ts +1 -0
  35. package/js/src/abstract/kucoinfutures.d.ts +1 -0
  36. package/js/src/abstract/upbit.d.ts +3 -0
  37. package/js/src/abstract/xt.d.ts +1 -0
  38. package/js/src/alpaca.d.ts +1 -1
  39. package/js/src/alpaca.js +5 -1
  40. package/js/src/base/Exchange.d.ts +3 -3
  41. package/js/src/base/Exchange.js +5 -5
  42. package/js/src/base/errorHierarchy.d.ts +5 -5
  43. package/js/src/base/errorHierarchy.js +5 -5
  44. package/js/src/base/errors.d.ts +15 -15
  45. package/js/src/base/errors.js +22 -22
  46. package/js/src/bigone.d.ts +1 -1
  47. package/js/src/bigone.js +21 -1
  48. package/js/src/bingx.js +131 -26
  49. package/js/src/bitmart.js +1 -0
  50. package/js/src/btcbox.d.ts +4 -1
  51. package/js/src/btcbox.js +149 -7
  52. package/js/src/bybit.js +2 -2
  53. package/js/src/coinmate.js +28 -35
  54. package/js/src/coinone.js +1 -1
  55. package/js/src/deribit.d.ts +1 -1
  56. package/js/src/deribit.js +15 -1
  57. package/js/src/digifinex.d.ts +3 -2
  58. package/js/src/digifinex.js +32 -7
  59. package/js/src/gate.js +24 -18
  60. package/js/src/htx.js +10 -8
  61. package/js/src/hyperliquid.d.ts +3 -1
  62. package/js/src/hyperliquid.js +107 -1
  63. package/js/src/kucoin.js +3 -0
  64. package/js/src/latoken.d.ts +1 -1
  65. package/js/src/latoken.js +5 -1
  66. package/js/src/mexc.js +11 -11
  67. package/js/src/okx.js +3 -0
  68. package/js/src/pro/binance.js +11 -13
  69. package/js/src/pro/bingx.js +11 -8
  70. package/js/src/pro/bitmart.d.ts +3 -3
  71. package/js/src/pro/bitopro.d.ts +2 -2
  72. package/js/src/pro/coincheck.d.ts +2 -2
  73. package/js/src/pro/coinone.d.ts +2 -2
  74. package/js/src/pro/hyperliquid.d.ts +2 -2
  75. package/js/src/pro/okx.js +3 -3
  76. package/js/src/pro/xt.d.ts +31 -0
  77. package/js/src/pro/xt.js +1109 -0
  78. package/js/src/upbit.d.ts +0 -1
  79. package/js/src/upbit.js +148 -49
  80. package/js/src/woo.js +2 -2
  81. package/js/src/xt.js +72 -7
  82. package/package.json +1 -1
@@ -1416,7 +1416,11 @@ class latoken extends latoken$1 {
1416
1416
  // "status":"SUCCESS"
1417
1417
  // }
1418
1418
  //
1419
- return response;
1419
+ return [
1420
+ this.safeOrder({
1421
+ 'info': response,
1422
+ }),
1423
+ ];
1420
1424
  }
1421
1425
  async fetchTransactions(code = undefined, since = undefined, limit = undefined, params = {}) {
1422
1426
  /**
@@ -796,24 +796,24 @@ class mexc extends mexc$1 {
796
796
  'commonCurrencies': {
797
797
  'BEYONDPROTOCOL': 'BEYOND',
798
798
  'BIFI': 'BIFIF',
799
- 'BYN': 'BeyondFi',
799
+ 'BYN': 'BEYONDFI',
800
800
  'COFI': 'COFIX',
801
- 'DFI': 'DfiStarter',
802
- 'DFT': 'dFuture',
801
+ 'DFI': 'DFISTARTER',
802
+ 'DFT': 'DFUTURE',
803
803
  'DRK': 'DRK',
804
- 'EGC': 'Egoras Credit',
804
+ 'EGC': 'EGORASCREDIT',
805
805
  'FLUX1': 'FLUX',
806
806
  'FLUX': 'FLUX1',
807
- 'FREE': 'FreeRossDAO',
807
+ 'FREE': 'FREEROSSDAO',
808
808
  'GAS': 'GASDAO',
809
809
  'GASNEO': 'GAS',
810
- 'GMT': 'GMT Token',
810
+ 'GMT': 'GMTTOKEN',
811
811
  'STEPN': 'GMT',
812
- 'HERO': 'Step Hero',
813
- 'MIMO': 'Mimosa',
814
- 'PROS': 'Pros.Finance',
815
- 'SIN': 'Sin City Token',
816
- 'SOUL': 'Soul Swap',
812
+ 'HERO': 'STEPHERO',
813
+ 'MIMO': 'MIMOSA',
814
+ 'PROS': 'PROSFINANCE',
815
+ 'SIN': 'SINCITYTOKEN',
816
+ 'SOUL': 'SOULSWAP',
817
817
  },
818
818
  'exceptions': {
819
819
  'exact': {
@@ -7353,6 +7353,9 @@ class okx extends okx$1 {
7353
7353
  }
7354
7354
  depositWithdrawFees[code]['info'][currencyId] = feeInfo;
7355
7355
  const chain = this.safeString(feeInfo, 'chain');
7356
+ if (chain === undefined) {
7357
+ continue;
7358
+ }
7356
7359
  const chainSplit = chain.split('-');
7357
7360
  const networkId = this.safeValue(chainSplit, 1);
7358
7361
  const withdrawFee = this.safeNumber(feeInfo, 'minFee');
@@ -611,9 +611,9 @@ class binance extends binance$1 {
611
611
  for (let i = 0; i < symbols.length; i++) {
612
612
  const symbol = symbols[i];
613
613
  const market = this.market(symbol);
614
- const messageHash = market['lowercaseId'] + '@' + name;
615
- messageHashes.push(messageHash);
616
- const symbolHash = messageHash + '@' + watchOrderBookRate + 'ms';
614
+ messageHashes.push('orderbook::' + symbol);
615
+ const subscriptionHash = market['lowercaseId'] + '@' + name;
616
+ const symbolHash = subscriptionHash + '@' + watchOrderBookRate + 'ms';
617
617
  subParams.push(symbolHash);
618
618
  }
619
619
  const messageHashesLength = messageHashes.length;
@@ -633,8 +633,7 @@ class binance extends binance$1 {
633
633
  'type': type,
634
634
  'params': params,
635
635
  };
636
- const message = this.extend(request, params);
637
- const orderbook = await this.watchMultiple(url, messageHashes, message, messageHashes, subscription);
636
+ const orderbook = await this.watchMultiple(url, messageHashes, this.extend(request, params), messageHashes, subscription);
638
637
  return orderbook.limit();
639
638
  }
640
639
  async fetchOrderBookWs(symbol, limit = undefined, params = {}) {
@@ -813,8 +812,7 @@ class binance extends binance$1 {
813
812
  const marketId = this.safeString(message, 's');
814
813
  const market = this.safeMarket(marketId, undefined, undefined, marketType);
815
814
  const symbol = market['symbol'];
816
- const name = 'depth';
817
- const messageHash = market['lowercaseId'] + '@' + name;
815
+ const messageHash = 'orderbook::' + symbol;
818
816
  if (!(symbol in this.orderbooks)) {
819
817
  //
820
818
  // https://github.com/ccxt/ccxt/issues/6672
@@ -957,12 +955,14 @@ class binance extends binance$1 {
957
955
  if (firstMarket['contract']) {
958
956
  type = firstMarket['linear'] ? 'future' : 'delivery';
959
957
  }
958
+ const messageHashes = [];
960
959
  const subParams = [];
961
960
  for (let i = 0; i < symbols.length; i++) {
962
961
  const symbol = symbols[i];
963
962
  const market = this.market(symbol);
964
- const currentMessageHash = market['lowercaseId'] + '@' + name;
965
- subParams.push(currentMessageHash);
963
+ messageHashes.push('trade::' + symbol);
964
+ const rawHash = market['lowercaseId'] + '@' + name;
965
+ subParams.push(rawHash);
966
966
  }
967
967
  const query = this.omit(params, 'type');
968
968
  const subParamsLength = subParams.length;
@@ -976,7 +976,7 @@ class binance extends binance$1 {
976
976
  const subscribe = {
977
977
  'id': requestId,
978
978
  };
979
- const trades = await this.watchMultiple(url, subParams, this.extend(request, query), subParams, subscribe);
979
+ const trades = await this.watchMultiple(url, messageHashes, this.extend(request, query), messageHashes, subscribe);
980
980
  if (this.newUpdates) {
981
981
  const first = this.safeValue(trades, 0);
982
982
  const tradeSymbol = this.safeString(first, 'symbol');
@@ -1167,9 +1167,7 @@ class binance extends binance$1 {
1167
1167
  const marketId = this.safeString(message, 's');
1168
1168
  const market = this.safeMarket(marketId, undefined, undefined, marketType);
1169
1169
  const symbol = market['symbol'];
1170
- const lowerCaseId = this.safeStringLower(message, 's');
1171
- const event = this.safeString(message, 'e');
1172
- const messageHash = lowerCaseId + '@' + event;
1170
+ const messageHash = 'trade::' + symbol;
1173
1171
  const trade = this.parseWsTrade(message, market);
1174
1172
  let tradesArray = this.safeValue(this.trades, symbol);
1175
1173
  if (tradesArray === undefined) {
@@ -94,10 +94,10 @@ class bingx extends bingx$1 {
94
94
  */
95
95
  await this.loadMarkets();
96
96
  const market = this.market(symbol);
97
- const [marketType, query] = this.handleMarketTypeAndParams('watchTrades', market, params);
97
+ const [marketType, query] = this.handleMarketTypeAndParams('watchTicker', market, params);
98
98
  const url = this.safeValue(this.urls['api']['ws'], marketType);
99
99
  if (url === undefined) {
100
- throw new errors.BadRequest(this.id + ' watchTrades is not supported for ' + marketType + ' markets.');
100
+ throw new errors.BadRequest(this.id + ' watchTicker is not supported for ' + marketType + ' markets.');
101
101
  }
102
102
  const subscriptionHash = market['id'] + '@ticker';
103
103
  const messageHash = this.getMessageHash('ticker', market['symbol']);
@@ -445,21 +445,23 @@ class bingx extends bingx$1 {
445
445
  */
446
446
  await this.loadMarkets();
447
447
  const market = this.market(symbol);
448
- const [marketType, query] = this.handleMarketTypeAndParams('watchTrades', market, params);
448
+ let marketType = undefined;
449
+ [marketType, params] = this.handleMarketTypeAndParams('watchTrades', market, params);
449
450
  const url = this.safeValue(this.urls['api']['ws'], marketType);
450
451
  if (url === undefined) {
451
452
  throw new errors.BadRequest(this.id + ' watchTrades is not supported for ' + marketType + ' markets.');
452
453
  }
453
- const messageHash = market['id'] + '@trade';
454
+ const rawHash = market['id'] + '@trade';
455
+ const messageHash = 'trade::' + symbol;
454
456
  const uuid = this.uuid();
455
457
  const request = {
456
458
  'id': uuid,
457
- 'dataType': messageHash,
459
+ 'dataType': rawHash,
458
460
  };
459
461
  if (marketType === 'swap') {
460
462
  request['reqType'] = 'sub';
461
463
  }
462
- const trades = await this.watch(url, messageHash, this.extend(request, query), messageHash);
464
+ const trades = await this.watch(url, messageHash, this.extend(request, params), messageHash);
463
465
  if (this.newUpdates) {
464
466
  limit = trades.getLimit(symbol, limit);
465
467
  }
@@ -526,12 +528,13 @@ class bingx extends bingx$1 {
526
528
  // }
527
529
  //
528
530
  const data = this.safeValue(message, 'data', []);
529
- const messageHash = this.safeString(message, 'dataType');
530
- const marketId = messageHash.split('@')[0];
531
+ const rawHash = this.safeString(message, 'dataType');
532
+ const marketId = rawHash.split('@')[0];
531
533
  const isSwap = client.url.indexOf('swap') >= 0;
532
534
  const marketType = isSwap ? 'swap' : 'spot';
533
535
  const market = this.safeMarket(marketId, undefined, undefined, marketType);
534
536
  const symbol = market['symbol'];
537
+ const messageHash = 'trade::' + symbol;
535
538
  let trades = undefined;
536
539
  if (Array.isArray(data)) {
537
540
  trades = this.parseTrades(data, market);
@@ -1682,7 +1682,7 @@ class okx extends okx$1 {
1682
1682
  if (this.isEmpty(args)) {
1683
1683
  const method = this.safeString(message, 'op');
1684
1684
  const stringMsg = this.json(message);
1685
- this.handleErrors(undefined, undefined, client.url, method, undefined, stringMsg, stringMsg, undefined, undefined);
1685
+ this.handleErrors(undefined, undefined, client.url, method, undefined, stringMsg, message, undefined, undefined);
1686
1686
  }
1687
1687
  const orders = this.parseOrders(args, undefined, undefined, undefined);
1688
1688
  const first = this.safeDict(orders, 0, {});
@@ -1857,8 +1857,8 @@ class okx extends okx$1 {
1857
1857
  future.resolve(true);
1858
1858
  }
1859
1859
  ping(client) {
1860
- // okex does not support built-in ws protocol-level ping-pong
1861
- // instead it requires custom text-based ping-pong
1860
+ // OKX does not support the built-in WebSocket protocol-level ping-pong.
1861
+ // Instead, it requires a custom text-based ping-pong mechanism.
1862
1862
  return 'ping';
1863
1863
  }
1864
1864
  handlePong(client, message) {