export type MergeStateStatus = 'CLEAN' | 'BEHIND' | 'BLOCKED' | 'DIRTY' | 'DRAFT' | 'HAS_HOOKS' | 'UNKNOWN' | 'UNSTABLE'; export interface PrInfo { readonly number: number; readonly url: string; readonly mergeStateStatus: MergeStateStatus; readonly mergeable: 'MERGEABLE' | 'CONFLICTING' | 'UNKNOWN'; readonly mergedAt: string | null; readonly mergeCommit: string | null; readonly state: 'OPEN' | 'CLOSED' | 'MERGED'; } export interface OpenPrOptions { readonly repoPath: string; readonly title: string; readonly body: string; readonly base: string; readonly head: string; } export declare function openPr(options: OpenPrOptions): Promise; export declare function getPrInfo(input: { readonly repoPath: string; readonly head?: string; readonly number?: number; }): Promise; export interface MergePrOptions { readonly repoPath: string; readonly prNumber: number; readonly strategy?: 'squash' | 'merge' | 'rebase'; } export declare function enableAutoMerge(options: MergePrOptions): Promise; export interface PollOptions { readonly repoPath: string; readonly prNumber: number; readonly intervalMs?: number; readonly timeoutMs?: number; /** Called every ~heartbeatMs (default 60s) with the most recent PR info. */ readonly onHeartbeat?: (info: PrInfo, elapsedMs: number) => void; readonly heartbeatMs?: number; } export interface PollResult { readonly merged: boolean; readonly conflict: boolean; readonly timedOut: boolean; readonly info: PrInfo; } export declare function pollUntilMergedOrConflict(opts: PollOptions): Promise; export interface MainGreenOptions { readonly repoPath: string; readonly mainBranch: string; readonly intervalMs?: number; readonly timeoutMs?: number; readonly onHeartbeat?: (info: { running: number; failed: number; succeeded: number; }, elapsedMs: number) => void; readonly heartbeatMs?: number; /** Treat a fail-then-pass for the same workflow as flake; don't halt. */ readonly tolerateFlakes?: boolean; } export declare function waitForMainGreen(opts: MainGreenOptions): Promise<{ readonly green: boolean; readonly timedOut: boolean; readonly flakesObserved: number; }>; //# sourceMappingURL=auto-merge.d.ts.map