using BotPages.Core.Context;
using BotPages.Core.Messaging;
namespace BotPages.Core.Abstractions;
///
/// Контракт адаптера мессенджера.
/// Определяет операции отправки сообщений, файлов и прогресса.
///
public interface IMessengerAdapter
{
Capabilities Capabilities { get; }
///
/// Отправить текстовое сообщение в чат.
///
Task SendTextAsync(string chatId, string text, MessageFormat format,
IEnumerable>? inline,
IEnumerable>? reply,
string? messageId,
CancellationToken ct
);
///
/// Отправить файл в чат.
///
Task SendFileAsync(string chatId, FileDescriptor file, string? caption, MessageFormat? captionFormat, CancellationToken ct);
///
/// Создать билдер альбома для отправки медиагруппы.
///
IAlbumBuilder CreateAlbumBuilder(PageContext ctx);
///
/// Вызывается при выходе со страницы.
///
Task OnLeaveAsync(PageContext ctx, CancellationToken ct);
}
///
/// Контракт конфигурации адаптера.
///
public interface IMessangerAdapterSetup : IMessengerAdapter
{
///
/// Запуск работы адаптера
///
///
///
///
Task StartAdapterAsync(Func onUpdate, CancellationToken ct);
}