namespace TaxBaik.Domain.Interfaces;

using TaxBaik.Domain.Entities;

public interface ICompanyRepository
{
    Task<int> CreateAsync(Company company, CancellationToken cancellationToken = default);
    Task<Company?> GetByIdAsync(int id, CancellationToken cancellationToken = default);
    Task<Company?> GetByCodeAsync(string code, CancellationToken cancellationToken = default);
    Task<IEnumerable<Company>> GetAllActiveAsync(CancellationToken cancellationToken = default);
    Task<(IEnumerable<Company> Items, int Total)> GetPagedAsync(int page, int pageSize, CancellationToken cancellationToken = default);
    Task UpdateAsync(Company company, CancellationToken cancellationToken = default);
    Task DeleteAsync(int id, CancellationToken cancellationToken = default);
}
