export type CurriedCreateTagFunction = ( tagName: string ) => HyperScriptFunction export interface CurriedCreateTagsFunction { (tagNames: T[]): HyperScriptHelperNamespace (tagNames: T[], rootTag: T): HyperScriptHelperRootTag } export interface HyperScriptFunction { (): Node (text: string): Node (data: NodeData): Node (children: Node[]): Node (selectorOrData: string | NodeData, text: string): Node (selectorOrData: string | NodeData, children: Node[]): Node (selector: string, data: NodeData): Node (selector: string, data: NodeData, text: string): Node (selector: string, data: NodeData, children: Node[]): Node (selector: string, data?: NodeData, ...children: Node[]): Node } export type HyperScriptHelperNamespace = { [K in T]: HyperScriptFunction } export type HyperScriptHelperRootTag = HyperScriptFunction< NodeData, Node > & HyperScriptHelperNamespace