import type { Cookie } from "tough-cookie";
export type HttpFormData = {
    [key: string]: string;
};
/**
 * Allows multiple entries for the same key
 */
export type MultiQueryFormData = {
    [key: string]: string | string[];
};
export interface IHttpClientOptions {
    baseUrl: string;
    timeout: number;
    userAgent: string;
    followRedirects?: boolean;
}
export interface IFetchOptions {
    query?: MultiQueryFormData;
    retryLimit?: number;
    body?: string;
    headers?: HeadersInit;
    followRedirects?: boolean;
}
export declare class HttpClient {
    protected options: IHttpClientOptions;
    constructor(options: IHttpClientOptions);
    get(path: string, options?: IFetchOptions): Promise<Response>;
    post(path: string, options?: IFetchOptions): Promise<Response>;
    postForm(path: string, formData: HttpFormData, options?: IFetchOptions): Promise<Response>;
    postJson(path: string, json: Object, options?: IFetchOptions): Promise<Response>;
    private _fetch;
    protected registerCookies(response: Response): Promise<Cookie | undefined>;
    getCookies(): Promise<string | null>;
}
