/// Genex Chain 合约地址配置
///
/// 所有地址均为代理合约 (Transparent Proxy) 地址
class ContractAddresses {
  ContractAddresses._();

  // ─── 主网 (chain-id: 8888) ─────────────────────────────

  /// CouponFactory 代理合约
  static const couponFactory =
      '0x0000000000000000000000000000000000001001';

  /// Coupon (ERC721) 代理合约
  static const coupon =
      '0x0000000000000000000000000000000000001002';

  /// Settlement 代理合约
  static const settlement =
      '0x0000000000000000000000000000000000001003';

  /// Redemption 代理合约
  static const redemption =
      '0x0000000000000000000000000000000000001004';

  /// Compliance 代理合约
  static const compliance =
      '0x0000000000000000000000000000000000001005';

  /// Treasury 代理合约
  static const treasury =
      '0x0000000000000000000000000000000000001006';

  /// Governance 代理合约
  static const governance =
      '0x0000000000000000000000000000000000001007';

  /// ExchangeRateOracle 代理合约
  static const exchangeRateOracle =
      '0x0000000000000000000000000000000000001008';

  /// CouponBackedSecurity (CBS) 代理合约
  static const couponBackedSecurity =
      '0x0000000000000000000000000000000000001009';

  // ─── 测试网地址 ─────────────────────────────────────────

  /// 测试网 Mock USDC
  static const testnetMockUsdc =
      '0x0000000000000000000000000000000000002001';

  /// 测试网 Faucet
  static const testnetFaucet =
      '0x0000000000000000000000000000000000002002';

  /// 获取所有合约地址映射
  static Map<String, String> get all => {
        'CouponFactory': couponFactory,
        'Coupon': coupon,
        'Settlement': settlement,
        'Redemption': redemption,
        'Compliance': compliance,
        'Treasury': treasury,
        'Governance': governance,
        'ExchangeRateOracle': exchangeRateOracle,
        'CouponBackedSecurity': couponBackedSecurity,
      };
}
