import { Stack, Middleware } from './Stack'; import { Request, Response, RequestOptions, request } from './HTTPRequest'; import { ProgressData } from './utility'; export interface Context { request: Request; response: Response; } export interface ClientOptions extends RequestOptions { baseURI?: string; baseRequest?: typeof request; } export type MethodOptions = Omit; export interface DownloadOptions extends Pick { chunkSize?: number; range?: [number?, number?]; } export interface TransferProgress extends ProgressData { percent: number; buffer: ArrayBuffer; } export declare class HTTPClient extends Stack { baseURI: string; baseRequest: typeof request; options: RequestOptions; constructor({ baseURI, baseRequest, ...options }?: ClientOptions); defaultWare: Middleware; use(...middlewares: Middleware[]): this; request(data: T['request']): Promise>; head(path: Request['path'], headers?: Request['headers'], options?: MethodOptions): Promise>; get(path: Request['path'], headers?: Request['headers'], options?: MethodOptions): Promise>; post(path: Request['path'], body?: Request['body'], headers?: Request['headers'], options?: MethodOptions): Promise>; put(path: Request['path'], body?: Request['body'], headers?: Request['headers'], options?: MethodOptions): Promise>; patch(path: Request['path'], body?: Request['body'], headers?: Request['headers'], options?: MethodOptions): Promise>; delete(path: Request['path'], body?: Request['body'], headers?: Request['headers'], options?: MethodOptions): Promise>; download(path: Request['path'], { headers, chunkSize, range: [start, end], ...options }?: DownloadOptions): AsyncGenerator; }