import { HttpClientRequestOptions, HttpClientResponse } from 'egg';
import type { PackageManifestType } from '../../repository/PackageRepository.ts';
type HttpMethod = HttpClientRequestOptions['method'];
export type RegistryResponse<T = any> = {
    method: HttpMethod;
} & HttpClientResponse<T>;
export declare class NPMRegistry {
    private readonly logger;
    private readonly httpClient;
    private config;
    private timeout;
    registryHost: string;
    get registry(): string;
    setRegistryHost(registryHost?: string): void;
    getFullManifests(fullname: string, optionalConfig?: {
        retries?: number;
        remoteAuthToken?: string;
    }): Promise<RegistryResponse<PackageManifestType>>;
    getFullManifestsBuffer(fullname: string, optionalConfig?: {
        retries?: number;
        remoteAuthToken?: string;
    }): Promise<RegistryResponse<Buffer>>;
    createSyncTask(fullname: string, optionalConfig?: {
        remoteAuthToken?: string;
    }): Promise<RegistryResponse>;
    getSyncTask(fullname: string, id: string, offset: number, optionalConfig?: {
        remoteAuthToken?: string;
    }): Promise<RegistryResponse<{
        ok: true;
        syncDone: boolean;
        log?: string;
        logUrl?: string;
        error?: string;
    }>>;
    getDownloadRanges(registry: string, fullname: string, start: string, end: string, optionalConfig?: {
        remoteAuthToken?: string;
    }): Promise<RegistryResponse>;
    private requestJSON;
    private requestBuffer;
    private request;
    genAuthorizationHeader(remoteAuthToken?: string): string;
}
export {};
