using Renci.SshNet.Common;
using System;
using System.Net.Sockets;
using System.Threading;
#if FEATURE_TAP
using System.Threading.Tasks;
#endif
namespace Renci.SshNet
{
    /// 
    /// Serves as base class for client implementations, provides common client functionality.
    /// 
    public interface IBaseClient
    {
        /// 
        /// Gets the connection info.
        /// 
        /// 
        /// The connection info.
        /// 
        /// The method was called after the client was disposed.
        ConnectionInfo ConnectionInfo { get; }
        /// 
        /// Gets a value indicating whether this client is connected to the server.
        /// 
        /// 
        /// true if this client is connected; otherwise, false.
        /// 
        /// The method was called after the client was disposed.
        bool IsConnected { get; }
        /// 
        /// Gets or sets the keep-alive interval.
        /// 
        /// 
        /// The keep-alive interval. Specify negative one (-1) milliseconds to disable the
        /// keep-alive. This is the default value.
        /// 
        /// The method was called after the client was disposed.
        TimeSpan KeepAliveInterval { get; set; }
        /// 
        /// Occurs when an error occurred.
        /// 
        /// 
        ///