/**
 * @typedef {object} PodiumHttpClientRequestOptions
 * @property {'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'CONNECT' | 'OPTIONS' | 'TRACE' | 'PATCH'} method
 * @property {boolean} [json]
 * @property {boolean} [rejectUnauthorized]
 * @property {boolean} [follow]
 * @property {number} [timeout]
 * @property {object} [query]
 * @property {import('http').IncomingHttpHeaders} [headers]
 * @property {(info: { statusCode: number; headers: Record<string, string | string[]>; }) => void} [onInfo]
 */
/** Wrapper for undici */
export default class HTTP {
    constructor(requestFn?: typeof undiciRequest);
    requestFn: typeof undiciRequest;
    /**
     * @param {string} url
     * @param {PodiumHttpClientRequestOptions} options
     * @returns {Promise<Pick<import('undici').Dispatcher.ResponseData, 'statusCode' | 'headers' | 'body'>>}
     */
    request(url: string, options: PodiumHttpClientRequestOptions): Promise<Pick<import("undici").Dispatcher.ResponseData, "statusCode" | "headers" | "body">>;
}
export type PodiumHttpClientRequestOptions = {
    method: "GET" | "HEAD" | "POST" | "PUT" | "DELETE" | "CONNECT" | "OPTIONS" | "TRACE" | "PATCH";
    json?: boolean;
    rejectUnauthorized?: boolean;
    follow?: boolean;
    timeout?: number;
    query?: object;
    headers?: import("http").IncomingHttpHeaders;
    onInfo?: (info: {
        statusCode: number;
        headers: Record<string, string | string[]>;
    }) => void;
};
import { request as undiciRequest } from 'undici';
