using Knot.Contracts.Settings.Application.DTOs;

namespace Knot.Contracts.Settings.Application.Abstractions;

public interface ISettingsService
{
    Task<SystemSettingsDto> GetSettingsAsync(CancellationToken cancellationToken = default);
    Task UpdateSettingsAsync(SystemSettingsDto settings, CancellationToken cancellationToken = default);
    SystemSettingsDto Current { get; }
}

public interface ISystemSettings
{
    SystemConfig Current { get; }
}

public interface IStoriesSettings
{
    StoriesConfig Current { get; }
}

public interface IChatsSettings
{
    ChatsConfig Current { get; }
}

public interface IMessagesSettings
{
    MessagesConfig Current { get; }
}

public interface IWebRtcSettings
{
    WebRtcConfig Current { get; }
}

public interface IKlipySettings
{
    KlipyConfig Current { get; }
}

public interface IImportSettings
{
    ImportConfig Current { get; }
}

public interface IFederationSettings
{
    FederationConfig Current { get; }
}
