import { VersionInfo, CompatibilityResult, RegistryEntry } from './types.js';
/**
 * Manages versioning for registry entries with semantic versioning support
 */
export declare class VersionManager {
    private readonly migrationHandlers;
    private readonly compatibilityRules;
    constructor();
    /**
     * Parse version string to VersionInfo object
     */
    parseVersion(versionString: string): VersionInfo;
    /**
     * Format VersionInfo object to version string
     */
    formatVersion(version: VersionInfo): string;
    /**
     * Compare two versions
     * Returns: -1 if v1 < v2, 0 if v1 === v2, 1 if v1 > v2
     */
    compareVersions(v1: VersionInfo, v2: VersionInfo): number;
    /**
     * Check if a version satisfies a range requirement
     */
    satisfiesRange(version: VersionInfo, range: string): boolean;
    /**
     * Check compatibility between two versions
     */
    checkCompatibility(current: VersionInfo, required: VersionInfo): CompatibilityResult;
    /**
     * Increment version based on change type
     */
    incrementVersion(currentVersion: VersionInfo, changeType: 'major' | 'minor' | 'patch' | 'prerelease', prereleaseIdentifier?: string): VersionInfo;
    /**
     * Register a migration handler for a specific version transition
     */
    registerMigrationHandler(fromVersion: string, toVersion: string, handler: (entry: RegistryEntry) => Promise<RegistryEntry>): void;
    /**
     * Execute migration for a registry entry
     */
    migrateEntry(entry: RegistryEntry, targetVersion: VersionInfo): Promise<RegistryEntry>;
    /**
     * Register custom compatibility rule
     */
    registerCompatibilityRule(ruleKey: string, rule: (v1: VersionInfo, v2: VersionInfo) => boolean): void;
    /**
     * Apply custom compatibility rule
     */
    applyCompatibilityRule(ruleKey: string, v1: VersionInfo, v2: VersionInfo): boolean;
    /**
     * Get the latest version from an array of versions
     */
    getLatestVersion(versions: VersionInfo[]): VersionInfo | null;
    /**
     * Filter versions by compatibility with a base version
     */
    getCompatibleVersions(baseVersion: VersionInfo, versions: VersionInfo[]): VersionInfo[];
    /**
     * Check if version is stable (no prerelease)
     */
    isStableVersion(version: VersionInfo): boolean;
    /**
     * Check if version is prerelease
     */
    isPrereleaseVersion(version: VersionInfo): boolean;
    private setupDefaultCompatibilityRules;
    private isCompatible;
    private isSemanticCompatible;
    private isCompatiblePatch;
    private isCompatibleMinor;
    private isMigrationPossible;
    private generateMigrationPath;
}
//# sourceMappingURL=VersionManager.d.ts.map