using System;
using System.Threading.Tasks;
using CryptoExchange.Net.Objects.Options;
using CryptoExchange.Net.Objects.Sockets;
namespace CryptoExchange.Net.Interfaces
{
///
/// Base class for socket API implementations
///
public interface ISocketClient: IDisposable
{
///
/// The exchange name
///
string Exchange { get; }
///
/// The options provided for this client
///
ExchangeOptions ClientOptions { get; }
///
/// Incoming kilobytes per second of data
///
public double IncomingKbps { get; }
///
/// The current amount of connections to the API from this client. A connection can have multiple subscriptions.
///
public int CurrentConnections { get; }
///
/// The current amount of subscriptions running from the client
///
public int CurrentSubscriptions { get; }
///
/// Unsubscribe from a stream using the subscription id received when starting the subscription
///
/// The id of the subscription to unsubscribe
///
Task UnsubscribeAsync(int subscriptionId);
///
/// Unsubscribe from a stream
///
/// The subscription to unsubscribe
///
Task UnsubscribeAsync(UpdateSubscription subscription);
///
/// Unsubscribe all subscriptions
///
///
Task UnsubscribeAllAsync();
}
}