/**
 * Semantic version parsing, comparison, and manipulation utilities.
 */
import type { SemanticVersion, VersionBumpType } from './types';
/**
 * Parse a semantic version string into components.
 *
 * @param version - Version string (e.g., "1.2.3", "1.0.0-alpha.1")
 * @returns Parsed SemanticVersion or null if invalid
 *
 * @example
 * parseVersion("1.2.3") // { major: 1, minor: 2, patch: 3 }
 * parseVersion("2.0.0-beta.1") // { major: 2, minor: 0, patch: 0, prerelease: "beta.1" }
 */
export declare function parseVersion(version: string): SemanticVersion | null;
/**
 * Strictly parse a version, throwing on invalid input.
 *
 * @throws Error if version is not valid semver
 */
export declare function parseVersionStrict(version: string): SemanticVersion;
/**
 * Format a SemanticVersion back to string.
 *
 * @example
 * formatVersion({ major: 1, minor: 2, patch: 3 }) // "1.2.3"
 * formatVersion({ major: 2, minor: 0, patch: 0, prerelease: "beta.1" }) // "2.0.0-beta.1"
 */
export declare function formatVersion(version: SemanticVersion): string;
/**
 * Compare two version strings.
 *
 * @returns -1 if a < b, 0 if a === b, 1 if a > b
 *
 * @example
 * compareVersions("1.0.0", "2.0.0") // -1
 * compareVersions("1.2.3", "1.2.3") // 0
 * compareVersions("2.0.0", "1.9.9") // 1
 */
export declare function compareVersions(a: string, b: string): -1 | 0 | 1;
/**
 * Check if version a is greater than version b.
 */
export declare function isVersionGreater(a: string, b: string): boolean;
/**
 * Check if version a is less than version b.
 */
export declare function isVersionLess(a: string, b: string): boolean;
/**
 * Check if two versions are equal.
 */
export declare function isVersionEqual(a: string, b: string): boolean;
/**
 * Bump a version by the specified type.
 *
 * @param current - Current version string
 * @param bumpType - Type of bump: 'patch', 'minor', or 'major'
 * @returns New version string
 *
 * @example
 * bumpVersion("1.2.3", "patch") // "1.2.4"
 * bumpVersion("1.2.3", "minor") // "1.3.0"
 * bumpVersion("1.2.3", "major") // "2.0.0"
 */
export declare function bumpVersion(current: string, bumpType: VersionBumpType): string;
/**
 * Determine the appropriate version bump type based on change impact.
 *
 * - Breaking changes → major
 * - Non-breaking additions/changes → minor
 * - Fixes only → patch
 *
 * @param hasBreaking - Whether breaking changes were detected
 * @param hasNonBreaking - Whether non-breaking changes (additions, changes) were detected
 * @returns Appropriate bump type
 */
export declare function determineBumpType(hasBreaking: boolean, hasNonBreaking: boolean): VersionBumpType;
/**
 * Get sort priority for bump types (higher = more significant).
 */
export declare function getBumpTypePriority(bumpType: VersionBumpType): number;
/**
 * Get the most significant bump type from a list.
 */
export declare function getMaxBumpType(bumpTypes: VersionBumpType[]): VersionBumpType | null;
/**
 * Check if a string is a valid semantic version.
 */
export declare function isValidVersion(version: string): boolean;
/**
 * Validate a version string, returning validation errors.
 */
export declare function validateVersion(version: string): string[];
