ccxt 4.5.42 → 4.5.43

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 +6 -5
  2. package/dist/ccxt.browser.min.js +3 -3
  3. package/dist/cjs/ccxt.js +6 -1
  4. package/dist/cjs/src/abstract/aftermath.js +11 -0
  5. package/dist/cjs/src/aftermath.js +1324 -0
  6. package/dist/cjs/src/base/Exchange.js +2 -1
  7. package/dist/cjs/src/bigone.js +3 -0
  8. package/dist/cjs/src/bingx.js +1 -0
  9. package/dist/cjs/src/bitget.js +88 -37
  10. package/dist/cjs/src/bithumb.js +0 -8
  11. package/dist/cjs/src/bullish.js +109 -0
  12. package/dist/cjs/src/bybit.js +1 -0
  13. package/dist/cjs/src/coinbaseinternational.js +1 -0
  14. package/dist/cjs/src/coinex.js +1 -0
  15. package/dist/cjs/src/coinmetro.js +1 -1
  16. package/dist/cjs/src/gate.js +1 -0
  17. package/dist/cjs/src/gemini.js +1 -0
  18. package/dist/cjs/src/htx.js +2 -1
  19. package/dist/cjs/src/hyperliquid.js +40 -2
  20. package/dist/cjs/src/independentreserve.js +15 -4
  21. package/dist/cjs/src/krakenfutures.js +5 -2
  22. package/dist/cjs/src/kucoin.js +20 -3
  23. package/dist/cjs/src/lbank.js +1 -1
  24. package/dist/cjs/src/lighter.js +56 -6
  25. package/dist/cjs/src/luno.js +1 -0
  26. package/dist/cjs/src/okx.js +17 -2
  27. package/dist/cjs/src/pro/aftermath.js +375 -0
  28. package/dist/cjs/src/pro/bingx.js +5 -1
  29. package/dist/cjs/src/pro/cex.js +24 -28
  30. package/dist/cjs/src/pro/krakenfutures.js +9 -3
  31. package/dist/cjs/src/pro/lighter.js +127 -4
  32. package/dist/cjs/src/pro/mexc.js +7 -1
  33. package/dist/cjs/src/pro/paradex.js +3 -3
  34. package/dist/cjs/src/pro/woo.js +3 -8
  35. package/dist/cjs/src/toobit.js +1 -0
  36. package/js/ccxt.d.ts +8 -2
  37. package/js/ccxt.js +6 -2
  38. package/js/src/abstract/aftermath.d.ts +33 -0
  39. package/js/src/abstract/aftermath.js +11 -0
  40. package/js/src/aftermath.d.ts +291 -0
  41. package/js/src/aftermath.js +1322 -0
  42. package/js/src/base/Exchange.js +2 -1
  43. package/js/src/bigone.js +3 -0
  44. package/js/src/bingx.js +1 -0
  45. package/js/src/bitget.js +88 -37
  46. package/js/src/bithumb.js +0 -8
  47. package/js/src/bullish.d.ts +12 -1
  48. package/js/src/bullish.js +109 -0
  49. package/js/src/bybit.js +1 -0
  50. package/js/src/coinbaseinternational.js +2 -1
  51. package/js/src/coinex.js +1 -0
  52. package/js/src/coinmetro.js +1 -1
  53. package/js/src/gate.js +1 -0
  54. package/js/src/gemini.js +1 -0
  55. package/js/src/htx.js +2 -1
  56. package/js/src/hyperliquid.d.ts +11 -0
  57. package/js/src/hyperliquid.js +40 -2
  58. package/js/src/independentreserve.d.ts +1 -0
  59. package/js/src/independentreserve.js +15 -4
  60. package/js/src/krakenfutures.js +5 -2
  61. package/js/src/kucoin.d.ts +1 -0
  62. package/js/src/kucoin.js +20 -3
  63. package/js/src/lbank.js +1 -1
  64. package/js/src/lighter.d.ts +6 -1
  65. package/js/src/lighter.js +56 -6
  66. package/js/src/luno.js +1 -0
  67. package/js/src/okx.js +17 -2
  68. package/js/src/pro/aftermath.d.ts +55 -0
  69. package/js/src/pro/aftermath.js +374 -0
  70. package/js/src/pro/bingx.js +5 -1
  71. package/js/src/pro/cex.d.ts +1 -0
  72. package/js/src/pro/cex.js +24 -28
  73. package/js/src/pro/krakenfutures.js +9 -3
  74. package/js/src/pro/lighter.d.ts +23 -0
  75. package/js/src/pro/lighter.js +127 -4
  76. package/js/src/pro/mexc.js +7 -1
  77. package/js/src/pro/paradex.js +3 -3
  78. package/js/src/pro/woo.js +3 -8
  79. package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +1 -1
  80. package/js/src/static_dependencies/starknet/utils/calldata/parser/index.d.ts +1 -1
  81. package/js/src/toobit.js +1 -0
  82. package/package.json +3 -2
@@ -41,6 +41,9 @@ class cex extends cex$1["default"] {
41
41
  },
42
42
  'options': {
43
43
  'orderbook': {},
44
+ 'watchTrades': {
45
+ 'symbol': undefined,
46
+ },
44
47
  },
45
48
  'streaming': {},
46
49
  'exceptions': {},
@@ -125,13 +128,17 @@ class cex extends cex$1["default"] {
125
128
  * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/?id=public-trades}
126
129
  */
127
130
  async watchTrades(symbol, since = undefined, limit = undefined, params = {}) {
131
+ const currentSymbol = this.safeString(this.options['watchTrades'], 'symbol');
132
+ if (currentSymbol !== undefined && currentSymbol !== symbol) {
133
+ throw new errors.ArgumentsRequired(this.id + ' : this exchange only supports watching trades for one symbol per instance. You should either set .options["watchTrades"]["symbol"] to new symbol, or create a new instance');
134
+ }
135
+ this.options['watchTrades']['symbol'] = symbol;
128
136
  await this.loadMarkets();
129
137
  const market = this.market(symbol);
130
138
  symbol = market['symbol'];
131
139
  const url = this.urls['api']['ws'];
132
140
  const messageHash = 'trades';
133
141
  const subscriptionHash = 'old:' + symbol;
134
- this.options['currentWatchTradeSymbol'] = symbol; // exchange supports only 1 symbol for this watchTrades channel
135
142
  const client = this.safeValue(this.clients, url);
136
143
  if (client !== undefined) {
137
144
  const subscriptionKeys = Object.keys(client.subscriptions);
@@ -152,10 +159,6 @@ class cex extends cex$1["default"] {
152
159
  };
153
160
  const request = this.deepExtend(message, params);
154
161
  const trades = await this.watch(url, messageHash, request, subscriptionHash);
155
- // assing symbol to the trades as message does not contain symbol information
156
- for (let i = 0; i < trades.length; i++) {
157
- trades[i]['symbol'] = symbol;
158
- }
159
162
  return this.filterBySinceLimit(trades, since, limit, 'timestamp', true);
160
163
  }
161
164
  handleTradesSnapshot(client, message) {
@@ -170,29 +173,13 @@ class cex extends cex$1["default"] {
170
173
  // ]
171
174
  // }
172
175
  //
173
- const data = this.safeList(message, 'data', []);
174
- const limit = this.safeInteger(this.options, 'tradesLimit', 1000);
175
- const stored = new Cache.ArrayCache(limit);
176
- const symbol = this.safeString(this.options, 'currentWatchTradeSymbol');
177
- if (symbol === undefined) {
178
- return;
179
- }
180
- const market = this.market(symbol);
181
- const dataLength = data.length;
182
- for (let i = 0; i < dataLength; i++) {
183
- const index = dataLength - 1 - i;
184
- const rawTrade = data[index];
185
- const parsed = this.parseWsOldTrade(rawTrade, market);
186
- stored.append(parsed);
187
- }
188
- const messageHash = 'trades';
189
- this.trades = stored; // trades don't have symbol
190
- client.resolve(this.trades, messageHash);
176
+ this.handleTradesInner(client, message);
191
177
  }
192
178
  parseWsOldTrade(trade, market = undefined) {
193
179
  //
194
180
  // snapshot trade
195
181
  // "sell:1665467367741:3888551:19058.8:14541219"
182
+ //
196
183
  // update trade
197
184
  // ['buy', '1665467516704', '98070', "19057.7", "14541220"]
198
185
  //
@@ -229,18 +216,27 @@ class cex extends cex$1["default"] {
229
216
  // ]
230
217
  // }
231
218
  //
232
- const data = this.safeValue(message, 'data', []);
233
- const stored = this.trades; // to do fix this, this.trades is not meant to be used like this
219
+ this.handleTradesInner(client, message);
220
+ }
221
+ handleTradesInner(client, message) {
222
+ const data = this.safeList(message, 'data', []);
223
+ const symbol = this.safeString(this.options['watchTrades'], 'symbol');
224
+ if (!(symbol in this.trades)) {
225
+ const limit = this.safeInteger(this.options, 'tradesLimit', 1000);
226
+ this.trades[symbol] = new Cache.ArrayCache(limit);
227
+ }
228
+ const stored = this.trades[symbol];
229
+ const market = this.market(symbol);
234
230
  const dataLength = data.length;
235
231
  for (let i = 0; i < dataLength; i++) {
236
232
  const index = dataLength - 1 - i;
237
233
  const rawTrade = data[index];
238
- const parsed = this.parseWsOldTrade(rawTrade);
234
+ const parsed = this.parseWsOldTrade(rawTrade, market);
239
235
  stored.append(parsed);
240
236
  }
241
237
  const messageHash = 'trades';
242
- this.trades = stored;
243
- client.resolve(this.trades, messageHash);
238
+ this.trades[symbol] = stored;
239
+ client.resolve(this.trades[symbol], messageHash);
244
240
  }
245
241
  /**
246
242
  * @method
@@ -362,8 +362,14 @@ class krakenfutures extends krakenfutures$1["default"] {
362
362
  //
363
363
  const marketId = this.safeString(position, 'instrument');
364
364
  const hedged = 'both';
365
- const balance = this.safeNumber(position, 'balance');
366
- const side = (balance > 0) ? 'long' : 'short';
365
+ const balanceString = this.safeString(position, 'balance');
366
+ let side = undefined;
367
+ if (Precise["default"].stringGt(balanceString, '0')) {
368
+ side = 'long';
369
+ }
370
+ else if (Precise["default"].stringLt(balanceString, '0')) {
371
+ side = 'short';
372
+ }
367
373
  return this.safePosition({
368
374
  'info': position,
369
375
  'id': undefined,
@@ -374,7 +380,7 @@ class krakenfutures extends krakenfutures$1["default"] {
374
380
  'entryPrice': this.safeNumber(position, 'entry_price'),
375
381
  'unrealizedPnl': this.safeNumber(position, 'pnl'),
376
382
  'percentage': this.safeNumber(position, 'return_on_equity'),
377
- 'contracts': this.parseNumber(Precise["default"].stringAbs(this.numberToString(balance))),
383
+ 'contracts': this.parseNumber(Precise["default"].stringAbs(balanceString)),
378
384
  'contractSize': undefined,
379
385
  'markPrice': this.safeNumber(position, 'mark_price'),
380
386
  'side': side,
@@ -30,7 +30,7 @@ class lighter extends lighter$1["default"] {
30
30
  'watchOHLCV': false,
31
31
  'watchOHLCVForSymbols': false,
32
32
  'watchOrders': false,
33
- 'watchMyTrades': false,
33
+ 'watchMyTrades': true,
34
34
  'watchPositions': false,
35
35
  'watchFundingRate': false,
36
36
  'watchFundingRates': false,
@@ -38,6 +38,7 @@ class lighter extends lighter$1["default"] {
38
38
  'unWatchTicker': true,
39
39
  'unWatchTickers': true,
40
40
  'unWatchTrades': true,
41
+ 'unWatchMyTrades': true,
41
42
  'unWatchMarkPrice': true,
42
43
  'unWatchMarkPrices': true,
43
44
  },
@@ -549,7 +550,7 @@ class lighter extends lighter$1["default"] {
549
550
  const request = {
550
551
  'channel': 'trade/' + market['id'],
551
552
  };
552
- const messageHash = this.getMessageHash('trade', symbol);
553
+ const messageHash = this.getMessageHash('trade', market['symbol']);
553
554
  return await this.subscribePublic(messageHash, this.extend(request, params));
554
555
  }
555
556
  /**
@@ -570,6 +571,124 @@ class lighter extends lighter$1["default"] {
570
571
  const messageHash = this.getMessageHash('unsubscribe', symbol);
571
572
  return await this.unsubscribePublic(messageHash, this.extend(request, params));
572
573
  }
574
+ handleMyTrades(client, message) {
575
+ //
576
+ // {
577
+ // "channel": "account_all_trades:723310",
578
+ // "trades": {
579
+ // 13: [{
580
+ // "trade_id": 526801155,
581
+ // "tx_hash": "1998d9df580acb7540aa141cc369d6ef926d003b3062196d2007bca15f978ab208e0caae4ac5872b",
582
+ // "type": "trade",
583
+ // "market_id": 0,
584
+ // "size": "0.0346",
585
+ // "price": "3028.85",
586
+ // "usd_amount": "104.798210",
587
+ // "ask_id": 281475673670566,
588
+ // "bid_id": 562949291740362,
589
+ // "ask_client_id": 76303170,
590
+ // "bid_client_id": 27601,
591
+ // "ask_account_id": 99349,
592
+ // "bid_account_id": 243008,
593
+ // "is_maker_ask": false,
594
+ // "block_height": 102322769,
595
+ // "timestamp": 1763623734215,
596
+ // "taker_position_size_before": "0.0346",
597
+ // "taker_entry_quote_before": "104.359926",
598
+ // "taker_initial_margin_fraction_before": 500,
599
+ // "taker_position_sign_changed": true,
600
+ // "maker_fee": 20,
601
+ // "maker_position_size_before": "2.1277",
602
+ // "maker_entry_quote_before": "6444.179555",
603
+ // "maker_initial_margin_fraction_before": 200
604
+ // }]
605
+ // },
606
+ // "type": "update/account_all_trades"
607
+ // }
608
+ //
609
+ const data = this.safeDict(message, 'trades', {});
610
+ const marketIds = Object.keys(data);
611
+ const idsLength = marketIds.length;
612
+ if (idsLength === 0) {
613
+ return false; // nothing to process
614
+ }
615
+ if (this.myTrades === undefined) {
616
+ const limit = this.safeInteger(this.options, 'tradesLimit', 1000);
617
+ this.myTrades = new Cache.ArrayCache(limit);
618
+ }
619
+ const stored = this.myTrades;
620
+ const messageHash = this.getMessageHash('myTrades');
621
+ for (let i = 0; i < marketIds.length; i++) {
622
+ const marketId = marketIds[i];
623
+ const market = this.safeMarket(marketId);
624
+ const trades = this.safeList(data, marketId, []);
625
+ for (let j = 0; j < trades.length; j++) {
626
+ const trade = this.parseWsTrade(trades[j], market);
627
+ stored.append(trade);
628
+ const symbol = trade['symbol'];
629
+ if (symbol !== undefined) {
630
+ const symbolSpecificMessageHash = this.getMessageHash('myTrades', symbol);
631
+ client.resolve(stored, symbolSpecificMessageHash);
632
+ }
633
+ }
634
+ }
635
+ client.resolve(stored, messageHash);
636
+ return true;
637
+ }
638
+ /**
639
+ * @method
640
+ * @name lighter#watchMyTrades
641
+ * @description subscribe to recent trades of an account.
642
+ * @see https://apidocs.lighter.xyz/docs/websocket-reference#account-all-trades
643
+ * @param {string} [symbol] unified market symbol
644
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch
645
+ * @param {int} [limit] the maximum amount of trades to fetch
646
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
647
+ * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
648
+ */
649
+ async watchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
650
+ await this.loadMarkets();
651
+ let accountIndex = undefined;
652
+ [accountIndex, params] = await this.handleAccountIndex(params, 'watchMyTrades', 'accountIndex', 'account_index');
653
+ let messageHash = this.getMessageHash('myTrades');
654
+ if (symbol !== undefined) {
655
+ const market = this.market(symbol);
656
+ symbol = market['symbol'];
657
+ messageHash = this.getMessageHash('myTrades', symbol);
658
+ }
659
+ const request = {
660
+ 'channel': 'account_all_trades/' + this.numberToString(accountIndex),
661
+ };
662
+ const trades = await this.subscribePublic(messageHash, this.extend(request, params));
663
+ if (this.newUpdates) {
664
+ limit = trades.getLimit(symbol, limit);
665
+ }
666
+ return this.filterBySymbolSinceLimit(trades, symbol, since, limit, true);
667
+ }
668
+ /**
669
+ * @method
670
+ * @name lighter#unWatchMyTrades
671
+ * @description unsubscribe from the account trades channel
672
+ * @see https://apidocs.lighter.xyz/docs/websocket-reference#account-all-trades
673
+ * @param {string} [symbol] unified market symbol
674
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
675
+ * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
676
+ */
677
+ async unWatchMyTrades(symbol = undefined, params = {}) {
678
+ let accountIndex;
679
+ [accountIndex, params] = await this.handleAccountIndex(params, 'unWatchMyTrades', 'accountIndex', 'account_index');
680
+ let messageHash = this.getMessageHash('unsubscribe', 'myTrades');
681
+ if (symbol !== undefined) {
682
+ await this.loadMarkets();
683
+ const market = this.market(symbol);
684
+ symbol = market['symbol'];
685
+ messageHash = this.getMessageHash('unsubscribe', symbol);
686
+ }
687
+ const request = {
688
+ 'channel': 'account_all_trades/' + accountIndex,
689
+ };
690
+ return await this.unsubscribePublic(messageHash, this.extend(request, params));
691
+ }
573
692
  parseWsLiquidation(liquidation, market = undefined) {
574
693
  //
575
694
  // {
@@ -659,8 +778,8 @@ class lighter extends lighter$1["default"] {
659
778
  let stored = this.safeValue(this.liquidations, symbol);
660
779
  if (stored === undefined) {
661
780
  const limit = this.safeInteger(this.options, 'liquidationsLimit', 1000);
662
- stored = new Cache.ArrayCache(limit);
663
- this.liquidations[symbol] = stored;
781
+ this.liquidations = new Cache.ArrayCache(limit);
782
+ stored = this.liquidations;
664
783
  }
665
784
  for (let i = 0; i < data.length; i++) {
666
785
  const liquidation = this.parseWsLiquidation(data[i], market);
@@ -735,6 +854,10 @@ class lighter extends lighter$1["default"] {
735
854
  this.handleTrades(client, message);
736
855
  return;
737
856
  }
857
+ if (channel.indexOf('account_all_trades:') >= 0) {
858
+ this.handleMyTrades(client, message);
859
+ return;
860
+ }
738
861
  if (channel === '') {
739
862
  this.handleSubscriptionStatus(client, message);
740
863
  }
@@ -720,13 +720,19 @@ class mexc extends mexc$1["default"] {
720
720
  // "amount":"366804.43",
721
721
  // "windowEnd":"1754737980"
722
722
  //
723
+ let volume = this.safeNumber2(ohlcv, 'v', 'volume');
724
+ // MEXC swap websocket klines publish contracts volume in `q`,
725
+ // while spot/protobuf uses `v`/`volume`.
726
+ if ((market !== undefined) && (!this.safeBool(market, 'spot')) && (volume === undefined)) {
727
+ volume = this.safeNumber2(ohlcv, 'q', 'v');
728
+ }
723
729
  return [
724
730
  this.safeTimestamp2(ohlcv, 't', 'windowStart'),
725
731
  this.safeNumber2(ohlcv, 'o', 'openingPrice'),
726
732
  this.safeNumber2(ohlcv, 'h', 'highestPrice'),
727
733
  this.safeNumber2(ohlcv, 'l', 'lowestPrice'),
728
734
  this.safeNumber2(ohlcv, 'c', 'closingPrice'),
729
- this.safeNumber2(ohlcv, 'v', 'volume'),
735
+ volume,
730
736
  ];
731
737
  }
732
738
  /**
@@ -284,7 +284,7 @@ class paradex extends paradex$1["default"] {
284
284
  },
285
285
  };
286
286
  const messageHashes = [];
287
- if (Array.isArray(symbols)) {
287
+ if (symbols !== undefined && Array.isArray(symbols)) {
288
288
  for (let i = 0; i < symbols.length; i++) {
289
289
  const messageHash = channel + '.' + symbols[i];
290
290
  messageHashes.push(messageHash);
@@ -293,10 +293,10 @@ class paradex extends paradex$1["default"] {
293
293
  else {
294
294
  messageHashes.push(channel);
295
295
  }
296
- const newTickers = await this.watchMultiple(url, messageHashes, this.deepExtend(request, params), messageHashes);
296
+ const newTicker = await this.watchMultiple(url, messageHashes, this.deepExtend(request, params), messageHashes);
297
297
  if (this.newUpdates) {
298
298
  const result = {};
299
- result[newTickers['symbol']] = newTickers;
299
+ result[newTicker['symbol']] = newTicker;
300
300
  return result;
301
301
  }
302
302
  return this.filterByArray(this.tickers, 'symbol', symbols);
@@ -1036,15 +1036,10 @@ class woo extends woo$1["default"] {
1036
1036
  if (Precise["default"].stringEq(priceString, '0') && (avgPrice !== undefined)) {
1037
1037
  price = avgPrice;
1038
1038
  }
1039
- const amount = this.safeFloat(order, 'quantity');
1039
+ const amount = this.safeString(order, 'quantity');
1040
1040
  const side = this.safeStringLower(order, 'side');
1041
1041
  const type = this.safeStringLower(order, 'type');
1042
- const filled = this.safeNumber(order, 'totalExecutedQuantity');
1043
- const totalExecQuantity = this.safeFloat(order, 'totalExecutedQuantity');
1044
- let remaining = amount;
1045
- if (amount >= totalExecQuantity) {
1046
- remaining -= totalExecQuantity;
1047
- }
1042
+ const filled = this.safeString2(order, 'totalExecutedQuantity', 'executed');
1048
1043
  const rawStatus = this.safeString2(order, 'status', 'algoStatus');
1049
1044
  const status = this.parseOrderStatus(rawStatus);
1050
1045
  const trades = undefined;
@@ -1070,7 +1065,7 @@ class woo extends woo$1["default"] {
1070
1065
  'cost': undefined,
1071
1066
  'average': avgPrice,
1072
1067
  'filled': filled,
1073
- 'remaining': remaining,
1068
+ 'remaining': undefined,
1074
1069
  'status': status,
1075
1070
  'fee': fee,
1076
1071
  'trades': trades,
@@ -2999,6 +2999,7 @@ class toobit extends toobit$1["default"] {
2999
2999
  headers = {
3000
3000
  'Referrer': 'CCXT',
3001
3001
  'X-BB-APIKEY': this.apiKey,
3002
+ 'X-BB-API-PLATFORM': this.safeString(this.options, 'brokerId', '177321641268789'),
3002
3003
  'Content-Type': 'application/x-www-form-urlencoded',
3003
3004
  };
3004
3005
  }
package/js/ccxt.d.ts CHANGED
@@ -4,7 +4,8 @@ import * as functions from './src/base/functions.js';
4
4
  import * as errors from './src/base/errors.js';
5
5
  import type { Int, int, Str, Strings, Num, Bool, IndexType, OrderSide, OrderType, MarketType, SubType, Dict, NullableDict, List, NullableList, Fee, OHLCV, OHLCVC, implicitReturnType, Market, Currency, Dictionary, MinMax, FeeInterface, TradingFeeInterface, MarketInterface, Trade, Order, OrderBook, Ticker, Transaction, Tickers, CurrencyInterface, Balance, BalanceAccount, Account, PartialBalances, Balances, DepositAddress, WithdrawalResponse, FundingRate, FundingRates, Position, BorrowInterest, LeverageTier, LedgerEntry, DepositWithdrawFeeNetwork, DepositWithdrawFee, TransferEntry, CrossBorrowRate, IsolatedBorrowRate, FundingRateHistory, OpenInterest, Liquidation, OrderRequest, CancellationRequest, FundingHistory, MarketMarginModes, MarginMode, Greeks, Conversion, Option, LastPrice, Leverage, MarginModification, Leverages, LastPrices, Currencies, TradingFees, MarginModes, OptionChain, IsolatedBorrowRates, CrossBorrowRates, LeverageTiers, LongShortRatio, OrderBooks, OpenInterests, ConstructorArgs, ADL } from './src/base/types.js';
6
6
  import { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, ManualInteractionNeeded, RestrictedLocation, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending, UnsubscribeError } from './src/base/errors.js';
7
- declare const version = "4.5.41";
7
+ declare const version = "4.5.42";
8
+ import aftermath from './src/aftermath.js';
8
9
  import alp from './src/alp.js';
9
10
  import alpaca from './src/alpaca.js';
10
11
  import apex from './src/apex.js';
@@ -116,6 +117,7 @@ import yobit from './src/yobit.js';
116
117
  import zaif from './src/zaif.js';
117
118
  import zebpay from './src/zebpay.js';
118
119
  import zonda from './src/zonda.js';
120
+ import aftermathPro from './src/pro/aftermath.js';
119
121
  import alpacaPro from './src/pro/alpaca.js';
120
122
  import apexPro from './src/pro/apex.js';
121
123
  import arkhamPro from './src/pro/arkham.js';
@@ -195,6 +197,7 @@ import wooPro from './src/pro/woo.js';
195
197
  import woofiproPro from './src/pro/woofipro.js';
196
198
  import xtPro from './src/pro/xt.js';
197
199
  declare const exchanges: {
200
+ aftermath: typeof aftermath;
198
201
  alp: typeof alp;
199
202
  alpaca: typeof alpaca;
200
203
  apex: typeof apex;
@@ -308,6 +311,7 @@ declare const exchanges: {
308
311
  zonda: typeof zonda;
309
312
  };
310
313
  declare const pro: {
314
+ aftermath: typeof aftermathPro;
311
315
  alpaca: typeof alpacaPro;
312
316
  apex: typeof apexPro;
313
317
  arkham: typeof arkhamPro;
@@ -393,6 +397,7 @@ declare const ccxt: {
393
397
  Precise: typeof Precise;
394
398
  exchanges: string[];
395
399
  pro: {
400
+ aftermath: typeof aftermathPro;
396
401
  alpaca: typeof alpacaPro;
397
402
  apex: typeof apexPro;
398
403
  arkham: typeof arkhamPro;
@@ -473,6 +478,7 @@ declare const ccxt: {
473
478
  xt: typeof xtPro;
474
479
  };
475
480
  } & {
481
+ aftermath: typeof aftermath;
476
482
  alp: typeof alp;
477
483
  alpaca: typeof alpaca;
478
484
  apex: typeof apex;
@@ -585,5 +591,5 @@ declare const ccxt: {
585
591
  zebpay: typeof zebpay;
586
592
  zonda: typeof zonda;
587
593
  } & typeof functions & typeof errors;
588
- export { version, Exchange, exchanges, pro, Precise, functions, errors, BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, ManualInteractionNeeded, RestrictedLocation, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending, UnsubscribeError, Int, int, Str, Strings, Num, Bool, IndexType, OrderSide, OrderType, MarketType, SubType, Dict, NullableDict, List, NullableList, Fee, OHLCV, OHLCVC, implicitReturnType, Market, Currency, ConstructorArgs, Dictionary, MinMax, FeeInterface, TradingFeeInterface, MarketMarginModes, MarketInterface, Trade, Order, OrderBook, OrderBooks, Ticker, Transaction, Tickers, CurrencyInterface, Balance, BalanceAccount, Account, PartialBalances, Balances, DepositAddress, WithdrawalResponse, FundingRate, FundingRates, Position, BorrowInterest, LeverageTier, LedgerEntry, DepositWithdrawFeeNetwork, DepositWithdrawFee, TransferEntry, CrossBorrowRate, IsolatedBorrowRate, FundingRateHistory, OpenInterest, OpenInterests, Liquidation, OrderRequest, CancellationRequest, FundingHistory, MarginMode, Greeks, Conversion, Option, LastPrice, Leverage, LongShortRatio, ADL, MarginModification, Leverages, LastPrices, Currencies, TradingFees, MarginModes, OptionChain, IsolatedBorrowRates, CrossBorrowRates, LeverageTiers, alp, alpaca, apex, arkham, ascendex, aster, backpack, bequant, bigone, binance, binancecoinm, binanceus, binanceusdm, bingx, bit2c, bitbank, bitbns, bitfinex, bitflyer, bitget, bithumb, bitmart, bitmex, bitopro, bitrue, bitso, bitstamp, bitteam, bittrade, bitvavo, blockchaincom, blofin, btcbox, btcmarkets, btcturk, bullish, bybit, bydfi, cex, coinbase, coinbaseadvanced, coinbaseexchange, coinbaseinternational, coincatch, coincheck, coinex, coinmate, coinmetro, coinone, coinsph, coinspot, cryptocom, cryptomus, deepcoin, defx, delta, deribit, derive, digifinex, dydx, exmo, fmfwio, foxbit, gate, gateio, gemini, hashkey, hibachi, hitbtc, hollaex, htx, huobi, hyperliquid, independentreserve, indodax, kraken, krakenfutures, kucoin, kucoinfutures, latoken, lbank, lighter, luno, mercado, mexc, modetrade, myokx, ndax, novadax, okx, okxus, onetrading, oxfun, p2b, paradex, paymium, phemex, poloniex, timex, tokocrypto, toobit, upbit, wavesexchange, whitebit, woo, woofipro, xt, yobit, zaif, zebpay, zonda, };
594
+ export { version, Exchange, exchanges, pro, Precise, functions, errors, BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, ManualInteractionNeeded, RestrictedLocation, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending, UnsubscribeError, Int, int, Str, Strings, Num, Bool, IndexType, OrderSide, OrderType, MarketType, SubType, Dict, NullableDict, List, NullableList, Fee, OHLCV, OHLCVC, implicitReturnType, Market, Currency, ConstructorArgs, Dictionary, MinMax, FeeInterface, TradingFeeInterface, MarketMarginModes, MarketInterface, Trade, Order, OrderBook, OrderBooks, Ticker, Transaction, Tickers, CurrencyInterface, Balance, BalanceAccount, Account, PartialBalances, Balances, DepositAddress, WithdrawalResponse, FundingRate, FundingRates, Position, BorrowInterest, LeverageTier, LedgerEntry, DepositWithdrawFeeNetwork, DepositWithdrawFee, TransferEntry, CrossBorrowRate, IsolatedBorrowRate, FundingRateHistory, OpenInterest, OpenInterests, Liquidation, OrderRequest, CancellationRequest, FundingHistory, MarginMode, Greeks, Conversion, Option, LastPrice, Leverage, LongShortRatio, ADL, MarginModification, Leverages, LastPrices, Currencies, TradingFees, MarginModes, OptionChain, IsolatedBorrowRates, CrossBorrowRates, LeverageTiers, aftermath, alp, alpaca, apex, arkham, ascendex, aster, backpack, bequant, bigone, binance, binancecoinm, binanceus, binanceusdm, bingx, bit2c, bitbank, bitbns, bitfinex, bitflyer, bitget, bithumb, bitmart, bitmex, bitopro, bitrue, bitso, bitstamp, bitteam, bittrade, bitvavo, blockchaincom, blofin, btcbox, btcmarkets, btcturk, bullish, bybit, bydfi, cex, coinbase, coinbaseadvanced, coinbaseexchange, coinbaseinternational, coincatch, coincheck, coinex, coinmate, coinmetro, coinone, coinsph, coinspot, cryptocom, cryptomus, deepcoin, defx, delta, deribit, derive, digifinex, dydx, exmo, fmfwio, foxbit, gate, gateio, gemini, hashkey, hibachi, hitbtc, hollaex, htx, huobi, hyperliquid, independentreserve, indodax, kraken, krakenfutures, kucoin, kucoinfutures, latoken, lbank, lighter, luno, mercado, mexc, modetrade, myokx, ndax, novadax, okx, okxus, onetrading, oxfun, p2b, paradex, paymium, phemex, poloniex, timex, tokocrypto, toobit, upbit, wavesexchange, whitebit, woo, woofipro, xt, yobit, zaif, zebpay, zonda, };
589
595
  export default ccxt;
package/js/ccxt.js CHANGED
@@ -38,9 +38,10 @@ import * as errors from './src/base/errors.js';
38
38
  import { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, ManualInteractionNeeded, RestrictedLocation, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending, UnsubscribeError } from './src/base/errors.js';
39
39
  //-----------------------------------------------------------------------------
40
40
  // this is updated by vss.js when building
41
- const version = '4.5.41';
41
+ const version = '4.5.42';
42
42
  Exchange.ccxtVersion = version;
43
43
  //-----------------------------------------------------------------------------
44
+ import aftermath from './src/aftermath.js';
44
45
  import alp from './src/alp.js';
45
46
  import alpaca from './src/alpaca.js';
46
47
  import apex from './src/apex.js';
@@ -153,6 +154,7 @@ import zaif from './src/zaif.js';
153
154
  import zebpay from './src/zebpay.js';
154
155
  import zonda from './src/zonda.js';
155
156
  // pro exchanges
157
+ import aftermathPro from './src/pro/aftermath.js';
156
158
  import alpacaPro from './src/pro/alpaca.js';
157
159
  import apexPro from './src/pro/apex.js';
158
160
  import arkhamPro from './src/pro/arkham.js';
@@ -232,6 +234,7 @@ import wooPro from './src/pro/woo.js';
232
234
  import woofiproPro from './src/pro/woofipro.js';
233
235
  import xtPro from './src/pro/xt.js';
234
236
  const exchanges = {
237
+ 'aftermath': aftermath,
235
238
  'alp': alp,
236
239
  'alpaca': alpaca,
237
240
  'apex': apex,
@@ -345,6 +348,7 @@ const exchanges = {
345
348
  'zonda': zonda,
346
349
  };
347
350
  const pro = {
351
+ 'aftermath': aftermathPro,
348
352
  'alpaca': alpacaPro,
349
353
  'apex': apexPro,
350
354
  'arkham': arkhamPro,
@@ -436,6 +440,6 @@ pro.exchanges = Object.keys(pro);
436
440
  pro['Exchange'] = Exchange; // now the same for rest and ts
437
441
  //-----------------------------------------------------------------------------
438
442
  const ccxt = Object.assign({ version, Exchange, Precise, 'exchanges': Object.keys(exchanges), 'pro': pro }, exchanges, functions, errors);
439
- export { version, Exchange, exchanges, pro, Precise, functions, errors, BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, ManualInteractionNeeded, RestrictedLocation, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending, UnsubscribeError, alp, alpaca, apex, arkham, ascendex, aster, backpack, bequant, bigone, binance, binancecoinm, binanceus, binanceusdm, bingx, bit2c, bitbank, bitbns, bitfinex, bitflyer, bitget, bithumb, bitmart, bitmex, bitopro, bitrue, bitso, bitstamp, bitteam, bittrade, bitvavo, blockchaincom, blofin, btcbox, btcmarkets, btcturk, bullish, bybit, bydfi, cex, coinbase, coinbaseadvanced, coinbaseexchange, coinbaseinternational, coincatch, coincheck, coinex, coinmate, coinmetro, coinone, coinsph, coinspot, cryptocom, cryptomus, deepcoin, defx, delta, deribit, derive, digifinex, dydx, exmo, fmfwio, foxbit, gate, gateio, gemini, hashkey, hibachi, hitbtc, hollaex, htx, huobi, hyperliquid, independentreserve, indodax, kraken, krakenfutures, kucoin, kucoinfutures, latoken, lbank, lighter, luno, mercado, mexc, modetrade, myokx, ndax, novadax, okx, okxus, onetrading, oxfun, p2b, paradex, paymium, phemex, poloniex, timex, tokocrypto, toobit, upbit, wavesexchange, whitebit, woo, woofipro, xt, yobit, zaif, zebpay, zonda, };
443
+ export { version, Exchange, exchanges, pro, Precise, functions, errors, BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, ManualInteractionNeeded, RestrictedLocation, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending, UnsubscribeError, aftermath, alp, alpaca, apex, arkham, ascendex, aster, backpack, bequant, bigone, binance, binancecoinm, binanceus, binanceusdm, bingx, bit2c, bitbank, bitbns, bitfinex, bitflyer, bitget, bithumb, bitmart, bitmex, bitopro, bitrue, bitso, bitstamp, bitteam, bittrade, bitvavo, blockchaincom, blofin, btcbox, btcmarkets, btcturk, bullish, bybit, bydfi, cex, coinbase, coinbaseadvanced, coinbaseexchange, coinbaseinternational, coincatch, coincheck, coinex, coinmate, coinmetro, coinone, coinsph, coinspot, cryptocom, cryptomus, deepcoin, defx, delta, deribit, derive, digifinex, dydx, exmo, fmfwio, foxbit, gate, gateio, gemini, hashkey, hibachi, hitbtc, hollaex, htx, huobi, hyperliquid, independentreserve, indodax, kraken, krakenfutures, kucoin, kucoinfutures, latoken, lbank, lighter, luno, mercado, mexc, modetrade, myokx, ndax, novadax, okx, okxus, onetrading, oxfun, p2b, paradex, paymium, phemex, poloniex, timex, tokocrypto, toobit, upbit, wavesexchange, whitebit, woo, woofipro, xt, yobit, zaif, zebpay, zonda, };
440
444
  export default ccxt;
441
445
  //-----------------------------------------------------------------------------
@@ -0,0 +1,33 @@
1
+ import { implicitReturnType } from '../base/types.js';
2
+ import { Exchange as _Exchange } from '../base/Exchange.js';
3
+ interface Exchange {
4
+ publicGetMarkets(params?: {}): Promise<implicitReturnType>;
5
+ publicGetCurrencies(params?: {}): Promise<implicitReturnType>;
6
+ publicPostTicker(params?: {}): Promise<implicitReturnType>;
7
+ publicPostOrderbook(params?: {}): Promise<implicitReturnType>;
8
+ publicPostTrades(params?: {}): Promise<implicitReturnType>;
9
+ publicPostOHLCV(params?: {}): Promise<implicitReturnType>;
10
+ privatePostAccounts(params?: {}): Promise<implicitReturnType>;
11
+ privatePostBalance(params?: {}): Promise<implicitReturnType>;
12
+ privatePostMyPendingOrders(params?: {}): Promise<implicitReturnType>;
13
+ privatePostPositions(params?: {}): Promise<implicitReturnType>;
14
+ privatePostBuildAllocate(params?: {}): Promise<implicitReturnType>;
15
+ privatePostBuildCancelOrders(params?: {}): Promise<implicitReturnType>;
16
+ privatePostBuildCreateAccount(params?: {}): Promise<implicitReturnType>;
17
+ privatePostBuildCreateOrders(params?: {}): Promise<implicitReturnType>;
18
+ privatePostBuildDeallocate(params?: {}): Promise<implicitReturnType>;
19
+ privatePostBuildDeposit(params?: {}): Promise<implicitReturnType>;
20
+ privatePostBuildSetLeverage(params?: {}): Promise<implicitReturnType>;
21
+ privatePostBuildWithdraw(params?: {}): Promise<implicitReturnType>;
22
+ privatePostSubmitAllocate(params?: {}): Promise<implicitReturnType>;
23
+ privatePostSubmitCancelOrders(params?: {}): Promise<implicitReturnType>;
24
+ privatePostSubmitCreateAccount(params?: {}): Promise<implicitReturnType>;
25
+ privatePostSubmitCreateOrders(params?: {}): Promise<implicitReturnType>;
26
+ privatePostSubmitDeallocate(params?: {}): Promise<implicitReturnType>;
27
+ privatePostSubmitDeposit(params?: {}): Promise<implicitReturnType>;
28
+ privatePostSubmitSetLeverage(params?: {}): Promise<implicitReturnType>;
29
+ privatePostSubmitWithdraw(params?: {}): Promise<implicitReturnType>;
30
+ }
31
+ declare abstract class Exchange extends _Exchange {
32
+ }
33
+ export default Exchange;
@@ -0,0 +1,11 @@
1
+ // ----------------------------------------------------------------------------
2
+
3
+ // PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
4
+ // https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
5
+ // EDIT THE CORRESPONDENT .ts FILE INSTEAD
6
+
7
+ // -------------------------------------------------------------------------------
8
+ import { Exchange as _Exchange } from '../base/Exchange.js';
9
+ class Exchange extends _Exchange {
10
+ }
11
+ export default Exchange;