declare global {
    namespace JSX {
        interface Element {
        }
        interface IntrinsicElements {
        }
    }
}
declare type IntrinsicElements = keyof JSX.IntrinsicElements extends never ? Record<string, unknown> : JSX.IntrinsicElements;
export declare type Pragma = (type: any, props: Record<string, any> | null, ...children: ComponentChildren[]) => JSX.Element;
export declare type PragmaFrag = any;
declare type ComponentChild = VNode<any> | object | string | number | boolean | null | undefined;
export declare type ComponentChildren = ComponentChild[] | ComponentChild;
declare type PropsWithChildren<TProps> = TProps & {
    children?: ComponentChildren;
};
declare type FunctionComponent<TProps = {}> = (props: PropsWithChildren<TProps>, context?: any) => JSX.Element;
export declare type ElementType<TProps = any> = {
    [TKey in keyof IntrinsicElements]: TProps extends IntrinsicElements[TKey] ? TKey : never;
}[keyof IntrinsicElements] | FunctionComponent<TProps>;
export declare type ComponentProps<TComponent extends keyof IntrinsicElements> = IntrinsicElements[TComponent];
export declare type VNode<TProps = any> = {
    type: any;
    props: TProps & {
        children: ComponentChildren;
        key?: string | number | null;
    };
};
export declare 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 {};
