ccxt 4.5.5 → 4.5.7

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 (151) hide show
  1. package/README.md +4 -4
  2. package/dist/ccxt.browser.min.js +15 -15
  3. package/dist/cjs/ccxt.js +6 -6
  4. package/dist/cjs/src/abstract/toobit.js +11 -0
  5. package/dist/cjs/src/abstract/tradeogre.js +1 -1
  6. package/dist/cjs/src/apex.js +2 -2
  7. package/dist/cjs/src/backpack.js +1 -1
  8. package/dist/cjs/src/base/Exchange.js +129 -2
  9. package/dist/cjs/src/bigone.js +4 -4
  10. package/dist/cjs/src/binance.js +82 -20
  11. package/dist/cjs/src/bingx.js +5 -2
  12. package/dist/cjs/src/bitbank.js +1 -0
  13. package/dist/cjs/src/bitbns.js +1 -0
  14. package/dist/cjs/src/bitflyer.js +1 -0
  15. package/dist/cjs/src/bitget.js +16 -9
  16. package/dist/cjs/src/bithumb.js +1 -0
  17. package/dist/cjs/src/bitso.js +1 -0
  18. package/dist/cjs/src/bitvavo.js +26 -40
  19. package/dist/cjs/src/blockchaincom.js +1 -0
  20. package/dist/cjs/src/btcalpha.js +1 -0
  21. package/dist/cjs/src/btcbox.js +1 -0
  22. package/dist/cjs/src/btcmarkets.js +1 -0
  23. package/dist/cjs/src/btcturk.js +1 -0
  24. package/dist/cjs/src/bybit.js +186 -127
  25. package/dist/cjs/src/coinsph.js +4 -1
  26. package/dist/cjs/src/cryptocom.js +6 -3
  27. package/dist/cjs/src/deribit.js +3 -2
  28. package/dist/cjs/src/digifinex.js +1 -1
  29. package/dist/cjs/src/gate.js +9 -13
  30. package/dist/cjs/src/gemini.js +5 -5
  31. package/dist/cjs/src/htx.js +11 -1
  32. package/dist/cjs/src/hyperliquid.js +3 -0
  33. package/dist/cjs/src/independentreserve.js +1 -0
  34. package/dist/cjs/src/indodax.js +17 -6
  35. package/dist/cjs/src/kraken.js +31 -8
  36. package/dist/cjs/src/krakenfutures.js +1 -0
  37. package/dist/cjs/src/kucoin.js +1 -2
  38. package/dist/cjs/src/luno.js +4 -1
  39. package/dist/cjs/src/mercado.js +1 -0
  40. package/dist/cjs/src/mexc.js +84 -37
  41. package/dist/cjs/src/novadax.js +1 -0
  42. package/dist/cjs/src/oceanex.js +1 -0
  43. package/dist/cjs/src/okcoin.js +4 -1
  44. package/dist/cjs/src/okx.js +52 -8
  45. package/dist/cjs/src/phemex.js +1 -1
  46. package/dist/cjs/src/pro/apex.js +8 -4
  47. package/dist/cjs/src/pro/backpack.js +7 -5
  48. package/dist/cjs/src/pro/binance.js +150 -19
  49. package/dist/cjs/src/pro/bingx.js +206 -220
  50. package/dist/cjs/src/pro/bitget.js +332 -76
  51. package/dist/cjs/src/pro/cex.js +1 -0
  52. package/dist/cjs/src/pro/htx.js +1 -1
  53. package/dist/cjs/src/pro/independentreserve.js +1 -0
  54. package/dist/cjs/src/pro/mexc.js +23 -23
  55. package/dist/cjs/src/pro/okx.js +46 -10
  56. package/dist/cjs/src/pro/toobit.js +1163 -0
  57. package/dist/cjs/src/pro/tradeogre.js +1 -1
  58. package/dist/cjs/src/toobit.js +2999 -0
  59. package/dist/cjs/src/tradeogre.js +1 -1
  60. package/dist/cjs/src/upbit.js +1 -0
  61. package/dist/cjs/src/wavesexchange.js +1 -0
  62. package/dist/cjs/src/yobit.js +1 -0
  63. package/dist/cjs/src/zaif.js +1 -0
  64. package/dist/cjs/src/zonda.js +1 -0
  65. package/js/ccxt.d.ts +8 -8
  66. package/js/ccxt.js +6 -6
  67. package/js/src/abstract/mexc.d.ts +1 -0
  68. package/js/src/abstract/myokx.d.ts +1 -0
  69. package/js/src/abstract/okx.d.ts +1 -0
  70. package/js/src/abstract/okxus.d.ts +1 -0
  71. package/js/src/abstract/toobit.d.ts +66 -0
  72. package/js/src/apex.js +2 -2
  73. package/js/src/backpack.js +1 -1
  74. package/js/src/base/Exchange.d.ts +9 -0
  75. package/js/src/base/Exchange.js +129 -2
  76. package/js/src/bigone.js +4 -4
  77. package/js/src/binance.d.ts +9 -0
  78. package/js/src/binance.js +82 -20
  79. package/js/src/bingx.js +5 -2
  80. package/js/src/bitbank.js +1 -0
  81. package/js/src/bitbns.js +1 -0
  82. package/js/src/bitflyer.js +1 -0
  83. package/js/src/bitget.js +16 -9
  84. package/js/src/bithumb.js +1 -0
  85. package/js/src/bitso.js +1 -0
  86. package/js/src/bitvavo.d.ts +0 -2
  87. package/js/src/bitvavo.js +27 -41
  88. package/js/src/blockchaincom.js +1 -0
  89. package/js/src/btcalpha.js +1 -0
  90. package/js/src/btcbox.js +1 -0
  91. package/js/src/btcmarkets.js +1 -0
  92. package/js/src/btcturk.js +1 -0
  93. package/js/src/bybit.d.ts +8 -0
  94. package/js/src/bybit.js +186 -127
  95. package/js/src/coinsph.js +4 -1
  96. package/js/src/cryptocom.js +6 -3
  97. package/js/src/deribit.js +3 -2
  98. package/js/src/digifinex.js +1 -1
  99. package/js/src/gate.d.ts +2 -2
  100. package/js/src/gate.js +9 -13
  101. package/js/src/gemini.js +5 -5
  102. package/js/src/htx.js +11 -1
  103. package/js/src/hyperliquid.js +3 -0
  104. package/js/src/independentreserve.js +1 -0
  105. package/js/src/indodax.js +17 -6
  106. package/js/src/kraken.d.ts +2 -2
  107. package/js/src/kraken.js +31 -8
  108. package/js/src/krakenfutures.js +1 -0
  109. package/js/src/kucoin.js +1 -2
  110. package/js/src/luno.js +4 -1
  111. package/js/src/mercado.js +1 -0
  112. package/js/src/mexc.d.ts +4 -1
  113. package/js/src/mexc.js +84 -37
  114. package/js/src/novadax.js +1 -0
  115. package/js/src/oceanex.js +1 -0
  116. package/js/src/okcoin.js +4 -1
  117. package/js/src/okx.js +52 -8
  118. package/js/src/phemex.js +1 -1
  119. package/js/src/pro/apex.js +8 -4
  120. package/js/src/pro/backpack.d.ts +1 -1
  121. package/js/src/pro/backpack.js +7 -5
  122. package/js/src/pro/binance.d.ts +24 -0
  123. package/js/src/pro/binance.js +150 -19
  124. package/js/src/pro/bingx.d.ts +53 -33
  125. package/js/src/pro/bingx.js +207 -221
  126. package/js/src/pro/bitget.d.ts +6 -0
  127. package/js/src/pro/bitget.js +332 -76
  128. package/js/src/pro/cex.js +1 -0
  129. package/js/src/pro/htx.js +1 -1
  130. package/js/src/pro/independentreserve.js +1 -0
  131. package/js/src/pro/mexc.js +23 -23
  132. package/js/src/pro/okx.d.ts +7 -1
  133. package/js/src/pro/okx.js +46 -10
  134. package/js/src/pro/toobit.d.ts +174 -0
  135. package/js/src/pro/toobit.js +1162 -0
  136. package/js/src/toobit.d.ts +456 -0
  137. package/js/src/toobit.js +2992 -0
  138. package/js/src/upbit.js +1 -0
  139. package/js/src/wavesexchange.js +1 -0
  140. package/js/src/yobit.js +1 -0
  141. package/js/src/zaif.js +1 -0
  142. package/js/src/zonda.js +1 -0
  143. package/package.json +1 -1
  144. package/dist/373.ccxt.browser.js +0 -7630
  145. package/dist/373.ccxt.browser.min.js +0 -1
  146. package/js/src/abstract/tradeogre.d.ts +0 -21
  147. package/js/src/pro/tradeogre.d.ts +0 -49
  148. package/js/src/pro/tradeogre.js +0 -278
  149. package/js/src/tradeogre.d.ts +0 -149
  150. package/js/src/tradeogre.js +0 -872
  151. /package/js/src/abstract/{tradeogre.js → toobit.js} +0 -0
package/js/src/bybit.js CHANGED
@@ -1236,6 +1236,9 @@ export default class bybit extends Exchange {
1236
1236
  },
1237
1237
  'spot': {
1238
1238
  'extends': 'default',
1239
+ 'fetchCurrencies': {
1240
+ 'private': true,
1241
+ },
1239
1242
  'createOrder': {
1240
1243
  'triggerPriceType': undefined,
1241
1244
  'triggerDirection': false,
@@ -1280,14 +1283,14 @@ export default class bybit extends Exchange {
1280
1283
  },
1281
1284
  });
1282
1285
  }
1286
+ /**
1287
+ * @method
1288
+ * @name bybit#enableDemoTrading
1289
+ * @description enables or disables demo trading mode
1290
+ * @see https://bybit-exchange.github.io/docs/v5/demo
1291
+ * @param {boolean} [enable] true if demo trading should be enabled, false otherwise
1292
+ */
1283
1293
  enableDemoTrading(enable) {
1284
- /**
1285
- * @method
1286
- * @name bybit#enableDemoTrading
1287
- * @description enables or disables demo trading mode
1288
- * @see https://bybit-exchange.github.io/docs/v5/demo
1289
- * @param {boolean} [enable] true if demo trading should be enabled, false otherwise
1290
- */
1291
1294
  if (this.isSandboxModeEnabled) {
1292
1295
  throw new NotSupported(this.id + ' demo trading does not support in sandbox environment');
1293
1296
  }
@@ -1595,10 +1598,10 @@ export default class bybit extends Exchange {
1595
1598
  */
1596
1599
  async fetchCurrencies(params = {}) {
1597
1600
  if (!this.checkRequiredCredentials(false)) {
1598
- return undefined;
1601
+ return {};
1599
1602
  }
1600
1603
  if (this.options['enableDemoTrading']) {
1601
- return undefined;
1604
+ return {};
1602
1605
  }
1603
1606
  const response = await this.privateGetV5AssetCoinQueryInfo(params);
1604
1607
  //
@@ -3007,6 +3010,44 @@ export default class bybit extends Exchange {
3007
3010
  // "seq": 34771365464
3008
3011
  // }
3009
3012
  //
3013
+ // watchMyTrades execution
3014
+ //
3015
+ // {
3016
+ // "category": "linear",
3017
+ // "symbol": "BTCUSDT",
3018
+ // "closedSize": "0",
3019
+ // "execFee": "0.0679239",
3020
+ // "execId": "135dbae5-cbed-5275-9290-3956bb2ed907",
3021
+ // "execPrice": "123498",
3022
+ // "execQty": "0.001",
3023
+ // "execType": "Trade",
3024
+ // "execValue": "123.498",
3025
+ // "feeRate": "0.00055",
3026
+ // "tradeIv": "",
3027
+ // "markIv": "",
3028
+ // "blockTradeId": "",
3029
+ // "markPrice": "122392",
3030
+ // "indexPrice": "",
3031
+ // "underlyingPrice": "",
3032
+ // "leavesQty": "0",
3033
+ // "orderId": "aee7453a-a100-465f-857a-3db780e9329a",
3034
+ // "orderLinkId": "",
3035
+ // "orderPrice": "123615.9",
3036
+ // "orderQty": "0.001",
3037
+ // "orderType": "Market",
3038
+ // "stopOrderType": "UNKNOWN",
3039
+ // "side": "Buy",
3040
+ // "execTime": "1757837580469",
3041
+ // "isLeverage": "0",
3042
+ // "isMaker": false,
3043
+ // "seq": 9517074055,
3044
+ // "marketUnit": "",
3045
+ // "execPnl": "0",
3046
+ // "createType": "CreateByUser",
3047
+ // "extraFees": [],
3048
+ // "feeCoin": "USDT"
3049
+ // }
3050
+ //
3010
3051
  const id = this.safeStringN(trade, ['execId', 'id', 'tradeId']);
3011
3052
  const marketId = this.safeString(trade, 'symbol');
3012
3053
  let marketType = ('createType' in trade) ? 'contract' : 'spot';
@@ -3081,7 +3122,7 @@ export default class bybit extends Exchange {
3081
3122
  }
3082
3123
  fee = {
3083
3124
  'cost': feeCostString,
3084
- 'currency': feeCurrencyCode,
3125
+ 'currency': this.safeString(trade, 'feeCoin', feeCurrencyCode),
3085
3126
  'rate': feeRateString,
3086
3127
  };
3087
3128
  }
@@ -3649,48 +3690,56 @@ export default class bybit extends Exchange {
3649
3690
  //
3650
3691
  // v5
3651
3692
  // {
3652
- // "orderId": "14bad3a1-6454-43d8-bcf2-5345896cf74d",
3653
- // "orderLinkId": "YLxaWKMiHU",
3654
- // "blockTradeId": "",
3655
3693
  // "symbol": "BTCUSDT",
3656
- // "price": "26864.40",
3657
- // "qty": "0.003",
3658
- // "side": "Buy",
3659
- // "isLeverage": "",
3660
- // "positionIdx": 1,
3661
- // "orderStatus": "Cancelled",
3694
+ // "orderType": "Market",
3695
+ // "orderLinkId": "",
3696
+ // "slLimitPrice": "0",
3697
+ // "orderId": "f5f2d355-9a11-4af3-9b83-aa1d6ab6ddfe",
3662
3698
  // "cancelType": "UNKNOWN",
3663
- // "rejectReason": "EC_PostOnlyWillTakeLiquidity",
3664
- // "avgPrice": "0",
3665
- // "leavesQty": "0.000",
3666
- // "leavesValue": "0",
3667
- // "cumExecQty": "0.000",
3668
- // "cumExecValue": "0",
3669
- // "cumExecFee": "0",
3670
- // "timeInForce": "PostOnly",
3671
- // "orderType": "Limit",
3672
- // "stopOrderType": "UNKNOWN",
3673
- // "orderIv": "",
3674
- // "triggerPrice": "0.00",
3675
- // "takeProfit": "0.00",
3676
- // "stopLoss": "0.00",
3677
- // "tpTriggerBy": "UNKNOWN",
3678
- // "slTriggerBy": "UNKNOWN",
3679
- // "triggerDirection": 0,
3680
- // "triggerBy": "UNKNOWN",
3681
- // "lastPriceOnCreated": "0.00",
3682
- // "reduceOnly": false,
3683
- // "closeOnTrigger": false,
3699
+ // "avgPrice": "122529.9",
3700
+ // "stopOrderType": "",
3701
+ // "lastPriceOnCreated": "123747.9",
3702
+ // "orderStatus": "Filled",
3703
+ // "createType": "CreateByUser",
3704
+ // "takeProfit": "",
3705
+ // "cumExecValue": "122.5299",
3706
+ // "tpslMode": "",
3684
3707
  // "smpType": "None",
3708
+ // "triggerDirection": 0,
3709
+ // "blockTradeId": "",
3710
+ // "cumFeeDetail": {
3711
+ // "USDT": "0.06739145"
3712
+ // },
3713
+ // "rejectReason": "EC_NoError",
3714
+ // "isLeverage": "",
3715
+ // "price": "120518",
3716
+ // "orderIv": "",
3717
+ // "createdTime": "1757837618905",
3718
+ // "tpTriggerBy": "",
3719
+ // "positionIdx": 0,
3720
+ // "timeInForce": "IOC",
3721
+ // "leavesValue": "0",
3722
+ // "updatedTime": "1757837618909",
3723
+ // "side": "Sell",
3685
3724
  // "smpGroup": 0,
3686
- // "smpOrderId": "",
3687
- // "tpslMode": "",
3688
- // "tpLimitPrice": "",
3689
- // "slLimitPrice": "",
3725
+ // "triggerPrice": "",
3726
+ // "tpLimitPrice": "0",
3727
+ // "cumExecFee": "0.06739145",
3728
+ // "slTriggerBy": "",
3729
+ // "leavesQty": "0",
3730
+ // "closeOnTrigger": false,
3731
+ // "slippageToleranceType": "UNKNOWN",
3690
3732
  // "placeType": "",
3691
- // "createdTime": "1684476068369",
3692
- // "updatedTime": "1684476068372"
3733
+ // "cumExecQty": "0.001",
3734
+ // "reduceOnly": true,
3735
+ // "qty": "0.001",
3736
+ // "stopLoss": "",
3737
+ // "smpOrderId": "",
3738
+ // "slippageTolerance": "0",
3739
+ // "triggerBy": "",
3740
+ // "extraFees": ""
3693
3741
  // }
3742
+ //
3694
3743
  // createOrders failed order
3695
3744
  // {
3696
3745
  // "category": "linear",
@@ -3748,33 +3797,13 @@ export default class bybit extends Exchange {
3748
3797
  const status = this.parseOrderStatus(rawStatus);
3749
3798
  const side = this.safeStringLower(order, 'side');
3750
3799
  let fee = undefined;
3751
- const feeCostString = this.safeString(order, 'cumExecFee');
3752
- if (feeCostString !== undefined) {
3753
- let feeCurrencyCode = undefined;
3754
- if (market['spot']) {
3755
- if (Precise.stringGt(feeCostString, '0')) {
3756
- if (side === 'buy') {
3757
- feeCurrencyCode = market['base'];
3758
- }
3759
- else {
3760
- feeCurrencyCode = market['quote'];
3761
- }
3762
- }
3763
- else {
3764
- if (side === 'buy') {
3765
- feeCurrencyCode = market['quote'];
3766
- }
3767
- else {
3768
- feeCurrencyCode = market['base'];
3769
- }
3770
- }
3771
- }
3772
- else {
3773
- feeCurrencyCode = market['inverse'] ? market['base'] : market['settle'];
3774
- }
3800
+ const cumFeeDetail = this.safeDict(order, 'cumFeeDetail', {});
3801
+ const feeCoins = Object.keys(cumFeeDetail);
3802
+ const feeCoinId = this.safeString(feeCoins, 0);
3803
+ if (feeCoinId !== undefined) {
3775
3804
  fee = {
3776
- 'cost': this.parseNumber(feeCostString),
3777
- 'currency': feeCurrencyCode,
3805
+ 'cost': this.safeNumber(cumFeeDetail, feeCoinId),
3806
+ 'currency': feeCoinId,
3778
3807
  };
3779
3808
  }
3780
3809
  let clientOrderId = this.safeString(order, 'orderLinkId');
@@ -5240,49 +5269,63 @@ export default class bybit extends Exchange {
5240
5269
  // "retCode": 0,
5241
5270
  // "retMsg": "OK",
5242
5271
  // "result": {
5243
- // "nextPageCursor": "03234de9-1332-41eb-b805-4a9f42c136a3%3A1672220109387%2C03234de9-1332-41eb-b805-4a9f42c136a3%3A1672220109387",
5272
+ // "nextPageCursor": "f5f2d355-9a11-4af3-9b83-aa1d6ab6ddfe%3A1757837618905%2Caee7453a-a100-465f-857a-3db780e9329a%3A1757837580469",
5244
5273
  // "category": "linear",
5245
5274
  // "list": [
5246
5275
  // {
5247
5276
  // "symbol": "BTCUSDT",
5248
- // "orderType": "Limit",
5249
- // "orderLinkId": "test-001",
5250
- // "orderId": "03234de9-1332-41eb-b805-4a9f42c136a3",
5251
- // "cancelType": "CancelByUser",
5252
- // "avgPrice": "0",
5253
- // "stopOrderType": "UNKNOWN",
5254
- // "lastPriceOnCreated": "16656.5",
5255
- // "orderStatus": "Cancelled",
5277
+ // "orderType": "Market",
5278
+ // "orderLinkId": "",
5279
+ // "slLimitPrice": "0",
5280
+ // "orderId": "f5f2d355-9a11-4af3-9b83-aa1d6ab6ddfe",
5281
+ // "cancelType": "UNKNOWN",
5282
+ // "avgPrice": "122529.9",
5283
+ // "stopOrderType": "",
5284
+ // "lastPriceOnCreated": "123747.9",
5285
+ // "orderStatus": "Filled",
5286
+ // "createType": "CreateByUser",
5256
5287
  // "takeProfit": "",
5257
- // "cumExecValue": "0",
5288
+ // "cumExecValue": "122.5299",
5289
+ // "tpslMode": "",
5290
+ // "smpType": "None",
5258
5291
  // "triggerDirection": 0,
5259
5292
  // "blockTradeId": "",
5260
- // "rejectReason": "EC_PerCancelRequest",
5293
+ // "cumFeeDetail": {
5294
+ // "USDT": "0.06739145"
5295
+ // },
5296
+ // "rejectReason": "EC_NoError",
5261
5297
  // "isLeverage": "",
5262
- // "price": "18000",
5298
+ // "price": "120518",
5263
5299
  // "orderIv": "",
5264
- // "createdTime": "1672220109387",
5265
- // "tpTriggerBy": "UNKNOWN",
5300
+ // "createdTime": "1757837618905",
5301
+ // "tpTriggerBy": "",
5266
5302
  // "positionIdx": 0,
5267
- // "timeInForce": "GoodTillCancel",
5303
+ // "timeInForce": "IOC",
5268
5304
  // "leavesValue": "0",
5269
- // "updatedTime": "1672220114123",
5305
+ // "updatedTime": "1757837618909",
5270
5306
  // "side": "Sell",
5307
+ // "smpGroup": 0,
5271
5308
  // "triggerPrice": "",
5272
- // "cumExecFee": "0",
5273
- // "slTriggerBy": "UNKNOWN",
5309
+ // "tpLimitPrice": "0",
5310
+ // "cumExecFee": "0.06739145",
5311
+ // "slTriggerBy": "",
5274
5312
  // "leavesQty": "0",
5275
5313
  // "closeOnTrigger": false,
5276
- // "cumExecQty": "0",
5277
- // "reduceOnly": false,
5278
- // "qty": "0.1",
5314
+ // "slippageToleranceType": "UNKNOWN",
5315
+ // "placeType": "",
5316
+ // "cumExecQty": "0.001",
5317
+ // "reduceOnly": true,
5318
+ // "qty": "0.001",
5279
5319
  // "stopLoss": "",
5280
- // "triggerBy": "UNKNOWN"
5281
- // }
5320
+ // "smpOrderId": "",
5321
+ // "slippageTolerance": "0",
5322
+ // "triggerBy": "",
5323
+ // "extraFees": ""
5324
+ // },
5282
5325
  // ]
5283
5326
  // },
5284
5327
  // "retExtInfo": {},
5285
- // "time": 1672221263862
5328
+ // "time": 1758187806376
5286
5329
  // }
5287
5330
  //
5288
5331
  const data = this.addPaginationCursorToResult(response);
@@ -5395,48 +5438,63 @@ export default class bybit extends Exchange {
5395
5438
  // "retCode": 0,
5396
5439
  // "retMsg": "OK",
5397
5440
  // "result": {
5398
- // "nextPageCursor": "1321052653536515584%3A1672217748287%2C1321052653536515584%3A1672217748287",
5399
- // "category": "spot",
5441
+ // "nextPageCursor": "f5f2d355-9a11-4af3-9b83-aa1d6ab6ddfe%3A1757837618905%2Caee7453a-a100-465f-857a-3db780e9329a%3A1757837580469",
5442
+ // "category": "linear",
5400
5443
  // "list": [
5401
5444
  // {
5402
- // "symbol": "ETHUSDT",
5403
- // "orderType": "Limit",
5404
- // "orderLinkId": "1672217748277652",
5405
- // "orderId": "1321052653536515584",
5445
+ // "symbol": "BTCUSDT",
5446
+ // "orderType": "Market",
5447
+ // "orderLinkId": "",
5448
+ // "slLimitPrice": "0",
5449
+ // "orderId": "f5f2d355-9a11-4af3-9b83-aa1d6ab6ddfe",
5406
5450
  // "cancelType": "UNKNOWN",
5407
- // "avgPrice": "",
5408
- // "stopOrderType": "tpslOrder",
5409
- // "lastPriceOnCreated": "",
5410
- // "orderStatus": "Cancelled",
5451
+ // "avgPrice": "122529.9",
5452
+ // "stopOrderType": "",
5453
+ // "lastPriceOnCreated": "123747.9",
5454
+ // "orderStatus": "Filled",
5455
+ // "createType": "CreateByUser",
5411
5456
  // "takeProfit": "",
5412
- // "cumExecValue": "0",
5457
+ // "cumExecValue": "122.5299",
5458
+ // "tpslMode": "",
5459
+ // "smpType": "None",
5413
5460
  // "triggerDirection": 0,
5414
- // "isLeverage": "0",
5415
- // "rejectReason": "",
5416
- // "price": "1000",
5461
+ // "blockTradeId": "",
5462
+ // "cumFeeDetail": {
5463
+ // "USDT": "0.06739145"
5464
+ // },
5465
+ // "rejectReason": "EC_NoError",
5466
+ // "isLeverage": "",
5467
+ // "price": "120518",
5417
5468
  // "orderIv": "",
5418
- // "createdTime": "1672217748287",
5469
+ // "createdTime": "1757837618905",
5419
5470
  // "tpTriggerBy": "",
5420
5471
  // "positionIdx": 0,
5421
- // "timeInForce": "GTC",
5422
- // "leavesValue": "500",
5423
- // "updatedTime": "1672217748287",
5424
- // "side": "Buy",
5425
- // "triggerPrice": "1500",
5426
- // "cumExecFee": "0",
5427
- // "leavesQty": "0",
5472
+ // "timeInForce": "IOC",
5473
+ // "leavesValue": "0",
5474
+ // "updatedTime": "1757837618909",
5475
+ // "side": "Sell",
5476
+ // "smpGroup": 0,
5477
+ // "triggerPrice": "",
5478
+ // "tpLimitPrice": "0",
5479
+ // "cumExecFee": "0.06739145",
5428
5480
  // "slTriggerBy": "",
5481
+ // "leavesQty": "0",
5429
5482
  // "closeOnTrigger": false,
5430
- // "cumExecQty": "0",
5431
- // "reduceOnly": false,
5432
- // "qty": "0.5",
5483
+ // "slippageToleranceType": "UNKNOWN",
5484
+ // "placeType": "",
5485
+ // "cumExecQty": "0.001",
5486
+ // "reduceOnly": true,
5487
+ // "qty": "0.001",
5433
5488
  // "stopLoss": "",
5434
- // "triggerBy": "1192.5"
5435
- // }
5489
+ // "smpOrderId": "",
5490
+ // "slippageTolerance": "0",
5491
+ // "triggerBy": "",
5492
+ // "extraFees": ""
5493
+ // },
5436
5494
  // ]
5437
5495
  // },
5438
5496
  // "retExtInfo": {},
5439
- // "time": 1672219526294
5497
+ // "time": 1758187806376
5440
5498
  // }
5441
5499
  //
5442
5500
  const data = this.addPaginationCursorToResult(response);
@@ -6180,6 +6238,7 @@ export default class bybit extends Exchange {
6180
6238
  * @param {string} address the address to withdraw to
6181
6239
  * @param {string} tag
6182
6240
  * @param {object} [params] extra parameters specific to the exchange API endpoint
6241
+ * @param {string} [params.accountType] 'UTA', 'FUND', 'FUND,UTA', and 'SPOT (for classic accounts only)
6183
6242
  * @returns {object} a [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
6184
6243
  */
6185
6244
  async withdraw(code, amount, address, tag = undefined, params = {}) {
@@ -6187,9 +6246,9 @@ export default class bybit extends Exchange {
6187
6246
  let accountType = undefined;
6188
6247
  const accounts = await this.isUnifiedEnabled();
6189
6248
  const isUta = accounts[1];
6190
- [accountType, params] = this.handleOptionAndParams(params, 'withdraw', 'accountType', 'SPOT');
6191
- if (isUta) {
6192
- accountType = 'UTA';
6249
+ [accountType, params] = this.handleOptionAndParams(params, 'withdraw', 'accountType');
6250
+ if (accountType === undefined) {
6251
+ accountType = isUta ? 'UTA' : 'SPOT';
6193
6252
  }
6194
6253
  await this.loadMarkets();
6195
6254
  this.checkAddress(address);
package/js/src/coinsph.js CHANGED
@@ -323,6 +323,9 @@ export default class coinsph extends Exchange {
323
323
  'features': {
324
324
  'spot': {
325
325
  'sandbox': false,
326
+ 'fetchCurrencies': {
327
+ 'private': true,
328
+ },
326
329
  'createOrder': {
327
330
  'marginMode': false,
328
331
  'triggerPrice': true,
@@ -518,7 +521,7 @@ export default class coinsph extends Exchange {
518
521
  */
519
522
  async fetchCurrencies(params = {}) {
520
523
  if (!this.checkRequiredCredentials(false)) {
521
- return undefined;
524
+ return {};
522
525
  }
523
526
  const response = await this.privateGetOpenapiWalletV1ConfigGetall(params);
524
527
  //
@@ -433,6 +433,9 @@ export default class cryptocom extends Exchange {
433
433
  },
434
434
  'spot': {
435
435
  'extends': 'default',
436
+ 'fetchCurrencies': {
437
+ 'private': true,
438
+ },
436
439
  },
437
440
  'swap': {
438
441
  'linear': {
@@ -527,13 +530,13 @@ export default class cryptocom extends Exchange {
527
530
  async fetchCurrencies(params = {}) {
528
531
  // this endpoint requires authentication
529
532
  if (!this.checkRequiredCredentials(false)) {
530
- return undefined;
533
+ return {};
531
534
  }
532
535
  let skipFetchCurrencies = false;
533
536
  [skipFetchCurrencies, params] = this.handleOptionAndParams(params, 'fetchCurrencies', 'skipFetchCurrencies', false);
534
537
  if (skipFetchCurrencies) {
535
538
  // sub-accounts can't access this endpoint
536
- return undefined;
539
+ return {};
537
540
  }
538
541
  let response = {};
539
542
  try {
@@ -543,7 +546,7 @@ export default class cryptocom extends Exchange {
543
546
  if (e instanceof ExchangeError) {
544
547
  // sub-accounts can't access this endpoint
545
548
  // {"code":"10001","msg":"SYS_ERROR"}
546
- return undefined;
549
+ return {};
547
550
  }
548
551
  throw e;
549
552
  // do nothing
package/js/src/deribit.js CHANGED
@@ -2705,8 +2705,9 @@ export default class deribit extends Exchange {
2705
2705
  'notional': this.parseNumber(notionalStringAbs),
2706
2706
  'leverage': this.safeInteger(position, 'leverage'),
2707
2707
  'unrealizedPnl': this.parseNumber(unrealizedPnl),
2708
- 'contracts': undefined,
2709
- 'contractSize': this.safeNumber(market, 'contractSize'),
2708
+ 'realizedPnl': this.safeNumber(position, 'realized_profit_loss'),
2709
+ 'contracts': this.safeNumber(position, 'size'),
2710
+ 'contractSize': this.safeNumber(position, 'contractSize'),
2710
2711
  'marginRatio': undefined,
2711
2712
  'liquidationPrice': this.safeNumber(position, 'estimated_liquidation_price'),
2712
2713
  'markPrice': this.safeNumber(position, 'mark_price'),
@@ -523,7 +523,7 @@ export default class digifinex extends Exchange {
523
523
  const networks = {};
524
524
  for (let j = 0; j < networkEntries.length; j++) {
525
525
  const networkEntry = networkEntries[j];
526
- const networkId = this.safeString(networkEntry, 'chain');
526
+ const networkId = this.safeString2(networkEntry, 'chain', 'currency');
527
527
  const networkCode = this.networkIdToCode(networkId);
528
528
  networks[networkCode] = {
529
529
  'id': networkId,
package/js/src/gate.d.ts CHANGED
@@ -63,8 +63,8 @@ export default class gate extends Exchange {
63
63
  contract: boolean;
64
64
  linear: boolean;
65
65
  inverse: boolean;
66
- taker: number;
67
- maker: number;
66
+ taker: any;
67
+ maker: any;
68
68
  contractSize: number;
69
69
  expiry: number;
70
70
  expiryDatetime: string;
package/js/src/gate.js CHANGED
@@ -1439,8 +1439,8 @@ export default class gate extends Exchange {
1439
1439
  // "leverage_min": "1",
1440
1440
  // "leverage_max": "100",
1441
1441
  // "risk_limit_max": "8000000",
1442
- // "maker_fee_rate": "-0.00025",
1443
- // "taker_fee_rate": "0.00075",
1442
+ // "maker_fee_rate": "-0.00025", // not actual value for regular users
1443
+ // "taker_fee_rate": "0.00075", // not actual value for regular users
1444
1444
  // "funding_rate": "0.002053",
1445
1445
  // "order_size_max": 1000000,
1446
1446
  // "funding_next_apply": 1610035200,
@@ -1484,8 +1484,8 @@ export default class gate extends Exchange {
1484
1484
  // "risk_limit_base": "140.726652109199",
1485
1485
  // "risk_limit_step": "1000000",
1486
1486
  // "risk_limit_max": "8000000",
1487
- // "maker_fee_rate": "-0.00025",
1488
- // "taker_fee_rate": "0.00075",
1487
+ // "maker_fee_rate": "-0.00025", // not actual value for regular users
1488
+ // "taker_fee_rate": "0.00075", // not actual value for regular users
1489
1489
  // "ref_discount_rate": "0",
1490
1490
  // "ref_rebate_rate": "0.2",
1491
1491
  // "order_price_deviate": "0.5",
@@ -1524,8 +1524,6 @@ export default class gate extends Exchange {
1524
1524
  const maxMultiplier = Precise.stringAdd('1', priceDeviate);
1525
1525
  const minPrice = Precise.stringMul(minMultiplier, markPrice);
1526
1526
  const maxPrice = Precise.stringMul(maxMultiplier, markPrice);
1527
- const takerPercent = this.safeString(market, 'taker_fee_rate');
1528
- const makerPercent = this.safeString(market, 'maker_fee_rate', takerPercent);
1529
1527
  const isLinear = quote === settle;
1530
1528
  let contractSize = this.safeString(market, 'quanto_multiplier');
1531
1529
  // exception only for one market: https://api.gateio.ws/api/v4/futures/btc/contracts
@@ -1551,8 +1549,8 @@ export default class gate extends Exchange {
1551
1549
  'contract': true,
1552
1550
  'linear': isLinear,
1553
1551
  'inverse': !isLinear,
1554
- 'taker': this.parseNumber(Precise.stringDiv(takerPercent, '100')),
1555
- 'maker': this.parseNumber(Precise.stringDiv(makerPercent, '100')),
1552
+ 'taker': undefined,
1553
+ 'maker': undefined,
1556
1554
  'contractSize': this.parseNumber(contractSize),
1557
1555
  'expiry': expiry,
1558
1556
  'expiryDatetime': this.iso8601(expiry),
@@ -1651,8 +1649,6 @@ export default class gate extends Exchange {
1651
1649
  const maxMultiplier = Precise.stringAdd('1', priceDeviate);
1652
1650
  const minPrice = Precise.stringMul(minMultiplier, markPrice);
1653
1651
  const maxPrice = Precise.stringMul(maxMultiplier, markPrice);
1654
- const takerPercent = this.safeString(market, 'taker_fee_rate');
1655
- const makerPercent = this.safeString(market, 'maker_fee_rate', takerPercent);
1656
1652
  result.push({
1657
1653
  'id': id,
1658
1654
  'symbol': symbol,
@@ -1672,8 +1668,8 @@ export default class gate extends Exchange {
1672
1668
  'contract': true,
1673
1669
  'linear': true,
1674
1670
  'inverse': false,
1675
- 'taker': this.parseNumber(Precise.stringDiv(takerPercent, '100')),
1676
- 'maker': this.parseNumber(Precise.stringDiv(makerPercent, '100')),
1671
+ 'taker': undefined,
1672
+ 'maker': undefined,
1677
1673
  'contractSize': this.parseNumber('1'),
1678
1674
  'expiry': expiry,
1679
1675
  'expiryDatetime': this.iso8601(expiry),
@@ -1869,7 +1865,7 @@ export default class gate extends Exchange {
1869
1865
  // sandbox/testnet only supports future markets
1870
1866
  const apiBackup = this.safeValue(this.urls, 'apiBackup');
1871
1867
  if (apiBackup !== undefined) {
1872
- return undefined;
1868
+ return {};
1873
1869
  }
1874
1870
  const response = await this.publicSpotGetCurrencies(params);
1875
1871
  //
package/js/src/gemini.js CHANGED
@@ -383,7 +383,7 @@ export default class gemini extends Exchange {
383
383
  async fetchCurrenciesFromWeb(params = {}) {
384
384
  const data = await this.fetchWebEndpoint('fetchCurrencies', 'webExchangeGet', true, '="currencyData">', '</script>');
385
385
  if (data === undefined) {
386
- return undefined;
386
+ return {};
387
387
  }
388
388
  //
389
389
  // {
@@ -665,9 +665,9 @@ export default class gemini extends Exchange {
665
665
  const indexedTradingPairs = this.indexBy(tradingPairs, 0);
666
666
  for (let i = 0; i < marketIds.length; i++) {
667
667
  const marketId = marketIds[i];
668
- const tradingPair = this.safeList(indexedTradingPairs, marketId.toUpperCase());
669
- if (tradingPair !== undefined && !this.inArray(tradingPair, brokenPairs)) {
670
- result.push(this.parseMarket(tradingPair));
668
+ const pairInfo = this.safeList(indexedTradingPairs, marketId.toUpperCase());
669
+ if (pairInfo !== undefined && !this.inArray(marketId, brokenPairs)) {
670
+ result.push(this.parseMarket(pairInfo));
671
671
  }
672
672
  }
673
673
  }
@@ -1452,7 +1452,7 @@ export default class gemini extends Exchange {
1452
1452
  // "is_hidden":false,
1453
1453
  // "was_forced":false,
1454
1454
  // "executed_amount":"0",
1455
- // "client_order_id":"1650398445709",
1455
+ // "client_order_id":"1650398445701",
1456
1456
  // "options":[],
1457
1457
  // "price":"2000.00",
1458
1458
  // "original_amount":"0.01",