export declare type Shrinkwrap = {
    shrinkwrapVersion: number;
    shrinkwrapMinorVersion?: number;
    specifiers: ResolvedDependencies;
    dependencies?: ResolvedDependencies;
    optionalDependencies?: ResolvedDependencies;
    devDependencies?: ResolvedDependencies;
    packages?: ResolvedPackages;
    registry: string;
};
export declare type ResolvedPackages = PackageSnapshots;
export declare type PackageSnapshots = {
    [packagePath: string]: PackageSnapshot;
};
/**
 * 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 = PackageSnapshot;
export declare type PackageSnapshot = {
    id?: string;
    dev?: true | false;
    optional?: true;
    name?: string;
    version?: string;
    resolution: ShrinkwrapResolution;
    dependencies?: ResolvedDependencies;
    optionalDependencies?: ResolvedDependencies;
    peerDependencies?: {
        [name: string]: string;
    };
    bundledDependencies?: {
        [name: string]: string;
    };
    engines?: {
        node: string;
    };
    os?: string[];
    cpu?: string[];
    deprecated?: string;
};
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;
};
