import type { Range } from 'semver';
export interface RLicenseInfo {
    type: 'license';
    license: string;
    versionConstraint?: Range;
}
export interface RLicenseExceptionInfo {
    type: 'exception';
    exception: string;
}
export interface RLicenseCombinationInfo {
    type: 'combination';
    combination: 'and' | 'or' | 'with';
    elements: [left: RLicenseElementInfo, right: RLicenseElementInfo];
}
export interface NoLicenseInfo {
    type: 'no-license';
}
/**
 * The structured representation of an R license element.
 * This can be a license, an exception, a combination of licenses, or no license.
 * @see {@link parseRLicense} and {@link stringifyRLicense} to parse and stringify R license strings.
 */
export type RLicenseElementInfo = RLicenseInfo | RLicenseExceptionInfo | RLicenseCombinationInfo | NoLicenseInfo;
/**
 * Parses an R license string into its structured representation.
 */
export declare function parseRLicense(licenseString: string): RLicenseElementInfo;
/**
 * Stringifies an R license element back into its string representation.
 */
export declare function stringifyRLicense(license: RLicenseElementInfo): string;
