import semver, { SemVer } from "semver"; import { PackageJson } from "../types"; declare type Version = string; declare type Range = string; export declare type InstallType = "dev" | "dep" | "linked"; export interface InstallStrategy { type: InstallType; version: Range; } export declare type Action = "link" | "unlink" | "remove" | ActionWithVersion; export interface ActionWithVersion { name: "add" | "addDev" | "addPeer" | "upgrade"; version: Version; } export interface ActionWithVersion { name: "add" | "addDev" | "addPeer" | "upgrade"; version: Version; } /** * This function comes close to semver.satisfies with {includePrerelease: true} * But it has a little bit different behaviour concerning prereleases * See the tests for details */ export declare function isCompatible(libraryVersion: Version | SemVer, withRange: Range | semver.Range): boolean; /** * This updates the install strategy of a project, based on the built-in Library version and the currently installed Library version * Basically it decides to link the library if it is satisfied by the built-in version and installs it as a dev dependency otherwise * See the tests for more specific cases */ export declare function updateInstallStrategy(currentInstallStrategy?: InstallStrategy, builtInLibraryVersion?: Version, installedLibraryVersion?: Version | null): InstallStrategy | undefined; export declare function installStrategy({ dependencies, peerDependencies, devDependencies, }: Pick): InstallStrategy | undefined; export declare function installStrategyForVersion(version: string, builtInFramerVersion: string | undefined): InstallStrategy; export declare function newPeerDependency(framerPeerDependency: string | undefined, toVersion: string): string; export declare function generateActions(from: InstallStrategy | undefined, to: InstallStrategy, installedFramerVersion: SemVer | string | null): Action[]; export declare function latestOfMajorVersions(versions: Version[], alwaysIncludedVersions?: Version[], excludedRange?: Range, includedRange?: Range): Version[]; export declare function libraryCompatibility(packageJson?: Pick, builtInFramerVersion?: string, installedLibraryVersion?: string | null): { compatible: boolean; isError: boolean; message: string; recoverySuggestion: string; }; export {};