using OF_DL.Models;
using UserEntities = OF_DL.Models.Entities.Users;
namespace OF_DL.Services;
public interface IDownloadOrchestrationService
{
///
/// Fetch subscriptions, lists, filter ignored users.
///
Task GetAvailableUsersAsync();
///
/// Get users for a specific list by name.
///
Task> GetUsersForListAsync(
string listName, Dictionary allUsers, Dictionary lists);
///
/// Resolve download path for a username based on config.
///
string ResolveDownloadPath(string username);
///
/// Prepare user folder (create dir, check username, create DB).
///
Task PrepareUserFolderAsync(string username, long userId, string path);
///
/// Download all configured content types for a single creator.
///
Task DownloadCreatorContentAsync(
string username, long userId, string path,
Dictionary users,
bool clientIdBlobMissing, bool devicePrivateKeyMissing,
IDownloadEventHandler eventHandler);
///
/// Download a single post by ID.
///
Task DownloadSinglePostAsync(
string username, long postId, string path,
Dictionary users,
bool clientIdBlobMissing, bool devicePrivateKeyMissing,
IDownloadEventHandler eventHandler);
///
/// Download purchased tab content for all users.
///
Task DownloadPurchasedTabAsync(
Dictionary users,
bool clientIdBlobMissing, bool devicePrivateKeyMissing,
IDownloadEventHandler eventHandler);
///
/// Download a single paid message by message ID.
///
Task DownloadSinglePaidMessageAsync(
string username, long messageId, string path,
Dictionary users,
bool clientIdBlobMissing, bool devicePrivateKeyMissing,
IDownloadEventHandler eventHandler);
///
/// Resolve username from user ID via API.
///
Task ResolveUsernameAsync(long userId);
///
/// Tracks paid post IDs across downloads.
///
List PaidPostIds { get; }
}