using System.Threading;
using System.Threading.Tasks;
using SharedLibraryCore.RCon;

namespace SharedLibraryCore.Interfaces
{
    /// <summary>
    ///     defines the capabilities of an RCon connection
    /// </summary>
    public interface IRConConnection
    {
        /// <summary>
        ///     sends a query with the instance of the rcon connection
        /// </summary>
        /// <param name="type">type of RCon query to perform</param>
        /// <param name="parameters">optional parameter list</param>
        /// <param name="token"></param>
        /// <returns></returns>
        Task<string[]> SendQueryAsync(StaticHelpers.QueryType type, string parameters = "", CancellationToken token = default);

        /// <summary>
        ///     sets the rcon parser
        /// </summary>
        /// <param name="config">parser</param>
        void SetConfiguration(IRConParser config);
    }
}