1
0
mirror of https://github.com/JKorf/CryptoExchange.Net.git synced 2026-10-15 23:50:54 +00:00

Shared exchange functionality (#214)

This commit is contained in:
Jan Korf
2024-09-27 09:17:44 +02:00
committed by GitHub
parent 5d3de52da6
commit b8686d60b9
199 changed files with 7219 additions and 277 deletions
@@ -0,0 +1,24 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Client for request funding rate records
/// </summary>
public interface IFundingRateRestClient : ISharedClient
{
/// <summary>
/// Funding rate request options
/// </summary>
GetFundingRateHistoryOptions GetFundingRateHistoryOptions { get; }
/// <summary>
/// Get funding rate records
/// </summary>
/// <param name="request">Request info</param>
/// <param name="nextPageToken">The pagination token from the previous request to continue pagination</param>
/// <param name="ct">Cancellation token</param>
Task<ExchangeWebResult<IEnumerable<SharedFundingRate>>> GetFundingRateHistoryAsync(GetFundingRateHistoryRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default);
}
}
@@ -0,0 +1,136 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Client for placing and managing futures orders
/// </summary>
public interface IFuturesOrderRestClient : ISharedClient
{
/// <summary>
/// How the trading fee is deducted
/// </summary>
SharedFeeDeductionType FuturesFeeDeductionType { get; }
/// <summary>
/// How the asset is determined in which the trading fee is paid
/// </summary>
SharedFeeAssetType FuturesFeeAssetType { get; }
/// <summary>
/// Supported order types
/// </summary>
IEnumerable<SharedOrderType> FuturesSupportedOrderTypes { get; }
/// <summary>
/// Supported time in force
/// </summary>
IEnumerable<SharedTimeInForce> FuturesSupportedTimeInForce { get; }
/// <summary>
/// Quantity types support
/// </summary>
SharedQuantitySupport FuturesSupportedOrderQuantity { get; }
/// <summary>
/// Futures place order request options
/// </summary>
PlaceFuturesOrderOptions PlaceFuturesOrderOptions { get; }
/// <summary>
/// Place a new futures order
/// </summary>
/// <param name="request">Request info</param>
/// <param name="ct">Cancellation token</param>
Task<ExchangeWebResult<SharedId>> PlaceFuturesOrderAsync(PlaceFuturesOrderRequest request, CancellationToken ct = default);
/// <summary>
/// Futures get order request options
/// </summary>
EndpointOptions<GetOrderRequest> GetFuturesOrderOptions { get; }
/// <summary>
/// Get info on a specific futures order
/// </summary>
/// <param name="request">Request info</param>
/// <param name="ct">Cancellation token</param>
Task<ExchangeWebResult<SharedFuturesOrder>> GetFuturesOrderAsync(GetOrderRequest request, CancellationToken ct = default);
/// <summary>
/// Futures get open orders request options
/// </summary>
EndpointOptions<GetOpenOrdersRequest> GetOpenFuturesOrdersOptions { get; }
/// <summary>
/// Get info on a open futures orders
/// </summary>
/// <param name="request">Request info</param>
/// <param name="ct">Cancellation token</param>
Task<ExchangeWebResult<IEnumerable<SharedFuturesOrder>>> GetOpenFuturesOrdersAsync(GetOpenOrdersRequest request, CancellationToken ct = default);
/// <summary>
/// Spot get closed orders request options
/// </summary>
PaginatedEndpointOptions<GetClosedOrdersRequest> GetClosedFuturesOrdersOptions { get; }
/// <summary>
/// Get info on closed futures orders
/// </summary>
/// <param name="request">Request info</param>
/// <param name="nextPageToken">The pagination token from the previous request to continue pagination</param>
/// <param name="ct">Cancellation token</param>
Task<ExchangeWebResult<IEnumerable<SharedFuturesOrder>>> GetClosedFuturesOrdersAsync(GetClosedOrdersRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default);
/// <summary>
/// Futures get order trades request options
/// </summary>
EndpointOptions<GetOrderTradesRequest> GetFuturesOrderTradesOptions { get; }
/// <summary>
/// Get trades for a specific futures order
/// </summary>
/// <param name="request">Request info</param>
/// <param name="ct">Cancellation token</param>
Task<ExchangeWebResult<IEnumerable<SharedUserTrade>>> GetFuturesOrderTradesAsync(GetOrderTradesRequest request, CancellationToken ct = default);
/// <summary>
/// Futures user trades request options
/// </summary>
PaginatedEndpointOptions<GetUserTradesRequest> GetFuturesUserTradesOptions { get; }
/// <summary>
/// Get futures user trade records
/// </summary>
/// <param name="request">Request info</param>
/// <param name="nextPageToken">The pagination token from the previous request to continue pagination</param>
/// <param name="ct">Cancellation token</param>
Task<ExchangeWebResult<IEnumerable<SharedUserTrade>>> GetFuturesUserTradesAsync(GetUserTradesRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default);
/// <summary>
/// Futures cancel order request options
/// </summary>
EndpointOptions<CancelOrderRequest> CancelFuturesOrderOptions { get; }
/// <summary>
/// Cancel a futures order
/// </summary>
/// <param name="request">Request info</param>
/// <param name="ct">Cancellation token</param>
Task<ExchangeWebResult<SharedId>> CancelFuturesOrderAsync(CancelOrderRequest request, CancellationToken ct = default);
/// <summary>
/// Positions request options
/// </summary>
EndpointOptions<GetPositionsRequest> GetPositionsOptions { get; }
/// <summary>
/// Get open position info
/// </summary>
/// <param name="request">Request info</param>
/// <param name="ct">Cancellation token</param>
Task<ExchangeWebResult<IEnumerable<SharedPosition>>> GetPositionsAsync(GetPositionsRequest request, CancellationToken ct = default);
/// <summary>
/// Close position order request options
/// </summary>
EndpointOptions<ClosePositionRequest> ClosePositionOptions { get; }
/// <summary>
/// Close a currently open position
/// </summary>
/// <param name="request">Request info</param>
/// <param name="ct">Cancellation token</param>
/// <returns></returns>
Task<ExchangeWebResult<SharedId>> ClosePositionAsync(ClosePositionRequest request, CancellationToken ct = default);
}
}
@@ -0,0 +1,23 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Client for request futures symbol info
/// </summary>
public interface IFuturesSymbolRestClient : ISharedClient
{
/// <summary>
/// Futures symbol request options
/// </summary>
EndpointOptions<GetSymbolsRequest> GetFuturesSymbolsOptions { get; }
/// <summary>
/// Get info on all futures symbols supported on the exchagne
/// </summary>
/// <param name="request">Request info</param>
/// <param name="ct">Cancellation token</param>
Task<ExchangeWebResult<IEnumerable<SharedFuturesSymbol>>> GetFuturesSymbolsAsync(GetSymbolsRequest request, CancellationToken ct = default);
}
}
@@ -0,0 +1,34 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Client for requesting ticker info for futures symbols
/// </summary>
public interface IFuturesTickerRestClient : ISharedClient
{
/// <summary>
/// Futures get ticker request options
/// </summary>
EndpointOptions<GetTickerRequest> GetFuturesTickerOptions { get; }
/// <summary>
/// Get ticker info for a specific futures symbol
/// </summary>
/// <param name="request">Request info</param>
/// <param name="ct">Cancellation token</param>
Task<ExchangeWebResult<SharedFuturesTicker>> GetFuturesTickerAsync(GetTickerRequest request, CancellationToken ct = default);
/// <summary>
/// Futures get tickers request options
/// </summary>
EndpointOptions<GetTickersRequest> GetFuturesTickersOptions { get; }
/// <summary>
/// Get ticker info for aall futures symbols
/// </summary>
/// <param name="request">Request info</param>
/// <param name="ct">Cancellation token</param>
Task<ExchangeWebResult<IEnumerable<SharedFuturesTicker>>> GetFuturesTickersAsync(GetTickersRequest request, CancellationToken ct = default);
}
}
@@ -0,0 +1,24 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Client for getting the index price klines for a symbol
/// </summary>
public interface IIndexPriceKlineRestClient : ISharedClient
{
/// <summary>
/// Index price klines request options
/// </summary>
GetKlinesOptions GetIndexPriceKlinesOptions { get; }
/// <summary>
/// Get index price kline/candlestick data
/// </summary>
/// <param name="request">Request info</param>
/// <param name="nextPageToken">The pagination token from the previous request to continue pagination</param>
/// <param name="ct">Cancellation token</param>
Task<ExchangeWebResult<IEnumerable<SharedFuturesKline>>> GetIndexPriceKlinesAsync(GetKlinesRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default);
}
}
@@ -0,0 +1,39 @@
using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Client for managing the leverage of a symbol
/// </summary>
public interface ILeverageRestClient : ISharedClient
{
/// <summary>
/// How the leverage setting is configured on the exchange
/// </summary>
SharedLeverageSettingMode LeverageSettingType { get; }
/// <summary>
/// Leverage request options
/// </summary>
EndpointOptions<GetLeverageRequest> GetLeverageOptions { get; }
/// <summary>
/// Get the current leverage setting for a symbol
/// </summary>
/// <param name="request">Request info</param>
/// <param name="ct">Cancellation token</param>
Task<ExchangeWebResult<SharedLeverage>> GetLeverageAsync(GetLeverageRequest request, CancellationToken ct = default);
/// <summary>
/// Leverage set request options
/// </summary>
SetLeverageOptions SetLeverageOptions { get; }
/// <summary>
/// Set the leverage for a symbol
/// </summary>
/// <param name="request">Request info</param>
/// <param name="ct">Cancellation token</param>
Task<ExchangeWebResult<SharedLeverage>> SetLeverageAsync(SetLeverageRequest request, CancellationToken ct = default);
}
}
@@ -0,0 +1,24 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Client for getting the mark price klines for a symbol
/// </summary>
public interface IMarkPriceKlineRestClient : ISharedClient
{
/// <summary>
/// Mark price klines request options
/// </summary>
GetKlinesOptions GetMarkPriceKlinesOptions { get; }
/// <summary>
/// Get mark price kline/candlestick data
/// </summary>
/// <param name="request">Request info</param>
/// <param name="nextPageToken">The pagination token from the previous request to continue pagination</param>
/// <param name="ct">Cancellation token</param>
Task<ExchangeWebResult<IEnumerable<SharedFuturesKline>>> GetMarkPriceKlinesAsync(GetKlinesRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default);
}
}
@@ -0,0 +1,22 @@
using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Client for getting the open interest for a symbol
/// </summary>
public interface IOpenInterestRestClient : ISharedClient
{
/// <summary>
/// Open interest request options
/// </summary>
EndpointOptions<GetOpenInterestRequest> GetOpenInterestOptions { get; }
/// <summary>
/// Get the open interest for a symbol
/// </summary>
/// <param name="request">Request info</param>
/// <param name="ct">Cancellation token</param>
Task<ExchangeWebResult<SharedOpenInterest>> GetOpenInterestAsync(GetOpenInterestRequest request, CancellationToken ct = default);
}
}
@@ -0,0 +1,24 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Client for getting position history
/// </summary>
public interface IPositionHistoryRestClient : ISharedClient
{
/// <summary>
/// Position history request options
/// </summary>
GetPositionHistoryOptions GetPositionHistoryOptions { get; }
/// <summary>
/// Get position history
/// </summary>
/// <param name="request">Request info</param>
/// <param name="nextPageToken">The pagination token from the previous request to continue pagination</param>
/// <param name="ct">Cancellation token</param>
Task<ExchangeWebResult<IEnumerable<SharedPositionHistory>>> GetPositionHistoryAsync(GetPositionHistoryRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default);
}
}
@@ -0,0 +1,38 @@
using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Client for managing the position mode setting
/// </summary>
public interface IPositionModeRestClient : ISharedClient
{
/// <summary>
/// How the exchange handles setting the position mode
/// </summary>
SharedPositionModeSelection PositionModeSettingType { get; }
/// <summary>
/// Position mode request options
/// </summary>
GetPositionModeOptions GetPositionModeOptions { get; }
/// <summary>
/// Get the current position mode setting
/// </summary>
/// <param name="request">Request info</param>
/// <param name="ct">Cancellation token</param>
Task<ExchangeWebResult<SharedPositionModeResult>> GetPositionModeAsync(GetPositionModeRequest request, CancellationToken ct = default);
/// <summary>
/// Position mode set request options
/// </summary>
SetPositionModeOptions SetPositionModeOptions { get; }
/// <summary>
/// Set the position mode to a new value
/// </summary>
/// <param name="request">Request info</param>
/// <param name="ct">Cancellation token</param>
Task<ExchangeWebResult<SharedPositionModeResult>> SetPositionModeAsync(SetPositionModeRequest request, CancellationToken ct = default);
}
}
@@ -0,0 +1,36 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Client for requesting asset info
/// </summary>
public interface IAssetsRestClient : ISharedClient
{
/// <summary>
/// Asset request options
/// </summary>
EndpointOptions<GetAssetRequest> GetAssetOptions { get; }
/// <summary>
/// Get info on a specific asset
/// </summary>
/// <param name="request">Request info</param>
/// <param name="ct">Cancellation token</param>
Task<ExchangeWebResult<SharedAsset>> GetAssetAsync(GetAssetRequest request, CancellationToken ct = default);
/// <summary>
/// Assets request options
/// </summary>
EndpointOptions<GetAssetsRequest> GetAssetsOptions { get; }
/// <summary>
/// Get info on all assets the exchange supports
/// </summary>
/// <param name="request">Request info</param>
/// <param name="ct">Cancellation token</param>
Task<ExchangeWebResult<IEnumerable<SharedAsset>>> GetAssetsAsync(GetAssetsRequest request, CancellationToken ct = default);
}
}
@@ -0,0 +1,25 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Client for requesting user balance info
/// </summary>
public interface IBalanceRestClient : ISharedClient
{
/// <summary>
/// Balances request options
/// </summary>
EndpointOptions<GetBalancesRequest> GetBalancesOptions { get; }
/// <summary>
/// Get balances for the user
/// </summary>
/// <param name="request">Request info</param>
/// <param name="ct">Cancellation token</param>
/// <returns></returns>
Task<ExchangeWebResult<IEnumerable<SharedBalance>>> GetBalancesAsync(GetBalancesRequest request, CancellationToken ct = default);
}
}
@@ -0,0 +1,39 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Client for requesting deposit addresses and deposit records
/// </summary>
public interface IDepositRestClient : ISharedClient
{
/// <summary>
/// Deposit addresses request options
/// </summary>
EndpointOptions<GetDepositAddressesRequest> GetDepositAddressesOptions { get; }
/// <summary>
/// Get deposit addresses for an asset
/// </summary>
/// <param name="request">Request info</param>
/// <param name="ct">Cancellation token</param>
/// <returns></returns>
Task<ExchangeWebResult<IEnumerable<SharedDepositAddress>>> GetDepositAddressesAsync(GetDepositAddressesRequest request, CancellationToken ct = default);
/// <summary>
/// Deposits request options
/// </summary>
GetDepositsOptions GetDepositsOptions { get; }
/// <summary>
/// Get deposit records
/// </summary>
/// <param name="request">Request info</param>
/// <param name="nextPageToken">The pagination token from the previous request to continue pagination</param>
/// <param name="ct">Cancellation token</param>
/// <returns></returns>
Task<ExchangeWebResult<IEnumerable<SharedDeposit>>> GetDepositsAsync(GetDepositsRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default);
}
}
@@ -0,0 +1,26 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Client for requesting kline/candlestick data
/// </summary>
public interface IKlineRestClient : ISharedClient
{
/// <summary>
/// Kline request options
/// </summary>
GetKlinesOptions GetKlinesOptions { get; }
/// <summary>
/// Get kline/candlestick data
/// </summary>
/// <param name="request">Request info</param>
/// <param name="nextPageToken">The pagination token from the previous request to continue pagination</param>
/// <param name="ct">Cancellation token</param>
/// <returns></returns>
Task<ExchangeWebResult<IEnumerable<SharedKline>>> GetKlinesAsync(GetKlinesRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default);
}
}
@@ -0,0 +1,45 @@
using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Client for managing the listen key for user stream updates
/// </summary>
public interface IListenKeyRestClient : ISharedClient
{
/// <summary>
/// Start listen key request options
/// </summary>
EndpointOptions<StartListenKeyRequest> StartOptions { get; }
/// <summary>
/// Get the listen key which can be used for user data updates on the socket client
/// </summary>
/// <param name="request">Request info</param>
/// <param name="ct">Cancellation token</param>
/// <returns></returns>
Task<ExchangeWebResult<string>> StartListenKeyAsync(StartListenKeyRequest request, CancellationToken ct = default);
/// <summary>
/// Keep-alive listen key request options
/// </summary>
EndpointOptions<KeepAliveListenKeyRequest> KeepAliveOptions { get; }
/// <summary>
/// Keep-alive the listen key, needs to be called at a regular interval (typically every 30 minutes)
/// </summary>
/// <param name="request">Request info</param>
/// <param name="ct">Cancellation token</param>
/// <returns></returns>
Task<ExchangeWebResult<string>> KeepAliveListenKeyAsync(KeepAliveListenKeyRequest request, CancellationToken ct = default);
/// <summary>
/// Stop listen key request options
/// </summary>
EndpointOptions<StopListenKeyRequest> StopOptions { get; }
/// <summary>
/// Stop the listen key, updates will no longer be send to the user data stream for this listen key
/// </summary>
/// <param name="request">Request info</param>
/// <param name="ct">Cancellation token</param>
/// <returns></returns>
Task<ExchangeWebResult<string>> StopListenKeyAsync(StopListenKeyRequest request, CancellationToken ct = default);
}
}
@@ -0,0 +1,24 @@
using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Client for retrieving the order book for a symbol
/// </summary>
public interface IOrderBookRestClient : ISharedClient
{
/// <summary>
/// Order book request options
/// </summary>
GetOrderBookOptions GetOrderBookOptions { get; }
/// <summary>
/// Get the order book for a symbol
/// </summary>
/// <param name="request">Request info</param>
/// <param name="ct">Cancellation token</param>
/// <returns></returns>
Task<ExchangeWebResult<SharedOrderBook>> GetOrderBookAsync(GetOrderBookRequest request, CancellationToken ct = default);
}
}
@@ -0,0 +1,25 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Client for retrieving the most recent public trades
/// </summary>
public interface IRecentTradeRestClient : ISharedClient
{
/// <summary>
/// Recent trades request options
/// </summary>
GetRecentTradesOptions GetRecentTradesOptions { get; }
/// <summary>
/// Get the most recent public trades
/// </summary>
/// <param name="request">Request info</param>
/// <param name="ct">Cancellation token</param>
/// <returns></returns>
Task<ExchangeWebResult<IEnumerable<SharedTrade>>> GetRecentTradesAsync(GetRecentTradesRequest request, CancellationToken ct = default);
}
}
@@ -0,0 +1,26 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Client for retrieving trading history
/// </summary>
public interface ITradeHistoryRestClient : ISharedClient
{
/// <summary>
/// Trade history request options
/// </summary>
GetTradeHistoryOptions GetTradeHistoryOptions { get; }
/// <summary>
/// Get public trade history
/// </summary>
/// <param name="request">Request info</param>
/// <param name="nextPageToken">The pagination token from the previous request to continue pagination</param>
/// <param name="ct">Cancellation token</param>
/// <returns></returns>
Task<ExchangeWebResult<IEnumerable<SharedTrade>>> GetTradeHistoryAsync(GetTradeHistoryRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default);
}
}
@@ -0,0 +1,24 @@
using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Client for requesting to withdraw funds from the exchange
/// </summary>
public interface IWithdrawRestClient : ISharedClient
{
/// <summary>
/// Withdraw request options
/// </summary>
WithdrawOptions WithdrawOptions { get; }
/// <summary>
/// Request a withdrawal
/// </summary>
/// <param name="request">Request info</param>
/// <param name="ct">Cancellation token</param>
/// <returns></returns>
Task<ExchangeWebResult<SharedId>> WithdrawAsync(WithdrawRequest request, CancellationToken ct = default);
}
}
@@ -0,0 +1,26 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Client for retrieving withdrawal records
/// </summary>
public interface IWithdrawalRestClient : ISharedClient
{
/// <summary>
/// Withdrawal record request options
/// </summary>
GetWithdrawalsOptions GetWithdrawalsOptions { get; }
/// <summary>
/// Get withdrawal records
/// </summary>
/// <param name="request">Request info</param>
/// <param name="nextPageToken">The pagination token from the previous request to continue pagination</param>
/// <param name="ct">Cancellation token</param>
/// <returns></returns>
Task<ExchangeWebResult<IEnumerable<SharedWithdrawal>>> GetWithdrawalsAsync(GetWithdrawalsRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default);
}
}
@@ -0,0 +1,114 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Client for placing and managing spot orders
/// </summary>
public interface ISpotOrderRestClient : ISharedClient
{
/// <summary>
/// How the trading fee is deducted
/// </summary>
SharedFeeDeductionType SpotFeeDeductionType { get; }
/// <summary>
/// How the asset is determined in which the trading fee is paid
/// </summary>
SharedFeeAssetType SpotFeeAssetType { get; }
/// <summary>
/// Supported order types
/// </summary>
IEnumerable<SharedOrderType> SpotSupportedOrderTypes { get; }
/// <summary>
/// Supported time in force
/// </summary>
IEnumerable<SharedTimeInForce> SpotSupportedTimeInForce { get; }
/// <summary>
/// Quantity types support
/// </summary>
SharedQuantitySupport SpotSupportedOrderQuantity { get; }
/// <summary>
/// Spot place order request options
/// </summary>
PlaceSpotOrderOptions PlaceSpotOrderOptions { get; }
/// <summary>
/// Place a new spot order
/// </summary>
/// <param name="request">Request info</param>
/// <param name="ct">Cancellation token</param>
Task<ExchangeWebResult<SharedId>> PlaceSpotOrderAsync(PlaceSpotOrderRequest request, CancellationToken ct = default);
/// <summary>
/// Spot get order request options
/// </summary>
EndpointOptions<GetOrderRequest> GetSpotOrderOptions { get; }
/// <summary>
/// Get info on a specific spot order
/// </summary>
/// <param name="request">Request info</param>
/// <param name="ct">Cancellation token</param>
Task<ExchangeWebResult<SharedSpotOrder>> GetSpotOrderAsync(GetOrderRequest request, CancellationToken ct = default);
/// <summary>
/// Spot get open orders request options
/// </summary>
EndpointOptions<GetOpenOrdersRequest> GetOpenSpotOrdersOptions { get; }
/// <summary>
/// Get info on a open spot orders
/// </summary>
/// <param name="request">Request info</param>
/// <param name="ct">Cancellation token</param>
Task<ExchangeWebResult<IEnumerable<SharedSpotOrder>>> GetOpenSpotOrdersAsync(GetOpenOrdersRequest request, CancellationToken ct = default);
/// <summary>
/// Spot get closed orders request options
/// </summary>
PaginatedEndpointOptions<GetClosedOrdersRequest> GetClosedSpotOrdersOptions { get; }
/// <summary>
/// Get info on closed spot orders
/// </summary>
/// <param name="request">Request info</param>
/// <param name="nextPageToken">The pagination token from the previous request to continue pagination</param>
/// <param name="ct">Cancellation token</param>
Task<ExchangeWebResult<IEnumerable<SharedSpotOrder>>> GetClosedSpotOrdersAsync(GetClosedOrdersRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default);
/// <summary>
/// Spot get order trades request options
/// </summary>
EndpointOptions<GetOrderTradesRequest> GetSpotOrderTradesOptions { get; }
/// <summary>
/// Get trades for a specific spot order
/// </summary>
/// <param name="request">Request info</param>
/// <param name="ct">Cancellation token</param>
Task<ExchangeWebResult<IEnumerable<SharedUserTrade>>> GetSpotOrderTradesAsync(GetOrderTradesRequest request, CancellationToken ct = default);
/// <summary>
/// Spot user trades request options
/// </summary>
PaginatedEndpointOptions<GetUserTradesRequest> GetSpotUserTradesOptions { get; }
/// <summary>
/// Get spot user trade records
/// </summary>
/// <param name="request">Request info</param>
/// <param name="nextPageToken">The pagination token from the previous request to continue pagination</param>
/// <param name="ct">Cancellation token</param>
Task<ExchangeWebResult<IEnumerable<SharedUserTrade>>> GetSpotUserTradesAsync(GetUserTradesRequest request, INextPageToken? nextPageToken = null, CancellationToken ct = default);
/// <summary>
/// Spot cancel order request options
/// </summary>
EndpointOptions<CancelOrderRequest> CancelSpotOrderOptions { get; }
/// <summary>
/// Cancel a spot order
/// </summary>
/// <param name="request">Request info</param>
/// <param name="ct">Cancellation token</param>
Task<ExchangeWebResult<SharedId>> CancelSpotOrderAsync(CancelOrderRequest request, CancellationToken ct = default);
}
}
@@ -0,0 +1,24 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Client for requesting spot symbols
/// </summary>
public interface ISpotSymbolRestClient : ISharedClient
{
/// <summary>
/// Spot symbols request options
/// </summary>
EndpointOptions<GetSymbolsRequest> GetSpotSymbolsOptions { get; }
/// <summary>
/// Get info on all available spot symbols on the exchange
/// </summary>
/// <param name="request">Request info</param>
/// <param name="ct">Cancellation token</param>
Task<ExchangeWebResult<IEnumerable<SharedSpotSymbol>>> GetSpotSymbolsAsync(GetSymbolsRequest request, CancellationToken ct = default);
}
}
@@ -0,0 +1,33 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Client for requesting spot tickers
/// </summary>
public interface ISpotTickerRestClient : ISharedClient
{
/// <summary>
/// Spot ticker request options
/// </summary>
EndpointOptions<GetTickerRequest> GetSpotTickerOptions { get; }
/// <summary>
/// Get ticker for a specific spot symbol
/// </summary>
/// <param name="request">Request info</param>
/// <param name="ct">Cancellation token</param>
Task<ExchangeWebResult<SharedSpotTicker>> GetSpotTickerAsync(GetTickerRequest request, CancellationToken ct = default);
/// <summary>
/// Spot tickers request options
/// </summary>
EndpointOptions<GetTickersRequest> GetSpotTickersOptions { get; }
/// <summary>
/// Get tickers for all spot symbols
/// </summary>
/// <param name="request">Request info</param>
/// <param name="ct">Cancellation token</param>
Task<ExchangeWebResult<IEnumerable<SharedSpotTicker>>> GetSpotTickersAsync(GetTickersRequest request, CancellationToken ct = default);
}
}