export declare function liveGitBranch(cwd: string): string | null; export declare function isGitWorkTree(cwd: string): boolean; export type BranchBindingVerdict = { status: 'not-applicable'; } | { status: 'ok'; } | { status: 'needs-heal'; branch: string; } | { status: 'unbound-detached'; } | { status: 'drift'; boundBranch: string; currentBranch: string | null; }; export declare const BOUND_BRANCH_ISOLATIONS: readonly ["current", "branch", "worktree"]; export declare function requiresBranchBinding(isolation: string | null): boolean; export declare function evaluateBranchBinding(input: { isolation: string | null; boundBranch: string | null; currentBranch: string | null; gitWorkTree?: boolean; }): BranchBindingVerdict; /** * A `BranchBindingVerdict` joined with the live git facts it was computed * from, so callers never re-derive them (or re-read the state file). */ export type BranchBindingOutcome = (BranchBindingVerdict | { status: 'healed'; branch: string; }) & { bindingRequired: boolean; currentBranch: string | null; }; /** * Single entry point for every consumer of the branch binding: reads * isolation/bound_branch straight from `.comet.yaml` (typed — a yaml `null` * is a JS null, never a "null" string), spawns git lazily, and optionally * performs the lazy heal. Read-only paths (the PreToolUse hook) must pass * `heal: false` so resolving never writes to disk. */ export declare function resolveBranchBinding(changeDir: string, options: { heal: boolean; cwd: string; }): Promise; export declare function healBoundBranch(changeDir: string, branch: string): Promise; export declare function driftBlockedMessage(change: string, boundBranch: string, currentBranch: string | null): string; export declare function driftStaleReason(change: string, boundBranch: string, currentBranch: string | null): string; export declare function unboundDetachedMessage(change: string): string; //# sourceMappingURL=classic-branch-binding.d.ts.map