namespace BotPages.Core.Abstractions;
///
/// Фабрика адаптеров мессенджеров.
/// Используется для разрешения конкретного по ID адаптера.
///
public interface IMessengerAdapterFactory
{
///
/// Список всех зарегистрированных адаптеров.
///
IReadOnlyList AllAdapters { get; }
///
/// Зарегистрировать адаптер с уникальным идентификатором.
///
/// Уникальный идентификатор адаптера.
/// Экземпляр адаптера.
/// Текущий экземпляр фабрики для цепочки вызовов.
/// Если адаптер с таким ID уже зарегистрирован.
IMessengerAdapterFactory Register(string adapterId, IMessengerAdapterSetup adapter);
///
/// Зарегистрировать адаптер с автоматически сгенерированным ID.
///
IMessengerAdapterFactory Register(IMessengerAdapterSetup adapter);
///
/// Получить адаптер по ID.
///
/// Если адаптер не найден.
IMessengerAdapter Resolve(string adapterId);
///
/// Попытаться получить адаптер по ID.
///
bool TryResolve(string adapterId, out IMessengerAdapter? adapter);
///
/// Получить все адаптеры определенного типа.
///
IReadOnlyList GetAdaptersByType(string adapterType);
///
/// Проверить, зарегистрирован ли адаптер с указанным ID.
///
bool Contains(string adapterId);
///
/// Удалить адаптер по ID.
///
bool Remove(string adapterId);
}