import type { Endpoint, RequestStatus } from '../../api/types/endpoint.interface';
import type { QueryOptions } from '../../api/types/query.interface';
export interface UseApiQueryOptions extends QueryOptions {
    /** Если `false` — запрос не выполняется (lazy). По умолчанию `true`. */
    enabled?: boolean;
    /**
     * Авто-рефетч активного запроса при инвалидации кэша по тегам эндпоинта
     * (после мутаций соседних эндпоинтов с `invalidatesTags`). По умолчанию `true`.
     */
    refetchOnInvalidate?: boolean;
}
export interface UseApiQueryResult<TData> {
    /** Данные ответа (или из кэша) */
    data: TData | undefined;
    /** Ошибка запроса */
    error: Error | undefined;
    /** Текущий статус запроса */
    status: RequestStatus;
    /** Идёт загрузка */
    isLoading: boolean;
    /** Запрос завершился ошибкой */
    isError: boolean;
    /** Запрос завершился успехом */
    isSuccess: boolean;
    /** Данные пришли из кэша (а не из сети) */
    fromCache: boolean;
    /** Принудительно перезапросить (минуя кэш-«свежесть» через новый request) */
    refetch: () => void;
}
/**
 * Хук для выполнения GET-запросов через эндпоинт ApiClient в стиле React Query.
 *
 * Тонкая обёртка над `endpoint.request(params).subscribe(...)`: дедупликация,
 * кэш по тегам, отмена и retry уже реализованы в самом эндпоинте. Хук добавляет
 * React-слой: подписку, стабильный ключ параметров, `enabled`/`refetch`,
 * SSR-fast-path (синхронное чтение кэша на первом рендере без вспышки loading)
 * и авто-рефетч при инвалидации кэша.
 *
 * @example
 * const { data, isLoading, error, refetch } = useApiQuery(endpoints.getUser, { id })
 */
export declare function useApiQuery<TParams extends Record<string, any>, TData>(endpoint: Endpoint<TParams, TData>, params: TParams, options?: UseApiQueryOptions): UseApiQueryResult<TData>;
