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
@@ -101,7 +101,7 @@ export default class hyperliquid extends Exchange {
101
101
  'fetchTickers': false,
102
102
  'fetchTime': false,
103
103
  'fetchTrades': true,
104
- 'fetchTradingFee': false,
104
+ 'fetchTradingFee': true,
105
105
  'fetchTradingFees': false,
106
106
  'fetchTransfer': false,
107
107
  'fetchTransfers': false,
@@ -2519,6 +2519,112 @@ export default class hyperliquid extends Exchange {
2519
2519
  'fee': undefined,
2520
2520
  };
2521
2521
  }
2522
+ async fetchTradingFee(symbol, params = {}) {
2523
+ /**
2524
+ * @method
2525
+ * @name hyperliquid#fetchTradingFee
2526
+ * @description fetch the trading fees for a market
2527
+ * @param {string} symbol unified market symbol
2528
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2529
+ * @param {string} [params.user] user address, will default to this.walletAddress if not provided
2530
+ * @returns {object} a [fee structure]{@link https://docs.ccxt.com/#/?id=fee-structure}
2531
+ */
2532
+ await this.loadMarkets();
2533
+ let userAddress = undefined;
2534
+ [userAddress, params] = this.handlePublicAddress('fetchTradingFee', params);
2535
+ const market = this.market(symbol);
2536
+ const request = {
2537
+ 'type': 'userFees',
2538
+ 'user': userAddress,
2539
+ };
2540
+ const response = await this.publicPostInfo(this.extend(request, params));
2541
+ //
2542
+ // {
2543
+ // "dailyUserVlm": [
2544
+ // {
2545
+ // "date": "2024-07-08",
2546
+ // "userCross": "0.0",
2547
+ // "userAdd": "0.0",
2548
+ // "exchange": "90597185.23639999"
2549
+ // }
2550
+ // ],
2551
+ // "feeSchedule": {
2552
+ // "cross": "0.00035",
2553
+ // "add": "0.0001",
2554
+ // "tiers": {
2555
+ // "vip": [
2556
+ // {
2557
+ // "ntlCutoff": "5000000.0",
2558
+ // "cross": "0.0003",
2559
+ // "add": "0.00005"
2560
+ // }
2561
+ // ],
2562
+ // "mm": [
2563
+ // {
2564
+ // "makerFractionCutoff": "0.005",
2565
+ // "add": "-0.00001"
2566
+ // }
2567
+ // ]
2568
+ // },
2569
+ // "referralDiscount": "0.04"
2570
+ // },
2571
+ // "userCrossRate": "0.00035",
2572
+ // "userAddRate": "0.0001",
2573
+ // "activeReferralDiscount": "0.0"
2574
+ // }
2575
+ //
2576
+ const data = {
2577
+ 'userCrossRate': this.safeString(response, 'userCrossRate'),
2578
+ 'userAddRate': this.safeString(response, 'userAddRate'),
2579
+ };
2580
+ return this.parseTradingFee(data, market);
2581
+ }
2582
+ parseTradingFee(fee, market = undefined) {
2583
+ //
2584
+ // {
2585
+ // "dailyUserVlm": [
2586
+ // {
2587
+ // "date": "2024-07-08",
2588
+ // "userCross": "0.0",
2589
+ // "userAdd": "0.0",
2590
+ // "exchange": "90597185.23639999"
2591
+ // }
2592
+ // ],
2593
+ // "feeSchedule": {
2594
+ // "cross": "0.00035",
2595
+ // "add": "0.0001",
2596
+ // "tiers": {
2597
+ // "vip": [
2598
+ // {
2599
+ // "ntlCutoff": "5000000.0",
2600
+ // "cross": "0.0003",
2601
+ // "add": "0.00005"
2602
+ // }
2603
+ // ],
2604
+ // "mm": [
2605
+ // {
2606
+ // "makerFractionCutoff": "0.005",
2607
+ // "add": "-0.00001"
2608
+ // }
2609
+ // ]
2610
+ // },
2611
+ // "referralDiscount": "0.04"
2612
+ // },
2613
+ // "userCrossRate": "0.00035",
2614
+ // "userAddRate": "0.0001",
2615
+ // "activeReferralDiscount": "0.0"
2616
+ // }
2617
+ //
2618
+ const symbol = this.safeSymbol(undefined, market);
2619
+ return {
2620
+ 'info': fee,
2621
+ 'symbol': symbol,
2622
+ 'maker': this.safeNumber(fee, 'userAddRate'),
2623
+ 'taker': this.safeNumber(fee, 'userCrossRate'),
2624
+ 'percentage': undefined,
2625
+ 'tierBased': undefined,
2626
+ };
2627
+ }
2522
2628
  formatVaultAddress(address = undefined) {
2523
2629
  if (address === undefined) {
2524
2630
  return undefined;
package/js/src/kucoin.js CHANGED
@@ -243,6 +243,8 @@ export default class kucoin extends Exchange {
243
243
  'purchase/orders': 10,
244
244
  // broker
245
245
  'broker/api/rebase/download': 3,
246
+ // affiliate
247
+ 'affiliate/inviter/statistics': 30,
246
248
  },
247
249
  'post': {
248
250
  // account
@@ -684,6 +686,7 @@ export default class kucoin extends Exchange {
684
686
  'redeem/orders': 'v3',
685
687
  'purchase/orders': 'v3',
686
688
  'margin/symbols': 'v3',
689
+ 'affiliate/inviter/statistics': 'v2',
687
690
  },
688
691
  'POST': {
689
692
  // account
@@ -45,7 +45,7 @@ export default class latoken extends Exchange {
45
45
  fetchOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
46
46
  createOrder(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: Num, params?: {}): Promise<Order>;
47
47
  cancelOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
48
- cancelAllOrders(symbol?: Str, params?: {}): Promise<any>;
48
+ cancelAllOrders(symbol?: Str, params?: {}): Promise<Order[]>;
49
49
  fetchTransactions(code?: Str, since?: Int, limit?: Int, params?: {}): Promise<Transaction[]>;
50
50
  parseTransaction(transaction: Dict, currency?: Currency): Transaction;
51
51
  parseTransactionStatus(status: Str): string;
package/js/src/latoken.js CHANGED
@@ -1419,7 +1419,11 @@ export default class latoken extends Exchange {
1419
1419
  // "status":"SUCCESS"
1420
1420
  // }
1421
1421
  //
1422
- return response;
1422
+ return [
1423
+ this.safeOrder({
1424
+ 'info': response,
1425
+ }),
1426
+ ];
1423
1427
  }
1424
1428
  async fetchTransactions(code = undefined, since = undefined, limit = undefined, params = {}) {
1425
1429
  /**
package/js/src/mexc.js CHANGED
@@ -799,24 +799,24 @@ export default class mexc extends Exchange {
799
799
  'commonCurrencies': {
800
800
  'BEYONDPROTOCOL': 'BEYOND',
801
801
  'BIFI': 'BIFIF',
802
- 'BYN': 'BeyondFi',
802
+ 'BYN': 'BEYONDFI',
803
803
  'COFI': 'COFIX',
804
- 'DFI': 'DfiStarter',
805
- 'DFT': 'dFuture',
804
+ 'DFI': 'DFISTARTER',
805
+ 'DFT': 'DFUTURE',
806
806
  'DRK': 'DRK',
807
- 'EGC': 'Egoras Credit',
807
+ 'EGC': 'EGORASCREDIT',
808
808
  'FLUX1': 'FLUX',
809
809
  'FLUX': 'FLUX1',
810
- 'FREE': 'FreeRossDAO',
810
+ 'FREE': 'FREEROSSDAO',
811
811
  'GAS': 'GASDAO',
812
812
  'GASNEO': 'GAS',
813
- 'GMT': 'GMT Token',
813
+ 'GMT': 'GMTTOKEN',
814
814
  'STEPN': 'GMT',
815
- 'HERO': 'Step Hero',
816
- 'MIMO': 'Mimosa',
817
- 'PROS': 'Pros.Finance',
818
- 'SIN': 'Sin City Token',
819
- 'SOUL': 'Soul Swap',
815
+ 'HERO': 'STEPHERO',
816
+ 'MIMO': 'MIMOSA',
817
+ 'PROS': 'PROSFINANCE',
818
+ 'SIN': 'SINCITYTOKEN',
819
+ 'SOUL': 'SOULSWAP',
820
820
  },
821
821
  'exceptions': {
822
822
  'exact': {
package/js/src/okx.js CHANGED
@@ -7356,6 +7356,9 @@ export default class okx extends Exchange {
7356
7356
  }
7357
7357
  depositWithdrawFees[code]['info'][currencyId] = feeInfo;
7358
7358
  const chain = this.safeString(feeInfo, 'chain');
7359
+ if (chain === undefined) {
7360
+ continue;
7361
+ }
7359
7362
  const chainSplit = chain.split('-');
7360
7363
  const networkId = this.safeValue(chainSplit, 1);
7361
7364
  const withdrawFee = this.safeNumber(feeInfo, 'minFee');
@@ -614,9 +614,9 @@ export default class binance extends binanceRest {
614
614
  for (let i = 0; i < symbols.length; i++) {
615
615
  const symbol = symbols[i];
616
616
  const market = this.market(symbol);
617
- const messageHash = market['lowercaseId'] + '@' + name;
618
- messageHashes.push(messageHash);
619
- const symbolHash = messageHash + '@' + watchOrderBookRate + 'ms';
617
+ messageHashes.push('orderbook::' + symbol);
618
+ const subscriptionHash = market['lowercaseId'] + '@' + name;
619
+ const symbolHash = subscriptionHash + '@' + watchOrderBookRate + 'ms';
620
620
  subParams.push(symbolHash);
621
621
  }
622
622
  const messageHashesLength = messageHashes.length;
@@ -636,8 +636,7 @@ export default class binance extends binanceRest {
636
636
  'type': type,
637
637
  'params': params,
638
638
  };
639
- const message = this.extend(request, params);
640
- const orderbook = await this.watchMultiple(url, messageHashes, message, messageHashes, subscription);
639
+ const orderbook = await this.watchMultiple(url, messageHashes, this.extend(request, params), messageHashes, subscription);
641
640
  return orderbook.limit();
642
641
  }
643
642
  async fetchOrderBookWs(symbol, limit = undefined, params = {}) {
@@ -816,8 +815,7 @@ export default class binance extends binanceRest {
816
815
  const marketId = this.safeString(message, 's');
817
816
  const market = this.safeMarket(marketId, undefined, undefined, marketType);
818
817
  const symbol = market['symbol'];
819
- const name = 'depth';
820
- const messageHash = market['lowercaseId'] + '@' + name;
818
+ const messageHash = 'orderbook::' + symbol;
821
819
  if (!(symbol in this.orderbooks)) {
822
820
  //
823
821
  // https://github.com/ccxt/ccxt/issues/6672
@@ -960,12 +958,14 @@ export default class binance extends binanceRest {
960
958
  if (firstMarket['contract']) {
961
959
  type = firstMarket['linear'] ? 'future' : 'delivery';
962
960
  }
961
+ const messageHashes = [];
963
962
  const subParams = [];
964
963
  for (let i = 0; i < symbols.length; i++) {
965
964
  const symbol = symbols[i];
966
965
  const market = this.market(symbol);
967
- const currentMessageHash = market['lowercaseId'] + '@' + name;
968
- subParams.push(currentMessageHash);
966
+ messageHashes.push('trade::' + symbol);
967
+ const rawHash = market['lowercaseId'] + '@' + name;
968
+ subParams.push(rawHash);
969
969
  }
970
970
  const query = this.omit(params, 'type');
971
971
  const subParamsLength = subParams.length;
@@ -979,7 +979,7 @@ export default class binance extends binanceRest {
979
979
  const subscribe = {
980
980
  'id': requestId,
981
981
  };
982
- const trades = await this.watchMultiple(url, subParams, this.extend(request, query), subParams, subscribe);
982
+ const trades = await this.watchMultiple(url, messageHashes, this.extend(request, query), messageHashes, subscribe);
983
983
  if (this.newUpdates) {
984
984
  const first = this.safeValue(trades, 0);
985
985
  const tradeSymbol = this.safeString(first, 'symbol');
@@ -1170,9 +1170,7 @@ export default class binance extends binanceRest {
1170
1170
  const marketId = this.safeString(message, 's');
1171
1171
  const market = this.safeMarket(marketId, undefined, undefined, marketType);
1172
1172
  const symbol = market['symbol'];
1173
- const lowerCaseId = this.safeStringLower(message, 's');
1174
- const event = this.safeString(message, 'e');
1175
- const messageHash = lowerCaseId + '@' + event;
1173
+ const messageHash = 'trade::' + symbol;
1176
1174
  const trade = this.parseWsTrade(message, market);
1177
1175
  let tradesArray = this.safeValue(this.trades, symbol);
1178
1176
  if (tradesArray === undefined) {
@@ -97,10 +97,10 @@ export default class bingx extends bingxRest {
97
97
  */
98
98
  await this.loadMarkets();
99
99
  const market = this.market(symbol);
100
- const [marketType, query] = this.handleMarketTypeAndParams('watchTrades', market, params);
100
+ const [marketType, query] = this.handleMarketTypeAndParams('watchTicker', market, params);
101
101
  const url = this.safeValue(this.urls['api']['ws'], marketType);
102
102
  if (url === undefined) {
103
- throw new BadRequest(this.id + ' watchTrades is not supported for ' + marketType + ' markets.');
103
+ throw new BadRequest(this.id + ' watchTicker is not supported for ' + marketType + ' markets.');
104
104
  }
105
105
  const subscriptionHash = market['id'] + '@ticker';
106
106
  const messageHash = this.getMessageHash('ticker', market['symbol']);
@@ -448,21 +448,23 @@ export default class bingx extends bingxRest {
448
448
  */
449
449
  await this.loadMarkets();
450
450
  const market = this.market(symbol);
451
- const [marketType, query] = this.handleMarketTypeAndParams('watchTrades', market, params);
451
+ let marketType = undefined;
452
+ [marketType, params] = this.handleMarketTypeAndParams('watchTrades', market, params);
452
453
  const url = this.safeValue(this.urls['api']['ws'], marketType);
453
454
  if (url === undefined) {
454
455
  throw new BadRequest(this.id + ' watchTrades is not supported for ' + marketType + ' markets.');
455
456
  }
456
- const messageHash = market['id'] + '@trade';
457
+ const rawHash = market['id'] + '@trade';
458
+ const messageHash = 'trade::' + symbol;
457
459
  const uuid = this.uuid();
458
460
  const request = {
459
461
  'id': uuid,
460
- 'dataType': messageHash,
462
+ 'dataType': rawHash,
461
463
  };
462
464
  if (marketType === 'swap') {
463
465
  request['reqType'] = 'sub';
464
466
  }
465
- const trades = await this.watch(url, messageHash, this.extend(request, query), messageHash);
467
+ const trades = await this.watch(url, messageHash, this.extend(request, params), messageHash);
466
468
  if (this.newUpdates) {
467
469
  limit = trades.getLimit(symbol, limit);
468
470
  }
@@ -529,12 +531,13 @@ export default class bingx extends bingxRest {
529
531
  // }
530
532
  //
531
533
  const data = this.safeValue(message, 'data', []);
532
- const messageHash = this.safeString(message, 'dataType');
533
- const marketId = messageHash.split('@')[0];
534
+ const rawHash = this.safeString(message, 'dataType');
535
+ const marketId = rawHash.split('@')[0];
534
536
  const isSwap = client.url.indexOf('swap') >= 0;
535
537
  const marketType = isSwap ? 'swap' : 'spot';
536
538
  const market = this.safeMarket(marketId, undefined, undefined, marketType);
537
539
  const symbol = market['symbol'];
540
+ const messageHash = 'trade::' + symbol;
538
541
  let trades = undefined;
539
542
  if (Array.isArray(data)) {
540
543
  trades = this.parseTrades(data, market);
@@ -1,5 +1,5 @@
1
1
  import bitmartRest from '../bitmart.js';
2
- import type { Int, Market, Str, Strings, OrderBook, Order, Trade, Ticker, Tickers, OHLCV, Position, Balances } from '../base/types.js';
2
+ import type { Int, Market, Str, Strings, OrderBook, Order, Trade, Ticker, Tickers, OHLCV, Position, Balances, Dict } from '../base/types.js';
3
3
  import Client from '../base/ws/Client.js';
4
4
  export default class bitmart extends bitmartRest {
5
5
  describe(): any;
@@ -16,7 +16,7 @@ export default class bitmart extends bitmartRest {
16
16
  watchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
17
17
  watchOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
18
18
  handleOrders(client: Client, message: any): void;
19
- parseWsOrder(order: any, market?: Market): Order;
19
+ parseWsOrder(order: Dict, market?: Market): Order;
20
20
  parseWsOrderStatus(statusId: any): string;
21
21
  parseWsOrderSide(sideId: any): string;
22
22
  watchPositions(symbols?: Strings, since?: Int, limit?: Int, params?: {}): Promise<Position[]>;
@@ -24,7 +24,7 @@ export default class bitmart extends bitmartRest {
24
24
  parseWsPosition(position: any, market?: Market): Position;
25
25
  handleTrade(client: Client, message: any): void;
26
26
  handleTradeLoop(entry: any): string;
27
- parseWsTrade(trade: any, market?: Market): Trade;
27
+ parseWsTrade(trade: Dict, market?: Market): Trade;
28
28
  handleTicker(client: Client, message: any): void;
29
29
  parseWsSwapTicker(ticker: any, market?: Market): Ticker;
30
30
  watchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
@@ -1,5 +1,5 @@
1
1
  import bitoproRest from '../bitopro.js';
2
- import type { Int, OrderBook, Trade, Ticker, Balances, Market, Str } from '../base/types.js';
2
+ import type { Int, OrderBook, Trade, Ticker, Balances, Market, Str, Dict } from '../base/types.js';
3
3
  import Client from '../base/ws/Client.js';
4
4
  export default class bitopro extends bitoproRest {
5
5
  describe(): any;
@@ -10,7 +10,7 @@ export default class bitopro extends bitoproRest {
10
10
  handleTrade(client: Client, message: any): void;
11
11
  watchMyTrades(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
12
12
  handleMyTrade(client: Client, message: any): void;
13
- parseWsTrade(trade: any, market?: Market): Trade;
13
+ parseWsTrade(trade: Dict, market?: Market): Trade;
14
14
  watchTicker(symbol: string, params?: {}): Promise<Ticker>;
15
15
  handleTicker(client: Client, message: any): void;
16
16
  authenticate(url: any): void;
@@ -1,5 +1,5 @@
1
1
  import coincheckRest from '../coincheck.js';
2
- import type { Int, Market, OrderBook, Trade } from '../base/types.js';
2
+ import type { Int, Market, OrderBook, Trade, Dict } from '../base/types.js';
3
3
  import Client from '../base/ws/Client.js';
4
4
  export default class coincheck extends coincheckRest {
5
5
  describe(): any;
@@ -7,6 +7,6 @@ export default class coincheck extends coincheckRest {
7
7
  handleOrderBook(client: any, message: any): void;
8
8
  watchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
9
9
  handleTrades(client: Client, message: any): void;
10
- parseWsTrade(trade: any, market?: Market): Trade;
10
+ parseWsTrade(trade: Dict, market?: Market): Trade;
11
11
  handleMessage(client: Client, message: any): void;
12
12
  }
@@ -1,5 +1,5 @@
1
1
  import coinoneRest from '../coinone.js';
2
- import type { Int, Market, OrderBook, Ticker, Trade } from '../base/types.js';
2
+ import type { Int, Market, OrderBook, Ticker, Trade, Dict } from '../base/types.js';
3
3
  import Client from '../base/ws/Client.js';
4
4
  export default class coinone extends coinoneRest {
5
5
  describe(): any;
@@ -11,7 +11,7 @@ export default class coinone extends coinoneRest {
11
11
  parseWsTicker(ticker: any, market?: Market): Ticker;
12
12
  watchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
13
13
  handleTrades(client: Client, message: any): void;
14
- parseWsTrade(trade: any, market?: Market): Trade;
14
+ parseWsTrade(trade: Dict, market?: Market): Trade;
15
15
  handleErrorMessage(client: Client, message: any): boolean;
16
16
  handleMessage(client: Client, message: any): void;
17
17
  ping(client: any): {
@@ -1,6 +1,6 @@
1
1
  import hyperliquidRest from '../hyperliquid.js';
2
2
  import Client from '../base/ws/Client.js';
3
- import { Int, Str, Market, OrderBook, Trade, OHLCV, Order } from '../base/types.js';
3
+ import { Int, Str, Market, OrderBook, Trade, OHLCV, Order, Dict } from '../base/types.js';
4
4
  export default class hyperliquid extends hyperliquidRest {
5
5
  describe(): any;
6
6
  watchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
@@ -9,7 +9,7 @@ export default class hyperliquid extends hyperliquidRest {
9
9
  handleMyTrades(client: Client, message: any): void;
10
10
  watchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
11
11
  handleTrades(client: Client, message: any): void;
12
- parseWsTrade(trade: any, market?: Market): Trade;
12
+ parseWsTrade(trade: Dict, market?: Market): Trade;
13
13
  watchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
14
14
  handleOHLCV(client: Client, message: any): void;
15
15
  watchOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
package/js/src/pro/okx.js CHANGED
@@ -1685,7 +1685,7 @@ export default class okx extends okxRest {
1685
1685
  if (this.isEmpty(args)) {
1686
1686
  const method = this.safeString(message, 'op');
1687
1687
  const stringMsg = this.json(message);
1688
- this.handleErrors(undefined, undefined, client.url, method, undefined, stringMsg, stringMsg, undefined, undefined);
1688
+ this.handleErrors(undefined, undefined, client.url, method, undefined, stringMsg, message, undefined, undefined);
1689
1689
  }
1690
1690
  const orders = this.parseOrders(args, undefined, undefined, undefined);
1691
1691
  const first = this.safeDict(orders, 0, {});
@@ -1860,8 +1860,8 @@ export default class okx extends okxRest {
1860
1860
  future.resolve(true);
1861
1861
  }
1862
1862
  ping(client) {
1863
- // okex does not support built-in ws protocol-level ping-pong
1864
- // instead it requires custom text-based ping-pong
1863
+ // OKX does not support the built-in WebSocket protocol-level ping-pong.
1864
+ // Instead, it requires a custom text-based ping-pong mechanism.
1865
1865
  return 'ping';
1866
1866
  }
1867
1867
  handlePong(client, message) {
@@ -0,0 +1,31 @@
1
+ import xtRest from '../xt.js';
2
+ import { Balances, Dict, Int, Market, OHLCV, Order, OrderBook, Str, Strings, Ticker, Tickers, Trade } from '../base/types.js';
3
+ import Client from '../base/ws/Client.js';
4
+ export default class xt extends xtRest {
5
+ describe(): any;
6
+ getListenKey(isContract: boolean): Promise<any>;
7
+ getCacheIndex(orderbook: any, cache: any): any;
8
+ handleDelta(orderbook: any, delta: any): void;
9
+ subscribe(name: string, access: string, methodName: string, market?: Market, symbols?: string[], params?: {}): Promise<any>;
10
+ watchTicker(symbol: string, params?: {}): Promise<Ticker>;
11
+ watchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
12
+ watchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
13
+ watchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
14
+ watchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
15
+ watchOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
16
+ watchMyTrades(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
17
+ watchBalance(params?: {}): Promise<Balances>;
18
+ handleTicker(client: Client, message: Dict): Dict;
19
+ handleTickers(client: Client, message: Dict): Dict;
20
+ handleOHLCV(client: Client, message: Dict): Dict;
21
+ handleTrade(client: Client, message: Dict): Dict;
22
+ handleOrderBook(client: Client, message: Dict): void;
23
+ parseWsOrderTrade(trade: Dict, market?: Market): Trade;
24
+ parseWsOrder(order: Dict, market?: Market): Order;
25
+ handleOrder(client: Client, message: Dict): Dict;
26
+ handleBalance(client: Client, message: Dict): void;
27
+ handleMyTrades(client: Client, message: Dict): void;
28
+ handleMessage(client: Client, message: any): void;
29
+ ping(client: Client): string;
30
+ handleErrorMessage(client: Client, message: Dict): void;
31
+ }