package com.tencent.qian.webview.model

/**
 * 预热全局配置（三端字段对齐）。
 *
 * 全部字段带默认值，[com.tencent.qian.webview.TencentQianWebViewPrewarmer.configure] 可省参。
 *
 * @property environment 目标环境，默认 [PrewarmEnvironment.PROD]。
 * @property manifestUrl 显式 manifest URL 覆盖（私有部署 / 特殊场景逃生舱）；
 *   `null` 时按 [environment] 走内置映射。
 * @property poolSize 池容量。有效值恒为 1；> 1 会被 clamp 到 1 并 log 警告（参数保留以便后续扩展）。
 * @property enablePool 是否启用 WebView 复用池。
 * @property preferredLanguage 预热语言偏好（如 `"en-US"` / `"zh-CN"`）。客户显式指定要预热的语言资源；
 *   `null` 时交由 `warmup.html` 自动判定（`localStorage` / `navigator.language`）。
 *   Android 走 L4：非空时以 `&lang=` 传入 `warmupUrl`（在 warmup.html 内优先级最高）。
 * @property injectUserAgent 是否注入 SDK UA 标识（`qianwv/<version>`，与 [TencentQianWebViewConfig] 对齐），默认 true。
 *   池实例按本字段创建/热身 `warmupUrl`，保证与 `open()` 的 config UA 一致才能命中缓存并复用。
 * @property userAgentExtra 客户附加 UA 段，拼接在 `qianwv/x.x.x` 之后（与 [TencentQianWebViewConfig] 对齐），默认空。
 *   与 `open()` 的 config UA 一致时池实例才会被复用。
 */
public data class PrewarmConfig(
    val environment: PrewarmEnvironment = PrewarmEnvironment.PROD,
    val manifestUrl: String? = null,
    val poolSize: Int = 1,
    val enablePool: Boolean = true,
    val preferredLanguage: String? = null,
    val injectUserAgent: Boolean = true,
    val userAgentExtra: String = ""
) {
    public companion object {
        /** 默认配置（全部默认值）。 */
        @JvmField
        public val DEFAULT: PrewarmConfig = PrewarmConfig()
    }
}
