ccxt 4.2.82 → 4.2.84

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 (133) hide show
  1. package/README.md +4 -4
  2. package/dist/ccxt.browser.js +823 -220
  3. package/dist/ccxt.browser.min.js +2 -2
  4. package/dist/cjs/ccxt.js +3 -1
  5. package/dist/cjs/src/bitget.js +11 -4
  6. package/dist/cjs/src/bithumb.js +1 -0
  7. package/dist/cjs/src/bitstamp.js +42 -15
  8. package/dist/cjs/src/bybit.js +3 -3
  9. package/dist/cjs/src/coinex.js +1 -2
  10. package/dist/cjs/src/deribit.js +19 -1
  11. package/dist/cjs/src/gemini.js +2 -1
  12. package/dist/cjs/src/htx.js +5 -27
  13. package/dist/cjs/src/hyperliquid.js +5 -4
  14. package/dist/cjs/src/kucoin.js +10 -1
  15. package/dist/cjs/src/kucoinfutures.js +147 -8
  16. package/dist/cjs/src/pro/bithumb.js +388 -0
  17. package/dist/cjs/src/pro/bitmart.js +1 -1
  18. package/dist/cjs/src/pro/bybit.js +1 -1
  19. package/dist/cjs/src/pro/cex.js +18 -5
  20. package/dist/cjs/src/pro/okx.js +2 -1
  21. package/dist/cjs/src/pro/p2b.js +14 -4
  22. package/dist/cjs/src/pro/woo.js +1 -1
  23. package/js/ccxt.d.ts +4 -1
  24. package/js/ccxt.js +3 -1
  25. package/js/src/abstract/bitstamp.d.ts +1 -1
  26. package/js/src/ace.d.ts +1 -1
  27. package/js/src/alpaca.d.ts +1 -1
  28. package/js/src/ascendex.d.ts +1 -1
  29. package/js/src/bigone.d.ts +1 -1
  30. package/js/src/binance.d.ts +1 -1
  31. package/js/src/bingx.d.ts +1 -1
  32. package/js/src/bitbank.d.ts +1 -1
  33. package/js/src/bitbns.d.ts +1 -1
  34. package/js/src/bitfinex.d.ts +1 -1
  35. package/js/src/bitfinex2.d.ts +1 -1
  36. package/js/src/bitflyer.d.ts +1 -1
  37. package/js/src/bitget.d.ts +1 -1
  38. package/js/src/bitget.js +11 -4
  39. package/js/src/bithumb.d.ts +1 -1
  40. package/js/src/bithumb.js +1 -0
  41. package/js/src/bitmart.d.ts +1 -1
  42. package/js/src/bitmex.d.ts +1 -1
  43. package/js/src/bitopro.d.ts +1 -1
  44. package/js/src/bitrue.d.ts +1 -1
  45. package/js/src/bitso.d.ts +1 -1
  46. package/js/src/bitstamp.d.ts +1 -1
  47. package/js/src/bitstamp.js +42 -15
  48. package/js/src/bitteam.d.ts +1 -1
  49. package/js/src/bitvavo.d.ts +1 -1
  50. package/js/src/blockchaincom.d.ts +1 -1
  51. package/js/src/blofin.d.ts +1 -1
  52. package/js/src/btcalpha.d.ts +1 -1
  53. package/js/src/btcmarkets.d.ts +1 -1
  54. package/js/src/btcturk.d.ts +1 -1
  55. package/js/src/bybit.d.ts +1 -1
  56. package/js/src/bybit.js +3 -3
  57. package/js/src/cex.d.ts +1 -1
  58. package/js/src/coinbase.d.ts +1 -1
  59. package/js/src/coinbaseinternational.d.ts +1 -1
  60. package/js/src/coinbasepro.d.ts +1 -1
  61. package/js/src/coinex.d.ts +1 -1
  62. package/js/src/coinex.js +1 -2
  63. package/js/src/coinlist.d.ts +1 -1
  64. package/js/src/coinmate.d.ts +1 -1
  65. package/js/src/coinmetro.d.ts +1 -1
  66. package/js/src/coinone.d.ts +1 -1
  67. package/js/src/coinsph.d.ts +1 -1
  68. package/js/src/cryptocom.d.ts +1 -1
  69. package/js/src/currencycom.d.ts +1 -1
  70. package/js/src/delta.d.ts +1 -1
  71. package/js/src/deribit.d.ts +1 -1
  72. package/js/src/deribit.js +19 -1
  73. package/js/src/digifinex.d.ts +1 -1
  74. package/js/src/exmo.d.ts +1 -1
  75. package/js/src/gate.d.ts +1 -1
  76. package/js/src/gemini.d.ts +1 -1
  77. package/js/src/gemini.js +2 -1
  78. package/js/src/hitbtc.d.ts +1 -1
  79. package/js/src/hollaex.d.ts +1 -1
  80. package/js/src/htx.d.ts +1 -1
  81. package/js/src/htx.js +5 -27
  82. package/js/src/huobijp.d.ts +1 -1
  83. package/js/src/hyperliquid.d.ts +1 -1
  84. package/js/src/hyperliquid.js +5 -4
  85. package/js/src/idex.d.ts +1 -1
  86. package/js/src/independentreserve.d.ts +1 -1
  87. package/js/src/indodax.d.ts +1 -1
  88. package/js/src/kraken.d.ts +1 -1
  89. package/js/src/krakenfutures.d.ts +1 -1
  90. package/js/src/kucoin.d.ts +2 -1
  91. package/js/src/kucoin.js +11 -2
  92. package/js/src/kucoinfutures.d.ts +3 -2
  93. package/js/src/kucoinfutures.js +147 -8
  94. package/js/src/kuna.d.ts +1 -1
  95. package/js/src/latoken.d.ts +1 -1
  96. package/js/src/lbank.d.ts +1 -1
  97. package/js/src/luno.d.ts +1 -1
  98. package/js/src/lykke.d.ts +1 -1
  99. package/js/src/mercado.d.ts +1 -1
  100. package/js/src/mexc.d.ts +1 -1
  101. package/js/src/ndax.d.ts +1 -1
  102. package/js/src/novadax.d.ts +1 -1
  103. package/js/src/oceanex.d.ts +1 -1
  104. package/js/src/okcoin.d.ts +1 -1
  105. package/js/src/okx.d.ts +1 -1
  106. package/js/src/onetrading.d.ts +1 -1
  107. package/js/src/p2b.d.ts +1 -1
  108. package/js/src/phemex.d.ts +1 -1
  109. package/js/src/poloniex.d.ts +1 -1
  110. package/js/src/poloniexfutures.d.ts +1 -1
  111. package/js/src/pro/bithumb.d.ts +19 -0
  112. package/js/src/pro/bithumb.js +389 -0
  113. package/js/src/pro/bitmart.js +1 -1
  114. package/js/src/pro/bybit.js +1 -1
  115. package/js/src/pro/cex.js +18 -5
  116. package/js/src/pro/okx.js +2 -1
  117. package/js/src/pro/p2b.d.ts +2 -0
  118. package/js/src/pro/p2b.js +14 -4
  119. package/js/src/pro/woo.js +1 -1
  120. package/js/src/probit.d.ts +1 -1
  121. package/js/src/timex.d.ts +1 -1
  122. package/js/src/tokocrypto.d.ts +1 -1
  123. package/js/src/tradeogre.d.ts +1 -1
  124. package/js/src/upbit.d.ts +1 -1
  125. package/js/src/wavesexchange.d.ts +1 -1
  126. package/js/src/wazirx.d.ts +1 -1
  127. package/js/src/whitebit.d.ts +1 -1
  128. package/js/src/woo.d.ts +1 -1
  129. package/js/src/yobit.d.ts +1 -1
  130. package/js/src/zaif.d.ts +1 -1
  131. package/js/src/zonda.d.ts +1 -1
  132. package/package.json +1 -1
  133. package/skip-tests.json +17 -4
package/js/src/exmo.d.ts CHANGED
@@ -50,7 +50,7 @@ export default class exmo extends Exchange {
50
50
  fetchDepositWithdrawFees(codes?: Strings, params?: {}): Promise<any>;
51
51
  parseDepositWithdrawFee(fee: any, currency?: Currency): any;
52
52
  fetchCurrencies(params?: {}): Promise<{}>;
53
- fetchMarkets(params?: {}): Promise<any[]>;
53
+ fetchMarkets(params?: {}): Promise<Market[]>;
54
54
  fetchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
55
55
  parseOHLCV(ohlcv: any, market?: Market): OHLCV;
56
56
  parseBalance(response: any): Balances;
package/js/src/gate.d.ts CHANGED
@@ -10,7 +10,7 @@ export default class gate extends Exchange {
10
10
  convertExpireDate(date: any): string;
11
11
  createExpiredOptionMarket(symbol: string): MarketInterface;
12
12
  safeMarket(marketId?: Str, market?: Market, delimiter?: Str, marketType?: Str): MarketInterface;
13
- fetchMarkets(params?: {}): Promise<any>;
13
+ fetchMarkets(params?: {}): Promise<Market[]>;
14
14
  fetchSpotMarkets(params?: {}): Promise<any[]>;
15
15
  fetchContractMarkets(params?: {}): Promise<any[]>;
16
16
  parseContractMarket(market: any, settleId: any): {
@@ -8,7 +8,7 @@ export default class gemini extends Exchange {
8
8
  describe(): any;
9
9
  fetchCurrencies(params?: {}): Promise<{}>;
10
10
  fetchCurrenciesFromWeb(params?: {}): Promise<{}>;
11
- fetchMarkets(params?: {}): Promise<any>;
11
+ fetchMarkets(params?: {}): Promise<Market[]>;
12
12
  fetchMarketsFromWeb(params?: {}): Promise<any[]>;
13
13
  parseMarketActive(status: any): boolean;
14
14
  fetchUSDTMarkets(params?: {}): Promise<any[]>;
package/js/src/gemini.js CHANGED
@@ -251,7 +251,8 @@ export default class gemini extends Exchange {
251
251
  },
252
252
  'broad': {
253
253
  'The Gemini Exchange is currently undergoing maintenance.': OnMaintenance,
254
- 'We are investigating technical issues with the Gemini Exchange.': ExchangeNotAvailable, // We are investigating technical issues with the Gemini Exchange. Please check https://status.gemini.com/ for more information.
254
+ 'We are investigating technical issues with the Gemini Exchange.': ExchangeNotAvailable,
255
+ 'Internal Server Error': ExchangeNotAvailable,
255
256
  },
256
257
  },
257
258
  'options': {
@@ -7,7 +7,7 @@ import type { TransferEntry, Int, OrderSide, OrderType, FundingRateHistory, OHLC
7
7
  export default class hitbtc extends Exchange {
8
8
  describe(): any;
9
9
  nonce(): number;
10
- fetchMarkets(params?: {}): Promise<any[]>;
10
+ fetchMarkets(params?: {}): Promise<Market[]>;
11
11
  fetchCurrencies(params?: {}): Promise<{}>;
12
12
  safeNetwork(networkId: any): any;
13
13
  createDepositAddress(code: string, params?: {}): Promise<{
@@ -6,7 +6,7 @@ import type { Balances, Currency, Dictionary, Int, Market, Num, OHLCV, Order, Or
6
6
  */
7
7
  export default class hollaex extends Exchange {
8
8
  describe(): any;
9
- fetchMarkets(params?: {}): Promise<any[]>;
9
+ fetchMarkets(params?: {}): Promise<Market[]>;
10
10
  fetchCurrencies(params?: {}): Promise<{}>;
11
11
  fetchOrderBooks(symbols?: Strings, limit?: Int, params?: {}): Promise<Dictionary<OrderBook>>;
12
12
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
package/js/src/htx.d.ts CHANGED
@@ -46,7 +46,7 @@ export default class htx extends Exchange {
46
46
  };
47
47
  };
48
48
  costToPrecision(symbol: any, cost: any): any;
49
- fetchMarkets(params?: {}): Promise<any[]>;
49
+ fetchMarkets(params?: {}): Promise<Market[]>;
50
50
  fetchMarketsByTypeAndSubType(type: any, subType: any, params?: {}): Promise<any[]>;
51
51
  parseTicker(ticker: any, market?: Market): Ticker;
52
52
  fetchTicker(symbol: string, params?: {}): Promise<Ticker>;
package/js/src/htx.js CHANGED
@@ -2202,7 +2202,7 @@ export default class htx extends Exchange {
2202
2202
  // "ts":1639547261293
2203
2203
  // }
2204
2204
  //
2205
- // inverse swaps, linear swaps, inverse futures
2205
+ // linear swap, linear future, inverse swap, inverse future
2206
2206
  //
2207
2207
  // {
2208
2208
  // "status":"ok",
@@ -2219,37 +2219,15 @@ export default class htx extends Exchange {
2219
2219
  // "high":"0.10725",
2220
2220
  // "amount":"2340267.415144052378486261756692535687481566",
2221
2221
  // "count":882,
2222
- // "vol":"24706"
2222
+ // "vol":"24706",
2223
+ // "trade_turnover":"840726.5048", // only in linear futures
2224
+ // "business_type":"futures", // only in linear futures
2225
+ // "contract_code":"BTC-USDT-CW", // only in linear futures, instead of 'symbol'
2223
2226
  // }
2224
2227
  // ],
2225
2228
  // "ts":1637504679376
2226
2229
  // }
2227
2230
  //
2228
- // linear futures
2229
- //
2230
- // {
2231
- // "status":"ok",
2232
- // "ticks":[
2233
- // {
2234
- // "id":1640745627,
2235
- // "ts":1640745627957,
2236
- // "ask":[48079.1,20],
2237
- // "bid":[47713.8,125],
2238
- // "business_type":"futures",
2239
- // "contract_code":"BTC-USDT-CW",
2240
- // "open":"49011.8",
2241
- // "close":"47934",
2242
- // "low":"47292.3",
2243
- // "high":"49011.8",
2244
- // "amount":"17.398",
2245
- // "count":1515,
2246
- // "vol":"17398",
2247
- // "trade_turnover":"840726.5048"
2248
- // }
2249
- // ],
2250
- // "ts":1640745627988
2251
- // }
2252
- //
2253
2231
  const tickers = this.safeValue2(response, 'data', 'ticks', []);
2254
2232
  const timestamp = this.safeInteger(response, 'ts');
2255
2233
  const result = {};
@@ -27,7 +27,7 @@ export default class huobijp extends Exchange {
27
27
  };
28
28
  };
29
29
  costToPrecision(symbol: any, cost: any): any;
30
- fetchMarkets(params?: {}): Promise<any[]>;
30
+ fetchMarkets(params?: {}): Promise<Market[]>;
31
31
  parseTicker(ticker: any, market?: Market): Ticker;
32
32
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
33
33
  fetchTicker(symbol: string, params?: {}): Promise<Ticker>;
@@ -8,7 +8,7 @@ export default class hyperliquid extends Exchange {
8
8
  describe(): any;
9
9
  setSandboxMode(enabled: any): void;
10
10
  fetchCurrencies(params?: {}): Promise<{}>;
11
- fetchMarkets(params?: {}): Promise<import("./base/types.js").MarketInterface[]>;
11
+ fetchMarkets(params?: {}): Promise<Market[]>;
12
12
  parseMarket(market: any): Market;
13
13
  fetchBalance(params?: {}): Promise<Balances>;
14
14
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
@@ -1785,7 +1785,7 @@ export default class hyperliquid extends Exchange {
1785
1785
  throw new ArgumentsRequired(this.id + ' setMarginMode() requires a leverage parameter');
1786
1786
  }
1787
1787
  const asset = this.parseToInt(market['baseId']);
1788
- const isCross = (marginMode === 'isolated');
1788
+ const isCross = (marginMode === 'cross');
1789
1789
  const nonce = this.milliseconds();
1790
1790
  params = this.omit(params, ['leverage']);
1791
1791
  const updateAction = {
@@ -1801,9 +1801,10 @@ export default class hyperliquid extends Exchange {
1801
1801
  vaultAddress = vaultAddress.replace('0x', '');
1802
1802
  }
1803
1803
  }
1804
- const signature = this.signL1Action(updateAction, nonce, vaultAddress);
1804
+ const extendedAction = this.extend(updateAction, params);
1805
+ const signature = this.signL1Action(extendedAction, nonce, vaultAddress);
1805
1806
  const request = {
1806
- 'action': updateAction,
1807
+ 'action': extendedAction,
1807
1808
  'nonce': nonce,
1808
1809
  'signature': signature,
1809
1810
  // 'vaultAddress': vaultAddress,
@@ -1811,7 +1812,7 @@ export default class hyperliquid extends Exchange {
1811
1812
  if (vaultAddress !== undefined) {
1812
1813
  request['vaultAddress'] = vaultAddress;
1813
1814
  }
1814
- const response = await this.privatePostExchange(this.extend(request, params));
1815
+ const response = await this.privatePostExchange(request);
1815
1816
  //
1816
1817
  // {
1817
1818
  // 'response': {
package/js/src/idex.d.ts CHANGED
@@ -7,7 +7,7 @@ import type { Balances, Currency, Int, Market, Num, OHLCV, Order, OrderBook, Ord
7
7
  export default class idex extends Exchange {
8
8
  describe(): any;
9
9
  priceToPrecision(symbol: any, price: any): any;
10
- fetchMarkets(params?: {}): Promise<any[]>;
10
+ fetchMarkets(params?: {}): Promise<Market[]>;
11
11
  fetchTicker(symbol: string, params?: {}): Promise<Ticker>;
12
12
  fetchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
13
13
  parseTicker(ticker: any, market?: Market): Ticker;
@@ -6,7 +6,7 @@ import type { Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide,
6
6
  */
7
7
  export default class independentreserve extends Exchange {
8
8
  describe(): any;
9
- fetchMarkets(params?: {}): Promise<any[]>;
9
+ fetchMarkets(params?: {}): Promise<Market[]>;
10
10
  parseBalance(response: any): Balances;
11
11
  fetchBalance(params?: {}): Promise<Balances>;
12
12
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
@@ -8,7 +8,7 @@ export default class indodax extends Exchange {
8
8
  describe(): any;
9
9
  nonce(): number;
10
10
  fetchTime(params?: {}): Promise<number>;
11
- fetchMarkets(params?: {}): Promise<any[]>;
11
+ fetchMarkets(params?: {}): Promise<Market[]>;
12
12
  parseBalance(response: any): Balances;
13
13
  fetchBalance(params?: {}): Promise<Balances>;
14
14
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
@@ -8,7 +8,7 @@ import type { IndexType, Int, OrderSide, OrderType, OHLCV, Trade, Order, Balance
8
8
  export default class kraken extends Exchange {
9
9
  describe(): any;
10
10
  feeToPrecision(symbol: any, fee: any): any;
11
- fetchMarkets(params?: {}): Promise<any[]>;
11
+ fetchMarkets(params?: {}): Promise<Market[]>;
12
12
  safeCurrency(currencyId: any, currency?: Currency): import("./base/types.js").CurrencyInterface;
13
13
  appendInactiveMarkets(result: any): any;
14
14
  fetchCurrencies(params?: {}): Promise<{}>;
@@ -6,7 +6,7 @@ import type { TransferEntry, Int, OrderSide, OrderType, OHLCV, Trade, FundingRat
6
6
  */
7
7
  export default class krakenfutures extends Exchange {
8
8
  describe(): any;
9
- fetchMarkets(params?: {}): Promise<any[]>;
9
+ fetchMarkets(params?: {}): Promise<Market[]>;
10
10
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
11
11
  fetchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
12
12
  parseTicker(ticker: any, market?: Market): Ticker;
@@ -15,7 +15,7 @@ export default class kucoin extends Exchange {
15
15
  url: any;
16
16
  info: any;
17
17
  }>;
18
- fetchMarkets(params?: {}): Promise<any[]>;
18
+ fetchMarkets(params?: {}): Promise<Market[]>;
19
19
  fetchCurrencies(params?: {}): Promise<{}>;
20
20
  fetchAccounts(params?: {}): Promise<Account[]>;
21
21
  fetchTransactionFee(code: string, params?: {}): Promise<{
@@ -71,6 +71,7 @@ export default class kucoin extends Exchange {
71
71
  createMarketBuyOrderWithCost(symbol: string, cost: number, params?: {}): Promise<Order>;
72
72
  createMarketSellOrderWithCost(symbol: string, cost: number, params?: {}): Promise<Order>;
73
73
  createOrders(orders: OrderRequest[], params?: {}): Promise<Order[]>;
74
+ marketOrderAmountToPrecision(symbol: string, amount: any): any;
74
75
  createOrderRequest(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: Num, params?: {}): any;
75
76
  editOrder(id: string, symbol: string, type: OrderType, side: OrderSide, amount?: Num, price?: Num, params?: {}): Promise<Order>;
76
77
  cancelOrder(id: string, symbol?: Str, params?: {}): Promise<any>;
package/js/src/kucoin.js CHANGED
@@ -8,7 +8,7 @@
8
8
  import Exchange from './abstract/kucoin.js';
9
9
  import { ExchangeError, ExchangeNotAvailable, InsufficientFunds, OrderNotFound, InvalidOrder, AccountSuspended, InvalidNonce, NotSupported, BadRequest, AuthenticationError, BadSymbol, RateLimitExceeded, PermissionDenied, InvalidAddress, ArgumentsRequired } from './base/errors.js';
10
10
  import { Precise } from './base/Precise.js';
11
- import { TICK_SIZE } from './base/functions/number.js';
11
+ import { TICK_SIZE, TRUNCATE } from './base/functions/number.js';
12
12
  import { sha256 } from './static_dependencies/noble-hashes/sha256.js';
13
13
  // ---------------------------------------------------------------------------
14
14
  /**
@@ -426,6 +426,7 @@ export default class kucoin extends Exchange {
426
426
  'Order size below the minimum requirement.': InvalidOrder,
427
427
  'The withdrawal amount is below the minimum requirement.': ExchangeError,
428
428
  'Unsuccessful! Exceeded the max. funds out-transfer limit': InsufficientFunds,
429
+ 'The amount increment is invalid.': BadRequest,
429
430
  '400': BadRequest,
430
431
  '401': AuthenticationError,
431
432
  '403': NotSupported,
@@ -2163,6 +2164,14 @@ export default class kucoin extends Exchange {
2163
2164
  data = this.safeList(data, 'data', []);
2164
2165
  return this.parseOrders(data);
2165
2166
  }
2167
+ marketOrderAmountToPrecision(symbol, amount) {
2168
+ const market = this.market(symbol);
2169
+ const result = this.decimalToPrecision(amount, TRUNCATE, market['info']['quoteIncrement'], this.precisionMode, this.paddingMode);
2170
+ if (result === '0') {
2171
+ throw new InvalidOrder(this.id + ' amount of ' + market['symbol'] + ' must be greater than minimum amount precision of ' + this.numberToString(market['precision']['amount']));
2172
+ }
2173
+ return result;
2174
+ }
2166
2175
  createOrderRequest(symbol, type, side, amount, price = undefined, params = {}) {
2167
2176
  const market = this.market(symbol);
2168
2177
  // required param, cannot be used twice
@@ -2183,7 +2192,7 @@ export default class kucoin extends Exchange {
2183
2192
  if (quoteAmount !== undefined) {
2184
2193
  params = this.omit(params, ['cost', 'funds']);
2185
2194
  // kucoin uses base precision even for quote values
2186
- costString = this.amountToPrecision(symbol, quoteAmount);
2195
+ costString = this.marketOrderAmountToPrecision(symbol, quoteAmount);
2187
2196
  request['funds'] = costString;
2188
2197
  }
2189
2198
  else {
@@ -1,5 +1,5 @@
1
1
  import kucoin from './abstract/kucoinfutures.js';
2
- import type { TransferEntry, Int, OrderSide, OrderType, OHLCV, Order, Trade, OrderRequest, FundingHistory, Balances, Str, Ticker, OrderBook, Transaction, Strings, Market, Currency, Num } from './base/types.js';
2
+ import type { TransferEntry, Int, OrderSide, OrderType, OHLCV, Order, Trade, OrderRequest, FundingHistory, Balances, Str, Ticker, Tickers, OrderBook, Transaction, Strings, Market, Currency, Num } from './base/types.js';
3
3
  /**
4
4
  * @class kucoinfutures
5
5
  * @augments Exchange
@@ -13,7 +13,7 @@ export default class kucoinfutures extends kucoin {
13
13
  url: any;
14
14
  info: any;
15
15
  }>;
16
- fetchMarkets(params?: {}): Promise<any[]>;
16
+ fetchMarkets(params?: {}): Promise<Market[]>;
17
17
  fetchTime(params?: {}): Promise<number>;
18
18
  fetchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
19
19
  parseOHLCV(ohlcv: any, market?: Market): OHLCV;
@@ -26,6 +26,7 @@ export default class kucoinfutures extends kucoin {
26
26
  }>;
27
27
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
28
28
  fetchTicker(symbol: string, params?: {}): Promise<Ticker>;
29
+ fetchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
29
30
  parseTicker(ticker: any, market?: Market): Ticker;
30
31
  fetchFundingHistory(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<FundingHistory[]>;
31
32
  fetchPosition(symbol: string, params?: {}): Promise<import("./base/types.js").Position>;
@@ -85,7 +85,7 @@ export default class kucoinfutures extends kucoin {
85
85
  'fetchPremiumIndexOHLCV': false,
86
86
  'fetchStatus': true,
87
87
  'fetchTicker': true,
88
- 'fetchTickers': false,
88
+ 'fetchTickers': true,
89
89
  'fetchTime': true,
90
90
  'fetchTrades': true,
91
91
  'fetchTransactionFee': false,
@@ -756,6 +756,85 @@ export default class kucoinfutures extends kucoin {
756
756
  //
757
757
  return this.parseTicker(response['data'], market);
758
758
  }
759
+ async fetchTickers(symbols = undefined, params = {}) {
760
+ /**
761
+ * @method
762
+ * @name kucoinfutures#fetchTickers
763
+ * @description fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
764
+ * @see https://www.kucoin.com/docs/rest/futures-trading/market-data/get-symbols-list
765
+ * @param {string[]} [symbols] unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
766
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
767
+ * @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
768
+ */
769
+ await this.loadMarkets();
770
+ symbols = this.marketSymbols(symbols);
771
+ const response = await this.futuresPublicGetContractsActive(params);
772
+ //
773
+ // {
774
+ // "code": "200000",
775
+ // "data": {
776
+ // "symbol": "ETHUSDTM",
777
+ // "rootSymbol": "USDT",
778
+ // "type": "FFWCSX",
779
+ // "firstOpenDate": 1591086000000,
780
+ // "expireDate": null,
781
+ // "settleDate": null,
782
+ // "baseCurrency": "ETH",
783
+ // "quoteCurrency": "USDT",
784
+ // "settleCurrency": "USDT",
785
+ // "maxOrderQty": 1000000,
786
+ // "maxPrice": 1000000.0000000000,
787
+ // "lotSize": 1,
788
+ // "tickSize": 0.05,
789
+ // "indexPriceTickSize": 0.01,
790
+ // "multiplier": 0.01,
791
+ // "initialMargin": 0.01,
792
+ // "maintainMargin": 0.005,
793
+ // "maxRiskLimit": 1000000,
794
+ // "minRiskLimit": 1000000,
795
+ // "riskStep": 500000,
796
+ // "makerFeeRate": 0.00020,
797
+ // "takerFeeRate": 0.00060,
798
+ // "takerFixFee": 0.0000000000,
799
+ // "makerFixFee": 0.0000000000,
800
+ // "settlementFee": null,
801
+ // "isDeleverage": true,
802
+ // "isQuanto": true,
803
+ // "isInverse": false,
804
+ // "markMethod": "FairPrice",
805
+ // "fairMethod": "FundingRate",
806
+ // "fundingBaseSymbol": ".ETHINT8H",
807
+ // "fundingQuoteSymbol": ".USDTINT8H",
808
+ // "fundingRateSymbol": ".ETHUSDTMFPI8H",
809
+ // "indexSymbol": ".KETHUSDT",
810
+ // "settlementSymbol": "",
811
+ // "status": "Open",
812
+ // "fundingFeeRate": 0.000535,
813
+ // "predictedFundingFeeRate": 0.002197,
814
+ // "openInterest": "8724443",
815
+ // "turnoverOf24h": 341156641.03354263,
816
+ // "volumeOf24h": 74833.54000000,
817
+ // "markPrice": 4534.07,
818
+ // "indexPrice":4531.92,
819
+ // "lastTradePrice": 4545.4500000000,
820
+ // "nextFundingRateTime": 25481884,
821
+ // "maxLeverage": 100,
822
+ // "sourceExchanges": [ "huobi", "Okex", "Binance", "Kucoin", "Poloniex", "Hitbtc" ],
823
+ // "premiumsSymbol1M": ".ETHUSDTMPI",
824
+ // "premiumsSymbol8H": ".ETHUSDTMPI8H",
825
+ // "fundingBaseSymbol1M": ".ETHINT",
826
+ // "fundingQuoteSymbol1M": ".USDTINT",
827
+ // "lowPrice": 4456.90,
828
+ // "highPrice": 4674.25,
829
+ // "priceChgPct": 0.0046,
830
+ // "priceChg": 21.15
831
+ // }
832
+ // }
833
+ //
834
+ const data = this.safeList(response, 'data', []);
835
+ const tickers = this.parseTickers(data, symbols);
836
+ return this.filterByArrayTickers(tickers, 'symbol', symbols);
837
+ }
759
838
  parseTicker(ticker, market = undefined) {
760
839
  //
761
840
  // {
@@ -775,16 +854,76 @@ export default class kucoinfutures extends kucoin {
775
854
  // }
776
855
  // }
777
856
  //
778
- const last = this.safeString(ticker, 'price');
857
+ // from fetchTickers
858
+ //
859
+ // {
860
+ // symbol: "XBTUSDTM",
861
+ // rootSymbol: "USDT",
862
+ // type: "FFWCSX",
863
+ // firstOpenDate: 1585555200000,
864
+ // expireDate: null,
865
+ // settleDate: null,
866
+ // baseCurrency: "XBT",
867
+ // quoteCurrency: "USDT",
868
+ // settleCurrency: "USDT",
869
+ // maxOrderQty: 1000000,
870
+ // maxPrice: 1000000,
871
+ // lotSize: 1,
872
+ // tickSize: 0.1,
873
+ // indexPriceTickSize: 0.01,
874
+ // multiplier: 0.001,
875
+ // initialMargin: 0.008,
876
+ // maintainMargin: 0.004,
877
+ // maxRiskLimit: 100000,
878
+ // minRiskLimit: 100000,
879
+ // riskStep: 50000,
880
+ // makerFeeRate: 0.0002,
881
+ // takerFeeRate: 0.0006,
882
+ // takerFixFee: 0,
883
+ // makerFixFee: 0,
884
+ // settlementFee: null,
885
+ // isDeleverage: true,
886
+ // isQuanto: true,
887
+ // isInverse: false,
888
+ // markMethod: "FairPrice",
889
+ // fairMethod: "FundingRate",
890
+ // fundingBaseSymbol: ".XBTINT8H",
891
+ // fundingQuoteSymbol: ".USDTINT8H",
892
+ // fundingRateSymbol: ".XBTUSDTMFPI8H",
893
+ // indexSymbol: ".KXBTUSDT",
894
+ // settlementSymbol: "",
895
+ // status: "Open",
896
+ // fundingFeeRate: 0.000297,
897
+ // predictedFundingFeeRate: 0.000327,
898
+ // fundingRateGranularity: 28800000,
899
+ // openInterest: "8033200",
900
+ // turnoverOf24h: 659795309.2524643,
901
+ // volumeOf24h: 9998.54,
902
+ // markPrice: 67193.51,
903
+ // indexPrice: 67184.81,
904
+ // lastTradePrice: 67191.8,
905
+ // nextFundingRateTime: 20022985,
906
+ // maxLeverage: 125,
907
+ // premiumsSymbol1M: ".XBTUSDTMPI",
908
+ // premiumsSymbol8H: ".XBTUSDTMPI8H",
909
+ // fundingBaseSymbol1M: ".XBTINT",
910
+ // fundingQuoteSymbol1M: ".USDTINT",
911
+ // lowPrice: 64041.6,
912
+ // highPrice: 67737.3,
913
+ // priceChgPct: 0.0447,
914
+ // priceChg: 2878.7
915
+ // }
916
+ //
779
917
  const marketId = this.safeString(ticker, 'symbol');
780
918
  market = this.safeMarket(marketId, market, '-');
919
+ const last = this.safeString2(ticker, 'price', 'lastTradePrice');
781
920
  const timestamp = this.safeIntegerProduct(ticker, 'ts', 0.000001);
782
921
  return this.safeTicker({
783
922
  'symbol': market['symbol'],
784
923
  'timestamp': timestamp,
785
924
  'datetime': this.iso8601(timestamp),
786
- 'high': undefined,
787
- 'low': undefined,
925
+ 'high': this.safeString(ticker, 'highPrice'),
926
+ 'low': this.safeString(ticker, 'lowPrice'),
788
927
  'bid': this.safeString(ticker, 'bestBidPrice'),
789
928
  'bidVolume': this.safeString(ticker, 'bestBidSize'),
790
929
  'ask': this.safeString(ticker, 'bestAskPrice'),
@@ -794,11 +933,11 @@ export default class kucoinfutures extends kucoin {
794
933
  'close': last,
795
934
  'last': last,
796
935
  'previousClose': undefined,
797
- 'change': undefined,
798
- 'percentage': undefined,
936
+ 'change': this.safeString(ticker, 'priceChg'),
937
+ 'percentage': this.safeString(ticker, 'priceChgPct'),
799
938
  'average': undefined,
800
- 'baseVolume': undefined,
801
- 'quoteVolume': undefined,
939
+ 'baseVolume': this.safeString(ticker, 'volumeOf24h'),
940
+ 'quoteVolume': this.safeString(ticker, 'turnoverOf24h'),
802
941
  'info': ticker,
803
942
  }, market);
804
943
  }
package/js/src/kuna.d.ts CHANGED
@@ -34,7 +34,7 @@ export default class kuna extends Exchange {
34
34
  };
35
35
  networks: {};
36
36
  };
37
- fetchMarkets(params?: {}): Promise<any[]>;
37
+ fetchMarkets(params?: {}): Promise<Market[]>;
38
38
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
39
39
  parseTicker(ticker: any, market?: Market): Ticker;
40
40
  fetchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
@@ -8,7 +8,7 @@ export default class latoken extends Exchange {
8
8
  describe(): any;
9
9
  nonce(): number;
10
10
  fetchTime(params?: {}): Promise<number>;
11
- fetchMarkets(params?: {}): Promise<any[]>;
11
+ fetchMarkets(params?: {}): Promise<Market[]>;
12
12
  fetchCurrenciesFromCache(params?: {}): Promise<any>;
13
13
  fetchCurrencies(params?: {}): Promise<{}>;
14
14
  fetchBalance(params?: {}): Promise<Balances>;
package/js/src/lbank.d.ts CHANGED
@@ -7,7 +7,7 @@ import type { Balances, Currency, Int, Market, Num, OHLCV, Order, OrderBook, Ord
7
7
  export default class lbank extends Exchange {
8
8
  describe(): any;
9
9
  fetchTime(params?: {}): Promise<number>;
10
- fetchMarkets(params?: {}): Promise<any>;
10
+ fetchMarkets(params?: {}): Promise<Market[]>;
11
11
  fetchSpotMarkets(params?: {}): Promise<any[]>;
12
12
  fetchSwapMarkets(params?: {}): Promise<any[]>;
13
13
  parseTicker(ticker: any, market?: Market): Ticker;
package/js/src/luno.d.ts CHANGED
@@ -6,7 +6,7 @@ import type { Balances, Currency, Int, Market, Order, OrderBook, OrderSide, Orde
6
6
  */
7
7
  export default class luno extends Exchange {
8
8
  describe(): any;
9
- fetchMarkets(params?: {}): Promise<any[]>;
9
+ fetchMarkets(params?: {}): Promise<Market[]>;
10
10
  fetchAccounts(params?: {}): Promise<Account[]>;
11
11
  parseBalance(response: any): Balances;
12
12
  fetchBalance(params?: {}): Promise<Balances>;
package/js/src/lykke.d.ts CHANGED
@@ -7,7 +7,7 @@ import type { IndexType, Balances, Currency, Int, Market, Order, OrderBook, Orde
7
7
  export default class lykke extends Exchange {
8
8
  describe(): any;
9
9
  fetchCurrencies(params?: {}): Promise<{}>;
10
- fetchMarkets(params?: {}): Promise<any[]>;
10
+ fetchMarkets(params?: {}): Promise<Market[]>;
11
11
  parseTicker(ticker: any, market?: Market): Ticker;
12
12
  fetchTicker(symbol: string, params?: {}): Promise<Ticker>;
13
13
  fetchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
@@ -6,7 +6,7 @@ import type { Balances, Currency, Int, Market, Num, OHLCV, Order, OrderBook, Ord
6
6
  */
7
7
  export default class mercado extends Exchange {
8
8
  describe(): any;
9
- fetchMarkets(params?: {}): Promise<any[]>;
9
+ fetchMarkets(params?: {}): Promise<Market[]>;
10
10
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
11
11
  parseTicker(ticker: any, market?: Market): Ticker;
12
12
  fetchTicker(symbol: string, params?: {}): Promise<Ticker>;
package/js/src/mexc.d.ts CHANGED
@@ -15,7 +15,7 @@ export default class mexc extends Exchange {
15
15
  }>;
16
16
  fetchTime(params?: {}): Promise<number>;
17
17
  fetchCurrencies(params?: {}): Promise<{}>;
18
- fetchMarkets(params?: {}): Promise<any>;
18
+ fetchMarkets(params?: {}): Promise<Market[]>;
19
19
  fetchSpotMarkets(params?: {}): Promise<any[]>;
20
20
  fetchSwapMarkets(params?: {}): Promise<any[]>;
21
21
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
package/js/src/ndax.d.ts CHANGED
@@ -8,7 +8,7 @@ export default class ndax extends Exchange {
8
8
  describe(): any;
9
9
  signIn(params?: {}): Promise<any>;
10
10
  fetchCurrencies(params?: {}): Promise<{}>;
11
- fetchMarkets(params?: {}): Promise<import("./base/types.js").MarketInterface[]>;
11
+ fetchMarkets(params?: {}): Promise<Market[]>;
12
12
  parseMarket(market: any): Market;
13
13
  parseOrderBook(orderbook: any, symbol: any, timestamp?: any, bidsKey?: string, asksKey?: string, priceKey?: IndexType, amountKey?: IndexType, countOrIdKey?: IndexType): OrderBook;
14
14
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
@@ -7,7 +7,7 @@ import type { TransferEntry, Balances, Currency, Int, Market, OHLCV, Order, Orde
7
7
  export default class novadax extends Exchange {
8
8
  describe(): any;
9
9
  fetchTime(params?: {}): Promise<number>;
10
- fetchMarkets(params?: {}): Promise<import("./base/types.js").MarketInterface[]>;
10
+ fetchMarkets(params?: {}): Promise<Market[]>;
11
11
  parseMarket(market: any): Market;
12
12
  parseTicker(ticker: any, market?: Market): Ticker;
13
13
  fetchTicker(symbol: string, params?: {}): Promise<Ticker>;
@@ -6,7 +6,7 @@ import type { Balances, Dictionary, Int, Market, Num, OHLCV, Order, OrderBook, O
6
6
  */
7
7
  export default class oceanex extends Exchange {
8
8
  describe(): any;
9
- fetchMarkets(params?: {}): Promise<import("./base/types.js").MarketInterface[]>;
9
+ fetchMarkets(params?: {}): Promise<Market[]>;
10
10
  parseMarket(market: any): Market;
11
11
  fetchTicker(symbol: string, params?: {}): Promise<Ticker>;
12
12
  fetchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
@@ -7,7 +7,7 @@ import type { TransferEntry, Balances, Currency, Int, Market, OHLCV, Order, Orde
7
7
  export default class okcoin extends Exchange {
8
8
  describe(): any;
9
9
  fetchTime(params?: {}): Promise<number>;
10
- fetchMarkets(params?: {}): Promise<import("./base/types.js").MarketInterface[]>;
10
+ fetchMarkets(params?: {}): Promise<Market[]>;
11
11
  parseMarket(market: any): Market;
12
12
  safeNetwork(networkId: any): string;
13
13
  fetchCurrencies(params?: {}): Promise<{}>;
package/js/src/okx.d.ts CHANGED
@@ -20,7 +20,7 @@ export default class okx extends Exchange {
20
20
  }>;
21
21
  fetchTime(params?: {}): Promise<number>;
22
22
  fetchAccounts(params?: {}): Promise<Account[]>;
23
- fetchMarkets(params?: {}): Promise<any[]>;
23
+ fetchMarkets(params?: {}): Promise<Market[]>;
24
24
  parseMarket(market: any): Market;
25
25
  fetchMarketsByType(type: any, params?: {}): Promise<MarketInterface[]>;
26
26
  safeNetwork(networkId: any): string;
@@ -8,7 +8,7 @@ export default class onetrading extends Exchange {
8
8
  describe(): any;
9
9
  fetchTime(params?: {}): Promise<number>;
10
10
  fetchCurrencies(params?: {}): Promise<{}>;
11
- fetchMarkets(params?: {}): Promise<import("./base/types.js").MarketInterface[]>;
11
+ fetchMarkets(params?: {}): Promise<Market[]>;
12
12
  parseMarket(market: any): Market;
13
13
  fetchTradingFees(params?: {}): Promise<any>;
14
14
  fetchPublicTradingFees(params?: {}): Promise<{}>;