#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

/// 状态栏样式枚举。
typedef NS_ENUM(NSInteger, TQStatusBarStyle) {
    /// 状态栏文字白色(深色背景)
    TQStatusBarStyleLightContent = 0,
    /// 状态栏文字黑色(浅色背景,默认)
    TQStatusBarStyleDarkContent  = 1,
};

/// Tencent Qian H5 容器配置(iOS Objective-C)。
///
/// **可变性**:NSObject + 可写属性,SDK 内部按需 copy 当前值,
/// 客户对 config 的后续修改不会影响已启动的容器/configurator。
@interface TQWebViewConfig : NSObject <NSCopying>

// ────────── 顶栏 ──────────

/// 容器模式下是否显示顶栏。配置模式 (Configurator) 下此字段忽略。默认 `YES`。
@property (nonatomic, assign) BOOL showTopBar;

/// 顶栏标题文案。空字符串则使用默认「电子签署」。默认 `@""`。
@property (nonatomic, copy) NSString *topBarTitle;

/// 顶栏背景色。`nil` 走默认白色。
@property (nonatomic, strong, nullable) UIColor *topBarBackgroundColor;

/// 顶栏文字色(含返回箭头与标题)。`nil` 走默认黑色。
@property (nonatomic, strong, nullable) UIColor *topBarTextColor;

/// 顶栏右上角是否显示「关闭」按钮。默认 `YES`。
@property (nonatomic, assign) BOOL showCloseButton;

/// 状态栏样式。默认 `TQStatusBarStyleDarkContent`。
@property (nonatomic, assign) TQStatusBarStyle statusBarStyle;

// ────────── User-Agent ──────────

/// 是否注入 SDK UA 标识(`qianwv/<version>`)。默认 `YES`。
/// H5 端通过此标识启用 SDK 专属兼容逻辑并关联日志;关闭后相关兼容功能将降级,
/// 且问题排查难度增大。
@property (nonatomic, assign) BOOL injectUserAgent;

/// 客户附加的 UA 段,会拼接在 `qianwv/x.x.x` 之后。
/// 例:`@"myapp/3.2.1"` → 最终 UA = `<system-ua> qianwv/1.0.0 myapp/3.2.1`。默认 `@""`。
@property (nonatomic, copy) NSString *userAgentExtra;

// ────────── 关闭确认 ──────────

/// 用户在容器模式下点关闭/返回时,是否弹「确认离开?」二次确认。默认 `NO`。
@property (nonatomic, assign) BOOL confirmBeforeClose;

/// 二次确认弹窗的标题文案,空走默认。默认 `@""`。
@property (nonatomic, copy) NSString *confirmCloseTitle;

/// 二次确认弹窗的正文文案,空走默认。默认 `@""`。
@property (nonatomic, copy) NSString *confirmCloseMessage;

// ────────── Scheme 拦截白名单 ──────────

/// 允许跳出本 App 的外部 scheme 白名单。
///
/// **覆盖语义**:传入即整体覆盖,默认 = `@[ @"weixin", @"alipays" ]`。
/// 客户传 `@[]` = 禁止所有外部 scheme 跳出。
@property (nonatomic, copy) NSArray<NSString *> *externalSchemes;

// ────────── 下载 Cookie 同步 ──────────

/// 下载文件时是否从 WKWebView 同步 Cookie 到下载请求头。
///
/// - `NO`(默认):不携带 Cookie。电子签签署场景的下载链接通常为 CDN 公开链接
///   或带签名 token 的 URL,无需 Cookie 鉴权。
/// - `YES`:从 `WKWebsiteDataStore` 获取与下载 URL 匹配的 Cookie,
///   注入到下载请求的 `Cookie` header。适用于客户自有业务中需要 Cookie 鉴权才能下载的场景。
@property (nonatomic, assign) BOOL downloadWithCookies;

// ────────── 自检页 URL ──────────

/// 自检页地址。`nil` 时走 SDK 默认 URL(SDK 默认 beta 环境,兼容性测试无需切生产)。
@property (nonatomic, copy, nullable) NSString *compatibilityTestUrl;

/// 默认配置工厂方法。
+ (instancetype)defaultConfig;

/// SDK 内置自检页 URL(SDK 默认 beta 环境,兼容性测试无需切生产)。
+ (NSString *)defaultCompatibilityTestUrl;

@end

NS_ASSUME_NONNULL_END
