import type { PackageInfo, PackageName, VersionSpec } from './package-types';
/**
 * Get the latest version of a package (versions[0] is always the latest)
 */
export declare function getLatestVersion(packageName: PackageName): Promise<string | null>;
/**
 * Get all available versions for a package
 */
export declare function getAvailableVersions(packageName: PackageName): Promise<string[]>;
/**
 * Get PHP versions suitable for CI/CD workflows
 * Returns the latest versions from each supported major.minor branch
 */
export declare function getPhpVersionsForWorkflow(options?: {
  supportedBranches?: string[]
  fallbackVersions?: string[]
}): string[];
/**
 * Check if a specific version is available for a package
 */
export declare function isVersionAvailable(packageName: PackageName, version: string): Promise<boolean>;
/**
 * Resolve a version specification to an actual version
 */
export declare function resolveVersion(packageName: PackageName, versionSpec?: VersionSpec): Promise<string | null>;
/**
 * Get comprehensive package information
 */
export declare function getPackageInfo(packageName: PackageName): Promise<PackageInfo | null>;
/**
 * Resolve package name to domain (handles aliases)
 */
export declare function resolvePackageDomain(packageName: PackageName): string | null;
/**
 * Get all packages that match a search term
 */
export declare function searchPackages(searchTerm: string): Promise<PackageInfo[]>;
/**
 * Get packages by category based on domain patterns
 */
export declare function getPackagesByPattern(pattern: RegExp): Promise<PackageInfo[]>;
/**
 * Get popular packages (those with many versions, indicating active development)
 */
export declare function getPopularPackages(minVersions?: number): Promise<PackageInfo[]>;
/**
 * Get recently updated packages (those with many versions, assuming frequent updates)
 */
export declare function getActivePackages(limit?: number): Promise<PackageInfo[]>;
/**
 * Validate a package specification
 */
// eslint-disable-next-line no-unused-vars
export declare function validatePackageSpec(packageSpec: string): Promise<{
  isValid: boolean
  packageName?: PackageName
  version?: string
  error?: string
}>;
/**
 * Resolve a version constraint against available versions in S3 metadata
 */
export declare function resolveVersionFromMetadata(constraint: string, availableVersions: string[]): string | null;
