import * as React from "react"; import { As, PropsWithAs } from "reakit-utils/types"; declare type RoleHTMLProps = React.HTMLAttributes & React.RefAttributes & { wrapElement?: (element: React.ReactNode) => React.ReactNode; }; declare type Hook = { (options?: O, props?: RoleHTMLProps): RoleHTMLProps; unstable_propsAreEqual?: (prev: O, next: O) => boolean; __keys?: ReadonlyArray; }; declare type Options = { as: T; useHook?: Hook; keys?: ReadonlyArray; memo?: boolean; propsAreEqual?: (prev: O, next: O) => boolean; useCreateElement?: (type: T, props: Omit, "as">, children?: React.ReactNode) => JSX.Element; }; export declare type Component = { (props: PropsWithAs & { as: TT; }): JSX.Element; (props: PropsWithAs): JSX.Element; displayName?: string; unstable_propsAreEqual: (prev: PropsWithAs, next: PropsWithAs) => boolean; __keys?: ReadonlyArray; }; /** * Creates a React component. * * @example * import { createComponent } from "reakit-system"; * * const A = createComponent({ as: "a" }); * * @param options */ export declare function createComponent({ as: type, useHook, memo: shouldMemo, propsAreEqual, keys, useCreateElement, }: Options): Component; export {};