declare type InternalComponentOptions = { _isComponent: true; parent: Component; propsData: ?Object; _parentVnode: VNode; _parentListeners: ?Object; _renderChildren: ?VNodeChildren; _componentTag: ?string; render?: Function; staticRenderFns?: Array } declare type ComponentOptions = { // data data: Object | Function | void; props?: { [key: string]: PropOptions }; propsData?: ?Object; computed?: { [key: string]: Function | { get?: Function; set?: Function; cache?: boolean } }; methods?: { [key: string]: Function }; watch?: { [key: string]: Function | string }; // DOM el?: string | Element; template?: string; render: () => VNode; staticRenderFns?: Array<() => VNode>; // lifecycle beforeCreate?: Function; created?: Function; beforeMount?: Function; mounted?: Function; beforeUpdate?: Function; updated?: Function; // assets directives?: { [key: string]: Object }; components?: { [key: string]: Class }; transitions?: { [key: string]: Object }; filters?: { [key: string]: Function }; // misc parent?: Component; mixins?: Array; name?: string; extends?: Class | Object; delimiters?: [string, string]; // private _isComponent?: true; _propKeys?: Array; _parentVnode?: VNode; _parentListeners?: ?Object; _renderChildren?: ?VNodeChildren } declare type PropOptions = { type: Function | Array | null; default: any; required: ?boolean; validator: ?Function; }