import { Resolution, PackageSpec } from '../resolve';
import { MemoizedFunc } from '../memoize';
import { Package } from '../types';
import { Got } from '../network/got';
import { PackageMeta } from '../resolve/utils/loadPackageMeta';
export declare type FetchedPackage = {
    fetchingPkg: Promise<Package>;
    fetchingFiles: Promise<Boolean>;
    path: string;
    srcPath?: string;
    id: string;
    resolution: Resolution;
    abort(): Promise<void>;
};
export default function fetch(spec: PackageSpec, options: {
    root: string;
    storePath: string;
    metaCache: Map<string, PackageMeta>;
    tag: string;
    got: Got;
    update?: boolean;
    shrinkwrapResolution?: Resolution;
    pkgId?: string;
    fetchingLocker: MemoizedFunc<Boolean>;
}): Promise<FetchedPackage>;
