import { type MutationObserverOptions, type MutationObserverResult, type QueryClient, type QueryObserverOptions, type QueryObserverResult } from "@tanstack/query-core";
/**
* React hook for a cached query, backed by TanStack Query Core.
*
* Returns TanStack's native {@link QueryObserverResult}
* (`{ data, error, isPending, isFetching, isSuccess, isError, status, fetchStatus, refetch, … }`),
* with stale-while-revalidate, focus/reconnect refetch, retries and garbage
* collection handled by the engine.
*
* `client` is captured for the component's lifetime — pass a stable instance.
*
* @param options - TanStack query options (`queryKey`, `queryFn`, `staleTime`, …).
* @param client - Optional {@link QueryClient} (defaults to the shared singleton).
* @returns The TanStack {@link QueryObserverResult}.
*
* @example
* ```tsx
* import { useQuery, useSafeQueryFn } from "katanakit-js/adapters/react";
* import { useGetApi } from "katanakit-js";
*
* function Pokemon({ id }: { id: number }) {
* const { data, isPending, isError, error } = useQuery({
* queryKey: ["pokemon", id],
* queryFn: useSafeQueryFn(() => useGetApi("pokeapi", "pokemonById", { params: { id } })),
* });
* if (isPending) return
Loading…
;
* if (isError) return {error.message}
;
* return {data?.name}
;
* }
* ```
*/
export declare function useQuery(options: QueryObserverOptions, client?: QueryClient): QueryObserverResult;
/**
* React hook for a mutation, backed by TanStack Query Core.
*
* Returns TanStack's native {@link MutationObserverResult}
* (`{ data, error, variables, isPending, isError, isSuccess, status, mutate, reset }`).
*
* @param options - TanStack mutation options (`mutationFn`, `onSuccess`, …).
* @param client - Optional {@link QueryClient} (defaults to the shared singleton).
* @returns The TanStack {@link MutationObserverResult}.
*
* @example
* ```tsx
* import { useMutation, useQueryClient } from "katanakit-js/adapters/react";
* import { usePost } from "katanakit-js";
*
* function CreateUser() {
* const qc = useQueryClient();
* const { mutate, isPending } = useMutation({
* mutationFn: (name: string) => usePost("api", "createUser", { name }),
* onSuccess: () => qc.invalidateQueries({ queryKey: ["users"] }),
* });
* return ;
* }
* ```
*/
export declare function useMutation(options: MutationObserverOptions, client?: QueryClient): MutationObserverResult;
//# sourceMappingURL=query.d.ts.map