import * as react_jsx_runtime from 'react/jsx-runtime';
import * as react from 'react';

declare function createStrictContext<T>(defaultValue?: T | null): {
    useContext: () => T & ({} | undefined);
    Provider: ({ value, children }: react.PropsWithChildren<{
        value: T;
    }>) => react_jsx_runtime.JSX.Element;
};
/**
 * @beta This API is in beta and may change at any time
 * @private
 */
interface StoreContextValue<T> {
    set: (next: T) => void;
    get: () => T;
    subscribe: (listener: () => void) => () => void;
}
/**
 * @beta This API is in beta and may change at any time
 * @private
 */
declare function createStoreContext<T>(): {
    Provider: ({ value, children }: react.PropsWithChildren<{
        value: T;
    }>) => react_jsx_runtime.JSX.Element;
    useSelectContext: <Next = T>(selector?: (value: T) => Next, dependencies?: react.DependencyList) => Next;
};
declare function useCacheSelector(): <Prev extends {}, Out extends {} | null>(compute: (prev: Prev) => Out) => (prev: Prev) => Out;

export { type StoreContextValue, createStoreContext, createStrictContext, useCacheSelector };
