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
@@ -382,26 +382,12 @@ class bitvavo extends bitvavo$1["default"] {
382
382
  'operatorId': undefined,
383
383
  'fiatCurrencies': ['EUR'], // only fiat atm
384
384
  },
385
- 'precisionMode': number.SIGNIFICANT_DIGITS,
385
+ 'precisionMode': number.TICK_SIZE,
386
386
  'commonCurrencies': {
387
387
  'MIOTA': 'IOTA', // https://github.com/ccxt/ccxt/issues/7487
388
388
  },
389
389
  });
390
390
  }
391
- amountToPrecision(symbol, amount) {
392
- // https://docs.bitfinex.com/docs/introduction#amount-precision
393
- // The amount field allows up to 8 decimals.
394
- // Anything exceeding this will be rounded to the 8th decimal.
395
- return this.decimalToPrecision(amount, number.TRUNCATE, this.markets[symbol]['precision']['amount'], number.DECIMAL_PLACES);
396
- }
397
- priceToPrecision(symbol, price) {
398
- price = this.decimalToPrecision(price, number.ROUND, this.markets[symbol]['precision']['price'], this.precisionMode);
399
- // https://docs.bitfinex.com/docs/introduction#price-precision
400
- // The precision level of all trading prices is based on significant figures.
401
- // All pairs on Bitfinex use up to 5 significant digits and up to 8 decimals (e.g. 1.2345, 123.45, 1234.5, 0.00012345).
402
- // Prices submit with a precision larger than 5 will be cut by the API.
403
- return this.decimalToPrecision(price, number.TRUNCATE, 8, number.DECIMAL_PLACES);
404
- }
405
391
  /**
406
392
  * @method
407
393
  * @name bitvavo#fetchTime
@@ -427,24 +413,27 @@ class bitvavo extends bitvavo$1["default"] {
427
413
  async fetchMarkets(params = {}) {
428
414
  const response = await this.publicGetMarkets(params);
429
415
  //
430
- // [
431
- // {
432
- // "market":"ADA-BTC",
433
- // "status":"trading", // "trading" "halted" "auction"
434
- // "base":"ADA",
435
- // "quote":"BTC",
436
- // "pricePrecision":5,
437
- // "minOrderInBaseAsset":"100",
438
- // "minOrderInQuoteAsset":"0.001",
439
- // "orderTypes": [ "market", "limit" ]
440
- // }
441
- // ]
416
+ // {
417
+ // "market": "BTC-EUR",
418
+ // "status": "trading",
419
+ // "base": "BTC",
420
+ // "quote": "EUR",
421
+ // "pricePrecision": "0", // deprecated, this is mostly 0 across other markets too, which is abnormal, so we ignore this.
422
+ // "tickSize": "1.00",
423
+ // "minOrderInBaseAsset": "0.00006100",
424
+ // "minOrderInQuoteAsset": "5.00",
425
+ // "maxOrderInBaseAsset": "1000000000.00000000",
426
+ // "maxOrderInQuoteAsset": "1000000000.00",
427
+ // "quantityDecimals": "8",
428
+ // "notionalDecimals": "2",
429
+ // "maxOpenOrders": "100",
430
+ // "feeCategory": "A",
431
+ // "orderTypes": [ "market", "limit", "stopLoss", "stopLossLimit", "takeProfit", "takeProfitLimit" ]
432
+ // }
442
433
  //
443
434
  return this.parseMarkets(response);
444
435
  }
445
436
  parseMarkets(markets) {
446
- const currencies = this.currencies;
447
- const currenciesById = this.indexBy(currencies, 'id');
448
437
  const result = [];
449
438
  const fees = this.fees;
450
439
  for (let i = 0; i < markets.length; i++) {
@@ -455,8 +444,6 @@ class bitvavo extends bitvavo$1["default"] {
455
444
  const base = this.safeCurrencyCode(baseId);
456
445
  const quote = this.safeCurrencyCode(quoteId);
457
446
  const status = this.safeString(market, 'status');
458
- const baseCurrency = this.safeValue(currenciesById, baseId);
459
- const basePrecision = this.safeInteger(baseCurrency, 'precision');
460
447
  result.push(this.safeMarketStructure({
461
448
  'id': id,
462
449
  'symbol': base + '/' + quote,
@@ -484,8 +471,9 @@ class bitvavo extends bitvavo$1["default"] {
484
471
  'taker': fees['trading']['taker'],
485
472
  'maker': fees['trading']['maker'],
486
473
  'precision': {
487
- 'amount': this.safeInteger(baseCurrency, 'decimals', basePrecision),
488
- 'price': this.safeInteger(market, 'pricePrecision'),
474
+ 'amount': this.parseNumber(this.parsePrecision(this.safeString(market, 'quantityDecimals'))),
475
+ 'price': this.safeNumber(market, 'tickSize'),
476
+ 'cost': this.parseNumber(this.parsePrecision(this.safeString(market, 'notionalDecimals'))),
489
477
  },
490
478
  'limits': {
491
479
  'leverage': {
@@ -494,7 +482,7 @@ class bitvavo extends bitvavo$1["default"] {
494
482
  },
495
483
  'amount': {
496
484
  'min': this.safeNumber(market, 'minOrderInBaseAsset'),
497
- 'max': undefined,
485
+ 'max': this.safeNumber(market, 'maxOrderInBaseAsset'),
498
486
  },
499
487
  'price': {
500
488
  'min': undefined,
@@ -502,7 +490,7 @@ class bitvavo extends bitvavo$1["default"] {
502
490
  },
503
491
  'cost': {
504
492
  'min': this.safeNumber(market, 'minOrderInQuoteAsset'),
505
- 'max': undefined,
493
+ 'max': this.safeNumber(market, 'maxOrderInQuoteAsset'),
506
494
  },
507
495
  },
508
496
  'created': undefined,
@@ -603,7 +591,7 @@ class bitvavo extends bitvavo$1["default"] {
603
591
  const withdrawal = this.safeString(currency, 'withdrawalStatus') === 'OK';
604
592
  const active = deposit && withdrawal;
605
593
  const withdrawFee = this.safeNumber(currency, 'withdrawalFee');
606
- const precision = this.safeInteger(currency, 'decimals', 8);
594
+ const precision = this.safeString(currency, 'decimals', '8');
607
595
  const minWithdraw = this.safeNumber(currency, 'withdrawalMinAmount');
608
596
  // btw, absolutely all of them have 1 network atm
609
597
  for (let j = 0; j < networksArray.length; j++) {
@@ -617,7 +605,7 @@ class bitvavo extends bitvavo$1["default"] {
617
605
  'deposit': deposit,
618
606
  'withdraw': withdrawal,
619
607
  'fee': withdrawFee,
620
- 'precision': precision,
608
+ 'precision': this.parseNumber(this.parsePrecision(precision)),
621
609
  'limits': {
622
610
  'withdraw': {
623
611
  'min': minWithdraw,
@@ -636,7 +624,7 @@ class bitvavo extends bitvavo$1["default"] {
636
624
  'withdraw': withdrawal,
637
625
  'networks': networks,
638
626
  'fee': withdrawFee,
639
- 'precision': precision,
627
+ 'precision': undefined,
640
628
  'type': isFiat ? 'fiat' : 'crypto',
641
629
  'limits': {
642
630
  'amount': {
@@ -654,8 +642,6 @@ class bitvavo extends bitvavo$1["default"] {
654
642
  },
655
643
  });
656
644
  }
657
- // set currencies here to avoid calling publicGetAssets twice
658
- this.currencies = this.mapToSafeMap(this.deepExtend(this.currencies, result));
659
645
  return result;
660
646
  }
661
647
  /**
@@ -39,6 +39,7 @@ class blockchaincom extends blockchaincom$1["default"] {
39
39
  'fetchBalance': true,
40
40
  'fetchCanceledOrders': true,
41
41
  'fetchClosedOrders': true,
42
+ 'fetchCurrencies': false,
42
43
  'fetchDeposit': true,
43
44
  'fetchDepositAddress': true,
44
45
  'fetchDepositAddresses': false,
@@ -54,6 +54,7 @@ class btcalpha extends btcalpha$1["default"] {
54
54
  'fetchClosedOrders': true,
55
55
  'fetchCrossBorrowRate': false,
56
56
  'fetchCrossBorrowRates': false,
57
+ 'fetchCurrencies': false,
57
58
  'fetchDeposit': false,
58
59
  'fetchDepositAddress': false,
59
60
  'fetchDepositAddresses': false,
@@ -52,6 +52,7 @@ class btcbox extends btcbox$1["default"] {
52
52
  'fetchBorrowRatesPerSymbol': false,
53
53
  'fetchCrossBorrowRate': false,
54
54
  'fetchCrossBorrowRates': false,
55
+ 'fetchCurrencies': false,
55
56
  'fetchFundingHistory': false,
56
57
  'fetchFundingInterval': false,
57
58
  'fetchFundingIntervals': false,
@@ -54,6 +54,7 @@ class btcmarkets extends btcmarkets$1["default"] {
54
54
  'fetchClosedOrders': 'emulated',
55
55
  'fetchCrossBorrowRate': false,
56
56
  'fetchCrossBorrowRates': false,
57
+ 'fetchCurrencies': false,
57
58
  'fetchDepositAddress': false,
58
59
  'fetchDepositAddresses': false,
59
60
  'fetchDepositAddressesByNetwork': false,
@@ -51,6 +51,7 @@ class btcturk extends btcturk$1["default"] {
51
51
  'fetchBorrowRatesPerSymbol': false,
52
52
  'fetchCrossBorrowRate': false,
53
53
  'fetchCrossBorrowRates': false,
54
+ 'fetchCurrencies': false,
54
55
  'fetchDepositAddress': false,
55
56
  'fetchDepositAddresses': false,
56
57
  'fetchDepositAddressesByNetwork': false,
@@ -1241,6 +1241,9 @@ class bybit extends bybit$1["default"] {
1241
1241
  },
1242
1242
  'spot': {
1243
1243
  'extends': 'default',
1244
+ 'fetchCurrencies': {
1245
+ 'private': true,
1246
+ },
1244
1247
  'createOrder': {
1245
1248
  'triggerPriceType': undefined,
1246
1249
  'triggerDirection': false,
@@ -1285,14 +1288,14 @@ class bybit extends bybit$1["default"] {
1285
1288
  },
1286
1289
  });
1287
1290
  }
1291
+ /**
1292
+ * @method
1293
+ * @name bybit#enableDemoTrading
1294
+ * @description enables or disables demo trading mode
1295
+ * @see https://bybit-exchange.github.io/docs/v5/demo
1296
+ * @param {boolean} [enable] true if demo trading should be enabled, false otherwise
1297
+ */
1288
1298
  enableDemoTrading(enable) {
1289
- /**
1290
- * @method
1291
- * @name bybit#enableDemoTrading
1292
- * @description enables or disables demo trading mode
1293
- * @see https://bybit-exchange.github.io/docs/v5/demo
1294
- * @param {boolean} [enable] true if demo trading should be enabled, false otherwise
1295
- */
1296
1299
  if (this.isSandboxModeEnabled) {
1297
1300
  throw new errors.NotSupported(this.id + ' demo trading does not support in sandbox environment');
1298
1301
  }
@@ -1600,10 +1603,10 @@ class bybit extends bybit$1["default"] {
1600
1603
  */
1601
1604
  async fetchCurrencies(params = {}) {
1602
1605
  if (!this.checkRequiredCredentials(false)) {
1603
- return undefined;
1606
+ return {};
1604
1607
  }
1605
1608
  if (this.options['enableDemoTrading']) {
1606
- return undefined;
1609
+ return {};
1607
1610
  }
1608
1611
  const response = await this.privateGetV5AssetCoinQueryInfo(params);
1609
1612
  //
@@ -3012,6 +3015,44 @@ class bybit extends bybit$1["default"] {
3012
3015
  // "seq": 34771365464
3013
3016
  // }
3014
3017
  //
3018
+ // watchMyTrades execution
3019
+ //
3020
+ // {
3021
+ // "category": "linear",
3022
+ // "symbol": "BTCUSDT",
3023
+ // "closedSize": "0",
3024
+ // "execFee": "0.0679239",
3025
+ // "execId": "135dbae5-cbed-5275-9290-3956bb2ed907",
3026
+ // "execPrice": "123498",
3027
+ // "execQty": "0.001",
3028
+ // "execType": "Trade",
3029
+ // "execValue": "123.498",
3030
+ // "feeRate": "0.00055",
3031
+ // "tradeIv": "",
3032
+ // "markIv": "",
3033
+ // "blockTradeId": "",
3034
+ // "markPrice": "122392",
3035
+ // "indexPrice": "",
3036
+ // "underlyingPrice": "",
3037
+ // "leavesQty": "0",
3038
+ // "orderId": "aee7453a-a100-465f-857a-3db780e9329a",
3039
+ // "orderLinkId": "",
3040
+ // "orderPrice": "123615.9",
3041
+ // "orderQty": "0.001",
3042
+ // "orderType": "Market",
3043
+ // "stopOrderType": "UNKNOWN",
3044
+ // "side": "Buy",
3045
+ // "execTime": "1757837580469",
3046
+ // "isLeverage": "0",
3047
+ // "isMaker": false,
3048
+ // "seq": 9517074055,
3049
+ // "marketUnit": "",
3050
+ // "execPnl": "0",
3051
+ // "createType": "CreateByUser",
3052
+ // "extraFees": [],
3053
+ // "feeCoin": "USDT"
3054
+ // }
3055
+ //
3015
3056
  const id = this.safeStringN(trade, ['execId', 'id', 'tradeId']);
3016
3057
  const marketId = this.safeString(trade, 'symbol');
3017
3058
  let marketType = ('createType' in trade) ? 'contract' : 'spot';
@@ -3086,7 +3127,7 @@ class bybit extends bybit$1["default"] {
3086
3127
  }
3087
3128
  fee = {
3088
3129
  'cost': feeCostString,
3089
- 'currency': feeCurrencyCode,
3130
+ 'currency': this.safeString(trade, 'feeCoin', feeCurrencyCode),
3090
3131
  'rate': feeRateString,
3091
3132
  };
3092
3133
  }
@@ -3654,48 +3695,56 @@ class bybit extends bybit$1["default"] {
3654
3695
  //
3655
3696
  // v5
3656
3697
  // {
3657
- // "orderId": "14bad3a1-6454-43d8-bcf2-5345896cf74d",
3658
- // "orderLinkId": "YLxaWKMiHU",
3659
- // "blockTradeId": "",
3660
3698
  // "symbol": "BTCUSDT",
3661
- // "price": "26864.40",
3662
- // "qty": "0.003",
3663
- // "side": "Buy",
3664
- // "isLeverage": "",
3665
- // "positionIdx": 1,
3666
- // "orderStatus": "Cancelled",
3699
+ // "orderType": "Market",
3700
+ // "orderLinkId": "",
3701
+ // "slLimitPrice": "0",
3702
+ // "orderId": "f5f2d355-9a11-4af3-9b83-aa1d6ab6ddfe",
3667
3703
  // "cancelType": "UNKNOWN",
3668
- // "rejectReason": "EC_PostOnlyWillTakeLiquidity",
3669
- // "avgPrice": "0",
3670
- // "leavesQty": "0.000",
3671
- // "leavesValue": "0",
3672
- // "cumExecQty": "0.000",
3673
- // "cumExecValue": "0",
3674
- // "cumExecFee": "0",
3675
- // "timeInForce": "PostOnly",
3676
- // "orderType": "Limit",
3677
- // "stopOrderType": "UNKNOWN",
3678
- // "orderIv": "",
3679
- // "triggerPrice": "0.00",
3680
- // "takeProfit": "0.00",
3681
- // "stopLoss": "0.00",
3682
- // "tpTriggerBy": "UNKNOWN",
3683
- // "slTriggerBy": "UNKNOWN",
3684
- // "triggerDirection": 0,
3685
- // "triggerBy": "UNKNOWN",
3686
- // "lastPriceOnCreated": "0.00",
3687
- // "reduceOnly": false,
3688
- // "closeOnTrigger": false,
3704
+ // "avgPrice": "122529.9",
3705
+ // "stopOrderType": "",
3706
+ // "lastPriceOnCreated": "123747.9",
3707
+ // "orderStatus": "Filled",
3708
+ // "createType": "CreateByUser",
3709
+ // "takeProfit": "",
3710
+ // "cumExecValue": "122.5299",
3711
+ // "tpslMode": "",
3689
3712
  // "smpType": "None",
3713
+ // "triggerDirection": 0,
3714
+ // "blockTradeId": "",
3715
+ // "cumFeeDetail": {
3716
+ // "USDT": "0.06739145"
3717
+ // },
3718
+ // "rejectReason": "EC_NoError",
3719
+ // "isLeverage": "",
3720
+ // "price": "120518",
3721
+ // "orderIv": "",
3722
+ // "createdTime": "1757837618905",
3723
+ // "tpTriggerBy": "",
3724
+ // "positionIdx": 0,
3725
+ // "timeInForce": "IOC",
3726
+ // "leavesValue": "0",
3727
+ // "updatedTime": "1757837618909",
3728
+ // "side": "Sell",
3690
3729
  // "smpGroup": 0,
3691
- // "smpOrderId": "",
3692
- // "tpslMode": "",
3693
- // "tpLimitPrice": "",
3694
- // "slLimitPrice": "",
3730
+ // "triggerPrice": "",
3731
+ // "tpLimitPrice": "0",
3732
+ // "cumExecFee": "0.06739145",
3733
+ // "slTriggerBy": "",
3734
+ // "leavesQty": "0",
3735
+ // "closeOnTrigger": false,
3736
+ // "slippageToleranceType": "UNKNOWN",
3695
3737
  // "placeType": "",
3696
- // "createdTime": "1684476068369",
3697
- // "updatedTime": "1684476068372"
3738
+ // "cumExecQty": "0.001",
3739
+ // "reduceOnly": true,
3740
+ // "qty": "0.001",
3741
+ // "stopLoss": "",
3742
+ // "smpOrderId": "",
3743
+ // "slippageTolerance": "0",
3744
+ // "triggerBy": "",
3745
+ // "extraFees": ""
3698
3746
  // }
3747
+ //
3699
3748
  // createOrders failed order
3700
3749
  // {
3701
3750
  // "category": "linear",
@@ -3753,33 +3802,13 @@ class bybit extends bybit$1["default"] {
3753
3802
  const status = this.parseOrderStatus(rawStatus);
3754
3803
  const side = this.safeStringLower(order, 'side');
3755
3804
  let fee = undefined;
3756
- const feeCostString = this.safeString(order, 'cumExecFee');
3757
- if (feeCostString !== undefined) {
3758
- let feeCurrencyCode = undefined;
3759
- if (market['spot']) {
3760
- if (Precise["default"].stringGt(feeCostString, '0')) {
3761
- if (side === 'buy') {
3762
- feeCurrencyCode = market['base'];
3763
- }
3764
- else {
3765
- feeCurrencyCode = market['quote'];
3766
- }
3767
- }
3768
- else {
3769
- if (side === 'buy') {
3770
- feeCurrencyCode = market['quote'];
3771
- }
3772
- else {
3773
- feeCurrencyCode = market['base'];
3774
- }
3775
- }
3776
- }
3777
- else {
3778
- feeCurrencyCode = market['inverse'] ? market['base'] : market['settle'];
3779
- }
3805
+ const cumFeeDetail = this.safeDict(order, 'cumFeeDetail', {});
3806
+ const feeCoins = Object.keys(cumFeeDetail);
3807
+ const feeCoinId = this.safeString(feeCoins, 0);
3808
+ if (feeCoinId !== undefined) {
3780
3809
  fee = {
3781
- 'cost': this.parseNumber(feeCostString),
3782
- 'currency': feeCurrencyCode,
3810
+ 'cost': this.safeNumber(cumFeeDetail, feeCoinId),
3811
+ 'currency': feeCoinId,
3783
3812
  };
3784
3813
  }
3785
3814
  let clientOrderId = this.safeString(order, 'orderLinkId');
@@ -5245,49 +5274,63 @@ class bybit extends bybit$1["default"] {
5245
5274
  // "retCode": 0,
5246
5275
  // "retMsg": "OK",
5247
5276
  // "result": {
5248
- // "nextPageCursor": "03234de9-1332-41eb-b805-4a9f42c136a3%3A1672220109387%2C03234de9-1332-41eb-b805-4a9f42c136a3%3A1672220109387",
5277
+ // "nextPageCursor": "f5f2d355-9a11-4af3-9b83-aa1d6ab6ddfe%3A1757837618905%2Caee7453a-a100-465f-857a-3db780e9329a%3A1757837580469",
5249
5278
  // "category": "linear",
5250
5279
  // "list": [
5251
5280
  // {
5252
5281
  // "symbol": "BTCUSDT",
5253
- // "orderType": "Limit",
5254
- // "orderLinkId": "test-001",
5255
- // "orderId": "03234de9-1332-41eb-b805-4a9f42c136a3",
5256
- // "cancelType": "CancelByUser",
5257
- // "avgPrice": "0",
5258
- // "stopOrderType": "UNKNOWN",
5259
- // "lastPriceOnCreated": "16656.5",
5260
- // "orderStatus": "Cancelled",
5282
+ // "orderType": "Market",
5283
+ // "orderLinkId": "",
5284
+ // "slLimitPrice": "0",
5285
+ // "orderId": "f5f2d355-9a11-4af3-9b83-aa1d6ab6ddfe",
5286
+ // "cancelType": "UNKNOWN",
5287
+ // "avgPrice": "122529.9",
5288
+ // "stopOrderType": "",
5289
+ // "lastPriceOnCreated": "123747.9",
5290
+ // "orderStatus": "Filled",
5291
+ // "createType": "CreateByUser",
5261
5292
  // "takeProfit": "",
5262
- // "cumExecValue": "0",
5293
+ // "cumExecValue": "122.5299",
5294
+ // "tpslMode": "",
5295
+ // "smpType": "None",
5263
5296
  // "triggerDirection": 0,
5264
5297
  // "blockTradeId": "",
5265
- // "rejectReason": "EC_PerCancelRequest",
5298
+ // "cumFeeDetail": {
5299
+ // "USDT": "0.06739145"
5300
+ // },
5301
+ // "rejectReason": "EC_NoError",
5266
5302
  // "isLeverage": "",
5267
- // "price": "18000",
5303
+ // "price": "120518",
5268
5304
  // "orderIv": "",
5269
- // "createdTime": "1672220109387",
5270
- // "tpTriggerBy": "UNKNOWN",
5305
+ // "createdTime": "1757837618905",
5306
+ // "tpTriggerBy": "",
5271
5307
  // "positionIdx": 0,
5272
- // "timeInForce": "GoodTillCancel",
5308
+ // "timeInForce": "IOC",
5273
5309
  // "leavesValue": "0",
5274
- // "updatedTime": "1672220114123",
5310
+ // "updatedTime": "1757837618909",
5275
5311
  // "side": "Sell",
5312
+ // "smpGroup": 0,
5276
5313
  // "triggerPrice": "",
5277
- // "cumExecFee": "0",
5278
- // "slTriggerBy": "UNKNOWN",
5314
+ // "tpLimitPrice": "0",
5315
+ // "cumExecFee": "0.06739145",
5316
+ // "slTriggerBy": "",
5279
5317
  // "leavesQty": "0",
5280
5318
  // "closeOnTrigger": false,
5281
- // "cumExecQty": "0",
5282
- // "reduceOnly": false,
5283
- // "qty": "0.1",
5319
+ // "slippageToleranceType": "UNKNOWN",
5320
+ // "placeType": "",
5321
+ // "cumExecQty": "0.001",
5322
+ // "reduceOnly": true,
5323
+ // "qty": "0.001",
5284
5324
  // "stopLoss": "",
5285
- // "triggerBy": "UNKNOWN"
5286
- // }
5325
+ // "smpOrderId": "",
5326
+ // "slippageTolerance": "0",
5327
+ // "triggerBy": "",
5328
+ // "extraFees": ""
5329
+ // },
5287
5330
  // ]
5288
5331
  // },
5289
5332
  // "retExtInfo": {},
5290
- // "time": 1672221263862
5333
+ // "time": 1758187806376
5291
5334
  // }
5292
5335
  //
5293
5336
  const data = this.addPaginationCursorToResult(response);
@@ -5400,48 +5443,63 @@ class bybit extends bybit$1["default"] {
5400
5443
  // "retCode": 0,
5401
5444
  // "retMsg": "OK",
5402
5445
  // "result": {
5403
- // "nextPageCursor": "1321052653536515584%3A1672217748287%2C1321052653536515584%3A1672217748287",
5404
- // "category": "spot",
5446
+ // "nextPageCursor": "f5f2d355-9a11-4af3-9b83-aa1d6ab6ddfe%3A1757837618905%2Caee7453a-a100-465f-857a-3db780e9329a%3A1757837580469",
5447
+ // "category": "linear",
5405
5448
  // "list": [
5406
5449
  // {
5407
- // "symbol": "ETHUSDT",
5408
- // "orderType": "Limit",
5409
- // "orderLinkId": "1672217748277652",
5410
- // "orderId": "1321052653536515584",
5450
+ // "symbol": "BTCUSDT",
5451
+ // "orderType": "Market",
5452
+ // "orderLinkId": "",
5453
+ // "slLimitPrice": "0",
5454
+ // "orderId": "f5f2d355-9a11-4af3-9b83-aa1d6ab6ddfe",
5411
5455
  // "cancelType": "UNKNOWN",
5412
- // "avgPrice": "",
5413
- // "stopOrderType": "tpslOrder",
5414
- // "lastPriceOnCreated": "",
5415
- // "orderStatus": "Cancelled",
5456
+ // "avgPrice": "122529.9",
5457
+ // "stopOrderType": "",
5458
+ // "lastPriceOnCreated": "123747.9",
5459
+ // "orderStatus": "Filled",
5460
+ // "createType": "CreateByUser",
5416
5461
  // "takeProfit": "",
5417
- // "cumExecValue": "0",
5462
+ // "cumExecValue": "122.5299",
5463
+ // "tpslMode": "",
5464
+ // "smpType": "None",
5418
5465
  // "triggerDirection": 0,
5419
- // "isLeverage": "0",
5420
- // "rejectReason": "",
5421
- // "price": "1000",
5466
+ // "blockTradeId": "",
5467
+ // "cumFeeDetail": {
5468
+ // "USDT": "0.06739145"
5469
+ // },
5470
+ // "rejectReason": "EC_NoError",
5471
+ // "isLeverage": "",
5472
+ // "price": "120518",
5422
5473
  // "orderIv": "",
5423
- // "createdTime": "1672217748287",
5474
+ // "createdTime": "1757837618905",
5424
5475
  // "tpTriggerBy": "",
5425
5476
  // "positionIdx": 0,
5426
- // "timeInForce": "GTC",
5427
- // "leavesValue": "500",
5428
- // "updatedTime": "1672217748287",
5429
- // "side": "Buy",
5430
- // "triggerPrice": "1500",
5431
- // "cumExecFee": "0",
5432
- // "leavesQty": "0",
5477
+ // "timeInForce": "IOC",
5478
+ // "leavesValue": "0",
5479
+ // "updatedTime": "1757837618909",
5480
+ // "side": "Sell",
5481
+ // "smpGroup": 0,
5482
+ // "triggerPrice": "",
5483
+ // "tpLimitPrice": "0",
5484
+ // "cumExecFee": "0.06739145",
5433
5485
  // "slTriggerBy": "",
5486
+ // "leavesQty": "0",
5434
5487
  // "closeOnTrigger": false,
5435
- // "cumExecQty": "0",
5436
- // "reduceOnly": false,
5437
- // "qty": "0.5",
5488
+ // "slippageToleranceType": "UNKNOWN",
5489
+ // "placeType": "",
5490
+ // "cumExecQty": "0.001",
5491
+ // "reduceOnly": true,
5492
+ // "qty": "0.001",
5438
5493
  // "stopLoss": "",
5439
- // "triggerBy": "1192.5"
5440
- // }
5494
+ // "smpOrderId": "",
5495
+ // "slippageTolerance": "0",
5496
+ // "triggerBy": "",
5497
+ // "extraFees": ""
5498
+ // },
5441
5499
  // ]
5442
5500
  // },
5443
5501
  // "retExtInfo": {},
5444
- // "time": 1672219526294
5502
+ // "time": 1758187806376
5445
5503
  // }
5446
5504
  //
5447
5505
  const data = this.addPaginationCursorToResult(response);
@@ -6185,6 +6243,7 @@ class bybit extends bybit$1["default"] {
6185
6243
  * @param {string} address the address to withdraw to
6186
6244
  * @param {string} tag
6187
6245
  * @param {object} [params] extra parameters specific to the exchange API endpoint
6246
+ * @param {string} [params.accountType] 'UTA', 'FUND', 'FUND,UTA', and 'SPOT (for classic accounts only)
6188
6247
  * @returns {object} a [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
6189
6248
  */
6190
6249
  async withdraw(code, amount, address, tag = undefined, params = {}) {
@@ -6192,9 +6251,9 @@ class bybit extends bybit$1["default"] {
6192
6251
  let accountType = undefined;
6193
6252
  const accounts = await this.isUnifiedEnabled();
6194
6253
  const isUta = accounts[1];
6195
- [accountType, params] = this.handleOptionAndParams(params, 'withdraw', 'accountType', 'SPOT');
6196
- if (isUta) {
6197
- accountType = 'UTA';
6254
+ [accountType, params] = this.handleOptionAndParams(params, 'withdraw', 'accountType');
6255
+ if (accountType === undefined) {
6256
+ accountType = isUta ? 'UTA' : 'SPOT';
6198
6257
  }
6199
6258
  await this.loadMarkets();
6200
6259
  this.checkAddress(address);