import type { ComponentCustomProps, VNodeProps, EmitsOptions, AllowedComponentProps, ObjectEmitsOptions } from 'vue'; import type { UnionToIntersection } from '@nzyme/types'; declare type PublicProps = VNodeProps & AllowedComponentProps & ComponentCustomProps; declare type EmitFn = Options extends Array ? (event: V, ...args: any[]) => void : {} extends Options ? (event: string, ...args: any[]) => void : UnionToIntersection<{ [key in Event]: Options[key] extends (...args: infer Args) => any ? (event: key, ...args: Args) => void : (event: key, ...args: any[]) => void; }[Event]>; interface ClassComponent { $props: Props & PublicProps; $slots: Slots; $emit: EmitFn; } export type Component = { new (): ClassComponent; }; export {};