export interface PrInfo { number: number; state: 'OPEN' | 'MERGED' | 'CLOSED'; headSha: string; mergedAt: string | null; additions: number; deletions: number; title: string; body: string; } export interface GhClient { viewPr(pr: number): PrInfo; /** Squash-merge. When expectedHead is given, gh refuses unless the PR head still * matches it — so a push during the gate can never land an untested revision. */ squashMerge(pr: number, expectedHead?: string): void; /** OID of the merge commit for a MERGED PR; null while GitHub has not yet * reported one (D9: bootstrap_merged records it). */ mergeCommitSha(pr: number): string | null; comment(pr: number, body: string): void; listLabeled(label: string): number[]; /** D13: changed-file paths of the PR (`gh pr diff --name-only`). */ changedFiles(pr: number): string[]; postMergeRed(defaultBranch: string): boolean; } export declare function createGhClient(cwd: string): GhClient; //# sourceMappingURL=gh.d.ts.map