import { Agent as HttpAgent } from 'http'; import { Agent as HttpsAgent } from 'https'; export declare function fetch( input: RequestInfo, init?: RequestInit, ): Promise; export type RequestAgent = HttpAgent | HttpsAgent; export type RequestInfo = Request | string; export declare class Headers implements Iterable<[string, string]> { constructor(init?: HeadersInit); append(name: string, value: string): void; delete(name: string): void; get(name: string): string | null; has(name: string): boolean; set(name: string, value: string): void; entries(): Iterator<[string, string]>; keys(): Iterator; values(): Iterator; [Symbol.iterator](): Iterator<[string, string]>; } export type HeadersInit = Headers | string[][] | { [name: string]: string }; export declare class Body { readonly bodyUsed: boolean; arrayBuffer(): Promise; json(): Promise; text(): Promise; } export declare class Request extends Body { constructor(input: Request | string, init?: RequestInit); readonly method: string; readonly url: string; readonly headers: Headers; clone(): Request; } export interface RequestInit { method?: string; headers?: HeadersInit; body?: BodyInit; mode?: RequestMode; credentials?: RequestCredentials; cache?: RequestCache; redirect?: RequestRedirect; referrer?: string; referrerPolicy?: ReferrerPolicy; integrity?: string; // The following properties are node-fetch extensions follow?: number; timeout?: number; compress?: boolean; size?: number; agent?: RequestAgent | false; // Cloudflare Workers accept a `cf` property to control Cloudflare features // See https://developers.cloudflare.com/workers/reference/cloudflare-features/ cf?: { [key: string]: any; }; } export type RequestMode = 'navigate' | 'same-origin' | 'no-cors' | 'cors'; export type RequestCredentials = 'omit' | 'same-origin' | 'include'; export type RequestCache = | 'default' | 'no-store' | 'reload' | 'no-cache' | 'force-cache' | 'only-if-cached'; export type RequestRedirect = 'follow' | 'error' | 'manual'; export type ReferrerPolicy = | '' | 'no-referrer' | 'no-referrer-when-downgrade' | 'same-origin' | 'origin' | 'strict-origin' | 'origin-when-cross-origin' | 'strict-origin-when-cross-origin' | 'unsafe-url'; export declare class Response extends Body { constructor(body?: BodyInit, init?: ResponseInit); static error(): Response; static redirect(url: string, status?: number): Response; readonly url: string; readonly redirected: boolean; readonly status: number; readonly ok: boolean; readonly statusText: string; readonly headers: Headers; clone(): Response; } export interface ResponseInit { headers?: HeadersInit; status?: number; statusText?: string; // Although this isn't part of the spec, `node-fetch` accepts a `url` property url?: string; } export type BodyInit = ArrayBuffer | ArrayBufferView | string;