ccxt 4.2.81 → 4.2.83

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 (131) hide show
  1. package/CHANGELOG.md +90 -0
  2. package/README.md +4 -4
  3. package/dist/ccxt.browser.js +1085 -188
  4. package/dist/ccxt.browser.min.js +2 -2
  5. package/dist/cjs/ccxt.js +3 -1
  6. package/dist/cjs/src/bitget.js +1 -0
  7. package/dist/cjs/src/bithumb.js +1 -0
  8. package/dist/cjs/src/bitstamp.js +42 -15
  9. package/dist/cjs/src/delta.js +147 -0
  10. package/dist/cjs/src/deribit.js +20 -2
  11. package/dist/cjs/src/gemini.js +2 -1
  12. package/dist/cjs/src/hyperliquid.js +9 -8
  13. package/dist/cjs/src/kucoinfutures.js +147 -8
  14. package/dist/cjs/src/okx.js +139 -0
  15. package/dist/cjs/src/pro/bithumb.js +388 -0
  16. package/dist/cjs/src/pro/bitmart.js +1 -1
  17. package/dist/cjs/src/pro/bybit.js +1 -1
  18. package/dist/cjs/src/pro/cex.js +18 -5
  19. package/dist/cjs/src/pro/okx.js +2 -1
  20. package/dist/cjs/src/pro/p2b.js +14 -4
  21. package/dist/cjs/src/pro/woo.js +1 -1
  22. package/js/ccxt.d.ts +4 -1
  23. package/js/ccxt.js +3 -1
  24. package/js/src/abstract/bitstamp.d.ts +1 -1
  25. package/js/src/ace.d.ts +1 -1
  26. package/js/src/alpaca.d.ts +1 -1
  27. package/js/src/ascendex.d.ts +1 -1
  28. package/js/src/bigone.d.ts +1 -1
  29. package/js/src/binance.d.ts +1 -1
  30. package/js/src/bingx.d.ts +1 -1
  31. package/js/src/bitbank.d.ts +1 -1
  32. package/js/src/bitbns.d.ts +1 -1
  33. package/js/src/bitfinex.d.ts +1 -1
  34. package/js/src/bitfinex2.d.ts +1 -1
  35. package/js/src/bitflyer.d.ts +1 -1
  36. package/js/src/bitget.d.ts +1 -1
  37. package/js/src/bitget.js +1 -0
  38. package/js/src/bithumb.d.ts +1 -1
  39. package/js/src/bithumb.js +1 -0
  40. package/js/src/bitmart.d.ts +1 -1
  41. package/js/src/bitmex.d.ts +1 -1
  42. package/js/src/bitopro.d.ts +1 -1
  43. package/js/src/bitrue.d.ts +1 -1
  44. package/js/src/bitso.d.ts +1 -1
  45. package/js/src/bitstamp.d.ts +1 -1
  46. package/js/src/bitstamp.js +42 -15
  47. package/js/src/bitteam.d.ts +1 -1
  48. package/js/src/bitvavo.d.ts +1 -1
  49. package/js/src/blockchaincom.d.ts +1 -1
  50. package/js/src/blofin.d.ts +1 -1
  51. package/js/src/btcalpha.d.ts +1 -1
  52. package/js/src/btcmarkets.d.ts +1 -1
  53. package/js/src/btcturk.d.ts +1 -1
  54. package/js/src/bybit.d.ts +1 -1
  55. package/js/src/cex.d.ts +1 -1
  56. package/js/src/coinbase.d.ts +1 -1
  57. package/js/src/coinbaseinternational.d.ts +1 -1
  58. package/js/src/coinbasepro.d.ts +1 -1
  59. package/js/src/coinex.d.ts +1 -1
  60. package/js/src/coinlist.d.ts +1 -1
  61. package/js/src/coinmate.d.ts +1 -1
  62. package/js/src/coinmetro.d.ts +1 -1
  63. package/js/src/coinone.d.ts +1 -1
  64. package/js/src/coinsph.d.ts +1 -1
  65. package/js/src/cryptocom.d.ts +1 -1
  66. package/js/src/currencycom.d.ts +1 -1
  67. package/js/src/delta.d.ts +22 -2
  68. package/js/src/delta.js +147 -0
  69. package/js/src/deribit.d.ts +2 -2
  70. package/js/src/deribit.js +20 -2
  71. package/js/src/digifinex.d.ts +1 -1
  72. package/js/src/exmo.d.ts +1 -1
  73. package/js/src/gate.d.ts +1 -1
  74. package/js/src/gemini.d.ts +1 -1
  75. package/js/src/gemini.js +2 -1
  76. package/js/src/hitbtc.d.ts +1 -1
  77. package/js/src/hollaex.d.ts +1 -1
  78. package/js/src/htx.d.ts +1 -1
  79. package/js/src/huobijp.d.ts +1 -1
  80. package/js/src/hyperliquid.d.ts +1 -1
  81. package/js/src/hyperliquid.js +9 -8
  82. package/js/src/idex.d.ts +1 -1
  83. package/js/src/independentreserve.d.ts +1 -1
  84. package/js/src/indodax.d.ts +1 -1
  85. package/js/src/kraken.d.ts +1 -1
  86. package/js/src/krakenfutures.d.ts +1 -1
  87. package/js/src/kucoin.d.ts +1 -1
  88. package/js/src/kucoinfutures.d.ts +3 -2
  89. package/js/src/kucoinfutures.js +147 -8
  90. package/js/src/kuna.d.ts +1 -1
  91. package/js/src/latoken.d.ts +1 -1
  92. package/js/src/lbank.d.ts +1 -1
  93. package/js/src/luno.d.ts +1 -1
  94. package/js/src/lykke.d.ts +1 -1
  95. package/js/src/mercado.d.ts +1 -1
  96. package/js/src/mexc.d.ts +1 -1
  97. package/js/src/ndax.d.ts +1 -1
  98. package/js/src/novadax.d.ts +1 -1
  99. package/js/src/oceanex.d.ts +1 -1
  100. package/js/src/okcoin.d.ts +1 -1
  101. package/js/src/okx.d.ts +23 -2
  102. package/js/src/okx.js +139 -0
  103. package/js/src/onetrading.d.ts +1 -1
  104. package/js/src/p2b.d.ts +1 -1
  105. package/js/src/phemex.d.ts +1 -1
  106. package/js/src/poloniex.d.ts +1 -1
  107. package/js/src/poloniexfutures.d.ts +1 -1
  108. package/js/src/pro/bithumb.d.ts +19 -0
  109. package/js/src/pro/bithumb.js +389 -0
  110. package/js/src/pro/bitmart.js +1 -1
  111. package/js/src/pro/bybit.js +1 -1
  112. package/js/src/pro/cex.js +18 -5
  113. package/js/src/pro/okx.js +2 -1
  114. package/js/src/pro/p2b.d.ts +2 -0
  115. package/js/src/pro/p2b.js +14 -4
  116. package/js/src/pro/woo.js +1 -1
  117. package/js/src/probit.d.ts +1 -1
  118. package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +1 -1
  119. package/js/src/timex.d.ts +1 -1
  120. package/js/src/tokocrypto.d.ts +1 -1
  121. package/js/src/tradeogre.d.ts +1 -1
  122. package/js/src/upbit.d.ts +1 -1
  123. package/js/src/wavesexchange.d.ts +1 -1
  124. package/js/src/wazirx.d.ts +1 -1
  125. package/js/src/whitebit.d.ts +1 -1
  126. package/js/src/woo.d.ts +1 -1
  127. package/js/src/yobit.d.ts +1 -1
  128. package/js/src/zaif.d.ts +1 -1
  129. package/js/src/zonda.d.ts +1 -1
  130. package/package.json +1 -1
  131. package/skip-tests.json +17 -4
@@ -50,6 +50,7 @@ class p2b extends p2b$1 {
50
50
  'watchTickers': {
51
51
  'name': 'state', // or 'price'
52
52
  },
53
+ 'tickerSubs': this.createSafeDictionary(),
53
54
  },
54
55
  'streaming': {
55
56
  'ping': this.ping,
@@ -120,13 +121,14 @@ class p2b extends p2b$1 {
120
121
  * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
121
122
  */
122
123
  await this.loadMarkets();
123
- const watchTickerOptions = this.safeValue(this.options, 'watchTicker');
124
+ const watchTickerOptions = this.safeDict(this.options, 'watchTicker');
124
125
  let name = this.safeString(watchTickerOptions, 'name', 'state'); // or price
125
126
  [name, params] = this.handleOptionAndParams(params, 'method', 'name', name);
126
127
  const market = this.market(symbol);
127
- const request = [
128
- market['id'],
129
- ];
128
+ symbol = market['symbol'];
129
+ this.options['tickerSubs'][market['id']] = true; // we need to re-subscribe to all tickers upon watching a new ticker
130
+ const tickerSubs = this.options['tickerSubs'];
131
+ const request = Object.keys(tickerSubs);
130
132
  const messageHash = name + '::' + market['symbol'];
131
133
  return await this.subscribe(name + '.subscribe', messageHash, request, params);
132
134
  }
@@ -429,6 +431,14 @@ class p2b extends p2b$1 {
429
431
  client.lastPong = this.safeInteger(message, 'id');
430
432
  return message;
431
433
  }
434
+ onError(client, error) {
435
+ this.options['tickerSubs'] = this.createSafeDictionary();
436
+ this.onError(client, error);
437
+ }
438
+ onClose(client, error) {
439
+ this.options['tickerSubs'] = this.createSafeDictionary();
440
+ this.onClose(client, error);
441
+ }
432
442
  }
433
443
 
434
444
  module.exports = p2b;
@@ -229,7 +229,7 @@ class woo extends woo$1 {
229
229
  /**
230
230
  * @method
231
231
  * @name woo#watchTickers
232
- * @description n watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
232
+ * @description watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
233
233
  * @param {string[]} symbols unified symbol of the market to fetch the ticker for
234
234
  * @param {object} [params] extra parameters specific to the exchange API endpoint
235
235
  * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
package/js/ccxt.d.ts CHANGED
@@ -4,7 +4,7 @@ import * as functions from './src/base/functions.js';
4
4
  import * as errors from './src/base/errors.js';
5
5
  import type { Market, Trade, Fee, Ticker, OrderBook, Order, Transaction, Tickers, Currency, Balance, DepositAddress, WithdrawalResponse, DepositAddressResponse, OHLCV, Balances, PartialBalances, Dictionary, MinMax, Position, FundingRateHistory, Liquidation, FundingHistory, MarginMode, Greeks, Leverage, Leverages, Option, OptionChain } from './src/base/types.js';
6
6
  import { BaseError, ExchangeError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, NotSupported, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, AuthenticationError, AddressPending, NoChange } from './src/base/errors.js';
7
- declare const version = "4.2.80";
7
+ declare const version = "4.2.82";
8
8
  import ace from './src/ace.js';
9
9
  import alpaca from './src/alpaca.js';
10
10
  import ascendex from './src/ascendex.js';
@@ -120,6 +120,7 @@ import bitcoincomPro from './src/pro/bitcoincom.js';
120
120
  import bitfinexPro from './src/pro/bitfinex.js';
121
121
  import bitfinex2Pro from './src/pro/bitfinex2.js';
122
122
  import bitgetPro from './src/pro/bitget.js';
123
+ import bithumbPro from './src/pro/bithumb.js';
123
124
  import bitmartPro from './src/pro/bitmart.js';
124
125
  import bitmexPro from './src/pro/bitmex.js';
125
126
  import bitoproPro from './src/pro/bitopro.js';
@@ -289,6 +290,7 @@ declare const pro: {
289
290
  bitfinex: typeof bitfinexPro;
290
291
  bitfinex2: typeof bitfinex2Pro;
291
292
  bitget: typeof bitgetPro;
293
+ bithumb: typeof bithumbPro;
292
294
  bitmart: typeof bitmartPro;
293
295
  bitmex: typeof bitmexPro;
294
296
  bitopro: typeof bitoproPro;
@@ -359,6 +361,7 @@ declare const ccxt: {
359
361
  bitfinex: typeof bitfinexPro;
360
362
  bitfinex2: typeof bitfinex2Pro;
361
363
  bitget: typeof bitgetPro;
364
+ bithumb: typeof bithumbPro;
362
365
  bitmart: typeof bitmartPro;
363
366
  bitmex: typeof bitmexPro;
364
367
  bitopro: typeof bitoproPro;
package/js/ccxt.js CHANGED
@@ -38,7 +38,7 @@ import * as errors from './src/base/errors.js';
38
38
  import { BaseError, ExchangeError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, NotSupported, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, AuthenticationError, AddressPending, NoChange } from './src/base/errors.js';
39
39
  //-----------------------------------------------------------------------------
40
40
  // this is updated by vss.js when building
41
- const version = '4.2.81';
41
+ const version = '4.2.83';
42
42
  Exchange.ccxtVersion = version;
43
43
  //-----------------------------------------------------------------------------
44
44
  import ace from './src/ace.js';
@@ -157,6 +157,7 @@ import bitcoincomPro from './src/pro/bitcoincom.js';
157
157
  import bitfinexPro from './src/pro/bitfinex.js';
158
158
  import bitfinex2Pro from './src/pro/bitfinex2.js';
159
159
  import bitgetPro from './src/pro/bitget.js';
160
+ import bithumbPro from './src/pro/bithumb.js';
160
161
  import bitmartPro from './src/pro/bitmart.js';
161
162
  import bitmexPro from './src/pro/bitmex.js';
162
163
  import bitoproPro from './src/pro/bitopro.js';
@@ -326,6 +327,7 @@ const pro = {
326
327
  'bitfinex': bitfinexPro,
327
328
  'bitfinex2': bitfinex2Pro,
328
329
  'bitget': bitgetPro,
330
+ 'bithumb': bithumbPro,
329
331
  'bitmart': bitmartPro,
330
332
  'bitmex': bitmexPro,
331
333
  'bitopro': bitoproPro,
@@ -40,7 +40,7 @@ interface Exchange {
40
40
  privatePostTransferFromMain(params?: {}): Promise<implicitReturnType>;
41
41
  privatePostMyTradingPairs(params?: {}): Promise<implicitReturnType>;
42
42
  privatePostFeesTrading(params?: {}): Promise<implicitReturnType>;
43
- privatePostFeesTradingPair(params?: {}): Promise<implicitReturnType>;
43
+ privatePostFeesTradingMarketSymbol(params?: {}): Promise<implicitReturnType>;
44
44
  privatePostFeesWithdrawal(params?: {}): Promise<implicitReturnType>;
45
45
  privatePostFeesWithdrawalCurrency(params?: {}): Promise<implicitReturnType>;
46
46
  privatePostWithdrawalRequests(params?: {}): Promise<implicitReturnType>;
package/js/src/ace.d.ts CHANGED
@@ -6,7 +6,7 @@ import type { Balances, Int, Market, Num, OHLCV, Order, OrderBook, OrderSide, Or
6
6
  */
7
7
  export default class ace 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
  parseTicker(ticker: any, market?: Market): Ticker;
12
12
  fetchTicker(symbol: string, params?: {}): Promise<Ticker>;
@@ -7,7 +7,7 @@ import type { Int, Market, Num, OHLCV, Order, OrderBook, OrderSide, OrderType, S
7
7
  export default class alpaca 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(asset: any): Market;
12
12
  fetchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
13
13
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
@@ -8,7 +8,7 @@ export default class ascendex extends Exchange {
8
8
  describe(): any;
9
9
  getAccount(params?: {}): string;
10
10
  fetchCurrencies(params?: {}): Promise<{}>;
11
- fetchMarkets(params?: {}): Promise<any[]>;
11
+ fetchMarkets(params?: {}): Promise<Market[]>;
12
12
  fetchTime(params?: {}): Promise<number>;
13
13
  fetchAccounts(params?: {}): Promise<Account[]>;
14
14
  parseBalance(response: any): Balances;
@@ -7,7 +7,7 @@ import type { TransferEntry, Balances, Currency, Int, Market, OHLCV, Order, Orde
7
7
  export default class bigone 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>;
@@ -18,7 +18,7 @@ export default class binance extends Exchange {
18
18
  nonce(): number;
19
19
  fetchTime(params?: {}): Promise<number>;
20
20
  fetchCurrencies(params?: {}): Promise<{}>;
21
- fetchMarkets(params?: {}): Promise<any[]>;
21
+ fetchMarkets(params?: {}): Promise<Market[]>;
22
22
  parseMarket(market: any): Market;
23
23
  parseBalanceHelper(entry: any): import("./base/types.js").BalanceAccount;
24
24
  parseBalanceCustom(response: any, type?: any, marginMode?: any, isPortfolioMargin?: boolean): Balances;
package/js/src/bingx.d.ts CHANGED
@@ -11,7 +11,7 @@ export default class bingx extends Exchange {
11
11
  fetchSpotMarkets(params: any): Promise<import("./base/types.js").MarketInterface[]>;
12
12
  fetchSwapMarkets(params: any): Promise<import("./base/types.js").MarketInterface[]>;
13
13
  parseMarket(market: any): Market;
14
- fetchMarkets(params?: {}): Promise<any>;
14
+ fetchMarkets(params?: {}): Promise<Market[]>;
15
15
  fetchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
16
16
  parseOHLCV(ohlcv: any, market?: Market): OHLCV;
17
17
  fetchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
@@ -6,7 +6,7 @@ import type { Balances, Currency, Int, Market, Num, OHLCV, Order, OrderBook, Ord
6
6
  */
7
7
  export default class bitbank extends Exchange {
8
8
  describe(): any;
9
- fetchMarkets(params?: {}): Promise<import("./base/types.js").MarketInterface[]>;
9
+ fetchMarkets(params?: {}): Promise<Market[]>;
10
10
  parseMarket(entry: any): Market;
11
11
  parseTicker(ticker: any, market?: Market): Ticker;
12
12
  fetchTicker(symbol: string, params?: {}): Promise<Ticker>;
@@ -13,7 +13,7 @@ export default class bitbns extends Exchange {
13
13
  url: any;
14
14
  info: any;
15
15
  }>;
16
- fetchMarkets(params?: {}): Promise<any[]>;
16
+ fetchMarkets(params?: {}): Promise<Market[]>;
17
17
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
18
18
  parseTicker(ticker: any, market?: Market): Ticker;
19
19
  fetchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
@@ -21,7 +21,7 @@ export default class bitfinex extends Exchange {
21
21
  info: any;
22
22
  };
23
23
  fetchTradingFees(params?: {}): Promise<{}>;
24
- fetchMarkets(params?: {}): Promise<any[]>;
24
+ fetchMarkets(params?: {}): Promise<Market[]>;
25
25
  amountToPrecision(symbol: any, amount: any): any;
26
26
  priceToPrecision(symbol: any, price: any): any;
27
27
  fetchBalance(params?: {}): Promise<Balances>;
@@ -18,7 +18,7 @@ export default class bitfinex2 extends Exchange {
18
18
  url: any;
19
19
  info: any;
20
20
  }>;
21
- fetchMarkets(params?: {}): Promise<any[]>;
21
+ fetchMarkets(params?: {}): Promise<Market[]>;
22
22
  fetchCurrencies(params?: {}): Promise<{}>;
23
23
  safeNetwork(networkId: any): string;
24
24
  fetchBalance(params?: {}): Promise<Balances>;
@@ -8,7 +8,7 @@ export default class bitflyer extends Exchange {
8
8
  describe(): any;
9
9
  parseExpiryDate(expiry: any): number;
10
10
  safeMarket(marketId?: Str, market?: Market, delimiter?: Str, marketType?: Str): MarketInterface;
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>;
@@ -10,7 +10,7 @@ export default class bitget extends Exchange {
10
10
  convertSymbolForSandbox(symbol: any): any;
11
11
  handleProductTypeAndParams(market?: any, params?: {}): {}[];
12
12
  fetchTime(params?: {}): Promise<number>;
13
- fetchMarkets(params?: {}): Promise<any>;
13
+ fetchMarkets(params?: {}): Promise<Market[]>;
14
14
  parseMarket(market: any): Market;
15
15
  fetchMarketsByType(type: any, params?: {}): Promise<import("./base/types.js").MarketInterface[]>;
16
16
  fetchCurrencies(params?: {}): Promise<{}>;
package/js/src/bitget.js CHANGED
@@ -1296,6 +1296,7 @@ export default class bitget extends Exchange {
1296
1296
  'precisionMode': TICK_SIZE,
1297
1297
  'commonCurrencies': {
1298
1298
  'JADE': 'Jade Protocol',
1299
+ 'DEGEN': 'DegenReborn',
1299
1300
  },
1300
1301
  'options': {
1301
1302
  'timeframes': {
@@ -8,7 +8,7 @@ export default class bithumb extends Exchange {
8
8
  describe(): any;
9
9
  safeMarket(marketId?: Str, market?: Market, delimiter?: Str, marketType?: Str): MarketInterface;
10
10
  amountToPrecision(symbol: any, amount: any): any;
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>;
package/js/src/bithumb.js CHANGED
@@ -22,6 +22,7 @@ export default class bithumb extends Exchange {
22
22
  'name': 'Bithumb',
23
23
  'countries': ['KR'],
24
24
  'rateLimit': 500,
25
+ 'pro': true,
25
26
  'has': {
26
27
  'CORS': true,
27
28
  'spot': true,
@@ -16,7 +16,7 @@ export default class bitmart extends Exchange {
16
16
  }>;
17
17
  fetchSpotMarkets(params?: {}): Promise<any[]>;
18
18
  fetchContractMarkets(params?: {}): Promise<any[]>;
19
- fetchMarkets(params?: {}): Promise<any>;
19
+ fetchMarkets(params?: {}): Promise<Market[]>;
20
20
  fetchCurrencies(params?: {}): Promise<{}>;
21
21
  fetchTransactionFee(code: string, params?: {}): Promise<{
22
22
  info: any;
@@ -12,7 +12,7 @@ export default class bitmex extends Exchange {
12
12
  amountToPrecision(symbol: any, amount: any): any;
13
13
  convertFromRawQuantity(symbol: any, rawQuantity: any, currencySide?: string): number;
14
14
  convertFromRawCost(symbol: any, rawQuantity: any): number;
15
- fetchMarkets(params?: {}): Promise<import("./base/types.js").MarketInterface[]>;
15
+ fetchMarkets(params?: {}): Promise<Market[]>;
16
16
  parseMarket(market: any): Market;
17
17
  parseBalance(response: any): Balances;
18
18
  fetchBalance(params?: {}): Promise<Balances>;
@@ -7,7 +7,7 @@ import type { Balances, Currency, Int, Market, Num, OHLCV, Order, OrderBook, Ord
7
7
  export default class bitopro extends Exchange {
8
8
  describe(): any;
9
9
  fetchCurrencies(params?: {}): Promise<{}>;
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>;
@@ -18,7 +18,7 @@ export default class bitrue extends Exchange {
18
18
  fetchTime(params?: {}): Promise<number>;
19
19
  safeNetwork(networkId: any): string;
20
20
  fetchCurrencies(params?: {}): Promise<{}>;
21
- fetchMarkets(params?: {}): Promise<import("./base/types.js").MarketInterface[]>;
21
+ fetchMarkets(params?: {}): Promise<Market[]>;
22
22
  parseMarket(market: any): Market;
23
23
  parseBalance(response: any): Balances;
24
24
  fetchBalance(params?: {}): Promise<Balances>;
package/js/src/bitso.d.ts CHANGED
@@ -25,7 +25,7 @@ export default class bitso extends Exchange {
25
25
  fee: any;
26
26
  info: import("./base/types.js").Dictionary<any>;
27
27
  };
28
- fetchMarkets(params?: {}): Promise<any[]>;
28
+ fetchMarkets(params?: {}): Promise<Market[]>;
29
29
  parseBalance(response: any): Balances;
30
30
  fetchBalance(params?: {}): Promise<Balances>;
31
31
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
@@ -6,7 +6,7 @@ import type { Balances, Currency, Int, Market, Num, OHLCV, Order, OrderBook, Ord
6
6
  */
7
7
  export default class bitstamp extends Exchange {
8
8
  describe(): any;
9
- fetchMarkets(params?: {}): Promise<any[]>;
9
+ fetchMarkets(params?: {}): Promise<Market[]>;
10
10
  constructCurrencyObject(id: any, code: any, name: any, precision: any, minCost: any, originalPayload: any): {
11
11
  id: any;
12
12
  code: any;
@@ -166,7 +166,7 @@ export default class bitstamp extends Exchange {
166
166
  'transfer-from-main/': 1,
167
167
  'my_trading_pairs/': 1,
168
168
  'fees/trading/': 1,
169
- 'fees/trading/{pair}': 1,
169
+ 'fees/trading/{market_symbol}': 1,
170
170
  'fees/withdrawal/': 1,
171
171
  'fees/withdrawal/{currency}/': 1,
172
172
  'withdrawal-requests/': 1,
@@ -1166,7 +1166,7 @@ export default class bitstamp extends Exchange {
1166
1166
  * @method
1167
1167
  * @name bitstamp#fetchTradingFee
1168
1168
  * @description fetch the trading fees for a market
1169
- * @see https://www.bitstamp.net/api/#tag/Fees/operation/GetAllTradingFees
1169
+ * @see https://www.bitstamp.net/api/#tag/Fees/operation/GetTradingFeesForCurrency
1170
1170
  * @param {string} symbol unified market symbol
1171
1171
  * @param {object} [params] extra parameters specific to the exchange API endpoint
1172
1172
  * @returns {object} a [fee structure]{@link https://docs.ccxt.com/#/?id=fee-structure}
@@ -1174,21 +1174,35 @@ export default class bitstamp extends Exchange {
1174
1174
  await this.loadMarkets();
1175
1175
  const market = this.market(symbol);
1176
1176
  const request = {
1177
- 'pair': market['id'],
1177
+ 'market_symbol': market['id'],
1178
1178
  };
1179
- const response = await this.privatePostBalancePair(this.extend(request, params));
1180
- return this.parseTradingFee(response, market);
1179
+ const response = await this.privatePostFeesTrading(this.extend(request, params));
1180
+ //
1181
+ // [
1182
+ // {
1183
+ // "currency_pair": "btcusd",
1184
+ // "fees":
1185
+ // {
1186
+ // "maker": "0.15000",
1187
+ // "taker": "0.16000"
1188
+ // },
1189
+ // "market": "btcusd"
1190
+ // }
1191
+ // ...
1192
+ // ]
1193
+ //
1194
+ const tradingFeesByMarketId = this.indexBy(response, 'currency_pair');
1195
+ const tradingFee = this.safeDict(tradingFeesByMarketId, market['id']);
1196
+ return this.parseTradingFee(tradingFee, market);
1181
1197
  }
1182
1198
  parseTradingFee(fee, market = undefined) {
1183
- market = this.safeMarket(undefined, market);
1184
- const feeString = this.safeString(fee, market['id'] + '_fee');
1185
- const dividedFeeString = Precise.stringDiv(feeString, '100');
1186
- const tradeFee = this.parseNumber(dividedFeeString);
1199
+ const marketId = this.safeString(fee, 'market');
1200
+ const fees = this.safeDict(fee, 'fees', {});
1187
1201
  return {
1188
1202
  'info': fee,
1189
- 'symbol': market['symbol'],
1190
- 'maker': tradeFee,
1191
- 'taker': tradeFee,
1203
+ 'symbol': this.safeSymbol(marketId, market),
1204
+ 'maker': this.safeNumber(fees, 'maker'),
1205
+ 'taker': this.safeNumber(fees, 'taker'),
1192
1206
  };
1193
1207
  }
1194
1208
  parseTradingFees(fees) {
@@ -1196,8 +1210,7 @@ export default class bitstamp extends Exchange {
1196
1210
  const symbols = this.symbols;
1197
1211
  for (let i = 0; i < symbols.length; i++) {
1198
1212
  const symbol = symbols[i];
1199
- const market = this.market(symbol);
1200
- const fee = this.parseTradingFee(fees, market);
1213
+ const fee = this.parseTradingFee(fees[i]);
1201
1214
  result[symbol] = fee;
1202
1215
  }
1203
1216
  return result;
@@ -1212,7 +1225,21 @@ export default class bitstamp extends Exchange {
1212
1225
  * @returns {object} a dictionary of [fee structures]{@link https://docs.ccxt.com/#/?id=fee-structure} indexed by market symbols
1213
1226
  */
1214
1227
  await this.loadMarkets();
1215
- const response = await this.privatePostBalance(params);
1228
+ const response = await this.privatePostFeesTrading(params);
1229
+ //
1230
+ // [
1231
+ // {
1232
+ // "currency_pair": "btcusd",
1233
+ // "fees":
1234
+ // {
1235
+ // "maker": "0.15000",
1236
+ // "taker": "0.16000"
1237
+ // },
1238
+ // "market": "btcusd"
1239
+ // }
1240
+ // ...
1241
+ // ]
1242
+ //
1216
1243
  return this.parseTradingFees(response);
1217
1244
  }
1218
1245
  async fetchTransactionFees(codes = undefined, params = {}) {
@@ -6,7 +6,7 @@ import { Balances, Currency, Int, Market, Num, OHLCV, Order, OrderBook, OrderSid
6
6
  */
7
7
  export default class bitteam 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
  fetchCurrencies(params?: {}): Promise<{}>;
12
12
  fetchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
@@ -10,7 +10,7 @@ export default class bitvavo extends Exchange {
10
10
  amountToPrecision(symbol: any, amount: any): any;
11
11
  priceToPrecision(symbol: any, price: any): any;
12
12
  fetchTime(params?: {}): Promise<number>;
13
- fetchMarkets(params?: {}): Promise<any[]>;
13
+ fetchMarkets(params?: {}): Promise<Market[]>;
14
14
  parseMarkets(markets: any): any[];
15
15
  fetchCurrencies(params?: {}): Promise<{}>;
16
16
  parseCurrencies(currencies: any): {};
@@ -6,7 +6,7 @@ import type { Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide,
6
6
  */
7
7
  export default class blockchaincom 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
  fetchL3OrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
12
12
  fetchL2OrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
@@ -6,7 +6,7 @@ import type { Int, OrderSide, OrderType, Trade, OHLCV, Order, FundingRateHistory
6
6
  */
7
7
  export default class blofin 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
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
12
12
  parseTicker(ticker: any, market?: Market): Ticker;
@@ -6,7 +6,7 @@ import type { IndexType, Balances, Currency, Int, Market, OHLCV, Order, OrderBoo
6
6
  */
7
7
  export default class btcalpha 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
  fetchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
12
12
  fetchTicker(symbol: string, params?: {}): Promise<Ticker>;
@@ -13,7 +13,7 @@ export default class btcmarkets extends Exchange {
13
13
  parseTransactionStatus(status: any): string;
14
14
  parseTransactionType(type: any): string;
15
15
  parseTransaction(transaction: any, currency?: Currency): Transaction;
16
- fetchMarkets(params?: {}): Promise<import("./base/types.js").MarketInterface[]>;
16
+ fetchMarkets(params?: {}): Promise<Market[]>;
17
17
  parseMarket(market: any): Market;
18
18
  fetchTime(params?: {}): Promise<number>;
19
19
  parseBalance(response: any): Balances;
@@ -6,7 +6,7 @@ import type { Balances, Int, Market, Num, OHLCV, Order, OrderBook, OrderSide, Or
6
6
  */
7
7
  export default class btcturk extends Exchange {
8
8
  describe(): any;
9
- fetchMarkets(params?: {}): Promise<import("./base/types.js").MarketInterface[]>;
9
+ fetchMarkets(params?: {}): Promise<Market[]>;
10
10
  parseMarket(entry: any): Market;
11
11
  parseBalance(response: any): Balances;
12
12
  fetchBalance(params?: {}): Promise<Balances>;
package/js/src/bybit.d.ts CHANGED
@@ -18,7 +18,7 @@ export default class bybit extends Exchange {
18
18
  getBybitType(method: any, market: any, params?: {}): any[];
19
19
  fetchTime(params?: {}): Promise<number>;
20
20
  fetchCurrencies(params?: {}): Promise<{}>;
21
- fetchMarkets(params?: {}): Promise<any>;
21
+ fetchMarkets(params?: {}): Promise<Market[]>;
22
22
  fetchSpotMarkets(params: any): Promise<any[]>;
23
23
  fetchFutureMarkets(params: any): Promise<any[]>;
24
24
  fetchOptionMarkets(params: any): Promise<any[]>;
package/js/src/cex.d.ts CHANGED
@@ -8,7 +8,7 @@ export default class cex extends Exchange {
8
8
  describe(): any;
9
9
  fetchCurrenciesFromCache(params?: {}): Promise<any>;
10
10
  fetchCurrencies(params?: {}): Promise<{}>;
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>;
@@ -30,7 +30,7 @@ export default class coinbase extends Exchange {
30
30
  parseTransactionStatus(status: any): string;
31
31
  parseTransaction(transaction: any, currency?: Currency): Transaction;
32
32
  parseTrade(trade: any, market?: Market): Trade;
33
- fetchMarkets(params?: {}): Promise<any[]>;
33
+ fetchMarkets(params?: {}): Promise<Market[]>;
34
34
  fetchMarketsV2(params?: {}): Promise<any[]>;
35
35
  fetchMarketsV3(params?: {}): Promise<any[]>;
36
36
  fetchCurrenciesFromCache(params?: {}): Promise<import("./base/types.js").Dictionary<any>>;
@@ -76,7 +76,7 @@ export default class coinbaseinternational extends Exchange {
76
76
  parseTransactionStatus(status: any): string;
77
77
  parseTransaction(transaction: any, currency?: Currency): Transaction;
78
78
  parseTrade(trade: any, market?: Market): Trade;
79
- fetchMarkets(params?: {}): Promise<import("./base/types.js").MarketInterface[]>;
79
+ fetchMarkets(params?: {}): Promise<Market[]>;
80
80
  parseMarket(market: any): Market;
81
81
  fetchCurrencies(params?: {}): Promise<any>;
82
82
  parseCurrency(currency: any): {
@@ -7,7 +7,7 @@ import type { Int, OrderSide, OrderType, Trade, OHLCV, Order, Balances, Str, Tra
7
7
  export default class coinbasepro extends Exchange {
8
8
  describe(): any;
9
9
  fetchCurrencies(params?: {}): Promise<{}>;
10
- fetchMarkets(params?: {}): Promise<any[]>;
10
+ fetchMarkets(params?: {}): Promise<Market[]>;
11
11
  fetchAccounts(params?: {}): Promise<Account[]>;
12
12
  parseAccount(account: any): {
13
13
  id: string;
@@ -7,7 +7,7 @@ import type { Balances, Currency, FundingHistory, FundingRateHistory, Int, Marke
7
7
  export default class coinex extends Exchange {
8
8
  describe(): any;
9
9
  fetchCurrencies(params?: {}): Promise<{}>;
10
- fetchMarkets(params?: {}): Promise<any>;
10
+ fetchMarkets(params?: {}): Promise<Market[]>;
11
11
  fetchSpotMarkets(params: any): Promise<any[]>;
12
12
  fetchContractMarkets(params: any): Promise<any[]>;
13
13
  parseTicker(ticker: any, market?: Market): Ticker;
@@ -9,7 +9,7 @@ export default class coinlist extends Exchange {
9
9
  calculateRateLimiterCost(api: any, method: any, path: any, params: any, config?: {}): number;
10
10
  fetchTime(params?: {}): Promise<number>;
11
11
  fetchCurrencies(params?: {}): Promise<{}>;
12
- fetchMarkets(params?: {}): Promise<import("./base/types.js").MarketInterface[]>;
12
+ fetchMarkets(params?: {}): Promise<Market[]>;
13
13
  parseMarket(market: any): Market;
14
14
  fetchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
15
15
  fetchTicker(symbol: string, params?: {}): Promise<Ticker>;
@@ -6,7 +6,7 @@ import type { Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide,
6
6
  */
7
7
  export default class coinmate 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>;
@@ -7,7 +7,7 @@ import { Balances, Currency, IndexType, Int, Market, Num, OHLCV, Order, OrderBoo
7
7
  export default class coinmetro extends Exchange {
8
8
  describe(): any;
9
9
  fetchCurrencies(params?: {}): Promise<{}>;
10
- fetchMarkets(params?: {}): Promise<import("./base/types.js").MarketInterface[]>;
10
+ fetchMarkets(params?: {}): Promise<Market[]>;
11
11
  parseMarket(market: any): Market;
12
12
  parseMarketId(marketId: any): {
13
13
  baseId: any;
@@ -7,7 +7,7 @@ import type { Balances, Int, Market, Num, Order, OrderBook, OrderSide, OrderType
7
7
  export default class coinone extends Exchange {
8
8
  describe(): any;
9
9
  fetchCurrencies(params?: {}): Promise<{}>;
10
- fetchMarkets(params?: {}): Promise<any[]>;
10
+ fetchMarkets(params?: {}): Promise<Market[]>;
11
11
  parseBalance(response: any): Balances;
12
12
  fetchBalance(params?: {}): Promise<Balances>;
13
13
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
@@ -15,7 +15,7 @@ export default class coinsph extends Exchange {
15
15
  info: any;
16
16
  }>;
17
17
  fetchTime(params?: {}): Promise<number>;
18
- fetchMarkets(params?: {}): Promise<any[]>;
18
+ fetchMarkets(params?: {}): Promise<Market[]>;
19
19
  fetchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
20
20
  fetchTicker(symbol: string, params?: {}): Promise<Ticker>;
21
21
  parseTicker(ticker: any, market?: Market): Ticker;