import { Nil, Nilable } from "./lang.js"; export declare type AnyNode = AnySyncNode | AnyAsyncNode; export declare type AnyAsyncNode = Promise; export declare type AnySyncNode = TextNode | Elem | Frag | Nil | false; export declare class TextNode extends String { } export declare function F(...children: AnyNode[]): Frag; export declare class Frag { #private; constructor(); get children(): Nilable; withText(text: string): this; addText(text: string): void; withChildren(nodes: AnyNode[]): this; withChild(node: AnyNode): this; addChild(node: AnyNode): void; } export declare function E(tagName: string, attrs: ElemAttrs, ...children: AnyNode[]): Elem; export declare type ElemAttrs = Record; export declare class Elem extends Frag { #private; constructor(tagName: string); get tagName(): string; get attrs(): Record; withAttrs(attrs: Record): Elem; withAttr(name: string, value: unknown): Elem; addAttr(name: string, value: unknown): void; addChild(node: AnySyncNode): void; }