ccxt 4.4.69 → 4.4.71

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 (80) hide show
  1. package/README.md +5 -8
  2. package/dist/ccxt.browser.min.js +7 -7
  3. package/dist/cjs/ccxt.js +1 -6
  4. package/dist/cjs/src/abstract/poloniexfutures.js +1 -1
  5. package/dist/cjs/src/base/Exchange.js +22 -1
  6. package/dist/cjs/src/binance.js +107 -102
  7. package/dist/cjs/src/bingx.js +64 -42
  8. package/dist/cjs/src/bitget.js +50 -340
  9. package/dist/cjs/src/bitmart.js +15 -1
  10. package/dist/cjs/src/bitopro.js +1 -0
  11. package/dist/cjs/src/bitrue.js +1 -0
  12. package/dist/cjs/src/bybit.js +7 -0
  13. package/dist/cjs/src/cex.js +1 -0
  14. package/dist/cjs/src/coinbase.js +24 -4
  15. package/dist/cjs/src/coinbaseexchange.js +1 -0
  16. package/dist/cjs/src/deribit.js +1 -0
  17. package/dist/cjs/src/hashkey.js +4 -2
  18. package/dist/cjs/src/hyperliquid.js +18 -7
  19. package/dist/cjs/src/kraken.js +83 -6
  20. package/dist/cjs/src/kucoin.js +4 -2
  21. package/dist/cjs/src/mexc.js +8 -4
  22. package/dist/cjs/src/okx.js +62 -46
  23. package/dist/cjs/src/poloniex.js +1311 -81
  24. package/dist/cjs/src/poloniexfutures.js +1 -1
  25. package/dist/cjs/src/pro/binance.js +94 -94
  26. package/dist/cjs/src/pro/bingx.js +63 -52
  27. package/dist/cjs/src/pro/bitget.js +40 -7
  28. package/dist/cjs/src/pro/bybit.js +86 -38
  29. package/dist/cjs/src/pro/poloniexfutures.js +1 -1
  30. package/dist/cjs/src/tradeogre.js +22 -4
  31. package/dist/cjs/src/whitebit.js +4 -2
  32. package/js/ccxt.d.ts +3 -9
  33. package/js/ccxt.js +2 -6
  34. package/js/src/abstract/bingx.d.ts +1 -0
  35. package/js/src/abstract/bitmart.d.ts +1 -0
  36. package/js/src/abstract/bybit.d.ts +4 -0
  37. package/js/src/abstract/myokx.d.ts +3 -0
  38. package/js/src/abstract/okx.d.ts +3 -0
  39. package/js/src/abstract/poloniex.d.ts +36 -0
  40. package/js/src/abstract/poloniexfutures.js +6 -0
  41. package/js/src/abstract/tradeogre.d.ts +1 -1
  42. package/js/src/base/Exchange.d.ts +11 -2
  43. package/js/src/base/Exchange.js +22 -1
  44. package/js/src/base/types.d.ts +33 -2
  45. package/js/src/binance.d.ts +98 -97
  46. package/js/src/binance.js +107 -102
  47. package/js/src/bingx.js +64 -42
  48. package/js/src/bitget.d.ts +0 -1
  49. package/js/src/bitget.js +50 -340
  50. package/js/src/bitmart.d.ts +1 -0
  51. package/js/src/bitmart.js +15 -1
  52. package/js/src/bitopro.js +1 -0
  53. package/js/src/bitrue.js +1 -0
  54. package/js/src/bybit.js +7 -0
  55. package/js/src/cex.js +1 -0
  56. package/js/src/coinbase.js +24 -4
  57. package/js/src/coinbaseexchange.js +1 -0
  58. package/js/src/deribit.js +1 -0
  59. package/js/src/hashkey.js +4 -2
  60. package/js/src/hyperliquid.js +18 -7
  61. package/js/src/kraken.d.ts +1 -0
  62. package/js/src/kraken.js +83 -6
  63. package/js/src/kucoin.js +4 -2
  64. package/js/src/mexc.js +8 -4
  65. package/js/src/okx.d.ts +1 -0
  66. package/js/src/okx.js +62 -46
  67. package/js/src/poloniex.d.ts +109 -1
  68. package/js/src/poloniex.js +1311 -81
  69. package/js/src/poloniexfutures.js +6 -0
  70. package/js/src/pro/binance.d.ts +94 -94
  71. package/js/src/pro/binance.js +94 -94
  72. package/js/src/pro/bingx.js +63 -52
  73. package/js/src/pro/bitget.js +40 -7
  74. package/js/src/pro/bybit.d.ts +1 -0
  75. package/js/src/pro/bybit.js +86 -38
  76. package/js/src/pro/poloniexfutures.js +6 -0
  77. package/js/src/tradeogre.d.ts +1 -0
  78. package/js/src/tradeogre.js +22 -4
  79. package/js/src/whitebit.js +4 -2
  80. package/package.json +1 -1
@@ -42,6 +42,7 @@ class bitmart extends bitmart$1 {
42
42
  'createOrder': true,
43
43
  'createOrders': true,
44
44
  'createPostOnlyOrder': true,
45
+ 'createReduceOnlyOrder': true,
45
46
  'createStopLimitOrder': false,
46
47
  'createStopMarketOrder': false,
47
48
  'createStopOrder': false,
@@ -259,6 +260,7 @@ class bitmart extends bitmart$1 {
259
260
  'contract/private/submit-tp-sl-order': 2.5,
260
261
  'contract/private/modify-plan-order': 2.5,
261
262
  'contract/private/modify-preset-plan-order': 2.5,
263
+ 'contract/private/modify-limit-order': 2.5,
262
264
  'contract/private/modify-tp-sl-order': 2.5,
263
265
  'contract/private/submit-trail-order': 2.5,
264
266
  'contract/private/cancel-trail-order': 1.5, // weight is not provided by the exchange, is set as ordinary order
@@ -5119,6 +5121,7 @@ class bitmart extends bitmart$1 {
5119
5121
  * @see https://developer-pro.bitmart.com/en/futuresv2/#modify-plan-order-signed
5120
5122
  * @see https://developer-pro.bitmart.com/en/futuresv2/#modify-tp-sl-order-signed
5121
5123
  * @see https://developer-pro.bitmart.com/en/futuresv2/#modify-preset-plan-order-signed
5124
+ * @see https://developer-pro.bitmart.com/en/futuresv2/#modify-limit-order-signed
5122
5125
  * @param {string} id order id
5123
5126
  * @param {string} symbol unified symbol of the market to edit an order in
5124
5127
  * @param {string} type 'market' or 'limit'
@@ -5154,6 +5157,7 @@ class bitmart extends bitmart$1 {
5154
5157
  const isTakeProfit = takeProfitPrice !== undefined;
5155
5158
  const isPresetStopLoss = presetStopLoss !== undefined;
5156
5159
  const isPresetTakeProfit = presetTakeProfit !== undefined;
5160
+ const isLimitOrder = (type === 'limit');
5157
5161
  const request = {
5158
5162
  'symbol': market['id'],
5159
5163
  };
@@ -5229,8 +5233,18 @@ class bitmart extends bitmart$1 {
5229
5233
  // }
5230
5234
  //
5231
5235
  }
5236
+ else if (isLimitOrder) {
5237
+ request['order_id'] = this.parseToInt(id); // reparse id as int this endpoint is the only one requiring it
5238
+ if (amount !== undefined) {
5239
+ request['size'] = this.amountToPrecision(symbol, amount);
5240
+ }
5241
+ if (price !== undefined) {
5242
+ request['price'] = this.priceToPrecision(symbol, price);
5243
+ }
5244
+ response = await this.privatePostContractPrivateModifyLimitOrder(this.extend(request, params));
5245
+ }
5232
5246
  else {
5233
- throw new errors.NotSupported(this.id + ' editOrder() only supports trigger, stop loss and take profit orders');
5247
+ throw new errors.NotSupported(this.id + ' editOrder() only supports limit, trigger, stop loss and take profit orders');
5234
5248
  }
5235
5249
  const data = this.safeDict(response, 'data', {});
5236
5250
  return this.parseOrder(data, market);
@@ -34,6 +34,7 @@ class bitopro extends bitopro$1 {
34
34
  'closeAllPositions': false,
35
35
  'closePosition': false,
36
36
  'createOrder': true,
37
+ 'createReduceOnlyOrder': false,
37
38
  'createStopOrder': true,
38
39
  'createTriggerOrder': true,
39
40
  'editOrder': false,
@@ -36,6 +36,7 @@ class bitrue extends bitrue$1 {
36
36
  'createMarketOrderWithCost': false,
37
37
  'createMarketSellOrderWithCost': false,
38
38
  'createOrder': true,
39
+ 'createReduceOnlyOrder': true,
39
40
  'createStopLimitOrder': true,
40
41
  'createStopMarketOrder': true,
41
42
  'createStopOrder': true,
@@ -249,6 +249,8 @@ class bybit extends bybit$1 {
249
249
  // institutional lending
250
250
  'v5/ins-loan/product-infos': 5,
251
251
  'v5/ins-loan/ensure-tokens-convert': 5,
252
+ // earn
253
+ 'v5/earn/product': 5,
252
254
  },
253
255
  },
254
256
  'private': {
@@ -407,6 +409,9 @@ class bybit extends bybit$1 {
407
409
  'v5/broker/earnings-info': 5,
408
410
  'v5/broker/account-info': 5,
409
411
  'v5/broker/asset/query-sub-member-deposit-record': 10,
412
+ // earn
413
+ 'v5/earn/order': 5,
414
+ 'v5/earn/position': 5,
410
415
  },
411
416
  'post': {
412
417
  // spot
@@ -542,6 +547,8 @@ class bybit extends bybit$1 {
542
547
  'v5/broker/award/info': 5,
543
548
  'v5/broker/award/distribute-award': 5,
544
549
  'v5/broker/award/distribution-record': 5,
550
+ // earn
551
+ 'v5/earn/place-order': 5,
545
552
  },
546
553
  },
547
554
  },
@@ -30,6 +30,7 @@ class cex extends cex$1 {
30
30
  'cancelAllOrders': true,
31
31
  'cancelOrder': true,
32
32
  'createOrder': true,
33
+ 'createReduceOnlyOrder': false,
33
34
  'createStopOrder': true,
34
35
  'createTriggerOrder': true,
35
36
  'fetchAccounts': true,
@@ -325,6 +325,7 @@ class coinbase extends coinbase$1 {
325
325
  'INSUFFICIENT_FUND': errors.BadRequest,
326
326
  'PERMISSION_DENIED': errors.PermissionDenied,
327
327
  'INVALID_ARGUMENT': errors.BadRequest,
328
+ 'PREVIEW_STOP_PRICE_ABOVE_LAST_TRADE_PRICE': errors.InvalidOrder,
328
329
  },
329
330
  'broad': {
330
331
  'request timestamp expired': errors.InvalidNonce,
@@ -5083,20 +5084,39 @@ class coinbase extends coinbase$1 {
5083
5084
  // ]
5084
5085
  // }
5085
5086
  // or
5086
- // {
5087
+ // {
5088
+ // "success": false,
5089
+ // "error_response": {
5087
5090
  // "error": "UNKNOWN_FAILURE_REASON",
5088
5091
  // "message": "",
5089
5092
  // "error_details": "",
5090
- // "preview_failure_reason": "PREVIEW_STOP_PRICE_BELOW_LAST_TRADE_PRICE"
5091
- // }
5093
+ // "preview_failure_reason": "PREVIEW_STOP_PRICE_ABOVE_LAST_TRADE_PRICE"
5094
+ // },
5095
+ // "order_configuration": {
5096
+ // "stop_limit_stop_limit_gtc": {
5097
+ // "base_size": "0.0001",
5098
+ // "limit_price": "2000",
5099
+ // "stop_price": "2005",
5100
+ // "stop_direction": "STOP_DIRECTION_STOP_DOWN",
5101
+ // "reduce_only": false
5102
+ // }
5103
+ // }
5104
+ // }
5092
5105
  //
5093
5106
  let errorCode = this.safeString(response, 'error');
5094
5107
  if (errorCode !== undefined) {
5095
- const errorMessage = this.safeString2(response, 'error_description', 'preview_failure_reason');
5108
+ const errorMessage = this.safeString2(response, 'error_description', 'error');
5096
5109
  this.throwExactlyMatchedException(this.exceptions['exact'], errorCode, feedback);
5097
5110
  this.throwBroadlyMatchedException(this.exceptions['broad'], errorMessage, feedback);
5098
5111
  throw new errors.ExchangeError(feedback);
5099
5112
  }
5113
+ const errorResponse = this.safeDict(response, 'error_response');
5114
+ if (errorResponse !== undefined) {
5115
+ const errorMessageInner = this.safeString2(errorResponse, 'preview_failure_reason', 'preview_failure_reason');
5116
+ this.throwExactlyMatchedException(this.exceptions['exact'], errorMessageInner, feedback);
5117
+ this.throwBroadlyMatchedException(this.exceptions['broad'], errorMessageInner, feedback);
5118
+ throw new errors.ExchangeError(feedback);
5119
+ }
5100
5120
  const errors$1 = this.safeList(response, 'errors');
5101
5121
  if (errors$1 !== undefined) {
5102
5122
  if (Array.isArray(errors$1)) {
@@ -32,6 +32,7 @@ class coinbaseexchange extends coinbaseexchange$1 {
32
32
  'cancelOrder': true,
33
33
  'createDepositAddress': true,
34
34
  'createOrder': true,
35
+ 'createReduceOnlyOrder': false,
35
36
  'createStopLimitOrder': true,
36
37
  'createStopMarketOrder': true,
37
38
  'createStopOrder': true,
@@ -37,6 +37,7 @@ class deribit extends deribit$1 {
37
37
  'cancelOrders': false,
38
38
  'createDepositAddress': true,
39
39
  'createOrder': true,
40
+ 'createReduceOnlyOrder': true,
40
41
  'createStopLimitOrder': true,
41
42
  'createStopMarketOrder': true,
42
43
  'createStopOrder': true,
@@ -2444,8 +2444,10 @@ class hashkey extends hashkey$1 {
2444
2444
  if (!market['spot']) {
2445
2445
  throw new errors.NotSupported(this.id + ' createMarketBuyOrderWithCost() is supported for spot markets only');
2446
2446
  }
2447
- params['cost'] = cost;
2448
- return await this.createOrder(symbol, 'market', 'buy', cost, undefined, params);
2447
+ const req = {
2448
+ 'cost': cost,
2449
+ };
2450
+ return await this.createOrder(symbol, 'market', 'buy', cost, undefined, this.extend(req, params));
2449
2451
  }
2450
2452
  /**
2451
2453
  * @method
@@ -1810,12 +1810,13 @@ class hyperliquid extends hyperliquid$1 {
1810
1810
  const isTrigger = (stopLossPrice || takeProfitPrice);
1811
1811
  const reduceOnly = this.safeBool(orderParams, 'reduceOnly', false);
1812
1812
  orderParams = this.omit(orderParams, ['slippage', 'timeInForce', 'triggerPrice', 'stopLossPrice', 'takeProfitPrice', 'clientOrderId', 'client_id', 'postOnly', 'reduceOnly']);
1813
- let px = price.toString();
1813
+ let px = this.numberToString(price);
1814
1814
  if (isMarket) {
1815
- px = (isBuy) ? Precise["default"].stringMul(price.toString(), Precise["default"].stringAdd('1', slippage)) : Precise["default"].stringMul(price.toString(), Precise["default"].stringSub('1', slippage));
1815
+ px = (isBuy) ? Precise["default"].stringMul(px, Precise["default"].stringAdd('1', slippage)) : Precise["default"].stringMul(px, Precise["default"].stringSub('1', slippage));
1816
+ px = this.priceToPrecision(symbol, px);
1816
1817
  }
1817
1818
  else {
1818
- px = this.priceToPrecision(symbol, price.toString());
1819
+ px = this.priceToPrecision(symbol, px);
1819
1820
  }
1820
1821
  const sz = this.amountToPrecision(symbol, amount);
1821
1822
  const orderType = {};
@@ -2327,6 +2328,11 @@ class hyperliquid extends hyperliquid$1 {
2327
2328
  }
2328
2329
  const totalAmount = this.safeString2(entry, 'origSz', 'totalSz');
2329
2330
  const remaining = this.safeString(entry, 'sz');
2331
+ const tif = this.safeStringUpper(entry, 'tif');
2332
+ let postOnly = undefined;
2333
+ if (tif !== undefined) {
2334
+ postOnly = (tif === 'ALO');
2335
+ }
2330
2336
  return this.safeOrder({
2331
2337
  'info': order,
2332
2338
  'id': this.safeString(entry, 'oid'),
@@ -2337,8 +2343,8 @@ class hyperliquid extends hyperliquid$1 {
2337
2343
  'lastUpdateTimestamp': this.safeInteger(order, 'statusTimestamp'),
2338
2344
  'symbol': symbol,
2339
2345
  'type': this.parseOrderType(this.safeStringLower(entry, 'orderType')),
2340
- 'timeInForce': this.safeStringUpper(entry, 'tif'),
2341
- 'postOnly': undefined,
2346
+ 'timeInForce': tif,
2347
+ 'postOnly': postOnly,
2342
2348
  'reduceOnly': this.safeBool(entry, 'reduceOnly'),
2343
2349
  'side': side,
2344
2350
  'price': this.safeString(entry, 'limitPx'),
@@ -2460,6 +2466,11 @@ class hyperliquid extends hyperliquid$1 {
2460
2466
  side = (side === 'A') ? 'sell' : 'buy';
2461
2467
  }
2462
2468
  const fee = this.safeString(trade, 'fee');
2469
+ let takerOrMaker = undefined;
2470
+ const crossed = this.safeBool(trade, 'crossed');
2471
+ if (crossed !== undefined) {
2472
+ takerOrMaker = crossed ? 'taker' : 'maker';
2473
+ }
2463
2474
  return this.safeTrade({
2464
2475
  'info': trade,
2465
2476
  'timestamp': timestamp,
@@ -2469,7 +2480,7 @@ class hyperliquid extends hyperliquid$1 {
2469
2480
  'order': this.safeString(trade, 'oid'),
2470
2481
  'type': undefined,
2471
2482
  'side': side,
2472
- 'takerOrMaker': undefined,
2483
+ 'takerOrMaker': takerOrMaker,
2473
2484
  'price': price,
2474
2485
  'amount': amount,
2475
2486
  'cost': undefined,
@@ -3043,7 +3054,7 @@ class hyperliquid extends hyperliquid$1 {
3043
3054
  'tagTo': undefined,
3044
3055
  'tagFrom': undefined,
3045
3056
  'type': undefined,
3046
- 'amount': this.safeInteger(delta, 'usdc'),
3057
+ 'amount': this.safeNumber(delta, 'usdc'),
3047
3058
  'currency': undefined,
3048
3059
  'status': this.safeString(transaction, 'status'),
3049
3060
  'updated': undefined,
@@ -225,13 +225,13 @@ class kraken extends kraken$1 {
225
225
  },
226
226
  },
227
227
  'commonCurrencies': {
228
+ // about X & Z prefixes and .S & .M suffixes, see comment under fetchCurrencies
228
229
  'LUNA': 'LUNC',
229
230
  'LUNA2': 'LUNA',
230
231
  'REPV2': 'REP',
231
232
  'REP': 'REPV1',
232
233
  'UST': 'USTC',
233
234
  'XBT': 'BTC',
234
- 'XBT.M': 'BTC.M',
235
235
  'XDG': 'DOGE',
236
236
  },
237
237
  'options': {
@@ -771,9 +771,48 @@ class kraken extends kraken$1 {
771
771
  // {
772
772
  // "error": [],
773
773
  // "result": {
774
- // "BCH": {
774
+ // "ATOM": {
775
775
  // "aclass": "currency",
776
- // "altname": "BCH",
776
+ // "altname": "ATOM",
777
+ // "collateral_value": "0.7",
778
+ // "decimals": 8,
779
+ // "display_decimals": 6,
780
+ // "margin_rate": 0.02,
781
+ // "status": "enabled",
782
+ // },
783
+ // "ATOM.S": {
784
+ // "aclass": "currency",
785
+ // "altname": "ATOM.S",
786
+ // "decimals": 8,
787
+ // "display_decimals": 6,
788
+ // "status": "enabled",
789
+ // },
790
+ // "XXBT": {
791
+ // "aclass": "currency",
792
+ // "altname": "XBT",
793
+ // "decimals": 10,
794
+ // "display_decimals": 5,
795
+ // "margin_rate": 0.01,
796
+ // "status": "enabled",
797
+ // },
798
+ // "XETH": {
799
+ // "aclass": "currency",
800
+ // "altname": "ETH",
801
+ // "decimals": 10,
802
+ // "display_decimals": 5
803
+ // "margin_rate": 0.02,
804
+ // "status": "enabled",
805
+ // },
806
+ // "XBT.M": {
807
+ // "aclass": "currency",
808
+ // "altname": "XBT.M",
809
+ // "decimals": 10,
810
+ // "display_decimals": 5
811
+ // "status": "enabled",
812
+ // },
813
+ // "ETH.M": {
814
+ // "aclass": "currency",
815
+ // "altname": "ETH.M",
777
816
  // "decimals": 10,
778
817
  // "display_decimals": 5
779
818
  // "status": "enabled",
@@ -792,7 +831,30 @@ class kraken extends kraken$1 {
792
831
  // see: https://support.kraken.com/hc/en-us/articles/201893608-What-are-the-withdrawal-fees-
793
832
  // to add support for multiple withdrawal/deposit methods and
794
833
  // differentiated fees for each particular method
795
- const code = this.safeCurrencyCode(id);
834
+ //
835
+ // Notes about abbreviations:
836
+ // Z and X prefixes: https://support.kraken.com/hc/en-us/articles/360001206766-Bitcoin-currency-code-XBT-vs-BTC
837
+ // S and M suffixes: https://support.kraken.com/hc/en-us/articles/360039879471-What-is-Asset-S-and-Asset-M-
838
+ //
839
+ let code = this.safeCurrencyCode(id);
840
+ // the below can not be reliable done in `safeCurrencyCode`, so we have to do it here
841
+ if (id.indexOf('.') < 0) {
842
+ const altName = this.safeString(currency, 'altname');
843
+ // handle cases like below:
844
+ //
845
+ // id | altname
846
+ // ---------------
847
+ // XXBT | XBT
848
+ // ZUSD | USD
849
+ if (id !== altName && (id.startsWith('X') || id.startsWith('Z'))) {
850
+ code = this.safeCurrencyCode(altName);
851
+ // also, add map in commonCurrencies:
852
+ this.commonCurrencies[id] = code;
853
+ }
854
+ else {
855
+ code = this.safeCurrencyCode(id);
856
+ }
857
+ }
796
858
  const precision = this.parseNumber(this.parsePrecision(this.safeString(currency, 'decimals')));
797
859
  // assumes all currencies are active except those listed above
798
860
  const active = this.safeString(currency, 'status') === 'enabled';
@@ -821,6 +883,19 @@ class kraken extends kraken$1 {
821
883
  }
822
884
  return result;
823
885
  }
886
+ safeCurrencyCode(currencyId, currency = undefined) {
887
+ if (currencyId === undefined) {
888
+ return currencyId;
889
+ }
890
+ if (currencyId.indexOf('.') > 0) {
891
+ // if ID contains .M, .S or .F, then it can't contain X or Z prefix. in such case, ID equals to ALTNAME
892
+ const parts = currencyId.split('.');
893
+ const firstPart = this.safeString(parts, 0);
894
+ const secondPart = this.safeString(parts, 1);
895
+ return super.safeCurrencyCode(firstPart, currency) + '.' + secondPart;
896
+ }
897
+ return super.safeCurrencyCode(currencyId, currency);
898
+ }
824
899
  /**
825
900
  * @method
826
901
  * @name kraken#fetchTradingFee
@@ -1517,8 +1592,10 @@ class kraken extends kraken$1 {
1517
1592
  async createMarketOrderWithCost(symbol, side, cost, params = {}) {
1518
1593
  await this.loadMarkets();
1519
1594
  // only buy orders are supported by the endpoint
1520
- params['cost'] = cost;
1521
- return await this.createOrder(symbol, 'market', side, cost, undefined, params);
1595
+ const req = {
1596
+ 'cost': cost,
1597
+ };
1598
+ return await this.createOrder(symbol, 'market', side, cost, undefined, this.extend(req, params));
1522
1599
  }
1523
1600
  /**
1524
1601
  * @method
@@ -2299,8 +2299,10 @@ class kucoin extends kucoin$1 {
2299
2299
  */
2300
2300
  async createMarketOrderWithCost(symbol, side, cost, params = {}) {
2301
2301
  await this.loadMarkets();
2302
- params['cost'] = cost;
2303
- return await this.createOrder(symbol, 'market', side, cost, undefined, params);
2302
+ const req = {
2303
+ 'cost': cost,
2304
+ };
2305
+ return await this.createOrder(symbol, 'market', side, cost, undefined, this.extend(req, params));
2304
2306
  }
2305
2307
  /**
2306
2308
  * @method
@@ -2257,8 +2257,10 @@ class mexc extends mexc$1 {
2257
2257
  if (!market['spot']) {
2258
2258
  throw new errors.NotSupported(this.id + ' createMarketBuyOrderWithCost() supports spot orders only');
2259
2259
  }
2260
- params['cost'] = cost;
2261
- return await this.createOrder(symbol, 'market', 'buy', 0, undefined, params);
2260
+ const req = {
2261
+ 'cost': cost,
2262
+ };
2263
+ return await this.createOrder(symbol, 'market', 'buy', 0, undefined, this.extend(req, params));
2262
2264
  }
2263
2265
  /**
2264
2266
  * @method
@@ -2276,8 +2278,10 @@ class mexc extends mexc$1 {
2276
2278
  if (!market['spot']) {
2277
2279
  throw new errors.NotSupported(this.id + ' createMarketBuyOrderWithCost() supports spot orders only');
2278
2280
  }
2279
- params['cost'] = cost;
2280
- return await this.createOrder(symbol, 'market', 'sell', 0, undefined, params);
2281
+ const req = {
2282
+ 'cost': cost,
2283
+ };
2284
+ return await this.createOrder(symbol, 'market', 'sell', 0, undefined, this.extend(req, params));
2281
2285
  }
2282
2286
  /**
2283
2287
  * @method
@@ -307,7 +307,9 @@ class okx extends okx$1 {
307
307
  'trade/easy-convert-currency-list': 20,
308
308
  'trade/easy-convert-history': 20,
309
309
  'trade/one-click-repay-currency-list': 20,
310
+ 'trade/one-click-repay-currency-list-v2': 20,
310
311
  'trade/one-click-repay-history': 20,
312
+ 'trade/one-click-repay-history-v2': 20,
311
313
  'trade/account-rate-limit': 1,
312
314
  // asset
313
315
  'asset/currencies': 5 / 3,
@@ -464,6 +466,7 @@ class okx extends okx$1 {
464
466
  'trade/cancel-advance-algos': 1,
465
467
  'trade/easy-convert': 20,
466
468
  'trade/one-click-repay': 20,
469
+ 'trade/one-click-repay-v2': 20,
467
470
  'trade/mass-cancel': 4,
468
471
  'trade/cancel-all-after': 10,
469
472
  // asset
@@ -984,71 +987,64 @@ class okx extends okx$1 {
984
987
  'networks': {
985
988
  'BTC': 'Bitcoin',
986
989
  'BTCLN': 'Lightning',
990
+ 'BTCLIGHTNING': 'Lightning',
987
991
  'BEP20': 'BSC',
992
+ 'BRC20': 'BRC20',
988
993
  'ERC20': 'ERC20',
989
994
  'TRC20': 'TRC20',
990
995
  'CRC20': 'Crypto',
991
- // sorted
992
996
  'ACA': 'Acala',
993
997
  'ALGO': 'Algorand',
994
- 'BHP': 'BHP',
995
998
  'APT': 'Aptos',
999
+ 'SCROLL': 'Scroll',
996
1000
  'ARBONE': 'Arbitrum One',
997
1001
  'AVAXC': 'Avalanche C-Chain',
998
1002
  'AVAXX': 'Avalanche X-Chain',
999
- 'ARK': 'ARK',
1003
+ 'BASE': 'Base',
1004
+ 'SUI': 'SUI',
1005
+ 'ZKSYNCERA': 'zkSync Era',
1006
+ 'LINEA': 'Linea',
1000
1007
  'AR': 'Arweave',
1001
1008
  'ASTR': 'Astar',
1002
1009
  'BCH': 'BitcoinCash',
1003
1010
  'BSV': 'Bitcoin SV',
1004
- 'BTM': 'Bytom',
1005
1011
  'ADA': 'Cardano',
1006
1012
  'CSPR': 'Casper',
1007
1013
  'CELO': 'CELO',
1008
1014
  'XCH': 'Chia',
1009
- 'CHZ': 'Chiliz',
1015
+ // 'CHZ': 'Chiliz', TBD: Chiliz 2.0 Chain vs Chiliz Chain
1010
1016
  'ATOM': 'Cosmos',
1011
- 'TRUE': 'TrueChain',
1012
- 'DCR': 'Decred',
1013
1017
  'DGB': 'Digibyte',
1014
1018
  'DOGE': 'Dogecoin',
1015
- 'XEC': 'XEC',
1016
1019
  'EGLD': 'Elrond',
1020
+ 'CFX': 'Conflux',
1017
1021
  'EOS': 'EOS',
1022
+ 'CORE': 'CORE',
1018
1023
  'ETC': 'Ethereum Classic',
1019
1024
  'ETHW': 'EthereumPow',
1020
- 'FTM': 'Fantom',
1025
+ // 'FTM': 'Fantom', 'Sonic' TBD
1021
1026
  'FIL': 'Filecoin',
1022
- 'FLOW': 'FLOW',
1023
- 'FSN': 'Fusion',
1024
1027
  'ONE': 'Harmony',
1025
1028
  'HBAR': 'Hedera',
1026
- 'HNT': 'Helium',
1027
- 'ZEN': 'Horizen',
1028
1029
  'ICX': 'ICON',
1029
1030
  'ICP': 'Dfinity',
1030
1031
  'IOST': 'IOST',
1031
1032
  'IOTA': 'MIOTA',
1032
- 'KDA': 'Kadena',
1033
- 'KAR': 'KAR',
1034
1033
  'KLAY': 'Klaytn',
1035
1034
  'KSM': 'Kusama',
1036
1035
  'LSK': 'Lisk',
1037
1036
  'LTC': 'Litecoin',
1038
1037
  'METIS': 'Metis',
1039
1038
  'MINA': 'Mina',
1040
- 'XMR': 'Monero',
1041
1039
  'GLRM': 'Moonbeam',
1042
1040
  'MOVR': 'Moonriver',
1043
1041
  'NANO': 'Nano',
1044
1042
  'NEAR': 'NEAR',
1045
- 'NAS': 'Nebulas',
1046
- 'NEM': 'New Economy Movement',
1047
1043
  'NULS': 'NULS',
1048
1044
  'OASYS': 'OASYS',
1049
- 'OKC': 'OKC',
1050
1045
  'ONT': 'Ontology',
1051
1046
  'OPTIMISM': 'Optimism',
1047
+ // 'OP': 'Optimism', or Optimism (V2), TBD
1052
1048
  'LAT': 'PlatON',
1053
1049
  'DOT': 'Polkadot',
1054
1050
  'MATIC': 'Polygon',
@@ -1061,35 +1057,54 @@ class okx extends okx$1 {
1061
1057
  'XTZ': 'Tezos',
1062
1058
  'TON': 'TON',
1063
1059
  'THETA': 'Theta',
1064
- 'VSYS': 'VSYSTEMS',
1065
- 'WAVES': 'WAVES',
1066
1060
  'WAX': 'Wax',
1067
- 'ZEC': 'Zcash',
1068
1061
  'ZIL': 'Zilliqa',
1069
- 'ZKSYNC': 'ZKSYNC',
1070
- 'OMNI': 'Omni',
1071
- // 'NEON3': 'N3', // tbd
1072
- // undetermined : "CELO-TOKEN", "Digital Cash", Khala
1073
- // todo: uncomment below after consensus
1074
- // 'AELF': 'AELF',
1075
- // 'BITCOINDIAMOND': 'Bitcoin Diamond',
1076
- // 'BITCOINGOLD': 'BitcoinGold',
1077
- // 'YOYOW': 'YOYOW',
1078
- // 'QTUM': 'Quantum',
1079
- // 'INTCHAIN': 'INTCHAIN',
1080
- // 'YOUCHAIN': 'YOUCHAIN',
1081
- // 'RONIN': 'Ronin',
1082
- // 'OEC': 'OEC',
1083
- // 'WAYIKICHAIN': 'WGRT',
1084
- // 'MDNA': 'DNA',
1085
- // 'STEP': 'Step Network',
1086
- // 'EMINER': 'Eminer',
1087
- // 'CYBERMILES': 'CyberMiles',
1088
- // 'HYPERCASH': 'HyperCash',
1089
- // 'CONFLUX': 'Conflux',
1090
- // 'CORTEX': 'Cortex',
1091
- // 'TERRA': 'Terra',
1092
- // 'TERRACLASSIC': 'Terra Classic',
1062
+ // non-supported known network: CRP. KAVA, TAIKO, BOB, GNO, BLAST, RSK, SEI, MANTLE, HYPE, RUNE, OSMO, XIN, WEMIX, HT, FSN, NEO, TLOS, CANTO, SCRT, AURORA, XMR
1063
+ // others:
1064
+ // "OKTC",
1065
+ // "X Layer",
1066
+ // "Polygon (Bridged)",
1067
+ // "BTCK-OKTC",
1068
+ // "ETHK-OKTC",
1069
+ // "Starknet",
1070
+ // "LTCK-OKTC",
1071
+ // "XRPK-OKTC",
1072
+ // "BCHK-OKTC",
1073
+ // "ETCK-OKTC",
1074
+ // "Endurance Smart Chain",
1075
+ // "Berachain",
1076
+ // "CELO-TOKEN",
1077
+ // "CFX_EVM",
1078
+ // "Cortex",
1079
+ // "DAIK-OKTC",
1080
+ // "Dora Vota Mainnet",
1081
+ // "DOTK-OKTC",
1082
+ // "DYDX",
1083
+ // "AELF",
1084
+ // "Enjin Relay Chain",
1085
+ // "FEVM",
1086
+ // "FILK-OKTC",
1087
+ // "Flare",
1088
+ // "Gravity Alpha Mainnet",
1089
+ // "INJ",
1090
+ // "Story",
1091
+ // "LINKK-OKTC",
1092
+ // "Terra",
1093
+ // "Terra Classic",
1094
+ // "Terra Classic (USTC)",
1095
+ // "MERLIN Network",
1096
+ // "Layer 3",
1097
+ // "PI",
1098
+ // "Ronin",
1099
+ // "Quantum",
1100
+ // "SHIBK-OKTC",
1101
+ // "SUSHIK-OKTC",
1102
+ // "Celestia",
1103
+ // "TRXK-OKTC",
1104
+ // "UNIK-OKTC",
1105
+ // "Venom",
1106
+ // "WBTCK-OKTC",
1107
+ // "ZetaChain",
1093
1108
  },
1094
1109
  'fetchOpenInterestHistory': {
1095
1110
  'timeframes': {
@@ -3159,6 +3174,7 @@ class okx extends okx$1 {
3159
3174
  * @param {string} [params.trailingPercent] the percent to trail away from the current market price
3160
3175
  * @param {string} [params.tpOrdKind] 'condition' or 'limit', the default is 'condition'
3161
3176
  * @param {bool} [params.hedged] *swap and future only* true for hedged mode, false for one way mode
3177
+ * @param {string} [params.marginMode] 'cross' or 'isolated', the default is 'cross'
3162
3178
  * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
3163
3179
  */
3164
3180
  async createOrder(symbol, type, side, amount, price = undefined, params = {}) {