ccxt 4.0.76 → 4.0.77

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.76';
183
+ const version = '4.0.77';
184
184
  Exchange["default"].ccxtVersion = version;
185
185
  const exchanges = {
186
186
  'ace': ace,
@@ -1097,10 +1097,10 @@ class bingx extends bingx$1 {
1097
1097
  };
1098
1098
  let response = undefined;
1099
1099
  if (market['spot']) {
1100
- response = await this.swapV2PublicGetQuoteTicker(this.extend(request, params));
1100
+ response = await this.spotV1PrivateGetTicker24hr(this.extend(request, params));
1101
1101
  }
1102
1102
  else {
1103
- response = await this.spotV1PublicGetCommonSymbols(this.extend(request, params));
1103
+ response = await this.swapV2PublicGetQuoteTicker(this.extend(request, params));
1104
1104
  }
1105
1105
  //
1106
1106
  // {
@@ -1123,7 +1123,8 @@ class bingx extends bingx$1 {
1123
1123
  // }
1124
1124
  //
1125
1125
  const data = this.safeValue(response, 'data');
1126
- return this.parseTicker(data, market);
1126
+ const ticker = this.safeValue(data, 0, data);
1127
+ return this.parseTicker(ticker, market);
1127
1128
  }
1128
1129
  async fetchTickers(symbols = undefined, params = {}) {
1129
1130
  /**
@@ -1171,6 +1172,20 @@ class bingx extends bingx$1 {
1171
1172
  return this.parseTickers(tickers, symbols);
1172
1173
  }
1173
1174
  parseTicker(ticker, market = undefined) {
1175
+ //
1176
+ // spot
1177
+ // {
1178
+ // symbol: 'BTC-USDT',
1179
+ // openPrice: '26032.08',
1180
+ // highPrice: '26178.86',
1181
+ // lowPrice: '25968.18',
1182
+ // lastPrice: '26113.60',
1183
+ // volume: '1161.79',
1184
+ // quoteVolume: '30288466.44',
1185
+ // openTime: '1693081020762',
1186
+ // closeTime: '1693167420762'
1187
+ // }
1188
+ // swap
1174
1189
  //
1175
1190
  // {
1176
1191
  // "symbol": "BTC-USDT",
@@ -1188,15 +1203,15 @@ class bingx extends bingx$1 {
1188
1203
  // }
1189
1204
  //
1190
1205
  const marketId = this.safeString(ticker, 'symbol');
1191
- const defaultType = this.safeString(this.options, 'defaultType', 'swap');
1192
- const symbol = this.safeSymbol(marketId, market, '-', defaultType);
1206
+ const change = this.safeString(ticker, 'priceChange');
1207
+ const type = (change === undefined) ? 'spot' : 'swap';
1208
+ const symbol = this.safeSymbol(marketId, market, undefined, type);
1193
1209
  const open = this.safeString(ticker, 'openPrice');
1194
1210
  const high = this.safeString(ticker, 'highPrice');
1195
1211
  const low = this.safeString(ticker, 'lowPrice');
1196
1212
  const close = this.safeString(ticker, 'lastPrice');
1197
1213
  const quoteVolume = this.safeString(ticker, 'quoteVolume');
1198
1214
  const baseVolume = this.safeString(ticker, 'volume');
1199
- const change = this.safeString(ticker, 'chapriceChangenge');
1200
1215
  const percentage = this.safeString(ticker, 'priceChangePercent');
1201
1216
  const ts = this.safeInteger(ticker, 'closeTime');
1202
1217
  const datetime = this.iso8601(ts);
@@ -277,6 +277,29 @@ class gate extends gate$1 {
277
277
  'sub_accounts/{user_id}/keys/{key}': 1,
278
278
  },
279
279
  },
280
+ 'portfolio': {
281
+ 'get': {
282
+ 'accounts': 1.5,
283
+ 'account_mode': 1.5,
284
+ 'borrowable': 1.5,
285
+ 'transferable': 1.5,
286
+ 'loans': 1.5,
287
+ 'loan_records': 1.5,
288
+ 'interest_records': 1.5,
289
+ 'spot/orders': 1.5,
290
+ 'spot/orders/{order_id}': 1.5,
291
+ },
292
+ 'post': {
293
+ 'loans': 1.5,
294
+ 'spot/orders': 1.5,
295
+ },
296
+ 'delete': {
297
+ 'spot/orders/{order_id}': 1.5,
298
+ },
299
+ 'patch': {
300
+ 'spot/orders/{order_id}': 1.5,
301
+ },
302
+ },
280
303
  'spot': {
281
304
  'get': {
282
305
  'fee': 1,
@@ -470,6 +493,22 @@ class gate extends gate$1 {
470
493
  'uni/lends': 1.5,
471
494
  },
472
495
  },
496
+ 'loan': {
497
+ 'get': {
498
+ 'collateral/orders': 1.5,
499
+ 'collateral/orders/{order_id}': 1.5,
500
+ 'collateral/repay_records': 1.5,
501
+ 'collateral/collaterals': 1.5,
502
+ 'collateral/total_amount': 1.5,
503
+ 'collateral/ltv': 1.5,
504
+ 'collateral/currencies': 1.5,
505
+ },
506
+ 'post': {
507
+ 'collateral/orders': 1.5,
508
+ 'collateral/repay': 1.5,
509
+ 'collateral/collaterals': 1.5,
510
+ },
511
+ },
473
512
  'account': {
474
513
  'get': {
475
514
  'detail': 1.5,
@@ -480,6 +519,9 @@ class gate extends gate$1 {
480
519
  'stp_groups': 1.5,
481
520
  'stp_groups/{stp_id}/users': 1.5,
482
521
  },
522
+ 'delete': {
523
+ 'stp_groups/{stp_id}/users': 1.5,
524
+ },
483
525
  },
484
526
  'rebate': {
485
527
  'get': {
@@ -230,6 +230,9 @@ class okx extends okx$1 {
230
230
  * @param {string} [params.channel] the channel to subscribe to, tickers by default. Can be tickers, sprd-tickers, index-tickers, block-tickers
231
231
  * @returns {object} a [ticker structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#ticker-structure}
232
232
  */
233
+ if (this.isEmpty(symbols)) {
234
+ throw new errors.ArgumentsRequired(this.id + ' watchTickers requires a list of symbols');
235
+ }
233
236
  let channel = undefined;
234
237
  [channel, params] = this.handleOptionAndParams(params, 'watchTickers', 'channel', 'tickers');
235
238
  const newTickers = await this.subscribeMultiple('public', channel, symbols, params);
@@ -253,6 +253,7 @@ class whitebit extends whitebit$1 {
253
253
  '422': errors.OrderNotFound, // {"response":null,"status":422,"errors":{"orderId":["Finished order id 1295772653 not found on your account"]},"notification":null,"warning":"Finished order id 1295772653 not found on your account","_token":null}
254
254
  },
255
255
  'broad': {
256
+ 'This action is unauthorized': errors.PermissionDenied,
256
257
  'Given amount is less than min amount': errors.InvalidOrder,
257
258
  'Total is less than': errors.InvalidOrder,
258
259
  'fee must be no less than': errors.InvalidOrder,
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.75";
7
+ declare const version = "4.0.76";
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.76';
41
+ const version = '4.0.77';
42
42
  Exchange.ccxtVersion = version;
43
43
  //-----------------------------------------------------------------------------
44
44
  import ace from './src/ace.js';
@@ -79,6 +79,19 @@ interface Exchange {
79
79
  privateSubAccountsPostSubAccountsUserIdUnlock(params?: {}): Promise<implicitReturnType>;
80
80
  privateSubAccountsPutSubAccountsUserIdKeysKey(params?: {}): Promise<implicitReturnType>;
81
81
  privateSubAccountsDeleteSubAccountsUserIdKeysKey(params?: {}): Promise<implicitReturnType>;
82
+ privatePortfolioGetAccounts(params?: {}): Promise<implicitReturnType>;
83
+ privatePortfolioGetAccountMode(params?: {}): Promise<implicitReturnType>;
84
+ privatePortfolioGetBorrowable(params?: {}): Promise<implicitReturnType>;
85
+ privatePortfolioGetTransferable(params?: {}): Promise<implicitReturnType>;
86
+ privatePortfolioGetLoans(params?: {}): Promise<implicitReturnType>;
87
+ privatePortfolioGetLoanRecords(params?: {}): Promise<implicitReturnType>;
88
+ privatePortfolioGetInterestRecords(params?: {}): Promise<implicitReturnType>;
89
+ privatePortfolioGetSpotOrders(params?: {}): Promise<implicitReturnType>;
90
+ privatePortfolioGetSpotOrdersOrderId(params?: {}): Promise<implicitReturnType>;
91
+ privatePortfolioPostLoans(params?: {}): Promise<implicitReturnType>;
92
+ privatePortfolioPostSpotOrders(params?: {}): Promise<implicitReturnType>;
93
+ privatePortfolioDeleteSpotOrdersOrderId(params?: {}): Promise<implicitReturnType>;
94
+ privatePortfolioPatchSpotOrdersOrderId(params?: {}): Promise<implicitReturnType>;
82
95
  privateSpotGetFee(params?: {}): Promise<implicitReturnType>;
83
96
  privateSpotGetBatchFee(params?: {}): Promise<implicitReturnType>;
84
97
  privateSpotGetAccounts(params?: {}): Promise<implicitReturnType>;
@@ -212,11 +225,22 @@ interface Exchange {
212
225
  privateEarnGetUniInterestRecords(params?: {}): Promise<implicitReturnType>;
213
226
  privateEarnPostUniLends(params?: {}): Promise<implicitReturnType>;
214
227
  privateEarnPatchUniLends(params?: {}): Promise<implicitReturnType>;
228
+ privateLoanGetCollateralOrders(params?: {}): Promise<implicitReturnType>;
229
+ privateLoanGetCollateralOrdersOrderId(params?: {}): Promise<implicitReturnType>;
230
+ privateLoanGetCollateralRepayRecords(params?: {}): Promise<implicitReturnType>;
231
+ privateLoanGetCollateralCollaterals(params?: {}): Promise<implicitReturnType>;
232
+ privateLoanGetCollateralTotalAmount(params?: {}): Promise<implicitReturnType>;
233
+ privateLoanGetCollateralLtv(params?: {}): Promise<implicitReturnType>;
234
+ privateLoanGetCollateralCurrencies(params?: {}): Promise<implicitReturnType>;
235
+ privateLoanPostCollateralOrders(params?: {}): Promise<implicitReturnType>;
236
+ privateLoanPostCollateralRepay(params?: {}): Promise<implicitReturnType>;
237
+ privateLoanPostCollateralCollaterals(params?: {}): Promise<implicitReturnType>;
215
238
  privateAccountGetDetail(params?: {}): Promise<implicitReturnType>;
216
239
  privateAccountGetStpGroups(params?: {}): Promise<implicitReturnType>;
217
240
  privateAccountGetStpGroupsStpIdUsers(params?: {}): Promise<implicitReturnType>;
218
241
  privateAccountPostStpGroups(params?: {}): Promise<implicitReturnType>;
219
242
  privateAccountPostStpGroupsStpIdUsers(params?: {}): Promise<implicitReturnType>;
243
+ privateAccountDeleteStpGroupsStpIdUsers(params?: {}): Promise<implicitReturnType>;
220
244
  privateRebateGetAgencyTransactionHistory(params?: {}): Promise<implicitReturnType>;
221
245
  privateRebateGetAgencyCommissionHistory(params?: {}): Promise<implicitReturnType>;
222
246
  }
@@ -79,6 +79,19 @@ interface gate {
79
79
  privateSubAccountsPostSubAccountsUserIdUnlock(params?: {}): Promise<implicitReturnType>;
80
80
  privateSubAccountsPutSubAccountsUserIdKeysKey(params?: {}): Promise<implicitReturnType>;
81
81
  privateSubAccountsDeleteSubAccountsUserIdKeysKey(params?: {}): Promise<implicitReturnType>;
82
+ privatePortfolioGetAccounts(params?: {}): Promise<implicitReturnType>;
83
+ privatePortfolioGetAccountMode(params?: {}): Promise<implicitReturnType>;
84
+ privatePortfolioGetBorrowable(params?: {}): Promise<implicitReturnType>;
85
+ privatePortfolioGetTransferable(params?: {}): Promise<implicitReturnType>;
86
+ privatePortfolioGetLoans(params?: {}): Promise<implicitReturnType>;
87
+ privatePortfolioGetLoanRecords(params?: {}): Promise<implicitReturnType>;
88
+ privatePortfolioGetInterestRecords(params?: {}): Promise<implicitReturnType>;
89
+ privatePortfolioGetSpotOrders(params?: {}): Promise<implicitReturnType>;
90
+ privatePortfolioGetSpotOrdersOrderId(params?: {}): Promise<implicitReturnType>;
91
+ privatePortfolioPostLoans(params?: {}): Promise<implicitReturnType>;
92
+ privatePortfolioPostSpotOrders(params?: {}): Promise<implicitReturnType>;
93
+ privatePortfolioDeleteSpotOrdersOrderId(params?: {}): Promise<implicitReturnType>;
94
+ privatePortfolioPatchSpotOrdersOrderId(params?: {}): Promise<implicitReturnType>;
82
95
  privateSpotGetFee(params?: {}): Promise<implicitReturnType>;
83
96
  privateSpotGetBatchFee(params?: {}): Promise<implicitReturnType>;
84
97
  privateSpotGetAccounts(params?: {}): Promise<implicitReturnType>;
@@ -212,11 +225,22 @@ interface gate {
212
225
  privateEarnGetUniInterestRecords(params?: {}): Promise<implicitReturnType>;
213
226
  privateEarnPostUniLends(params?: {}): Promise<implicitReturnType>;
214
227
  privateEarnPatchUniLends(params?: {}): Promise<implicitReturnType>;
228
+ privateLoanGetCollateralOrders(params?: {}): Promise<implicitReturnType>;
229
+ privateLoanGetCollateralOrdersOrderId(params?: {}): Promise<implicitReturnType>;
230
+ privateLoanGetCollateralRepayRecords(params?: {}): Promise<implicitReturnType>;
231
+ privateLoanGetCollateralCollaterals(params?: {}): Promise<implicitReturnType>;
232
+ privateLoanGetCollateralTotalAmount(params?: {}): Promise<implicitReturnType>;
233
+ privateLoanGetCollateralLtv(params?: {}): Promise<implicitReturnType>;
234
+ privateLoanGetCollateralCurrencies(params?: {}): Promise<implicitReturnType>;
235
+ privateLoanPostCollateralOrders(params?: {}): Promise<implicitReturnType>;
236
+ privateLoanPostCollateralRepay(params?: {}): Promise<implicitReturnType>;
237
+ privateLoanPostCollateralCollaterals(params?: {}): Promise<implicitReturnType>;
215
238
  privateAccountGetDetail(params?: {}): Promise<implicitReturnType>;
216
239
  privateAccountGetStpGroups(params?: {}): Promise<implicitReturnType>;
217
240
  privateAccountGetStpGroupsStpIdUsers(params?: {}): Promise<implicitReturnType>;
218
241
  privateAccountPostStpGroups(params?: {}): Promise<implicitReturnType>;
219
242
  privateAccountPostStpGroupsStpIdUsers(params?: {}): Promise<implicitReturnType>;
243
+ privateAccountDeleteStpGroupsStpIdUsers(params?: {}): Promise<implicitReturnType>;
220
244
  privateRebateGetAgencyTransactionHistory(params?: {}): Promise<implicitReturnType>;
221
245
  privateRebateGetAgencyCommissionHistory(params?: {}): Promise<implicitReturnType>;
222
246
  }
package/js/src/bingx.js CHANGED
@@ -1100,10 +1100,10 @@ export default class bingx extends Exchange {
1100
1100
  };
1101
1101
  let response = undefined;
1102
1102
  if (market['spot']) {
1103
- response = await this.swapV2PublicGetQuoteTicker(this.extend(request, params));
1103
+ response = await this.spotV1PrivateGetTicker24hr(this.extend(request, params));
1104
1104
  }
1105
1105
  else {
1106
- response = await this.spotV1PublicGetCommonSymbols(this.extend(request, params));
1106
+ response = await this.swapV2PublicGetQuoteTicker(this.extend(request, params));
1107
1107
  }
1108
1108
  //
1109
1109
  // {
@@ -1126,7 +1126,8 @@ export default class bingx extends Exchange {
1126
1126
  // }
1127
1127
  //
1128
1128
  const data = this.safeValue(response, 'data');
1129
- return this.parseTicker(data, market);
1129
+ const ticker = this.safeValue(data, 0, data);
1130
+ return this.parseTicker(ticker, market);
1130
1131
  }
1131
1132
  async fetchTickers(symbols = undefined, params = {}) {
1132
1133
  /**
@@ -1174,6 +1175,20 @@ export default class bingx extends Exchange {
1174
1175
  return this.parseTickers(tickers, symbols);
1175
1176
  }
1176
1177
  parseTicker(ticker, market = undefined) {
1178
+ //
1179
+ // spot
1180
+ // {
1181
+ // symbol: 'BTC-USDT',
1182
+ // openPrice: '26032.08',
1183
+ // highPrice: '26178.86',
1184
+ // lowPrice: '25968.18',
1185
+ // lastPrice: '26113.60',
1186
+ // volume: '1161.79',
1187
+ // quoteVolume: '30288466.44',
1188
+ // openTime: '1693081020762',
1189
+ // closeTime: '1693167420762'
1190
+ // }
1191
+ // swap
1177
1192
  //
1178
1193
  // {
1179
1194
  // "symbol": "BTC-USDT",
@@ -1191,15 +1206,15 @@ export default class bingx extends Exchange {
1191
1206
  // }
1192
1207
  //
1193
1208
  const marketId = this.safeString(ticker, 'symbol');
1194
- const defaultType = this.safeString(this.options, 'defaultType', 'swap');
1195
- const symbol = this.safeSymbol(marketId, market, '-', defaultType);
1209
+ const change = this.safeString(ticker, 'priceChange');
1210
+ const type = (change === undefined) ? 'spot' : 'swap';
1211
+ const symbol = this.safeSymbol(marketId, market, undefined, type);
1196
1212
  const open = this.safeString(ticker, 'openPrice');
1197
1213
  const high = this.safeString(ticker, 'highPrice');
1198
1214
  const low = this.safeString(ticker, 'lowPrice');
1199
1215
  const close = this.safeString(ticker, 'lastPrice');
1200
1216
  const quoteVolume = this.safeString(ticker, 'quoteVolume');
1201
1217
  const baseVolume = this.safeString(ticker, 'volume');
1202
- const change = this.safeString(ticker, 'chapriceChangenge');
1203
1218
  const percentage = this.safeString(ticker, 'priceChangePercent');
1204
1219
  const ts = this.safeInteger(ticker, 'closeTime');
1205
1220
  const datetime = this.iso8601(ts);
package/js/src/gate.js CHANGED
@@ -280,6 +280,29 @@ export default class gate extends Exchange {
280
280
  'sub_accounts/{user_id}/keys/{key}': 1,
281
281
  },
282
282
  },
283
+ 'portfolio': {
284
+ 'get': {
285
+ 'accounts': 1.5,
286
+ 'account_mode': 1.5,
287
+ 'borrowable': 1.5,
288
+ 'transferable': 1.5,
289
+ 'loans': 1.5,
290
+ 'loan_records': 1.5,
291
+ 'interest_records': 1.5,
292
+ 'spot/orders': 1.5,
293
+ 'spot/orders/{order_id}': 1.5,
294
+ },
295
+ 'post': {
296
+ 'loans': 1.5,
297
+ 'spot/orders': 1.5,
298
+ },
299
+ 'delete': {
300
+ 'spot/orders/{order_id}': 1.5,
301
+ },
302
+ 'patch': {
303
+ 'spot/orders/{order_id}': 1.5,
304
+ },
305
+ },
283
306
  'spot': {
284
307
  'get': {
285
308
  'fee': 1,
@@ -473,6 +496,22 @@ export default class gate extends Exchange {
473
496
  'uni/lends': 1.5,
474
497
  },
475
498
  },
499
+ 'loan': {
500
+ 'get': {
501
+ 'collateral/orders': 1.5,
502
+ 'collateral/orders/{order_id}': 1.5,
503
+ 'collateral/repay_records': 1.5,
504
+ 'collateral/collaterals': 1.5,
505
+ 'collateral/total_amount': 1.5,
506
+ 'collateral/ltv': 1.5,
507
+ 'collateral/currencies': 1.5,
508
+ },
509
+ 'post': {
510
+ 'collateral/orders': 1.5,
511
+ 'collateral/repay': 1.5,
512
+ 'collateral/collaterals': 1.5,
513
+ },
514
+ },
476
515
  'account': {
477
516
  'get': {
478
517
  'detail': 1.5,
@@ -483,6 +522,9 @@ export default class gate extends Exchange {
483
522
  'stp_groups': 1.5,
484
523
  'stp_groups/{stp_id}/users': 1.5,
485
524
  },
525
+ 'delete': {
526
+ 'stp_groups/{stp_id}/users': 1.5,
527
+ },
486
528
  },
487
529
  'rebate': {
488
530
  'get': {
package/js/src/pro/okx.js CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  // ---------------------------------------------------------------------------
8
8
  import okxRest from '../okx.js';
9
- import { AuthenticationError, BadRequest, InvalidNonce } from '../base/errors.js';
9
+ import { ArgumentsRequired, AuthenticationError, BadRequest, InvalidNonce } from '../base/errors.js';
10
10
  import { ArrayCache, ArrayCacheByTimestamp, ArrayCacheBySymbolById } from '../base/ws/Cache.js';
11
11
  import { sha256 } from '../static_dependencies/noble-hashes/sha256.js';
12
12
  // ---------------------------------------------------------------------------
@@ -233,6 +233,9 @@ export default class okx extends okxRest {
233
233
  * @param {string} [params.channel] the channel to subscribe to, tickers by default. Can be tickers, sprd-tickers, index-tickers, block-tickers
234
234
  * @returns {object} a [ticker structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#ticker-structure}
235
235
  */
236
+ if (this.isEmpty(symbols)) {
237
+ throw new ArgumentsRequired(this.id + ' watchTickers requires a list of symbols');
238
+ }
236
239
  let channel = undefined;
237
240
  [channel, params] = this.handleOptionAndParams(params, 'watchTickers', 'channel', 'tickers');
238
241
  const newTickers = await this.subscribeMultiple('public', channel, symbols, params);
@@ -256,6 +256,7 @@ export default class whitebit extends Exchange {
256
256
  '422': OrderNotFound, // {"response":null,"status":422,"errors":{"orderId":["Finished order id 1295772653 not found on your account"]},"notification":null,"warning":"Finished order id 1295772653 not found on your account","_token":null}
257
257
  },
258
258
  'broad': {
259
+ 'This action is unauthorized': PermissionDenied,
259
260
  'Given amount is less than min amount': InvalidOrder,
260
261
  'Total is less than': InvalidOrder,
261
262
  'fee must be no less than': InvalidOrder,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccxt",
3
- "version": "4.0.76",
3
+ "version": "4.0.77",
4
4
  "description": "A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 130+ exchanges",
5
5
  "unpkg": "dist/ccxt.browser.js",
6
6
  "type": "module",