import type { ReactElement, ReactNode, MouseEvent, FocusEvent, ChangeEvent, RefObject, FC, KeyboardEvent, Context, RefCallback } from "react";
/** To do: add docs */
/** @monorepo-internal */
export type ElementNode = ReactNode;
/** @monorepo-internal */
export type Element<P = object> = ReactElement<P>;
/** @monorepo-internal */
export type FunctionComponent<P = object> = FC<P>;
/** @monorepo-internal */
export type ContextType<C> = C extends Context<infer Value> ? Value : never;
/** @monorepo-internal */
export type MouseEventType<T extends HTMLElement = HTMLElement> = MouseEvent<T>;
/** @monorepo-internal */
export type FocusEventType<T extends HTMLElement = HTMLElement> = FocusEvent<T>;
/** @monorepo-internal */
export type ChangeEventType<T extends HTMLElement = HTMLElement> = ChangeEvent<T>;
/** @monorepo-internal */
export type RefObjectType<T = HTMLElement> = RefObject<T | null>;
/** @monorepo-internal */
export type KeyboardEventType<T extends HTMLElement = HTMLElement> = KeyboardEvent<T>;
/** @monorepo-internal */
export type RefCallbackType<T = HTMLElement> = RefCallback<T>;
