import type { JSX } from '../jsx-runtime.js'; import type { Accessor } from './signals.js'; import type { FocusManager, OnlineManager, Updater as UtilityUpdater, } from './utils.js'; export type QueryKey = readonly unknown[]; export type MutationKey = readonly unknown[]; export type QueryStatus = 'pending' | 'error' | 'success'; export type FetchStatus = 'fetching' | 'paused' | 'idle'; export type MutationStatus = 'idle' | 'pending' | 'error' | 'success'; export type MaybePromise = T | Promise; export type Updater = UtilityUpdater; export interface QueryFunctionContext< TQueryKey extends QueryKey = QueryKey, TPageParam = never, > { client: QueryClient; queryKey: TQueryKey; signal: AbortSignal; meta?: Record; pageParam: TPageParam; direction?: 'forward' | 'backward'; } export type QueryFunction< TData, TQueryKey extends QueryKey = QueryKey, TPageParam = never, > = (context: QueryFunctionContext) => MaybePromise; export interface QueryFilters { queryKey?: QueryKey; exact?: boolean; type?: 'active' | 'inactive' | 'all'; stale?: boolean; fetchStatus?: FetchStatus; predicate?: (query: Query) => boolean; } export interface MutationFilters { mutationKey?: MutationKey; exact?: boolean; status?: MutationStatus; predicate?: (mutation: Mutation) => boolean; } export interface QueryState { data: TData | undefined; dataUpdatedAt: number; error: TError | null; errorUpdatedAt: number; errorUpdateCount: number; failureCount: number; failureReason: TError | null; fetchStatus: FetchStatus; isInvalidated: boolean; status: QueryStatus; } export interface QueryOptions< TQueryFnData = unknown, TError = Error, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, > { queryKey: TQueryKey | Accessor; queryFn?: QueryFunction | typeof skipToken; enabled?: boolean | ((query: Query) => boolean); gcTime?: number; initialData?: TQueryFnData | (() => TQueryFnData | undefined); initialDataUpdatedAt?: number | (() => number | undefined); meta?: Record; networkMode?: 'online' | 'always' | 'offlineFirst'; placeholderData?: | TQueryFnData | ((previousData: TQueryFnData | undefined, query: Query) => TQueryFnData); queryKeyHashFn?: (queryKey: TQueryKey) => string; refetchInterval?: number | false | ((query: Query) => number | false | undefined); refetchIntervalInBackground?: boolean; refetchOnMount?: boolean | 'always'; refetchOnReconnect?: boolean | 'always'; refetchOnWindowFocus?: boolean | 'always'; retry?: boolean | number | ((failureCount: number, error: TError) => boolean); retryDelay?: number | ((failureCount: number, error: TError) => number); select?: (data: TQueryFnData) => TData; staleTime?: number | 'static' | ((query: Query) => number | 'static'); structuralSharing?: boolean; subscribed?: boolean; throwOnError?: boolean | ((error: TError, query: Query) => boolean); } export type QueryHookOptions< TQueryFnData = unknown, TError = Error, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, > = | QueryOptions | Accessor>; export interface RefetchOptions { cancelRefetch?: boolean; throwOnError?: boolean; } export interface QueryResult { data: Accessor; dataUpdatedAt: Accessor; error: Accessor; errorUpdateCount: Accessor; errorUpdatedAt: Accessor; failureCount: Accessor; failureReason: Accessor; fetchStatus: Accessor; isEnabled: Accessor; isError: Accessor; isFetched: Accessor; isFetchedAfterMount: Accessor; isFetching: Accessor; isInitialLoading: Accessor; isLoading: Accessor; isLoadingError: Accessor; isPaused: Accessor; isPending: Accessor; isPlaceholderData: Accessor; isRefetchError: Accessor; isRefetching: Accessor; isStale: Accessor; isSuccess: Accessor; promise: Accessor>; refetch: (options?: RefetchOptions) => Promise; status: Accessor; } export interface DefinedQueryResult extends QueryResult { data: Accessor; } export interface InfiniteData { pages: TData[]; pageParams: TPageParam[]; } export interface InfiniteQueryOptions< TQueryFnData = unknown, TError = Error, TData = InfiniteData, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown, > extends Omit, 'queryFn' | 'select'> { queryFn: QueryFunction; initialPageParam: TPageParam; getNextPageParam?: ( lastPage: TQueryFnData, allPages: TQueryFnData[], lastPageParam: TPageParam, allPageParams: TPageParam[] ) => TPageParam | null | undefined; getPreviousPageParam?: ( firstPage: TQueryFnData, allPages: TQueryFnData[], firstPageParam: TPageParam, allPageParams: TPageParam[] ) => TPageParam | null | undefined; maxPages?: number; select?: (data: InfiniteData) => TData; } export interface InfiniteQueryResult extends QueryResult { fetchNextPage: (options?: { pageParam?: unknown }) => Promise; fetchPreviousPage: (options?: { pageParam?: unknown }) => Promise; hasNextPage: Accessor; hasPreviousPage: Accessor; isFetchNextPageError: Accessor; isFetchingNextPage: Accessor; isFetchPreviousPageError: Accessor; isFetchingPreviousPage: Accessor; } export interface MutationFunctionContext { client: QueryClient; meta?: Record; mutationKey?: MutationKey; } export interface MutationOptions< TData = unknown, TError = Error, TVariables = void, TOnMutateResult = unknown, > { mutationFn?: ( variables: TVariables, context: MutationFunctionContext ) => MaybePromise; mutationKey?: MutationKey; gcTime?: number; meta?: Record; networkMode?: 'online' | 'always' | 'offlineFirst'; onMutate?: ( variables: TVariables, context: { client: QueryClient } ) => MaybePromise; onSuccess?: ( data: TData, variables: TVariables, onMutateResult: TOnMutateResult, context: { client: QueryClient } ) => MaybePromise; onError?: ( error: TError, variables: TVariables, onMutateResult: TOnMutateResult | undefined, context: { client: QueryClient } ) => MaybePromise; onSettled?: ( data: TData | undefined, error: TError | null, variables: TVariables, onMutateResult: TOnMutateResult | undefined, context: { client: QueryClient } ) => MaybePromise; retry?: boolean | number | ((failureCount: number, error: TError) => boolean); retryDelay?: number | ((failureCount: number, error: TError) => number); scope?: { id: string }; throwOnError?: boolean | ((error: TError) => boolean); } export type MutateOptions< TData = unknown, TError = Error, TVariables = void, TOnMutateResult = unknown, > = Pick< MutationOptions, 'onSuccess' | 'onError' | 'onSettled' >; export interface MutationResult< TData = unknown, TError = Error, TVariables = void, TOnMutateResult = unknown, > { context: Accessor; data: Accessor; error: Accessor; failureCount: Accessor; failureReason: Accessor; isError: Accessor; isIdle: Accessor; isPaused: Accessor; isPending: Accessor; isSuccess: Accessor; mutate: (variables: TVariables, options?: MutateOptions) => void; mutateAsync: (variables: TVariables, options?: MutateOptions) => Promise; reset: () => void; status: Accessor; submittedAt: Accessor; variables: Accessor; } export class Query { queryKey: QueryKey; queryHash: string; state: QueryState; options: QueryOptions; promise: Promise | null; observers: Set; isStale(): boolean; setData(updater: Updater, options?: { updatedAt?: number; structuralSharing?: boolean }): TData; fetch(options?: QueryOptions, fetchOptions?: RefetchOptions): Promise; cancel(options?: { silent?: boolean }): Promise; reset(): void; } export class QueryCache { constructor(config?: Record); build(client: QueryClient, options: QueryOptions): Query; find(filters: QueryFilters | QueryKey): Query | undefined; findAll(filters?: QueryFilters): Query[]; get(queryHash: string): Query | undefined; getAll(): Query[]; remove(query: Query): void; clear(): void; subscribe(listener: (event: { type: string; query: Query }) => void): () => void; } export class Mutation { mutationId: number; mutationHash: string; options: MutationOptions; state: { context: unknown; data: TData | undefined; error: TError | null; failureCount: number; failureReason: TError | null; isPaused: boolean; status: MutationStatus; submittedAt: number; variables: TVariables | undefined; }; execute(variables: TVariables, options?: MutateOptions): Promise; reset(): void; } export class MutationCache { constructor(config?: Record); build(client: QueryClient, options: MutationOptions): Mutation; find(filters?: MutationFilters): Mutation | undefined; findAll(filters?: MutationFilters): Mutation[]; remove(mutation: Mutation): void; clear(): void; subscribe(listener: (event: { type: string; mutation: Mutation }) => void): () => void; } export interface QueryClientConfig { queryCache?: QueryCache; mutationCache?: MutationCache; defaultOptions?: { queries?: Partial; mutations?: Partial; }; } export class QueryClient { constructor(config?: QueryClientConfig); mount(): void; unmount(): void; dispose(): void; clear(): void; getQueryCache(): QueryCache; getMutationCache(): MutationCache; getDefaultOptions(): QueryClientConfig['defaultOptions']; setDefaultOptions(options: QueryClientConfig['defaultOptions']): void; setQueryDefaults(queryKey: QueryKey, options: Partial): void; getQueryDefaults(queryKey: QueryKey): Partial; setMutationDefaults(mutationKey: MutationKey, options: Partial): void; getMutationDefaults(mutationKey: MutationKey): Partial; fetchQuery(options: QueryOptions): Promise; prefetchQuery(options: QueryOptions): Promise; ensureQueryData(options: QueryOptions & { revalidateIfStale?: boolean }): Promise; fetchInfiniteQuery( options: InfiniteQueryOptions, QueryKey, TPageParam> ): Promise>; prefetchInfiniteQuery(options: InfiniteQueryOptions): Promise; getQueryData(queryKey: QueryKey): TData | undefined; getQueryState(queryKey: QueryKey): QueryState | undefined; getQueriesData(filters?: QueryFilters): Array<[QueryKey, TData | undefined]>; setQueryData(queryKey: QueryKey, updater: Updater, options?: object): TData; setQueriesData(filters: QueryFilters, updater: Updater, options?: object): Array<[QueryKey, TData]>; invalidateQueries(filters?: QueryFilters, options?: { refetchType?: QueryFilters['type'] | 'none' }): Promise; refetchQueries(filters?: QueryFilters, options?: RefetchOptions): Promise; cancelQueries(filters?: QueryFilters, options?: { silent?: boolean }): Promise; resetQueries(filters?: QueryFilters, options?: RefetchOptions & { refetchType?: 'none' }): Promise; removeQueries(filters?: QueryFilters): void; isFetching(filters?: QueryFilters): number; isMutating(filters?: MutationFilters): number; resumePausedMutations(): Promise; } export interface QueryClientProviderProps { client: QueryClient; children?: JSX.Element | ((client: QueryClient) => JSX.Element); } export interface QueryErrorResetBoundaryValue { clear(): void; isReset: Accessor; reset(): void; } export declare function QueryClientProvider(props: QueryClientProviderProps): any; export declare function QueryErrorResetBoundary(props: { client?: QueryClient; children?: JSX.Element | ((value: QueryErrorResetBoundaryValue) => JSX.Element); }): any; export declare function HydrationBoundary(props: { client?: QueryClient; state: DehydratedState; options?: object; children?: JSX.Element; }): any; export declare function IsRestoringProvider(props: { value: boolean | Accessor; children?: JSX.Element; }): any; export declare function useQuery< TQueryFnData = unknown, TError = Error, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, >(options: QueryHookOptions, client?: QueryClient): QueryResult; export declare function useSuspenseQuery< TQueryFnData = unknown, TError = Error, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, >(options: QueryHookOptions, client?: QueryClient): DefinedQueryResult; export declare function useInfiniteQuery< TQueryFnData = unknown, TError = Error, TData = InfiniteData, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown, >(options: InfiniteQueryOptions, client?: QueryClient): InfiniteQueryResult; export declare function useSuspenseInfiniteQuery< TQueryFnData = unknown, TError = Error, TData = InfiniteData, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown, >(options: InfiniteQueryOptions, client?: QueryClient): InfiniteQueryResult & { data: Accessor }; export declare function useQueries( options: { queries: T | Accessor; combine?: (results: QueryResult[]) => unknown }, client?: QueryClient ): QueryResult[] | Accessor; export declare function useSuspenseQueries( options: { queries: T | Accessor; combine?: (results: DefinedQueryResult[]) => unknown }, client?: QueryClient ): DefinedQueryResult[] | Accessor; export declare function useMutation< TData = unknown, TError = Error, TVariables = void, TOnMutateResult = unknown, >(options: MutationOptions, client?: QueryClient): MutationResult; export declare function useMutationState(options?: { filters?: MutationFilters; select?: (mutation: Mutation) => TResult; }, client?: QueryClient): Accessor; export declare function useIsFetching(filters?: QueryFilters, client?: QueryClient): Accessor; export declare function useIsMutating(filters?: MutationFilters, client?: QueryClient): Accessor; export declare function usePrefetchQuery(options: QueryHookOptions, client?: QueryClient): void; export declare function usePrefetchInfiniteQuery(options: InfiniteQueryOptions, client?: QueryClient): void; export declare function useQueryClient(client?: QueryClient): QueryClient; export declare function useQueryErrorResetBoundary(): QueryErrorResetBoundaryValue; export declare function useIsRestoring(): Accessor; export interface DehydratedState { queries: Array<{ queryHash: string; queryKey: QueryKey; state: QueryState; meta?: object }>; mutations: Array<{ mutationKey?: MutationKey; state: object; meta?: object }>; } export declare function dehydrate(client: QueryClient, options?: object): DehydratedState; export declare function hydrate(client: QueryClient, state: DehydratedState, options?: object): void; export declare function hashKey(queryKey: unknown): string; export declare function partialMatchKey(candidate: unknown, filter: unknown): boolean; export declare function replaceEqualDeep(previous: T, next: T): T; export declare function queryOptions(options: T): T; export declare function infiniteQueryOptions(options: T): T; export declare function mutationOptions(options: T): T; export declare function keepPreviousData(previousData: T): T; export declare const skipToken: unique symbol; export declare function defaultShouldDehydrateQuery(query: Query): boolean; export declare function defaultShouldDehydrateMutation(mutation: Mutation): boolean; export interface EnvironmentManager { subscribe(listener: (value: boolean) => void): () => void; setFocused?(focused: boolean | undefined): void; setOnline?(online: boolean): void; isFocused?(): boolean; isOnline?(): boolean; } export declare const focusManager: FocusManager; export declare const onlineManager: OnlineManager; export declare const QueryClientContext: any; export declare const QueryErrorResetBoundaryContext: any; export declare const IsRestoringContext: any;