using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

namespace NexusReader.Application.Abstractions.Persistence;

/// <summary>
/// Provides access to user library ownership details, decoupling the relational database
/// structures from vector search and intelligence query operations.
/// </summary>
public interface IUserLibraryStore
{
    /// <summary>
    /// Retrieves a list of book IDs that are owned by or uploaded for the specified user.
    /// </summary>
    Task<List<Guid>> GetOwnedBookIdsAsync(string userId, CancellationToken cancellationToken = default);

    /// <summary>
    /// Retrieves a dictionary mapping book IDs to their titles.
    /// </summary>
    Task<Dictionary<Guid, string>> GetBookTitlesAsync(List<Guid> bookIds, CancellationToken cancellationToken = default);
}
