import { Vue } from "./vue"; export type VNodeChildren = VNodeChildrenArrayContents | string; export interface VNodeChildrenArrayContents { [x: number]: VNode | string | VNodeChildren; } export interface VNode { tag?: string; data?: VNodeData; children?: VNode[]; text?: string; elm?: Node; ns?: string; context?: Vue; key?: string | number; componentOptions?: VNodeComponentOptions; child?: Vue; parent?: VNode; raw?: boolean; isStatic?: boolean; isRootInsert: boolean; isComment: boolean; } export interface VNodeComponentOptions { Ctor: typeof Vue; propsData?: Object; listeners?: Object; children?: VNodeChildren; tag?: string; } export interface VNodeData { key?: string | number; slot?: string; ref?: string; tag?: string; staticClass?: string; class?: any; staticStyle?: { [key: string]: any }; style?: Object[] | Object; props?: { [key: string]: any }; attrs?: { [key: string]: any }; domProps?: { [key: string]: any }; hook?: { [key: string]: Function }; on?: { [key: string]: Function | Function[] }; nativeOn?: { [key: string]: Function | Function[] }; transition?: Object; show?: boolean; inlineTemplate?: { render: Function; staticRenderFns: Function[]; }; directives?: VNodeDirective[]; keepAlive?: boolean; } export interface VNodeDirective { readonly name: string; readonly value: any; readonly oldValue: any; readonly expression: any; readonly arg: string; readonly modifiers: { [key: string]: boolean }; }