export type ClaudeSubscription = "no" | "yes" | "max20" export type BooleanArg = "no" | "yes" export type InstallPlatform = "opencode" | "codex" | "claudecode" | "both" export interface InstallArgs { tui: boolean platform?: InstallPlatform claude?: ClaudeSubscription openai?: BooleanArg gemini?: BooleanArg copilot?: BooleanArg opencodeZen?: BooleanArg zaiCodingPlan?: BooleanArg kimiForCoding?: BooleanArg opencodeGo?: BooleanArg vercelAiGateway?: BooleanArg skipAuth?: boolean } export interface InstallConfig { platform: InstallPlatform hasOpenCode: boolean hasClaude: boolean isMax20: boolean hasOpenAI: boolean hasGemini: boolean hasCopilot: boolean hasCodex: boolean hasClaudeCode: boolean hasOpencodeZen: boolean hasZaiCodingPlan: boolean hasKimiForCoding: boolean hasOpencodeGo: boolean hasVercelAiGateway: boolean } export interface ConfigMergeResult { success: boolean configPath: string error?: string } export interface DetectedConfig { isInstalled: boolean installedVersion: string | null hasClaude: boolean isMax20: boolean hasOpenAI: boolean hasGemini: boolean hasCopilot: boolean hasCodex: boolean hasOpencodeZen: boolean hasZaiCodingPlan: boolean hasKimiForCoding: boolean hasOpencodeGo: boolean hasVercelAiGateway: boolean }