ccxt 4.5.44 → 4.5.46

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 (111) hide show
  1. package/README.md +9 -12
  2. package/dist/ccxt.browser.min.js +3 -3
  3. package/dist/cjs/ccxt.js +1 -12
  4. package/dist/cjs/src/abstract/kucoinfutures.js +1 -1
  5. package/dist/cjs/src/base/Exchange.js +39 -3
  6. package/dist/cjs/src/base/functions/encode.js +2 -2
  7. package/dist/cjs/src/base/functions/generic.js +8 -2
  8. package/dist/cjs/src/binance.js +11 -2
  9. package/dist/cjs/src/bitget.js +3 -1
  10. package/dist/cjs/src/bitmart.js +144 -21
  11. package/dist/cjs/src/bitrue.js +1 -1
  12. package/dist/cjs/src/bitteam.js +1 -1
  13. package/dist/cjs/src/btcbox.js +1 -1
  14. package/dist/cjs/src/bybit.js +58 -56
  15. package/dist/cjs/src/bydfi.js +102 -100
  16. package/dist/cjs/src/cex.js +1 -0
  17. package/dist/cjs/src/gate.js +264 -170
  18. package/dist/cjs/src/grvt.js +3 -2
  19. package/dist/cjs/src/hyperliquid.js +16 -5
  20. package/dist/cjs/src/kraken.js +4 -2
  21. package/dist/cjs/src/krakenfutures.js +1 -5
  22. package/dist/cjs/src/kucoin.js +4733 -972
  23. package/dist/cjs/src/kucoinfutures.js +14 -3434
  24. package/dist/cjs/src/lbank.js +1 -1
  25. package/dist/cjs/src/okx.js +75 -57
  26. package/dist/cjs/src/paradex.js +2 -6
  27. package/dist/cjs/src/poloniex.js +1 -1
  28. package/dist/cjs/src/pro/bydfi.js +19 -19
  29. package/dist/cjs/src/pro/gate.js +114 -53
  30. package/dist/cjs/src/pro/grvt.js +5 -3
  31. package/dist/cjs/src/pro/htx.js +4 -4
  32. package/dist/cjs/src/pro/kucoin.js +819 -178
  33. package/dist/cjs/src/pro/kucoinfutures.js +95 -1261
  34. package/dist/cjs/src/pro/mexc.js +10 -5
  35. package/dist/cjs/src/pro/okx.js +85 -40
  36. package/index.d.cts +2 -0
  37. package/js/ccxt.d.ts +2 -14
  38. package/js/ccxt.js +2 -10
  39. package/js/src/abstract/bitmart.d.ts +7 -0
  40. package/js/src/abstract/bydfi.d.ts +29 -29
  41. package/js/src/abstract/kraken.d.ts +1 -0
  42. package/js/src/abstract/kucoin.d.ts +46 -2
  43. package/js/src/abstract/kucoinfutures.d.ts +27 -11
  44. package/js/src/base/Exchange.d.ts +13 -1
  45. package/js/src/base/Exchange.js +39 -3
  46. package/js/src/base/functions/encode.js +2 -2
  47. package/js/src/base/functions/generic.js +9 -3
  48. package/js/src/binance.js +11 -2
  49. package/js/src/bitget.js +3 -1
  50. package/js/src/bitmart.d.ts +18 -4
  51. package/js/src/bitmart.js +144 -21
  52. package/js/src/bitrue.js +1 -1
  53. package/js/src/bitteam.js +1 -1
  54. package/js/src/btcbox.js +1 -1
  55. package/js/src/bybit.d.ts +1 -0
  56. package/js/src/bybit.js +58 -56
  57. package/js/src/bydfi.d.ts +31 -31
  58. package/js/src/bydfi.js +102 -100
  59. package/js/src/cex.js +2 -1
  60. package/js/src/gate.d.ts +125 -119
  61. package/js/src/gate.js +264 -170
  62. package/js/src/grvt.js +3 -2
  63. package/js/src/hyperliquid.d.ts +3 -1
  64. package/js/src/hyperliquid.js +16 -5
  65. package/js/src/kraken.js +4 -2
  66. package/js/src/krakenfutures.js +1 -5
  67. package/js/src/kucoin.d.ts +696 -100
  68. package/js/src/kucoin.js +4734 -973
  69. package/js/src/kucoinfutures.d.ts +4 -522
  70. package/js/src/kucoinfutures.js +14 -3434
  71. package/js/src/lbank.js +1 -1
  72. package/js/src/okx.d.ts +1 -0
  73. package/js/src/okx.js +75 -57
  74. package/js/src/paradex.d.ts +0 -1
  75. package/js/src/paradex.js +2 -6
  76. package/js/src/poloniex.js +1 -1
  77. package/js/src/pro/bydfi.d.ts +18 -18
  78. package/js/src/pro/bydfi.js +19 -19
  79. package/js/src/pro/gate.d.ts +30 -1
  80. package/js/src/pro/gate.js +114 -53
  81. package/js/src/pro/grvt.js +5 -3
  82. package/js/src/pro/htx.js +4 -4
  83. package/js/src/pro/kucoin.d.ts +70 -30
  84. package/js/src/pro/kucoin.js +821 -180
  85. package/js/src/pro/kucoinfutures.d.ts +17 -195
  86. package/js/src/pro/kucoinfutures.js +96 -1262
  87. package/js/src/pro/mexc.js +10 -5
  88. package/js/src/pro/okx.d.ts +1 -0
  89. package/js/src/pro/okx.js +85 -40
  90. package/package.json +2 -2
  91. package/dist/cjs/src/abstract/alp.js +0 -11
  92. package/dist/cjs/src/abstract/defx.js +0 -11
  93. package/dist/cjs/src/abstract/timex.js +0 -11
  94. package/dist/cjs/src/alp.js +0 -1059
  95. package/dist/cjs/src/defx.js +0 -2142
  96. package/dist/cjs/src/pro/defx.js +0 -866
  97. package/dist/cjs/src/timex.js +0 -1793
  98. package/js/src/abstract/alp.d.ts +0 -21
  99. package/js/src/abstract/alp.js +0 -5
  100. package/js/src/abstract/defx.d.ts +0 -72
  101. package/js/src/abstract/defx.js +0 -5
  102. package/js/src/abstract/timex.d.ts +0 -65
  103. package/js/src/abstract/timex.js +0 -5
  104. package/js/src/alp.d.ts +0 -209
  105. package/js/src/alp.js +0 -1052
  106. package/js/src/defx.d.ts +0 -348
  107. package/js/src/defx.js +0 -2135
  108. package/js/src/pro/defx.d.ts +0 -236
  109. package/js/src/pro/defx.js +0 -859
  110. package/js/src/timex.d.ts +0 -247
  111. package/js/src/timex.js +0 -1786
@@ -647,7 +647,7 @@ class grvt extends grvt$1["default"] {
647
647
  // ...
648
648
  //
649
649
  const promises = [marketsPromise];
650
- if (this.privateKey !== undefined || this.apiKey !== undefined) {
650
+ if (!this.isEmptyString(this.apiKey) || !this.isEmptyString(this.privateKey)) {
651
651
  promises.push(this.signIn());
652
652
  }
653
653
  const results = await Promise.all(promises);
@@ -758,7 +758,8 @@ class grvt extends grvt$1["default"] {
758
758
  * @returns {object} an associative dictionary of currencies
759
759
  */
760
760
  async fetchCurrencies(params = {}) {
761
- const response = await this.publicMarketPostFullV1Currency(params);
761
+ const request = { '': '' }; // workaround for php [] empty arr
762
+ const response = await this.publicMarketPostFullV1Currency(request);
762
763
  //
763
764
  // {
764
765
  // "result": [
@@ -358,6 +358,7 @@ class hyperliquid extends hyperliquid$1["default"] {
358
358
  },
359
359
  },
360
360
  },
361
+ 'rollingWindowSize': 0.0,
361
362
  });
362
363
  }
363
364
  setSandboxMode(enabled) {
@@ -1094,6 +1095,8 @@ class hyperliquid extends hyperliquid$1["default"] {
1094
1095
  * @returns {object} a [balance structure]{@link https://docs.ccxt.com/?id=balance-structure}
1095
1096
  */
1096
1097
  async fetchBalance(params = {}) {
1098
+ // if user provides a different address in params and does not provide the enableUnifiedMargin we assume we need to request the info again
1099
+ const shouldRefresh = (this.safeString2(params, 'user', 'address') !== undefined) && this.safeBool(params, 'enableUnifiedMargin') === undefined;
1097
1100
  let userAddress = undefined;
1098
1101
  [userAddress, params] = this.handlePublicAddress('fetchBalance', params);
1099
1102
  let type = undefined;
@@ -1101,7 +1104,7 @@ class hyperliquid extends hyperliquid$1["default"] {
1101
1104
  let marginMode = undefined;
1102
1105
  [marginMode, params] = this.handleMarginModeAndParams('fetchBalance', params);
1103
1106
  let isUnifiedEnabled = undefined;
1104
- [isUnifiedEnabled, params] = await this.isUnifiedEnabled('fetchBalance', params);
1107
+ [isUnifiedEnabled, params] = await this.isUnifiedEnabled('fetchBalance', userAddress, shouldRefresh, params);
1105
1108
  const dex = this.safeString(params, 'dex');
1106
1109
  const isSpot = ((type === 'spot') || isUnifiedEnabled) && (dex === undefined);
1107
1110
  const request = {
@@ -1805,7 +1808,7 @@ class hyperliquid extends hyperliquid$1["default"] {
1805
1808
  }
1806
1809
  async initializeClient() {
1807
1810
  try {
1808
- await Promise.all([this.handleBuilderFeeApproval(), this.setRef(), this.isUnifiedEnabled('fetchBalance', {})]); // for now only fetchBalance requires the unified knowledge, but we can extend this to other methods as needed
1811
+ await Promise.all([this.handleBuilderFeeApproval(), this.setRef(), this.isUnifiedEnabled('fetchBalance', undefined, false, {})]); // for now only fetchBalance requires the unified knowledge, but we can extend this to other methods as needed
1809
1812
  }
1810
1813
  catch (e) {
1811
1814
  return false;
@@ -1838,15 +1841,22 @@ class hyperliquid extends hyperliquid$1["default"] {
1838
1841
  * @see https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint#query-a-users-abstraction-state
1839
1842
  * @description returns enableUnifiedMargin so the user can check if unified account is enabled
1840
1843
  * @param {string} method the method for which we want to check if unified margin is enabled, this is used to check options for specific methods (e.g. fetchBalance can have a specific option to enable unified margin)
1844
+ * @param address
1845
+ * @param shouldRefresh
1841
1846
  * @param {object} [params] extra parameters specific to the exchange API endpoint
1842
1847
  * @returns {bool} enableUnifiedMargin
1843
1848
  */
1844
- async isUnifiedEnabled(method, params = {}) {
1849
+ async isUnifiedEnabled(method, address = undefined, shouldRefresh = false, params = {}) {
1845
1850
  let userAddress = undefined;
1846
- [userAddress, params] = this.handlePublicAddress('isUnifiedEnabled', params);
1851
+ if (address !== undefined) {
1852
+ userAddress = address;
1853
+ }
1854
+ else {
1855
+ [userAddress, params] = this.handlePublicAddress('isUnifiedEnabled', params);
1856
+ }
1847
1857
  let enableUnifiedMargin = undefined;
1848
1858
  [enableUnifiedMargin, params] = this.handleOptionAndParams(params, method, 'enableUnifiedMargin');
1849
- if (enableUnifiedMargin === undefined) {
1859
+ if (enableUnifiedMargin === undefined || shouldRefresh) {
1850
1860
  const request = {
1851
1861
  'type': 'userAbstraction',
1852
1862
  'user': userAddress,
@@ -1862,6 +1872,7 @@ class hyperliquid extends hyperliquid$1["default"] {
1862
1872
  // "unifiedAccount" | "portfolioMargin" | "disabled" | "default" | "dexAbstraction"
1863
1873
  //
1864
1874
  enableUnifiedMargin = response === '"unifiedAccount"';
1875
+ // don't cache this result if this is a different addresss
1865
1876
  this.options['enableUnifiedMargin'] = enableUnifiedMargin; // cache this for future calls
1866
1877
  }
1867
1878
  return [enableUnifiedMargin, params];
@@ -214,6 +214,8 @@ class kraken extends kraken$1["default"] {
214
214
  'WithdrawAddresses': 3,
215
215
  'WithdrawStatus': 3,
216
216
  'WalletTransfer': 3,
217
+ // account
218
+ 'GetApiKeyInfo': 3,
217
219
  // sub accounts
218
220
  'CreateSubaccount': 3,
219
221
  'AccountTransfer': 3,
@@ -3538,7 +3540,7 @@ class kraken extends kraken$1["default"] {
3538
3540
  let url = '/' + this.version + '/' + api + '/' + path;
3539
3541
  if (api === 'public') {
3540
3542
  if (Object.keys(params).length) {
3541
- // urlencodeNested is used to address https://github.com/ccxt/ccxt/issues/12872
3543
+ // rawencode is used to address https://github.com/ccxt/ccxt/issues/12872
3542
3544
  url += '?' + this.urlencodeNested(params);
3543
3545
  }
3544
3546
  }
@@ -3552,11 +3554,11 @@ class kraken extends kraken$1["default"] {
3552
3554
  const isBatchOrder = (path === 'AddOrderBatch');
3553
3555
  this.checkRequiredCredentials();
3554
3556
  const nonce = this.nonce().toString();
3555
- // urlencodeNested is used to address https://github.com/ccxt/ccxt/issues/12872
3556
3557
  if (isCancelOrderBatch || isTriggerPercent || isBatchOrder) {
3557
3558
  body = this.json(this.extend({ 'nonce': nonce }, params));
3558
3559
  }
3559
3560
  else {
3561
+ // rawencode is used to address https://github.com/ccxt/ccxt/issues/12872
3560
3562
  body = this.urlencodeNested(this.extend({ 'nonce': nonce }, params));
3561
3563
  }
3562
3564
  const auth = this.encode(nonce + body);
@@ -2039,10 +2039,6 @@ class krakenfutures extends krakenfutures$1["default"] {
2039
2039
  //
2040
2040
  const datetime = this.safeString(orderDictFromFetchOrder, 'timestamp');
2041
2041
  const innerStatus = this.safeString(order, 'status');
2042
- let filledOrder = this.safeString(orderDictFromFetchOrder, 'filled', '0');
2043
- if ((filledOrder === '0') || (filledOrder === '0.0')) {
2044
- filledOrder = undefined;
2045
- }
2046
2042
  const fetchOrderPriceTriggerOptions = this.safeDict(orderDictFromFetchOrder, 'priceTriggerOptions', {});
2047
2043
  const fetchOrderTriggerPrice = this.safeString(fetchOrderPriceTriggerOptions, 'triggerPrice');
2048
2044
  return this.safeOrder({
@@ -2065,7 +2061,7 @@ class krakenfutures extends krakenfutures$1["default"] {
2065
2061
  'amount': this.safeString(orderDictFromFetchOrder, 'quantity'),
2066
2062
  'cost': undefined,
2067
2063
  'average': undefined,
2068
- 'filled': filledOrder,
2064
+ 'filled': this.safeString(orderDictFromFetchOrder, 'filled'),
2069
2065
  'remaining': undefined,
2070
2066
  'status': this.parseOrderStatus(innerStatus),
2071
2067
  'fee': undefined,