ccxt 4.5.39 → 4.5.41

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 (138) hide show
  1. package/README.md +6 -5
  2. package/dist/ccxt.browser.min.js +18 -18
  3. package/dist/cjs/ccxt.js +6 -1
  4. package/dist/cjs/src/abstract/lighter.js +11 -0
  5. package/dist/cjs/src/ascendex.js +73 -1
  6. package/dist/cjs/src/base/Exchange.js +211 -22
  7. package/dist/cjs/src/base/functions/generic.js +1 -0
  8. package/dist/cjs/src/base/functions/io.js +160 -0
  9. package/dist/cjs/src/base/functions.js +6 -0
  10. package/dist/cjs/src/base/ws/Client.js +1 -0
  11. package/dist/cjs/src/base/ws/WsClient.js +1 -0
  12. package/dist/cjs/src/binance.js +143 -0
  13. package/dist/cjs/src/bingx.js +150 -123
  14. package/dist/cjs/src/bitmart.js +20 -6
  15. package/dist/cjs/src/bitmex.js +436 -0
  16. package/dist/cjs/src/blofin.js +86 -1
  17. package/dist/cjs/src/bybit.js +135 -0
  18. package/dist/cjs/src/coinspot.js +7 -2
  19. package/dist/cjs/src/delta.js +367 -0
  20. package/dist/cjs/src/gate.js +11 -4
  21. package/dist/cjs/src/gemini.js +76 -1
  22. package/dist/cjs/src/htx.js +266 -3
  23. package/dist/cjs/src/hyperliquid.js +20 -7
  24. package/dist/cjs/src/independentreserve.js +7 -7
  25. package/dist/cjs/src/kraken.js +1 -1
  26. package/dist/cjs/src/krakenfutures.js +96 -5
  27. package/dist/cjs/src/kucoin.js +3 -3
  28. package/dist/cjs/src/kucoinfutures.js +121 -0
  29. package/dist/cjs/src/lighter.js +2931 -0
  30. package/dist/cjs/src/mexc.js +9 -2
  31. package/dist/cjs/src/phemex.js +359 -0
  32. package/dist/cjs/src/poloniex.js +5 -0
  33. package/dist/cjs/src/pro/binance.js +2 -2
  34. package/dist/cjs/src/pro/bingx.js +248 -35
  35. package/dist/cjs/src/pro/bitget.js +49 -90
  36. package/dist/cjs/src/pro/bitmart.js +68 -0
  37. package/dist/cjs/src/pro/blofin.js +52 -1
  38. package/dist/cjs/src/pro/coinbaseinternational.js +5 -2
  39. package/dist/cjs/src/pro/defx.js +1 -1
  40. package/dist/cjs/src/pro/kucoinfutures.js +1 -1
  41. package/dist/cjs/src/pro/lighter.js +787 -0
  42. package/dist/cjs/src/pro/mexc.js +73 -1
  43. package/dist/cjs/src/pro/okx.js +7 -4
  44. package/dist/cjs/src/pro/paradex.js +138 -1
  45. package/dist/cjs/src/pro/woo.js +43 -0
  46. package/dist/cjs/src/static_dependencies/ethers/abi-coder.js +1 -0
  47. package/dist/cjs/src/static_dependencies/ethers/address/address.js +1 -0
  48. package/dist/cjs/src/static_dependencies/ethers/coders/abstract-coder.js +1 -0
  49. package/dist/cjs/src/static_dependencies/ethers/coders/address.js +1 -0
  50. package/dist/cjs/src/static_dependencies/ethers/coders/array.js +1 -0
  51. package/dist/cjs/src/static_dependencies/ethers/coders/bytes.js +1 -0
  52. package/dist/cjs/src/static_dependencies/ethers/coders/fixed-bytes.js +1 -0
  53. package/dist/cjs/src/static_dependencies/ethers/coders/number.js +1 -0
  54. package/dist/cjs/src/static_dependencies/ethers/fragments.js +1 -0
  55. package/dist/cjs/src/static_dependencies/ethers/index.js +1 -0
  56. package/dist/cjs/src/static_dependencies/ethers/interface.js +1 -0
  57. package/dist/cjs/src/static_dependencies/ethers/typed.js +1 -0
  58. package/dist/cjs/src/static_dependencies/ethers/utils/index.js +1 -0
  59. package/dist/cjs/src/whitebit.js +118 -16
  60. package/dist/cjs/src/woo.js +103 -3
  61. package/js/ccxt.d.ts +9 -3
  62. package/js/ccxt.js +6 -2
  63. package/js/src/abstract/gemini.d.ts +27 -0
  64. package/js/src/abstract/lighter.d.ts +53 -0
  65. package/js/src/abstract/lighter.js +5 -0
  66. package/js/src/ascendex.d.ts +12 -1
  67. package/js/src/ascendex.js +73 -1
  68. package/js/src/base/Exchange.d.ts +29 -14
  69. package/js/src/base/Exchange.js +216 -23
  70. package/js/src/base/functions/generic.js +1 -0
  71. package/js/src/base/functions/io.d.ts +32 -0
  72. package/js/src/base/functions/io.js +131 -0
  73. package/js/src/base/functions.d.ts +1 -0
  74. package/js/src/base/functions.js +1 -0
  75. package/js/src/base/types.d.ts +9 -0
  76. package/js/src/binance.d.ts +27 -1
  77. package/js/src/binance.js +143 -0
  78. package/js/src/bingx.d.ts +113 -108
  79. package/js/src/bingx.js +150 -123
  80. package/js/src/bitmart.js +20 -6
  81. package/js/src/bitmex.d.ts +50 -1
  82. package/js/src/bitmex.js +436 -0
  83. package/js/src/blofin.d.ts +12 -1
  84. package/js/src/blofin.js +86 -1
  85. package/js/src/bybit.d.ts +12 -1
  86. package/js/src/bybit.js +135 -0
  87. package/js/src/coinspot.js +7 -2
  88. package/js/src/delta.d.ts +12 -1
  89. package/js/src/delta.js +367 -0
  90. package/js/src/gate.d.ts +1 -0
  91. package/js/src/gate.js +11 -4
  92. package/js/src/gemini.d.ts +11 -0
  93. package/js/src/gemini.js +76 -1
  94. package/js/src/htx.d.ts +15 -1
  95. package/js/src/htx.js +266 -3
  96. package/js/src/hyperliquid.js +20 -7
  97. package/js/src/independentreserve.js +7 -7
  98. package/js/src/kraken.js +1 -1
  99. package/js/src/krakenfutures.d.ts +1 -1
  100. package/js/src/krakenfutures.js +96 -5
  101. package/js/src/kucoin.d.ts +3 -3
  102. package/js/src/kucoin.js +3 -3
  103. package/js/src/kucoinfutures.d.ts +12 -1
  104. package/js/src/kucoinfutures.js +121 -0
  105. package/js/src/lighter.d.ts +424 -0
  106. package/js/src/lighter.js +2924 -0
  107. package/js/src/mexc.js +9 -2
  108. package/js/src/phemex.d.ts +16 -1
  109. package/js/src/phemex.js +359 -0
  110. package/js/src/poloniex.js +5 -0
  111. package/js/src/pro/binance.js +2 -2
  112. package/js/src/pro/bingx.d.ts +50 -34
  113. package/js/src/pro/bingx.js +249 -36
  114. package/js/src/pro/bitget.d.ts +6 -6
  115. package/js/src/pro/bitget.js +49 -90
  116. package/js/src/pro/bitmart.d.ts +22 -1
  117. package/js/src/pro/bitmart.js +69 -1
  118. package/js/src/pro/blofin.d.ts +12 -1
  119. package/js/src/pro/blofin.js +52 -1
  120. package/js/src/pro/coinbaseinternational.d.ts +2 -2
  121. package/js/src/pro/coinbaseinternational.js +6 -3
  122. package/js/src/pro/defx.js +1 -1
  123. package/js/src/pro/kucoinfutures.js +1 -1
  124. package/js/src/pro/lighter.d.ts +161 -0
  125. package/js/src/pro/lighter.js +780 -0
  126. package/js/src/pro/mexc.d.ts +22 -1
  127. package/js/src/pro/mexc.js +73 -1
  128. package/js/src/pro/okx.d.ts +4 -4
  129. package/js/src/pro/okx.js +7 -4
  130. package/js/src/pro/paradex.d.ts +23 -1
  131. package/js/src/pro/paradex.js +138 -1
  132. package/js/src/pro/woo.d.ts +12 -1
  133. package/js/src/pro/woo.js +43 -0
  134. package/js/src/whitebit.d.ts +2 -1
  135. package/js/src/whitebit.js +118 -16
  136. package/js/src/woo.d.ts +12 -1
  137. package/js/src/woo.js +103 -3
  138. package/package.json +1 -1
@@ -1045,6 +1045,15 @@ class krakenfutures extends krakenfutures$1["default"] {
1045
1045
  takerOrMaker = 'taker';
1046
1046
  }
1047
1047
  }
1048
+ let fee = undefined;
1049
+ if ((takerOrMaker !== undefined) && (cost !== undefined)) {
1050
+ const feeRate = this.safeString(market, takerOrMaker);
1051
+ fee = {
1052
+ 'cost': Precise["default"].stringMul(cost, feeRate),
1053
+ 'currency': this.safeString(market, 'quote'),
1054
+ 'rate': feeRate,
1055
+ };
1056
+ }
1048
1057
  return this.safeTrade({
1049
1058
  'info': trade,
1050
1059
  'id': id,
@@ -1058,7 +1067,7 @@ class krakenfutures extends krakenfutures$1["default"] {
1058
1067
  'price': price,
1059
1068
  'amount': linear ? amount : undefined,
1060
1069
  'cost': cost,
1061
- 'fee': undefined,
1070
+ 'fee': fee,
1062
1071
  });
1063
1072
  }
1064
1073
  createOrderRequest(symbol, type, side, amount, price = undefined, params = {}) {
@@ -1181,6 +1190,41 @@ class krakenfutures extends krakenfutures$1["default"] {
1181
1190
  // "serverTime": "2022-02-28T19:32:17.122Z"
1182
1191
  // }
1183
1192
  //
1193
+ // MARKET
1194
+ //
1195
+ // {
1196
+ // "result": "success",
1197
+ // "serverTime": "2026-03-02T06:10:31.955Z",
1198
+ // "sendStatus": {
1199
+ // "status": "placed",
1200
+ // "order_id": "a133a4f9-254d-4806-8176-9acc936b6944",
1201
+ // "receivedTime": "2026-03-02T06:10:31.954Z",
1202
+ // "orderEvents": [
1203
+ // {
1204
+ // "type": "EXECUTION",
1205
+ // "executionId": "403bf49f-dbbe-448b-8de7-fd3cf38cc5dd",
1206
+ // "price": 66596.0,
1207
+ // "amount": 0.001,
1208
+ // "orderPriorEdit": null,
1209
+ // "orderPriorExecution": {
1210
+ // "orderId": "a133a4f9-254d-4806-8176-9acc936b6944",
1211
+ // "cliOrdId": null,
1212
+ // "type": "ioc",
1213
+ // "symbol": "PF_XBTUSD",
1214
+ // "side": "buy",
1215
+ // "quantity": 0.001,
1216
+ // "filled": 0,
1217
+ // "limitPrice": 67261.000,
1218
+ // "reduceOnly": false,
1219
+ // "timestamp": "2026-03-02T06:10:31.954Z",
1220
+ // "lastUpdateTimestamp": "2026-03-02T06:10:31.954Z"
1221
+ // },
1222
+ // "takerReducedQuantity": null
1223
+ // }
1224
+ // ]
1225
+ // }
1226
+ // }
1227
+ //
1184
1228
  const sendStatus = this.safeValue(response, 'sendStatus');
1185
1229
  const status = this.safeString(sendStatus, 'status');
1186
1230
  this.verifyOrderActionSuccess(status, 'createOrder', ['filled']);
@@ -1462,8 +1506,8 @@ class krakenfutures extends krakenfutures$1["default"] {
1462
1506
  /**
1463
1507
  * @method
1464
1508
  * @name krakenfutures#fetchOrders
1465
- * @see https://docs.kraken.com/api/docs/futures-api/trading/get-order-status/
1466
1509
  * @description Gets all orders for an account from the exchange api
1510
+ * @see https://docs.kraken.com/api/docs/futures-api/trading/get-order-status/
1467
1511
  * @param {string} symbol Unified market symbol
1468
1512
  * @param {int} [since] Timestamp (ms) of earliest order. (Not used by kraken api but filtered internally by CCXT)
1469
1513
  * @param {int} [limit] How many orders to return. (Not used by kraken api but filtered internally by CCXT)
@@ -1721,6 +1765,37 @@ class krakenfutures extends krakenfutures$1["default"] {
1721
1765
  // ]
1722
1766
  // }
1723
1767
  //
1768
+ // MARKET
1769
+ //
1770
+ // {
1771
+ // "status": "placed",
1772
+ // "order_id": "a133a4f9-254d-4806-8176-9acc936b6944",
1773
+ // "receivedTime": "2026-03-02T06:10:31.954Z",
1774
+ // "orderEvents": [
1775
+ // {
1776
+ // "type": "EXECUTION",
1777
+ // "executionId": "403bf49f-dbbe-448b-8de7-fd3cf38cc5dd",
1778
+ // "price": 66596.0,
1779
+ // "amount": 0.001,
1780
+ // "orderPriorEdit": null,
1781
+ // "orderPriorExecution": {
1782
+ // "orderId": "a133a4f9-254d-4806-8176-9acc936b6944",
1783
+ // "cliOrdId": null,
1784
+ // "type": "ioc",
1785
+ // "symbol": "PF_XBTUSD",
1786
+ // "side": "buy",
1787
+ // "quantity": 0.001,
1788
+ // "filled": 0,
1789
+ // "limitPrice": 67261.000,
1790
+ // "reduceOnly": false,
1791
+ // "timestamp": "2026-03-02T06:10:31.954Z",
1792
+ // "lastUpdateTimestamp": "2026-03-02T06:10:31.954Z"
1793
+ // },
1794
+ // "takerReducedQuantity": null
1795
+ // }
1796
+ // ]
1797
+ // }
1798
+ //
1724
1799
  // CONDITIONAL
1725
1800
  //
1726
1801
  // {
@@ -1964,6 +2039,10 @@ class krakenfutures extends krakenfutures$1["default"] {
1964
2039
  //
1965
2040
  const datetime = this.safeString(orderDictFromFetchOrder, 'timestamp');
1966
2041
  const innerStatus = this.safeString(order, 'status');
2042
+ let filledOrder = this.safeString(orderDictFromFetchOrder, 'filled', '0');
2043
+ if ((filledOrder === '0') || (filledOrder === '0.0')) {
2044
+ filledOrder = undefined;
2045
+ }
1967
2046
  return this.safeOrder({
1968
2047
  'info': order,
1969
2048
  'id': this.safeString(orderDictFromFetchOrder, 'orderId'),
@@ -1983,7 +2062,7 @@ class krakenfutures extends krakenfutures$1["default"] {
1983
2062
  'amount': this.safeString(orderDictFromFetchOrder, 'quantity'),
1984
2063
  'cost': undefined,
1985
2064
  'average': undefined,
1986
- 'filled': this.safeString(orderDictFromFetchOrder, 'filled'),
2065
+ 'filled': filledOrder,
1987
2066
  'remaining': undefined,
1988
2067
  'status': this.parseOrderStatus(innerStatus),
1989
2068
  'fee': undefined,
@@ -2020,9 +2099,15 @@ class krakenfutures extends krakenfutures$1["default"] {
2020
2099
  fixed = true;
2021
2100
  }
2022
2101
  else if (!fixed) {
2102
+ const executedPrice = this.safeString(item, 'price');
2023
2103
  const orderPriorExecution = this.safeValue(item, 'orderPriorExecution');
2024
2104
  details = this.safeValue2(item, 'orderPriorExecution', 'orderPriorEdit');
2025
- price = this.safeString(orderPriorExecution, 'limitPrice');
2105
+ if (executedPrice === undefined) {
2106
+ price = this.safeString(orderPriorExecution, 'limitPrice');
2107
+ }
2108
+ else {
2109
+ price = executedPrice;
2110
+ }
2026
2111
  if (details !== undefined) {
2027
2112
  isPrior = true;
2028
2113
  }
@@ -2117,6 +2202,11 @@ class krakenfutures extends krakenfutures$1["default"] {
2117
2202
  symbol = this.safeSymbol(this.safeString(details, 'tradeable'), market);
2118
2203
  }
2119
2204
  const ts = this.safeInteger(details, 'timestamp', timestamp);
2205
+ const priceTriggerOptions = this.safeDict(details, 'priceTriggerOptions', {});
2206
+ let triggerPrice = this.safeString2(details, 'triggerPrice', 'stopPrice');
2207
+ if (triggerPrice === undefined) {
2208
+ triggerPrice = this.safeString(priceTriggerOptions, 'triggerPrice');
2209
+ }
2120
2210
  return this.safeOrder({
2121
2211
  'info': order,
2122
2212
  'id': id,
@@ -2132,7 +2222,8 @@ class krakenfutures extends krakenfutures$1["default"] {
2132
2222
  'reduceOnly': this.safeBool2(details, 'reduceOnly', 'reduce_only'),
2133
2223
  'side': this.safeStringLower2(details, 'side', 'direction'),
2134
2224
  'price': price,
2135
- 'triggerPrice': this.safeString(details, 'triggerPrice'),
2225
+ 'triggerPrice': triggerPrice,
2226
+ 'stopPrice': triggerPrice,
2136
2227
  'amount': amount,
2137
2228
  'cost': cost,
2138
2229
  'average': average,
@@ -3204,7 +3204,7 @@ class kucoin extends kucoin$1["default"] {
3204
3204
  * @param {object} [params] extra parameters specific to the exchange API endpoint
3205
3205
  * @param {bool} [params.trigger] *invalid for isolated margin* true if cancelling all stop orders
3206
3206
  * @param {string} [params.marginMode] 'cross' or 'isolated'
3207
- * @param {string} [params.orderIds] *stop orders only* Comma seperated order IDs
3207
+ * @param {string} [params.orderIds] *stop orders only* Comma separated order IDs
3208
3208
  * @param {bool} [params.hf] false, // true for hf order
3209
3209
  * @returns Response from the exchange
3210
3210
  */
@@ -3260,7 +3260,7 @@ class kucoin extends kucoin$1["default"] {
3260
3260
  * @param {string} [params.type] limit, market, limit_stop or market_stop
3261
3261
  * @param {string} [params.tradeType] TRADE for spot trading, MARGIN_TRADE for Margin Trading
3262
3262
  * @param {int} [params.currentPage] *trigger orders only* current page
3263
- * @param {string} [params.orderIds] *trigger orders only* comma seperated order ID list
3263
+ * @param {string} [params.orderIds] *trigger orders only* comma separated order ID list
3264
3264
  * @param {bool} [params.trigger] True if fetching a trigger order
3265
3265
  * @param {bool} [params.hf] false, // true for hf order
3266
3266
  * @returns An [array of order structures]{@link https://docs.ccxt.com/?id=order-structure}
@@ -3415,7 +3415,7 @@ class kucoin extends kucoin$1["default"] {
3415
3415
  * @param {string} [params.type] limit, market, limit_stop or market_stop
3416
3416
  * @param {string} [params.tradeType] TRADE for spot trading, MARGIN_TRADE for Margin Trading
3417
3417
  * @param {int} [params.currentPage] *trigger orders only* current page
3418
- * @param {string} [params.orderIds] *trigger orders only* comma seperated order ID list
3418
+ * @param {string} [params.orderIds] *trigger orders only* comma separated order ID list
3419
3419
  * @param {bool} [params.hf] false, // true for hf order
3420
3420
  * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
3421
3421
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/?id=order-structure}
@@ -89,9 +89,11 @@ class kucoinfutures extends kucoinfutures$1["default"] {
89
89
  'fetchOrder': true,
90
90
  'fetchOrderBook': true,
91
91
  'fetchPosition': true,
92
+ 'fetchPositionADLRank': true,
92
93
  'fetchPositionHistory': false,
93
94
  'fetchPositionMode': false,
94
95
  'fetchPositions': true,
96
+ 'fetchPositionsADLRank': true,
95
97
  'fetchPositionsHistory': true,
96
98
  'fetchPremiumIndexOHLCV': false,
97
99
  'fetchStatus': true,
@@ -3428,6 +3430,125 @@ class kucoinfutures extends kucoinfutures$1["default"] {
3428
3430
  'shortLeverage': leverageNum,
3429
3431
  };
3430
3432
  }
3433
+ /**
3434
+ * @method
3435
+ * @name kucoinfutures#fetchPositionsADLRank
3436
+ * @description fetches the auto deleveraging rank and risk percentage for a list of symbols
3437
+ * @see https://www.kucoin.com/docs-new/rest/futures-trading/positions/get-position-list
3438
+ * @param {string[]} [symbols] list of unified market symbols
3439
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
3440
+ * @returns {object[]} an array of [auto de leverage structures]{@link https://docs.ccxt.com/?id=auto-de-leverage-structure}
3441
+ */
3442
+ async fetchPositionsADLRank(symbols = undefined, params = {}) {
3443
+ await this.loadMarkets();
3444
+ symbols = this.marketSymbols(symbols, undefined, true, true, true);
3445
+ const response = await this.futuresPrivateGetPositions(params);
3446
+ //
3447
+ // {
3448
+ // "code": "200000",
3449
+ // "data": [
3450
+ // {
3451
+ // "id": "600000000001260912",
3452
+ // "symbol": "XBTUSDTM",
3453
+ // "crossMode": true,
3454
+ // "maintMarginReq": 0.0040000133,
3455
+ // "delevPercentage": 0.0,
3456
+ // "openingTimestamp": 1768481882915,
3457
+ // "currentTimestamp": 1768481897988,
3458
+ // "currentQty": 1,
3459
+ // "currentCost": 96.9768,
3460
+ // "currentComm": 0.05818608,
3461
+ // "unrealisedCost": 96.9768,
3462
+ // "realisedGrossCost": 0.0,
3463
+ // "realisedCost": 0.05818608,
3464
+ // "isOpen": true,
3465
+ // "markPrice": 96985.6,
3466
+ // "markValue": 96.9856,
3467
+ // "posCost": 96.9768,
3468
+ // "posInit": 4.84884,
3469
+ // "posMargin": 4.84928,
3470
+ // "posMaint": 0.38794369,
3471
+ // "realisedGrossPnl": 0.0,
3472
+ // "realisedPnl": -0.05818608,
3473
+ // "unrealisedPnl": 0.0088,
3474
+ // "unrealisedPnlPcnt": 1.0E-4,
3475
+ // "unrealisedRoePcnt": 0.0018,
3476
+ // "avgEntryPrice": 96976.8,
3477
+ // "liquidationPrice": 52351.69,
3478
+ // "bankruptPrice": 52110.87,
3479
+ // "settleCurrency": "USDT",
3480
+ // "isInverse": false,
3481
+ // "maintainMargin": 0.0040000133,
3482
+ // "marginMode": "CROSS",
3483
+ // "positionSide": "LONG",
3484
+ // "leverage": 20,
3485
+ // "dealComm": -0.05818608,
3486
+ // "fundingFee": 0,
3487
+ // "tax": 0
3488
+ // }
3489
+ // ]
3490
+ // }
3491
+ //
3492
+ const data = this.safeList(response, 'data', []);
3493
+ return this.parseADLRanks(data, symbols);
3494
+ }
3495
+ parseADLRank(info, market = undefined) {
3496
+ //
3497
+ // fetchPositionsADLRank
3498
+ //
3499
+ // {
3500
+ // "id": "600000000001260912",
3501
+ // "symbol": "XBTUSDTM",
3502
+ // "crossMode": true,
3503
+ // "maintMarginReq": 0.0040000133,
3504
+ // "delevPercentage": 0.0,
3505
+ // "openingTimestamp": 1768481882915,
3506
+ // "currentTimestamp": 1768481897988,
3507
+ // "currentQty": 1,
3508
+ // "currentCost": 96.9768,
3509
+ // "currentComm": 0.05818608,
3510
+ // "unrealisedCost": 96.9768,
3511
+ // "realisedGrossCost": 0.0,
3512
+ // "realisedCost": 0.05818608,
3513
+ // "isOpen": true,
3514
+ // "markPrice": 96985.6,
3515
+ // "markValue": 96.9856,
3516
+ // "posCost": 96.9768,
3517
+ // "posInit": 4.84884,
3518
+ // "posMargin": 4.84928,
3519
+ // "posMaint": 0.38794369,
3520
+ // "realisedGrossPnl": 0.0,
3521
+ // "realisedPnl": -0.05818608,
3522
+ // "unrealisedPnl": 0.0088,
3523
+ // "unrealisedPnlPcnt": 1.0E-4,
3524
+ // "unrealisedRoePcnt": 0.0018,
3525
+ // "avgEntryPrice": 96976.8,
3526
+ // "liquidationPrice": 52351.69,
3527
+ // "bankruptPrice": 52110.87,
3528
+ // "settleCurrency": "USDT",
3529
+ // "isInverse": false,
3530
+ // "maintainMargin": 0.0040000133,
3531
+ // "marginMode": "CROSS",
3532
+ // "positionSide": "LONG",
3533
+ // "leverage": 20,
3534
+ // "dealComm": -0.05818608,
3535
+ // "fundingFee": 0,
3536
+ // "tax": 0
3537
+ // }
3538
+ //
3539
+ const marketId = this.safeString(info, 'symbol');
3540
+ const timestamp = this.safeInteger(info, 'openingTimestamp');
3541
+ const percentage = this.safeString(info, 'delevPercentage');
3542
+ return {
3543
+ 'info': info,
3544
+ 'symbol': this.safeSymbol(marketId, market, undefined, 'contract'),
3545
+ 'rank': undefined,
3546
+ 'rating': undefined,
3547
+ 'percentage': this.parseNumber(Precise["default"].stringMul(percentage, '100')),
3548
+ 'timestamp': timestamp,
3549
+ 'datetime': this.iso8601(timestamp),
3550
+ };
3551
+ }
3431
3552
  }
3432
3553
 
3433
3554
  exports["default"] = kucoinfutures;