import { IHttpClient, HttpClientOptions, RequestOptions } from '../interfaces/http-client.js';
declare module 'axios' {
    interface AxiosRequestConfig {
        skipRetry?: boolean;
    }
}
/**
 * HTTP клиент для выполнения запросов к API
 *
 * Предоставляет методы для работы с REST API, включая обработку ошибок,
 * повторные попытки и таймауты.
 */
export declare class HttpClient implements IHttpClient {
    /** Базовый URL для запросов */
    private readonly baseURL;
    /** Опции HTTP клиента */
    private readonly options;
    /** Axios инстанс */
    private readonly axiosInstance;
    /** Среда выполнения */
    private readonly environment;
    /**
     * Создает новый HTTP клиент
     * @param {string} baseURL Базовый URL для запросов
     * @param {HttpClientOptions} [options] Опции для HTTP клиента
     */
    constructor(baseURL: string, options?: HttpClientOptions);
    /**
     * Настраивает интерцепторы Axios
     */
    private setupInterceptors;
    /**
     * Выполняет HTTP запрос
     * @param {RequestOptions} options Опции запроса
     * @returns {Promise<T>} Ответ от API
     */
    request<T = any>(options: RequestOptions): Promise<T>;
    /**
     * Выполняет GET запрос
     * @param {string} url URL для запроса
     * @param {Record<string, any>} [params] Query параметры
     * @param {Record<string, string>} [headers] HTTP заголовки
     * @returns {Promise<T>} Ответ от API
     */
    get<T = any>(url: string, params?: Record<string, any>, headers?: Record<string, string>): Promise<T>;
    /**
     * Выполняет POST запрос
     * @param {string} url URL для запроса
     * @param {any} [data] Данные для отправки
     * @param {Record<string, string>} [headers] HTTP заголовки
     * @returns {Promise<T>} Ответ от API
     */
    post<T = any>(url: string, data?: any, headers?: Record<string, string>): Promise<T>;
    /**
     * Выполняет PUT запрос
     * @param {string} url URL для запроса
     * @param {any} [data] Данные для отправки
     * @param {Record<string, string>} [headers] HTTP заголовки
     * @returns {Promise<T>} Ответ от API
     */
    put<T = any>(url: string, data?: any, headers?: Record<string, string>): Promise<T>;
    /**
     * Выполняет DELETE запрос
     * @param {string} url URL для запроса
     * @param {Record<string, any>} [params] Query параметры
     * @param {Record<string, string>} [headers] HTTP заголовки
     * @returns {Promise<T>} Ответ от API
     */
    delete<T = any>(url: string, params?: Record<string, any>, headers?: Record<string, string>): Promise<T>;
    /**
     * Выполняет PATCH запрос
     * @param {string} url URL для запроса
     * @param {any} [data] Данные для отправки
     * @param {Record<string, string>} [headers] HTTP заголовки
     * @returns {Promise<T>} Ответ от API
     */
    patch<T = any>(url: string, data?: any, headers?: Record<string, string>): Promise<T>;
    /**
     * Выполняет POST запрос с потоковым ответом
     * @param {string} url URL для запроса
     * @param {any} [data] Данные для отправки
     * @param {Record<string, string>} [headers] HTTP заголовки
     * @returns {Promise<Response>} Объект Response с потоком данных
     */
    postStream(url: string, data?: any, headers?: Record<string, string>): Promise<Response>;
    /**
     * Обрабатывает ошибки от Axios
     * @param {any} error Ошибка от Axios
     * @returns {Error} Обработанная ошибка
     */
    private handleError;
    /**
     * Получает экземпляр Axios для тестирования
     */
    get axiosConfig(): any;
    /**
     * Получает базовый URL API
     * @returns {string} Базовый URL
     */
    getBaseURL(): string;
}
//# sourceMappingURL=http-client.d.ts.map