package org.knowm.xchange.gemini.v1;
import java.io.IOException;
import java.util.Set;
import javax.ws.rs.GET;
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.gemini.v1.dto.GeminiException;
import org.knowm.xchange.gemini.v1.dto.marketdata.GeminiDepth;
import org.knowm.xchange.gemini.v1.dto.marketdata.GeminiLend;
import org.knowm.xchange.gemini.v1.dto.marketdata.GeminiLendDepth;
import org.knowm.xchange.gemini.v1.dto.marketdata.GeminiTicker;
import org.knowm.xchange.gemini.v1.dto.marketdata.GeminiTrade;
@Path("v1")
@Produces(MediaType.APPLICATION_JSON)
public interface Gemini {
@GET
@Path("pubticker/{symbol}")
GeminiTicker getTicker(@PathParam("symbol") String symbol) throws IOException, GeminiException;
@GET
@Path("book/{symbol}")
GeminiDepth getBook(@PathParam("symbol") String symbol, @QueryParam("limit_bids") int limit_bids, @QueryParam("limit_asks") int limit_asks)
throws IOException, GeminiException;
@GET
@Path("book/{symbol}")
GeminiDepth getBook(@PathParam("symbol") String symbol) throws IOException, GeminiException;
@GET
@Path("lendbook/{currency}")
GeminiLendDepth getLendBook(@PathParam("currency") String currency, @QueryParam("limit_bids") int limit_bids,
@QueryParam("limit_asks") int limit_asks) throws IOException, GeminiException;
@GET
@Path("trades/{symbol}")
GeminiTrade[] getTrades(@PathParam("symbol") String symbol, @QueryParam("timestamp") long timestamp) throws IOException, GeminiException;
@GET
@Path("lends/{currency}")
GeminiLend[] getLends(@PathParam("currency") String currency, @QueryParam("timestamp") long timestamp, @QueryParam("limit_trades") int limit_trades)
throws IOException, GeminiException;
@GET
@Path("symbols")
Set<String> getSymbols() throws IOException, GeminiException;
}