export interface RunGhResult {
    stdout: string;
    stderr: string;
    code: number;
}
export type RunGh = (args: string[], opts?: {
    cwd?: string;
}) => Promise<RunGhResult>;
export interface ScaffoldGitHubArgs {
    /** Local path to the directory that will become the GitHub repo root. */
    pluginDir: string;
    /** Repo name (without owner). The owner is whatever `gh` is currently authenticated as. */
    repoName: string;
    /** Optional repo description (passed to `gh repo create -d`). */
    description?: string;
    /** Whether the new repo should be public. Defaults to true. */
    public?: boolean;
    /** Injectable `gh` adapter — defaults to spawning the local `gh` binary. */
    runGh?: RunGh;
}
export interface ScaffoldGitHubResult {
    skipped: boolean;
    /** When skipped, a short human-readable reason. */
    reason?: string;
    /** Repo URL when the create step succeeded. */
    repoUrl?: string;
    /** Argv recorded for each `gh` invocation — useful for debugging and tests. */
    invocations: string[][];
}
/**
 * Run `gh repo create <name> --public/--private --source <pluginDir> --push`.
 *
 * The `--source <dir> --push` form initializes a git repo if needed and pushes
 * the initial commit in one step. When `gh` is missing or the create step
 * fails, the function resolves with `skipped: true` and a clear reason —
 * never throws.
 */
export declare function scaffoldGitHub(args: ScaffoldGitHubArgs): Promise<ScaffoldGitHubResult>;
