import { QueryKey, QueryState, QueryFilters, QueryFunctionContext, Query, QueryClient } from '@tanstack/query-core'; interface PersistedQuery { buster: string; queryHash: string; queryKey: QueryKey; state: QueryState; } type MaybePromise = T | Promise; interface AsyncStorage { getItem: (key: string) => MaybePromise; setItem: (key: string, value: TStorageValue) => MaybePromise; removeItem: (key: string) => MaybePromise; entries?: () => MaybePromise>; } interface StoragePersisterOptions { /** The storage client used for setting and retrieving items from cache. * For SSR pass in `undefined`. */ storage: AsyncStorage | undefined | null; /** * How to serialize the data to storage. * @default `JSON.stringify` */ serialize?: (persistedQuery: PersistedQuery) => MaybePromise; /** * How to deserialize the data from storage. * @default `JSON.parse` */ deserialize?: (cachedString: TStorageValue) => MaybePromise; /** * A unique string that can be used to forcefully invalidate existing caches, * if they do not share the same buster string */ buster?: string; /** * The max-allowed age of the cache in milliseconds. * If a persisted cache is found that is older than this * time, it will be discarded * @default 24 hours */ maxAge?: number; /** * Prefix to be used for storage key. * Storage key is a combination of prefix and query hash in a form of `prefix-queryHash`. * @default 'tanstack-query' */ prefix?: string; /** * Filters to narrow down which Queries should be persisted. */ filters?: QueryFilters; } declare const PERSISTER_KEY_PREFIX = "tanstack-query"; /** * Warning: experimental feature. * This utility function enables fine-grained query persistence. * Simple add it as a `persister` parameter to `useQuery` or `defaultOptions` on `queryClient`. * * ``` * useQuery({ queryKey: ['myKey'], queryFn: fetcher, persister: createPersister({ storage: localStorage, }), }) ``` */ declare function experimental_createQueryPersister({ storage, buster, maxAge, serialize, deserialize, prefix, filters, }: StoragePersisterOptions): { persisterFn: (queryFn: (context: QueryFunctionContext) => T | Promise, ctx: QueryFunctionContext, query: Query) => Promise; persistQuery: (query: Query) => Promise; persistQueryByKey: (queryKey: QueryKey, queryClient: QueryClient) => Promise; retrieveQuery: (queryHash: string, afterRestoreMacroTask?: (persistedQuery: PersistedQuery) => void) => Promise; persisterGc: () => Promise; restoreQueries: (queryClient: QueryClient, filters?: Pick) => Promise; }; export { type AsyncStorage, type MaybePromise, PERSISTER_KEY_PREFIX, type PersistedQuery, type StoragePersisterOptions, experimental_createQueryPersister };