import type { GitHubAccount } from '../../../../accessor/github.ts';
import type { CommandFnResult, Context } from '../../../config.ts';
import type { PathSpec } from '../../../../types.ts';
export declare const REPO_FIELDS: readonly string[];
/**
 * gh's own text view of a repository: two tab-separated header lines and
 * then the README verbatim, with the `--` separator omitted entirely when
 * there is no README. Probed against gh 2.85, whose description line is
 * present and empty for a repository that has none.
 */
export declare function summary(repo: unknown, readme: string | null): string;
/**
 * `gh repo view`. With `--json` it asks GraphQL for exactly the fields named,
 * the way gh does, so every field gh accepts is answered in gh's own shape;
 * the text view reads the REST object and the README.
 */
export declare function view(accessor: GitHubAccount, _paths: PathSpec[], texts: string[], ctx: Context): Promise<CommandFnResult>;
/** `gh repo list`, over GraphQL for `--json` as `view` is. */
export declare function listCmd(accessor: GitHubAccount, _paths: PathSpec[], texts: string[], ctx: Context): Promise<CommandFnResult>;
export declare function createCmd(accessor: GitHubAccount, _paths: PathSpec[], texts: string[], ctx: Context): Promise<CommandFnResult>;
/**
 * `gh repo clone`: mirage's `git clone` of the repository. As gh does, the
 * words after the repository that are not gh's own flags go to git: the first
 * one, when it has no leading dash, is the directory, put after the URL unless
 * it is empty, and the rest go before the URL. The token rides only as the
 * request's Authorization, never on the line, in the config or in the output,
 * and only when git clones from the install's origin, as gh's credential
 * helper is scoped to it; a fork's `upstream` remote is not added.
 */
export declare function cloneCmd(accessor: GitHubAccount, _paths: PathSpec[], texts: string[], ctx: Context): Promise<CommandFnResult>;
/**
 * `gh repo fork`. gh clones a fork, or adds a remote for one, into the local
 * checkout, which a workspace does not have: `--clone` is refused, and so is
 * `--remote` without a repository, where it would name that checkout. gh
 * ignores `--remote` beside a repository, and `--clone=false` or
 * `--remote=false` asks for what this fork does anyway.
 */
export declare function fork(accessor: GitHubAccount, _paths: PathSpec[], texts: string[], ctx: Context): Promise<CommandFnResult>;
export declare function rename(accessor: GitHubAccount, _paths: PathSpec[], texts: string[], ctx: Context): Promise<CommandFnResult>;
/**
 * `gh repo edit`: the settings named on the line in one `PATCH`, and topics
 * read and replaced whole when `--add-topic` or `--remove-topic` changes
 * them. With nothing to edit gh would prompt, so it refuses instead, and a
 * visibility change needs `--accept-visibility-change-consequences`. Like gh
 * writing to anything but a terminal, success prints nothing.
 */
export declare function editCmd(accessor: GitHubAccount, _paths: PathSpec[], texts: string[], ctx: Context): Promise<CommandFnResult>;
/**
 * `gh repo delete REPO --yes`. A name with no owner is the viewer's, as gh
 * reads it. The current repository is never deleted by default: gh ignores
 * `--yes` there and prompts, so without a terminal it refuses. `--confirm`
 * is gh's deprecated spelling of `--yes`, and it warns the way cobra does.
 */
export declare function deleteCmd(accessor: GitHubAccount, _paths: PathSpec[], texts: string[], ctx: Context): Promise<CommandFnResult>;
//# sourceMappingURL=repo.d.ts.map