=
+T extends new () => { $props: infer P } ? NonNullable :
+ T extends (props: infer P, ...args: any) => any ? P :
+ Record
+
+export type ComponentSlots =
+T extends new () => { $slots: infer S } ? NonNullable :
+ T extends (props: any, ctx: { slots: infer S, attrs: any, emit: any }, ...args: any) => any ? NonNullable :
+ Record
+
+export type ComponentEmit =
+T extends new () => { $emit: infer E } ? NonNullable :
+ T extends (props: any, ctx: { slots: any, attrs: any, emit: infer E }, ...args: any) => any ? NonNullable :
+ Record