using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Jellyfin.Plugin.WatchedTogether.Services;
///
/// Computes and applies the library access a shared account should have.
///
public interface ILibraryAccessService
{
///
/// Computes the set of libraries every one of the given members can reach.
///
/// The members to intersect.
///
/// The library identifiers common to all members. An empty set means the members have no
/// library in common, and the shared account should see nothing.
///
IReadOnlyList ComputeIntersection(IReadOnlyList memberIds);
///
/// Recomputes the intersection for a group and writes it to its shared account.
///
/// The shared account to update.
/// The group's members.
/// The libraries granted to the shared account.
Task> ApplyIntersectionAsync(Guid sharedUserId, IReadOnlyList memberIds);
}