/**
 * UV Package Manager Tool
 * Provides unified UV (https://github.com/astral-sh/uv) tool management capabilities
 *
 * Features:
 * - Cross-platform UV binary discovery and installation
 * - Virtual environment creation and management
 * - Python dependency installation with UV's fast resolver
 * - Support for local project installs with extras
 */
/**
 * Configuration for UvManager
 */
export interface UvManagerConfig {
    /** Path to the virtual environment directory */
    venvPath: string;
    /** Python version requirement (e.g., ">=3.10", "3.11") */
    pythonVersion?: string;
}
/**
 * Result of UV operations
 */
export interface UvInstallResult {
    /** Whether the operation succeeded */
    success: boolean;
    /** Error message if operation failed */
    error?: string;
    /** Duration of the operation in milliseconds */
    duration?: number;
}
/**
 * Get the path to the UV binary
 * Search order:
 * 1. CCW_UV_PATH environment variable
 * 2. Project vendor/uv/ directory
 * 3. User local directories (~/.local/bin, ~/.cargo/bin)
 * 4. System PATH
 *
 * @returns Path to the UV binary
 */
export declare function getUvBinaryPath(): string;
/**
 * Check if UV is available and working
 * @returns True if UV is installed and functional
 */
export declare function isUvAvailable(): Promise<boolean>;
/**
 * Get UV version string
 * @returns UV version or null if not available
 */
export declare function getUvVersion(): Promise<string | null>;
/**
 * Download and install UV using the official installation script
 * @returns True if installation succeeded
 */
export declare function ensureUvInstalled(): Promise<boolean>;
/**
 * UvManager class for virtual environment and package management
 */
export declare class UvManager {
    private readonly venvPath;
    private readonly pythonVersion?;
    /**
     * Create a new UvManager instance
     * @param config - Configuration options
     */
    constructor(config: UvManagerConfig);
    /**
     * Get the path to the Python executable inside the virtual environment
     * @returns Path to the Python executable
     */
    getVenvPython(): string;
    /**
     * Get the path to pip inside the virtual environment
     * @returns Path to the pip executable
     */
    getVenvPip(): string;
    /**
     * Check if the virtual environment exists and is valid
     * @returns True if the venv exists and has a working Python
     */
    isVenvValid(): boolean;
    /**
     * Create a virtual environment using UV
     * @returns Installation result
     */
    createVenv(): Promise<UvInstallResult>;
    /**
     * Install packages from a local project with optional extras
     * Uses `uv pip install -e` for editable installs
     * @param projectPath - Path to the project directory (must contain pyproject.toml or setup.py)
     * @param extras - Optional array of extras to install (e.g., ['semantic', 'dev'])
     * @returns Installation result
     */
    installFromProject(projectPath: string, extras?: string[]): Promise<UvInstallResult>;
    /**
     * Install a list of packages
     * @param packages - Array of package specifiers (e.g., ['numpy>=1.24', 'requests'])
     * @returns Installation result
     */
    install(packages: string[]): Promise<UvInstallResult>;
    /**
     * Uninstall packages
     * @param packages - Array of package names to uninstall
     * @returns Uninstall result
     */
    uninstall(packages: string[]): Promise<UvInstallResult>;
    /**
     * Sync dependencies from a requirements file or pyproject.toml
     * Uses `uv pip sync` for deterministic installs
     * @param requirementsPath - Path to requirements.txt or pyproject.toml
     * @returns Sync result
     */
    sync(requirementsPath: string): Promise<UvInstallResult>;
    /**
     * List installed packages in the virtual environment
     * @returns List of installed packages or null on error
     */
    list(): Promise<{
        name: string;
        version: string;
    }[] | null>;
    /**
     * Check if a specific package is installed
     * @param packageName - Name of the package to check
     * @returns True if the package is installed
     */
    isPackageInstalled(packageName: string): Promise<boolean>;
    /**
     * Run a Python command in the virtual environment
     * @param args - Arguments to pass to Python
     * @param options - Spawn options
     * @returns Result with stdout/stderr
     */
    runPython(args: string[], options?: {
        timeout?: number;
        cwd?: string;
    }): Promise<{
        success: boolean;
        stdout: string;
        stderr: string;
    }>;
    /**
     * Get Python version in the virtual environment
     * @returns Python version string or null
     */
    getPythonVersion(): Promise<string | null>;
    /**
     * Delete the virtual environment
     * @returns True if deletion succeeded
     */
    deleteVenv(): Promise<boolean>;
}
/**
 * Create a UvManager with default settings for CodexLens
 * @param dataDir - Base data directory (defaults to ~/.codexlens)
 * @returns Configured UvManager instance
 */
export declare function createCodexLensUvManager(dataDir?: string): UvManager;
/**
 * Quick bootstrap function: ensure UV is installed and create a venv
 * @param venvPath - Path to the virtual environment
 * @param pythonVersion - Optional Python version constraint
 * @returns Installation result
 */
export declare function bootstrapUvVenv(venvPath: string, pythonVersion?: string): Promise<UvInstallResult>;
//# sourceMappingURL=uv-manager.d.ts.map