import { CachePersistor } from 'apollo3-cache-persist';
import type { NormalizedCacheObject, ApolloCache } from '@apollo/client';
export type { CachePersistor } from 'apollo3-cache-persist';
/**
 * Creates new cache persistor, which links localStorage with existing cache
 * @example
 * const loaderPersistor = createPersistor(cache)
 * await loaderPersistor.restore() // cache will be filled with localStorage data
 * await loaderPersistor.persist() // localStorage will be filled with cache data
 */
export declare function createPersistor(cache: ApolloCache<NormalizedCacheObject>): CachePersistor<NormalizedCacheObject>;
type CachePersistorContextType = {
    persistor?: CachePersistor<NormalizedCacheObject>;
};
/**
 * Basic React Context to pass persistor, obtained from useApollo hook down to your application
 * @example
 * const { client, cachePersistor } = useApollo(pageProps)
 *
 * return (
 *      <ApolloProvider client={client}>
 *          <CachePersistorContext.Provider value={{ persistor: cachePersistor }}>
 *              <Component {...pageProps} />
 *          <CachePersistorContext.Provider/>
 *      <ApolloProvider/>
 * )
 */
export declare const CachePersistorContext: import("react").Context<CachePersistorContextType>;
/**
 * Basic react context consumer, which can be used, to obtain persistor in your app logic
 * @example
 * const { persistor } = useCachePersistor()
 * const { data: readingData, loading: readingLoading } = useGetLatestMeterReadingQuery({
 *     variables: {
 *         meterId: meter.id,
 *     },
 *     onError,
 *     skip: !persistor, // Don't fetch data while localStorage is loading (no persistor), since it can be cached there
 * })
 */
export declare function useCachePersistor(): CachePersistorContextType;
