/**
 * Claude CLI Runner - Shared LLM invocation module
 *
 * Provides a unified interface for spawning Claude CLI commands.
 * Used by plugin detection, reflect system, and completion evaluation.
 *
 * Features:
 * - Cross-platform support (Windows, macOS, Linux)
 * - Handles shell functions/aliases on Unix
 * - Clean environment (removes debugger flags)
 * - Proper timeout handling
 * - JSON response parsing
 *
 * @module utils/claude-cli-runner
 */
/**
 * Available models for Claude CLI
 */
export type ClaudeModel = 'haiku' | 'sonnet' | 'opus';
/**
 * Options for running Claude CLI
 */
export interface ClaudeCliOptions {
    /** Model to use (default: haiku for speed) */
    model?: ClaudeModel;
    /** The prompt to send */
    prompt: string;
    /** Optional stdin input (for large content like transcripts) */
    stdin?: string;
    /** Timeout in milliseconds (default: 30000) */
    timeoutMs?: number;
    /** Maximum output tokens (not currently used by CLI, reserved for future) */
    maxOutputTokens?: number;
}
/**
 * Result of Claude CLI execution
 */
export interface ClaudeCliResult {
    /** Whether the command succeeded */
    success: boolean;
    /** Exit code from the process */
    exitCode: number;
    /** Standard output */
    stdout: string;
    /** Standard error */
    stderr: string;
    /** Duration in milliseconds */
    durationMs: number;
    /** Error message if failed */
    error?: string;
}
/**
 * Result of Claude CLI availability check
 */
export interface ClaudeCliStatus {
    available: boolean;
    path?: string;
    version?: string;
    error?: string;
}
/**
 * Clear the cached CLI status (useful for testing)
 */
export declare function clearCliCache(): void;
/**
 * Check if Claude CLI is available
 */
export declare function isClaudeCliAvailable(): ClaudeCliStatus;
/**
 * Run Claude CLI with a prompt
 *
 * This is the main entry point for invoking Claude via CLI.
 *
 * @example
 * ```typescript
 * const result = await runClaudeCli({
 *   model: 'haiku',
 *   prompt: 'Analyze this code for security issues',
 *   timeoutMs: 30000,
 * });
 *
 * if (result.success) {
 *   console.log(result.stdout);
 * }
 * ```
 */
export declare function runClaudeCli(options: ClaudeCliOptions): ClaudeCliResult;
/**
 * Parse JSON from Claude CLI output
 *
 * Handles:
 * - Plain JSON
 * - JSON wrapped in markdown code blocks
 * - Malformed responses
 */
export declare function parseJsonFromOutput<T>(output: string): {
    success: boolean;
    data?: T;
    error?: string;
};
//# sourceMappingURL=claude-cli-runner.d.ts.map