ccxt 4.2.19 → 4.2.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 (42) hide show
  1. package/README.md +98 -98
  2. package/dist/ccxt.browser.js +67 -133
  3. package/dist/ccxt.browser.min.js +2 -2
  4. package/dist/cjs/ccxt.js +1 -1
  5. package/dist/cjs/src/base/Exchange.js +10 -0
  6. package/dist/cjs/src/binance.js +2 -1
  7. package/dist/cjs/src/binanceus.js +17 -0
  8. package/dist/cjs/src/bingx.js +2 -1
  9. package/dist/cjs/src/bitget.js +25 -31
  10. package/dist/cjs/src/bitteam.js +1 -1
  11. package/dist/cjs/src/bybit.js +0 -28
  12. package/dist/cjs/src/delta.js +0 -18
  13. package/dist/cjs/src/gate.js +0 -25
  14. package/dist/cjs/src/kucoinfutures.js +9 -9
  15. package/dist/cjs/src/okx.js +0 -18
  16. package/js/ccxt.d.ts +1 -1
  17. package/js/ccxt.js +1 -1
  18. package/js/src/abstract/binance.d.ts +1 -0
  19. package/js/src/abstract/binancecoinm.d.ts +1 -0
  20. package/js/src/abstract/binanceus.d.ts +1 -0
  21. package/js/src/abstract/binanceusdm.d.ts +1 -0
  22. package/js/src/abstract/bitpanda.js +11 -0
  23. package/js/src/base/Exchange.d.ts +3 -0
  24. package/js/src/base/Exchange.js +10 -0
  25. package/js/src/binance.js +2 -1
  26. package/js/src/binanceus.js +17 -0
  27. package/js/src/bingx.js +2 -1
  28. package/js/src/bitget.d.ts +1 -1
  29. package/js/src/bitget.js +25 -31
  30. package/js/src/bitteam.js +1 -1
  31. package/js/src/bybit.d.ts +0 -1
  32. package/js/src/bybit.js +1 -29
  33. package/js/src/delta.d.ts +0 -1
  34. package/js/src/delta.js +0 -18
  35. package/js/src/gate.d.ts +0 -1
  36. package/js/src/gate.js +0 -25
  37. package/js/src/kucoinfutures.d.ts +6 -6
  38. package/js/src/kucoinfutures.js +9 -9
  39. package/js/src/okx.d.ts +0 -1
  40. package/js/src/okx.js +0 -18
  41. package/package.json +1 -1
  42. package/skip-tests.json +2 -1
package/dist/cjs/ccxt.js CHANGED
@@ -174,7 +174,7 @@ var woo$1 = require('./src/pro/woo.js');
174
174
 
175
175
  //-----------------------------------------------------------------------------
176
176
  // this is updated by vss.js when building
177
- const version = '4.2.19';
177
+ const version = '4.2.20';
178
178
  Exchange["default"].ccxtVersion = version;
179
179
  const exchanges = {
180
180
  'ace': ace,
@@ -394,6 +394,7 @@ class Exchange {
394
394
  'fetchBorrowInterest': undefined,
395
395
  'fetchBorrowRateHistory': undefined,
396
396
  'fetchCanceledOrders': undefined,
397
+ 'fetchCanceledAndClosedOrders': undefined,
397
398
  'fetchClosedOrder': undefined,
398
399
  'fetchClosedOrders': undefined,
399
400
  'fetchCrossBorrowRate': undefined,
@@ -4084,6 +4085,9 @@ class Exchange {
4084
4085
  }
4085
4086
  throw new errors.NotSupported(this.id + ' fetchClosedOrders() is not supported yet');
4086
4087
  }
4088
+ async fetchCanceledAndClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
4089
+ throw new errors.NotSupported(this.id + ' fetchCanceledAndClosedOrders() is not supported yet');
4090
+ }
4087
4091
  async fetchClosedOrdersWs(symbol = undefined, since = undefined, limit = undefined, params = {}) {
4088
4092
  if (this.has['fetchOrdersWs']) {
4089
4093
  const orders = await this.fetchOrdersWs(symbol, since, limit, params);
@@ -4212,8 +4216,14 @@ class Exchange {
4212
4216
  }
4213
4217
  return markets[0];
4214
4218
  }
4219
+ else if ((symbol.endsWith('-C')) || (symbol.endsWith('-P')) || (symbol.startsWith('C-')) || (symbol.startsWith('P-'))) {
4220
+ return this.createExpiredOptionMarket(symbol);
4221
+ }
4215
4222
  throw new errors.BadSymbol(this.id + ' does not have market symbol ' + symbol);
4216
4223
  }
4224
+ createExpiredOptionMarket(symbol) {
4225
+ throw new errors.NotSupported(this.id + ' createExpiredOptionMarket () is not supported yet');
4226
+ }
4217
4227
  handleWithdrawTagAndParams(tag, params) {
4218
4228
  if (typeof tag === 'object') {
4219
4229
  params = this.extend(tag, params);
@@ -952,6 +952,7 @@ class binance extends binance$1 {
952
952
  },
953
953
  'papi': {
954
954
  'get': {
955
+ 'ping': 1,
955
956
  'um/order': 1,
956
957
  'um/openOrder': 1,
957
958
  'um/openOrders': 1,
@@ -8697,7 +8698,7 @@ class binance extends binance$1 {
8697
8698
  throw new errors.AuthenticationError(this.id + ' userDataStream endpoint requires `apiKey` credential');
8698
8699
  }
8699
8700
  }
8700
- else if ((api === 'private') || (api === 'eapiPrivate') || (api === 'sapi' && path !== 'system/status') || (api === 'sapiV2') || (api === 'sapiV3') || (api === 'sapiV4') || (api === 'dapiPrivate') || (api === 'dapiPrivateV2') || (api === 'fapiPrivate') || (api === 'fapiPrivateV2') || (api === 'papi')) {
8701
+ else if ((api === 'private') || (api === 'eapiPrivate') || (api === 'sapi' && path !== 'system/status') || (api === 'sapiV2') || (api === 'sapiV3') || (api === 'sapiV4') || (api === 'dapiPrivate') || (api === 'dapiPrivateV2') || (api === 'fapiPrivate') || (api === 'fapiPrivateV2') || (api === 'papi' && path !== 'ping')) {
8701
8702
  this.checkRequiredCredentials();
8702
8703
  if (method === 'POST' && ((path === 'order') || (path === 'sor/order'))) {
8703
8704
  // inject in implicit API calls
@@ -81,7 +81,24 @@ class binanceus extends binance {
81
81
  'api': {
82
82
  'public': {
83
83
  'get': {
84
+ 'exchangeInfo': 10,
85
+ 'ping': 1,
86
+ 'time': 1,
87
+ 'depth': { 'cost': 1, 'byLimit': [[100, 1], [500, 5], [1000, 10], [5000, 50]] },
88
+ 'trades': 1,
89
+ 'aggTrades': 1,
90
+ 'historicalTrades': 5,
91
+ 'klines': 1,
84
92
  'ticker/price': { 'cost': 1, 'noSymbol': 2 },
93
+ 'avgPrice': 1,
94
+ 'ticker/bookTicker': { 'cost': 1, 'noSymbol': 2 },
95
+ 'ticker/24hr': { 'cost': 1, 'noSymbol': 40 },
96
+ 'ticker': { 'cost': 2, 'noSymbol': 100 },
97
+ },
98
+ },
99
+ 'private': {
100
+ 'get': {
101
+ 'status': 1,
85
102
  },
86
103
  },
87
104
  },
@@ -366,7 +366,8 @@ class bingx extends bingx$1 {
366
366
  '80017': errors.OrderNotFound,
367
367
  '100414': errors.AccountSuspended,
368
368
  '100419': errors.PermissionDenied,
369
- '100437': errors.BadRequest, // {"code":100437,"msg":"The withdrawal amount is lower than the minimum limit, please re-enter.","timestamp":1689258588845}
369
+ '100437': errors.BadRequest,
370
+ '101204': errors.InsufficientFunds, // bingx {"code":101204,"msg":"","data":{}}
370
371
  },
371
372
  'broad': {},
372
373
  },
@@ -55,6 +55,7 @@ class bitget extends bitget$1 {
55
55
  'fetchBorrowRateHistories': false,
56
56
  'fetchBorrowRateHistory': false,
57
57
  'fetchCanceledOrders': true,
58
+ 'fetchCanceledAndClosedOrders': true,
58
59
  'fetchClosedOrders': true,
59
60
  'fetchCrossBorrowRate': true,
60
61
  'fetchCrossBorrowRates': false,
@@ -5394,20 +5395,8 @@ class bitget extends bitget$1 {
5394
5395
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
5395
5396
  */
5396
5397
  await this.loadMarkets();
5397
- let market = undefined;
5398
- if (symbol !== undefined) {
5399
- market = this.market(symbol);
5400
- }
5401
- const response = await this.fetchCanceledAndClosedOrders(symbol, since, limit, params);
5402
- const result = [];
5403
- for (let i = 0; i < response.length; i++) {
5404
- const entry = response[i];
5405
- const status = this.parseOrderStatus(this.safeStringN(entry, ['state', 'status', 'planStatus']));
5406
- if (status === 'closed') {
5407
- result.push(entry);
5408
- }
5409
- }
5410
- return this.parseOrders(result, market, since, limit);
5398
+ const orders = await this.fetchCanceledAndClosedOrders(symbol, since, limit, params);
5399
+ return this.filterBy(orders, 'status', 'closed');
5411
5400
  }
5412
5401
  async fetchCanceledOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
5413
5402
  /**
@@ -5432,22 +5421,26 @@ class bitget extends bitget$1 {
5432
5421
  * @returns {object} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
5433
5422
  */
5434
5423
  await this.loadMarkets();
5435
- let market = undefined;
5436
- if (symbol !== undefined) {
5437
- market = this.market(symbol);
5438
- }
5439
- const response = await this.fetchCanceledAndClosedOrders(symbol, since, limit, params);
5440
- const result = [];
5441
- for (let i = 0; i < response.length; i++) {
5442
- const entry = response[i];
5443
- const status = this.parseOrderStatus(this.safeStringN(entry, ['state', 'status', 'planStatus']));
5444
- if (status === 'canceled') {
5445
- result.push(entry);
5446
- }
5447
- }
5448
- return this.parseOrders(result, market, since, limit);
5424
+ const orders = await this.fetchCanceledAndClosedOrders(symbol, since, limit, params);
5425
+ return this.filterBy(orders, 'status', 'canceled');
5449
5426
  }
5450
5427
  async fetchCanceledAndClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
5428
+ /**
5429
+ * @method
5430
+ * @name bitget#fetchCanceledAndClosedOrders
5431
+ * @see https://www.bitget.com/api-doc/spot/trade/Get-History-Orders
5432
+ * @see https://www.bitget.com/api-doc/spot/plan/Get-History-Plan-Order
5433
+ * @see https://www.bitget.com/api-doc/contract/trade/Get-Orders-History
5434
+ * @see https://www.bitget.com/api-doc/contract/plan/orders-plan-history
5435
+ * @see https://www.bitget.com/api-doc/margin/cross/trade/Get-Cross-Order-History
5436
+ * @see https://www.bitget.com/api-doc/margin/isolated/trade/Get-Isolated-Order-History
5437
+ * @description fetches information on multiple canceled and closed orders made by the user
5438
+ * @param {string} symbol unified market symbol of the market orders were made in
5439
+ * @param {int} [since] the earliest time in ms to fetch orders for
5440
+ * @param {int} [limit] the maximum number of order structures to retrieve
5441
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
5442
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
5443
+ */
5451
5444
  await this.loadMarkets();
5452
5445
  const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
5453
5446
  let market = undefined;
@@ -5732,16 +5725,17 @@ class bitget extends bitget$1 {
5732
5725
  const data = this.safeValue(response, 'data', {});
5733
5726
  if (marketType === 'spot') {
5734
5727
  if ((marginMode !== undefined) || stop) {
5735
- return this.safeValue(data, 'orderList', []);
5728
+ return this.parseOrders(this.safeValue(data, 'orderList', []), market, since, limit);
5736
5729
  }
5737
5730
  }
5738
5731
  else {
5739
- return this.safeValue(data, 'entrustedList', []);
5732
+ return this.parseOrders(this.safeValue(data, 'entrustedList', []), market, since, limit);
5740
5733
  }
5741
5734
  if (typeof response === 'string') {
5742
5735
  response = JSON.parse(response);
5743
5736
  }
5744
- return this.safeValue(response, 'data', []);
5737
+ const orders = this.safeValue(response, 'data', []);
5738
+ return this.parseOrders(orders, market, since, limit);
5745
5739
  }
5746
5740
  async fetchLedger(code = undefined, since = undefined, limit = undefined, params = {}) {
5747
5741
  /**
@@ -124,7 +124,7 @@ class bitteam extends bitteam$1 {
124
124
  '1d': '1D',
125
125
  },
126
126
  'urls': {
127
- 'logo': 'https://private-user-images.githubusercontent.com/43336371/291263231-aa2e0d61-edba-44a8-b9bf-68797dc417bd.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTEiLCJleHAiOjE3MDMwOTE4NTYsIm5iZiI6MTcwMzA5MTU1NiwicGF0aCI6Ii80MzMzNjM3MS8yOTEyNjMyMzEtYWEyZTBkNjEtZWRiYS00NGE4LWI5YmYtNjg3OTdkYzQxN2JkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFJV05KWUFYNENTVkVINTNBJTJGMjAyMzEyMjAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjMxMjIwVDE2NTkxNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTVkOGE5YmY3ZDMzMWY4YzVjODYzYWJjNjE1MGFkNTRkNzVlMDJmNWE1ZTgwNGQ2NzVkMzkyZTFhOTc4OTNjMWQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.B-ySU5Uo6vz53-iDe08tTQmJH6QOzUA9Jcbj-kZc2wg',
127
+ 'logo': 'https://github.com/ccxt/ccxt/assets/43336371/cf71fe3d-b8b4-40f2-a906-907661b28793',
128
128
  'api': {
129
129
  'history': 'https://history.bit.team',
130
130
  'public': 'https://bit.team',
@@ -1248,34 +1248,6 @@ class bybit extends bybit$1 {
1248
1248
  'info': undefined,
1249
1249
  };
1250
1250
  }
1251
- market(symbol) {
1252
- if (this.markets === undefined) {
1253
- throw new errors.ExchangeError(this.id + ' markets not loaded');
1254
- }
1255
- if (typeof symbol === 'string') {
1256
- if (symbol in this.markets) {
1257
- return this.markets[symbol];
1258
- }
1259
- else if (symbol in this.markets_by_id) {
1260
- const markets = this.markets_by_id[symbol];
1261
- let defaultType = this.safeString2(this.options, 'defaultType', 'defaultSubType', 'spot');
1262
- if (defaultType === 'future') {
1263
- defaultType = 'contract';
1264
- }
1265
- for (let i = 0; i < markets.length; i++) {
1266
- const market = markets[i];
1267
- if (market[defaultType]) {
1268
- return market;
1269
- }
1270
- }
1271
- return markets[0];
1272
- }
1273
- else if ((symbol.indexOf('-C') > -1) || (symbol.indexOf('-P') > -1)) {
1274
- return this.createExpiredOptionMarket(symbol);
1275
- }
1276
- }
1277
- throw new errors.BadSymbol(this.id + ' does not have market symbol ' + symbol);
1278
- }
1279
1251
  safeMarket(marketId = undefined, market = undefined, delimiter = undefined, marketType = undefined) {
1280
1252
  const isOption = (marketId !== undefined) && ((marketId.indexOf('-C') > -1) || (marketId.indexOf('-P') > -1));
1281
1253
  if (isOption && !(marketId in this.markets_by_id)) {
@@ -315,24 +315,6 @@ class delta extends delta$1 {
315
315
  'info': undefined,
316
316
  };
317
317
  }
318
- market(symbol) {
319
- if (this.markets === undefined) {
320
- throw new errors.ExchangeError(this.id + ' markets not loaded');
321
- }
322
- if (typeof symbol === 'string') {
323
- if (symbol in this.markets) {
324
- return this.markets[symbol];
325
- }
326
- else if (symbol in this.markets_by_id) {
327
- const markets = this.markets_by_id[symbol];
328
- return markets[0];
329
- }
330
- else if ((symbol.endsWith('-C')) || (symbol.endsWith('-P')) || (symbol.startsWith('C-')) || (symbol.startsWith('P-'))) {
331
- return this.createExpiredOptionMarket(symbol);
332
- }
333
- }
334
- throw new errors.BadSymbol(this.id + ' does not have market symbol ' + symbol);
335
- }
336
318
  safeMarket(marketId = undefined, market = undefined, delimiter = undefined, marketType = undefined) {
337
319
  const isOption = (marketId !== undefined) && ((marketId.endsWith('-C')) || (marketId.endsWith('-P')) || (marketId.startsWith('C-')) || (marketId.startsWith('P-')));
338
320
  if (isOption && !(marketId in this.markets_by_id)) {
@@ -933,31 +933,6 @@ class gate extends gate$1 {
933
933
  'info': undefined,
934
934
  };
935
935
  }
936
- market(symbol) {
937
- if (this.markets === undefined) {
938
- throw new errors.ExchangeError(this.id + ' markets not loaded');
939
- }
940
- if (typeof symbol === 'string') {
941
- if (symbol in this.markets) {
942
- return this.markets[symbol];
943
- }
944
- else if (symbol in this.markets_by_id) {
945
- const markets = this.markets_by_id[symbol];
946
- const defaultType = this.safeString2(this.options, 'defaultType', 'defaultSubType', 'spot');
947
- for (let i = 0; i < markets.length; i++) {
948
- const market = markets[i];
949
- if (market[defaultType]) {
950
- return market;
951
- }
952
- }
953
- return markets[0];
954
- }
955
- else if ((symbol.indexOf('-C') > -1) || (symbol.indexOf('-P') > -1)) {
956
- return this.createExpiredOptionMarket(symbol);
957
- }
958
- }
959
- throw new errors.BadSymbol(this.id + ' does not have market symbol ' + symbol);
960
- }
961
936
  safeMarket(marketId = undefined, market = undefined, delimiter = undefined, marketType = undefined) {
962
937
  const isOption = (marketId !== undefined) && ((marketId.indexOf('-C') > -1) || (marketId.indexOf('-P') > -1));
963
938
  if (isOption && !(marketId in this.markets_by_id)) {
@@ -1831,7 +1831,7 @@ class kucoinfutures extends kucoinfutures$1 {
1831
1831
  * @method
1832
1832
  * @name kucoinfutures#fetchFundingRate
1833
1833
  * @description fetch the current funding rate
1834
- * @see https://www.kucoin.com/docs/rest/futures-trading/market-data/get-current-funding-rate
1834
+ * @see https://www.kucoin.com/docs/rest/futures-trading/funding-fees/get-current-funding-rate
1835
1835
  * @param {string} symbol unified market symbol
1836
1836
  * @param {object} [params] extra parameters specific to the exchange API endpoint
1837
1837
  * @returns {object} a [funding rate structure]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
@@ -1855,7 +1855,7 @@ class kucoinfutures extends kucoinfutures$1 {
1855
1855
  // }
1856
1856
  //
1857
1857
  const data = this.safeValue(response, 'data');
1858
- const fundingTimestamp = this.safeNumber(data, 'timePoint');
1858
+ const fundingTimestamp = this.safeInteger(data, 'timePoint');
1859
1859
  // the website displayes the previous funding rate as "funding rate"
1860
1860
  return {
1861
1861
  'info': data,
@@ -1866,15 +1866,15 @@ class kucoinfutures extends kucoinfutures$1 {
1866
1866
  'estimatedSettlePrice': undefined,
1867
1867
  'timestamp': undefined,
1868
1868
  'datetime': undefined,
1869
- 'fundingRate': this.safeNumber(data, 'predictedValue'),
1870
- 'fundingTimestamp': undefined,
1871
- 'fundingDatetime': undefined,
1872
- 'nextFundingRate': undefined,
1869
+ 'fundingRate': this.safeNumber(data, 'value'),
1870
+ 'fundingTimestamp': fundingTimestamp,
1871
+ 'fundingDatetime': this.iso8601(fundingTimestamp),
1872
+ 'nextFundingRate': this.safeNumber(data, 'predictedValue'),
1873
1873
  'nextFundingTimestamp': undefined,
1874
1874
  'nextFundingDatetime': undefined,
1875
- 'previousFundingRate': this.safeNumber(data, 'value'),
1876
- 'previousFundingTimestamp': fundingTimestamp,
1877
- 'previousFundingDatetime': this.iso8601(fundingTimestamp),
1875
+ 'previousFundingRate': undefined,
1876
+ 'previousFundingTimestamp': undefined,
1877
+ 'previousFundingDatetime': undefined,
1878
1878
  };
1879
1879
  }
1880
1880
  parseBalance(response) {
@@ -1152,24 +1152,6 @@ class okx extends okx$1 {
1152
1152
  'info': undefined,
1153
1153
  };
1154
1154
  }
1155
- market(symbol) {
1156
- if (this.markets === undefined) {
1157
- throw new errors.ExchangeError(this.id + ' markets not loaded');
1158
- }
1159
- if (typeof symbol === 'string') {
1160
- if (symbol in this.markets) {
1161
- return this.markets[symbol];
1162
- }
1163
- else if (symbol in this.markets_by_id) {
1164
- const markets = this.markets_by_id[symbol];
1165
- return markets[0];
1166
- }
1167
- else if ((symbol.indexOf('-C') > -1) || (symbol.indexOf('-P') > -1)) {
1168
- return this.createExpiredOptionMarket(symbol);
1169
- }
1170
- }
1171
- throw new errors.BadSymbol(this.id + ' does not have market symbol ' + symbol);
1172
- }
1173
1155
  safeMarket(marketId = undefined, market = undefined, delimiter = undefined, marketType = undefined) {
1174
1156
  const isOption = (marketId !== undefined) && ((marketId.indexOf('-C') > -1) || (marketId.indexOf('-P') > -1));
1175
1157
  if (isOption && !(marketId in this.markets_by_id)) {
package/js/ccxt.d.ts CHANGED
@@ -4,7 +4,7 @@ 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 } from './src/base/types.js';
6
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.18";
7
+ declare const version = "4.2.19";
8
8
  import ace from './src/ace.js';
9
9
  import alpaca from './src/alpaca.js';
10
10
  import ascendex from './src/ascendex.js';
package/js/ccxt.js CHANGED
@@ -38,7 +38,7 @@ import * as errors from './src/base/errors.js';
38
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';
39
39
  //-----------------------------------------------------------------------------
40
40
  // this is updated by vss.js when building
41
- const version = '4.2.19';
41
+ const version = '4.2.20';
42
42
  Exchange.ccxtVersion = version;
43
43
  //-----------------------------------------------------------------------------
44
44
  import ace from './src/ace.js';
@@ -600,6 +600,7 @@ interface Exchange {
600
600
  privateDeleteOpenOrders(params?: {}): Promise<implicitReturnType>;
601
601
  privateDeleteOrderList(params?: {}): Promise<implicitReturnType>;
602
602
  privateDeleteOrder(params?: {}): Promise<implicitReturnType>;
603
+ papiGetPing(params?: {}): Promise<implicitReturnType>;
603
604
  papiGetUmOrder(params?: {}): Promise<implicitReturnType>;
604
605
  papiGetUmOpenOrder(params?: {}): Promise<implicitReturnType>;
605
606
  papiGetUmOpenOrders(params?: {}): Promise<implicitReturnType>;
@@ -600,6 +600,7 @@ interface binance {
600
600
  privateDeleteOpenOrders(params?: {}): Promise<implicitReturnType>;
601
601
  privateDeleteOrderList(params?: {}): Promise<implicitReturnType>;
602
602
  privateDeleteOrder(params?: {}): Promise<implicitReturnType>;
603
+ papiGetPing(params?: {}): Promise<implicitReturnType>;
603
604
  papiGetUmOrder(params?: {}): Promise<implicitReturnType>;
604
605
  papiGetUmOpenOrder(params?: {}): Promise<implicitReturnType>;
605
606
  papiGetUmOpenOrders(params?: {}): Promise<implicitReturnType>;
@@ -600,6 +600,7 @@ interface binance {
600
600
  privateDeleteOpenOrders(params?: {}): Promise<implicitReturnType>;
601
601
  privateDeleteOrderList(params?: {}): Promise<implicitReturnType>;
602
602
  privateDeleteOrder(params?: {}): Promise<implicitReturnType>;
603
+ papiGetPing(params?: {}): Promise<implicitReturnType>;
603
604
  papiGetUmOrder(params?: {}): Promise<implicitReturnType>;
604
605
  papiGetUmOpenOrder(params?: {}): Promise<implicitReturnType>;
605
606
  papiGetUmOpenOrders(params?: {}): Promise<implicitReturnType>;
@@ -600,6 +600,7 @@ interface binance {
600
600
  privateDeleteOpenOrders(params?: {}): Promise<implicitReturnType>;
601
601
  privateDeleteOrderList(params?: {}): Promise<implicitReturnType>;
602
602
  privateDeleteOrder(params?: {}): Promise<implicitReturnType>;
603
+ papiGetPing(params?: {}): Promise<implicitReturnType>;
603
604
  papiGetUmOrder(params?: {}): Promise<implicitReturnType>;
604
605
  papiGetUmOpenOrder(params?: {}): Promise<implicitReturnType>;
605
606
  papiGetUmOpenOrders(params?: {}): Promise<implicitReturnType>;
@@ -0,0 +1,11 @@
1
+ // ----------------------------------------------------------------------------
2
+
3
+ // PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
4
+ // https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
5
+ // EDIT THE CORRESPONDENT .ts FILE INSTEAD
6
+
7
+ // -------------------------------------------------------------------------------
8
+ import _onetrading from '../onetrading.js';
9
+ class onetrading extends _onetrading {
10
+ }
11
+ export default onetrading;
@@ -331,6 +331,7 @@ export default class Exchange {
331
331
  fetchBorrowInterest: any;
332
332
  fetchBorrowRateHistory: any;
333
333
  fetchCanceledOrders: any;
334
+ fetchCanceledAndClosedOrders: any;
334
335
  fetchClosedOrder: any;
335
336
  fetchClosedOrders: any;
336
337
  fetchCrossBorrowRate: any;
@@ -800,6 +801,7 @@ export default class Exchange {
800
801
  fetchOpenOrders(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
801
802
  fetchOpenOrdersWs(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
802
803
  fetchClosedOrders(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
804
+ fetchCanceledAndClosedOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
803
805
  fetchClosedOrdersWs(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
804
806
  fetchMyTrades(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
805
807
  fetchMyLiquidations(symbol?: string, since?: Int, limit?: Int, params?: {}): Promise<Liquidation[]>;
@@ -823,6 +825,7 @@ export default class Exchange {
823
825
  commonCurrencyCode(currency: string): string;
824
826
  currency(code: any): any;
825
827
  market(symbol: string): MarketInterface;
828
+ createExpiredOptionMarket(symbol: string): MarketInterface;
826
829
  handleWithdrawTagAndParams(tag: any, params: any): any;
827
830
  createLimitOrder(symbol: string, side: OrderSide, amount: any, price: any, params?: {}): Promise<Order>;
828
831
  createMarketOrder(symbol: string, side: OrderSide, amount: any, price?: any, params?: {}): Promise<Order>;
@@ -388,6 +388,7 @@ export default class Exchange {
388
388
  'fetchBorrowInterest': undefined,
389
389
  'fetchBorrowRateHistory': undefined,
390
390
  'fetchCanceledOrders': undefined,
391
+ 'fetchCanceledAndClosedOrders': undefined,
391
392
  'fetchClosedOrder': undefined,
392
393
  'fetchClosedOrders': undefined,
393
394
  'fetchCrossBorrowRate': undefined,
@@ -4080,6 +4081,9 @@ export default class Exchange {
4080
4081
  }
4081
4082
  throw new NotSupported(this.id + ' fetchClosedOrders() is not supported yet');
4082
4083
  }
4084
+ async fetchCanceledAndClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
4085
+ throw new NotSupported(this.id + ' fetchCanceledAndClosedOrders() is not supported yet');
4086
+ }
4083
4087
  async fetchClosedOrdersWs(symbol = undefined, since = undefined, limit = undefined, params = {}) {
4084
4088
  if (this.has['fetchOrdersWs']) {
4085
4089
  const orders = await this.fetchOrdersWs(symbol, since, limit, params);
@@ -4208,8 +4212,14 @@ export default class Exchange {
4208
4212
  }
4209
4213
  return markets[0];
4210
4214
  }
4215
+ else if ((symbol.endsWith('-C')) || (symbol.endsWith('-P')) || (symbol.startsWith('C-')) || (symbol.startsWith('P-'))) {
4216
+ return this.createExpiredOptionMarket(symbol);
4217
+ }
4211
4218
  throw new BadSymbol(this.id + ' does not have market symbol ' + symbol);
4212
4219
  }
4220
+ createExpiredOptionMarket(symbol) {
4221
+ throw new NotSupported(this.id + ' createExpiredOptionMarket () is not supported yet');
4222
+ }
4213
4223
  handleWithdrawTagAndParams(tag, params) {
4214
4224
  if (typeof tag === 'object') {
4215
4225
  params = this.extend(tag, params);
package/js/src/binance.js CHANGED
@@ -955,6 +955,7 @@ export default class binance extends Exchange {
955
955
  },
956
956
  'papi': {
957
957
  'get': {
958
+ 'ping': 1,
958
959
  'um/order': 1,
959
960
  'um/openOrder': 1,
960
961
  'um/openOrders': 1,
@@ -8700,7 +8701,7 @@ export default class binance extends Exchange {
8700
8701
  throw new AuthenticationError(this.id + ' userDataStream endpoint requires `apiKey` credential');
8701
8702
  }
8702
8703
  }
8703
- else if ((api === 'private') || (api === 'eapiPrivate') || (api === 'sapi' && path !== 'system/status') || (api === 'sapiV2') || (api === 'sapiV3') || (api === 'sapiV4') || (api === 'dapiPrivate') || (api === 'dapiPrivateV2') || (api === 'fapiPrivate') || (api === 'fapiPrivateV2') || (api === 'papi')) {
8704
+ else if ((api === 'private') || (api === 'eapiPrivate') || (api === 'sapi' && path !== 'system/status') || (api === 'sapiV2') || (api === 'sapiV3') || (api === 'sapiV4') || (api === 'dapiPrivate') || (api === 'dapiPrivateV2') || (api === 'fapiPrivate') || (api === 'fapiPrivateV2') || (api === 'papi' && path !== 'ping')) {
8704
8705
  this.checkRequiredCredentials();
8705
8706
  if (method === 'POST' && ((path === 'order') || (path === 'sor/order'))) {
8706
8707
  // inject in implicit API calls
@@ -84,7 +84,24 @@ export default class binanceus extends binance {
84
84
  'api': {
85
85
  'public': {
86
86
  'get': {
87
+ 'exchangeInfo': 10,
88
+ 'ping': 1,
89
+ 'time': 1,
90
+ 'depth': { 'cost': 1, 'byLimit': [[100, 1], [500, 5], [1000, 10], [5000, 50]] },
91
+ 'trades': 1,
92
+ 'aggTrades': 1,
93
+ 'historicalTrades': 5,
94
+ 'klines': 1,
87
95
  'ticker/price': { 'cost': 1, 'noSymbol': 2 },
96
+ 'avgPrice': 1,
97
+ 'ticker/bookTicker': { 'cost': 1, 'noSymbol': 2 },
98
+ 'ticker/24hr': { 'cost': 1, 'noSymbol': 40 },
99
+ 'ticker': { 'cost': 2, 'noSymbol': 100 },
100
+ },
101
+ },
102
+ 'private': {
103
+ 'get': {
104
+ 'status': 1,
88
105
  },
89
106
  },
90
107
  },
package/js/src/bingx.js CHANGED
@@ -369,7 +369,8 @@ export default class bingx extends Exchange {
369
369
  '80017': OrderNotFound,
370
370
  '100414': AccountSuspended,
371
371
  '100419': PermissionDenied,
372
- '100437': BadRequest, // {"code":100437,"msg":"The withdrawal amount is lower than the minimum limit, please re-enter.","timestamp":1689258588845}
372
+ '100437': BadRequest,
373
+ '101204': InsufficientFunds, // bingx {"code":101204,"msg":"","data":{}}
373
374
  },
374
375
  'broad': {},
375
376
  },
@@ -92,7 +92,7 @@ export default class bitget extends Exchange {
92
92
  fetchOpenOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
93
93
  fetchClosedOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
94
94
  fetchCanceledOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
95
- fetchCanceledAndClosedOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<any>;
95
+ fetchCanceledAndClosedOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
96
96
  fetchLedger(code?: Str, since?: Int, limit?: Int, params?: {}): Promise<any>;
97
97
  parseLedgerEntry(item: any, currency?: Currency): {
98
98
  info: any;