ccxt 4.3.18 → 4.3.20

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 (173) hide show
  1. package/README.md +7 -5
  2. package/dist/cjs/ccxt.js +6 -1
  3. package/dist/cjs/src/abstract/woofipro.js +9 -0
  4. package/dist/cjs/src/ascendex.js +3 -4
  5. package/dist/cjs/src/base/Exchange.js +45 -2
  6. package/dist/cjs/src/base/functions/crypto.js +10 -3
  7. package/dist/cjs/src/base/functions/encode.js +6 -3
  8. package/dist/cjs/src/base/functions/number.js +8 -5
  9. package/dist/cjs/src/base/functions/rsa.js +5 -5
  10. package/dist/cjs/src/bigone.js +1 -1
  11. package/dist/cjs/src/bitfinex.js +25 -1
  12. package/dist/cjs/src/bitfinex2.js +59 -51
  13. package/dist/cjs/src/bitget.js +4 -5
  14. package/dist/cjs/src/bitmart.js +3 -3
  15. package/dist/cjs/src/bitstamp.js +1 -3
  16. package/dist/cjs/src/bybit.js +39 -9
  17. package/dist/cjs/src/coinex.js +360 -560
  18. package/dist/cjs/src/coinlist.js +1 -2
  19. package/dist/cjs/src/deribit.js +1 -1
  20. package/dist/cjs/src/hollaex.js +3 -3
  21. package/dist/cjs/src/indodax.js +1 -1
  22. package/dist/cjs/src/latoken.js +1 -1
  23. package/dist/cjs/src/mexc.js +1 -1
  24. package/dist/cjs/src/novadax.js +0 -1
  25. package/dist/cjs/src/okx.js +17 -0
  26. package/dist/cjs/src/phemex.js +17 -6
  27. package/dist/cjs/src/poloniex.js +1 -2
  28. package/dist/cjs/src/pro/bitget.js +136 -192
  29. package/dist/cjs/src/pro/coinbaseinternational.js +9 -1
  30. package/dist/cjs/src/pro/htx.js +12 -7
  31. package/dist/cjs/src/pro/okx.js +85 -0
  32. package/dist/cjs/src/pro/woofipro.js +1263 -0
  33. package/dist/cjs/src/wavesexchange.js +2 -2
  34. package/dist/cjs/src/woo.js +17 -3
  35. package/dist/cjs/src/woofipro.js +2698 -0
  36. package/js/ccxt.d.ts +8 -2
  37. package/js/ccxt.js +6 -2
  38. package/js/src/abstract/bitget.d.ts +3 -0
  39. package/js/src/abstract/bybit.d.ts +1 -0
  40. package/js/src/abstract/okx.d.ts +1 -0
  41. package/js/src/abstract/woofipro.d.ts +122 -0
  42. package/js/src/abstract/woofipro.js +11 -0
  43. package/js/src/ace.d.ts +2 -2
  44. package/js/src/ascendex.d.ts +5 -15
  45. package/js/src/ascendex.js +3 -4
  46. package/js/src/base/Exchange.d.ts +26 -17
  47. package/js/src/base/Exchange.js +45 -2
  48. package/js/src/base/functions/crypto.d.ts +1 -1
  49. package/js/src/base/functions/crypto.js +10 -3
  50. package/js/src/base/functions/encode.d.ts +1 -1
  51. package/js/src/base/functions/encode.js +6 -3
  52. package/js/src/base/functions/number.d.ts +1 -1
  53. package/js/src/base/functions/number.js +8 -5
  54. package/js/src/base/functions/rsa.js +6 -6
  55. package/js/src/base/types.d.ts +4 -0
  56. package/js/src/bigone.d.ts +4 -14
  57. package/js/src/bigone.js +1 -1
  58. package/js/src/binance.d.ts +13 -71
  59. package/js/src/binancecoinm.d.ts +2 -22
  60. package/js/src/binanceusdm.d.ts +2 -22
  61. package/js/src/bingx.d.ts +4 -14
  62. package/js/src/bit2c.d.ts +2 -2
  63. package/js/src/bitbank.d.ts +2 -2
  64. package/js/src/bitbns.d.ts +2 -2
  65. package/js/src/bitfinex.d.ts +6 -16
  66. package/js/src/bitfinex.js +25 -1
  67. package/js/src/bitfinex2.d.ts +6 -16
  68. package/js/src/bitfinex2.js +59 -51
  69. package/js/src/bitflyer.d.ts +2 -2
  70. package/js/src/bitget.d.ts +7 -17
  71. package/js/src/bitget.js +4 -5
  72. package/js/src/bithumb.d.ts +3 -3
  73. package/js/src/bitmart.d.ts +5 -14
  74. package/js/src/bitmart.js +3 -3
  75. package/js/src/bitmex.d.ts +4 -4
  76. package/js/src/bitopro.d.ts +2 -2
  77. package/js/src/bitrue.d.ts +5 -5
  78. package/js/src/bitso.d.ts +2 -2
  79. package/js/src/bitstamp.d.ts +3 -3
  80. package/js/src/bitstamp.js +1 -3
  81. package/js/src/bitteam.d.ts +2 -2
  82. package/js/src/bitvavo.d.ts +5 -5
  83. package/js/src/bl3p.d.ts +2 -2
  84. package/js/src/blockchaincom.d.ts +2 -2
  85. package/js/src/blofin.d.ts +4 -14
  86. package/js/src/btcalpha.d.ts +2 -2
  87. package/js/src/btcbox.d.ts +2 -2
  88. package/js/src/btcmarkets.d.ts +2 -2
  89. package/js/src/btcturk.d.ts +2 -2
  90. package/js/src/bybit.d.ts +9 -56
  91. package/js/src/bybit.js +39 -9
  92. package/js/src/cex.d.ts +2 -2
  93. package/js/src/coinbase.d.ts +4 -4
  94. package/js/src/coinbasepro.d.ts +3 -3
  95. package/js/src/coincheck.d.ts +2 -2
  96. package/js/src/coinex.d.ts +7 -17
  97. package/js/src/coinex.js +360 -560
  98. package/js/src/coinlist.d.ts +5 -15
  99. package/js/src/coinlist.js +1 -2
  100. package/js/src/coinmate.d.ts +2 -2
  101. package/js/src/coinmetro.d.ts +3 -3
  102. package/js/src/coinone.d.ts +2 -2
  103. package/js/src/coinsph.d.ts +2 -2
  104. package/js/src/coinspot.d.ts +2 -2
  105. package/js/src/cryptocom.d.ts +2 -2
  106. package/js/src/currencycom.d.ts +3 -3
  107. package/js/src/delta.d.ts +5 -43
  108. package/js/src/deribit.d.ts +7 -55
  109. package/js/src/deribit.js +1 -1
  110. package/js/src/digifinex.d.ts +5 -15
  111. package/js/src/exmo.d.ts +2 -2
  112. package/js/src/gate.d.ts +6 -54
  113. package/js/src/gemini.d.ts +2 -2
  114. package/js/src/hitbtc.d.ts +4 -14
  115. package/js/src/hollaex.d.ts +3 -3
  116. package/js/src/hollaex.js +3 -3
  117. package/js/src/htx.d.ts +4 -14
  118. package/js/src/huobijp.d.ts +4 -4
  119. package/js/src/hyperliquid.d.ts +1 -1
  120. package/js/src/idex.d.ts +3 -3
  121. package/js/src/independentreserve.d.ts +2 -2
  122. package/js/src/indodax.d.ts +2 -2
  123. package/js/src/indodax.js +1 -1
  124. package/js/src/kraken.d.ts +4 -14
  125. package/js/src/krakenfutures.d.ts +4 -14
  126. package/js/src/kucoin.d.ts +5 -15
  127. package/js/src/kucoinfutures.d.ts +4 -14
  128. package/js/src/kuna.d.ts +2 -2
  129. package/js/src/latoken.d.ts +5 -15
  130. package/js/src/latoken.js +1 -1
  131. package/js/src/lbank.d.ts +2 -2
  132. package/js/src/luno.d.ts +2 -2
  133. package/js/src/lykke.d.ts +2 -2
  134. package/js/src/mercado.d.ts +2 -2
  135. package/js/src/mexc.d.ts +8 -28
  136. package/js/src/mexc.js +1 -1
  137. package/js/src/ndax.d.ts +2 -2
  138. package/js/src/novadax.d.ts +4 -15
  139. package/js/src/novadax.js +0 -1
  140. package/js/src/okcoin.d.ts +4 -14
  141. package/js/src/okx.d.ts +10 -68
  142. package/js/src/okx.js +17 -0
  143. package/js/src/onetrading.d.ts +2 -2
  144. package/js/src/paymium.d.ts +4 -14
  145. package/js/src/phemex.d.ts +5 -15
  146. package/js/src/phemex.js +17 -6
  147. package/js/src/poloniex.d.ts +3 -13
  148. package/js/src/poloniex.js +1 -2
  149. package/js/src/poloniexfutures.d.ts +2 -2
  150. package/js/src/pro/bitget.js +137 -193
  151. package/js/src/pro/coinbaseinternational.d.ts +3 -3
  152. package/js/src/pro/coinbaseinternational.js +9 -1
  153. package/js/src/pro/htx.js +12 -7
  154. package/js/src/pro/okx.d.ts +4 -1
  155. package/js/src/pro/okx.js +85 -0
  156. package/js/src/pro/woofipro.d.ts +47 -0
  157. package/js/src/pro/woofipro.js +1264 -0
  158. package/js/src/probit.d.ts +3 -3
  159. package/js/src/timex.d.ts +2 -2
  160. package/js/src/tokocrypto.d.ts +3 -3
  161. package/js/src/upbit.d.ts +2 -2
  162. package/js/src/wavesexchange.d.ts +3 -3
  163. package/js/src/wavesexchange.js +2 -2
  164. package/js/src/wazirx.d.ts +2 -2
  165. package/js/src/whitebit.d.ts +3 -13
  166. package/js/src/woo.d.ts +7 -17
  167. package/js/src/woo.js +17 -3
  168. package/js/src/woofipro.d.ts +131 -0
  169. package/js/src/woofipro.js +2699 -0
  170. package/js/src/yobit.d.ts +2 -2
  171. package/js/src/zaif.d.ts +2 -2
  172. package/js/src/zonda.d.ts +4 -14
  173. package/package.json +1 -1
@@ -172,7 +172,14 @@ class coinbaseinternational extends coinbaseinternational$1 {
172
172
  * @param {object} [params] extra parameters specific to the exchange API endpoint
173
173
  * @returns {object} a dictionary of [funding rates structures]{@link https://docs.ccxt.com/#/?id=funding-rates-structure}, indexe by market symbols
174
174
  */
175
- return await this.subscribeMultiple('RISK', symbols, params);
175
+ const fundingRate = await this.subscribeMultiple('RISK', symbols, params);
176
+ const symbol = this.safeString(fundingRate, 'symbol');
177
+ if (this.newUpdates) {
178
+ const result = {};
179
+ result[symbol] = fundingRate;
180
+ return result;
181
+ }
182
+ return this.filterByArray(this.fundingRates, 'symbol', symbols);
176
183
  }
177
184
  async watchTicker(symbol, params = {}) {
178
185
  /**
@@ -588,6 +595,7 @@ class coinbaseinternational extends coinbaseinternational$1 {
588
595
  //
589
596
  const channel = this.safeString(message, 'channel');
590
597
  const fundingRate = this.parseFundingRate(message);
598
+ this.fundingRates[fundingRate['symbol']] = fundingRate;
591
599
  client.resolve(fundingRate, channel + '::' + fundingRate['symbol']);
592
600
  }
593
601
  handleErrorMessage(client, message) {
@@ -1897,7 +1897,7 @@ class htx extends htx$1 {
1897
1897
  // "data": { "user-id": "35930539" }
1898
1898
  // }
1899
1899
  //
1900
- const promise = client.futures['authenticated'];
1900
+ const promise = client.futures['auth'];
1901
1901
  promise.resolve(message);
1902
1902
  }
1903
1903
  handleErrorMessage(client, message) {
@@ -1925,6 +1925,12 @@ class htx extends htx$1 {
1925
1925
  // 'err-msg': "Non - single account user is not available, please check through the cross and isolated account asset interface",
1926
1926
  // "ts": 1698419490189
1927
1927
  // }
1928
+ // {
1929
+ // "action":"req",
1930
+ // "code":2002,
1931
+ // "ch":"auth",
1932
+ // "message":"auth.fail"
1933
+ // }
1928
1934
  //
1929
1935
  const status = this.safeString(message, 'status');
1930
1936
  if (status === 'error') {
@@ -1935,6 +1941,7 @@ class htx extends htx$1 {
1935
1941
  const errorCode = this.safeString(message, 'err-code');
1936
1942
  try {
1937
1943
  this.throwExactlyMatchedException(this.exceptions['ws']['exact'], errorCode, this.json(message));
1944
+ throw new errors.ExchangeError(this.json(message));
1938
1945
  }
1939
1946
  catch (e) {
1940
1947
  const messageHash = this.safeString(subscription, 'messageHash');
@@ -1947,11 +1954,12 @@ class htx extends htx$1 {
1947
1954
  }
1948
1955
  return false;
1949
1956
  }
1950
- const code = this.safeInteger2(message, 'code', 'err-code');
1951
- if (code !== undefined && ((code !== 200) && (code !== 0))) {
1957
+ const code = this.safeString2(message, 'code', 'err-code');
1958
+ if (code !== undefined && ((code !== '200') && (code !== '0'))) {
1952
1959
  const feedback = this.id + ' ' + this.json(message);
1953
1960
  try {
1954
1961
  this.throwExactlyMatchedException(this.exceptions['ws']['exact'], code, feedback);
1962
+ throw new errors.ExchangeError(feedback);
1955
1963
  }
1956
1964
  catch (e) {
1957
1965
  if (e instanceof errors.AuthenticationError) {
@@ -2305,9 +2313,6 @@ class htx extends htx$1 {
2305
2313
  'url': url,
2306
2314
  'hostname': hostname,
2307
2315
  };
2308
- if (type === 'spot') {
2309
- this.options['ws']['gunzip'] = false;
2310
- }
2311
2316
  await this.authenticate(authParams);
2312
2317
  return await this.watch(url, messageHash, this.extend(request, params), channel, extendedSubsription);
2313
2318
  }
@@ -2319,7 +2324,7 @@ class htx extends htx$1 {
2319
2324
  throw new errors.ArgumentsRequired(this.id + ' authenticate requires a url, hostname and type argument');
2320
2325
  }
2321
2326
  this.checkRequiredCredentials();
2322
- const messageHash = 'authenticated';
2327
+ const messageHash = 'auth';
2323
2328
  const relativePath = url.replace('wss://' + hostname, '');
2324
2329
  const client = this.client(url);
2325
2330
  const future = client.future(messageHash);
@@ -24,6 +24,8 @@ class okx extends okx$1 {
24
24
  'watchOrders': true,
25
25
  'watchMyTrades': true,
26
26
  'watchPositions': true,
27
+ 'watchFundingRate': true,
28
+ 'watchFundingRates': true,
27
29
  'createOrderWs': true,
28
30
  'editOrderWs': true,
29
31
  'cancelOrderWs': true,
@@ -245,6 +247,88 @@ class okx extends okx$1 {
245
247
  client.resolve(stored, messageHash);
246
248
  }
247
249
  }
250
+ async watchFundingRate(symbol, params = {}) {
251
+ /**
252
+ * @method
253
+ * @name okx#watchFundingRate
254
+ * @description watch the current funding rate
255
+ * @see https://www.okx.com/docs-v5/en/#public-data-websocket-funding-rate-channel
256
+ * @param {string} symbol unified market symbol
257
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
258
+ * @returns {object} a [funding rate structure]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
259
+ */
260
+ symbol = this.symbol(symbol);
261
+ const fr = await this.watchFundingRates([symbol], params);
262
+ return fr[symbol];
263
+ }
264
+ async watchFundingRates(symbols, params = {}) {
265
+ /**
266
+ * @method
267
+ * @name coinbaseinternational#watchFundingRates
268
+ * @description watch the funding rate for multiple markets
269
+ * @see https://www.okx.com/docs-v5/en/#public-data-websocket-funding-rate-channel
270
+ * @param {string[]} symbols list of unified market symbols
271
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
272
+ * @returns {object} a dictionary of [funding rates structures]{@link https://docs.ccxt.com/#/?id=funding-rates-structure}, indexe by market symbols
273
+ */
274
+ await this.loadMarkets();
275
+ symbols = this.marketSymbols(symbols);
276
+ const channel = 'funding-rate';
277
+ const topics = [];
278
+ const messageHashes = [];
279
+ for (let i = 0; i < symbols.length; i++) {
280
+ const symbol = symbols[i];
281
+ messageHashes.push(channel + ':' + symbol);
282
+ const marketId = this.marketId(symbol);
283
+ const topic = {
284
+ 'channel': channel,
285
+ 'instId': marketId,
286
+ };
287
+ topics.push(topic);
288
+ }
289
+ const request = {
290
+ 'op': 'subscribe',
291
+ 'args': topics,
292
+ };
293
+ const url = this.getUrl(channel, 'public');
294
+ const fundingRate = await this.watchMultiple(url, messageHashes, request, messageHashes);
295
+ if (this.newUpdates) {
296
+ const symbol = this.safeString(fundingRate, 'symbol');
297
+ const result = {};
298
+ result[symbol] = fundingRate;
299
+ return result;
300
+ }
301
+ return this.filterByArray(this.fundingRates, 'symbol', symbols);
302
+ }
303
+ handleFundingRate(client, message) {
304
+ //
305
+ // "data":[
306
+ // {
307
+ // "fundingRate":"0.0001875391284828",
308
+ // "fundingTime":"1700726400000",
309
+ // "instId":"BTC-USD-SWAP",
310
+ // "instType":"SWAP",
311
+ // "method": "next_period",
312
+ // "maxFundingRate":"0.00375",
313
+ // "minFundingRate":"-0.00375",
314
+ // "nextFundingRate":"0.0002608059239328",
315
+ // "nextFundingTime":"1700755200000",
316
+ // "premium": "0.0001233824646391",
317
+ // "settFundingRate":"0.0001699799259033",
318
+ // "settState":"settled",
319
+ // "ts":"1700724675402"
320
+ // }
321
+ // ]
322
+ //
323
+ const data = this.safeList(message, 'data', []);
324
+ for (let i = 0; i < data.length; i++) {
325
+ const rawfr = data[i];
326
+ const fundingRate = this.parseFundingRate(rawfr);
327
+ const symbol = fundingRate['symbol'];
328
+ this.fundingRates[symbol] = fundingRate;
329
+ client.resolve(fundingRate, 'funding-rate' + ':' + fundingRate['symbol']);
330
+ }
331
+ }
248
332
  async watchTicker(symbol, params = {}) {
249
333
  /**
250
334
  * @method
@@ -1633,6 +1717,7 @@ class okx extends okx$1 {
1633
1717
  'block-tickers': this.handleTicker,
1634
1718
  'trades': this.handleTrades,
1635
1719
  'account': this.handleBalance,
1720
+ 'funding-rate': this.handleFundingRate,
1636
1721
  // 'margin_account': this.handleBalance,
1637
1722
  'orders': this.handleOrders,
1638
1723
  'orders-algo': this.handleOrders,