import Vue, { VueConstructor } from "vue"; import { KnownAttrs, ScopedSlotHandlers, EventHandlers } from "./base"; export type TsxComponentAttrs = | ({ props: TProps } & Partial & KnownAttrs & { scopedSlots?: ScopedSlotHandlers; } & EventHandlers) | (TProps & KnownAttrs & { scopedSlots?: ScopedSlotHandlers; } & EventHandlers); export type TsxComponentInstance = { _tsxattrs: TsxComponentAttrs; } & V; export type TsxComponent< V extends Vue, Props = {}, EventsWithOn = {}, ScopedSlotArgs = {}, AdditionalThisAttrs = {} > = VueConstructor< TsxComponentInstance & AdditionalThisAttrs >;