interface HTTPResponse { status: number; ok: boolean; body?: string; headers?: Record; url?: string; error?: string; timings?: { duration: number; blocked: number; connecting: number; tls_handshaking: number; sending: number; waiting: number; receiving: number; }; } interface HTTPOptions { headers?: Record; timeout?: number; redirects?: number; auth?: { username: string; password: string; }; body?: any; } type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'HEAD' | 'OPTIONS'; interface HTTPClient { get(url: string, options?: HTTPOptions): Promise; post(url: string, body?: any, options?: HTTPOptions): Promise; put(url: string, body?: any, options?: HTTPOptions): Promise; patch(url: string, body?: any, options?: HTTPOptions): Promise; del(url: string, options?: HTTPOptions): Promise; head(url: string, options?: HTTPOptions): Promise; options(url: string, options?: HTTPOptions): Promise; request(method: HTTPMethod, url: string, body?: any, options?: HTTPOptions): Promise; } interface BatchRequest { method: HTTPMethod; url: string; body?: any; options?: HTTPOptions; } interface ExtendedHTTPClient extends HTTPClient { batch(requests: BatchRequest[]): Promise; } export type { BatchRequest as B, ExtendedHTTPClient as E, HTTPOptions as H, HTTPResponse as a, HTTPMethod as b, HTTPClient as c };