import { Observable, Subscription } from './observable'; import { Props } from './props'; export declare enum VNodeType { Element = 0, SVG = 1, Comment = 2, Text = 3, Fragment = 4, Sink = 5, } export interface VNode { readonly vnodeType: VNodeType; readonly type: string; props: Props; children: VNode[]; node?: Node; } export declare class VElementNode implements VNode { vnodeType: VNodeType; type: string; props: Props; children: VNode[]; node?: HTMLElement; subscriptions: Subscription[]; constructor(type: string, props: Props, children: VNode[]); } export declare class VSVGNode implements VNode { vnodeType: VNodeType; type: string; props: Props; children: VNode[]; node?: SVGElement; subscriptions: Subscription[]; constructor(type: string, props: Props, children: VNode[]); } export declare class VSinkNode implements VNode { vnodeType: VNodeType; type: 'sink'; props: Props; children: VNode[]; node?: Comment; source: Observable; subscriptions: Subscription[]; constructor(source: Observable); } export declare class VTextNode implements VNode { vnodeType: VNodeType; type: 'text'; props: {}; children: never[]; value: string; node?: Text; constructor(text: string); } export declare class VCommentNode implements VNode { vnodeType: VNodeType; type: 'comment'; props: {}; children: never[]; node?: Comment; } export declare class VFragmentNode implements VNode { vnodeType: VNodeType; type: 'fragment'; props: {}; children: VNode[]; node?: DocumentFragment; constructor(children: VNode[]); } export declare function isVNode(vnode: any): vnode is VNode; export declare function isVElementNode(vnode: any): vnode is VElementNode; export declare function isVSVGNode(vnode: any): vnode is VSVGNode; export declare function isVSinkNode(vnode: any): vnode is VSinkNode; export declare function isVTextNode(vnode: any): vnode is VTextNode; export declare function isVCommentNode(vnode: any): vnode is VCommentNode; export declare function isVFragmentNode(vnode: any): vnode is VFragmentNode; export declare function isReusedNode(x: VNode): boolean; export declare function toReusedNode(vnode: T): T; export declare function getKey(vnode: VNode): string | undefined; export declare function isSameKey(a: VNode, b: VNode): boolean; export declare function hasSubscriptions(vnode: VNode): vnode is VNode & { subscriptions: Subscription[]; }; export declare function toVNode(x: any): VNode;