import type { AnyObject, EmptyObject } from "@ariakit/core/utils/types"; import * as React from "react"; import type { Store } from "./store.ts"; import type { Hook, HTMLProps, Options, Props } from "./types.ts"; /** * The same as `React.forwardRef` but passes the `ref` as a prop and returns a * component with the same generic type. */ export declare function forwardRef>(render: T): T; /** * The same as `React.memo` but returns a component with the same generic type. */ export declare function memo>(Component: T, propsAreEqual?: (prevProps: Readonly>, nextProps: Readonly>) => boolean): T; /** * Creates a React element that supports the `render` and `wrapElement` props. */ export declare function createElement(Type: React.ElementType, props: Props): React.ReactElement>; /** * Creates a component hook that accepts props and returns props so they can be * passed to a React element. */ export declare function createHook(useProps: (props: Props) => HTMLProps): Hook; type StoreProvider = React.ComponentType<{ value: T | undefined; children?: React.ReactNode; }>; /** * Creates an Ariakit store context with hooks and provider components. */ export declare function createStoreContext(providers?: StoreProvider[], scopedProviders?: StoreProvider[]): { context: React.Context; scopedContext: React.Context; useContext: () => T | undefined; useScopedContext: (onlyScoped?: boolean) => T | undefined; useProviderContext: () => T | undefined; ContextProvider: (props: React.ComponentPropsWithoutRef>) => import("react/jsx-runtime").JSX.Element; ScopedContextProvider: (props: React.ComponentPropsWithoutRef>) => import("react/jsx-runtime").JSX.Element; }; export {};