import Vue , { VueConstructor , Component , VNode , CreateElement , VNodeData , VNodeChildren , ComponentOptions } from 'vue/types/index' ; import { INSERT_POSITION_MAP } from './const' ; export type InputComponent = ComponentOptions < Vue > ; export type ChildrenRender = ( createElement : CreateElement ) => VNodeChildren ; export type RootComponent = Vue & { _uid : number ; $remove : ( ) => void ; $updateRenderData : ( newProps : Record < string , any > , newChildrenRender ? : ChildrenRender ) => void ; } ; type InsertPositionLikeJQ = keyof typeof INSERT_POSITION_MAP ; export interface createRootFnExtendOptions extends Record < string , any > { target ? : string | Element ; insertPosition ? : InsertPositionLikeJQ ; } export interface createRootFn { ( Vue , component , vNodeData , childrenRender ? , options ? ) : RootComponent ; } export type Tail < Tuple extends any [ ] > = ( ( ... args : Tuple ) => void ) extends ( ( a : any , ... args : infer T ) => void ) ? T : never ; export type CRootInstance = { $update : ( options : VNodeData , childrenRender ? : ChildrenRender ) => void ; $destroy : ( ) => void ; component : RootComponent ; } ;