import type { IScopedLogger } from '../index.js';
export declare const PYTHON_VERSION = "3.12.12";
export declare function getPythonDownloadUrl(platform: string, arch: string): string;
/**
 * Ensure the embedded portable Python is available.
 *
 * ALWAYS returns the path to the embedded interpreter under
 * `<dataDir>/deps/python/bin/python3` — downloads it on first call
 * and reuses it thereafter. The system PATH is intentionally NOT
 * consulted: addons rely on `installPythonRequirements()` to manage
 * deps inside the embedded site-packages, and a system interpreter
 * (different version, missing modules) silently breaks that contract.
 *
 * Returns null only if the download/extract step fails.
 */
export declare function ensurePython(dataDir: string, logger: IScopedLogger): Promise<string | null>;
/**
 * Install Python packages into the portable Python environment.
 */
export declare function installPythonPackages(pythonPath: string, packages: readonly string[], logger: IScopedLogger): Promise<void>;
/**
 * Install a pip requirements file into the embedded Python.
 *
 * Idempotent: keyed on (requirements file basename + sha256 of its
 * contents). The marker is written under
 * `<python-install-dir>/.requirements-installed/` so it lives and
 * dies with the python install — re-downloading python wipes both
 * the site-packages and the markers, forcing a fresh re-install.
 *
 * The marker is updated only after `pip install` succeeds. A failed
 * install never writes a marker, so the next call retries.
 */
export declare function installPythonRequirements(pythonPath: string, requirementsFile: string, logger: IScopedLogger): Promise<void>;
//# sourceMappingURL=python-downloader.d.ts.map