class BithumbTradeServiceRaw extends BithumbBaseService {

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

  public BithumbResponse<List<BithumbOrder>> getBithumbOrders(CurrencyPair currencyPair)
      throws IOException {
    return bithumbAuthenticated.getOrders(
        apiKey,
        signatureCreator,
        exchange.getNonceFactory(),
        "2",
        endpointGenerator,
        null,
        null,
        1000,
        null,
        BithumbUtils.getBaseCurrency(currencyPair),
        BithumbUtils.getCounterCurrency());
  }

  @Nullable
  public BithumbOrder getBithumbOrdersByOrderId(
      String orderId, String type, CurrencyPair currencyPair) throws IOException {

    final BithumbResponse<List<BithumbOrder>> response =
        bithumbAuthenticated.getOrders(
            apiKey,
            signatureCreator,
            exchange.getNonceFactory(),
            "2",
            endpointGenerator,
            orderId,
            type,
            null,
            null,
            BithumbUtils.getBaseCurrency(currencyPair),
            BithumbUtils.getCounterCurrency());
    return response.getData().stream().findFirst().orElse(null);
  }

  public BithumbResponse<BithumbOrderDetail> getBithumbOrderDetail(
      String orderId, CurrencyPair currencyPair) throws IOException {
    return bithumbAuthenticated.getOrderDetail(
        apiKey,
        signatureCreator,
        exchange.getNonceFactory(),
        "2",
        endpointGenerator,
        orderId,
        BithumbUtils.getBaseCurrency(currencyPair),
        BithumbUtils.getCounterCurrency());
  }

  public BithumbTradeResponse placeBithumbMarketOrder(MarketOrder marketOrder) throws IOException {
    switch (marketOrder.getType()) {
      case BID:
        return bithumbAuthenticated.marketBuy(
            apiKey,
            signatureCreator,
            exchange.getNonceFactory(),
            "2",
            endpointGenerator,
            marketOrder.getOriginalAmount(),
            BithumbUtils.getBaseCurrency(marketOrder.getCurrencyPair()),
            BithumbUtils.getCounterCurrency());
      case ASK:
        return bithumbAuthenticated.marketSell(
            apiKey,
            signatureCreator,
            exchange.getNonceFactory(),
            "2",
            endpointGenerator,
            marketOrder.getOriginalAmount(),
            BithumbUtils.getBaseCurrency(marketOrder.getCurrencyPair()),
            BithumbUtils.getCounterCurrency());
      default:
        throw new NotAvailableFromExchangeException();
    }
  }

  public BithumbTradeResponse placeBithumbLimitOrder(LimitOrder limitOrder) throws IOException {
    final CurrencyPair currencyPair = limitOrder.getCurrencyPair();
    return bithumbAuthenticated.placeOrder(
        apiKey,
        signatureCreator,
        exchange.getNonceFactory(),
        "2",
        endpointGenerator,
        BithumbUtils.getBaseCurrency(currencyPair),
        BithumbUtils.getCounterCurrency(),
        limitOrder.getOriginalAmount(),
        limitOrder.getLimitPrice(),
        BithumbUtils.fromOrderType(limitOrder.getType()));
  }

  public boolean cancelBithumbOrder(String orderId, CurrencyPair currencyPair) throws IOException {

    return getBithumbOrders(currencyPair).getData().stream()
        .filter(bo -> bo.getOrderId().equals(orderId))
        .findFirst()
        .map(
            bo -> {
              try {
                return cancelBithumbOrder(orderId, bo.getType().name(), currencyPair);
              } catch (IOException | BithumbException ignored) {
              }
              return null;
            })
        .isPresent();
  }

  private BithumbResponse cancelBithumbOrder(String orderId, String type, CurrencyPair currencyPair)
      throws IOException {<FILL_FUNCTION_BODY>}

  public BithumbResponse<List<BithumbUserTransaction>> getBithumbUserTransactions(
      CurrencyPair currencyPair) throws IOException {
    return bithumbAuthenticated.getUserTransactions(
        apiKey,
        signatureCreator,
        exchange.getNonceFactory(),
        "2",
        endpointGenerator,
        null,
        50,
        0,
        BithumbUtils.getBaseCurrency(currencyPair),
        BithumbUtils.getCounterCurrency());
  }
}

    return bithumbAuthenticated.cancelOrder(
        apiKey,
        signatureCreator,
        exchange.getNonceFactory(),
        "2",
        endpointGenerator,
        type,
        orderId,
        BithumbUtils.getBaseCurrency(currencyPair),
        BithumbUtils.getCounterCurrency());
  
<methods><variables>protected final non-sealed java.lang.String apiKey,protected final non-sealed org.knowm.xchange.bithumb.Bithumb bithumb,protected final non-sealed org.knowm.xchange.bithumb.BithumbAuthenticated bithumbAuthenticated,protected final non-sealed ParamsDigest endpointGenerator,protected final non-sealed ParamsDigest signatureCreator