/**
 * Модуль для отправки HTTP-запросов.
 * Предоставляет функционал для работы с различными типами запросов и ответов
 */
import { IGetParams } from '../../utils';
import { AppContext } from '../../core';
import { IRequestSend } from '../interfaces/IRequest';
/**
 * Класс для отправки HTTP-запросов к API различных платформ. Используется внутри адаптеров для взаимодействия с внешними сервисами.
 * Поддерживает различные типы запросов, заголовки и отправку файлов
 *
 * @class Request
 */
export declare class Request {
    #private;
    /** Заголовок для отправки form-data */
    static readonly HEADER_FORM_DATA: Record<string, string>;
    /** Заголовок для JSON контента */
    static readonly HEADER_JSON: Record<string, string>;
    /** URL для отправки запроса */
    url: string | null;
    /** GET-параметры запроса */
    get: IGetParams | null;
    /** POST-параметры запроса */
    post: Record<string, unknown> | null | FormData;
    /** POST-параметры запроса в виде строки */
    postInString: string | null;
    /** HTTP-заголовки запроса */
    header: HeadersInit | null;
    /** Прикрепленный файл (URL, путь или содержимое) */
    attach: string | null;
    /**
     * Тип передаваемого файла
     * true - передается содержимое файла
     * false - передается путь к файлу
     * @defaultValue false
     */
    isAttachContent: boolean;
    /**
     * Имя параметра при отправке файла
     * @defaultValue file
     */
    attachName: string;
    /** Кастомный HTTP-метод (DELETE и т.д.) */
    customRequest: string | null;
    /** Максимальное время ожидания ответа (мс) */
    maxTimeQuery: number | null;
    /**
     * Преобразование ответа в JSON
     * true - ответ будет преобразован в JSON
     * false - ответ будет возвращен как текст
     * @defaultValue true
     */
    isConvertJson: boolean;
    /**
     * Флаг, указывающий, что ожидается бинарный ответ
     */
    isBinaryResponse: boolean;
    /**
     * Создает новый экземпляр Request.
     * Инициализирует все поля значениями по умолчанию
     */
    constructor(appContext: AppContext);
    /**
     * Устанавливает контекст приложения
     * @param appContext
     */
    setAppContext(appContext: AppContext): void;
    /**
     * Отправляет HTTP-запрос
     *
     * @param url - URL для отправки запроса (если не указан, используется this.url)
     * @returns  Результат выполнения запроса
     */
    send<T>(url?: string | null): Promise<IRequestSend<T>>;
    /**
     * Формирует URL с GET-параметрами
     *
     * @returns {string} Полный URL с параметрами
     */
    protected _getUrl(): string;
    /**
     * Формирует параметры для http запроса
     *
     * @returns {RequestInit|undefined} Параметры запроса
     */
    protected _getOptions(): Promise<RequestInit | undefined>;
    /**
     * Добавляет файл в FormData
     * @param formData
     * @param filePath
     * @param fileName
     */
    addAttachFile(formData: FormData, filePath: string, fileName?: string): Promise<void>;
    /**
     * Создает FormData для отправки файла
     *
     * @param {string} filePath - Путь к файлу
     * @param {string} [fileName] - Имя файла
     * @returns {FormData|null} FormData с файлом или null в случае ошибки
     */
    getAttachFile(filePath: string, fileName?: string): Promise<FormData | null>;
    /**
     * Возвращает текст последней ошибки
     *
     * @returns {string|null} Текст ошибки или null
     */
    getError(): Error | string | null;
}
