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
@@ -385,6 +385,21 @@ class independentreserve extends independentreserve$1 {
385
385
  // "FeePercent": 0.005,
386
386
  // }
387
387
  //
388
+ // cancelOrder
389
+ //
390
+ // {
391
+ // "AvgPrice": 455.48,
392
+ // "CreatedTimestampUtc": "2022-08-05T06:42:11.3032208Z",
393
+ // "OrderGuid": "719c495c-a39e-4884-93ac-280b37245037",
394
+ // "Price": 485.76,
395
+ // "PrimaryCurrencyCode": "Xbt",
396
+ // "ReservedAmount": 0.358,
397
+ // "SecondaryCurrencyCode": "Usd",
398
+ // "Status": "Cancelled",
399
+ // "Type": "LimitOffer",
400
+ // "VolumeFilled": 0,
401
+ // "VolumeOrdered": 0.358
402
+ // }
388
403
  let symbol = undefined;
389
404
  const baseId = this.safeString(order, 'PrimaryCurrencyCode');
390
405
  const quoteId = this.safeString(order, 'SecondaryCurrencyCode');
@@ -715,6 +730,7 @@ class independentreserve extends independentreserve$1 {
715
730
  * @method
716
731
  * @name independentreserve#cancelOrder
717
732
  * @description cancels an open order
733
+ * @see https://www.independentreserve.com/features/api#CancelOrder
718
734
  * @param {string} id order id
719
735
  * @param {string} symbol unified symbol of the market the order was made in
720
736
  * @param {object} [params] extra parameters specific to the exchange API endpoint
@@ -724,7 +740,23 @@ class independentreserve extends independentreserve$1 {
724
740
  const request = {
725
741
  'orderGuid': id,
726
742
  };
727
- return await this.privatePostCancelOrder(this.extend(request, params));
743
+ const response = await this.privatePostCancelOrder(this.extend(request, params));
744
+ //
745
+ // {
746
+ // "AvgPrice": 455.48,
747
+ // "CreatedTimestampUtc": "2022-08-05T06:42:11.3032208Z",
748
+ // "OrderGuid": "719c495c-a39e-4884-93ac-280b37245037",
749
+ // "Price": 485.76,
750
+ // "PrimaryCurrencyCode": "Xbt",
751
+ // "ReservedAmount": 0.358,
752
+ // "SecondaryCurrencyCode": "Usd",
753
+ // "Status": "Cancelled",
754
+ // "Type": "LimitOffer",
755
+ // "VolumeFilled": 0,
756
+ // "VolumeOrdered": 0.358
757
+ // }
758
+ //
759
+ return this.parseOrder(response);
728
760
  }
729
761
  async fetchDepositAddress(code, params = {}) {
730
762
  /**
@@ -653,6 +653,24 @@ class indodax extends indodax$1 {
653
653
  // "order_xrp": "30.45000000",
654
654
  // "remain_xrp": "0.00000000"
655
655
  // }
656
+ //
657
+ // cancelOrder
658
+ //
659
+ // {
660
+ // "order_id": 666883,
661
+ // "client_order_id": "clientx-sj82ks82j",
662
+ // "type": "sell",
663
+ // "pair": "btc_idr",
664
+ // "balance": {
665
+ // "idr": "33605800",
666
+ // "btc": "0.00000000",
667
+ // ...
668
+ // "frozen_idr": "0",
669
+ // "frozen_btc": "0.00000000",
670
+ // ...
671
+ // }
672
+ // }
673
+ //
656
674
  let side = undefined;
657
675
  if ('type' in order) {
658
676
  side = order['type'];
@@ -663,6 +681,8 @@ class indodax extends indodax$1 {
663
681
  const price = this.safeString(order, 'price');
664
682
  let amount = undefined;
665
683
  let remaining = undefined;
684
+ const marketId = this.safeString(order, 'pair');
685
+ market = this.safeMarket(marketId, market);
666
686
  if (market !== undefined) {
667
687
  symbol = market['symbol'];
668
688
  let quoteId = market['quoteId'];
@@ -685,7 +705,7 @@ class indodax extends indodax$1 {
685
705
  return this.safeOrder({
686
706
  'info': order,
687
707
  'id': id,
688
- 'clientOrderId': undefined,
708
+ 'clientOrderId': this.safeString(order, 'client_order_id'),
689
709
  'timestamp': timestamp,
690
710
  'datetime': this.iso8601(timestamp),
691
711
  'lastTradeTimestamp': undefined,
@@ -863,7 +883,28 @@ class indodax extends indodax$1 {
863
883
  'pair': market['id'],
864
884
  'type': side,
865
885
  };
866
- return await this.privatePostCancelOrder(this.extend(request, params));
886
+ const response = await this.privatePostCancelOrder(this.extend(request, params));
887
+ //
888
+ // {
889
+ // "success": 1,
890
+ // "return": {
891
+ // "order_id": 666883,
892
+ // "client_order_id": "clientx-sj82ks82j",
893
+ // "type": "sell",
894
+ // "pair": "btc_idr",
895
+ // "balance": {
896
+ // "idr": "33605800",
897
+ // "btc": "0.00000000",
898
+ // ...
899
+ // "frozen_idr": "0",
900
+ // "frozen_btc": "0.00000000",
901
+ // ...
902
+ // }
903
+ // }
904
+ // }
905
+ //
906
+ const data = this.safeDict(response, 'return');
907
+ return this.parseOrder(data);
867
908
  }
868
909
  async fetchTransactionFee(code, params = {}) {
869
910
  /**
@@ -2137,6 +2137,14 @@ class kraken extends kraken$1 {
2137
2137
  params = this.omit(params, ['userref', 'clientOrderId']);
2138
2138
  try {
2139
2139
  response = await this.privatePostCancelOrder(this.extend(request, params));
2140
+ //
2141
+ // {
2142
+ // error: [],
2143
+ // result: {
2144
+ // count: '1'
2145
+ // }
2146
+ // }
2147
+ //
2140
2148
  }
2141
2149
  catch (e) {
2142
2150
  if (this.last_http_response) {
@@ -2146,7 +2154,9 @@ class kraken extends kraken$1 {
2146
2154
  }
2147
2155
  throw e;
2148
2156
  }
2149
- return response;
2157
+ return this.safeOrder({
2158
+ 'info': response,
2159
+ });
2150
2160
  }
2151
2161
  async cancelOrders(ids, symbol = undefined, params = {}) {
2152
2162
  /**
@@ -2171,7 +2181,11 @@ class kraken extends kraken$1 {
2171
2181
  // }
2172
2182
  // }
2173
2183
  //
2174
- return response;
2184
+ return [
2185
+ this.safeOrder({
2186
+ 'info': response,
2187
+ }),
2188
+ ];
2175
2189
  }
2176
2190
  async cancelAllOrders(symbol = undefined, params = {}) {
2177
2191
  /**
@@ -2184,7 +2198,20 @@ class kraken extends kraken$1 {
2184
2198
  * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
2185
2199
  */
2186
2200
  await this.loadMarkets();
2187
- return await this.privatePostCancelAll(params);
2201
+ const response = await this.privatePostCancelAll(params);
2202
+ //
2203
+ // {
2204
+ // error: [],
2205
+ // result: {
2206
+ // count: '1'
2207
+ // }
2208
+ // }
2209
+ //
2210
+ return [
2211
+ this.safeOrder({
2212
+ 'info': response,
2213
+ }),
2214
+ ];
2188
2215
  }
2189
2216
  async cancelAllOrdersAfter(timeout, params = {}) {
2190
2217
  /**
@@ -1269,7 +1269,46 @@ class krakenfutures extends krakenfutures$1 {
1269
1269
  request['symbol'] = this.marketId(symbol);
1270
1270
  }
1271
1271
  const response = await this.privatePostCancelallorders(this.extend(request, params));
1272
- return response;
1272
+ //
1273
+ // {
1274
+ // result: 'success',
1275
+ // cancelStatus: {
1276
+ // receivedTime: '2024-06-06T01:12:44.814Z',
1277
+ // cancelOnly: 'PF_XRPUSD',
1278
+ // status: 'cancelled',
1279
+ // cancelledOrders: [ { order_id: '272fd0ac-45c0-4003-b84d-d39b9e86bd36' } ],
1280
+ // orderEvents: [
1281
+ // {
1282
+ // uid: '272fd0ac-45c0-4003-b84d-d39b9e86bd36',
1283
+ // order: {
1284
+ // orderId: '272fd0ac-45c0-4003-b84d-d39b9e86bd36',
1285
+ // cliOrdId: null,
1286
+ // type: 'lmt',
1287
+ // symbol: 'PF_XRPUSD',
1288
+ // side: 'buy',
1289
+ // quantity: '10',
1290
+ // filled: '0',
1291
+ // limitPrice: '0.4',
1292
+ // reduceOnly: false,
1293
+ // timestamp: '2024-06-06T01:11:16.045Z',
1294
+ // lastUpdateTimestamp: '2024-06-06T01:11:16.045Z'
1295
+ // },
1296
+ // type: 'CANCEL'
1297
+ // }
1298
+ // ]
1299
+ // },
1300
+ // serverTime: '2024-06-06T01:12:44.814Z'
1301
+ // }
1302
+ //
1303
+ const cancelStatus = this.safeDict(response, 'cancelStatus');
1304
+ const orderEvents = this.safeList(cancelStatus, 'orderEvents', []);
1305
+ const orders = [];
1306
+ for (let i = 0; i < orderEvents.length; i++) {
1307
+ const orderEvent = this.safeDict(orderEvents, 0);
1308
+ const order = this.safeDict(orderEvent, 'order', {});
1309
+ orders.push(order);
1310
+ }
1311
+ return this.parseOrders(orders);
1273
1312
  }
1274
1313
  async cancelAllOrdersAfter(timeout, params = {}) {
1275
1314
  /**
@@ -1637,6 +1676,22 @@ class krakenfutures extends krakenfutures$1 {
1637
1676
  // ]
1638
1677
  // }
1639
1678
  //
1679
+ // cancelAllOrders
1680
+ //
1681
+ // {
1682
+ // "orderId": "85c40002-3f20-4e87-9302-262626c3531b",
1683
+ // "cliOrdId": null,
1684
+ // "type": "lmt",
1685
+ // "symbol": "pi_xbtusd",
1686
+ // "side": "buy",
1687
+ // "quantity": 1000,
1688
+ // "filled": 0,
1689
+ // "limitPrice": 10144,
1690
+ // "stopPrice": null,
1691
+ // "reduceOnly": false,
1692
+ // "timestamp": "2019-08-01T15:26:27.790Z"
1693
+ // }
1694
+ //
1640
1695
  // FETCH OPEN ORDERS
1641
1696
  //
1642
1697
  // {
@@ -2330,27 +2330,84 @@ class kucoin extends kucoin$1 {
2330
2330
  request['clientOid'] = clientOrderId;
2331
2331
  if (stop) {
2332
2332
  response = await this.privateDeleteStopOrderCancelOrderByClientOid(this.extend(request, params));
2333
+ //
2334
+ // {
2335
+ // code: '200000',
2336
+ // data: {
2337
+ // cancelledOrderId: 'vs8lgpiuao41iaft003khbbk',
2338
+ // clientOid: '123456'
2339
+ // }
2340
+ // }
2341
+ //
2333
2342
  }
2334
2343
  else if (hf) {
2335
2344
  response = await this.privateDeleteHfOrdersClientOrderClientOid(this.extend(request, params));
2345
+ //
2346
+ // {
2347
+ // "code": "200000",
2348
+ // "data": {
2349
+ // "clientOid": "6d539dc614db3"
2350
+ // }
2351
+ // }
2352
+ //
2336
2353
  }
2337
2354
  else {
2338
2355
  response = await this.privateDeleteOrderClientOrderClientOid(this.extend(request, params));
2356
+ //
2357
+ // {
2358
+ // code: '200000',
2359
+ // data: {
2360
+ // cancelledOrderId: '665e580f6660500007aba341',
2361
+ // clientOid: '1234567',
2362
+ // cancelledOcoOrderIds: null
2363
+ // }
2364
+ // }
2365
+ //
2339
2366
  }
2367
+ response = this.safeDict(response, 'data');
2368
+ return this.parseOrder(response);
2340
2369
  }
2341
2370
  else {
2342
2371
  request['orderId'] = id;
2343
2372
  if (stop) {
2344
2373
  response = await this.privateDeleteStopOrderOrderId(this.extend(request, params));
2374
+ //
2375
+ // {
2376
+ // code: '200000',
2377
+ // data: { cancelledOrderIds: [ 'vs8lgpiuaco91qk8003vebu9' ] }
2378
+ // }
2379
+ //
2345
2380
  }
2346
2381
  else if (hf) {
2347
2382
  response = await this.privateDeleteHfOrdersOrderId(this.extend(request, params));
2383
+ //
2384
+ // {
2385
+ // "code": "200000",
2386
+ // "data": {
2387
+ // "orderId": "630625dbd9180300014c8d52"
2388
+ // }
2389
+ // }
2390
+ //
2391
+ response = this.safeDict(response, 'data');
2392
+ return this.parseOrder(response);
2348
2393
  }
2349
2394
  else {
2350
2395
  response = await this.privateDeleteOrdersOrderId(this.extend(request, params));
2396
+ //
2397
+ // {
2398
+ // code: '200000',
2399
+ // data: { cancelledOrderIds: [ '665e4fbe28051a0007245c41' ] }
2400
+ // }
2401
+ //
2351
2402
  }
2403
+ const data = this.safeDict(response, 'data');
2404
+ const orderIds = this.safeList(data, 'cancelledOrderIds', []);
2405
+ const orderId = this.safeString(orderIds, 0);
2406
+ return this.safeOrder({
2407
+ 'info': data,
2408
+ 'id': orderId,
2409
+ });
2352
2410
  }
2353
- return response;
2354
2411
  }
2355
2412
  async cancelAllOrders(symbol = undefined, params = {}) {
2356
2413
  /**
@@ -2818,7 +2875,7 @@ class kucoin extends kucoin$1 {
2818
2875
  const stopPrice = this.safeNumber(order, 'stopPrice');
2819
2876
  return this.safeOrder({
2820
2877
  'info': order,
2821
- 'id': this.safeStringN(order, ['id', 'orderId', 'newOrderId']),
2878
+ 'id': this.safeStringN(order, ['id', 'orderId', 'newOrderId', 'cancelledOrderId']),
2822
2879
  'clientOrderId': this.safeString(order, 'clientOid'),
2823
2880
  'symbol': this.safeSymbol(marketId, market, '-'),
2824
2881
  'type': this.safeString(order, 'type'),
@@ -345,6 +345,9 @@ class okx extends okx$1 {
345
345
  'account/greeks': 2,
346
346
  'account/position-tiers': 2,
347
347
  'account/mmp-config': 4,
348
+ 'account/fixed-loan/borrowing-limit': 4,
349
+ 'account/fixed-loan/borrowing-quote': 5,
350
+ 'account/fixed-loan/borrowing-orders-list': 5,
348
351
  // subaccount
349
352
  'users/subaccount/list': 10,
350
353
  'account/subaccount/balances': 10 / 3,
@@ -470,6 +473,10 @@ class okx extends okx$1 {
470
473
  'account/set-account-level': 4,
471
474
  'account/mmp-reset': 4,
472
475
  'account/mmp-config': 100,
476
+ 'account/fixed-loan/borrowing-order': 5,
477
+ 'account/fixed-loan/amend-borrowing-order': 5,
478
+ 'account/fixed-loan/manual-reborrow': 5,
479
+ 'account/fixed-loan/repay-borrowing-order': 5,
473
480
  // subaccount
474
481
  'users/subaccount/modify-apikey': 10,
475
482
  'asset/subaccount/transfer': 10,
@@ -225,17 +225,17 @@ class alpaca extends alpaca$1 {
225
225
  const datetime = this.safeString(message, 't');
226
226
  const timestamp = this.parse8601(datetime);
227
227
  const isSnapshot = this.safeBool(message, 'r', false);
228
- let orderbook = this.safeValue(this.orderbooks, symbol);
229
- if (orderbook === undefined) {
230
- orderbook = this.orderBook();
228
+ if (!(symbol in this.orderbooks)) {
229
+ this.orderbooks[symbol] = this.orderBook();
231
230
  }
231
+ const orderbook = this.orderbooks[symbol];
232
232
  if (isSnapshot) {
233
233
  const snapshot = this.parseOrderBook(message, symbol, timestamp, 'b', 'a', 'p', 's');
234
234
  orderbook.reset(snapshot);
235
235
  }
236
236
  else {
237
- const asks = this.safeValue(message, 'a', []);
238
- const bids = this.safeValue(message, 'b', []);
237
+ const asks = this.safeList(message, 'a', []);
238
+ const bids = this.safeList(message, 'b', []);
239
239
  this.handleDeltas(orderbook['asks'], asks);
240
240
  this.handleDeltas(orderbook['bids'], bids);
241
241
  orderbook['timestamp'] = timestamp;
@@ -293,10 +293,10 @@ class ascendex extends ascendex$1 {
293
293
  const marketId = this.safeString(message, 'symbol');
294
294
  const symbol = this.safeSymbol(marketId);
295
295
  const messageHash = channel + ':' + marketId;
296
- let orderbook = this.safeValue(this.orderbooks, symbol);
297
- if (orderbook === undefined) {
298
- orderbook = this.orderBook({});
296
+ if (!(symbol in this.orderbooks)) {
297
+ this.orderbooks[symbol] = this.orderBook({});
299
298
  }
299
+ const orderbook = this.orderbooks[symbol];
300
300
  if (orderbook['nonce'] === undefined) {
301
301
  orderbook.cache.push(message);
302
302
  }