ccxt 4.2.87 → 4.2.89

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 +87 -0
  2. package/README.md +4 -5
  3. package/dist/ccxt.browser.js +311 -167
  4. package/dist/ccxt.browser.min.js +3 -3
  5. package/dist/cjs/ccxt.js +6 -1
  6. package/dist/cjs/src/ascendex.js +2 -0
  7. package/dist/cjs/src/base/Exchange.js +41 -9
  8. package/dist/cjs/src/binance.js +12 -6
  9. package/dist/cjs/src/bitflyer.js +2 -0
  10. package/dist/cjs/src/bitget.js +24 -17
  11. package/dist/cjs/src/bitmart.js +2 -0
  12. package/dist/cjs/src/bitstamp.js +83 -99
  13. package/dist/cjs/src/blofin.js +2 -0
  14. package/dist/cjs/src/bybit.js +2 -0
  15. package/dist/cjs/src/coinsph.js +2 -0
  16. package/dist/cjs/src/cryptocom.js +1 -1
  17. package/dist/cjs/src/digifinex.js +2 -0
  18. package/dist/cjs/src/gate.js +10 -8
  19. package/dist/cjs/src/hitbtc.js +2 -0
  20. package/dist/cjs/src/htx.js +2 -0
  21. package/dist/cjs/src/krakenfutures.js +2 -1
  22. package/dist/cjs/src/kucoin.js +46 -19
  23. package/dist/cjs/src/latoken.js +4 -0
  24. package/dist/cjs/src/lbank.js +3 -1
  25. package/dist/cjs/src/luno.js +2 -0
  26. package/dist/cjs/src/mexc.js +55 -7
  27. package/dist/cjs/src/okx.js +2 -0
  28. package/dist/cjs/src/pro/bitget.js +2 -0
  29. package/dist/cjs/src/timex.js +2 -0
  30. package/examples/js/cli.js +0 -2
  31. package/examples/ts/cli.ts +0 -2
  32. package/js/ccxt.d.ts +3 -3
  33. package/js/ccxt.js +3 -3
  34. package/js/src/ascendex.d.ts +3 -3
  35. package/js/src/ascendex.js +2 -0
  36. package/js/src/base/Exchange.d.ts +9 -8
  37. package/js/src/base/Exchange.js +41 -9
  38. package/js/src/base/types.d.ts +35 -2
  39. package/js/src/bigone.d.ts +2 -2
  40. package/js/src/binance.d.ts +6 -16
  41. package/js/src/binance.js +12 -6
  42. package/js/src/bingx.d.ts +2 -2
  43. package/js/src/bit2c.d.ts +2 -2
  44. package/js/src/bitbank.d.ts +2 -2
  45. package/js/src/bitfinex.d.ts +2 -2
  46. package/js/src/bitfinex2.d.ts +3 -3
  47. package/js/src/bitflyer.d.ts +2 -7
  48. package/js/src/bitflyer.js +2 -0
  49. package/js/src/bitget.d.ts +6 -9
  50. package/js/src/bitget.js +24 -17
  51. package/js/src/bitmart.d.ts +4 -14
  52. package/js/src/bitmart.js +2 -0
  53. package/js/src/bitmex.d.ts +2 -2
  54. package/js/src/bitopro.d.ts +3 -3
  55. package/js/src/bitrue.d.ts +2 -2
  56. package/js/src/bitso.d.ts +2 -2
  57. package/js/src/bitstamp.d.ts +7 -19
  58. package/js/src/bitstamp.js +83 -99
  59. package/js/src/bitteam.d.ts +2 -2
  60. package/js/src/bitvavo.d.ts +3 -3
  61. package/js/src/bl3p.d.ts +2 -2
  62. package/js/src/blockchaincom.d.ts +2 -2
  63. package/js/src/blofin.d.ts +2 -7
  64. package/js/src/blofin.js +2 -0
  65. package/js/src/bybit.d.ts +5 -15
  66. package/js/src/bybit.js +2 -0
  67. package/js/src/cex.d.ts +3 -3
  68. package/js/src/coinbase.d.ts +2 -2
  69. package/js/src/coinbaseinternational.d.ts +2 -2
  70. package/js/src/coinbasepro.d.ts +3 -3
  71. package/js/src/coincheck.d.ts +2 -2
  72. package/js/src/coinex.d.ts +5 -19
  73. package/js/src/coinlist.d.ts +3 -3
  74. package/js/src/coinmate.d.ts +2 -9
  75. package/js/src/coinmetro.d.ts +2 -2
  76. package/js/src/coinone.d.ts +2 -2
  77. package/js/src/coinsph.d.ts +4 -14
  78. package/js/src/coinsph.js +2 -0
  79. package/js/src/cryptocom.js +1 -1
  80. package/js/src/currencycom.d.ts +3 -3
  81. package/js/src/delta.d.ts +2 -2
  82. package/js/src/deribit.d.ts +3 -3
  83. package/js/src/digifinex.d.ts +4 -14
  84. package/js/src/digifinex.js +2 -0
  85. package/js/src/exmo.d.ts +3 -3
  86. package/js/src/gate.d.ts +6 -9
  87. package/js/src/gate.js +10 -8
  88. package/js/src/gemini.d.ts +3 -3
  89. package/js/src/hitbtc.d.ts +5 -15
  90. package/js/src/hitbtc.js +2 -0
  91. package/js/src/hollaex.d.ts +3 -3
  92. package/js/src/htx.d.ts +4 -14
  93. package/js/src/htx.js +2 -0
  94. package/js/src/huobijp.d.ts +2 -2
  95. package/js/src/hyperliquid.d.ts +2 -2
  96. package/js/src/idex.d.ts +3 -3
  97. package/js/src/independentreserve.d.ts +2 -2
  98. package/js/src/kraken.d.ts +3 -10
  99. package/js/src/krakenfutures.js +2 -1
  100. package/js/src/kucoin.d.ts +3 -10
  101. package/js/src/kucoin.js +46 -19
  102. package/js/src/kuna.d.ts +2 -2
  103. package/js/src/latoken.d.ts +7 -8
  104. package/js/src/latoken.js +4 -0
  105. package/js/src/lbank.d.ts +4 -9
  106. package/js/src/lbank.js +3 -1
  107. package/js/src/luno.d.ts +2 -7
  108. package/js/src/luno.js +2 -0
  109. package/js/src/lykke.d.ts +2 -2
  110. package/js/src/mexc.d.ts +3 -3
  111. package/js/src/mexc.js +55 -7
  112. package/js/src/ndax.d.ts +2 -2
  113. package/js/src/oceanex.d.ts +2 -2
  114. package/js/src/okcoin.d.ts +2 -2
  115. package/js/src/okx.d.ts +4 -14
  116. package/js/src/okx.js +2 -0
  117. package/js/src/onetrading.d.ts +3 -3
  118. package/js/src/phemex.d.ts +2 -2
  119. package/js/src/poloniex.d.ts +3 -3
  120. package/js/src/pro/bitget.js +2 -0
  121. package/js/src/pro/bitvavo.d.ts +2 -2
  122. package/js/src/probit.d.ts +2 -2
  123. package/js/src/timex.d.ts +4 -14
  124. package/js/src/timex.js +2 -0
  125. package/js/src/upbit.d.ts +2 -9
  126. package/js/src/wazirx.d.ts +2 -2
  127. package/js/src/whitebit.d.ts +3 -3
  128. package/js/src/woo.d.ts +3 -3
  129. package/js/src/yobit.d.ts +2 -2
  130. package/package.json +1 -1
  131. package/skip-tests.json +6 -1
package/js/src/idex.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/idex.js';
2
- import type { Balances, Currency, Int, Market, Num, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction } from './base/types.js';
2
+ import type { Balances, Currencies, Currency, Int, Market, Num, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction } from './base/types.js';
3
3
  /**
4
4
  * @class idex
5
5
  * @augments Exchange
@@ -15,10 +15,10 @@ export default class idex extends Exchange {
15
15
  parseOHLCV(ohlcv: any, market?: Market): OHLCV;
16
16
  fetchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
17
17
  parseTrade(trade: any, market?: Market): Trade;
18
- fetchTradingFees(params?: {}): Promise<{}>;
18
+ fetchTradingFees(params?: {}): Promise<TradingFees>;
19
19
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
20
20
  parseSide(book: any, side: any): any;
21
- fetchCurrencies(params?: {}): Promise<{}>;
21
+ fetchCurrencies(params?: {}): Promise<Currencies>;
22
22
  parseBalance(response: any): Balances;
23
23
  fetchBalance(params?: {}): Promise<Balances>;
24
24
  fetchMyTrades(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/independentreserve.js';
2
- import type { Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Ticker, Trade } from './base/types.js';
2
+ import type { Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Ticker, Trade, TradingFees } from './base/types.js';
3
3
  /**
4
4
  * @class independentreserve
5
5
  * @augments Exchange
@@ -20,7 +20,7 @@ export default class independentreserve extends Exchange {
20
20
  fetchMyTrades(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
21
21
  parseTrade(trade: any, market?: Market): Trade;
22
22
  fetchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
23
- fetchTradingFees(params?: {}): Promise<{}>;
23
+ fetchTradingFees(params?: {}): Promise<TradingFees>;
24
24
  createOrder(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: Num, params?: {}): Promise<Order>;
25
25
  cancelOrder(id: string, symbol?: Str, params?: {}): Promise<any>;
26
26
  fetchDepositAddress(code: string, params?: {}): Promise<{
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/kraken.js';
2
- import type { IndexType, Int, OrderSide, OrderType, OHLCV, Trade, Order, Balances, Str, Transaction, Ticker, OrderBook, Tickers, Strings, Currency, Market, TransferEntry, Num } from './base/types.js';
2
+ import type { IndexType, Int, OrderSide, OrderType, OHLCV, Trade, Order, Balances, Str, Transaction, Ticker, OrderBook, Tickers, Strings, Currency, Market, TransferEntry, Num, TradingFeeInterface, Currencies } from './base/types.js';
3
3
  /**
4
4
  * @class kraken
5
5
  * @augments Exchange
@@ -11,15 +11,8 @@ export default class kraken extends Exchange {
11
11
  fetchMarkets(params?: {}): Promise<Market[]>;
12
12
  safeCurrency(currencyId: any, currency?: Currency): import("./base/types.js").CurrencyInterface;
13
13
  appendInactiveMarkets(result: any): any;
14
- fetchCurrencies(params?: {}): Promise<{}>;
15
- fetchTradingFee(symbol: string, params?: {}): Promise<{
16
- info: any;
17
- symbol: any;
18
- maker: number;
19
- taker: number;
20
- percentage: boolean;
21
- tierBased: boolean;
22
- }>;
14
+ fetchCurrencies(params?: {}): Promise<Currencies>;
15
+ fetchTradingFee(symbol: string, params?: {}): Promise<TradingFeeInterface>;
23
16
  parseTradingFee(response: any, market: any): {
24
17
  info: any;
25
18
  symbol: any;
@@ -355,7 +355,8 @@ export default class krakenfutures extends Exchange {
355
355
  // swap == perpetual
356
356
  let settle = undefined;
357
357
  let settleId = undefined;
358
- const amountPrecision = this.parseNumber(this.parsePrecision(this.safeString(market, 'contractValueTradePrecision', '0')));
358
+ const cvtp = this.safeString(market, 'contractValueTradePrecision');
359
+ const amountPrecision = this.parseNumber(this.integerPrecisionToAmount(cvtp));
359
360
  const pricePrecision = this.safeNumber(market, 'tickSize');
360
361
  const contract = (swap || future || index);
361
362
  const swapOrFutures = (swap || future);
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/kucoin.js';
2
- import type { TransferEntry, Int, OrderSide, OrderType, Order, OHLCV, Trade, Balances, OrderRequest, Str, Transaction, Ticker, OrderBook, Tickers, Strings, Currency, Market, Num, Account } from './base/types.js';
2
+ import type { TransferEntry, Int, OrderSide, OrderType, Order, OHLCV, Trade, Balances, OrderRequest, Str, Transaction, Ticker, OrderBook, Tickers, Strings, Currency, Market, Num, Account, TradingFeeInterface, Currencies } from './base/types.js';
3
3
  /**
4
4
  * @class kucoin
5
5
  * @augments Exchange
@@ -16,7 +16,7 @@ export default class kucoin extends Exchange {
16
16
  info: any;
17
17
  }>;
18
18
  fetchMarkets(params?: {}): Promise<Market[]>;
19
- fetchCurrencies(params?: {}): Promise<{}>;
19
+ fetchCurrencies(params?: {}): Promise<Currencies>;
20
20
  fetchAccounts(params?: {}): Promise<Account[]>;
21
21
  fetchTransactionFee(code: string, params?: {}): Promise<{
22
22
  info: any;
@@ -85,14 +85,7 @@ export default class kucoin extends Exchange {
85
85
  fetchMyTrades(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
86
86
  fetchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
87
87
  parseTrade(trade: any, market?: Market): Trade;
88
- fetchTradingFee(symbol: string, params?: {}): Promise<{
89
- info: any;
90
- symbol: string;
91
- maker: number;
92
- taker: number;
93
- percentage: boolean;
94
- tierBased: boolean;
95
- }>;
88
+ fetchTradingFee(symbol: string, params?: {}): Promise<TradingFeeInterface>;
96
89
  withdraw(code: string, amount: number, address: any, tag?: any, params?: {}): Promise<Transaction>;
97
90
  parseTransactionStatus(status: any): string;
98
91
  parseTransaction(transaction: any, currency?: Currency): Transaction;
package/js/src/kucoin.js CHANGED
@@ -3527,9 +3527,9 @@ export default class kucoin extends Exchange {
3527
3527
  }
3528
3528
  parseBalanceHelper(entry) {
3529
3529
  const account = this.account();
3530
- account['used'] = this.safeString(entry, 'holdBalance');
3531
- account['free'] = this.safeString(entry, 'availableBalance');
3532
- account['total'] = this.safeString(entry, 'totalBalance');
3530
+ account['used'] = this.safeString2(entry, 'holdBalance', 'hold');
3531
+ account['free'] = this.safeString2(entry, 'availableBalance', 'available');
3532
+ account['total'] = this.safeString2(entry, 'totalBalance', 'total');
3533
3533
  const debt = this.safeString(entry, 'liability');
3534
3534
  const interest = this.safeString(entry, 'interest');
3535
3535
  account['debt'] = Precise.stringAdd(debt, interest);
@@ -3540,9 +3540,9 @@ export default class kucoin extends Exchange {
3540
3540
  * @method
3541
3541
  * @name kucoin#fetchBalance
3542
3542
  * @description query for balance and get the amount of funds available for trading or funds locked in orders
3543
- * @see https://docs.kucoin.com/#list-accounts
3544
3543
  * @see https://www.kucoin.com/docs/rest/account/basic-info/get-account-list-spot-margin-trade_hf
3545
- * @see https://docs.kucoin.com/#query-isolated-margin-account-info
3544
+ * @see https://www.kucoin.com/docs/rest/funding/funding-overview/get-account-detail-margin
3545
+ * @see https://www.kucoin.com/docs/rest/funding/funding-overview/get-account-detail-isolated-margin
3546
3546
  * @param {object} [params] extra parameters specific to the exchange API endpoint
3547
3547
  * @param {object} [params.marginMode] 'cross' or 'isolated', margin type for fetching margin balance
3548
3548
  * @param {object} [params.type] extra parameters specific to the exchange API endpoint
@@ -3569,7 +3569,7 @@ export default class kucoin extends Exchange {
3569
3569
  let response = undefined;
3570
3570
  const request = {};
3571
3571
  const isolated = (marginMode === 'isolated') || (type === 'isolated');
3572
- const cross = (marginMode === 'cross') || (type === 'cross');
3572
+ const cross = (marginMode === 'cross') || (type === 'margin');
3573
3573
  if (isolated) {
3574
3574
  if (currency !== undefined) {
3575
3575
  request['balanceCurrency'] = currency['id'];
@@ -3587,7 +3587,7 @@ export default class kucoin extends Exchange {
3587
3587
  response = await this.privateGetAccounts(this.extend(request, query));
3588
3588
  }
3589
3589
  //
3590
- // Spot and Cross
3590
+ // Spot
3591
3591
  //
3592
3592
  // {
3593
3593
  // "code": "200000",
@@ -3603,35 +3603,59 @@ export default class kucoin extends Exchange {
3603
3603
  // ]
3604
3604
  // }
3605
3605
  //
3606
+ // Cross
3607
+ //
3608
+ // {
3609
+ // "code": "200000",
3610
+ // "data": {
3611
+ // "debtRatio": "0",
3612
+ // "accounts": [
3613
+ // {
3614
+ // "currency": "USDT",
3615
+ // "totalBalance": "5",
3616
+ // "availableBalance": "5",
3617
+ // "holdBalance": "0",
3618
+ // "liability": "0",
3619
+ // "maxBorrowSize": "20"
3620
+ // },
3621
+ // ]
3622
+ // }
3623
+ // }
3624
+ //
3606
3625
  // Isolated
3607
3626
  //
3608
3627
  // {
3609
3628
  // "code": "200000",
3610
3629
  // "data": {
3611
- // "totalConversionBalance": "0",
3612
- // "liabilityConversionBalance": "0",
3630
+ // "totalAssetOfQuoteCurrency": "0",
3631
+ // "totalLiabilityOfQuoteCurrency": "0",
3632
+ // "timestamp": 1712085661155,
3613
3633
  // "assets": [
3614
3634
  // {
3615
3635
  // "symbol": "MANA-USDT",
3616
- // "status": "CLEAR",
3636
+ // "status": "EFFECTIVE",
3617
3637
  // "debtRatio": "0",
3618
3638
  // "baseAsset": {
3619
3639
  // "currency": "MANA",
3620
- // "totalBalance": "0",
3621
- // "holdBalance": "0",
3622
- // "availableBalance": "0",
3640
+ // "borrowEnabled": true,
3641
+ // "transferInEnabled": true,
3642
+ // "total": "0",
3643
+ // "hold": "0",
3644
+ // "available": "0",
3623
3645
  // "liability": "0",
3624
3646
  // "interest": "0",
3625
- // "borrowableAmount": "0"
3647
+ // "maxBorrowSize": "0"
3626
3648
  // },
3627
3649
  // "quoteAsset": {
3628
3650
  // "currency": "USDT",
3629
- // "totalBalance": "0",
3630
- // "holdBalance": "0",
3631
- // "availableBalance": "0",
3651
+ // "borrowEnabled": true,
3652
+ // "transferInEnabled": true,
3653
+ // "total": "0",
3654
+ // "hold": "0",
3655
+ // "available": "0",
3632
3656
  // "liability": "0",
3633
3657
  // "interest": "0",
3634
- // "borrowableAmount": "0"
3658
+ // "maxBorrowSize": "0"
3635
3659
  // }
3636
3660
  // },
3637
3661
  // ...
@@ -3639,13 +3663,14 @@ export default class kucoin extends Exchange {
3639
3663
  // }
3640
3664
  // }
3641
3665
  //
3642
- const data = this.safeList(response, 'data', []);
3666
+ let data = undefined;
3643
3667
  const result = {
3644
3668
  'info': response,
3645
3669
  'timestamp': undefined,
3646
3670
  'datetime': undefined,
3647
3671
  };
3648
3672
  if (isolated) {
3673
+ data = this.safeDict(response, 'data', {});
3649
3674
  const assets = this.safeValue(data, 'assets', data);
3650
3675
  for (let i = 0; i < assets.length; i++) {
3651
3676
  const entry = assets[i];
@@ -3662,6 +3687,7 @@ export default class kucoin extends Exchange {
3662
3687
  }
3663
3688
  }
3664
3689
  else if (cross) {
3690
+ data = this.safeDict(response, 'data', {});
3665
3691
  const accounts = this.safeList(data, 'accounts', []);
3666
3692
  for (let i = 0; i < accounts.length; i++) {
3667
3693
  const balance = accounts[i];
@@ -3671,6 +3697,7 @@ export default class kucoin extends Exchange {
3671
3697
  }
3672
3698
  }
3673
3699
  else {
3700
+ data = this.safeList(response, 'data', []);
3674
3701
  for (let i = 0; i < data.length; i++) {
3675
3702
  const balance = data[i];
3676
3703
  const balanceType = this.safeString(balance, 'type');
package/js/src/kuna.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/kuna.js';
2
- import type { Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction } from './base/types.js';
2
+ import type { Balances, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction } from './base/types.js';
3
3
  /**
4
4
  * @class kuna
5
5
  * @augments Exchange
@@ -8,7 +8,7 @@ import type { Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide,
8
8
  export default class kuna extends Exchange {
9
9
  describe(): any;
10
10
  fetchTime(params?: {}): Promise<number>;
11
- fetchCurrencies(params?: {}): Promise<{}>;
11
+ fetchCurrencies(params?: {}): Promise<Currencies>;
12
12
  parseCurrencies(currencies: any, params?: {}): {};
13
13
  parseCurrency(currency: any): {
14
14
  info: any;
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/latoken.js';
2
- import type { TransferEntry, Balances, Currency, Int, Market, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, Num } from './base/types.js';
2
+ import type { TransferEntry, Balances, Currency, Int, Market, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, Num, TradingFeeInterface, Currencies } from './base/types.js';
3
3
  /**
4
4
  * @class latoken
5
5
  * @augments Exchange
@@ -10,7 +10,7 @@ export default class latoken extends Exchange {
10
10
  fetchTime(params?: {}): Promise<number>;
11
11
  fetchMarkets(params?: {}): Promise<Market[]>;
12
12
  fetchCurrenciesFromCache(params?: {}): Promise<any>;
13
- fetchCurrencies(params?: {}): Promise<{}>;
13
+ fetchCurrencies(params?: {}): Promise<Currencies>;
14
14
  fetchBalance(params?: {}): Promise<Balances>;
15
15
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
16
16
  parseTicker(ticker: any, market?: Market): Ticker;
@@ -18,23 +18,22 @@ export default class latoken extends Exchange {
18
18
  fetchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
19
19
  parseTrade(trade: any, market?: Market): Trade;
20
20
  fetchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
21
- fetchTradingFee(symbol: string, params?: {}): Promise<{
22
- info: any;
23
- symbol: string;
24
- maker: number;
25
- taker: number;
26
- }>;
21
+ fetchTradingFee(symbol: string, params?: {}): Promise<TradingFeeInterface>;
27
22
  fetchPublicTradingFee(symbol: string, params?: {}): Promise<{
28
23
  info: any;
29
24
  symbol: string;
30
25
  maker: number;
31
26
  taker: number;
27
+ percentage: any;
28
+ tierBased: any;
32
29
  }>;
33
30
  fetchPrivateTradingFee(symbol: string, params?: {}): Promise<{
34
31
  info: any;
35
32
  symbol: string;
36
33
  maker: number;
37
34
  taker: number;
35
+ percentage: any;
36
+ tierBased: any;
38
37
  }>;
39
38
  fetchMyTrades(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
40
39
  parseOrderStatus(status: any): string;
package/js/src/latoken.js CHANGED
@@ -878,6 +878,8 @@ export default class latoken extends Exchange {
878
878
  'symbol': market['symbol'],
879
879
  'maker': this.safeNumber(response, 'makerFee'),
880
880
  'taker': this.safeNumber(response, 'takerFee'),
881
+ 'percentage': undefined,
882
+ 'tierBased': undefined,
881
883
  };
882
884
  }
883
885
  async fetchPrivateTradingFee(symbol, params = {}) {
@@ -901,6 +903,8 @@ export default class latoken extends Exchange {
901
903
  'symbol': market['symbol'],
902
904
  'maker': this.safeNumber(response, 'makerFee'),
903
905
  'taker': this.safeNumber(response, 'takerFee'),
906
+ 'percentage': undefined,
907
+ 'tierBased': undefined,
904
908
  };
905
909
  }
906
910
  async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
package/js/src/lbank.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/lbank.js';
2
- import type { Balances, Currency, Int, Market, Num, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction } from './base/types.js';
2
+ import type { Balances, Currency, Int, Market, Num, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction } from './base/types.js';
3
3
  /**
4
4
  * @class lbank
5
5
  * @augments Exchange
@@ -20,14 +20,9 @@ export default class lbank extends Exchange {
20
20
  fetchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
21
21
  parseBalance(response: any): Balances;
22
22
  fetchBalance(params?: {}): Promise<Balances>;
23
- parseTradingFee(fee: any, market?: Market): {
24
- info: any;
25
- symbol: string;
26
- maker: number;
27
- taker: number;
28
- };
29
- fetchTradingFee(symbol: string, params?: {}): Promise<{}>;
30
- fetchTradingFees(params?: {}): Promise<{}>;
23
+ parseTradingFee(fee: any, market?: Market): TradingFeeInterface;
24
+ fetchTradingFee(symbol: string, params?: {}): Promise<TradingFeeInterface>;
25
+ fetchTradingFees(params?: {}): Promise<TradingFees>;
31
26
  createMarketBuyOrderWithCost(symbol: string, cost: number, params?: {}): Promise<Order>;
32
27
  createOrder(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: Num, params?: {}): Promise<Order>;
33
28
  parseOrderStatus(status: any): string;
package/js/src/lbank.js CHANGED
@@ -1244,6 +1244,8 @@ export default class lbank extends Exchange {
1244
1244
  'symbol': symbol,
1245
1245
  'maker': this.safeNumber(fee, 'makerCommission'),
1246
1246
  'taker': this.safeNumber(fee, 'takerCommission'),
1247
+ 'percentage': undefined,
1248
+ 'tierBased': undefined,
1247
1249
  };
1248
1250
  }
1249
1251
  async fetchTradingFee(symbol, params = {}) {
@@ -1258,7 +1260,7 @@ export default class lbank extends Exchange {
1258
1260
  */
1259
1261
  const market = this.market(symbol);
1260
1262
  const result = await this.fetchTradingFees(this.extend(params, { 'category': market['id'] }));
1261
- return result;
1263
+ return this.safeDict(result, symbol);
1262
1264
  }
1263
1265
  async fetchTradingFees(params = {}) {
1264
1266
  /**
package/js/src/luno.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/luno.js';
2
- import type { Balances, Currency, Int, Market, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, OHLCV, Num, Account } from './base/types.js';
2
+ import type { Balances, Currency, Int, Market, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, OHLCV, Num, Account, TradingFeeInterface } from './base/types.js';
3
3
  /**
4
4
  * @class luno
5
5
  * @augments Exchange
@@ -26,12 +26,7 @@ export default class luno extends Exchange {
26
26
  fetchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
27
27
  parseOHLCV(ohlcv: any, market?: Market): OHLCV;
28
28
  fetchMyTrades(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
29
- fetchTradingFee(symbol: string, params?: {}): Promise<{
30
- info: any;
31
- symbol: string;
32
- maker: number;
33
- taker: number;
34
- }>;
29
+ fetchTradingFee(symbol: string, params?: {}): Promise<TradingFeeInterface>;
35
30
  createOrder(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: Num, params?: {}): Promise<Order>;
36
31
  cancelOrder(id: string, symbol?: Str, params?: {}): Promise<any>;
37
32
  fetchLedgerByEntries(code?: Str, entry?: any, limit?: any, params?: {}): Promise<any>;
package/js/src/luno.js CHANGED
@@ -897,6 +897,8 @@ export default class luno extends Exchange {
897
897
  'symbol': symbol,
898
898
  'maker': this.safeNumber(response, 'maker_fee'),
899
899
  'taker': this.safeNumber(response, 'taker_fee'),
900
+ 'percentage': undefined,
901
+ 'tierBased': undefined,
900
902
  };
901
903
  }
902
904
  async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
package/js/src/lykke.d.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  import Exchange from './abstract/lykke.js';
2
- import type { IndexType, Balances, Currency, Int, Market, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, Num } from './base/types.js';
2
+ import type { IndexType, Balances, Currency, Int, Market, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, Num, Currencies } from './base/types.js';
3
3
  /**
4
4
  * @class lykke
5
5
  * @augments Exchange
6
6
  */
7
7
  export default class lykke extends Exchange {
8
8
  describe(): any;
9
- fetchCurrencies(params?: {}): Promise<{}>;
9
+ fetchCurrencies(params?: {}): Promise<Currencies>;
10
10
  fetchMarkets(params?: {}): Promise<Market[]>;
11
11
  parseTicker(ticker: any, market?: Market): Ticker;
12
12
  fetchTicker(symbol: string, params?: {}): Promise<Ticker>;
package/js/src/mexc.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/mexc.js';
2
- import type { TransferEntry, IndexType, Int, OrderSide, Balances, OrderType, OHLCV, FundingRateHistory, Position, OrderBook, OrderRequest, FundingHistory, Order, Str, Trade, Transaction, Ticker, Tickers, Strings, Market, Currency, Leverage, Num, Account, MarginModification } from './base/types.js';
2
+ import type { TransferEntry, IndexType, Int, OrderSide, Balances, OrderType, OHLCV, FundingRateHistory, Position, OrderBook, OrderRequest, FundingHistory, Order, Str, Trade, Transaction, Ticker, Tickers, Strings, Market, Currency, Leverage, Num, Account, MarginModification, Currencies, TradingFees } from './base/types.js';
3
3
  /**
4
4
  * @class mexc
5
5
  * @augments Exchange
@@ -14,7 +14,7 @@ export default class mexc extends Exchange {
14
14
  info: any;
15
15
  }>;
16
16
  fetchTime(params?: {}): Promise<number>;
17
- fetchCurrencies(params?: {}): Promise<{}>;
17
+ fetchCurrencies(params?: {}): Promise<Currencies>;
18
18
  fetchMarkets(params?: {}): Promise<Market[]>;
19
19
  fetchSpotMarkets(params?: {}): Promise<any[]>;
20
20
  fetchSwapMarkets(params?: {}): Promise<any[]>;
@@ -52,7 +52,7 @@ export default class mexc extends Exchange {
52
52
  parseOrderTimeInForce(status: any): string;
53
53
  fetchAccountHelper(type: any, params: any): Promise<any>;
54
54
  fetchAccounts(params?: {}): Promise<Account[]>;
55
- fetchTradingFees(params?: {}): Promise<{}>;
55
+ fetchTradingFees(params?: {}): Promise<TradingFees>;
56
56
  customParseBalance(response: any, marketType: any): Balances;
57
57
  parseBalanceHelper(entry: any): import("./base/types.js").BalanceAccount;
58
58
  fetchBalance(params?: {}): Promise<Balances>;
package/js/src/mexc.js CHANGED
@@ -4303,8 +4303,9 @@ export default class mexc extends Exchange {
4303
4303
  /**
4304
4304
  * @method
4305
4305
  * @name mexc#fetchLeverageTiers
4306
- * @description retrieve information on the maximum leverage, and maintenance margin for trades of varying trade sizes
4307
- * @param {string[]|undefined} symbols list of unified market symbols
4306
+ * @description retrieve information on the maximum leverage, and maintenance margin for trades of varying trade sizes, if a market has a leverage tier of 0, then the leverage tiers cannot be obtained for this market
4307
+ * @see https://mexcdevelop.github.io/apidocs/contract_v1_en/#get-the-contract-information
4308
+ * @param {string[]} [symbols] list of unified market symbols
4308
4309
  * @param {object} [params] extra parameters specific to the exchange API endpoint
4309
4310
  * @returns {object} a dictionary of [leverage tiers structures]{@link https://docs.ccxt.com/#/?id=leverage-tiers-structure}, indexed by market symbols
4310
4311
  */
@@ -4360,10 +4361,44 @@ export default class mexc extends Exchange {
4360
4361
  return this.parseLeverageTiers(data, symbols, 'symbol');
4361
4362
  }
4362
4363
  parseMarketLeverageTiers(info, market = undefined) {
4363
- /**
4364
- @param info {object} Exchange response for 1 market
4365
- @param market {object} CCXT market
4366
- */
4364
+ //
4365
+ // {
4366
+ // "symbol": "BTC_USDT",
4367
+ // "displayName": "BTC_USDT永续",
4368
+ // "displayNameEn": "BTC_USDT SWAP",
4369
+ // "positionOpenType": 3,
4370
+ // "baseCoin": "BTC",
4371
+ // "quoteCoin": "USDT",
4372
+ // "settleCoin": "USDT",
4373
+ // "contractSize": 0.0001,
4374
+ // "minLeverage": 1,
4375
+ // "maxLeverage": 125,
4376
+ // "priceScale": 2,
4377
+ // "volScale": 0,
4378
+ // "amountScale": 4,
4379
+ // "priceUnit": 0.5,
4380
+ // "volUnit": 1,
4381
+ // "minVol": 1,
4382
+ // "maxVol": 1000000,
4383
+ // "bidLimitPriceRate": 0.1,
4384
+ // "askLimitPriceRate": 0.1,
4385
+ // "takerFeeRate": 0.0006,
4386
+ // "makerFeeRate": 0.0002,
4387
+ // "maintenanceMarginRate": 0.004,
4388
+ // "initialMarginRate": 0.008,
4389
+ // "riskBaseVol": 10000,
4390
+ // "riskIncrVol": 200000,
4391
+ // "riskIncrMmr": 0.004,
4392
+ // "riskIncrImr": 0.004,
4393
+ // "riskLevelLimit": 5,
4394
+ // "priceCoefficientVariation": 0.1,
4395
+ // "indexOrigin": ["BINANCE","GATEIO","HUOBI","MXC"],
4396
+ // "state": 0, // 0 enabled, 1 delivery, 2 completed, 3 offline, 4 pause
4397
+ // "isNew": false,
4398
+ // "isHot": true,
4399
+ // "isHidden": false
4400
+ // }
4401
+ //
4367
4402
  let maintenanceMarginRate = this.safeString(info, 'maintenanceMarginRate');
4368
4403
  let initialMarginRate = this.safeString(info, 'initialMarginRate');
4369
4404
  const maxVol = this.safeString(info, 'maxVol');
@@ -4373,6 +4408,19 @@ export default class mexc extends Exchange {
4373
4408
  let floor = '0';
4374
4409
  const tiers = [];
4375
4410
  const quoteId = this.safeString(info, 'quoteCoin');
4411
+ if (riskIncrVol === '0') {
4412
+ return [
4413
+ {
4414
+ 'tier': 0,
4415
+ 'currency': this.safeCurrencyCode(quoteId),
4416
+ 'notionalFloor': undefined,
4417
+ 'notionalCap': undefined,
4418
+ 'maintenanceMarginRate': undefined,
4419
+ 'maxLeverage': this.safeNumber(info, 'maxLeverage'),
4420
+ 'info': info,
4421
+ },
4422
+ ];
4423
+ }
4376
4424
  while (Precise.stringLt(floor, maxVol)) {
4377
4425
  const cap = Precise.stringAdd(floor, riskIncrVol);
4378
4426
  tiers.push({
@@ -4515,7 +4563,7 @@ export default class mexc extends Exchange {
4515
4563
  }
4516
4564
  }
4517
4565
  if (result === undefined) {
4518
- throw new InvalidAddress(this.id + ' fetchDepositAddress() cannot find a deposit address for ' + code + ', and network' + network + 'consider creating one using the MEXC platform');
4566
+ throw new InvalidAddress(this.id + ' fetchDepositAddress() cannot find a deposit address for ' + code + ', and network' + network + 'consider creating one using .createDepositAddress() method or in MEXC website');
4519
4567
  }
4520
4568
  return result;
4521
4569
  }
package/js/src/ndax.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/ndax.js';
2
- import type { IndexType, Balances, Currency, Int, Market, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Ticker, Trade, Transaction, Num, Account } from './base/types.js';
2
+ import type { IndexType, Balances, Currency, Int, Market, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Ticker, Trade, Transaction, Num, Account, Currencies } from './base/types.js';
3
3
  /**
4
4
  * @class ndax
5
5
  * @augments Exchange
@@ -7,7 +7,7 @@ import type { IndexType, Balances, Currency, Int, Market, OHLCV, Order, OrderBoo
7
7
  export default class ndax extends Exchange {
8
8
  describe(): any;
9
9
  signIn(params?: {}): Promise<any>;
10
- fetchCurrencies(params?: {}): Promise<{}>;
10
+ fetchCurrencies(params?: {}): Promise<Currencies>;
11
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;
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/oceanex.js';
2
- import type { Balances, Dictionary, Int, Market, Num, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade } from './base/types.js';
2
+ import type { Balances, Dictionary, Int, Market, Num, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees } from './base/types.js';
3
3
  /**
4
4
  * @class oceanex
5
5
  * @augments Exchange
@@ -16,7 +16,7 @@ export default class oceanex extends Exchange {
16
16
  fetchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
17
17
  parseTrade(trade: any, market?: Market): Trade;
18
18
  fetchTime(params?: {}): Promise<number>;
19
- fetchTradingFees(params?: {}): Promise<{}>;
19
+ fetchTradingFees(params?: {}): Promise<TradingFees>;
20
20
  fetchKey(params?: {}): Promise<any>;
21
21
  parseBalance(response: any): Balances;
22
22
  fetchBalance(params?: {}): Promise<Balances>;
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/okcoin.js';
2
- import type { TransferEntry, Balances, Currency, Int, Market, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, Num } from './base/types.js';
2
+ import type { TransferEntry, Balances, Currency, Int, Market, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, Num, Currencies } from './base/types.js';
3
3
  /**
4
4
  * @class okcoin
5
5
  * @augments Exchange
@@ -10,7 +10,7 @@ export default class okcoin extends Exchange {
10
10
  fetchMarkets(params?: {}): Promise<Market[]>;
11
11
  parseMarket(market: any): Market;
12
12
  safeNetwork(networkId: any): string;
13
- fetchCurrencies(params?: {}): Promise<{}>;
13
+ fetchCurrencies(params?: {}): Promise<Currencies>;
14
14
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
15
15
  parseTicker(ticker: any, market?: Market): Ticker;
16
16
  fetchTicker(symbol: string, params?: {}): Promise<Ticker>;
package/js/src/okx.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/okx.js';
2
- import type { TransferEntry, Int, OrderSide, OrderType, Trade, OHLCV, Order, FundingRateHistory, OrderRequest, FundingHistory, Str, Transaction, Ticker, OrderBook, Balances, Tickers, Market, Greeks, Strings, MarketInterface, Currency, Leverage, Num, Account, OptionChain, Option, MarginModification } from './base/types.js';
2
+ import type { TransferEntry, Int, OrderSide, OrderType, Trade, OHLCV, Order, FundingRateHistory, OrderRequest, FundingHistory, Str, Transaction, Ticker, OrderBook, Balances, Tickers, Market, Greeks, Strings, MarketInterface, Currency, Leverage, Num, Account, OptionChain, Option, MarginModification, TradingFeeInterface, Currencies } from './base/types.js';
3
3
  /**
4
4
  * @class okx
5
5
  * @augments Exchange
@@ -23,7 +23,7 @@ export default class okx extends Exchange {
23
23
  parseMarket(market: any): Market;
24
24
  fetchMarketsByType(type: any, params?: {}): Promise<MarketInterface[]>;
25
25
  safeNetwork(networkId: any): string;
26
- fetchCurrencies(params?: {}): Promise<{}>;
26
+ fetchCurrencies(params?: {}): Promise<Currencies>;
27
27
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
28
28
  parseTicker(ticker: any, market?: Market): Ticker;
29
29
  fetchTicker(symbol: string, params?: {}): Promise<Ticker>;
@@ -36,18 +36,8 @@ export default class okx extends Exchange {
36
36
  parseBalanceByType(type: any, response: any): Balances;
37
37
  parseTradingBalance(response: any): Balances;
38
38
  parseFundingBalance(response: any): Balances;
39
- parseTradingFee(fee: any, market?: Market): {
40
- info: any;
41
- symbol: string;
42
- maker: number;
43
- taker: number;
44
- };
45
- fetchTradingFee(symbol: string, params?: {}): Promise<{
46
- info: any;
47
- symbol: string;
48
- maker: number;
49
- taker: number;
50
- }>;
39
+ parseTradingFee(fee: any, market?: Market): TradingFeeInterface;
40
+ fetchTradingFee(symbol: string, params?: {}): Promise<TradingFeeInterface>;
51
41
  fetchBalance(params?: {}): Promise<Balances>;
52
42
  createMarketBuyOrderWithCost(symbol: string, cost: number, params?: {}): Promise<Order>;
53
43
  createMarketSellOrderWithCost(symbol: string, cost: number, params?: {}): Promise<Order>;
package/js/src/okx.js CHANGED
@@ -2357,6 +2357,8 @@ export default class okx extends Exchange {
2357
2357
  // OKX returns the fees as negative values opposed to other exchanges, so the sign needs to be flipped
2358
2358
  'maker': this.parseNumber(Precise.stringNeg(this.safeString2(fee, 'maker', 'makerU'))),
2359
2359
  'taker': this.parseNumber(Precise.stringNeg(this.safeString2(fee, 'taker', 'takerU'))),
2360
+ 'percentage': undefined,
2361
+ 'tierBased': undefined,
2360
2362
  };
2361
2363
  }
2362
2364
  async fetchTradingFee(symbol, params = {}) {