ccxt 4.1.18 → 4.1.20

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 (200) hide show
  1. package/README.md +3 -7
  2. package/build.sh +2 -0
  3. package/dist/ccxt.browser.js +661 -351
  4. package/dist/ccxt.browser.min.js +3 -3
  5. package/dist/cjs/ccxt.js +1 -1
  6. package/dist/cjs/src/ace.js +2 -5
  7. package/dist/cjs/src/base/Exchange.js +20 -2
  8. package/dist/cjs/src/bigone.js +1 -1
  9. package/dist/cjs/src/binance.js +4 -3
  10. package/dist/cjs/src/bitfinex.js +1 -1
  11. package/dist/cjs/src/bitfinex2.js +1 -1
  12. package/dist/cjs/src/bitget.js +372 -125
  13. package/dist/cjs/src/bithumb.js +1 -1
  14. package/dist/cjs/src/bitmart.js +6 -7
  15. package/dist/cjs/src/bitmex.js +1 -1
  16. package/dist/cjs/src/bitpanda.js +1 -1
  17. package/dist/cjs/src/bitstamp.js +2 -3
  18. package/dist/cjs/src/bittrex.js +3 -3
  19. package/dist/cjs/src/btcalpha.js +2 -3
  20. package/dist/cjs/src/bybit.js +3 -3
  21. package/dist/cjs/src/cex.js +1 -1
  22. package/dist/cjs/src/coinbase.js +5 -6
  23. package/dist/cjs/src/coinbasepro.js +1 -1
  24. package/dist/cjs/src/coinex.js +1 -1
  25. package/dist/cjs/src/coinfalcon.js +1 -1
  26. package/dist/cjs/src/coinmate.js +2 -2
  27. package/dist/cjs/src/coinone.js +1 -1
  28. package/dist/cjs/src/coinsph.js +1 -0
  29. package/dist/cjs/src/coinspot.js +1 -1
  30. package/dist/cjs/src/delta.js +1 -1
  31. package/dist/cjs/src/deribit.js +1 -1
  32. package/dist/cjs/src/digifinex.js +8 -9
  33. package/dist/cjs/src/exmo.js +3 -4
  34. package/dist/cjs/src/gate.js +2 -1
  35. package/dist/cjs/src/gemini.js +8 -1
  36. package/dist/cjs/src/hitbtc.js +1 -1
  37. package/dist/cjs/src/hollaex.js +1 -1
  38. package/dist/cjs/src/huobi.js +13 -19
  39. package/dist/cjs/src/huobijp.js +3 -3
  40. package/dist/cjs/src/indodax.js +2 -1
  41. package/dist/cjs/src/kraken.js +3 -2
  42. package/dist/cjs/src/krakenfutures.js +7 -6
  43. package/dist/cjs/src/kucoin.js +3 -2
  44. package/dist/cjs/src/kucoinfutures.js +2 -2
  45. package/dist/cjs/src/kuna.js +1 -1
  46. package/dist/cjs/src/lbank.js +2 -2
  47. package/dist/cjs/src/lbank2.js +11 -8
  48. package/dist/cjs/src/luno.js +1 -1
  49. package/dist/cjs/src/lykke.js +2 -2
  50. package/dist/cjs/src/mexc.js +7 -8
  51. package/dist/cjs/src/novadax.js +1 -1
  52. package/dist/cjs/src/oceanex.js +1 -1
  53. package/dist/cjs/src/okcoin.js +4 -5
  54. package/dist/cjs/src/okx.js +9 -10
  55. package/dist/cjs/src/poloniex.js +5 -5
  56. package/dist/cjs/src/poloniexfutures.js +2 -2
  57. package/dist/cjs/src/pro/kucoin.js +87 -44
  58. package/dist/cjs/src/pro/okx.js +6 -5
  59. package/dist/cjs/src/tidex.js +1 -1
  60. package/dist/cjs/src/upbit.js +1 -1
  61. package/dist/cjs/src/wazirx.js +1 -1
  62. package/dist/cjs/src/whitebit.js +1 -1
  63. package/dist/cjs/src/woo.js +3 -1
  64. package/dist/cjs/src/yobit.js +1 -1
  65. package/js/ccxt.d.ts +1 -1
  66. package/js/ccxt.js +1 -1
  67. package/js/src/abstract/binance.d.ts +1 -0
  68. package/js/src/abstract/binancecoinm.d.ts +1 -0
  69. package/js/src/abstract/binanceus.d.ts +1 -0
  70. package/js/src/abstract/binanceusdm.d.ts +1 -0
  71. package/js/src/ace.d.ts +2 -2
  72. package/js/src/ace.js +2 -5
  73. package/js/src/ascendex.d.ts +7 -7
  74. package/js/src/base/Exchange.d.ts +3 -0
  75. package/js/src/base/Exchange.js +20 -2
  76. package/js/src/base/types.d.ts +3 -0
  77. package/js/src/bigone.d.ts +1 -1
  78. package/js/src/bigone.js +1 -1
  79. package/js/src/binance.d.ts +1 -1
  80. package/js/src/binance.js +4 -3
  81. package/js/src/bitfinex.d.ts +1 -1
  82. package/js/src/bitfinex.js +1 -1
  83. package/js/src/bitfinex2.d.ts +3 -3
  84. package/js/src/bitfinex2.js +1 -1
  85. package/js/src/bitflyer.d.ts +7 -7
  86. package/js/src/bitget.d.ts +1 -1
  87. package/js/src/bitget.js +372 -125
  88. package/js/src/bithumb.d.ts +1 -1
  89. package/js/src/bithumb.js +1 -1
  90. package/js/src/bitmart.d.ts +2 -2
  91. package/js/src/bitmart.js +6 -7
  92. package/js/src/bitmex.d.ts +4 -4
  93. package/js/src/bitmex.js +1 -1
  94. package/js/src/bitopro.d.ts +2 -2
  95. package/js/src/bitpanda.d.ts +1 -1
  96. package/js/src/bitpanda.js +1 -1
  97. package/js/src/bitstamp.d.ts +1 -1
  98. package/js/src/bitstamp.js +2 -3
  99. package/js/src/bittrex.d.ts +2 -2
  100. package/js/src/bittrex.js +3 -3
  101. package/js/src/btcalpha.d.ts +1 -1
  102. package/js/src/btcalpha.js +2 -3
  103. package/js/src/btcmarkets.d.ts +7 -7
  104. package/js/src/btcturk.d.ts +6 -6
  105. package/js/src/bybit.d.ts +2 -2
  106. package/js/src/bybit.js +3 -3
  107. package/js/src/cex.d.ts +9 -9
  108. package/js/src/cex.js +1 -1
  109. package/js/src/coinbase.d.ts +5 -5
  110. package/js/src/coinbase.js +5 -6
  111. package/js/src/coinbasepro.d.ts +1 -1
  112. package/js/src/coinbasepro.js +1 -1
  113. package/js/src/coincheck.d.ts +4 -4
  114. package/js/src/coinex.d.ts +1 -1
  115. package/js/src/coinex.js +1 -1
  116. package/js/src/coinfalcon.d.ts +4 -4
  117. package/js/src/coinfalcon.js +1 -1
  118. package/js/src/coinmate.d.ts +1 -22
  119. package/js/src/coinmate.js +2 -2
  120. package/js/src/coinone.d.ts +1 -1
  121. package/js/src/coinone.js +1 -1
  122. package/js/src/coinsph.js +1 -0
  123. package/js/src/coinspot.d.ts +1 -1
  124. package/js/src/coinspot.js +1 -1
  125. package/js/src/cryptocom.d.ts +4 -4
  126. package/js/src/delta.d.ts +1 -1
  127. package/js/src/delta.js +1 -1
  128. package/js/src/deribit.d.ts +4 -4
  129. package/js/src/deribit.js +1 -1
  130. package/js/src/digifinex.d.ts +2 -2
  131. package/js/src/digifinex.js +8 -9
  132. package/js/src/exmo.d.ts +14 -14
  133. package/js/src/exmo.js +3 -4
  134. package/js/src/gate.d.ts +10 -12
  135. package/js/src/gate.js +2 -1
  136. package/js/src/gemini.d.ts +7 -7
  137. package/js/src/gemini.js +8 -1
  138. package/js/src/hitbtc.d.ts +23 -23
  139. package/js/src/hitbtc.js +1 -1
  140. package/js/src/hollaex.d.ts +5 -5
  141. package/js/src/hollaex.js +1 -1
  142. package/js/src/huobi.d.ts +8 -27
  143. package/js/src/huobi.js +13 -19
  144. package/js/src/huobijp.d.ts +15 -34
  145. package/js/src/huobijp.js +3 -3
  146. package/js/src/idex.d.ts +9 -9
  147. package/js/src/indodax.d.ts +6 -6
  148. package/js/src/indodax.js +2 -1
  149. package/js/src/kraken.d.ts +7 -7
  150. package/js/src/kraken.js +3 -2
  151. package/js/src/krakenfutures.d.ts +2 -2
  152. package/js/src/krakenfutures.js +7 -6
  153. package/js/src/kucoin.d.ts +3 -7
  154. package/js/src/kucoin.js +3 -2
  155. package/js/src/kucoinfutures.d.ts +1 -24
  156. package/js/src/kucoinfutures.js +2 -2
  157. package/js/src/kuna.d.ts +3 -3
  158. package/js/src/kuna.js +1 -1
  159. package/js/src/lbank.d.ts +7 -7
  160. package/js/src/lbank.js +3 -3
  161. package/js/src/lbank2.d.ts +6 -6
  162. package/js/src/lbank2.js +11 -8
  163. package/js/src/luno.d.ts +1 -1
  164. package/js/src/luno.js +1 -1
  165. package/js/src/lykke.d.ts +1 -20
  166. package/js/src/lykke.js +2 -2
  167. package/js/src/mercado.d.ts +4 -4
  168. package/js/src/mexc.d.ts +4 -4
  169. package/js/src/mexc.js +7 -8
  170. package/js/src/ndax.d.ts +3 -3
  171. package/js/src/novadax.d.ts +1 -1
  172. package/js/src/novadax.js +1 -1
  173. package/js/src/oceanex.d.ts +14 -14
  174. package/js/src/oceanex.js +1 -1
  175. package/js/src/okcoin.d.ts +10 -10
  176. package/js/src/okcoin.js +4 -5
  177. package/js/src/okx.d.ts +2 -2
  178. package/js/src/okx.js +9 -10
  179. package/js/src/phemex.d.ts +3 -8
  180. package/js/src/poloniex.d.ts +4 -4
  181. package/js/src/poloniex.js +5 -5
  182. package/js/src/poloniexfutures.d.ts +4 -26
  183. package/js/src/poloniexfutures.js +2 -2
  184. package/js/src/pro/kucoin.js +87 -44
  185. package/js/src/pro/okx.js +6 -5
  186. package/js/src/tidex.d.ts +6 -6
  187. package/js/src/tidex.js +1 -1
  188. package/js/src/upbit.d.ts +6 -6
  189. package/js/src/upbit.js +1 -1
  190. package/js/src/wavesexchange.d.ts +2 -2
  191. package/js/src/wazirx.d.ts +1 -1
  192. package/js/src/wazirx.js +1 -1
  193. package/js/src/whitebit.d.ts +10 -10
  194. package/js/src/whitebit.js +1 -1
  195. package/js/src/woo.d.ts +1 -1
  196. package/js/src/woo.js +3 -1
  197. package/js/src/yobit.d.ts +9 -9
  198. package/js/src/yobit.js +1 -1
  199. package/js/src/zonda.d.ts +5 -5
  200. package/package.json +4 -3
@@ -1805,7 +1805,7 @@ class ace extends _abstract_ace_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
1805
1805
  const ticker = this.parseTicker(rawTicker, market);
1806
1806
  tickers.push(ticker);
1807
1807
  }
1808
- return this.filterByArray(tickers, 'symbol', symbols);
1808
+ return this.filterByArrayTickers(tickers, 'symbol', symbols);
1809
1809
  }
1810
1810
  async fetchOrderBook(symbol, limit = undefined, params = {}) {
1811
1811
  /**
@@ -2346,10 +2346,7 @@ class ace extends _abstract_ace_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
2346
2346
  // }
2347
2347
  //
2348
2348
  const data = this.safeValue(response, 'attachment');
2349
- const trades = this.safeValue(data, 'trades');
2350
- if (trades === undefined) {
2351
- return trades;
2352
- }
2349
+ const trades = this.safeValue(data, 'trades', []);
2353
2350
  return this.parseTrades(trades, market, since, limit);
2354
2351
  }
2355
2352
  async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -6588,6 +6585,7 @@ class Exchange {
6588
6585
  this.orderbooks = {};
6589
6586
  this.tickers = {};
6590
6587
  this.orders = undefined;
6588
+ this.triggerOrders = undefined;
6591
6589
  this.transactions = {};
6592
6590
  this.positions = {};
6593
6591
  this.requiresWeb3 = false;
@@ -7508,11 +7506,17 @@ class Exchange {
7508
7506
  // V
7509
7507
  client.throttle(cost).then(() => {
7510
7508
  client.send(message);
7511
- }).catch((e) => { throw e; });
7509
+ }).catch((e) => {
7510
+ delete client.subscriptions[subscribeHash];
7511
+ future.reject(e);
7512
+ });
7512
7513
  }
7513
7514
  else {
7514
7515
  client.send(message)
7515
- .catch((e) => { throw e; });
7516
+ .catch((e) => {
7517
+ delete client.subscriptions[subscribeHash];
7518
+ future.reject(e);
7519
+ });
7516
7520
  }
7517
7521
  }
7518
7522
  }).catch((e) => {
@@ -9826,6 +9830,9 @@ class Exchange {
9826
9830
  async fetchTickers(symbols = undefined, params = {}) {
9827
9831
  throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.NotSupported(this.id + ' fetchTickers() is not supported yet');
9828
9832
  }
9833
+ async fetchOrderBooks(symbols = undefined, limit = undefined, params = {}) {
9834
+ throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.NotSupported(this.id + ' fetchOrderBooks() is not supported yet');
9835
+ }
9829
9836
  async watchTickers(symbols = undefined, params = {}) {
9830
9837
  throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.NotSupported(this.id + ' watchTickers() is not supported yet');
9831
9838
  }
@@ -10707,6 +10714,14 @@ class Exchange {
10707
10714
  */
10708
10715
  return this.filterByArray(objects, key, values, indexed);
10709
10716
  }
10717
+ filterByArrayTickers(objects, key, values = undefined, indexed = true) {
10718
+ /**
10719
+ * @ignore
10720
+ * @method
10721
+ * @description Typed wrapper for filterByArray that returns a dictionary of tickers
10722
+ */
10723
+ return this.filterByArray(objects, key, values, indexed);
10724
+ }
10710
10725
  resolvePromiseIfMessagehashMatches(client, prefix, symbol, data) {
10711
10726
  const messageHashes = this.findMessageHashes(client, prefix);
10712
10727
  for (let i = 0; i < messageHashes.length; i++) {
@@ -14875,7 +14890,7 @@ class bigone extends _abstract_bigone_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
14875
14890
  const symbol = ticker['symbol'];
14876
14891
  result[symbol] = ticker;
14877
14892
  }
14878
- return this.filterByArray(result, 'symbol', symbols);
14893
+ return this.filterByArrayTickers(result, 'symbol', symbols);
14879
14894
  }
14880
14895
  async fetchTime(params = {}) {
14881
14896
  /**
@@ -16746,6 +16761,7 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
16746
16761
  },
16747
16762
  'dapiData': {
16748
16763
  'get': {
16764
+ 'delivery-price': 1,
16749
16765
  'openInterestHist': 1,
16750
16766
  'topLongShortAccountRatio': 1,
16751
16767
  'topLongShortPositionRatio': 1,
@@ -16968,8 +16984,8 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
16968
16984
  'get': {
16969
16985
  'ping': 0.2,
16970
16986
  'time': 0.2,
16971
- 'depth': { 'cost': 0.4, 'byLimit': [[100, 0.4], [500, 2], [1000, 4], [5000, 20]] },
16972
- 'trades': 0.4,
16987
+ 'depth': { 'cost': 1, 'byLimit': [[100, 1], [500, 5], [1000, 10], [5000, 50]] },
16988
+ 'trades': 2,
16973
16989
  'aggTrades': 0.4,
16974
16990
  'historicalTrades': 2,
16975
16991
  'klines': 0.4,
@@ -17066,7 +17082,7 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
17066
17082
  'margin/marginInterestHistory': 1,
17067
17083
  'portfolio/interest-history': 50,
17068
17084
  'um/income': 30,
17069
- 'cm/income ': 30,
17085
+ 'cm/income': 30,
17070
17086
  'um/account': 5,
17071
17087
  'cm/account': 5,
17072
17088
  'portfolio/repay-futures-switch': 3,
@@ -32962,7 +32978,7 @@ class bitfinex extends _abstract_bitfinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
32962
32978
  const symbol = ticker['symbol'];
32963
32979
  result[symbol] = ticker;
32964
32980
  }
32965
- return this.filterByArray(result, 'symbol', symbols);
32981
+ return this.filterByArrayTickers(result, 'symbol', symbols);
32966
32982
  }
32967
32983
  async fetchTicker(symbol, params = {}) {
32968
32984
  /**
@@ -34942,7 +34958,7 @@ class bitfinex2 extends _abstract_bitfinex2_js__WEBPACK_IMPORTED_MODULE_0__/* ["
34942
34958
  const symbol = market['symbol'];
34943
34959
  result[symbol] = this.parseTicker(ticker, market);
34944
34960
  }
34945
- return this.filterByArray(result, 'symbol', symbols);
34961
+ return this.filterByArrayTickers(result, 'symbol', symbols);
34946
34962
  }
34947
34963
  async fetchTicker(symbol, params = {}) {
34948
34964
  /**
@@ -40876,42 +40892,61 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
40876
40892
  // "symbol": "BTCUSDT_UMCBL"
40877
40893
  // }
40878
40894
  //
40879
- // private
40895
+ // spot: fetchMyTrades
40880
40896
  //
40881
40897
  // {
40882
- // accountId: '4383649766',
40883
- // symbol: 'ETHBTC_SPBL',
40884
- // orderId: '1009402341131468800',
40885
- // fillId: '1009402351489581068',
40886
- // orderType: 'limit',
40887
- // side: 'sell',
40888
- // fillPrice: '0.06997800',
40889
- // fillQuantity: '0.04120000',
40890
- // fillTotalAmount: '0.00288309',
40891
- // feeCcy: 'BTC',
40892
- // fees: '-0.00000288',
40893
- // cTime: '1676386195060'
40898
+ // "accountId": "7264631750",
40899
+ // "symbol": "BTCUSDT_SPBL",
40900
+ // "orderId": "1098394344925597696",
40901
+ // "fillId": "1098394344974925824",
40902
+ // "orderType": "market",
40903
+ // "side": "sell",
40904
+ // "fillPrice": "28467.68",
40905
+ // "fillQuantity": "0.0002",
40906
+ // "fillTotalAmount": "5.693536",
40907
+ // "feeCcy": "USDT",
40908
+ // "fees": "-0.005693536",
40909
+ // "takerMakerFlag": "taker",
40910
+ // "cTime": "1697603539699"
40894
40911
  // }
40895
40912
  //
40913
+ // swap and future: fetchMyTrades
40914
+ //
40896
40915
  // {
40897
- // tradeId: '881640729552281602',
40898
- // symbol: 'BTCUSDT_UMCBL',
40899
- // orderId: '881640729145409536',
40900
- // price: '38429.50',
40901
- // sizeQty: '0.001',
40902
- // fee: '0',
40903
- // side: 'open_long',
40904
- // fillAmount: '38.4295',
40905
- // profit: '0',
40906
- // cTime: '1645925450694'
40916
+ // "tradeId": "1099351653724958721",
40917
+ // "symbol": "BTCUSDT_UMCBL",
40918
+ // "orderId": "1099351653682413569",
40919
+ // "price": "29531.3",
40920
+ // "sizeQty": "0.001",
40921
+ // "fee": "-0.01771878",
40922
+ // "side": "close_long",
40923
+ // "fillAmount": "29.5313",
40924
+ // "profit": "0.001",
40925
+ // "enterPointSource": "WEB",
40926
+ // "tradeSide": "close_long",
40927
+ // "holdMode": "double_hold",
40928
+ // "takerMakerFlag": "taker",
40929
+ // "cTime": "1697831779891"
40930
+ // }
40931
+ //
40932
+ // isolated and cross margin: fetchMyTrades
40933
+ //
40934
+ // {
40935
+ // "orderId": "1099353730455318528",
40936
+ // "fillId": "1099353730627092481",
40937
+ // "orderType": "market",
40938
+ // "side": "sell",
40939
+ // "fillPrice": "29543.7",
40940
+ // "fillQuantity": "0.0001",
40941
+ // "fillTotalAmount": "2.95437",
40942
+ // "feeCcy": "USDT",
40943
+ // "fees": "-0.00295437",
40944
+ // "ctime": "1697832275063"
40907
40945
  // }
40908
40946
  //
40909
40947
  const marketId = this.safeString(trade, 'symbol');
40910
40948
  const symbol = this.safeSymbol(marketId, market);
40911
- let amount = this.safeString2(trade, 'fillQuantity', 'size');
40912
- amount = this.safeString(trade, 'sizeQty', amount);
40913
- let timestamp = this.safeInteger2(trade, 'fillTime', 'timestamp');
40914
- timestamp = this.safeInteger(trade, 'cTime', timestamp);
40949
+ const timestamp = this.safeIntegerN(trade, ['fillTime', 'timestamp', 'ctime', 'cTime']);
40915
40950
  let fee = undefined;
40916
40951
  const feeAmount = this.safeString(trade, 'fees');
40917
40952
  if (feeAmount !== undefined) {
@@ -40922,7 +40957,6 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
40922
40957
  'cost': _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise.stringNeg */ .O.stringNeg(feeAmount),
40923
40958
  };
40924
40959
  }
40925
- const datetime = this.iso8601(timestamp);
40926
40960
  return this.safeTrade({
40927
40961
  'info': trade,
40928
40962
  'id': this.safeString2(trade, 'tradeId', 'fillId'),
@@ -40930,13 +40964,13 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
40930
40964
  'symbol': symbol,
40931
40965
  'side': this.safeStringLower(trade, 'side'),
40932
40966
  'type': this.safeString(trade, 'orderType'),
40933
- 'takerOrMaker': undefined,
40967
+ 'takerOrMaker': this.safeString(trade, 'takerMakerFlag'),
40934
40968
  'price': this.safeString2(trade, 'fillPrice', 'price'),
40935
- 'amount': amount,
40969
+ 'amount': this.safeStringN(trade, ['fillQuantity', 'size', 'sizeQty']),
40936
40970
  'cost': undefined,
40937
- 'fee': fee,
40938
40971
  'timestamp': timestamp,
40939
- 'datetime': datetime,
40972
+ 'datetime': this.iso8601(timestamp),
40973
+ 'fee': fee,
40940
40974
  }, market);
40941
40975
  }
40942
40976
  async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
@@ -41612,18 +41646,31 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
41612
41646
  // "data": "1098753830701928448"
41613
41647
  // }
41614
41648
  //
41649
+ // isolated and cross margin: fetchOpenOrders, fetchCanceledOrders, fetchClosedOrders
41650
+ //
41651
+ // {
41652
+ // "symbol": "BTCUSDT",
41653
+ // "orderType": "limit",
41654
+ // "source": "WEB",
41655
+ // "orderId": "1099108898629627904",
41656
+ // "clientOid": "f9b55416029e4cc2bbbe2f40ac368c38",
41657
+ // "loanType": "autoLoan",
41658
+ // "price": "25000",
41659
+ // "side": "buy",
41660
+ // "status": "new",
41661
+ // "baseQuantity": "0.0002",
41662
+ // "quoteAmount": "5",
41663
+ // "fillPrice": "0",
41664
+ // "fillQuantity": "0",
41665
+ // "fillTotalAmount": "0",
41666
+ // "ctime": "1697773902588"
41667
+ // }
41668
+ //
41615
41669
  const marketId = this.safeString(order, 'symbol');
41616
41670
  market = this.safeMarket(marketId, market);
41617
- const symbol = market['symbol'];
41618
- const id = this.safeString2(order, 'orderId', 'data');
41619
- const price = this.safeString2(order, 'price', 'executePrice');
41620
- const amount = this.safeString2(order, 'quantity', 'size');
41621
- const filled = this.safeString2(order, 'fillQuantity', 'filledQty');
41622
- const cost = this.safeString2(order, 'fillTotalAmount', 'filledAmount');
41623
- const average = this.safeString2(order, 'fillPrice', 'priceAvg');
41624
- const type = this.safeString(order, 'orderType');
41625
- const timestamp = this.safeInteger(order, 'cTime');
41626
- const lastUpdatetimestamp = this.safeInteger(order, 'uTime');
41671
+ const timestamp = this.safeInteger2(order, 'cTime', 'ctime');
41672
+ const updateTimestamp = this.safeInteger(order, 'uTime');
41673
+ const rawStatus = this.safeString2(order, 'status', 'state');
41627
41674
  let side = this.safeString2(order, 'side', 'posSide');
41628
41675
  if ((side === 'open_long') || (side === 'close_short')) {
41629
41676
  side = 'buy';
@@ -41631,7 +41678,6 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
41631
41678
  else if ((side === 'close_long') || (side === 'open_short')) {
41632
41679
  side = 'sell';
41633
41680
  }
41634
- const clientOrderId = this.safeString2(order, 'clientOrderId', 'clientOid');
41635
41681
  let fee = undefined;
41636
41682
  const feeCostString = this.safeString(order, 'fee');
41637
41683
  if (feeCostString !== undefined) {
@@ -41651,31 +41697,28 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
41651
41697
  'currency': this.safeCurrencyCode(this.safeString(first, 'feeCoinCode')),
41652
41698
  };
41653
41699
  }
41654
- const rawStatus = this.safeString2(order, 'status', 'state');
41655
- const status = this.parseOrderStatus(rawStatus);
41656
- const lastTradeTimestamp = this.safeInteger(order, 'uTime');
41657
41700
  return this.safeOrder({
41658
41701
  'info': order,
41659
- 'id': id,
41660
- 'clientOrderId': clientOrderId,
41702
+ 'id': this.safeString2(order, 'orderId', 'data'),
41703
+ 'clientOrderId': this.safeString2(order, 'clientOrderId', 'clientOid'),
41661
41704
  'timestamp': timestamp,
41662
41705
  'datetime': this.iso8601(timestamp),
41663
- 'lastTradeTimestamp': lastTradeTimestamp,
41664
- 'lastUpdateTimestamp': lastUpdatetimestamp,
41665
- 'symbol': symbol,
41666
- 'type': type,
41706
+ 'lastTradeTimestamp': updateTimestamp,
41707
+ 'lastUpdateTimestamp': updateTimestamp,
41708
+ 'symbol': market['symbol'],
41709
+ 'type': this.safeString(order, 'orderType'),
41667
41710
  'timeInForce': undefined,
41668
41711
  'postOnly': undefined,
41669
41712
  'side': side,
41670
- 'price': price,
41713
+ 'price': this.safeString2(order, 'price', 'executePrice'),
41671
41714
  'stopPrice': this.safeNumber(order, 'triggerPrice'),
41672
41715
  'triggerPrice': this.safeNumber(order, 'triggerPrice'),
41673
- 'average': average,
41674
- 'cost': cost,
41675
- 'amount': amount,
41676
- 'filled': filled,
41716
+ 'average': this.safeString2(order, 'fillPrice', 'priceAvg'),
41717
+ 'cost': this.safeString2(order, 'fillTotalAmount', 'filledAmount'),
41718
+ 'amount': this.safeStringN(order, ['quantity', 'size', 'baseQuantity']),
41719
+ 'filled': this.safeString2(order, 'fillQuantity', 'filledQty'),
41677
41720
  'remaining': undefined,
41678
- 'status': status,
41721
+ 'status': this.parseOrderStatus(rawStatus),
41679
41722
  'fee': fee,
41680
41723
  'trades': undefined,
41681
41724
  }, market);
@@ -42414,9 +42457,12 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
42414
42457
  * @name bitget#fetchOpenOrders
42415
42458
  * @description fetch all unfilled currently open orders
42416
42459
  * @see https://bitgetlimited.github.io/apidoc/en/spot/#get-order-list
42460
+ * @see https://bitgetlimited.github.io/apidoc/en/spot/#get-current-plan-orders
42417
42461
  * @see https://bitgetlimited.github.io/apidoc/en/mix/#get-all-open-order
42418
42462
  * @see https://bitgetlimited.github.io/apidoc/en/mix/#get-plan-order-tpsl-list
42419
42463
  * @see https://bitgetlimited.github.io/apidoc/en/mix/#get-open-order
42464
+ * @see https://bitgetlimited.github.io/apidoc/en/margin/#isolated-open-orders
42465
+ * @see https://bitgetlimited.github.io/apidoc/en/margin/#get-cross-open-orders
42420
42466
  * @param {string} symbol unified market symbol
42421
42467
  * @param {int} [since] the earliest time in ms to fetch open orders for
42422
42468
  * @param {int} [limit] the maximum number of open order structures to retrieve
@@ -42425,32 +42471,59 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
42425
42471
  */
42426
42472
  await this.loadMarkets();
42427
42473
  const request = {};
42428
- let marketType = undefined;
42429
- let query = undefined;
42430
42474
  let market = undefined;
42475
+ let marketType = undefined;
42476
+ let marginMode = undefined;
42477
+ let response = undefined;
42431
42478
  if (symbol !== undefined) {
42432
42479
  market = this.market(symbol);
42433
- request['symbol'] = market['id'];
42480
+ const symbolRequest = (marginMode !== undefined) ? (market['info']['symbolName']) : (market['id']);
42481
+ request['symbol'] = symbolRequest;
42434
42482
  }
42435
- [marketType, query] = this.handleMarketTypeAndParams('fetchOpenOrders', market, params);
42436
- let response = undefined;
42437
- const stop = this.safeValue(query, 'stop');
42483
+ [marketType, params] = this.handleMarketTypeAndParams('fetchOpenOrders', market, params);
42484
+ [marginMode, params] = this.handleMarginModeAndParams('fetchOpenOrders', params);
42485
+ const stop = this.safeValue2(params, 'stop', 'trigger');
42486
+ params = this.omit(params, ['stop', 'trigger']);
42438
42487
  if (stop) {
42439
42488
  this.checkRequiredSymbol('fetchOpenOrders', symbol);
42440
- query = this.omit(query, 'stop');
42441
42489
  if (marketType === 'spot') {
42442
42490
  if (limit !== undefined) {
42443
42491
  request['pageSize'] = limit;
42444
42492
  }
42445
- response = await this.privateSpotPostPlanCurrentPlan(this.extend(request, query));
42493
+ response = await this.privateSpotPostPlanCurrentPlan(this.extend(request, params));
42446
42494
  }
42447
42495
  else {
42448
- response = await this.privateMixGetPlanCurrentPlan(this.extend(request, query));
42496
+ response = await this.privateMixGetPlanCurrentPlan(this.extend(request, params));
42449
42497
  }
42450
42498
  }
42451
42499
  else {
42452
42500
  if (marketType === 'spot') {
42453
- response = await this.privateSpotPostTradeOpenOrders(this.extend(request, query));
42501
+ if (marginMode !== undefined) {
42502
+ const clientOrderId = this.safeString2(params, 'clientOid', 'clientOrderId');
42503
+ const endTime = this.safeIntegerN(params, ['endTime', 'until', 'till']);
42504
+ params = this.omit(params, ['until', 'till', 'clientOrderId']);
42505
+ if (clientOrderId !== undefined) {
42506
+ request['clientOid'] = clientOrderId;
42507
+ }
42508
+ if (endTime !== undefined) {
42509
+ request['endTime'] = endTime;
42510
+ }
42511
+ if (since !== undefined) {
42512
+ request['startTime'] = since;
42513
+ }
42514
+ if (limit !== undefined) {
42515
+ request['pageSize'] = limit;
42516
+ }
42517
+ if (marginMode === 'isolated') {
42518
+ response = await this.privateMarginGetIsolatedOrderOpenOrders(this.extend(request, params));
42519
+ }
42520
+ else if (marginMode === 'cross') {
42521
+ response = await this.privateMarginGetCrossOrderOpenOrders(this.extend(request, params));
42522
+ }
42523
+ }
42524
+ else {
42525
+ response = await this.privateSpotPostTradeOpenOrders(this.extend(request, params));
42526
+ }
42454
42527
  }
42455
42528
  else {
42456
42529
  if (market === undefined) {
@@ -42462,10 +42535,11 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
42462
42535
  productType = 'S' + productType;
42463
42536
  }
42464
42537
  request['productType'] = productType;
42465
- response = await this.privateMixGetOrderMarginCoinCurrent(this.extend(request, query));
42538
+ response = await this.privateMixGetOrderMarginCoinCurrent(this.extend(request, params));
42466
42539
  }
42467
42540
  else {
42468
- response = await this.privateMixGetOrderCurrent(this.extend(request, query));
42541
+ this.checkRequiredSymbol('fetchOpenOrders', symbol);
42542
+ response = await this.privateMixGetOrderCurrent(this.extend(request, params));
42469
42543
  }
42470
42544
  }
42471
42545
  }
@@ -42572,10 +42646,45 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
42572
42646
  // }
42573
42647
  // }
42574
42648
  //
42649
+ // isolated and cross margin
42650
+ //
42651
+ // {
42652
+ // "code": "00000",
42653
+ // "msg": "success",
42654
+ // "requestTime": 1697773997250,
42655
+ // "data": {
42656
+ // "orderList": [
42657
+ // {
42658
+ // "symbol": "BTCUSDT",
42659
+ // "orderType": "limit",
42660
+ // "source": "WEB",
42661
+ // "orderId": "1099108898629627904",
42662
+ // "clientOid": "f9b55416029e4cc2bbbe2f40ac368c38",
42663
+ // "loanType": "autoLoan",
42664
+ // "price": "25000",
42665
+ // "side": "buy",
42666
+ // "status": "new",
42667
+ // "baseQuantity": "0.0002",
42668
+ // "quoteAmount": "5",
42669
+ // "fillPrice": "0",
42670
+ // "fillQuantity": "0",
42671
+ // "fillTotalAmount": "0",
42672
+ // "ctime": "1697773902588"
42673
+ // }
42674
+ // ],
42675
+ // "maxId": "1099108898629627904",
42676
+ // "minId": "1099108898629627904"
42677
+ // }
42678
+ // }
42679
+ //
42575
42680
  if (typeof response === 'string') {
42576
42681
  response = JSON.parse(response);
42577
42682
  }
42578
42683
  const data = this.safeValue(response, 'data', []);
42684
+ if (marginMode !== undefined) {
42685
+ const resultList = this.safeValue(data, 'orderList', []);
42686
+ return this.parseOrders(resultList, market, since, limit);
42687
+ }
42579
42688
  if (!Array.isArray(data)) {
42580
42689
  const result = this.safeValue(data, 'orderList', []);
42581
42690
  return this.addPaginationCursorToResult(data, result);
@@ -42588,9 +42697,11 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
42588
42697
  * @name bitget#fetchClosedOrders
42589
42698
  * @description fetches information on multiple closed orders made by the user
42590
42699
  * @see https://bitgetlimited.github.io/apidoc/en/spot/#get-order-history
42700
+ * @see https://bitgetlimited.github.io/apidoc/en/spot/#get-history-plan-orders
42591
42701
  * @see https://bitgetlimited.github.io/apidoc/en/mix/#get-history-orders
42592
42702
  * @see https://bitgetlimited.github.io/apidoc/en/mix/#get-history-plan-orders-tpsl
42593
- * @see https://bitgetlimited.github.io/apidoc/en/spot/#get-history-plan-orders
42703
+ * @see https://bitgetlimited.github.io/apidoc/en/margin/#get-isolated-order-history
42704
+ * @see https://bitgetlimited.github.io/apidoc/en/margin/#get-cross-order-history
42594
42705
  * @param {string} symbol unified market symbol of the closed orders
42595
42706
  * @param {int} [since] timestamp in ms of the earliest order
42596
42707
  * @param {int} [limit] the max number of closed orders to return
@@ -42626,9 +42737,11 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
42626
42737
  * @name bitget#fetchCanceledOrders
42627
42738
  * @description fetches information on multiple canceled orders made by the user
42628
42739
  * @see https://bitgetlimited.github.io/apidoc/en/spot/#get-order-history
42740
+ * @see https://bitgetlimited.github.io/apidoc/en/spot/#get-history-plan-orders
42629
42741
  * @see https://bitgetlimited.github.io/apidoc/en/mix/#get-history-orders
42630
42742
  * @see https://bitgetlimited.github.io/apidoc/en/mix/#get-history-plan-orders-tpsl
42631
- * @see https://bitgetlimited.github.io/apidoc/en/spot/#get-history-plan-orders
42743
+ * @see https://bitgetlimited.github.io/apidoc/en/margin/#get-isolated-order-history
42744
+ * @see https://bitgetlimited.github.io/apidoc/en/margin/#get-cross-order-history
42632
42745
  * @param {string} symbol unified market symbol of the canceled orders
42633
42746
  * @param {int} [since] timestamp in ms of the earliest order
42634
42747
  * @param {int} [limit] the max number of canceled orders to return
@@ -42662,37 +42775,30 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
42662
42775
  await this.loadMarkets();
42663
42776
  const market = this.market(symbol);
42664
42777
  let marketType = undefined;
42778
+ let marginMode = undefined;
42779
+ let response = undefined;
42665
42780
  [marketType, params] = this.handleMarketTypeAndParams('fetchCanceledAndClosedOrders', market, params);
42666
- const endTime = this.safeIntegerN(params, ['endTime', 'until', 'till']);
42667
- params = this.omit(params, ['until', 'till']);
42781
+ [marginMode, params] = this.handleMarginModeAndParams('fetchCanceledAndClosedOrders', params);
42782
+ const symbolRequest = (marginMode !== undefined) ? (market['info']['symbolName']) : (market['id']);
42668
42783
  const request = {
42669
- 'symbol': market['id'],
42784
+ 'symbol': symbolRequest,
42670
42785
  };
42671
- if (since !== undefined) {
42672
- request['startTime'] = since;
42673
- }
42674
- let method = this.getSupportedMapping(marketType, {
42675
- 'spot': 'privateSpotPostTradeHistory',
42676
- 'swap': 'privateMixGetOrderHistory',
42677
- 'future': 'privateMixGetOrderHistory',
42678
- });
42786
+ const now = this.milliseconds();
42787
+ const endTime = this.safeIntegerN(params, ['endTime', 'until', 'till']);
42679
42788
  const stop = this.safeValue(params, 'stop');
42680
- if (stop) {
42681
- if (marketType === 'spot') {
42682
- method = 'privateSpotPostPlanHistoryPlan';
42683
- }
42684
- else {
42685
- method = 'privateMixGetPlanHistoryPlan';
42686
- }
42687
- params = this.omit(params, 'stop');
42688
- }
42689
- if (marketType === 'swap' || stop) {
42789
+ params = this.omit(params, ['until', 'till', 'stop']);
42790
+ if (stop || (marketType === 'swap') || (marketType === 'future')) {
42690
42791
  if (limit === undefined) {
42691
42792
  limit = 100;
42692
42793
  }
42693
42794
  request['pageSize'] = limit;
42694
42795
  if (since === undefined) {
42695
- since = 0;
42796
+ if (marketType === 'spot') {
42797
+ since = now - 7776000000;
42798
+ }
42799
+ else {
42800
+ since = 0;
42801
+ }
42696
42802
  }
42697
42803
  request['startTime'] = since;
42698
42804
  if (endTime === undefined) {
@@ -42702,15 +42808,52 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
42702
42808
  request['endTime'] = endTime;
42703
42809
  }
42704
42810
  }
42811
+ if (stop) {
42812
+ if (marketType === 'spot') {
42813
+ response = await this.privateSpotPostPlanHistoryPlan(this.extend(request, params));
42814
+ }
42815
+ else {
42816
+ response = await this.privateMixGetPlanHistoryPlan(this.extend(request, params));
42817
+ }
42818
+ }
42705
42819
  else {
42706
- if (limit !== undefined) {
42707
- request['pageSize'] = limit;
42820
+ if ((marketType === 'swap') || (marketType === 'future')) {
42821
+ response = await this.privateMixGetOrderHistory(this.extend(request, params));
42708
42822
  }
42709
- if (endTime !== undefined) {
42710
- request['endTime'] = endTime;
42823
+ else {
42824
+ if (marginMode !== undefined) {
42825
+ if (since === undefined) {
42826
+ since = now - 7776000000;
42827
+ }
42828
+ request['startTime'] = since;
42829
+ if (endTime !== undefined) {
42830
+ request['endTime'] = endTime;
42831
+ }
42832
+ if (limit !== undefined) {
42833
+ request['pageSize'] = limit;
42834
+ }
42835
+ if (marginMode === 'isolated') {
42836
+ response = await this.privateMarginGetIsolatedOrderHistory(this.extend(request, params));
42837
+ }
42838
+ else if (marginMode === 'cross') {
42839
+ response = await this.privateMarginGetCrossOrderHistory(this.extend(request, params));
42840
+ }
42841
+ }
42842
+ else {
42843
+ if (limit !== undefined) {
42844
+ request['limit'] = limit;
42845
+ }
42846
+ if (since !== undefined) {
42847
+ request['after'] = since;
42848
+ }
42849
+ if (endTime !== undefined) {
42850
+ params = this.omit(params, 'endTime');
42851
+ request['before'] = endTime;
42852
+ }
42853
+ response = await this.privateSpotPostTradeHistory(this.extend(request, params));
42854
+ }
42711
42855
  }
42712
42856
  }
42713
- const response = await this[method](this.extend(request, params));
42714
42857
  //
42715
42858
  // spot
42716
42859
  //
@@ -42827,6 +42970,37 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
42827
42970
  // "requestTime":1627354109502
42828
42971
  // }
42829
42972
  //
42973
+ // isolated and cross margin
42974
+ //
42975
+ // {
42976
+ // "code": "00000",
42977
+ // "msg": "success",
42978
+ // "requestTime": 1697779608818,
42979
+ // "data": {
42980
+ // "orderList": [
42981
+ // {
42982
+ // "symbol": "BTCUSDT",
42983
+ // "orderType": "limit",
42984
+ // "source": "API",
42985
+ // "orderId": "1098761451063619584",
42986
+ // "clientOid": "8d8ac3454ed345fca914c9cd55682121",
42987
+ // "loanType": "normal",
42988
+ // "price": "25000",
42989
+ // "side": "buy",
42990
+ // "status": "cancelled",
42991
+ // "baseQuantity": "0.0002",
42992
+ // "quoteAmount": "0",
42993
+ // "fillPrice": "0",
42994
+ // "fillQuantity": "0",
42995
+ // "fillTotalAmount": "0",
42996
+ // "ctime": "1697691064614"
42997
+ // },
42998
+ // ],
42999
+ // "maxId": "1098761451063619584",
43000
+ // "minId": "1098394690472521728"
43001
+ // }
43002
+ // }
43003
+ //
42830
43004
  const data = this.safeValue(response, 'data');
42831
43005
  if (data !== undefined) {
42832
43006
  if ('orderList' in data) {
@@ -42965,12 +43139,14 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
42965
43139
  * @description fetch all trades made by the user
42966
43140
  * @see https://bitgetlimited.github.io/apidoc/en/spot/#get-transaction-details
42967
43141
  * @see https://bitgetlimited.github.io/apidoc/en/mix/#get-order-fill-detail
43142
+ * @see https://bitgetlimited.github.io/apidoc/en/margin/#get-isolated-transaction-details
43143
+ * @see https://bitgetlimited.github.io/apidoc/en/margin/#get-cross-order-fills
42968
43144
  * @param {string} symbol unified market symbol
42969
43145
  * @param {int} [since] the earliest time in ms to fetch trades for
42970
43146
  * @param {int} [limit] the maximum number of trades structures to retrieve
42971
43147
  * @param {object} [params] extra parameters specific to the bitget api endpoint
42972
- * @param {int} [params.until] *swap only* the latest time in ms to fetch entries for
42973
- * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
43148
+ * @param {int} [params.until] the latest time in ms to fetch entries for
43149
+ * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
42974
43150
  * @returns {Trade[]} a list of [trade structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#trade-structure}
42975
43151
  */
42976
43152
  this.checkRequiredSymbol('fetchMyTrades', symbol);
@@ -42986,15 +43162,43 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
42986
43162
  return await this.fetchPaginatedCallDynamic('fetchMyTrades', symbol, since, limit, params, 500);
42987
43163
  }
42988
43164
  }
43165
+ let response = undefined;
43166
+ let marginMode = undefined;
43167
+ [marginMode, params] = this.handleMarginModeAndParams('fetchMyTrades', params);
43168
+ const symbolRequest = (marginMode !== undefined) ? (market['info']['symbolName']) : (market['id']);
42989
43169
  let request = {
42990
- 'symbol': market['id'],
43170
+ 'symbol': symbolRequest,
42991
43171
  };
42992
- if (limit !== undefined) {
42993
- request['limit'] = limit;
42994
- }
42995
- let response = undefined;
42996
43172
  if (market['spot']) {
42997
- response = await this.privateSpotPostTradeFills(this.extend(request, params));
43173
+ if (marginMode !== undefined) {
43174
+ [request, params] = this.handleUntilOption('endTime', request, params);
43175
+ if (since !== undefined) {
43176
+ request['startTime'] = since;
43177
+ }
43178
+ else {
43179
+ const now = this.milliseconds();
43180
+ request['startTime'] = now - 7776000000;
43181
+ }
43182
+ if (limit !== undefined) {
43183
+ request['pageSize'] = limit;
43184
+ }
43185
+ if (marginMode === 'isolated') {
43186
+ response = await this.privateMarginGetIsolatedOrderFills(this.extend(request, params));
43187
+ }
43188
+ else if (marginMode === 'cross') {
43189
+ response = await this.privateMarginGetCrossOrderFills(this.extend(request, params));
43190
+ }
43191
+ }
43192
+ else {
43193
+ [request, params] = this.handleUntilOption('before', request, params);
43194
+ if (since !== undefined) {
43195
+ request['after'] = since;
43196
+ }
43197
+ if (limit !== undefined) {
43198
+ request['limit'] = limit;
43199
+ }
43200
+ response = await this.privateSpotPostTradeFills(this.extend(request, params));
43201
+ }
42998
43202
  }
42999
43203
  else {
43000
43204
  const orderId = this.safeString(params, 'orderId'); // when order id is not defined, startTime and endTime are required
@@ -43011,29 +43215,88 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
43011
43215
  response = await this.privateMixGetOrderFills(this.extend(request, params));
43012
43216
  }
43013
43217
  //
43218
+ // spot
43219
+ //
43014
43220
  // {
43015
- // code: '00000',
43016
- // msg: 'success',
43017
- // requestTime: '1645918954082',
43018
- // data: [
43019
- // {
43020
- // accountId: '6394957606',
43021
- // symbol: 'LTCUSDT_SPBL',
43022
- // orderId: '864752115272552448',
43023
- // fillId: '864752115685969921',
43024
- // orderType: 'limit',
43025
- // side: 'buy',
43026
- // fillPrice: '127.92000000',
43027
- // fillQuantity: '0.10000000',
43028
- // fillTotalAmount: '12.79200000',
43029
- // feeCcy: 'LTC',
43030
- // fees: '0.00000000',
43031
- // cTime: '1641898891373'
43221
+ // "code": "00000",
43222
+ // "msg": "success",
43223
+ // "requestTime": 1697831543676,
43224
+ // "data": [
43225
+ // {
43226
+ // "accountId": "7264631750",
43227
+ // "symbol": "BTCUSDT_SPBL",
43228
+ // "orderId": "1098394344925597696",
43229
+ // "fillId": "1098394344974925824",
43230
+ // "orderType": "market",
43231
+ // "side": "sell",
43232
+ // "fillPrice": "28467.68",
43233
+ // "fillQuantity": "0.0002",
43234
+ // "fillTotalAmount": "5.693536",
43235
+ // "feeCcy": "USDT",
43236
+ // "fees": "-0.005693536",
43237
+ // "takerMakerFlag": "taker",
43238
+ // "cTime": "1697603539699"
43239
+ // },
43240
+ // ]
43241
+ // }
43242
+ //
43243
+ // swap and future
43244
+ //
43245
+ // {
43246
+ // "code": "00000",
43247
+ // "msg": "success",
43248
+ // "requestTime": 1697831790948,
43249
+ // "data": [
43250
+ // {
43251
+ // "tradeId": "1099351653724958721",
43252
+ // "symbol": "BTCUSDT_UMCBL",
43253
+ // "orderId": "1099351653682413569",
43254
+ // "price": "29531.3",
43255
+ // "sizeQty": "0.001",
43256
+ // "fee": "-0.01771878",
43257
+ // "side": "close_long",
43258
+ // "fillAmount": "29.5313",
43259
+ // "profit": "0.001",
43260
+ // "enterPointSource": "WEB",
43261
+ // "tradeSide": "close_long",
43262
+ // "holdMode": "double_hold",
43263
+ // "takerMakerFlag": "taker",
43264
+ // "cTime": "1697831779891"
43265
+ // },
43266
+ // ]
43267
+ // }
43268
+ //
43269
+ // isolated and cross margin
43270
+ //
43271
+ // {
43272
+ // "code": "00000",
43273
+ // "msg": "success",
43274
+ // "requestTime": 1697832285469,
43275
+ // "data": {
43276
+ // "fills": [
43277
+ // {
43278
+ // "orderId": "1099353730455318528",
43279
+ // "fillId": "1099353730627092481",
43280
+ // "orderType": "market",
43281
+ // "side": "sell",
43282
+ // "fillPrice": "29543.7",
43283
+ // "fillQuantity": "0.0001",
43284
+ // "fillTotalAmount": "2.95437",
43285
+ // "feeCcy": "USDT",
43286
+ // "fees": "-0.00295437",
43287
+ // "ctime": "1697832275063"
43288
+ // },
43289
+ // ],
43290
+ // "minId": "1099353591699161118",
43291
+ // "maxId": "1099353730627092481"
43032
43292
  // }
43033
- // ]
43034
43293
  // }
43035
43294
  //
43036
43295
  const data = this.safeValue(response, 'data');
43296
+ if (marginMode !== undefined) {
43297
+ const fills = this.safeValue(data, 'fills', []);
43298
+ return this.parseTrades(fills, market, since, limit);
43299
+ }
43037
43300
  return this.parseTrades(data, market, since, limit);
43038
43301
  }
43039
43302
  async fetchOrderTrades(id, symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -44899,7 +45162,7 @@ class bithumb extends _abstract_bithumb_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
44899
45162
  result[symbol] = this.parseTicker(ticker, market);
44900
45163
  }
44901
45164
  }
44902
- return this.filterByArray(result, 'symbol', symbols);
45165
+ return this.filterByArrayTickers(result, 'symbol', symbols);
44903
45166
  }
44904
45167
  async fetchTicker(symbol, params = {}) {
44905
45168
  /**
@@ -46778,7 +47041,7 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
46778
47041
  const symbol = ticker['symbol'];
46779
47042
  result[symbol] = ticker;
46780
47043
  }
46781
- return this.filterByArray(result, 'symbol', symbols);
47044
+ return this.filterByArrayTickers(result, 'symbol', symbols);
46782
47045
  }
46783
47046
  async fetchOrderBook(symbol, limit = undefined, params = {}) {
46784
47047
  /**
@@ -47759,12 +48022,11 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
47759
48022
  //
47760
48023
  const data = this.safeValue(response, 'data', {});
47761
48024
  const order = this.parseOrder(data, market);
47762
- return this.extend(order, {
47763
- 'type': type,
47764
- 'side': side,
47765
- 'amount': amount,
47766
- 'price': price,
47767
- });
48025
+ order['type'] = type;
48026
+ order['side'] = side;
48027
+ order['amount'] = amount;
48028
+ order['price'] = price;
48029
+ return order;
47768
48030
  }
47769
48031
  async cancelOrder(id, symbol = undefined, params = {}) {
47770
48032
  /**
@@ -51021,7 +51283,7 @@ class bitmex extends _abstract_bitmex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
51021
51283
  result[symbol] = ticker;
51022
51284
  }
51023
51285
  }
51024
- return this.filterByArray(result, 'symbol', symbols);
51286
+ return this.filterByArrayTickers(result, 'symbol', symbols);
51025
51287
  }
51026
51288
  parseTicker(ticker, market = undefined) {
51027
51289
  // see response sample under "fetchMarkets" because same endpoint is being used here
@@ -54855,7 +55117,7 @@ class bitpanda extends _abstract_bitpanda_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
54855
55117
  const symbol = ticker['symbol'];
54856
55118
  result[symbol] = ticker;
54857
55119
  }
54858
- return this.filterByArray(result, 'symbol', symbols);
55120
+ return this.filterByArrayTickers(result, 'symbol', symbols);
54859
55121
  }
54860
55122
  async fetchOrderBook(symbol, limit = undefined, params = {}) {
54861
55123
  /**
@@ -61362,9 +61624,8 @@ class bitstamp extends _abstract_bitstamp_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
61362
61624
  }
61363
61625
  const response = await this[method](this.extend(request, params));
61364
61626
  const order = this.parseOrder(response, market);
61365
- return this.extend(order, {
61366
- 'type': type,
61367
- });
61627
+ order['type'] = type;
61628
+ return order;
61368
61629
  }
61369
61630
  async cancelOrder(id, symbol = undefined, params = {}) {
61370
61631
  /**
@@ -63221,7 +63482,7 @@ class bittrex extends _abstract_bittrex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
63221
63482
  const ticker = this.parseTicker(response[i]);
63222
63483
  tickers.push(ticker);
63223
63484
  }
63224
- return this.filterByArray(tickers, 'symbol', symbols);
63485
+ return this.filterByArrayTickers(tickers, 'symbol', symbols);
63225
63486
  }
63226
63487
  async fetchTicker(symbol, params = {}) {
63227
63488
  /**
@@ -64510,8 +64771,8 @@ class bittrex extends _abstract_bittrex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
64510
64771
  request['marketSymbol'] = market['id'];
64511
64772
  }
64512
64773
  const response = await this.privateGetExecutions(this.extend(request, params));
64513
- const trades = this.parseTrades(response, market);
64514
- return this.filterBySymbolSinceLimit(trades, symbol, since, limit);
64774
+ const trades = this.parseTrades(response, market, since, limit);
64775
+ return trades;
64515
64776
  }
64516
64777
  async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
64517
64778
  /**
@@ -69227,9 +69488,8 @@ class btcalpha extends _abstract_btcalpha_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
69227
69488
  const order = this.parseOrder(response, market);
69228
69489
  const orderAmount = order['amount'].toString();
69229
69490
  amount = _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise.stringGt */ .O.stringGt(orderAmount, '0') ? order['amount'] : amount;
69230
- return this.extend(order, {
69231
- 'amount': this.parseNumber(amount),
69232
- });
69491
+ order['amount'] = this.parseNumber(amount);
69492
+ return order;
69233
69493
  }
69234
69494
  async cancelOrder(id, symbol = undefined, params = {}) {
69235
69495
  /**
@@ -75108,7 +75368,7 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
75108
75368
  tickers[symbol] = ticker;
75109
75369
  }
75110
75370
  }
75111
- return this.filterByArray(tickers, 'symbol', symbols);
75371
+ return this.filterByArrayTickers(tickers, 'symbol', symbols);
75112
75372
  }
75113
75373
  parseOHLCV(ohlcv, market = undefined) {
75114
75374
  //
@@ -75531,7 +75791,7 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
75531
75791
  const feeToken = this.safeString(trade, 'feeTokenId');
75532
75792
  const feeCurrency = this.safeCurrencyCode(feeToken);
75533
75793
  fee = {
75534
- 'cost': _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise.stringAbs */ .O.stringAbs(feeCost),
75794
+ 'cost': feeCost,
75535
75795
  'currency': feeCurrency,
75536
75796
  };
75537
75797
  }
@@ -75697,7 +75957,7 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
75697
75957
  feeCurrencyCode = market['inverse'] ? market['base'] : market['settle'];
75698
75958
  }
75699
75959
  fee = {
75700
- 'cost': _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise.stringAbs */ .O.stringAbs(feeCostString),
75960
+ 'cost': feeCostString,
75701
75961
  'currency': feeCurrencyCode,
75702
75962
  };
75703
75963
  }
@@ -80934,7 +81194,7 @@ class cex extends _abstract_cex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
80934
81194
  const symbol = market['symbol'];
80935
81195
  result[symbol] = this.parseTicker(ticker, market);
80936
81196
  }
80937
- return this.filterByArray(result, 'symbol', symbols);
81197
+ return this.filterByArrayTickers(result, 'symbol', symbols);
80938
81198
  }
80939
81199
  async fetchTicker(symbol, params = {}) {
80940
81200
  /**
@@ -83161,7 +83421,7 @@ class coinbase extends _abstract_coinbase_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
83161
83421
  const symbol = market['symbol'];
83162
83422
  result[symbol] = this.parseTicker(rates[baseId], market);
83163
83423
  }
83164
- return this.filterByArray(result, 'symbol', symbols);
83424
+ return this.filterByArrayTickers(result, 'symbol', symbols);
83165
83425
  }
83166
83426
  async fetchTickersV3(symbols = undefined, params = {}) {
83167
83427
  await this.loadMarkets();
@@ -83213,7 +83473,7 @@ class coinbase extends _abstract_coinbase_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
83213
83473
  const symbol = market['symbol'];
83214
83474
  result[symbol] = this.parseTicker(entry, market);
83215
83475
  }
83216
- return this.filterByArray(result, 'symbol', symbols);
83476
+ return this.filterByArrayTickers(result, 'symbol', symbols);
83217
83477
  }
83218
83478
  async fetchTicker(symbol, params = {}) {
83219
83479
  /**
@@ -83286,10 +83546,9 @@ class coinbase extends _abstract_coinbase_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
83286
83546
  //
83287
83547
  const data = this.safeValue(response, 'trades', []);
83288
83548
  const ticker = this.parseTicker(data[0], market);
83289
- return this.extend(ticker, {
83290
- 'bid': this.safeNumber(response, 'best_bid'),
83291
- 'ask': this.safeNumber(response, 'best_ask'),
83292
- });
83549
+ ticker['bid'] = this.safeNumber(response, 'best_bid');
83550
+ ticker['ask'] = this.safeNumber(response, 'best_ask');
83551
+ return ticker;
83293
83552
  }
83294
83553
  parseTicker(ticker, market = undefined) {
83295
83554
  //
@@ -85653,7 +85912,7 @@ class coinbasepro extends _abstract_coinbasepro_js__WEBPACK_IMPORTED_MODULE_0__/
85653
85912
  const symbol = market['symbol'];
85654
85913
  result[symbol] = this.parseTicker(first, market);
85655
85914
  }
85656
- return this.filterByArray(result, 'symbol', symbols);
85915
+ return this.filterByArrayTickers(result, 'symbol', symbols);
85657
85916
  }
85658
85917
  async fetchTicker(symbol, params = {}) {
85659
85918
  /**
@@ -88617,7 +88876,7 @@ class coinex extends _abstract_coinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
88617
88876
  ticker['symbol'] = symbol;
88618
88877
  result[symbol] = ticker;
88619
88878
  }
88620
- return this.filterByArray(result, 'symbol', symbols);
88879
+ return this.filterByArrayTickers(result, 'symbol', symbols);
88621
88880
  }
88622
88881
  async fetchTime(params = {}) {
88623
88882
  /**
@@ -92928,7 +93187,7 @@ class coinfalcon extends _abstract_coinfalcon_js__WEBPACK_IMPORTED_MODULE_0__/*
92928
93187
  const symbol = ticker['symbol'];
92929
93188
  result[symbol] = ticker;
92930
93189
  }
92931
- return this.filterByArray(result, 'symbol', symbols);
93190
+ return this.filterByArrayTickers(result, 'symbol', symbols);
92932
93191
  }
92933
93192
  async fetchOrderBook(symbol, limit = undefined, params = {}) {
92934
93193
  /**
@@ -94000,7 +94259,7 @@ class coinmate extends _abstract_coinmate_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
94000
94259
  const ticker = this.safeValue(response, 'data');
94001
94260
  const timestamp = this.safeTimestamp(ticker, 'timestamp');
94002
94261
  const last = this.safeNumber(ticker, 'last');
94003
- return {
94262
+ return this.safeTicker({
94004
94263
  'symbol': market['symbol'],
94005
94264
  'timestamp': timestamp,
94006
94265
  'datetime': this.iso8601(timestamp),
@@ -94021,7 +94280,7 @@ class coinmate extends _abstract_coinmate_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
94021
94280
  'baseVolume': this.safeNumber(ticker, 'amount'),
94022
94281
  'quoteVolume': undefined,
94023
94282
  'info': ticker,
94024
- };
94283
+ }, market);
94025
94284
  }
94026
94285
  async fetchDepositsWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
94027
94286
  /**
@@ -94947,7 +95206,7 @@ class coinone extends _abstract_coinone_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
94947
95206
  result[symbol] = this.parseTicker(ticker, market);
94948
95207
  result[symbol]['timestamp'] = timestamp;
94949
95208
  }
94950
- return this.filterByArray(result, 'symbol', symbols);
95209
+ return this.filterByArrayTickers(result, 'symbol', symbols);
94951
95210
  }
94952
95211
  async fetchTicker(symbol, params = {}) {
94953
95212
  /**
@@ -96167,6 +96426,7 @@ class coinsph extends _abstract_coinsph_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
96167
96426
  'max': undefined,
96168
96427
  },
96169
96428
  },
96429
+ 'created': undefined,
96170
96430
  'info': market,
96171
96431
  });
96172
96432
  }
@@ -97838,7 +98098,7 @@ class coinspot extends _abstract_coinspot_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
97838
98098
  result[symbol] = this.parseTicker(ticker, market);
97839
98099
  }
97840
98100
  }
97841
- return this.filterByArray(result, 'symbol', symbols);
98101
+ return this.filterByArrayTickers(result, 'symbol', symbols);
97842
98102
  }
97843
98103
  async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
97844
98104
  /**
@@ -104358,7 +104618,7 @@ class delta extends _abstract_delta_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
104358
104618
  const symbol = ticker['symbol'];
104359
104619
  result[symbol] = ticker;
104360
104620
  }
104361
- return this.filterByArray(result, 'symbol', symbols);
104621
+ return this.filterByArrayTickers(result, 'symbol', symbols);
104362
104622
  }
104363
104623
  async fetchOrderBook(symbol, limit = undefined, params = {}) {
104364
104624
  /**
@@ -107329,7 +107589,7 @@ class deribit extends _abstract_deribit_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
107329
107589
  const symbol = ticker['symbol'];
107330
107590
  tickers[symbol] = ticker;
107331
107591
  }
107332
- return this.filterByArray(tickers, 'symbol', symbols);
107592
+ return this.filterByArrayTickers(tickers, 'symbol', symbols);
107333
107593
  }
107334
107594
  async fetchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
107335
107595
  /**
@@ -110335,7 +110595,7 @@ class digifinex extends _abstract_digifinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["
110335
110595
  const symbol = ticker['symbol'];
110336
110596
  result[symbol] = ticker;
110337
110597
  }
110338
- return this.filterByArray(result, 'symbol', symbols);
110598
+ return this.filterByArrayTickers(result, 'symbol', symbols);
110339
110599
  }
110340
110600
  async fetchTicker(symbol, params = {}) {
110341
110601
  /**
@@ -110973,14 +111233,13 @@ class digifinex extends _abstract_digifinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["
110973
111233
  // "data": "1590873693003714560"
110974
111234
  // }
110975
111235
  //
110976
- const result = this.parseOrder(response, market);
110977
- return this.extend(result, {
110978
- 'symbol': symbol,
110979
- 'type': type,
110980
- 'side': side,
110981
- 'amount': amount,
110982
- 'price': price,
110983
- });
111236
+ const order = this.parseOrder(response, market);
111237
+ order['symbol'] = symbol;
111238
+ order['type'] = type;
111239
+ order['side'] = side;
111240
+ order['amount'] = amount;
111241
+ order['price'] = price;
111242
+ return order;
110984
111243
  }
110985
111244
  async cancelOrder(id, symbol = undefined, params = {}) {
110986
111245
  /**
@@ -114360,7 +114619,7 @@ class exmo extends _abstract_exmo_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
114360
114619
  const ticker = this.safeValue(response, marketId);
114361
114620
  result[symbol] = this.parseTicker(ticker, market);
114362
114621
  }
114363
- return this.filterByArray(result, 'symbol', symbols);
114622
+ return this.filterByArrayTickers(result, 'symbol', symbols);
114364
114623
  }
114365
114624
  async fetchTicker(symbol, params = {}) {
114366
114625
  /**
@@ -114815,9 +115074,8 @@ class exmo extends _abstract_exmo_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
114815
115074
  // }
114816
115075
  //
114817
115076
  const order = this.parseOrder(response);
114818
- return this.extend(order, {
114819
- 'id': id.toString(),
114820
- });
115077
+ order['id'] = id.toString();
115078
+ return order;
114821
115079
  }
114822
115080
  async fetchOrderTrades(id, symbol = undefined, since = undefined, limit = undefined, params = {}) {
114823
115081
  /**
@@ -118731,7 +118989,8 @@ class gate extends _abstract_gate_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
118731
118989
  result[code] = this.parseBalanceHelper(entry);
118732
118990
  }
118733
118991
  }
118734
- return isolated ? result : this.safeBalance(result);
118992
+ const returnResult = isolated ? result : this.safeBalance(result);
118993
+ return returnResult;
118735
118994
  }
118736
118995
  async fetchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
118737
118996
  /**
@@ -122986,6 +123245,7 @@ class gemini extends _abstract_gemini_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
122986
123245
  'max': undefined,
122987
123246
  },
122988
123247
  },
123248
+ 'created': undefined,
122989
123249
  'info': row,
122990
123250
  });
122991
123251
  }
@@ -123229,7 +123489,13 @@ class gemini extends _abstract_gemini_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
123229
123489
  * @returns {object} a [ticker structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#ticker-structure}
123230
123490
  */
123231
123491
  const method = this.safeValue(this.options, 'fetchTickerMethod', 'fetchTickerV1');
123232
- return await this[method](symbol, params);
123492
+ if (method === 'fetchTickerV1') {
123493
+ return await this.fetchTickerV1(symbol, params);
123494
+ }
123495
+ if (method === 'fetchTickerV2') {
123496
+ return await this.fetchTickerV2(symbol, params);
123497
+ }
123498
+ return await this.fetchTickerV1AndV2(symbol, params);
123233
123499
  }
123234
123500
  parseTicker(ticker, market = undefined) {
123235
123501
  //
@@ -125334,7 +125600,7 @@ class hitbtc extends _abstract_hitbtc_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
125334
125600
  const entry = response[marketId];
125335
125601
  result[symbol] = this.parseTicker(entry, market);
125336
125602
  }
125337
- return this.filterByArray(result, 'symbol', symbols);
125603
+ return this.filterByArrayTickers(result, 'symbol', symbols);
125338
125604
  }
125339
125605
  parseTicker(ticker, market = undefined) {
125340
125606
  //
@@ -127988,7 +128254,7 @@ class hollaex extends _abstract_hollaex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
127988
128254
  const symbol = market['symbol'];
127989
128255
  result[symbol] = this.extend(this.parseTicker(ticker, market), params);
127990
128256
  }
127991
- return this.filterByArray(result, 'symbol', symbols);
128257
+ return this.filterByArrayTickers(result, 'symbol', symbols);
127992
128258
  }
127993
128259
  parseTicker(ticker, market = undefined) {
127994
128260
  //
@@ -131445,7 +131711,7 @@ class huobi extends _abstract_huobi_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
131445
131711
  ticker['datetime'] = this.iso8601(timestamp);
131446
131712
  result[symbol] = ticker;
131447
131713
  }
131448
- return this.filterByArray(result, 'symbol', symbols);
131714
+ return this.filterByArrayTickers(result, 'symbol', symbols);
131449
131715
  }
131450
131716
  async fetchOrderBook(symbol, limit = undefined, params = {}) {
131451
131717
  /**
@@ -133251,14 +133517,12 @@ class huobi extends _abstract_huobi_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
133251
133517
  if (contract && (symbol === undefined)) {
133252
133518
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.ArgumentsRequired(this.id + ' fetchOrders() requires a symbol argument for ' + marketType + ' orders');
133253
133519
  }
133254
- let response = undefined;
133255
133520
  if (contract) {
133256
- response = await this.fetchContractOrders(symbol, since, limit, params);
133521
+ return await this.fetchContractOrders(symbol, since, limit, params);
133257
133522
  }
133258
133523
  else {
133259
- response = await this.fetchSpotOrders(symbol, since, limit, params);
133524
+ return await this.fetchSpotOrders(symbol, since, limit, params);
133260
133525
  }
133261
- return response;
133262
133526
  }
133263
133527
  async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
133264
133528
  /**
@@ -133291,14 +133555,12 @@ class huobi extends _abstract_huobi_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
133291
133555
  }
133292
133556
  let marketType = undefined;
133293
133557
  [marketType, params] = this.handleMarketTypeAndParams('fetchClosedOrders', market, params);
133294
- let response = undefined;
133295
133558
  if (marketType === 'spot') {
133296
- response = await this.fetchClosedSpotOrders(symbol, since, limit, params);
133559
+ return await this.fetchClosedSpotOrders(symbol, since, limit, params);
133297
133560
  }
133298
133561
  else {
133299
- response = await this.fetchClosedContractOrders(symbol, since, limit, params);
133562
+ return await this.fetchClosedContractOrders(symbol, since, limit, params);
133300
133563
  }
133301
- return response;
133302
133564
  }
133303
133565
  async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
133304
133566
  /**
@@ -133999,14 +134261,12 @@ class huobi extends _abstract_huobi_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
133999
134261
  await this.loadMarkets();
134000
134262
  const market = this.market(symbol);
134001
134263
  const [marketType, query] = this.handleMarketTypeAndParams('createOrder', market, params);
134002
- let response = undefined;
134003
134264
  if (marketType === 'spot') {
134004
- response = await this.createSpotOrder(symbol, type, side, amount, price, query);
134265
+ return await this.createSpotOrder(symbol, type, side, amount, price, query);
134005
134266
  }
134006
134267
  else {
134007
- response = await this.createContractOrder(symbol, type, side, amount, price, query);
134268
+ return await this.createContractOrder(symbol, type, side, amount, price, query);
134008
134269
  }
134009
- return response;
134010
134270
  }
134011
134271
  async createSpotOrder(symbol, type, side, amount, price = undefined, params = {}) {
134012
134272
  /**
@@ -134123,7 +134383,7 @@ class huobi extends _abstract_huobi_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
134123
134383
  // {"status":"ok","data":"438398393065481"}
134124
134384
  //
134125
134385
  const id = this.safeString(response, 'data');
134126
- return {
134386
+ return this.safeOrder({
134127
134387
  'info': response,
134128
134388
  'id': id,
134129
134389
  'timestamp': undefined,
@@ -134131,10 +134391,10 @@ class huobi extends _abstract_huobi_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
134131
134391
  'lastTradeTimestamp': undefined,
134132
134392
  'status': undefined,
134133
134393
  'symbol': undefined,
134134
- 'type': undefined,
134135
- 'side': undefined,
134136
- 'price': undefined,
134137
- 'amount': undefined,
134394
+ 'type': type,
134395
+ 'side': side,
134396
+ 'price': price,
134397
+ 'amount': amount,
134138
134398
  'filled': undefined,
134139
134399
  'remaining': undefined,
134140
134400
  'cost': undefined,
@@ -134142,7 +134402,7 @@ class huobi extends _abstract_huobi_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
134142
134402
  'fee': undefined,
134143
134403
  'clientOrderId': undefined,
134144
134404
  'average': undefined,
134145
- };
134405
+ }, market);
134146
134406
  }
134147
134407
  async createContractOrder(symbol, type, side, amount, price = undefined, params = {}) {
134148
134408
  /**
@@ -138416,7 +138676,7 @@ class huobijp extends _abstract_huobijp_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
138416
138676
  ticker['datetime'] = this.iso8601(timestamp);
138417
138677
  result[symbol] = ticker;
138418
138678
  }
138419
- return this.filterByArray(result, 'symbol', symbols);
138679
+ return this.filterByArrayTickers(result, 'symbol', symbols);
138420
138680
  }
138421
138681
  parseTrade(trade, market = undefined) {
138422
138682
  //
@@ -139116,7 +139376,7 @@ class huobijp extends _abstract_huobijp_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
139116
139376
  const response = await this[method](this.extend(request, params));
139117
139377
  const timestamp = this.milliseconds();
139118
139378
  const id = this.safeString(response, 'data');
139119
- return {
139379
+ return this.safeOrder({
139120
139380
  'info': response,
139121
139381
  'id': id,
139122
139382
  'timestamp': timestamp,
@@ -139135,7 +139395,7 @@ class huobijp extends _abstract_huobijp_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
139135
139395
  'fee': undefined,
139136
139396
  'clientOrderId': undefined,
139137
139397
  'average': undefined,
139138
- };
139398
+ }, market);
139139
139399
  }
139140
139400
  async cancelOrder(id, symbol = undefined, params = {}) {
139141
139401
  /**
@@ -142765,7 +143025,8 @@ class indodax extends _abstract_indodax_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
142765
143025
  const response = await this.privatePostGetOrder(this.extend(request, params));
142766
143026
  const orders = response['return'];
142767
143027
  const order = this.parseOrder(this.extend({ 'id': id }, orders['order']), market);
142768
- return this.extend({ 'info': response }, order);
143028
+ order['info'] = response;
143029
+ return order;
142769
143030
  }
142770
143031
  async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
142771
143032
  /**
@@ -144041,7 +144302,7 @@ class kraken extends _abstract_kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
144041
144302
  const ticker = tickers[id];
144042
144303
  result[symbol] = this.parseTicker(ticker, market);
144043
144304
  }
144044
- return this.filterByArray(result, 'symbol', symbols);
144305
+ return this.filterByArrayTickers(result, 'symbol', symbols);
144045
144306
  }
144046
144307
  async fetchTicker(symbol, params = {}) {
144047
144308
  /**
@@ -144940,7 +145201,8 @@ class kraken extends _abstract_kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
144940
145201
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.OrderNotFound(this.id + ' fetchOrder() could not find order id ' + id);
144941
145202
  }
144942
145203
  const order = this.parseOrder(this.extend({ 'id': id }, result[id]));
144943
- return this.extend({ 'info': response }, order);
145204
+ order['info'] = order;
145205
+ return order;
144944
145206
  }
144945
145207
  async fetchOrderTrades(id, symbol = undefined, since = undefined, limit = undefined, params = {}) {
144946
145208
  /**
@@ -146870,7 +147132,8 @@ class krakenfutures extends _abstract_krakenfutures_js__WEBPACK_IMPORTED_MODULE_
146870
147132
  const status = this.safeString(response['editStatus'], 'status');
146871
147133
  this.verifyOrderActionSuccess(status, 'editOrder', ['filled']);
146872
147134
  const order = this.parseOrder(response['editStatus']);
146873
- return this.extend({ 'info': response }, order);
147135
+ order['info'] = response;
147136
+ return order;
146874
147137
  }
146875
147138
  async cancelOrder(id, symbol = undefined, params = {}) {
146876
147139
  /**
@@ -147288,6 +147551,7 @@ class krakenfutures extends _abstract_krakenfutures_js__WEBPACK_IMPORTED_MODULE_
147288
147551
  'type': this.parseOrderType(type),
147289
147552
  'timeInForce': timeInForce,
147290
147553
  'postOnly': type === 'post',
147554
+ 'reduceOnly': this.safeValue(details, 'reduceOnly'),
147291
147555
  'side': this.safeString(details, 'side'),
147292
147556
  'price': price,
147293
147557
  'stopPrice': this.safeString(details, 'triggerPrice'),
@@ -147453,11 +147717,10 @@ class krakenfutures extends _abstract_krakenfutures_js__WEBPACK_IMPORTED_MODULE_
147453
147717
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.BadRequest(this.id + ' fetchBalance has no account for ' + type);
147454
147718
  }
147455
147719
  const balance = this.parseBalance(account);
147456
- return this.extend({
147457
- 'info': response,
147458
- 'timestamp': this.parse8601(datetime),
147459
- 'datetime': datetime,
147460
- }, balance);
147720
+ balance['info'] = response;
147721
+ balance['timestamp'] = this.parse8601(datetime);
147722
+ balance['datetime'] = datetime;
147723
+ return balance;
147461
147724
  }
147462
147725
  parseBalance(response) {
147463
147726
  //
@@ -149597,7 +149860,7 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
149597
149860
  result[symbol] = ticker;
149598
149861
  }
149599
149862
  }
149600
- return this.filterByArray(result, 'symbol', symbols);
149863
+ return this.filterByArrayTickers(result, 'symbol', symbols);
149601
149864
  }
149602
149865
  async fetchTicker(symbol, params = {}) {
149603
149866
  /**
@@ -151479,7 +151742,8 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
151479
151742
  }
151480
151743
  }
151481
151744
  }
151482
- return isolated ? result : this.safeBalance(result);
151745
+ const returnType = isolated ? result : this.safeBalance(result);
151746
+ return returnType;
151483
151747
  }
151484
151748
  async transfer(code, amount, fromAccount, toAccount, params = {}) {
151485
151749
  /**
@@ -153556,7 +153820,7 @@ class kucoinfutures extends _abstract_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_
153556
153820
  // }
153557
153821
  //
153558
153822
  const data = this.safeValue(response, 'data', {});
153559
- return {
153823
+ return this.safeOrder({
153560
153824
  'id': this.safeString(data, 'orderId'),
153561
153825
  'clientOrderId': undefined,
153562
153826
  'timestamp': undefined,
@@ -153579,7 +153843,7 @@ class kucoinfutures extends _abstract_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_
153579
153843
  'stopPrice': undefined,
153580
153844
  'triggerPrice': undefined,
153581
153845
  'info': response,
153582
- };
153846
+ }, market);
153583
153847
  }
153584
153848
  async cancelOrder(id, symbol = undefined, params = {}) {
153585
153849
  /**
@@ -155295,7 +155559,7 @@ class kuna extends _abstract_kuna_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
155295
155559
  const symbol = market['symbol'];
155296
155560
  result[symbol] = this.parseTicker(response[id], market);
155297
155561
  }
155298
- return this.filterByArray(result, 'symbol', symbols);
155562
+ return this.filterByArrayTickers(result, 'symbol', symbols);
155299
155563
  }
155300
155564
  async fetchTicker(symbol, params = {}) {
155301
155565
  /**
@@ -157502,12 +157766,12 @@ class latoken extends _abstract_latoken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
157502
157766
  /* harmony export */ "Z": () => (/* binding */ lbank)
157503
157767
  /* harmony export */ });
157504
157768
  /* harmony import */ var _abstract_lbank_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6168);
157505
- /* harmony import */ var _base_errors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(6689);
157769
+ /* harmony import */ var _base_errors_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6689);
157506
157770
  /* harmony import */ var _base_Precise_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2194);
157507
157771
  /* harmony import */ var _base_functions_number_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9292);
157508
- /* harmony import */ var _static_dependencies_noble_hashes_md5_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7311);
157509
- /* harmony import */ var _base_functions_rsa_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(5981);
157510
- /* harmony import */ var _static_dependencies_noble_hashes_sha256_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(1372);
157772
+ /* harmony import */ var _static_dependencies_noble_hashes_md5_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7311);
157773
+ /* harmony import */ var _base_functions_rsa_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(5981);
157774
+ /* harmony import */ var _static_dependencies_noble_hashes_sha256_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(1372);
157511
157775
  // ---------------------------------------------------------------------------
157512
157776
 
157513
157777
 
@@ -157838,7 +158102,7 @@ class lbank extends _abstract_lbank_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
157838
158102
  const symbol = ticker['symbol'];
157839
158103
  result[symbol] = ticker;
157840
158104
  }
157841
- return this.filterByArray(result, 'symbol', symbols);
158105
+ return this.filterByArrayTickers(result, 'symbol', symbols);
157842
158106
  }
157843
158107
  async fetchOrderBook(symbol, limit = 60, params = {}) {
157844
158108
  /**
@@ -158172,7 +158436,7 @@ class lbank extends _abstract_lbank_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
158172
158436
  return orders[0];
158173
158437
  }
158174
158438
  else {
158175
- return orders;
158439
+ throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_3__.BadRequest(this.id + ' fetchOrder() can only return one order at a time. Found ' + numOrders + ' orders.');
158176
158440
  }
158177
158441
  }
158178
158442
  async fetchOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -158319,7 +158583,7 @@ class lbank extends _abstract_lbank_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
158319
158583
  'api_key': this.apiKey,
158320
158584
  }, query));
158321
158585
  const queryString = this.rawencode(query);
158322
- const message = this.hash(this.encode(queryString), _static_dependencies_noble_hashes_md5_js__WEBPACK_IMPORTED_MODULE_3__/* .md5 */ .F).toUpperCase();
158586
+ const message = this.hash(this.encode(queryString), _static_dependencies_noble_hashes_md5_js__WEBPACK_IMPORTED_MODULE_4__/* .md5 */ .F).toUpperCase();
158323
158587
  const cacheSecretAsPem = this.safeValue(this.options, 'cacheSecretAsPem', true);
158324
158588
  let pem = undefined;
158325
158589
  if (cacheSecretAsPem) {
@@ -158332,7 +158596,7 @@ class lbank extends _abstract_lbank_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
158332
158596
  else {
158333
158597
  pem = this.convertSecretToPem(this.secret);
158334
158598
  }
158335
- query['sign'] = (0,_base_functions_rsa_js__WEBPACK_IMPORTED_MODULE_4__/* .rsa */ .j)(message, pem, _static_dependencies_noble_hashes_sha256_js__WEBPACK_IMPORTED_MODULE_5__/* .sha256 */ .J);
158599
+ query['sign'] = (0,_base_functions_rsa_js__WEBPACK_IMPORTED_MODULE_5__/* .rsa */ .j)(message, pem, _static_dependencies_noble_hashes_sha256_js__WEBPACK_IMPORTED_MODULE_6__/* .sha256 */ .J);
158336
158600
  body = this.urlencode(query);
158337
158601
  headers = { 'Content-Type': 'application/x-www-form-urlencoded' };
158338
158602
  }
@@ -158370,21 +158634,21 @@ class lbank extends _abstract_lbank_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
158370
158634
  '10022': 'Insufficient key authority',
158371
158635
  }, errorCode, this.json(response));
158372
158636
  const ErrorClass = this.safeValue({
158373
- '10002': _base_errors_js__WEBPACK_IMPORTED_MODULE_6__.AuthenticationError,
158374
- '10004': _base_errors_js__WEBPACK_IMPORTED_MODULE_6__.DDoSProtection,
158375
- '10005': _base_errors_js__WEBPACK_IMPORTED_MODULE_6__.AuthenticationError,
158376
- '10006': _base_errors_js__WEBPACK_IMPORTED_MODULE_6__.AuthenticationError,
158377
- '10007': _base_errors_js__WEBPACK_IMPORTED_MODULE_6__.AuthenticationError,
158378
- '10009': _base_errors_js__WEBPACK_IMPORTED_MODULE_6__.InvalidOrder,
158379
- '10010': _base_errors_js__WEBPACK_IMPORTED_MODULE_6__.InvalidOrder,
158380
- '10011': _base_errors_js__WEBPACK_IMPORTED_MODULE_6__.InvalidOrder,
158381
- '10012': _base_errors_js__WEBPACK_IMPORTED_MODULE_6__.InvalidOrder,
158382
- '10013': _base_errors_js__WEBPACK_IMPORTED_MODULE_6__.InvalidOrder,
158383
- '10014': _base_errors_js__WEBPACK_IMPORTED_MODULE_6__.InvalidOrder,
158384
- '10015': _base_errors_js__WEBPACK_IMPORTED_MODULE_6__.InvalidOrder,
158385
- '10016': _base_errors_js__WEBPACK_IMPORTED_MODULE_6__.InvalidOrder,
158386
- '10022': _base_errors_js__WEBPACK_IMPORTED_MODULE_6__.AuthenticationError,
158387
- }, errorCode, _base_errors_js__WEBPACK_IMPORTED_MODULE_6__.ExchangeError);
158637
+ '10002': _base_errors_js__WEBPACK_IMPORTED_MODULE_3__.AuthenticationError,
158638
+ '10004': _base_errors_js__WEBPACK_IMPORTED_MODULE_3__.DDoSProtection,
158639
+ '10005': _base_errors_js__WEBPACK_IMPORTED_MODULE_3__.AuthenticationError,
158640
+ '10006': _base_errors_js__WEBPACK_IMPORTED_MODULE_3__.AuthenticationError,
158641
+ '10007': _base_errors_js__WEBPACK_IMPORTED_MODULE_3__.AuthenticationError,
158642
+ '10009': _base_errors_js__WEBPACK_IMPORTED_MODULE_3__.InvalidOrder,
158643
+ '10010': _base_errors_js__WEBPACK_IMPORTED_MODULE_3__.InvalidOrder,
158644
+ '10011': _base_errors_js__WEBPACK_IMPORTED_MODULE_3__.InvalidOrder,
158645
+ '10012': _base_errors_js__WEBPACK_IMPORTED_MODULE_3__.InvalidOrder,
158646
+ '10013': _base_errors_js__WEBPACK_IMPORTED_MODULE_3__.InvalidOrder,
158647
+ '10014': _base_errors_js__WEBPACK_IMPORTED_MODULE_3__.InvalidOrder,
158648
+ '10015': _base_errors_js__WEBPACK_IMPORTED_MODULE_3__.InvalidOrder,
158649
+ '10016': _base_errors_js__WEBPACK_IMPORTED_MODULE_3__.InvalidOrder,
158650
+ '10022': _base_errors_js__WEBPACK_IMPORTED_MODULE_3__.AuthenticationError,
158651
+ }, errorCode, _base_errors_js__WEBPACK_IMPORTED_MODULE_3__.ExchangeError);
158388
158652
  throw new ErrorClass(message);
158389
158653
  }
158390
158654
  return undefined;
@@ -159913,8 +160177,10 @@ class lbank2 extends _abstract_lbank2_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
159913
160177
  const options = this.safeValue(this.options, 'fetchOrder', {});
159914
160178
  method = this.safeString(options, 'method', 'fetchOrderSupplement');
159915
160179
  }
159916
- const result = await this[method](id, symbol, params);
159917
- return result;
160180
+ if (method === 'fetchOrderSupplement') {
160181
+ return await this.fetchOrderSupplement(id, symbol, params);
160182
+ }
160183
+ return await this.fetchOrderDefault(id, symbol, params);
159918
160184
  }
159919
160185
  async fetchOrderSupplement(id, symbol = undefined, params = {}) {
159920
160186
  this.checkRequiredSymbol('fetchOrder', symbol);
@@ -159985,12 +160251,13 @@ class lbank2 extends _abstract_lbank2_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
159985
160251
  return this.parseOrder(result[0]);
159986
160252
  }
159987
160253
  else {
159988
- const parsedOrders = [];
159989
- for (let i = 0; i < numOrders; i++) {
159990
- const parsedOrder = this.parseOrder(result[i]);
159991
- parsedOrders.push(parsedOrder);
159992
- }
159993
- return parsedOrders;
160254
+ // const parsedOrders = [];
160255
+ // for (let i = 0; i < numOrders; i++) {
160256
+ // const parsedOrder = this.parseOrder (result[i]);
160257
+ // parsedOrders.push (parsedOrder);
160258
+ // }
160259
+ // return parsedOrders;
160260
+ throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest(this.id + ' fetchOrder() can only fetch one order at a time');
159994
160261
  }
159995
160262
  }
159996
160263
  async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
@@ -161749,7 +162016,7 @@ class luno extends _abstract_luno_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
161749
162016
  const ticker = tickers[id];
161750
162017
  result[symbol] = this.parseTicker(ticker, market);
161751
162018
  }
161752
- return this.filterByArray(result, 'symbol', symbols);
162019
+ return this.filterByArrayTickers(result, 'symbol', symbols);
161753
162020
  }
161754
162021
  async fetchTicker(symbol, params = {}) {
161755
162022
  /**
@@ -163052,7 +163319,7 @@ class lykke extends _abstract_lykke_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
163052
163319
  if (type === 'market') {
163053
163320
  price = this.safeNumber(payload, 'price');
163054
163321
  }
163055
- return {
163322
+ return this.safeOrder({
163056
163323
  'id': id,
163057
163324
  'info': result,
163058
163325
  'clientOrderId': undefined,
@@ -163071,7 +163338,7 @@ class lykke extends _abstract_lykke_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
163071
163338
  'status': undefined,
163072
163339
  'fee': undefined,
163073
163340
  'trades': undefined,
163074
- };
163341
+ }, market);
163075
163342
  }
163076
163343
  async cancelOrder(id, symbol = undefined, params = {}) {
163077
163344
  /**
@@ -166517,10 +166784,9 @@ class mexc extends _abstract_mexc_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
166517
166784
  if (market['spot']) {
166518
166785
  return await this.createSpotOrder(market, type, side, amount, price, marginMode, query);
166519
166786
  }
166520
- else if (market['swap']) {
166787
+ else {
166521
166788
  return await this.createSwapOrder(market, type, side, amount, price, marginMode, query);
166522
166789
  }
166523
- return undefined;
166524
166790
  }
166525
166791
  async createSpotOrder(market, type, side, amount, price = undefined, marginMode = undefined, params = {}) {
166526
166792
  const symbol = market['symbol'];
@@ -166591,12 +166857,12 @@ class mexc extends _abstract_mexc_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
166591
166857
  // "transactTime": 1661992652132
166592
166858
  // }
166593
166859
  //
166594
- return this.extend(this.parseOrder(response, market), {
166595
- 'side': side,
166596
- 'type': type,
166597
- 'price': price,
166598
- 'amount': amount,
166599
- });
166860
+ const order = this.parseOrder(response, market);
166861
+ order['side'] = side;
166862
+ order['type'] = type;
166863
+ order['price'] = price;
166864
+ order['amount'] = amount;
166865
+ return order;
166600
166866
  }
166601
166867
  async createSwapOrder(market, type, side, amount, price = undefined, marginMode = undefined, params = {}) {
166602
166868
  await this.loadMarkets();
@@ -172694,7 +172960,7 @@ class novadax extends _abstract_novadax_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
172694
172960
  const symbol = ticker['symbol'];
172695
172961
  result[symbol] = ticker;
172696
172962
  }
172697
- return this.filterByArray(result, 'symbol', symbols);
172963
+ return this.filterByArrayTickers(result, 'symbol', symbols);
172698
172964
  }
172699
172965
  async fetchOrderBook(symbol, limit = undefined, params = {}) {
172700
172966
  /**
@@ -174129,7 +174395,7 @@ class oceanex extends _abstract_oceanex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
174129
174395
  const symbol = market['symbol'];
174130
174396
  result[symbol] = this.parseTicker(ticker, market);
174131
174397
  }
174132
- return this.filterByArray(result, 'symbol', symbols);
174398
+ return this.filterByArrayTickers(result, 'symbol', symbols);
174133
174399
  }
174134
174400
  parseTicker(data, market = undefined) {
174135
174401
  //
@@ -176105,7 +176371,7 @@ class okcoin extends _abstract_okcoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
176105
176371
  const symbol = ticker['symbol'];
176106
176372
  result[symbol] = ticker;
176107
176373
  }
176108
- return this.filterByArray(result, 'symbol', symbols);
176374
+ return this.filterByArrayTickers(result, 'symbol', symbols);
176109
176375
  }
176110
176376
  async fetchTickers(symbols = undefined, params = {}) {
176111
176377
  /**
@@ -176838,10 +177104,9 @@ class okcoin extends _abstract_okcoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
176838
177104
  // }
176839
177105
  //
176840
177106
  const order = this.parseOrder(response, market);
176841
- return this.extend(order, {
176842
- 'type': type,
176843
- 'side': side,
176844
- });
177107
+ order['type'] = type;
177108
+ order['side'] = side;
177109
+ return order;
176845
177110
  }
176846
177111
  async cancelOrder(id, symbol = undefined, params = {}) {
176847
177112
  /**
@@ -181478,10 +181743,9 @@ class okx extends _abstract_okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
181478
181743
  const data = this.safeValue(response, 'data', []);
181479
181744
  const first = this.safeValue(data, 0);
181480
181745
  const order = this.parseOrder(first, market);
181481
- return this.extend(order, {
181482
- 'type': type,
181483
- 'side': side,
181484
- });
181746
+ order['type'] = type;
181747
+ order['side'] = side;
181748
+ return order;
181485
181749
  }
181486
181750
  editOrderRequest(id, symbol, type, side, amount = undefined, price = undefined, params = {}) {
181487
181751
  const market = this.market(symbol);
@@ -181592,10 +181856,9 @@ class okx extends _abstract_okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
181592
181856
  const data = this.safeValue(response, 'data', []);
181593
181857
  const first = this.safeValue(data, 0);
181594
181858
  const order = this.parseOrder(first, market);
181595
- return this.extend(order, {
181596
- 'type': type,
181597
- 'side': side,
181598
- });
181859
+ order['type'] = type;
181860
+ order['side'] = side;
181861
+ return order;
181599
181862
  }
181600
181863
  async cancelOrder(id, symbol = undefined, params = {}) {
181601
181864
  /**
@@ -184520,6 +184783,7 @@ class okx extends _abstract_okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
184520
184783
  * @param {string} marginMode 'cross' or 'isolated'
184521
184784
  * @param {string} symbol unified market symbol
184522
184785
  * @param {object} [params] extra parameters specific to the okx api endpoint
184786
+ * @param {int} [params.leverage] leverage
184523
184787
  * @returns {object} response from the exchange
184524
184788
  */
184525
184789
  if (symbol === undefined) {
@@ -184533,11 +184797,11 @@ class okx extends _abstract_okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
184533
184797
  }
184534
184798
  await this.loadMarkets();
184535
184799
  const market = this.market(symbol);
184536
- const lever = this.safeInteger(params, 'lever');
184800
+ const lever = this.safeInteger2(params, 'lever', 'leverage');
184537
184801
  if ((lever === undefined) || (lever < 1) || (lever > 125)) {
184538
184802
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.BadRequest(this.id + ' setMarginMode() params["lever"] should be between 1 and 125');
184539
184803
  }
184540
- params = this.omit(params, ['lever']);
184804
+ params = this.omit(params, ['leverage']);
184541
184805
  const request = {
184542
184806
  'lever': lever,
184543
184807
  'mgnMode': marginMode,
@@ -191709,8 +191973,8 @@ class poloniex extends _abstract_poloniex_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
191709
191973
  // }
191710
191974
  // ]
191711
191975
  //
191712
- const result = this.parseTrades(response, market);
191713
- return this.filterBySinceLimit(result, since, limit);
191976
+ const result = this.parseTrades(response, market, since, limit);
191977
+ return result;
191714
191978
  }
191715
191979
  parseOrderStatus(status) {
191716
191980
  const statuses = {
@@ -192192,9 +192456,9 @@ class poloniex extends _abstract_poloniex_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
192192
192456
  // "updateTime": 1646196019020
192193
192457
  // }
192194
192458
  //
192195
- return this.extend(this.parseOrder(response), {
192196
- 'id': id,
192197
- });
192459
+ const order = this.parseOrder(response);
192460
+ order['id'] = id;
192461
+ return order;
192198
192462
  }
192199
192463
  async fetchOrderStatus(id, symbol = undefined, params = {}) {
192200
192464
  await this.loadMarkets();
@@ -193912,7 +194176,7 @@ class poloniexfutures extends _abstract_poloniexfutures_js__WEBPACK_IMPORTED_MOD
193912
194176
  // }
193913
194177
  //
193914
194178
  const data = this.safeValue(response, 'data', {});
193915
- return {
194179
+ return this.safeOrder({
193916
194180
  'id': this.safeString(data, 'orderId'),
193917
194181
  'clientOrderId': undefined,
193918
194182
  'timestamp': undefined,
@@ -193934,7 +194198,7 @@ class poloniexfutures extends _abstract_poloniexfutures_js__WEBPACK_IMPORTED_MOD
193934
194198
  'postOnly': undefined,
193935
194199
  'stopPrice': undefined,
193936
194200
  'info': response,
193937
- };
194201
+ }, market);
193938
194202
  }
193939
194203
  async cancelOrder(id, symbol = undefined, params = {}) {
193940
194204
  /**
@@ -229985,13 +230249,16 @@ class kucoin extends _kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
229985
230249
  * @description watches information on multiple orders made by the user
229986
230250
  * @param {string} symbol unified market symbol of the market orders were made in
229987
230251
  * @param {int} [since] the earliest time in ms to fetch orders for
229988
- * @param {int} [limit] the maximum number of orde structures to retrieve
230252
+ * @param {int} [limit] the maximum number of order structures to retrieve
229989
230253
  * @param {object} [params] extra parameters specific to the kucoin api endpoint
230254
+ * @param {boolean} [params.stop] trigger orders are watched if true
229990
230255
  * @returns {object[]} a list of [order structures]{@link https://github.com/ccxt/ccxt/wiki/Manual#order-structure}
229991
230256
  */
229992
230257
  await this.loadMarkets();
230258
+ const stop = this.safeValue2(params, 'stop', 'trigger');
230259
+ params = this.omit(params, ['stop', 'trigger']);
229993
230260
  const url = await this.negotiate(true);
229994
- const topic = '/spotMarket/tradeOrders';
230261
+ const topic = stop ? '/spotMarket/advancedOrders' : '/spotMarket/tradeOrders';
229995
230262
  const request = {
229996
230263
  'privateChannel': true,
229997
230264
  };
@@ -230014,59 +230281,79 @@ class kucoin extends _kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
230014
230281
  'match': 'open',
230015
230282
  'update': 'open',
230016
230283
  'canceled': 'canceled',
230284
+ 'cancel': 'canceled',
230285
+ 'TRIGGERED': 'triggered',
230017
230286
  };
230018
230287
  return this.safeString(statuses, status, status);
230019
230288
  }
230020
230289
  parseWsOrder(order, market = undefined) {
230021
230290
  //
230022
- // {
230023
- // 'symbol': 'XCAD-USDT',
230024
- // 'orderType': 'limit',
230025
- // 'side': 'buy',
230026
- // 'orderId': '6249167327218b000135e749',
230027
- // 'type': 'canceled',
230028
- // 'orderTime': 1648957043065280224,
230029
- // 'size': '100.452',
230030
- // 'filledSize': '0',
230031
- // 'price': '2.9635',
230032
- // 'clientOid': 'buy-XCAD-USDT-1648957043010159',
230033
- // 'remainSize': '0',
230034
- // 'status': 'done',
230035
- // 'ts': 1648957054031001037
230036
- // }
230291
+ // /spotMarket/tradeOrders
230292
+ //
230293
+ // {
230294
+ // 'symbol': 'XCAD-USDT',
230295
+ // 'orderType': 'limit',
230296
+ // 'side': 'buy',
230297
+ // 'orderId': '6249167327218b000135e749',
230298
+ // 'type': 'canceled',
230299
+ // 'orderTime': 1648957043065280224,
230300
+ // 'size': '100.452',
230301
+ // 'filledSize': '0',
230302
+ // 'price': '2.9635',
230303
+ // 'clientOid': 'buy-XCAD-USDT-1648957043010159',
230304
+ // 'remainSize': '0',
230305
+ // 'status': 'done',
230306
+ // 'ts': 1648957054031001037
230307
+ // }
230308
+ //
230309
+ // /spotMarket/advancedOrders
230310
+ //
230311
+ // {
230312
+ // "createdAt": 1589789942337,
230313
+ // "orderId": "5ec244f6a8a75e0009958237",
230314
+ // "orderPrice": "0.00062",
230315
+ // "orderType": "stop",
230316
+ // "side": "sell",
230317
+ // "size": "1",
230318
+ // "stop": "entry",
230319
+ // "stopPrice": "0.00062",
230320
+ // "symbol": "KCS-BTC",
230321
+ // "tradeType": "TRADE",
230322
+ // "triggerSuccess": true,
230323
+ // "ts": 1589790121382281286,
230324
+ // "type": "triggered"
230325
+ // }
230037
230326
  //
230038
- const id = this.safeString(order, 'orderId');
230039
- const clientOrderId = this.safeString(order, 'clientOid');
230040
- const orderType = this.safeStringLower(order, 'orderType');
230041
- const price = this.safeString(order, 'price');
230042
- const filled = this.safeString(order, 'filledSize');
230043
- const amount = this.safeString(order, 'size');
230044
230327
  const rawType = this.safeString(order, 'type');
230045
- const status = this.parseWsOrderStatus(rawType);
230046
- const timestamp = this.safeInteger(order, 'orderTime');
230328
+ let status = this.parseWsOrderStatus(rawType);
230329
+ const timestamp = this.safeInteger2(order, 'orderTime', 'createdAt');
230047
230330
  const marketId = this.safeString(order, 'symbol');
230048
230331
  market = this.safeMarket(marketId, market);
230049
- const symbol = market['symbol'];
230050
- const side = this.safeStringLower(order, 'side');
230332
+ const triggerPrice = this.safeString(order, 'stopPrice');
230333
+ const triggerSuccess = this.safeValue(order, 'triggerSuccess');
230334
+ const triggerFail = (triggerSuccess !== true) && (triggerSuccess !== undefined); // TODO: updated to triggerSuccess === False once transpiler transpiles it correctly
230335
+ if ((status === 'triggered') && triggerFail) {
230336
+ status = 'canceled';
230337
+ }
230051
230338
  return this.safeOrder({
230052
230339
  'info': order,
230053
- 'symbol': symbol,
230054
- 'id': id,
230055
- 'clientOrderId': clientOrderId,
230340
+ 'symbol': market['symbol'],
230341
+ 'id': this.safeString(order, 'orderId'),
230342
+ 'clientOrderId': this.safeString(order, 'clientOid'),
230056
230343
  'timestamp': timestamp,
230057
230344
  'datetime': this.iso8601(timestamp),
230058
230345
  'lastTradeTimestamp': undefined,
230059
- 'type': orderType,
230346
+ 'type': this.safeStringLower(order, 'orderType'),
230060
230347
  'timeInForce': undefined,
230061
230348
  'postOnly': undefined,
230062
- 'side': side,
230063
- 'price': price,
230064
- 'stopPrice': undefined,
230065
- 'triggerPrice': undefined,
230066
- 'amount': amount,
230349
+ 'side': this.safeStringLower(order, 'side'),
230350
+ 'price': this.safeString2(order, 'price', 'orderPrice'),
230351
+ 'stopPrice': triggerPrice,
230352
+ 'triggerPrice': triggerPrice,
230353
+ 'amount': this.safeString(order, 'size'),
230067
230354
  'cost': undefined,
230068
230355
  'average': undefined,
230069
- 'filled': filled,
230356
+ 'filled': this.safeString(order, 'filledSize'),
230070
230357
  'remaining': undefined,
230071
230358
  'status': status,
230072
230359
  'fee': undefined,
@@ -230074,32 +230361,51 @@ class kucoin extends _kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
230074
230361
  }, market);
230075
230362
  }
230076
230363
  handleOrder(client, message) {
230364
+ //
230365
+ // Trigger Orders
230366
+ //
230367
+ // {
230368
+ // createdAt: 1692745706437,
230369
+ // error: 'Balance insufficient!', // not always there
230370
+ // orderId: 'vs86kp757vlda6ni003qs70v',
230371
+ // orderPrice: '0.26',
230372
+ // orderType: 'stop',
230373
+ // side: 'sell',
230374
+ // size: '5',
230375
+ // stop: 'loss',
230376
+ // stopPrice: '0.26',
230377
+ // symbol: 'ADA-USDT',
230378
+ // tradeType: 'TRADE',
230379
+ // triggerSuccess: false, // not always there
230380
+ // ts: '1692745706442929298',
230381
+ // type: 'open'
230382
+ // }
230383
+ //
230077
230384
  const messageHash = 'orders';
230078
230385
  const data = this.safeValue(message, 'data');
230079
230386
  const parsed = this.parseWsOrder(data);
230080
230387
  const symbol = this.safeString(parsed, 'symbol');
230081
230388
  const orderId = this.safeString(parsed, 'id');
230389
+ const triggerPrice = this.safeValue(parsed, 'triggerPrice');
230390
+ const isTriggerOrder = (triggerPrice !== undefined);
230082
230391
  if (this.orders === undefined) {
230083
230392
  const limit = this.safeInteger(this.options, 'ordersLimit', 1000);
230084
230393
  this.orders = new _base_ws_Cache_js__WEBPACK_IMPORTED_MODULE_1__/* .ArrayCacheBySymbolById */ .hl(limit);
230394
+ this.triggerOrders = new _base_ws_Cache_js__WEBPACK_IMPORTED_MODULE_1__/* .ArrayCacheBySymbolById */ .hl(limit);
230085
230395
  }
230086
- const cachedOrders = this.orders;
230396
+ const cachedOrders = isTriggerOrder ? this.triggerOrders : this.orders;
230087
230397
  const orders = this.safeValue(cachedOrders.hashmap, symbol, {});
230088
230398
  const order = this.safeValue(orders, orderId);
230089
230399
  if (order !== undefined) {
230090
230400
  // todo add others to calculate average etc
230091
- const stopPrice = this.safeValue(order, 'stopPrice');
230092
- if (stopPrice !== undefined) {
230093
- parsed['stopPrice'] = stopPrice;
230094
- }
230095
230401
  if (order['status'] === 'closed') {
230096
230402
  parsed['status'] = 'closed';
230097
230403
  }
230098
230404
  }
230099
230405
  cachedOrders.append(parsed);
230100
- client.resolve(this.orders, messageHash);
230406
+ client.resolve(cachedOrders, messageHash);
230101
230407
  const symbolSpecificMessageHash = messageHash + ':' + symbol;
230102
- client.resolve(this.orders, symbolSpecificMessageHash);
230408
+ client.resolve(cachedOrders, symbolSpecificMessageHash);
230103
230409
  }
230104
230410
  async watchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
230105
230411
  /**
@@ -230296,6 +230602,7 @@ class kucoin extends _kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
230296
230602
  'account.balance': this.handleBalance,
230297
230603
  '/spot/tradeFills': this.handleMyTrade,
230298
230604
  'orderChange': this.handleOrder,
230605
+ 'stopOrder': this.handleOrder,
230299
230606
  };
230300
230607
  const method = this.safeValue(methods, subject);
230301
230608
  if (method === undefined) {
@@ -234883,8 +235190,8 @@ class okx extends _okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
234883
235190
  let type = undefined;
234884
235191
  // By default, receive order updates from any instrument type
234885
235192
  [type, params] = this.handleOptionAndParams(params, 'watchOrders', 'type', 'ANY');
234886
- const isStop = this.safeValue(params, 'stop', false);
234887
- params = this.omit(params, ['stop']);
235193
+ const isStop = this.safeValue2(params, 'stop', 'trigger', false);
235194
+ params = this.omit(params, ['stop', 'trigger']);
234888
235195
  await this.loadMarkets();
234889
235196
  await this.authenticate({ 'access': isStop ? 'business' : 'private' });
234890
235197
  let market = undefined;
@@ -234971,8 +235278,9 @@ class okx extends _okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
234971
235278
  const limit = this.safeInteger(this.options, 'ordersLimit', 1000);
234972
235279
  if (this.orders === undefined) {
234973
235280
  this.orders = new _base_ws_Cache_js__WEBPACK_IMPORTED_MODULE_2__/* .ArrayCacheBySymbolById */ .hl(limit);
235281
+ this.triggerOrders = new _base_ws_Cache_js__WEBPACK_IMPORTED_MODULE_2__/* .ArrayCacheBySymbolById */ .hl(limit);
234974
235282
  }
234975
- const stored = this.orders;
235283
+ const stored = (channel === 'orders-algo') ? this.triggerOrders : this.orders;
234976
235284
  const marketIds = [];
234977
235285
  const parsed = this.parseOrders(orders);
234978
235286
  for (let i = 0; i < parsed.length; i++) {
@@ -234982,10 +235290,10 @@ class okx extends _okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
234982
235290
  const market = this.market(symbol);
234983
235291
  marketIds.push(market['id']);
234984
235292
  }
234985
- client.resolve(this.orders, channel);
235293
+ client.resolve(stored, channel);
234986
235294
  for (let i = 0; i < marketIds.length; i++) {
234987
235295
  const messageHash = channel + ':' + marketIds[i];
234988
- client.resolve(this.orders, messageHash);
235296
+ client.resolve(stored, messageHash);
234989
235297
  }
234990
235298
  }
234991
235299
  }
@@ -253701,7 +254009,7 @@ class tidex extends _abstract_tidex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
253701
254009
  const symbol = market['symbol'];
253702
254010
  result[symbol] = this.parseTicker(response[id], market);
253703
254011
  }
253704
- return this.filterByArray(result, 'symbol', symbols);
254012
+ return this.filterByArrayTickers(result, 'symbol', symbols);
253705
254013
  }
253706
254014
  async fetchTicker(symbol, params = {}) {
253707
254015
  /**
@@ -259067,7 +259375,7 @@ class upbit extends _abstract_upbit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
259067
259375
  const symbol = ticker['symbol'];
259068
259376
  result[symbol] = ticker;
259069
259377
  }
259070
- return this.filterByArray(result, 'symbol', symbols);
259378
+ return this.filterByArrayTickers(result, 'symbol', symbols);
259071
259379
  }
259072
259380
  async fetchTicker(symbol, params = {}) {
259073
259381
  /**
@@ -263224,7 +263532,7 @@ class wazirx extends _abstract_wazirx_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
263224
263532
  const symbol = parsedTicker['symbol'];
263225
263533
  result[symbol] = parsedTicker;
263226
263534
  }
263227
- return result;
263535
+ return this.filterByArrayTickers(result, 'symbol', symbols);
263228
263536
  }
263229
263537
  async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
263230
263538
  /**
@@ -264553,7 +264861,7 @@ class whitebit extends _abstract_whitebit_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
264553
264861
  const symbol = ticker['symbol'];
264554
264862
  result[symbol] = ticker;
264555
264863
  }
264556
- return this.filterByArray(result, 'symbol', symbols);
264864
+ return this.filterByArrayTickers(result, 'symbol', symbols);
264557
264865
  }
264558
264866
  async fetchOrderBook(symbol, limit = undefined, params = {}) {
264559
264867
  /**
@@ -266917,7 +267225,9 @@ class woo extends _abstract_woo_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
266917
267225
  const rows = this.safeValue(data, 'rows', []);
266918
267226
  return this.parseOrder(rows[0], market);
266919
267227
  }
266920
- return this.extend(this.parseOrder(response, market), { 'type': type });
267228
+ const order = this.parseOrder(response, market);
267229
+ order['type'] = type;
267230
+ return order;
266921
267231
  }
266922
267232
  async editOrder(id, symbol, type, side, amount = undefined, price = undefined, params = {}) {
266923
267233
  /**
@@ -269228,7 +269538,7 @@ class yobit extends _abstract_yobit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
269228
269538
  const symbol = market['symbol'];
269229
269539
  result[symbol] = this.parseTicker(ticker, market);
269230
269540
  }
269231
- return this.filterByArray(result, 'symbol', symbols);
269541
+ return this.filterByArrayTickers(result, 'symbol', symbols);
269232
269542
  }
269233
269543
  async fetchTicker(symbol, params = {}) {
269234
269544
  /**
@@ -278170,7 +278480,7 @@ SOFTWARE.
278170
278480
 
278171
278481
  //-----------------------------------------------------------------------------
278172
278482
  // this is updated by vss.js when building
278173
- const version = '4.1.18';
278483
+ const version = '4.1.20';
278174
278484
  _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange.ccxtVersion */ .e.ccxtVersion = version;
278175
278485
  //-----------------------------------------------------------------------------
278176
278486