package org.knowm.xchange.huobi;
import java.io.IOException;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import org.knowm.xchange.huobi.dto.account.BitVcFuturesAccountInfo;
import org.knowm.xchange.huobi.dto.marketdata.futures.BitVcExchangeRate;
import org.knowm.xchange.huobi.dto.marketdata.futures.BitVcFuturesDepth;
import org.knowm.xchange.huobi.dto.marketdata.futures.BitVcFuturesTicker;
import org.knowm.xchange.huobi.dto.marketdata.futures.BitVcFuturesTrade;
import org.knowm.xchange.huobi.dto.trade.BitVcFuturesPlaceOrderResult;
import org.knowm.xchange.huobi.dto.trade.BitVcFuturesPosition;
import org.knowm.xchange.huobi.dto.trade.BitVcFuturesPositionByContract;
import org.knowm.xchange.huobi.dto.trade.HuobiPlaceOrderResult;
import si.mazi.rescu.ParamsDigest;
@Path("/")
@Produces(MediaType.APPLICATION_JSON)
public interface BitVcFutures {
@GET
@Path("ticker_{symbol}_{contract}.js")
public BitVcFuturesTicker getTicker(@PathParam("symbol") String symbol, @PathParam("contract") String contract) throws IOException;
@GET
@Path("depths_{symbol}_{contract}.js")
public BitVcFuturesDepth getDepths(@PathParam("symbol") String symbol, @PathParam("contract") String contract) throws IOException;
@GET
@Path("trades_{symbol}_{contract}.js")
public BitVcFuturesTrade[] getTrades(@PathParam("symbol") String symbol, @PathParam("contract") String contract) throws IOException;
/**
* Non-XChange compatible methods
*/
@GET
@Path("exchange_rate.js")
public BitVcExchangeRate getExchangeRate() throws IOException;
@POST
@Path("order/save")
public BitVcFuturesPlaceOrderResult placeLimitOrder(
@FormParam("accessKey") String accessKey,
@FormParam("coinType") int coinType,
@FormParam("contractType") String contractType,
@FormParam("created") long created,
@FormParam("sign") ParamsDigest sign,
@FormParam("orderType") int orderType,
@FormParam("tradeType") int tradeType,
@FormParam("price") double price,
@FormParam("money") double amount) throws IOException;
@POST
@Path("balance")
public BitVcFuturesAccountInfo balance(
@FormParam("accessKey") String accessKey,
@FormParam("coinType") int coinType,
@FormParam("created") long created,
@FormParam("sign") ParamsDigest sign);
@POST
@Path("holdOrder/list")
public BitVcFuturesPositionByContract positions(
@FormParam("accessKey") String accessKey,
@FormParam("coinType") int coinType,
@FormParam("created") long created,
@FormParam("sign") ParamsDigest sign);
}