import type { BuddyBotConfig, PackageMetadata, PackageUpdate } from '../types';
import type { Logger } from '../utils/logger';
export declare interface BunOutdatedResult {
  name: string
  current: string
  update: string
  latest: string
  workspace?: string
  file?: string
}
export declare class RegistryClient {
  private readonly projectPath: string;
  private readonly logger: Logger;
  private readonly config?: BuddyBotConfig | undefined;
  constructor(projectPath: string, logger: Logger, config?: BuddyBotConfig | undefined);
  shouldRespectVersion(version: string): boolean;
  getOutdatedPackages(filter?: string): Promise<PackageUpdate[]>;
  getUpdatesForPackages(packageNames: string[]): Promise<PackageUpdate[]>;
  getUpdatesWithPattern(pattern: string): Promise<PackageUpdate[]>;
  getPackageMetadata(packageName: string): Promise<PackageMetadata | undefined>;
  packageExists(packageName: string): Promise<boolean>;
  getLatestVersion(packageName: string): Promise<string | null>;
  private getLatestVersionFromNpm(packageName: string): Promise<string | null>;
  private isPrerelease(version: string): boolean;
  private runBunOutdated(filter?: string): Promise<BunOutdatedResult[]>;
  private parseBunOutdatedOutput(output: string): BunOutdatedResult[];
  private getPackageJsonOutdated(filter?: string): Promise<BunOutdatedResult[]>;
  private cleanVersionRange(version: string): string | null;
  private runCommand(command: string, args: string[]): Promise<string>;
  private getReleaseNotesUrl(packageName: string, metadata?: PackageMetadata): string | undefined;
  private getChangelogUrl(packageName: string, metadata?: PackageMetadata): string | undefined;
  getUpdatesForWorkspace(workspaceName: string): Promise<PackageUpdate[]>;
  searchPackages(query: string, limit?: any): Promise<Array<{
    name: string
    version: string
    description?: string
    keywords?: string[]
  }>>;
  private getMajorVersion(version: string): string;
  private getMinorVersion(version: string): string;
  getComposerOutdatedPackages(): Promise<PackageUpdate[]>;
  private findBestUpdates(currentVersion: string, availableVersions: string[], _constraint: string): Promise<{ version: string, type: 'patch' | 'minor' | 'major' }[]>;
  private parseVersion(version: string): { major: number, minor: number, patch: number } | null;
  private compareVersions(a: string, b: string): number;
  getComposerPackageMetadata(packageName: string): Promise<PackageMetadata | undefined>;
  composerPackageExists(packageName: string): Promise<boolean>;
  getComposerLatestVersion(packageName: string): Promise<string | null>;
  private getComposerReleaseNotesUrl(packageName: string, metadata?: PackageMetadata): string | undefined;
  private getComposerChangelogUrl(packageName: string, metadata?: PackageMetadata): string | undefined;
  private extractConstraintBaseVersion(constraint: string): string | null;
  private findBestConstraintUpdates(constraint: string, availableVersions: string[], currentVersion: string): Promise<{ version: string, type: 'patch' | 'minor' | 'major' }[]>;
  private getWorkspaceOutdatedPackages(): Promise<BunOutdatedResult[]>;
  private getWorkspaceNames(): Promise<string[]>;
  private findPackageJsonFiles(): Promise<string[]>;
  private shouldSkipDirectory(dirName: string): boolean;
  private findPackageLocation(packageName: string): Promise<string | null>;
  private runBunOutdatedForWorkspace(workspaceName: string): Promise<BunOutdatedResult[]>;
}