/**
 * Claude Code Native Provider
 *
 * Uses the Claude Code CLI (`claude --print`) as an LLM provider.
 * This leverages the user's existing MAX subscription - NO API KEY NEEDED!
 *
 * How it works:
 * 1. User is authenticated to Claude Code (MAX subscription)
 * 2. Auth is cached in ~/.claude/ (Unix) or %USERPROFILE%\.claude\ (Windows)
 * 3. We spawn `claude --print` subprocesses
 * 4. These use the cached auth automatically
 * 5. Result: Full Claude capabilities at no extra cost!
 *
 * Cross-platform support:
 * - Uses canonical detectClaudeCli() from utils/claude-cli-detector.ts
 * - Handles: PATH binaries, shell functions/aliases, nvm versions
 *
 * Best for:
 * - Claude MAX subscribers
 * - Background processing without API costs
 * - Full Claude capabilities (Opus, Sonnet, Haiku)
 */
import type { LLMProvider, LLMProviderType, AnalyzeOptions, AnalyzeResult, StructuredOptions } from '../types.js';
import { Logger } from '../../../utils/logger.js';
export interface ClaudeCodeProviderConfig {
    /** Model alias: 'opus' (default), 'sonnet', 'haiku' or full model ID */
    model?: string;
    /** Max tokens for response */
    maxTokens?: number;
    /** Temperature (0-1) */
    temperature?: number;
    /** Timeout in ms (default: 120000 = 2 min) */
    timeout?: number;
    /** Logger instance */
    logger?: Logger;
    /** Working directory for claude command */
    cwd?: string;
    /**
     * Skip permission prompts for non-interactive background processing.
     * Uses --dangerously-skip-permissions flag.
     * Default: true (required for background/detached processes)
     */
    skipPermissions?: boolean;
}
/**
 * Claude Code Native Provider
 *
 * Uses `claude --print` CLI for LLM calls - leverages MAX subscription!
 */
export declare class ClaudeCodeProvider implements LLMProvider {
    readonly name: LLMProviderType;
    readonly defaultModel: string;
    private model;
    private maxTokens;
    private timeout;
    private logger;
    private cwd?;
    private skipPermissions;
    constructor(config?: ClaudeCodeProviderConfig);
    /**
     * Execute claude --print command
     *
     * Cross-platform: Works on Windows, macOS, and Linux
     * Background-safe: Uses --dangerously-skip-permissions for non-interactive use
     */
    private executeClaudeCommand;
    /**
     * Analyze text using Claude Code CLI
     */
    analyze(prompt: string, options?: AnalyzeOptions): Promise<AnalyzeResult>;
    /**
     * Analyze with structured JSON output
     */
    analyzeStructured<T>(prompt: string, options: StructuredOptions<T>): Promise<{
        data: T;
        usage: AnalyzeResult['usage'];
        estimatedCost: number;
    }>;
    /**
     * Estimate cost - always 0 for MAX subscription!
     */
    estimateCost(): number;
    /**
     * Check if Claude Code CLI is available and authenticated
     */
    isAvailable(): Promise<boolean>;
    /**
     * Get provider status
     */
    getStatus(): Promise<{
        available: boolean;
        latencyMs?: number;
        error?: string;
    }>;
}
/**
 * Check if Claude Code CLI is installed and authenticated
 *
 * Cross-platform support:
 * - Windows: Uses `where claude` and checks %USERPROFILE%\.claude\
 * - macOS/Linux: Uses `which claude` and checks ~/.claude/
 */
export declare function isClaudeCodeAvailable(): Promise<boolean>;
/**
 * Get detailed Claude Code availability info
 */
export declare function getClaudeCodeStatus(): Promise<{
    available: boolean;
    cliInstalled: boolean;
    authExists: boolean;
    error?: string;
    platform: string;
}>;
//# sourceMappingURL=claude-code-provider.d.ts.map