export type HttpRequestMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; export type HttpRequestHeaders = Record; export type HttpRequestCookies = Record; export interface HttpResponseError extends Error { url: string; status: number; headers: HttpResponseHeaders; responseText?: string; } export interface HttpResponseHeaders { get: (name: string) => string | null; getSetCookie: () => string[]; } export interface HttpRequestParameters { method: HttpRequestMethod, url: string, query?: Record; body?: Record; headers?: HttpRequestHeaders; cookies?: HttpRequestCookies; } export interface HttpRequestResult { url: string; responseText?: string; headers?: HttpResponseHeaders; } export type HttpRequestFunction = (parameters: HttpRequestParameters) => Promise;