using MiningService.Domain.SeedWork;

namespace MiningService.Domain.AggregatesModel.ConfigurationAggregate;

/// <summary>
/// EN: Repository interface for Configuration aggregates.
/// VI: Interface repository cho các Configuration aggregate.
/// </summary>
public interface IConfigurationRepository : IRepository<MiningConfiguration>
{
    Task<MiningConfiguration> GetMiningConfigAsync(CancellationToken cancellationToken = default);
    Task<StreakConfiguration> GetStreakConfigAsync(CancellationToken cancellationToken = default);
    Task<ReferralConfiguration> GetReferralConfigAsync(CancellationToken cancellationToken = default);

    void UpdateMiningConfig(MiningConfiguration config);
    void UpdateStreakConfig(StreakConfiguration config);
    void UpdateReferralConfig(ReferralConfiguration config);
}
