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
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/bitmart.js';
2
- import type { Int, OrderSide, Balances, OrderType, OHLCV, Order, Str, Trade, Transaction, Ticker, OrderBook, Tickers, Strings, Currency, Market, TransferEntry, Num } from './base/types.js';
2
+ import type { Int, OrderSide, Balances, OrderType, OHLCV, Order, Str, Trade, Transaction, Ticker, OrderBook, Tickers, Strings, Currency, Market, TransferEntry, Num, TradingFeeInterface, Currencies } from './base/types.js';
3
3
  /**
4
4
  * @class bitmart
5
5
  * @augments Exchange
@@ -17,7 +17,7 @@ export default class bitmart extends Exchange {
17
17
  fetchSpotMarkets(params?: {}): Promise<any[]>;
18
18
  fetchContractMarkets(params?: {}): Promise<any[]>;
19
19
  fetchMarkets(params?: {}): Promise<Market[]>;
20
- fetchCurrencies(params?: {}): Promise<{}>;
20
+ fetchCurrencies(params?: {}): Promise<Currencies>;
21
21
  fetchTransactionFee(code: string, params?: {}): Promise<{
22
22
  info: any;
23
23
  withdraw: {};
@@ -49,18 +49,8 @@ export default class bitmart extends Exchange {
49
49
  customParseBalance(response: any, marketType: any): Balances;
50
50
  parseBalanceHelper(entry: any): import("./base/types.js").BalanceAccount;
51
51
  fetchBalance(params?: {}): Promise<Balances>;
52
- parseTradingFee(fee: any, market?: Market): {
53
- info: any;
54
- symbol: string;
55
- maker: number;
56
- taker: number;
57
- };
58
- fetchTradingFee(symbol: string, params?: {}): Promise<{
59
- info: any;
60
- symbol: string;
61
- maker: number;
62
- taker: number;
63
- }>;
52
+ parseTradingFee(fee: any, market?: Market): TradingFeeInterface;
53
+ fetchTradingFee(symbol: string, params?: {}): Promise<TradingFeeInterface>;
64
54
  parseOrder(order: any, market?: Market): Order;
65
55
  parseOrderSide(side: any): string;
66
56
  parseOrderStatusByType(type: any, status: any): string;
package/js/src/bitmart.js CHANGED
@@ -2098,6 +2098,8 @@ export default class bitmart extends Exchange {
2098
2098
  'symbol': symbol,
2099
2099
  'maker': this.safeNumber(fee, 'maker_fee_rate'),
2100
2100
  'taker': this.safeNumber(fee, 'taker_fee_rate'),
2101
+ 'percentage': undefined,
2102
+ 'tierBased': undefined,
2101
2103
  };
2102
2104
  }
2103
2105
  async fetchTradingFee(symbol, params = {}) {
@@ -1,12 +1,12 @@
1
1
  import Exchange from './abstract/bitmex.js';
2
- import type { Int, OrderSide, OrderType, Trade, OHLCV, Order, Liquidation, OrderBook, Balances, Str, Transaction, Ticker, Tickers, Market, Strings, Currency, Leverage, Leverages, Num } from './base/types.js';
2
+ import type { Int, OrderSide, OrderType, Trade, OHLCV, Order, Liquidation, OrderBook, Balances, Str, Transaction, Ticker, Tickers, Market, Strings, Currency, Leverage, Leverages, Num, Currencies } from './base/types.js';
3
3
  /**
4
4
  * @class bitmex
5
5
  * @augments Exchange
6
6
  */
7
7
  export default class bitmex extends Exchange {
8
8
  describe(): any;
9
- fetchCurrencies(params?: {}): Promise<{}>;
9
+ fetchCurrencies(params?: {}): Promise<Currencies>;
10
10
  convertFromRealAmount(code: any, amount: any): number;
11
11
  convertToRealAmount(code: Str, amount: Str): string;
12
12
  amountToPrecision(symbol: any, amount: any): any;
@@ -1,12 +1,12 @@
1
1
  import Exchange from './abstract/bitopro.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 bitopro
5
5
  * @augments Exchange
6
6
  */
7
7
  export default class bitopro extends Exchange {
8
8
  describe(): any;
9
- fetchCurrencies(params?: {}): Promise<{}>;
9
+ fetchCurrencies(params?: {}): Promise<Currencies>;
10
10
  fetchMarkets(params?: {}): Promise<Market[]>;
11
11
  parseMarket(market: any): Market;
12
12
  parseTicker(ticker: any, market?: Market): Ticker;
@@ -15,7 +15,7 @@ export default class bitopro extends Exchange {
15
15
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
16
16
  parseTrade(trade: any, market?: Market): Trade;
17
17
  fetchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
18
- fetchTradingFees(params?: {}): Promise<{}>;
18
+ fetchTradingFees(params?: {}): Promise<TradingFees>;
19
19
  parseOHLCV(ohlcv: any, market?: Market): OHLCV;
20
20
  fetchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
21
21
  insertMissingCandles(candles: any, distance: any, since: any, limit: any): any;
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/bitrue.js';
2
- import type { Balances, Currency, Int, MarginModification, Market, Num, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry } from './base/types.js';
2
+ import type { Balances, Currencies, Currency, Int, MarginModification, Market, Num, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry } from './base/types.js';
3
3
  /**
4
4
  * @class bitrue
5
5
  * @augments Exchange
@@ -17,7 +17,7 @@ export default class bitrue extends Exchange {
17
17
  }>;
18
18
  fetchTime(params?: {}): Promise<number>;
19
19
  safeNetwork(networkId: any): string;
20
- fetchCurrencies(params?: {}): Promise<{}>;
20
+ fetchCurrencies(params?: {}): Promise<Currencies>;
21
21
  fetchMarkets(params?: {}): Promise<Market[]>;
22
22
  parseMarket(market: any): Market;
23
23
  parseBalance(response: any): Balances;
package/js/src/bitso.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/bitso.js';
2
- import type { Balances, Currency, Int, Market, Num, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Trade, Transaction } from './base/types.js';
2
+ import type { Balances, Currency, Int, Market, Num, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Trade, TradingFees, Transaction } from './base/types.js';
3
3
  /**
4
4
  * @class bitso
5
5
  * @augments Exchange
@@ -35,7 +35,7 @@ export default class bitso extends Exchange {
35
35
  parseOHLCV(ohlcv: any, market?: Market): OHLCV;
36
36
  parseTrade(trade: any, market?: Market): Trade;
37
37
  fetchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
38
- fetchTradingFees(params?: {}): Promise<{}>;
38
+ fetchTradingFees(params?: {}): Promise<TradingFees>;
39
39
  fetchMyTrades(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
40
40
  createOrder(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: Num, params?: {}): Promise<Order>;
41
41
  cancelOrder(id: string, symbol?: Str, params?: {}): Promise<any>;
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/bitstamp.js';
2
- import type { Balances, Currency, Int, Market, Num, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry } from './base/types.js';
2
+ import type { Balances, Currencies, Currency, Int, Market, Num, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry } from './base/types.js';
3
3
  /**
4
4
  * @class bitstamp
5
5
  * @augments Exchange
@@ -39,7 +39,7 @@ export default class bitstamp extends Exchange {
39
39
  networks: {};
40
40
  };
41
41
  fetchMarketsFromCache(params?: {}): Promise<any>;
42
- fetchCurrencies(params?: {}): Promise<{}>;
42
+ fetchCurrencies(params?: {}): Promise<Currencies>;
43
43
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
44
44
  parseTicker(ticker: any, market?: Market): Ticker;
45
45
  fetchTicker(symbol: string, params?: {}): Promise<Ticker>;
@@ -52,28 +52,16 @@ export default class bitstamp extends Exchange {
52
52
  fetchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
53
53
  parseBalance(response: any): Balances;
54
54
  fetchBalance(params?: {}): Promise<Balances>;
55
- fetchTradingFee(symbol: string, params?: {}): Promise<{
56
- info: any;
57
- symbol: string;
58
- maker: number;
59
- taker: number;
60
- }>;
61
- parseTradingFee(fee: any, market?: Market): {
62
- info: any;
63
- symbol: string;
64
- maker: number;
65
- taker: number;
66
- };
55
+ fetchTradingFee(symbol: string, params?: {}): Promise<TradingFeeInterface>;
56
+ parseTradingFee(fee: any, market?: Market): TradingFeeInterface;
67
57
  parseTradingFees(fees: any): {
68
58
  info: any;
69
59
  };
70
- fetchTradingFees(params?: {}): Promise<{
71
- info: any;
72
- }>;
60
+ fetchTradingFees(params?: {}): Promise<TradingFees>;
73
61
  fetchTransactionFees(codes?: string[], params?: {}): Promise<{}>;
74
62
  parseTransactionFees(response: any, codes?: any): {};
75
- fetchDepositWithdrawFees(codes?: Strings, params?: {}): Promise<{}>;
76
- parseDepositWithdrawFees(response: any, codes?: any, currencyIdKey?: any): {};
63
+ fetchDepositWithdrawFees(codes?: any, params?: {}): Promise<any>;
64
+ parseDepositWithdrawFee(fee: any, currency?: any): any;
77
65
  createOrder(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: Num, params?: {}): Promise<Order>;
78
66
  cancelOrder(id: string, symbol?: Str, params?: {}): Promise<any>;
79
67
  cancelAllOrders(symbol?: Str, params?: {}): Promise<any>;
@@ -431,6 +431,30 @@ export default class bitstamp extends Exchange {
431
431
  'commonCurrencies': {
432
432
  'UST': 'USTC',
433
433
  },
434
+ // exchange-specific options
435
+ 'options': {
436
+ 'networksById': {
437
+ 'bitcoin-cash': 'BCH',
438
+ 'bitcoin': 'BTC',
439
+ 'ethereum': 'ERC20',
440
+ 'litecoin': 'LTC',
441
+ 'stellar': 'XLM',
442
+ 'xrpl': 'XRP',
443
+ 'tron': 'TRC20',
444
+ 'algorand': 'ALGO',
445
+ 'flare': 'FLR',
446
+ 'hedera': 'HBAR',
447
+ 'cardana': 'ADA',
448
+ 'songbird': 'FLR',
449
+ 'avalanche-c-chain': 'AVAX',
450
+ 'solana': 'SOL',
451
+ 'polkadot': 'DOT',
452
+ 'near': 'NEAR',
453
+ 'doge': 'DOGE',
454
+ 'sui': 'SUI',
455
+ 'casper': 'CSRP',
456
+ },
457
+ },
434
458
  'exceptions': {
435
459
  'exact': {
436
460
  'No permission found': PermissionDenied,
@@ -1203,6 +1227,8 @@ export default class bitstamp extends Exchange {
1203
1227
  'symbol': this.safeSymbol(marketId, market),
1204
1228
  'maker': this.safeNumber(fees, 'maker'),
1205
1229
  'taker': this.safeNumber(fees, 'taker'),
1230
+ 'percentage': undefined,
1231
+ 'tierBased': undefined,
1206
1232
  };
1207
1233
  }
1208
1234
  parseTradingFees(fees) {
@@ -1248,60 +1274,41 @@ export default class bitstamp extends Exchange {
1248
1274
  * @name bitstamp#fetchTransactionFees
1249
1275
  * @deprecated
1250
1276
  * @description please use fetchDepositWithdrawFees instead
1251
- * @see https://www.bitstamp.net/api/#balance
1277
+ * @see https://www.bitstamp.net/api/#tag/Fees
1252
1278
  * @param {string[]|undefined} codes list of unified currency codes
1253
1279
  * @param {object} [params] extra parameters specific to the exchange API endpoint
1254
1280
  * @returns {object[]} a list of [fee structures]{@link https://docs.ccxt.com/#/?id=fee-structure}
1255
1281
  */
1256
1282
  await this.loadMarkets();
1257
- const balance = await this.privatePostBalance(params);
1258
- return this.parseTransactionFees(balance);
1283
+ const response = await this.privatePostFeesWithdrawal(params);
1284
+ //
1285
+ // [
1286
+ // {
1287
+ // "currency": "btc",
1288
+ // "fee": "0.00015000",
1289
+ // "network": "bitcoin"
1290
+ // }
1291
+ // ...
1292
+ // ]
1293
+ //
1294
+ return this.parseTransactionFees(response);
1259
1295
  }
1260
1296
  parseTransactionFees(response, codes = undefined) {
1261
- //
1262
- // {
1263
- // "yfi_available": "0.00000000",
1264
- // "yfi_balance": "0.00000000",
1265
- // "yfi_reserved": "0.00000000",
1266
- // "yfi_withdrawal_fee": "0.00070000",
1267
- // "yfieur_fee": "0.000",
1268
- // "yfiusd_fee": "0.000",
1269
- // "zrx_available": "0.00000000",
1270
- // "zrx_balance": "0.00000000",
1271
- // "zrx_reserved": "0.00000000",
1272
- // "zrx_withdrawal_fee": "12.00000000",
1273
- // "zrxeur_fee": "0.000",
1274
- // "zrxusd_fee": "0.000",
1275
- // ...
1276
- // }
1277
- //
1278
- if (codes === undefined) {
1279
- codes = Object.keys(this.currencies);
1280
- }
1281
1297
  const result = {};
1282
- let mainCurrencyId = undefined;
1283
- const ids = Object.keys(response);
1298
+ const currencies = this.indexBy(response, 'currency');
1299
+ const ids = Object.keys(currencies);
1284
1300
  for (let i = 0; i < ids.length; i++) {
1285
1301
  const id = ids[i];
1286
- const currencyId = id.split('_')[0];
1287
- const code = this.safeCurrencyCode(currencyId);
1288
- if (codes !== undefined && !this.inArray(code, codes)) {
1302
+ const fees = this.safeValue(response, i, {});
1303
+ const code = this.safeCurrencyCode(id);
1304
+ if ((codes !== undefined) && !this.inArray(code, codes)) {
1289
1305
  continue;
1290
1306
  }
1291
- if (id.indexOf('_available') >= 0) {
1292
- mainCurrencyId = currencyId;
1293
- result[code] = {
1294
- 'deposit': undefined,
1295
- 'withdraw': undefined,
1296
- 'info': {},
1297
- };
1298
- }
1299
- if (currencyId === mainCurrencyId) {
1300
- result[code]['info'][id] = this.safeNumber(response, id);
1301
- }
1302
- if (id.indexOf('_withdrawal_fee') >= 0) {
1303
- result[code]['withdraw'] = this.safeNumber(response, id);
1304
- }
1307
+ result[code] = {
1308
+ 'withdraw_fee': this.safeNumber(fees, 'fee'),
1309
+ 'deposit': {},
1310
+ 'info': this.safeDict(currencies, id),
1311
+ };
1305
1312
  }
1306
1313
  return result;
1307
1314
  }
@@ -1316,64 +1323,41 @@ export default class bitstamp extends Exchange {
1316
1323
  * @returns {object[]} a list of [fee structures]{@link https://docs.ccxt.com/#/?id=fee-structure}
1317
1324
  */
1318
1325
  await this.loadMarkets();
1319
- const response = await this.privatePostBalance(params);
1320
- //
1321
- // {
1322
- // "yfi_available": "0.00000000",
1323
- // "yfi_balance": "0.00000000",
1324
- // "yfi_reserved": "0.00000000",
1325
- // "yfi_withdrawal_fee": "0.00070000",
1326
- // "yfieur_fee": "0.000",
1327
- // "yfiusd_fee": "0.000",
1328
- // "zrx_available": "0.00000000",
1329
- // "zrx_balance": "0.00000000",
1330
- // "zrx_reserved": "0.00000000",
1331
- // "zrx_withdrawal_fee": "12.00000000",
1332
- // "zrxeur_fee": "0.000",
1333
- // "zrxusd_fee": "0.000",
1334
- // ...
1335
- // }
1336
- //
1337
- return this.parseDepositWithdrawFees(response, codes);
1338
- }
1339
- parseDepositWithdrawFees(response, codes = undefined, currencyIdKey = undefined) {
1340
- //
1341
- // {
1342
- // "yfi_available": "0.00000000",
1343
- // "yfi_balance": "0.00000000",
1344
- // "yfi_reserved": "0.00000000",
1345
- // "yfi_withdrawal_fee": "0.00070000",
1346
- // "yfieur_fee": "0.000",
1347
- // "yfiusd_fee": "0.000",
1348
- // "zrx_available": "0.00000000",
1349
- // "zrx_balance": "0.00000000",
1350
- // "zrx_reserved": "0.00000000",
1351
- // "zrx_withdrawal_fee": "12.00000000",
1352
- // "zrxeur_fee": "0.000",
1353
- // "zrxusd_fee": "0.000",
1354
- // ...
1355
- // }
1326
+ const response = await this.privatePostFeesWithdrawal(params);
1356
1327
  //
1357
- const result = {};
1358
- const ids = Object.keys(response);
1359
- for (let i = 0; i < ids.length; i++) {
1360
- const id = ids[i];
1361
- const currencyId = id.split('_')[0];
1362
- const code = this.safeCurrencyCode(currencyId);
1363
- const dictValue = this.safeNumber(response, id);
1364
- if (codes !== undefined && !this.inArray(code, codes)) {
1365
- continue;
1366
- }
1367
- if (id.indexOf('_available') >= 0) {
1368
- result[code] = this.depositWithdrawFee({});
1369
- }
1370
- if (id.indexOf('_withdrawal_fee') >= 0) {
1371
- result[code]['withdraw']['fee'] = dictValue;
1372
- }
1373
- const resultValue = this.safeValue(result, code);
1374
- if (resultValue !== undefined) {
1375
- result[code]['info'][id] = dictValue;
1376
- }
1328
+ // [
1329
+ // {
1330
+ // "currency": "btc",
1331
+ // "fee": "0.00015000",
1332
+ // "network": "bitcoin"
1333
+ // }
1334
+ // ...
1335
+ // ]
1336
+ //
1337
+ const responseByCurrencyId = this.groupBy(response, 'currency');
1338
+ return this.parseDepositWithdrawFees(responseByCurrencyId, codes);
1339
+ }
1340
+ parseDepositWithdrawFee(fee, currency = undefined) {
1341
+ const result = this.depositWithdrawFee(fee);
1342
+ for (let j = 0; j < fee.length; j++) {
1343
+ const networkEntry = fee[j];
1344
+ const networkId = this.safeString(networkEntry, 'network');
1345
+ const networkCode = this.networkIdToCode(networkId);
1346
+ const withdrawFee = this.safeNumber(networkEntry, 'fee');
1347
+ result['withdraw'] = {
1348
+ 'fee': withdrawFee,
1349
+ 'percentage': undefined,
1350
+ };
1351
+ result['networks'][networkCode] = {
1352
+ 'withdraw': {
1353
+ 'fee': withdrawFee,
1354
+ 'percentage': undefined,
1355
+ },
1356
+ 'deposit': {
1357
+ 'fee': undefined,
1358
+ 'percentage': undefined,
1359
+ },
1360
+ };
1377
1361
  }
1378
1362
  return result;
1379
1363
  }
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/bitteam.js';
2
- import { Balances, Currency, Int, Market, Num, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction } from './base/types.js';
2
+ import { Balances, Currencies, Currency, Int, Market, Num, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction } from './base/types.js';
3
3
  /**
4
4
  * @class bitteam
5
5
  * @augments Exchange
@@ -8,7 +8,7 @@ export default class bitteam extends Exchange {
8
8
  describe(): any;
9
9
  fetchMarkets(params?: {}): Promise<Market[]>;
10
10
  parseMarket(market: any): Market;
11
- fetchCurrencies(params?: {}): Promise<{}>;
11
+ fetchCurrencies(params?: {}): Promise<Currencies>;
12
12
  fetchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
13
13
  parseOHLCV(ohlcv: any, market?: Market): OHLCV;
14
14
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/bitvavo.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 bitvavo
5
5
  * @augments Exchange
@@ -12,14 +12,14 @@ export default class bitvavo extends Exchange {
12
12
  fetchTime(params?: {}): Promise<number>;
13
13
  fetchMarkets(params?: {}): Promise<Market[]>;
14
14
  parseMarkets(markets: any): any[];
15
- fetchCurrencies(params?: {}): Promise<{}>;
15
+ fetchCurrencies(params?: {}): Promise<Currencies>;
16
16
  parseCurrencies(currencies: any): {};
17
17
  fetchTicker(symbol: string, params?: {}): Promise<Ticker>;
18
18
  parseTicker(ticker: any, market?: Market): Ticker;
19
19
  fetchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
20
20
  fetchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
21
21
  parseTrade(trade: any, market?: Market): Trade;
22
- fetchTradingFees(params?: {}): Promise<{}>;
22
+ fetchTradingFees(params?: {}): Promise<TradingFees>;
23
23
  parseTradingFees(fees: any, market?: any): {};
24
24
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
25
25
  parseOHLCV(ohlcv: any, market?: Market): OHLCV;
package/js/src/bl3p.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/bl3p.js';
2
- import type { Balances, Int, Market, OrderBook, OrderSide, OrderType, Str, Ticker, Trade, IndexType, Currency, Num } from './base/types.js';
2
+ import type { Balances, Int, Market, OrderBook, OrderSide, OrderType, Str, Ticker, Trade, IndexType, Currency, Num, TradingFees } from './base/types.js';
3
3
  /**
4
4
  * @class bl3p
5
5
  * @augments Exchange
@@ -14,7 +14,7 @@ export default class bl3p extends Exchange {
14
14
  fetchTicker(symbol: string, params?: {}): Promise<Ticker>;
15
15
  parseTrade(trade: any, market?: Market): Trade;
16
16
  fetchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
17
- fetchTradingFees(params?: {}): Promise<{}>;
17
+ fetchTradingFees(params?: {}): Promise<TradingFees>;
18
18
  createOrder(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: Num, params?: {}): Promise<import("./base/types.js").Order>;
19
19
  cancelOrder(id: string, symbol?: Str, params?: {}): Promise<any>;
20
20
  createDepositAddress(code: string, params?: {}): Promise<{
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/blockchaincom.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, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction } from './base/types.js';
3
3
  /**
4
4
  * @class blockchaincom
5
5
  * @augments Exchange
@@ -24,7 +24,7 @@ export default class blockchaincom extends Exchange {
24
24
  symbol: string;
25
25
  info: any;
26
26
  }>;
27
- fetchTradingFees(params?: {}): Promise<{}>;
27
+ fetchTradingFees(params?: {}): Promise<TradingFees>;
28
28
  fetchCanceledOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
29
29
  fetchClosedOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
30
30
  fetchOpenOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/blofin.js';
2
- import type { Int, OrderSide, OrderType, Trade, OHLCV, Order, FundingRateHistory, OrderRequest, Str, Transaction, Ticker, OrderBook, Balances, Tickers, Market, Strings, Currency, Position, TransferEntry, Leverage, Leverages, MarginMode, Num } from './base/types.js';
2
+ import type { Int, OrderSide, OrderType, Trade, OHLCV, Order, FundingRateHistory, OrderRequest, Str, Transaction, Ticker, OrderBook, Balances, Tickers, Market, Strings, Currency, Position, TransferEntry, Leverage, Leverages, MarginMode, Num, TradingFeeInterface } from './base/types.js';
3
3
  /**
4
4
  * @class blofin
5
5
  * @augments Exchange
@@ -58,12 +58,7 @@ export default class blofin extends Exchange {
58
58
  parseBalanceByType(type: any, response: any): Balances;
59
59
  parseTradingBalance(response: any): Balances;
60
60
  parseFundingBalance(response: any): Balances;
61
- parseTradingFee(fee: any, market?: Market): {
62
- info: any;
63
- symbol: string;
64
- maker: number;
65
- taker: number;
66
- };
61
+ parseTradingFee(fee: any, market?: Market): TradingFeeInterface;
67
62
  fetchBalance(params?: {}): Promise<Balances>;
68
63
  createOrderRequest(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: Num, params?: {}): any;
69
64
  parseOrderStatus(status: any): string;
package/js/src/blofin.js CHANGED
@@ -944,6 +944,8 @@ export default class blofin extends Exchange {
944
944
  // blofin returns the fees as negative values opposed to other exchanges, so the sign needs to be flipped
945
945
  'maker': this.parseNumber(Precise.stringNeg(this.safeString2(fee, 'maker', 'makerU'))),
946
946
  'taker': this.parseNumber(Precise.stringNeg(this.safeString2(fee, 'taker', 'takerU'))),
947
+ 'percentage': undefined,
948
+ 'tierBased': undefined,
947
949
  };
948
950
  }
949
951
  async fetchBalance(params = {}) {
package/js/src/bybit.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/bybit.js';
2
- import type { Int, OrderSide, OrderType, Trade, Order, OHLCV, FundingRateHistory, OpenInterest, OrderRequest, Balances, Str, Transaction, Ticker, OrderBook, Tickers, Greeks, Strings, Market, Currency, MarketInterface, TransferEntry, Liquidation, Leverage, Num, FundingHistory, Option, OptionChain } from './base/types.js';
2
+ import type { Int, OrderSide, OrderType, Trade, Order, OHLCV, FundingRateHistory, OpenInterest, OrderRequest, Balances, Str, Transaction, Ticker, OrderBook, Tickers, Greeks, Strings, Market, Currency, MarketInterface, TransferEntry, Liquidation, Leverage, Num, FundingHistory, Option, OptionChain, TradingFeeInterface, Currencies, TradingFees } from './base/types.js';
3
3
  /**
4
4
  * @class bybit
5
5
  * @augments Exchange
@@ -14,7 +14,7 @@ export default class bybit extends Exchange {
14
14
  safeMarket(marketId?: Str, market?: Market, delimiter?: Str, marketType?: Str): MarketInterface;
15
15
  getBybitType(method: any, market: any, params?: {}): any[];
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: any): Promise<any[]>;
20
20
  fetchFutureMarkets(params: any): Promise<any[]>;
@@ -188,19 +188,9 @@ export default class bybit extends Exchange {
188
188
  };
189
189
  fetchDerivativesMarketLeverageTiers(symbol: string, params?: {}): Promise<any[]>;
190
190
  fetchMarketLeverageTiers(symbol: string, params?: {}): Promise<any[]>;
191
- parseTradingFee(fee: any, market?: Market): {
192
- info: any;
193
- symbol: string;
194
- maker: number;
195
- taker: number;
196
- };
197
- fetchTradingFee(symbol: string, params?: {}): Promise<{
198
- info: any;
199
- symbol: string;
200
- maker: number;
201
- taker: number;
202
- }>;
203
- fetchTradingFees(params?: {}): Promise<{}>;
191
+ parseTradingFee(fee: any, market?: Market): TradingFeeInterface;
192
+ fetchTradingFee(symbol: string, params?: {}): Promise<TradingFeeInterface>;
193
+ fetchTradingFees(params?: {}): Promise<TradingFees>;
204
194
  parseDepositWithdrawFee(fee: any, currency?: Currency): {
205
195
  info: any;
206
196
  withdraw: {
package/js/src/bybit.js CHANGED
@@ -7271,6 +7271,8 @@ export default class bybit extends Exchange {
7271
7271
  'symbol': symbol,
7272
7272
  'maker': this.safeNumber(fee, 'makerFeeRate'),
7273
7273
  'taker': this.safeNumber(fee, 'takerFeeRate'),
7274
+ 'percentage': undefined,
7275
+ 'tierBased': undefined,
7274
7276
  };
7275
7277
  }
7276
7278
  async fetchTradingFee(symbol, params = {}) {
package/js/src/cex.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/cex.js';
2
- import type { Balances, Int, Market, Num, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade } from './base/types.js';
2
+ import type { Balances, Currencies, Int, Market, Num, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees } from './base/types.js';
3
3
  /**
4
4
  * @class cex
5
5
  * @augments Exchange
@@ -7,7 +7,7 @@ import type { Balances, Int, Market, Num, OHLCV, Order, OrderBook, OrderSide, Or
7
7
  export default class cex extends Exchange {
8
8
  describe(): any;
9
9
  fetchCurrenciesFromCache(params?: {}): Promise<any>;
10
- fetchCurrencies(params?: {}): Promise<{}>;
10
+ fetchCurrencies(params?: {}): Promise<Currencies>;
11
11
  fetchMarkets(params?: {}): Promise<Market[]>;
12
12
  parseBalance(response: any): Balances;
13
13
  fetchBalance(params?: {}): Promise<Balances>;
@@ -19,7 +19,7 @@ export default class cex extends Exchange {
19
19
  fetchTicker(symbol: string, params?: {}): Promise<Ticker>;
20
20
  parseTrade(trade: any, market?: Market): Trade;
21
21
  fetchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
22
- fetchTradingFees(params?: {}): Promise<{}>;
22
+ fetchTradingFees(params?: {}): Promise<TradingFees>;
23
23
  createOrder(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: Num, params?: {}): Promise<Order>;
24
24
  cancelOrder(id: string, symbol?: Str, params?: {}): Promise<any>;
25
25
  cancelAllOrders(symbol?: Str, params?: {}): Promise<any>;
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/coinbase.js';
2
- import type { Int, OrderSide, OrderType, Order, Trade, OHLCV, Ticker, OrderBook, Str, Transaction, Balances, Tickers, Strings, Market, Currency, Num, Account } from './base/types.js';
2
+ import type { Int, OrderSide, OrderType, Order, Trade, OHLCV, Ticker, OrderBook, Str, Transaction, Balances, Tickers, Strings, Market, Currency, Num, Account, Currencies } from './base/types.js';
3
3
  /**
4
4
  * @class coinbase
5
5
  * @augments Exchange
@@ -34,7 +34,7 @@ export default class coinbase extends Exchange {
34
34
  fetchMarketsV2(params?: {}): Promise<any[]>;
35
35
  fetchMarketsV3(params?: {}): Promise<any[]>;
36
36
  fetchCurrenciesFromCache(params?: {}): Promise<import("./base/types.js").Dictionary<any>>;
37
- fetchCurrencies(params?: {}): Promise<{}>;
37
+ fetchCurrencies(params?: {}): Promise<Currencies>;
38
38
  fetchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
39
39
  fetchTickersV2(symbols?: Strings, params?: {}): Promise<import("./base/types.js").Dictionary<Ticker>>;
40
40
  fetchTickersV3(symbols?: Strings, params?: {}): Promise<import("./base/types.js").Dictionary<Ticker>>;
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/coinbaseinternational.js';
2
- import type { Int, OrderSide, OrderType, Order, Trade, Ticker, Str, Transaction, Balances, Tickers, Strings, Market, Currency, TransferEntry, Position, FundingRateHistory } from './base/types.js';
2
+ import type { Int, OrderSide, OrderType, Order, Trade, Ticker, Str, Transaction, Balances, Tickers, Strings, Market, Currency, TransferEntry, Position, FundingRateHistory, Currencies } from './base/types.js';
3
3
  /**
4
4
  * @class coinbaseinternational
5
5
  * @augments Exchange
@@ -78,7 +78,7 @@ export default class coinbaseinternational extends Exchange {
78
78
  parseTrade(trade: any, market?: Market): Trade;
79
79
  fetchMarkets(params?: {}): Promise<Market[]>;
80
80
  parseMarket(market: any): Market;
81
- fetchCurrencies(params?: {}): Promise<any>;
81
+ fetchCurrencies(params?: {}): Promise<Currencies>;
82
82
  parseCurrency(currency: any): {
83
83
  id: string;
84
84
  name: string;
@@ -1,12 +1,12 @@
1
1
  import Exchange from './abstract/coinbasepro.js';
2
- import type { Int, OrderSide, OrderType, Trade, OHLCV, Order, Balances, Str, Transaction, Ticker, OrderBook, Tickers, Strings, Market, Currency, Num, Account } from './base/types.js';
2
+ import type { Int, OrderSide, OrderType, Trade, OHLCV, Order, Balances, Str, Transaction, Ticker, OrderBook, Tickers, Strings, Market, Currency, Num, Account, Currencies, TradingFees } from './base/types.js';
3
3
  /**
4
4
  * @class coinbasepro
5
5
  * @augments Exchange
6
6
  */
7
7
  export default class coinbasepro extends Exchange {
8
8
  describe(): any;
9
- fetchCurrencies(params?: {}): Promise<{}>;
9
+ fetchCurrencies(params?: {}): Promise<Currencies>;
10
10
  fetchMarkets(params?: {}): Promise<Market[]>;
11
11
  fetchAccounts(params?: {}): Promise<Account[]>;
12
12
  parseAccount(account: any): {
@@ -24,7 +24,7 @@ export default class coinbasepro extends Exchange {
24
24
  parseTrade(trade: any, market?: Market): Trade;
25
25
  fetchMyTrades(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
26
26
  fetchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
27
- fetchTradingFees(params?: {}): Promise<{}>;
27
+ fetchTradingFees(params?: {}): Promise<TradingFees>;
28
28
  parseOHLCV(ohlcv: any, market?: Market): OHLCV;
29
29
  fetchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
30
30
  fetchTime(params?: {}): Promise<number>;