ccxt 4.3.4 → 4.3.6

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 (71) hide show
  1. package/README.md +3 -3
  2. package/dist/cjs/ccxt.js +1 -1
  3. package/dist/cjs/src/base/Exchange.js +299 -6
  4. package/dist/cjs/src/binance.js +24 -17
  5. package/dist/cjs/src/bingx.js +45 -0
  6. package/dist/cjs/src/bitmex.js +24 -0
  7. package/dist/cjs/src/bybit.js +86 -0
  8. package/dist/cjs/src/coinbase.js +5 -4
  9. package/dist/cjs/src/coinex.js +30 -32
  10. package/dist/cjs/src/cryptocom.js +32 -0
  11. package/dist/cjs/src/htx.js +28 -0
  12. package/dist/cjs/src/hyperliquid.js +40 -0
  13. package/dist/cjs/src/kraken.js +30 -0
  14. package/dist/cjs/src/krakenfutures.js +28 -0
  15. package/dist/cjs/src/kucoin.js +53 -3
  16. package/dist/cjs/src/kucoinfutures.js +2 -2
  17. package/dist/cjs/src/okx.js +113 -0
  18. package/dist/cjs/src/pro/binance.js +439 -75
  19. package/dist/cjs/src/pro/bitget.js +1 -1
  20. package/dist/cjs/src/pro/woo.js +0 -1
  21. package/dist/cjs/src/whitebit.js +174 -2
  22. package/dist/cjs/src/woo.js +29 -0
  23. package/js/ccxt.d.ts +1 -1
  24. package/js/ccxt.js +1 -1
  25. package/js/src/abstract/binance.d.ts +1 -0
  26. package/js/src/abstract/binancecoinm.d.ts +1 -0
  27. package/js/src/abstract/binanceus.d.ts +1 -0
  28. package/js/src/abstract/binanceusdm.d.ts +1 -0
  29. package/js/src/abstract/bingx.d.ts +1 -0
  30. package/js/src/abstract/whitebit.d.ts +21 -0
  31. package/js/src/abstract/woo.d.ts +1 -0
  32. package/js/src/base/Exchange.d.ts +52 -3
  33. package/js/src/base/Exchange.js +299 -6
  34. package/js/src/binance.d.ts +4 -0
  35. package/js/src/binance.js +24 -17
  36. package/js/src/bingx.d.ts +1 -0
  37. package/js/src/bingx.js +45 -0
  38. package/js/src/bitmex.d.ts +1 -0
  39. package/js/src/bitmex.js +24 -0
  40. package/js/src/bybit.d.ts +2 -1
  41. package/js/src/bybit.js +86 -0
  42. package/js/src/coinbase.js +5 -4
  43. package/js/src/coinex.js +30 -32
  44. package/js/src/cryptocom.d.ts +2 -1
  45. package/js/src/cryptocom.js +32 -0
  46. package/js/src/htx.d.ts +1 -0
  47. package/js/src/htx.js +28 -0
  48. package/js/src/hyperliquid.d.ts +1 -0
  49. package/js/src/hyperliquid.js +40 -0
  50. package/js/src/kraken.d.ts +1 -0
  51. package/js/src/kraken.js +30 -0
  52. package/js/src/krakenfutures.d.ts +1 -0
  53. package/js/src/krakenfutures.js +28 -0
  54. package/js/src/kucoin.d.ts +1 -0
  55. package/js/src/kucoin.js +53 -3
  56. package/js/src/kucoinfutures.js +2 -2
  57. package/js/src/okx.d.ts +3 -1
  58. package/js/src/okx.js +113 -0
  59. package/js/src/pro/binance.d.ts +9 -1
  60. package/js/src/pro/binance.js +439 -75
  61. package/js/src/pro/bitget.d.ts +1 -1
  62. package/js/src/pro/bitget.js +1 -1
  63. package/js/src/pro/cex.d.ts +1 -1
  64. package/js/src/pro/lbank.d.ts +1 -1
  65. package/js/src/pro/woo.js +0 -1
  66. package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +1 -1
  67. package/js/src/whitebit.d.ts +3 -0
  68. package/js/src/whitebit.js +174 -2
  69. package/js/src/woo.d.ts +2 -1
  70. package/js/src/woo.js +29 -0
  71. package/package.json +1 -1
@@ -29,7 +29,7 @@ export default class bitget extends bitgetRest {
29
29
  handlePositions(client: Client, message: any): void;
30
30
  parseWsPosition(position: any, market?: any): Position;
31
31
  watchOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
32
- handleOrder(client: Client, message: any, subscription?: any): void;
32
+ handleOrder(client: Client, message: any): void;
33
33
  parseWsOrder(order: any, market?: any): Order;
34
34
  parseWsOrderStatus(status: any): string;
35
35
  watchMyTrades(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
@@ -1007,7 +1007,7 @@ export default class bitget extends bitgetRest {
1007
1007
  }
1008
1008
  return this.filterBySymbolSinceLimit(orders, symbol, since, limit, true);
1009
1009
  }
1010
- handleOrder(client, message, subscription = undefined) {
1010
+ handleOrder(client, message) {
1011
1011
  //
1012
1012
  // spot
1013
1013
  //
@@ -12,7 +12,7 @@ export default class cex extends cexRest {
12
12
  handleTrade(client: Client, message: any): void;
13
13
  watchTicker(symbol: string, params?: {}): Promise<Ticker>;
14
14
  watchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
15
- fetchTickerWs(symbol: string, params?: {}): Promise<any>;
15
+ fetchTickerWs(symbol: string, params?: {}): Promise<Ticker>;
16
16
  handleTicker(client: Client, message: any): void;
17
17
  parseWsTicker(ticker: any, market?: any): Ticker;
18
18
  fetchBalanceWs(params?: {}): Promise<Balances>;
@@ -7,7 +7,7 @@ export default class lbank extends lbankRest {
7
7
  fetchOHLCVWs(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
8
8
  watchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
9
9
  handleOHLCV(client: any, message: any): void;
10
- fetchTickerWs(symbol: any, params?: {}): Promise<Ticker>;
10
+ fetchTickerWs(symbol: string, params?: {}): Promise<Ticker>;
11
11
  watchTicker(symbol: string, params?: {}): Promise<Ticker>;
12
12
  handleTicker(client: any, message: any): void;
13
13
  parseWsTicker(ticker: any, market?: any): Ticker;
package/js/src/pro/woo.js CHANGED
@@ -75,7 +75,6 @@ export default class woo extends wooRest {
75
75
  return newValue;
76
76
  }
77
77
  async watchPublic(messageHash, message) {
78
- this.checkRequiredUid();
79
78
  const url = this.urls['api']['ws']['public'] + '/' + this.uid;
80
79
  const requestId = this.requestId(url);
81
80
  const subscribe = {
@@ -15,7 +15,7 @@ export declare class BigInteger {
15
15
  protected intValue(): number;
16
16
  protected byteValue(): number;
17
17
  protected shortValue(): number;
18
- protected signum(): 0 | 1 | -1;
18
+ protected signum(): 1 | 0 | -1;
19
19
  toByteArray(): number[];
20
20
  protected equals(a: BigInteger): boolean;
21
21
  protected min(a: BigInteger): BigInteger;
@@ -35,7 +35,10 @@ export default class whitebit extends Exchange {
35
35
  }>;
36
36
  fetchTime(params?: {}): Promise<number>;
37
37
  createOrder(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: Num, params?: {}): Promise<Order>;
38
+ editOrder(id: string, symbol: string, type: OrderType, side: OrderSide, amount?: Num, price?: Num, params?: {}): Promise<Order>;
38
39
  cancelOrder(id: string, symbol?: Str, params?: {}): Promise<any>;
40
+ cancelAllOrders(symbol?: Str, params?: {}): Promise<any>;
41
+ cancelAllOrdersAfter(timeout: Int, params?: {}): Promise<any>;
39
42
  parseBalance(response: any): Balances;
40
43
  fetchBalance(params?: {}): Promise<Balances>;
41
44
  fetchOpenOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
@@ -31,7 +31,8 @@ export default class whitebit extends Exchange {
31
31
  'swap': false,
32
32
  'future': false,
33
33
  'option': false,
34
- 'cancelAllOrders': false,
34
+ 'cancelAllOrders': true,
35
+ 'cancelAllOrdersAfter': true,
35
36
  'cancelOrder': true,
36
37
  'cancelOrders': false,
37
38
  'createOrder': true,
@@ -176,11 +177,13 @@ export default class whitebit extends Exchange {
176
177
  'ping',
177
178
  'markets',
178
179
  'futures',
180
+ 'platform/status',
179
181
  ],
180
182
  },
181
183
  'private': {
182
184
  'post': [
183
185
  'collateral-account/balance',
186
+ 'collateral-account/balance-summary',
184
187
  'collateral-account/positions/history',
185
188
  'collateral-account/leverage',
186
189
  'collateral-account/positions/open',
@@ -197,21 +200,40 @@ export default class whitebit extends Exchange {
197
200
  'main-account/withdraw',
198
201
  'main-account/withdraw-pay',
199
202
  'main-account/transfer',
203
+ 'main-account/smart/plans',
204
+ 'main-account/smart/investment',
205
+ 'main-account/smart/investment/close',
206
+ 'main-account/smart/investments',
207
+ 'main-account/fee',
208
+ 'main-account/smart/interest-payment-history',
200
209
  'trade-account/balance',
201
210
  'trade-account/executed-history',
202
211
  'trade-account/order',
203
212
  'trade-account/order/history',
204
213
  'order/collateral/limit',
205
214
  'order/collateral/market',
206
- 'order/collateral/trigger_market',
215
+ 'order/collateral/stop-limit',
216
+ 'order/collateral/trigger-market',
207
217
  'order/new',
208
218
  'order/market',
209
219
  'order/stock_market',
210
220
  'order/stop_limit',
211
221
  'order/stop_market',
212
222
  'order/cancel',
223
+ 'order/cancel/all',
224
+ 'order/kill-switch',
225
+ 'order/kill-switch/status',
226
+ 'order/bulk',
227
+ 'order/modify',
213
228
  'orders',
229
+ 'oco-orders',
230
+ 'order/collateral/oco',
231
+ 'order/oco-cancel',
232
+ 'order/oto-cancel',
214
233
  'profile/websocket_token',
234
+ 'convert/estimate',
235
+ 'convert/confirm',
236
+ 'convert/history',
215
237
  ],
216
238
  },
217
239
  },
@@ -1260,6 +1282,70 @@ export default class whitebit extends Exchange {
1260
1282
  }
1261
1283
  return this.parseOrder(response);
1262
1284
  }
1285
+ async editOrder(id, symbol, type, side, amount = undefined, price = undefined, params = {}) {
1286
+ /**
1287
+ * @method
1288
+ * @name whitebit#editOrder
1289
+ * @description edit a trade order
1290
+ * @see https://docs.whitebit.com/private/http-trade-v4/#modify-order
1291
+ * @param {string} id cancel order id
1292
+ * @param {string} symbol unified symbol of the market to create an order in
1293
+ * @param {string} type 'market' or 'limit'
1294
+ * @param {string} side 'buy' or 'sell'
1295
+ * @param {float} amount how much of currency you want to trade in units of base currency
1296
+ * @param {float} price the price at which the order is to be fullfilled, in units of the base currency, ignored in market orders
1297
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1298
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1299
+ */
1300
+ if (id === undefined) {
1301
+ throw new ArgumentsRequired(this.id + ' editOrder() requires a id argument');
1302
+ }
1303
+ if (symbol === undefined) {
1304
+ throw new ArgumentsRequired(this.id + ' editOrder() requires a symbol argument');
1305
+ }
1306
+ await this.loadMarkets();
1307
+ const market = this.market(symbol);
1308
+ const request = {
1309
+ 'orderId': id,
1310
+ 'market': market['id'],
1311
+ };
1312
+ const clientOrderId = this.safeString2(params, 'clOrdId', 'clientOrderId');
1313
+ if (clientOrderId !== undefined) {
1314
+ // Update clientOrderId of the order
1315
+ request['clientOrderId'] = clientOrderId;
1316
+ }
1317
+ const isLimitOrder = type === 'limit';
1318
+ const stopPrice = this.safeNumberN(params, ['triggerPrice', 'stopPrice', 'activation_price']);
1319
+ const isStopOrder = (stopPrice !== undefined);
1320
+ params = this.omit(params, ['clOrdId', 'clientOrderId', 'triggerPrice', 'stopPrice']);
1321
+ if (isStopOrder) {
1322
+ request['activation_price'] = this.priceToPrecision(symbol, stopPrice);
1323
+ if (isLimitOrder) {
1324
+ // stop limit order
1325
+ request['amount'] = this.amountToPrecision(symbol, amount);
1326
+ request['price'] = this.priceToPrecision(symbol, price);
1327
+ }
1328
+ else {
1329
+ // stop market order
1330
+ if (side === 'buy') {
1331
+ // Use total parameter instead of amount for modify buy stop market order
1332
+ request['total'] = this.amountToPrecision(symbol, amount);
1333
+ }
1334
+ else {
1335
+ request['amount'] = this.amountToPrecision(symbol, amount);
1336
+ }
1337
+ }
1338
+ }
1339
+ else {
1340
+ request['amount'] = this.amountToPrecision(symbol, amount);
1341
+ if (isLimitOrder) {
1342
+ // limit order
1343
+ request['price'] = this.priceToPrecision(symbol, price);
1344
+ }
1345
+ }
1346
+ const response = await this.v4PrivatePostOrderModify(this.extend(request, params));
1347
+ return this.parseOrder(response);
1348
+ }
1263
1349
  async cancelOrder(id, symbol = undefined, params = {}) {
1264
1350
  /**
1265
1351
  * @method
@@ -1282,6 +1368,92 @@ export default class whitebit extends Exchange {
1282
1368
  };
1283
1369
  return await this.v4PrivatePostOrderCancel(this.extend(request, params));
1284
1370
  }
1371
+ async cancelAllOrders(symbol = undefined, params = {}) {
1372
+ /**
1373
+ * @method
1374
+ * @name whitebit#cancelAllOrders
1375
+ * @description cancel all open orders
1376
+ * @see https://docs.whitebit.com/private/http-trade-v4/#cancel-all-orders
1377
+ * @param {string} symbol unified market symbol, only orders in the market of this symbol are cancelled when symbol is not undefined
1378
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1379
+ * @param {string} [params.type] market type, ['swap', 'spot']
1380
+ * @param {boolean} [params.isMargin] cancel all margin orders
1381
+ * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1382
+ */
1383
+ await this.loadMarkets();
1384
+ let market = undefined;
1385
+ const request = {};
1386
+ if (symbol !== undefined) {
1387
+ market = this.market(symbol);
1388
+ request['market'] = market['id'];
1389
+ }
1390
+ let type = undefined;
1391
+ [type, params] = this.handleMarketTypeAndParams('cancelAllOrders', market, params);
1392
+ const requestType = [];
1393
+ if (type === 'spot') {
1394
+ let isMargin = undefined;
1395
+ [isMargin, params] = this.handleOptionAndParams(params, 'cancelAllOrders', 'isMargin', false);
1396
+ if (isMargin) {
1397
+ requestType.push('margin');
1398
+ }
1399
+ else {
1400
+ requestType.push('spot');
1401
+ }
1402
+ }
1403
+ else if (type === 'swap') {
1404
+ requestType.push('futures');
1405
+ }
1406
+ else {
1407
+ throw new NotSupported(this.id + ' cancelAllOrders() does not support ' + type + ' type');
1408
+ }
1409
+ request['type'] = requestType;
1410
+ const response = await this.v4PrivatePostOrderCancelAll(this.extend(request, params));
1411
+ //
1412
+ // []
1413
+ //
1414
+ return response;
1415
+ }
1416
+ async cancelAllOrdersAfter(timeout, params = {}) {
1417
+ /**
1418
+ * @method
1419
+ * @name whitebit#cancelAllOrdersAfter
1420
+ * @description dead man's switch, cancel all orders after the given timeout
1421
+ * @see https://docs.whitebit.com/private/http-trade-v4/#sync-kill-switch-timer
1422
+ * @param {number} timeout time in milliseconds, 0 represents cancel the timer
1423
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1424
+ * @param {string} [params.types] Order types value. Example: "spot", "margin", "futures" or null
1425
+ * @param {string} [params.symbol] symbol unified symbol of the market the order was made in
1426
+ * @returns {object} the api result
1427
+ */
1428
+ await this.loadMarkets();
1429
+ const symbol = this.safeString(params, 'symbol');
1430
+ if (symbol === undefined) {
1431
+ throw new ArgumentsRequired(this.id + ' cancelAllOrdersAfter() requires a symbol argument in params');
1432
+ }
1433
+ const market = this.market(symbol);
1434
+ params = this.omit(params, 'symbol');
1435
+ const isBiggerThanZero = (timeout > 0);
1436
+ const request = {
1437
+ 'market': market['id'],
1438
+ // 'timeout': (timeout > 0) ? this.numberToString (timeout / 1000) : null,
1439
+ };
1440
+ if (isBiggerThanZero) {
1441
+ request['timeout'] = this.numberToString(timeout / 1000);
1442
+ }
1443
+ else {
1444
+ request['timeout'] = 'null';
1445
+ }
1446
+ const response = await this.v4PrivatePostOrderKillSwitch(this.extend(request, params));
1447
+ //
1448
+ // {
1449
+ // "market": "BTC_USDT", // currency market,
1450
+ // "startTime": 1662478154, // now timestamp,
1451
+ // "cancellationTime": 1662478154, // now + timer_value,
1452
+ // "types": ["spot", "margin"]
1453
+ // }
1454
+ //
1455
+ return response;
1456
+ }
1285
1457
  parseBalance(response) {
1286
1458
  const balanceKeys = Object.keys(response);
1287
1459
  const result = {};
package/js/src/woo.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/woo.js';
2
- import type { TransferEntry, Balances, Currency, FundingRateHistory, Int, Market, Num, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Trade, Transaction, Leverage, Account, Currencies, TradingFees, Conversion } from './base/types.js';
2
+ import type { TransferEntry, Balances, Conversion, Currency, FundingRateHistory, Int, Market, Num, OHLCV, Order, OrderBook, OrderSide, OrderType, Str, Strings, Trade, Transaction, Leverage, Account, Currencies, TradingFees } from './base/types.js';
3
3
  /**
4
4
  * @class woo
5
5
  * @augments Exchange
@@ -28,6 +28,7 @@ export default class woo extends Exchange {
28
28
  editOrder(id: string, symbol: string, type: OrderType, side: OrderSide, amount?: Num, price?: Num, params?: {}): Promise<Order>;
29
29
  cancelOrder(id: string, symbol?: Str, params?: {}): Promise<any>;
30
30
  cancelAllOrders(symbol?: Str, params?: {}): Promise<any>;
31
+ cancelAllOrdersAfter(timeout: Int, params?: {}): Promise<any>;
31
32
  fetchOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
32
33
  fetchOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
33
34
  fetchOpenOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
package/js/src/woo.js CHANGED
@@ -35,6 +35,7 @@ export default class woo extends Exchange {
35
35
  'option': false,
36
36
  'addMargin': false,
37
37
  'cancelAllOrders': true,
38
+ 'cancelAllOrdersAfter': true,
38
39
  'cancelOrder': true,
39
40
  'cancelWithdraw': false,
40
41
  'closeAllPositions': false,
@@ -202,6 +203,7 @@ export default class woo extends Exchange {
202
203
  },
203
204
  'post': {
204
205
  'order': 5,
206
+ 'order/cancel_all_after': 1,
205
207
  'asset/main_sub_transfer': 30,
206
208
  'asset/ltv': 30,
207
209
  'asset/withdraw': 30,
@@ -1292,6 +1294,33 @@ export default class woo extends Exchange {
1292
1294
  //
1293
1295
  return response;
1294
1296
  }
1297
+ async cancelAllOrdersAfter(timeout, params = {}) {
1298
+ /**
1299
+ * @method
1300
+ * @name woo#cancelAllOrdersAfter
1301
+ * @description dead man's switch, cancel all orders after the given timeout
1302
+ * @see https://docs.woo.org/#cancel-all-after
1303
+ * @param {number} timeout time in milliseconds, 0 represents cancel the timer
1304
+ * @param {boolean} activated countdown
1305
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1306
+ * @returns {object} the api result
1307
+ */
1308
+ await this.loadMarkets();
1309
+ const request = {
1310
+ 'trigger_after': (timeout > 0) ? timeout : 0,
1311
+ };
1312
+ const response = await this.v1PrivatePostOrderCancelAllAfter(this.extend(request, params));
1313
+ //
1314
+ // {
1315
+ // "success": true,
1316
+ // "data": {
1317
+ // "expected_trigger_time": 1711534302938
1318
+ // },
1319
+ // "timestamp": 1711534302943
1320
+ // }
1321
+ //
1322
+ return response;
1323
+ }
1295
1324
  async fetchOrder(id, symbol = undefined, params = {}) {
1296
1325
  /**
1297
1326
  * @method
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccxt",
3
- "version": "4.3.4",
3
+ "version": "4.3.6",
4
4
  "description": "A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 100+ exchanges",
5
5
  "unpkg": "dist/ccxt.browser.js",
6
6
  "type": "module",