using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Kavita.Models.DTOs.ReadingLists.CBL.RemapRules;
using Kavita.Models.Entities;
using Kavita.Models.Entities.ReadingLists;
namespace Kavita.API.Repositories;
public interface IReadingListRemapRuleRepository
{
///
/// Returns all remap rules matching the given normalized CBL series names,
/// ordered with user-specific rules before global rules.
///
Task> GetRulesForNamesAsync(IList normalizedNames, int userId, CancellationToken ct = default);
Task> GetRulesForUserAsync(int userId, CancellationToken ct = default);
Task GetByIdAsync(int id, CancellationToken ct = default);
Task GetDtoByIdAsync(int id, CancellationToken ct = default);
///
/// Admin-only: returns all rules across all users, with user names.
///
Task> GetAllRulesAsync(CancellationToken ct = default);
///
/// Finds an existing rule for the same user with the same CBL matching key (normalized name + volume + number).
///
Task GetExactRuleAsync(string normalizedCblSeriesName, string? cblVolume, string? cblNumber, int userId, CancellationToken ct = default);
void Add(ReadingListRemapRule rule);
void Remove(ReadingListRemapRule rule);
}