using OF_DL.Models.Downloads; 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; } }