export interface BranchProtectionResult {
    protected: boolean;
    detectionMethod: 'gh-api' | 'push-dry-run' | 'unknown';
    error?: string;
}
export interface PRCreateOptions {
    base: string;
    head: string;
    title: string;
    body: string;
    labels?: string[];
    version: string;
    epicId?: string;
    projectRoot?: string;
}
export interface PRResult {
    mode: 'created' | 'manual' | 'skipped';
    prUrl?: string;
    prNumber?: number;
    instructions?: string;
    error?: string;
}
export interface RepoIdentity {
    owner: string;
    repo: string;
}
/**
 * Check if the `gh` CLI is available by attempting to run `gh --version`.
 * Does NOT use `which` to remain cross-platform.
 */
export declare function isGhCliAvailable(): boolean;
/**
 * Parse a GitHub remote URL (HTTPS or SSH) into owner and repo components.
 * Returns null if the URL cannot be parsed.
 *
 * Supported formats:
 *   https://github.com/owner/repo.git
 *   https://github.com/owner/repo
 *   git@github.com:owner/repo.git
 *   git@github.com:owner/repo
 */
export declare function extractRepoOwnerAndName(remote: string): RepoIdentity | null;
/**
 * Detect whether a branch has protection rules enabled.
 *
 * Strategy 1 (preferred): use `gh api` to query GitHub branch protection.
 * Strategy 2 (fallback): use `git push --dry-run` and inspect stderr.
 */
export declare function detectBranchProtection(branch: string, remote: string, projectRoot?: string): Promise<BranchProtectionResult>;
/**
 * Build the markdown body for a GitHub pull request.
 */
export declare function buildPRBody(opts: PRCreateOptions): string;
/**
 * Format human-readable instructions for creating a PR manually.
 */
export declare function formatManualPRInstructions(opts: PRCreateOptions): string;
/**
 * Create a GitHub pull request using the `gh` CLI, or return manual instructions
 * if the CLI is unavailable or the operation fails.
 */
export declare function createPullRequest(opts: PRCreateOptions): Promise<PRResult>;
//# sourceMappingURL=github-pr.d.ts.map