import { HtmlTagNames, SvgTagNames, VNode, VNodeProps } from '../types';
export declare const h: HyperscriptFn;
export declare type VNodeChildren = string | number | null | VNode;
export declare type HyperscriptChildren = VNodeChildren | ArrayLike<VNodeChildren> | ArrayLike<VNodeChildren | ArrayLike<VNodeChildren>> | ArrayLike<ArrayLike<VNodeChildren>>;
export interface ComponentFn {
    (props: VNodeProps, children: Array<string | null | VNode>): VNode;
}
export declare type ValidTagNames = HtmlTagNames | SvgTagNames | ComponentFn;
export interface HyperscriptFn {
    (tagName: ValidTagNames): VNode;
    (tagName: ValidTagNames, props: VNodeProps<any>): VNode;
    (tagName: ValidTagNames, children: HyperscriptChildren): VNode;
    (tagName: ValidTagNames, props: VNodeProps<any>, children: HyperscriptChildren): VNode;
    <T extends Node, Props extends VNodeProps<Element> = VNodeProps<Element>>(tagName: ValidTagNames): VNode<T, Props>;
    <T extends Node, Props extends VNodeProps<Element> = VNodeProps<Element>>(tagName: ValidTagNames, props: Props): VNode<T>;
    <T extends Node, Props extends VNodeProps<Element> = VNodeProps<Element>>(tagName: ValidTagNames, children: HyperscriptChildren): VNode<T, Props>;
    <T extends Node, Props extends VNodeProps<Element> = VNodeProps<Element>>(tagName: ValidTagNames, props: Props, children: HyperscriptChildren): VNode<T, Props>;
}
