declare type VNodeChildren = Array | string declare type VNodeComponentOptions = { Ctor: Class; propsData: ?Object; listeners: ?Object; children: ?VNodeChildren; tag?: string; } declare type MountedComponentVNode = { componentOptions: VNodeComponentOptions; child: Component; parent: VNode; data: VNodeData; } // interface for vnodes in update modules declare type VNodeWithData = { tag: string; data: VNodeData; children: Array | void; text: void; elm: any; ns: string | void; context: Component; key: string | number | void; parent?: VNodeWithData; child?: Component; isRootInsert: boolean; } declare interface VNodeData { key?: string | number; slot?: string; ref?: string; pre?: boolean; tag?: string; staticClass?: string; class?: any; staticStyle?: { [key: string]: any }; style?: Array | Object; props?: { [key: string]: any }; attrs?: { [key: string]: string }; domProps?: { [key: string]: any }; hook?: { [key: string]: Function }; on?: ?{ [key: string]: Function | Array }; nativeOn?: { [key: string]: Function | Array }; transition?: Object; show?: boolean; // marker for v-show inlineTemplate?: { render: Function; staticRenderFns: Array; }; directives?: Array; keepAlive?: boolean; scopedSlots?: { [key: string]: Function } } declare type VNodeDirective = { name: string; rawName: string; value?: any; oldValue?: any; arg?: string; modifiers?: ASTModifiers; def?: Object; }