using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using CryptoExchange.Net.CommonObjects;
using CryptoExchange.Net.Interfaces.CommonClients;
using CryptoExchange.Net.Objects;
namespace CryptoExchange.Net.Interfaces.CommonClients
{
///
/// Common futures endpoints
///
public interface IFuturesClient : IBaseRestClient
{
///
/// Place an order
///
/// The symbol the order is for
/// The side of the order
/// The type of the order
/// The quantity of the order
/// The price of the order, only for limit orders
/// [Optional] The account id to place the order on, required for some exchanges, ignored otherwise
/// [Optional] Leverage for this order. This is needed for some exchanges. For exchanges where this is not needed this parameter is ignored (and should be set before hand)
/// [Optional] Client specified id for this order
/// [Optional] Cancellation token for cancelling the request
/// The id of the resulting order
Task> PlaceOrderAsync(string symbol, CommonOrderSide side, CommonOrderType type, decimal quantity, decimal? price = null, int? leverage = null, string? accountId = null, string? clientOrderId = null, CancellationToken ct = default);
///
/// Get position
///
/// [Optional] Cancellation token for cancelling the request
///
Task>> GetPositionsAsync(CancellationToken ct = default);
}
}