ccxt 4.3.89 → 4.3.91

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 (69) hide show
  1. package/README.md +3 -3
  2. package/dist/ccxt.browser.min.js +3 -3
  3. package/dist/cjs/ccxt.js +1 -1
  4. package/dist/cjs/src/alpaca.js +2 -2
  5. package/dist/cjs/src/ascendex.js +95 -97
  6. package/dist/cjs/src/binance.js +1 -1
  7. package/dist/cjs/src/bingx.js +31 -17
  8. package/dist/cjs/src/bitfinex2.js +21 -22
  9. package/dist/cjs/src/bitget.js +2 -2
  10. package/dist/cjs/src/bitmart.js +6 -9
  11. package/dist/cjs/src/coinbaseinternational.js +2 -1
  12. package/dist/cjs/src/coinex.js +1 -17
  13. package/dist/cjs/src/hitbtc.js +2 -0
  14. package/dist/cjs/src/htx.js +49 -49
  15. package/dist/cjs/src/huobijp.js +0 -9
  16. package/dist/cjs/src/kucoin.js +59 -21
  17. package/dist/cjs/src/kucoinfutures.js +26 -2
  18. package/dist/cjs/src/latoken.js +1 -0
  19. package/dist/cjs/src/okx.js +1 -8
  20. package/dist/cjs/src/pro/binance.js +323 -0
  21. package/dist/cjs/src/pro/bingx.js +263 -91
  22. package/dist/cjs/src/pro/bithumb.js +5 -1
  23. package/dist/cjs/src/pro/bybit.js +1 -1
  24. package/dist/cjs/src/pro/coinex.js +994 -679
  25. package/dist/cjs/src/pro/lbank.js +2 -3
  26. package/dist/cjs/src/pro/okx.js +159 -3
  27. package/dist/cjs/src/whitebit.js +5 -3
  28. package/dist/cjs/src/woo.js +1 -1
  29. package/js/ccxt.d.ts +1 -1
  30. package/js/ccxt.js +1 -1
  31. package/js/src/abstract/kucoin.d.ts +1 -0
  32. package/js/src/abstract/kucoinfutures.d.ts +1 -0
  33. package/js/src/alpaca.js +2 -2
  34. package/js/src/ascendex.js +95 -97
  35. package/js/src/binance.js +1 -1
  36. package/js/src/bingx.js +31 -17
  37. package/js/src/bitfinex2.d.ts +0 -1
  38. package/js/src/bitfinex2.js +21 -22
  39. package/js/src/bitget.js +2 -2
  40. package/js/src/bitmart.d.ts +0 -1
  41. package/js/src/bitmart.js +6 -9
  42. package/js/src/coinbaseinternational.js +2 -1
  43. package/js/src/coinex.d.ts +0 -2
  44. package/js/src/coinex.js +1 -17
  45. package/js/src/hitbtc.js +2 -0
  46. package/js/src/htx.js +49 -49
  47. package/js/src/huobijp.d.ts +0 -1
  48. package/js/src/huobijp.js +0 -9
  49. package/js/src/kucoin.d.ts +3 -1
  50. package/js/src/kucoin.js +59 -21
  51. package/js/src/kucoinfutures.d.ts +1 -0
  52. package/js/src/kucoinfutures.js +26 -2
  53. package/js/src/latoken.js +1 -0
  54. package/js/src/okx.d.ts +0 -1
  55. package/js/src/okx.js +1 -8
  56. package/js/src/pro/binance.d.ts +9 -1
  57. package/js/src/pro/binance.js +327 -1
  58. package/js/src/pro/bingx.d.ts +2 -2
  59. package/js/src/pro/bingx.js +263 -91
  60. package/js/src/pro/bithumb.js +5 -1
  61. package/js/src/pro/bybit.js +1 -1
  62. package/js/src/pro/coinex.d.ts +12 -6
  63. package/js/src/pro/coinex.js +996 -681
  64. package/js/src/pro/lbank.js +2 -3
  65. package/js/src/pro/okx.d.ts +7 -0
  66. package/js/src/pro/okx.js +162 -4
  67. package/js/src/whitebit.js +5 -3
  68. package/js/src/woo.js +1 -1
  69. package/package.json +1 -1
package/js/src/kucoin.js CHANGED
@@ -244,6 +244,7 @@ export default class kucoin extends Exchange {
244
244
  'purchase/orders': 10,
245
245
  // broker
246
246
  'broker/api/rebase/download': 3,
247
+ 'migrate/user/account/status': 3,
247
248
  // affiliate
248
249
  'affiliate/inviter/statistics': 30,
249
250
  },
@@ -688,6 +689,7 @@ export default class kucoin extends Exchange {
688
689
  'project/marketInterestRate': 'v3',
689
690
  'redeem/orders': 'v3',
690
691
  'purchase/orders': 'v3',
692
+ 'migrate/user/account/status': 'v3',
691
693
  'margin/symbols': 'v3',
692
694
  'affiliate/inviter/statistics': 'v2',
693
695
  'asset/ndbroker/deposit/list': 'v1',
@@ -1211,6 +1213,30 @@ export default class kucoin extends Exchange {
1211
1213
  }
1212
1214
  return result;
1213
1215
  }
1216
+ async loadMigrationStatus(force = false) {
1217
+ if (!('hfMigrated' in this.options) || force) {
1218
+ const result = await this.privateGetMigrateUserAccountStatus();
1219
+ const data = this.safeDict(result, 'data', {});
1220
+ const status = this.safeInteger(data, 'status');
1221
+ this.options['hfMigrated'] = (status === 2);
1222
+ }
1223
+ }
1224
+ async handleHfAndParams(params = {}) {
1225
+ await this.loadMigrationStatus();
1226
+ const migrated = this.safeBool(this.options, 'hfMigrated');
1227
+ let loadedHf = undefined;
1228
+ if (migrated !== undefined) {
1229
+ if (migrated) {
1230
+ loadedHf = true;
1231
+ }
1232
+ else {
1233
+ loadedHf = false;
1234
+ }
1235
+ }
1236
+ const hf = this.safeBool(params, 'hf', loadedHf);
1237
+ params = this.omit(params, 'hf');
1238
+ return [hf, params];
1239
+ }
1214
1240
  async fetchCurrencies(params = {}) {
1215
1241
  /**
1216
1242
  * @method
@@ -2092,7 +2118,8 @@ export default class kucoin extends Exchange {
2092
2118
  const market = this.market(symbol);
2093
2119
  const testOrder = this.safeBool(params, 'test', false);
2094
2120
  params = this.omit(params, 'test');
2095
- const isHf = this.safeBool(params, 'hf', false);
2121
+ let hf = undefined;
2122
+ [hf, params] = await this.handleHfAndParams(params);
2096
2123
  const [triggerPrice, stopLossPrice, takeProfitPrice] = this.handleTriggerPrices(params);
2097
2124
  const tradeType = this.safeString(params, 'tradeType'); // keep it for backward compatibility
2098
2125
  const isTriggerOrder = (triggerPrice || stopLossPrice || takeProfitPrice);
@@ -2106,19 +2133,22 @@ export default class kucoin extends Exchange {
2106
2133
  if (isMarginOrder) {
2107
2134
  response = await this.privatePostMarginOrderTest(orderRequest);
2108
2135
  }
2136
+ else if (hf) {
2137
+ response = await this.privatePostHfOrdersTest(orderRequest);
2138
+ }
2109
2139
  else {
2110
2140
  response = await this.privatePostOrdersTest(orderRequest);
2111
2141
  }
2112
2142
  }
2113
- else if (isHf) {
2114
- response = await this.privatePostHfOrders(orderRequest);
2115
- }
2116
2143
  else if (isTriggerOrder) {
2117
2144
  response = await this.privatePostStopOrder(orderRequest);
2118
2145
  }
2119
2146
  else if (isMarginOrder) {
2120
2147
  response = await this.privatePostMarginOrder(orderRequest);
2121
2148
  }
2149
+ else if (hf) {
2150
+ response = await this.privatePostHfOrders(orderRequest);
2151
+ }
2122
2152
  else {
2123
2153
  response = await this.privatePostOrders(orderRequest);
2124
2154
  }
@@ -2219,8 +2249,8 @@ export default class kucoin extends Exchange {
2219
2249
  'symbol': market['id'],
2220
2250
  'orderList': ordersRequests,
2221
2251
  };
2222
- const hf = this.safeBool(params, 'hf', false);
2223
- params = this.omit(params, 'hf');
2252
+ let hf = undefined;
2253
+ [hf, params] = await this.handleHfAndParams(params);
2224
2254
  let response = undefined;
2225
2255
  if (hf) {
2226
2256
  response = await this.privatePostHfOrdersMulti(this.extend(request, params));
@@ -2409,7 +2439,8 @@ export default class kucoin extends Exchange {
2409
2439
  const request = {};
2410
2440
  const clientOrderId = this.safeString2(params, 'clientOid', 'clientOrderId');
2411
2441
  const stop = this.safeBool2(params, 'stop', 'trigger', false);
2412
- const hf = this.safeBool(params, 'hf', false);
2442
+ let hf = undefined;
2443
+ [hf, params] = await this.handleHfAndParams(params);
2413
2444
  if (hf) {
2414
2445
  if (symbol === undefined) {
2415
2446
  throw new ArgumentsRequired(this.id + ' cancelOrder() requires a symbol parameter for hf orders');
@@ -2418,7 +2449,7 @@ export default class kucoin extends Exchange {
2418
2449
  request['symbol'] = market['id'];
2419
2450
  }
2420
2451
  let response = undefined;
2421
- params = this.omit(params, ['clientOid', 'clientOrderId', 'stop', 'hf', 'trigger']);
2452
+ params = this.omit(params, ['clientOid', 'clientOrderId', 'stop', 'trigger']);
2422
2453
  if (clientOrderId !== undefined) {
2423
2454
  request['clientOid'] = clientOrderId;
2424
2455
  if (stop) {
@@ -2522,8 +2553,9 @@ export default class kucoin extends Exchange {
2522
2553
  await this.loadMarkets();
2523
2554
  const request = {};
2524
2555
  const stop = this.safeBool(params, 'stop', false);
2525
- const hf = this.safeBool(params, 'hf', false);
2526
- params = this.omit(params, ['stop', 'hf']);
2556
+ let hf = undefined;
2557
+ [hf, params] = await this.handleHfAndParams(params);
2558
+ params = this.omit(params, 'stop');
2527
2559
  const [marginMode, query] = this.handleMarginModeAndParams('cancelAllOrders', params);
2528
2560
  if (symbol !== undefined) {
2529
2561
  request['symbol'] = this.marketId(symbol);
@@ -2580,8 +2612,12 @@ export default class kucoin extends Exchange {
2580
2612
  let lowercaseStatus = status.toLowerCase();
2581
2613
  const until = this.safeInteger(params, 'until');
2582
2614
  const stop = this.safeBool2(params, 'stop', 'trigger', false);
2583
- const hf = this.safeBool(params, 'hf', false);
2584
- params = this.omit(params, ['stop', 'hf', 'until', 'trigger']);
2615
+ let hf = undefined;
2616
+ [hf, params] = await this.handleHfAndParams(params);
2617
+ if (hf && (symbol === undefined)) {
2618
+ throw new ArgumentsRequired(this.id + ' fetchOrdersByStatus() requires a symbol parameter for hf orders');
2619
+ }
2620
+ params = this.omit(params, ['stop', 'trigger', 'till', 'until']);
2585
2621
  const [marginMode, query] = this.handleMarginModeAndParams('fetchOrdersByStatus', params);
2586
2622
  if (lowercaseStatus === 'open') {
2587
2623
  lowercaseStatus = 'active';
@@ -2759,7 +2795,8 @@ export default class kucoin extends Exchange {
2759
2795
  const request = {};
2760
2796
  const clientOrderId = this.safeString2(params, 'clientOid', 'clientOrderId');
2761
2797
  const stop = this.safeBool2(params, 'stop', 'trigger', false);
2762
- const hf = this.safeBool(params, 'hf', false);
2798
+ let hf = undefined;
2799
+ [hf, params] = await this.handleHfAndParams(params);
2763
2800
  let market = undefined;
2764
2801
  if (symbol !== undefined) {
2765
2802
  market = this.market(symbol);
@@ -2770,7 +2807,7 @@ export default class kucoin extends Exchange {
2770
2807
  }
2771
2808
  request['symbol'] = market['id'];
2772
2809
  }
2773
- params = this.omit(params, ['stop', 'hf', 'clientOid', 'clientOrderId', 'trigger']);
2810
+ params = this.omit(params, ['stop', 'clientOid', 'clientOrderId', 'trigger']);
2774
2811
  let response = undefined;
2775
2812
  if (clientOrderId !== undefined) {
2776
2813
  request['clientOid'] = clientOrderId;
@@ -3036,7 +3073,8 @@ export default class kucoin extends Exchange {
3036
3073
  return await this.fetchPaginatedCallDynamic('fetchMyTrades', symbol, since, limit, params);
3037
3074
  }
3038
3075
  let request = {};
3039
- const hf = this.safeBool(params, 'hf', false);
3076
+ let hf = undefined;
3077
+ [hf, params] = await this.handleHfAndParams(params);
3040
3078
  if (hf && symbol === undefined) {
3041
3079
  throw new ArgumentsRequired(this.id + ' fetchMyTrades() requires a symbol parameter for hf orders');
3042
3080
  }
@@ -3763,11 +3801,11 @@ export default class kucoin extends Exchange {
3763
3801
  const accountsByType = this.safeDict(this.options, 'accountsByType');
3764
3802
  let type = this.safeString(accountsByType, requestedType, requestedType);
3765
3803
  params = this.omit(params, 'type');
3766
- const isHf = this.safeBool(params, 'hf', false);
3767
- if (isHf) {
3804
+ let hf = undefined;
3805
+ [hf, params] = await this.handleHfAndParams(params);
3806
+ if (hf) {
3768
3807
  type = 'trade_hf';
3769
3808
  }
3770
- params = this.omit(params, 'hf');
3771
3809
  const [marginMode, query] = this.handleMarginModeAndParams('fetchBalance', params);
3772
3810
  let response = undefined;
3773
3811
  const request = {};
@@ -4223,8 +4261,8 @@ export default class kucoin extends Exchange {
4223
4261
  await this.loadAccounts();
4224
4262
  let paginate = false;
4225
4263
  [paginate, params] = this.handleOptionAndParams(params, 'fetchLedger', 'paginate');
4226
- const isHf = this.safeBool(params, 'hf');
4227
- params = this.omit(params, 'hf');
4264
+ let hf = undefined;
4265
+ [hf, params] = await this.handleHfAndParams(params);
4228
4266
  if (paginate) {
4229
4267
  return await this.fetchPaginatedCallDynamic('fetchLedger', code, since, limit, params);
4230
4268
  }
@@ -4248,7 +4286,7 @@ export default class kucoin extends Exchange {
4248
4286
  let marginMode = undefined;
4249
4287
  [marginMode, params] = this.handleMarginModeAndParams('fetchLedger', params);
4250
4288
  let response = undefined;
4251
- if (isHf) {
4289
+ if (hf) {
4252
4290
  if (marginMode !== undefined) {
4253
4291
  response = await this.privateGetHfMarginAccountLedgers(this.extend(request, params));
4254
4292
  }
@@ -28,6 +28,7 @@ export default class kucoinfutures extends kucoin {
28
28
  fetchTicker(symbol: string, params?: {}): Promise<Ticker>;
29
29
  fetchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
30
30
  parseTicker(ticker: Dict, market?: Market): Ticker;
31
+ fetchBidsAsks(symbols?: Strings, params?: {}): Promise<Tickers>;
31
32
  fetchFundingHistory(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<FundingHistory[]>;
32
33
  fetchPosition(symbol: string, params?: {}): Promise<import("./base/types.js").Position>;
33
34
  fetchPositions(symbols?: Strings, params?: {}): Promise<import("./base/types.js").Position[]>;
@@ -51,6 +51,7 @@ export default class kucoinfutures extends kucoin {
51
51
  'createTriggerOrder': true,
52
52
  'fetchAccounts': true,
53
53
  'fetchBalance': true,
54
+ 'fetchBidsAsks': true,
54
55
  'fetchBorrowRateHistories': false,
55
56
  'fetchBorrowRateHistory': false,
56
57
  'fetchClosedOrders': true,
@@ -775,11 +776,20 @@ export default class kucoinfutures extends kucoin {
775
776
  * @see https://www.kucoin.com/docs/rest/futures-trading/market-data/get-symbols-list
776
777
  * @param {string[]} [symbols] unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
777
778
  * @param {object} [params] extra parameters specific to the exchange API endpoint
779
+ * @param {string} [params.method] the method to use, futuresPublicGetAllTickers or futuresPublicGetContractsActive
778
780
  * @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
779
781
  */
780
782
  await this.loadMarkets();
781
783
  symbols = this.marketSymbols(symbols);
782
- const response = await this.futuresPublicGetContractsActive(params);
784
+ let method = undefined;
785
+ [method, params] = this.handleOptionAndParams(params, 'fetchTickers', 'method', 'futuresPublicGetContractsActive');
786
+ let response = undefined;
787
+ if (method === 'futuresPublicGetAllTickers') {
788
+ response = await this.futuresPublicGetAllTickers(params);
789
+ }
790
+ else {
791
+ response = await this.futuresPublicGetContractsActive(params);
792
+ }
783
793
  //
784
794
  // {
785
795
  // "code": "200000",
@@ -842,7 +852,7 @@ export default class kucoinfutures extends kucoin {
842
852
  // }
843
853
  // }
844
854
  //
845
- const data = this.safeList(response, 'data', []);
855
+ const data = this.safeList(response, 'data');
846
856
  const tickers = this.parseTickers(data, symbols);
847
857
  return this.filterByArrayTickers(tickers, 'symbol', symbols);
848
858
  }
@@ -952,6 +962,20 @@ export default class kucoinfutures extends kucoin {
952
962
  'info': ticker,
953
963
  }, market);
954
964
  }
965
+ async fetchBidsAsks(symbols = undefined, params = {}) {
966
+ /**
967
+ * @method
968
+ * @name kucoinfutures#fetchBidsAsks
969
+ * @description fetches the bid and ask price and volume for multiple markets
970
+ * @param {string[]} [symbols] unified symbols of the markets to fetch the bids and asks for, all markets are returned if not assigned
971
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
972
+ * @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
973
+ */
974
+ const request = {
975
+ 'method': 'futuresPublicGetAllTickers',
976
+ };
977
+ return await this.fetchTickers(symbols, this.extend(request, params));
978
+ }
955
979
  async fetchFundingHistory(symbol = undefined, since = undefined, limit = undefined, params = {}) {
956
980
  /**
957
981
  * @method
package/js/src/latoken.js CHANGED
@@ -1544,6 +1544,7 @@ export default class latoken extends Exchange {
1544
1544
  const statuses = {
1545
1545
  'TRANSACTION_STATUS_CONFIRMED': 'ok',
1546
1546
  'TRANSACTION_STATUS_EXECUTED': 'ok',
1547
+ 'TRANSACTION_STATUS_CHECKING': 'pending',
1547
1548
  'TRANSACTION_STATUS_CANCELLED': 'canceled',
1548
1549
  };
1549
1550
  return this.safeString(statuses, status, status);
package/js/src/okx.d.ts CHANGED
@@ -16,7 +16,6 @@ export default class okx extends Exchange {
16
16
  fetchMarkets(params?: {}): Promise<Market[]>;
17
17
  parseMarket(market: Dict): Market;
18
18
  fetchMarketsByType(type: any, params?: {}): Promise<MarketInterface[]>;
19
- safeNetwork(networkId: any): string;
20
19
  fetchCurrencies(params?: {}): Promise<Currencies>;
21
20
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
22
21
  parseTicker(ticker: Dict, market?: Market): Ticker;
package/js/src/okx.js CHANGED
@@ -1041,6 +1041,7 @@ export default class okx extends Exchange {
1041
1041
  'ZEC': 'Zcash',
1042
1042
  'ZIL': 'Zilliqa',
1043
1043
  'ZKSYNC': 'ZKSYNC',
1044
+ 'OMNI': 'Omni',
1044
1045
  // 'NEON3': 'N3', // tbd
1045
1046
  // undetermined : "CELO-TOKEN", "Digital Cash", Khala
1046
1047
  // todo: uncomment below after consensus
@@ -1595,14 +1596,6 @@ export default class okx extends Exchange {
1595
1596
  const dataResponse = this.safeList(response, 'data', []);
1596
1597
  return this.parseMarkets(dataResponse);
1597
1598
  }
1598
- safeNetwork(networkId) {
1599
- const networksById = {
1600
- 'Bitcoin': 'BTC',
1601
- 'Omni': 'OMNI',
1602
- 'TRON': 'TRC20',
1603
- };
1604
- return this.safeString(networksById, networkId, networkId);
1605
- }
1606
1599
  async fetchCurrencies(params = {}) {
1607
1600
  /**
1608
1601
  * @method
@@ -1,5 +1,5 @@
1
1
  import binanceRest from '../binance.js';
2
- import type { Int, OrderSide, OrderType, Str, Strings, Trade, OrderBook, Order, Ticker, Tickers, OHLCV, Position, Balances, Num, Liquidation } from '../base/types.js';
2
+ import type { Int, OrderSide, OrderType, Str, Strings, Trade, OrderBook, Order, Ticker, Tickers, OHLCV, Position, Balances, Num, Dict, Liquidation } from '../base/types.js';
3
3
  import Client from '../base/ws/Client.js';
4
4
  export default class binance extends binanceRest {
5
5
  describe(): any;
@@ -14,6 +14,8 @@ export default class binance extends binanceRest {
14
14
  handleMyLiquidation(client: Client, message: any): void;
15
15
  watchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
16
16
  watchOrderBookForSymbols(symbols: string[], limit?: Int, params?: {}): Promise<OrderBook>;
17
+ unWatchOrderBookForSymbols(symbols: string[], params?: {}): Promise<any>;
18
+ unWatchOrderBook(symbol: string, params?: {}): Promise<any>;
17
19
  fetchOrderBookWs(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
18
20
  handleFetchOrderBook(client: Client, message: any): void;
19
21
  fetchOrderBookSnapshot(client: any, message: any, subscription: any): Promise<void>;
@@ -23,7 +25,11 @@ export default class binance extends binanceRest {
23
25
  handleOrderBook(client: Client, message: any): void;
24
26
  handleOrderBookSubscription(client: Client, message: any, subscription: any): void;
25
27
  handleSubscriptionStatus(client: Client, message: any): any;
28
+ handleUnSubscription(client: Client, subscription: Dict): void;
29
+ cleanCache(subscription: Dict): void;
26
30
  watchTradesForSymbols(symbols: string[], since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
31
+ unWatchTradesForSymbols(symbols: string[], params?: {}): Promise<any>;
32
+ unWatchTrades(symbol: string, params?: {}): Promise<any>;
27
33
  watchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
28
34
  parseWsTrade(trade: any, market?: any): Trade;
29
35
  handleTrade(client: Client, message: any): void;
@@ -35,6 +41,8 @@ export default class binance extends binanceRest {
35
41
  handleFetchOHLCV(client: Client, message: any): void;
36
42
  watchTicker(symbol: string, params?: {}): Promise<Ticker>;
37
43
  watchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
44
+ unWatchTickers(symbols?: Strings, params?: {}): Promise<any>;
45
+ unWatchTicker(symbol: string, params?: {}): Promise<any>;
38
46
  watchBidsAsks(symbols?: Strings, params?: {}): Promise<Tickers>;
39
47
  watchMultiTickerHelper(methodName: any, channelName: string, symbols?: Strings, params?: {}): Promise<any>;
40
48
  parseWsTicker(message: any, marketType: any): Ticker;