//
//  IDVNetworkEnvProvider.h
//  AliyunIdentityNetwork
//
//  Copyright © 2024 aliyun.com. All rights reserved.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

/**
 * 网络环境配置协议
 *
 * 由 AliyunIdentityAdapter 层实现，为 Network 层提供 URL/Host/凭证等环境信息。
 * Network 层不关心国内/国际差异，仅通过此协议获取配置。
 */
@protocol IDVNetworkEnvProvider <NSObject>

@required

/// SAF 服务主机名 (Host header)
- (NSString *)safHost;

/// SAF 服务 URL (主请求地址)
- (NSString *)safUrl;

/// POP 网关 AccessKeyId
- (NSString *)appKey;

/// POP 网关 AccessKeySecret
- (NSString *)appSecret;

/// 是否使用 IPv6
- (BOOL)isIPv6;

/// 当前环境代码 (0=invalid, 1=online, 2=pre, 3=dev)
- (NSInteger)envCode;

@optional

/// SAF 服务备用 URL (已废弃，优先使用 httpFallbackUrls)
- (NSString *)safBackupUrl;

/// 最终兜底 URL — 阿里云GA (国际版特有，当 httpFallbackUrls 全部失败后使用)
- (NSString *)cloudflareUrl;

/// HTTP 请求降级 URL 列表 (按优先级排序，不含最终 GA 兜底)
/// 香港: [POP上车点, 官网域名, Cloudflare域名]
/// 其他Region: [POP官网, Cloudflare域名]
- (NSArray<NSString *> *)httpFallbackUrls;

/// WebSocket URL 列表 (国际版特有)
- (NSMutableArray *)wsUrls;

/// 当前 WebSocket URL 索引
- (NSInteger)wsUrlIndex;

/// WebSocket Host (国际版特有)
- (NSString *)wsHost;

/// 是否处于备用模式
- (BOOL)isBackupMode;

@end

NS_ASSUME_NONNULL_END
