export type Sep = '_' | '-'; export type Part = `${number}.${number}.${number}`; export type WithPre = `${Part}${Sep}${string}${Sep | '.'}${Part | number}`; export type Full = Part | WithPre; type Type = S extends `${infer First}${infer Rest}` ? First extends Sep | '.' ? Acc : Type : Acc; export type Parse = T extends `${infer Core}${Sep}${infer Rest}` ? Rest extends `${infer U}` ? { full: T; core: Core; type: Type; pre: U extends `${Type}${Sep | '.'}${infer Pre}` ? Pre : ''; display: `${StripCore extends true ? Core extends '1.0.0' ? '' : `${Core} ` : `${Core} `}${Capitalize>}${U extends `${Type}${Sep | '.'}${infer Pre}` ? ` ${Pre}` : ''}`; } : never : T extends Part ? { full: T; core: T; display: T; } : never; export declare const regex: RegExp; /** * Parses a semver version, including compile-time results * @param full the full version to parse * @param stripCore Whether to strip the leading core version in the display version when the core version is 1.0.0 (default false) */ export declare function parse(full: T): Parse; export declare function parse(full: T, stripCore: S): Parse; export {};