/// <reference types="node" />
import { IncomingMessage } from 'http';
export declare type AuthInfo = {
    alwaysAuth: boolean;
} & ({
    token: string;
} | {
    username: string;
    password: string;
});
export interface HttpResponse {
    body: string;
}
export interface Got {
    download(url: string, saveto: string, opts: {
        unpackTo: string;
        registry?: string;
        onStart?: (totalSize: number | null, attempt: number) => void;
        onProgress?: (downloaded: number) => void;
        integrity?: string;
        generatePackageIntegrity?: boolean;
    }): Promise<{}>;
    getJSON<T>(url: string, registry: string, priority?: number): Promise<T>;
}
export interface NpmRegistryClient {
    get: (url: string, getOpts: object, cb: (err: Error, data: object, raw: object, res: HttpResponse) => void) => void;
    fetch: (url: string, opts: {
        auth?: object;
    }, cb: (err: Error, res: IncomingMessage) => void) => void;
}
declare const _default: (client: NpmRegistryClient, gotOpts: {
    networkConcurrency: number;
    rawNpmConfig: object & {
        registry?: string | undefined;
    };
    alwaysAuth: boolean;
    registry: string;
    retries?: number | undefined;
    factor?: number | undefined;
    minTimeout?: number | undefined;
    maxTimeout?: number | undefined;
    randomize?: boolean | undefined;
}) => Got;
export default _default;
