import type { Range } from 'semver';
import type { NamespaceInfo } from '../file-plugins/files/flowr-namespace-file';
export type PackageType = 'package' | 'system' | 'r';
export type PackageOptions = {
    derivedVersion?: Range;
    type?: PackageType;
    dependencies?: Package[];
    namespaceInfo?: NamespaceInfo;
    versionConstraints?: Range[];
};
export declare class Package {
    name: string;
    derivedVersion?: Range;
    type?: PackageType;
    dependencies?: Package[];
    namespaceInfo?: NamespaceInfo;
    versionConstraints: Range[];
    constructor(info: {
        name: string;
    } & PackageOptions);
    has(name: string, className?: string): boolean;
    s3For(generic: string): string[];
    mergeInPlace(other: Package): void;
    addInfo(info: PackageOptions): void;
    getInfo(): this;
    deriveVersion(): Range | undefined;
    static parsePackageVersionRange(constraint?: string, version?: string): Range | undefined;
}
