ccxt 4.2.73 → 4.2.75

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 (309) hide show
  1. package/CHANGELOG.md +206 -10
  2. package/README.md +10 -9
  3. package/build.sh +1 -1
  4. package/dist/ccxt.browser.js +1042 -297
  5. package/dist/ccxt.browser.min.js +3 -3
  6. package/dist/cjs/ccxt.js +4 -1
  7. package/dist/cjs/src/abstract/tradeogre.js +9 -0
  8. package/dist/cjs/src/ascendex.js +3 -2
  9. package/dist/cjs/src/base/Exchange.js +1 -1
  10. package/dist/cjs/src/bitget.js +62 -50
  11. package/dist/cjs/src/bitmart.js +1 -0
  12. package/dist/cjs/src/bybit.js +90 -30
  13. package/dist/cjs/src/coinbaseinternational.js +1 -1
  14. package/dist/cjs/src/coinex.js +4 -3
  15. package/dist/cjs/src/gate.js +1 -0
  16. package/dist/cjs/src/htx.js +16 -9
  17. package/dist/cjs/src/hyperliquid.js +2 -1
  18. package/dist/cjs/src/kraken.js +3 -3
  19. package/dist/cjs/src/kucoin.js +1 -1
  20. package/dist/cjs/src/pro/krakenfutures.js +8 -7
  21. package/dist/cjs/src/tradeogre.js +632 -0
  22. package/examples/README.md +308 -0
  23. package/examples/ccxt.pro/html/watchTicker.html +51 -0
  24. package/examples/ccxt.pro/js/binance-fetch-balance-snapshot-watch-balance-updates.js +55 -0
  25. package/examples/ccxt.pro/js/binance-https-proxy.js +48 -0
  26. package/examples/ccxt.pro/js/binance-watch-ohlcv-many-symbols-continuously.js +38 -0
  27. package/examples/ccxt.pro/js/binance-watch-ohlcv-many-symbols.js +64 -0
  28. package/examples/ccxt.pro/js/binance-watch-ticker-many-symbols.js +62 -0
  29. package/examples/ccxt.pro/js/build-ohlcv-many-symbols.js +68 -0
  30. package/examples/ccxt.pro/js/calculate-ohlcvs-from-trades-warmup.js +82 -0
  31. package/examples/ccxt.pro/js/calculate-ohlcvs-from-trades.js +59 -0
  32. package/examples/ccxt.pro/js/exchange-capabitities.js +72 -0
  33. package/examples/ccxt.pro/js/exchange-close.js +46 -0
  34. package/examples/ccxt.pro/js/gateio-swap-watch-many-orderbooks.js +30 -0
  35. package/examples/ccxt.pro/js/gateio-watch-balance.js +23 -0
  36. package/examples/ccxt.pro/js/gateio-watch-order-book.js +71 -0
  37. package/examples/ccxt.pro/js/graceful-shutdown.js +43 -0
  38. package/examples/ccxt.pro/js/many-exchanges-many-streams.js +37 -0
  39. package/examples/ccxt.pro/js/okex-create-futures-order.js +48 -0
  40. package/examples/ccxt.pro/js/okex-watch-balance-and-create-order.js +54 -0
  41. package/examples/ccxt.pro/js/okx-watch-tickers.js +31 -0
  42. package/examples/ccxt.pro/js/one-exchange-many-different-streams.js +46 -0
  43. package/examples/ccxt.pro/js/one-exchange-many-streams-2.js +26 -0
  44. package/examples/ccxt.pro/js/one-exchange-many-streams.js +28 -0
  45. package/examples/ccxt.pro/js/socks-binance-watch-orderbook.js +30 -0
  46. package/examples/ccxt.pro/js/watch-fetch-many-exchanges-many-ordersbooks.js +40 -0
  47. package/examples/ccxt.pro/js/watch-many-exchanges-many-ordersbooks.js +38 -0
  48. package/examples/ccxt.pro/js/watch-many-exchanges-many-symbols.js +40 -0
  49. package/examples/ccxt.pro/js/watch-many-orderbooks.js +27 -0
  50. package/examples/ccxt.pro/js/watch-new-trades-only.js +43 -0
  51. package/examples/ccxt.pro/js/watch-new-trades.js +42 -0
  52. package/examples/ccxt.pro/js/watch-trades-many-symbols.js +29 -0
  53. package/examples/ccxt.pro/js/watch-vs-fetch.js +29 -0
  54. package/examples/cs/Examples.sln +22 -0
  55. package/examples/cs/c#.csproj +19 -0
  56. package/examples/html/basic-cors-proxy.html +46 -0
  57. package/examples/html/basic-inheritance.html +47 -0
  58. package/examples/html/basic-poller.html +52 -0
  59. package/examples/html/basic-rate-limiting.html +49 -0
  60. package/examples/html/basic.html +43 -0
  61. package/examples/html/binance-cors-proxy.html +28 -0
  62. package/examples/html/bitmex-browser-cors-proxy.js +7 -0
  63. package/examples/html/bitmex-cors.html +46 -0
  64. package/examples/html/tradingview-charts.html +61 -0
  65. package/examples/html/webworker/index.html +97 -0
  66. package/examples/html/webworker/worker.js +43 -0
  67. package/examples/js/README.md +15 -0
  68. package/examples/js/advanced-error-handling.js +39 -0
  69. package/examples/js/aggregate-orderbook.js +54 -0
  70. package/examples/js/arbitrage-pairs.js +130 -0
  71. package/examples/js/basic-chart.js +29 -0
  72. package/examples/js/basic-orderbook-polling.js +13 -0
  73. package/examples/js/bcc-vs-bch.js +115 -0
  74. package/examples/js/binance-fetch-all-deposits.js +45 -0
  75. package/examples/js/binance-fetch-ohlcv-many-symbols-async-await.js +34 -0
  76. package/examples/js/binance-fetch-ohlcv-many-symbols-promise-then-callbacks.js +33 -0
  77. package/examples/js/binance-fetchTicker-delivery-vs-future.js +31 -0
  78. package/examples/js/binance-futures-transfer-from-sub-account-to-master.js +41 -0
  79. package/examples/js/binance-margin-stop-order.js +39 -0
  80. package/examples/js/binance-server-time.js +34 -0
  81. package/examples/js/binance-universal-transfer.js +16 -0
  82. package/examples/js/bitfinex-fetch-trades.js +35 -0
  83. package/examples/js/bitfinex2-fetch-trades.js +35 -0
  84. package/examples/js/bitmex-browser-cors-proxy.js +7 -0
  85. package/examples/js/bitpanda-fetchMyTrades-reduce.js +36 -0
  86. package/examples/js/bitrue-fetch-balance.js +28 -0
  87. package/examples/js/bitstamp-private-api.js +115 -0
  88. package/examples/js/bitstamp-public-api.js +39 -0
  89. package/examples/js/bittrex-balance.js +50 -0
  90. package/examples/js/bittrex-fetch-closed-orders-history.js +69 -0
  91. package/examples/js/blockchaincom-withdrawal.js +59 -0
  92. package/examples/js/build-ohlcv-bars.js +48 -0
  93. package/examples/js/builtin-rate-limiting-rest-poller.js +25 -0
  94. package/examples/js/bybit-trailing.js +62 -0
  95. package/examples/js/bybit-updated.cjs +154 -0
  96. package/examples/js/cli.js +405 -0
  97. package/examples/js/coinbase-fetch-all-balances.js +36 -0
  98. package/examples/js/coinex-fetch-all-deposit-addresses-using-fetchDepositAddress.js +47 -0
  99. package/examples/js/coinex-futures.js +75 -0
  100. package/examples/js/coinone-fetch-tickers.js +54 -0
  101. package/examples/js/coinone-markets.js +16 -0
  102. package/examples/js/compare-two-exchanges-capabilities.js +36 -0
  103. package/examples/js/cors-proxy.js +5 -0
  104. package/examples/js/create-order-handle-errors.js +55 -0
  105. package/examples/js/create-order-position-with-takeprofit-stoploss.js +71 -0
  106. package/examples/js/create-order-with-retry.js +65 -0
  107. package/examples/js/create-order-ws-example.js +25 -0
  108. package/examples/js/create-orders-example.js +17 -0
  109. package/examples/js/create-trailing-amount-order.js +36 -0
  110. package/examples/js/create-trailing-percent-order.js +36 -0
  111. package/examples/js/credentials.json +5 -0
  112. package/examples/js/custom-proxy-agent-for-js.js +10 -0
  113. package/examples/js/custom-proxy-url.js +23 -0
  114. package/examples/js/delta-maintenance-margin-rate-max-leverage.js +60 -0
  115. package/examples/js/env-variables.js +26 -0
  116. package/examples/js/error-handling.js +89 -0
  117. package/examples/js/exchange-capabilities.js +135 -0
  118. package/examples/js/exchanges-by-volume.js +60 -0
  119. package/examples/js/exchanges.js +40 -0
  120. package/examples/js/fetch-all-balances.js +219 -0
  121. package/examples/js/fetch-all-tickers-to-files-2.js +53 -0
  122. package/examples/js/fetch-all-tickers-to-files.js +77 -0
  123. package/examples/js/fetch-balance.js +28 -0
  124. package/examples/js/fetch-create-deposit-address.js +101 -0
  125. package/examples/js/fetch-from-many-exchanges-simultaneously.js +21 -0
  126. package/examples/js/fetch-funding-rate-history.js +25 -0
  127. package/examples/js/fetch-futures/prettier.config.js +5 -0
  128. package/examples/js/fetch-futures/src/index.js +25 -0
  129. package/examples/js/fetch-ohlcv-from-to-mark-index-premium.js +72 -0
  130. package/examples/js/fetch-ohlcv-many-exchanges-continuosly.js +39 -0
  131. package/examples/js/fetch-ohlcv.js +16 -0
  132. package/examples/js/fetch-okex-futures.js +22 -0
  133. package/examples/js/fetch-orders.js +27 -0
  134. package/examples/js/fetch-ticker-from-multiple-exchanges.js +35 -0
  135. package/examples/js/fetch-ticker-where-available.js +75 -0
  136. package/examples/js/fetch-tickers/build/index.js +19 -0
  137. package/examples/js/fetch-tickers/prettier.config.js +5 -0
  138. package/examples/js/fetch-tickers/src/index.js +17 -0
  139. package/examples/js/gateio-create-batch-order.js +43 -0
  140. package/examples/js/gateio-futures.js +49 -0
  141. package/examples/js/gateio-open-close-contract.js +49 -0
  142. package/examples/js/gateio-swaps.js +74 -0
  143. package/examples/js/gdax-fetch-trades-pagination.js +29 -0
  144. package/examples/js/hitbtc2-withdraw.js +61 -0
  145. package/examples/js/how-to-import-one-exchange-esm.js +10 -0
  146. package/examples/js/huobi-futures.js +71 -0
  147. package/examples/js/huobi-open-close-contract.js +63 -0
  148. package/examples/js/huobi-swaps.js +70 -0
  149. package/examples/js/huobipro-market-buy-sell-fetch-trading-limits.js +98 -0
  150. package/examples/js/hybridCJSExample.cjs +19 -0
  151. package/examples/js/hybridESMExample.js +19 -0
  152. package/examples/js/idex-fetch-balance.js +13 -0
  153. package/examples/js/instantiate-all-at-once.js +46 -0
  154. package/examples/js/instantiate-all-from-json.js +31 -0
  155. package/examples/js/kraken-create-and-close-position.js +54 -0
  156. package/examples/js/kraken-fetch-order-trades.js +33 -0
  157. package/examples/js/kraken-margin-trading.js +89 -0
  158. package/examples/js/kucoin-rate-limit.js +38 -0
  159. package/examples/js/latoken-example.js +108 -0
  160. package/examples/js/live-orderbook.js +106 -0
  161. package/examples/js/live-ticker.js +80 -0
  162. package/examples/js/live-tickers.js +74 -0
  163. package/examples/js/load-all-contracts.js +41 -0
  164. package/examples/js/load-all-symbols-at-once.js +69 -0
  165. package/examples/js/load-all-tickers-at-once.js +91 -0
  166. package/examples/js/load-markets-to-files.js +57 -0
  167. package/examples/js/looping-over-all-symbols-of-specific-exchanges.js +61 -0
  168. package/examples/js/looping-over-specific-symbols-of-all-exchanges.js +91 -0
  169. package/examples/js/margin-loan-borrow-buy-sell-repay.js +70 -0
  170. package/examples/js/market-status-and-currency-status.js +29 -0
  171. package/examples/js/ohlcv-console-chart.js +29 -0
  172. package/examples/js/okex-fetch-closed-orders-archive.js +31 -0
  173. package/examples/js/okex-transfer.js +51 -0
  174. package/examples/js/okx-poll-fetch-my-trades.js +37 -0
  175. package/examples/js/okx-poll-rate-limit.js +48 -0
  176. package/examples/js/order-book-extra-level-depth-param.js +20 -0
  177. package/examples/js/phemex-create-order-position-with-takeprofit-stoploss.js +49 -0
  178. package/examples/js/poll-ohlcv.js +43 -0
  179. package/examples/js/poloniex-fetch-order-books.js +35 -0
  180. package/examples/js/poloniex-limits-amount-min.js +62 -0
  181. package/examples/js/proxy-round-robin.js +98 -0
  182. package/examples/js/proxy-usage.js +32 -0
  183. package/examples/js/sample-local-proxy-server-with-cors.js +12 -0
  184. package/examples/js/search-all-exchanges.js +159 -0
  185. package/examples/js/shared-load-markets.js +80 -0
  186. package/examples/js/sort-swap-markets-by-hourly-price-change.js +55 -0
  187. package/examples/js/symbols.js +110 -0
  188. package/examples/js/theocean.js +41 -0
  189. package/examples/js/tickers.js +106 -0
  190. package/examples/js/validate-paginated-data.js +61 -0
  191. package/examples/js/watch-OHLCV-For-Symbols.js +15 -0
  192. package/examples/js/watch-OHLCV.js +12 -0
  193. package/examples/js/watch-OrderBook-For-Symbols.js +11 -0
  194. package/examples/js/watch-Trades-For-Symbols.js +11 -0
  195. package/examples/js/watch-tickers.js +11 -0
  196. package/examples/js/watchOHLCVForSymbols.js +15 -0
  197. package/examples/js/watchOrderBookForSymbols.js +11 -0
  198. package/examples/js/watchPositions-many-exchanges-continuosly.d.ts +2 -0
  199. package/examples/js/watchPositions-many-exchanges-continuosly.d.ts.map +1 -0
  200. package/examples/js/watchPositions-many-exchanges-continuosly.js +49 -0
  201. package/examples/js/watchPositions.d.ts +2 -0
  202. package/examples/js/watchPositions.d.ts.map +1 -0
  203. package/examples/js/watchPositions.js +13 -0
  204. package/examples/js/watchPositionsForSymbols.d.ts +2 -0
  205. package/examples/js/watchPositionsForSymbols.d.ts.map +1 -0
  206. package/examples/js/watchPositionsForSymbols.js +14 -0
  207. package/examples/js/watchTradesForSymbols.js +11 -0
  208. package/examples/js/withdraw-from-one-exchange-to-another.js +50 -0
  209. package/examples/php/README.md +7 -0
  210. package/examples/py/README.md +15 -0
  211. package/examples/py/playing_with_ccxt_example.ipynb +222 -0
  212. package/examples/ts/.eslintrc +111 -0
  213. package/examples/ts/build-ohlcv-bars.ts +53 -0
  214. package/examples/ts/cli.ts +397 -0
  215. package/examples/ts/compare-two-exchanges-capabilities.ts +36 -0
  216. package/examples/ts/create-order-position-with-takeprofit-stoploss.ts +89 -0
  217. package/examples/ts/create-order-ws-example.ts +33 -0
  218. package/examples/ts/create-orders-example.ts +21 -0
  219. package/examples/ts/create-trailing-amount-order.ts +37 -0
  220. package/examples/ts/create-trailing-percent-order.ts +37 -0
  221. package/examples/ts/custom-proxy-agent-for-js.ts +14 -0
  222. package/examples/ts/fetch-futures/package-lock.json +116 -0
  223. package/examples/ts/fetch-futures/package.json +34 -0
  224. package/examples/ts/fetch-futures/prettier.config.js +4 -0
  225. package/examples/ts/fetch-futures/src/index.ts +28 -0
  226. package/examples/ts/fetch-futures/tsconfig.json +28 -0
  227. package/examples/ts/fetch-ohlcv-many-exchanges-continuosly.ts +44 -0
  228. package/examples/ts/fetch-ohlcv.ts +17 -0
  229. package/examples/ts/fetch-tickers/package-lock.json +116 -0
  230. package/examples/ts/fetch-tickers/package.json +34 -0
  231. package/examples/ts/fetch-tickers/prettier.config.js +4 -0
  232. package/examples/ts/fetch-tickers/src/index.ts +21 -0
  233. package/examples/ts/fetch-tickers/tsconfig.json +28 -0
  234. package/examples/ts/how-to-import-one-exchange-esm.ts +11 -0
  235. package/examples/ts/kraken-create-and-close-position.ts +69 -0
  236. package/examples/ts/margin-loan-borrow-buy-sell-repay.ts +72 -0
  237. package/examples/ts/nextjs-page-router/.eslintrc.json +3 -0
  238. package/examples/ts/nextjs-page-router/README.md +43 -0
  239. package/examples/ts/nextjs-page-router/next.config.js +6 -0
  240. package/examples/ts/nextjs-page-router/package-lock.json +7425 -0
  241. package/examples/ts/nextjs-page-router/package.json +28 -0
  242. package/examples/ts/nextjs-page-router/postcss.config.js +6 -0
  243. package/examples/ts/nextjs-page-router/public/favicon.ico +0 -0
  244. package/examples/ts/nextjs-page-router/src/pages/_app.tsx +6 -0
  245. package/examples/ts/nextjs-page-router/src/pages/_document.tsx +13 -0
  246. package/examples/ts/nextjs-page-router/src/pages/balance.tsx +46 -0
  247. package/examples/ts/nextjs-page-router/src/pages/index.tsx +8 -0
  248. package/examples/ts/nextjs-page-router/src/pages/tickers.tsx +61 -0
  249. package/examples/ts/nextjs-page-router/src/styles/globals.css +27 -0
  250. package/examples/ts/nextjs-page-router/tailwind.config.ts +20 -0
  251. package/examples/ts/nextjs-page-router/tsconfig.json +22 -0
  252. package/examples/ts/phemex-create-order-position-with-takeprofit-stoploss.ts +62 -0
  253. package/examples/ts/proxy-usage.ts +41 -0
  254. package/examples/ts/sample-local-proxy-server-with-cors.ts +15 -0
  255. package/examples/ts/watch-OHLCV-For-Symbols.ts +17 -0
  256. package/examples/ts/watch-OHLCV.ts +14 -0
  257. package/examples/ts/watch-OrderBook-For-Symbols.ts +13 -0
  258. package/examples/ts/watch-Trades-For-Symbols.ts +13 -0
  259. package/examples/ts/watch-tickers.ts +13 -0
  260. package/examples/ts/watchPositions-many-exchanges-continuosly.ts +53 -0
  261. package/examples/ts/watchPositions.ts +15 -0
  262. package/examples/ts/watchPositionsForSymbols.ts +16 -0
  263. package/examples/tsconfig.json +27 -0
  264. package/js/ccxt.d.ts +5 -2
  265. package/js/ccxt.js +4 -2
  266. package/js/src/abstract/tradeogre.d.ts +19 -0
  267. package/js/src/abstract/tradeogre.js +11 -0
  268. package/js/src/ascendex.d.ts +2 -7
  269. package/js/src/ascendex.js +3 -2
  270. package/js/src/base/Exchange.d.ts +7 -7
  271. package/js/src/base/Exchange.js +1 -1
  272. package/js/src/base/types.d.ts +7 -1
  273. package/js/src/binance.d.ts +1 -1
  274. package/js/src/bitget.js +62 -50
  275. package/js/src/bitmart.d.ts +1 -1
  276. package/js/src/bitmart.js +2 -1
  277. package/js/src/bybit.d.ts +3 -1
  278. package/js/src/bybit.js +90 -30
  279. package/js/src/coinbase.d.ts +4 -4
  280. package/js/src/coinbaseinternational.d.ts +1 -1
  281. package/js/src/coinbaseinternational.js +1 -1
  282. package/js/src/coinbasepro.d.ts +2 -2
  283. package/js/src/coinex.js +4 -3
  284. package/js/src/coinlist.d.ts +2 -2
  285. package/js/src/cryptocom.d.ts +2 -2
  286. package/js/src/currencycom.d.ts +2 -2
  287. package/js/src/deribit.d.ts +2 -2
  288. package/js/src/gate.d.ts +1 -1
  289. package/js/src/gate.js +1 -0
  290. package/js/src/htx.d.ts +2 -2
  291. package/js/src/htx.js +16 -9
  292. package/js/src/huobijp.d.ts +2 -2
  293. package/js/src/hyperliquid.js +2 -1
  294. package/js/src/kraken.d.ts +1 -1
  295. package/js/src/kraken.js +3 -3
  296. package/js/src/kucoin.d.ts +3 -3
  297. package/js/src/kucoin.js +1 -1
  298. package/js/src/luno.d.ts +2 -2
  299. package/js/src/mexc.d.ts +3 -3
  300. package/js/src/ndax.d.ts +2 -2
  301. package/js/src/novadax.d.ts +2 -2
  302. package/js/src/okx.d.ts +2 -2
  303. package/js/src/pro/bitfinex2.d.ts +1 -1
  304. package/js/src/pro/krakenfutures.js +8 -7
  305. package/js/src/tradeogre.d.ts +32 -0
  306. package/js/src/tradeogre.js +633 -0
  307. package/js/src/woo.d.ts +2 -2
  308. package/package.json +4 -1
  309. package/skip-tests.json +219 -424
@@ -1328,6 +1328,22 @@ class Exchange extends _base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchang
1328
1328
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Exchange);
1329
1329
 
1330
1330
 
1331
+ /***/ }),
1332
+
1333
+ /***/ 567:
1334
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1335
+
1336
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1337
+ /* harmony export */ Z: () => (__WEBPACK_DEFAULT_EXPORT__)
1338
+ /* harmony export */ });
1339
+ /* harmony import */ var _base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3043);
1340
+ // -------------------------------------------------------------------------------
1341
+
1342
+ class Exchange extends _base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e {
1343
+ }
1344
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Exchange);
1345
+
1346
+
1331
1347
  /***/ }),
1332
1348
 
1333
1349
  /***/ 2120:
@@ -4422,7 +4438,7 @@ class ascendex extends _abstract_ascendex_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
4422
4438
  {
4423
4439
  'id': accountGroup,
4424
4440
  'type': undefined,
4425
- 'currency': undefined,
4441
+ 'code': undefined,
4426
4442
  'info': response,
4427
4443
  },
4428
4444
  ];
@@ -6402,7 +6418,8 @@ class ascendex extends _abstract_ascendex_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
6402
6418
  if (_base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise */ .O.stringEq(notional, '0')) {
6403
6419
  notional = this.safeString(position, 'sellOpenOrderNotional');
6404
6420
  }
6405
- const marginMode = this.safeString(position, 'marginType');
6421
+ const marginType = this.safeString(position, 'marginType');
6422
+ const marginMode = (marginType === 'crossed') ? 'cross' : 'isolated';
6406
6423
  let collateral = undefined;
6407
6424
  if (marginMode === 'isolated') {
6408
6425
  collateral = this.safeString(position, 'isolatedMargin');
@@ -7279,7 +7296,7 @@ class Exchange {
7279
7296
  this.last_request_body = undefined;
7280
7297
  this.last_request_url = undefined;
7281
7298
  this.last_request_path = undefined;
7282
- this.id = undefined;
7299
+ this.id = 'Exchange';
7283
7300
  this.markets = undefined;
7284
7301
  this.status = undefined;
7285
7302
  this.rateLimit = undefined; // milliseconds
@@ -46436,10 +46453,10 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
46436
46453
  },
46437
46454
  'fetchOHLCV': {
46438
46455
  'spot': {
46439
- 'method': 'publicSpotGetV2SpotMarketCandles', // or publicSpotGetV2SpotMarketHistoryCandles
46456
+ 'method': 'publicSpotGetV2SpotMarketCandles', // publicSpotGetV2SpotMarketCandles or publicSpotGetV2SpotMarketHistoryCandles
46440
46457
  },
46441
46458
  'swap': {
46442
- 'method': 'publicMixGetV2MixMarketCandles', // or publicMixGetV2MixMarketHistoryCandles or publicMixGetV2MixMarketHistoryIndexCandles or publicMixGetV2MixMarketHistoryMarkCandles
46459
+ 'method': 'publicMixGetV2MixMarketCandles', // publicMixGetV2MixMarketCandles or publicMixGetV2MixMarketHistoryCandles or publicMixGetV2MixMarketHistoryIndexCandles or publicMixGetV2MixMarketHistoryMarkCandles
46443
46460
  },
46444
46461
  'maxDaysPerTimeframe': {
46445
46462
  '1m': 30,
@@ -48409,11 +48426,13 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
48409
48426
  * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
48410
48427
  */
48411
48428
  await this.loadMarkets();
48412
- const maxLimit = 1000; // max 1000
48429
+ const defaultLimit = 100; // default 100, max 1000
48430
+ const maxLimitForRecentEndpoint = 1000;
48431
+ const maxLimitForHistoryEndpoint = 200; // note, max 1000 bars are supported for "recent-candles" endpoint, but "historical-candles" support only max 200
48413
48432
  let paginate = false;
48414
48433
  [paginate, params] = this.handleOptionAndParams(params, 'fetchOHLCV', 'paginate');
48415
48434
  if (paginate) {
48416
- return await this.fetchPaginatedCallDeterministic('fetchOHLCV', symbol, since, limit, timeframe, params, maxLimit);
48435
+ return await this.fetchPaginatedCallDeterministic('fetchOHLCV', symbol, since, limit, timeframe, params, maxLimitForHistoryEndpoint);
48417
48436
  }
48418
48437
  const sandboxMode = this.safeBool(this.options, 'sandboxMode', false);
48419
48438
  let market = undefined;
@@ -48426,32 +48445,17 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
48426
48445
  }
48427
48446
  const marketType = market['spot'] ? 'spot' : 'swap';
48428
48447
  const timeframes = this.options['timeframes'][marketType];
48429
- const selectedTimeframe = this.safeString(timeframes, timeframe, timeframe);
48448
+ const msInDay = 86400000;
48430
48449
  const duration = this.parseTimeframe(timeframe) * 1000;
48431
48450
  const request = {
48432
48451
  'symbol': market['id'],
48433
- 'granularity': selectedTimeframe,
48452
+ 'granularity': this.safeString(timeframes, timeframe, timeframe),
48434
48453
  };
48435
- const defaultLimit = 100; // by default, exchange returns 100 items
48436
- const msInDay = 1000 * 60 * 60 * 24;
48437
- if (limit !== undefined) {
48438
- limit = Math.min(limit, maxLimit);
48439
- request['limit'] = limit;
48440
- }
48441
48454
  const until = this.safeInteger2(params, 'until', 'till');
48455
+ const limitDefined = limit !== undefined;
48456
+ const sinceDefined = since !== undefined;
48457
+ const untilDefined = until !== undefined;
48442
48458
  params = this.omit(params, ['until', 'till']);
48443
- if (until !== undefined) {
48444
- request['endTime'] = until;
48445
- }
48446
- if (since !== undefined) {
48447
- request['startTime'] = since;
48448
- if (market['spot'] && (until === undefined)) {
48449
- // for spot we need to send "entTime" too
48450
- const limitForEnd = (limit !== undefined) ? limit : defaultLimit;
48451
- const calculatedEnd = this.sum(since, duration * limitForEnd);
48452
- request['endTime'] = calculatedEnd;
48453
- }
48454
- }
48455
48459
  let response = undefined;
48456
48460
  const now = this.milliseconds();
48457
48461
  // retrievable periods listed here:
@@ -48459,21 +48463,47 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
48459
48463
  // - https://www.bitget.com/api-doc/contract/market/Get-Candle-Data#description
48460
48464
  const ohlcOptions = this.safeDict(this.options, 'fetchOHLCV', {});
48461
48465
  const retrievableDaysMap = this.safeDict(ohlcOptions, 'maxDaysPerTimeframe', {});
48462
- const maxRetrievableDaysForNonHistory = this.safeInteger(retrievableDaysMap, timeframe, 30); // default to safe minimum
48463
- const endpointTsBoundary = now - maxRetrievableDaysForNonHistory * msInDay;
48464
- // checks if we need history endpoint
48465
- let needsHistoryEndpoint = false;
48466
- const displaceByLimit = (limit === undefined) ? 0 : limit * duration;
48467
- if (since !== undefined && since < endpointTsBoundary) {
48468
- // if since it earlier than the allowed diapason
48469
- needsHistoryEndpoint = true;
48470
- }
48471
- else if (until !== undefined && until - displaceByLimit < endpointTsBoundary) {
48472
- // if until is earlier than the allowed diapason
48473
- needsHistoryEndpoint = true;
48466
+ const maxRetrievableDaysForRecent = this.safeInteger(retrievableDaysMap, timeframe, 30); // default to safe minimum
48467
+ const endpointTsBoundary = now - maxRetrievableDaysForRecent * msInDay;
48468
+ if (limitDefined) {
48469
+ limit = Math.min(limit, maxLimitForRecentEndpoint);
48470
+ request['limit'] = limit;
48474
48471
  }
48472
+ else {
48473
+ limit = defaultLimit;
48474
+ }
48475
+ const limitMultipliedDuration = limit * duration;
48476
+ // exchange aligns from endTime, so it's important, not startTime
48477
+ // startTime is supported only on "recent" endpoint, not on "historical" endpoint
48478
+ let calculatedStartTime = undefined;
48479
+ let calculatedEndTime = undefined;
48480
+ if (sinceDefined) {
48481
+ calculatedStartTime = since;
48482
+ request['startTime'] = since;
48483
+ if (!untilDefined) {
48484
+ calculatedEndTime = this.sum(calculatedStartTime, limitMultipliedDuration);
48485
+ request['endTime'] = calculatedEndTime;
48486
+ }
48487
+ }
48488
+ if (untilDefined) {
48489
+ calculatedEndTime = until;
48490
+ request['endTime'] = calculatedEndTime;
48491
+ if (!sinceDefined) {
48492
+ calculatedStartTime = calculatedEndTime - limitMultipliedDuration;
48493
+ // we do not need to set "startTime" here
48494
+ }
48495
+ }
48496
+ const historicalEndpointNeeded = (calculatedStartTime !== undefined) && (calculatedStartTime <= endpointTsBoundary);
48497
+ if (historicalEndpointNeeded) {
48498
+ // only for "historical-candles" - ensure we use correct max limit
48499
+ if (limitDefined) {
48500
+ request['limit'] = Math.min(limit, maxLimitForHistoryEndpoint);
48501
+ }
48502
+ }
48503
+ // make request
48475
48504
  if (market['spot']) {
48476
- if (needsHistoryEndpoint) {
48505
+ // checks if we need history endpoint
48506
+ if (historicalEndpointNeeded) {
48477
48507
  response = await this.publicSpotGetV2SpotMarketHistoryCandles(this.extend(request, params));
48478
48508
  }
48479
48509
  else {
@@ -48481,19 +48511,18 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
48481
48511
  }
48482
48512
  }
48483
48513
  else {
48484
- const maxDistanceDaysForContracts = 90; // maximum 90 days allowed between start-end times
48485
- let distanceError = false;
48486
- if (limit !== undefined && limit * duration > maxDistanceDaysForContracts * msInDay) {
48487
- distanceError = true;
48488
- }
48489
- else if (since !== undefined && until !== undefined && until - since > maxDistanceDaysForContracts * msInDay) {
48490
- distanceError = true;
48491
- }
48492
- if (distanceError) {
48493
- throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.BadRequest(this.id + ' fetchOHLCV() between start and end must be less than ' + maxDistanceDaysForContracts.toString() + ' days');
48514
+ const maxDistanceDaysForContracts = 90; // for contract, maximum 90 days allowed between start-end times
48515
+ // only correct the request to fix 90 days if until was auto-calculated
48516
+ if (sinceDefined) {
48517
+ if (!untilDefined) {
48518
+ request['endTime'] = Math.min(calculatedEndTime, this.sum(since, maxDistanceDaysForContracts * msInDay));
48519
+ }
48520
+ else if (calculatedEndTime - calculatedStartTime > maxDistanceDaysForContracts * msInDay) {
48521
+ throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.BadRequest(this.id + ' fetchOHLCV() between start and end must be less than ' + maxDistanceDaysForContracts.toString() + ' days');
48522
+ }
48494
48523
  }
48495
- const priceType = this.safeString(params, 'price');
48496
- params = this.omit(params, ['price']);
48524
+ let priceType = undefined;
48525
+ [priceType, params] = this.handleParamString(params, 'price');
48497
48526
  let productType = undefined;
48498
48527
  [productType, params] = this.handleProductTypeAndParams(market, params);
48499
48528
  request['productType'] = productType;
@@ -48506,7 +48535,7 @@ class bitget extends _abstract_bitget_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
48506
48535
  response = await this.publicMixGetV2MixMarketHistoryIndexCandles(extended);
48507
48536
  }
48508
48537
  else {
48509
- if (needsHistoryEndpoint) {
48538
+ if (historicalEndpointNeeded) {
48510
48539
  response = await this.publicMixGetV2MixMarketHistoryCandles(extended);
48511
48540
  }
48512
48541
  else {
@@ -55065,6 +55094,7 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
55065
55094
  '70000': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
55066
55095
  '70001': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
55067
55096
  '70002': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
55097
+ '70003': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NetworkError,
55068
55098
  '71001': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
55069
55099
  '71002': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
55070
55100
  '71003': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
@@ -83448,6 +83478,7 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
83448
83478
  'fetchIsolatedBorrowRates': false,
83449
83479
  'fetchLedger': true,
83450
83480
  'fetchLeverage': true,
83481
+ 'fetchLeverageTiers': true,
83451
83482
  'fetchMarketLeverageTiers': true,
83452
83483
  'fetchMarkets': true,
83453
83484
  'fetchMarkOHLCV': true,
@@ -90638,36 +90669,6 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
90638
90669
  request['symbol'] = market['id'];
90639
90670
  return await this.fetchDerivativesMarketLeverageTiers(symbol, params);
90640
90671
  }
90641
- parseMarketLeverageTiers(info, market = undefined) {
90642
- //
90643
- // {
90644
- // "id": 1,
90645
- // "symbol": "BTCUSD",
90646
- // "riskLimitValue": "150",
90647
- // "maintenanceMargin": "0.5",
90648
- // "initialMargin": "1",
90649
- // "isLowestRisk": 1,
90650
- // "maxLeverage": "100.00"
90651
- // }
90652
- //
90653
- let minNotional = 0;
90654
- const tiers = [];
90655
- for (let i = 0; i < info.length; i++) {
90656
- const item = info[i];
90657
- const maxNotional = this.safeNumber(item, 'riskLimitValue');
90658
- tiers.push({
90659
- 'tier': this.sum(i, 1),
90660
- 'currency': market['base'],
90661
- 'minNotional': minNotional,
90662
- 'maxNotional': maxNotional,
90663
- 'maintenanceMarginRate': this.safeNumber(item, 'maintenanceMargin'),
90664
- 'maxLeverage': this.safeNumber(item, 'maxLeverage'),
90665
- 'info': item,
90666
- });
90667
- minNotional = maxNotional;
90668
- }
90669
- return tiers;
90670
- }
90671
90672
  parseTradingFee(fee, market = undefined) {
90672
90673
  //
90673
90674
  // {
@@ -91372,6 +91373,95 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
91372
91373
  'datetime': this.iso8601(timestamp),
91373
91374
  });
91374
91375
  }
91376
+ async fetchLeverageTiers(symbols = undefined, params = {}) {
91377
+ /**
91378
+ * @method
91379
+ * @name bybit#fetchLeverageTiers
91380
+ * @see https://bybit-exchange.github.io/docs/v5/market/risk-limit
91381
+ * @description retrieve information on the maximum leverage, for different trade sizes
91382
+ * @param {string[]} [symbols] a list of unified market symbols
91383
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
91384
+ * @param {string} [params.subType] market subType, ['linear', 'inverse'], default is 'linear'
91385
+ * @returns {object} a dictionary of [leverage tiers structures]{@link https://docs.ccxt.com/#/?id=leverage-tiers-structure}, indexed by market symbols
91386
+ */
91387
+ await this.loadMarkets();
91388
+ let market = undefined;
91389
+ if (symbols !== undefined) {
91390
+ market = this.market(symbols[0]);
91391
+ if (market['spot']) {
91392
+ throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.NotSupported(this.id + ' fetchLeverageTiers() is not supported for spot market');
91393
+ }
91394
+ }
91395
+ let subType = undefined;
91396
+ [subType, params] = this.handleSubTypeAndParams('fetchTickers', market, params, 'linear');
91397
+ const request = {
91398
+ 'category': subType,
91399
+ };
91400
+ const response = await this.publicGetV5MarketRiskLimit(this.extend(request, params));
91401
+ const result = this.safeDict(response, 'result', {});
91402
+ const data = this.safeList(result, 'list', []);
91403
+ symbols = this.marketSymbols(symbols);
91404
+ return this.parseLeverageTiers(data, symbols, 'symbol');
91405
+ }
91406
+ parseLeverageTiers(response, symbols = undefined, marketIdKey = undefined) {
91407
+ //
91408
+ // [
91409
+ // {
91410
+ // "id": 1,
91411
+ // "symbol": "BTCUSD",
91412
+ // "riskLimitValue": "150",
91413
+ // "maintenanceMargin": "0.5",
91414
+ // "initialMargin": "1",
91415
+ // "isLowestRisk": 1,
91416
+ // "maxLeverage": "100.00"
91417
+ // }
91418
+ // ]
91419
+ //
91420
+ const tiers = {};
91421
+ const marketIds = this.marketIds(symbols);
91422
+ const filteredResults = this.filterByArray(response, marketIdKey, marketIds, false);
91423
+ const grouped = this.groupBy(filteredResults, marketIdKey);
91424
+ const keys = Object.keys(grouped);
91425
+ for (let i = 0; i < keys.length; i++) {
91426
+ const marketId = keys[i];
91427
+ const entry = grouped[marketId];
91428
+ const market = this.safeMarket(marketId, undefined, undefined, 'contract');
91429
+ const symbol = market['symbol'];
91430
+ tiers[symbol] = this.parseMarketLeverageTiers(entry, market);
91431
+ }
91432
+ return tiers;
91433
+ }
91434
+ parseMarketLeverageTiers(info, market = undefined) {
91435
+ //
91436
+ // [
91437
+ // {
91438
+ // "id": 1,
91439
+ // "symbol": "BTCUSD",
91440
+ // "riskLimitValue": "150",
91441
+ // "maintenanceMargin": "0.5",
91442
+ // "initialMargin": "1",
91443
+ // "isLowestRisk": 1,
91444
+ // "maxLeverage": "100.00"
91445
+ // }
91446
+ // ]
91447
+ //
91448
+ const tiers = [];
91449
+ for (let i = 0; i < info.length; i++) {
91450
+ const tier = info[i];
91451
+ const marketId = this.safeString(info, 'symbol');
91452
+ market = this.safeMarket(marketId);
91453
+ tiers.push({
91454
+ 'tier': this.safeInteger(tier, 'id'),
91455
+ 'currency': market['settle'],
91456
+ 'minNotional': undefined,
91457
+ 'maxNotional': undefined,
91458
+ 'maintenanceMarginRate': this.safeNumber(tier, 'maintenanceMargin'),
91459
+ 'maxLeverage': this.safeNumber(tier, 'maxLeverage'),
91460
+ 'info': tier,
91461
+ });
91462
+ }
91463
+ return tiers;
91464
+ }
91375
91465
  sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
91376
91466
  let url = this.implodeHostname(this.urls['api'][api]) + '/' + path;
91377
91467
  if (api === 'public') {
@@ -97231,7 +97321,7 @@ class coinbaseinternational extends _abstract_coinbaseinternational_js__WEBPACK_
97231
97321
  'test': {
97232
97322
  'rest': 'https://api-n5e1.coinbase.com/api',
97233
97323
  },
97234
- 'www': 'https://www.coinbaseinternational.com/international-exchange',
97324
+ 'www': 'https://international.coinbase.com',
97235
97325
  'doc': [
97236
97326
  'https://docs.cloud.coinbaseinternational.com/intx/docs',
97237
97327
  ],
@@ -102022,7 +102112,7 @@ class coinex extends _abstract_coinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
102022
102112
  'perpetualPrivate': 'https://api.coinex.com/perpetual',
102023
102113
  },
102024
102114
  'www': 'https://www.coinex.com',
102025
- 'doc': 'https://github.com/coinexcom/coinex_exchange_api/wiki',
102115
+ 'doc': 'https://viabtc.github.io/coinex_api_en_doc',
102026
102116
  'fees': 'https://www.coinex.com/fees',
102027
102117
  'referral': 'https://www.coinex.com/register?refer_code=yw5fz',
102028
102118
  },
@@ -102236,6 +102326,7 @@ class coinex extends _abstract_coinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
102236
102326
  },
102237
102327
  'broad': {
102238
102328
  'ip not allow visit': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.PermissionDenied,
102329
+ 'service too busy': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeNotAvailable,
102239
102330
  },
102240
102331
  },
102241
102332
  });
@@ -107042,7 +107133,7 @@ class coinex extends _abstract_coinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
107042
107133
  * @method
107043
107134
  * @name coinex#borrowIsolatedMargin
107044
107135
  * @description create a loan to borrow margin
107045
- * @see https://github.com/coinexcom/coinex_exchange_api/wiki/086margin_loan
107136
+ * @see https://viabtc.github.io/coinex_api_en_doc/spot/#docsspot002_account017_margin_loan
107046
107137
  * @param {string} symbol unified market symbol, required for coinex
107047
107138
  * @param {string} code unified currency code of the currency to borrow
107048
107139
  * @param {float} amount the amount to borrow
@@ -107079,7 +107170,7 @@ class coinex extends _abstract_coinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
107079
107170
  * @method
107080
107171
  * @name coinex#repayIsolatedMargin
107081
107172
  * @description repay borrowed margin and interest
107082
- * @see https://github.com/coinexcom/coinex_exchange_api/wiki/087margin_flat
107173
+ * @see https://viabtc.github.io/coinex_api_en_doc/spot/#docsspot002_account018_margin_flat
107083
107174
  * @param {string} symbol unified market symbol, required for coinex
107084
107175
  * @param {string} code unified currency code of the currency to repay
107085
107176
  * @param {float} amount the amount to repay
@@ -139856,6 +139947,7 @@ class gate extends _abstract_gate_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
139856
139947
  'failed': 'canceled',
139857
139948
  'expired': 'canceled',
139858
139949
  'finished': 'closed',
139950
+ 'finish': 'closed',
139859
139951
  'succeeded': 'closed',
139860
139952
  };
139861
139953
  return this.safeString(statuses, status, status);
@@ -151311,6 +151403,9 @@ class htx extends _abstract_htx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
151311
151403
  },
151312
151404
  },
151313
151405
  },
151406
+ 'fetchOHLCV': {
151407
+ 'useHistoricalEndpointForSpot': true,
151408
+ },
151314
151409
  'withdraw': {
151315
151410
  'includeFee': false,
151316
151411
  },
@@ -153318,6 +153413,7 @@ class htx extends _abstract_htx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
153318
153413
  * @param {int} [limit] the maximum amount of candles to fetch
153319
153414
  * @param {object} [params] extra parameters specific to the exchange API endpoint
153320
153415
  * @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)
153416
+ * @param {string} [params.useHistoricalEndpointForSpot] true/false - whether use the historical candles endpoint for spot markets or default klines endpoint
153321
153417
  * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
153322
153418
  */
153323
153419
  await this.loadMarkets();
@@ -153424,19 +153520,22 @@ class htx extends _abstract_htx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
153424
153520
  }
153425
153521
  }
153426
153522
  else {
153427
- if (since !== undefined) {
153428
- request['from'] = this.parseToInt(since / 1000);
153429
- }
153430
- if (limit !== undefined) {
153431
- request['size'] = limit; // max 2000
153432
- }
153433
153523
  request['symbol'] = market['id'];
153434
- if (timeframe === '1M' || timeframe === '1y') {
153435
- // for some reason 1M and 1Y does not work with the regular endpoint
153436
- // https://github.com/ccxt/ccxt/issues/18006
153524
+ let useHistorical = undefined;
153525
+ [useHistorical, params] = this.handleOptionAndParams(params, 'fetchOHLCV', 'useHistoricalEndpointForSpot', true);
153526
+ if (!useHistorical) {
153527
+ // `limit` only available for the this endpoint
153528
+ if (limit !== undefined) {
153529
+ request['size'] = limit; // max 2000
153530
+ }
153437
153531
  response = await this.spotPublicGetMarketHistoryKline(this.extend(request, params));
153438
153532
  }
153439
153533
  else {
153534
+ // `since` only available for the this endpoint
153535
+ if (since !== undefined) {
153536
+ // default 150 bars
153537
+ request['from'] = this.parseToInt(since / 1000);
153538
+ }
153440
153539
  response = await this.spotPublicGetMarketHistoryCandles(this.extend(request, params));
153441
153540
  }
153442
153541
  }
@@ -161876,7 +161975,7 @@ class hyperliquid extends _abstract_hyperliquid_js__WEBPACK_IMPORTED_MODULE_0__/
161876
161975
  'optionType': undefined,
161877
161976
  'precision': {
161878
161977
  'amount': this.parseNumber(this.parsePrecision(this.safeString(market, 'szDecimals'))),
161879
- 'price': this.parseNumber('5'), // significant digits
161978
+ 'price': 5, // significant digits
161880
161979
  },
161881
161980
  'limits': {
161882
161981
  'leverage': {
@@ -162358,6 +162457,7 @@ class hyperliquid extends _abstract_hyperliquid_js__WEBPACK_IMPORTED_MODULE_0__/
162358
162457
  throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.ArgumentsRequired(this.id + ' market orders require price to calculate the max slippage price. Default slippage can be set in options (default is 5%).');
162359
162458
  }
162360
162459
  px = (isBuy) ? _base_Precise_js__WEBPACK_IMPORTED_MODULE_6__/* .Precise */ .O.stringMul(price, _base_Precise_js__WEBPACK_IMPORTED_MODULE_6__/* .Precise */ .O.stringAdd('1', slippage)) : _base_Precise_js__WEBPACK_IMPORTED_MODULE_6__/* .Precise */ .O.stringMul(price, _base_Precise_js__WEBPACK_IMPORTED_MODULE_6__/* .Precise */ .O.stringSub('1', slippage));
162460
+ px = this.priceToPrecision(symbol, px); // round after adding slippage
162361
162461
  }
162362
162462
  else {
162363
162463
  px = this.priceToPrecision(symbol, price);
@@ -170322,7 +170422,7 @@ class kraken extends _abstract_kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
170322
170422
  // todo unify parsePosition/parsePositions
170323
170423
  return result;
170324
170424
  }
170325
- parseAccount(account) {
170425
+ parseAccountType(account) {
170326
170426
  const accountByType = {
170327
170427
  'spot': 'Spot Wallet',
170328
170428
  'swap': 'Futures Wallet',
@@ -170356,8 +170456,8 @@ class kraken extends _abstract_kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
170356
170456
  */
170357
170457
  await this.loadMarkets();
170358
170458
  const currency = this.currency(code);
170359
- fromAccount = this.parseAccount(fromAccount);
170360
- toAccount = this.parseAccount(toAccount);
170459
+ fromAccount = this.parseAccountType(fromAccount);
170460
+ toAccount = this.parseAccountType(toAccount);
170361
170461
  const request = {
170362
170462
  'amount': this.currencyToPrecision(code, amount),
170363
170463
  'from': fromAccount,
@@ -173683,7 +173783,7 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
173683
173783
  '400006': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
173684
173784
  '400007': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
173685
173785
  '400008': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NotSupported,
173686
- '400100': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
173786
+ '400100': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
173687
173787
  '400200': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
173688
173788
  '400350': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
173689
173789
  '400370': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InvalidOrder,
@@ -262149,16 +262249,17 @@ class krakenfutures extends _krakenfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
262149
262249
  const market = this.market(marketId);
262150
262250
  const symbol = market['symbol'];
262151
262251
  const messageHash = 'trade:' + symbol;
262152
- let tradesArray = this.safeValue(this.trades, symbol);
262153
- if (tradesArray === undefined) {
262252
+ if (this.safeList(this.trades, symbol) === undefined) {
262154
262253
  const tradesLimit = this.safeInteger(this.options, 'tradesLimit', 1000);
262155
- tradesArray = new _base_ws_Cache_js__WEBPACK_IMPORTED_MODULE_1__/* .ArrayCache */ .ZL(tradesLimit);
262156
- this.trades[symbol] = tradesArray;
262254
+ this.trades[symbol] = new _base_ws_Cache_js__WEBPACK_IMPORTED_MODULE_1__/* .ArrayCache */ .ZL(tradesLimit);
262157
262255
  }
262256
+ const tradesArray = this.trades[symbol];
262158
262257
  if (channel === 'trade_snapshot') {
262159
- const trades = this.safeValue(message, 'trades', []);
262160
- for (let i = 0; i < trades.length; i++) {
262161
- const item = trades[i];
262258
+ const trades = this.safeList(message, 'trades', []);
262259
+ const length = trades.length;
262260
+ for (let i = 0; i < length; i++) {
262261
+ const index = length - 1 - i; // need reverse to correct chronology
262262
+ const item = trades[index];
262162
262263
  const trade = this.parseWsTrade(item);
262163
262264
  tradesArray.append(trade);
262164
262265
  }
@@ -299540,6 +299641,646 @@ class tokocrypto extends _abstract_tokocrypto_js__WEBPACK_IMPORTED_MODULE_0__/*
299540
299641
  }
299541
299642
 
299542
299643
 
299644
+ /***/ }),
299645
+
299646
+ /***/ 1911:
299647
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
299648
+
299649
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
299650
+ /* harmony export */ Z: () => (/* binding */ tradeogre)
299651
+ /* harmony export */ });
299652
+ /* harmony import */ var _abstract_tradeogre_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(567);
299653
+ /* harmony import */ var _base_errors_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6689);
299654
+ /* harmony import */ var _base_functions_number_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9292);
299655
+ // ---------------------------------------------------------------------------
299656
+
299657
+
299658
+
299659
+ // ---------------------------------------------------------------------------
299660
+ /**
299661
+ * @class tradeogre
299662
+ * @augments Exchange
299663
+ */
299664
+ class tradeogre extends _abstract_tradeogre_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
299665
+ describe() {
299666
+ return this.deepExtend(super.describe(), {
299667
+ 'id': 'tradeogre',
299668
+ 'name': 'tradeogre',
299669
+ 'countries': [],
299670
+ 'rateLimit': 100,
299671
+ 'version': 'v2',
299672
+ 'pro': false,
299673
+ 'has': {
299674
+ 'CORS': undefined,
299675
+ 'spot': true,
299676
+ 'margin': false,
299677
+ 'swap': false,
299678
+ 'future': false,
299679
+ 'option': false,
299680
+ 'addMargin': false,
299681
+ 'cancelAllOrders': true,
299682
+ 'cancelOrder': true,
299683
+ 'cancelOrders': false,
299684
+ 'closeAllPositions': false,
299685
+ 'closePosition': false,
299686
+ 'createDepositAddress': false,
299687
+ 'createMarketOrder': false,
299688
+ 'createOrder': true,
299689
+ 'createOrders': false,
299690
+ 'createPostOnlyOrder': false,
299691
+ 'createReduceOnlyOrder': false,
299692
+ 'createStopLimitOrder': false,
299693
+ 'createStopMarketOrder': false,
299694
+ 'createStopOrder': false,
299695
+ 'fetchAccounts': false,
299696
+ 'fetchBalance': true,
299697
+ 'fetchBorrowInterest': false,
299698
+ 'fetchBorrowRateHistory': false,
299699
+ 'fetchClosedOrders': false,
299700
+ 'fetchCrossBorrowRate': false,
299701
+ 'fetchCrossBorrowRates': false,
299702
+ 'fetchDeposit': false,
299703
+ 'fetchDepositAddress': false,
299704
+ 'fetchDepositAddresses': false,
299705
+ 'fetchDepositAddressesByNetwork': false,
299706
+ 'fetchDeposits': false,
299707
+ 'fetchDepositsWithdrawals': false,
299708
+ 'fetchFundingHistory': false,
299709
+ 'fetchFundingRate': false,
299710
+ 'fetchFundingRateHistory': false,
299711
+ 'fetchFundingRates': false,
299712
+ 'fetchIndexOHLCV': false,
299713
+ 'fetchIsolatedBorrowRate': false,
299714
+ 'fetchIsolatedBorrowRates': false,
299715
+ 'fetchLedger': false,
299716
+ 'fetchLedgerEntry': false,
299717
+ 'fetchLeverageTiers': false,
299718
+ 'fetchMarketLeverageTiers': false,
299719
+ 'fetchMarkets': true,
299720
+ 'fetchMarkOHLCV': false,
299721
+ 'fetchMyTrades': false,
299722
+ 'fetchOHLCV': false,
299723
+ 'fetchOpenInterest': false,
299724
+ 'fetchOpenInterestHistory': false,
299725
+ 'fetchOpenOrders': true,
299726
+ 'fetchOrder': true,
299727
+ 'fetchOrderBook': true,
299728
+ 'fetchOrderBooks': false,
299729
+ 'fetchOrders': false,
299730
+ 'fetchOrderTrades': false,
299731
+ 'fetchPermissions': false,
299732
+ 'fetchPosition': false,
299733
+ 'fetchPositions': false,
299734
+ 'fetchPositionsForSymbol': false,
299735
+ 'fetchPositionsRisk': false,
299736
+ 'fetchPremiumIndexOHLCV': false,
299737
+ 'fetchTicker': true,
299738
+ 'fetchTickers': false,
299739
+ 'fetchTrades': true,
299740
+ 'fetchTradingLimits': false,
299741
+ 'fetchTransactionFee': false,
299742
+ 'fetchTransactionFees': false,
299743
+ 'fetchTransactions': false,
299744
+ 'fetchTransfers': false,
299745
+ 'fetchWithdrawAddresses': false,
299746
+ 'fetchWithdrawal': false,
299747
+ 'fetchWithdrawals': false,
299748
+ 'reduceMargin': false,
299749
+ 'setLeverage': false,
299750
+ 'setMargin': false,
299751
+ 'setMarginMode': false,
299752
+ 'setPositionMode': false,
299753
+ 'signIn': false,
299754
+ 'transfer': false,
299755
+ 'withdraw': false,
299756
+ },
299757
+ 'urls': {
299758
+ 'referral': '',
299759
+ 'logo': 'https://github.com/ccxt/ccxt/assets/43336371/3aa748b7-ea44-45e9-a9e7-b1d207a2578a',
299760
+ 'api': {
299761
+ 'rest': 'https://tradeogre.com/api/v1',
299762
+ },
299763
+ 'www': 'https://tradeogre.com',
299764
+ 'doc': 'https://tradeogre.com/help/api',
299765
+ 'fees': 'https://tradeogre.com/help/fees',
299766
+ },
299767
+ 'fees': {
299768
+ 'trading': {
299769
+ 'maker': this.parseNumber('0.002'),
299770
+ 'taker': this.parseNumber('0.002'),
299771
+ },
299772
+ },
299773
+ 'api': {
299774
+ 'public': {
299775
+ 'get': {
299776
+ 'markets': 1,
299777
+ 'orders/{market}': 1,
299778
+ 'ticker/{market}': 1,
299779
+ 'history/{market}': 1,
299780
+ },
299781
+ },
299782
+ 'private': {
299783
+ 'get': {
299784
+ 'account/balance': 1,
299785
+ 'account/balances': 1,
299786
+ 'account/order/{uuid}': 1,
299787
+ },
299788
+ 'post': {
299789
+ 'order/buy': 1,
299790
+ 'order/sell': 1,
299791
+ 'order/cancel': 1,
299792
+ 'orders': 1,
299793
+ 'account/orders': 1,
299794
+ },
299795
+ },
299796
+ },
299797
+ 'commonCurrencies': {},
299798
+ 'precisionMode': _base_functions_number_js__WEBPACK_IMPORTED_MODULE_1__/* .TICK_SIZE */ .sh,
299799
+ 'exceptions': {
299800
+ 'exact': {
299801
+ 'Must be authorized': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.AuthenticationError,
299802
+ 'Market not found': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
299803
+ 'Insufficient funds': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
299804
+ 'Order not found': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
299805
+ },
299806
+ },
299807
+ 'options': {},
299808
+ });
299809
+ }
299810
+ async fetchMarkets(params = {}) {
299811
+ /**
299812
+ * @method
299813
+ * @name tradeogre#fetchMarkets
299814
+ * @description retrieves data on all markets for bigone
299815
+ * @see https://github.com/P2B-team/p2b-api-docs/blob/master/api-doc.md#markets
299816
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
299817
+ * @returns {object[]} an array of objects representing market data
299818
+ */
299819
+ const response = await this.publicGetMarkets(params);
299820
+ //
299821
+ // [
299822
+ // {
299823
+ // "AEON-BTC": {
299824
+ // "initialprice": "0.00022004",
299825
+ // "price": "0.00025992",
299826
+ // "high": "0.00025992",
299827
+ // "low": "0.00022003",
299828
+ // "volume": "0.00359066",
299829
+ // "bid": "0.00022456",
299830
+ // "ask": "0.00025993"
299831
+ // }
299832
+ // }
299833
+ // ]
299834
+ //
299835
+ const result = [];
299836
+ for (let i = 0; i < response.length; i++) {
299837
+ const rawMarket = response[i];
299838
+ const keys = Object.keys(rawMarket);
299839
+ const id = this.safeString(keys, 0);
299840
+ const keyParts = id.split('-');
299841
+ const baseId = this.safeString(keyParts, 0);
299842
+ const quoteId = this.safeString(keyParts, 1);
299843
+ const base = this.safeCurrencyCode(baseId);
299844
+ const quote = this.safeCurrencyCode(quoteId);
299845
+ const market = this.safeMarketStructure({
299846
+ 'id': id,
299847
+ 'symbol': base + '/' + quote,
299848
+ 'base': base,
299849
+ 'quote': quote,
299850
+ 'settle': undefined,
299851
+ 'baseId': baseId,
299852
+ 'quoteId': quoteId,
299853
+ 'settleId': undefined,
299854
+ 'type': 'spot',
299855
+ 'spot': true,
299856
+ 'margin': false,
299857
+ 'swap': false,
299858
+ 'future': false,
299859
+ 'option': false,
299860
+ 'active': true,
299861
+ 'contract': false,
299862
+ 'linear': undefined,
299863
+ 'inverse': undefined,
299864
+ 'contractSize': undefined,
299865
+ 'taker': this.fees['trading']['taker'],
299866
+ 'maker': this.fees['trading']['taker'],
299867
+ 'expiry': undefined,
299868
+ 'expiryDatetime': undefined,
299869
+ 'strike': undefined,
299870
+ 'optionType': undefined,
299871
+ 'precision': {
299872
+ 'amount': this.parseNumber(this.parsePrecision('8')),
299873
+ 'price': this.parseNumber(this.parsePrecision('8')), // they're not explicit about it
299874
+ },
299875
+ 'limits': {
299876
+ 'leverage': {
299877
+ 'min': undefined,
299878
+ 'max': undefined,
299879
+ },
299880
+ 'amount': {
299881
+ 'min': undefined,
299882
+ 'max': undefined,
299883
+ },
299884
+ 'price': {
299885
+ 'min': undefined,
299886
+ 'max': undefined,
299887
+ },
299888
+ 'cost': {
299889
+ 'min': undefined,
299890
+ 'max': undefined,
299891
+ },
299892
+ },
299893
+ 'created': undefined,
299894
+ 'info': rawMarket,
299895
+ });
299896
+ result.push(market);
299897
+ }
299898
+ return result;
299899
+ }
299900
+ async fetchTicker(symbol, params = {}) {
299901
+ /**
299902
+ * @method
299903
+ * @name tradeogre#fetchTicker
299904
+ * @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
299905
+ * @param {string} symbol unified symbol of the market to fetch the ticker for
299906
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
299907
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
299908
+ */
299909
+ await this.loadMarkets();
299910
+ const market = this.market(symbol);
299911
+ const request = {
299912
+ 'market': market['id'],
299913
+ };
299914
+ const response = await this.publicGetTickerMarket(this.extend(request, params));
299915
+ //
299916
+ // {
299917
+ // "success":true,
299918
+ // "initialprice":"0.02502002",
299919
+ // "price":"0.02500000",
299920
+ // "high":"0.03102001",
299921
+ // "low":"0.02500000",
299922
+ // "volume":"0.15549958",
299923
+ // "bid":"0.02420000",
299924
+ // "ask":"0.02625000"
299925
+ // }
299926
+ //
299927
+ return this.parseTicker(response, market);
299928
+ }
299929
+ parseTicker(ticker, market = undefined) {
299930
+ //
299931
+ // {
299932
+ // "success":true,
299933
+ // "initialprice":"0.02502002",
299934
+ // "price":"0.02500000",
299935
+ // "high":"0.03102001",
299936
+ // "low":"0.02500000",
299937
+ // "volume":"0.15549958",
299938
+ // "bid":"0.02420000",
299939
+ // "ask":"0.02625000"
299940
+ // }
299941
+ //
299942
+ return this.safeTicker({
299943
+ 'symbol': this.safeString(market, 'symbol'),
299944
+ 'timestamp': undefined,
299945
+ 'datetime': undefined,
299946
+ 'high': this.safeString(ticker, 'high'),
299947
+ 'low': this.safeString(ticker, 'low'),
299948
+ 'bid': this.safeString(ticker, 'bid'),
299949
+ 'bidVolume': undefined,
299950
+ 'ask': this.safeString(ticker, 'ask'),
299951
+ 'askVolume': undefined,
299952
+ 'vwap': undefined,
299953
+ 'open': this.safeString(ticker, 'open'),
299954
+ 'close': undefined,
299955
+ 'last': undefined,
299956
+ 'previousClose': undefined,
299957
+ 'change': undefined,
299958
+ 'percentage': undefined,
299959
+ 'average': undefined,
299960
+ 'baseVolume': this.safeString(ticker, 'volume'),
299961
+ 'quoteVolume': undefined,
299962
+ 'info': ticker,
299963
+ }, market);
299964
+ }
299965
+ async fetchOrderBook(symbol, limit = undefined, params = {}) {
299966
+ /**
299967
+ * @method
299968
+ * @name tradeogre#fetchOrderBook
299969
+ * @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
299970
+ * @param {string} symbol unified symbol of the market to fetch the order book for
299971
+ * @param {int} [limit] the maximum amount of order book entries to return
299972
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
299973
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
299974
+ */
299975
+ await this.loadMarkets();
299976
+ const market = this.market(symbol);
299977
+ const request = {
299978
+ 'market': market['id'],
299979
+ };
299980
+ const response = await this.publicGetOrdersMarket(this.extend(request, params));
299981
+ //
299982
+ // {
299983
+ // "success": true,
299984
+ // "buy": {
299985
+ // "0.02425501": "36.46986607",
299986
+ // "0.02425502": "93.64201137",
299987
+ // "0.02425503": "19.02000000",
299988
+ // "0.02425515": "115.49000000"
299989
+ // }
299990
+ //
299991
+ const rawBids = this.safeDict(response, 'buy', {});
299992
+ const rawAsks = this.safeDict(response, 'sell', {});
299993
+ const rawOrderbook = {
299994
+ 'bids': rawBids,
299995
+ 'asks': rawAsks,
299996
+ };
299997
+ const orderbook = this.parseOrderBook(rawOrderbook, symbol);
299998
+ return orderbook;
299999
+ }
300000
+ parseBidsAsks(bidasks, priceKey = 0, amountKey = 1, countOrIdKey = 2) {
300001
+ const prices = Object.keys(bidasks);
300002
+ const result = [];
300003
+ for (let i = 0; i < prices.length; i++) {
300004
+ const priceString = this.safeString(prices, i);
300005
+ const price = this.safeNumber(prices, i);
300006
+ const volume = this.safeNumber(bidasks, priceString);
300007
+ result.push([price, volume]);
300008
+ }
300009
+ return result;
300010
+ }
300011
+ async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
300012
+ /**
300013
+ * @method
300014
+ * @name tradeogre#fetchTrades
300015
+ * @description get the list of most recent trades for a particular symbol
300016
+ * @param {string} symbol unified symbol of the market to fetch trades for
300017
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch
300018
+ * @param {int} [limit] the maximum number of trades to fetch
300019
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
300020
+ * @param {int} params.lastId order id
300021
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
300022
+ */
300023
+ await this.loadMarkets();
300024
+ const market = this.market(symbol);
300025
+ const request = {
300026
+ 'market': market['id'],
300027
+ };
300028
+ const response = await this.publicGetHistoryMarket(this.extend(request, params));
300029
+ return this.parseTrades(response, market, since, limit);
300030
+ }
300031
+ parseTrade(trade, market = undefined) {
300032
+ //
300033
+ // {
300034
+ // "date":1515128233,
300035
+ // "type":"sell",
300036
+ // "price":"0.02454320",
300037
+ // "quantity":"0.17614230"
300038
+ // }
300039
+ //
300040
+ const timestamp = this.safeIntegerProduct(trade, 'date', 1000);
300041
+ return this.safeTrade({
300042
+ 'info': trade,
300043
+ 'id': undefined,
300044
+ 'timestamp': timestamp,
300045
+ 'datetime': this.iso8601(timestamp),
300046
+ 'symbol': this.safeString(market, 'symbol'),
300047
+ 'order': undefined,
300048
+ 'type': undefined,
300049
+ 'side': this.safeString(trade, 'type'),
300050
+ 'takerOrMaker': undefined,
300051
+ 'price': this.safeString(trade, 'price'),
300052
+ 'amount': this.safeString(trade, 'quantity'),
300053
+ 'cost': undefined,
300054
+ 'fee': {
300055
+ 'currency': undefined,
300056
+ 'cost': undefined,
300057
+ },
300058
+ }, market);
300059
+ }
300060
+ async fetchBalance(params = {}) {
300061
+ /**
300062
+ * @method
300063
+ * @name tradeogre#fetchBalance
300064
+ * @description query for balance and get the amount of funds available for trading or funds locked in orders
300065
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
300066
+ * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
300067
+ */
300068
+ await this.loadMarkets();
300069
+ const response = await this.privateGetAccountBalances(params);
300070
+ const result = this.safeDict(response, 'balances', {});
300071
+ return this.parseBalance(result);
300072
+ }
300073
+ parseBalance(response) {
300074
+ //
300075
+ // {
300076
+ // "USDT": "12"
300077
+ // }
300078
+ //
300079
+ const result = {
300080
+ 'info': response,
300081
+ };
300082
+ const keys = Object.keys(response);
300083
+ for (let i = 0; i < keys.length; i++) {
300084
+ const currencyId = keys[i];
300085
+ const balance = response[currencyId];
300086
+ const code = this.safeCurrencyCode(currencyId);
300087
+ const account = {
300088
+ 'total': balance,
300089
+ };
300090
+ result[code] = account;
300091
+ }
300092
+ return this.safeBalance(result);
300093
+ }
300094
+ async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
300095
+ /**
300096
+ * @method
300097
+ * @name tradeogre#createOrder
300098
+ * @description create a trade order
300099
+ * @param {string} symbol unified symbol of the market to create an order in
300100
+ * @param {string} type not used by tradeogre
300101
+ * @param {string} side 'buy' or 'sell'
300102
+ * @param {float} amount how much of currency you want to trade in units of base currency
300103
+ * @param {float} price the price at which the order is to be fullfilled, in units of the quote currency
300104
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
300105
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
300106
+ */
300107
+ await this.loadMarkets();
300108
+ const market = this.market(symbol);
300109
+ const request = {
300110
+ 'market': market['id'],
300111
+ 'quantity': this.parseToNumeric(this.amountToPrecision(symbol, amount)),
300112
+ 'price': this.parseToNumeric(this.priceToPrecision(symbol, price)),
300113
+ };
300114
+ if (type === 'market') {
300115
+ throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest(this.id + ' createOrder does not support market orders');
300116
+ }
300117
+ let response = undefined;
300118
+ if (side === 'buy') {
300119
+ response = await this.privatePostOrderBuy(this.extend(request, params));
300120
+ }
300121
+ else {
300122
+ response = await this.privatePostOrderSell(this.extend(request, params));
300123
+ }
300124
+ return this.parseOrder(response, market);
300125
+ }
300126
+ async cancelOrder(id, symbol = undefined, params = {}) {
300127
+ /**
300128
+ * @method
300129
+ * @name tradeogre#cancelOrder
300130
+ * @description cancels an open order
300131
+ * @param {string} id order id
300132
+ * @param {string} symbol unified symbol of the market the order was made in
300133
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
300134
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
300135
+ */
300136
+ await this.loadMarkets();
300137
+ const request = {
300138
+ 'uuid': id,
300139
+ };
300140
+ const response = await this.privatePostOrderCancel(this.extend(request, params));
300141
+ return this.parseOrder(response);
300142
+ }
300143
+ async cancelAllOrders(symbol = undefined, params = {}) {
300144
+ /**
300145
+ * @method
300146
+ * @name tradeogre#cancelAllOrders
300147
+ * @description cancel all open orders
300148
+ * @param {string} symbol alpaca cancelAllOrders cannot setting symbol, it will cancel all open orders
300149
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
300150
+ * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
300151
+ */
300152
+ await this.loadMarkets();
300153
+ return await this.cancelOrder('all', symbol, params);
300154
+ }
300155
+ async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
300156
+ /**
300157
+ * @method
300158
+ * @name tradeogre#fetchOpenOrders
300159
+ * @description fetch all unfilled currently open orders
300160
+ * @param {string} symbol unified market symbol of the market orders were made in
300161
+ * @param {int} [since] the earliest time in ms to fetch orders for
300162
+ * @param {int} [limit] the maximum number of order structures to retrieve
300163
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
300164
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
300165
+ */
300166
+ await this.loadMarkets();
300167
+ let market = undefined;
300168
+ if (symbol !== undefined) {
300169
+ market = this.market(symbol);
300170
+ }
300171
+ const request = {};
300172
+ if (symbol !== undefined) {
300173
+ request['market'] = market['id'];
300174
+ }
300175
+ const response = await this.privatePostAccountOrders(this.extend(request, params));
300176
+ return this.parseOrders(response, market, since, limit);
300177
+ }
300178
+ async fetchOrder(id, symbol = undefined, params = {}) {
300179
+ /**
300180
+ * @method
300181
+ * @name ace#fetchOrder
300182
+ * @description fetches information on an order made by the user
300183
+ * @see https://github.com/ace-exchange/ace-official-api-docs/blob/master/api_v2.md#open-api---order-status
300184
+ * @param {string} symbol unified symbol of the market the order was made in
300185
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
300186
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
300187
+ */
300188
+ await this.loadMarkets();
300189
+ const request = {
300190
+ 'uuid': id,
300191
+ };
300192
+ const response = await this.privateGetAccountOrderUuid(this.extend(request, params));
300193
+ return this.parseOrder(response, undefined);
300194
+ }
300195
+ parseOrder(order, market = undefined) {
300196
+ //
300197
+ //
300198
+ // {
300199
+ // "uuid": "a40ac710-8dc5-b5a8-aa69-389715197b14",
300200
+ // "date": 1514876938,
300201
+ // "type": "sell",
300202
+ // "price": "0.02621960",
300203
+ // "quantity": "1.55772526",
300204
+ // "market": "XMR-BTC"
300205
+ // }
300206
+ //
300207
+ const timestamp = this.safeIntegerProduct(order, 'date', 1000);
300208
+ const marketId = this.safeString(order, 'market');
300209
+ market = this.safeMarket(marketId, market);
300210
+ return this.safeOrder({
300211
+ 'info': order,
300212
+ 'id': this.safeString(order, 'uuid'),
300213
+ 'clientOrderId': undefined,
300214
+ 'timestamp': timestamp,
300215
+ 'datetime': this.iso8601(timestamp),
300216
+ 'lastTradeTimestamp': undefined,
300217
+ 'symbol': market['symbol'],
300218
+ 'type': undefined,
300219
+ 'timeInForce': undefined,
300220
+ 'postOnly': undefined,
300221
+ 'side': this.safeString(order, 'type'),
300222
+ 'price': this.safeString(order, 'price'),
300223
+ 'stopPrice': undefined,
300224
+ 'amount': this.safeString(order, 'quantity'),
300225
+ 'cost': undefined,
300226
+ 'average': undefined,
300227
+ 'filled': this.safeString(order, 'fulfilled'),
300228
+ 'remaining': undefined,
300229
+ 'status': undefined,
300230
+ 'fee': {
300231
+ 'currency': undefined,
300232
+ 'cost': undefined,
300233
+ },
300234
+ 'trades': undefined,
300235
+ }, market);
300236
+ }
300237
+ sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
300238
+ let url = this.urls['api']['rest'] + '/' + this.implodeParams(path, params);
300239
+ params = this.omit(params, this.extractParams(path));
300240
+ if (method === 'GET') {
300241
+ if (Object.keys(params).length) {
300242
+ url += '?' + this.urlencode(params);
300243
+ }
300244
+ }
300245
+ if (api === 'private') {
300246
+ headers = {
300247
+ 'Content-Type': 'application/x-www-form-urlencoded',
300248
+ 'Referer': 'CCXT',
300249
+ 'authorization': 'Basic ' + this.stringToBase64(this.apiKey + ':' + this.secret),
300250
+ };
300251
+ if (method !== 'GET') {
300252
+ body = this.urlencode(params);
300253
+ }
300254
+ }
300255
+ return { 'url': url, 'method': method, 'body': body, 'headers': headers };
300256
+ }
300257
+ handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
300258
+ if (response === undefined) {
300259
+ return undefined;
300260
+ }
300261
+ if (!('success' in response)) {
300262
+ return undefined;
300263
+ }
300264
+ //
300265
+ // {"success":false,"error":"Must be authorized"}
300266
+ //
300267
+ const success = this.safeBool(response, 'success');
300268
+ if (success) {
300269
+ return undefined;
300270
+ }
300271
+ const successString = this.safeString(response, 'success');
300272
+ if (successString === 'true') {
300273
+ return undefined;
300274
+ }
300275
+ const error = this.safeValue(response, 'error');
300276
+ const errorCode = this.safeString(error, 'code');
300277
+ const feedback = this.id + ' ' + this.json(response);
300278
+ this.throwExactlyMatchedException(this.exceptions['exact'], errorCode, feedback);
300279
+ throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError(feedback);
300280
+ }
300281
+ }
300282
+
300283
+
299543
300284
  /***/ }),
299544
300285
 
299545
300286
  /***/ 7584:
@@ -320445,39 +321186,39 @@ var __webpack_exports__ = {};
320445
321186
  (() => {
320446
321187
  __webpack_require__.r(__webpack_exports__);
320447
321188
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
320448
- /* harmony export */ AccountNotEnabled: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.AccountNotEnabled),
320449
- /* harmony export */ AccountSuspended: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.AccountSuspended),
320450
- /* harmony export */ AddressPending: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.AddressPending),
320451
- /* harmony export */ ArgumentsRequired: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.ArgumentsRequired),
320452
- /* harmony export */ AuthenticationError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.AuthenticationError),
320453
- /* harmony export */ BadRequest: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.BadRequest),
320454
- /* harmony export */ BadResponse: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.BadResponse),
320455
- /* harmony export */ BadSymbol: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.BadSymbol),
320456
- /* harmony export */ BaseError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.BaseError),
320457
- /* harmony export */ CancelPending: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.CancelPending),
320458
- /* harmony export */ DDoSProtection: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.DDoSProtection),
320459
- /* harmony export */ DuplicateOrderId: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.DuplicateOrderId),
321189
+ /* harmony export */ AccountNotEnabled: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.AccountNotEnabled),
321190
+ /* harmony export */ AccountSuspended: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.AccountSuspended),
321191
+ /* harmony export */ AddressPending: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.AddressPending),
321192
+ /* harmony export */ ArgumentsRequired: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.ArgumentsRequired),
321193
+ /* harmony export */ AuthenticationError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.AuthenticationError),
321194
+ /* harmony export */ BadRequest: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.BadRequest),
321195
+ /* harmony export */ BadResponse: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.BadResponse),
321196
+ /* harmony export */ BadSymbol: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.BadSymbol),
321197
+ /* harmony export */ BaseError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.BaseError),
321198
+ /* harmony export */ CancelPending: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.CancelPending),
321199
+ /* harmony export */ DDoSProtection: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.DDoSProtection),
321200
+ /* harmony export */ DuplicateOrderId: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.DuplicateOrderId),
320460
321201
  /* harmony export */ Exchange: () => (/* reexport safe */ _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__.e),
320461
- /* harmony export */ ExchangeError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.ExchangeError),
320462
- /* harmony export */ ExchangeNotAvailable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.ExchangeNotAvailable),
320463
- /* harmony export */ InsufficientFunds: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.InsufficientFunds),
320464
- /* harmony export */ InvalidAddress: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.InvalidAddress),
320465
- /* harmony export */ InvalidNonce: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.InvalidNonce),
320466
- /* harmony export */ InvalidOrder: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.InvalidOrder),
320467
- /* harmony export */ MarginModeAlreadySet: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.MarginModeAlreadySet),
320468
- /* harmony export */ NetworkError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.NetworkError),
320469
- /* harmony export */ NoChange: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.NoChange),
320470
- /* harmony export */ NotSupported: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.NotSupported),
320471
- /* harmony export */ NullResponse: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.NullResponse),
320472
- /* harmony export */ OnMaintenance: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.OnMaintenance),
320473
- /* harmony export */ OrderImmediatelyFillable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.OrderImmediatelyFillable),
320474
- /* harmony export */ OrderNotCached: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.OrderNotCached),
320475
- /* harmony export */ OrderNotFillable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.OrderNotFillable),
320476
- /* harmony export */ OrderNotFound: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.OrderNotFound),
320477
- /* harmony export */ PermissionDenied: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.PermissionDenied),
320478
- /* harmony export */ Precise: () => (/* reexport safe */ _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_166__.O),
320479
- /* harmony export */ RateLimitExceeded: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.RateLimitExceeded),
320480
- /* harmony export */ RequestTimeout: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__.RequestTimeout),
321202
+ /* harmony export */ ExchangeError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.ExchangeError),
321203
+ /* harmony export */ ExchangeNotAvailable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.ExchangeNotAvailable),
321204
+ /* harmony export */ InsufficientFunds: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.InsufficientFunds),
321205
+ /* harmony export */ InvalidAddress: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.InvalidAddress),
321206
+ /* harmony export */ InvalidNonce: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.InvalidNonce),
321207
+ /* harmony export */ InvalidOrder: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.InvalidOrder),
321208
+ /* harmony export */ MarginModeAlreadySet: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.MarginModeAlreadySet),
321209
+ /* harmony export */ NetworkError: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.NetworkError),
321210
+ /* harmony export */ NoChange: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.NoChange),
321211
+ /* harmony export */ NotSupported: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.NotSupported),
321212
+ /* harmony export */ NullResponse: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.NullResponse),
321213
+ /* harmony export */ OnMaintenance: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.OnMaintenance),
321214
+ /* harmony export */ OrderImmediatelyFillable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.OrderImmediatelyFillable),
321215
+ /* harmony export */ OrderNotCached: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.OrderNotCached),
321216
+ /* harmony export */ OrderNotFillable: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.OrderNotFillable),
321217
+ /* harmony export */ OrderNotFound: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.OrderNotFound),
321218
+ /* harmony export */ PermissionDenied: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.PermissionDenied),
321219
+ /* harmony export */ Precise: () => (/* reexport safe */ _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_167__.O),
321220
+ /* harmony export */ RateLimitExceeded: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.RateLimitExceeded),
321221
+ /* harmony export */ RequestTimeout: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__.RequestTimeout),
320481
321222
  /* harmony export */ ace: () => (/* reexport safe */ _src_ace_js__WEBPACK_IMPORTED_MODULE_1__.Z),
320482
321223
  /* harmony export */ alpaca: () => (/* reexport safe */ _src_alpaca_js__WEBPACK_IMPORTED_MODULE_2__.Z),
320483
321224
  /* harmony export */ ascendex: () => (/* reexport safe */ _src_ascendex_js__WEBPACK_IMPORTED_MODULE_3__.Z),
@@ -320533,11 +321274,11 @@ __webpack_require__.r(__webpack_exports__);
320533
321274
  /* harmony export */ delta: () => (/* reexport safe */ _src_delta_js__WEBPACK_IMPORTED_MODULE_52__.Z),
320534
321275
  /* harmony export */ deribit: () => (/* reexport safe */ _src_deribit_js__WEBPACK_IMPORTED_MODULE_53__.Z),
320535
321276
  /* harmony export */ digifinex: () => (/* reexport safe */ _src_digifinex_js__WEBPACK_IMPORTED_MODULE_54__.Z),
320536
- /* harmony export */ errors: () => (/* reexport module object */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__),
321277
+ /* harmony export */ errors: () => (/* reexport module object */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__),
320537
321278
  /* harmony export */ exchanges: () => (/* binding */ exchanges),
320538
321279
  /* harmony export */ exmo: () => (/* reexport safe */ _src_exmo_js__WEBPACK_IMPORTED_MODULE_55__.Z),
320539
321280
  /* harmony export */ fmfwio: () => (/* reexport safe */ _src_fmfwio_js__WEBPACK_IMPORTED_MODULE_56__.Z),
320540
- /* harmony export */ functions: () => (/* reexport module object */ _src_base_functions_js__WEBPACK_IMPORTED_MODULE_167__),
321281
+ /* harmony export */ functions: () => (/* reexport module object */ _src_base_functions_js__WEBPACK_IMPORTED_MODULE_168__),
320541
321282
  /* harmony export */ gate: () => (/* reexport safe */ _src_gate_js__WEBPACK_IMPORTED_MODULE_57__.Z),
320542
321283
  /* harmony export */ gateio: () => (/* reexport safe */ _src_gateio_js__WEBPACK_IMPORTED_MODULE_58__.Z),
320543
321284
  /* harmony export */ gemini: () => (/* reexport safe */ _src_gemini_js__WEBPACK_IMPORTED_MODULE_59__.Z),
@@ -320577,20 +321318,21 @@ __webpack_require__.r(__webpack_exports__);
320577
321318
  /* harmony export */ probit: () => (/* reexport safe */ _src_probit_js__WEBPACK_IMPORTED_MODULE_92__.Z),
320578
321319
  /* harmony export */ timex: () => (/* reexport safe */ _src_timex_js__WEBPACK_IMPORTED_MODULE_93__.Z),
320579
321320
  /* harmony export */ tokocrypto: () => (/* reexport safe */ _src_tokocrypto_js__WEBPACK_IMPORTED_MODULE_94__.Z),
320580
- /* harmony export */ upbit: () => (/* reexport safe */ _src_upbit_js__WEBPACK_IMPORTED_MODULE_95__.Z),
321321
+ /* harmony export */ tradeogre: () => (/* reexport safe */ _src_tradeogre_js__WEBPACK_IMPORTED_MODULE_95__.Z),
321322
+ /* harmony export */ upbit: () => (/* reexport safe */ _src_upbit_js__WEBPACK_IMPORTED_MODULE_96__.Z),
320581
321323
  /* harmony export */ version: () => (/* binding */ version),
320582
- /* harmony export */ wavesexchange: () => (/* reexport safe */ _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_96__.Z),
320583
- /* harmony export */ wazirx: () => (/* reexport safe */ _src_wazirx_js__WEBPACK_IMPORTED_MODULE_97__.Z),
320584
- /* harmony export */ whitebit: () => (/* reexport safe */ _src_whitebit_js__WEBPACK_IMPORTED_MODULE_98__.Z),
320585
- /* harmony export */ woo: () => (/* reexport safe */ _src_woo_js__WEBPACK_IMPORTED_MODULE_99__.Z),
320586
- /* harmony export */ yobit: () => (/* reexport safe */ _src_yobit_js__WEBPACK_IMPORTED_MODULE_100__.Z),
320587
- /* harmony export */ zaif: () => (/* reexport safe */ _src_zaif_js__WEBPACK_IMPORTED_MODULE_101__.Z),
320588
- /* harmony export */ zonda: () => (/* reexport safe */ _src_zonda_js__WEBPACK_IMPORTED_MODULE_102__.Z)
321324
+ /* harmony export */ wavesexchange: () => (/* reexport safe */ _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_97__.Z),
321325
+ /* harmony export */ wazirx: () => (/* reexport safe */ _src_wazirx_js__WEBPACK_IMPORTED_MODULE_98__.Z),
321326
+ /* harmony export */ whitebit: () => (/* reexport safe */ _src_whitebit_js__WEBPACK_IMPORTED_MODULE_99__.Z),
321327
+ /* harmony export */ woo: () => (/* reexport safe */ _src_woo_js__WEBPACK_IMPORTED_MODULE_100__.Z),
321328
+ /* harmony export */ yobit: () => (/* reexport safe */ _src_yobit_js__WEBPACK_IMPORTED_MODULE_101__.Z),
321329
+ /* harmony export */ zaif: () => (/* reexport safe */ _src_zaif_js__WEBPACK_IMPORTED_MODULE_102__.Z),
321330
+ /* harmony export */ zonda: () => (/* reexport safe */ _src_zonda_js__WEBPACK_IMPORTED_MODULE_103__.Z)
320589
321331
  /* harmony export */ });
320590
321332
  /* harmony import */ var _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3043);
320591
- /* harmony import */ var _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_166__ = __webpack_require__(2194);
320592
- /* harmony import */ var _src_base_functions_js__WEBPACK_IMPORTED_MODULE_167__ = __webpack_require__(7100);
320593
- /* harmony import */ var _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__ = __webpack_require__(6689);
321333
+ /* harmony import */ var _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_167__ = __webpack_require__(2194);
321334
+ /* harmony import */ var _src_base_functions_js__WEBPACK_IMPORTED_MODULE_168__ = __webpack_require__(7100);
321335
+ /* harmony import */ var _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__ = __webpack_require__(6689);
320594
321336
  /* harmony import */ var _src_ace_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9869);
320595
321337
  /* harmony import */ var _src_alpaca_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5660);
320596
321338
  /* harmony import */ var _src_ascendex_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9612);
@@ -320685,77 +321427,78 @@ __webpack_require__.r(__webpack_exports__);
320685
321427
  /* harmony import */ var _src_probit_js__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(3657);
320686
321428
  /* harmony import */ var _src_timex_js__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(1067);
320687
321429
  /* harmony import */ var _src_tokocrypto_js__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(5261);
320688
- /* harmony import */ var _src_upbit_js__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(7584);
320689
- /* harmony import */ var _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(3853);
320690
- /* harmony import */ var _src_wazirx_js__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(6536);
320691
- /* harmony import */ var _src_whitebit_js__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(5467);
320692
- /* harmony import */ var _src_woo_js__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(517);
320693
- /* harmony import */ var _src_yobit_js__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(3850);
320694
- /* harmony import */ var _src_zaif_js__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(5934);
320695
- /* harmony import */ var _src_zonda_js__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(5140);
320696
- /* harmony import */ var _src_pro_alpaca_js__WEBPACK_IMPORTED_MODULE_103__ = __webpack_require__(2467);
320697
- /* harmony import */ var _src_pro_ascendex_js__WEBPACK_IMPORTED_MODULE_104__ = __webpack_require__(2383);
320698
- /* harmony import */ var _src_pro_bequant_js__WEBPACK_IMPORTED_MODULE_105__ = __webpack_require__(8848);
320699
- /* harmony import */ var _src_pro_binance_js__WEBPACK_IMPORTED_MODULE_106__ = __webpack_require__(8764);
320700
- /* harmony import */ var _src_pro_binancecoinm_js__WEBPACK_IMPORTED_MODULE_107__ = __webpack_require__(5078);
320701
- /* harmony import */ var _src_pro_binanceus_js__WEBPACK_IMPORTED_MODULE_108__ = __webpack_require__(1326);
320702
- /* harmony import */ var _src_pro_binanceusdm_js__WEBPACK_IMPORTED_MODULE_109__ = __webpack_require__(1230);
320703
- /* harmony import */ var _src_pro_bingx_js__WEBPACK_IMPORTED_MODULE_110__ = __webpack_require__(6955);
320704
- /* harmony import */ var _src_pro_bitcoincom_js__WEBPACK_IMPORTED_MODULE_111__ = __webpack_require__(453);
320705
- /* harmony import */ var _src_pro_bitfinex_js__WEBPACK_IMPORTED_MODULE_112__ = __webpack_require__(9772);
320706
- /* harmony import */ var _src_pro_bitfinex2_js__WEBPACK_IMPORTED_MODULE_113__ = __webpack_require__(588);
320707
- /* harmony import */ var _src_pro_bitget_js__WEBPACK_IMPORTED_MODULE_114__ = __webpack_require__(1885);
320708
- /* harmony import */ var _src_pro_bitmart_js__WEBPACK_IMPORTED_MODULE_115__ = __webpack_require__(7504);
320709
- /* harmony import */ var _src_pro_bitmex_js__WEBPACK_IMPORTED_MODULE_116__ = __webpack_require__(2302);
320710
- /* harmony import */ var _src_pro_bitopro_js__WEBPACK_IMPORTED_MODULE_117__ = __webpack_require__(2191);
320711
- /* harmony import */ var _src_pro_bitpanda_js__WEBPACK_IMPORTED_MODULE_118__ = __webpack_require__(1297);
320712
- /* harmony import */ var _src_pro_bitrue_js__WEBPACK_IMPORTED_MODULE_119__ = __webpack_require__(3005);
320713
- /* harmony import */ var _src_pro_bitstamp_js__WEBPACK_IMPORTED_MODULE_120__ = __webpack_require__(2317);
320714
- /* harmony import */ var _src_pro_bitvavo_js__WEBPACK_IMPORTED_MODULE_121__ = __webpack_require__(6977);
320715
- /* harmony import */ var _src_pro_blockchaincom_js__WEBPACK_IMPORTED_MODULE_122__ = __webpack_require__(2519);
320716
- /* harmony import */ var _src_pro_bybit_js__WEBPACK_IMPORTED_MODULE_123__ = __webpack_require__(5030);
320717
- /* harmony import */ var _src_pro_cex_js__WEBPACK_IMPORTED_MODULE_124__ = __webpack_require__(5272);
320718
- /* harmony import */ var _src_pro_coinbase_js__WEBPACK_IMPORTED_MODULE_125__ = __webpack_require__(3414);
320719
- /* harmony import */ var _src_pro_coinbaseinternational_js__WEBPACK_IMPORTED_MODULE_126__ = __webpack_require__(6541);
320720
- /* harmony import */ var _src_pro_coinbasepro_js__WEBPACK_IMPORTED_MODULE_127__ = __webpack_require__(8368);
320721
- /* harmony import */ var _src_pro_coincheck_js__WEBPACK_IMPORTED_MODULE_128__ = __webpack_require__(7891);
320722
- /* harmony import */ var _src_pro_coinex_js__WEBPACK_IMPORTED_MODULE_129__ = __webpack_require__(204);
320723
- /* harmony import */ var _src_pro_coinone_js__WEBPACK_IMPORTED_MODULE_130__ = __webpack_require__(5208);
320724
- /* harmony import */ var _src_pro_cryptocom_js__WEBPACK_IMPORTED_MODULE_131__ = __webpack_require__(6820);
320725
- /* harmony import */ var _src_pro_currencycom_js__WEBPACK_IMPORTED_MODULE_132__ = __webpack_require__(2952);
320726
- /* harmony import */ var _src_pro_deribit_js__WEBPACK_IMPORTED_MODULE_133__ = __webpack_require__(1788);
320727
- /* harmony import */ var _src_pro_exmo_js__WEBPACK_IMPORTED_MODULE_134__ = __webpack_require__(9004);
320728
- /* harmony import */ var _src_pro_gate_js__WEBPACK_IMPORTED_MODULE_135__ = __webpack_require__(8335);
320729
- /* harmony import */ var _src_pro_gateio_js__WEBPACK_IMPORTED_MODULE_136__ = __webpack_require__(1465);
320730
- /* harmony import */ var _src_pro_gemini_js__WEBPACK_IMPORTED_MODULE_137__ = __webpack_require__(9488);
320731
- /* harmony import */ var _src_pro_hitbtc_js__WEBPACK_IMPORTED_MODULE_138__ = __webpack_require__(5189);
320732
- /* harmony import */ var _src_pro_hollaex_js__WEBPACK_IMPORTED_MODULE_139__ = __webpack_require__(8559);
320733
- /* harmony import */ var _src_pro_htx_js__WEBPACK_IMPORTED_MODULE_140__ = __webpack_require__(7474);
320734
- /* harmony import */ var _src_pro_huobi_js__WEBPACK_IMPORTED_MODULE_141__ = __webpack_require__(8384);
320735
- /* harmony import */ var _src_pro_huobijp_js__WEBPACK_IMPORTED_MODULE_142__ = __webpack_require__(9021);
320736
- /* harmony import */ var _src_pro_hyperliquid_js__WEBPACK_IMPORTED_MODULE_143__ = __webpack_require__(8354);
320737
- /* harmony import */ var _src_pro_idex_js__WEBPACK_IMPORTED_MODULE_144__ = __webpack_require__(3484);
320738
- /* harmony import */ var _src_pro_independentreserve_js__WEBPACK_IMPORTED_MODULE_145__ = __webpack_require__(1311);
320739
- /* harmony import */ var _src_pro_kraken_js__WEBPACK_IMPORTED_MODULE_146__ = __webpack_require__(736);
320740
- /* harmony import */ var _src_pro_krakenfutures_js__WEBPACK_IMPORTED_MODULE_147__ = __webpack_require__(449);
320741
- /* harmony import */ var _src_pro_kucoin_js__WEBPACK_IMPORTED_MODULE_148__ = __webpack_require__(2387);
320742
- /* harmony import */ var _src_pro_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_149__ = __webpack_require__(7181);
320743
- /* harmony import */ var _src_pro_lbank_js__WEBPACK_IMPORTED_MODULE_150__ = __webpack_require__(1267);
320744
- /* harmony import */ var _src_pro_luno_js__WEBPACK_IMPORTED_MODULE_151__ = __webpack_require__(627);
320745
- /* harmony import */ var _src_pro_mexc_js__WEBPACK_IMPORTED_MODULE_152__ = __webpack_require__(6484);
320746
- /* harmony import */ var _src_pro_ndax_js__WEBPACK_IMPORTED_MODULE_153__ = __webpack_require__(8080);
320747
- /* harmony import */ var _src_pro_okcoin_js__WEBPACK_IMPORTED_MODULE_154__ = __webpack_require__(7105);
320748
- /* harmony import */ var _src_pro_okx_js__WEBPACK_IMPORTED_MODULE_155__ = __webpack_require__(2214);
320749
- /* harmony import */ var _src_pro_onetrading_js__WEBPACK_IMPORTED_MODULE_156__ = __webpack_require__(9419);
320750
- /* harmony import */ var _src_pro_p2b_js__WEBPACK_IMPORTED_MODULE_157__ = __webpack_require__(8516);
320751
- /* harmony import */ var _src_pro_phemex_js__WEBPACK_IMPORTED_MODULE_158__ = __webpack_require__(4360);
320752
- /* harmony import */ var _src_pro_poloniex_js__WEBPACK_IMPORTED_MODULE_159__ = __webpack_require__(7924);
320753
- /* harmony import */ var _src_pro_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_160__ = __webpack_require__(3541);
320754
- /* harmony import */ var _src_pro_probit_js__WEBPACK_IMPORTED_MODULE_161__ = __webpack_require__(9782);
320755
- /* harmony import */ var _src_pro_upbit_js__WEBPACK_IMPORTED_MODULE_162__ = __webpack_require__(7614);
320756
- /* harmony import */ var _src_pro_wazirx_js__WEBPACK_IMPORTED_MODULE_163__ = __webpack_require__(4828);
320757
- /* harmony import */ var _src_pro_whitebit_js__WEBPACK_IMPORTED_MODULE_164__ = __webpack_require__(5630);
320758
- /* harmony import */ var _src_pro_woo_js__WEBPACK_IMPORTED_MODULE_165__ = __webpack_require__(3910);
321430
+ /* harmony import */ var _src_tradeogre_js__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(1911);
321431
+ /* harmony import */ var _src_upbit_js__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(7584);
321432
+ /* harmony import */ var _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(3853);
321433
+ /* harmony import */ var _src_wazirx_js__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(6536);
321434
+ /* harmony import */ var _src_whitebit_js__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(5467);
321435
+ /* harmony import */ var _src_woo_js__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(517);
321436
+ /* harmony import */ var _src_yobit_js__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(3850);
321437
+ /* harmony import */ var _src_zaif_js__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(5934);
321438
+ /* harmony import */ var _src_zonda_js__WEBPACK_IMPORTED_MODULE_103__ = __webpack_require__(5140);
321439
+ /* harmony import */ var _src_pro_alpaca_js__WEBPACK_IMPORTED_MODULE_104__ = __webpack_require__(2467);
321440
+ /* harmony import */ var _src_pro_ascendex_js__WEBPACK_IMPORTED_MODULE_105__ = __webpack_require__(2383);
321441
+ /* harmony import */ var _src_pro_bequant_js__WEBPACK_IMPORTED_MODULE_106__ = __webpack_require__(8848);
321442
+ /* harmony import */ var _src_pro_binance_js__WEBPACK_IMPORTED_MODULE_107__ = __webpack_require__(8764);
321443
+ /* harmony import */ var _src_pro_binancecoinm_js__WEBPACK_IMPORTED_MODULE_108__ = __webpack_require__(5078);
321444
+ /* harmony import */ var _src_pro_binanceus_js__WEBPACK_IMPORTED_MODULE_109__ = __webpack_require__(1326);
321445
+ /* harmony import */ var _src_pro_binanceusdm_js__WEBPACK_IMPORTED_MODULE_110__ = __webpack_require__(1230);
321446
+ /* harmony import */ var _src_pro_bingx_js__WEBPACK_IMPORTED_MODULE_111__ = __webpack_require__(6955);
321447
+ /* harmony import */ var _src_pro_bitcoincom_js__WEBPACK_IMPORTED_MODULE_112__ = __webpack_require__(453);
321448
+ /* harmony import */ var _src_pro_bitfinex_js__WEBPACK_IMPORTED_MODULE_113__ = __webpack_require__(9772);
321449
+ /* harmony import */ var _src_pro_bitfinex2_js__WEBPACK_IMPORTED_MODULE_114__ = __webpack_require__(588);
321450
+ /* harmony import */ var _src_pro_bitget_js__WEBPACK_IMPORTED_MODULE_115__ = __webpack_require__(1885);
321451
+ /* harmony import */ var _src_pro_bitmart_js__WEBPACK_IMPORTED_MODULE_116__ = __webpack_require__(7504);
321452
+ /* harmony import */ var _src_pro_bitmex_js__WEBPACK_IMPORTED_MODULE_117__ = __webpack_require__(2302);
321453
+ /* harmony import */ var _src_pro_bitopro_js__WEBPACK_IMPORTED_MODULE_118__ = __webpack_require__(2191);
321454
+ /* harmony import */ var _src_pro_bitpanda_js__WEBPACK_IMPORTED_MODULE_119__ = __webpack_require__(1297);
321455
+ /* harmony import */ var _src_pro_bitrue_js__WEBPACK_IMPORTED_MODULE_120__ = __webpack_require__(3005);
321456
+ /* harmony import */ var _src_pro_bitstamp_js__WEBPACK_IMPORTED_MODULE_121__ = __webpack_require__(2317);
321457
+ /* harmony import */ var _src_pro_bitvavo_js__WEBPACK_IMPORTED_MODULE_122__ = __webpack_require__(6977);
321458
+ /* harmony import */ var _src_pro_blockchaincom_js__WEBPACK_IMPORTED_MODULE_123__ = __webpack_require__(2519);
321459
+ /* harmony import */ var _src_pro_bybit_js__WEBPACK_IMPORTED_MODULE_124__ = __webpack_require__(5030);
321460
+ /* harmony import */ var _src_pro_cex_js__WEBPACK_IMPORTED_MODULE_125__ = __webpack_require__(5272);
321461
+ /* harmony import */ var _src_pro_coinbase_js__WEBPACK_IMPORTED_MODULE_126__ = __webpack_require__(3414);
321462
+ /* harmony import */ var _src_pro_coinbaseinternational_js__WEBPACK_IMPORTED_MODULE_127__ = __webpack_require__(6541);
321463
+ /* harmony import */ var _src_pro_coinbasepro_js__WEBPACK_IMPORTED_MODULE_128__ = __webpack_require__(8368);
321464
+ /* harmony import */ var _src_pro_coincheck_js__WEBPACK_IMPORTED_MODULE_129__ = __webpack_require__(7891);
321465
+ /* harmony import */ var _src_pro_coinex_js__WEBPACK_IMPORTED_MODULE_130__ = __webpack_require__(204);
321466
+ /* harmony import */ var _src_pro_coinone_js__WEBPACK_IMPORTED_MODULE_131__ = __webpack_require__(5208);
321467
+ /* harmony import */ var _src_pro_cryptocom_js__WEBPACK_IMPORTED_MODULE_132__ = __webpack_require__(6820);
321468
+ /* harmony import */ var _src_pro_currencycom_js__WEBPACK_IMPORTED_MODULE_133__ = __webpack_require__(2952);
321469
+ /* harmony import */ var _src_pro_deribit_js__WEBPACK_IMPORTED_MODULE_134__ = __webpack_require__(1788);
321470
+ /* harmony import */ var _src_pro_exmo_js__WEBPACK_IMPORTED_MODULE_135__ = __webpack_require__(9004);
321471
+ /* harmony import */ var _src_pro_gate_js__WEBPACK_IMPORTED_MODULE_136__ = __webpack_require__(8335);
321472
+ /* harmony import */ var _src_pro_gateio_js__WEBPACK_IMPORTED_MODULE_137__ = __webpack_require__(1465);
321473
+ /* harmony import */ var _src_pro_gemini_js__WEBPACK_IMPORTED_MODULE_138__ = __webpack_require__(9488);
321474
+ /* harmony import */ var _src_pro_hitbtc_js__WEBPACK_IMPORTED_MODULE_139__ = __webpack_require__(5189);
321475
+ /* harmony import */ var _src_pro_hollaex_js__WEBPACK_IMPORTED_MODULE_140__ = __webpack_require__(8559);
321476
+ /* harmony import */ var _src_pro_htx_js__WEBPACK_IMPORTED_MODULE_141__ = __webpack_require__(7474);
321477
+ /* harmony import */ var _src_pro_huobi_js__WEBPACK_IMPORTED_MODULE_142__ = __webpack_require__(8384);
321478
+ /* harmony import */ var _src_pro_huobijp_js__WEBPACK_IMPORTED_MODULE_143__ = __webpack_require__(9021);
321479
+ /* harmony import */ var _src_pro_hyperliquid_js__WEBPACK_IMPORTED_MODULE_144__ = __webpack_require__(8354);
321480
+ /* harmony import */ var _src_pro_idex_js__WEBPACK_IMPORTED_MODULE_145__ = __webpack_require__(3484);
321481
+ /* harmony import */ var _src_pro_independentreserve_js__WEBPACK_IMPORTED_MODULE_146__ = __webpack_require__(1311);
321482
+ /* harmony import */ var _src_pro_kraken_js__WEBPACK_IMPORTED_MODULE_147__ = __webpack_require__(736);
321483
+ /* harmony import */ var _src_pro_krakenfutures_js__WEBPACK_IMPORTED_MODULE_148__ = __webpack_require__(449);
321484
+ /* harmony import */ var _src_pro_kucoin_js__WEBPACK_IMPORTED_MODULE_149__ = __webpack_require__(2387);
321485
+ /* harmony import */ var _src_pro_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_150__ = __webpack_require__(7181);
321486
+ /* harmony import */ var _src_pro_lbank_js__WEBPACK_IMPORTED_MODULE_151__ = __webpack_require__(1267);
321487
+ /* harmony import */ var _src_pro_luno_js__WEBPACK_IMPORTED_MODULE_152__ = __webpack_require__(627);
321488
+ /* harmony import */ var _src_pro_mexc_js__WEBPACK_IMPORTED_MODULE_153__ = __webpack_require__(6484);
321489
+ /* harmony import */ var _src_pro_ndax_js__WEBPACK_IMPORTED_MODULE_154__ = __webpack_require__(8080);
321490
+ /* harmony import */ var _src_pro_okcoin_js__WEBPACK_IMPORTED_MODULE_155__ = __webpack_require__(7105);
321491
+ /* harmony import */ var _src_pro_okx_js__WEBPACK_IMPORTED_MODULE_156__ = __webpack_require__(2214);
321492
+ /* harmony import */ var _src_pro_onetrading_js__WEBPACK_IMPORTED_MODULE_157__ = __webpack_require__(9419);
321493
+ /* harmony import */ var _src_pro_p2b_js__WEBPACK_IMPORTED_MODULE_158__ = __webpack_require__(8516);
321494
+ /* harmony import */ var _src_pro_phemex_js__WEBPACK_IMPORTED_MODULE_159__ = __webpack_require__(4360);
321495
+ /* harmony import */ var _src_pro_poloniex_js__WEBPACK_IMPORTED_MODULE_160__ = __webpack_require__(7924);
321496
+ /* harmony import */ var _src_pro_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_161__ = __webpack_require__(3541);
321497
+ /* harmony import */ var _src_pro_probit_js__WEBPACK_IMPORTED_MODULE_162__ = __webpack_require__(9782);
321498
+ /* harmony import */ var _src_pro_upbit_js__WEBPACK_IMPORTED_MODULE_163__ = __webpack_require__(7614);
321499
+ /* harmony import */ var _src_pro_wazirx_js__WEBPACK_IMPORTED_MODULE_164__ = __webpack_require__(4828);
321500
+ /* harmony import */ var _src_pro_whitebit_js__WEBPACK_IMPORTED_MODULE_165__ = __webpack_require__(5630);
321501
+ /* harmony import */ var _src_pro_woo_js__WEBPACK_IMPORTED_MODULE_166__ = __webpack_require__(3910);
320759
321502
  /*
320760
321503
 
320761
321504
  MIT License
@@ -320790,7 +321533,7 @@ SOFTWARE.
320790
321533
 
320791
321534
  //-----------------------------------------------------------------------------
320792
321535
  // this is updated by vss.js when building
320793
- const version = '4.2.73';
321536
+ const version = '4.2.75';
320794
321537
  _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e.ccxtVersion = version;
320795
321538
  //-----------------------------------------------------------------------------
320796
321539
 
@@ -320893,6 +321636,7 @@ _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e.ccxtVersion
320893
321636
 
320894
321637
 
320895
321638
 
321639
+
320896
321640
 
320897
321641
 
320898
321642
  // pro exchanges
@@ -321054,79 +321798,80 @@ const exchanges = {
321054
321798
  'probit': _src_probit_js__WEBPACK_IMPORTED_MODULE_92__/* ["default"] */ .Z,
321055
321799
  'timex': _src_timex_js__WEBPACK_IMPORTED_MODULE_93__/* ["default"] */ .Z,
321056
321800
  'tokocrypto': _src_tokocrypto_js__WEBPACK_IMPORTED_MODULE_94__/* ["default"] */ .Z,
321057
- 'upbit': _src_upbit_js__WEBPACK_IMPORTED_MODULE_95__/* ["default"] */ .Z,
321058
- 'wavesexchange': _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_96__/* ["default"] */ .Z,
321059
- 'wazirx': _src_wazirx_js__WEBPACK_IMPORTED_MODULE_97__/* ["default"] */ .Z,
321060
- 'whitebit': _src_whitebit_js__WEBPACK_IMPORTED_MODULE_98__/* ["default"] */ .Z,
321061
- 'woo': _src_woo_js__WEBPACK_IMPORTED_MODULE_99__/* ["default"] */ .Z,
321062
- 'yobit': _src_yobit_js__WEBPACK_IMPORTED_MODULE_100__/* ["default"] */ .Z,
321063
- 'zaif': _src_zaif_js__WEBPACK_IMPORTED_MODULE_101__/* ["default"] */ .Z,
321064
- 'zonda': _src_zonda_js__WEBPACK_IMPORTED_MODULE_102__/* ["default"] */ .Z,
321801
+ 'tradeogre': _src_tradeogre_js__WEBPACK_IMPORTED_MODULE_95__/* ["default"] */ .Z,
321802
+ 'upbit': _src_upbit_js__WEBPACK_IMPORTED_MODULE_96__/* ["default"] */ .Z,
321803
+ 'wavesexchange': _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_97__/* ["default"] */ .Z,
321804
+ 'wazirx': _src_wazirx_js__WEBPACK_IMPORTED_MODULE_98__/* ["default"] */ .Z,
321805
+ 'whitebit': _src_whitebit_js__WEBPACK_IMPORTED_MODULE_99__/* ["default"] */ .Z,
321806
+ 'woo': _src_woo_js__WEBPACK_IMPORTED_MODULE_100__/* ["default"] */ .Z,
321807
+ 'yobit': _src_yobit_js__WEBPACK_IMPORTED_MODULE_101__/* ["default"] */ .Z,
321808
+ 'zaif': _src_zaif_js__WEBPACK_IMPORTED_MODULE_102__/* ["default"] */ .Z,
321809
+ 'zonda': _src_zonda_js__WEBPACK_IMPORTED_MODULE_103__/* ["default"] */ .Z,
321065
321810
  };
321066
321811
  const pro = {
321067
- 'alpaca': _src_pro_alpaca_js__WEBPACK_IMPORTED_MODULE_103__/* ["default"] */ .Z,
321068
- 'ascendex': _src_pro_ascendex_js__WEBPACK_IMPORTED_MODULE_104__/* ["default"] */ .Z,
321069
- 'bequant': _src_pro_bequant_js__WEBPACK_IMPORTED_MODULE_105__/* ["default"] */ .Z,
321070
- 'binance': _src_pro_binance_js__WEBPACK_IMPORTED_MODULE_106__/* ["default"] */ .Z,
321071
- 'binancecoinm': _src_pro_binancecoinm_js__WEBPACK_IMPORTED_MODULE_107__/* ["default"] */ .Z,
321072
- 'binanceus': _src_pro_binanceus_js__WEBPACK_IMPORTED_MODULE_108__/* ["default"] */ .Z,
321073
- 'binanceusdm': _src_pro_binanceusdm_js__WEBPACK_IMPORTED_MODULE_109__/* ["default"] */ .Z,
321074
- 'bingx': _src_pro_bingx_js__WEBPACK_IMPORTED_MODULE_110__/* ["default"] */ .Z,
321075
- 'bitcoincom': _src_pro_bitcoincom_js__WEBPACK_IMPORTED_MODULE_111__/* ["default"] */ .Z,
321076
- 'bitfinex': _src_pro_bitfinex_js__WEBPACK_IMPORTED_MODULE_112__/* ["default"] */ .Z,
321077
- 'bitfinex2': _src_pro_bitfinex2_js__WEBPACK_IMPORTED_MODULE_113__/* ["default"] */ .Z,
321078
- 'bitget': _src_pro_bitget_js__WEBPACK_IMPORTED_MODULE_114__/* ["default"] */ .Z,
321079
- 'bitmart': _src_pro_bitmart_js__WEBPACK_IMPORTED_MODULE_115__/* ["default"] */ .Z,
321080
- 'bitmex': _src_pro_bitmex_js__WEBPACK_IMPORTED_MODULE_116__/* ["default"] */ .Z,
321081
- 'bitopro': _src_pro_bitopro_js__WEBPACK_IMPORTED_MODULE_117__/* ["default"] */ .Z,
321082
- 'bitpanda': _src_pro_bitpanda_js__WEBPACK_IMPORTED_MODULE_118__/* ["default"] */ .Z,
321083
- 'bitrue': _src_pro_bitrue_js__WEBPACK_IMPORTED_MODULE_119__/* ["default"] */ .Z,
321084
- 'bitstamp': _src_pro_bitstamp_js__WEBPACK_IMPORTED_MODULE_120__/* ["default"] */ .Z,
321085
- 'bitvavo': _src_pro_bitvavo_js__WEBPACK_IMPORTED_MODULE_121__/* ["default"] */ .Z,
321086
- 'blockchaincom': _src_pro_blockchaincom_js__WEBPACK_IMPORTED_MODULE_122__/* ["default"] */ .Z,
321087
- 'bybit': _src_pro_bybit_js__WEBPACK_IMPORTED_MODULE_123__/* ["default"] */ .Z,
321088
- 'cex': _src_pro_cex_js__WEBPACK_IMPORTED_MODULE_124__/* ["default"] */ .Z,
321089
- 'coinbase': _src_pro_coinbase_js__WEBPACK_IMPORTED_MODULE_125__/* ["default"] */ .Z,
321090
- 'coinbaseinternational': _src_pro_coinbaseinternational_js__WEBPACK_IMPORTED_MODULE_126__/* ["default"] */ .Z,
321091
- 'coinbasepro': _src_pro_coinbasepro_js__WEBPACK_IMPORTED_MODULE_127__/* ["default"] */ .Z,
321092
- 'coincheck': _src_pro_coincheck_js__WEBPACK_IMPORTED_MODULE_128__/* ["default"] */ .Z,
321093
- 'coinex': _src_pro_coinex_js__WEBPACK_IMPORTED_MODULE_129__/* ["default"] */ .Z,
321094
- 'coinone': _src_pro_coinone_js__WEBPACK_IMPORTED_MODULE_130__/* ["default"] */ .Z,
321095
- 'cryptocom': _src_pro_cryptocom_js__WEBPACK_IMPORTED_MODULE_131__/* ["default"] */ .Z,
321096
- 'currencycom': _src_pro_currencycom_js__WEBPACK_IMPORTED_MODULE_132__/* ["default"] */ .Z,
321097
- 'deribit': _src_pro_deribit_js__WEBPACK_IMPORTED_MODULE_133__/* ["default"] */ .Z,
321098
- 'exmo': _src_pro_exmo_js__WEBPACK_IMPORTED_MODULE_134__/* ["default"] */ .Z,
321099
- 'gate': _src_pro_gate_js__WEBPACK_IMPORTED_MODULE_135__/* ["default"] */ .Z,
321100
- 'gateio': _src_pro_gateio_js__WEBPACK_IMPORTED_MODULE_136__/* ["default"] */ .Z,
321101
- 'gemini': _src_pro_gemini_js__WEBPACK_IMPORTED_MODULE_137__/* ["default"] */ .Z,
321102
- 'hitbtc': _src_pro_hitbtc_js__WEBPACK_IMPORTED_MODULE_138__/* ["default"] */ .Z,
321103
- 'hollaex': _src_pro_hollaex_js__WEBPACK_IMPORTED_MODULE_139__/* ["default"] */ .Z,
321104
- 'htx': _src_pro_htx_js__WEBPACK_IMPORTED_MODULE_140__/* ["default"] */ .Z,
321105
- 'huobi': _src_pro_huobi_js__WEBPACK_IMPORTED_MODULE_141__/* ["default"] */ .Z,
321106
- 'huobijp': _src_pro_huobijp_js__WEBPACK_IMPORTED_MODULE_142__/* ["default"] */ .Z,
321107
- 'hyperliquid': _src_pro_hyperliquid_js__WEBPACK_IMPORTED_MODULE_143__/* ["default"] */ .Z,
321108
- 'idex': _src_pro_idex_js__WEBPACK_IMPORTED_MODULE_144__/* ["default"] */ .Z,
321109
- 'independentreserve': _src_pro_independentreserve_js__WEBPACK_IMPORTED_MODULE_145__/* ["default"] */ .Z,
321110
- 'kraken': _src_pro_kraken_js__WEBPACK_IMPORTED_MODULE_146__/* ["default"] */ .Z,
321111
- 'krakenfutures': _src_pro_krakenfutures_js__WEBPACK_IMPORTED_MODULE_147__/* ["default"] */ .Z,
321112
- 'kucoin': _src_pro_kucoin_js__WEBPACK_IMPORTED_MODULE_148__/* ["default"] */ .Z,
321113
- 'kucoinfutures': _src_pro_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_149__/* ["default"] */ .Z,
321114
- 'lbank': _src_pro_lbank_js__WEBPACK_IMPORTED_MODULE_150__/* ["default"] */ .Z,
321115
- 'luno': _src_pro_luno_js__WEBPACK_IMPORTED_MODULE_151__/* ["default"] */ .Z,
321116
- 'mexc': _src_pro_mexc_js__WEBPACK_IMPORTED_MODULE_152__/* ["default"] */ .Z,
321117
- 'ndax': _src_pro_ndax_js__WEBPACK_IMPORTED_MODULE_153__/* ["default"] */ .Z,
321118
- 'okcoin': _src_pro_okcoin_js__WEBPACK_IMPORTED_MODULE_154__/* ["default"] */ .Z,
321119
- 'okx': _src_pro_okx_js__WEBPACK_IMPORTED_MODULE_155__/* ["default"] */ .Z,
321120
- 'onetrading': _src_pro_onetrading_js__WEBPACK_IMPORTED_MODULE_156__/* ["default"] */ .Z,
321121
- 'p2b': _src_pro_p2b_js__WEBPACK_IMPORTED_MODULE_157__/* ["default"] */ .Z,
321122
- 'phemex': _src_pro_phemex_js__WEBPACK_IMPORTED_MODULE_158__/* ["default"] */ .Z,
321123
- 'poloniex': _src_pro_poloniex_js__WEBPACK_IMPORTED_MODULE_159__/* ["default"] */ .Z,
321124
- 'poloniexfutures': _src_pro_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_160__/* ["default"] */ .Z,
321125
- 'probit': _src_pro_probit_js__WEBPACK_IMPORTED_MODULE_161__/* ["default"] */ .Z,
321126
- 'upbit': _src_pro_upbit_js__WEBPACK_IMPORTED_MODULE_162__/* ["default"] */ .Z,
321127
- 'wazirx': _src_pro_wazirx_js__WEBPACK_IMPORTED_MODULE_163__/* ["default"] */ .Z,
321128
- 'whitebit': _src_pro_whitebit_js__WEBPACK_IMPORTED_MODULE_164__/* ["default"] */ .Z,
321129
- 'woo': _src_pro_woo_js__WEBPACK_IMPORTED_MODULE_165__/* ["default"] */ .Z,
321812
+ 'alpaca': _src_pro_alpaca_js__WEBPACK_IMPORTED_MODULE_104__/* ["default"] */ .Z,
321813
+ 'ascendex': _src_pro_ascendex_js__WEBPACK_IMPORTED_MODULE_105__/* ["default"] */ .Z,
321814
+ 'bequant': _src_pro_bequant_js__WEBPACK_IMPORTED_MODULE_106__/* ["default"] */ .Z,
321815
+ 'binance': _src_pro_binance_js__WEBPACK_IMPORTED_MODULE_107__/* ["default"] */ .Z,
321816
+ 'binancecoinm': _src_pro_binancecoinm_js__WEBPACK_IMPORTED_MODULE_108__/* ["default"] */ .Z,
321817
+ 'binanceus': _src_pro_binanceus_js__WEBPACK_IMPORTED_MODULE_109__/* ["default"] */ .Z,
321818
+ 'binanceusdm': _src_pro_binanceusdm_js__WEBPACK_IMPORTED_MODULE_110__/* ["default"] */ .Z,
321819
+ 'bingx': _src_pro_bingx_js__WEBPACK_IMPORTED_MODULE_111__/* ["default"] */ .Z,
321820
+ 'bitcoincom': _src_pro_bitcoincom_js__WEBPACK_IMPORTED_MODULE_112__/* ["default"] */ .Z,
321821
+ 'bitfinex': _src_pro_bitfinex_js__WEBPACK_IMPORTED_MODULE_113__/* ["default"] */ .Z,
321822
+ 'bitfinex2': _src_pro_bitfinex2_js__WEBPACK_IMPORTED_MODULE_114__/* ["default"] */ .Z,
321823
+ 'bitget': _src_pro_bitget_js__WEBPACK_IMPORTED_MODULE_115__/* ["default"] */ .Z,
321824
+ 'bitmart': _src_pro_bitmart_js__WEBPACK_IMPORTED_MODULE_116__/* ["default"] */ .Z,
321825
+ 'bitmex': _src_pro_bitmex_js__WEBPACK_IMPORTED_MODULE_117__/* ["default"] */ .Z,
321826
+ 'bitopro': _src_pro_bitopro_js__WEBPACK_IMPORTED_MODULE_118__/* ["default"] */ .Z,
321827
+ 'bitpanda': _src_pro_bitpanda_js__WEBPACK_IMPORTED_MODULE_119__/* ["default"] */ .Z,
321828
+ 'bitrue': _src_pro_bitrue_js__WEBPACK_IMPORTED_MODULE_120__/* ["default"] */ .Z,
321829
+ 'bitstamp': _src_pro_bitstamp_js__WEBPACK_IMPORTED_MODULE_121__/* ["default"] */ .Z,
321830
+ 'bitvavo': _src_pro_bitvavo_js__WEBPACK_IMPORTED_MODULE_122__/* ["default"] */ .Z,
321831
+ 'blockchaincom': _src_pro_blockchaincom_js__WEBPACK_IMPORTED_MODULE_123__/* ["default"] */ .Z,
321832
+ 'bybit': _src_pro_bybit_js__WEBPACK_IMPORTED_MODULE_124__/* ["default"] */ .Z,
321833
+ 'cex': _src_pro_cex_js__WEBPACK_IMPORTED_MODULE_125__/* ["default"] */ .Z,
321834
+ 'coinbase': _src_pro_coinbase_js__WEBPACK_IMPORTED_MODULE_126__/* ["default"] */ .Z,
321835
+ 'coinbaseinternational': _src_pro_coinbaseinternational_js__WEBPACK_IMPORTED_MODULE_127__/* ["default"] */ .Z,
321836
+ 'coinbasepro': _src_pro_coinbasepro_js__WEBPACK_IMPORTED_MODULE_128__/* ["default"] */ .Z,
321837
+ 'coincheck': _src_pro_coincheck_js__WEBPACK_IMPORTED_MODULE_129__/* ["default"] */ .Z,
321838
+ 'coinex': _src_pro_coinex_js__WEBPACK_IMPORTED_MODULE_130__/* ["default"] */ .Z,
321839
+ 'coinone': _src_pro_coinone_js__WEBPACK_IMPORTED_MODULE_131__/* ["default"] */ .Z,
321840
+ 'cryptocom': _src_pro_cryptocom_js__WEBPACK_IMPORTED_MODULE_132__/* ["default"] */ .Z,
321841
+ 'currencycom': _src_pro_currencycom_js__WEBPACK_IMPORTED_MODULE_133__/* ["default"] */ .Z,
321842
+ 'deribit': _src_pro_deribit_js__WEBPACK_IMPORTED_MODULE_134__/* ["default"] */ .Z,
321843
+ 'exmo': _src_pro_exmo_js__WEBPACK_IMPORTED_MODULE_135__/* ["default"] */ .Z,
321844
+ 'gate': _src_pro_gate_js__WEBPACK_IMPORTED_MODULE_136__/* ["default"] */ .Z,
321845
+ 'gateio': _src_pro_gateio_js__WEBPACK_IMPORTED_MODULE_137__/* ["default"] */ .Z,
321846
+ 'gemini': _src_pro_gemini_js__WEBPACK_IMPORTED_MODULE_138__/* ["default"] */ .Z,
321847
+ 'hitbtc': _src_pro_hitbtc_js__WEBPACK_IMPORTED_MODULE_139__/* ["default"] */ .Z,
321848
+ 'hollaex': _src_pro_hollaex_js__WEBPACK_IMPORTED_MODULE_140__/* ["default"] */ .Z,
321849
+ 'htx': _src_pro_htx_js__WEBPACK_IMPORTED_MODULE_141__/* ["default"] */ .Z,
321850
+ 'huobi': _src_pro_huobi_js__WEBPACK_IMPORTED_MODULE_142__/* ["default"] */ .Z,
321851
+ 'huobijp': _src_pro_huobijp_js__WEBPACK_IMPORTED_MODULE_143__/* ["default"] */ .Z,
321852
+ 'hyperliquid': _src_pro_hyperliquid_js__WEBPACK_IMPORTED_MODULE_144__/* ["default"] */ .Z,
321853
+ 'idex': _src_pro_idex_js__WEBPACK_IMPORTED_MODULE_145__/* ["default"] */ .Z,
321854
+ 'independentreserve': _src_pro_independentreserve_js__WEBPACK_IMPORTED_MODULE_146__/* ["default"] */ .Z,
321855
+ 'kraken': _src_pro_kraken_js__WEBPACK_IMPORTED_MODULE_147__/* ["default"] */ .Z,
321856
+ 'krakenfutures': _src_pro_krakenfutures_js__WEBPACK_IMPORTED_MODULE_148__/* ["default"] */ .Z,
321857
+ 'kucoin': _src_pro_kucoin_js__WEBPACK_IMPORTED_MODULE_149__/* ["default"] */ .Z,
321858
+ 'kucoinfutures': _src_pro_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_150__/* ["default"] */ .Z,
321859
+ 'lbank': _src_pro_lbank_js__WEBPACK_IMPORTED_MODULE_151__/* ["default"] */ .Z,
321860
+ 'luno': _src_pro_luno_js__WEBPACK_IMPORTED_MODULE_152__/* ["default"] */ .Z,
321861
+ 'mexc': _src_pro_mexc_js__WEBPACK_IMPORTED_MODULE_153__/* ["default"] */ .Z,
321862
+ 'ndax': _src_pro_ndax_js__WEBPACK_IMPORTED_MODULE_154__/* ["default"] */ .Z,
321863
+ 'okcoin': _src_pro_okcoin_js__WEBPACK_IMPORTED_MODULE_155__/* ["default"] */ .Z,
321864
+ 'okx': _src_pro_okx_js__WEBPACK_IMPORTED_MODULE_156__/* ["default"] */ .Z,
321865
+ 'onetrading': _src_pro_onetrading_js__WEBPACK_IMPORTED_MODULE_157__/* ["default"] */ .Z,
321866
+ 'p2b': _src_pro_p2b_js__WEBPACK_IMPORTED_MODULE_158__/* ["default"] */ .Z,
321867
+ 'phemex': _src_pro_phemex_js__WEBPACK_IMPORTED_MODULE_159__/* ["default"] */ .Z,
321868
+ 'poloniex': _src_pro_poloniex_js__WEBPACK_IMPORTED_MODULE_160__/* ["default"] */ .Z,
321869
+ 'poloniexfutures': _src_pro_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_161__/* ["default"] */ .Z,
321870
+ 'probit': _src_pro_probit_js__WEBPACK_IMPORTED_MODULE_162__/* ["default"] */ .Z,
321871
+ 'upbit': _src_pro_upbit_js__WEBPACK_IMPORTED_MODULE_163__/* ["default"] */ .Z,
321872
+ 'wazirx': _src_pro_wazirx_js__WEBPACK_IMPORTED_MODULE_164__/* ["default"] */ .Z,
321873
+ 'whitebit': _src_pro_whitebit_js__WEBPACK_IMPORTED_MODULE_165__/* ["default"] */ .Z,
321874
+ 'woo': _src_pro_woo_js__WEBPACK_IMPORTED_MODULE_166__/* ["default"] */ .Z,
321130
321875
  };
321131
321876
  for (const exchange in pro) {
321132
321877
  // const ccxtExchange = exchanges[exchange]
@@ -321139,7 +321884,7 @@ for (const exchange in pro) {
321139
321884
  pro.exchanges = Object.keys(pro);
321140
321885
  pro['Exchange'] = _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e; // now the same for rest and ts
321141
321886
  //-----------------------------------------------------------------------------
321142
- const ccxt = Object.assign({ version, Exchange: _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e, Precise: _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_166__/* .Precise */ .O, 'exchanges': Object.keys(exchanges), 'pro': pro }, exchanges, _src_base_functions_js__WEBPACK_IMPORTED_MODULE_167__, _src_base_errors_js__WEBPACK_IMPORTED_MODULE_168__);
321887
+ const ccxt = Object.assign({ version, Exchange: _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e, Precise: _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_167__/* .Precise */ .O, 'exchanges': Object.keys(exchanges), 'pro': pro }, exchanges, _src_base_functions_js__WEBPACK_IMPORTED_MODULE_168__, _src_base_errors_js__WEBPACK_IMPORTED_MODULE_169__);
321143
321888
 
321144
321889
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ccxt);
321145
321890
  //-----------------------------------------------------------------------------