#import <Foundation/Foundation.h>
#import <WebKit/WebKit.h>

NS_ASSUME_NONNULL_BEGIN

/// WebView 预热专用实例持有者（容量 = 1）。
///
/// **该实例仅用于预热，永不复用到页面容器**。
///
/// iOS `WKWebView` 无 clear-history API：若把加载过 warmup.html 的实例复用到页面，warmup.html
/// 会残留在 `backForwardList` 中（返回键可退回 warmup 页）且无法清除。为杜绝该历史暂留问题，
/// 容器每次都新建独立 WKWebView（见 `TQWebViewController`），预热实例只在后台承担网络/进程预热职责。
///
/// 预热收益完全由共享底座承接（无需复用实例本身）：
/// - 进程复用：共享 `WKProcessPool`——预建实例已启动 WebContent 进程，页面新建 WKWebView 复用同一进程。
/// - 磁盘缓存复用：`defaultDataStore`——warmup.html 与真实页同 host，其写入的磁盘缓存可被真实页跨实例命中。
///
/// - light：离屏预建空实例（触发 WebContent 进程启动 + 保活）。
/// - heavy：预建实例加载对应 warmup.html（L4 网络预热，写入共享磁盘缓存）。
/// - 所有 WKWebView 操作均在主线程执行；内存告警时 `releasePool` 释放。
@interface TQWebViewPool : NSObject

+ (instancetype)sharedPool;

/// 内存告警触发释放后的回调（供上层重置去重状态，使后续 prewarm 可重新预热）。
///
/// 仅在 `onMemoryWarning` 释放路径调用；客户主动 `releasePool` / `setEnabled:NO` 不触发。
/// 由 `TQWebViewPrewarmer` 设置为 `{ [dedup reset] }`。
@property (nonatomic, copy, nullable) void (^onReleasedByMemoryWarning)(void);

- (void)setEnabled:(BOOL)enabled;
- (void)preCreateWithInjectUserAgent:(BOOL)injectUserAgent userAgentExtra:(NSString *)userAgentExtra;
- (void)warmWithUrl:(NSString *)warmupUrl
    injectUserAgent:(BOOL)injectUserAgent
     userAgentExtra:(NSString *)userAgentExtra;
- (void)releasePool;

@end

NS_ASSUME_NONNULL_END
