import type { StatusEntry, Upstream } from './types.ts';
export declare const DETACHED_AT = "HEAD detached at ";
export declare const DETACHED_FROM = "HEAD detached from ";
export declare const NO_BRANCH = "Not currently on any branch.";
/**
 * Spell a path the way git spells it, quoting only when it must.
 *
 * git C-quotes a path holding anything that would not survive being read back: a
 * quote, a backslash, a control character, or a byte outside ASCII. The
 * machine-readable formats also quote a path holding a space, and the
 * human-readable one does not, which is not an inconsistency: only the former is
 * parsed by splitting on whitespace. Verified both ways against git 2.47.
 *
 * `core.quotePath=false` turns `fully` off, and a byte outside ASCII then passes
 * through as itself while everything else is quoted as before (pinned against
 * git 2.50). A byte that is not UTF-8 arrives as a
 * surrogate escape and is quoted, or passed through, as that byte.
 *
 * @param path repository-relative path
 * @param porcelain whether a space alone forces quoting
 * @param fully whether a byte outside ASCII forces quoting
 */
export declare function quotePath(path: string, porcelain: boolean, fully?: boolean): string;
/**
 * The `## ` header `--branch` prepends to the short formats.
 *
 * @param branch the branch HEAD names, null when detached
 * @param noCommits whether HEAD resolves to nothing yet
 */
export declare function branchLine(branch: string | null, noCommits: boolean, upstream?: Upstream | null): string;
/**
 * What the long status says about a branch and its upstream.
 *
 * Pinned against git 2.47.3 and 2.50.1.
 */
export declare function trackingLines(upstream: Upstream): string[];
/** The whole of `--short` / `--porcelain` output. */
export declare function shortFormat(rows: readonly StatusEntry[], header: string | null, fully?: boolean): string;
/**
 * The default, human-readable status report.
 *
 * @param rows every row, already in git's order
 * @param branch the branch HEAD names, null when detached
 * @param commit the abbreviated commit HEAD holds, set only when detached
 * @param noCommits whether HEAD resolves to nothing yet
 * @param merging whether a merge is in progress
 * @param hideUntracked whether `-uno` suppressed the scan
 */
export declare function longFormat(rows: readonly StatusEntry[], branch: string | null, detached: string, noCommits: boolean, merging: boolean, hideUntracked: boolean, fully?: boolean, upstream?: Upstream | null): string;
/** A repository-relative path spelled from a directory inside the work tree. */
export declare function relativePath(path: string, prefix: string): string;
/** Render status paths relative to an invocation inside the work tree. */
export declare function relativeEntries(rows: StatusEntry[], prefix: string): StatusEntry[];
//# sourceMappingURL=render.d.ts.map