import { ChannelConfig, channelConfigs } from '../config/channelConfig';

/**
 * 渠道配置管理器
 * 提供统一的渠道配置访问接口
 */
export class ChannelConfigManager {
  /**
   * 获取完整的渠道配置
   * @param channelId 渠道ID
   * @returns 渠道配置对象，如果不存在则返回null
   */
  static getConfig(channelId: number): ChannelConfig | null {
    return channelConfigs[channelId] || null;
  }

  /**
   * 获取渠道的支付配置
   * @param channelId 渠道ID
   * @returns 支付配置对象，如果不存在则返回null
   */
  static getPaymentConfig(channelId: number): ChannelConfig['paymentConfig'] | null {
    const config = this.getConfig(channelId);
    return config?.paymentConfig || null;
  }

  /**
   * 获取渠道的平台标识
   * @param channelId 渠道ID
   * @returns 平台标识字符串，如果不存在则返回null
   */
  static getPlatform(channelId: number): string | null {
    const config = this.getConfig(channelId);
    return config?.platform || null;
  }

  /**
   * 获取渠道的登录配置
   * @param channelId 渠道ID
   * @returns 登录配置对象，如果不存在则返回null
   */
  static getLoginConfig(channelId: number): ChannelConfig['loginConfig'] | null {
    const config = this.getConfig(channelId);
    return config?.loginConfig || null;
  }

  /**
   * 检查渠道是否存在
   * @param channelId 渠道ID
   * @returns 布尔值，表示渠道是否存在
   */
  static hasChannel(channelId: number): boolean {
    return channelId in channelConfigs;
  }

  /**
   * 获取所有支持的渠道ID列表
   * @returns 渠道ID数组
   */
  static getSupportedChannels(): number[] {
    return Object.keys(channelConfigs).map(Number);
  }
}