ccxt 4.3.83 → 4.3.85

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 (41) hide show
  1. package/README.md +3 -3
  2. package/dist/ccxt.browser.min.js +2 -2
  3. package/dist/cjs/ccxt.js +2 -1
  4. package/dist/cjs/src/base/errors.js +8 -1
  5. package/dist/cjs/src/binance.js +1 -1
  6. package/dist/cjs/src/bitfinex2.js +2 -2
  7. package/dist/cjs/src/bitmex.js +4 -0
  8. package/dist/cjs/src/bybit.js +15 -14
  9. package/dist/cjs/src/cryptocom.js +117 -2
  10. package/dist/cjs/src/kraken.js +34 -8
  11. package/dist/cjs/src/kucoinfutures.js +5 -0
  12. package/dist/cjs/src/mexc.js +2 -2
  13. package/dist/cjs/src/pro/binance.js +7 -2
  14. package/dist/cjs/src/pro/bitget.js +113 -4
  15. package/dist/cjs/src/pro/bitrue.js +1 -9
  16. package/dist/cjs/src/pro/gate.js +4 -4
  17. package/dist/cjs/src/pro/okx.js +25 -4
  18. package/js/ccxt.d.ts +3 -3
  19. package/js/ccxt.js +3 -3
  20. package/js/src/abstract/cryptocom.d.ts +2 -0
  21. package/js/src/abstract/kucoinfutures.d.ts +2 -0
  22. package/js/src/base/errorHierarchy.d.ts +1 -0
  23. package/js/src/base/errorHierarchy.js +1 -0
  24. package/js/src/base/errors.d.ts +5 -1
  25. package/js/src/base/errors.js +8 -2
  26. package/js/src/binance.js +1 -1
  27. package/js/src/bitfinex2.js +2 -2
  28. package/js/src/bitmex.js +4 -0
  29. package/js/src/bybit.js +16 -15
  30. package/js/src/cryptocom.d.ts +5 -1
  31. package/js/src/cryptocom.js +117 -2
  32. package/js/src/kraken.js +34 -8
  33. package/js/src/kucoinfutures.js +5 -0
  34. package/js/src/mexc.js +2 -2
  35. package/js/src/pro/binance.js +7 -2
  36. package/js/src/pro/bitget.d.ts +4 -0
  37. package/js/src/pro/bitget.js +113 -4
  38. package/js/src/pro/bitrue.js +1 -9
  39. package/js/src/pro/gate.js +4 -4
  40. package/js/src/pro/okx.js +25 -4
  41. package/package.json +1 -1
@@ -1514,7 +1514,7 @@ class gate extends gate$1 {
1514
1514
  const errs = this.safeDict(data, 'errs');
1515
1515
  const error = this.safeDict(message, 'error', errs);
1516
1516
  const code = this.safeString2(error, 'code', 'label');
1517
- const id = this.safeString2(message, 'id', 'requestId');
1517
+ const id = this.safeStringN(message, ['id', 'requestId', 'request_id']);
1518
1518
  if (error !== undefined) {
1519
1519
  const messageHash = this.safeString(client.subscriptions, id);
1520
1520
  try {
@@ -1530,7 +1530,7 @@ class gate extends gate$1 {
1530
1530
  delete client.subscriptions[messageHash];
1531
1531
  }
1532
1532
  }
1533
- if (id !== undefined) {
1533
+ if ((id !== undefined) && (id in client.subscriptions)) {
1534
1534
  delete client.subscriptions[id];
1535
1535
  }
1536
1536
  return true;
@@ -1818,7 +1818,7 @@ class gate extends gate$1 {
1818
1818
  'event': event,
1819
1819
  'payload': payload,
1820
1820
  };
1821
- return await this.watch(url, messageHash, request, messageHash);
1821
+ return await this.watch(url, messageHash, request, messageHash, requestId);
1822
1822
  }
1823
1823
  async subscribePrivate(url, messageHash, payload, channel, params, requiresUid = false) {
1824
1824
  this.checkRequiredCredentials();
@@ -1862,7 +1862,7 @@ class gate extends gate$1 {
1862
1862
  client.subscriptions[tempSubscriptionHash] = messageHash;
1863
1863
  }
1864
1864
  const message = this.extend(request, params);
1865
- return await this.watch(url, messageHash, message, messageHash);
1865
+ return await this.watch(url, messageHash, message, messageHash, messageHash);
1866
1866
  }
1867
1867
  }
1868
1868
 
@@ -439,9 +439,16 @@ class okx extends okx$1 {
439
439
  */
440
440
  await this.loadMarkets();
441
441
  symbols = this.marketSymbols(symbols, undefined, true, true);
442
- let messageHash = 'liquidations';
442
+ const messageHash = 'liquidations';
443
+ const messageHashes = [];
443
444
  if (symbols !== undefined) {
444
- messageHash += '::' + symbols.join(',');
445
+ for (let i = 0; i < symbols.length; i++) {
446
+ const symbol = symbols[i];
447
+ messageHashes.push(messageHash + '::' + symbol);
448
+ }
449
+ }
450
+ else {
451
+ messageHashes.push(messageHash);
445
452
  }
446
453
  const market = this.getMarketFromSymbols(symbols);
447
454
  let type = undefined;
@@ -455,9 +462,16 @@ class okx extends okx$1 {
455
462
  }
456
463
  const uppercaseType = type.toUpperCase();
457
464
  const request = {
458
- 'instType': uppercaseType,
465
+ 'op': 'subscribe',
466
+ 'args': [
467
+ {
468
+ 'channel': channel,
469
+ 'instType': uppercaseType,
470
+ },
471
+ ],
459
472
  };
460
- const newLiquidations = await this.subscribe('public', messageHash, channel, undefined, this.extend(request, params));
473
+ const url = this.getUrl(channel, 'public');
474
+ const newLiquidations = await this.watchMultiple(url, messageHashes, request, messageHashes);
461
475
  if (this.newUpdates) {
462
476
  return newLiquidations;
463
477
  }
@@ -1393,6 +1407,13 @@ class okx extends okx$1 {
1393
1407
  for (let i = 0; i < data.length; i++) {
1394
1408
  const rawPosition = data[i];
1395
1409
  const position = this.parsePosition(rawPosition);
1410
+ if (position['contracts'] === 0) {
1411
+ position['side'] = 'long';
1412
+ const shortPosition = this.clone(position);
1413
+ shortPosition['side'] = 'short';
1414
+ cache.append(shortPosition);
1415
+ newPositions.push(shortPosition);
1416
+ }
1396
1417
  newPositions.push(position);
1397
1418
  cache.append(position);
1398
1419
  }
package/js/ccxt.d.ts CHANGED
@@ -3,8 +3,8 @@ import { Precise } from './src/base/Precise.js';
3
3
  import * as functions from './src/base/functions.js';
4
4
  import * as errors from './src/base/errors.js';
5
5
  import type { Int, int, Str, Strings, Num, Bool, IndexType, OrderSide, OrderType, MarketType, SubType, Dict, NullableDict, List, NullableList, Fee, OHLCV, OHLCVC, implicitReturnType, Market, Currency, Dictionary, MinMax, FeeInterface, TradingFeeInterface, MarketInterface, Trade, Order, OrderBook, Ticker, Transaction, Tickers, CurrencyInterface, Balance, BalanceAccount, Account, PartialBalances, Balances, DepositAddress, WithdrawalResponse, DepositAddressResponse, FundingRate, FundingRates, Position, BorrowInterest, LeverageTier, LedgerEntry, DepositWithdrawFeeNetwork, DepositWithdrawFee, TransferEntry, CrossBorrowRate, IsolatedBorrowRate, FundingRateHistory, OpenInterest, Liquidation, OrderRequest, CancellationRequest, FundingHistory, MarginMode, Greeks, Conversion, Option, LastPrice, Leverage, MarginModification, Leverages, LastPrices, Currencies, TradingFees, MarginModes, OptionChain, IsolatedBorrowRates, CrossBorrowRates, LeverageTiers } from './src/base/types.js';
6
- import { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending } from './src/base/errors.js';
7
- declare const version = "4.3.82";
6
+ import { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, ManualInteractionNeeded, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending } from './src/base/errors.js';
7
+ declare const version = "4.3.84";
8
8
  import ace from './src/ace.js';
9
9
  import alpaca from './src/alpaca.js';
10
10
  import ascendex from './src/ascendex.js';
@@ -555,5 +555,5 @@ declare const ccxt: {
555
555
  zaif: typeof zaif;
556
556
  zonda: typeof zonda;
557
557
  } & typeof functions & typeof errors;
558
- export { version, Exchange, exchanges, pro, Precise, functions, errors, BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending, Int, int, Str, Strings, Num, Bool, IndexType, OrderSide, OrderType, MarketType, SubType, Dict, NullableDict, List, NullableList, Fee, OHLCV, OHLCVC, implicitReturnType, Market, Currency, Dictionary, MinMax, FeeInterface, TradingFeeInterface, MarketInterface, Trade, Order, OrderBook, Ticker, Transaction, Tickers, CurrencyInterface, Balance, BalanceAccount, Account, PartialBalances, Balances, DepositAddress, WithdrawalResponse, DepositAddressResponse, FundingRate, FundingRates, Position, BorrowInterest, LeverageTier, LedgerEntry, DepositWithdrawFeeNetwork, DepositWithdrawFee, TransferEntry, CrossBorrowRate, IsolatedBorrowRate, FundingRateHistory, OpenInterest, Liquidation, OrderRequest, CancellationRequest, FundingHistory, MarginMode, Greeks, Conversion, Option, LastPrice, Leverage, MarginModification, Leverages, LastPrices, Currencies, TradingFees, MarginModes, OptionChain, IsolatedBorrowRates, CrossBorrowRates, LeverageTiers, ace, alpaca, ascendex, bequant, bigone, binance, binancecoinm, binanceus, binanceusdm, bingx, bit2c, bitbank, bitbay, bitbns, bitcoincom, bitfinex, bitfinex2, bitflyer, bitget, bithumb, bitmart, bitmex, bitopro, bitpanda, bitrue, bitso, bitstamp, bitteam, bitvavo, bl3p, blockchaincom, blofin, btcalpha, btcbox, btcmarkets, btcturk, bybit, cex, coinbase, coinbaseadvanced, coinbaseexchange, coinbaseinternational, coincheck, coinex, coinlist, coinmate, coinmetro, coinone, coinsph, coinspot, cryptocom, currencycom, delta, deribit, digifinex, exmo, fmfwio, gate, gateio, gemini, hitbtc, hitbtc3, hollaex, htx, huobi, huobijp, hyperliquid, idex, independentreserve, indodax, kraken, krakenfutures, kucoin, kucoinfutures, kuna, latoken, lbank, luno, lykke, mercado, mexc, ndax, novadax, oceanex, okcoin, okx, onetrading, oxfun, p2b, paradex, paymium, phemex, poloniex, poloniexfutures, probit, timex, tokocrypto, tradeogre, upbit, vertex, wavesexchange, wazirx, whitebit, woo, woofipro, xt, yobit, zaif, zonda, };
558
+ export { version, Exchange, exchanges, pro, Precise, functions, errors, BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, ManualInteractionNeeded, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending, Int, int, Str, Strings, Num, Bool, IndexType, OrderSide, OrderType, MarketType, SubType, Dict, NullableDict, List, NullableList, Fee, OHLCV, OHLCVC, implicitReturnType, Market, Currency, Dictionary, MinMax, FeeInterface, TradingFeeInterface, MarketInterface, Trade, Order, OrderBook, Ticker, Transaction, Tickers, CurrencyInterface, Balance, BalanceAccount, Account, PartialBalances, Balances, DepositAddress, WithdrawalResponse, DepositAddressResponse, FundingRate, FundingRates, Position, BorrowInterest, LeverageTier, LedgerEntry, DepositWithdrawFeeNetwork, DepositWithdrawFee, TransferEntry, CrossBorrowRate, IsolatedBorrowRate, FundingRateHistory, OpenInterest, Liquidation, OrderRequest, CancellationRequest, FundingHistory, MarginMode, Greeks, Conversion, Option, LastPrice, Leverage, MarginModification, Leverages, LastPrices, Currencies, TradingFees, MarginModes, OptionChain, IsolatedBorrowRates, CrossBorrowRates, LeverageTiers, ace, alpaca, ascendex, bequant, bigone, binance, binancecoinm, binanceus, binanceusdm, bingx, bit2c, bitbank, bitbay, bitbns, bitcoincom, bitfinex, bitfinex2, bitflyer, bitget, bithumb, bitmart, bitmex, bitopro, bitpanda, bitrue, bitso, bitstamp, bitteam, bitvavo, bl3p, blockchaincom, blofin, btcalpha, btcbox, btcmarkets, btcturk, bybit, cex, coinbase, coinbaseadvanced, coinbaseexchange, coinbaseinternational, coincheck, coinex, coinlist, coinmate, coinmetro, coinone, coinsph, coinspot, cryptocom, currencycom, delta, deribit, digifinex, exmo, fmfwio, gate, gateio, gemini, hitbtc, hitbtc3, hollaex, htx, huobi, huobijp, hyperliquid, idex, independentreserve, indodax, kraken, krakenfutures, kucoin, kucoinfutures, kuna, latoken, lbank, luno, lykke, mercado, mexc, ndax, novadax, oceanex, okcoin, okx, onetrading, oxfun, p2b, paradex, paymium, phemex, poloniex, poloniexfutures, probit, timex, tokocrypto, tradeogre, upbit, vertex, wavesexchange, wazirx, whitebit, woo, woofipro, xt, yobit, zaif, zonda, };
559
559
  export default ccxt;
package/js/ccxt.js CHANGED
@@ -35,10 +35,10 @@ import { Exchange } from './src/base/Exchange.js';
35
35
  import { Precise } from './src/base/Precise.js';
36
36
  import * as functions from './src/base/functions.js';
37
37
  import * as errors from './src/base/errors.js';
38
- import { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending } from './src/base/errors.js';
38
+ import { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, ManualInteractionNeeded, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending } from './src/base/errors.js';
39
39
  //-----------------------------------------------------------------------------
40
40
  // this is updated by vss.js when building
41
- const version = '4.3.83';
41
+ const version = '4.3.85';
42
42
  Exchange.ccxtVersion = version;
43
43
  //-----------------------------------------------------------------------------
44
44
  import ace from './src/ace.js';
@@ -416,6 +416,6 @@ pro.exchanges = Object.keys(pro);
416
416
  pro['Exchange'] = Exchange; // now the same for rest and ts
417
417
  //-----------------------------------------------------------------------------
418
418
  const ccxt = Object.assign({ version, Exchange, Precise, 'exchanges': Object.keys(exchanges), 'pro': pro }, exchanges, functions, errors);
419
- export { version, Exchange, exchanges, pro, Precise, functions, errors, BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending, ace, alpaca, ascendex, bequant, bigone, binance, binancecoinm, binanceus, binanceusdm, bingx, bit2c, bitbank, bitbay, bitbns, bitcoincom, bitfinex, bitfinex2, bitflyer, bitget, bithumb, bitmart, bitmex, bitopro, bitpanda, bitrue, bitso, bitstamp, bitteam, bitvavo, bl3p, blockchaincom, blofin, btcalpha, btcbox, btcmarkets, btcturk, bybit, cex, coinbase, coinbaseadvanced, coinbaseexchange, coinbaseinternational, coincheck, coinex, coinlist, coinmate, coinmetro, coinone, coinsph, coinspot, cryptocom, currencycom, delta, deribit, digifinex, exmo, fmfwio, gate, gateio, gemini, hitbtc, hitbtc3, hollaex, htx, huobi, huobijp, hyperliquid, idex, independentreserve, indodax, kraken, krakenfutures, kucoin, kucoinfutures, kuna, latoken, lbank, luno, lykke, mercado, mexc, ndax, novadax, oceanex, okcoin, okx, onetrading, oxfun, p2b, paradex, paymium, phemex, poloniex, poloniexfutures, probit, timex, tokocrypto, tradeogre, upbit, vertex, wavesexchange, wazirx, whitebit, woo, woofipro, xt, yobit, zaif, zonda, };
419
+ export { version, Exchange, exchanges, pro, Precise, functions, errors, BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, ManualInteractionNeeded, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending, ace, alpaca, ascendex, bequant, bigone, binance, binancecoinm, binanceus, binanceusdm, bingx, bit2c, bitbank, bitbay, bitbns, bitcoincom, bitfinex, bitfinex2, bitflyer, bitget, bithumb, bitmart, bitmex, bitopro, bitpanda, bitrue, bitso, bitstamp, bitteam, bitvavo, bl3p, blockchaincom, blofin, btcalpha, btcbox, btcmarkets, btcturk, bybit, cex, coinbase, coinbaseadvanced, coinbaseexchange, coinbaseinternational, coincheck, coinex, coinlist, coinmate, coinmetro, coinone, coinsph, coinspot, cryptocom, currencycom, delta, deribit, digifinex, exmo, fmfwio, gate, gateio, gemini, hitbtc, hitbtc3, hollaex, htx, huobi, huobijp, hyperliquid, idex, independentreserve, indodax, kraken, krakenfutures, kucoin, kucoinfutures, kuna, latoken, lbank, luno, lykke, mercado, mexc, ndax, novadax, oceanex, okcoin, okx, onetrading, oxfun, p2b, paradex, paymium, phemex, poloniex, poloniexfutures, probit, timex, tokocrypto, tradeogre, upbit, vertex, wavesexchange, wazirx, whitebit, woo, woofipro, xt, yobit, zaif, zonda, };
420
420
  export default ccxt;
421
421
  //-----------------------------------------------------------------------------
@@ -37,6 +37,8 @@ interface Exchange {
37
37
  v1PrivatePostPrivateGetAccounts(params?: {}): Promise<implicitReturnType>;
38
38
  v1PrivatePostPrivateGetWithdrawalHistory(params?: {}): Promise<implicitReturnType>;
39
39
  v1PrivatePostPrivateGetDepositHistory(params?: {}): Promise<implicitReturnType>;
40
+ v1PrivatePostPrivateGetFeeRate(params?: {}): Promise<implicitReturnType>;
41
+ v1PrivatePostPrivateGetInstrumentFeeRate(params?: {}): Promise<implicitReturnType>;
40
42
  v1PrivatePostPrivateStakingStake(params?: {}): Promise<implicitReturnType>;
41
43
  v1PrivatePostPrivateStakingUnstake(params?: {}): Promise<implicitReturnType>;
42
44
  v1PrivatePostPrivateStakingGetStakingPosition(params?: {}): Promise<implicitReturnType>;
@@ -161,6 +161,7 @@ interface kucoin {
161
161
  futuresPublicGetStatus(params?: {}): Promise<implicitReturnType>;
162
162
  futuresPublicGetLevel2MessageQuery(params?: {}): Promise<implicitReturnType>;
163
163
  futuresPublicGetContractsRiskLimitSymbol(params?: {}): Promise<implicitReturnType>;
164
+ futuresPublicGetAllTickers(params?: {}): Promise<implicitReturnType>;
164
165
  futuresPublicGetLevel2DepthLimit(params?: {}): Promise<implicitReturnType>;
165
166
  futuresPublicGetLevel3MessageQuery(params?: {}): Promise<implicitReturnType>;
166
167
  futuresPublicGetLevel3Snapshot(params?: {}): Promise<implicitReturnType>;
@@ -190,6 +191,7 @@ interface kucoin {
190
191
  futuresPrivateGetTradeStatistics(params?: {}): Promise<implicitReturnType>;
191
192
  futuresPrivateGetTradeFees(params?: {}): Promise<implicitReturnType>;
192
193
  futuresPrivateGetHistoryPositions(params?: {}): Promise<implicitReturnType>;
194
+ futuresPrivateGetGetMaxOpenSize(params?: {}): Promise<implicitReturnType>;
193
195
  futuresPrivatePostTransferOut(params?: {}): Promise<implicitReturnType>;
194
196
  futuresPrivatePostTransferIn(params?: {}): Promise<implicitReturnType>;
195
197
  futuresPrivatePostOrders(params?: {}): Promise<implicitReturnType>;
@@ -16,6 +16,7 @@ declare const errorHierarchy: {
16
16
  MarginModeAlreadySet: {};
17
17
  };
18
18
  MarketClosed: {};
19
+ ManualInteractionNeeded: {};
19
20
  };
20
21
  InsufficientFunds: {};
21
22
  InvalidAddress: {
@@ -22,6 +22,7 @@ const errorHierarchy = {
22
22
  'MarginModeAlreadySet': {},
23
23
  },
24
24
  'MarketClosed': {},
25
+ 'ManualInteractionNeeded': {},
25
26
  },
26
27
  'InsufficientFunds': {},
27
28
  'InvalidAddress': {
@@ -37,6 +37,9 @@ declare class MarginModeAlreadySet extends NoChange {
37
37
  declare class MarketClosed extends OperationRejected {
38
38
  constructor(message: string);
39
39
  }
40
+ declare class ManualInteractionNeeded extends OperationRejected {
41
+ constructor(message: string);
42
+ }
40
43
  declare class InsufficientFunds extends ExchangeError {
41
44
  constructor(message: string);
42
45
  }
@@ -112,7 +115,7 @@ declare class NullResponse extends BadResponse {
112
115
  declare class CancelPending extends OperationFailed {
113
116
  constructor(message: string);
114
117
  }
115
- export { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending };
118
+ export { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, ManualInteractionNeeded, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending };
116
119
  declare const _default: {
117
120
  BaseError: typeof BaseError;
118
121
  ExchangeError: typeof ExchangeError;
@@ -127,6 +130,7 @@ declare const _default: {
127
130
  NoChange: typeof NoChange;
128
131
  MarginModeAlreadySet: typeof MarginModeAlreadySet;
129
132
  MarketClosed: typeof MarketClosed;
133
+ ManualInteractionNeeded: typeof ManualInteractionNeeded;
130
134
  InsufficientFunds: typeof InsufficientFunds;
131
135
  InvalidAddress: typeof InvalidAddress;
132
136
  AddressPending: typeof AddressPending;
@@ -83,6 +83,12 @@ class MarketClosed extends OperationRejected {
83
83
  this.name = 'MarketClosed';
84
84
  }
85
85
  }
86
+ class ManualInteractionNeeded extends OperationRejected {
87
+ constructor(message) {
88
+ super(message);
89
+ this.name = 'ManualInteractionNeeded';
90
+ }
91
+ }
86
92
  class InsufficientFunds extends ExchangeError {
87
93
  constructor(message) {
88
94
  super(message);
@@ -233,5 +239,5 @@ class CancelPending extends OperationFailed {
233
239
  this.name = 'CancelPending';
234
240
  }
235
241
  }
236
- export { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending };
237
- export default { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending };
242
+ export { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, ManualInteractionNeeded, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending };
243
+ export default { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, ManualInteractionNeeded, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending };
package/js/src/binance.js CHANGED
@@ -11409,7 +11409,7 @@ export default class binance extends Exchange {
11409
11409
  if ((api === 'sapi') && (path === 'asset/dust')) {
11410
11410
  query = this.urlencodeWithArrayRepeat(extendedParams);
11411
11411
  }
11412
- else if ((path === 'batchOrders') || (path.indexOf('sub-account') >= 0) || (path === 'capital/withdraw/apply') || (path.indexOf('staking') >= 0)) {
11412
+ else if ((path === 'batchOrders') || (path.indexOf('sub-account') >= 0) || (path === 'capital/withdraw/apply') || (path.indexOf('staking') >= 0) || (path.indexOf('simple-earn') >= 0)) {
11413
11413
  if ((method === 'DELETE') && (path === 'batchOrders')) {
11414
11414
  const orderidlist = this.safeList(extendedParams, 'orderidlist', []);
11415
11415
  const origclientorderidlist = this.safeList(extendedParams, 'origclientorderidlist', []);
@@ -338,9 +338,9 @@ export default class bitfinex2 extends Exchange {
338
338
  // convert 'EXCHANGE LIMIT' to lowercase 'limit'
339
339
  // everything else remains uppercase
340
340
  'exchangeTypes': {
341
- // 'MARKET': undefined,
341
+ 'MARKET': 'market',
342
342
  'EXCHANGE MARKET': 'market',
343
- // 'LIMIT': undefined,
343
+ 'LIMIT': 'limit',
344
344
  'EXCHANGE LIMIT': 'limit',
345
345
  // 'STOP': undefined,
346
346
  'EXCHANGE STOP': 'market',
package/js/src/bitmex.js CHANGED
@@ -10,6 +10,7 @@ import { TICK_SIZE } from './base/functions/number.js';
10
10
  import { AuthenticationError, BadRequest, DDoSProtection, ExchangeError, ExchangeNotAvailable, InsufficientFunds, InvalidOrder, OrderNotFound, PermissionDenied, ArgumentsRequired, BadSymbol } from './base/errors.js';
11
11
  import { Precise } from './base/Precise.js';
12
12
  import { sha256 } from './static_dependencies/noble-hashes/sha256.js';
13
+ import { totp } from './base/functions/totp.js';
13
14
  // ---------------------------------------------------------------------------
14
15
  /**
15
16
  * @class bitmex
@@ -2458,6 +2459,9 @@ export default class bitmex extends Exchange {
2458
2459
  // 'otpToken': '123456', // requires if two-factor auth (OTP) is enabled
2459
2460
  // 'fee': 0.001, // bitcoin network fee
2460
2461
  };
2462
+ if (this.twofa !== undefined) {
2463
+ request['otpToken'] = totp(this.twofa);
2464
+ }
2461
2465
  const response = await this.privatePostUserRequestWithdrawal(this.extend(request, params));
2462
2466
  //
2463
2467
  // {
package/js/src/bybit.js CHANGED
@@ -7,7 +7,7 @@
7
7
  // ---------------------------------------------------------------------------
8
8
  import Exchange from './abstract/bybit.js';
9
9
  import { TICK_SIZE } from './base/functions/number.js';
10
- import { AuthenticationError, ExchangeError, ArgumentsRequired, PermissionDenied, InvalidOrder, OrderNotFound, InsufficientFunds, BadRequest, RateLimitExceeded, InvalidNonce, NotSupported, RequestTimeout, MarginModeAlreadySet, NoChange } from './base/errors.js';
10
+ import { AuthenticationError, ExchangeError, ArgumentsRequired, PermissionDenied, InvalidOrder, OrderNotFound, InsufficientFunds, BadRequest, RateLimitExceeded, InvalidNonce, NotSupported, RequestTimeout, MarginModeAlreadySet, NoChange, ManualInteractionNeeded } from './base/errors.js';
11
11
  import { Precise } from './base/Precise.js';
12
12
  import { sha256 } from './static_dependencies/noble-hashes/sha256.js';
13
13
  import { rsa } from './base/functions/rsa.js';
@@ -756,8 +756,11 @@ export default class bybit extends Exchange {
756
756
  '140069': PermissionDenied,
757
757
  '140070': InvalidOrder,
758
758
  '170001': ExchangeError,
759
- '170007': RequestTimeout,
760
759
  '170005': InvalidOrder,
760
+ '170007': RequestTimeout,
761
+ '170010': InvalidOrder,
762
+ '170011': InvalidOrder,
763
+ '170019': InvalidOrder,
761
764
  '170031': ExchangeError,
762
765
  '170032': ExchangeError,
763
766
  '170033': InsufficientFunds,
@@ -770,6 +773,7 @@ export default class bybit extends Exchange {
770
773
  '170116': InvalidOrder,
771
774
  '170117': InvalidOrder,
772
775
  '170121': InvalidOrder,
776
+ '170124': InvalidOrder,
773
777
  '170130': BadRequest,
774
778
  '170131': InsufficientFunds,
775
779
  '170132': InvalidOrder,
@@ -780,7 +784,6 @@ export default class bybit extends Exchange {
780
784
  '170137': InvalidOrder,
781
785
  '170139': InvalidOrder,
782
786
  '170140': InvalidOrder,
783
- '170124': InvalidOrder,
784
787
  '170141': InvalidOrder,
785
788
  '170142': InvalidOrder,
786
789
  '170143': InvalidOrder,
@@ -805,6 +808,15 @@ export default class bybit extends Exchange {
805
808
  '170198': InvalidOrder,
806
809
  '170199': InvalidOrder,
807
810
  '170200': InvalidOrder,
811
+ '170201': PermissionDenied,
812
+ '170202': InvalidOrder,
813
+ '170203': InvalidOrder,
814
+ '170204': InvalidOrder,
815
+ '170206': InvalidOrder,
816
+ '170210': InvalidOrder,
817
+ '170213': OrderNotFound,
818
+ '170217': InvalidOrder,
819
+ '170218': InvalidOrder,
808
820
  '170221': BadRequest,
809
821
  '170222': RateLimitExceeded,
810
822
  '170223': InsufficientFunds,
@@ -814,18 +826,7 @@ export default class bybit extends Exchange {
814
826
  '170228': InvalidOrder,
815
827
  '170229': InvalidOrder,
816
828
  '170234': ExchangeError,
817
- '170210': InvalidOrder,
818
- '170213': OrderNotFound,
819
- '170217': InvalidOrder,
820
- '170218': InvalidOrder,
821
- '170010': InvalidOrder,
822
- '170011': InvalidOrder,
823
- '170019': InvalidOrder,
824
- '170201': PermissionDenied,
825
- '170202': InvalidOrder,
826
- '170203': InvalidOrder,
827
- '170204': InvalidOrder,
828
- '170206': InvalidOrder,
829
+ '170241': ManualInteractionNeeded,
829
830
  '175000': InvalidOrder,
830
831
  '175001': InvalidOrder,
831
832
  '175002': InvalidOrder,
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/cryptocom.js';
2
- import type { Int, OrderSide, OrderType, Trade, OHLCV, Order, FundingRateHistory, Str, Ticker, OrderRequest, Balances, Transaction, OrderBook, Tickers, Strings, Currency, Market, Num, Account, CancellationRequest, Dict, int } from './base/types.js';
2
+ import type { Int, OrderSide, OrderType, Trade, OHLCV, Order, FundingRateHistory, Str, Ticker, OrderRequest, Balances, Transaction, OrderBook, Tickers, Strings, Currency, Market, Num, Account, CancellationRequest, Dict, int, TradingFeeInterface, TradingFees } from './base/types.js';
3
3
  /**
4
4
  * @class cryptocom
5
5
  * @augments Exchange
@@ -90,6 +90,10 @@ export default class cryptocom extends Exchange {
90
90
  nonce(): number;
91
91
  paramsToString(object: any, level: any): any;
92
92
  closePosition(symbol: string, side?: OrderSide, params?: {}): Promise<Order>;
93
+ fetchTradingFee(symbol: string, params?: {}): Promise<TradingFeeInterface>;
94
+ fetchTradingFees(params?: {}): Promise<TradingFees>;
95
+ parseTradingFees(response: any): Dict;
96
+ parseTradingFee(fee: Dict, market?: Market): TradingFeeInterface;
93
97
  sign(path: any, api?: string, method?: string, params?: {}, headers?: any, body?: any): {
94
98
  url: string;
95
99
  method: string;
@@ -94,8 +94,8 @@ export default class cryptocom extends Exchange {
94
94
  'fetchTickers': true,
95
95
  'fetchTime': false,
96
96
  'fetchTrades': true,
97
- 'fetchTradingFee': false,
98
- 'fetchTradingFees': false,
97
+ 'fetchTradingFee': true,
98
+ 'fetchTradingFees': true,
99
99
  'fetchTransactionFees': false,
100
100
  'fetchTransactions': false,
101
101
  'fetchTransfers': false,
@@ -196,6 +196,8 @@ export default class cryptocom extends Exchange {
196
196
  'private/get-accounts': 10 / 3,
197
197
  'private/get-withdrawal-history': 10 / 3,
198
198
  'private/get-deposit-history': 10 / 3,
199
+ 'private/get-fee-rate': 2,
200
+ 'private/get-instrument-fee-rate': 2,
199
201
  'private/staking/stake': 2,
200
202
  'private/staking/unstake': 2,
201
203
  'private/staking/get-staking-position': 2,
@@ -3022,6 +3024,119 @@ export default class cryptocom extends Exchange {
3022
3024
  const result = this.safeDict(response, 'result');
3023
3025
  return this.parseOrder(result, market);
3024
3026
  }
3027
+ async fetchTradingFee(symbol, params = {}) {
3028
+ /**
3029
+ * @method
3030
+ * @name cryptocom#fetchTradingFee
3031
+ * @description fetch the trading fees for a market
3032
+ * @see https://exchange-docs.crypto.com/exchange/v1/rest-ws/index.html#private-get-instrument-fee-rate
3033
+ * @param {string} symbol unified market symbol
3034
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
3035
+ * @returns {object} a [fee structure]{@link https://docs.ccxt.com/#/?id=fee-structure}
3036
+ */
3037
+ await this.loadMarkets();
3038
+ const market = this.market(symbol);
3039
+ const request = {
3040
+ 'instrument_name': market['id'],
3041
+ };
3042
+ const response = await this.v1PrivatePostPrivateGetInstrumentFeeRate(this.extend(request, params));
3043
+ //
3044
+ // {
3045
+ // "id": 1,
3046
+ // "code": 0,
3047
+ // "method": "private/staking/unstake",
3048
+ // "result": {
3049
+ // "staking_id": "1",
3050
+ // "instrument_name": "SOL.staked",
3051
+ // "status": "NEW",
3052
+ // "quantity": "1",
3053
+ // "underlying_inst_name": "SOL",
3054
+ // "reason": "NO_ERROR"
3055
+ // }
3056
+ // }
3057
+ //
3058
+ const data = this.safeDict(response, 'result', {});
3059
+ return this.parseTradingFee(data, market);
3060
+ }
3061
+ async fetchTradingFees(params = {}) {
3062
+ /**
3063
+ * @method
3064
+ * @name cryptocom#fetchTradingFees
3065
+ * @see https://exchange-docs.crypto.com/exchange/v1/rest-ws/index.html#private-get-fee-rate
3066
+ * @description fetch the trading fees for multiple markets
3067
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
3068
+ * @returns {object} a dictionary of [fee structures]{@link https://docs.ccxt.com/#/?id=fee-structure} indexed by market symbols
3069
+ */
3070
+ await this.loadMarkets();
3071
+ const response = await this.v1PrivatePostPrivateGetFeeRate(params);
3072
+ //
3073
+ // {
3074
+ // "id": 1,
3075
+ // "method": "/private/get-fee-rate",
3076
+ // "code": 0,
3077
+ // "result": {
3078
+ // "spot_tier": "3",
3079
+ // "deriv_tier": "3",
3080
+ // "effective_spot_maker_rate_bps": "6.5",
3081
+ // "effective_spot_taker_rate_bps": "6.9",
3082
+ // "effective_deriv_maker_rate_bps": "1.1",
3083
+ // "effective_deriv_taker_rate_bps": "3"
3084
+ // }
3085
+ // }
3086
+ //
3087
+ const result = this.safeDict(response, 'result', {});
3088
+ return this.parseTradingFees(result);
3089
+ }
3090
+ parseTradingFees(response) {
3091
+ //
3092
+ // {
3093
+ // "spot_tier": "3",
3094
+ // "deriv_tier": "3",
3095
+ // "effective_spot_maker_rate_bps": "6.5",
3096
+ // "effective_spot_taker_rate_bps": "6.9",
3097
+ // "effective_deriv_maker_rate_bps": "1.1",
3098
+ // "effective_deriv_taker_rate_bps": "3"
3099
+ // }
3100
+ //
3101
+ const result = {};
3102
+ result['info'] = response;
3103
+ for (let i = 0; i < this.symbols.length; i++) {
3104
+ const symbol = this.symbols[i];
3105
+ const market = this.market(symbol);
3106
+ const isSwap = market['swap'];
3107
+ const takerFeeKey = isSwap ? 'effective_deriv_taker_rate_bps' : 'effective_spot_taker_rate_bps';
3108
+ const makerFeeKey = isSwap ? 'effective_deriv_maker_rate_bps' : 'effective_spot_maker_rate_bps';
3109
+ const tradingFee = {
3110
+ 'info': response,
3111
+ 'symbol': symbol,
3112
+ 'maker': this.parseNumber(Precise.stringDiv(this.safeString(response, makerFeeKey), '10000')),
3113
+ 'taker': this.parseNumber(Precise.stringDiv(this.safeString(response, takerFeeKey), '10000')),
3114
+ 'percentage': undefined,
3115
+ 'tierBased': undefined,
3116
+ };
3117
+ result[symbol] = tradingFee;
3118
+ }
3119
+ return result;
3120
+ }
3121
+ parseTradingFee(fee, market = undefined) {
3122
+ //
3123
+ // {
3124
+ // "instrument_name": "BTC_USD",
3125
+ // "effective_maker_rate_bps": "6.5",
3126
+ // "effective_taker_rate_bps": "6.9"
3127
+ // }
3128
+ //
3129
+ const marketId = this.safeString(fee, 'instrument_name');
3130
+ const symbol = this.safeSymbol(marketId, market);
3131
+ return {
3132
+ 'info': fee,
3133
+ 'symbol': symbol,
3134
+ 'maker': this.parseNumber(Precise.stringDiv(this.safeString(fee, 'effective_maker_rate_bps'), '10000')),
3135
+ 'taker': this.parseNumber(Precise.stringDiv(this.safeString(fee, 'effective_taker_rate_bps'), '10000')),
3136
+ 'percentage': undefined,
3137
+ 'tierBased': undefined,
3138
+ };
3139
+ }
3025
3140
  sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
3026
3141
  const type = this.safeString(api, 0);
3027
3142
  const access = this.safeString(api, 1);
package/js/src/kraken.js CHANGED
@@ -1211,6 +1211,26 @@ export default class kraken extends Exchange {
1211
1211
  // "misc": ''
1212
1212
  // }
1213
1213
  //
1214
+ // fetchMyTrades
1215
+ //
1216
+ // {
1217
+ // "ordertxid": "OSJVN7-A2AE-63WZV",
1218
+ // "postxid": "TBP7O6-PNXI-CONU",
1219
+ // "pair": "XXBTZUSD",
1220
+ // "time": 1710429248.3052235,
1221
+ // "type": "sell",
1222
+ // "ordertype": "liquidation market",
1223
+ // "price": "72026.50000",
1224
+ // "cost": "7.20265",
1225
+ // "fee": "0.01873",
1226
+ // "vol": "0.00010000",
1227
+ // "margin": "1.44053",
1228
+ // "leverage": "5",
1229
+ // "misc": "closing",
1230
+ // "trade_id": 68230622,
1231
+ // "maker": false
1232
+ // }
1233
+ //
1214
1234
  let timestamp = undefined;
1215
1235
  let side = undefined;
1216
1236
  let type = undefined;
@@ -1266,6 +1286,11 @@ export default class kraken extends Exchange {
1266
1286
  symbol = market['symbol'];
1267
1287
  }
1268
1288
  const cost = this.safeString(trade, 'cost');
1289
+ const maker = this.safeBool(trade, 'maker');
1290
+ let takerOrMaker = undefined;
1291
+ if (maker !== undefined) {
1292
+ takerOrMaker = maker ? 'maker' : 'taker';
1293
+ }
1269
1294
  return this.safeTrade({
1270
1295
  'id': id,
1271
1296
  'order': orderId,
@@ -1275,7 +1300,7 @@ export default class kraken extends Exchange {
1275
1300
  'symbol': symbol,
1276
1301
  'type': type,
1277
1302
  'side': side,
1278
- 'takerOrMaker': undefined,
1303
+ 'takerOrMaker': takerOrMaker,
1279
1304
  'price': price,
1280
1305
  'amount': amount,
1281
1306
  'cost': cost,
@@ -2131,7 +2156,10 @@ export default class kraken extends Exchange {
2131
2156
  // "fee": "0.000026",
2132
2157
  // "vol": "16.00000000",
2133
2158
  // "margin": "0.000000",
2159
+ // "leverage": "5",
2134
2160
  // "misc": ""
2161
+ // "trade_id": 68230622,
2162
+ // "maker": false
2135
2163
  // },
2136
2164
  // ...
2137
2165
  // },
@@ -2528,14 +2556,12 @@ export default class kraken extends Exchange {
2528
2556
  * @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
2529
2557
  */
2530
2558
  // https://www.kraken.com/en-us/help/api#deposit-status
2531
- if (code === undefined) {
2532
- throw new ArgumentsRequired(this.id + ' fetchDeposits() requires a currency code argument');
2533
- }
2534
2559
  await this.loadMarkets();
2535
- const currency = this.currency(code);
2536
- const request = {
2537
- 'asset': currency['id'],
2538
- };
2560
+ const request = {};
2561
+ if (code !== undefined) {
2562
+ const currency = this.currency(code);
2563
+ request['asset'] = currency['id'];
2564
+ }
2539
2565
  if (since !== undefined) {
2540
2566
  request['start'] = since;
2541
2567
  }
@@ -127,6 +127,7 @@ export default class kucoinfutures extends kucoin {
127
127
  'contracts/{symbol}': 1,
128
128
  'contracts/risk-limit/{symbol}': 1,
129
129
  'ticker': 1,
130
+ 'allTickers': 1,
130
131
  'level2/snapshot': 1.33,
131
132
  'level2/depth{limit}': 1,
132
133
  'level2/message/query': 1,
@@ -170,6 +171,7 @@ export default class kucoinfutures extends kucoin {
170
171
  'trade-statistics': 1,
171
172
  'trade-fees': 1,
172
173
  'history-positions': 1,
174
+ 'getMaxOpenSize': 1,
173
175
  },
174
176
  'post': {
175
177
  'withdrawals': 1,
@@ -315,6 +317,9 @@ export default class kucoinfutures extends kucoin {
315
317
  // endpoint versions
316
318
  'versions': {
317
319
  'futuresPrivate': {
320
+ 'GET': {
321
+ 'getMaxOpenSize': 'v2',
322
+ },
318
323
  'POST': {
319
324
  'transfer-out': 'v2',
320
325
  },