///
import Yoga from 'yoga-layout-prebuilt';
import { Styles } from './styles';
import { OutputTransformer } from './render-node-to-output';
interface InkNode {
parentNode: DOMElement | null;
yogaNode?: Yoga.YogaNode;
internal_static?: boolean;
style: Styles;
}
export declare const TEXT_NAME = "#text";
export declare type TextName = '#text';
export declare type ElementNames = 'ink-root' | 'ink-box' | 'ink-text' | 'ink-virtual-text';
export declare type NodeNames = ElementNames | TextName;
export declare type DOMElement = {
nodeName: ElementNames;
attributes: {
[key: string]: DOMNodeAttribute;
};
childNodes: DOMNode[];
internal_transform?: OutputTransformer;
isStaticDirty?: boolean;
staticNode?: any;
onRender?: () => void;
onImmediateRender?: () => void;
} & InkNode;
export declare type TextNode = {
nodeName: TextName;
nodeValue: string;
} & InkNode;
export declare type DOMNode = T extends {
nodeName: infer U;
} ? U extends '#text' ? TextNode : DOMElement : never;
export declare type DOMNodeAttribute = boolean | string | number;
export declare const createNode: (nodeName: ElementNames) => DOMElement;
export declare const appendChildNode: (node: DOMElement, childNode: DOMElement) => void;
export declare const insertBeforeNode: (node: DOMElement, newChildNode: DOMNode, beforeChildNode: DOMNode) => void;
export declare const removeChildNode: (node: DOMElement, removeNode: DOMNode) => void;
export declare const setAttribute: (node: DOMElement, key: string, value: DOMNodeAttribute) => void;
export declare const setStyle: (node: DOMNode, style: Styles) => void;
export declare const createTextNode: (text: string) => TextNode;
export declare const setTextNodeValue: (node: TextNode, text: string) => void;
export {};