import { AllowedComponentProps, AppContext, ComponentOptionsBase, EmitsOptions, ObjectPlugin, SetupContext, VNodeProps } from "vue"; //#region ../../packages/utils/vue/typescript.d.ts type ExtractEventNames = T extends (new (...args: any[]) => any) ? T extends ComponentOptionsBase ? T['emits'] extends (string[] & ThisType) | (infer Emits & ThisType) | undefined ? keyof Emits extends string ? `on${Capitalize}` : Emits extends readonly string[] ? `on${Capitalize}` : never : never : never : never; type SFCWithInstall = T & ObjectPlugin & SFCWithPropsDefaultsSetter; type SFCInstallWithContext = SFCWithInstall & { _context: AppContext | null; }; type SFCWithPropsDefaultsSetter = T extends (new (...args: any) => any) ? { setPropsDefaults: (defaults: Partial['$props'], ExtractEventNames | keyof VNodeProps | keyof AllowedComponentProps>>) => void; } : unknown; type EmitFn = SetupContext['emit']; //#endregion export { EmitFn, SFCInstallWithContext, SFCWithInstall, SFCWithPropsDefaultsSetter };