ccxt 4.4.39 → 4.4.41

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 (190) hide show
  1. package/README.md +3 -3
  2. package/dist/ccxt.browser.min.js +3 -3
  3. package/dist/cjs/ccxt.js +1 -1
  4. package/dist/cjs/src/ascendex.js +9 -9
  5. package/dist/cjs/src/base/Exchange.js +32 -21
  6. package/dist/cjs/src/binance.js +37 -43
  7. package/dist/cjs/src/bingx.js +4 -3
  8. package/dist/cjs/src/bit2c.js +0 -1
  9. package/dist/cjs/src/bitbank.js +0 -1
  10. package/dist/cjs/src/bitbns.js +0 -1
  11. package/dist/cjs/src/bitfinex.js +18 -19
  12. package/dist/cjs/src/bitfinex1.js +0 -1
  13. package/dist/cjs/src/bitflyer.js +0 -1
  14. package/dist/cjs/src/bitget.js +2 -2
  15. package/dist/cjs/src/bithumb.js +0 -1
  16. package/dist/cjs/src/bitmart.js +257 -5
  17. package/dist/cjs/src/bitmex.js +5 -6
  18. package/dist/cjs/src/bitopro.js +4 -5
  19. package/dist/cjs/src/bitrue.js +5 -7
  20. package/dist/cjs/src/bitso.js +1 -2
  21. package/dist/cjs/src/bitstamp.js +1 -2
  22. package/dist/cjs/src/bitteam.js +1 -3
  23. package/dist/cjs/src/bitvavo.js +2 -4
  24. package/dist/cjs/src/blockchaincom.js +5 -5
  25. package/dist/cjs/src/blofin.js +10 -10
  26. package/dist/cjs/src/btcalpha.js +0 -1
  27. package/dist/cjs/src/btcbox.js +0 -1
  28. package/dist/cjs/src/btcmarkets.js +1 -3
  29. package/dist/cjs/src/bybit.js +10 -11
  30. package/dist/cjs/src/cex.js +1 -1
  31. package/dist/cjs/src/coinbase.js +77 -1
  32. package/dist/cjs/src/coinbaseexchange.js +1 -1
  33. package/dist/cjs/src/coinbaseinternational.js +62 -0
  34. package/dist/cjs/src/coincatch.js +1 -1
  35. package/dist/cjs/src/coinex.js +9 -9
  36. package/dist/cjs/src/coinlist.js +1 -1
  37. package/dist/cjs/src/coinmetro.js +1 -1
  38. package/dist/cjs/src/cryptocom.js +91 -2
  39. package/dist/cjs/src/currencycom.js +1 -1
  40. package/dist/cjs/src/defx.js +1 -2
  41. package/dist/cjs/src/delta.js +1 -1
  42. package/dist/cjs/src/digifinex.js +1 -1
  43. package/dist/cjs/src/exmo.js +64 -6
  44. package/dist/cjs/src/gate.js +2 -2
  45. package/dist/cjs/src/hashkey.js +3 -5
  46. package/dist/cjs/src/htx.js +2 -2
  47. package/dist/cjs/src/hyperliquid.js +66 -2
  48. package/dist/cjs/src/kraken.js +130 -27
  49. package/dist/cjs/src/kucoin.js +30 -25
  50. package/dist/cjs/src/luno.js +1 -1
  51. package/dist/cjs/src/mexc.js +138 -2
  52. package/dist/cjs/src/ndax.js +1 -1
  53. package/dist/cjs/src/okcoin.js +18 -18
  54. package/dist/cjs/src/okx.js +27 -22
  55. package/dist/cjs/src/phemex.js +12 -8
  56. package/dist/cjs/src/poloniex.js +1 -1
  57. package/dist/cjs/src/poloniexfutures.js +6 -6
  58. package/dist/cjs/src/pro/bitget.js +1 -1
  59. package/dist/cjs/src/pro/bybit.js +13 -1
  60. package/dist/cjs/src/pro/coinex.js +2 -2
  61. package/dist/cjs/src/pro/gate.js +6 -6
  62. package/dist/cjs/src/pro/kucoin.js +3 -3
  63. package/dist/cjs/src/pro/okx.js +11 -11
  64. package/dist/cjs/src/pro/upbit.js +3 -3
  65. package/dist/cjs/src/vertex.js +11 -11
  66. package/dist/cjs/src/woo.js +33 -33
  67. package/dist/cjs/src/woofipro.js +24 -24
  68. package/dist/cjs/src/xt.js +31 -28
  69. package/dist/cjs/src/zonda.js +1 -1
  70. package/js/ccxt.d.ts +3 -3
  71. package/js/ccxt.js +1 -1
  72. package/js/src/abstract/bitmart.d.ts +2 -0
  73. package/js/src/abstract/okx.d.ts +5 -0
  74. package/js/src/ascendex.d.ts +2 -2
  75. package/js/src/ascendex.js +9 -9
  76. package/js/src/base/Exchange.d.ts +6 -3
  77. package/js/src/base/Exchange.js +32 -21
  78. package/js/src/base/types.d.ts +2 -0
  79. package/js/src/binance.d.ts +9 -9
  80. package/js/src/binance.js +37 -43
  81. package/js/src/bingx.d.ts +1 -1
  82. package/js/src/bingx.js +4 -3
  83. package/js/src/bit2c.js +0 -1
  84. package/js/src/bitbank.js +0 -1
  85. package/js/src/bitbns.js +0 -1
  86. package/js/src/bitfinex.d.ts +3 -3
  87. package/js/src/bitfinex.js +18 -19
  88. package/js/src/bitfinex1.js +0 -1
  89. package/js/src/bitflyer.js +0 -1
  90. package/js/src/bitget.d.ts +1 -1
  91. package/js/src/bitget.js +2 -2
  92. package/js/src/bithumb.js +0 -1
  93. package/js/src/bitmart.d.ts +53 -2
  94. package/js/src/bitmart.js +257 -5
  95. package/js/src/bitmex.d.ts +1 -1
  96. package/js/src/bitmex.js +5 -6
  97. package/js/src/bitopro.js +4 -5
  98. package/js/src/bitrue.js +5 -7
  99. package/js/src/bitso.d.ts +1 -1
  100. package/js/src/bitso.js +1 -2
  101. package/js/src/bitstamp.d.ts +1 -1
  102. package/js/src/bitstamp.js +1 -2
  103. package/js/src/bitteam.js +1 -3
  104. package/js/src/bitvavo.d.ts +1 -1
  105. package/js/src/bitvavo.js +2 -4
  106. package/js/src/blockchaincom.js +5 -5
  107. package/js/src/blofin.d.ts +3 -3
  108. package/js/src/blofin.js +10 -10
  109. package/js/src/btcalpha.js +0 -1
  110. package/js/src/btcbox.js +0 -1
  111. package/js/src/btcmarkets.js +1 -3
  112. package/js/src/bybit.d.ts +1 -1
  113. package/js/src/bybit.js +10 -11
  114. package/js/src/cex.d.ts +1 -1
  115. package/js/src/cex.js +1 -1
  116. package/js/src/coinbase.d.ts +1 -1
  117. package/js/src/coinbase.js +77 -1
  118. package/js/src/coinbaseexchange.d.ts +1 -1
  119. package/js/src/coinbaseexchange.js +1 -1
  120. package/js/src/coinbaseinternational.js +62 -0
  121. package/js/src/coincatch.d.ts +1 -1
  122. package/js/src/coincatch.js +1 -1
  123. package/js/src/coinex.js +9 -9
  124. package/js/src/coinlist.d.ts +1 -1
  125. package/js/src/coinlist.js +1 -1
  126. package/js/src/coinmetro.d.ts +1 -1
  127. package/js/src/coinmetro.js +1 -1
  128. package/js/src/cryptocom.d.ts +2 -2
  129. package/js/src/cryptocom.js +91 -2
  130. package/js/src/currencycom.d.ts +1 -1
  131. package/js/src/currencycom.js +1 -1
  132. package/js/src/defx.d.ts +1 -2
  133. package/js/src/defx.js +1 -2
  134. package/js/src/delta.d.ts +1 -1
  135. package/js/src/delta.js +1 -1
  136. package/js/src/digifinex.d.ts +1 -1
  137. package/js/src/digifinex.js +1 -1
  138. package/js/src/exmo.d.ts +35 -0
  139. package/js/src/exmo.js +64 -6
  140. package/js/src/gate.d.ts +1 -1
  141. package/js/src/gate.js +2 -2
  142. package/js/src/hashkey.d.ts +1 -1
  143. package/js/src/hashkey.js +3 -5
  144. package/js/src/htx.d.ts +1 -1
  145. package/js/src/htx.js +2 -2
  146. package/js/src/hyperliquid.d.ts +21 -2
  147. package/js/src/hyperliquid.js +66 -2
  148. package/js/src/kraken.d.ts +14 -8
  149. package/js/src/kraken.js +130 -27
  150. package/js/src/kucoin.d.ts +13 -13
  151. package/js/src/kucoin.js +30 -25
  152. package/js/src/luno.d.ts +1 -1
  153. package/js/src/luno.js +1 -1
  154. package/js/src/mexc.d.ts +1 -2
  155. package/js/src/mexc.js +138 -2
  156. package/js/src/ndax.d.ts +1 -1
  157. package/js/src/ndax.js +1 -1
  158. package/js/src/okcoin.d.ts +4 -4
  159. package/js/src/okcoin.js +18 -18
  160. package/js/src/okx.d.ts +3 -3
  161. package/js/src/okx.js +27 -22
  162. package/js/src/phemex.js +12 -8
  163. package/js/src/poloniex.d.ts +1 -1
  164. package/js/src/poloniex.js +1 -1
  165. package/js/src/poloniexfutures.d.ts +1 -1
  166. package/js/src/poloniexfutures.js +6 -6
  167. package/js/src/pro/bitget.d.ts +1 -1
  168. package/js/src/pro/bitget.js +1 -1
  169. package/js/src/pro/bybit.d.ts +1 -1
  170. package/js/src/pro/bybit.js +13 -1
  171. package/js/src/pro/coinex.js +2 -2
  172. package/js/src/pro/gate.d.ts +2 -2
  173. package/js/src/pro/gate.js +6 -6
  174. package/js/src/pro/kucoin.d.ts +1 -1
  175. package/js/src/pro/kucoin.js +3 -3
  176. package/js/src/pro/okx.d.ts +2 -2
  177. package/js/src/pro/okx.js +11 -11
  178. package/js/src/pro/upbit.d.ts +3 -3
  179. package/js/src/pro/upbit.js +3 -3
  180. package/js/src/vertex.d.ts +3 -3
  181. package/js/src/vertex.js +11 -11
  182. package/js/src/woo.d.ts +7 -7
  183. package/js/src/woo.js +33 -33
  184. package/js/src/woofipro.d.ts +1 -1
  185. package/js/src/woofipro.js +24 -24
  186. package/js/src/xt.d.ts +7 -7
  187. package/js/src/xt.js +31 -28
  188. package/js/src/zonda.d.ts +1 -1
  189. package/js/src/zonda.js +1 -1
  190. package/package.json +2 -2
@@ -351,6 +351,95 @@ export default class cryptocom extends Exchange {
351
351
  },
352
352
  'broker': 'CCXT',
353
353
  },
354
+ 'features': {
355
+ 'default': {
356
+ 'sandbox': true,
357
+ 'createOrder': {
358
+ 'marginMode': true,
359
+ 'triggerPrice': true,
360
+ // todo: implementation fix
361
+ 'triggerPriceType': {
362
+ 'last': true,
363
+ 'mark': true,
364
+ 'index': true,
365
+ },
366
+ 'triggerDirection': false,
367
+ 'stopLossPrice': true,
368
+ 'takeProfitPrice': true,
369
+ 'attachedStopLossTakeProfit': undefined,
370
+ 'timeInForce': {
371
+ 'IOC': true,
372
+ 'FOK': true,
373
+ 'PO': true,
374
+ 'GTD': false,
375
+ },
376
+ 'hedged': false,
377
+ // exchange-supported features
378
+ 'selfTradePrevention': true,
379
+ 'trailing': false,
380
+ 'iceberg': false,
381
+ },
382
+ 'createOrders': {
383
+ 'max': 10,
384
+ },
385
+ 'fetchMyTrades': {
386
+ 'marginMode': false,
387
+ 'limit': 100,
388
+ 'daysBack': undefined,
389
+ 'untilDays': 1,
390
+ },
391
+ 'fetchOrder': {
392
+ 'marginMode': false,
393
+ 'trigger': false,
394
+ 'trailing': false,
395
+ },
396
+ 'fetchOpenOrders': {
397
+ 'marginMode': true,
398
+ 'limit': 100,
399
+ 'trigger': false,
400
+ 'trailing': false,
401
+ },
402
+ 'fetchOrders': {
403
+ 'marginMode': false,
404
+ 'limit': 100,
405
+ 'daysBack': undefined,
406
+ 'untilDays': 1,
407
+ 'trigger': false,
408
+ 'trailing': false,
409
+ },
410
+ 'fetchClosedOrders': {
411
+ 'marginMode': false,
412
+ 'limit': 100,
413
+ 'daysBackClosed': undefined,
414
+ 'daysBackCanceled': undefined,
415
+ 'untilDays': 1,
416
+ 'trigger': false,
417
+ 'trailing': false,
418
+ },
419
+ 'fetchOHLCV': {
420
+ 'limit': 300,
421
+ },
422
+ },
423
+ 'spot': {
424
+ 'extends': 'default',
425
+ },
426
+ 'swap': {
427
+ 'linear': {
428
+ 'extends': 'default',
429
+ },
430
+ 'inverse': {
431
+ 'extends': 'default',
432
+ },
433
+ },
434
+ 'future': {
435
+ 'linear': {
436
+ 'extends': 'default',
437
+ },
438
+ 'inverse': {
439
+ 'extends': 'default',
440
+ },
441
+ },
442
+ },
354
443
  // https://exchange-docs.crypto.com/spot/index.html#response-and-reason-codes
355
444
  'commonCurrencies': {
356
445
  'USD_STABLE_COIN': 'USDC',
@@ -1190,7 +1279,7 @@ export default class cryptocom extends Exchange {
1190
1279
  * @param {object} [params] extra parameters specific to the exchange API endpoint
1191
1280
  * @param {string} [params.timeInForce] 'GTC', 'IOC', 'FOK' or 'PO'
1192
1281
  * @param {string} [params.ref_price_type] 'MARK_PRICE', 'INDEX_PRICE', 'LAST_PRICE' which trigger price type to use, default is MARK_PRICE
1193
- * @param {float} [params.triggerPrice] price to trigger a stop order
1282
+ * @param {float} [params.triggerPrice] price to trigger a trigger order
1194
1283
  * @param {float} [params.stopLossPrice] price to trigger a stop-loss trigger order
1195
1284
  * @param {float} [params.takeProfitPrice] price to trigger a take-profit trigger order
1196
1285
  * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
@@ -2406,7 +2495,7 @@ export default class cryptocom extends Exchange {
2406
2495
  * @param {int} [limit] max number of ledger entries to return
2407
2496
  * @param {object} [params] extra parameters specific to the exchange API endpoint
2408
2497
  * @param {int} [params.until] timestamp in ms for the ending date filter, default is the current time
2409
- * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger-structure}
2498
+ * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger}
2410
2499
  */
2411
2500
  async fetchLedger(code = undefined, since = undefined, limit = undefined, params = {}) {
2412
2501
  await this.loadMarkets();
@@ -235,7 +235,7 @@ export default class currencycom extends Exchange {
235
235
  * @param {int} [since] timestamp in ms of the earliest ledger entry, default is undefined
236
236
  * @param {int} [limit] max number of ledger entries to return, default is undefined
237
237
  * @param {object} [params] extra parameters specific to the exchange API endpoint
238
- * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger-structure}
238
+ * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger}
239
239
  */
240
240
  fetchLedger(code?: Str, since?: Int, limit?: Int, params?: {}): Promise<LedgerEntry[]>;
241
241
  parseLedgerEntry(item: Dict, currency?: Currency): LedgerEntry;
@@ -1701,7 +1701,7 @@ export default class currencycom extends Exchange {
1701
1701
  * @param {int} [since] timestamp in ms of the earliest ledger entry, default is undefined
1702
1702
  * @param {int} [limit] max number of ledger entries to return, default is undefined
1703
1703
  * @param {object} [params] extra parameters specific to the exchange API endpoint
1704
- * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger-structure}
1704
+ * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger}
1705
1705
  */
1706
1706
  async fetchLedger(code = undefined, since = undefined, limit = undefined, params = {}) {
1707
1707
  await this.loadMarkets();
package/js/src/defx.d.ts CHANGED
@@ -172,7 +172,6 @@ export default class defx extends Exchange {
172
172
  * @param {string} id order id
173
173
  * @param {string} symbol unified symbol of the market the order was made in
174
174
  * @param {object} [params] extra parameters specific to the exchange API endpoint
175
- * @param {boolean} [params.stop] whether the order is a stop/algo order
176
175
  * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
177
176
  */
178
177
  cancelOrder(id: string, symbol?: Str, params?: {}): Promise<any>;
@@ -305,7 +304,7 @@ export default class defx extends Exchange {
305
304
  * @param {object} [params] extra parameters specific to the exchange API endpoint
306
305
  * @param {int} [params.until] timestamp in ms of the latest ledger entry
307
306
  * @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)
308
- * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger-structure}
307
+ * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger}
309
308
  */
310
309
  fetchLedger(code?: Str, since?: Int, limit?: Int, params?: {}): Promise<LedgerEntry[]>;
311
310
  parseLedgerEntry(item: Dict, currency?: Currency): LedgerEntry;
package/js/src/defx.js CHANGED
@@ -1349,7 +1349,6 @@ export default class defx extends Exchange {
1349
1349
  * @param {string} id order id
1350
1350
  * @param {string} symbol unified symbol of the market the order was made in
1351
1351
  * @param {object} [params] extra parameters specific to the exchange API endpoint
1352
- * @param {boolean} [params.stop] whether the order is a stop/algo order
1353
1352
  * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1354
1353
  */
1355
1354
  async cancelOrder(id, symbol = undefined, params = {}) {
@@ -1782,7 +1781,7 @@ export default class defx extends Exchange {
1782
1781
  * @param {object} [params] extra parameters specific to the exchange API endpoint
1783
1782
  * @param {int} [params.until] timestamp in ms of the latest ledger entry
1784
1783
  * @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)
1785
- * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger-structure}
1784
+ * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger}
1786
1785
  */
1787
1786
  async fetchLedger(code = undefined, since = undefined, limit = undefined, params = {}) {
1788
1787
  await this.loadMarkets();
package/js/src/delta.d.ts CHANGED
@@ -239,7 +239,7 @@ export default class delta extends Exchange {
239
239
  * @param {int} [since] timestamp in ms of the earliest ledger entry, default is undefined
240
240
  * @param {int} [limit] max number of ledger entries to return, default is undefined
241
241
  * @param {object} [params] extra parameters specific to the exchange API endpoint
242
- * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger-structure}
242
+ * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger}
243
243
  */
244
244
  fetchLedger(code?: Str, since?: Int, limit?: Int, params?: {}): Promise<LedgerEntry[]>;
245
245
  parseLedgerEntryType(type: any): string;
package/js/src/delta.js CHANGED
@@ -2200,7 +2200,7 @@ export default class delta extends Exchange {
2200
2200
  * @param {int} [since] timestamp in ms of the earliest ledger entry, default is undefined
2201
2201
  * @param {int} [limit] max number of ledger entries to return, default is undefined
2202
2202
  * @param {object} [params] extra parameters specific to the exchange API endpoint
2203
- * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger-structure}
2203
+ * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger}
2204
2204
  */
2205
2205
  async fetchLedger(code = undefined, since = undefined, limit = undefined, params = {}) {
2206
2206
  await this.loadMarkets();
@@ -253,7 +253,7 @@ export default class digifinex extends Exchange {
253
253
  * @param {int} [since] timestamp in ms of the earliest ledger entry, default is undefined
254
254
  * @param {int} [limit] max number of ledger entries to return, default is undefined
255
255
  * @param {object} [params] extra parameters specific to the exchange API endpoint
256
- * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger-structure}
256
+ * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger}
257
257
  */
258
258
  fetchLedger(code?: Str, since?: Int, limit?: Int, params?: {}): Promise<LedgerEntry[]>;
259
259
  parseDepositAddress(depositAddress: any, currency?: Currency): DepositAddress;
@@ -2646,7 +2646,7 @@ export default class digifinex extends Exchange {
2646
2646
  * @param {int} [since] timestamp in ms of the earliest ledger entry, default is undefined
2647
2647
  * @param {int} [limit] max number of ledger entries to return, default is undefined
2648
2648
  * @param {object} [params] extra parameters specific to the exchange API endpoint
2649
- * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger-structure}
2649
+ * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger}
2650
2650
  */
2651
2651
  async fetchLedger(code = undefined, since = undefined, limit = undefined, params = {}) {
2652
2652
  await this.loadMarkets();
package/js/src/exmo.d.ts CHANGED
@@ -182,6 +182,40 @@ export default class exmo extends Exchange {
182
182
  * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
183
183
  */
184
184
  fetchMyTrades(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
185
+ /**
186
+ * @method
187
+ * @name exmo#createMarketOrderWithCost
188
+ * @description create a market order by providing the symbol, side and cost
189
+ * @see https://documenter.getpostman.com/view/10287440/SzYXWKPi#80daa469-ec59-4d0a-b229-6a311d8dd1cd
190
+ * @param {string} symbol unified symbol of the market to create an order in
191
+ * @param {string} side 'buy' or 'sell'
192
+ * @param {float} cost how much you want to trade in units of the quote currency
193
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
194
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
195
+ */
196
+ createMarketOrderWithCost(symbol: string, side: OrderSide, cost: number, params?: {}): Promise<Order>;
197
+ /**
198
+ * @method
199
+ * @name exmo#createMarketBuyOrderWithCost
200
+ * @description create a market buy order by providing the symbol and cost
201
+ * @see https://documenter.getpostman.com/view/10287440/SzYXWKPi#80daa469-ec59-4d0a-b229-6a311d8dd1cd
202
+ * @param {string} symbol unified symbol of the market to create an order in
203
+ * @param {float} cost how much you want to trade in units of the quote currency
204
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
205
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
206
+ */
207
+ createMarketBuyOrderWithCost(symbol: string, cost: number, params?: {}): Promise<Order>;
208
+ /**
209
+ * @method
210
+ * @name exmo#createMarketSellOrderWithCost
211
+ * @description create a market sell order by providing the symbol and cost
212
+ * @see https://documenter.getpostman.com/view/10287440/SzYXWKPi#80daa469-ec59-4d0a-b229-6a311d8dd1cd
213
+ * @param {string} symbol unified symbol of the market to create an order in
214
+ * @param {float} cost how much you want to trade in units of the quote currency
215
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
216
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
217
+ */
218
+ createMarketSellOrderWithCost(symbol: string, cost: number, params?: {}): Promise<Order>;
185
219
  /**
186
220
  * @method
187
221
  * @name exmo#createOrder
@@ -198,6 +232,7 @@ export default class exmo extends Exchange {
198
232
  * @param {float} [params.stopPrice] the price at which a trigger order is triggered at
199
233
  * @param {string} [params.timeInForce] *spot only* 'fok', 'ioc' or 'post_only'
200
234
  * @param {boolean} [params.postOnly] *spot only* true for post only orders
235
+ * @param {float} [params.cost] *spot only* *market orders only* the cost of the order in the quote currency for market orders
201
236
  * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
202
237
  */
203
238
  createOrder(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: Num, params?: {}): Promise<Order>;
package/js/src/exmo.js CHANGED
@@ -34,6 +34,9 @@ export default class exmo extends Exchange {
34
34
  'cancelOrder': true,
35
35
  'cancelOrders': false,
36
36
  'createDepositAddress': false,
37
+ 'createMarketBuyOrder': true,
38
+ 'createMarketBuyOrderWithCost': true,
39
+ 'createMarketOrderWithCost': true,
37
40
  'createOrder': true,
38
41
  'createStopLimitOrder': true,
39
42
  'createStopMarketOrder': true,
@@ -1409,6 +1412,52 @@ export default class exmo extends Exchange {
1409
1412
  }
1410
1413
  return this.filterBySinceLimit(result, since, limit);
1411
1414
  }
1415
+ /**
1416
+ * @method
1417
+ * @name exmo#createMarketOrderWithCost
1418
+ * @description create a market order by providing the symbol, side and cost
1419
+ * @see https://documenter.getpostman.com/view/10287440/SzYXWKPi#80daa469-ec59-4d0a-b229-6a311d8dd1cd
1420
+ * @param {string} symbol unified symbol of the market to create an order in
1421
+ * @param {string} side 'buy' or 'sell'
1422
+ * @param {float} cost how much you want to trade in units of the quote currency
1423
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1424
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1425
+ */
1426
+ async createMarketOrderWithCost(symbol, side, cost, params = {}) {
1427
+ await this.loadMarkets();
1428
+ params = this.extend(params, { 'cost': cost });
1429
+ return await this.createOrder(symbol, 'market', side, cost, undefined, params);
1430
+ }
1431
+ /**
1432
+ * @method
1433
+ * @name exmo#createMarketBuyOrderWithCost
1434
+ * @description create a market buy order by providing the symbol and cost
1435
+ * @see https://documenter.getpostman.com/view/10287440/SzYXWKPi#80daa469-ec59-4d0a-b229-6a311d8dd1cd
1436
+ * @param {string} symbol unified symbol of the market to create an order in
1437
+ * @param {float} cost how much you want to trade in units of the quote currency
1438
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1439
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1440
+ */
1441
+ async createMarketBuyOrderWithCost(symbol, cost, params = {}) {
1442
+ await this.loadMarkets();
1443
+ params = this.extend(params, { 'cost': cost });
1444
+ return await this.createOrder(symbol, 'market', 'buy', cost, undefined, params);
1445
+ }
1446
+ /**
1447
+ * @method
1448
+ * @name exmo#createMarketSellOrderWithCost
1449
+ * @description create a market sell order by providing the symbol and cost
1450
+ * @see https://documenter.getpostman.com/view/10287440/SzYXWKPi#80daa469-ec59-4d0a-b229-6a311d8dd1cd
1451
+ * @param {string} symbol unified symbol of the market to create an order in
1452
+ * @param {float} cost how much you want to trade in units of the quote currency
1453
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1454
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1455
+ */
1456
+ async createMarketSellOrderWithCost(symbol, cost, params = {}) {
1457
+ await this.loadMarkets();
1458
+ params = this.extend(params, { 'cost': cost });
1459
+ return await this.createOrder(symbol, 'market', 'sell', cost, undefined, params);
1460
+ }
1412
1461
  /**
1413
1462
  * @method
1414
1463
  * @name exmo#createOrder
@@ -1425,6 +1474,7 @@ export default class exmo extends Exchange {
1425
1474
  * @param {float} [params.stopPrice] the price at which a trigger order is triggered at
1426
1475
  * @param {string} [params.timeInForce] *spot only* 'fok', 'ioc' or 'post_only'
1427
1476
  * @param {boolean} [params.postOnly] *spot only* true for post only orders
1477
+ * @param {float} [params.cost] *spot only* *market orders only* the cost of the order in the quote currency for market orders
1428
1478
  * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1429
1479
  */
1430
1480
  async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
@@ -1437,11 +1487,12 @@ export default class exmo extends Exchange {
1437
1487
  throw new BadRequest(this.id + ' only supports isolated margin');
1438
1488
  }
1439
1489
  const isSpot = (marginMode !== 'isolated');
1440
- const triggerPrice = this.safeNumberN(params, ['triggerPrice', 'stopPrice', 'stop_price']);
1490
+ const triggerPrice = this.safeStringN(params, ['triggerPrice', 'stopPrice', 'stop_price']);
1491
+ const cost = this.safeString(params, 'cost');
1441
1492
  const request = {
1442
1493
  'pair': market['id'],
1443
1494
  // 'leverage': 2,
1444
- 'quantity': this.amountToPrecision(market['symbol'], amount),
1495
+ // 'quantity': this.amountToPrecision (market['symbol'], amount),
1445
1496
  // spot - buy, sell, market_buy, market_sell, market_buy_total, market_sell_total
1446
1497
  // margin - limit_buy, limit_sell, market_buy, market_sell, stop_buy, stop_sell, stop_limit_buy, stop_limit_sell, trailing_stop_buy, trailing_stop_sell
1447
1498
  // 'stop_price': this.priceToPrecision (symbol, stopPrice),
@@ -1450,6 +1501,12 @@ export default class exmo extends Exchange {
1450
1501
  // 'client_id': 123, // optional, must be a positive integer
1451
1502
  // 'comment': '', // up to 50 latin symbols, whitespaces, underscores
1452
1503
  };
1504
+ if (cost === undefined) {
1505
+ request['quantity'] = this.amountToPrecision(market['symbol'], amount);
1506
+ }
1507
+ else {
1508
+ request['quantity'] = this.costToPrecision(market['symbol'], cost);
1509
+ }
1453
1510
  let clientOrderId = this.safeValue2(params, 'client_id', 'clientOrderId');
1454
1511
  if (clientOrderId !== undefined) {
1455
1512
  clientOrderId = this.safeInteger2(params, 'client_id', 'clientOrderId');
@@ -1464,7 +1521,7 @@ export default class exmo extends Exchange {
1464
1521
  if (!isSpot && (leverage === undefined)) {
1465
1522
  throw new ArgumentsRequired(this.id + ' createOrder requires an extra param params["leverage"] for margin orders');
1466
1523
  }
1467
- params = this.omit(params, ['stopPrice', 'stop_price', 'triggerPrice', 'timeInForce', 'client_id', 'clientOrderId']);
1524
+ params = this.omit(params, ['stopPrice', 'stop_price', 'triggerPrice', 'timeInForce', 'client_id', 'clientOrderId', 'cost']);
1468
1525
  if (price !== undefined) {
1469
1526
  request['price'] = this.priceToPrecision(market['symbol'], price);
1470
1527
  }
@@ -1490,7 +1547,8 @@ export default class exmo extends Exchange {
1490
1547
  request['type'] = side;
1491
1548
  }
1492
1549
  else if (type === 'market') {
1493
- request['type'] = 'market_' + side;
1550
+ const marketSuffix = (cost !== undefined) ? '_total' : '';
1551
+ request['type'] = 'market_' + side + marketSuffix;
1494
1552
  }
1495
1553
  if (isPostOnly) {
1496
1554
  request['exec_type'] = 'post_only';
@@ -1543,7 +1601,7 @@ export default class exmo extends Exchange {
1543
1601
  async cancelOrder(id, symbol = undefined, params = {}) {
1544
1602
  await this.loadMarkets();
1545
1603
  const request = {};
1546
- const stop = this.safeValue2(params, 'trigger', 'stop');
1604
+ const trigger = this.safeValue2(params, 'trigger', 'stop');
1547
1605
  params = this.omit(params, ['trigger', 'stop']);
1548
1606
  let marginMode = undefined;
1549
1607
  [marginMode, params] = this.handleMarginModeAndParams('cancelOrder', params);
@@ -1559,7 +1617,7 @@ export default class exmo extends Exchange {
1559
1617
  //
1560
1618
  }
1561
1619
  else {
1562
- if (stop) {
1620
+ if (trigger) {
1563
1621
  request['parent_order_id'] = id;
1564
1622
  response = await this.privatePostStopMarketOrderCancel(this.extend(request, params));
1565
1623
  //
package/js/src/gate.d.ts CHANGED
@@ -902,7 +902,7 @@ export default class gate extends Exchange {
902
902
  * @param {object} [params] extra parameters specific to the exchange API endpoint
903
903
  * @param {int} [params.until] end time in ms
904
904
  * @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)
905
- * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger-structure}
905
+ * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger}
906
906
  */
907
907
  fetchLedger(code?: Str, since?: Int, limit?: Int, params?: {}): Promise<LedgerEntry[]>;
908
908
  parseLedgerEntry(item: Dict, currency?: Currency): LedgerEntry;
package/js/src/gate.js CHANGED
@@ -6899,7 +6899,7 @@ export default class gate extends Exchange {
6899
6899
  // ...
6900
6900
  // ]
6901
6901
  //
6902
- return this.parseOpenInterests(response, market, since, limit);
6902
+ return this.parseOpenInterestsHistory(response, market, since, limit);
6903
6903
  }
6904
6904
  parseOpenInterest(interest, market = undefined) {
6905
6905
  //
@@ -7125,7 +7125,7 @@ export default class gate extends Exchange {
7125
7125
  * @param {object} [params] extra parameters specific to the exchange API endpoint
7126
7126
  * @param {int} [params.until] end time in ms
7127
7127
  * @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)
7128
- * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger-structure}
7128
+ * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger}
7129
7129
  */
7130
7130
  async fetchLedger(code = undefined, since = undefined, limit = undefined, params = {}) {
7131
7131
  await this.loadMarkets();
@@ -270,7 +270,7 @@ export default class hashkey extends Exchange {
270
270
  * @param {int} [params.until] the latest time in ms to fetch entries for
271
271
  * @param {int} [params.flowType] trade, fee, transfer, deposit, withdrawal
272
272
  * @param {int} [params.accountType] spot, swap, custody
273
- * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger-structure}
273
+ * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger}
274
274
  */
275
275
  fetchLedger(code?: Str, since?: Int, limit?: Int, params?: {}): Promise<LedgerEntry[]>;
276
276
  parseLedgerEntryType(type: any): string;
package/js/src/hashkey.js CHANGED
@@ -2241,7 +2241,7 @@ export default class hashkey extends Exchange {
2241
2241
  * @param {int} [params.until] the latest time in ms to fetch entries for
2242
2242
  * @param {int} [params.flowType] trade, fee, transfer, deposit, withdrawal
2243
2243
  * @param {int} [params.accountType] spot, swap, custody
2244
- * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger-structure}
2244
+ * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger}
2245
2245
  */
2246
2246
  async fetchLedger(code = undefined, since = undefined, limit = undefined, params = {}) {
2247
2247
  const methodName = 'fetchLedger';
@@ -3482,10 +3482,8 @@ export default class hashkey extends Exchange {
3482
3482
  }
3483
3483
  }
3484
3484
  handleTriggerOptionAndParams(params, methodName, defaultValue = undefined) {
3485
- let isStop = defaultValue;
3486
- [isStop, params] = this.handleOptionAndParams(params, methodName, 'stop', isStop);
3487
- let isTrigger = isStop;
3488
- [isTrigger, params] = this.handleOptionAndParams(params, methodName, 'trigger', isTrigger);
3485
+ let isTrigger = defaultValue;
3486
+ [isTrigger, params] = this.handleOptionAndParams2(params, methodName, 'stop', 'trigger', isTrigger);
3489
3487
  return [isTrigger, params];
3490
3488
  }
3491
3489
  parseOrder(order, market = undefined) {
package/js/src/htx.d.ts CHANGED
@@ -759,7 +759,7 @@ export default class htx extends Exchange {
759
759
  * @param {object} [params] extra parameters specific to the exchange API endpoint
760
760
  * @param {int} [params.until] the latest time in ms to fetch entries for
761
761
  * @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)
762
- * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger-structure}
762
+ * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger}
763
763
  */
764
764
  fetchLedger(code?: Str, since?: Int, limit?: Int, params?: {}): Promise<LedgerEntry[]>;
765
765
  /**
package/js/src/htx.js CHANGED
@@ -8389,7 +8389,7 @@ export default class htx extends Exchange {
8389
8389
  * @param {object} [params] extra parameters specific to the exchange API endpoint
8390
8390
  * @param {int} [params.until] the latest time in ms to fetch entries for
8391
8391
  * @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)
8392
- * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger-structure}
8392
+ * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger}
8393
8393
  */
8394
8394
  async fetchLedger(code = undefined, since = undefined, limit = undefined, params = {}) {
8395
8395
  await this.loadMarkets();
@@ -8643,7 +8643,7 @@ export default class htx extends Exchange {
8643
8643
  //
8644
8644
  const data = this.safeValue(response, 'data');
8645
8645
  const tick = this.safeList(data, 'tick');
8646
- return this.parseOpenInterests(tick, market, since, limit);
8646
+ return this.parseOpenInterestsHistory(tick, market, since, limit);
8647
8647
  }
8648
8648
  /**
8649
8649
  * @method
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/hyperliquid.js';
2
- import type { Market, TransferEntry, Balances, Int, OrderBook, OHLCV, Str, FundingRateHistory, Order, OrderType, OrderSide, Trade, Strings, Position, OrderRequest, Dict, Num, MarginModification, Currencies, CancellationRequest, int, Transaction, Currency, TradingFeeInterface, Ticker, Tickers, LedgerEntry, FundingRates, FundingRate } from './base/types.js';
2
+ import type { Market, TransferEntry, Balances, Int, OrderBook, OHLCV, Str, FundingRateHistory, Order, OrderType, OrderSide, Trade, Strings, Position, OrderRequest, Dict, Num, MarginModification, Currencies, CancellationRequest, int, Transaction, Currency, TradingFeeInterface, Ticker, Tickers, LedgerEntry, FundingRates, FundingRate, OpenInterests } from './base/types.js';
3
3
  /**
4
4
  * @class hyperliquid
5
5
  * @augments Exchange
@@ -501,7 +501,7 @@ export default class hyperliquid extends Exchange {
501
501
  * @param {int} [limit] max number of ledger entries to return
502
502
  * @param {object} [params] extra parameters specific to the exchange API endpoint
503
503
  * @param {int} [params.until] timestamp in ms of the latest ledger entry
504
- * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger-structure}
504
+ * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger}
505
505
  */
506
506
  fetchLedger(code?: Str, since?: Int, limit?: Int, params?: {}): Promise<LedgerEntry[]>;
507
507
  parseLedgerEntry(item: Dict, currency?: Currency): LedgerEntry;
@@ -530,6 +530,25 @@ export default class hyperliquid extends Exchange {
530
530
  * @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
531
531
  */
532
532
  fetchWithdrawals(code?: Str, since?: Int, limit?: Int, params?: {}): Promise<Transaction[]>;
533
+ /**
534
+ * @method
535
+ * @name hyperliquid#fetchOpenInterests
536
+ * @description Retrieves the open interest for a list of symbols
537
+ * @param {string[]} [symbols] Unified CCXT market symbol
538
+ * @param {object} [params] exchange specific parameters
539
+ * @returns {object} an open interest structure{@link https://docs.ccxt.com/#/?id=open-interest-structure}
540
+ */
541
+ fetchOpenInterests(symbols?: Strings, params?: {}): Promise<OpenInterests>;
542
+ /**
543
+ * @method
544
+ * @name hyperliquid#fetchOpenInterest
545
+ * @description retrieves the open interest of a contract trading pair
546
+ * @param {string} symbol unified CCXT market symbol
547
+ * @param {object} [params] exchange specific parameters
548
+ * @returns {object} an [open interest structure]{@link https://docs.ccxt.com/#/?id=open-interest-structure}
549
+ */
550
+ fetchOpenInterest(symbol: string, params?: {}): Promise<import("./base/types.js").OpenInterest>;
551
+ parseOpenInterest(interest: any, market?: Market): import("./base/types.js").OpenInterest;
533
552
  extractTypeFromDelta(data?: any[]): any[];
534
553
  formatVaultAddress(address?: Str): string;
535
554
  handlePublicAddress(methodName: string, params: Dict): any[];
@@ -88,8 +88,9 @@ export default class hyperliquid extends Exchange {
88
88
  'fetchMyLiquidations': false,
89
89
  'fetchMyTrades': true,
90
90
  'fetchOHLCV': true,
91
- 'fetchOpenInterest': false,
91
+ 'fetchOpenInterest': true,
92
92
  'fetchOpenInterestHistory': false,
93
+ 'fetchOpenInterests': true,
93
94
  'fetchOpenOrders': true,
94
95
  'fetchOrder': true,
95
96
  'fetchOrderBook': true,
@@ -3082,7 +3083,7 @@ export default class hyperliquid extends Exchange {
3082
3083
  * @param {int} [limit] max number of ledger entries to return
3083
3084
  * @param {object} [params] extra parameters specific to the exchange API endpoint
3084
3085
  * @param {int} [params.until] timestamp in ms of the latest ledger entry
3085
- * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger-structure}
3086
+ * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger}
3086
3087
  */
3087
3088
  async fetchLedger(code = undefined, since = undefined, limit = undefined, params = {}) {
3088
3089
  await this.loadMarkets();
@@ -3255,6 +3256,69 @@ export default class hyperliquid extends Exchange {
3255
3256
  const withdrawals = this.filterByArray(records, 'type', ['withdraw'], false);
3256
3257
  return this.parseTransactions(withdrawals, undefined, since, limit);
3257
3258
  }
3259
+ /**
3260
+ * @method
3261
+ * @name hyperliquid#fetchOpenInterests
3262
+ * @description Retrieves the open interest for a list of symbols
3263
+ * @param {string[]} [symbols] Unified CCXT market symbol
3264
+ * @param {object} [params] exchange specific parameters
3265
+ * @returns {object} an open interest structure{@link https://docs.ccxt.com/#/?id=open-interest-structure}
3266
+ */
3267
+ async fetchOpenInterests(symbols = undefined, params = {}) {
3268
+ await this.loadMarkets();
3269
+ symbols = this.marketSymbols(symbols);
3270
+ const swapMarkets = await this.fetchSwapMarkets();
3271
+ const result = this.parseOpenInterests(swapMarkets);
3272
+ return this.filterByArray(result, 'symbol', symbols);
3273
+ }
3274
+ /**
3275
+ * @method
3276
+ * @name hyperliquid#fetchOpenInterest
3277
+ * @description retrieves the open interest of a contract trading pair
3278
+ * @param {string} symbol unified CCXT market symbol
3279
+ * @param {object} [params] exchange specific parameters
3280
+ * @returns {object} an [open interest structure]{@link https://docs.ccxt.com/#/?id=open-interest-structure}
3281
+ */
3282
+ async fetchOpenInterest(symbol, params = {}) {
3283
+ symbol = this.symbol(symbol);
3284
+ await this.loadMarkets();
3285
+ const ois = await this.fetchOpenInterests([symbol], params);
3286
+ return ois[symbol];
3287
+ }
3288
+ parseOpenInterest(interest, market = undefined) {
3289
+ //
3290
+ // {
3291
+ // szDecimals: '2',
3292
+ // name: 'HYPE',
3293
+ // maxLeverage: '3',
3294
+ // funding: '0.00014735',
3295
+ // openInterest: '14677900.74',
3296
+ // prevDayPx: '26.145',
3297
+ // dayNtlVlm: '299643445.12560016',
3298
+ // premium: '0.00081613',
3299
+ // oraclePx: '27.569',
3300
+ // markPx: '27.63',
3301
+ // midPx: '27.599',
3302
+ // impactPxs: [ '27.5915', '27.6319' ],
3303
+ // dayBaseVlm: '10790652.83',
3304
+ // baseId: 159
3305
+ // }
3306
+ //
3307
+ interest = this.safeDict(interest, 'info', {});
3308
+ const coin = this.safeString(interest, 'name');
3309
+ let marketId = undefined;
3310
+ if (coin !== undefined) {
3311
+ marketId = this.coinToMarketId(coin);
3312
+ }
3313
+ return this.safeOpenInterest({
3314
+ 'symbol': this.safeSymbol(marketId),
3315
+ 'openInterestAmount': this.safeNumber(interest, 'openInterest'),
3316
+ 'openInterestValue': undefined,
3317
+ 'timestamp': undefined,
3318
+ 'datetime': undefined,
3319
+ 'info': interest,
3320
+ }, market);
3321
+ }
3258
3322
  extractTypeFromDelta(data = []) {
3259
3323
  const records = [];
3260
3324
  for (let i = 0; i < data.length; i++) {