ccxt 4.3.13 → 4.3.15

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 (61) hide show
  1. package/LICENSE.txt +1 -1
  2. package/README.md +3 -3
  3. package/dist/cjs/ccxt.js +2 -1
  4. package/dist/cjs/src/base/Exchange.js +14 -6
  5. package/dist/cjs/src/base/errors.js +8 -1
  6. package/dist/cjs/src/base/functions/misc.js +2 -2
  7. package/dist/cjs/src/base/ws/Client.js +2 -1
  8. package/dist/cjs/src/binance.js +106 -5
  9. package/dist/cjs/src/bingx.js +1 -0
  10. package/dist/cjs/src/bybit.js +105 -105
  11. package/dist/cjs/src/coinbase.js +103 -0
  12. package/dist/cjs/src/coinex.js +435 -423
  13. package/dist/cjs/src/cryptocom.js +2 -1
  14. package/dist/cjs/src/hitbtc.js +1 -0
  15. package/dist/cjs/src/luno.js +2 -0
  16. package/dist/cjs/src/okx.js +1 -1
  17. package/dist/cjs/src/phemex.js +1 -1
  18. package/dist/cjs/src/pro/hitbtc.js +1 -1
  19. package/dist/cjs/src/pro/independentreserve.js +3 -3
  20. package/dist/cjs/src/pro/poloniex.js +3 -3
  21. package/dist/cjs/src/pro/woo.js +147 -9
  22. package/js/ccxt.d.ts +3 -3
  23. package/js/ccxt.js +3 -3
  24. package/js/src/abstract/luno.d.ts +2 -0
  25. package/js/src/alpaca.d.ts +1 -1
  26. package/js/src/base/Exchange.d.ts +5 -5
  27. package/js/src/base/Exchange.js +14 -6
  28. package/js/src/base/errorHierarchy.d.ts +1 -0
  29. package/js/src/base/errorHierarchy.js +1 -0
  30. package/js/src/base/errors.d.ts +5 -1
  31. package/js/src/base/errors.js +8 -2
  32. package/js/src/base/functions/generic.d.ts +1 -1
  33. package/js/src/base/functions/misc.d.ts +5 -4
  34. package/js/src/base/functions/misc.js +2 -2
  35. package/js/src/base/functions/number.d.ts +5 -5
  36. package/js/src/base/functions/rsa.d.ts +2 -1
  37. package/js/src/base/functions/totp.d.ts +1 -1
  38. package/js/src/base/ws/Client.d.ts +8 -7
  39. package/js/src/base/ws/Client.js +2 -1
  40. package/js/src/binance.d.ts +14 -1
  41. package/js/src/binance.js +107 -6
  42. package/js/src/bingx.d.ts +1 -1
  43. package/js/src/bingx.js +1 -0
  44. package/js/src/bybit.js +105 -105
  45. package/js/src/coinbase.d.ts +5 -1
  46. package/js/src/coinbase.js +103 -0
  47. package/js/src/coinex.js +435 -423
  48. package/js/src/cryptocom.js +2 -1
  49. package/js/src/hitbtc.js +1 -0
  50. package/js/src/luno.js +2 -0
  51. package/js/src/okx.js +1 -1
  52. package/js/src/phemex.js +1 -1
  53. package/js/src/pro/hitbtc.js +1 -1
  54. package/js/src/pro/independentreserve.js +3 -3
  55. package/js/src/pro/poloniex.js +3 -3
  56. package/js/src/pro/woo.d.ts +2 -0
  57. package/js/src/pro/woo.js +147 -9
  58. package/js/src/upbit.d.ts +1 -1
  59. package/js/src/woo.d.ts +1 -1
  60. package/js/src/zonda.d.ts +1 -1
  61. package/package.json +1 -1
@@ -1716,111 +1716,7 @@ class coinex extends coinex$1 {
1716
1716
  }
1717
1717
  parseOrder(order, market = undefined) {
1718
1718
  //
1719
- // Spot and Margin fetchOpenOrders, fetchClosedOrders
1720
- //
1721
- // {
1722
- // "account_id": 0,
1723
- // "amount": "0.0005",
1724
- // "asset_fee": "0",
1725
- // "avg_price": "0.00",
1726
- // "client_id": "",
1727
- // "create_time": 1651089247,
1728
- // "deal_amount": "0",
1729
- // "deal_fee": "0",
1730
- // "deal_money": "0",
1731
- // "fee_asset": null,
1732
- // "fee_discount": "1",
1733
- // "finished_time": 0,
1734
- // "id": 74660190839,
1735
- // "left": "0.0005",
1736
- // "maker_fee_rate": "0.002",
1737
- // "market": "BTCUSDT",
1738
- // "money_fee": "0",
1739
- // "order_type": "limit",
1740
- // "price": "31000",
1741
- // "status": "not_deal",
1742
- // "stock_fee": "0",
1743
- // "taker_fee_rate": "0.002",
1744
- // "type": "buy"
1745
- // }
1746
- //
1747
- // Swap fetchOpenOrders, fetchClosedOrders
1748
- //
1749
- // {
1750
- // "amount": "0.0005",
1751
- // "client_id": "",
1752
- // "create_time": 1651030414.088431,
1753
- // "deal_asset_fee": "0",
1754
- // "deal_fee": "0.00960069",
1755
- // "deal_profit": "0.009825",
1756
- // "deal_stock": "19.20138",
1757
- // "effect_type": 0,
1758
- // "fee_asset": "",
1759
- // "fee_discount": "0",
1760
- // "left": "0",
1761
- // "leverage": "3",
1762
- // "maker_fee": "0",
1763
- // "market": "BTCUSDT",
1764
- // "order_id": 18253447431,
1765
- // "position_id": 0,
1766
- // "position_type": 1,
1767
- // "price": "0",
1768
- // "side": 1,
1769
- // "source": "web",
1770
- // "stop_id": 0,
1771
- // "taker_fee": "0.0005",
1772
- // "target": 0,
1773
- // "type": 2,
1774
- // "update_time": 1651030414.08847,
1775
- // "user_id": 3620173
1776
- // }
1777
- //
1778
- // Spot and Margin Stop fetchOpenOrders, fetchClosedOrders
1779
- //
1780
- // {
1781
- // "account_id": 0,
1782
- // "amount": "155",
1783
- // "client_id": "",
1784
- // "create_time": 1651089182,
1785
- // "fee_asset": null,
1786
- // "fee_discount": "1",
1787
- // "maker_fee": "0.002",
1788
- // "market": "BTCUSDT",
1789
- // "order_id": 74660111965,
1790
- // "order_type": "market",
1791
- // "price": "0",
1792
- // "state": 0,
1793
- // "stop_price": "31500",
1794
- // "taker_fee": "0.002",
1795
- // "type": "buy"
1796
- // }
1797
- //
1798
- // Swap Stop fetchOpenOrders
1799
- //
1800
- // {
1801
- // "amount": "0.0005",
1802
- // "client_id": "",
1803
- // "create_time": 1651089147.321691,
1804
- // "effect_type": 1,
1805
- // "fee_asset": "",
1806
- // "fee_discount": "0.00000000000000000000",
1807
- // "maker_fee": "0.00030",
1808
- // "market": "BTCUSDT",
1809
- // "order_id": 18332143848,
1810
- // "price": "31000.00",
1811
- // "side": 2,
1812
- // "source": "api.v1",
1813
- // "state": 1,
1814
- // "stop_price": "31500.00",
1815
- // "stop_type": 1,
1816
- // "taker_fee": "0.00050",
1817
- // "target": 0,
1818
- // "type": 1,
1819
- // "update_time": 1651089147.321691,
1820
- // "user_id": 3620173
1821
- // }
1822
- //
1823
- // Spot and Margin createOrder, createOrders, editOrder, cancelOrders, cancelOrder v2
1719
+ // Spot and Margin createOrder, createOrders, editOrder, cancelOrders, cancelOrder, fetchOpenOrders
1824
1720
  //
1825
1721
  // {
1826
1722
  // "amount": "0.0001",
@@ -1846,13 +1742,37 @@ class coinex extends coinex$1 {
1846
1742
  // "updated_at": 1714114386250
1847
1743
  // }
1848
1744
  //
1849
- // Spot, Margin and Swap trigger createOrder, createOrders, editOrder v2
1745
+ // Spot and Margin fetchClosedOrders
1746
+ //
1747
+ // {
1748
+ // "order_id": 117180532345,
1749
+ // "market": "BTCUSDT",
1750
+ // "market_type": "SPOT",
1751
+ // "side": "sell",
1752
+ // "type": "market",
1753
+ // "ccy": "BTC",
1754
+ // "amount": "0.00015484",
1755
+ // "price": "0",
1756
+ // "client_id": "",
1757
+ // "created_at": 1714116494219,
1758
+ // "updated_at": 0,
1759
+ // "base_fee": "0",
1760
+ // "quote_fee": "0.0199931699632",
1761
+ // "discount_fee": "0",
1762
+ // "maker_fee_rate": "0",
1763
+ // "taker_fee_rate": "0.002",
1764
+ // "unfilled_amount": "0",
1765
+ // "filled_amount": "0.00015484",
1766
+ // "filled_value": "9.9965849816"
1767
+ // }
1768
+ //
1769
+ // Spot, Margin and Swap trigger createOrder, createOrders, editOrder
1850
1770
  //
1851
1771
  // {
1852
1772
  // "stop_id": 117180138153
1853
1773
  // }
1854
1774
  //
1855
- // Swap createOrder, createOrders, editOrder, cancelOrders, cancelOrder v2
1775
+ // Swap createOrder, createOrders, editOrder, cancelOrders, cancelOrder, fetchOpenOrders, fetchClosedOrders
1856
1776
  //
1857
1777
  // {
1858
1778
  // "amount": "0.0001",
@@ -1877,7 +1797,7 @@ class coinex extends coinex$1 {
1877
1797
  // "updated_at": 1714116769986
1878
1798
  // }
1879
1799
  //
1880
- // Swap stopLossPrice and takeProfitPrice createOrder v2
1800
+ // Swap stopLossPrice and takeProfitPrice createOrder
1881
1801
  //
1882
1802
  // {
1883
1803
  // "adl_level": 1,
@@ -1912,25 +1832,7 @@ class coinex extends coinex$1 {
1912
1832
  // "updated_at": 1714119054559
1913
1833
  // }
1914
1834
  //
1915
- // Swap and Spot stop cancelOrders, cancelOrder v2
1916
- //
1917
- // {
1918
- // "amount": "0.0001",
1919
- // "client_id": "x-167673045-a7d7714c6478acf6",
1920
- // "created_at": 1714187923820,
1921
- // "market": "BTCUSDT",
1922
- // "market_type": "FUTURES",
1923
- // "price": "61000",
1924
- // "side": "buy",
1925
- // "stop_id": 136984426097,
1926
- // "trigger_direction": "higher",
1927
- // "trigger_price": "62000",
1928
- // "trigger_price_type": "latest_price",
1929
- // "type": "limit",
1930
- // "updated_at": 1714187974363
1931
- // }
1932
- //
1933
- // Swap fetchOrder v2
1835
+ // Swap fetchOrder
1934
1836
  //
1935
1837
  // {
1936
1838
  // "amount": "0.0001",
@@ -1956,7 +1858,7 @@ class coinex extends coinex$1 {
1956
1858
  // "updated_at": 1714460987164
1957
1859
  // }
1958
1860
  //
1959
- // Spot and Margin fetchOrder v2
1861
+ // Spot and Margin fetchOrder
1960
1862
  //
1961
1863
  // {
1962
1864
  // "amount": "0.0001",
@@ -1983,91 +1885,100 @@ class coinex extends coinex$1 {
1983
1885
  // "updated_at": 1714461638958
1984
1886
  // }
1985
1887
  //
1888
+ // Swap trigger fetchOpenOrders, fetchClosedOrders - Spot and Swap trigger cancelOrders, cancelOrder
1889
+ //
1890
+ // {
1891
+ // "amount": "0.0001",
1892
+ // "client_id": "x-167673045-a7d7714c6478acf6",
1893
+ // "created_at": 1714187923820,
1894
+ // "market": "BTCUSDT",
1895
+ // "market_type": "FUTURES",
1896
+ // "price": "61000",
1897
+ // "side": "buy",
1898
+ // "stop_id": 136984426097,
1899
+ // "trigger_direction": "higher",
1900
+ // "trigger_price": "62000",
1901
+ // "trigger_price_type": "latest_price",
1902
+ // "type": "limit",
1903
+ // "updated_at": 1714187974363
1904
+ // }
1905
+ //
1906
+ // Spot and Margin trigger fetchOpenOrders, fetchClosedOrders
1907
+ //
1908
+ // {
1909
+ // "stop_id": 117586439530,
1910
+ // "market": "BTCUSDT",
1911
+ // "market_type": "SPOT",
1912
+ // "ccy": "BTC",
1913
+ // "side": "buy",
1914
+ // "type": "limit",
1915
+ // "amount": "0.0001",
1916
+ // "price": "51000",
1917
+ // "trigger_price": "52000",
1918
+ // "trigger_direction": "higher",
1919
+ // "trigger_price_type": "mark_price",
1920
+ // "client_id": "x-167673045-df61777094c69312",
1921
+ // "created_at": 1714551237335,
1922
+ // "updated_at": 1714551237335
1923
+ // }
1924
+ //
1986
1925
  const rawStatus = this.safeString(order, 'status');
1987
- let timestamp = this.safeTimestamp(order, 'create_time');
1988
- if (timestamp === undefined) {
1989
- timestamp = this.safeInteger(order, 'created_at');
1990
- }
1991
- let update = this.safeTimestamp(order, 'update_time');
1992
- if (update === undefined) {
1993
- update = this.safeInteger(order, 'updated_at');
1926
+ const timestamp = this.safeInteger(order, 'created_at');
1927
+ let updatedTimestamp = this.safeInteger(order, 'updated_at');
1928
+ if (updatedTimestamp === 0) {
1929
+ updatedTimestamp = timestamp;
1994
1930
  }
1995
1931
  const marketId = this.safeString(order, 'market');
1996
1932
  const defaultType = this.safeString(this.options, 'defaultType');
1997
- const orderType = ('source' in order) ? 'swap' : defaultType;
1998
- market = this.safeMarket(marketId, market, undefined, orderType);
1999
- const feeCurrencyId = this.safeString2(order, 'fee_asset', 'fee_ccy');
1933
+ let orderType = this.safeStringLower(order, 'market_type', defaultType);
1934
+ if (orderType === 'futures') {
1935
+ orderType = 'swap';
1936
+ }
1937
+ const marketType = (orderType === 'swap') ? 'swap' : 'spot';
1938
+ market = this.safeMarket(marketId, market, undefined, marketType);
1939
+ const feeCurrencyId = this.safeString(order, 'fee_ccy');
2000
1940
  let feeCurrency = this.safeCurrencyCode(feeCurrencyId);
2001
1941
  if (feeCurrency === undefined) {
2002
1942
  feeCurrency = market['quote'];
2003
1943
  }
2004
- const rawIntegerSide = this.safeInteger(order, 'side');
2005
- const rawStringSide = this.safeString(order, 'side');
2006
- let side = undefined;
2007
- if (rawIntegerSide === 1) {
2008
- side = 'sell';
2009
- }
2010
- else if (rawIntegerSide === 2) {
1944
+ let side = this.safeString(order, 'side');
1945
+ if (side === 'long') {
2011
1946
  side = 'buy';
2012
1947
  }
2013
- else if ((rawStringSide === 'buy') || (rawStringSide === 'sell')) {
2014
- side = rawStringSide;
2015
- }
2016
- else {
2017
- side = this.safeString(order, 'type');
2018
- }
2019
- const rawType = this.safeString(order, 'order_type');
2020
- let type = undefined;
2021
- if (rawType === undefined) {
2022
- const typeInteger = this.safeInteger(order, 'type');
2023
- const typeString = this.safeString(order, 'type');
2024
- if (typeInteger === 1) {
2025
- type = 'limit';
2026
- }
2027
- else if (typeInteger === 2) {
2028
- type = 'market';
2029
- }
2030
- else if ((typeString === 'limit') || (typeString === 'market')) {
2031
- type = typeString;
2032
- }
2033
- else if (typeString === 'maker_only') {
2034
- type = 'limit';
2035
- }
2036
- }
2037
- else {
2038
- type = rawType;
1948
+ else if (side === 'short') {
1949
+ side = 'sell';
2039
1950
  }
2040
1951
  let clientOrderId = this.safeString(order, 'client_id');
2041
1952
  if (clientOrderId === '') {
2042
1953
  clientOrderId = undefined;
2043
1954
  }
2044
1955
  return this.safeOrder({
2045
- 'id': this.safeStringN(order, ['id', 'order_id', 'stop_id']),
1956
+ 'id': this.safeStringN(order, ['position_id', 'order_id', 'stop_id']),
2046
1957
  'clientOrderId': clientOrderId,
2047
1958
  'datetime': this.iso8601(timestamp),
2048
1959
  'timestamp': timestamp,
2049
- 'lastTradeTimestamp': update,
1960
+ 'lastTradeTimestamp': updatedTimestamp,
2050
1961
  'status': this.parseOrderStatus(rawStatus),
2051
1962
  'symbol': market['symbol'],
2052
- 'type': type,
1963
+ 'type': this.safeString(order, 'type'),
2053
1964
  'timeInForce': undefined,
2054
1965
  'postOnly': undefined,
2055
1966
  'reduceOnly': undefined,
2056
1967
  'side': side,
2057
1968
  'price': this.safeString(order, 'price'),
2058
- 'stopPrice': this.safeString2(order, 'stop_price', 'trigger_price'),
2059
- 'triggerPrice': this.safeString2(order, 'stop_price', 'trigger_price'),
1969
+ 'stopPrice': this.safeString(order, 'trigger_price'),
1970
+ 'triggerPrice': this.safeString(order, 'trigger_price'),
2060
1971
  'takeProfitPrice': this.safeNumber(order, 'take_profit_price'),
2061
1972
  'stopLossPrice': this.safeNumber(order, 'stop_loss_price'),
2062
- 'cost': this.safeString2(order, 'deal_money', 'filled_value'),
2063
- 'average': this.safeString2(order, 'avg_price', 'avg_entry_price'),
1973
+ 'cost': this.safeString(order, 'filled_value'),
1974
+ 'average': this.safeString(order, 'avg_entry_price'),
2064
1975
  'amount': this.safeString(order, 'amount'),
2065
- 'filled': this.safeString2(order, 'deal_amount', 'filled_amount'),
2066
- 'remaining': this.safeString2(order, 'left', 'unfilled_amount'),
1976
+ 'filled': this.safeString(order, 'filled_amount'),
1977
+ 'remaining': this.safeString(order, 'unfilled_amount'),
2067
1978
  'trades': undefined,
2068
1979
  'fee': {
2069
1980
  'currency': feeCurrency,
2070
- 'cost': this.safeStringN(order, ['deal_fee', 'quote_fee', 'fee']),
1981
+ 'cost': this.safeString2(order, 'quote_fee', 'fee'),
2071
1982
  },
2072
1983
  'info': order,
2073
1984
  }, market);
@@ -3322,7 +3233,7 @@ class coinex extends coinex$1 {
3322
3233
  }
3323
3234
  else {
3324
3235
  let marginMode = undefined;
3325
- [marginMode, params] = this.handleMarginModeAndParams('fetchOrdersByStatus', params);
3236
+ [marginMode, params] = this.handleMarginModeAndParams('cancelAllOrders', params);
3326
3237
  if (marginMode !== undefined) {
3327
3238
  request['market_type'] = 'MARGIN';
3328
3239
  }
@@ -3426,244 +3337,340 @@ class coinex extends coinex$1 {
3426
3337
  return this.parseOrder(data, market);
3427
3338
  }
3428
3339
  async fetchOrdersByStatus(status, symbol = undefined, since = undefined, limit = undefined, params = {}) {
3340
+ /**
3341
+ * @method
3342
+ * @name coinex#fetchOrdersByStatus
3343
+ * @description fetch a list of orders
3344
+ * @see https://docs.coinex.com/api/v2/spot/order/http/list-finished-order
3345
+ * @see https://docs.coinex.com/api/v2/spot/order/http/list-finished-stop-order
3346
+ * @see https://docs.coinex.com/api/v2/futures/order/http/list-finished-order
3347
+ * @see https://docs.coinex.com/api/v2/futures/order/http/list-finished-stop-order
3348
+ * @param {string} symbol unified market symbol of the market orders were made in
3349
+ * @param {int} [since] the earliest time in ms to fetch orders for
3350
+ * @param {int} [limit] the maximum number of order structures to retrieve
3351
+ * @param {boolean} [params.trigger] set to true for fetching trigger orders
3352
+ * @param {string} [params.marginMode] 'cross' or 'isolated' for fetching spot margin orders
3353
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
3354
+ */
3429
3355
  await this.loadMarkets();
3430
- limit = (limit === undefined) ? 100 : limit;
3431
- const request = {
3432
- 'limit': limit,
3433
- // 'page': 1, // SPOT
3434
- // 'offset': 0, // SWAP
3435
- // 'side': 0, // SWAP, 0: All, 1: Sell, 2: Buy
3436
- };
3437
- const stop = this.safeValue(params, 'stop');
3438
- const side = this.safeInteger(params, 'side');
3439
- params = this.omit(params, 'stop');
3356
+ const request = {};
3440
3357
  let market = undefined;
3441
3358
  if (symbol !== undefined) {
3442
3359
  market = this.market(symbol);
3443
3360
  request['market'] = market['id'];
3444
3361
  }
3445
- const [marketType, query] = this.handleMarketTypeAndParams('fetchOrdersByStatus', market, params);
3446
- const accountId = this.safeInteger(params, 'account_id');
3447
- let marginMode = undefined;
3448
- [marginMode, params] = this.handleMarginModeAndParams('fetchOrdersByStatus', params);
3449
- if (marginMode !== undefined) {
3450
- if (accountId === undefined) {
3451
- throw new errors.BadRequest(this.id + ' fetchOpenOrders() and fetchClosedOrders() require an account_id parameter for margin orders');
3452
- }
3453
- request['account_id'] = accountId;
3362
+ if (limit !== undefined) {
3363
+ request['limit'] = limit;
3454
3364
  }
3455
- params = this.omit(query, 'account_id');
3365
+ const stop = this.safeBool2(params, 'stop', 'trigger');
3366
+ params = this.omit(params, ['stop', 'trigger']);
3367
+ let marketType = undefined;
3368
+ [marketType, params] = this.handleMarketTypeAndParams('fetchOrdersByStatus', market, params);
3456
3369
  let response = undefined;
3370
+ const isClosed = (status === 'finished') || (status === 'closed');
3371
+ const isOpen = (status === 'pending') || (status === 'open');
3457
3372
  if (marketType === 'swap') {
3458
- if (symbol === undefined) {
3459
- throw new errors.ArgumentsRequired(this.id + ' fetchOrdersByStatus() requires a symbol argument for swap markets');
3460
- }
3461
- if (side !== undefined) {
3462
- request['side'] = side;
3463
- }
3464
- else {
3465
- request['side'] = 0;
3466
- }
3467
- request['offset'] = 0;
3468
- if (stop) {
3469
- response = await this.v1PerpetualPrivateGetOrderStopPending(this.extend(request, params));
3373
+ request['market_type'] = 'FUTURES';
3374
+ if (isClosed) {
3375
+ if (stop) {
3376
+ response = await this.v2PrivateGetFuturesFinishedStopOrder(this.extend(request, params));
3377
+ //
3378
+ // {
3379
+ // "code": 0,
3380
+ // "data": [
3381
+ // {
3382
+ // "stop_id": 52431158859,
3383
+ // "market": "BTCUSDT",
3384
+ // "market_type": "FUTURES",
3385
+ // "side": "sell",
3386
+ // "type": "market",
3387
+ // "amount": "0.0005",
3388
+ // "price": "20599.64",
3389
+ // "client_id": "",
3390
+ // "created_at": 1667547909856,
3391
+ // "updated_at": 1667547909856,
3392
+ // "trigger_price": "20599.64",
3393
+ // "trigger_price_type": "latest_price",
3394
+ // "trigger_direction": ""
3395
+ // },
3396
+ // ],
3397
+ // "message": "OK",
3398
+ // "pagination": {
3399
+ // "has_next": false
3400
+ // }
3401
+ // }
3402
+ //
3403
+ }
3404
+ else {
3405
+ response = await this.v2PrivateGetFuturesFinishedOrder(this.extend(request, params));
3406
+ //
3407
+ // {
3408
+ // "code": 0,
3409
+ // "data": [
3410
+ // {
3411
+ // "order_id": 136915813578,
3412
+ // "market": "BTCUSDT",
3413
+ // "market_type": "FUTURES",
3414
+ // "side": "sell",
3415
+ // "type": "market",
3416
+ // "amount": "0.0001",
3417
+ // "price": "0",
3418
+ // "client_id": "x-167673045-4f264600c432ac06",
3419
+ // "created_at": 1714119323764,
3420
+ // "updated_at": 1714119323764,
3421
+ // "unfilled_amount": "0",
3422
+ // "filled_amount": "0.0001",
3423
+ // "filled_value": "6.442017",
3424
+ // "fee": "0.003221",
3425
+ // "fee_ccy": "USDT",
3426
+ // "maker_fee_rate": "0",
3427
+ // "taker_fee_rate": "0.0005"
3428
+ // },
3429
+ // ],
3430
+ // "message": "OK",
3431
+ // "pagination": {
3432
+ // "has_next": false
3433
+ // }
3434
+ // }
3435
+ //
3436
+ }
3470
3437
  }
3471
- else {
3472
- if (status === 'finished') {
3473
- response = await this.v1PerpetualPrivateGetOrderFinished(this.extend(request, params));
3438
+ else if (isOpen) {
3439
+ if (stop) {
3440
+ response = await this.v2PrivateGetFuturesPendingStopOrder(this.extend(request, params));
3441
+ //
3442
+ // {
3443
+ // "code": 0,
3444
+ // "data": [
3445
+ // {
3446
+ // "stop_id": 137481469849,
3447
+ // "market": "BTCUSDT",
3448
+ // "market_type": "FUTURES",
3449
+ // "side": "buy",
3450
+ // "type": "limit",
3451
+ // "amount": "0.0001",
3452
+ // "price": "51000",
3453
+ // "client_id": "x-167673045-2b932341949fa2a1",
3454
+ // "created_at": 1714552257876,
3455
+ // "updated_at": 1714552257876,
3456
+ // "trigger_price": "52000",
3457
+ // "trigger_price_type": "latest_price",
3458
+ // "trigger_direction": "higher"
3459
+ // }
3460
+ // ],
3461
+ // "message": "OK",
3462
+ // "pagination": {
3463
+ // "total": 1,
3464
+ // "has_next": false
3465
+ // }
3466
+ // }
3467
+ //
3474
3468
  }
3475
- else if (status === 'pending') {
3476
- response = await this.v1PerpetualPrivateGetOrderPending(this.extend(request, params));
3469
+ else {
3470
+ response = await this.v2PrivateGetFuturesPendingOrder(this.extend(request, params));
3471
+ //
3472
+ // {
3473
+ // "code": 0,
3474
+ // "data": [
3475
+ // {
3476
+ // "order_id": 137480580906,
3477
+ // "market": "BTCUSDT",
3478
+ // "market_type": "FUTURES",
3479
+ // "side": "buy",
3480
+ // "type": "limit",
3481
+ // "amount": "0.0001",
3482
+ // "price": "51000",
3483
+ // "client_id": "",
3484
+ // "created_at": 1714551877569,
3485
+ // "updated_at": 1714551877569,
3486
+ // "unfilled_amount": "0.0001",
3487
+ // "filled_amount": "0",
3488
+ // "filled_value": "0",
3489
+ // "fee": "0",
3490
+ // "fee_ccy": "USDT",
3491
+ // "maker_fee_rate": "0.0003",
3492
+ // "taker_fee_rate": "0.0005",
3493
+ // "last_filled_amount": "0",
3494
+ // "last_filled_price": "0",
3495
+ // "realized_pnl": "0"
3496
+ // }
3497
+ // ],
3498
+ // "message": "OK",
3499
+ // "pagination": {
3500
+ // "total": 1,
3501
+ // "has_next": false
3502
+ // }
3503
+ // }
3504
+ //
3477
3505
  }
3478
3506
  }
3479
3507
  }
3480
3508
  else {
3481
- request['page'] = 1;
3482
- if (status === 'finished') {
3509
+ let marginMode = undefined;
3510
+ [marginMode, params] = this.handleMarginModeAndParams('fetchOrdersByStatus', params);
3511
+ if (marginMode !== undefined) {
3512
+ request['market_type'] = 'MARGIN';
3513
+ }
3514
+ else {
3515
+ request['market_type'] = 'SPOT';
3516
+ }
3517
+ if (isClosed) {
3483
3518
  if (stop) {
3484
- response = await this.v1PrivateGetOrderStopFinished(this.extend(request, params));
3519
+ response = await this.v2PrivateGetSpotFinishedStopOrder(this.extend(request, params));
3520
+ //
3521
+ // {
3522
+ // "code": 0,
3523
+ // "data": [
3524
+ // {
3525
+ // "stop_id": 117654881420,
3526
+ // "market": "BTCUSDT",
3527
+ // "market_type": "SPOT",
3528
+ // "ccy": "USDT",
3529
+ // "side": "buy",
3530
+ // "type": "market",
3531
+ // "amount": "5.83325524",
3532
+ // "price": "0",
3533
+ // "trigger_price": "57418",
3534
+ // "trigger_direction": "lower",
3535
+ // "trigger_price_type": "mark_price",
3536
+ // "client_id": "",
3537
+ // "created_at": 1714618050597,
3538
+ // "updated_at": 0
3539
+ // }
3540
+ // ],
3541
+ // "message": "OK",
3542
+ // "pagination": {
3543
+ // "has_next": false
3544
+ // }
3545
+ // }
3546
+ //
3485
3547
  }
3486
3548
  else {
3487
- response = await this.v1PrivateGetOrderFinished(this.extend(request, params));
3549
+ response = await this.v2PrivateGetSpotFinishedOrder(this.extend(request, params));
3550
+ //
3551
+ // {
3552
+ // "code": 0,
3553
+ // "data": [
3554
+ // {
3555
+ // "order_id": 117180532345,
3556
+ // "market": "BTCUSDT",
3557
+ // "market_type": "SPOT",
3558
+ // "side": "sell",
3559
+ // "type": "market",
3560
+ // "ccy": "BTC",
3561
+ // "amount": "0.00015484",
3562
+ // "price": "0",
3563
+ // "client_id": "",
3564
+ // "created_at": 1714116494219,
3565
+ // "updated_at": 0,
3566
+ // "base_fee": "0",
3567
+ // "quote_fee": "0.0199931699632",
3568
+ // "discount_fee": "0",
3569
+ // "maker_fee_rate": "0",
3570
+ // "taker_fee_rate": "0.002",
3571
+ // "unfilled_amount": "0",
3572
+ // "filled_amount": "0.00015484",
3573
+ // "filled_value": "9.9965849816"
3574
+ // },
3575
+ // ],
3576
+ // "message": "OK",
3577
+ // "pagination": {
3578
+ // "has_next": false
3579
+ // }
3580
+ // }
3581
+ //
3488
3582
  }
3489
3583
  }
3490
3584
  else if (status === 'pending') {
3491
3585
  if (stop) {
3492
- response = await this.v1PrivateGetOrderStopPending(this.extend(request, params));
3586
+ response = await this.v2PrivateGetSpotPendingStopOrder(this.extend(request, params));
3587
+ //
3588
+ // {
3589
+ // "code": 0,
3590
+ // "data": [
3591
+ // {
3592
+ // "stop_id": 117586439530,
3593
+ // "market": "BTCUSDT",
3594
+ // "market_type": "SPOT",
3595
+ // "ccy": "BTC",
3596
+ // "side": "buy",
3597
+ // "type": "limit",
3598
+ // "amount": "0.0001",
3599
+ // "price": "51000",
3600
+ // "trigger_price": "52000",
3601
+ // "trigger_direction": "higher",
3602
+ // "trigger_price_type": "mark_price",
3603
+ // "client_id": "x-167673045-df61777094c69312",
3604
+ // "created_at": 1714551237335,
3605
+ // "updated_at": 1714551237335
3606
+ // }
3607
+ // ],
3608
+ // "message": "OK",
3609
+ // "pagination": {
3610
+ // "total": 1,
3611
+ // "has_next": false
3612
+ // }
3613
+ // }
3614
+ //
3493
3615
  }
3494
3616
  else {
3495
- response = await this.v1PrivateGetOrderPending(this.extend(request, params));
3617
+ response = await this.v2PrivateGetSpotPendingOrder(this.extend(request, params));
3618
+ //
3619
+ // {
3620
+ // "code": 0,
3621
+ // "data": [
3622
+ // {
3623
+ // "order_id": 117585921297,
3624
+ // "market": "BTCUSDT",
3625
+ // "market_type": "SPOT",
3626
+ // "side": "buy",
3627
+ // "type": "limit",
3628
+ // "ccy": "BTC",
3629
+ // "amount": "0.00011793",
3630
+ // "price": "52000",
3631
+ // "client_id": "",
3632
+ // "created_at": 1714550707486,
3633
+ // "updated_at": 1714550707486,
3634
+ // "base_fee": "0",
3635
+ // "quote_fee": "0",
3636
+ // "discount_fee": "0",
3637
+ // "maker_fee_rate": "0.002",
3638
+ // "taker_fee_rate": "0.002",
3639
+ // "last_fill_amount": "0",
3640
+ // "last_fill_price": "0",
3641
+ // "unfilled_amount": "0.00011793",
3642
+ // "filled_amount": "0",
3643
+ // "filled_value": "0"
3644
+ // }
3645
+ // ],
3646
+ // "message": "OK",
3647
+ // "pagination": {
3648
+ // "total": 1,
3649
+ // "has_next": false
3650
+ // }
3651
+ // }
3652
+ //
3496
3653
  }
3497
3654
  }
3498
3655
  }
3499
- //
3500
- // Spot and Margin
3501
- //
3502
- // {
3503
- // "code": 0,
3504
- // "data": {
3505
- // "count": 1,
3506
- // "curr_page": 1,
3507
- // "data": [
3508
- // {
3509
- // "account_id": 0,
3510
- // "amount": "0.0005",
3511
- // "asset_fee": "0",
3512
- // "avg_price": "0.00",
3513
- // "client_id": "",
3514
- // "create_time": 1651089247,
3515
- // "deal_amount": "0",
3516
- // "deal_fee": "0",
3517
- // "deal_money": "0",
3518
- // "fee_asset": null,
3519
- // "fee_discount": "1",
3520
- // "finished_time": 0,
3521
- // "id": 74660190839,
3522
- // "left": "0.0005",
3523
- // "maker_fee_rate": "0.002",
3524
- // "market": "BTCUSDT",
3525
- // "money_fee": "0",
3526
- // "order_type": "limit",
3527
- // "price": "31000",
3528
- // "status": "not_deal",
3529
- // "stock_fee": "0",
3530
- // "taker_fee_rate": "0.002",
3531
- // "type": "buy"
3532
- // }
3533
- // ],
3534
- // "has_next": false,
3535
- // "total": 1
3536
- // },
3537
- // "message": "Success"
3538
- // }
3539
- //
3540
- // Swap
3541
- //
3542
- // {
3543
- // "code": 0,
3544
- // "data": {
3545
- // "limit": 100,
3546
- // "offset": 0,
3547
- // "records": [
3548
- // {
3549
- // "amount": "0.0005",
3550
- // "client_id": "",
3551
- // "create_time": 1651030414.088431,
3552
- // "deal_asset_fee": "0",
3553
- // "deal_fee": "0.00960069",
3554
- // "deal_profit": "0.009825",
3555
- // "deal_stock": "19.20138",
3556
- // "effect_type": 0,
3557
- // "fee_asset": "",
3558
- // "fee_discount": "0",
3559
- // "left": "0",
3560
- // "leverage": "3",
3561
- // "maker_fee": "0",
3562
- // "market": "BTCUSDT",
3563
- // "order_id": 18253447431,
3564
- // "position_id": 0,
3565
- // "position_type": 1,
3566
- // "price": "0",
3567
- // "side": 1,
3568
- // "source": "web",
3569
- // "stop_id": 0,
3570
- // "taker_fee": "0.0005",
3571
- // "target": 0,
3572
- // "type": 2,
3573
- // "update_time": 1651030414.08847,
3574
- // "user_id": 3620173
3575
- // },
3576
- // ]
3577
- // },
3578
- // "message": "OK"
3579
- // }
3580
- //
3581
- // Spot and Margin Stop
3582
- //
3583
- // {
3584
- // "code": 0,
3585
- // "data": {
3586
- // "count": 1,
3587
- // "curr_page": 1,
3588
- // "data": [
3589
- // {
3590
- // "account_id": 0,
3591
- // "amount": "155",
3592
- // "client_id": "",
3593
- // "create_time": 1651089182,
3594
- // "fee_asset": null,
3595
- // "fee_discount": "1",
3596
- // "maker_fee": "0.002",
3597
- // "market": "BTCUSDT",
3598
- // "order_id": 74660111965,
3599
- // "order_type": "market",
3600
- // "price": "0",
3601
- // "state": 0,
3602
- // "stop_price": "31500",
3603
- // "taker_fee": "0.002",
3604
- // "type": "buy"
3605
- // }
3606
- // ],
3607
- // "has_next": false,
3608
- // "total": 0
3609
- // },
3610
- // "message": "Success"
3611
- // }
3612
- //
3613
- // Swap Stop
3614
- //
3615
- // {
3616
- // "code": 0,
3617
- // "data": {
3618
- // "limit": 100,
3619
- // "offset": 0,
3620
- // "records": [
3621
- // {
3622
- // "amount": "0.0005",
3623
- // "client_id": "",
3624
- // "create_time": 1651089147.321691,
3625
- // "effect_type": 1,
3626
- // "fee_asset": "",
3627
- // "fee_discount": "0.00000000000000000000",
3628
- // "maker_fee": "0.00030",
3629
- // "market": "BTCUSDT",
3630
- // "order_id": 18332143848,
3631
- // "price": "31000.00",
3632
- // "side": 2,
3633
- // "source": "api.v1",
3634
- // "state": 1,
3635
- // "stop_price": "31500.00",
3636
- // "stop_type": 1,
3637
- // "taker_fee": "0.00050",
3638
- // "target": 0,
3639
- // "type": 1,
3640
- // "update_time": 1651089147.321691,
3641
- // "user_id": 3620173
3642
- // }
3643
- // ],
3644
- // "total": 1
3645
- // },
3646
- // "message": "OK"
3647
- // }
3648
- //
3649
- const tradeRequest = (marketType === 'swap') ? 'records' : 'data';
3650
- const data = this.safeValue(response, 'data');
3651
- const orders = this.safeList(data, tradeRequest, []);
3652
- return this.parseOrders(orders, market, since, limit);
3656
+ const data = this.safeList(response, 'data', []);
3657
+ return this.parseOrders(data, market, since, limit);
3653
3658
  }
3654
3659
  async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
3655
3660
  /**
3656
3661
  * @method
3657
3662
  * @name coinex#fetchOpenOrders
3658
3663
  * @description fetch all unfilled currently open orders
3659
- * @see https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http027_query_pending_stop
3660
- * @see https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http025_query_pending
3661
- * @see https://viabtc.github.io/coinex_api_en_doc/spot/#docsspot003_trade013_stop_pending_order
3662
- * @see https://viabtc.github.io/coinex_api_en_doc/spot/#docsspot003_trade011_pending_order
3664
+ * @see https://docs.coinex.com/api/v2/spot/order/http/list-pending-order
3665
+ * @see https://docs.coinex.com/api/v2/spot/order/http/list-pending-stop-order
3666
+ * @see https://docs.coinex.com/api/v2/futures/order/http/list-pending-order
3667
+ * @see https://docs.coinex.com/api/v2/futures/order/http/list-pending-stop-order
3663
3668
  * @param {string} symbol unified market symbol
3664
3669
  * @param {int} [since] the earliest time in ms to fetch open orders for
3665
- * @param {int} [limit] the maximum number of open orders structures to retrieve
3670
+ * @param {int} [limit] the maximum number of open order structures to retrieve
3666
3671
  * @param {object} [params] extra parameters specific to the exchange API endpoint
3672
+ * @param {boolean} [params.trigger] set to true for fetching trigger orders
3673
+ * @param {string} [params.marginMode] 'cross' or 'isolated' for fetching spot margin orders
3667
3674
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
3668
3675
  */
3669
3676
  return await this.fetchOrdersByStatus('pending', symbol, since, limit, params);
@@ -3673,13 +3680,15 @@ class coinex extends coinex$1 {
3673
3680
  * @method
3674
3681
  * @name coinex#fetchClosedOrders
3675
3682
  * @description fetches information on multiple closed orders made by the user
3676
- * @see https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http029_query_finished
3677
- * @see https://viabtc.github.io/coinex_api_en_doc/spot/#docsspot003_trade010_stop_finished_order
3678
- * @see https://viabtc.github.io/coinex_api_en_doc/spot/#docsspot003_trade012_finished_order
3683
+ * @see https://docs.coinex.com/api/v2/spot/order/http/list-finished-order
3684
+ * @see https://docs.coinex.com/api/v2/spot/order/http/list-finished-stop-order
3685
+ * @see https://docs.coinex.com/api/v2/futures/order/http/list-finished-order
3686
+ * @see https://docs.coinex.com/api/v2/futures/order/http/list-finished-stop-order
3679
3687
  * @param {string} symbol unified market symbol of the market orders were made in
3680
3688
  * @param {int} [since] the earliest time in ms to fetch orders for
3681
3689
  * @param {int} [limit] the maximum number of order structures to retrieve
3682
- * @param {object} [params] extra parameters specific to the exchange API endpoint
3690
+ * @param {boolean} [params.trigger] set to true for fetching trigger orders
3691
+ * @param {string} [params.marginMode] 'cross' or 'isolated' for fetching spot margin orders
3683
3692
  * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
3684
3693
  */
3685
3694
  return await this.fetchOrdersByStatus('finished', symbol, since, limit, params);
@@ -3689,31 +3698,34 @@ class coinex extends coinex$1 {
3689
3698
  * @method
3690
3699
  * @name coinex#createDepositAddress
3691
3700
  * @description create a currency deposit address
3692
- * @see https://viabtc.github.io/coinex_api_en_doc/spot/#docsspot002_account019_update_deposit_address
3701
+ * @see https://docs.coinex.com/api/v2/assets/deposit-withdrawal/http/update-deposit-address
3693
3702
  * @param {string} code unified currency code of the currency for the deposit address
3694
3703
  * @param {object} [params] extra parameters specific to the exchange API endpoint
3704
+ * @param {string} [params.network] the blockchain network to create a deposit address on
3695
3705
  * @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
3696
3706
  */
3697
3707
  await this.loadMarkets();
3698
3708
  const currency = this.currency(code);
3709
+ const network = this.safeString2(params, 'chain', 'network');
3710
+ if (network === undefined) {
3711
+ throw new errors.ArgumentsRequired(this.id + ' createDepositAddress() requires a network parameter');
3712
+ }
3713
+ params = this.omit(params, 'network');
3699
3714
  const request = {
3700
- 'coin_type': currency['id'],
3715
+ 'ccy': currency['id'],
3716
+ 'chain': this.networkCodeToId(network, currency['code']),
3701
3717
  };
3702
- if ('network' in params) {
3703
- const network = this.safeString(params, 'network');
3704
- params = this.omit(params, 'network');
3705
- request['smart_contract_name'] = network;
3706
- }
3707
- const response = await this.v1PrivatePutBalanceDepositAddressCoinType(this.extend(request, params));
3718
+ const response = await this.v2PrivatePostAssetsRenewalDepositAddress(this.extend(request, params));
3708
3719
  //
3709
3720
  // {
3710
3721
  // "code": 0,
3711
3722
  // "data": {
3712
- // "coin_address": "TV639dSpb9iGRtoFYkCp4AoaaDYKrK1pw5",
3713
- // "is_bitcoin_cash": false
3723
+ // "address": "0x321bd6479355142334f45653ad5d8b76105a1234",
3724
+ // "memo": ""
3714
3725
  // },
3715
- // "message": "Success"
3726
+ // "message": "OK"
3716
3727
  // }
3728
+ //
3717
3729
  const data = this.safeDict(response, 'data', {});
3718
3730
  return this.parseDepositAddress(data, currency);
3719
3731
  }
@@ -3722,18 +3734,16 @@ class coinex extends coinex$1 {
3722
3734
  * @method
3723
3735
  * @name coinex#fetchDepositAddress
3724
3736
  * @description fetch the deposit address for a currency associated with this account
3725
- * @see https://viabtc.github.io/coinex_api_en_doc/spot/#docsspot002_account020_query_deposit_address
3737
+ * @see https://docs.coinex.com/api/v2/assets/deposit-withdrawal/http/get-deposit-address
3726
3738
  * @param {string} code unified currency code
3727
3739
  * @param {object} [params] extra parameters specific to the exchange API endpoint
3740
+ * @param {string} [params.network] the blockchain network to create a deposit address on
3728
3741
  * @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
3729
3742
  */
3730
3743
  await this.loadMarkets();
3731
3744
  const currency = this.currency(code);
3732
- const request = {
3733
- 'coin_type': currency['id'],
3734
- };
3735
- const networks = this.safeValue(currency, 'networks', {});
3736
- const network = this.safeString(params, 'network');
3745
+ const networks = this.safeDict(currency, 'networks', {});
3746
+ const network = this.safeString2(params, 'network', 'chain');
3737
3747
  params = this.omit(params, 'network');
3738
3748
  const networksKeys = Object.keys(networks);
3739
3749
  const numOfNetworks = networksKeys.length;
@@ -3745,24 +3755,24 @@ class coinex extends coinex$1 {
3745
3755
  throw new errors.ExchangeError(this.id + ' fetchDepositAddress() ' + network + ' network not supported for ' + code);
3746
3756
  }
3747
3757
  }
3748
- if (network !== undefined) {
3749
- request['smart_contract_name'] = network;
3750
- }
3751
- const response = await this.v1PrivateGetBalanceDepositAddressCoinType(this.extend(request, params));
3758
+ const request = {
3759
+ 'ccy': currency['id'],
3760
+ 'chain': network,
3761
+ };
3762
+ const response = await this.v2PrivateGetAssetsDepositAddress(this.extend(request, params));
3752
3763
  //
3753
- // {
3754
- // "code": 0,
3755
- // "data": {
3756
- // "coin_address": "1P1JqozxioQwaqPwgMAQdNDYNyaVSqgARq",
3757
- // // coin_address: "xxxxxxxxxxxxxx:yyyyyyyyy", // with embedded tag/memo
3758
- // "is_bitcoin_cash": false
3759
- // },
3760
- // "message": "Success"
3761
- // }
3764
+ // {
3765
+ // "code": 0,
3766
+ // "data": {
3767
+ // "address": "0x321bd6479355142334f45653ad5d8b76105a1234",
3768
+ // "memo": ""
3769
+ // },
3770
+ // "message": "OK"
3771
+ // }
3762
3772
  //
3763
- const data = this.safeValue(response, 'data', {});
3773
+ const data = this.safeDict(response, 'data', {});
3764
3774
  const depositAddress = this.parseDepositAddress(data, currency);
3765
- const options = this.safeValue(this.options, 'fetchDepositAddress', {});
3775
+ const options = this.safeDict(this.options, 'fetchDepositAddress', {});
3766
3776
  const fillResponseFromRequest = this.safeBool(options, 'fillResponseFromRequest', true);
3767
3777
  if (fillResponseFromRequest) {
3768
3778
  depositAddress['network'] = this.safeNetworkCode(network, currency);
@@ -3788,11 +3798,11 @@ class coinex extends coinex$1 {
3788
3798
  parseDepositAddress(depositAddress, currency = undefined) {
3789
3799
  //
3790
3800
  // {
3791
- // "coin_address": "1P1JqozxioQwaqPwgMAQdNDYNyaVSqgARq",
3792
- // "is_bitcoin_cash": false
3801
+ // "address": "1P1JqozxioQwaqPwgMAQdNDYNyaVSqgARq",
3802
+ // "memo": ""
3793
3803
  // }
3794
3804
  //
3795
- const coinAddress = this.safeString(depositAddress, 'coin_address');
3805
+ const coinAddress = this.safeString(depositAddress, 'address');
3796
3806
  const parts = coinAddress.split(':');
3797
3807
  let address = undefined;
3798
3808
  let tag = undefined;
@@ -6112,6 +6122,8 @@ class coinex extends coinex$1 {
6112
6122
  preparedString += nonce + this.secret;
6113
6123
  const signature = this.hash(this.encode(preparedString), sha256.sha256);
6114
6124
  headers = {
6125
+ 'Content-Type': 'application/json; charset=utf-8',
6126
+ 'Accept': 'application/json',
6115
6127
  'X-COINEX-KEY': this.apiKey,
6116
6128
  'X-COINEX-SIGN': signature,
6117
6129
  'X-COINEX-TIMESTAMP': nonce,