package org.knowm.xchange.bittrex.v1;
import java.io.IOException;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.HeaderParam;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import org.knowm.xchange.bittrex.v1.dto.account.BittrexBalancesResponse;
import org.knowm.xchange.bittrex.v1.dto.account.BittrexDepositAddressResponse;
import org.knowm.xchange.bittrex.v1.dto.account.BittrexDepositsHistoryResponse;
import org.knowm.xchange.bittrex.v1.dto.account.BittrexWithdrawResponse;
import org.knowm.xchange.bittrex.v1.dto.account.BittrexWithdrawalsHistoryResponse;
import org.knowm.xchange.bittrex.v1.dto.trade.BittrexCancelOrderResponse;
import org.knowm.xchange.bittrex.v1.dto.trade.BittrexOpenOrdersResponse;
import org.knowm.xchange.bittrex.v1.dto.trade.BittrexTradeHistoryResponse;
import org.knowm.xchange.bittrex.v1.dto.trade.BittrexTradeResponse;
import si.mazi.rescu.ParamsDigest;
import si.mazi.rescu.SynchronizedValueFactory;
@Path("v1.1")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public interface BittrexAuthenticated extends Bittrex {
@GET
@Path("account/getdepositaddress")
BittrexDepositAddressResponse getdepositaddress(@QueryParam("apikey") String apiKey, @HeaderParam("apisign") ParamsDigest signature,
@QueryParam("nonce") SynchronizedValueFactory<Long> nonce, @QueryParam("currency") String currency) throws IOException;
@GET
@Path("account/getbalances")
BittrexBalancesResponse balances(@QueryParam("apikey") String apiKey, @HeaderParam("apisign") ParamsDigest signature,
@QueryParam("nonce") SynchronizedValueFactory<Long> nonce) throws IOException;
@GET
@Path("market/buylimit")
BittrexTradeResponse buylimit(@QueryParam("apikey") String apikey, @HeaderParam("apisign") ParamsDigest signature,
@QueryParam("nonce") SynchronizedValueFactory<Long> nonce, @QueryParam("market") String market, @QueryParam("quantity") String quantity,
@QueryParam("rate") String rate) throws IOException;
@GET
@Path("market/selllimit")
BittrexTradeResponse selllimit(@QueryParam("apikey") String apikey, @HeaderParam("apisign") ParamsDigest signature,
@QueryParam("nonce") SynchronizedValueFactory<Long> nonce, @QueryParam("market") String market, @QueryParam("quantity") String quantity,
@QueryParam("rate") String rate) throws IOException;
@GET
@Path("market/buymarket")
BittrexTradeResponse buymarket(@QueryParam("apikey") String apikey, @HeaderParam("apisign") ParamsDigest signature,
@QueryParam("nonce") SynchronizedValueFactory<Long> nonce, @QueryParam("market") String market, @QueryParam("quantity") String quantity)
throws IOException;
@GET
@Path("market/sellmarket")
BittrexTradeResponse sellmarket(@QueryParam("apikey") String apikey, @HeaderParam("apisign") ParamsDigest signature,
@QueryParam("nonce") SynchronizedValueFactory<Long> nonce, @QueryParam("market") String market, @QueryParam("quantity") String quantity)
throws IOException;
@GET
@Path("market/cancel")
BittrexCancelOrderResponse cancel(@QueryParam("apikey") String apiKey, @HeaderParam("apisign") ParamsDigest signature,
@QueryParam("nonce") SynchronizedValueFactory<Long> nonce, @QueryParam("uuid") String uuid) throws IOException;
@GET
@Path("market/getopenorders")
BittrexOpenOrdersResponse openorders(@QueryParam("apikey") String apiKey, @HeaderParam("apisign") ParamsDigest signature,
@QueryParam("nonce") SynchronizedValueFactory<Long> nonce) throws IOException;
@GET
@Path("account/getorderhistory")
BittrexTradeHistoryResponse getorderhistory(@QueryParam("apikey") String apiKey, @HeaderParam("apisign") ParamsDigest signature,
@QueryParam("nonce") SynchronizedValueFactory<Long> nonce) throws IOException;
@GET
@Path("account/withdraw")
BittrexWithdrawResponse withdraw(@QueryParam("apikey") String apiKey, @HeaderParam("apisign") ParamsDigest signature,
@QueryParam("nonce") SynchronizedValueFactory<Long> nonce, @QueryParam("currency") String currency, @QueryParam("quantity") String quantity,
@QueryParam("address") String address) throws IOException;
@GET
@Path("account/getwithdrawalhistory")
BittrexWithdrawalsHistoryResponse getwithdrawalhistory(@QueryParam("apikey") String apiKey, @HeaderParam("apisign") ParamsDigest signature,
@QueryParam("nonce") SynchronizedValueFactory<Long> nonce) throws IOException;
@GET
@Path("account/getdeposithistory")
BittrexDepositsHistoryResponse getdeposithistory(@QueryParam("apikey") String apiKey, @HeaderParam("apisign") ParamsDigest signature,
@QueryParam("nonce") SynchronizedValueFactory<Long> nonce) throws IOException;
}