import type { AllowedComponentProps, Component, ComponentCustomProps, ComponentInjectOptions, ComponentObjectPropsOptions, ComponentOptionsMixin, ComponentOptionsWithObjectProps, ComponentOptionsWithoutProps, ComponentPropsOptions, ComponentPublicInstance, ComputedOptions, DefineComponent, EmitsOptions, ExtractDefaultPropTypes, ExtractPropTypes, FunctionalComponent, MethodOptions, ObjectEmitsOptions, SlotsType, VNode, VNodeChild, VNodeProps } from 'vue'; export declare function defineComponent(options: ComponentOptionsWithoutProps): DefineComponent; export declare function defineComponent, RawBindings, D, C extends ComputedOptions = {}, M extends MethodOptions = {}, Mixin extends ComponentOptionsMixin = ComponentOptionsMixin, Extends extends ComponentOptionsMixin = ComponentOptionsMixin, E extends EmitsOptions = {}, EE extends string = string, I extends {} = {}, II extends string = string, S extends SlotsType = {}>(options: ComponentOptionsWithObjectProps): DefineComponent & FilterPropsOptions; type ToListeners = { [K in T]: K extends `on${infer U}` ? Uncapitalize : K; }[T]; export type SlotsToProps> = { $children?: (VNodeChild | (T extends { default: infer V; } ? V : {}) | { [K in keyof T]?: T[K]; } | { $stable?: boolean; }); 'v-slots'?: { [K in keyof T]?: T[K] | false; }; } & { [K in keyof T as `v-slot:${K & string}`]?: T[K] | false; }; type RawSlots = Record; type Slot = [T] extends [never] ? () => VNodeChild : (arg: T) => VNodeChild; type VueSlot = [T] extends [never] ? () => VNode[] : (arg: T) => VNode[]; type MakeInternalSlots = { [K in keyof T]: Slot; }; type MakeSlots = { [K in keyof T]: VueSlot; }; export type GenericProps> = { $props: Props & SlotsToProps; $slots: MakeSlots; }; type DefineComponentWithGenericProps, slots: RawSlots) => { $props?: Record; })> = , RawBindings, D, C extends ComputedOptions = {}, M extends MethodOptions = {}, Mixin extends ComponentOptionsMixin = ComponentOptionsMixin, Extends extends ComponentOptionsMixin = ComponentOptionsMixin, E extends EmitsOptions = Record, EE extends string = string, I extends ComponentInjectOptions = {}, II extends string = string, Slots extends RawSlots = ConstructorParameters[1], S extends SlotsType = SlotsType>>, III = InstanceType, P = III extends Record<'$props', any> ? Omit : PropsOptions, EEE extends EmitsOptions = E extends any[] ? E : III extends Record<'$props', any> ? Omit> : E, Base = DefineComponent & ({} extends E ? {} : EmitsToProps), ExtractDefaultPropTypes

, S>>(options: ComponentOptionsWithObjectProps) => Base & T & FilterPropsOptions; type DefineComponentWithSlots = , RawBindings, D, C extends ComputedOptions = {}, M extends MethodOptions = {}, Mixin extends ComponentOptionsMixin = ComponentOptionsMixin, Extends extends ComponentOptionsMixin = ComponentOptionsMixin, E extends EmitsOptions = Record, EE extends string = string, I extends ComponentInjectOptions = {}, II extends string = string, S extends SlotsType = SlotsType>>>(options: ComponentOptionsWithObjectProps) => DefineComponent & SlotsToProps, RawBindings, D, C, M, Mixin, Extends, E, EE, PublicProps, ExtractPropTypes & SlotsToProps & ({} extends E ? {} : EmitsToProps), ExtractDefaultPropTypes, S> & FilterPropsOptions; export declare function genericComponent(exposeDefaults?: boolean): DefineComponentWithSlots<{ default: never; }>; export declare function genericComponent, slots: any) => { $props?: Record; })>(exposeDefaults?: boolean): DefineComponentWithGenericProps; export declare function genericComponent(exposeDefaults?: boolean): DefineComponentWithSlots; export declare function defineFunctionalComponent, PropsOptions = ComponentObjectPropsOptions, Defaults = ExtractDefaultPropTypes, Props = Readonly>>(props: PropsOptions, render: T): FunctionalComponent & Omit>; type EmitsToProps = T extends string[] ? { [K in string & `on${Capitalize}`]?: (...args: any[]) => any; } : T extends ObjectEmitsOptions ? { [K in string & `on${Capitalize}`]?: K extends `on${infer C}` ? T[Uncapitalize] extends null ? (...args: any[]) => any : (...args: T[Uncapitalize] extends (...args: infer P) => any ? P : never) => any : never; } : {}; type PublicProps = VNodeProps & AllowedComponentProps & ComponentCustomProps; export interface FilterPropsOptions, Props = ExtractPropTypes> { filterProps, U extends Exclude>>(props: T): Partial>; } export type ComponentInstance = T extends { new (): ComponentPublicInstance; } ? InstanceType : T extends FunctionalComponent ? ComponentPublicInstance> : T extends Component ? ComponentPublicInstance : never; type ShortEmitsToObject = E extends Record ? { [K in keyof E]: (...args: E[K]) => any; } : E; export type JSXComponent = { new (): ComponentPublicInstance; } | FunctionalComponent;