package org.knowm.xchange.vaultoro;
import java.io.IOException;
import java.math.BigDecimal;
import javax.ws.rs.GET;
import javax.ws.rs.HeaderParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import org.knowm.xchange.vaultoro.dto.account.VaultoroBalancesResponse;
import org.knowm.xchange.vaultoro.dto.trade.VaultoroCancelOrderResponse;
import org.knowm.xchange.vaultoro.dto.trade.VaultoroNewOrderResponse;
import org.knowm.xchange.vaultoro.dto.trade.VaultoroOrdersResponse;
import si.mazi.rescu.ParamsDigest;
import si.mazi.rescu.SynchronizedValueFactory;
@Path("/")
@Produces(MediaType.APPLICATION_JSON)
public interface VaultoroAuthenticated extends Vaultoro {
@GET
@Path("1/balance")
VaultoroBalancesResponse getBalances(@QueryParam("nonce") SynchronizedValueFactory<Long> nonce, @QueryParam("apikey") String apiKey,
@HeaderParam("X-Signature") ParamsDigest signature) throws IOException, VaultoroException;
@GET
@Path("1/orders")
VaultoroOrdersResponse getOrders(@QueryParam("nonce") SynchronizedValueFactory<Long> nonce, @QueryParam("apikey") String apiKey,
@HeaderParam("X-Signature") ParamsDigest signature) throws IOException, VaultoroException;
@POST
@Path("1/buy/{symbol}/{type}")
VaultoroNewOrderResponse buy(@PathParam("symbol") String symbol, @PathParam("type") String type,
@QueryParam("nonce") SynchronizedValueFactory<Long> nonce, @QueryParam("apikey") String apiKey, @QueryParam("btc") BigDecimal btc,
@QueryParam("price") BigDecimal price, @HeaderParam("X-Signature") ParamsDigest signature) throws IOException, VaultoroException;
@POST
@Path("1/sell/{symbol}/{type}")
VaultoroNewOrderResponse sell(@PathParam("symbol") String symbol, @PathParam("type") String type,
@QueryParam("nonce") SynchronizedValueFactory<Long> nonce, @QueryParam("apikey") String apiKey, @QueryParam("gld") BigDecimal gld,
@QueryParam("price") BigDecimal price, @HeaderParam("X-Signature") ParamsDigest signature) throws IOException, VaultoroException;
@POST
@Path("1/cancel/{orderid}")
VaultoroCancelOrderResponse cancel(@PathParam("orderid") String orderid, @QueryParam("nonce") SynchronizedValueFactory<Long> nonce,
@QueryParam("apikey") String apiKey, @HeaderParam("X-Signature") ParamsDigest signature) throws IOException, VaultoroException;
}