using Books.Api.Domain.Accounts;
using Books.Api.EventFlow.ReadModels;

namespace Books.Api.EventFlow.Repositories;

public interface IAccountRepository
{
    Task<AccountReadModelDto?> GetByIdAsync(string id, CancellationToken cancellationToken = default);
    Task<IEnumerable<AccountReadModelDto>> GetByIdsAsync(List<AccountId> ids, CancellationToken cancellationToken = default);
    Task<IReadOnlyList<AccountReadModelDto>> GetByCompanyIdAsync(string companyId, CancellationToken cancellationToken = default);
    Task<IReadOnlyList<AccountReadModelDto>> GetActiveByCompanyIdAsync(string companyId, CancellationToken cancellationToken = default);
    Task<AccountReadModelDto?> GetByCompanyAndNumberAsync(string companyId, string accountNumber, CancellationToken cancellationToken = default);
}
