import fs from 'fs'
import path from 'path'
import os from 'os'

/**
 * Claude Code CLI 认证状态读取。
 *
 * 从 provider.ts 独立出来，避免与 model-registry 形成循环依赖。
 */

export function isClaudeCliAuthenticated(): boolean {
  try {
    const claudeJsonPath = path.join(os.homedir(), '.claude.json')
    if (!fs.existsSync(claudeJsonPath)) return false
    const content = fs.readFileSync(claudeJsonPath, 'utf-8')
    const parsed = JSON.parse(content)
    return !!(parsed.oauthAccount?.accountUuid)
  } catch {
    return false
  }
}

export function getClaudeCliAccountInfo(): { email: string; displayName: string; billingType: string } | null {
  try {
    const claudeJsonPath = path.join(os.homedir(), '.claude.json')
    if (!fs.existsSync(claudeJsonPath)) return null
    const content = fs.readFileSync(claudeJsonPath, 'utf-8')
    const parsed = JSON.parse(content)
    const acct = parsed.oauthAccount
    if (!acct?.accountUuid) return null
    return {
      email: acct.emailAddress || '',
      displayName: acct.displayName || '',
      billingType: acct.billingType || '',
    }
  } catch {
    return null
  }
}
