import IFile from "../storage/IFile";
import { IEventHandler } from "ste-events";
import Project from "../app/Project";
import { PackageJSON } from "@npm/types";
export declare const DevDependenciesDefault: Record<string, string>;
export declare const ScriptsDefault: Record<string, string>;
export declare const DependenciesDefault: Record<string, string>;
export declare const OverridesDefault: {
    [name: string]: any;
};
export declare const PackageJsonDefault: PackageJSON;
export declare const SetupRequiredScripts: Record<string, string>;
export declare const SetupRequiredDependencies: Record<string, string>;
export declare const NpmPackageSettingAllowList: string[];
/**
 * Strips semver range prefixes (^, ~, >=, etc.) from a version string,
 * returning an exact pinned version. This prevents uncontrolled automatic
 * upgrades when `npm install` is run.
 */
export declare function pinVersion(version: string): string;
/**
 * Strips semver range prefixes from every value in a dependency record.
 */
export declare function pinDependencies(deps: Record<string, string>): Record<string, string>;
export default class NpmPackageDefinition {
    private _file?;
    private _id?;
    private _isLoaded;
    definition?: PackageJSON;
    private _onLoaded;
    get isLoaded(): boolean;
    get file(): IFile | undefined;
    set file(newFile: IFile | undefined);
    get onLoaded(): import("ste-events").IEvent<NpmPackageDefinition, NpmPackageDefinition>;
    get description(): string;
    get name(): string;
    get id(): string | undefined;
    set id(newId: string | undefined);
    static ensureOnFile(file: IFile, loadHandler?: IEventHandler<NpmPackageDefinition, NpmPackageDefinition>): Promise<NpmPackageDefinition>;
    persist(): Promise<boolean>;
    save(): Promise<void>;
    ensureMinContent(project: Project): Promise<void>;
    updateContent(project: Project): Promise<void>;
    ensureStandardContent(): Promise<void>;
    ensureSetupContent(bpTitle?: string): Promise<boolean>;
    load(): Promise<void>;
}
