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
@@ -3366,6 +3366,8 @@ class digifinex extends digifinex$1 {
3366
3366
  'symbol': symbol,
3367
3367
  'maker': this.safeNumber(fee, 'maker_fee_rate'),
3368
3368
  'taker': this.safeNumber(fee, 'taker_fee_rate'),
3369
+ 'percentage': undefined,
3370
+ 'tierBased': undefined,
3369
3371
  };
3370
3372
  }
3371
3373
  async fetchPositions(symbols = undefined, params = {}) {
@@ -1859,7 +1859,7 @@ class gate extends gate$1 {
1859
1859
  await this.loadMarkets();
1860
1860
  const currency = this.currency(code);
1861
1861
  const request = {
1862
- 'currency': currency['id'],
1862
+ 'currency': currency['id'], // todo: currencies have network-junctions
1863
1863
  };
1864
1864
  const response = await this.privateWalletGetDepositAddress(this.extend(request, params));
1865
1865
  const addresses = this.safeValue(response, 'multichain_addresses');
@@ -1910,7 +1910,7 @@ class gate extends gate$1 {
1910
1910
  const rawNetwork = this.safeStringUpper(params, 'network');
1911
1911
  params = this.omit(params, 'network');
1912
1912
  const request = {
1913
- 'currency': currency['id'],
1913
+ 'currency': currency['id'], // todo: currencies have network-junctions
1914
1914
  };
1915
1915
  const response = await this.privateWalletGetDepositAddress(this.extend(request, params));
1916
1916
  //
@@ -2071,6 +2071,8 @@ class gate extends gate$1 {
2071
2071
  'symbol': this.safeString(market, 'symbol'),
2072
2072
  'maker': this.safeNumber(info, makerKey),
2073
2073
  'taker': this.safeNumber(info, takerKey),
2074
+ 'percentage': undefined,
2075
+ 'tierBased': undefined,
2074
2076
  };
2075
2077
  }
2076
2078
  async fetchTransactionFees(codes = undefined, params = {}) {
@@ -3526,7 +3528,7 @@ class gate extends gate$1 {
3526
3528
  let currency = undefined;
3527
3529
  if (code !== undefined) {
3528
3530
  currency = this.currency(code);
3529
- request['currency'] = currency['id'];
3531
+ request['currency'] = currency['id']; // todo: currencies have network-junctions
3530
3532
  }
3531
3533
  if (limit !== undefined) {
3532
3534
  request['limit'] = limit;
@@ -3564,7 +3566,7 @@ class gate extends gate$1 {
3564
3566
  let currency = undefined;
3565
3567
  if (code !== undefined) {
3566
3568
  currency = this.currency(code);
3567
- request['currency'] = currency['id'];
3569
+ request['currency'] = currency['id']; // todo: currencies have network-junctions
3568
3570
  }
3569
3571
  if (limit !== undefined) {
3570
3572
  request['limit'] = limit;
@@ -3611,7 +3613,7 @@ class gate extends gate$1 {
3611
3613
  params = this.omit(params, 'network');
3612
3614
  }
3613
3615
  else {
3614
- request['chain'] = currency['id'];
3616
+ request['chain'] = currency['id']; // todo: currencies have network-junctions
3615
3617
  }
3616
3618
  const response = await this.privateWithdrawalsPostWithdrawals(this.extend(request, params));
3617
3619
  //
@@ -5145,7 +5147,7 @@ class gate extends gate$1 {
5145
5147
  params = this.omit(params, 'symbol');
5146
5148
  }
5147
5149
  if ((toId === 'futures') || (toId === 'delivery') || (fromId === 'futures') || (fromId === 'delivery')) {
5148
- request['settle'] = currency['id'];
5150
+ request['settle'] = currency['id']; // todo: currencies have network-junctions
5149
5151
  }
5150
5152
  const response = await this.privateWalletPostTransfers(this.extend(request, params));
5151
5153
  //
@@ -6453,7 +6455,7 @@ class gate extends gate$1 {
6453
6455
  if ((type === 'spot') || (type === 'margin')) {
6454
6456
  if (code !== undefined) {
6455
6457
  currency = this.currency(code);
6456
- request['currency'] = currency['id'];
6458
+ request['currency'] = currency['id']; // todo: currencies have network-junctions
6457
6459
  }
6458
6460
  }
6459
6461
  if ((type === 'swap') || (type === 'future')) {
@@ -7272,7 +7274,7 @@ class gate extends gate$1 {
7272
7274
  await this.loadMarkets();
7273
7275
  const currency = this.currency(code);
7274
7276
  const request = {
7275
- 'underlying': currency['code'] + '_USDT',
7277
+ 'underlying': currency['code'] + '_USDT', // todo: currency['id'].toUpperCase () & network junctions
7276
7278
  };
7277
7279
  const response = await this.publicOptionsGetContracts(this.extend(request, params));
7278
7280
  //
@@ -1625,6 +1625,8 @@ class hitbtc extends hitbtc$1 {
1625
1625
  'symbol': symbol,
1626
1626
  'taker': taker,
1627
1627
  'maker': maker,
1628
+ 'percentage': undefined,
1629
+ 'tierBased': undefined,
1628
1630
  };
1629
1631
  }
1630
1632
  async fetchTradingFee(symbol, params = {}) {
@@ -1500,6 +1500,8 @@ class htx extends htx$1 {
1500
1500
  'symbol': this.safeSymbol(marketId, market),
1501
1501
  'maker': this.safeNumber(fee, 'actualMakerRate'),
1502
1502
  'taker': this.safeNumber(fee, 'actualTakerRate'),
1503
+ 'percentage': undefined,
1504
+ 'tierBased': undefined,
1503
1505
  };
1504
1506
  }
1505
1507
  async fetchTradingFee(symbol, params = {}) {
@@ -352,7 +352,8 @@ class krakenfutures extends krakenfutures$1 {
352
352
  // swap == perpetual
353
353
  let settle = undefined;
354
354
  let settleId = undefined;
355
- const amountPrecision = this.parseNumber(this.parsePrecision(this.safeString(market, 'contractValueTradePrecision', '0')));
355
+ const cvtp = this.safeString(market, 'contractValueTradePrecision');
356
+ const amountPrecision = this.parseNumber(this.integerPrecisionToAmount(cvtp));
356
357
  const pricePrecision = this.safeNumber(market, 'tickSize');
357
358
  const contract = (swap || future || index);
358
359
  const swapOrFutures = (swap || future);
@@ -3524,9 +3524,9 @@ class kucoin extends kucoin$1 {
3524
3524
  }
3525
3525
  parseBalanceHelper(entry) {
3526
3526
  const account = this.account();
3527
- account['used'] = this.safeString(entry, 'holdBalance');
3528
- account['free'] = this.safeString(entry, 'availableBalance');
3529
- account['total'] = this.safeString(entry, 'totalBalance');
3527
+ account['used'] = this.safeString2(entry, 'holdBalance', 'hold');
3528
+ account['free'] = this.safeString2(entry, 'availableBalance', 'available');
3529
+ account['total'] = this.safeString2(entry, 'totalBalance', 'total');
3530
3530
  const debt = this.safeString(entry, 'liability');
3531
3531
  const interest = this.safeString(entry, 'interest');
3532
3532
  account['debt'] = Precise["default"].stringAdd(debt, interest);
@@ -3537,9 +3537,9 @@ class kucoin extends kucoin$1 {
3537
3537
  * @method
3538
3538
  * @name kucoin#fetchBalance
3539
3539
  * @description query for balance and get the amount of funds available for trading or funds locked in orders
3540
- * @see https://docs.kucoin.com/#list-accounts
3541
3540
  * @see https://www.kucoin.com/docs/rest/account/basic-info/get-account-list-spot-margin-trade_hf
3542
- * @see https://docs.kucoin.com/#query-isolated-margin-account-info
3541
+ * @see https://www.kucoin.com/docs/rest/funding/funding-overview/get-account-detail-margin
3542
+ * @see https://www.kucoin.com/docs/rest/funding/funding-overview/get-account-detail-isolated-margin
3543
3543
  * @param {object} [params] extra parameters specific to the exchange API endpoint
3544
3544
  * @param {object} [params.marginMode] 'cross' or 'isolated', margin type for fetching margin balance
3545
3545
  * @param {object} [params.type] extra parameters specific to the exchange API endpoint
@@ -3566,7 +3566,7 @@ class kucoin extends kucoin$1 {
3566
3566
  let response = undefined;
3567
3567
  const request = {};
3568
3568
  const isolated = (marginMode === 'isolated') || (type === 'isolated');
3569
- const cross = (marginMode === 'cross') || (type === 'cross');
3569
+ const cross = (marginMode === 'cross') || (type === 'margin');
3570
3570
  if (isolated) {
3571
3571
  if (currency !== undefined) {
3572
3572
  request['balanceCurrency'] = currency['id'];
@@ -3584,7 +3584,7 @@ class kucoin extends kucoin$1 {
3584
3584
  response = await this.privateGetAccounts(this.extend(request, query));
3585
3585
  }
3586
3586
  //
3587
- // Spot and Cross
3587
+ // Spot
3588
3588
  //
3589
3589
  // {
3590
3590
  // "code": "200000",
@@ -3600,35 +3600,59 @@ class kucoin extends kucoin$1 {
3600
3600
  // ]
3601
3601
  // }
3602
3602
  //
3603
+ // Cross
3604
+ //
3605
+ // {
3606
+ // "code": "200000",
3607
+ // "data": {
3608
+ // "debtRatio": "0",
3609
+ // "accounts": [
3610
+ // {
3611
+ // "currency": "USDT",
3612
+ // "totalBalance": "5",
3613
+ // "availableBalance": "5",
3614
+ // "holdBalance": "0",
3615
+ // "liability": "0",
3616
+ // "maxBorrowSize": "20"
3617
+ // },
3618
+ // ]
3619
+ // }
3620
+ // }
3621
+ //
3603
3622
  // Isolated
3604
3623
  //
3605
3624
  // {
3606
3625
  // "code": "200000",
3607
3626
  // "data": {
3608
- // "totalConversionBalance": "0",
3609
- // "liabilityConversionBalance": "0",
3627
+ // "totalAssetOfQuoteCurrency": "0",
3628
+ // "totalLiabilityOfQuoteCurrency": "0",
3629
+ // "timestamp": 1712085661155,
3610
3630
  // "assets": [
3611
3631
  // {
3612
3632
  // "symbol": "MANA-USDT",
3613
- // "status": "CLEAR",
3633
+ // "status": "EFFECTIVE",
3614
3634
  // "debtRatio": "0",
3615
3635
  // "baseAsset": {
3616
3636
  // "currency": "MANA",
3617
- // "totalBalance": "0",
3618
- // "holdBalance": "0",
3619
- // "availableBalance": "0",
3637
+ // "borrowEnabled": true,
3638
+ // "transferInEnabled": true,
3639
+ // "total": "0",
3640
+ // "hold": "0",
3641
+ // "available": "0",
3620
3642
  // "liability": "0",
3621
3643
  // "interest": "0",
3622
- // "borrowableAmount": "0"
3644
+ // "maxBorrowSize": "0"
3623
3645
  // },
3624
3646
  // "quoteAsset": {
3625
3647
  // "currency": "USDT",
3626
- // "totalBalance": "0",
3627
- // "holdBalance": "0",
3628
- // "availableBalance": "0",
3648
+ // "borrowEnabled": true,
3649
+ // "transferInEnabled": true,
3650
+ // "total": "0",
3651
+ // "hold": "0",
3652
+ // "available": "0",
3629
3653
  // "liability": "0",
3630
3654
  // "interest": "0",
3631
- // "borrowableAmount": "0"
3655
+ // "maxBorrowSize": "0"
3632
3656
  // }
3633
3657
  // },
3634
3658
  // ...
@@ -3636,13 +3660,14 @@ class kucoin extends kucoin$1 {
3636
3660
  // }
3637
3661
  // }
3638
3662
  //
3639
- const data = this.safeList(response, 'data', []);
3663
+ let data = undefined;
3640
3664
  const result = {
3641
3665
  'info': response,
3642
3666
  'timestamp': undefined,
3643
3667
  'datetime': undefined,
3644
3668
  };
3645
3669
  if (isolated) {
3670
+ data = this.safeDict(response, 'data', {});
3646
3671
  const assets = this.safeValue(data, 'assets', data);
3647
3672
  for (let i = 0; i < assets.length; i++) {
3648
3673
  const entry = assets[i];
@@ -3659,6 +3684,7 @@ class kucoin extends kucoin$1 {
3659
3684
  }
3660
3685
  }
3661
3686
  else if (cross) {
3687
+ data = this.safeDict(response, 'data', {});
3662
3688
  const accounts = this.safeList(data, 'accounts', []);
3663
3689
  for (let i = 0; i < accounts.length; i++) {
3664
3690
  const balance = accounts[i];
@@ -3668,6 +3694,7 @@ class kucoin extends kucoin$1 {
3668
3694
  }
3669
3695
  }
3670
3696
  else {
3697
+ data = this.safeList(response, 'data', []);
3671
3698
  for (let i = 0; i < data.length; i++) {
3672
3699
  const balance = data[i];
3673
3700
  const balanceType = this.safeString(balance, 'type');
@@ -875,6 +875,8 @@ class latoken extends latoken$1 {
875
875
  'symbol': market['symbol'],
876
876
  'maker': this.safeNumber(response, 'makerFee'),
877
877
  'taker': this.safeNumber(response, 'takerFee'),
878
+ 'percentage': undefined,
879
+ 'tierBased': undefined,
878
880
  };
879
881
  }
880
882
  async fetchPrivateTradingFee(symbol, params = {}) {
@@ -898,6 +900,8 @@ class latoken extends latoken$1 {
898
900
  'symbol': market['symbol'],
899
901
  'maker': this.safeNumber(response, 'makerFee'),
900
902
  'taker': this.safeNumber(response, 'takerFee'),
903
+ 'percentage': undefined,
904
+ 'tierBased': undefined,
901
905
  };
902
906
  }
903
907
  async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -1241,6 +1241,8 @@ class lbank extends lbank$1 {
1241
1241
  'symbol': symbol,
1242
1242
  'maker': this.safeNumber(fee, 'makerCommission'),
1243
1243
  'taker': this.safeNumber(fee, 'takerCommission'),
1244
+ 'percentage': undefined,
1245
+ 'tierBased': undefined,
1244
1246
  };
1245
1247
  }
1246
1248
  async fetchTradingFee(symbol, params = {}) {
@@ -1255,7 +1257,7 @@ class lbank extends lbank$1 {
1255
1257
  */
1256
1258
  const market = this.market(symbol);
1257
1259
  const result = await this.fetchTradingFees(this.extend(params, { 'category': market['id'] }));
1258
- return result;
1260
+ return this.safeDict(result, symbol);
1259
1261
  }
1260
1262
  async fetchTradingFees(params = {}) {
1261
1263
  /**
@@ -894,6 +894,8 @@ class luno extends luno$1 {
894
894
  'symbol': symbol,
895
895
  'maker': this.safeNumber(response, 'maker_fee'),
896
896
  'taker': this.safeNumber(response, 'taker_fee'),
897
+ 'percentage': undefined,
898
+ 'tierBased': undefined,
897
899
  };
898
900
  }
899
901
  async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
@@ -4299,8 +4299,9 @@ class mexc extends mexc$1 {
4299
4299
  /**
4300
4300
  * @method
4301
4301
  * @name mexc#fetchLeverageTiers
4302
- * @description retrieve information on the maximum leverage, and maintenance margin for trades of varying trade sizes
4303
- * @param {string[]|undefined} symbols list of unified market symbols
4302
+ * @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
4303
+ * @see https://mexcdevelop.github.io/apidocs/contract_v1_en/#get-the-contract-information
4304
+ * @param {string[]} [symbols] list of unified market symbols
4304
4305
  * @param {object} [params] extra parameters specific to the exchange API endpoint
4305
4306
  * @returns {object} a dictionary of [leverage tiers structures]{@link https://docs.ccxt.com/#/?id=leverage-tiers-structure}, indexed by market symbols
4306
4307
  */
@@ -4356,10 +4357,44 @@ class mexc extends mexc$1 {
4356
4357
  return this.parseLeverageTiers(data, symbols, 'symbol');
4357
4358
  }
4358
4359
  parseMarketLeverageTiers(info, market = undefined) {
4359
- /**
4360
- @param info {object} Exchange response for 1 market
4361
- @param market {object} CCXT market
4362
- */
4360
+ //
4361
+ // {
4362
+ // "symbol": "BTC_USDT",
4363
+ // "displayName": "BTC_USDT永续",
4364
+ // "displayNameEn": "BTC_USDT SWAP",
4365
+ // "positionOpenType": 3,
4366
+ // "baseCoin": "BTC",
4367
+ // "quoteCoin": "USDT",
4368
+ // "settleCoin": "USDT",
4369
+ // "contractSize": 0.0001,
4370
+ // "minLeverage": 1,
4371
+ // "maxLeverage": 125,
4372
+ // "priceScale": 2,
4373
+ // "volScale": 0,
4374
+ // "amountScale": 4,
4375
+ // "priceUnit": 0.5,
4376
+ // "volUnit": 1,
4377
+ // "minVol": 1,
4378
+ // "maxVol": 1000000,
4379
+ // "bidLimitPriceRate": 0.1,
4380
+ // "askLimitPriceRate": 0.1,
4381
+ // "takerFeeRate": 0.0006,
4382
+ // "makerFeeRate": 0.0002,
4383
+ // "maintenanceMarginRate": 0.004,
4384
+ // "initialMarginRate": 0.008,
4385
+ // "riskBaseVol": 10000,
4386
+ // "riskIncrVol": 200000,
4387
+ // "riskIncrMmr": 0.004,
4388
+ // "riskIncrImr": 0.004,
4389
+ // "riskLevelLimit": 5,
4390
+ // "priceCoefficientVariation": 0.1,
4391
+ // "indexOrigin": ["BINANCE","GATEIO","HUOBI","MXC"],
4392
+ // "state": 0, // 0 enabled, 1 delivery, 2 completed, 3 offline, 4 pause
4393
+ // "isNew": false,
4394
+ // "isHot": true,
4395
+ // "isHidden": false
4396
+ // }
4397
+ //
4363
4398
  let maintenanceMarginRate = this.safeString(info, 'maintenanceMarginRate');
4364
4399
  let initialMarginRate = this.safeString(info, 'initialMarginRate');
4365
4400
  const maxVol = this.safeString(info, 'maxVol');
@@ -4369,6 +4404,19 @@ class mexc extends mexc$1 {
4369
4404
  let floor = '0';
4370
4405
  const tiers = [];
4371
4406
  const quoteId = this.safeString(info, 'quoteCoin');
4407
+ if (riskIncrVol === '0') {
4408
+ return [
4409
+ {
4410
+ 'tier': 0,
4411
+ 'currency': this.safeCurrencyCode(quoteId),
4412
+ 'notionalFloor': undefined,
4413
+ 'notionalCap': undefined,
4414
+ 'maintenanceMarginRate': undefined,
4415
+ 'maxLeverage': this.safeNumber(info, 'maxLeverage'),
4416
+ 'info': info,
4417
+ },
4418
+ ];
4419
+ }
4372
4420
  while (Precise["default"].stringLt(floor, maxVol)) {
4373
4421
  const cap = Precise["default"].stringAdd(floor, riskIncrVol);
4374
4422
  tiers.push({
@@ -4511,7 +4559,7 @@ class mexc extends mexc$1 {
4511
4559
  }
4512
4560
  }
4513
4561
  if (result === undefined) {
4514
- throw new errors.InvalidAddress(this.id + ' fetchDepositAddress() cannot find a deposit address for ' + code + ', and network' + network + 'consider creating one using the MEXC platform');
4562
+ throw new errors.InvalidAddress(this.id + ' fetchDepositAddress() cannot find a deposit address for ' + code + ', and network' + network + 'consider creating one using .createDepositAddress() method or in MEXC website');
4515
4563
  }
4516
4564
  return result;
4517
4565
  }
@@ -2354,6 +2354,8 @@ class okx extends okx$1 {
2354
2354
  // OKX returns the fees as negative values opposed to other exchanges, so the sign needs to be flipped
2355
2355
  'maker': this.parseNumber(Precise["default"].stringNeg(this.safeString2(fee, 'maker', 'makerU'))),
2356
2356
  'taker': this.parseNumber(Precise["default"].stringNeg(this.safeString2(fee, 'taker', 'takerU'))),
2357
+ 'percentage': undefined,
2358
+ 'tierBased': undefined,
2357
2359
  };
2358
2360
  }
2359
2361
  async fetchTradingFee(symbol, params = {}) {
@@ -1722,6 +1722,8 @@ class bitget extends bitget$1 {
1722
1722
  'ordersAlgo': this.handleOrder,
1723
1723
  'account': this.handleBalance,
1724
1724
  'positions': this.handlePositions,
1725
+ 'account-isolated': this.handleBalance,
1726
+ 'account-crossed': this.handleBalance,
1725
1727
  };
1726
1728
  const arg = this.safeValue(message, 'arg', {});
1727
1729
  const topic = this.safeValue(arg, 'channel', '');
@@ -1161,6 +1161,8 @@ class timex extends timex$1 {
1161
1161
  'symbol': this.safeSymbol(marketId, market),
1162
1162
  'maker': rate,
1163
1163
  'taker': rate,
1164
+ 'percentage': undefined,
1165
+ 'tierBased': undefined,
1164
1166
  };
1165
1167
  }
1166
1168
  async fetchTradingFee(symbol, params = {}) {
@@ -4,8 +4,6 @@ import path from 'path'
4
4
  import ansi from 'ansicolor'
5
5
  import asTable from 'as-table'
6
6
  import ololog from 'ololog'
7
- import util from 'util'
8
- import { execSync } from 'child_process'
9
7
  import ccxt from '../../js/ccxt.js'
10
8
  import { Agent } from 'https'
11
9
 
@@ -3,8 +3,6 @@ import path from 'path'
3
3
  import ansi from 'ansicolor'
4
4
  import asTable from 'as-table'
5
5
  import ololog from 'ololog'
6
- import util from 'util'
7
- import { execSync } from 'child_process'
8
6
  import ccxt from '../../ts/ccxt.js'
9
7
  import { Agent } from 'https'
10
8
 
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 { Market, Trade, Fee, Ticker, OrderBook, Order, Transaction, Tickers, Currency, Balance, DepositAddress, WithdrawalResponse, DepositAddressResponse, OHLCV, Balances, PartialBalances, Dictionary, MinMax, Position, FundingRateHistory, Liquidation, FundingHistory, MarginMode, Greeks, Leverage, Leverages, Option, OptionChain } from './src/base/types.js';
6
- import { BaseError, ExchangeError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, NotSupported, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, AuthenticationError, AddressPending, NoChange } from './src/base/errors.js';
7
- declare const version = "4.2.86";
6
+ import { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, ProxyError, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, ExchangeClosedByUser } from './src/base/errors.js';
7
+ declare const version = "4.2.88";
8
8
  import ace from './src/ace.js';
9
9
  import alpaca from './src/alpaca.js';
10
10
  import ascendex from './src/ascendex.js';
@@ -519,5 +519,5 @@ declare const ccxt: {
519
519
  zaif: typeof zaif;
520
520
  zonda: typeof zonda;
521
521
  } & typeof functions & typeof errors;
522
- export { version, Exchange, exchanges, pro, Precise, functions, errors, BaseError, ExchangeError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, NotSupported, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, AuthenticationError, AddressPending, NoChange, Market, Trade, Fee, Ticker, OrderBook, Order, Transaction, Tickers, Currency, Balance, DepositAddress, WithdrawalResponse, DepositAddressResponse, OHLCV, Balances, PartialBalances, Dictionary, MinMax, Position, FundingRateHistory, Liquidation, FundingHistory, MarginMode, Greeks, Leverage, Leverages, Option, OptionChain, 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, coinbaseinternational, coinbasepro, 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, p2b, paymium, phemex, poloniex, poloniexfutures, probit, timex, tokocrypto, tradeogre, upbit, wavesexchange, wazirx, whitebit, woo, yobit, zaif, zonda, };
522
+ export { version, Exchange, exchanges, pro, Precise, functions, errors, BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, ProxyError, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, ExchangeClosedByUser, Market, Trade, Fee, Ticker, OrderBook, Order, Transaction, Tickers, Currency, Balance, DepositAddress, WithdrawalResponse, DepositAddressResponse, OHLCV, Balances, PartialBalances, Dictionary, MinMax, Position, FundingRateHistory, Liquidation, FundingHistory, MarginMode, Greeks, Leverage, Leverages, Option, OptionChain, 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, coinbaseinternational, coinbasepro, 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, p2b, paymium, phemex, poloniex, poloniexfutures, probit, timex, tokocrypto, tradeogre, upbit, wavesexchange, wazirx, whitebit, woo, yobit, zaif, zonda, };
523
523
  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, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, NotSupported, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, AuthenticationError, AddressPending, NoChange } from './src/base/errors.js';
38
+ import { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, ProxyError, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, ExchangeClosedByUser } from './src/base/errors.js';
39
39
  //-----------------------------------------------------------------------------
40
40
  // this is updated by vss.js when building
41
- const version = '4.2.87';
41
+ const version = '4.2.89';
42
42
  Exchange.ccxtVersion = version;
43
43
  //-----------------------------------------------------------------------------
44
44
  import ace from './src/ace.js';
@@ -392,6 +392,6 @@ pro.exchanges = Object.keys(pro);
392
392
  pro['Exchange'] = Exchange; // now the same for rest and ts
393
393
  //-----------------------------------------------------------------------------
394
394
  const ccxt = Object.assign({ version, Exchange, Precise, 'exchanges': Object.keys(exchanges), 'pro': pro }, exchanges, functions, errors);
395
- export { version, Exchange, exchanges, pro, Precise, functions, errors, BaseError, ExchangeError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, NotSupported, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, AuthenticationError, AddressPending, NoChange, 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, coinbaseinternational, coinbasepro, 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, p2b, paymium, phemex, poloniex, poloniexfutures, probit, timex, tokocrypto, tradeogre, upbit, wavesexchange, wazirx, whitebit, woo, yobit, zaif, zonda, };
395
+ export { version, Exchange, exchanges, pro, Precise, functions, errors, BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, ProxyError, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, ExchangeClosedByUser, 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, coinbaseinternational, coinbasepro, 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, p2b, paymium, phemex, poloniex, poloniexfutures, probit, timex, tokocrypto, tradeogre, upbit, wavesexchange, wazirx, whitebit, woo, yobit, zaif, zonda, };
396
396
  export default ccxt;
397
397
  //-----------------------------------------------------------------------------
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/ascendex.js';
2
- import type { TransferEntry, FundingHistory, Int, OHLCV, Order, OrderSide, OrderType, OrderRequest, Str, Trade, Balances, Transaction, Ticker, OrderBook, Tickers, Strings, Num, Currency, Market, Leverage, Leverages, Account, MarginModes, MarginMode, MarginModification } from './base/types.js';
2
+ import type { TransferEntry, FundingHistory, Int, OHLCV, Order, OrderSide, OrderType, OrderRequest, Str, Trade, Balances, Transaction, Ticker, OrderBook, Tickers, Strings, Num, Currency, Market, Leverage, Leverages, Account, MarginModes, MarginMode, MarginModification, Currencies, TradingFees } from './base/types.js';
3
3
  /**
4
4
  * @class ascendex
5
5
  * @augments Exchange
@@ -7,7 +7,7 @@ import type { TransferEntry, FundingHistory, Int, OHLCV, Order, OrderSide, Order
7
7
  export default class ascendex extends Exchange {
8
8
  describe(): any;
9
9
  getAccount(params?: {}): string;
10
- fetchCurrencies(params?: {}): Promise<{}>;
10
+ fetchCurrencies(params?: {}): Promise<Currencies>;
11
11
  fetchMarkets(params?: {}): Promise<Market[]>;
12
12
  fetchTime(params?: {}): Promise<number>;
13
13
  fetchAccounts(params?: {}): Promise<Account[]>;
@@ -25,7 +25,7 @@ export default class ascendex extends Exchange {
25
25
  fetchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
26
26
  parseOrderStatus(status: any): string;
27
27
  parseOrder(order: any, market?: Market): Order;
28
- fetchTradingFees(params?: {}): Promise<{}>;
28
+ fetchTradingFees(params?: {}): Promise<TradingFees>;
29
29
  createOrderRequest(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: Num, params?: {}): any;
30
30
  createOrder(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: Num, params?: {}): Promise<Order>;
31
31
  createOrders(orders: OrderRequest[], params?: {}): Promise<Order[]>;
@@ -1486,6 +1486,8 @@ export default class ascendex extends Exchange {
1486
1486
  'symbol': symbol,
1487
1487
  'maker': this.safeNumber(takerMaker, 'maker'),
1488
1488
  'taker': this.safeNumber(takerMaker, 'taker'),
1489
+ 'percentage': undefined,
1490
+ 'tierBased': undefined,
1489
1491
  };
1490
1492
  }
1491
1493
  return result;
@@ -3,7 +3,7 @@ import { // eslint-disable-line object-curly-newline
3
3
  ExchangeError, AuthenticationError, DDoSProtection, RequestTimeout, ExchangeNotAvailable, RateLimitExceeded } from "./errors.js";
4
4
  import WsClient from './ws/WsClient.js';
5
5
  import { OrderBook as WsOrderBook, IndexedOrderBook, CountedOrderBook } from './ws/OrderBook.js';
6
- import type { Market, Trade, Ticker, OHLCV, OHLCVC, Order, OrderBook, Balance, Balances, Dictionary, Transaction, DepositAddressResponse, Currency, MinMax, IndexType, Int, OrderType, OrderSide, Position, FundingRate, DepositWithdrawFeeNetwork, LedgerEntry, BorrowInterest, OpenInterest, LeverageTier, TransferEntry, FundingRateHistory, Liquidation, FundingHistory, OrderRequest, MarginMode, Tickers, Greeks, Option, OptionChain, Str, Num, MarketInterface, CurrencyInterface, BalanceAccount, MarginModes, MarketType, Leverage, Leverages, LastPrice, LastPrices, Account, Strings, MarginModification } from './types.js';
6
+ import type { Market, Trade, Ticker, OHLCV, OHLCVC, Order, OrderBook, Balance, Balances, Dictionary, Transaction, DepositAddressResponse, Currency, MinMax, IndexType, Int, OrderType, OrderSide, Position, FundingRate, DepositWithdrawFeeNetwork, LedgerEntry, BorrowInterest, OpenInterest, LeverageTier, TransferEntry, FundingRateHistory, Liquidation, FundingHistory, OrderRequest, MarginMode, Tickers, Greeks, Option, OptionChain, Str, Num, MarketInterface, CurrencyInterface, BalanceAccount, MarginModes, MarketType, Leverage, Leverages, LastPrice, LastPrices, Account, Strings, MarginModification, TradingFeeInterface, Currencies, TradingFees } from './types.js';
7
7
  export type { Market, Trade, Fee, Ticker, OHLCV, OHLCVC, Order, OrderBook, Balance, Balances, Dictionary, Transaction, DepositAddressResponse, Currency, MinMax, IndexType, Int, OrderType, OrderSide, Position, LedgerEntry, BorrowInterest, OpenInterest, LeverageTier, TransferEntry, BorrowRate, FundingRateHistory, Liquidation, FundingHistory, OrderRequest, MarginMode, Tickers, Greeks, Option, OptionChain, Str, Num, MarketInterface, CurrencyInterface, BalanceAccount, MarginModes, MarketType, Leverage, Leverages, LastPrice, LastPrices, Account, Strings } from './types.js';
8
8
  import { ArrayCache, ArrayCacheByTimestamp } from './ws/Cache.js';
9
9
  import { OrderBook as Ob } from './ws/OrderBook.js';
@@ -141,7 +141,7 @@ export default class Exchange {
141
141
  markets_by_id: Dictionary<any>;
142
142
  symbols: string[];
143
143
  ids: string[];
144
- currencies: Dictionary<Currency>;
144
+ currencies: Currencies;
145
145
  baseCurrencies: any;
146
146
  quoteCurrencies: any;
147
147
  currencies_by_id: any;
@@ -588,7 +588,7 @@ export default class Exchange {
588
588
  onJsonResponse(responseBody: any): any;
589
589
  loadMarketsHelper(reload?: boolean, params?: {}): Promise<Dictionary<any>>;
590
590
  loadMarkets(reload?: boolean, params?: {}): Promise<Dictionary<Market>>;
591
- fetchCurrencies(params?: {}): Promise<unknown>;
591
+ fetchCurrencies(params?: {}): Promise<Currencies>;
592
592
  fetchCurrenciesWs(params?: {}): Promise<unknown>;
593
593
  fetchMarkets(params?: {}): Promise<Market[]>;
594
594
  fetchMarketsWs(params?: {}): Promise<Market[]>;
@@ -741,7 +741,7 @@ export default class Exchange {
741
741
  fee: any;
742
742
  info: Dictionary<any>;
743
743
  };
744
- safeCurrencyStructure(currency: object): any;
744
+ safeCurrencyStructure(currency: object): CurrencyInterface;
745
745
  safeMarketStructure(market?: any): MarketInterface;
746
746
  setMarkets(markets: any, currencies?: any): Dictionary<any>;
747
747
  getDescribeForExtendedWsExchange(currentRestInstance: any, parentRestInstance: any, wsBaseDescribe: Dictionary<any>): any;
@@ -920,7 +920,7 @@ export default class Exchange {
920
920
  parseLastPrice(price: any, market?: Market): LastPrice;
921
921
  fetchDepositAddress(code: string, params?: {}): Promise<any>;
922
922
  account(): BalanceAccount;
923
- commonCurrencyCode(currency: string): string;
923
+ commonCurrencyCode(code: string): string;
924
924
  currency(code: string): any;
925
925
  market(symbol: string): MarketInterface;
926
926
  createExpiredOptionMarket(symbol: string): MarketInterface;
@@ -943,6 +943,7 @@ export default class Exchange {
943
943
  safeNumber(obj: object, key: IndexType, defaultNumber?: Num): Num;
944
944
  safeNumberN(obj: object, arr: IndexType[], defaultNumber?: Num): Num;
945
945
  parsePrecision(precision?: string): string;
946
+ integerPrecisionToAmount(precision: Str): string;
946
947
  loadTimeDifference(params?: {}): Promise<any>;
947
948
  implodeHostname(url: string): any;
948
949
  fetchMarketLeverageTiers(symbol: string, params?: {}): Promise<any>;
@@ -967,9 +968,9 @@ export default class Exchange {
967
968
  isPostOnly(isMarketOrder: boolean, exchangeSpecificParam: any, params?: {}): boolean;
968
969
  handlePostOnly(isMarketOrder: boolean, exchangeSpecificPostOnlyOption: boolean, params?: any): any[];
969
970
  fetchLastPrices(symbols?: string[], params?: {}): Promise<LastPrices>;
970
- fetchTradingFees(params?: {}): Promise<{}>;
971
- fetchTradingFeesWs(params?: {}): Promise<{}>;
972
- fetchTradingFee(symbol: string, params?: {}): Promise<{}>;
971
+ fetchTradingFees(params?: {}): Promise<TradingFees>;
972
+ fetchTradingFeesWs(params?: {}): Promise<TradingFees>;
973
+ fetchTradingFee(symbol: string, params?: {}): Promise<TradingFeeInterface>;
973
974
  parseOpenInterest(interest: any, market?: Market): OpenInterest;
974
975
  parseOpenInterests(response: any, market?: any, since?: Int, limit?: Int): OpenInterest[];
975
976
  fetchFundingRate(symbol: string, params?: {}): Promise<FundingRate>;