import { Signal } from "@angular/core"; export type QueryKey = string | readonly [string, ...unknown[]]; export interface HttpQueryError { message: string; status?: number; statusText?: string; cause?: unknown; } export interface HttpQuery { data: Signal; loading: Signal; error: Signal; fetch(force?: boolean): Promise; invalidate(): void; } export type QueryLibraryOptions = { ttl?: number; staleWhileRevalidate?: boolean; }; export type QueryFetchInit = Omit; export type QueryOptions = QueryLibraryOptions & QueryFetchInit; export declare function splitQueryOptions(options?: Omit): { library: Required; fetchInit: QueryFetchInit; }; export type MutationStatus = "idle" | "pending" | "success" | "error"; export interface MutationOptions { mutationFn: (variables: TVariables) => Promise; onMutate?: (variables: TVariables) => TContext | Promise; onSuccess?: (data: TData, variables: TVariables, context: TContext | undefined) => void | Promise; onError?: (error: HttpQueryError, variables: TVariables, context: TContext | undefined) => void | Promise; onFinally?: (data: TData | null, error: HttpQueryError | null, variables: TVariables, context: TContext | undefined) => void | Promise; invalidateKeys?: QueryKey[]; retry?: number; retryDelay?: number | ((attempt: number) => number); } export interface HttpMutation { data: Signal; error: Signal; status: Signal; isIdle: Signal; isPending: Signal; isSuccess: Signal; isError: Signal; mutate(variables: TVariables): Promise; reset(): void; } export interface HttpMutationOptions extends Omit { onSuccess?: () => void; onError?: (error: HttpQueryError) => void; onFinally?: () => void; invalidateKeys?: QueryKey[]; retry?: number; retryDelay?: number | ((attempt: number) => number); }