declare global { namespace JSX { interface Element extends VNode { } interface IntrinsicElements { } } } type IntrinsicElements = keyof JSX.IntrinsicElements extends never ? Record : JSX.IntrinsicElements; export type Pragma = (type: any, props: Record | null, ...children: ComponentChildren[]) => JSX.Element; export type PragmaFrag = any; type ComponentChild = VNode | object | string | number | bigint | boolean | null | undefined; export type ComponentChildren = ComponentChild[] | ComponentChild; type PropsWithChildren = TProps & { children?: ComponentChildren; }; type FunctionComponent> = (props: PropsWithChildren, context?: any) => JSX.Element; export type ElementType = { [TKey in keyof IntrinsicElements]: TProps extends IntrinsicElements[TKey] ? TKey : never; }[keyof IntrinsicElements] | FunctionComponent; export type ComponentProps = IntrinsicElements[TComponent]; export type MutableRef = { current: T; }; export type VNode = { type: any; props: TProps & { children: ComponentChildren; }; key: string | null; }; export type Renderer = { /** * The function to create virtual nodes. * * @default preact.createElement */ createElement: Pragma; /** * The component to use to create fragments. * * @default preact.Fragment */ Fragment: PragmaFrag; }; export {};