///
import { URL } from 'url';
import { CancelError } from 'p-cancelable';
import { CancelableRequest, Response, Options, NormalizedOptions, Defaults as DefaultOptions, PaginationOptions, ParseError, RequestError, CacheError, ReadError, HTTPError, MaxRedirectsError, TimeoutError } from './as-promise';
import Request from './core';
declare type Except = Pick>;
declare type Merge = Except> & SecondType;
export interface InstanceDefaults {
options: DefaultOptions;
handlers: HandlerFunction[];
mutableDefaults: boolean;
_rawHandlers?: HandlerFunction[];
}
export declare type GotReturn = Request | CancelableRequest;
export declare type HandlerFunction = (options: NormalizedOptions, next: (options: NormalizedOptions) => T) => T | Promise;
export interface ExtendOptions extends Options {
handlers?: HandlerFunction[];
mutableDefaults?: boolean;
}
export declare type OptionsOfTextResponseBody = Merge;
export declare type OptionsOfJSONResponseBody = Merge;
export declare type OptionsOfBufferResponseBody = Merge;
export declare type OptionsOfUnknownResponseBody = Merge;
export declare type StrictOptions = Except;
export declare type StreamOptions = Merge;
declare type ResponseBodyOnly = {
resolveBodyOnly: true;
};
export declare type OptionsWithPagination = Merge>;
export interface GotPaginate {
each: ((url: string | URL, options?: OptionsWithPagination) => AsyncIterableIterator) & ((options?: OptionsWithPagination) => AsyncIterableIterator);
all: ((url: string | URL, options?: OptionsWithPagination) => Promise) & ((options?: OptionsWithPagination) => Promise);
(url: string | URL, options?: OptionsWithPagination): AsyncIterableIterator;
(options?: OptionsWithPagination): AsyncIterableIterator;
}
export interface GotRequestFunction {
(url: string | URL, options?: OptionsOfTextResponseBody): CancelableRequest>;
(url: string | URL, options?: OptionsOfJSONResponseBody): CancelableRequest>;
(url: string | URL, options?: OptionsOfBufferResponseBody): CancelableRequest>;
(url: string | URL, options?: OptionsOfUnknownResponseBody): CancelableRequest;
(options: OptionsOfTextResponseBody): CancelableRequest>;
(options: OptionsOfJSONResponseBody): CancelableRequest>;
(options: OptionsOfBufferResponseBody): CancelableRequest>;
(options: OptionsOfUnknownResponseBody): CancelableRequest;
(url: string | URL, options?: (Merge)): CancelableRequest;
(url: string | URL, options?: (Merge)): CancelableRequest;
(url: string | URL, options?: (Merge)): CancelableRequest;
(options: (Merge)): CancelableRequest;
(options: (Merge)): CancelableRequest;
(options: (Merge)): CancelableRequest;
(url: string | URL, options?: Merge): Request;
(options: Merge): Request;
(url: string | URL, options?: Options): CancelableRequest | Request;
(options: Options): CancelableRequest | Request;
}
export declare type HTTPAlias = 'get' | 'post' | 'put' | 'patch' | 'head' | 'delete';
interface GotStreamFunction {
(url: string | URL, options?: Merge): Request;
(options?: Merge): Request;
}
export declare type GotStream = GotStreamFunction & Record;
export interface Got extends Record, GotRequestFunction {
stream: GotStream;
paginate: GotPaginate;
defaults: InstanceDefaults;
CacheError: typeof CacheError;
RequestError: typeof RequestError;
ReadError: typeof ReadError;
ParseError: typeof ParseError;
HTTPError: typeof HTTPError;
MaxRedirectsError: typeof MaxRedirectsError;
TimeoutError: typeof TimeoutError;
CancelError: typeof CancelError;
extend: (...instancesOrOptions: Array) => Got;
mergeInstances: (parent: Got, ...instances: Got[]) => Got;
mergeOptions: (...sources: Options[]) => NormalizedOptions;
}
export {};