import { type Json } from "./protocol.js";
/** Switch to a local branch, or create one (from `startPoint`, a branch or
 * remote-tracking branch, else HEAD) and switch to it. A remote-tracking
 * start point sets it as the upstream. Uncommitted tracked edits travel with
 * a switch in Git; the phone must say it knows (`carryChanges`), and Git
 * still refuses whatever would be overwritten. */
export declare function gitCheckout(cwd: string, body: Json): Promise<Json>;
/** Fetch the upstream's remote (else `origin`) and prune what it deleted, so
 * ahead/behind counts and remote branches are current. Tags are not fetched. */
export declare function gitFetch(cwd: string): Promise<Json>;
/** Fetch, then fast-forward the current branch to its upstream. Never a merge
 * commit or a rebase: a branch that has diverged is refused by Git and the
 * phone shows why. */
export declare function gitPull(cwd: string): Promise<Json>;
