export declare type Shrinkwrap = {
    version: number;
    specifiers: ResolvedDependencies;
    dependencies: ResolvedDependencies;
    optionalDependencies?: ResolvedDependencies;
    devDependencies?: ResolvedDependencies;
    packages: ResolvedPackages;
    registry: string;
};
export declare type ResolvedPackages = {
    [pkgId: string]: DependencyShrinkwrap;
};
/**
 * tarball hosted remotely
 */
export declare type TarballResolution = {
    type?: undefined;
    tarball: string;
    integrity?: string;
    registry?: string;
};
/**
 * directory on a file system
 */
export declare type DirectoryResolution = {
    type: 'directory';
    directory: string;
};
/**
 * Git repository
 */
export declare type GitRepositoryResolution = {
    type: 'git';
    repo: string;
    commit: string;
};
export declare type Resolution = TarballResolution | GitRepositoryResolution | DirectoryResolution;
export declare type ShrinkwrapResolution = Resolution | {
    integrity: string;
};
export declare type DependencyShrinkwrap = {
    id?: string;
    dev?: true;
    optional?: true;
    resolution: ShrinkwrapResolution;
    dependencies?: ResolvedDependencies;
    optionalDependencies?: ResolvedDependencies;
};
export declare type Dependencies = {
    [name: string]: string;
};
export declare type PackageBin = string | {
    [name: string]: string;
};
export declare type Package = {
    name: string;
    version: string;
    private?: boolean;
    bin?: PackageBin;
    directories?: {
        bin?: string;
    };
    dependencies?: Dependencies;
    devDependencies?: Dependencies;
    optionalDependencies?: Dependencies;
    peerDependencies?: Dependencies;
    bundleDependencies?: string[];
    bundledDependencies?: string[];
    scripts?: {
        [name: string]: string;
    };
    config?: Object;
};
/*** @example
 * {
 *   "foo": "registry.npmjs.org/foo/1.0.1"
 * }
 */
export declare type ResolvedDependencies = {
    [pkgName: string]: string;
};
