import { VNode, CreateElement, RenderContext } from 'vue'; import { InjectOptions, PropsDefinition } from 'vue/types/options'; export type EventHanlder = (eventName?: Event) => void; export type ObjectIndex = { [key: string]: any; }; export type ScopedSlot = (props?: Props) => VNode[] | VNode | undefined; export type DefaultSlots = { default?: ScopedSlot; }; export type ScopedSlots = DefaultSlots & { [key: string]: ScopedSlot | undefined; }; export type ModelOptions = { prop?: string; event?: string; }; export type DefaultProps = Record; export type FunctionComponent> = { (h: CreateElement, props: Props, slots: ScopedSlots, context: RenderContext): | VNode | undefined; props?: PropDefs; model?: ModelOptions; inject?: InjectOptions; };