#import <UIKit/UIKit.h>
#import <WebKit/WebKit.h>
#import "TQSignCallbacks.h"

NS_ASSUME_NONNULL_BEGIN

/// 统一下载管理器:URLSession + Cookie 同步 + 分享 sheet。
///
/// **策略**(方案 C:统一 URLSession + Cookie 同步):
/// 1. 从 `WKWebsiteDataStore.httpCookieStore` 获取所有 Cookie(含 HttpOnly)
/// 2. 注入 Cookie 到 NSURLRequest
/// 3. NSURLSession.sharedSession.downloadTask 下载文件到 tmp
/// 4. 弹 UIActivityViewController 分享 sheet
/// 5. 失败时自动 fallback 到 [UIApplication openURL:](Safari)
@interface TQDownloadManager : NSObject

- (instancetype)initWithOnEvent:(nullable TQOnEventBlock)onEvent
                 hostController:(nullable UIViewController *)hostController;

/// 更新 hostController(容器模式下 VC 可能延迟设置)
- (void)updateHostController:(nullable UIViewController *)hostController;

/// 执行下载:根据配置决定是否同步 Cookie → URLSession 下载 → 分享 sheet。
///
/// @param url 下载文件的 URL
/// @param response 可选的 NSURLResponse(用于提取 MIME / Content-Disposition)
/// @param dataStore WKWebsiteDataStore,用于获取 Cookie。`nil` 时使用 `defaultDataStore`。
/// @param downloadWithCookies 是否从 WKWebView 同步 Cookie 到下载请求。
- (void)downloadURL:(NSURL *)url
           response:(nullable NSURLResponse *)response
          dataStore:(nullable WKWebsiteDataStore *)dataStore
downloadWithCookies:(BOOL)downloadWithCookies;

@end

NS_ASSUME_NONNULL_END
