ccxt 4.1.35 → 4.1.36

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.
@@ -96,6 +96,9 @@ export default class Exchange {
96
96
  last_json_response: any;
97
97
  last_response_headers: any;
98
98
  last_request_headers: any;
99
+ last_request_body: any;
100
+ last_request_url: any;
101
+ last_request_path: any;
99
102
  id: string;
100
103
  markets: Dictionary<any>;
101
104
  has: Dictionary<boolean | 'emulated'>;
@@ -778,6 +781,7 @@ export default class Exchange {
778
781
  safeCurrencyCode(currencyId?: string, currency?: any): any;
779
782
  filterBySymbolSinceLimit(array: any, symbol?: string, since?: Int, limit?: Int, tail?: boolean): any;
780
783
  filterByCurrencySinceLimit(array: any, code?: any, since?: Int, limit?: Int, tail?: boolean): any;
784
+ filterBySymbolsSinceLimit(array: any, symbols?: string[], since?: Int, limit?: Int, tail?: boolean): any;
781
785
  parseLastPrices(pricesData: any, symbols?: string[], params?: {}): any;
782
786
  parseTickers(tickers: any, symbols?: string[], params?: {}): Dictionary<Ticker>;
783
787
  parseDepositAddresses(addresses: any, codes?: string[], indexed?: boolean, params?: {}): {};
@@ -68,6 +68,9 @@ export default class Exchange {
68
68
  this.last_json_response = undefined;
69
69
  this.last_response_headers = undefined;
70
70
  this.last_request_headers = undefined;
71
+ this.last_request_body = undefined;
72
+ this.last_request_url = undefined;
73
+ this.last_request_path = undefined;
71
74
  this.id = undefined;
72
75
  this.markets = undefined;
73
76
  this.status = undefined;
@@ -262,6 +265,9 @@ export default class Exchange {
262
265
  this.last_json_response = undefined;
263
266
  this.last_response_headers = undefined;
264
267
  this.last_request_headers = undefined;
268
+ this.last_request_body = undefined;
269
+ this.last_request_url = undefined;
270
+ this.last_request_path = undefined;
265
271
  // camelCase and snake_notation support
266
272
  const unCamelCaseProperties = (obj = this) => {
267
273
  if (obj !== null) {
@@ -2832,6 +2838,8 @@ export default class Exchange {
2832
2838
  this.lastRestRequestTimestamp = this.milliseconds();
2833
2839
  const request = this.sign(path, api, method, params, headers, body);
2834
2840
  this.last_request_headers = request['headers'];
2841
+ this.last_request_body = request['body'];
2842
+ this.last_request_url = request['url'];
2835
2843
  return await this.fetch(request['url'], request['method'], request['headers'], request['body']);
2836
2844
  }
2837
2845
  async request(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined, config = {}) {
@@ -3669,6 +3677,10 @@ export default class Exchange {
3669
3677
  filterByCurrencySinceLimit(array, code = undefined, since = undefined, limit = undefined, tail = false) {
3670
3678
  return this.filterByValueSinceLimit(array, 'currency', code, since, limit, 'timestamp', tail);
3671
3679
  }
3680
+ filterBySymbolsSinceLimit(array, symbols = undefined, since = undefined, limit = undefined, tail = false) {
3681
+ const result = this.filterByArray(array, 'symbol', symbols, false);
3682
+ return this.filterBySinceLimit(result, since, limit, 'timestamp', tail);
3683
+ }
3672
3684
  parseLastPrices(pricesData, symbols = undefined, params = {}) {
3673
3685
  //
3674
3686
  // the value of tickers is either a dict or a list
package/js/src/binance.js CHANGED
@@ -724,6 +724,7 @@ export default class binance extends Exchange {
724
724
  'topLongShortPositionRatio': 1,
725
725
  'globalLongShortAccountRatio': 1,
726
726
  'takerlongshortRatio': 1,
727
+ 'basis': 1,
727
728
  },
728
729
  },
729
730
  'fapiPrivate': {
package/js/src/bingx.js CHANGED
@@ -342,7 +342,8 @@ export default class bingx extends Exchange {
342
342
  'PFUTURES': 'swap',
343
343
  'SFUTURES': 'future',
344
344
  },
345
- 'recvWindow': 5 * 1000, // 5 sec
345
+ 'recvWindow': 5 * 1000,
346
+ 'broker': 'CCXT',
346
347
  },
347
348
  });
348
349
  }
@@ -3116,7 +3117,7 @@ export default class bingx extends Exchange {
3116
3117
  query += 'signature=' + signature;
3117
3118
  headers = {
3118
3119
  'X-BX-APIKEY': this.apiKey,
3119
- 'X-SOURCE-KEY': 'CCXT',
3120
+ 'X-SOURCE-KEY': this.safeString(this.options, 'broker', 'CCXT'),
3120
3121
  };
3121
3122
  url += query;
3122
3123
  }
package/js/src/bitget.js CHANGED
@@ -825,6 +825,7 @@ export default class bitget extends Exchange {
825
825
  '40017': ExchangeError,
826
826
  '40018': PermissionDenied,
827
827
  '40019': BadRequest,
828
+ '40037': AuthenticationError,
828
829
  '40102': BadRequest,
829
830
  '40103': BadRequest,
830
831
  '40104': ExchangeError,
package/js/src/bitopro.js CHANGED
@@ -123,6 +123,7 @@ export default class bitopro extends Exchange {
123
123
  'provisioning/trading-pairs': 1,
124
124
  'provisioning/limitations-and-fees': 1,
125
125
  'trading-history/{pair}': 1,
126
+ 'price/otc/{currency}': 1,
126
127
  },
127
128
  },
128
129
  'private': {
@@ -126,9 +126,16 @@ export default class bitstamp extends Exchange {
126
126
  'trading-pairs-info/': 1,
127
127
  'currencies/': 1,
128
128
  'eur_usd/': 1,
129
+ 'travel_rule/vasps/': 1,
129
130
  },
130
131
  },
131
132
  'private': {
133
+ 'get': {
134
+ 'travel_rule/contacts/': 1,
135
+ 'contacts/{contact_uuid}/': 1,
136
+ 'earn/subscriptions/': 1,
137
+ 'earn/transactions/': 1,
138
+ },
132
139
  'post': {
133
140
  'account_balances/': 1,
134
141
  'account_balances/{currency}/': 1,
@@ -155,6 +162,7 @@ export default class bitstamp extends Exchange {
155
162
  'transfer-from-main/': 1,
156
163
  'my_trading_pairs/': 1,
157
164
  'fees/trading/': 1,
165
+ 'fees/trading/{pair}': 1,
158
166
  'fees/withdrawal/': 1,
159
167
  'fees/withdrawal/{currency}/': 1,
160
168
  'withdrawal-requests/': 1,
@@ -328,6 +336,10 @@ export default class bitstamp extends Exchange {
328
336
  'dgld_address/': 1,
329
337
  'ldo_withdrawal/': 1,
330
338
  'ldo_address/': 1,
339
+ 'travel_rule/contacts/': 1,
340
+ 'earn/subscribe/': 1,
341
+ 'earn/subscriptions/setting/': 1,
342
+ 'earn/unsubscribe': 1,
331
343
  },
332
344
  },
333
345
  },
package/js/src/bybit.js CHANGED
@@ -232,35 +232,35 @@ export default class bybit extends Exchange {
232
232
  'derivatives/v3/public/open-interest': 1,
233
233
  'derivatives/v3/public/insurance': 1,
234
234
  // v5
235
- 'v5/announcements/index': 2.5,
235
+ 'v5/announcements/index': 5,
236
236
  // market
237
- 'v5/market/time': 2.5,
238
- 'v5/market/kline': 2.5,
239
- 'v5/market/mark-price-kline': 2.5,
240
- 'v5/market/index-price-kline': 2.5,
241
- 'v5/market/premium-index-price-kline': 2.5,
242
- 'v5/market/instruments-info': 2.5,
243
- 'v5/market/orderbook': 2.5,
244
- 'v5/market/tickers': 2.5,
245
- 'v5/market/funding/history': 2.5,
246
- 'v5/market/recent-trade': 2.5,
247
- 'v5/market/open-interest': 2.5,
248
- 'v5/market/historical-volatility': 2.5,
249
- 'v5/market/insurance': 2.5,
250
- 'v5/market/risk-limit': 2.5,
251
- 'v5/market/delivery-price': 2.5,
252
- 'v5/market/account-ratio': 2.5,
237
+ 'v5/market/time': 5,
238
+ 'v5/market/kline': 5,
239
+ 'v5/market/mark-price-kline': 5,
240
+ 'v5/market/index-price-kline': 5,
241
+ 'v5/market/premium-index-price-kline': 5,
242
+ 'v5/market/instruments-info': 5,
243
+ 'v5/market/orderbook': 5,
244
+ 'v5/market/tickers': 5,
245
+ 'v5/market/funding/history': 5,
246
+ 'v5/market/recent-trade': 5,
247
+ 'v5/market/open-interest': 5,
248
+ 'v5/market/historical-volatility': 5,
249
+ 'v5/market/insurance': 5,
250
+ 'v5/market/risk-limit': 5,
251
+ 'v5/market/delivery-price': 5,
252
+ 'v5/market/account-ratio': 5,
253
253
  // spot leverage token
254
- 'v5/spot-lever-token/info': 2.5,
255
- 'v5/spot-lever-token/reference': 2.5,
254
+ 'v5/spot-lever-token/info': 5,
255
+ 'v5/spot-lever-token/reference': 5,
256
256
  // spot margin trade
257
- 'v5/spot-margin-trade/data': 2.5,
258
- 'v5/spot-cross-margin-trade/data': 2.5,
259
- 'v5/spot-cross-margin-trade/pledge-token': 2.5,
260
- 'v5/spot-cross-margin-trade/borrow-token': 2.5,
257
+ 'v5/spot-margin-trade/data': 5,
258
+ 'v5/spot-cross-margin-trade/data': 5,
259
+ 'v5/spot-cross-margin-trade/pledge-token': 5,
260
+ 'v5/spot-cross-margin-trade/borrow-token': 5,
261
261
  // institutional lending
262
- 'v5/ins-loan/product-infos': 2.5,
263
- 'v5/ins-loan/ensure-tokens-convert': 2.5,
262
+ 'v5/ins-loan/product-infos': 5,
263
+ 'v5/ins-loan/ensure-tokens-convert': 5,
264
264
  },
265
265
  },
266
266
  'private': {
@@ -329,11 +329,11 @@ export default class bybit extends Exchange {
329
329
  'spot/v3/private/margin-ltv': 10,
330
330
  // account
331
331
  'asset/v1/private/transfer/list': 50,
332
- 'asset/v3/private/transfer/inter-transfer/list/query': 0.84,
332
+ 'asset/v3/private/transfer/inter-transfer/list/query': 50,
333
333
  'asset/v1/private/sub-member/transfer/list': 50,
334
- 'asset/v3/private/transfer/sub-member/list/query': 0.84,
335
- 'asset/v3/private/transfer/sub-member-transfer/list/query': 0.84,
336
- 'asset/v3/private/transfer/universal-transfer/list/query': 0.84,
334
+ 'asset/v3/private/transfer/sub-member/list/query': 50,
335
+ 'asset/v3/private/transfer/sub-member-transfer/list/query': 50,
336
+ 'asset/v3/private/transfer/universal-transfer/list/query': 25,
337
337
  'asset/v1/private/sub-member/member-ids': 50,
338
338
  'asset/v1/private/deposit/record/query': 50,
339
339
  'asset/v1/private/withdraw/record/query': 25,
@@ -341,11 +341,11 @@ export default class bybit extends Exchange {
341
341
  'asset/v3/private/coin-info/query': 25,
342
342
  'asset/v1/private/asset-info/query': 50,
343
343
  'asset/v1/private/deposit/address': 100,
344
- 'asset/v3/private/deposit/address/query': 0.17,
344
+ 'asset/v3/private/deposit/address/query': 10,
345
345
  'asset/v1/private/universal/transfer/list': 50,
346
- 'contract/v3/private/copytrading/order/list': 1,
347
- 'contract/v3/private/copytrading/position/list': 1,
348
- 'contract/v3/private/copytrading/wallet/balance': 1,
346
+ 'contract/v3/private/copytrading/order/list': 30,
347
+ 'contract/v3/private/copytrading/position/list': 40,
348
+ 'contract/v3/private/copytrading/wallet/balance': 25,
349
349
  'contract/v3/private/position/limit-info': 25,
350
350
  'contract/v3/private/order/unfilled-orders': 1,
351
351
  'contract/v3/private/order/list': 1,
@@ -372,43 +372,43 @@ export default class bybit extends Exchange {
372
372
  'user/v3/private/query-sub-members': 5,
373
373
  'user/v3/private/query-api': 5,
374
374
  'user/v3/private/get-member-type': 1,
375
- 'asset/v3/private/transfer/transfer-coin/list/query': 0.84,
376
- 'asset/v3/private/transfer/account-coin/balance/query': 0.84,
377
- 'asset/v3/private/transfer/account-coins/balance/query': 50,
378
- 'asset/v3/private/transfer/asset-info/query': 0.84,
375
+ 'asset/v3/private/transfer/transfer-coin/list/query': 50,
376
+ 'asset/v3/private/transfer/account-coin/balance/query': 50,
377
+ 'asset/v3/private/transfer/account-coins/balance/query': 25,
378
+ 'asset/v3/private/transfer/asset-info/query': 50,
379
379
  'asset/v3/public/deposit/allowed-deposit-list/query': 0.17,
380
- 'asset/v3/private/deposit/record/query': 0.17,
381
- 'asset/v3/private/withdraw/record/query': 0.17,
380
+ 'asset/v3/private/deposit/record/query': 10,
381
+ 'asset/v3/private/withdraw/record/query': 10,
382
382
  // v5
383
383
  // trade
384
384
  'v5/order/realtime': 5,
385
385
  'v5/order/history': 5,
386
- 'v5/order/spot-borrow-check': 2.5,
386
+ 'v5/order/spot-borrow-check': 1,
387
387
  // position
388
388
  'v5/position/list': 5,
389
389
  'v5/execution/list': 5,
390
390
  'v5/position/closed-pnl': 5,
391
391
  // pre-upgrade
392
- 'v5/pre-upgrade/order/history': 2.5,
393
- 'v5/pre-upgrade/execution/list': 2.5,
394
- 'v5/pre-upgrade/position/closed-pnl': 2.5,
395
- 'v5/pre-upgrade/account/transaction-log': 2.5,
396
- 'v5/pre-upgrade/asset/delivery-record': 2.5,
397
- 'v5/pre-upgrade/asset/settlement-record': 2.5,
392
+ 'v5/pre-upgrade/order/history': 5,
393
+ 'v5/pre-upgrade/execution/list': 5,
394
+ 'v5/pre-upgrade/position/closed-pnl': 5,
395
+ 'v5/pre-upgrade/account/transaction-log': 5,
396
+ 'v5/pre-upgrade/asset/delivery-record': 5,
397
+ 'v5/pre-upgrade/asset/settlement-record': 5,
398
398
  // account
399
- 'v5/account/wallet-balance': 5,
400
- 'v5/account/borrow-history': 2.5,
401
- 'v5/account/set-collateral-switch': 2.5,
402
- 'v5/account/collateral-info': 2.5,
403
- 'v5/asset/coin-greeks': 2.5,
404
- 'v5/account/fee-rate': 5,
405
- 'v5/account/info': 2.5,
406
- 'v5/account/transaction-log': 2.5,
407
- 'v5/account/mmp-state': 2.5,
399
+ 'v5/account/wallet-balance': 1,
400
+ 'v5/account/borrow-history': 1,
401
+ 'v5/account/set-collateral-switch': 5,
402
+ 'v5/account/collateral-info': 1,
403
+ 'v5/asset/coin-greeks': 1,
404
+ 'v5/account/fee-rate': 10,
405
+ 'v5/account/info': 5,
406
+ 'v5/account/transaction-log': 1,
407
+ 'v5/account/mmp-state': 5,
408
408
  // asset
409
409
  'v5/asset/exchange/order-record': 5,
410
- 'v5/asset/delivery-record': 2.5,
411
- 'v5/asset/settlement-record': 2.5,
410
+ 'v5/asset/delivery-record': 5,
411
+ 'v5/asset/settlement-record': 5,
412
412
  'v5/asset/transfer/query-asset-info': 50,
413
413
  'v5/asset/transfer/query-account-coins-balance': 25,
414
414
  'v5/asset/transfer/query-account-coin-balance': 50,
@@ -416,38 +416,38 @@ export default class bybit extends Exchange {
416
416
  'v5/asset/transfer/query-inter-transfer-list': 50,
417
417
  'v5/asset/transfer/query-sub-member-list': 50,
418
418
  'v5/asset/transfer/query-universal-transfer-list': 25,
419
- 'v5/asset/deposit/query-allowed-list': 2.5,
419
+ 'v5/asset/deposit/query-allowed-list': 5,
420
420
  'v5/asset/deposit/query-record': 10,
421
421
  'v5/asset/deposit/query-sub-member-record': 10,
422
- 'v5/asset/deposit/query-internal-record': 2.5,
422
+ 'v5/asset/deposit/query-internal-record': 5,
423
423
  'v5/asset/deposit/query-address': 10,
424
424
  'v5/asset/deposit/query-sub-member-address': 10,
425
425
  'v5/asset/coin/query-info': 25,
426
426
  'v5/asset/withdraw/query-record': 10,
427
- 'v5/asset/withdraw/withdrawable-amount': 2.5,
427
+ 'v5/asset/withdraw/withdrawable-amount': 5,
428
428
  // user
429
429
  'v5/user/query-sub-members': 5,
430
430
  'v5/user/query-api': 5,
431
- 'v5/user/get-member-type': 2.5,
432
- 'v5/user/aff-customer-info': 2.5,
431
+ 'v5/user/get-member-type': 5,
432
+ 'v5/user/aff-customer-info': 5,
433
433
  // spot leverage token
434
434
  'v5/spot-lever-token/order-record': 1,
435
435
  // spot margin trade
436
- 'v5/spot-margin-trade/state': 2.5,
436
+ 'v5/spot-margin-trade/state': 5,
437
437
  'v5/spot-cross-margin-trade/loan-info': 1,
438
438
  'v5/spot-cross-margin-trade/account': 1,
439
439
  'v5/spot-cross-margin-trade/orders': 1,
440
440
  'v5/spot-cross-margin-trade/repay-history': 1,
441
441
  // institutional lending
442
- 'v5/ins-loan/loan-order': 2.5,
443
- 'v5/ins-loan/repaid-history': 2.5,
444
- 'v5/ins-loan/ltv-convert': 2.5,
442
+ 'v5/ins-loan/loan-order': 5,
443
+ 'v5/ins-loan/repaid-history': 5,
444
+ 'v5/ins-loan/ltv-convert': 5,
445
445
  // c2c lending
446
- 'v5/lending/info': 2.5,
447
- 'v5/lending/history-order': 2.5,
448
- 'v5/lending/account': 2.5,
446
+ 'v5/lending/info': 5,
447
+ 'v5/lending/history-order': 5,
448
+ 'v5/lending/account': 5,
449
449
  // broker
450
- 'v5/broker/earning-record': 2.5,
450
+ 'v5/broker/earning-record': 5,
451
451
  },
452
452
  'post': {
453
453
  // inverse swap
@@ -513,17 +513,17 @@ export default class bybit extends Exchange {
513
513
  'spot/v3/private/cross-margin-repay': 10,
514
514
  // account
515
515
  'asset/v1/private/transfer': 150,
516
- 'asset/v3/private/transfer/inter-transfer': 2.5,
516
+ 'asset/v3/private/transfer/inter-transfer': 150,
517
517
  'asset/v1/private/sub-member/transfer': 150,
518
518
  'asset/v1/private/withdraw': 50,
519
- 'asset/v3/private/withdraw/create': 1,
519
+ 'asset/v3/private/withdraw/create': 300,
520
520
  'asset/v1/private/withdraw/cancel': 50,
521
- 'asset/v3/private/withdraw/cancel': 0.84,
521
+ 'asset/v3/private/withdraw/cancel': 50,
522
522
  'asset/v1/private/transferable-subs/save': 3000,
523
523
  'asset/v1/private/universal/transfer': 1500,
524
- 'asset/v3/private/transfer/sub-member-transfer': 2.5,
525
- 'asset/v3/private/transfer/transfer-sub-member-save': 2.5,
526
- 'asset/v3/private/transfer/universal-transfer': 2.5,
524
+ 'asset/v3/private/transfer/sub-member-transfer': 150,
525
+ 'asset/v3/private/transfer/transfer-sub-member-save': 150,
526
+ 'asset/v3/private/transfer/universal-transfer': 10,
527
527
  'user/v3/private/create-sub-member': 10,
528
528
  'user/v3/private/create-sub-api': 10,
529
529
  'user/v3/private/update-api': 10,
@@ -562,12 +562,12 @@ export default class bybit extends Exchange {
562
562
  'perpetual/usdc/openapi/public/v1/risk-limit/list': 2.5,
563
563
  'perpetual/usdc/openapi/private/v1/position/set-risk-limit': 2.5,
564
564
  'perpetual/usdc/openapi/private/v1/predicted-funding': 2.5,
565
- 'contract/v3/private/copytrading/order/create': 2.5,
566
- 'contract/v3/private/copytrading/order/cancel': 2.5,
567
- 'contract/v3/private/copytrading/order/close': 2.5,
568
- 'contract/v3/private/copytrading/position/close': 2.5,
569
- 'contract/v3/private/copytrading/position/set-leverage': 2.5,
570
- 'contract/v3/private/copytrading/wallet/transfer': 2.5,
565
+ 'contract/v3/private/copytrading/order/create': 30,
566
+ 'contract/v3/private/copytrading/order/cancel': 30,
567
+ 'contract/v3/private/copytrading/order/close': 30,
568
+ 'contract/v3/private/copytrading/position/close': 40,
569
+ 'contract/v3/private/copytrading/position/set-leverage': 40,
570
+ 'contract/v3/private/copytrading/wallet/transfer': 25,
571
571
  'contract/v3/private/copytrading/order/trading-stop': 2.5,
572
572
  'contract/v3/private/order/create': 1,
573
573
  'contract/v3/private/order/cancel': 1,
@@ -582,13 +582,13 @@ export default class bybit extends Exchange {
582
582
  'contract/v3/private/position/set-risk-limit': 1,
583
583
  'contract/v3/private/account/setMarginMode': 1,
584
584
  // derivative
585
- 'unified/v3/private/order/create': 2.5,
586
- 'unified/v3/private/order/replace': 2.5,
587
- 'unified/v3/private/order/cancel': 2.5,
588
- 'unified/v3/private/order/create-batch': 2.5,
589
- 'unified/v3/private/order/replace-batch': 2.5,
590
- 'unified/v3/private/order/cancel-batch': 2.5,
591
- 'unified/v3/private/order/cancel-all': 2.5,
585
+ 'unified/v3/private/order/create': 30,
586
+ 'unified/v3/private/order/replace': 30,
587
+ 'unified/v3/private/order/cancel': 30,
588
+ 'unified/v3/private/order/create-batch': 30,
589
+ 'unified/v3/private/order/replace-batch': 30,
590
+ 'unified/v3/private/order/cancel-batch': 30,
591
+ 'unified/v3/private/order/cancel-all': 30,
592
592
  'unified/v3/private/position/set-leverage': 2.5,
593
593
  'unified/v3/private/position/tpsl/switch-mode': 2.5,
594
594
  'unified/v3/private/position/set-risk-limit': 2.5,
@@ -602,34 +602,34 @@ export default class bybit extends Exchange {
602
602
  'fht/compliance/tax/v3/private/url': 50,
603
603
  // v5
604
604
  // trade
605
- 'v5/order/create': 5,
605
+ 'v5/order/create': 2.5,
606
606
  'v5/order/amend': 5,
607
- 'v5/order/cancel': 5,
608
- 'v5/order/cancel-all': 5,
607
+ 'v5/order/cancel': 2.5,
608
+ 'v5/order/cancel-all': 50,
609
609
  'v5/order/create-batch': 5,
610
610
  'v5/order/amend-batch': 5,
611
611
  'v5/order/cancel-batch': 5,
612
- 'v5/order/disconnected-cancel-all': 2.5,
612
+ 'v5/order/disconnected-cancel-all': 5,
613
613
  // position
614
614
  'v5/position/set-leverage': 5,
615
- 'v5/position/switch-isolated': 2.5,
615
+ 'v5/position/switch-isolated': 5,
616
616
  'v5/position/set-tpsl-mode': 5,
617
- 'v5/position/switch-mode': 2.5,
617
+ 'v5/position/switch-mode': 5,
618
618
  'v5/position/set-risk-limit': 5,
619
619
  'v5/position/trading-stop': 5,
620
- 'v5/position/set-auto-add-margin': 2.5,
621
- 'v5/position/add-margin': 2.5,
622
- 'v5/position/confirm-pending-mmr': 2.5,
620
+ 'v5/position/set-auto-add-margin': 5,
621
+ 'v5/position/add-margin': 5,
622
+ 'v5/position/confirm-pending-mmr': 5,
623
623
  // account
624
- 'v5/account/upgrade-to-uta': 2.5,
625
- 'v5/account/set-margin-mode': 2.5,
626
- 'v5/account/mmp-modify': 2.5,
627
- 'v5/account/mmp-reset': 2.5,
624
+ 'v5/account/upgrade-to-uta': 5,
625
+ 'v5/account/set-margin-mode': 5,
626
+ 'v5/account/mmp-modify': 5,
627
+ 'v5/account/mmp-reset': 5,
628
628
  // asset
629
629
  'v5/asset/transfer/inter-transfer': 150,
630
630
  'v5/asset/transfer/save-transfer-sub-member': 150,
631
631
  'v5/asset/transfer/universal-transfer': 10,
632
- 'v5/asset/deposit/deposit-to-account': 2.5,
632
+ 'v5/asset/deposit/deposit-to-account': 5,
633
633
  'v5/asset/withdraw/create': 300,
634
634
  'v5/asset/withdraw/cancel': 50,
635
635
  // user
@@ -644,15 +644,15 @@ export default class bybit extends Exchange {
644
644
  'v5/spot-lever-token/purchase': 2.5,
645
645
  'v5/spot-lever-token/redeem': 2.5,
646
646
  // spot margin trade
647
- 'v5/spot-margin-trade/switch-mode': 2.5,
648
- 'v5/spot-margin-trade/set-leverage': 2.5,
647
+ 'v5/spot-margin-trade/switch-mode': 5,
648
+ 'v5/spot-margin-trade/set-leverage': 5,
649
649
  'v5/spot-cross-margin-trade/loan': 2.5,
650
650
  'v5/spot-cross-margin-trade/repay': 2.5,
651
651
  'v5/spot-cross-margin-trade/switch': 2.5,
652
652
  // c2c lending
653
- 'v5/lending/purchase': 2.5,
654
- 'v5/lending/redeem': 2.5,
655
- 'v5/lending/redeem-cancel': 2.5,
653
+ 'v5/lending/purchase': 5,
654
+ 'v5/lending/redeem': 5,
655
+ 'v5/lending/redeem-cancel': 5,
656
656
  },
657
657
  'delete': {
658
658
  // spot
@@ -4191,7 +4191,10 @@ export default class bybit extends Exchange {
4191
4191
  // Valid for option only.
4192
4192
  // 'orderIv': '0', // Implied volatility; parameters are passed according to the real value; for example, for 10%, 0.1 is passed
4193
4193
  };
4194
- if (market['linear']) {
4194
+ if (market['spot']) {
4195
+ request['category'] = 'spot';
4196
+ }
4197
+ else if (market['linear']) {
4195
4198
  request['category'] = 'linear';
4196
4199
  }
4197
4200
  else if (market['inverse']) {
package/js/src/phemex.js CHANGED
@@ -281,6 +281,7 @@ export default class phemex extends Exchange {
281
281
  'exceptions': {
282
282
  'exact': {
283
283
  // not documented
284
+ '401': AuthenticationError,
284
285
  '412': BadRequest,
285
286
  '6001': BadRequest,
286
287
  // documented
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccxt",
3
- "version": "4.1.35",
3
+ "version": "4.1.36",
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",
@@ -36,7 +36,7 @@
36
36
  "pre-transpile-pr": "npm run export-exchanges && npm run tsBuild && npm run emitAPI && npm run check-js-syntax",
37
37
  "post-transpile": "npm run check-python-syntax && npm run check-php-syntax",
38
38
  "test-ws": "npm run build && node run-tests-ws",
39
- "test": "npm run build && npm run commonjs-test && node run-tests",
39
+ "test": "npm run build && npm run commonjs-test && npm run static-tests && node run-tests",
40
40
  "fast-test": "npm run commonjs-test && node run-tests --js",
41
41
  "commonjs-test": "node test-commonjs.cjs",
42
42
  "fast-test-ws": "node run-tests-ws --js",
@@ -99,7 +99,11 @@
99
99
  "copy-python-keys": "node build/copy keys.json python/keys.json",
100
100
  "copy-python-readme": "node build/copy README.md python/README.md",
101
101
  "postinstall": "node postinstall.js",
102
- "validate-types": "node --loader ts-node/esm build/validate-return-type.ts"
102
+ "validate-types": "node --loader ts-node/esm build/validate-return-type.ts",
103
+ "static-js": "node js/src/test/test.js --static",
104
+ "static-py": "python python/ccxt/test/test_async.py --static",
105
+ "static-php": "php php/test/test_async.php --static",
106
+ "static-tests": "npm run static-js && npm run static-py && npm run static-php"
103
107
  },
104
108
  "types": "./js/ccxt.d.ts",
105
109
  "devDependencies": {