import { Dependencies, PackageJson } from '@pnpm/types';
import { PnpmOptions } from '../types';
import { InstalledPackage } from '../install/installMultiple';
import { Shrinkwrap } from 'pnpm-shrinkwrap';
import { Got, Store, PackageContentInfo, DirectoryResolution, PackageMeta } from 'package-store';
export declare type InstalledPackages = {
    [name: string]: InstalledPackage;
};
export declare type TreeNode = {
    children: (() => {
        [alias: string]: string;
    }) | {
        [alias: string]: string;
    };
    pkg: InstalledPackage;
    depth: number;
    installable: boolean;
};
export declare type TreeNodeMap = {
    [nodeId: string]: TreeNode;
};
export declare type InstallContext = {
    installs: InstalledPackages;
    outdatedPkgs: {
        [pkgId: string]: string;
    };
    localPackages: {
        optional: boolean;
        dev: boolean;
        resolution: DirectoryResolution;
        id: string;
        version: string;
        name: string;
        specRaw: string;
    }[];
    childrenByParentId: {
        [parentId: string]: {
            alias: string;
            pkgId: string;
        }[];
    };
    nodesToBuild: {
        alias: string;
        nodeId: string;
        pkg: InstalledPackage;
        depth: number;
        installable: boolean;
    }[];
    wantedShrinkwrap: Shrinkwrap;
    currentShrinkwrap: Shrinkwrap;
    fetchingLocker: {
        [pkgId: string]: {
            fetchingFiles: Promise<PackageContentInfo>;
            fetchingPkg: Promise<PackageJson>;
            calculatingIntegrity: Promise<void>;
        };
    };
    skipped: Set<string>;
    tree: {
        [nodeId: string]: TreeNode;
    };
    storeIndex: Store;
    force: boolean;
    prefix: string;
    storePath: string;
    registry: string;
    metaCache: Map<string, PackageMeta>;
    got: Got;
    depth: number;
    engineStrict: boolean;
    nodeVersion: string;
    pnpmVersion: string;
    offline: boolean;
    rawNpmConfig: Object;
    nodeModules: string;
    verifyStoreInegrity: boolean;
};
export declare function install(maybeOpts?: PnpmOptions): Promise<void>;
/**
 * Perform installation.
 *
 * @example
 *     install({'lodash': '1.0.0', 'foo': '^2.1.0' }, { silent: true })
 */
export declare function installPkgs(fuzzyDeps: string[] | Dependencies, maybeOpts?: PnpmOptions): Promise<void>;
