namespace TaxBaik.Domain.Interfaces;

using TaxBaik.Domain.Entities;

public interface ITaxProfileRepository
{
    Task<int> CreateAsync(TaxProfile profile, CancellationToken cancellationToken = default);
    Task<TaxProfile?> GetByIdAsync(int id, CancellationToken cancellationToken = default);
    Task<IEnumerable<TaxProfile>> GetAllAsync(CancellationToken cancellationToken = default);
    Task<TaxProfile?> GetByClientIdAsync(int clientId, CancellationToken cancellationToken = default);
    Task UpdateAsync(TaxProfile profile, CancellationToken cancellationToken = default);
    Task<IEnumerable<TaxProfile>> GetByRiskLevelAsync(string riskLevel, CancellationToken cancellationToken = default);
    Task<IEnumerable<TaxProfile>> GetUpcomingFilingDuesAsync(DateTime startDate, DateTime endDate, CancellationToken cancellationToken = default);
}
