class DVChainNewLimitOrderDemo {
  public static void main(String[] args) throws IOException {<FILL_FUNCTION_BODY>}

  private static void generic(TradeService tradeService) throws IOException {

    // Send out a limit order
    LimitOrder order =
        new LimitOrder(
            Order.OrderType.BID,
            new BigDecimal(1),
            CurrencyPair.BTC_USD,
            "",
            null,
            new BigDecimal("1000"));
    System.out.println("Placing limit order 1@1000 for BTC / USD: ");

    String orderResponse = tradeService.placeLimitOrder(order);

    System.out.println("Received response: " + orderResponse);
  }

  private static void raw(DVChainTradeServiceRaw tradeServiceRaw) throws IOException {

    // Send out a limit order
    DVChainNewLimitOrder order =
        new DVChainNewLimitOrder("Buy", new BigDecimal("1000"), new BigDecimal("1"), "USD");
    System.out.println("Placing limit order 1@1000 for BTC / USD: ");

    DVChainTrade orderResponse = tradeServiceRaw.newDVChainLimitOrder(order);

    System.out.println("Received response: " + orderResponse.toString());
  }
}


    // Use the factory to get DVChain exchange API using default settings
    Exchange exchange = ExchangeFactory.INSTANCE.createExchange(DVChainExchange.class);

    // Interested in the public market data feed (no authentication)
    TradeService tradeService = exchange.getTradeService();

    generic(tradeService);
    raw((DVChainTradeServiceRaw) tradeService);
  
<no_super_class>