import { ClientOptions } from "../Client";
export type ValidResponse = object | string | ReadableStream<Uint8Array>;
export type FetchResult<T extends ValidResponse = ValidResponse> = {
    data: T;
    headers: Headers;
    status: number;
};
export declare class HttpClient {
    private baseURL;
    private readonly timeout?;
    private readonly headers;
    private readonly dispatcher?;
    private readonly fetchImpl;
    apiVersion?: [number, number];
    private readonly keepAlive;
    private readonly stickySessions;
    private readonly cookieJar?;
    constructor(url: string, options?: ClientOptions);
    close(): Promise<void>;
    private request;
    private encodeBody;
    private parseResponse;
    get<T extends ValidResponse = ValidResponse>(url: string, headers?: HeadersInit): Promise<FetchResult<T>>;
    post<T extends ValidResponse = ValidResponse>(url: string, data?: unknown, headers?: HeadersInit): Promise<FetchResult<T>>;
    put<T extends ValidResponse = ValidResponse>(url: string, data?: unknown, headers?: HeadersInit): Promise<FetchResult<T>>;
    patch<T extends ValidResponse = ValidResponse>(url: string, data?: unknown, headers?: HeadersInit): Promise<FetchResult<T>>;
    delete<T extends ValidResponse = ValidResponse>(url: string, headers?: HeadersInit): Promise<FetchResult<T>>;
    head(url: string, headers?: HeadersInit): Promise<FetchResult<Record<string, never>>>;
}
