/**
 * Resolve a file path relative to repoRoot, rejecting traversal outside the repo.
 * Returns null if the resolved path escapes repoRoot.
 */
export declare function safePath(repoRoot: string, file: string): string | null;
interface ReadSourceRangeOpts {
    excerptLines?: number;
}
export declare function readSourceRange(repoRoot: string, file: string, startLine: number | undefined, endLine: number | undefined, opts?: ReadSourceRangeOpts): string | null;
interface ExtractSummaryOpts {
    jsdocEndScanLines?: number;
    jsdocOpenScanLines?: number;
    summaryMaxChars?: number;
}
export declare function extractSummary(fileLines: string[] | null, line: number | undefined, opts?: ExtractSummaryOpts): string | null;
interface ExtractSignatureOpts {
    signatureGatherLines?: number;
}
export interface Signature {
    params: string | null;
    returnType: string | null;
}
export declare function extractSignature(fileLines: string[] | null, line: number | undefined, opts?: ExtractSignatureOpts): Signature | null;
export declare function createFileLinesReader(repoRoot: string): (file: string) => string[] | null;
export declare function isFileLikeTarget(target: string): boolean;
export {};
//# sourceMappingURL=file-utils.d.ts.map