namespace MyOffice.Data.Repositories.Currency;

using Models.Currencies;

public interface ICurrencyRepository
{
	List<Currency> GetAll(Guid userId);
	Task<List<Currency>> GetAllAsync(Guid userId, CancellationToken cancellationToken = default);
	Currency? Get(Guid userId, Guid id);
	Task<Currency?> GetAsync(Guid userId, Guid id, CancellationToken cancellationToken = default);
	Currency? GetByGlobalCurrency(Guid userId, string globalCurrencyId);
	Task<Currency?> GetByGlobalCurrencyAsync(Guid userId, string globalCurrencyId, CancellationToken cancellationToken = default);
	bool Add(Currency currency);
	Task<bool> AddAsync(Currency currency, CancellationToken cancellationToken = default);
	bool Update(Currency currency);
	Task<bool> UpdateAsync(Currency currency, CancellationToken cancellationToken = default);
	bool Remove(Currency currency);
	Task<bool> RemoveAsync(Currency currency, CancellationToken cancellationToken = default);
	List<Currency> GetPrimaries(Guid userId);
	Task<List<Currency>> GetPrimariesAsync(Guid userId, CancellationToken cancellationToken = default);
}
