ccxt 4.2.99 → 4.3.1

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 (317) hide show
  1. package/README.md +3 -3
  2. package/dist/cjs/ccxt.js +1 -1
  3. package/dist/cjs/src/ascendex.js +1 -1
  4. package/dist/cjs/src/binance.js +56 -0
  5. package/dist/cjs/src/bingx.js +2 -2
  6. package/dist/cjs/src/bitget.js +64 -2
  7. package/dist/cjs/src/bybit.js +1 -1
  8. package/dist/cjs/src/coinex.js +55 -60
  9. package/dist/cjs/src/kraken.js +8 -3
  10. package/dist/cjs/src/kucoin.js +19 -17
  11. package/dist/cjs/src/okx.js +76 -5
  12. package/dist/cjs/src/pro/kraken.js +2 -2
  13. package/dist/cjs/src/woo.js +40 -0
  14. package/js/ccxt.d.ts +1 -1
  15. package/js/ccxt.js +1 -1
  16. package/js/src/ascendex.js +2 -2
  17. package/js/src/binance.d.ts +3 -1
  18. package/js/src/binance.js +56 -0
  19. package/js/src/bingx.js +3 -3
  20. package/js/src/bitget.d.ts +1 -0
  21. package/js/src/bitget.js +64 -2
  22. package/js/src/bybit.js +1 -1
  23. package/js/src/coinex.js +55 -60
  24. package/js/src/kraken.js +8 -3
  25. package/js/src/kucoin.js +19 -17
  26. package/js/src/okx.d.ts +1 -0
  27. package/js/src/okx.js +76 -5
  28. package/js/src/pro/kraken.js +2 -2
  29. package/js/src/woo.d.ts +1 -0
  30. package/js/src/woo.js +40 -0
  31. package/package.json +2 -1
  32. package/.dockerignore +0 -6
  33. package/.eslintignore +0 -1
  34. package/.git-templates/hooks/pre-push +0 -55
  35. package/.gitattributes +0 -7
  36. package/CHANGELOG.md +0 -6003
  37. package/CODEOWNERS +0 -1
  38. package/CONTRIBUTING.md +0 -1099
  39. package/build.sh +0 -217
  40. package/change.sh +0 -18
  41. package/cleanup.sh +0 -18
  42. package/composer-install.sh +0 -20
  43. package/dist/ccxt.browser.js +0 -327256
  44. package/dist/ccxt.browser.min.js +0 -30
  45. package/dist/ccxt.browser.min.js.LICENSE.txt +0 -12
  46. package/doc/FAQ.rst +0 -1
  47. package/doc/Makefile +0 -20
  48. package/doc/_static/css/dark.css +0 -101
  49. package/doc/_static/css/index.css +0 -128
  50. package/doc/_static/favicon.ico +0 -0
  51. package/doc/_static/javascript/binance-portal.min.js +0 -2369
  52. package/doc/_static/javascript/index.js +0 -195
  53. package/doc/_static/javascript/jquery-ui.min.js +0 -6
  54. package/doc/ccxt.pro.install.rst +0 -1
  55. package/doc/ccxt.pro.manual.rst +0 -1665
  56. package/doc/exchange-markets-by-country.rst +0 -1423
  57. package/doc/exchange-markets.rst +0 -1441
  58. package/doc/index.rst +0 -35
  59. package/doc/install.rst +0 -1
  60. package/doc/make.bat +0 -36
  61. package/doc/manual.rst +0 -7471
  62. package/doc/readme.rst +0 -2191
  63. package/doc/requirements.txt +0 -6
  64. package/examples/ccxt.pro/html/watchTicker.html +0 -51
  65. package/examples/ccxt.pro/js/binance-fetch-balance-snapshot-watch-balance-updates.js +0 -55
  66. package/examples/ccxt.pro/js/binance-https-proxy.js +0 -48
  67. package/examples/ccxt.pro/js/binance-watch-ohlcv-many-symbols-continuously.js +0 -38
  68. package/examples/ccxt.pro/js/binance-watch-ohlcv-many-symbols.js +0 -64
  69. package/examples/ccxt.pro/js/binance-watch-ticker-many-symbols.js +0 -62
  70. package/examples/ccxt.pro/js/build-ohlcv-many-symbols.js +0 -68
  71. package/examples/ccxt.pro/js/calculate-ohlcvs-from-trades-warmup.js +0 -82
  72. package/examples/ccxt.pro/js/calculate-ohlcvs-from-trades.js +0 -59
  73. package/examples/ccxt.pro/js/exchange-capabitities.js +0 -72
  74. package/examples/ccxt.pro/js/exchange-close.js +0 -46
  75. package/examples/ccxt.pro/js/gateio-swap-watch-many-orderbooks.js +0 -30
  76. package/examples/ccxt.pro/js/gateio-watch-balance.js +0 -23
  77. package/examples/ccxt.pro/js/gateio-watch-order-book.js +0 -71
  78. package/examples/ccxt.pro/js/graceful-shutdown.js +0 -43
  79. package/examples/ccxt.pro/js/many-exchanges-many-streams.js +0 -37
  80. package/examples/ccxt.pro/js/okex-create-futures-order.js +0 -48
  81. package/examples/ccxt.pro/js/okex-watch-balance-and-create-order.js +0 -54
  82. package/examples/ccxt.pro/js/okx-watch-tickers.js +0 -31
  83. package/examples/ccxt.pro/js/one-exchange-many-different-streams.js +0 -46
  84. package/examples/ccxt.pro/js/one-exchange-many-streams-2.js +0 -26
  85. package/examples/ccxt.pro/js/one-exchange-many-streams.js +0 -28
  86. package/examples/ccxt.pro/js/socks-binance-watch-orderbook.js +0 -30
  87. package/examples/ccxt.pro/js/watch-fetch-many-exchanges-many-ordersbooks.js +0 -40
  88. package/examples/ccxt.pro/js/watch-many-exchanges-many-ordersbooks.js +0 -38
  89. package/examples/ccxt.pro/js/watch-many-exchanges-many-symbols.js +0 -40
  90. package/examples/ccxt.pro/js/watch-many-orderbooks.js +0 -27
  91. package/examples/ccxt.pro/js/watch-new-trades-only.js +0 -43
  92. package/examples/ccxt.pro/js/watch-new-trades.js +0 -42
  93. package/examples/ccxt.pro/js/watch-trades-many-symbols.js +0 -29
  94. package/examples/ccxt.pro/js/watch-vs-fetch.js +0 -29
  95. package/examples/cs/Examples.sln +0 -22
  96. package/examples/cs/c#.csproj +0 -19
  97. package/examples/html/basic-cors-proxy.html +0 -46
  98. package/examples/html/basic-inheritance.html +0 -47
  99. package/examples/html/basic-poller.html +0 -52
  100. package/examples/html/basic-rate-limiting.html +0 -49
  101. package/examples/html/basic.html +0 -43
  102. package/examples/html/binance-cors-proxy.html +0 -28
  103. package/examples/html/bitmex-browser-cors-proxy.js +0 -7
  104. package/examples/html/bitmex-cors.html +0 -46
  105. package/examples/html/tradingview-charts.html +0 -61
  106. package/examples/html/webworker/index.html +0 -97
  107. package/examples/html/webworker/worker.js +0 -43
  108. package/examples/js/advanced-error-handling.js +0 -39
  109. package/examples/js/aggregate-orderbook.js +0 -54
  110. package/examples/js/arbitrage-pairs.js +0 -130
  111. package/examples/js/basic-chart.js +0 -29
  112. package/examples/js/basic-orderbook-polling.js +0 -13
  113. package/examples/js/bcc-vs-bch.js +0 -115
  114. package/examples/js/benchmark.js +0 -104
  115. package/examples/js/binance-fetch-all-deposits.js +0 -45
  116. package/examples/js/binance-fetch-ohlcv-many-symbols-async-await.js +0 -34
  117. package/examples/js/binance-fetch-ohlcv-many-symbols-promise-then-callbacks.js +0 -33
  118. package/examples/js/binance-fetchTicker-delivery-vs-future.js +0 -31
  119. package/examples/js/binance-futures-transfer-from-sub-account-to-master.js +0 -41
  120. package/examples/js/binance-margin-stop-order.js +0 -39
  121. package/examples/js/binance-server-time.js +0 -34
  122. package/examples/js/binance-universal-transfer.js +0 -16
  123. package/examples/js/bitfinex-fetch-trades.js +0 -35
  124. package/examples/js/bitfinex2-fetch-trades.js +0 -35
  125. package/examples/js/bitmex-browser-cors-proxy.js +0 -7
  126. package/examples/js/bitpanda-fetchMyTrades-reduce.js +0 -36
  127. package/examples/js/bitrue-fetch-balance.js +0 -28
  128. package/examples/js/bitstamp-private-api.js +0 -115
  129. package/examples/js/bitstamp-public-api.js +0 -39
  130. package/examples/js/bittrex-balance.js +0 -50
  131. package/examples/js/bittrex-fetch-closed-orders-history.js +0 -69
  132. package/examples/js/blockchaincom-withdrawal.js +0 -59
  133. package/examples/js/build-ohlcv-bars.js +0 -48
  134. package/examples/js/builtin-rate-limiting-rest-poller.js +0 -25
  135. package/examples/js/bybit-trailing.js +0 -62
  136. package/examples/js/bybit-updated.cjs +0 -154
  137. package/examples/js/coinbase-fetch-all-balances.js +0 -36
  138. package/examples/js/coinex-fetch-all-deposit-addresses-using-fetchDepositAddress.js +0 -47
  139. package/examples/js/coinex-futures.js +0 -75
  140. package/examples/js/coinone-fetch-tickers.js +0 -54
  141. package/examples/js/coinone-markets.js +0 -16
  142. package/examples/js/compare-two-exchanges-capabilities.js +0 -36
  143. package/examples/js/cors-proxy.js +0 -5
  144. package/examples/js/create-order-handle-errors.js +0 -55
  145. package/examples/js/create-order-position-with-takeprofit-stoploss.js +0 -71
  146. package/examples/js/create-order-with-retry.js +0 -65
  147. package/examples/js/create-order-ws-example.js +0 -25
  148. package/examples/js/create-orders-example.js +0 -17
  149. package/examples/js/create-trailing-amount-order.js +0 -36
  150. package/examples/js/create-trailing-percent-order.js +0 -36
  151. package/examples/js/credentials.json +0 -5
  152. package/examples/js/custom-proxy-agent-for-js.js +0 -10
  153. package/examples/js/custom-proxy-url.js +0 -23
  154. package/examples/js/delta-maintenance-margin-rate-max-leverage.js +0 -60
  155. package/examples/js/env-variables.js +0 -26
  156. package/examples/js/error-handling.js +0 -89
  157. package/examples/js/exchange-capabilities.js +0 -135
  158. package/examples/js/exchanges-by-volume.js +0 -60
  159. package/examples/js/exchanges.js +0 -40
  160. package/examples/js/fetch-all-balances.js +0 -219
  161. package/examples/js/fetch-all-tickers-to-files-2.js +0 -53
  162. package/examples/js/fetch-all-tickers-to-files.js +0 -77
  163. package/examples/js/fetch-balance.js +0 -28
  164. package/examples/js/fetch-create-deposit-address.js +0 -101
  165. package/examples/js/fetch-from-many-exchanges-simultaneously.js +0 -21
  166. package/examples/js/fetch-funding-rate-history.js +0 -25
  167. package/examples/js/fetch-futures/prettier.config.js +0 -5
  168. package/examples/js/fetch-futures/src/index.js +0 -25
  169. package/examples/js/fetch-ohlcv-from-to-mark-index-premium.js +0 -72
  170. package/examples/js/fetch-ohlcv-many-exchanges-continuosly.js +0 -39
  171. package/examples/js/fetch-ohlcv.js +0 -16
  172. package/examples/js/fetch-okex-futures.js +0 -22
  173. package/examples/js/fetch-orders.js +0 -27
  174. package/examples/js/fetch-ticker-from-multiple-exchanges.js +0 -35
  175. package/examples/js/fetch-ticker-where-available.js +0 -75
  176. package/examples/js/fetch-tickers/build/index.js +0 -19
  177. package/examples/js/fetch-tickers/prettier.config.js +0 -5
  178. package/examples/js/fetch-tickers/src/index.js +0 -17
  179. package/examples/js/gateio-create-batch-order.js +0 -43
  180. package/examples/js/gateio-futures.js +0 -49
  181. package/examples/js/gateio-open-close-contract.js +0 -49
  182. package/examples/js/gateio-swaps.js +0 -74
  183. package/examples/js/gdax-fetch-trades-pagination.js +0 -29
  184. package/examples/js/hitbtc2-withdraw.js +0 -61
  185. package/examples/js/how-to-import-one-exchange-esm.js +0 -10
  186. package/examples/js/huobi-futures.js +0 -71
  187. package/examples/js/huobi-open-close-contract.js +0 -63
  188. package/examples/js/huobi-swaps.js +0 -70
  189. package/examples/js/huobipro-market-buy-sell-fetch-trading-limits.js +0 -98
  190. package/examples/js/hybridCJSExample.cjs +0 -19
  191. package/examples/js/hybridESMExample.js +0 -19
  192. package/examples/js/idex-fetch-balance.js +0 -13
  193. package/examples/js/instantiate-all-at-once.js +0 -46
  194. package/examples/js/instantiate-all-from-json.js +0 -31
  195. package/examples/js/kraken-create-and-close-position.js +0 -54
  196. package/examples/js/kraken-fetch-order-trades.js +0 -33
  197. package/examples/js/kraken-margin-trading.js +0 -89
  198. package/examples/js/kucoin-rate-limit.js +0 -38
  199. package/examples/js/latoken-example.js +0 -108
  200. package/examples/js/live-orderbook.js +0 -106
  201. package/examples/js/live-ticker.js +0 -80
  202. package/examples/js/live-tickers.js +0 -74
  203. package/examples/js/load-all-contracts.js +0 -41
  204. package/examples/js/load-all-symbols-at-once.js +0 -69
  205. package/examples/js/load-all-tickers-at-once.js +0 -91
  206. package/examples/js/load-markets-to-files.js +0 -57
  207. package/examples/js/looping-over-all-symbols-of-specific-exchanges.js +0 -61
  208. package/examples/js/looping-over-specific-symbols-of-all-exchanges.js +0 -91
  209. package/examples/js/margin-loan-borrow-buy-sell-repay.js +0 -70
  210. package/examples/js/market-status-and-currency-status.js +0 -29
  211. package/examples/js/ohlcv-console-chart.js +0 -29
  212. package/examples/js/okex-fetch-closed-orders-archive.js +0 -31
  213. package/examples/js/okex-transfer.js +0 -51
  214. package/examples/js/okx-poll-fetch-my-trades.js +0 -37
  215. package/examples/js/okx-poll-rate-limit.js +0 -48
  216. package/examples/js/order-book-extra-level-depth-param.js +0 -20
  217. package/examples/js/phemex-create-order-position-with-takeprofit-stoploss.js +0 -49
  218. package/examples/js/poll-ohlcv.js +0 -43
  219. package/examples/js/poloniex-fetch-order-books.js +0 -35
  220. package/examples/js/poloniex-limits-amount-min.js +0 -62
  221. package/examples/js/proxy-round-robin.js +0 -98
  222. package/examples/js/proxy-usage.js +0 -32
  223. package/examples/js/sample-local-proxy-server-with-cors.js +0 -12
  224. package/examples/js/search-all-exchanges.js +0 -159
  225. package/examples/js/shared-load-markets.js +0 -80
  226. package/examples/js/sort-swap-markets-by-hourly-price-change.js +0 -55
  227. package/examples/js/symbols.js +0 -110
  228. package/examples/js/theocean.js +0 -41
  229. package/examples/js/tickers.js +0 -106
  230. package/examples/js/validate-paginated-data.js +0 -61
  231. package/examples/js/watch-OHLCV-For-Symbols.js +0 -15
  232. package/examples/js/watch-OHLCV.js +0 -12
  233. package/examples/js/watch-OrderBook-For-Symbols.js +0 -11
  234. package/examples/js/watch-Trades-For-Symbols.js +0 -11
  235. package/examples/js/watch-tickers.js +0 -11
  236. package/examples/js/watchOHLCVForSymbols.js +0 -15
  237. package/examples/js/watchOrderBookForSymbols.js +0 -11
  238. package/examples/js/watchPositions-many-exchanges-continuosly.d.ts +0 -2
  239. package/examples/js/watchPositions-many-exchanges-continuosly.d.ts.map +0 -1
  240. package/examples/js/watchPositions-many-exchanges-continuosly.js +0 -49
  241. package/examples/js/watchPositions.d.ts +0 -2
  242. package/examples/js/watchPositions.d.ts.map +0 -1
  243. package/examples/js/watchPositions.js +0 -13
  244. package/examples/js/watchPositionsForSymbols.d.ts +0 -2
  245. package/examples/js/watchPositionsForSymbols.d.ts.map +0 -1
  246. package/examples/js/watchPositionsForSymbols.js +0 -14
  247. package/examples/js/watchTradesForSymbols.js +0 -11
  248. package/examples/js/withdraw-from-one-exchange-to-another.js +0 -50
  249. package/examples/php/README.md +0 -7
  250. package/examples/py/README.md +0 -15
  251. package/examples/py/playing_with_ccxt_example.ipynb +0 -222
  252. package/examples/ts/.eslintrc +0 -111
  253. package/examples/ts/benchmark.ts +0 -134
  254. package/examples/ts/build-ohlcv-bars.ts +0 -53
  255. package/examples/ts/cli.ts +0 -397
  256. package/examples/ts/compare-two-exchanges-capabilities.ts +0 -36
  257. package/examples/ts/create-order-position-with-takeprofit-stoploss.ts +0 -89
  258. package/examples/ts/create-order-ws-example.ts +0 -33
  259. package/examples/ts/create-orders-example.ts +0 -21
  260. package/examples/ts/create-trailing-amount-order.ts +0 -37
  261. package/examples/ts/create-trailing-percent-order.ts +0 -37
  262. package/examples/ts/custom-proxy-agent-for-js.ts +0 -14
  263. package/examples/ts/fetch-futures/package-lock.json +0 -116
  264. package/examples/ts/fetch-futures/package.json +0 -34
  265. package/examples/ts/fetch-futures/prettier.config.js +0 -4
  266. package/examples/ts/fetch-futures/src/index.ts +0 -28
  267. package/examples/ts/fetch-futures/tsconfig.json +0 -28
  268. package/examples/ts/fetch-ohlcv-many-exchanges-continuosly.ts +0 -44
  269. package/examples/ts/fetch-ohlcv.ts +0 -17
  270. package/examples/ts/fetch-tickers/package-lock.json +0 -116
  271. package/examples/ts/fetch-tickers/package.json +0 -34
  272. package/examples/ts/fetch-tickers/prettier.config.js +0 -4
  273. package/examples/ts/fetch-tickers/src/index.ts +0 -21
  274. package/examples/ts/fetch-tickers/tsconfig.json +0 -28
  275. package/examples/ts/how-to-import-one-exchange-esm.ts +0 -11
  276. package/examples/ts/kraken-create-and-close-position.ts +0 -69
  277. package/examples/ts/margin-loan-borrow-buy-sell-repay.ts +0 -72
  278. package/examples/ts/nextjs-page-router/.eslintrc.json +0 -3
  279. package/examples/ts/nextjs-page-router/README.md +0 -43
  280. package/examples/ts/nextjs-page-router/next.config.js +0 -6
  281. package/examples/ts/nextjs-page-router/package-lock.json +0 -7425
  282. package/examples/ts/nextjs-page-router/package.json +0 -28
  283. package/examples/ts/nextjs-page-router/postcss.config.js +0 -6
  284. package/examples/ts/nextjs-page-router/public/favicon.ico +0 -0
  285. package/examples/ts/nextjs-page-router/src/pages/_app.tsx +0 -6
  286. package/examples/ts/nextjs-page-router/src/pages/_document.tsx +0 -13
  287. package/examples/ts/nextjs-page-router/src/pages/balance.tsx +0 -46
  288. package/examples/ts/nextjs-page-router/src/pages/index.tsx +0 -8
  289. package/examples/ts/nextjs-page-router/src/pages/tickers.tsx +0 -61
  290. package/examples/ts/nextjs-page-router/src/styles/globals.css +0 -27
  291. package/examples/ts/nextjs-page-router/tailwind.config.ts +0 -20
  292. package/examples/ts/nextjs-page-router/tsconfig.json +0 -22
  293. package/examples/ts/phemex-create-order-position-with-takeprofit-stoploss.ts +0 -62
  294. package/examples/ts/proxy-usage.ts +0 -41
  295. package/examples/ts/sample-local-proxy-server-with-cors.ts +0 -15
  296. package/examples/ts/watch-OHLCV-For-Symbols.ts +0 -17
  297. package/examples/ts/watch-OHLCV.ts +0 -14
  298. package/examples/ts/watch-OrderBook-For-Symbols.ts +0 -13
  299. package/examples/ts/watch-Trades-For-Symbols.ts +0 -13
  300. package/examples/ts/watch-tickers.ts +0 -13
  301. package/examples/ts/watchPositions-many-exchanges-continuosly.ts +0 -53
  302. package/examples/ts/watchPositions.ts +0 -15
  303. package/examples/ts/watchPositionsForSymbols.ts +0 -16
  304. package/examples/tsconfig.json +0 -27
  305. package/examples2md.js +0 -79
  306. package/gource.sh +0 -3
  307. package/index.html +0 -7
  308. package/jsdoc2md.js +0 -122
  309. package/multilang.sh +0 -164
  310. package/pro-tests.json +0 -57
  311. package/pyproject.toml +0 -8
  312. package/rollup.config.js +0 -60
  313. package/skip-tests.json +0 -1653
  314. package/test-commonjs.cjs +0 -65
  315. package/tests-manager.sh +0 -96
  316. package/tsconfig.json +0 -111
  317. package/webpack.config.js +0 -46
package/js/src/coinex.js CHANGED
@@ -615,55 +615,52 @@ export default class coinex extends Exchange {
615
615
  * @method
616
616
  * @name coinex#fetchMarkets
617
617
  * @description retrieves data on all markets for coinex
618
- * @see https://viabtc.github.io/coinex_api_en_doc/spot/#docsspot001_market002_all_market_info
619
- * @see https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http006_market_list
618
+ * @see https://docs.coinex.com/api/v2/spot/market/http/list-market
619
+ * @see https://docs.coinex.com/api/v2/futures/market/http/list-market
620
620
  * @param {object} [params] extra parameters specific to the exchange API endpoint
621
621
  * @returns {object[]} an array of objects representing market data
622
622
  */
623
- let promises = [
623
+ const promisesUnresolved = [
624
624
  this.fetchSpotMarkets(params),
625
625
  this.fetchContractMarkets(params),
626
626
  ];
627
- promises = await Promise.all(promises);
627
+ const promises = await Promise.all(promisesUnresolved);
628
628
  const spotMarkets = promises[0];
629
629
  const swapMarkets = promises[1];
630
630
  return this.arrayConcat(spotMarkets, swapMarkets);
631
631
  }
632
632
  async fetchSpotMarkets(params) {
633
- const response = await this.v1PublicGetMarketInfo(params);
633
+ const response = await this.v2PublicGetSpotMarket(params);
634
634
  //
635
635
  // {
636
636
  // "code": 0,
637
- // "data": {
638
- // "WAVESBTC": {
639
- // "name": "WAVESBTC",
640
- // "min_amount": "1",
641
- // "maker_fee_rate": "0.001",
642
- // "taker_fee_rate": "0.001",
643
- // "pricing_name": "BTC",
644
- // "pricing_decimal": 8,
645
- // "trading_name": "WAVES",
646
- // "trading_decimal": 8
647
- // }
648
- // }
637
+ // "data": [
638
+ // {
639
+ // "base_ccy": "SORA",
640
+ // "base_ccy_precision": 8,
641
+ // "is_amm_available": true,
642
+ // "is_margin_available": false,
643
+ // "maker_fee_rate": "0.003",
644
+ // "market": "SORAUSDT",
645
+ // "min_amount": "500",
646
+ // "quote_ccy": "USDT",
647
+ // "quote_ccy_precision": 6,
648
+ // "taker_fee_rate": "0.003"
649
+ // },
650
+ // ],
651
+ // "message": "OK"
649
652
  // }
650
653
  //
651
- const markets = this.safeValue(response, 'data', {});
654
+ const markets = this.safeList(response, 'data', []);
652
655
  const result = [];
653
- const keys = Object.keys(markets);
654
- for (let i = 0; i < keys.length; i++) {
655
- const key = keys[i];
656
- const market = markets[key];
657
- const id = this.safeString(market, 'name');
658
- const tradingName = this.safeString(market, 'trading_name');
659
- const baseId = tradingName;
660
- const quoteId = this.safeString(market, 'pricing_name');
656
+ for (let i = 0; i < markets.length; i++) {
657
+ const market = markets[i];
658
+ const id = this.safeString(market, 'market');
659
+ const baseId = this.safeString(market, 'base_ccy');
660
+ const quoteId = this.safeString(market, 'quote_ccy');
661
661
  const base = this.safeCurrencyCode(baseId);
662
662
  const quote = this.safeCurrencyCode(quoteId);
663
- let symbol = base + '/' + quote;
664
- if (tradingName === id) {
665
- symbol = id;
666
- }
663
+ const symbol = base + '/' + quote;
667
664
  result.push({
668
665
  'id': id,
669
666
  'symbol': symbol,
@@ -691,8 +688,8 @@ export default class coinex extends Exchange {
691
688
  'strike': undefined,
692
689
  'optionType': undefined,
693
690
  'precision': {
694
- 'amount': this.parseNumber(this.parsePrecision(this.safeString(market, 'trading_decimal'))),
695
- 'price': this.parseNumber(this.parsePrecision(this.safeString(market, 'pricing_decimal'))),
691
+ 'amount': this.parseNumber(this.parsePrecision(this.safeString(market, 'base_ccy_precision'))),
692
+ 'price': this.parseNumber(this.parsePrecision(this.safeString(market, 'quote_ccy_precision'))),
696
693
  },
697
694
  'limits': {
698
695
  'leverage': {
@@ -719,45 +716,43 @@ export default class coinex extends Exchange {
719
716
  return result;
720
717
  }
721
718
  async fetchContractMarkets(params) {
722
- const response = await this.v1PerpetualPublicGetMarketList(params);
719
+ const response = await this.v2PublicGetFuturesMarket(params);
723
720
  //
724
721
  // {
725
722
  // "code": 0,
726
723
  // "data": [
727
724
  // {
728
- // "name": "BTCUSD",
729
- // "type": 2, // 1: USDT-M Contracts, 2: Coin-M Contracts
730
- // "leverages": ["3", "5", "8", "10", "15", "20", "30", "50", "100"],
731
- // "stock": "BTC",
732
- // "money": "USD",
733
- // "fee_prec": 5,
734
- // "stock_prec": 8,
735
- // "money_prec": 1,
736
- // "amount_prec": 0,
737
- // "amount_min": "10",
738
- // "multiplier": "1",
739
- // "tick_size": "0.1", // Min. Price Increment
740
- // "available": true
725
+ // "base_ccy": "BTC",
726
+ // "base_ccy_precision": 8,
727
+ // "contract_type": "inverse",
728
+ // "leverage": ["1","2","3","5","8","10","15","20","30","50","100"],
729
+ // "maker_fee_rate": "0",
730
+ // "market": "BTCUSD",
731
+ // "min_amount": "10",
732
+ // "open_interest_volume": "2566879",
733
+ // "quote_ccy": "USD",
734
+ // "quote_ccy_precision": 2,
735
+ // "taker_fee_rate": "0"
741
736
  // },
742
737
  // ],
743
738
  // "message": "OK"
744
739
  // }
745
740
  //
746
- const markets = this.safeValue(response, 'data', []);
741
+ const markets = this.safeList(response, 'data', []);
747
742
  const result = [];
748
743
  for (let i = 0; i < markets.length; i++) {
749
744
  const entry = markets[i];
750
745
  const fees = this.fees;
751
- const leverages = this.safeValue(entry, 'leverages', []);
752
- const subType = this.safeInteger(entry, 'type');
753
- const linear = (subType === 1);
754
- const inverse = (subType === 2);
755
- const id = this.safeString(entry, 'name');
756
- const baseId = this.safeString(entry, 'stock');
757
- const quoteId = this.safeString(entry, 'money');
746
+ const leverages = this.safeList(entry, 'leverage', []);
747
+ const subType = this.safeString(entry, 'contract_type');
748
+ const linear = (subType === 'linear');
749
+ const inverse = (subType === 'inverse');
750
+ const id = this.safeString(entry, 'market');
751
+ const baseId = this.safeString(entry, 'base_ccy');
752
+ const quoteId = this.safeString(entry, 'quote_ccy');
758
753
  const base = this.safeCurrencyCode(baseId);
759
754
  const quote = this.safeCurrencyCode(quoteId);
760
- const settleId = (subType === 1) ? 'USDT' : baseId;
755
+ const settleId = (subType === 'linear') ? 'USDT' : baseId;
761
756
  const settle = this.safeCurrencyCode(settleId);
762
757
  const symbol = base + '/' + quote + ':' + settle;
763
758
  const leveragesLength = leverages.length;
@@ -776,20 +771,20 @@ export default class coinex extends Exchange {
776
771
  'swap': true,
777
772
  'future': false,
778
773
  'option': false,
779
- 'active': this.safeValue(entry, 'available'),
774
+ 'active': undefined,
780
775
  'contract': true,
781
776
  'linear': linear,
782
777
  'inverse': inverse,
783
778
  'taker': fees['trading']['taker'],
784
779
  'maker': fees['trading']['maker'],
785
- 'contractSize': this.safeNumber(entry, 'multiplier'),
780
+ 'contractSize': this.parseNumber('1'),
786
781
  'expiry': undefined,
787
782
  'expiryDatetime': undefined,
788
783
  'strike': undefined,
789
784
  'optionType': undefined,
790
785
  'precision': {
791
- 'amount': this.parseNumber(this.parsePrecision(this.safeString(entry, 'amount_prec'))),
792
- 'price': this.parseNumber(this.parsePrecision(this.safeString(entry, 'money_prec'))),
786
+ 'amount': this.parseNumber(this.parsePrecision(this.safeString(entry, 'base_ccy_precision'))),
787
+ 'price': this.parseNumber(this.parsePrecision(this.safeString(entry, 'quote_ccy_precision'))),
793
788
  },
794
789
  'limits': {
795
790
  'leverage': {
@@ -797,7 +792,7 @@ export default class coinex extends Exchange {
797
792
  'max': this.safeNumber(leverages, leveragesLength - 1),
798
793
  },
799
794
  'amount': {
800
- 'min': this.safeNumber(entry, 'amount_min'),
795
+ 'min': this.safeNumber(entry, 'min_amount'),
801
796
  'max': undefined,
802
797
  },
803
798
  'price': {
package/js/src/kraken.js CHANGED
@@ -1380,7 +1380,7 @@ export default class kraken extends Exchange {
1380
1380
  'ordertype': type,
1381
1381
  'volume': this.amountToPrecision(symbol, amount),
1382
1382
  };
1383
- const orderRequest = this.orderRequest('createOrder()', symbol, type, request, price, params);
1383
+ const orderRequest = this.orderRequest('createOrder', symbol, type, request, price, params);
1384
1384
  const response = await this.privatePostAddOrder(this.extend(orderRequest[0], orderRequest[1]));
1385
1385
  //
1386
1386
  // {
@@ -1745,7 +1745,12 @@ export default class kraken extends Exchange {
1745
1745
  }
1746
1746
  }
1747
1747
  if (reduceOnly) {
1748
- request['reduce_only'] = 'true'; // not using boolean in this case, because the urlencodedNested transforms it into 'True' string
1748
+ if (method === 'createOrderWs') {
1749
+ request['reduce_only'] = true; // ws request can't have stringified bool
1750
+ }
1751
+ else {
1752
+ request['reduce_only'] = 'true'; // not using boolean in this case, because the urlencodedNested transforms it into 'True' string
1753
+ }
1749
1754
  }
1750
1755
  let close = this.safeValue(params, 'close');
1751
1756
  if (close !== undefined) {
@@ -1806,7 +1811,7 @@ export default class kraken extends Exchange {
1806
1811
  if (amount !== undefined) {
1807
1812
  request['volume'] = this.amountToPrecision(symbol, amount);
1808
1813
  }
1809
- const orderRequest = this.orderRequest('editOrder()', symbol, type, request, price, params);
1814
+ const orderRequest = this.orderRequest('editOrder', symbol, type, request, price, params);
1810
1815
  const response = await this.privatePostEditOrder(this.extend(orderRequest[0], orderRequest[1]));
1811
1816
  //
1812
1817
  // {
package/js/src/kucoin.js CHANGED
@@ -590,6 +590,8 @@ export default class kucoin extends Exchange {
590
590
  'BIFI': 'BIFIF',
591
591
  'VAI': 'VAIOT',
592
592
  'WAX': 'WAXP',
593
+ 'ALT': 'APTOSLAUNCHTOKEN',
594
+ 'KALT': 'ALT', // ALTLAYER
593
595
  },
594
596
  'options': {
595
597
  'version': 'v1',
@@ -1200,10 +1202,10 @@ export default class kucoin extends Exchange {
1200
1202
  // }
1201
1203
  //
1202
1204
  const responses = await Promise.all(promises);
1203
- const currenciesResponse = this.safeValue(responses, 0, {});
1204
- const currenciesData = this.safeValue(currenciesResponse, 'data', []);
1205
- const additionalResponse = this.safeValue(responses, 1, {});
1206
- const additionalData = this.safeValue(additionalResponse, 'data', []);
1205
+ const currenciesResponse = this.safeDict(responses, 0, {});
1206
+ const currenciesData = this.safeList(currenciesResponse, 'data', []);
1207
+ const additionalResponse = this.safeDict(responses, 1, {});
1208
+ const additionalData = this.safeList(additionalResponse, 'data', []);
1207
1209
  const additionalDataGrouped = this.groupBy(additionalData, 'currency');
1208
1210
  const result = {};
1209
1211
  for (let i = 0; i < currenciesData.length; i++) {
@@ -1215,7 +1217,7 @@ export default class kucoin extends Exchange {
1215
1217
  let isDepositEnabled = undefined;
1216
1218
  const networks = {};
1217
1219
  const chains = this.safeList(entry, 'chains', []);
1218
- const extraChainsData = this.indexBy(this.safeValue(additionalDataGrouped, id, []), 'chain');
1220
+ const extraChainsData = this.indexBy(this.safeList(additionalDataGrouped, id, []), 'chain');
1219
1221
  const rawPrecision = this.safeString(entry, 'precision');
1220
1222
  const precision = this.parseNumber(this.parsePrecision(rawPrecision));
1221
1223
  const chainsLength = chains.length;
@@ -1356,7 +1358,7 @@ export default class kucoin extends Exchange {
1356
1358
  request['chain'] = this.networkCodeToId(networkCode).toLowerCase();
1357
1359
  }
1358
1360
  const response = await this.privateGetWithdrawalsQuotas(this.extend(request, params));
1359
- const data = this.safeValue(response, 'data');
1361
+ const data = this.safeDict(response, 'data', {});
1360
1362
  const withdrawFees = {};
1361
1363
  withdrawFees[code] = this.safeNumber(data, 'withdrawMinFee');
1362
1364
  return {
@@ -1810,7 +1812,7 @@ export default class kucoin extends Exchange {
1810
1812
  }
1811
1813
  let code = undefined;
1812
1814
  if (currency !== undefined) {
1813
- code = currency['id'];
1815
+ code = this.safeCurrencyCode(currency['id']);
1814
1816
  if (code !== 'NIM') {
1815
1817
  // contains spaces
1816
1818
  this.checkAddress(address);
@@ -1860,7 +1862,7 @@ export default class kucoin extends Exchange {
1860
1862
  this.options['versions']['private']['GET']['deposit-addresses'] = version;
1861
1863
  const chains = this.safeList(response, 'data', []);
1862
1864
  const parsed = this.parseDepositAddresses(chains, [currency['code']], false, {
1863
- 'currency': currency['id'],
1865
+ 'currency': currency['code'],
1864
1866
  });
1865
1867
  return this.indexBy(parsed, 'network');
1866
1868
  }
@@ -2974,7 +2976,7 @@ export default class kucoin extends Exchange {
2974
2976
  * @method
2975
2977
  * @name kucoin#fetchTrades
2976
2978
  * @description get the list of most recent trades for a particular symbol
2977
- * @see https://docs.kucoin.com/#get-trade-histories
2979
+ * @see https://www.kucoin.com/docs/rest/spot-trading/market-data/get-trade-histories
2978
2980
  * @param {string} symbol unified symbol of the market to fetch trades for
2979
2981
  * @param {int} [since] timestamp in ms of the earliest trade to fetch
2980
2982
  * @param {int} [limit] the maximum amount of trades to fetch
@@ -3147,7 +3149,7 @@ export default class kucoin extends Exchange {
3147
3149
  * @method
3148
3150
  * @name kucoin#fetchTradingFee
3149
3151
  * @description fetch the trading fees for a market
3150
- * @see https://docs.kucoin.com/#actual-fee-rate-of-the-trading-pair
3152
+ * @see https://www.kucoin.com/docs/rest/funding/trade-fee/trading-pair-actual-fee-spot-margin-trade_hf
3151
3153
  * @param {string} symbol unified market symbol
3152
3154
  * @param {object} [params] extra parameters specific to the exchange API endpoint
3153
3155
  * @returns {object} a [fee structure]{@link https://docs.ccxt.com/#/?id=fee-structure}
@@ -3187,7 +3189,7 @@ export default class kucoin extends Exchange {
3187
3189
  * @method
3188
3190
  * @name kucoin#withdraw
3189
3191
  * @description make a withdrawal
3190
- * @see https://docs.kucoin.com/#apply-withdraw-2
3192
+ * @see https://www.kucoin.com/docs/rest/funding/withdrawals/apply-withdraw
3191
3193
  * @param {string} code unified currency code
3192
3194
  * @param {float} amount the amount to withdraw
3193
3195
  * @param {string} address the address to withdraw to
@@ -3362,8 +3364,8 @@ export default class kucoin extends Exchange {
3362
3364
  * @method
3363
3365
  * @name kucoin#fetchDeposits
3364
3366
  * @description fetch all deposits made to an account
3365
- * @see https://docs.kucoin.com/#get-deposit-list
3366
- * @see https://docs.kucoin.com/#get-v1-historical-deposits-list
3367
+ * @see https://www.kucoin.com/docs/rest/funding/deposit/get-deposit-list
3368
+ * @see https://www.kucoin.com/docs/rest/funding/deposit/get-v1-historical-deposits-list
3367
3369
  * @param {string} code unified currency code
3368
3370
  * @param {int} [since] the earliest time in ms to fetch deposits for
3369
3371
  * @param {int} [limit] the maximum number of deposits structures to retrieve
@@ -3446,8 +3448,8 @@ export default class kucoin extends Exchange {
3446
3448
  * @method
3447
3449
  * @name kucoin#fetchWithdrawals
3448
3450
  * @description fetch all withdrawals made from an account
3449
- * @see https://docs.kucoin.com/#get-withdrawals-list
3450
- * @see https://docs.kucoin.com/#get-v1-historical-withdrawals-list
3451
+ * @see https://www.kucoin.com/docs/rest/funding/withdrawals/get-withdrawals-list
3452
+ * @see https://www.kucoin.com/docs/rest/funding/withdrawals/get-v1-historical-withdrawals-list
3451
3453
  * @param {string} code unified currency code
3452
3454
  * @param {int} [since] the earliest time in ms to fetch withdrawals for
3453
3455
  * @param {int} [limit] the maximum number of withdrawals structures to retrieve
@@ -3721,7 +3723,7 @@ export default class kucoin extends Exchange {
3721
3723
  * @method
3722
3724
  * @name kucoin#transfer
3723
3725
  * @description transfer currency internally between wallets on the same account
3724
- * @see https://docs.kucoin.com/#inner-transfer
3726
+ * @see https://www.kucoin.com/docs/rest/funding/transfer/inner-transfer
3725
3727
  * @see https://docs.kucoin.com/futures/#transfer-funds-to-kucoin-main-account-2
3726
3728
  * @see https://docs.kucoin.com/spot-hf/#internal-funds-transfers-in-high-frequency-trading-accounts
3727
3729
  * @param {string} code unified currency code
@@ -4004,7 +4006,7 @@ export default class kucoin extends Exchange {
4004
4006
  /**
4005
4007
  * @method
4006
4008
  * @name kucoin#fetchLedger
4007
- * @see https://docs.kucoin.com/#get-account-ledgers
4009
+ * @see https://www.kucoin.com/docs/rest/account/basic-info/get-account-ledgers-spot-margin
4008
4010
  * @see https://www.kucoin.com/docs/rest/account/basic-info/get-account-ledgers-trade_hf
4009
4011
  * @see https://www.kucoin.com/docs/rest/account/basic-info/get-account-ledgers-margin_hf
4010
4012
  * @description fetch the history of changes, actions done by the user or operations that altered balance of the user
package/js/src/okx.d.ts CHANGED
@@ -298,6 +298,7 @@ export default class okx extends Exchange {
298
298
  quoteVolume: any;
299
299
  };
300
300
  fetchConvertQuote(fromCode: string, toCode: string, amount?: Num, params?: {}): Promise<Conversion>;
301
+ createConvertTrade(id: string, fromCode: string, toCode: string, amount?: Num, params?: {}): Promise<Conversion>;
301
302
  parseConversion(conversion: any, fromCurrency?: Currency, toCurrency?: Currency): Conversion;
302
303
  fetchConvertCurrencies(params?: {}): Promise<Currencies>;
303
304
  handleErrors(httpCode: any, reason: any, url: any, method: any, headers: any, body: any, response: any, requestHeaders: any, requestBody: any): any;
package/js/src/okx.js CHANGED
@@ -38,6 +38,7 @@ export default class okx extends Exchange {
38
38
  'cancelOrders': true,
39
39
  'closeAllPositions': false,
40
40
  'closePosition': true,
41
+ 'createConvertTrade': true,
41
42
  'createDepositAddress': false,
42
43
  'createMarketBuyOrderWithCost': true,
43
44
  'createMarketSellOrderWithCost': true,
@@ -7661,6 +7662,59 @@ export default class okx extends Exchange {
7661
7662
  const toCurrency = this.currency(toCurrencyId);
7662
7663
  return this.parseConversion(result, fromCurrency, toCurrency);
7663
7664
  }
7665
+ async createConvertTrade(id, fromCode, toCode, amount = undefined, params = {}) {
7666
+ /**
7667
+ * @method
7668
+ * @name okx#createConvertTrade
7669
+ * @description convert from one currency to another
7670
+ * @see https://www.okx.com/docs-v5/en/#funding-account-rest-api-convert-trade
7671
+ * @param {string} id the id of the trade that you want to make
7672
+ * @param {string} fromCode the currency that you want to sell and convert from
7673
+ * @param {string} toCode the currency that you want to buy and convert into
7674
+ * @param {float} [amount] how much you want to trade in units of the from currency
7675
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
7676
+ * @returns {object} a [conversion structure]{@link https://docs.ccxt.com/#/?id=conversion-structure}
7677
+ */
7678
+ await this.loadMarkets();
7679
+ const request = {
7680
+ 'quoteId': id,
7681
+ 'baseCcy': fromCode,
7682
+ 'quoteCcy': toCode,
7683
+ 'szCcy': fromCode,
7684
+ 'sz': this.numberToString(amount),
7685
+ 'side': 'sell',
7686
+ };
7687
+ const response = await this.privatePostAssetConvertTrade(this.extend(request, params));
7688
+ //
7689
+ // {
7690
+ // "code": "0",
7691
+ // "data": [
7692
+ // {
7693
+ // "baseCcy": "ETH",
7694
+ // "clTReqId": "",
7695
+ // "fillBaseSz": "0.01023052",
7696
+ // "fillPx": "2932.40104429",
7697
+ // "fillQuoteSz": "30",
7698
+ // "instId": "ETH-USDT",
7699
+ // "quoteCcy": "USDT",
7700
+ // "quoteId": "quoterETH-USDT16461885104612381",
7701
+ // "side": "buy",
7702
+ // "state": "fullyFilled",
7703
+ // "tradeId": "trader16461885203381437",
7704
+ // "ts": "1646188520338"
7705
+ // }
7706
+ // ],
7707
+ // "msg": ""
7708
+ // }
7709
+ //
7710
+ const data = this.safeList(response, 'data', []);
7711
+ const result = this.safeDict(data, 0, {});
7712
+ const fromCurrencyId = this.safeString(result, 'baseCcy', fromCode);
7713
+ const fromCurrency = this.currency(fromCurrencyId);
7714
+ const toCurrencyId = this.safeString(result, 'quoteCcy', toCode);
7715
+ const toCurrency = this.currency(toCurrencyId);
7716
+ return this.parseConversion(result, fromCurrency, toCurrency);
7717
+ }
7664
7718
  parseConversion(conversion, fromCurrency = undefined, toCurrency = undefined) {
7665
7719
  //
7666
7720
  // fetchConvertQuote
@@ -7681,7 +7735,24 @@ export default class okx extends Exchange {
7681
7735
  // "ttlMs": "10000"
7682
7736
  // }
7683
7737
  //
7684
- const timestamp = this.safeInteger(conversion, 'quoteTime');
7738
+ // createConvertTrade
7739
+ //
7740
+ // {
7741
+ // "baseCcy": "ETH",
7742
+ // "clTReqId": "",
7743
+ // "fillBaseSz": "0.01023052",
7744
+ // "fillPx": "2932.40104429",
7745
+ // "fillQuoteSz": "30",
7746
+ // "instId": "ETH-USDT",
7747
+ // "quoteCcy": "USDT",
7748
+ // "quoteId": "quoterETH-USDT16461885104612381",
7749
+ // "side": "buy",
7750
+ // "state": "fullyFilled",
7751
+ // "tradeId": "trader16461885203381437",
7752
+ // "ts": "1646188520338"
7753
+ // }
7754
+ //
7755
+ const timestamp = this.safeInteger2(conversion, 'quoteTime', 'ts');
7685
7756
  const fromCoin = this.safeString(conversion, 'baseCcy');
7686
7757
  const fromCode = this.safeCurrencyCode(fromCoin, fromCurrency);
7687
7758
  const to = this.safeString(conversion, 'quoteCcy');
@@ -7690,12 +7761,12 @@ export default class okx extends Exchange {
7690
7761
  'info': conversion,
7691
7762
  'timestamp': timestamp,
7692
7763
  'datetime': this.iso8601(timestamp),
7693
- 'id': this.safeString(conversion, 'clQReqId'),
7764
+ 'id': this.safeStringN(conversion, ['clQReqId', 'tradeId', 'quoteId']),
7694
7765
  'fromCurrency': fromCode,
7695
- 'fromAmount': this.safeNumber(conversion, 'baseSz'),
7766
+ 'fromAmount': this.safeNumber2(conversion, 'baseSz', 'fillBaseSz'),
7696
7767
  'toCurrency': toCode,
7697
- 'toAmount': this.safeNumber(conversion, 'quoteSz'),
7698
- 'price': this.safeNumber(conversion, 'cnvtPx'),
7768
+ 'toAmount': this.safeNumber2(conversion, 'quoteSz', 'fillQuoteSz'),
7769
+ 'price': this.safeNumber2(conversion, 'cnvtPx', 'fillPx'),
7699
7770
  'fee': undefined,
7700
7771
  };
7701
7772
  }
@@ -137,7 +137,7 @@ export default class kraken extends krakenRest {
137
137
  'pair': market['wsId'],
138
138
  'volume': this.amountToPrecision(symbol, amount),
139
139
  };
140
- [request, params] = this.orderRequest('createOrderWs()', symbol, type, request, price, params);
140
+ [request, params] = this.orderRequest('createOrderWs', symbol, type, request, price, params);
141
141
  return await this.watch(url, messageHash, this.extend(request, params), messageHash);
142
142
  }
143
143
  handleCreateEditOrder(client, message) {
@@ -193,7 +193,7 @@ export default class kraken extends krakenRest {
193
193
  'pair': market['wsId'],
194
194
  'volume': this.amountToPrecision(symbol, amount),
195
195
  };
196
- [request, params] = this.orderRequest('editOrderWs()', symbol, type, request, price, params);
196
+ [request, params] = this.orderRequest('editOrderWs', symbol, type, request, price, params);
197
197
  return await this.watch(url, messageHash, this.extend(request, params), messageHash);
198
198
  }
199
199
  async cancelOrdersWs(ids, symbol = undefined, params = {}) {
package/js/src/woo.d.ts CHANGED
@@ -175,6 +175,7 @@ export default class woo extends Exchange {
175
175
  fetchPositions(symbols?: Strings, params?: {}): Promise<import("./base/types.js").Position[]>;
176
176
  parsePosition(position: any, market?: Market): import("./base/types.js").Position;
177
177
  fetchConvertQuote(fromCode: string, toCode: string, amount?: Num, params?: {}): Promise<Conversion>;
178
+ createConvertTrade(id: string, fromCode: string, toCode: string, amount?: Num, params?: {}): Promise<Conversion>;
178
179
  parseConversion(conversion: any, fromCurrency?: Currency, toCurrency?: Currency): Conversion;
179
180
  fetchConvertCurrencies(params?: {}): Promise<Currencies>;
180
181
  defaultNetworkCodeForCurrency(code: any): any;
package/js/src/woo.js CHANGED
@@ -39,6 +39,7 @@ export default class woo extends Exchange {
39
39
  'cancelWithdraw': false,
40
40
  'closeAllPositions': false,
41
41
  'closePosition': false,
42
+ 'createConvertTrade': true,
42
43
  'createDepositAddress': false,
43
44
  'createMarketBuyOrderWithCost': true,
44
45
  'createMarketOrder': false,
@@ -3032,6 +3033,37 @@ export default class woo extends Exchange {
3032
3033
  const toCurrency = this.currency(toCurrencyId);
3033
3034
  return this.parseConversion(data, fromCurrency, toCurrency);
3034
3035
  }
3036
+ async createConvertTrade(id, fromCode, toCode, amount = undefined, params = {}) {
3037
+ /**
3038
+ * @method
3039
+ * @name woo#createConvertTrade
3040
+ * @description convert from one currency to another
3041
+ * @see https://docs.woo.org/#send-quote-rft
3042
+ * @param {string} id the id of the trade that you want to make
3043
+ * @param {string} fromCode the currency that you want to sell and convert from
3044
+ * @param {string} toCode the currency that you want to buy and convert into
3045
+ * @param {float} [amount] how much you want to trade in units of the from currency
3046
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
3047
+ * @returns {object} a [conversion structure]{@link https://docs.ccxt.com/#/?id=conversion-structure}
3048
+ */
3049
+ await this.loadMarkets();
3050
+ const request = {
3051
+ 'quoteId': id,
3052
+ };
3053
+ const response = await this.v3PrivatePostConvertRft(this.extend(request, params));
3054
+ //
3055
+ // {
3056
+ // "success": true,
3057
+ // "data": {
3058
+ // "quoteId": 123123123,
3059
+ // "counterPartyId": "",
3060
+ // "rftAccepted": 1 // 1 -> success; 2 -> processing; 3 -> fail
3061
+ // }
3062
+ // }
3063
+ //
3064
+ const data = this.safeDict(response, 'data', {});
3065
+ return this.parseConversion(data);
3066
+ }
3035
3067
  parseConversion(conversion, fromCurrency = undefined, toCurrency = undefined) {
3036
3068
  //
3037
3069
  // fetchConvertQuote
@@ -3048,6 +3080,14 @@ export default class woo extends Exchange {
3048
3080
  // "message": 1659084466000
3049
3081
  // }
3050
3082
  //
3083
+ // createConvertTrade
3084
+ //
3085
+ // {
3086
+ // "quoteId": 123123123,
3087
+ // "counterPartyId": "",
3088
+ // "rftAccepted": 1 // 1 -> success; 2 -> processing; 3 -> fail
3089
+ // }
3090
+ //
3051
3091
  const timestamp = this.safeInteger(conversion, 'expireTimestamp');
3052
3092
  const fromCoin = this.safeString(conversion, 'sellToken');
3053
3093
  const fromCode = this.safeCurrencyCode(fromCoin, fromCurrency);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccxt",
3
- "version": "4.2.99",
3
+ "version": "4.3.1",
4
4
  "description": "A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 100+ exchanges",
5
5
  "unpkg": "dist/ccxt.browser.js",
6
6
  "type": "module",
@@ -51,6 +51,7 @@
51
51
  "test": "npm run build && npm run commonjs-test && npm run static-tests && node run-tests --useProxy",
52
52
  "fast-test": "npm run commonjs-test && node run-tests --js --useProxy",
53
53
  "commonjs-test": "node test-commonjs.cjs",
54
+ "package-test": "./package-test.sh",
54
55
  "fast-test-ws": "node run-tests --ws --js",
55
56
  "test-base": "npm run test-js-base && npm run test-python-base && npm run test-php-base && npm run test-cs-base && npm run id-tests && npm run static-tests",
56
57
  "test-base-ws": "npm run test-js-base-ws && npm run test-python-base-ws && npm run test-php-base-ws && npm run test-cs-base-ws",
package/.dockerignore DELETED
@@ -1,6 +0,0 @@
1
- .git
2
- .dockerignore
3
- Dockerfile
4
- node_modules
5
- *.swp
6
- *.pyc
package/.eslintignore DELETED
@@ -1 +0,0 @@
1
- build/*