using Forwarder.Domain;
using Forwarder.Models;

namespace Forwarder.Services;

/// <summary>
/// Сервиса отправки.
/// </summary>
public interface ISendService
{
	/// <summary>
	/// Отправляет сообщение.
	/// </summary>
	/// <param name="message">Сообщение.</param>
	/// <param name="assetId">Идентификатор ассета.</param>
	/// <param name="cancellationToken">Токен отмены.</param>
	/// <returns>Результат выполнения запроса.</returns>
	Task<Result> Send(Message message, Guid assetId, CancellationToken cancellationToken);

	/// <summary>
	/// Отправляет статус подключения объекта.
	/// </summary>
	/// <param name="isOnline">Статус подключения.</param>
	/// <param name="assetId">Идентификатор ассета.</param>
	/// <param name="cancellationToken">Токен отмены.</param>
	/// <returns>Результат выполнения запроса.</returns>
	Task<Result> SendOnlineStatus(bool isOnline, Guid assetId, CancellationToken cancellationToken);


	Task<Result> SendTestMessage(Message message, Guid assetId, CancellationToken cancellationToken);
}
