/** Stable metadata and bytes captured from one confined regular file. */
export interface ProjectFileSnapshot {
    readonly bytes: Buffer;
    readonly mode: number;
}
/** Safe path kinds understood by deterministic health. */
export type ProjectPathKind = "missing" | "file" | "directory";
/**
 * Resolve a project-relative path without permitting traversal.
 * @param root - Canonical project root
 * @param relativePath - Project-relative path
 * @returns Confined absolute path
 */
export declare function resolveProjectPath(root: string, relativePath: string): string;
/**
 * Test for one confined regular file while refusing to follow its final link.
 * @param root - Canonical project root
 * @param relativePath - Project-relative path
 * @returns Whether a stable regular file exists
 */
export declare function projectRegularFileExists(root: string, relativePath: string): Promise<boolean>;
/**
 * Read one stable regular file without following a target outside the project.
 * @param root - Canonical project root
 * @param relativePath - Project-relative path
 * @param maximumBytes - Maximum permitted file size
 * @returns File bytes, or undefined when absent
 */
export declare function readProjectFile(root: string, relativePath: string, maximumBytes?: number): Promise<ProjectFileSnapshot | undefined>;
/**
 * Read just the bytes from one confined stable regular file.
 * @param root - Canonical project root
 * @param relativePath - Project-relative path
 * @param maximumBytes - Maximum permitted file size
 * @returns File bytes, or undefined when absent
 */
export declare function readProjectBytes(root: string, relativePath: string, maximumBytes?: number): Promise<Buffer | undefined>;
/**
 * Classify a confined path without following symbolic links or accepting
 * special files such as FIFOs and devices.
 * @param root - Canonical project root
 * @param relativePath - Project-relative path
 * @returns Safe path kind
 */
export declare function projectPathKind(root: string, relativePath: string): Promise<ProjectPathKind>;
/**
 * Read strict UTF-8 text from a confined project file.
 * @param root - Canonical project root
 * @param relativePath - Project-relative path
 * @param maximumBytes - Maximum permitted file size
 * @returns Text, or undefined when absent
 */
export declare function readProjectText(root: string, relativePath: string, maximumBytes?: number): Promise<string | undefined>;
/**
 * Read a JSON object without exposing its values in failures.
 * @param root - Canonical project root
 * @param relativePath - Project-relative JSON path
 * @returns Parsed object, or undefined when absent
 */
export declare function readProjectJsonObject(root: string, relativePath: string): Promise<Readonly<Record<string, unknown>> | undefined>;
//# sourceMappingURL=read-only-fs.d.ts.map