class BiboxMarketDataServiceRaw extends BiboxBaseService {

  private static final String TICKER_CMD = "ticker";
  private static final String DEPTH_CMD = "depth";
  private static final String ALL_TICKERS_CMD = "marketAll";
  private static final String DEALS_CMD = "deals";

  protected BiboxMarketDataServiceRaw(Exchange exchange) {
    super(exchange);
  }

  public BiboxTicker getBiboxTicker(CurrencyPair currencyPair) throws IOException {
    try {
      BiboxResponse<BiboxTicker> response = bibox.mdata(TICKER_CMD, toBiboxPair(currencyPair));
      throwErrors(response);
      return response.getResult();
    } catch (BiboxException e) {
      throw new ExchangeException(e.getMessage());
    }
  }

  public BiboxOrderBook getBiboxOrderBook(CurrencyPair currencyPair, Integer depth)
      throws IOException {<FILL_FUNCTION_BODY>}

  public List<BiboxDeals> getBiboxDeals(CurrencyPair currencyPair, Integer depth)
      throws IOException {
    try {
      BiboxResponse<List<BiboxDeals>> response =
          bibox.deals(DEALS_CMD, BiboxAdapters.toBiboxPair(currencyPair), depth);
      throwErrors(response);
      return response.getResult();
    } catch (BiboxException e) {
      throw new ExchangeException(e.getMessage(), e);
    }
  }

  public List<BiboxMarket> getAllBiboxMarkets() throws IOException {
    try {
      BiboxResponse<List<BiboxMarket>> response = bibox.marketAll(ALL_TICKERS_CMD);
      throwErrors(response);
      return response.getResult();
    } catch (BiboxException e) {
      throw new ExchangeException(e.getMessage());
    }
  }

  public List<BiboxOrderBook> getBiboxOrderBooks(
      Integer depth, Collection<Instrument> currencyPairs) {
    try {
      List<BiboxCommand<?>> allCommands =
          currencyPairs.stream()
              .distinct()
              .filter(Objects::nonNull)
              .map(BiboxAdapters::toBiboxPair)
              .map(pair -> new BiboxOrderBookCommand(pair, depth))
              .collect(Collectors.toList());
      BiboxMultipleResponses<BiboxOrderBook> response =
          bibox.orderBooks(BiboxCommands.of(allCommands).json());
      throwErrors(response);
      return response.getResult().stream()
          .map(BiboxResponse::getResult)
          .collect(Collectors.toList());
    } catch (BiboxException e) {
      throw new ExchangeException(e.getMessage());
    }
  }
}

    try {
      BiboxResponse<BiboxOrderBook> response =
          bibox.orderBook(DEPTH_CMD, BiboxAdapters.toBiboxPair(currencyPair), depth);
      throwErrors(response);
      return response.getResult();
    } catch (BiboxException e) {
      throw new ExchangeException(e.getMessage());
    }
  
<methods><variables>protected final non-sealed java.lang.String apiKey,protected final non-sealed org.knowm.xchange.bibox.BiboxAuthenticated bibox,protected final non-sealed ParamsDigest signatureCreator