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