import type { NOOPAccessor } from '../../../../accessor/base.ts';
import { type Rows } from '../../../../io/types.ts';
import type { PathSpec } from '../../../../types.ts';
import type { CommandFnResult, Context } from '../../../config.ts';
import { type StatusRow } from './changes.ts';
import { type Repo } from './repo.ts';
import type { HeadRef } from './types.ts';
import type { Files } from '../../../../workspace/files.ts';
/**
 * The default status report, as rows and their renderer.
 *
 * Split out so `commit` can print it when it has nothing to commit: git shows
 * the whole status there rather than a one-line refusal, and two renderings of
 * the same thing would drift. Its paths are relative to `start`, where git runs.
 */
export declare function reportRows(repo: Repo, vfs: Files, head: HeadRef, start: string): Promise<Rows<StatusRow>>;
/**
 * Show the working tree status.
 *
 * Three sources, compared pairwise: HEAD's tree against the index says what a
 * commit would record, and the index against the working tree says what it would
 * leave behind. Everything the report prints is one of those two answers, or a
 * path neither side knows about. Each path is handed over as a row, so the
 * report names and counts only the paths the session sees.
 */
export declare function status(_accessor: NOOPAccessor, paths: PathSpec[], texts: string[], ctx: Context): Promise<CommandFnResult>;
//# sourceMappingURL=status.d.ts.map