ccxt 4.3.40 → 4.3.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 (96) hide show
  1. package/README.md +3 -3
  2. package/dist/ccxt.browser.min.js +3 -3
  3. package/dist/cjs/ccxt.js +1 -1
  4. package/dist/cjs/src/binance.js +3 -0
  5. package/dist/cjs/src/bitfinex2.js +1 -1
  6. package/dist/cjs/src/bithumb.js +9 -1
  7. package/dist/cjs/src/bitmart.js +196 -100
  8. package/dist/cjs/src/bitstamp.js +38 -2
  9. package/dist/cjs/src/blockchaincom.js +11 -7
  10. package/dist/cjs/src/coinex.js +1 -1
  11. package/dist/cjs/src/coinlist.js +20 -1
  12. package/dist/cjs/src/coinmate.js +19 -3
  13. package/dist/cjs/src/coinone.js +1 -1
  14. package/dist/cjs/src/coinspot.js +13 -2
  15. package/dist/cjs/src/independentreserve.js +33 -1
  16. package/dist/cjs/src/indodax.js +43 -2
  17. package/dist/cjs/src/kraken.js +30 -3
  18. package/dist/cjs/src/krakenfutures.js +56 -1
  19. package/dist/cjs/src/kucoin.js +59 -2
  20. package/dist/cjs/src/okx.js +7 -0
  21. package/dist/cjs/src/pro/alpaca.js +5 -5
  22. package/dist/cjs/src/pro/ascendex.js +3 -3
  23. package/dist/cjs/src/pro/bingx.js +293 -47
  24. package/dist/cjs/src/pro/bitget.js +14 -6
  25. package/dist/cjs/src/pro/bitrue.js +3 -4
  26. package/dist/cjs/src/pro/currencycom.js +6 -5
  27. package/dist/cjs/src/pro/exmo.js +5 -6
  28. package/dist/cjs/src/pro/gemini.js +4 -3
  29. package/dist/cjs/src/pro/independentreserve.js +7 -7
  30. package/dist/cjs/src/pro/lbank.js +4 -4
  31. package/dist/cjs/src/pro/mexc.js +1 -1
  32. package/dist/cjs/src/pro/phemex.js +5 -5
  33. package/dist/cjs/src/pro/probit.js +4 -4
  34. package/dist/cjs/src/pro/upbit.js +322 -2
  35. package/dist/cjs/src/pro/wazirx.js +12 -12
  36. package/dist/cjs/src/pro/woo.js +2 -2
  37. package/dist/cjs/src/upbit.js +17 -9
  38. package/dist/cjs/src/woo.js +6 -2
  39. package/js/ccxt.d.ts +1 -1
  40. package/js/ccxt.js +1 -1
  41. package/js/src/abstract/binance.d.ts +2 -0
  42. package/js/src/abstract/binancecoinm.d.ts +2 -0
  43. package/js/src/abstract/binanceus.d.ts +2 -0
  44. package/js/src/abstract/binanceusdm.d.ts +2 -0
  45. package/js/src/abstract/okx.d.ts +7 -0
  46. package/js/src/binance.js +3 -0
  47. package/js/src/bitfinex2.js +1 -1
  48. package/js/src/bithumb.d.ts +2 -2
  49. package/js/src/bithumb.js +9 -1
  50. package/js/src/bitmart.js +196 -100
  51. package/js/src/bitstamp.d.ts +2 -2
  52. package/js/src/bitstamp.js +38 -2
  53. package/js/src/blockchaincom.d.ts +2 -8
  54. package/js/src/blockchaincom.js +11 -7
  55. package/js/src/coinex.js +1 -1
  56. package/js/src/coinlist.d.ts +1 -1
  57. package/js/src/coinlist.js +20 -1
  58. package/js/src/coinmate.d.ts +1 -3
  59. package/js/src/coinmate.js +19 -3
  60. package/js/src/coinone.d.ts +1 -1
  61. package/js/src/coinone.js +1 -1
  62. package/js/src/coinspot.d.ts +1 -1
  63. package/js/src/coinspot.js +13 -2
  64. package/js/src/independentreserve.d.ts +1 -1
  65. package/js/src/independentreserve.js +33 -1
  66. package/js/src/indodax.d.ts +1 -1
  67. package/js/src/indodax.js +43 -2
  68. package/js/src/kraken.d.ts +3 -3
  69. package/js/src/kraken.js +30 -3
  70. package/js/src/krakenfutures.d.ts +1 -1
  71. package/js/src/krakenfutures.js +56 -1
  72. package/js/src/kucoin.d.ts +1 -1
  73. package/js/src/kucoin.js +59 -2
  74. package/js/src/okx.js +7 -0
  75. package/js/src/pro/alpaca.js +5 -5
  76. package/js/src/pro/ascendex.js +3 -3
  77. package/js/src/pro/bingx.d.ts +6 -1
  78. package/js/src/pro/bingx.js +294 -48
  79. package/js/src/pro/bitget.js +14 -6
  80. package/js/src/pro/bitrue.js +3 -4
  81. package/js/src/pro/currencycom.js +6 -5
  82. package/js/src/pro/exmo.js +5 -6
  83. package/js/src/pro/gemini.js +4 -3
  84. package/js/src/pro/independentreserve.js +7 -7
  85. package/js/src/pro/lbank.js +4 -4
  86. package/js/src/pro/mexc.js +1 -1
  87. package/js/src/pro/phemex.js +5 -5
  88. package/js/src/pro/probit.js +4 -4
  89. package/js/src/pro/upbit.d.ts +13 -1
  90. package/js/src/pro/upbit.js +323 -3
  91. package/js/src/pro/wazirx.js +12 -12
  92. package/js/src/pro/woo.js +2 -2
  93. package/js/src/upbit.js +17 -9
  94. package/js/src/woo.d.ts +1 -1
  95. package/js/src/woo.js +6 -2
  96. package/package.json +1 -1
@@ -929,6 +929,13 @@ export default class coinmate extends Exchange {
929
929
  // "trailing": false,
930
930
  // }
931
931
  //
932
+ // cancelOrder
933
+ //
934
+ // {
935
+ // "success": true,
936
+ // "remainingAmount": 0.1
937
+ // }
938
+ //
932
939
  const id = this.safeString(order, 'id');
933
940
  const timestamp = this.safeInteger(order, 'timestamp');
934
941
  const side = this.safeStringLower(order, 'type');
@@ -1048,9 +1055,18 @@ export default class coinmate extends Exchange {
1048
1055
  // {"error":false,"errorMessage":null,"data":{"success":true,"remainingAmount":0.01}}
1049
1056
  const request = { 'orderId': id };
1050
1057
  const response = await this.privatePostCancelOrderWithInfo(this.extend(request, params));
1051
- return {
1052
- 'info': response,
1053
- };
1058
+ //
1059
+ // {
1060
+ // "error": false,
1061
+ // "errorMessage": null,
1062
+ // "data": {
1063
+ // "success": true,
1064
+ // "remainingAmount": 0.1
1065
+ // }
1066
+ // }
1067
+ //
1068
+ const data = this.safeDict(response, 'data');
1069
+ return this.parseOrder(data);
1054
1070
  }
1055
1071
  nonce() {
1056
1072
  return this.milliseconds();
@@ -22,7 +22,7 @@ export default class coinone extends Exchange {
22
22
  parseOrder(order: Dict, market?: Market): Order;
23
23
  fetchOpenOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
24
24
  fetchMyTrades(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
25
- cancelOrder(id: string, symbol?: Str, params?: {}): Promise<any>;
25
+ cancelOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
26
26
  fetchDepositAddresses(codes?: Strings, params?: {}): Promise<Dict>;
27
27
  sign(path: any, api?: string, method?: string, params?: {}, headers?: any, body?: any): {
28
28
  url: string;
package/js/src/coinone.js CHANGED
@@ -1064,7 +1064,7 @@ export default class coinone extends Exchange {
1064
1064
  // "errorCode": "0"
1065
1065
  // }
1066
1066
  //
1067
- return response;
1067
+ return this.safeOrder(response);
1068
1068
  }
1069
1069
  async fetchDepositAddresses(codes = undefined, params = {}) {
1070
1070
  /**
@@ -16,7 +16,7 @@ export default class coinspot extends Exchange {
16
16
  fetchMyTrades(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
17
17
  parseTrade(trade: Dict, market?: Market): Trade;
18
18
  createOrder(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: Num, params?: {}): Promise<any>;
19
- cancelOrder(id: string, symbol?: Str, params?: {}): Promise<any>;
19
+ cancelOrder(id: string, symbol?: Str, params?: {}): Promise<import("./base/types.js").Order>;
20
20
  sign(path: any, api?: string, method?: string, params?: {}, headers?: any, body?: any): {
21
21
  url: string;
22
22
  method: string;
@@ -536,11 +536,22 @@ export default class coinspot extends Exchange {
536
536
  throw new ArgumentsRequired(this.id + ' cancelOrder() requires a side parameter, "buy" or "sell"');
537
537
  }
538
538
  params = this.omit(params, 'side');
539
- const method = 'privatePostMy' + this.capitalize(side) + 'Cancel';
540
539
  const request = {
541
540
  'id': id,
542
541
  };
543
- return await this[method](this.extend(request, params));
542
+ let response = undefined;
543
+ if (side === 'buy') {
544
+ response = await this.privatePostMyBuyCancel(this.extend(request, params));
545
+ }
546
+ else {
547
+ response = await this.privatePostMySellCancel(this.extend(request, params));
548
+ }
549
+ //
550
+ // status - ok, error
551
+ //
552
+ return this.safeOrder({
553
+ 'info': response,
554
+ });
544
555
  }
545
556
  sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
546
557
  const url = this.urls['api'][api] + '/' + path;
@@ -22,7 +22,7 @@ export default class independentreserve extends Exchange {
22
22
  fetchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
23
23
  fetchTradingFees(params?: {}): Promise<TradingFees>;
24
24
  createOrder(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: Num, params?: {}): Promise<Order>;
25
- cancelOrder(id: string, symbol?: Str, params?: {}): Promise<any>;
25
+ cancelOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
26
26
  fetchDepositAddress(code: string, params?: {}): Promise<{
27
27
  info: any;
28
28
  currency: string;
@@ -388,6 +388,21 @@ export default class independentreserve extends Exchange {
388
388
  // "FeePercent": 0.005,
389
389
  // }
390
390
  //
391
+ // cancelOrder
392
+ //
393
+ // {
394
+ // "AvgPrice": 455.48,
395
+ // "CreatedTimestampUtc": "2022-08-05T06:42:11.3032208Z",
396
+ // "OrderGuid": "719c495c-a39e-4884-93ac-280b37245037",
397
+ // "Price": 485.76,
398
+ // "PrimaryCurrencyCode": "Xbt",
399
+ // "ReservedAmount": 0.358,
400
+ // "SecondaryCurrencyCode": "Usd",
401
+ // "Status": "Cancelled",
402
+ // "Type": "LimitOffer",
403
+ // "VolumeFilled": 0,
404
+ // "VolumeOrdered": 0.358
405
+ // }
391
406
  let symbol = undefined;
392
407
  const baseId = this.safeString(order, 'PrimaryCurrencyCode');
393
408
  const quoteId = this.safeString(order, 'SecondaryCurrencyCode');
@@ -718,6 +733,7 @@ export default class independentreserve extends Exchange {
718
733
  * @method
719
734
  * @name independentreserve#cancelOrder
720
735
  * @description cancels an open order
736
+ * @see https://www.independentreserve.com/features/api#CancelOrder
721
737
  * @param {string} id order id
722
738
  * @param {string} symbol unified symbol of the market the order was made in
723
739
  * @param {object} [params] extra parameters specific to the exchange API endpoint
@@ -727,7 +743,23 @@ export default class independentreserve extends Exchange {
727
743
  const request = {
728
744
  'orderGuid': id,
729
745
  };
730
- return await this.privatePostCancelOrder(this.extend(request, params));
746
+ const response = await this.privatePostCancelOrder(this.extend(request, params));
747
+ //
748
+ // {
749
+ // "AvgPrice": 455.48,
750
+ // "CreatedTimestampUtc": "2022-08-05T06:42:11.3032208Z",
751
+ // "OrderGuid": "719c495c-a39e-4884-93ac-280b37245037",
752
+ // "Price": 485.76,
753
+ // "PrimaryCurrencyCode": "Xbt",
754
+ // "ReservedAmount": 0.358,
755
+ // "SecondaryCurrencyCode": "Usd",
756
+ // "Status": "Cancelled",
757
+ // "Type": "LimitOffer",
758
+ // "VolumeFilled": 0,
759
+ // "VolumeOrdered": 0.358
760
+ // }
761
+ //
762
+ return this.parseOrder(response);
731
763
  }
732
764
  async fetchDepositAddress(code, params = {}) {
733
765
  /**
@@ -25,7 +25,7 @@ export default class indodax extends Exchange {
25
25
  fetchOpenOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
26
26
  fetchClosedOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
27
27
  createOrder(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: Num, params?: {}): Promise<Order>;
28
- cancelOrder(id: string, symbol?: Str, params?: {}): Promise<any>;
28
+ cancelOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
29
29
  fetchTransactionFee(code: string, params?: {}): Promise<{
30
30
  info: any;
31
31
  rate: number;
package/js/src/indodax.js CHANGED
@@ -656,6 +656,24 @@ export default class indodax extends Exchange {
656
656
  // "order_xrp": "30.45000000",
657
657
  // "remain_xrp": "0.00000000"
658
658
  // }
659
+ //
660
+ // cancelOrder
661
+ //
662
+ // {
663
+ // "order_id": 666883,
664
+ // "client_order_id": "clientx-sj82ks82j",
665
+ // "type": "sell",
666
+ // "pair": "btc_idr",
667
+ // "balance": {
668
+ // "idr": "33605800",
669
+ // "btc": "0.00000000",
670
+ // ...
671
+ // "frozen_idr": "0",
672
+ // "frozen_btc": "0.00000000",
673
+ // ...
674
+ // }
675
+ // }
676
+ //
659
677
  let side = undefined;
660
678
  if ('type' in order) {
661
679
  side = order['type'];
@@ -666,6 +684,8 @@ export default class indodax extends Exchange {
666
684
  const price = this.safeString(order, 'price');
667
685
  let amount = undefined;
668
686
  let remaining = undefined;
687
+ const marketId = this.safeString(order, 'pair');
688
+ market = this.safeMarket(marketId, market);
669
689
  if (market !== undefined) {
670
690
  symbol = market['symbol'];
671
691
  let quoteId = market['quoteId'];
@@ -688,7 +708,7 @@ export default class indodax extends Exchange {
688
708
  return this.safeOrder({
689
709
  'info': order,
690
710
  'id': id,
691
- 'clientOrderId': undefined,
711
+ 'clientOrderId': this.safeString(order, 'client_order_id'),
692
712
  'timestamp': timestamp,
693
713
  'datetime': this.iso8601(timestamp),
694
714
  'lastTradeTimestamp': undefined,
@@ -866,7 +886,28 @@ export default class indodax extends Exchange {
866
886
  'pair': market['id'],
867
887
  'type': side,
868
888
  };
869
- return await this.privatePostCancelOrder(this.extend(request, params));
889
+ const response = await this.privatePostCancelOrder(this.extend(request, params));
890
+ //
891
+ // {
892
+ // "success": 1,
893
+ // "return": {
894
+ // "order_id": 666883,
895
+ // "client_order_id": "clientx-sj82ks82j",
896
+ // "type": "sell",
897
+ // "pair": "btc_idr",
898
+ // "balance": {
899
+ // "idr": "33605800",
900
+ // "btc": "0.00000000",
901
+ // ...
902
+ // "frozen_idr": "0",
903
+ // "frozen_btc": "0.00000000",
904
+ // ...
905
+ // }
906
+ // }
907
+ // }
908
+ //
909
+ const data = this.safeDict(response, 'return');
910
+ return this.parseOrder(data);
870
911
  }
871
912
  async fetchTransactionFee(code, params = {}) {
872
913
  /**
@@ -70,9 +70,9 @@ export default class kraken extends Exchange {
70
70
  fetchOrderTrades(id: string, symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
71
71
  fetchOrdersByIds(ids: any, symbol?: Str, params?: {}): Promise<any[]>;
72
72
  fetchMyTrades(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
73
- cancelOrder(id: string, symbol?: Str, params?: {}): Promise<any>;
74
- cancelOrders(ids: any, symbol?: Str, params?: {}): Promise<any>;
75
- cancelAllOrders(symbol?: Str, params?: {}): Promise<any>;
73
+ cancelOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
74
+ cancelOrders(ids: any, symbol?: Str, params?: {}): Promise<Order[]>;
75
+ cancelAllOrders(symbol?: Str, params?: {}): Promise<Order[]>;
76
76
  cancelAllOrdersAfter(timeout: Int, params?: {}): Promise<any>;
77
77
  fetchOpenOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
78
78
  fetchClosedOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
package/js/src/kraken.js CHANGED
@@ -2140,6 +2140,14 @@ export default class kraken extends Exchange {
2140
2140
  params = this.omit(params, ['userref', 'clientOrderId']);
2141
2141
  try {
2142
2142
  response = await this.privatePostCancelOrder(this.extend(request, params));
2143
+ //
2144
+ // {
2145
+ // error: [],
2146
+ // result: {
2147
+ // count: '1'
2148
+ // }
2149
+ // }
2150
+ //
2143
2151
  }
2144
2152
  catch (e) {
2145
2153
  if (this.last_http_response) {
@@ -2149,7 +2157,9 @@ export default class kraken extends Exchange {
2149
2157
  }
2150
2158
  throw e;
2151
2159
  }
2152
- return response;
2160
+ return this.safeOrder({
2161
+ 'info': response,
2162
+ });
2153
2163
  }
2154
2164
  async cancelOrders(ids, symbol = undefined, params = {}) {
2155
2165
  /**
@@ -2174,7 +2184,11 @@ export default class kraken extends Exchange {
2174
2184
  // }
2175
2185
  // }
2176
2186
  //
2177
- return response;
2187
+ return [
2188
+ this.safeOrder({
2189
+ 'info': response,
2190
+ }),
2191
+ ];
2178
2192
  }
2179
2193
  async cancelAllOrders(symbol = undefined, params = {}) {
2180
2194
  /**
@@ -2187,7 +2201,20 @@ export default class kraken extends Exchange {
2187
2201
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
2188
2202
  */
2189
2203
  await this.loadMarkets();
2190
- return await this.privatePostCancelAll(params);
2204
+ const response = await this.privatePostCancelAll(params);
2205
+ //
2206
+ // {
2207
+ // error: [],
2208
+ // result: {
2209
+ // count: '1'
2210
+ // }
2211
+ // }
2212
+ //
2213
+ return [
2214
+ this.safeOrder({
2215
+ 'info': response,
2216
+ }),
2217
+ ];
2191
2218
  }
2192
2219
  async cancelAllOrdersAfter(timeout, params = {}) {
2193
2220
  /**
@@ -20,7 +20,7 @@ export default class krakenfutures extends Exchange {
20
20
  editOrder(id: string, symbol: string, type: OrderType, side: OrderSide, amount?: Num, price?: Num, params?: {}): Promise<Order>;
21
21
  cancelOrder(id: string, symbol?: Str, params?: {}): Promise<any>;
22
22
  cancelOrders(ids: string[], symbol?: Str, params?: {}): Promise<Order[]>;
23
- cancelAllOrders(symbol?: Str, params?: {}): Promise<any>;
23
+ cancelAllOrders(symbol?: Str, params?: {}): Promise<Order[]>;
24
24
  cancelAllOrdersAfter(timeout: Int, params?: {}): Promise<any>;
25
25
  fetchOpenOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
26
26
  fetchClosedOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
@@ -1272,7 +1272,46 @@ export default class krakenfutures extends Exchange {
1272
1272
  request['symbol'] = this.marketId(symbol);
1273
1273
  }
1274
1274
  const response = await this.privatePostCancelallorders(this.extend(request, params));
1275
- return response;
1275
+ //
1276
+ // {
1277
+ // result: 'success',
1278
+ // cancelStatus: {
1279
+ // receivedTime: '2024-06-06T01:12:44.814Z',
1280
+ // cancelOnly: 'PF_XRPUSD',
1281
+ // status: 'cancelled',
1282
+ // cancelledOrders: [ { order_id: '272fd0ac-45c0-4003-b84d-d39b9e86bd36' } ],
1283
+ // orderEvents: [
1284
+ // {
1285
+ // uid: '272fd0ac-45c0-4003-b84d-d39b9e86bd36',
1286
+ // order: {
1287
+ // orderId: '272fd0ac-45c0-4003-b84d-d39b9e86bd36',
1288
+ // cliOrdId: null,
1289
+ // type: 'lmt',
1290
+ // symbol: 'PF_XRPUSD',
1291
+ // side: 'buy',
1292
+ // quantity: '10',
1293
+ // filled: '0',
1294
+ // limitPrice: '0.4',
1295
+ // reduceOnly: false,
1296
+ // timestamp: '2024-06-06T01:11:16.045Z',
1297
+ // lastUpdateTimestamp: '2024-06-06T01:11:16.045Z'
1298
+ // },
1299
+ // type: 'CANCEL'
1300
+ // }
1301
+ // ]
1302
+ // },
1303
+ // serverTime: '2024-06-06T01:12:44.814Z'
1304
+ // }
1305
+ //
1306
+ const cancelStatus = this.safeDict(response, 'cancelStatus');
1307
+ const orderEvents = this.safeList(cancelStatus, 'orderEvents', []);
1308
+ const orders = [];
1309
+ for (let i = 0; i < orderEvents.length; i++) {
1310
+ const orderEvent = this.safeDict(orderEvents, 0);
1311
+ const order = this.safeDict(orderEvent, 'order', {});
1312
+ orders.push(order);
1313
+ }
1314
+ return this.parseOrders(orders);
1276
1315
  }
1277
1316
  async cancelAllOrdersAfter(timeout, params = {}) {
1278
1317
  /**
@@ -1640,6 +1679,22 @@ export default class krakenfutures extends Exchange {
1640
1679
  // ]
1641
1680
  // }
1642
1681
  //
1682
+ // cancelAllOrders
1683
+ //
1684
+ // {
1685
+ // "orderId": "85c40002-3f20-4e87-9302-262626c3531b",
1686
+ // "cliOrdId": null,
1687
+ // "type": "lmt",
1688
+ // "symbol": "pi_xbtusd",
1689
+ // "side": "buy",
1690
+ // "quantity": 1000,
1691
+ // "filled": 0,
1692
+ // "limitPrice": 10144,
1693
+ // "stopPrice": null,
1694
+ // "reduceOnly": false,
1695
+ // "timestamp": "2019-08-01T15:26:27.790Z"
1696
+ // }
1697
+ //
1643
1698
  // FETCH OPEN ORDERS
1644
1699
  //
1645
1700
  // {
@@ -63,7 +63,7 @@ export default class kucoin extends Exchange {
63
63
  marketOrderAmountToPrecision(symbol: string, amount: any): string;
64
64
  createOrderRequest(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: Num, params?: {}): any;
65
65
  editOrder(id: string, symbol: string, type: OrderType, side: OrderSide, amount?: Num, price?: Num, params?: {}): Promise<Order>;
66
- cancelOrder(id: string, symbol?: Str, params?: {}): Promise<any>;
66
+ cancelOrder(id: string, symbol?: Str, params?: {}): Promise<Order>;
67
67
  cancelAllOrders(symbol?: Str, params?: {}): Promise<any>;
68
68
  fetchOrdersByStatus(status: any, symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
69
69
  fetchClosedOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
package/js/src/kucoin.js CHANGED
@@ -2333,27 +2333,84 @@ export default class kucoin extends Exchange {
2333
2333
  request['clientOid'] = clientOrderId;
2334
2334
  if (stop) {
2335
2335
  response = await this.privateDeleteStopOrderCancelOrderByClientOid(this.extend(request, params));
2336
+ //
2337
+ // {
2338
+ // code: '200000',
2339
+ // data: {
2340
+ // cancelledOrderId: 'vs8lgpiuao41iaft003khbbk',
2341
+ // clientOid: '123456'
2342
+ // }
2343
+ // }
2344
+ //
2336
2345
  }
2337
2346
  else if (hf) {
2338
2347
  response = await this.privateDeleteHfOrdersClientOrderClientOid(this.extend(request, params));
2348
+ //
2349
+ // {
2350
+ // "code": "200000",
2351
+ // "data": {
2352
+ // "clientOid": "6d539dc614db3"
2353
+ // }
2354
+ // }
2355
+ //
2339
2356
  }
2340
2357
  else {
2341
2358
  response = await this.privateDeleteOrderClientOrderClientOid(this.extend(request, params));
2359
+ //
2360
+ // {
2361
+ // code: '200000',
2362
+ // data: {
2363
+ // cancelledOrderId: '665e580f6660500007aba341',
2364
+ // clientOid: '1234567',
2365
+ // cancelledOcoOrderIds: null
2366
+ // }
2367
+ // }
2368
+ //
2342
2369
  }
2370
+ response = this.safeDict(response, 'data');
2371
+ return this.parseOrder(response);
2343
2372
  }
2344
2373
  else {
2345
2374
  request['orderId'] = id;
2346
2375
  if (stop) {
2347
2376
  response = await this.privateDeleteStopOrderOrderId(this.extend(request, params));
2377
+ //
2378
+ // {
2379
+ // code: '200000',
2380
+ // data: { cancelledOrderIds: [ 'vs8lgpiuaco91qk8003vebu9' ] }
2381
+ // }
2382
+ //
2348
2383
  }
2349
2384
  else if (hf) {
2350
2385
  response = await this.privateDeleteHfOrdersOrderId(this.extend(request, params));
2386
+ //
2387
+ // {
2388
+ // "code": "200000",
2389
+ // "data": {
2390
+ // "orderId": "630625dbd9180300014c8d52"
2391
+ // }
2392
+ // }
2393
+ //
2394
+ response = this.safeDict(response, 'data');
2395
+ return this.parseOrder(response);
2351
2396
  }
2352
2397
  else {
2353
2398
  response = await this.privateDeleteOrdersOrderId(this.extend(request, params));
2399
+ //
2400
+ // {
2401
+ // code: '200000',
2402
+ // data: { cancelledOrderIds: [ '665e4fbe28051a0007245c41' ] }
2403
+ // }
2404
+ //
2354
2405
  }
2406
+ const data = this.safeDict(response, 'data');
2407
+ const orderIds = this.safeList(data, 'cancelledOrderIds', []);
2408
+ const orderId = this.safeString(orderIds, 0);
2409
+ return this.safeOrder({
2410
+ 'info': data,
2411
+ 'id': orderId,
2412
+ });
2355
2413
  }
2356
- return response;
2357
2414
  }
2358
2415
  async cancelAllOrders(symbol = undefined, params = {}) {
2359
2416
  /**
@@ -2821,7 +2878,7 @@ export default class kucoin extends Exchange {
2821
2878
  const stopPrice = this.safeNumber(order, 'stopPrice');
2822
2879
  return this.safeOrder({
2823
2880
  'info': order,
2824
- 'id': this.safeStringN(order, ['id', 'orderId', 'newOrderId']),
2881
+ 'id': this.safeStringN(order, ['id', 'orderId', 'newOrderId', 'cancelledOrderId']),
2825
2882
  'clientOrderId': this.safeString(order, 'clientOid'),
2826
2883
  'symbol': this.safeSymbol(marketId, market, '-'),
2827
2884
  'type': this.safeString(order, 'type'),
package/js/src/okx.js CHANGED
@@ -348,6 +348,9 @@ export default class okx extends Exchange {
348
348
  'account/greeks': 2,
349
349
  'account/position-tiers': 2,
350
350
  'account/mmp-config': 4,
351
+ 'account/fixed-loan/borrowing-limit': 4,
352
+ 'account/fixed-loan/borrowing-quote': 5,
353
+ 'account/fixed-loan/borrowing-orders-list': 5,
351
354
  // subaccount
352
355
  'users/subaccount/list': 10,
353
356
  'account/subaccount/balances': 10 / 3,
@@ -473,6 +476,10 @@ export default class okx extends Exchange {
473
476
  'account/set-account-level': 4,
474
477
  'account/mmp-reset': 4,
475
478
  'account/mmp-config': 100,
479
+ 'account/fixed-loan/borrowing-order': 5,
480
+ 'account/fixed-loan/amend-borrowing-order': 5,
481
+ 'account/fixed-loan/manual-reborrow': 5,
482
+ 'account/fixed-loan/repay-borrowing-order': 5,
476
483
  // subaccount
477
484
  'users/subaccount/modify-apikey': 10,
478
485
  'asset/subaccount/transfer': 10,
@@ -228,17 +228,17 @@ export default class alpaca extends alpacaRest {
228
228
  const datetime = this.safeString(message, 't');
229
229
  const timestamp = this.parse8601(datetime);
230
230
  const isSnapshot = this.safeBool(message, 'r', false);
231
- let orderbook = this.safeValue(this.orderbooks, symbol);
232
- if (orderbook === undefined) {
233
- orderbook = this.orderBook();
231
+ if (!(symbol in this.orderbooks)) {
232
+ this.orderbooks[symbol] = this.orderBook();
234
233
  }
234
+ const orderbook = this.orderbooks[symbol];
235
235
  if (isSnapshot) {
236
236
  const snapshot = this.parseOrderBook(message, symbol, timestamp, 'b', 'a', 'p', 's');
237
237
  orderbook.reset(snapshot);
238
238
  }
239
239
  else {
240
- const asks = this.safeValue(message, 'a', []);
241
- const bids = this.safeValue(message, 'b', []);
240
+ const asks = this.safeList(message, 'a', []);
241
+ const bids = this.safeList(message, 'b', []);
242
242
  this.handleDeltas(orderbook['asks'], asks);
243
243
  this.handleDeltas(orderbook['bids'], bids);
244
244
  orderbook['timestamp'] = timestamp;
@@ -296,10 +296,10 @@ export default class ascendex extends ascendexRest {
296
296
  const marketId = this.safeString(message, 'symbol');
297
297
  const symbol = this.safeSymbol(marketId);
298
298
  const messageHash = channel + ':' + marketId;
299
- let orderbook = this.safeValue(this.orderbooks, symbol);
300
- if (orderbook === undefined) {
301
- orderbook = this.orderBook({});
299
+ if (!(symbol in this.orderbooks)) {
300
+ this.orderbooks[symbol] = this.orderBook({});
302
301
  }
302
+ const orderbook = this.orderbooks[symbol];
303
303
  if (orderbook['nonce'] === undefined) {
304
304
  orderbook.cache.push(message);
305
305
  }
@@ -1,11 +1,16 @@
1
1
  import bingxRest from '../bingx.js';
2
- import type { Int, OHLCV, Str, OrderBook, Order, Trade, Balances, Ticker } from '../base/types.js';
2
+ import type { Int, OHLCV, Str, Strings, OrderBook, Order, Trade, Balances, Ticker, Tickers } from '../base/types.js';
3
3
  import Client from '../base/ws/Client.js';
4
4
  export default class bingx extends bingxRest {
5
5
  describe(): any;
6
6
  watchTicker(symbol: string, params?: {}): Promise<Ticker>;
7
7
  handleTicker(client: Client, message: any): void;
8
8
  parseWsTicker(message: any, market?: any): Ticker;
9
+ watchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
10
+ watchOrderBookForSymbols(symbols: string[], limit?: Int, params?: {}): Promise<OrderBook>;
11
+ watchOHLCVForSymbols(symbolsAndTimeframes: string[][], since?: Int, limit?: Int, params?: {}): Promise<import("../base/types.js").Dictionary<import("../base/types.js").Dictionary<OHLCV[]>>>;
12
+ getOrderBookLimitByMarketType(marketType: string, limit?: Int): number;
13
+ getMessageHash(unifiedChannel: string, symbol?: Str, extra?: Str): string;
9
14
  watchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
10
15
  handleTrades(client: Client, message: any): void;
11
16
  watchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;