import { Range, SemVer } from '../models'; /** * Result of parsing a range string. */ interface ParseRangeResult { /** Whether parsing succeeded */ readonly success: boolean; /** The parsed range (if successful) */ readonly range?: Range; /** Error message (if failed) */ readonly error?: string; } /** * Parses a semver range string. * * Supports: * - Exact: 1.2.3, =1.2.3 * - Comparators: >1.0.0, >=1.0.0, <2.0.0, <=2.0.0 * - Caret: ^1.2.3 (compatible with version) * - Tilde: ~1.2.3 (approximately equivalent) * - X-ranges: 1.x, 1.2.x, * * - Hyphen ranges: 1.0.0 - 2.0.0 * - OR: 1.0.0 || 2.0.0 * - AND: >=1.0.0 <2.0.0 * * @param input - The range string to parse * @returns A ParseRangeResult with the parsed range or error * * @example Parse semver range strings * ```typescript * parseRange('^1.0.0') // => { success: true, range: ... } * parseRange('>=1.0.0 <2.0.0') // => { success: true, range: ... } * parseRange('1.0.0 || 2.0.0') // => { success: true, range: ... } * ``` */ declare function parseRange(input: string): ParseRangeResult; /** * Parses a range string, throwing on invalid input. * * @param input - The range string to parse * @returns The parsed Range * @throws {Error} If the input is not a valid range * * @example Parse range with strict validation * ```typescript * const range = parseRangeStrict('^1.0.0') * parseRangeStrict('invalid range!!!') // throws Error * ``` */ declare function parseRangeStrict(input: string): Range; /** * Result of parsing a version string. */ interface ParseVersionResult { /** Whether parsing succeeded */ readonly success: boolean; /** The parsed version (if successful) */ readonly version?: SemVer; /** Error message (if failed) */ readonly error?: string; } /** * Parses a semantic version string. * * Accepts versions in the format: MAJOR.MINOR.PATCH[-prerelease][+build] * Optional leading 'v' or '=' prefixes are stripped. * * @param input - The version string to parse * @returns A ParseVersionResult with the parsed version or error * * @example Parse a semantic version string * parseVersion('1.2.3') // { success: true, version: { major: 1, minor: 2, patch: 3, ... } } * parseVersion('v1.0.0-alpha.1+build.123') // { success: true, ... } * parseVersion('invalid') // { success: false, error: '...' } */ declare function parseVersion(input: string): ParseVersionResult; /** * Parses a version string, throwing on invalid input. * * @param input - The version string to parse * @returns The parsed SemVer * @throws {Error} If the input is not a valid version * * @example Parse version with strict validation * ```typescript * const v = parseVersionStrict('1.2.3') * // => { major: 1, minor: 2, patch: 3, prerelease: [], build: [] } * parseVersionStrict('invalid') // throws Error * ``` */ declare function parseVersionStrict(input: string): SemVer; /** * Attempts to coerce a string into a valid semver. * More lenient than parseVersion - accepts partial versions. * * @param input - The string to coerce * @returns The parsed SemVer or null if coercion failed * * @example Coerce partial versions to valid semver * coerceVersion('1') // { major: 1, minor: 0, patch: 0, ... } * coerceVersion('1.2') // { major: 1, minor: 2, patch: 0, ... } * coerceVersion('v2.0') // { major: 2, minor: 0, patch: 0, ... } */ declare function coerceVersion(input: string): SemVer | null; export { coerceVersion, parseRange, parseRangeStrict, parseVersion, parseVersionStrict }; export type { ParseRangeResult, ParseVersionResult };