ccxt 4.2.81 → 4.2.83

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 (131) hide show
  1. package/CHANGELOG.md +90 -0
  2. package/README.md +4 -4
  3. package/dist/ccxt.browser.js +1085 -188
  4. package/dist/ccxt.browser.min.js +2 -2
  5. package/dist/cjs/ccxt.js +3 -1
  6. package/dist/cjs/src/bitget.js +1 -0
  7. package/dist/cjs/src/bithumb.js +1 -0
  8. package/dist/cjs/src/bitstamp.js +42 -15
  9. package/dist/cjs/src/delta.js +147 -0
  10. package/dist/cjs/src/deribit.js +20 -2
  11. package/dist/cjs/src/gemini.js +2 -1
  12. package/dist/cjs/src/hyperliquid.js +9 -8
  13. package/dist/cjs/src/kucoinfutures.js +147 -8
  14. package/dist/cjs/src/okx.js +139 -0
  15. package/dist/cjs/src/pro/bithumb.js +388 -0
  16. package/dist/cjs/src/pro/bitmart.js +1 -1
  17. package/dist/cjs/src/pro/bybit.js +1 -1
  18. package/dist/cjs/src/pro/cex.js +18 -5
  19. package/dist/cjs/src/pro/okx.js +2 -1
  20. package/dist/cjs/src/pro/p2b.js +14 -4
  21. package/dist/cjs/src/pro/woo.js +1 -1
  22. package/js/ccxt.d.ts +4 -1
  23. package/js/ccxt.js +3 -1
  24. package/js/src/abstract/bitstamp.d.ts +1 -1
  25. package/js/src/ace.d.ts +1 -1
  26. package/js/src/alpaca.d.ts +1 -1
  27. package/js/src/ascendex.d.ts +1 -1
  28. package/js/src/bigone.d.ts +1 -1
  29. package/js/src/binance.d.ts +1 -1
  30. package/js/src/bingx.d.ts +1 -1
  31. package/js/src/bitbank.d.ts +1 -1
  32. package/js/src/bitbns.d.ts +1 -1
  33. package/js/src/bitfinex.d.ts +1 -1
  34. package/js/src/bitfinex2.d.ts +1 -1
  35. package/js/src/bitflyer.d.ts +1 -1
  36. package/js/src/bitget.d.ts +1 -1
  37. package/js/src/bitget.js +1 -0
  38. package/js/src/bithumb.d.ts +1 -1
  39. package/js/src/bithumb.js +1 -0
  40. package/js/src/bitmart.d.ts +1 -1
  41. package/js/src/bitmex.d.ts +1 -1
  42. package/js/src/bitopro.d.ts +1 -1
  43. package/js/src/bitrue.d.ts +1 -1
  44. package/js/src/bitso.d.ts +1 -1
  45. package/js/src/bitstamp.d.ts +1 -1
  46. package/js/src/bitstamp.js +42 -15
  47. package/js/src/bitteam.d.ts +1 -1
  48. package/js/src/bitvavo.d.ts +1 -1
  49. package/js/src/blockchaincom.d.ts +1 -1
  50. package/js/src/blofin.d.ts +1 -1
  51. package/js/src/btcalpha.d.ts +1 -1
  52. package/js/src/btcmarkets.d.ts +1 -1
  53. package/js/src/btcturk.d.ts +1 -1
  54. package/js/src/bybit.d.ts +1 -1
  55. package/js/src/cex.d.ts +1 -1
  56. package/js/src/coinbase.d.ts +1 -1
  57. package/js/src/coinbaseinternational.d.ts +1 -1
  58. package/js/src/coinbasepro.d.ts +1 -1
  59. package/js/src/coinex.d.ts +1 -1
  60. package/js/src/coinlist.d.ts +1 -1
  61. package/js/src/coinmate.d.ts +1 -1
  62. package/js/src/coinmetro.d.ts +1 -1
  63. package/js/src/coinone.d.ts +1 -1
  64. package/js/src/coinsph.d.ts +1 -1
  65. package/js/src/cryptocom.d.ts +1 -1
  66. package/js/src/currencycom.d.ts +1 -1
  67. package/js/src/delta.d.ts +22 -2
  68. package/js/src/delta.js +147 -0
  69. package/js/src/deribit.d.ts +2 -2
  70. package/js/src/deribit.js +20 -2
  71. package/js/src/digifinex.d.ts +1 -1
  72. package/js/src/exmo.d.ts +1 -1
  73. package/js/src/gate.d.ts +1 -1
  74. package/js/src/gemini.d.ts +1 -1
  75. package/js/src/gemini.js +2 -1
  76. package/js/src/hitbtc.d.ts +1 -1
  77. package/js/src/hollaex.d.ts +1 -1
  78. package/js/src/htx.d.ts +1 -1
  79. package/js/src/huobijp.d.ts +1 -1
  80. package/js/src/hyperliquid.d.ts +1 -1
  81. package/js/src/hyperliquid.js +9 -8
  82. package/js/src/idex.d.ts +1 -1
  83. package/js/src/independentreserve.d.ts +1 -1
  84. package/js/src/indodax.d.ts +1 -1
  85. package/js/src/kraken.d.ts +1 -1
  86. package/js/src/krakenfutures.d.ts +1 -1
  87. package/js/src/kucoin.d.ts +1 -1
  88. package/js/src/kucoinfutures.d.ts +3 -2
  89. package/js/src/kucoinfutures.js +147 -8
  90. package/js/src/kuna.d.ts +1 -1
  91. package/js/src/latoken.d.ts +1 -1
  92. package/js/src/lbank.d.ts +1 -1
  93. package/js/src/luno.d.ts +1 -1
  94. package/js/src/lykke.d.ts +1 -1
  95. package/js/src/mercado.d.ts +1 -1
  96. package/js/src/mexc.d.ts +1 -1
  97. package/js/src/ndax.d.ts +1 -1
  98. package/js/src/novadax.d.ts +1 -1
  99. package/js/src/oceanex.d.ts +1 -1
  100. package/js/src/okcoin.d.ts +1 -1
  101. package/js/src/okx.d.ts +23 -2
  102. package/js/src/okx.js +139 -0
  103. package/js/src/onetrading.d.ts +1 -1
  104. package/js/src/p2b.d.ts +1 -1
  105. package/js/src/phemex.d.ts +1 -1
  106. package/js/src/poloniex.d.ts +1 -1
  107. package/js/src/poloniexfutures.d.ts +1 -1
  108. package/js/src/pro/bithumb.d.ts +19 -0
  109. package/js/src/pro/bithumb.js +389 -0
  110. package/js/src/pro/bitmart.js +1 -1
  111. package/js/src/pro/bybit.js +1 -1
  112. package/js/src/pro/cex.js +18 -5
  113. package/js/src/pro/okx.js +2 -1
  114. package/js/src/pro/p2b.d.ts +2 -0
  115. package/js/src/pro/p2b.js +14 -4
  116. package/js/src/pro/woo.js +1 -1
  117. package/js/src/probit.d.ts +1 -1
  118. package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +1 -1
  119. package/js/src/timex.d.ts +1 -1
  120. package/js/src/tokocrypto.d.ts +1 -1
  121. package/js/src/tradeogre.d.ts +1 -1
  122. package/js/src/upbit.d.ts +1 -1
  123. package/js/src/wavesexchange.d.ts +1 -1
  124. package/js/src/wazirx.d.ts +1 -1
  125. package/js/src/whitebit.d.ts +1 -1
  126. package/js/src/woo.d.ts +1 -1
  127. package/js/src/yobit.d.ts +1 -1
  128. package/js/src/zaif.d.ts +1 -1
  129. package/js/src/zonda.d.ts +1 -1
  130. package/package.json +1 -1
  131. package/skip-tests.json +17 -4
@@ -85,7 +85,7 @@ export default class kucoinfutures extends kucoin {
85
85
  'fetchPremiumIndexOHLCV': false,
86
86
  'fetchStatus': true,
87
87
  'fetchTicker': true,
88
- 'fetchTickers': false,
88
+ 'fetchTickers': true,
89
89
  'fetchTime': true,
90
90
  'fetchTrades': true,
91
91
  'fetchTransactionFee': false,
@@ -756,6 +756,85 @@ export default class kucoinfutures extends kucoin {
756
756
  //
757
757
  return this.parseTicker(response['data'], market);
758
758
  }
759
+ async fetchTickers(symbols = undefined, params = {}) {
760
+ /**
761
+ * @method
762
+ * @name kucoinfutures#fetchTickers
763
+ * @description fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
764
+ * @see https://www.kucoin.com/docs/rest/futures-trading/market-data/get-symbols-list
765
+ * @param {string[]} [symbols] unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
766
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
767
+ * @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
768
+ */
769
+ await this.loadMarkets();
770
+ symbols = this.marketSymbols(symbols);
771
+ const response = await this.futuresPublicGetContractsActive(params);
772
+ //
773
+ // {
774
+ // "code": "200000",
775
+ // "data": {
776
+ // "symbol": "ETHUSDTM",
777
+ // "rootSymbol": "USDT",
778
+ // "type": "FFWCSX",
779
+ // "firstOpenDate": 1591086000000,
780
+ // "expireDate": null,
781
+ // "settleDate": null,
782
+ // "baseCurrency": "ETH",
783
+ // "quoteCurrency": "USDT",
784
+ // "settleCurrency": "USDT",
785
+ // "maxOrderQty": 1000000,
786
+ // "maxPrice": 1000000.0000000000,
787
+ // "lotSize": 1,
788
+ // "tickSize": 0.05,
789
+ // "indexPriceTickSize": 0.01,
790
+ // "multiplier": 0.01,
791
+ // "initialMargin": 0.01,
792
+ // "maintainMargin": 0.005,
793
+ // "maxRiskLimit": 1000000,
794
+ // "minRiskLimit": 1000000,
795
+ // "riskStep": 500000,
796
+ // "makerFeeRate": 0.00020,
797
+ // "takerFeeRate": 0.00060,
798
+ // "takerFixFee": 0.0000000000,
799
+ // "makerFixFee": 0.0000000000,
800
+ // "settlementFee": null,
801
+ // "isDeleverage": true,
802
+ // "isQuanto": true,
803
+ // "isInverse": false,
804
+ // "markMethod": "FairPrice",
805
+ // "fairMethod": "FundingRate",
806
+ // "fundingBaseSymbol": ".ETHINT8H",
807
+ // "fundingQuoteSymbol": ".USDTINT8H",
808
+ // "fundingRateSymbol": ".ETHUSDTMFPI8H",
809
+ // "indexSymbol": ".KETHUSDT",
810
+ // "settlementSymbol": "",
811
+ // "status": "Open",
812
+ // "fundingFeeRate": 0.000535,
813
+ // "predictedFundingFeeRate": 0.002197,
814
+ // "openInterest": "8724443",
815
+ // "turnoverOf24h": 341156641.03354263,
816
+ // "volumeOf24h": 74833.54000000,
817
+ // "markPrice": 4534.07,
818
+ // "indexPrice":4531.92,
819
+ // "lastTradePrice": 4545.4500000000,
820
+ // "nextFundingRateTime": 25481884,
821
+ // "maxLeverage": 100,
822
+ // "sourceExchanges": [ "huobi", "Okex", "Binance", "Kucoin", "Poloniex", "Hitbtc" ],
823
+ // "premiumsSymbol1M": ".ETHUSDTMPI",
824
+ // "premiumsSymbol8H": ".ETHUSDTMPI8H",
825
+ // "fundingBaseSymbol1M": ".ETHINT",
826
+ // "fundingQuoteSymbol1M": ".USDTINT",
827
+ // "lowPrice": 4456.90,
828
+ // "highPrice": 4674.25,
829
+ // "priceChgPct": 0.0046,
830
+ // "priceChg": 21.15
831
+ // }
832
+ // }
833
+ //
834
+ const data = this.safeList(response, 'data', []);
835
+ const tickers = this.parseTickers(data, symbols);
836
+ return this.filterByArrayTickers(tickers, 'symbol', symbols);
837
+ }
759
838
  parseTicker(ticker, market = undefined) {
760
839
  //
761
840
  // {
@@ -775,16 +854,76 @@ export default class kucoinfutures extends kucoin {
775
854
  // }
776
855
  // }
777
856
  //
778
- const last = this.safeString(ticker, 'price');
857
+ // from fetchTickers
858
+ //
859
+ // {
860
+ // symbol: "XBTUSDTM",
861
+ // rootSymbol: "USDT",
862
+ // type: "FFWCSX",
863
+ // firstOpenDate: 1585555200000,
864
+ // expireDate: null,
865
+ // settleDate: null,
866
+ // baseCurrency: "XBT",
867
+ // quoteCurrency: "USDT",
868
+ // settleCurrency: "USDT",
869
+ // maxOrderQty: 1000000,
870
+ // maxPrice: 1000000,
871
+ // lotSize: 1,
872
+ // tickSize: 0.1,
873
+ // indexPriceTickSize: 0.01,
874
+ // multiplier: 0.001,
875
+ // initialMargin: 0.008,
876
+ // maintainMargin: 0.004,
877
+ // maxRiskLimit: 100000,
878
+ // minRiskLimit: 100000,
879
+ // riskStep: 50000,
880
+ // makerFeeRate: 0.0002,
881
+ // takerFeeRate: 0.0006,
882
+ // takerFixFee: 0,
883
+ // makerFixFee: 0,
884
+ // settlementFee: null,
885
+ // isDeleverage: true,
886
+ // isQuanto: true,
887
+ // isInverse: false,
888
+ // markMethod: "FairPrice",
889
+ // fairMethod: "FundingRate",
890
+ // fundingBaseSymbol: ".XBTINT8H",
891
+ // fundingQuoteSymbol: ".USDTINT8H",
892
+ // fundingRateSymbol: ".XBTUSDTMFPI8H",
893
+ // indexSymbol: ".KXBTUSDT",
894
+ // settlementSymbol: "",
895
+ // status: "Open",
896
+ // fundingFeeRate: 0.000297,
897
+ // predictedFundingFeeRate: 0.000327,
898
+ // fundingRateGranularity: 28800000,
899
+ // openInterest: "8033200",
900
+ // turnoverOf24h: 659795309.2524643,
901
+ // volumeOf24h: 9998.54,
902
+ // markPrice: 67193.51,
903
+ // indexPrice: 67184.81,
904
+ // lastTradePrice: 67191.8,
905
+ // nextFundingRateTime: 20022985,
906
+ // maxLeverage: 125,
907
+ // premiumsSymbol1M: ".XBTUSDTMPI",
908
+ // premiumsSymbol8H: ".XBTUSDTMPI8H",
909
+ // fundingBaseSymbol1M: ".XBTINT",
910
+ // fundingQuoteSymbol1M: ".USDTINT",
911
+ // lowPrice: 64041.6,
912
+ // highPrice: 67737.3,
913
+ // priceChgPct: 0.0447,
914
+ // priceChg: 2878.7
915
+ // }
916
+ //
779
917
  const marketId = this.safeString(ticker, 'symbol');
780
918
  market = this.safeMarket(marketId, market, '-');
919
+ const last = this.safeString2(ticker, 'price', 'lastTradePrice');
781
920
  const timestamp = this.safeIntegerProduct(ticker, 'ts', 0.000001);
782
921
  return this.safeTicker({
783
922
  'symbol': market['symbol'],
784
923
  'timestamp': timestamp,
785
924
  'datetime': this.iso8601(timestamp),
786
- 'high': undefined,
787
- 'low': undefined,
925
+ 'high': this.safeString(ticker, 'highPrice'),
926
+ 'low': this.safeString(ticker, 'lowPrice'),
788
927
  'bid': this.safeString(ticker, 'bestBidPrice'),
789
928
  'bidVolume': this.safeString(ticker, 'bestBidSize'),
790
929
  'ask': this.safeString(ticker, 'bestAskPrice'),
@@ -794,11 +933,11 @@ export default class kucoinfutures extends kucoin {
794
933
  'close': last,
795
934
  'last': last,
796
935
  'previousClose': undefined,
797
- 'change': undefined,
798
- 'percentage': undefined,
936
+ 'change': this.safeString(ticker, 'priceChg'),
937
+ 'percentage': this.safeString(ticker, 'priceChgPct'),
799
938
  'average': undefined,
800
- 'baseVolume': undefined,
801
- 'quoteVolume': undefined,
939
+ 'baseVolume': this.safeString(ticker, 'volumeOf24h'),
940
+ 'quoteVolume': this.safeString(ticker, 'turnoverOf24h'),
802
941
  'info': ticker,
803
942
  }, market);
804
943
  }
package/js/src/kuna.d.ts CHANGED
@@ -34,7 +34,7 @@ export default class kuna extends Exchange {
34
34
  };
35
35
  networks: {};
36
36
  };
37
- fetchMarkets(params?: {}): Promise<any[]>;
37
+ fetchMarkets(params?: {}): Promise<Market[]>;
38
38
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
39
39
  parseTicker(ticker: any, market?: Market): Ticker;
40
40
  fetchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
@@ -8,7 +8,7 @@ export default class latoken extends Exchange {
8
8
  describe(): any;
9
9
  nonce(): number;
10
10
  fetchTime(params?: {}): Promise<number>;
11
- fetchMarkets(params?: {}): Promise<any[]>;
11
+ fetchMarkets(params?: {}): Promise<Market[]>;
12
12
  fetchCurrenciesFromCache(params?: {}): Promise<any>;
13
13
  fetchCurrencies(params?: {}): Promise<{}>;
14
14
  fetchBalance(params?: {}): Promise<Balances>;
package/js/src/lbank.d.ts CHANGED
@@ -7,7 +7,7 @@ import type { Balances, Currency, Int, Market, Num, OHLCV, Order, OrderBook, Ord
7
7
  export default class lbank extends Exchange {
8
8
  describe(): any;
9
9
  fetchTime(params?: {}): Promise<number>;
10
- fetchMarkets(params?: {}): Promise<any>;
10
+ fetchMarkets(params?: {}): Promise<Market[]>;
11
11
  fetchSpotMarkets(params?: {}): Promise<any[]>;
12
12
  fetchSwapMarkets(params?: {}): Promise<any[]>;
13
13
  parseTicker(ticker: any, market?: Market): Ticker;
package/js/src/luno.d.ts CHANGED
@@ -6,7 +6,7 @@ import type { Balances, Currency, Int, Market, Order, OrderBook, OrderSide, Orde
6
6
  */
7
7
  export default class luno extends Exchange {
8
8
  describe(): any;
9
- fetchMarkets(params?: {}): Promise<any[]>;
9
+ fetchMarkets(params?: {}): Promise<Market[]>;
10
10
  fetchAccounts(params?: {}): Promise<Account[]>;
11
11
  parseBalance(response: any): Balances;
12
12
  fetchBalance(params?: {}): Promise<Balances>;
package/js/src/lykke.d.ts CHANGED
@@ -7,7 +7,7 @@ import type { IndexType, Balances, Currency, Int, Market, Order, OrderBook, Orde
7
7
  export default class lykke extends Exchange {
8
8
  describe(): any;
9
9
  fetchCurrencies(params?: {}): Promise<{}>;
10
- fetchMarkets(params?: {}): Promise<any[]>;
10
+ fetchMarkets(params?: {}): Promise<Market[]>;
11
11
  parseTicker(ticker: any, market?: Market): Ticker;
12
12
  fetchTicker(symbol: string, params?: {}): Promise<Ticker>;
13
13
  fetchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
@@ -6,7 +6,7 @@ import type { Balances, Currency, Int, Market, Num, OHLCV, Order, OrderBook, Ord
6
6
  */
7
7
  export default class mercado extends Exchange {
8
8
  describe(): any;
9
- fetchMarkets(params?: {}): Promise<any[]>;
9
+ fetchMarkets(params?: {}): Promise<Market[]>;
10
10
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
11
11
  parseTicker(ticker: any, market?: Market): Ticker;
12
12
  fetchTicker(symbol: string, params?: {}): Promise<Ticker>;
package/js/src/mexc.d.ts CHANGED
@@ -15,7 +15,7 @@ export default class mexc extends Exchange {
15
15
  }>;
16
16
  fetchTime(params?: {}): Promise<number>;
17
17
  fetchCurrencies(params?: {}): Promise<{}>;
18
- fetchMarkets(params?: {}): Promise<any>;
18
+ fetchMarkets(params?: {}): Promise<Market[]>;
19
19
  fetchSpotMarkets(params?: {}): Promise<any[]>;
20
20
  fetchSwapMarkets(params?: {}): Promise<any[]>;
21
21
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
package/js/src/ndax.d.ts CHANGED
@@ -8,7 +8,7 @@ export default class ndax extends Exchange {
8
8
  describe(): any;
9
9
  signIn(params?: {}): Promise<any>;
10
10
  fetchCurrencies(params?: {}): Promise<{}>;
11
- fetchMarkets(params?: {}): Promise<import("./base/types.js").MarketInterface[]>;
11
+ fetchMarkets(params?: {}): Promise<Market[]>;
12
12
  parseMarket(market: any): Market;
13
13
  parseOrderBook(orderbook: any, symbol: any, timestamp?: any, bidsKey?: string, asksKey?: string, priceKey?: IndexType, amountKey?: IndexType, countOrIdKey?: IndexType): OrderBook;
14
14
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
@@ -7,7 +7,7 @@ import type { TransferEntry, Balances, Currency, Int, Market, OHLCV, Order, Orde
7
7
  export default class novadax extends Exchange {
8
8
  describe(): any;
9
9
  fetchTime(params?: {}): Promise<number>;
10
- fetchMarkets(params?: {}): Promise<import("./base/types.js").MarketInterface[]>;
10
+ fetchMarkets(params?: {}): Promise<Market[]>;
11
11
  parseMarket(market: any): Market;
12
12
  parseTicker(ticker: any, market?: Market): Ticker;
13
13
  fetchTicker(symbol: string, params?: {}): Promise<Ticker>;
@@ -6,7 +6,7 @@ import type { Balances, Dictionary, Int, Market, Num, OHLCV, Order, OrderBook, O
6
6
  */
7
7
  export default class oceanex extends Exchange {
8
8
  describe(): any;
9
- fetchMarkets(params?: {}): Promise<import("./base/types.js").MarketInterface[]>;
9
+ fetchMarkets(params?: {}): Promise<Market[]>;
10
10
  parseMarket(market: any): Market;
11
11
  fetchTicker(symbol: string, params?: {}): Promise<Ticker>;
12
12
  fetchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
@@ -7,7 +7,7 @@ import type { TransferEntry, Balances, Currency, Int, Market, OHLCV, Order, Orde
7
7
  export default class okcoin extends Exchange {
8
8
  describe(): any;
9
9
  fetchTime(params?: {}): Promise<number>;
10
- fetchMarkets(params?: {}): Promise<import("./base/types.js").MarketInterface[]>;
10
+ fetchMarkets(params?: {}): Promise<Market[]>;
11
11
  parseMarket(market: any): Market;
12
12
  safeNetwork(networkId: any): string;
13
13
  fetchCurrencies(params?: {}): Promise<{}>;
package/js/src/okx.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import Exchange from './abstract/okx.js';
2
- import type { TransferEntry, Int, OrderSide, OrderType, Trade, OHLCV, Order, FundingRateHistory, OrderRequest, FundingHistory, Str, Transaction, Ticker, OrderBook, Balances, Tickers, Market, Greeks, Strings, MarketInterface, Currency, Leverage, Num, Account } from './base/types.js';
2
+ import type { TransferEntry, Int, OrderSide, OrderType, Trade, OHLCV, Order, FundingRateHistory, OrderRequest, FundingHistory, Str, Transaction, Ticker, OrderBook, Balances, Tickers, Market, Greeks, Strings, MarketInterface, Currency, Leverage, Num, Account, OptionChain, Option } from './base/types.js';
3
3
  /**
4
4
  * @class okx
5
5
  * @augments Exchange
@@ -20,7 +20,7 @@ export default class okx extends Exchange {
20
20
  }>;
21
21
  fetchTime(params?: {}): Promise<number>;
22
22
  fetchAccounts(params?: {}): Promise<Account[]>;
23
- fetchMarkets(params?: {}): Promise<any[]>;
23
+ fetchMarkets(params?: {}): Promise<Market[]>;
24
24
  parseMarket(market: any): Market;
25
25
  fetchMarketsByType(type: any, params?: {}): Promise<MarketInterface[]>;
26
26
  safeNetwork(networkId: any): string;
@@ -315,5 +315,26 @@ export default class okx extends Exchange {
315
315
  info: any;
316
316
  };
317
317
  closePosition(symbol: string, side?: OrderSide, params?: {}): Promise<Order>;
318
+ fetchOption(symbol: string, params?: {}): Promise<Option>;
319
+ fetchOptionChain(code: string, params?: {}): Promise<OptionChain>;
320
+ parseOption(chain: any, currency?: Currency, market?: Market): {
321
+ info: any;
322
+ currency: any;
323
+ symbol: string;
324
+ timestamp: number;
325
+ datetime: string;
326
+ impliedVolatility: any;
327
+ openInterest: any;
328
+ bidPrice: number;
329
+ askPrice: number;
330
+ midPrice: any;
331
+ markPrice: any;
332
+ lastPrice: number;
333
+ underlyingPrice: any;
334
+ change: any;
335
+ percentage: any;
336
+ baseVolume: number;
337
+ quoteVolume: any;
338
+ };
318
339
  handleErrors(httpCode: any, reason: any, url: any, method: any, headers: any, body: any, response: any, requestHeaders: any, requestBody: any): any;
319
340
  }
package/js/src/okx.js CHANGED
@@ -97,6 +97,8 @@ export default class okx extends Exchange {
97
97
  'fetchOpenInterestHistory': true,
98
98
  'fetchOpenOrder': undefined,
99
99
  'fetchOpenOrders': true,
100
+ 'fetchOption': true,
101
+ 'fetchOptionChain': true,
100
102
  'fetchOrder': true,
101
103
  'fetchOrderBook': true,
102
104
  'fetchOrderBooks': false,
@@ -7413,6 +7415,143 @@ export default class okx extends Exchange {
7413
7415
  const order = this.safeValue(data, 0);
7414
7416
  return this.parseOrder(order, market);
7415
7417
  }
7418
+ async fetchOption(symbol, params = {}) {
7419
+ /**
7420
+ * @method
7421
+ * @name okx#fetchOption
7422
+ * @description fetches option data that is commonly found in an option chain
7423
+ * @see https://www.okx.com/docs-v5/en/#order-book-trading-market-data-get-ticker
7424
+ * @param {string} symbol unified market symbol
7425
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
7426
+ * @returns {object} an [option chain structure]{@link https://docs.ccxt.com/#/?id=option-chain-structure}
7427
+ */
7428
+ await this.loadMarkets();
7429
+ const market = this.market(symbol);
7430
+ const request = {
7431
+ 'instId': market['id'],
7432
+ };
7433
+ const response = await this.publicGetMarketTicker(this.extend(request, params));
7434
+ //
7435
+ // {
7436
+ // "code": "0",
7437
+ // "msg": "",
7438
+ // "data": [
7439
+ // {
7440
+ // "instType": "OPTION",
7441
+ // "instId": "BTC-USD-241227-60000-P",
7442
+ // "last": "",
7443
+ // "lastSz": "0",
7444
+ // "askPx": "",
7445
+ // "askSz": "0",
7446
+ // "bidPx": "",
7447
+ // "bidSz": "0",
7448
+ // "open24h": "",
7449
+ // "high24h": "",
7450
+ // "low24h": "",
7451
+ // "volCcy24h": "0",
7452
+ // "vol24h": "0",
7453
+ // "ts": "1711176035035",
7454
+ // "sodUtc0": "",
7455
+ // "sodUtc8": ""
7456
+ // }
7457
+ // ]
7458
+ // }
7459
+ //
7460
+ const result = this.safeList(response, 'data', []);
7461
+ const chain = this.safeDict(result, 0, {});
7462
+ return this.parseOption(chain, undefined, market);
7463
+ }
7464
+ async fetchOptionChain(code, params = {}) {
7465
+ /**
7466
+ * @method
7467
+ * @name okx#fetchOptionChain
7468
+ * @description fetches data for an underlying asset that is commonly found in an option chain
7469
+ * @see https://www.okx.com/docs-v5/en/#order-book-trading-market-data-get-tickers
7470
+ * @param {string} currency base currency to fetch an option chain for
7471
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
7472
+ * @param {string} [params.uly] the underlying asset, can be obtained from fetchUnderlyingAssets ()
7473
+ * @returns {object} a list of [option chain structures]{@link https://docs.ccxt.com/#/?id=option-chain-structure}
7474
+ */
7475
+ await this.loadMarkets();
7476
+ const currency = this.currency(code);
7477
+ const request = {
7478
+ 'uly': currency['code'] + '-USD',
7479
+ 'instType': 'OPTION',
7480
+ };
7481
+ const response = await this.publicGetMarketTickers(this.extend(request, params));
7482
+ //
7483
+ // {
7484
+ // "code": "0",
7485
+ // "msg": "",
7486
+ // "data": [
7487
+ // {
7488
+ // "instType": "OPTION",
7489
+ // "instId": "BTC-USD-240323-52000-C",
7490
+ // "last": "",
7491
+ // "lastSz": "0",
7492
+ // "askPx": "",
7493
+ // "askSz": "0",
7494
+ // "bidPx": "",
7495
+ // "bidSz": "0",
7496
+ // "open24h": "",
7497
+ // "high24h": "",
7498
+ // "low24h": "",
7499
+ // "volCcy24h": "0",
7500
+ // "vol24h": "0",
7501
+ // "ts": "1711176207008",
7502
+ // "sodUtc0": "",
7503
+ // "sodUtc8": ""
7504
+ // },
7505
+ // ]
7506
+ // }
7507
+ //
7508
+ const result = this.safeList(response, 'data', []);
7509
+ return this.parseOptionChain(result, undefined, 'instId');
7510
+ }
7511
+ parseOption(chain, currency = undefined, market = undefined) {
7512
+ //
7513
+ // {
7514
+ // "instType": "OPTION",
7515
+ // "instId": "BTC-USD-241227-60000-P",
7516
+ // "last": "",
7517
+ // "lastSz": "0",
7518
+ // "askPx": "",
7519
+ // "askSz": "0",
7520
+ // "bidPx": "",
7521
+ // "bidSz": "0",
7522
+ // "open24h": "",
7523
+ // "high24h": "",
7524
+ // "low24h": "",
7525
+ // "volCcy24h": "0",
7526
+ // "vol24h": "0",
7527
+ // "ts": "1711176035035",
7528
+ // "sodUtc0": "",
7529
+ // "sodUtc8": ""
7530
+ // }
7531
+ //
7532
+ const marketId = this.safeString(chain, 'instId');
7533
+ market = this.safeMarket(marketId, market);
7534
+ const timestamp = this.safeInteger(chain, 'ts');
7535
+ return {
7536
+ 'info': chain,
7537
+ 'currency': undefined,
7538
+ 'symbol': market['symbol'],
7539
+ 'timestamp': timestamp,
7540
+ 'datetime': this.iso8601(timestamp),
7541
+ 'impliedVolatility': undefined,
7542
+ 'openInterest': undefined,
7543
+ 'bidPrice': this.safeNumber(chain, 'bidPx'),
7544
+ 'askPrice': this.safeNumber(chain, 'askPx'),
7545
+ 'midPrice': undefined,
7546
+ 'markPrice': undefined,
7547
+ 'lastPrice': this.safeNumber(chain, 'last'),
7548
+ 'underlyingPrice': undefined,
7549
+ 'change': undefined,
7550
+ 'percentage': undefined,
7551
+ 'baseVolume': this.safeNumber(chain, 'volCcy24h'),
7552
+ 'quoteVolume': undefined,
7553
+ };
7554
+ }
7416
7555
  handleErrors(httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody) {
7417
7556
  if (!response) {
7418
7557
  return undefined; // fallback to default error handler
@@ -8,7 +8,7 @@ export default class onetrading extends Exchange {
8
8
  describe(): any;
9
9
  fetchTime(params?: {}): Promise<number>;
10
10
  fetchCurrencies(params?: {}): Promise<{}>;
11
- fetchMarkets(params?: {}): Promise<import("./base/types.js").MarketInterface[]>;
11
+ fetchMarkets(params?: {}): Promise<Market[]>;
12
12
  parseMarket(market: any): Market;
13
13
  fetchTradingFees(params?: {}): Promise<any>;
14
14
  fetchPublicTradingFees(params?: {}): Promise<{}>;
package/js/src/p2b.d.ts CHANGED
@@ -7,7 +7,7 @@ import type { Int, Num, OHLCV, Order, OrderSide, OrderType, Str, Strings, Ticker
7
7
  */
8
8
  export default class p2b extends Exchange {
9
9
  describe(): any;
10
- fetchMarkets(params?: {}): Promise<import("./base/types.js").MarketInterface[]>;
10
+ fetchMarkets(params?: {}): Promise<Market[]>;
11
11
  parseMarket(market: any): Market;
12
12
  fetchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
13
13
  fetchTicker(symbol: string, params?: {}): Promise<Ticker>;
@@ -9,7 +9,7 @@ export default class phemex extends Exchange {
9
9
  parseSafeNumber(value?: any): any;
10
10
  parseSwapMarket(market: any): import("./base/types.js").MarketInterface;
11
11
  parseSpotMarket(market: any): import("./base/types.js").MarketInterface;
12
- fetchMarkets(params?: {}): Promise<any[]>;
12
+ fetchMarkets(params?: {}): Promise<Market[]>;
13
13
  fetchCurrencies(params?: {}): Promise<{}>;
14
14
  customParseBidAsk(bidask: any, priceKey?: number, amountKey?: number, market?: Market): number[];
15
15
  customParseOrderBook(orderbook: any, symbol: any, timestamp?: any, bidsKey?: string, asksKey?: string, priceKey?: number, amountKey?: number, market?: Market): any;
@@ -9,7 +9,7 @@ export default class poloniex extends Exchange {
9
9
  parseOHLCV(ohlcv: any, market?: Market): OHLCV;
10
10
  fetchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
11
11
  loadMarkets(reload?: boolean, params?: {}): Promise<import("./base/types.js").Dictionary<import("./base/types.js").MarketInterface>>;
12
- fetchMarkets(params?: {}): Promise<import("./base/types.js").MarketInterface[]>;
12
+ fetchMarkets(params?: {}): Promise<Market[]>;
13
13
  parseMarket(market: any): Market;
14
14
  fetchTime(params?: {}): Promise<number>;
15
15
  parseTicker(ticker: any, market?: Market): Ticker;
@@ -6,7 +6,7 @@ import type { Balances, FundingHistory, Int, Market, Num, OHLCV, Order, OrderBoo
6
6
  */
7
7
  export default class poloniexfutures extends Exchange {
8
8
  describe(): any;
9
- fetchMarkets(params?: {}): Promise<import("./base/types.js").MarketInterface[]>;
9
+ fetchMarkets(params?: {}): Promise<Market[]>;
10
10
  parseMarket(market: any): Market;
11
11
  parseTicker(ticker: any, market?: Market): Ticker;
12
12
  fetchTicker(symbol: string, params?: {}): Promise<Ticker>;
@@ -0,0 +1,19 @@
1
+ import bithumbRest from '../bithumb.js';
2
+ import type { Int, OrderBook, Ticker, Trade, Strings, Tickers } from '../base/types.js';
3
+ import Client from '../base/ws/Client.js';
4
+ export default class bithumb extends bithumbRest {
5
+ describe(): any;
6
+ watchTicker(symbol: string, params?: {}): Promise<Ticker>;
7
+ watchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
8
+ handleTicker(client: Client, message: any): void;
9
+ parseWsTicker(ticker: any, market?: any): Ticker;
10
+ watchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
11
+ handleOrderBook(client: Client, message: any): void;
12
+ handleDelta(orderbook: any, delta: any): void;
13
+ handleDeltas(orderbook: any, deltas: any): void;
14
+ watchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
15
+ handleTrades(client: any, message: any): void;
16
+ parseWsTrade(trade: any, market?: any): Trade;
17
+ handleErrorMessage(client: Client, message: any): boolean;
18
+ handleMessage(client: Client, message: any): void;
19
+ }