/**
 * SCM-aware versions of the change-ID and ancestry functions that the
 * semantic graph (and any future SCM-coupled surface) needs.
 *
 * Branches on `getScm(projectRoot)`:
 * - `"jj"` — delegates to `lib/semantic-graph/jj.ts` (preserves existing behavior).
 * - `"git"` — uses `git rev-parse --short HEAD` and `git log --format=%h HEAD`.
 *
 * Callers should use these instead of importing from `lib/semantic-graph/jj`
 * directly. The jj module is now an internal implementation detail of the
 * jj branch.
 */
export type { ScmKind } from "./detect.js";
export { detectScm, getScm, NoScmDetectedError } from "./detect.js";
/**
 * Return the change ID active at the current working copy. SCM-aware.
 * - jj: change_id template — survives rebase/amend/split.
 * - git: short SHA from `git rev-parse --short HEAD` — does NOT survive
 *   rewrites (caller's problem; v1 of the semantic graph deliberately
 *   graceful-degrades on git so this only matters once we lift that limit).
 *
 * Throws if the SCM operation itself fails (no jj repo, no git repo, no
 * commits yet, etc.). Callers in graceful-degrade paths must handle.
 */
export declare function getCurrentChangeId(projectRoot: string): Promise<string>;
/**
 * Return the set of change IDs reachable from the current HEAD — the
 * current change + all ancestors. SCM-aware.
 * - jj: ancestry via `jj log -r '::@'`.
 * - git: ancestry via `git log --format=%h HEAD` (linear history walk).
 */
export declare function getReachableChangeIds(projectRoot: string): Promise<Set<string>>;
