ccxt 4.2.57 → 4.2.58

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 (68) hide show
  1. package/README.md +4 -5
  2. package/build.sh +1 -1
  3. package/dist/ccxt.browser.js +462 -280
  4. package/dist/ccxt.browser.min.js +7 -7
  5. package/dist/cjs/ccxt.js +1 -1
  6. package/dist/cjs/src/alpaca.js +90 -88
  7. package/dist/cjs/src/base/Exchange.js +22 -1
  8. package/dist/cjs/src/binance.js +41 -28
  9. package/dist/cjs/src/bingx.js +12 -1
  10. package/dist/cjs/src/bitget.js +71 -56
  11. package/dist/cjs/src/bitmex.js +12 -28
  12. package/dist/cjs/src/bitrue.js +24 -15
  13. package/dist/cjs/src/blofin.js +24 -1
  14. package/dist/cjs/src/bybit.js +11 -3
  15. package/dist/cjs/src/currencycom.js +15 -5
  16. package/dist/cjs/src/delta.js +14 -1
  17. package/dist/cjs/src/gate.js +1 -1
  18. package/dist/cjs/src/hitbtc.js +12 -1
  19. package/dist/cjs/src/krakenfutures.js +22 -7
  20. package/dist/cjs/src/kuna.js +14 -11
  21. package/dist/cjs/src/mexc.js +19 -19
  22. package/dist/cjs/src/okx.js +31 -1
  23. package/dist/cjs/src/pro/alpaca.js +1 -1
  24. package/dist/cjs/src/pro/whitebit.js +4 -6
  25. package/dist/cjs/src/probit.js +1 -1
  26. package/dist/cjs/src/wavesexchange.js +1 -1
  27. package/dist/cjs/src/woo.js +20 -4
  28. package/js/ccxt.d.ts +3 -3
  29. package/js/ccxt.js +1 -1
  30. package/js/src/alpaca.js +90 -88
  31. package/js/src/base/Exchange.d.ts +6 -4
  32. package/js/src/base/Exchange.js +22 -1
  33. package/js/src/base/types.d.ts +9 -0
  34. package/js/src/binance.d.ts +3 -2
  35. package/js/src/binance.js +41 -28
  36. package/js/src/bingx.d.ts +3 -2
  37. package/js/src/bingx.js +12 -1
  38. package/js/src/bitget.d.ts +3 -2
  39. package/js/src/bitget.js +71 -56
  40. package/js/src/bitmex.d.ts +3 -3
  41. package/js/src/bitmex.js +12 -28
  42. package/js/src/bitrue.js +24 -15
  43. package/js/src/blofin.d.ts +3 -2
  44. package/js/src/blofin.js +24 -1
  45. package/js/src/bybit.d.ts +3 -6
  46. package/js/src/bybit.js +11 -3
  47. package/js/src/currencycom.d.ts +3 -2
  48. package/js/src/currencycom.js +15 -5
  49. package/js/src/delta.d.ts +3 -2
  50. package/js/src/delta.js +14 -1
  51. package/js/src/gate.js +1 -1
  52. package/js/src/hitbtc.d.ts +3 -2
  53. package/js/src/hitbtc.js +12 -1
  54. package/js/src/krakenfutures.d.ts +3 -2
  55. package/js/src/krakenfutures.js +22 -7
  56. package/js/src/kuna.js +14 -11
  57. package/js/src/mexc.d.ts +3 -13
  58. package/js/src/mexc.js +19 -19
  59. package/js/src/okx.d.ts +3 -2
  60. package/js/src/okx.js +31 -1
  61. package/js/src/pro/alpaca.js +1 -1
  62. package/js/src/pro/whitebit.js +4 -6
  63. package/js/src/probit.js +1 -1
  64. package/js/src/wavesexchange.js +1 -1
  65. package/js/src/woo.d.ts +3 -5
  66. package/js/src/woo.js +20 -4
  67. package/package.json +1 -1
  68. package/skip-tests.json +6 -1
@@ -1425,7 +1425,7 @@ class bitget extends bitget$1 {
1425
1425
  let defaultProductType = undefined;
1426
1426
  if ((subType !== undefined) && (market === undefined)) {
1427
1427
  // set default only if subType is defined and market is not defined, since there is also USDC productTypes which are also linear
1428
- const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
1428
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
1429
1429
  if (sandboxMode) {
1430
1430
  defaultProductType = (subType === 'linear') ? 'SUSDT-FUTURES' : 'SCOIN-FUTURES';
1431
1431
  }
@@ -1494,7 +1494,7 @@ class bitget extends bitget$1 {
1494
1494
  * @param {object} [params] extra parameters specific to the exchange API endpoint
1495
1495
  * @returns {object[]} an array of objects representing market data
1496
1496
  */
1497
- const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
1497
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
1498
1498
  let types = this.safeValue(this.options, 'fetchMarkets', ['spot', 'swap']);
1499
1499
  if (sandboxMode) {
1500
1500
  types = ['swap'];
@@ -1949,7 +1949,7 @@ class bitget extends bitget$1 {
1949
1949
  * @returns {object} a [leverage tiers structure]{@link https://docs.ccxt.com/#/?id=leverage-tiers-structure}
1950
1950
  */
1951
1951
  await this.loadMarkets();
1952
- const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
1952
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
1953
1953
  let market = undefined;
1954
1954
  if (sandboxMode) {
1955
1955
  const sandboxSymbol = this.convertSymbolForSandbox(symbol);
@@ -2485,7 +2485,7 @@ class bitget extends bitget$1 {
2485
2485
  * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
2486
2486
  */
2487
2487
  await this.loadMarkets();
2488
- const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
2488
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
2489
2489
  let market = undefined;
2490
2490
  if (sandboxMode) {
2491
2491
  const sandboxSymbol = this.convertSymbolForSandbox(symbol);
@@ -2648,7 +2648,7 @@ class bitget extends bitget$1 {
2648
2648
  * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
2649
2649
  */
2650
2650
  await this.loadMarkets();
2651
- const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
2651
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
2652
2652
  let market = undefined;
2653
2653
  if (sandboxMode) {
2654
2654
  const sandboxSymbol = this.convertSymbolForSandbox(symbol);
@@ -2752,7 +2752,7 @@ class bitget extends bitget$1 {
2752
2752
  let market = undefined;
2753
2753
  if (symbols !== undefined) {
2754
2754
  const symbol = this.safeValue(symbols, 0);
2755
- const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
2755
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
2756
2756
  if (sandboxMode) {
2757
2757
  const sandboxSymbol = this.convertSymbolForSandbox(symbol);
2758
2758
  market = this.market(sandboxSymbol);
@@ -2970,7 +2970,7 @@ class bitget extends bitget$1 {
2970
2970
  if (paginate) {
2971
2971
  return await this.fetchPaginatedCallCursor('fetchTrades', symbol, since, limit, params, 'idLessThan', 'idLessThan');
2972
2972
  }
2973
- const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
2973
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
2974
2974
  let market = undefined;
2975
2975
  if (sandboxMode) {
2976
2976
  const sandboxSymbol = this.convertSymbolForSandbox(symbol);
@@ -3289,7 +3289,7 @@ class bitget extends bitget$1 {
3289
3289
  if (paginate) {
3290
3290
  return await this.fetchPaginatedCallDeterministic('fetchOHLCV', symbol, since, limit, timeframe, params, 1000);
3291
3291
  }
3292
- const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
3292
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
3293
3293
  let market = undefined;
3294
3294
  if (sandboxMode) {
3295
3295
  const sandboxSymbol = this.convertSymbolForSandbox(symbol);
@@ -4109,7 +4109,7 @@ class bitget extends bitget$1 {
4109
4109
  return this.parseOrder(data, market);
4110
4110
  }
4111
4111
  createOrderRequest(symbol, type, side, amount, price = undefined, params = {}) {
4112
- const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
4112
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
4113
4113
  let market = undefined;
4114
4114
  if (sandboxMode) {
4115
4115
  const sandboxSymbol = this.convertSymbolForSandbox(symbol);
@@ -4380,7 +4380,7 @@ class bitget extends bitget$1 {
4380
4380
  const orderRequest = this.createOrderRequest(marketId, type, side, amount, price, orderParams);
4381
4381
  ordersRequests.push(orderRequest);
4382
4382
  }
4383
- const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
4383
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
4384
4384
  let market = undefined;
4385
4385
  if (sandboxMode) {
4386
4386
  const sandboxSymbol = this.convertSymbolForSandbox(symbol);
@@ -4477,7 +4477,7 @@ class bitget extends bitget$1 {
4477
4477
  * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
4478
4478
  */
4479
4479
  await this.loadMarkets();
4480
- const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
4480
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
4481
4481
  let market = undefined;
4482
4482
  if (sandboxMode) {
4483
4483
  const sandboxSymbol = this.convertSymbolForSandbox(symbol);
@@ -4643,7 +4643,7 @@ class bitget extends bitget$1 {
4643
4643
  throw new errors.ArgumentsRequired(this.id + ' cancelOrder() requires a symbol argument');
4644
4644
  }
4645
4645
  await this.loadMarkets();
4646
- const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
4646
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
4647
4647
  let market = undefined;
4648
4648
  if (sandboxMode) {
4649
4649
  const sandboxSymbol = this.convertSymbolForSandbox(symbol);
@@ -4783,7 +4783,7 @@ class bitget extends bitget$1 {
4783
4783
  throw new errors.ArgumentsRequired(this.id + ' cancelOrders() requires a symbol argument');
4784
4784
  }
4785
4785
  await this.loadMarkets();
4786
- const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
4786
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
4787
4787
  let market = undefined;
4788
4788
  if (sandboxMode) {
4789
4789
  const sandboxSymbol = this.convertSymbolForSandbox(symbol);
@@ -4877,7 +4877,7 @@ class bitget extends bitget$1 {
4877
4877
  throw new errors.ArgumentsRequired(this.id + ' cancelAllOrders() requires a symbol argument');
4878
4878
  }
4879
4879
  await this.loadMarkets();
4880
- const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
4880
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
4881
4881
  let market = undefined;
4882
4882
  if (sandboxMode) {
4883
4883
  const sandboxSymbol = this.convertSymbolForSandbox(symbol);
@@ -4981,7 +4981,7 @@ class bitget extends bitget$1 {
4981
4981
  throw new errors.ArgumentsRequired(this.id + ' fetchOrder() requires a symbol argument');
4982
4982
  }
4983
4983
  await this.loadMarkets();
4984
- const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
4984
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
4985
4985
  let market = undefined;
4986
4986
  if (sandboxMode) {
4987
4987
  const sandboxSymbol = this.convertSymbolForSandbox(symbol);
@@ -5097,7 +5097,7 @@ class bitget extends bitget$1 {
5097
5097
  * @param {int} [limit] the maximum number of open order structures to retrieve
5098
5098
  * @param {object} [params] extra parameters specific to the exchange API endpoint
5099
5099
  * @param {int} [params.until] the latest time in ms to fetch orders for
5100
- * @param {string} [params.planType] *contract stop only* 'normal_plan': average trigger order, 'track_plan': trailing stop order, default is 'normal_plan'
5100
+ * @param {string} [params.planType] *contract stop only* 'normal_plan': average trigger order, 'profit_loss': opened tp/sl orders, 'track_plan': trailing stop order, default is 'normal_plan'
5101
5101
  * @param {boolean} [params.stop] set to true for fetching trigger orders
5102
5102
  * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
5103
5103
  * @param {string} [params.isPlan] *swap only* 'plan' for stop orders and 'profit_loss' for tp/sl orders, default is 'plan'
@@ -5105,7 +5105,7 @@ class bitget extends bitget$1 {
5105
5105
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
5106
5106
  */
5107
5107
  await this.loadMarkets();
5108
- const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
5108
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
5109
5109
  let market = undefined;
5110
5110
  let type = undefined;
5111
5111
  let request = {};
@@ -5143,8 +5143,10 @@ class bitget extends bitget$1 {
5143
5143
  return await this.fetchPaginatedCallCursor('fetchOpenOrders', symbol, since, limit, params, cursorReceived, 'idLessThan');
5144
5144
  }
5145
5145
  let response = undefined;
5146
- const trailing = this.safeValue(params, 'trailing');
5147
- const stop = this.safeValue2(params, 'stop', 'trigger');
5146
+ const trailing = this.safeBool(params, 'trailing');
5147
+ const stop = this.safeBool2(params, 'stop', 'trigger');
5148
+ const planTypeDefined = this.safeString(params, 'planType') !== undefined;
5149
+ const isStop = (stop || planTypeDefined);
5148
5150
  params = this.omit(params, ['stop', 'trigger', 'trailing']);
5149
5151
  [request, params] = this.handleUntilOption('endTime', request, params);
5150
5152
  if (since !== undefined) {
@@ -5193,7 +5195,7 @@ class bitget extends bitget$1 {
5193
5195
  request['planType'] = planType;
5194
5196
  response = await this.privateMixGetV2MixOrderOrdersPlanPending(this.extend(request, query));
5195
5197
  }
5196
- else if (stop) {
5198
+ else if (isStop) {
5197
5199
  const planType = this.safeString(query, 'planType', 'normal_plan');
5198
5200
  request['planType'] = planType;
5199
5201
  response = await this.privateMixGetV2MixOrderOrdersPlanPending(this.extend(request, query));
@@ -5460,7 +5462,7 @@ class bitget extends bitget$1 {
5460
5462
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
5461
5463
  */
5462
5464
  await this.loadMarkets();
5463
- const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
5465
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
5464
5466
  let market = undefined;
5465
5467
  if (sandboxMode) {
5466
5468
  if (symbol !== undefined) {
@@ -5493,7 +5495,7 @@ class bitget extends bitget$1 {
5493
5495
  }
5494
5496
  let response = undefined;
5495
5497
  const trailing = this.safeValue(params, 'trailing');
5496
- const stop = this.safeValue2(params, 'stop', 'trigger');
5498
+ const stop = this.safeBool2(params, 'stop', 'trigger');
5497
5499
  params = this.omit(params, ['stop', 'trigger', 'trailing']);
5498
5500
  [request, params] = this.handleUntilOption('endTime', request, params);
5499
5501
  if (since !== undefined) {
@@ -5777,7 +5779,7 @@ class bitget extends bitget$1 {
5777
5779
  params = this.omit(params, 'symbol');
5778
5780
  let market = undefined;
5779
5781
  if (symbol !== undefined) {
5780
- const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
5782
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
5781
5783
  if (sandboxMode) {
5782
5784
  const sandboxSymbol = this.convertSymbolForSandbox(symbol);
5783
5785
  market = this.market(sandboxSymbol);
@@ -5997,7 +5999,7 @@ class bitget extends bitget$1 {
5997
5999
  throw new errors.ArgumentsRequired(this.id + ' fetchMyTrades() requires a symbol argument');
5998
6000
  }
5999
6001
  await this.loadMarkets();
6000
- const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
6002
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
6001
6003
  let market = undefined;
6002
6004
  if (sandboxMode) {
6003
6005
  const sandboxSymbol = this.convertSymbolForSandbox(symbol);
@@ -6176,7 +6178,7 @@ class bitget extends bitget$1 {
6176
6178
  * @returns {object} a [position structure]{@link https://docs.ccxt.com/#/?id=position-structure}
6177
6179
  */
6178
6180
  await this.loadMarkets();
6179
- const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
6181
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
6180
6182
  let market = undefined;
6181
6183
  if (sandboxMode) {
6182
6184
  const sandboxSymbol = this.convertSymbolForSandbox(symbol);
@@ -6252,7 +6254,7 @@ class bitget extends bitget$1 {
6252
6254
  let market = undefined;
6253
6255
  if (symbols !== undefined) {
6254
6256
  const first = this.safeString(symbols, 0);
6255
- const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
6257
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
6256
6258
  if (sandboxMode) {
6257
6259
  const sandboxSymbol = this.convertSymbolForSandbox(first);
6258
6260
  market = this.market(sandboxSymbol);
@@ -6572,7 +6574,7 @@ class bitget extends bitget$1 {
6572
6574
  if (paginate) {
6573
6575
  return await this.fetchPaginatedCallIncremental('fetchFundingRateHistory', symbol, since, limit, params, 'pageNo', 100);
6574
6576
  }
6575
- const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
6577
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
6576
6578
  let market = undefined;
6577
6579
  if (sandboxMode) {
6578
6580
  const sandboxSymbol = this.convertSymbolForSandbox(symbol);
@@ -6636,7 +6638,7 @@ class bitget extends bitget$1 {
6636
6638
  * @returns {object} a [funding rate structure]{@link https://docs.ccxt.com/#/?id=funding-rate-structure}
6637
6639
  */
6638
6640
  await this.loadMarkets();
6639
- const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
6641
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
6640
6642
  let market = undefined;
6641
6643
  if (sandboxMode) {
6642
6644
  const sandboxSymbol = this.convertSymbolForSandbox(symbol);
@@ -6723,7 +6725,7 @@ class bitget extends bitget$1 {
6723
6725
  if (paginate) {
6724
6726
  return await this.fetchPaginatedCallCursor('fetchFundingHistory', symbol, since, limit, params, 'endId', 'idLessThan');
6725
6727
  }
6726
- const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
6728
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
6727
6729
  let market = undefined;
6728
6730
  if (sandboxMode) {
6729
6731
  const sandboxSymbol = this.convertSymbolForSandbox(symbol);
@@ -6819,7 +6821,7 @@ class bitget extends bitget$1 {
6819
6821
  async modifyMarginHelper(symbol, amount, type, params = {}) {
6820
6822
  await this.loadMarkets();
6821
6823
  const holdSide = this.safeString(params, 'holdSide');
6822
- const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
6824
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
6823
6825
  let market = undefined;
6824
6826
  if (sandboxMode) {
6825
6827
  const sandboxSymbol = this.convertSymbolForSandbox(symbol);
@@ -6912,7 +6914,7 @@ class bitget extends bitget$1 {
6912
6914
  * @returns {object} a [leverage structure]{@link https://docs.ccxt.com/#/?id=leverage-structure}
6913
6915
  */
6914
6916
  await this.loadMarkets();
6915
- const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
6917
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
6916
6918
  let market = undefined;
6917
6919
  if (sandboxMode) {
6918
6920
  const sandboxSymbol = this.convertSymbolForSandbox(symbol);
@@ -6933,28 +6935,41 @@ class bitget extends bitget$1 {
6933
6935
  // {
6934
6936
  // "code": "00000",
6935
6937
  // "msg": "success",
6936
- // "requestTime": 1700625127294,
6937
- // "data": [
6938
- // {
6939
- // "marginCoin": "USDT",
6940
- // "locked": "0",
6941
- // "available": "0",
6942
- // "crossedMaxAvailable": "0",
6943
- // "isolatedMaxAvailable": "0",
6944
- // "maxTransferOut": "0",
6945
- // "accountEquity": "0",
6946
- // "usdtEquity": "0.000000005166",
6947
- // "btcEquity": "0",
6948
- // "crossedRiskRate": "0",
6949
- // "unrealizedPL": "0",
6950
- // "coupon": "0",
6951
- // "crossedUnrealizedPL": null,
6952
- // "isolatedUnrealizedPL": null
6953
- // }
6954
- // ]
6938
+ // "requestTime": 1709366911964,
6939
+ // "data": {
6940
+ // "marginCoin": "USDT",
6941
+ // "locked": "0",
6942
+ // "available": "0",
6943
+ // "crossedMaxAvailable": "0",
6944
+ // "isolatedMaxAvailable": "0",
6945
+ // "maxTransferOut": "0",
6946
+ // "accountEquity": "0",
6947
+ // "usdtEquity": "0.000000009166",
6948
+ // "btcEquity": "0",
6949
+ // "crossedRiskRate": "0",
6950
+ // "crossedMarginLeverage": 20,
6951
+ // "isolatedLongLever": 20,
6952
+ // "isolatedShortLever": 20,
6953
+ // "marginMode": "crossed",
6954
+ // "posMode": "hedge_mode",
6955
+ // "unrealizedPL": "0",
6956
+ // "coupon": "0",
6957
+ // "crossedUnrealizedPL": "0",
6958
+ // "isolatedUnrealizedPL": ""
6959
+ // }
6955
6960
  // }
6956
6961
  //
6957
- return response;
6962
+ const data = this.safeDict(response, 'data', {});
6963
+ return this.parseLeverage(data, market);
6964
+ }
6965
+ parseLeverage(leverage, market = undefined) {
6966
+ return {
6967
+ 'info': leverage,
6968
+ 'symbol': market['symbol'],
6969
+ 'marginMode': 'isolated',
6970
+ 'longLeverage': this.safeInteger(leverage, 'isolatedLongLever'),
6971
+ 'shortLeverage': this.safeInteger(leverage, 'isolatedShortLever'),
6972
+ };
6958
6973
  }
6959
6974
  async setLeverage(leverage, symbol = undefined, params = {}) {
6960
6975
  /**
@@ -6972,7 +6987,7 @@ class bitget extends bitget$1 {
6972
6987
  throw new errors.ArgumentsRequired(this.id + ' setLeverage() requires a symbol argument');
6973
6988
  }
6974
6989
  await this.loadMarkets();
6975
- const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
6990
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
6976
6991
  let market = undefined;
6977
6992
  if (sandboxMode) {
6978
6993
  const sandboxSymbol = this.convertSymbolForSandbox(symbol);
@@ -7030,7 +7045,7 @@ class bitget extends bitget$1 {
7030
7045
  throw new errors.ArgumentsRequired(this.id + ' setMarginMode() marginMode must be either isolated or crossed (cross)');
7031
7046
  }
7032
7047
  await this.loadMarkets();
7033
- const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
7048
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
7034
7049
  let market = undefined;
7035
7050
  if (sandboxMode) {
7036
7051
  const sandboxSymbol = this.convertSymbolForSandbox(symbol);
@@ -7080,7 +7095,7 @@ class bitget extends bitget$1 {
7080
7095
  const posMode = hedged ? 'hedge_mode' : 'one_way_mode';
7081
7096
  let market = undefined;
7082
7097
  if (symbol !== undefined) {
7083
- const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
7098
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
7084
7099
  if (sandboxMode) {
7085
7100
  const sandboxSymbol = this.convertSymbolForSandbox(symbol);
7086
7101
  market = this.market(sandboxSymbol);
@@ -7119,7 +7134,7 @@ class bitget extends bitget$1 {
7119
7134
  * @returns {object} an open interest structure{@link https://docs.ccxt.com/#/?id=open-interest-structure}
7120
7135
  */
7121
7136
  await this.loadMarkets();
7122
- const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
7137
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
7123
7138
  let market = undefined;
7124
7139
  if (sandboxMode) {
7125
7140
  const sandboxSymbol = this.convertSymbolForSandbox(symbol);
@@ -8153,7 +8168,7 @@ class bitget extends bitget$1 {
8153
8168
  * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
8154
8169
  */
8155
8170
  await this.loadMarkets();
8156
- const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
8171
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
8157
8172
  let market = undefined;
8158
8173
  if (sandboxMode) {
8159
8174
  const sandboxSymbol = this.convertSymbolForSandbox(symbol);
@@ -59,7 +59,7 @@ class bitmex extends bitmex$1 {
59
59
  'fetchFundingRates': true,
60
60
  'fetchIndexOHLCV': false,
61
61
  'fetchLedger': true,
62
- 'fetchLeverage': true,
62
+ 'fetchLeverage': 'emulated',
63
63
  'fetchLeverages': true,
64
64
  'fetchLeverageTiers': false,
65
65
  'fetchLiquidations': true,
@@ -2126,34 +2126,18 @@ class bitmex extends bitmex$1 {
2126
2126
  * @returns {object} a list of [leverage structures]{@link https://docs.ccxt.com/#/?id=leverage-structure}
2127
2127
  */
2128
2128
  await this.loadMarkets();
2129
- const positions = await this.fetchPositions(symbols, params);
2130
- const result = [];
2131
- for (let i = 0; i < positions.length; i++) {
2132
- const entry = positions[i];
2133
- const marketId = this.safeString(entry, 'symbol');
2134
- const market = this.safeMarket(marketId, undefined, undefined, 'contract');
2135
- result.push({
2136
- 'info': entry,
2137
- 'symbol': market['symbol'],
2138
- 'leverage': this.safeInteger(entry, 'leverage'),
2139
- 'marginMode': this.safeString(entry, 'marginMode'),
2140
- });
2141
- }
2142
- return result;
2129
+ const leverages = await this.fetchPositions(symbols, params);
2130
+ return this.parseLeverages(leverages, symbols, 'symbol');
2143
2131
  }
2144
- async fetchLeverage(symbol, params = {}) {
2145
- /**
2146
- * @method
2147
- * @name bitmex#fetchLeverage
2148
- * @description fetch the set leverage for a market
2149
- * @see https://www.bitmex.com/api/explorer/#!/Position/Position_get
2150
- * @param {string} symbol unified market symbol
2151
- * @param {object} [params] extra parameters specific to the exchange API endpoint
2152
- * @returns {object} a [leverage structure]{@link https://docs.ccxt.com/#/?id=leverage-structure}
2153
- */
2154
- await this.loadMarkets();
2155
- const leverage = await this.fetchLeverages([symbol], params);
2156
- return leverage;
2132
+ parseLeverage(leverage, market = undefined) {
2133
+ const marketId = this.safeString(leverage, 'symbol');
2134
+ return {
2135
+ 'info': leverage,
2136
+ 'symbol': this.safeSymbol(marketId, market),
2137
+ 'marginMode': this.safeStringLower(leverage, 'marginMode'),
2138
+ 'longLeverage': this.safeInteger(leverage, 'leverage'),
2139
+ 'shortLeverage': this.safeInteger(leverage, 'leverage'),
2140
+ };
2157
2141
  }
2158
2142
  async fetchPositions(symbols = undefined, params = {}) {
2159
2143
  /**
@@ -2603,20 +2603,29 @@ class bitrue extends bitrue$1 {
2603
2603
  }
2604
2604
  const response = await this.spotV1PrivateGetWithdrawHistory(this.extend(request, params));
2605
2605
  //
2606
- // {
2607
- // "code": 200,
2608
- // "msg": "succ",
2609
- // "data": {
2610
- // "msg": null,
2611
- // "amount": 1000,
2612
- // "fee": 1,
2613
- // "ctime": null,
2614
- // "coin": "usdt_erc20",
2615
- // "addressTo": "0x2edfae3878d7b6db70ce4abed177ab2636f60c83"
2616
- // }
2617
- // }
2618
- //
2619
- const data = this.safeValue(response, 'data', {});
2606
+ // {
2607
+ // "code": 200,
2608
+ // "msg": "succ",
2609
+ // "data": [
2610
+ // {
2611
+ // "id": 183745,
2612
+ // "symbol": "usdt_erc20",
2613
+ // "amount": "8.4000000000000000",
2614
+ // "fee": "1.6000000000000000",
2615
+ // "payAmount": "0.0000000000000000",
2616
+ // "createdAt": 1595336441000,
2617
+ // "updatedAt": 1595336576000,
2618
+ // "addressFrom": "",
2619
+ // "addressTo": "0x2edfae3878d7b6db70ce4abed177ab2636f60c83",
2620
+ // "txid": "",
2621
+ // "confirmations": 0,
2622
+ // "status": 6,
2623
+ // "tagType": null
2624
+ // }
2625
+ // ]
2626
+ // }
2627
+ //
2628
+ const data = this.safeList(response, 'data', []);
2620
2629
  return this.parseTransactions(data, currency);
2621
2630
  }
2622
2631
  parseTransactionStatusByType(status, type = undefined) {
@@ -2959,7 +2968,7 @@ class bitrue extends bitrue$1 {
2959
2968
  // }]
2960
2969
  // }
2961
2970
  //
2962
- const data = this.safeValue(response, 'data', {});
2971
+ const data = this.safeList(response, 'data', []);
2963
2972
  return this.parseTransfers(data, currency, since, limit);
2964
2973
  }
2965
2974
  async transfer(code, amount, fromAccount, toAccount, params = {}) {
@@ -1907,7 +1907,30 @@ class blofin extends blofin$1 {
1907
1907
  'marginMode': marginMode,
1908
1908
  };
1909
1909
  const response = await this.privateGetAccountLeverageInfo(this.extend(request, params));
1910
- return response;
1910
+ //
1911
+ // {
1912
+ // "code": "0",
1913
+ // "msg": "success",
1914
+ // "data": {
1915
+ // "leverage": "3",
1916
+ // "marginMode": "cross",
1917
+ // "instId": "BTC-USDT"
1918
+ // }
1919
+ // }
1920
+ //
1921
+ const data = this.safeDict(response, 'data', {});
1922
+ return this.parseLeverage(data, market);
1923
+ }
1924
+ parseLeverage(leverage, market = undefined) {
1925
+ const marketId = this.safeString(leverage, 'instId');
1926
+ const leverageValue = this.safeInteger(leverage, 'leverage');
1927
+ return {
1928
+ 'info': leverage,
1929
+ 'symbol': this.safeSymbol(marketId, market),
1930
+ 'marginMode': this.safeStringLower(leverage, 'marginMode'),
1931
+ 'longLeverage': leverageValue,
1932
+ 'shortLeverage': leverageValue,
1933
+ };
1911
1934
  }
1912
1935
  async setLeverage(leverage, symbol = undefined, params = {}) {
1913
1936
  /**
@@ -6356,11 +6356,19 @@ class bybit extends bybit$1 {
6356
6356
  * @returns {object} a [leverage structure]{@link https://docs.ccxt.com/#/?id=leverage-structure}
6357
6357
  */
6358
6358
  await this.loadMarkets();
6359
+ const market = this.market(symbol);
6359
6360
  const position = await this.fetchPosition(symbol, params);
6361
+ return this.parseLeverage(position, market);
6362
+ }
6363
+ parseLeverage(leverage, market = undefined) {
6364
+ const marketId = this.safeString(leverage, 'symbol');
6365
+ const leverageValue = this.safeInteger(leverage, 'leverage');
6360
6366
  return {
6361
- 'info': position,
6362
- 'leverage': this.safeInteger(position, 'leverage'),
6363
- 'marginMode': this.safeNumber(position, 'marginMode'),
6367
+ 'info': leverage,
6368
+ 'symbol': this.safeSymbol(marketId, market),
6369
+ 'marginMode': this.safeStringLower(leverage, 'marginMode'),
6370
+ 'longLeverage': leverageValue,
6371
+ 'shortLeverage': leverageValue,
6364
6372
  };
6365
6373
  }
6366
6374
  async setMarginMode(marginMode, symbol = undefined, params = {}) {
@@ -1806,12 +1806,22 @@ class currencycom extends currencycom$1 {
1806
1806
  };
1807
1807
  const response = await this.privateGetV2LeverageSettings(this.extend(request, params));
1808
1808
  //
1809
- // {
1810
- // "values": [ 1, 2, 5, 10, ],
1811
- // "value": "10",
1812
- // }
1809
+ // {
1810
+ // "values": [ 1, 2, 5, 10, ],
1811
+ // "value": "10",
1812
+ // }
1813
1813
  //
1814
- return this.safeNumber(response, 'value');
1814
+ return this.parseLeverage(response, market);
1815
+ }
1816
+ parseLeverage(leverage, market = undefined) {
1817
+ const leverageValue = this.safeInteger(leverage, 'value');
1818
+ return {
1819
+ 'info': leverage,
1820
+ 'symbol': market['symbol'],
1821
+ 'marginMode': undefined,
1822
+ 'longLeverage': leverageValue,
1823
+ 'shortLeverage': leverageValue,
1824
+ };
1815
1825
  }
1816
1826
  async fetchDepositAddress(code, params = {}) {
1817
1827
  /**
@@ -2811,6 +2811,7 @@ class delta extends delta$1 {
2811
2811
  const request = {
2812
2812
  'product_id': market['numericId'],
2813
2813
  };
2814
+ const response = await this.privateGetProductsProductIdOrdersLeverage(this.extend(request, params));
2814
2815
  //
2815
2816
  // {
2816
2817
  // "result": {
@@ -2824,7 +2825,19 @@ class delta extends delta$1 {
2824
2825
  // "success": true
2825
2826
  // }
2826
2827
  //
2827
- return await this.privateGetProductsProductIdOrdersLeverage(this.extend(request, params));
2828
+ const result = this.safeDict(response, 'result', {});
2829
+ return this.parseLeverage(result, market);
2830
+ }
2831
+ parseLeverage(leverage, market = undefined) {
2832
+ const marketId = this.safeString(leverage, 'index_symbol');
2833
+ const leverageValue = this.safeInteger(leverage, 'leverage');
2834
+ return {
2835
+ 'info': leverage,
2836
+ 'symbol': this.safeSymbol(marketId, market),
2837
+ 'marginMode': this.safeStringLower(leverage, 'margin_mode'),
2838
+ 'longLeverage': leverageValue,
2839
+ 'shortLeverage': leverageValue,
2840
+ };
2828
2841
  }
2829
2842
  async setLeverage(leverage, symbol = undefined, params = {}) {
2830
2843
  /**
@@ -959,7 +959,7 @@ class gate extends gate$1 {
959
959
  * @param {object} [params] extra parameters specific to the exchange API endpoint
960
960
  * @returns {object[]} an array of objects representing market data
961
961
  */
962
- const sandboxMode = this.safeValue(this.options, 'sandboxMode', false);
962
+ const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
963
963
  let rawPromises = [
964
964
  this.fetchContractMarkets(params),
965
965
  this.fetchOptionMarkets(params),
@@ -3399,7 +3399,18 @@ class hitbtc extends hitbtc$1 {
3399
3399
  // ]
3400
3400
  // }
3401
3401
  //
3402
- return this.safeNumber(response, 'leverage');
3402
+ return this.parseLeverage(response, market);
3403
+ }
3404
+ parseLeverage(leverage, market = undefined) {
3405
+ const marketId = this.safeString(leverage, 'symbol');
3406
+ const leverageValue = this.safeInteger(leverage, 'leverage');
3407
+ return {
3408
+ 'info': leverage,
3409
+ 'symbol': this.safeSymbol(marketId, market),
3410
+ 'marginMode': this.safeStringLower(leverage, 'type'),
3411
+ 'longLeverage': leverageValue,
3412
+ 'shortLeverage': leverageValue,
3413
+ };
3403
3414
  }
3404
3415
  async setLeverage(leverage, symbol = undefined, params = {}) {
3405
3416
  /**