import { type Signal } from "@angular/core"; import { type FetchStatus, type MutationObserverOptions, type MutationStatus, type QueryClient, type QueryObserverOptions, type QueryObserverResult, type QueryStatus, type RefetchOptions } from "@tanstack/query-core"; /** Signal-based query result returned by {@link useQuery}. */ export interface AngularQueryResult { readonly data: Signal; readonly error: Signal; readonly isPending: Signal; readonly isFetching: Signal; readonly isLoading: Signal; readonly isSuccess: Signal; readonly isError: Signal; readonly isStale: Signal; readonly status: Signal; readonly fetchStatus: Signal; readonly refetch: (options?: RefetchOptions) => Promise>; } /** Signal-based mutation result returned by {@link useMutation}. */ export interface AngularMutationResult { readonly data: Signal; readonly error: Signal; readonly variables: Signal; readonly isPending: Signal; readonly isSuccess: Signal; readonly isError: Signal; readonly isIdle: Signal; readonly status: Signal; readonly mutate: (variables: TVariables) => Promise; readonly reset: () => void; } /** * Angular signal factory for a cached query, backed by TanStack Query Core. * * Returns one signal per field — `query.data()`, `query.isPending()`, * `query.isError()`, `query.status()`, etc. * * Must be called within an injection context (so it auto-cleans via `DestroyRef`). * * @param options - TanStack query options (`queryKey`, `queryFn`, `staleTime`, …). * @param client - Optional {@link QueryClient} (defaults to the shared singleton). * @returns An {@link AngularQueryResult} of signals. * * @example * ```ts * import { Component } from "@angular/core"; * import { useQuery, useSafeQueryFn } from "katanakit-js/adapters/angular"; * import { useGetApi } from "katanakit-js"; * * @Component({ * selector: "app-pokemon", * template: `@if (query.isPending()) { Loading… } @else { {{ query.data()?.name }} }`, * }) * export class PokemonComponent { * readonly query = useQuery({ * queryKey: ["pokemon", 25], * queryFn: useSafeQueryFn(() => useGetApi("pokeapi", "pokemonById", { params: { id: 25 } })), * }); * } * ``` */ export declare function useQuery(options: QueryObserverOptions, client?: QueryClient): AngularQueryResult; /** * Angular signal factory for a mutation, backed by TanStack Query Core. * * Must be called within an injection context (so it auto-cleans via `DestroyRef`). * * @param options - TanStack mutation options (`mutationFn`, `onSuccess`, …). * @param client - Optional {@link QueryClient} (defaults to the shared singleton). * @returns An {@link AngularMutationResult} of signals. * * @example * ```ts * import { Component } from "@angular/core"; * import { useMutation, useQueryClient } from "katanakit-js/adapters/angular"; * import { usePost } from "katanakit-js"; * * @Component({ * selector: "app-create", * template: ``, * }) * export class CreateUserComponent { * private readonly qc = useQueryClient(); * readonly mutation = useMutation({ * mutationFn: (name: string) => usePost("api", "createUser", { name }), * onSuccess: () => this.qc.invalidateQueries({ queryKey: ["users"] }), * }); * } * ``` */ export declare function useMutation(options: MutationObserverOptions, client?: QueryClient): AngularMutationResult; //# sourceMappingURL=query.d.ts.map