import type { PageParam } from '@/api'

/**
 * 开发者资源
 */
export interface AppResource {
  resourceId?: number
  resourceType?: string    // server | database | storage | domain | ssl
  name?: string
  provider?: string        // tencent | aliyun | huawei | other

  // 服务器
  ip?: string
  sshPort?: number         // SSH 端口（默认22）
  sshUsername?: string     // SSH 用户名（用于远程执行命令）
  sshPassword?: string     // SSH 密码（AES加密，用于远程执行命令）
  mysqlPort?: number       // MySQL 端口（默认3306）
  pgPort?: number          // PostgreSQL 端口（默认5432）
  panelPort?: number       // 1Panel 面板端口（默认8888）
  panelUsername?: string   // 1Panel 面板用户名
  panelPassword?: string   // 1Panel 面板密码（AES加密）
  panelPath?: string       // 1Panel 面板路径前缀（如 /abc123）
  adminUsername?: string   // MySQL/PostgreSQL 管理员用户名（用于远程建库）
  adminPassword?: string   // MySQL/PostgreSQL 管理员密码（AES加密，用于远程建库）

  // 数据库
  dbType?: string          // MySQL | PostgreSQL | Redis | MongoDB
  serverResourceId?: number // 关联服务器资源ID
  host?: string
  port?: number
  dbUsername?: string
  dbPassword?: string

  // 云存储
  region?: string
  acl?: string             // public-read | private
  usedBytes?: number

  // 域名
  domain?: string
  registrar?: string
  icp?: boolean
  icpNo?: string
  sslBound?: boolean
  sslResourceId?: number       // 关联的 SSL 证书资源ID
  sslCertName?: string         // 关联的 SSL 证书名称
  dnsRecords?: DnsRecord[]     // DNS 记录列表
  whoisInfo?: WhoisInfo        // WHOIS 信息
  autoRenew?: boolean          // 是否自动续费
  
  // 域名健康状态
  dnsStatus?: 'ok' | 'error' | 'pending' | 'unknown'  // DNS 解析状态
  dnsIp?: string               // DNS 解析到的 IP
  healthStatus?: 'healthy' | 'warning' | 'error' | 'unknown'  // 综合健康状态
  healthCheckAt?: string       // 最后健康检查时间
  subDomains?: AppResource[]   // 子域名列表
  parentDomainId?: number      // 父域名 ID（用于子域名）
  isWildcard?: boolean         // 是否通配符域名
  serverResourceId?: number    // 关联的服务器资源ID
  serverName?: string          // 关联的服务器名称
  nginxConfig?: string         // Nginx 配置

  // SSL
  certType?: string        // DV | OV | EV
  issuer?: string
  privateKey?: string      // 私钥（AES加密存储）
  publicKey?: string       // 公钥
  certificate?: string     // 证书内容/证书文件
  certChain?: string       // 证书链（中间证书）
  algorithm?: string       // 加密算法：RSA/ECC
  keyBits?: number         // 密钥长度：2048/4096等

  // Git仓库
  gitPath?: string        // Git仓库路径（如: websopy/core）
  gitCloneUrl?: string    // Git Clone URL
  gitWebUrl?: string      // Git Web访问URL（Gitea页面地址）
  gitAccessLevel?: string // Git权限级别: read/write/admin

  // 云存储凭证
  credentialId?: number    // 关联的云账号凭证ID

  // 通用
  status?: string          // running | stopped | expired | pending
  appId?: number
  productName?: string
  expireAt?: string
  remark?: string
  userId?: number
  tenantId?: number
  deleted?: number
  createTime?: string
  updateTime?: string

  // ─── 协作权限字段 ────────────────────────────────────────────
  /**
   * 资源所有者 userId（创建者）
   * 后端在创建时自动设置，前端只读
   */
  ownerUserId?: number

  /**
   * 当前访问者对该资源的权限级别（后端计算，前端只读）
   *   0 - 无权限
   *   1 - 基础查看（名称/IP/端口/状态，所有团队成员）
   *   2 - 连接查看（用户名、连接方式，技术负责人）
   *   3 - 完全权限（包含密码/私钥，仅资源Owner）
   */
  accessLevel?: 0 | 1 | 2 | 3

  /**
   * 敏感字段是否为脱敏占位符（后端返回 "******" 表示已脱敏）
   */
  isMasked?: boolean

  /** 是否是资源创建者（前端根据 ownerUserId vs 当前 UserId 计算） */
  isOwner?: boolean
}

/**
 * DNS 记录
 */
export interface DnsRecord {
  type: string      // A, AAAA, CNAME, MX, TXT, NS
  name: string
  value: string
  ttl?: number
  priority?: number
}

/**
 * WHOIS 信息
 */
export interface WhoisInfo {
  registrar?: string
  creationDate?: string
  expirationDate?: string
  updatedDate?: string
  nameServers?: string[]
  status?: string[]
}

/**
 * 资源查询参数
 */
export interface AppResourceParam extends PageParam {
  resourceId?: number
  resourceType?: string
  appId?: number
  provider?: string
  status?: string
  userId?: number
  tenantId?: number
  keywords?: string
  icp?: boolean
  sslBound?: boolean
}
