//
//  HttpDnsClient.h
//  ComboSDK
//
//  Created by Zhang Gang on 2026/6/15.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

/// 腾讯 MSDKDns 的 ObjC 薄封装。把对 SDK 的 #import 关在 .m 内——MSDKDns 是非模块化 framework，
/// 若进 ComboSDK 伞头会泄漏给所有 import ComboSDK 的消费方（消费方需各自链接 MSDKDns 才能编译）。
/// 本头仅含 Foundation 类型，Swift 经伞头调用本类。
@interface HttpDnsClient : NSObject

/// 初始化 MSDKDns。encryptType: 0=DES 1=AES 2=HTTPS；token 仅 HTTPS 模式需要。
/// noHijackDomains: 不拦截的域名列表，用于排除依赖 SDK 302 接管的接口（如 gamer-api）。
/// 返回 MSDKDns initConfig 结果：YES=初始化成功，NO=失败。
+ (BOOL)setupWithDnsId:(int)dnsId
                dnsKey:(NSString *)dnsKey
           encryptType:(int)encryptType
                 token:(nullable NSString *)token
             timeoutMs:(int)timeoutMs
     preResolveDomains:(nullable NSArray<NSString *> *)preResolveDomains
       noHijackDomains:(nullable NSArray<NSString *> *)noHijackDomains
    NS_SWIFT_NAME(setup(dnsId:dnsKey:encryptType:token:timeoutMs:preResolveDomains:noHijackDomains:));

/// 解析域名，返回 { "ipv4": [...], "ipv6": [...] }；失败/无结果返回 nil。
+ (nullable NSDictionary<NSString *, NSArray<NSString *> *> *)resolve:(NSString *)domain;

/// 返回腾讯 HTTPDNS 的 NSURLProtocol 拦截器类（MSDKDnsHttpMessageTools）。
/// 用于注入 URLSessionConfiguration.protocolClasses，避免在 Swift 层直接 import 非模块化 framework。
+ (Class)hijackProtocolClass;

@end

NS_ASSUME_NONNULL_END
