ccxt 4.0.86 → 4.0.88

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.
package/dist/cjs/ccxt.js CHANGED
@@ -180,7 +180,7 @@ var woo$1 = require('./src/pro/woo.js');
180
180
 
181
181
  //-----------------------------------------------------------------------------
182
182
  // this is updated by vss.js when building
183
- const version = '4.0.86';
183
+ const version = '4.0.88';
184
184
  Exchange["default"].ccxtVersion = version;
185
185
  const exchanges = {
186
186
  'ace': ace,
@@ -106,6 +106,7 @@ class binance extends binance$1 {
106
106
  'fetchTransactionFees': true,
107
107
  'fetchTransactions': false,
108
108
  'fetchTransfers': true,
109
+ 'fetchUnderlyingAssets': false,
109
110
  'fetchVolatilityHistory': false,
110
111
  'fetchWithdrawal': false,
111
112
  'fetchWithdrawals': true,
@@ -147,6 +147,7 @@ class bitget extends bitget$1 {
147
147
  'market/candles': 1,
148
148
  'market/depth': 1,
149
149
  'market/spot-vip-level': 2,
150
+ 'market/merge-depth': 1,
150
151
  'market/history-candles': 1,
151
152
  'public/loan/coinInfos': 2,
152
153
  'public/loan/hour-interest': 2, // 10 times/1s (IP) => 20/10 = 2
@@ -174,6 +175,7 @@ class bitget extends bitget$1 {
174
175
  'market/history-candles': 1,
175
176
  'market/history-index-candles': 1,
176
177
  'market/history-mark-candles': 1,
178
+ 'market/merge-depth': 1,
177
179
  },
178
180
  },
179
181
  'margin': {
@@ -87,6 +87,7 @@ class bybit extends bybit$1 {
87
87
  'fetchTradingFees': true,
88
88
  'fetchTransactions': false,
89
89
  'fetchTransfers': true,
90
+ 'fetchUnderlyingAssets': false,
90
91
  'fetchVolatilityHistory': true,
91
92
  'fetchWithdrawals': true,
92
93
  'setLeverage': true,
@@ -83,6 +83,7 @@ class cryptocom extends cryptocom$1 {
83
83
  'fetchTransactionFees': false,
84
84
  'fetchTransactions': false,
85
85
  'fetchTransfers': true,
86
+ 'fetchUnderlyingAssets': false,
86
87
  'fetchVolatilityHistory': false,
87
88
  'fetchWithdrawals': true,
88
89
  'reduceMargin': false,
@@ -70,6 +70,7 @@ class delta extends delta$1 {
70
70
  'fetchTrades': true,
71
71
  'fetchTransfer': undefined,
72
72
  'fetchTransfers': undefined,
73
+ 'fetchUnderlyingAssets': false,
73
74
  'fetchVolatilityHistory': false,
74
75
  'fetchWithdrawal': undefined,
75
76
  'fetchWithdrawals': undefined,
@@ -83,6 +83,7 @@ class deribit extends deribit$1 {
83
83
  'fetchTransactions': false,
84
84
  'fetchTransfer': false,
85
85
  'fetchTransfers': true,
86
+ 'fetchUnderlyingAssets': false,
86
87
  'fetchVolatilityHistory': true,
87
88
  'fetchWithdrawal': false,
88
89
  'fetchWithdrawals': true,
@@ -1173,18 +1173,35 @@ class exmo extends exmo$1 {
1173
1173
  // "commission_percent": "0.2"
1174
1174
  // }
1175
1175
  //
1176
+ // fetchMyTrades (margin)
1177
+ //
1178
+ // {
1179
+ // "trade_id": "692861757015952517",
1180
+ // "trade_dt": "1693951853197811824",
1181
+ // "trade_type": "buy",
1182
+ // "pair": "ADA_USDT",
1183
+ // "quantity": "1.96607879",
1184
+ // "price": "0.2568",
1185
+ // "amount": "0.50488903"
1186
+ // }
1187
+ //
1176
1188
  const timestamp = this.safeTimestamp(trade, 'date');
1177
1189
  const id = this.safeString(trade, 'trade_id');
1178
1190
  const orderId = this.safeString(trade, 'order_id');
1179
1191
  const priceString = this.safeString(trade, 'price');
1180
1192
  const amountString = this.safeString(trade, 'quantity');
1181
1193
  const costString = this.safeString(trade, 'amount');
1182
- const side = this.safeString(trade, 'type');
1194
+ const side = this.safeString2(trade, 'type', 'trade_type');
1183
1195
  const type = undefined;
1184
1196
  const marketId = this.safeString(trade, 'pair');
1185
1197
  market = this.safeMarket(marketId, market, '_');
1186
1198
  const symbol = market['symbol'];
1187
- const takerOrMaker = this.safeString(trade, 'exec_type');
1199
+ const isMaker = this.safeValue(trade, 'is_maker');
1200
+ let takerOrMakerDefault = undefined;
1201
+ if (isMaker !== undefined) {
1202
+ takerOrMakerDefault = isMaker ? 'maker' : 'taker';
1203
+ }
1204
+ const takerOrMaker = this.safeString(trade, 'exec_type', takerOrMakerDefault);
1188
1205
  let fee = undefined;
1189
1206
  const feeCostString = this.safeString(trade, 'commission_amount');
1190
1207
  if (feeCostString !== undefined) {
@@ -1263,38 +1280,91 @@ class exmo extends exmo$1 {
1263
1280
  * @method
1264
1281
  * @name exmo#fetchMyTrades
1265
1282
  * @description fetch all trades made by the user
1266
- * @param {string} symbol unified market symbol
1283
+ * @see https://documenter.getpostman.com/view/10287440/SzYXWKPi#b8d8d9af-4f46-46a1-939b-ad261d79f452 // spot
1284
+ * @see https://documenter.getpostman.com/view/10287440/SzYXWKPi#f4b1aaf8-399f-403b-ab5e-4926d967a106 // margin
1285
+ * @param {string} symbol a symbol is required but it can be a single string, or a non-empty array
1267
1286
  * @param {int} [since] the earliest time in ms to fetch trades for
1268
- * @param {int} [limit] the maximum number of trades structures to retrieve
1287
+ * @param {int} [limit] *required for margin orders* the maximum number of trades structures to retrieve
1269
1288
  * @param {object} [params] extra parameters specific to the exmo api endpoint
1289
+ *
1290
+ * EXCHANGE SPECIFIC PARAMETERS
1291
+ * @param {int} [params.offset] last deal offset, default = 0
1270
1292
  * @returns {Trade[]} a list of [trade structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#trade-structure}
1271
1293
  */
1272
- // a symbol is required but it can be a single string, or a non-empty array
1273
- if (symbol === undefined) {
1274
- throw new errors.ArgumentsRequired(this.id + ' fetchMyTrades() requires a symbol argument (a single symbol or an array)');
1294
+ this.checkRequiredSymbol('fetchMyTrades', symbol);
1295
+ let marginMode = undefined;
1296
+ [marginMode, params] = this.handleMarginModeAndParams('fetchMyTrades', params);
1297
+ if (marginMode === 'cross') {
1298
+ throw new errors.BadRequest(this.id + 'only isolated margin is supported');
1275
1299
  }
1276
1300
  await this.loadMarkets();
1277
- let pair = undefined;
1278
- let market = undefined;
1279
- if (Array.isArray(symbol)) {
1280
- const numSymbols = symbol.length;
1281
- if (numSymbols < 1) {
1282
- throw new errors.ArgumentsRequired(this.id + ' fetchMyTrades() requires a non-empty symbol array');
1283
- }
1284
- const marketIds = this.marketIds(symbol);
1285
- pair = marketIds.join(',');
1301
+ const market = this.market(symbol);
1302
+ const pair = market['id'];
1303
+ const isSpot = marginMode !== 'isolated';
1304
+ if (limit === undefined) {
1305
+ limit = 100;
1306
+ }
1307
+ const request = {};
1308
+ if (isSpot) {
1309
+ request['pair'] = pair;
1286
1310
  }
1287
1311
  else {
1288
- market = this.market(symbol);
1289
- pair = market['id'];
1312
+ request['pair_name'] = pair;
1290
1313
  }
1291
- const request = {
1292
- 'pair': pair,
1293
- };
1294
1314
  if (limit !== undefined) {
1295
1315
  request['limit'] = limit;
1296
1316
  }
1297
- const response = await this.privatePostUserTrades(this.extend(request, params));
1317
+ const offset = this.safeInteger(params, 'offset', 0);
1318
+ request['offset'] = offset;
1319
+ let response = undefined;
1320
+ if (isSpot) {
1321
+ response = await this.privatePostUserTrades(this.extend(request, params));
1322
+ //
1323
+ // {
1324
+ // "BTC_USD": [
1325
+ // {
1326
+ // "trade_id": 20056872,
1327
+ // "client_id": 100500,
1328
+ // "date": 1435488248,
1329
+ // "type": "buy",
1330
+ // "pair": "BTC_USD",
1331
+ // "quantity": "1",
1332
+ // "price": "100",
1333
+ // "amount": "100",
1334
+ // "order_id": 7,
1335
+ // "parent_order_id": 117684023830293,
1336
+ // "exec_type": "taker",
1337
+ // "commission_amount": "0.02",
1338
+ // "commission_currency": "BTC",
1339
+ // "commission_percent": "0.2"
1340
+ // }
1341
+ // ],
1342
+ // ...
1343
+ // }
1344
+ //
1345
+ }
1346
+ else {
1347
+ const responseFromExchange = await this.privatePostMarginTrades(this.extend(request, params));
1348
+ //
1349
+ // {
1350
+ // "trades": {
1351
+ // "ADA_USDT": [
1352
+ // {
1353
+ // "trade_id": "692861757015952517",
1354
+ // "trade_dt": "1693951853197811824",
1355
+ // "trade_type": "buy",
1356
+ // "pair": "ADA_USDT",
1357
+ // "quantity": "1.96607879",
1358
+ // "price": "0.2568",
1359
+ // "amount": "0.50488903"
1360
+ // },
1361
+ // ]
1362
+ // ...
1363
+ // }
1364
+ // }
1365
+ //
1366
+ response = this.safeValue(responseFromExchange, 'trades');
1367
+ }
1298
1368
  let result = [];
1299
1369
  const marketIdsInner = Object.keys(response);
1300
1370
  for (let i = 0; i < marketIdsInner.length; i++) {
@@ -1424,13 +1494,21 @@ class exmo extends exmo$1 {
1424
1494
  * @method
1425
1495
  * @name exmo#fetchOrderTrades
1426
1496
  * @description fetch all the trades made from a single order
1497
+ * @see https://documenter.getpostman.com/view/10287440/SzYXWKPi#cf27781e-28e5-4b39-a52d-3110f5d22459 // spot
1498
+ * @see https://documenter.getpostman.com/view/10287440/SzYXWKPi#00810661-9119-46c5-aec5-55abe9cb42c7 // margin
1427
1499
  * @param {string} id order id
1428
1500
  * @param {string} symbol unified market symbol
1429
1501
  * @param {int} [since] the earliest time in ms to fetch trades for
1430
1502
  * @param {int} [limit] the maximum number of trades to retrieve
1431
1503
  * @param {object} [params] extra parameters specific to the exmo api endpoint
1504
+ * @param {string} [params.marginMode] set to "isolated" to fetch trades for a margin order
1432
1505
  * @returns {object[]} a list of [trade structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#trade-structure}
1433
1506
  */
1507
+ let marginMode = undefined;
1508
+ [marginMode, params] = this.handleMarginModeAndParams('fetchOrderTrades', params);
1509
+ if (marginMode === 'cross') {
1510
+ throw new errors.BadRequest(this.id + ' only supports isolated margin');
1511
+ }
1434
1512
  let market = undefined;
1435
1513
  if (symbol !== undefined) {
1436
1514
  market = this.market(symbol);
@@ -1438,32 +1516,54 @@ class exmo extends exmo$1 {
1438
1516
  const request = {
1439
1517
  'order_id': id.toString(),
1440
1518
  };
1441
- const response = await this.privatePostOrderTrades(this.extend(request, params));
1442
- //
1443
- // {
1444
- // "type": "buy",
1445
- // "in_currency": "BTC",
1446
- // "in_amount": "1",
1447
- // "out_currency": "USD",
1448
- // "out_amount": "100",
1449
- // "trades": [
1450
- // {
1451
- // "trade_id": 3,
1452
- // "date": 1435488248,
1453
- // "type": "buy",
1454
- // "pair": "BTC_USD",
1455
- // "order_id": 12345,
1456
- // "quantity": 1,
1457
- // "price": 100,
1458
- // "amount": 100,
1459
- // "exec_type": "taker",
1460
- // "commission_amount": "0.02",
1461
- // "commission_currency": "BTC",
1462
- // "commission_percent": "0.2"
1463
- // }
1464
- // ]
1465
- // }
1466
- //
1519
+ let response = undefined;
1520
+ if (marginMode === 'isolated') {
1521
+ response = await this.privatePostMarginUserOrderTrades(this.extend(request, params));
1522
+ //
1523
+ // {
1524
+ // "trades": [
1525
+ // {
1526
+ // "is_maker": false,
1527
+ // "order_id": "123",
1528
+ // "pair": "BTC_USD",
1529
+ // "price": "54122.25",
1530
+ // "quantity": "0.00069994",
1531
+ // "trade_dt": "1619069561718824428",
1532
+ // "trade_id": "692842802860135010",
1533
+ // "type": "sell"
1534
+ // }
1535
+ // ]
1536
+ // }
1537
+ //
1538
+ }
1539
+ else {
1540
+ response = await this.privatePostOrderTrades(this.extend(request, params));
1541
+ //
1542
+ // {
1543
+ // "type": "buy",
1544
+ // "in_currency": "BTC",
1545
+ // "in_amount": "1",
1546
+ // "out_currency": "USD",
1547
+ // "out_amount": "100",
1548
+ // "trades": [
1549
+ // {
1550
+ // "trade_id": 3,
1551
+ // "date": 1435488248,
1552
+ // "type": "buy",
1553
+ // "pair": "BTC_USD",
1554
+ // "order_id": 12345,
1555
+ // "quantity": 1,
1556
+ // "price": 100,
1557
+ // "amount": 100,
1558
+ // "exec_type": "taker",
1559
+ // "commission_amount": "0.02",
1560
+ // "commission_currency": "BTC",
1561
+ // "commission_percent": "0.2"
1562
+ // }
1563
+ // ]
1564
+ // }
1565
+ //
1566
+ }
1467
1567
  const trades = this.safeValue(response, 'trades');
1468
1568
  return this.parseTrades(trades, market, since, limit);
1469
1569
  }
@@ -130,6 +130,7 @@ class gate extends gate$1 {
130
130
  'fetchTradingFee': true,
131
131
  'fetchTradingFees': true,
132
132
  'fetchTransactionFees': true,
133
+ 'fetchUnderlyingAssets': true,
133
134
  'fetchVolatilityHistory': false,
134
135
  'fetchWithdrawals': true,
135
136
  'reduceMargin': true,
@@ -6222,6 +6223,44 @@ class gate extends gate$1 {
6222
6223
  request['dual_mode'] = hedged;
6223
6224
  return await this.privateFuturesPostSettleDualMode(this.extend(request, query));
6224
6225
  }
6226
+ async fetchUnderlyingAssets(params = {}) {
6227
+ /**
6228
+ * @method
6229
+ * @name gate#fetchUnderlyingAssets
6230
+ * @description fetches the market ids of underlying assets for a specific contract market type
6231
+ * @param {object} [params] exchange specific params
6232
+ * @param {string} [params.type] the contract market type, 'option', 'swap' or 'future', the default is 'option'
6233
+ * @returns {object[]} a list of [underlying assets]{@link https://github.com/ccxt/ccxt/wiki/Manual#underlying-assets-structure}
6234
+ */
6235
+ await this.loadMarkets();
6236
+ let marketType = undefined;
6237
+ [marketType, params] = this.handleMarketTypeAndParams('fetchUnderlyingAssets', undefined, params);
6238
+ if ((marketType === undefined) || (marketType === 'spot')) {
6239
+ marketType = 'option';
6240
+ }
6241
+ if (marketType !== 'option') {
6242
+ throw new errors.NotSupported(this.id + ' fetchUnderlyingAssets() supports option markets only');
6243
+ }
6244
+ const response = await this.publicOptionsGetUnderlyings(params);
6245
+ //
6246
+ // [
6247
+ // {
6248
+ // "index_time": "1646915796",
6249
+ // "name": "BTC_USDT",
6250
+ // "index_price": "39142.73"
6251
+ // }
6252
+ // ]
6253
+ //
6254
+ const underlyings = [];
6255
+ for (let i = 0; i < response.length; i++) {
6256
+ const underlying = response[i];
6257
+ const name = this.safeString(underlying, 'name');
6258
+ if (name !== undefined) {
6259
+ underlyings.push(name);
6260
+ }
6261
+ }
6262
+ return underlyings;
6263
+ }
6225
6264
  handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
6226
6265
  if (response === undefined) {
6227
6266
  return undefined;
@@ -1232,6 +1232,9 @@ class hitbtc extends hitbtc$1 {
1232
1232
  if (taker !== undefined) {
1233
1233
  takerOrMaker = taker ? 'taker' : 'maker';
1234
1234
  }
1235
+ else {
1236
+ takerOrMaker = 'taker'; // the only case when `taker` field is missing, is public fetchTrades and it must be taker
1237
+ }
1235
1238
  if (feeCostString !== undefined) {
1236
1239
  const info = this.safeValue(market, 'info', {});
1237
1240
  const feeCurrency = this.safeString(info, 'fee_currency');
@@ -107,6 +107,7 @@ class okx extends okx$1 {
107
107
  'fetchTransactions': false,
108
108
  'fetchTransfer': true,
109
109
  'fetchTransfers': true,
110
+ 'fetchUnderlyingAssets': true,
110
111
  'fetchVolatilityHistory': false,
111
112
  'fetchWithdrawal': true,
112
113
  'fetchWithdrawals': true,
@@ -6700,6 +6701,44 @@ class okx extends okx$1 {
6700
6701
  }
6701
6702
  return result;
6702
6703
  }
6704
+ async fetchUnderlyingAssets(params = {}) {
6705
+ /**
6706
+ * @method
6707
+ * @name okx#fetchUnderlyingAssets
6708
+ * @description fetches the market ids of underlying assets for a specific contract market type
6709
+ * @see https://www.okx.com/docs-v5/en/#public-data-rest-api-get-underlying
6710
+ * @param {object} [params] exchange specific params
6711
+ * @param {string} [params.type] the contract market type, 'option', 'swap' or 'future', the default is 'option'
6712
+ * @returns {object[]} a list of [underlying assets]{@link https://github.com/ccxt/ccxt/wiki/Manual#underlying-assets-structure}
6713
+ */
6714
+ await this.loadMarkets();
6715
+ let marketType = undefined;
6716
+ [marketType, params] = this.handleMarketTypeAndParams('fetchUnderlyingAssets', undefined, params);
6717
+ if ((marketType === undefined) || (marketType === 'spot')) {
6718
+ marketType = 'option';
6719
+ }
6720
+ if ((marketType !== 'option') && (marketType !== 'swap') && (marketType !== 'future')) {
6721
+ throw new errors.NotSupported(this.id + ' fetchUnderlyingAssets() supports contract markets only');
6722
+ }
6723
+ const request = {
6724
+ 'instType': this.convertToInstrumentType(marketType),
6725
+ };
6726
+ const response = await this.publicGetPublicUnderlying(this.extend(request, params));
6727
+ //
6728
+ // {
6729
+ // "code": "0",
6730
+ // "data": [
6731
+ // [
6732
+ // "BTC-USD",
6733
+ // "ETH-USD"
6734
+ // ]
6735
+ // ],
6736
+ // "msg": ""
6737
+ // }
6738
+ //
6739
+ const underlyings = this.safeValue(response, 'data', []);
6740
+ return underlyings[0];
6741
+ }
6703
6742
  handleErrors(httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody) {
6704
6743
  if (!response) {
6705
6744
  return undefined; // fallback to default error handler
@@ -267,13 +267,13 @@ class bitfinex2 extends bitfinex2$1 {
267
267
  const limit = this.safeInteger(this.options, 'tradesLimit', 1000);
268
268
  this.myTrades = new Cache.ArrayCacheBySymbolById(limit);
269
269
  }
270
- const array = this.myTrades;
271
- array.append(trade);
272
- this.myTrades = array;
270
+ const tradesArray = this.myTrades;
271
+ tradesArray.append(trade);
272
+ this.myTrades = tradesArray;
273
273
  // generic subscription
274
- client.resolve(array, name);
274
+ client.resolve(tradesArray, name);
275
275
  // specific subscription
276
- client.resolve(array, messageHash);
276
+ client.resolve(tradesArray, messageHash);
277
277
  }
278
278
  handleTrades(client, message, subscription) {
279
279
  //
@@ -738,8 +738,8 @@ class blockchaincom extends blockchaincom$1 {
738
738
  };
739
739
  }
740
740
  handleDelta(bookside, delta) {
741
- const array = this.parseCountedBidAsk(delta, 'px', 'qty', 'num');
742
- bookside.storeArray(array);
741
+ const bookArray = this.parseCountedBidAsk(delta, 'px', 'qty', 'num');
742
+ bookside.storeArray(bookArray);
743
743
  }
744
744
  handleDeltas(bookside, deltas) {
745
745
  for (let i = 0; i < deltas.length; i++) {
@@ -288,13 +288,13 @@ class luno extends luno$1 {
288
288
  const asksOrderSide = orderbook['asks'];
289
289
  const bidsOrderSide = orderbook['bids'];
290
290
  if (createUpdate !== undefined) {
291
- const array = this.customParseBidAsk(createUpdate, 'price', 'volume', 'order_id');
291
+ const bidAskArray = this.customParseBidAsk(createUpdate, 'price', 'volume', 'order_id');
292
292
  const type = this.safeString(createUpdate, 'type');
293
293
  if (type === 'ASK') {
294
- asksOrderSide.storeArray(array);
294
+ asksOrderSide.storeArray(bidAskArray);
295
295
  }
296
296
  else if (type === 'BID') {
297
- bidsOrderSide.storeArray(array);
297
+ bidsOrderSide.storeArray(bidAskArray);
298
298
  }
299
299
  }
300
300
  const deleteUpdate = this.safeValue(message, 'delete_update');
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 { Market, Trade, Fee, Ticker, OrderBook, Order, Transaction, Tickers, Currency, Balance, DepositAddress, WithdrawalResponse, DepositAddressResponse, OHLCV, Balances, PartialBalances, Dictionary, MinMax } 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 } from './src/base/errors.js';
7
- declare const version = "4.0.85";
7
+ declare const version = "4.0.87";
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 } from './src/base/errors.js';
39
39
  //-----------------------------------------------------------------------------
40
40
  // this is updated by vss.js when building
41
- const version = '4.0.86';
41
+ const version = '4.0.88';
42
42
  Exchange.ccxtVersion = version;
43
43
  //-----------------------------------------------------------------------------
44
44
  import ace from './src/ace.js';
@@ -13,6 +13,7 @@ interface Exchange {
13
13
  publicSpotGetMarketCandles(params?: {}): Promise<implicitReturnType>;
14
14
  publicSpotGetMarketDepth(params?: {}): Promise<implicitReturnType>;
15
15
  publicSpotGetMarketSpotVipLevel(params?: {}): Promise<implicitReturnType>;
16
+ publicSpotGetMarketMergeDepth(params?: {}): Promise<implicitReturnType>;
16
17
  publicSpotGetMarketHistoryCandles(params?: {}): Promise<implicitReturnType>;
17
18
  publicSpotGetPublicLoanCoinInfos(params?: {}): Promise<implicitReturnType>;
18
19
  publicSpotGetPublicLoanHourInterest(params?: {}): Promise<implicitReturnType>;
@@ -36,6 +37,7 @@ interface Exchange {
36
37
  publicMixGetMarketHistoryCandles(params?: {}): Promise<implicitReturnType>;
37
38
  publicMixGetMarketHistoryIndexCandles(params?: {}): Promise<implicitReturnType>;
38
39
  publicMixGetMarketHistoryMarkCandles(params?: {}): Promise<implicitReturnType>;
40
+ publicMixGetMarketMergeDepth(params?: {}): Promise<implicitReturnType>;
39
41
  publicMarginGetCrossPublicInterestRateAndLimit(params?: {}): Promise<implicitReturnType>;
40
42
  publicMarginGetIsolatedPublicInterestRateAndLimit(params?: {}): Promise<implicitReturnType>;
41
43
  publicMarginGetCrossPublicTierData(params?: {}): Promise<implicitReturnType>;
package/js/src/binance.js CHANGED
@@ -109,6 +109,7 @@ export default class binance extends Exchange {
109
109
  'fetchTransactionFees': true,
110
110
  'fetchTransactions': false,
111
111
  'fetchTransfers': true,
112
+ 'fetchUnderlyingAssets': false,
112
113
  'fetchVolatilityHistory': false,
113
114
  'fetchWithdrawal': false,
114
115
  'fetchWithdrawals': true,
package/js/src/bitget.js CHANGED
@@ -150,6 +150,7 @@ export default class bitget extends Exchange {
150
150
  'market/candles': 1,
151
151
  'market/depth': 1,
152
152
  'market/spot-vip-level': 2,
153
+ 'market/merge-depth': 1,
153
154
  'market/history-candles': 1,
154
155
  'public/loan/coinInfos': 2,
155
156
  'public/loan/hour-interest': 2, // 10 times/1s (IP) => 20/10 = 2
@@ -177,6 +178,7 @@ export default class bitget extends Exchange {
177
178
  'market/history-candles': 1,
178
179
  'market/history-index-candles': 1,
179
180
  'market/history-mark-candles': 1,
181
+ 'market/merge-depth': 1,
180
182
  },
181
183
  },
182
184
  'margin': {
package/js/src/bybit.js CHANGED
@@ -90,6 +90,7 @@ export default class bybit extends Exchange {
90
90
  'fetchTradingFees': true,
91
91
  'fetchTransactions': false,
92
92
  'fetchTransfers': true,
93
+ 'fetchUnderlyingAssets': false,
93
94
  'fetchVolatilityHistory': true,
94
95
  'fetchWithdrawals': true,
95
96
  'setLeverage': true,
@@ -86,6 +86,7 @@ export default class cryptocom extends Exchange {
86
86
  'fetchTransactionFees': false,
87
87
  'fetchTransactions': false,
88
88
  'fetchTransfers': true,
89
+ 'fetchUnderlyingAssets': false,
89
90
  'fetchVolatilityHistory': false,
90
91
  'fetchWithdrawals': true,
91
92
  'reduceMargin': false,
package/js/src/delta.js CHANGED
@@ -73,6 +73,7 @@ export default class delta extends Exchange {
73
73
  'fetchTrades': true,
74
74
  'fetchTransfer': undefined,
75
75
  'fetchTransfers': undefined,
76
+ 'fetchUnderlyingAssets': false,
76
77
  'fetchVolatilityHistory': false,
77
78
  'fetchWithdrawal': undefined,
78
79
  'fetchWithdrawals': undefined,
package/js/src/deribit.js CHANGED
@@ -86,6 +86,7 @@ export default class deribit extends Exchange {
86
86
  'fetchTransactions': false,
87
87
  'fetchTransfer': false,
88
88
  'fetchTransfers': true,
89
+ 'fetchUnderlyingAssets': false,
89
90
  'fetchVolatilityHistory': true,
90
91
  'fetchWithdrawal': false,
91
92
  'fetchWithdrawals': true,