import { IHttpClient } from './http-client-interface.js';
import { ResponseBase } from './response-base.js';
import { LoggerInterface } from '@aws-lambda-powertools/logger/types';
import { BodyInit } from 'undici-types/fetch';

declare class HttpClient implements IHttpClient {
    private headers;
    private baseUrl;
    private logger;
    constructor(logger: LoggerInterface);
    /**
     *
     * @returns The configuration service base URL
     */
    getBaseUrl(): string;
    setBaseUrl(baseUrl: string): void;
    setCommonHeaders(headers: Record<string, string>): void;
    request(httpMethod: string, path: string, query?: URLSearchParams, body?: any): Promise<any>;
    /**
     *
     * @param url
     * @returns
     */
    downloadFile(url: string, query?: URLSearchParams): Promise<ArrayBuffer>;
    /**
     * Upload a file to the Studio transfer server.
     *
     *
     * @param body
     * @param size
     * @param contentType
     * @param ticket
     * @param studiobaseUrl The Studio base url
     *
     * @returns The url to the uploaded file
     */
    uploadFile(body: BodyInit, size: number | null, contentType: string, ticket: string, studiobaseUrl: string): Promise<string>;
    /**
     * @param {object} data
     * @private
     */
    _checkResponse(data: ResponseBase | null): ResponseBase;
    _sanitizeUrl(url: string): string;
}

export { HttpClient };
