/**
 * Python import resolution — pure functions, no I/O.
 *
 * Handles:
 *   - Relative imports (`from . import X`, `from ..pkg import Y`) via dot
 *     counting and package-root walking
 *   - Absolute imports (`import X`, `from X.Y import Z`) via index lookup
 *     with automatic `src/` layout detection
 *   - `.py` and `__init__.py` resolution
 */
/**
 * Walk upward from a file to find the innermost package root.
 * A "package" is a directory containing `__init__.py`. The package root is
 * the innermost ancestor directory (including the file's own directory) that
 * contains `__init__.py`.
 *
 * If no ancestor has `__init__.py`, returns the file's directory.
 * If the file is at repo root, returns "".
 */
export declare function findPackageRoot(filePath: string, indexedFiles: Set<string>): string;
/**
 * Detect if the project uses a `src/` layout (e.g., `src/myapp/__init__.py`).
 * Returns the layout root name (`"src"`) or `null` if no src layout detected.
 */
export declare function detectSrcLayout(indexedFiles: string[]): string | null;
/**
 * Resolve a Python import to a file path in the indexed tree.
 *
 * Algorithm:
 *   - If `level > 0` (relative import): walk up `level - 1` dirs from the
 *     importing file's package root, then resolve the remaining dotted path
 *   - If `level === 0` (absolute import): try each search root + dotted path,
 *     resolving to `.py` first, then `/__init__.py`, then null
 *
 * Returns the resolved file path (relative to repo root) or `null` if the
 * import cannot be resolved to an indexed file (stdlib, third-party, etc.).
 */
export declare function resolvePythonImport(imp: {
    module: string;
    level: number;
}, importerFile: string, indexedFiles: string[] | Set<string>, srcLayout?: string | null): string | null;
//# sourceMappingURL=python-import-resolver.d.ts.map