declare type VNodeChildren = Array | string; declare type VNodeComponentOptions = { Ctor: Class; propsData: ?Object; listeners: ?Object; children: ?Array; tag?: string; }; declare type MountedComponentVNode = { context: Component; componentOptions: VNodeComponentOptions; componentInstance: Component; parent: VNode; data: VNodeData; }; // interface for vnodes in update modules declare type VNodeWithData = { tag: string; data: VNodeData; children: ?Array; text: void; elm: any; ns: string | void; context: Component; key: string | number | void; parent?: VNodeWithData; componentOptions?: VNodeComponentOptions; componentInstance?: Component; isRootInsert: boolean; }; declare interface VNodeData { key?: string | number; slot?: string; ref?: string; is?: string; pre?: boolean; tag?: string; staticClass?: string; class?: any; staticStyle?: { [key: string]: any }; style?: Array | Object; normalizedStyle?: 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 }; model?: { value: any; callback: Function; }; }; declare type VNodeDirective = { name: string; rawName: string; value?: any; oldValue?: any; arg?: string; modifiers?: ASTModifiers; def?: Object; }; declare type ScopedSlotsData = Array<{ key: string, fn: Function } | ScopedSlotsData>;