namespace TeleWave.Application.Common.Interfaces;

/// <summary>Доступ к глобальным настройкам сайта (key-value), скрывающий хранилище от хендлеров.</summary>
public interface ISiteSettings
{
    Task<bool> IsRegistrationEnabledAsync(CancellationToken cancellationToken);

    /// <summary>Пишет значение в контекст (сохранение — за UnitOfWorkBehavior вызывающей команды).</summary>
    Task SetRegistrationEnabledAsync(bool enabled, CancellationToken cancellationToken);

    /// <summary>Предпочитаемые языки аудиодорожек при обработке, через запятую в порядке приоритета
    /// (напр. «rus,eng»); пусто — без предпочтения.</summary>
    Task<string> GetPreferredAudioLanguagesAsync(CancellationToken cancellationToken);

    Task SetPreferredAudioLanguagesAsync(string value, CancellationToken cancellationToken);

    /// <summary>Разрешено ли переключение каналов по номерам (см. 6.8).</summary>
    Task<bool> AreChannelNumbersEnabledAsync(CancellationToken cancellationToken);

    Task SetChannelNumbersEnabledAsync(bool enabled, CancellationToken cancellationToken);
}
