import { FetchBaseQueryArgs, RequestDefinition } from '../types/api.interface';
import { QueryOptions, QueryResult } from '../types/query.interface';
/**
 * Собирает абсолютный URL запроса из `path` и `baseUrl`.
 *
 * Важно: сохраняется поведение конкатенации (`baseUrl + path`), а не
 * резолвинг через `new URL(path, baseUrl)`. Резолвинг отбросил бы префикс
 * базы для абсолютных путей (например, `new URL('/api/x', 'http://host/_api')`
 * даёт `http://host/api/x`, теряя `/_api`), что сломало бы проксирование.
 *
 * Покрываемые кейсы:
 *  - абсолютный `path` (`http(s)://...`) → используется как есть;
 *  - относительный `path` + абсолютный `baseUrl` → конкатенация даёт абсолютный URL;
 *  - относительный `path` + относительный `baseUrl` (браузер, напр. `/_api`) →
 *    результат резолвится относительно `window.location.origin`, чтобы
 *    `new URL(...)` не падал с `Invalid URL` (same-origin сохраняется).
 *
 * @param path Путь запроса
 * @param baseUrl Базовый URL клиента (может быть абсолютным или относительным)
 * @returns Готовый объект URL
 */
export declare function buildRequestUrl(path: string, baseUrl: string): URL;
/**
 * Создает базовый fetch-клиент для запросов с поддержкой файлов
 * @param options Настройки базового клиента
 * @returns Функция для выполнения запросов
 */
export declare function fetchBaseQuery(options: Omit<FetchBaseQueryArgs, 'prepareHeaders'>): <RequestResult, RequestParams extends Record<string, any>, E extends Error = Error>(args: RequestDefinition<RequestParams>, queryOptions: QueryOptions | undefined, headers: Headers) => Promise<QueryResult<RequestResult, E>>;
