using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using CoreAgent.ProtocolClient.Context;
using CoreAgent.ProtocolClient.Enums;
using CoreAgent.ProtocolClient.Models;
using Newtonsoft.Json.Linq;
namespace CoreAgent.ProtocolClient.ProtocolEngineCore
{
///
/// 定义了协议客户端的公共接口
///
public interface IProtocolWsClient : IDisposable
{
event EventHandler ConnectionOpened;
event EventHandler ConnectionClosed;
event EventHandler ConnectionError;
event EventHandler MessageReceived;
event EventHandler StatsReceived;
event EventHandler StateChanged;
bool IsConnected { get; }
ClientState State { get; }
bool IsReadonly { get; }
ProtocolClientContext Context { get; }
ProtocolClientConfig Config { get; }
void Start();
void Stop();
void ResetLogs();
void SetLogsConfig(ProtocolClientLogsConfig logsConfig, bool save = false);
void LogGet(Dictionary? parameters = null);
void TriggerStatsUpdate();
void ResetStatistics();
void SetStatisticsConfig(bool enableSamples, bool enableRf);
(bool samples, bool rf) GetStatisticsConfig();
void SetRefreshDelay(int delay);
void SetMessageHandler(string[] names, MessageHandler handler);
void UnsetMessageHandler(string[] names);
long SendMessage(JObject message, Action? callback = null, bool errorHandler = false);
}
}