import type { FileChange, GitProvider, Issue, IssueOptions, PullRequest, PullRequestOptions } from '../types';
export declare class GitHubProvider implements GitProvider {
  constructor(token: string, owner: string, repo: string, hasWorkflowPermissions?: boolean, workflowToken?: string);
  clearCache(): void;
  branchExists(branchName: string): Promise<boolean>;
  createBranch(branchName: string, baseBranch: string): Promise<void>;
  commitChanges(branchName: string, message: string, files: FileChange[], baseBranch?: string): Promise<void>;
  createPullRequest(options: PullRequestOptions): Promise<PullRequest>;
  runCommand(command: string, args: string[], tokenOverride?: string): Promise<string>;
  getPullRequests(state?: 'open' | 'closed' | 'all'): Promise<PullRequest[]>;
  updatePullRequest(prNumber: number, options: Partial<PullRequestOptions>): Promise<PullRequest>;
  closePullRequest(prNumber: number): Promise<void>;
  createComment(prNumber: number, comment: string): Promise<void>;
  mergePullRequest(prNumber: number, strategy?: 'merge' | 'squash' | 'rebase'): Promise<void>;
  deleteBranch(branchName: string): Promise<void>;
  getBuddyBotBranches(): Promise<Array<{ name: string, sha: string, lastCommitDate: Date }>>;
  getOrphanedBuddyBotBranches(): Promise<Array<{ name: string, sha: string, lastCommitDate: Date }>>;
  cleanupStaleBranches(olderThanDays?: number, dryRun?: boolean): Promise<{ deleted: string[], failed: string[] }>;
  createIssue(options: IssueOptions): Promise<Issue>;
  getIssues(state?: 'open' | 'closed' | 'all'): Promise<Issue[]>;
  updateIssue(issueNumber: number, options: Partial<IssueOptions>): Promise<Issue>;
  closeIssue(issueNumber: number): Promise<void>;
  unpinIssue(issueNumber: number): Promise<void>;
}
