declare global { interface Window { NodeList: typeof NodeList; Node: typeof Node; } } type Attrs = { [attrName: string]: unknown; style?: CSSStyleDeclaration; }; type Child = Node | string | number | null | undefined | false; type ChildOrChildren = Child | Array | NodeList; type HyperScriptDOM = { (tagName: T, attrs?: Attrs | null, ...children: Array): HTMLElementTagNameMap[T]; make: EMaker; }; type Windoid = Pick; declare type EMaker = (window: Windoid) => HyperScriptDOM; /** Hyperscript (JSX friendly) function that spits out DOM nodes. */ declare const E: HyperScriptDOM; export default E;