import type { TimeoutsOptions } from 'retry';
type DownloadFileHandler<T> = (file: string) => Promise<T>;
export interface Fetcher {
    downloadFile<T>(url: string, maxLength: number, handler: DownloadFileHandler<T>): Promise<T>;
    downloadBytes(url: string, maxLength: number): Promise<Buffer>;
}
export declare abstract class BaseFetcher implements Fetcher {
    abstract fetch(url: string): Promise<ReadableStream<Uint8Array<ArrayBuffer>>>;
    downloadFile<T>(url: string, maxLength: number, handler: DownloadFileHandler<T>): Promise<T>;
    downloadBytes(url: string, maxLength: number): Promise<Buffer>;
}
type Retry = boolean | number | TimeoutsOptions | undefined;
interface FetcherOptions {
    userAgent?: string;
    timeout?: number;
    retry?: Retry;
}
export declare class DefaultFetcher extends BaseFetcher {
    private userAgent?;
    private timeout?;
    private retry?;
    constructor(options?: FetcherOptions);
    fetch(url: string): Promise<ReadableStream<Uint8Array<ArrayBuffer>>>;
}
export {};
