import { CustomError } from 'ts-custom-error'; import type https from 'https'; import { StatsContext } from './destination-kit'; export declare const DEFAULT_REQUEST_TIMEOUT = 10000; export interface RequestOptions extends Omit { headers?: Record; json?: unknown; method?: 'get' | 'post' | 'put' | 'delete' | 'patch' | 'head' | 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD'; password?: string; searchParams?: URLSearchParams | Record; throwHttpErrors?: boolean; timeout?: number | false; username?: string; skipResponseCloning?: boolean; agent?: https.Agent; } export interface AllRequestOptions extends RequestOptions { beforeRequest?: BeforeRequestHook[]; afterResponse?: AfterResponseHook[]; statsContext?: StatsContext; } export interface NormalizedOptions extends Omit { headers: RequestInit['headers']; method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD'; } type MaybePromise = Promise | T; export type BeforeRequestHook = (options: NormalizedOptions) => MaybePromise; export type AfterResponseHook = (request: Request, options: NormalizedOptions, response: Response) => MaybePromise; export declare class HTTPError extends CustomError { request: Request; response: Response; options: NormalizedOptions; constructor(response: Response, request: Request, options: NormalizedOptions); } export declare class TimeoutError extends CustomError { request: Request; options: NormalizedOptions; code: string; constructor(request: Request, options: NormalizedOptions); } export declare class RequestClientError extends CustomError { code: string; status: number; constructor(message?: string); } export declare class RequestTimeoutError extends CustomError { code: string; status: number; constructor(message?: string); } export default function createInstance(defaults?: AllRequestOptions): { (url: string, options?: RequestOptions): Promise; extend(newDefaults: AllRequestOptions): any; }; export {};