export type JsonArray = boolean[] | number[] | string[] | JsonFileData[] | Date[];
export type AnyJson = boolean | number | string | JsonFileData | Date | JsonArray | JsonArray[];
export type JsonFileData = {
    [key: string]: AnyJson | undefined;
};
type PackageNameVersionMap = Record<string, string>;
type PackageJsonKnownFields = {
    author?: JsonFileData | string;
    bin?: PackageNameVersionMap | string;
    bugs?: JsonFileData | string;
    commitlint?: JsonFileData;
    dependencies?: PackageNameVersionMap;
    description?: string;
    devDependencies?: PackageNameVersionMap;
    directories?: PackageNameVersionMap;
    engines?: PackageNameVersionMap;
    eslintConfig?: JsonFileData;
    files?: string[];
    homepage?: string;
    importSort?: JsonFileData;
    keywords?: string[];
    license?: string;
    lintStaged?: JsonFileData;
    main?: string;
    name?: string;
    peerDependencies?: PackageNameVersionMap;
    peerDependenciesMeta?: Record<string, {
        optional?: boolean;
    }>;
    prettier?: JsonFileData;
    private?: boolean;
    publishConfig?: JsonFileData;
    repository?: JsonFileData | string;
    scripts?: PackageNameVersionMap;
    tsDevTools?: JsonFileData;
    types?: string;
    version?: string;
    workspaces?: JsonArray | JsonFileData;
};
export type PackageJsonContent = JsonFileData & PackageJsonKnownFields;
export declare class PackageJson {
    private path;
    private static readonly PACKAGE_JSON_FILE_NAME;
    private content?;
    constructor(path: string);
    getPath(): string;
    getContent(): PackageJsonContent;
    setContent(content: PackageJsonContent): void;
    getPackageName(): string | undefined;
    getPackageVersion(): string | undefined;
    isPrivate(): boolean;
    getTsDevToolsVersion(): string | undefined;
    getDependenciesPackageNames(): string[];
    getDevDependenciesPackageNames(): string[];
    getAllDependenciesPackageNames(): string[];
    hasDependency(packageName: string): boolean;
    merge(update: PackageJsonContent): void;
    backup(): string;
    restore(backupPath: string): void;
    private write;
    static fromDirPath(dirPath: string): PackageJson;
}
export {};
