/**
 * MC Version Upgrade Assistant
 *
 * Helps users safely upgrade their Minecraft server version by
 * analyzing plugin compatibility and providing a migration plan.
 *
 * @since v1.66.0
 */
import { type CompatibilityStatus, type McVersion } from './compatibility-checker.js';
import type { PluginHealthMetadata } from './health-types.js';
/**
 * Plugin upgrade status
 */
export type PluginUpgradeStatus = 'ready' | 'update_required' | 'uncertain' | 'incompatible';
/**
 * Plugin upgrade info
 */
export interface PluginUpgradeInfo {
    /** Plugin name */
    pluginName: string;
    /** Plugin ID */
    pluginId: string;
    /** Current version */
    currentVersion: string;
    /** Upgrade status */
    status: PluginUpgradeStatus;
    /** Current MC compatibility */
    currentCompatibility: CompatibilityStatus;
    /** Target MC compatibility */
    targetCompatibility: CompatibilityStatus;
    /** Required update version (if update_required) */
    requiredVersion?: string;
    /** Reason for status */
    reason: string;
    /** Last update date */
    lastUpdated?: number;
    /** Days since last update */
    daysSinceUpdate?: number;
}
/**
 * Upgrade risk level
 */
export type UpgradeRiskLevel = 'low' | 'medium' | 'high' | 'critical';
/**
 * Upgrade analysis result
 */
export interface UpgradeAnalysis {
    /** Current MC version */
    currentVersion: string;
    /** Target MC version */
    targetVersion: string;
    /** Parsed current version */
    parsedCurrent: McVersion | null;
    /** Parsed target version */
    parsedTarget: McVersion | null;
    /** Whether upgrade is possible */
    canUpgrade: boolean;
    /** Upgrade risk level */
    riskLevel: UpgradeRiskLevel;
    /** Risk factors */
    riskFactors: string[];
    /** Plugins by status */
    byStatus: {
        ready: PluginUpgradeInfo[];
        updateRequired: PluginUpgradeInfo[];
        uncertain: PluginUpgradeInfo[];
        incompatible: PluginUpgradeInfo[];
    };
    /** Total plugins */
    totalPlugins: number;
    /** Summary stats */
    stats: {
        readyCount: number;
        updateRequiredCount: number;
        uncertainCount: number;
        incompatibleCount: number;
        readyPercentage: number;
    };
    /** Recommended steps */
    recommendedSteps: string[];
    /** Estimated upgrade effort */
    estimatedEffort: 'low' | 'medium' | 'high';
    /** Analysis timestamp */
    analyzedAt: number;
}
/**
 * Analyze a single plugin for MC version upgrade
 */
export declare function analyzePluginUpgrade(plugin: PluginHealthMetadata, currentMcVersion: string, targetMcVersion: string): PluginUpgradeInfo;
/**
 * Calculate upgrade risk level
 */
export declare function calculateRiskLevel(stats: UpgradeAnalysis['stats'], incompatibleCount: number): UpgradeRiskLevel;
/**
 * Generate risk factors
 */
export declare function generateRiskFactors(analysis: Pick<UpgradeAnalysis, 'byStatus' | 'stats'>): string[];
/**
 * Generate recommended upgrade steps
 */
export declare function generateRecommendedSteps(analysis: Pick<UpgradeAnalysis, 'byStatus' | 'stats' | 'riskLevel' | 'targetVersion'>): string[];
/**
 * Estimate upgrade effort
 */
export declare function estimateUpgradeEffort(stats: UpgradeAnalysis['stats']): 'low' | 'medium' | 'high';
/**
 * Analyze MC version upgrade for a set of plugins
 */
export declare function analyzeUpgrade(plugins: PluginHealthMetadata[], currentMcVersion: string, targetMcVersion: string): UpgradeAnalysis;
/**
 * Get next recommended MC version to upgrade to
 */
export declare function getRecommendedTargetVersion(currentVersion: string): string[];
//# sourceMappingURL=upgrade-assistant.d.ts.map