ccxt 4.5.40 → 4.5.42

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 (106) 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 +149 -17
  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 +1 -0
  13. package/dist/cjs/src/bingx.js +13 -3
  14. package/dist/cjs/src/bitmex.js +20 -0
  15. package/dist/cjs/src/blofin.js +2 -2
  16. package/dist/cjs/src/bybit.js +1 -1
  17. package/dist/cjs/src/coinspot.js +7 -2
  18. package/dist/cjs/src/delta.js +1 -1
  19. package/dist/cjs/src/gate.js +11 -4
  20. package/dist/cjs/src/gemini.js +76 -1
  21. package/dist/cjs/src/htx.js +2 -2
  22. package/dist/cjs/src/hyperliquid.js +20 -7
  23. package/dist/cjs/src/independentreserve.js +7 -7
  24. package/dist/cjs/src/kraken.js +1 -1
  25. package/dist/cjs/src/krakenfutures.js +96 -5
  26. package/dist/cjs/src/kucoin.js +3 -3
  27. package/dist/cjs/src/kucoinfutures.js +1 -1
  28. package/dist/cjs/src/lighter.js +2931 -0
  29. package/dist/cjs/src/mexc.js +0 -1
  30. package/dist/cjs/src/phemex.js +1 -1
  31. package/dist/cjs/src/pro/binance.js +2 -2
  32. package/dist/cjs/src/pro/bingx.js +215 -2
  33. package/dist/cjs/src/pro/bitget.js +1 -0
  34. package/dist/cjs/src/pro/defx.js +1 -1
  35. package/dist/cjs/src/pro/kucoinfutures.js +1 -1
  36. package/dist/cjs/src/pro/lighter.js +787 -0
  37. package/dist/cjs/src/pro/mexc.js +1 -1
  38. package/dist/cjs/src/pro/paradex.js +1 -1
  39. package/dist/cjs/src/static_dependencies/ethers/abi-coder.js +1 -0
  40. package/dist/cjs/src/static_dependencies/ethers/address/address.js +1 -0
  41. package/dist/cjs/src/static_dependencies/ethers/coders/abstract-coder.js +1 -0
  42. package/dist/cjs/src/static_dependencies/ethers/coders/address.js +1 -0
  43. package/dist/cjs/src/static_dependencies/ethers/coders/array.js +1 -0
  44. package/dist/cjs/src/static_dependencies/ethers/coders/bytes.js +1 -0
  45. package/dist/cjs/src/static_dependencies/ethers/coders/fixed-bytes.js +1 -0
  46. package/dist/cjs/src/static_dependencies/ethers/coders/number.js +1 -0
  47. package/dist/cjs/src/static_dependencies/ethers/fragments.js +1 -0
  48. package/dist/cjs/src/static_dependencies/ethers/index.js +1 -0
  49. package/dist/cjs/src/static_dependencies/ethers/interface.js +1 -0
  50. package/dist/cjs/src/static_dependencies/ethers/typed.js +1 -0
  51. package/dist/cjs/src/static_dependencies/ethers/utils/index.js +1 -0
  52. package/dist/cjs/src/whitebit.js +118 -16
  53. package/dist/cjs/src/woo.js +1 -1
  54. package/js/ccxt.d.ts +8 -2
  55. package/js/ccxt.js +6 -2
  56. package/js/src/abstract/gemini.d.ts +27 -0
  57. package/js/src/abstract/lighter.d.ts +53 -0
  58. package/js/src/abstract/lighter.js +11 -0
  59. package/js/src/ascendex.d.ts +12 -1
  60. package/js/src/ascendex.js +73 -1
  61. package/js/src/base/Exchange.d.ts +18 -6
  62. package/js/src/base/Exchange.js +154 -21
  63. package/js/src/base/functions/generic.js +1 -0
  64. package/js/src/base/functions/io.d.ts +32 -0
  65. package/js/src/base/functions/io.js +137 -0
  66. package/js/src/base/functions.d.ts +1 -0
  67. package/js/src/base/functions.js +1 -0
  68. package/js/src/binance.d.ts +1 -0
  69. package/js/src/binance.js +1 -0
  70. package/js/src/bingx.js +13 -3
  71. package/js/src/bitmex.js +20 -0
  72. package/js/src/blofin.js +2 -2
  73. package/js/src/bybit.js +1 -1
  74. package/js/src/coinspot.js +7 -2
  75. package/js/src/delta.js +1 -1
  76. package/js/src/gate.d.ts +1 -0
  77. package/js/src/gate.js +11 -4
  78. package/js/src/gemini.d.ts +11 -0
  79. package/js/src/gemini.js +76 -1
  80. package/js/src/htx.js +2 -2
  81. package/js/src/hyperliquid.js +20 -7
  82. package/js/src/independentreserve.js +7 -7
  83. package/js/src/kraken.js +1 -1
  84. package/js/src/krakenfutures.d.ts +1 -1
  85. package/js/src/krakenfutures.js +96 -5
  86. package/js/src/kucoin.d.ts +3 -3
  87. package/js/src/kucoin.js +3 -3
  88. package/js/src/kucoinfutures.js +1 -1
  89. package/js/src/lighter.d.ts +424 -0
  90. package/js/src/lighter.js +2930 -0
  91. package/js/src/mexc.js +0 -1
  92. package/js/src/phemex.js +1 -1
  93. package/js/src/pro/binance.js +2 -2
  94. package/js/src/pro/bingx.d.ts +17 -1
  95. package/js/src/pro/bingx.js +216 -3
  96. package/js/src/pro/bitget.js +1 -0
  97. package/js/src/pro/defx.js +1 -1
  98. package/js/src/pro/kucoinfutures.js +1 -1
  99. package/js/src/pro/lighter.d.ts +161 -0
  100. package/js/src/pro/lighter.js +786 -0
  101. package/js/src/pro/mexc.js +1 -1
  102. package/js/src/pro/paradex.js +1 -1
  103. package/js/src/whitebit.d.ts +2 -1
  104. package/js/src/whitebit.js +118 -16
  105. package/js/src/woo.js +1 -1
  106. package/package.json +1 -1
@@ -1046,6 +1046,15 @@ export default class krakenfutures extends Exchange {
1046
1046
  takerOrMaker = 'taker';
1047
1047
  }
1048
1048
  }
1049
+ let fee = undefined;
1050
+ if ((takerOrMaker !== undefined) && (cost !== undefined)) {
1051
+ const feeRate = this.safeString(market, takerOrMaker);
1052
+ fee = {
1053
+ 'cost': Precise.stringMul(cost, feeRate),
1054
+ 'currency': this.safeString(market, 'quote'),
1055
+ 'rate': feeRate,
1056
+ };
1057
+ }
1049
1058
  return this.safeTrade({
1050
1059
  'info': trade,
1051
1060
  'id': id,
@@ -1059,7 +1068,7 @@ export default class krakenfutures extends Exchange {
1059
1068
  'price': price,
1060
1069
  'amount': linear ? amount : undefined,
1061
1070
  'cost': cost,
1062
- 'fee': undefined,
1071
+ 'fee': fee,
1063
1072
  });
1064
1073
  }
1065
1074
  createOrderRequest(symbol, type, side, amount, price = undefined, params = {}) {
@@ -1182,6 +1191,41 @@ export default class krakenfutures extends Exchange {
1182
1191
  // "serverTime": "2022-02-28T19:32:17.122Z"
1183
1192
  // }
1184
1193
  //
1194
+ // MARKET
1195
+ //
1196
+ // {
1197
+ // "result": "success",
1198
+ // "serverTime": "2026-03-02T06:10:31.955Z",
1199
+ // "sendStatus": {
1200
+ // "status": "placed",
1201
+ // "order_id": "a133a4f9-254d-4806-8176-9acc936b6944",
1202
+ // "receivedTime": "2026-03-02T06:10:31.954Z",
1203
+ // "orderEvents": [
1204
+ // {
1205
+ // "type": "EXECUTION",
1206
+ // "executionId": "403bf49f-dbbe-448b-8de7-fd3cf38cc5dd",
1207
+ // "price": 66596.0,
1208
+ // "amount": 0.001,
1209
+ // "orderPriorEdit": null,
1210
+ // "orderPriorExecution": {
1211
+ // "orderId": "a133a4f9-254d-4806-8176-9acc936b6944",
1212
+ // "cliOrdId": null,
1213
+ // "type": "ioc",
1214
+ // "symbol": "PF_XBTUSD",
1215
+ // "side": "buy",
1216
+ // "quantity": 0.001,
1217
+ // "filled": 0,
1218
+ // "limitPrice": 67261.000,
1219
+ // "reduceOnly": false,
1220
+ // "timestamp": "2026-03-02T06:10:31.954Z",
1221
+ // "lastUpdateTimestamp": "2026-03-02T06:10:31.954Z"
1222
+ // },
1223
+ // "takerReducedQuantity": null
1224
+ // }
1225
+ // ]
1226
+ // }
1227
+ // }
1228
+ //
1185
1229
  const sendStatus = this.safeValue(response, 'sendStatus');
1186
1230
  const status = this.safeString(sendStatus, 'status');
1187
1231
  this.verifyOrderActionSuccess(status, 'createOrder', ['filled']);
@@ -1463,8 +1507,8 @@ export default class krakenfutures extends Exchange {
1463
1507
  /**
1464
1508
  * @method
1465
1509
  * @name krakenfutures#fetchOrders
1466
- * @see https://docs.kraken.com/api/docs/futures-api/trading/get-order-status/
1467
1510
  * @description Gets all orders for an account from the exchange api
1511
+ * @see https://docs.kraken.com/api/docs/futures-api/trading/get-order-status/
1468
1512
  * @param {string} symbol Unified market symbol
1469
1513
  * @param {int} [since] Timestamp (ms) of earliest order. (Not used by kraken api but filtered internally by CCXT)
1470
1514
  * @param {int} [limit] How many orders to return. (Not used by kraken api but filtered internally by CCXT)
@@ -1722,6 +1766,37 @@ export default class krakenfutures extends Exchange {
1722
1766
  // ]
1723
1767
  // }
1724
1768
  //
1769
+ // MARKET
1770
+ //
1771
+ // {
1772
+ // "status": "placed",
1773
+ // "order_id": "a133a4f9-254d-4806-8176-9acc936b6944",
1774
+ // "receivedTime": "2026-03-02T06:10:31.954Z",
1775
+ // "orderEvents": [
1776
+ // {
1777
+ // "type": "EXECUTION",
1778
+ // "executionId": "403bf49f-dbbe-448b-8de7-fd3cf38cc5dd",
1779
+ // "price": 66596.0,
1780
+ // "amount": 0.001,
1781
+ // "orderPriorEdit": null,
1782
+ // "orderPriorExecution": {
1783
+ // "orderId": "a133a4f9-254d-4806-8176-9acc936b6944",
1784
+ // "cliOrdId": null,
1785
+ // "type": "ioc",
1786
+ // "symbol": "PF_XBTUSD",
1787
+ // "side": "buy",
1788
+ // "quantity": 0.001,
1789
+ // "filled": 0,
1790
+ // "limitPrice": 67261.000,
1791
+ // "reduceOnly": false,
1792
+ // "timestamp": "2026-03-02T06:10:31.954Z",
1793
+ // "lastUpdateTimestamp": "2026-03-02T06:10:31.954Z"
1794
+ // },
1795
+ // "takerReducedQuantity": null
1796
+ // }
1797
+ // ]
1798
+ // }
1799
+ //
1725
1800
  // CONDITIONAL
1726
1801
  //
1727
1802
  // {
@@ -1965,6 +2040,10 @@ export default class krakenfutures extends Exchange {
1965
2040
  //
1966
2041
  const datetime = this.safeString(orderDictFromFetchOrder, 'timestamp');
1967
2042
  const innerStatus = this.safeString(order, 'status');
2043
+ let filledOrder = this.safeString(orderDictFromFetchOrder, 'filled', '0');
2044
+ if ((filledOrder === '0') || (filledOrder === '0.0')) {
2045
+ filledOrder = undefined;
2046
+ }
1968
2047
  return this.safeOrder({
1969
2048
  'info': order,
1970
2049
  'id': this.safeString(orderDictFromFetchOrder, 'orderId'),
@@ -1984,7 +2063,7 @@ export default class krakenfutures extends Exchange {
1984
2063
  'amount': this.safeString(orderDictFromFetchOrder, 'quantity'),
1985
2064
  'cost': undefined,
1986
2065
  'average': undefined,
1987
- 'filled': this.safeString(orderDictFromFetchOrder, 'filled'),
2066
+ 'filled': filledOrder,
1988
2067
  'remaining': undefined,
1989
2068
  'status': this.parseOrderStatus(innerStatus),
1990
2069
  'fee': undefined,
@@ -2021,9 +2100,15 @@ export default class krakenfutures extends Exchange {
2021
2100
  fixed = true;
2022
2101
  }
2023
2102
  else if (!fixed) {
2103
+ const executedPrice = this.safeString(item, 'price');
2024
2104
  const orderPriorExecution = this.safeValue(item, 'orderPriorExecution');
2025
2105
  details = this.safeValue2(item, 'orderPriorExecution', 'orderPriorEdit');
2026
- price = this.safeString(orderPriorExecution, 'limitPrice');
2106
+ if (executedPrice === undefined) {
2107
+ price = this.safeString(orderPriorExecution, 'limitPrice');
2108
+ }
2109
+ else {
2110
+ price = executedPrice;
2111
+ }
2027
2112
  if (details !== undefined) {
2028
2113
  isPrior = true;
2029
2114
  }
@@ -2118,6 +2203,11 @@ export default class krakenfutures extends Exchange {
2118
2203
  symbol = this.safeSymbol(this.safeString(details, 'tradeable'), market);
2119
2204
  }
2120
2205
  const ts = this.safeInteger(details, 'timestamp', timestamp);
2206
+ const priceTriggerOptions = this.safeDict(details, 'priceTriggerOptions', {});
2207
+ let triggerPrice = this.safeString2(details, 'triggerPrice', 'stopPrice');
2208
+ if (triggerPrice === undefined) {
2209
+ triggerPrice = this.safeString(priceTriggerOptions, 'triggerPrice');
2210
+ }
2121
2211
  return this.safeOrder({
2122
2212
  'info': order,
2123
2213
  'id': id,
@@ -2133,7 +2223,8 @@ export default class krakenfutures extends Exchange {
2133
2223
  'reduceOnly': this.safeBool2(details, 'reduceOnly', 'reduce_only'),
2134
2224
  'side': this.safeStringLower2(details, 'side', 'direction'),
2135
2225
  'price': price,
2136
- 'triggerPrice': this.safeString(details, 'triggerPrice'),
2226
+ 'triggerPrice': triggerPrice,
2227
+ 'stopPrice': triggerPrice,
2137
2228
  'amount': amount,
2138
2229
  'cost': cost,
2139
2230
  'average': average,
@@ -355,7 +355,7 @@ export default class kucoin extends Exchange {
355
355
  * @param {object} [params] extra parameters specific to the exchange API endpoint
356
356
  * @param {bool} [params.trigger] *invalid for isolated margin* true if cancelling all stop orders
357
357
  * @param {string} [params.marginMode] 'cross' or 'isolated'
358
- * @param {string} [params.orderIds] *stop orders only* Comma seperated order IDs
358
+ * @param {string} [params.orderIds] *stop orders only* Comma separated order IDs
359
359
  * @param {bool} [params.hf] false, // true for hf order
360
360
  * @returns Response from the exchange
361
361
  */
@@ -378,7 +378,7 @@ export default class kucoin extends Exchange {
378
378
  * @param {string} [params.type] limit, market, limit_stop or market_stop
379
379
  * @param {string} [params.tradeType] TRADE for spot trading, MARGIN_TRADE for Margin Trading
380
380
  * @param {int} [params.currentPage] *trigger orders only* current page
381
- * @param {string} [params.orderIds] *trigger orders only* comma seperated order ID list
381
+ * @param {string} [params.orderIds] *trigger orders only* comma separated order ID list
382
382
  * @param {bool} [params.trigger] True if fetching a trigger order
383
383
  * @param {bool} [params.hf] false, // true for hf order
384
384
  * @returns An [array of order structures]{@link https://docs.ccxt.com/?id=order-structure}
@@ -424,7 +424,7 @@ export default class kucoin extends Exchange {
424
424
  * @param {string} [params.type] limit, market, limit_stop or market_stop
425
425
  * @param {string} [params.tradeType] TRADE for spot trading, MARGIN_TRADE for Margin Trading
426
426
  * @param {int} [params.currentPage] *trigger orders only* current page
427
- * @param {string} [params.orderIds] *trigger orders only* comma seperated order ID list
427
+ * @param {string} [params.orderIds] *trigger orders only* comma separated order ID list
428
428
  * @param {bool} [params.hf] false, // true for hf order
429
429
  * @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)
430
430
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/?id=order-structure}
package/js/src/kucoin.js CHANGED
@@ -3205,7 +3205,7 @@ export default class kucoin extends Exchange {
3205
3205
  * @param {object} [params] extra parameters specific to the exchange API endpoint
3206
3206
  * @param {bool} [params.trigger] *invalid for isolated margin* true if cancelling all stop orders
3207
3207
  * @param {string} [params.marginMode] 'cross' or 'isolated'
3208
- * @param {string} [params.orderIds] *stop orders only* Comma seperated order IDs
3208
+ * @param {string} [params.orderIds] *stop orders only* Comma separated order IDs
3209
3209
  * @param {bool} [params.hf] false, // true for hf order
3210
3210
  * @returns Response from the exchange
3211
3211
  */
@@ -3261,7 +3261,7 @@ export default class kucoin extends Exchange {
3261
3261
  * @param {string} [params.type] limit, market, limit_stop or market_stop
3262
3262
  * @param {string} [params.tradeType] TRADE for spot trading, MARGIN_TRADE for Margin Trading
3263
3263
  * @param {int} [params.currentPage] *trigger orders only* current page
3264
- * @param {string} [params.orderIds] *trigger orders only* comma seperated order ID list
3264
+ * @param {string} [params.orderIds] *trigger orders only* comma separated order ID list
3265
3265
  * @param {bool} [params.trigger] True if fetching a trigger order
3266
3266
  * @param {bool} [params.hf] false, // true for hf order
3267
3267
  * @returns An [array of order structures]{@link https://docs.ccxt.com/?id=order-structure}
@@ -3416,7 +3416,7 @@ export default class kucoin extends Exchange {
3416
3416
  * @param {string} [params.type] limit, market, limit_stop or market_stop
3417
3417
  * @param {string} [params.tradeType] TRADE for spot trading, MARGIN_TRADE for Margin Trading
3418
3418
  * @param {int} [params.currentPage] *trigger orders only* current page
3419
- * @param {string} [params.orderIds] *trigger orders only* comma seperated order ID list
3419
+ * @param {string} [params.orderIds] *trigger orders only* comma separated order ID list
3420
3420
  * @param {bool} [params.hf] false, // true for hf order
3421
3421
  * @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)
3422
3422
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/?id=order-structure}
@@ -91,10 +91,10 @@ export default class kucoinfutures extends kucoin {
91
91
  'fetchOrderBook': true,
92
92
  'fetchPosition': true,
93
93
  'fetchPositionADLRank': true,
94
- 'fetchPositionsADLRank': true,
95
94
  'fetchPositionHistory': false,
96
95
  'fetchPositionMode': false,
97
96
  'fetchPositions': true,
97
+ 'fetchPositionsADLRank': true,
98
98
  'fetchPositionsHistory': true,
99
99
  'fetchPremiumIndexOHLCV': false,
100
100
  'fetchStatus': true,