import type { RecommendedChange } from '../schemas/output.schema.js'; /** * Resolved peer dependency metadata for a library. * Maps peer dependency name → required version range. */ export type PeerDependencyMap = Record; /** * Interface for resolving peer dependency metadata. * Injected for testability — real implementation reads from npm registry or package.json. */ export interface PeerDependencyResolver { resolve(libraryName: string, version: string): Promise; } export type WarningSeverity = 'conflict' | 'missing' | 'compatible'; export interface PeerDependencyWarning { recommendedLibrary: string; peerDependency: string; requiredRange: string; installedVersion: string | null; severity: WarningSeverity; } export interface PeerCheckResult { warnings: PeerDependencyWarning[]; recommendations: RecommendedChange[]; } /** * Classify the severity of a peer dependency relationship. * * - If the peer dependency is not installed (undefined), returns "missing" * - If the installed version cannot be coerced to a valid semver, returns "conflict" * - If the installed version satisfies the required range, returns "compatible" * - Otherwise, returns "conflict" * * Requirements: 2.1, 2.2, 2.3 */ export declare function classifySeverity(requiredRange: string, installedVersion: string | undefined): WarningSeverity; /** * Escalate migration risk when conflict or missing peer dependencies are detected. * * - If no conflict/missing, preserves current risk * - If current risk is "high", preserves "high" * - Otherwise bumps to "medium" * * Requirements: 3.1, 3.2, 3.3 */ export declare function escalateRisk(currentRisk: 'low' | 'medium' | 'high', hasConflictOrMissing: boolean): 'low' | 'medium' | 'high'; /** * Check peer dependencies for all recommendations against currentLibraries. * * For each recommendation: * 1. Resolve peer dependency metadata via the resolver * 2. For each peer dep, compare against currentLibraries using semver * 3. Classify as "compatible", "conflict", or "missing" * 4. If any peer dep is "conflict" or "missing", escalate migrationRisk to at least "medium" * * On resolver error for a specific library: catch error, produce zero warnings, * preserve original migrationRisk, and continue processing. * * Requirements: 1.1, 1.2, 2.1, 2.2, 2.3, 2.4, 3.1, 3.2, 3.3 */ export declare function checkPeerDependencies(recommendations: RecommendedChange[], currentLibraries: Record, resolver: PeerDependencyResolver): Promise; //# sourceMappingURL=peer-dependency-checker.d.ts.map