import { Dispatcher } from "./undici+jsonc-parser.mjs"; interface FetchOptions extends Omit, FetchHooks { baseURL?: string; body?: RequestInit["body"] | Record; ignoreResponseError?: boolean; /** * @deprecated use query instead. */ params?: Record; query?: Record; parseResponse?: (responseText: string) => any; responseType?: R; /** * @experimental Set to "half" to enable duplex streaming. * Will be automatically set to "half" when using a ReadableStream as body. * @see https://fetch.spec.whatwg.org/#enumdef-requestduplex */ duplex?: "half" | undefined; /** * Only supported in Node.js >= 18 using undici * * @see https://undici.nodejs.org/#/docs/api/Dispatcher */ dispatcher?: InstanceType; /** * Only supported older Node.js versions using node-fetch-native polyfill. */ agent?: unknown; /** timeout in milliseconds */ timeout?: number; retry?: number | false; /** Delay between retries in milliseconds. */ retryDelay?: number | ((context: FetchContext) => number); /** Default is [408, 409, 425, 429, 500, 502, 503, 504] */ retryStatusCodes?: number[]; } interface ResolvedFetchOptions extends FetchOptions { headers: Headers; } interface FetchContext { request: FetchRequest; options: ResolvedFetchOptions; response?: FetchResponse; error?: Error; } type MaybePromise = T | Promise; type MaybeArray = T | T[]; type FetchHook = (context: C) => MaybePromise; interface FetchHooks { onRequest?: MaybeArray>>; onRequestError?: MaybeArray & { error: Error; }>>; onResponse?: MaybeArray & { response: FetchResponse; }>>; onResponseError?: MaybeArray & { response: FetchResponse; }>>; } interface ResponseMap { blob: Blob; text: string; arrayBuffer: ArrayBuffer; stream: ReadableStream; } type ResponseType = keyof ResponseMap | "json"; interface FetchResponse extends Response { _data?: T; } type FetchRequest = RequestInfo; export { FetchOptions, FetchRequest, FetchResponse };