import { DashboardGenerator } from './dashboard/dashboard-generator';
import { GitHubProvider } from './git/github-provider';
import { Logger } from './utils/logger';
import { PackageScanner } from './scanner/package-scanner';
import { RegistryClient } from './registry/registry-client';
import type { BuddyBotConfig, DashboardData, Issue, PackageFile, PackageUpdate, UpdateGroup, UpdateScanResult,  } from './types';
export declare class Buddy {
  readonly private logger: Logger;
  readonly private scanner: PackageScanner;
  readonly private registryClient: RegistryClient;
  readonly private dashboardGenerator: DashboardGenerator;
  private readonly config: BuddyBotConfig;
  private readonly projectPath?: string;
  constructor(config: BuddyBotConfig, projectPath?: string);
  scanForUpdates(): Promise<UpdateScanResult>;
  createPullRequests(scanResult: UpdateScanResult): Promise<void>;
  private checkDependencyFilesForUpdates(packageFiles: PackageFile[]): Promise<PackageUpdate[]>;
  private checkGitHubActionsForUpdates(packageFiles: PackageFile[]): Promise<PackageUpdate[]>;
  private getUpdateType(current: string, latest: string): 'major' | 'minor' | 'patch';
  generateAllFileUpdates(updates: PackageUpdate[]): Promise<Array<{ path: string, content: string, type: 'update' }>>;
  run(): Promise<UpdateScanResult>;
  checkPackages(packageNames: string[]): Promise<PackageUpdate[]>;
  checkPackagesWithPattern(pattern: string): Promise<PackageUpdate[]>;
  private filterUpdatesByStrategy(updates: PackageUpdate[], strategy: 'major' | 'minor' | 'patch' | 'all'): PackageUpdate[];
  private groupUpdatesByConfig(updates: PackageUpdate[]): UpdateGroup[];
  private getHighestUpdateType(updates: PackageUpdate[]): 'major' | 'minor' | 'patch';
  private isSimilarPRTitle(existingTitle: string, newTitle: string): boolean;
  private checkIfUpdatesMatch(existingPRBody: string, newUpdates: PackageUpdate[]): boolean;
  private generatePRLabels(group: UpdateGroup): string[];
  getConfig(): BuddyBotConfig;
  getProjectPath(): string;
  createOrUpdateDashboard(): Promise<Issue>;
  private collectDashboardData(gitProvider: GitHubProvider): Promise<DashboardData>;
  private findExistingDashboard(gitProvider: GitHubProvider, issueNumber?: number): Promise<Issue | null>;
}