import { RequestOptions } from 'http'; import { PassThrough, Transform } from 'stream'; declare function Miniget(url: string | URL, options?: Miniget.Options): Miniget.Stream; declare namespace Miniget { interface Options extends RequestOptions { maxRedirects?: number; maxRetries?: number; maxReconnects?: number; backoff?: { inc: number; max: number; }; highWaterMark?: number; transform?: (parsedUrl: RequestOptions) => RequestOptions; acceptEncoding?: { [key: string]: () => Transform; }; } interface DefaultOptions extends Options { maxRedirects: number; maxRetries: number; maxReconnects: number; backoff: { inc: number; max: number; }; } const defaultOptions: DefaultOptions; class MinigetError extends Error { statusCode?: number; constructor(message: string, statusCode?: number); } interface Stream extends PassThrough { abort: (err?: Error) => void; aborted: boolean; destroy: (err?: Error) => this; destroyed: boolean; text: () => Promise; on(event: 'reconnect', listener: (attempt: number, err?: Miniget.MinigetError) => void): this; on(event: 'retry', listener: (attempt: number, err?: Miniget.MinigetError) => void): this; on(event: 'redirect', listener: (url: string) => void): this; on(event: string | symbol, listener: (...args: any) => void): this; } } export = Miniget;