using CryptoExchange.Net.Objects;
using System.Threading;
using System.Threading.Tasks;
namespace CryptoExchange.Net.SharedApis
{
///
/// Client for managing the position mode setting
///
public interface IPositionModeRestClient : ISharedClient
{
///
/// How the exchange handles setting the position mode
///
SharedPositionModeSelection PositionModeSettingType { get; }
///
/// Position mode request options.
/// Use and to check for required and optional parameters for the request.
/// Exchange specific parameters can be added to the request via the `ExchangeParameters` property of the request object.
///
GetPositionModeOptions GetPositionModeOptions { get; }
///
/// Get the current position mode setting, see for request options and exchange specific required/optional parameters.
///
/// Request info
/// Cancellation token
Task> GetPositionModeAsync(GetPositionModeRequest request, CancellationToken ct = default);
///
/// Position mode set request options.
/// Use and to check for required and optional parameters for the request.
/// Exchange specific parameters can be added to the request via the `ExchangeParameters` property of the request object.
///
SetPositionModeOptions SetPositionModeOptions { get; }
///
/// Set the position mode to a new value, see for request options and exchange specific required/optional parameters.
///
/// Request info
/// Cancellation token
Task> SetPositionModeAsync(SetPositionModeRequest request, CancellationToken ct = default);
}
}